diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2014-12-24 07:38:37 +0000 |
---|---|---|
committer | <> | 2015-02-02 12:02:29 +0000 |
commit | 482840e61f86ca321838a91e902c41d40c098bbb (patch) | |
tree | 01ea2e242fd2792d19fe192476601587901db794 /gettext-tools/gnulib-tests | |
download | gettext-tarball-482840e61f86ca321838a91e902c41d40c098bbb.tar.gz |
Imported from /home/lorry/working-area/delta_gettext-tarball/gettext-0.19.4.tar.xz.gettext-0.19.4
Diffstat (limited to 'gettext-tools/gnulib-tests')
293 files changed, 77375 insertions, 0 deletions
diff --git a/gettext-tools/gnulib-tests/ChangeLog b/gettext-tools/gnulib-tests/ChangeLog new file mode 100644 index 0000000..74a73bc --- /dev/null +++ b/gettext-tools/gnulib-tests/ChangeLog @@ -0,0 +1,37 @@ +2014-12-24 Daiki Ueno <ueno@gnu.org> + + * gettext 0.19.4 released. + +2014-10-15 Daiki Ueno <ueno@gnu.org> + + * gettext 0.19.3 released. + +2012-12-25 Daiki Ueno <ueno@gnu.org> + + * gettext-0.18.2 released. + +2010-06-04 Bruno Haible <bruno@clisp.org> + + * gettext-0.18.1 released. + +2010-05-24 Bruno Haible <bruno@clisp.org> + + Fix compilation failure on systems without <libintl.h>. + * Makefile.am (AM_CPPFLAGS): Add -I../intl. + +2010-05-09 Bruno Haible <bruno@clisp.org> + + * gettext-0.18 released. + +2009-05-21 Bruno Haible <bruno@clisp.org> + + * Makefile.am (AUTOMAKE_OPTIONS): Add 1.11 and color-tests. + +2007-11-07 Bruno Haible <bruno@clisp.org> + + * gettext-0.17 released. + +2007-10-01 Bruno Haible <bruno@clisp.org> + + * Makefile.am: New file. + diff --git a/gettext-tools/gnulib-tests/Makefile.am b/gettext-tools/gnulib-tests/Makefile.am new file mode 100644 index 0000000..4cd754d --- /dev/null +++ b/gettext-tools/gnulib-tests/Makefile.am @@ -0,0 +1,25 @@ +## Makefile for the gettext-tools/gnulib-tests subdirectory of GNU gettext +## Copyright (C) 2007, 2009-2010 Free Software Foundation, Inc. +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see <http://www.gnu.org/licenses/>. + +## Process this file with automake to produce Makefile.in. + +# Rules generated and collected by gnulib-tool. +include Makefile.gnulib + +AUTOMAKE_OPTIONS += 1.11 color-tests + +# Ensure that test-quotearg.c finds libintl.h. +AM_CPPFLAGS += -I../intl diff --git a/gettext-tools/gnulib-tests/Makefile.gnulib b/gettext-tools/gnulib-tests/Makefile.gnulib new file mode 100644 index 0000000..4e86d1e --- /dev/null +++ b/gettext-tools/gnulib-tests/Makefile.gnulib @@ -0,0 +1,1695 @@ +## DO NOT EDIT! GENERATED AUTOMATICALLY! +## Process this file with automake to produce Makefile.in. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this file. If not, see <http://www.gnu.org/licenses/>. +# +# As a special exception to the GNU General Public License, +# this file may be distributed as part of a program that +# contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. + +AUTOMAKE_OPTIONS = 1.9.6 foreign subdir-objects + +SUBDIRS = . +TESTS = +XFAIL_TESTS = +TESTS_ENVIRONMENT = +noinst_PROGRAMS = +check_PROGRAMS = +noinst_HEADERS = +noinst_LIBRARIES = +check_LIBRARIES = libtests.a +EXTRA_DIST = +BUILT_SOURCES = +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = + +AM_CPPFLAGS = \ + -D@gltests_WITNESS@=1 \ + -I. -I$(srcdir) \ + -I.. -I$(srcdir)/.. \ + -I../gnulib-lib -I$(srcdir)/../gnulib-lib + +LDADD = libtests.a ../gnulib-lib/libgettextlib.la libtests.a $(LIBTESTS_LIBDEPS) + +libtests_a_SOURCES = +libtests_a_LIBADD = $(gltests_LIBOBJS) +libtests_a_DEPENDENCIES = $(gltests_LIBOBJS) +EXTRA_libtests_a_SOURCES = +AM_LIBTOOLFLAGS = --preserve-dup-deps + +TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' srcdir='$(srcdir)' + +## begin gnulib module acl-tests + +TESTS += \ + test-file-has-acl.sh test-file-has-acl-1.sh test-file-has-acl-2.sh \ + test-set-mode-acl.sh test-set-mode-acl-1.sh test-set-mode-acl-2.sh \ + test-copy-acl.sh test-copy-acl-1.sh test-copy-acl-2.sh +TESTS_ENVIRONMENT += USE_ACL=$(USE_ACL) +check_PROGRAMS += test-file-has-acl test-set-mode-acl test-copy-acl test-sameacls +test_file_has_acl_LDADD = $(LDADD) $(LIB_ACL) +test_set_mode_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ +test_copy_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ +test_sameacls_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ +EXTRA_DIST += test-file-has-acl.sh test-file-has-acl-1.sh test-file-has-acl-2.sh test-set-mode-acl.sh test-set-mode-acl-1.sh test-set-mode-acl-2.sh test-copy-acl.sh test-copy-acl-1.sh test-copy-acl-2.sh test-file-has-acl.c test-set-mode-acl.c test-copy-acl.c test-sameacls.c macros.h + +## end gnulib module acl-tests + +## begin gnulib module alignof-tests + +TESTS += test-alignof +check_PROGRAMS += test-alignof + +EXTRA_DIST += test-alignof.c + +## end gnulib module alignof-tests + +## begin gnulib module alloca-opt-tests + +TESTS += test-alloca-opt +check_PROGRAMS += test-alloca-opt + +EXTRA_DIST += test-alloca-opt.c + +## end gnulib module alloca-opt-tests + +## begin gnulib module areadlink-tests + +TESTS += test-areadlink +check_PROGRAMS += test-areadlink +EXTRA_DIST += test-areadlink.h test-areadlink.c macros.h + +## end gnulib module areadlink-tests + +## begin gnulib module argmatch-tests + +TESTS += test-argmatch +check_PROGRAMS += test-argmatch +test_argmatch_LDADD = $(LDADD) @LIBINTL@ + +EXTRA_DIST += test-argmatch.c macros.h + +## end gnulib module argmatch-tests + +## begin gnulib module array-list-tests + +TESTS += test-array_list +check_PROGRAMS += test-array_list + +EXTRA_DIST += test-array_list.c macros.h + +## end gnulib module array-list-tests + +## begin gnulib module atexit-tests + +TESTS += test-atexit.sh +check_PROGRAMS += test-atexit +EXTRA_DIST += signature.h test-atexit.sh test-atexit.c + +## end gnulib module atexit-tests + +## begin gnulib module binary-io-tests + +TESTS += test-binary-io.sh +check_PROGRAMS += test-binary-io + +EXTRA_DIST += test-binary-io.sh test-binary-io.c macros.h + +## end gnulib module binary-io-tests + +## begin gnulib module btowc + + +EXTRA_DIST += btowc.c + +EXTRA_libtests_a_SOURCES += btowc.c + +## end gnulib module btowc + +## begin gnulib module btowc-tests + +TESTS += test-btowc1.sh test-btowc2.sh +TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' +check_PROGRAMS += test-btowc + +EXTRA_DIST += test-btowc1.sh test-btowc2.sh test-btowc.c signature.h macros.h + +## end gnulib module btowc-tests + +## begin gnulib module byteswap-tests + +TESTS += test-byteswap +check_PROGRAMS += test-byteswap +EXTRA_DIST += test-byteswap.c macros.h + +## end gnulib module byteswap-tests + +## begin gnulib module c-ctype-tests + +TESTS += test-c-ctype +check_PROGRAMS += test-c-ctype + +EXTRA_DIST += test-c-ctype.c macros.h + +## end gnulib module c-ctype-tests + +## begin gnulib module c-strcase-tests + +TESTS += test-c-strcase.sh +TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@' LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' +check_PROGRAMS += test-c-strcasecmp test-c-strncasecmp +EXTRA_DIST += test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c macros.h + +## end gnulib module c-strcase-tests + +## begin gnulib module c-strcasestr-tests + +TESTS += test-c-strcasestr +check_PROGRAMS += test-c-strcasestr + +EXTRA_DIST += test-c-strcasestr.c macros.h + +## end gnulib module c-strcasestr-tests + +## begin gnulib module c-strstr-tests + +TESTS += test-c-strstr +check_PROGRAMS += test-c-strstr + +EXTRA_DIST += test-c-strstr.c macros.h + +## end gnulib module c-strstr-tests + +## begin gnulib module canonicalize-lgpl-tests + +TESTS += test-canonicalize-lgpl +check_PROGRAMS += test-canonicalize-lgpl +EXTRA_DIST += test-canonicalize-lgpl.c signature.h macros.h + +## end gnulib module canonicalize-lgpl-tests + +## begin gnulib module cloexec-tests + +TESTS += test-cloexec +check_PROGRAMS += test-cloexec +EXTRA_DIST += test-cloexec.c macros.h + +## end gnulib module cloexec-tests + +## begin gnulib module close-tests + +TESTS += test-close +check_PROGRAMS += test-close +EXTRA_DIST += test-close.c signature.h macros.h + +## end gnulib module close-tests + +## begin gnulib module copy-file-tests + +TESTS += test-copy-file.sh test-copy-file-1.sh test-copy-file-2.sh +TESTS_ENVIRONMENT += USE_ACL=$(USE_ACL) +check_PROGRAMS += test-copy-file +test_copy_file_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ +EXTRA_DIST += test-copy-file.sh test-copy-file-1.sh test-copy-file-2.sh test-copy-file.c macros.h + +## end gnulib module copy-file-tests + +## begin gnulib module dirent-tests + +TESTS += test-dirent +check_PROGRAMS += test-dirent +EXTRA_DIST += test-dirent.c + +## end gnulib module dirent-tests + +## begin gnulib module dup + + +EXTRA_DIST += dup.c + +EXTRA_libtests_a_SOURCES += dup.c + +## end gnulib module dup + +## begin gnulib module dup-tests + +TESTS += test-dup +check_PROGRAMS += test-dup +EXTRA_DIST += test-dup.c signature.h macros.h + +## end gnulib module dup-tests + +## begin gnulib module dup2-tests + +TESTS += test-dup2 +check_PROGRAMS += test-dup2 +EXTRA_DIST += test-dup2.c signature.h macros.h + +## end gnulib module dup2-tests + +## begin gnulib module environ-tests + +TESTS += test-environ +check_PROGRAMS += test-environ + +EXTRA_DIST += test-environ.c + +## end gnulib module environ-tests + +## begin gnulib module errno-tests + +TESTS += test-errno +check_PROGRAMS += test-errno + +EXTRA_DIST += test-errno.c + +## end gnulib module errno-tests + +## begin gnulib module fcntl-h-tests + +TESTS += test-fcntl-h +check_PROGRAMS += test-fcntl-h +EXTRA_DIST += test-fcntl-h.c + +## end gnulib module fcntl-h-tests + +## begin gnulib module fcntl-tests + +TESTS += test-fcntl +check_PROGRAMS += test-fcntl +EXTRA_DIST += test-fcntl.c signature.h macros.h + +## end gnulib module fcntl-tests + +## begin gnulib module fdopen + + +EXTRA_DIST += fdopen.c + +EXTRA_libtests_a_SOURCES += fdopen.c + +## end gnulib module fdopen + +## begin gnulib module fdopen-tests + +TESTS += test-fdopen +check_PROGRAMS += test-fdopen +EXTRA_DIST += test-fdopen.c signature.h macros.h + +## end gnulib module fdopen-tests + +## begin gnulib module fgetc-tests + +TESTS += test-fgetc +check_PROGRAMS += test-fgetc +EXTRA_DIST += test-fgetc.c signature.h macros.h + +## end gnulib module fgetc-tests + +## begin gnulib module float-tests + +TESTS += test-float +check_PROGRAMS += test-float +EXTRA_DIST += test-float.c macros.h + +## end gnulib module float-tests + +## begin gnulib module fnmatch-tests + +TESTS += test-fnmatch +check_PROGRAMS += test-fnmatch +EXTRA_DIST += test-fnmatch.c signature.h macros.h + +## end gnulib module fnmatch-tests + +## begin gnulib module fopen-tests + +TESTS += test-fopen +check_PROGRAMS += test-fopen + +EXTRA_DIST += test-fopen.h test-fopen.c signature.h macros.h + +## end gnulib module fopen-tests + +## begin gnulib module fpucw + + +EXTRA_DIST += fpucw.h + +## end gnulib module fpucw + +## begin gnulib module fputc-tests + +TESTS += test-fputc +check_PROGRAMS += test-fputc +EXTRA_DIST += test-fputc.c signature.h macros.h + +## end gnulib module fputc-tests + +## begin gnulib module fread-tests + +TESTS += test-fread +check_PROGRAMS += test-fread +EXTRA_DIST += test-fread.c signature.h macros.h + +## end gnulib module fread-tests + +## begin gnulib module fstat-tests + +TESTS += test-fstat +check_PROGRAMS += test-fstat +EXTRA_DIST += test-fstat.c signature.h macros.h + +## end gnulib module fstat-tests + +## begin gnulib module fstrcmp-tests + +TESTS += test-fstrcmp +check_PROGRAMS += test-fstrcmp +test_fstrcmp_LDADD = $(LDADD) @LIBINTL@ $(LIBTHREAD) +EXTRA_DIST += test-fstrcmp.c macros.h + +## end gnulib module fstrcmp-tests + +## begin gnulib module ftell + + +EXTRA_DIST += ftell.c + +EXTRA_libtests_a_SOURCES += ftell.c + +## end gnulib module ftell + +## begin gnulib module ftell-tests + +TESTS += test-ftell.sh test-ftell2.sh test-ftell3 +check_PROGRAMS += test-ftell test-ftell3 +MOSTLYCLEANFILES += t-ftell3.tmp +EXTRA_DIST += test-ftell.c test-ftell.sh test-ftell2.sh test-ftell3.c signature.h macros.h + +## end gnulib module ftell-tests + +## begin gnulib module ftello + + +EXTRA_DIST += ftello.c stdio-impl.h + +EXTRA_libtests_a_SOURCES += ftello.c + +## end gnulib module ftello + +## begin gnulib module ftello-tests + +TESTS += test-ftello.sh test-ftello2.sh test-ftello3 test-ftello4.sh +check_PROGRAMS += test-ftello test-ftello3 test-ftello4 +MOSTLYCLEANFILES += t-ftello3.tmp +EXTRA_DIST += test-ftello.c test-ftello.sh test-ftello2.sh test-ftello3.c test-ftello4.c test-ftello4.sh signature.h macros.h + +## end gnulib module ftello-tests + +## begin gnulib module fwrite-tests + +TESTS += test-fwrite +check_PROGRAMS += test-fwrite +EXTRA_DIST += test-fwrite.c signature.h macros.h + +## end gnulib module fwrite-tests + +## begin gnulib module getcwd-lgpl + + +EXTRA_DIST += getcwd-lgpl.c + +EXTRA_libtests_a_SOURCES += getcwd-lgpl.c + +## end gnulib module getcwd-lgpl + +## begin gnulib module getcwd-lgpl-tests + +TESTS += test-getcwd-lgpl +check_PROGRAMS += test-getcwd-lgpl +test_getcwd_lgpl_LDADD = $(LDADD) $(LIBINTL) +EXTRA_DIST += test-getcwd-lgpl.c signature.h macros.h + +## end gnulib module getcwd-lgpl-tests + +## begin gnulib module getdelim-tests + +TESTS += test-getdelim +check_PROGRAMS += test-getdelim +MOSTLYCLEANFILES += test-getdelim.txt +EXTRA_DIST += test-getdelim.c signature.h macros.h + +## end gnulib module getdelim-tests + +## begin gnulib module getdtablesize-tests + +TESTS += test-getdtablesize +check_PROGRAMS += test-getdtablesize +EXTRA_DIST += test-getdtablesize.c signature.h macros.h + +## end gnulib module getdtablesize-tests + +## begin gnulib module getline-tests + +TESTS += test-getline +check_PROGRAMS += test-getline +MOSTLYCLEANFILES += test-getline.txt +EXTRA_DIST += test-getline.c signature.h macros.h + +## end gnulib module getline-tests + +## begin gnulib module getopt-posix-tests + +TESTS += test-getopt +check_PROGRAMS += test-getopt +test_getopt_LDADD = $(LDADD) $(LIBINTL) +EXTRA_DIST += macros.h signature.h test-getopt.c test-getopt.h test-getopt_long.h + +## end gnulib module getopt-posix-tests + +## begin gnulib module getpagesize + + +EXTRA_DIST += getpagesize.c + +EXTRA_libtests_a_SOURCES += getpagesize.c + +## end gnulib module getpagesize + +## begin gnulib module gettimeofday-tests + +TESTS += test-gettimeofday +check_PROGRAMS += test-gettimeofday + +EXTRA_DIST += signature.h test-gettimeofday.c + +## end gnulib module gettimeofday-tests + +## begin gnulib module iconv-h-tests + +TESTS += test-iconv-h +check_PROGRAMS += test-iconv-h +EXTRA_DIST += test-iconv-h.c + +## end gnulib module iconv-h-tests + +## begin gnulib module iconv-tests + +TESTS += test-iconv +check_PROGRAMS += test-iconv +test_iconv_LDADD = $(LDADD) @LIBICONV@ + +EXTRA_DIST += test-iconv.c signature.h macros.h + +## end gnulib module iconv-tests + +## begin gnulib module ignore-value-tests + +TESTS += test-ignore-value +check_PROGRAMS += test-ignore-value +EXTRA_DIST += test-ignore-value.c + +## end gnulib module ignore-value-tests + +## begin gnulib module intprops-tests + +TESTS += test-intprops +check_PROGRAMS += test-intprops +EXTRA_DIST += test-intprops.c macros.h + +## end gnulib module intprops-tests + +## begin gnulib module inttypes-incomplete + +BUILT_SOURCES += inttypes.h + +# We need the following in order to create <inttypes.h> when the system +# doesn't have one that works with the given compiler. +inttypes.h: inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H) + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \ + -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \ + -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ + -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ + -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ + -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \ + -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \ + -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \ + -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \ + -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \ + -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \ + -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \ + -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \ + -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \ + -e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \ + -e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \ + -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \ + -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \ + -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \ + -e 's/@''UINT64_MAX_EQ_ULONG_MAX''@/$(UINT64_MAX_EQ_ULONG_MAX)/g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ + -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ + -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ + < $(srcdir)/inttypes.in.h; \ + } > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += inttypes.h inttypes.h-t + +EXTRA_DIST += inttypes.in.h + +## end gnulib module inttypes-incomplete + +## begin gnulib module inttypes-tests + +TESTS += test-inttypes +check_PROGRAMS += test-inttypes +EXTRA_DIST += test-inttypes.c + +## end gnulib module inttypes-tests + +## begin gnulib module iswblank-tests + +TESTS += test-iswblank +check_PROGRAMS += test-iswblank +EXTRA_DIST += test-iswblank.c macros.h + +## end gnulib module iswblank-tests + +## begin gnulib module linkedhash-list-tests + +TESTS += test-linkedhash_list +check_PROGRAMS += test-linkedhash_list +EXTRA_DIST += test-linkedhash_list.c macros.h + +## end gnulib module linkedhash-list-tests + +## begin gnulib module locale-tests + +TESTS += test-locale +check_PROGRAMS += test-locale +EXTRA_DIST += test-locale.c + +## end gnulib module locale-tests + +## begin gnulib module localename-tests + +TESTS += test-localename +check_PROGRAMS += test-localename +test_localename_LDADD = $(LDADD) @INTL_MACOSX_LIBS@ $(LIBTHREAD) + +EXTRA_DIST += test-localename.c macros.h + +## end gnulib module localename-tests + +## begin gnulib module lock-tests + +TESTS += test-lock +check_PROGRAMS += test-lock +test_lock_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@ +EXTRA_DIST += test-lock.c + +## end gnulib module lock-tests + +## begin gnulib module lseek + + +EXTRA_DIST += lseek.c + +EXTRA_libtests_a_SOURCES += lseek.c + +## end gnulib module lseek + +## begin gnulib module lseek-tests + +TESTS += test-lseek.sh +check_PROGRAMS += test-lseek +EXTRA_DIST += test-lseek.c test-lseek.sh signature.h macros.h + +## end gnulib module lseek-tests + +## begin gnulib module lstat-tests + +TESTS += test-lstat +check_PROGRAMS += test-lstat +EXTRA_DIST += test-lstat.h test-lstat.c signature.h macros.h + +## end gnulib module lstat-tests + +## begin gnulib module malloca-tests + +TESTS += test-malloca +check_PROGRAMS += test-malloca + +EXTRA_DIST += test-malloca.c + +## end gnulib module malloca-tests + +## begin gnulib module mbrtowc-tests + +TESTS += \ + test-mbrtowc1.sh test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh \ + test-mbrtowc-w32-1.sh test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh \ + test-mbrtowc-w32-4.sh test-mbrtowc-w32-5.sh +TESTS_ENVIRONMENT += \ + LOCALE_FR='@LOCALE_FR@' \ + LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \ + LOCALE_JA='@LOCALE_JA@' \ + LOCALE_ZH_CN='@LOCALE_ZH_CN@' +check_PROGRAMS += test-mbrtowc test-mbrtowc-w32 + +EXTRA_DIST += test-mbrtowc1.sh test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh test-mbrtowc.c test-mbrtowc-w32-1.sh test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh test-mbrtowc-w32-4.sh test-mbrtowc-w32-5.sh test-mbrtowc-w32.c signature.h macros.h + +## end gnulib module mbrtowc-tests + +## begin gnulib module mbsinit-tests + +TESTS += test-mbsinit.sh +TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' +check_PROGRAMS += test-mbsinit + +EXTRA_DIST += test-mbsinit.sh test-mbsinit.c signature.h macros.h + +## end gnulib module mbsinit-tests + +## begin gnulib module mbsrtowcs-tests + +TESTS += test-mbsrtowcs1.sh test-mbsrtowcs2.sh test-mbsrtowcs3.sh test-mbsrtowcs4.sh +TESTS_ENVIRONMENT += \ + LOCALE_FR='@LOCALE_FR@' \ + LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \ + LOCALE_JA='@LOCALE_JA@' \ + LOCALE_ZH_CN='@LOCALE_ZH_CN@' +check_PROGRAMS += test-mbsrtowcs + +EXTRA_DIST += test-mbsrtowcs1.sh test-mbsrtowcs2.sh test-mbsrtowcs3.sh test-mbsrtowcs4.sh test-mbsrtowcs.c signature.h macros.h + +## end gnulib module mbsrtowcs-tests + +## begin gnulib module mbsstr-tests + +TESTS += test-mbsstr1 test-mbsstr2.sh test-mbsstr3.sh +TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' +check_PROGRAMS += test-mbsstr1 test-mbsstr2 test-mbsstr3 + +EXTRA_DIST += test-mbsstr1.c test-mbsstr2.sh test-mbsstr2.c test-mbsstr3.sh test-mbsstr3.c macros.h + +## end gnulib module mbsstr-tests + +## begin gnulib module mbtowc + + +EXTRA_DIST += mbtowc-impl.h mbtowc.c + +EXTRA_libtests_a_SOURCES += mbtowc.c + +## end gnulib module mbtowc + +## begin gnulib module memchr-tests + +TESTS += test-memchr +check_PROGRAMS += test-memchr +EXTRA_DIST += test-memchr.c zerosize-ptr.h signature.h macros.h + +## end gnulib module memchr-tests + +## begin gnulib module moo-tests + +test-moo-root.h test-moo-root.c root.priv.h root.vt.h : $(top_srcdir)/../build-aux/moopp test-moo-root.oo.h test-moo-root.oo.c + $(top_srcdir)/../build-aux/moopp $(MOOPPFLAGS) $(srcdir)/test-moo-root.oo.c $(srcdir)/test-moo-root.oo.h + +test-moo-sub1.h test-moo-sub1.c sub1.priv.h sub1.vt.h : $(top_srcdir)/../build-aux/moopp test-moo-root.oo.h test-moo-sub1.oo.h test-moo-sub1.oo.c + $(top_srcdir)/../build-aux/moopp $(MOOPPFLAGS) $(srcdir)/test-moo-sub1.oo.c $(srcdir)/test-moo-sub1.oo.h $(srcdir)/test-moo-root.oo.h + +test-moo-sub2.h test-moo-sub2.c sub2.priv.h sub2.vt.h : $(top_srcdir)/../build-aux/moopp test-moo-root.oo.h test-moo-sub1.oo.h test-moo-sub2.oo.h test-moo-sub2.oo.c + $(top_srcdir)/../build-aux/moopp $(MOOPPFLAGS) $(srcdir)/test-moo-sub2.oo.c $(srcdir)/test-moo-sub2.oo.h $(srcdir)/test-moo-sub1.oo.h $(srcdir)/test-moo-root.oo.h + +test-moo-aroot.h test-moo-aroot.c aroot.priv.h aroot.vt.h : $(top_srcdir)/../build-aux/moopp test-moo-aroot.oo.h test-moo-aroot.oo.c + $(top_srcdir)/../build-aux/moopp $(MOOPPFLAGS) $(srcdir)/test-moo-aroot.oo.c $(srcdir)/test-moo-aroot.oo.h + +test-moo-asub1.h test-moo-asub1.c asub1.priv.h asub1.vt.h : $(top_srcdir)/../build-aux/moopp test-moo-aroot.oo.h test-moo-asub1.oo.h test-moo-asub1.oo.c + $(top_srcdir)/../build-aux/moopp $(MOOPPFLAGS) $(srcdir)/test-moo-asub1.oo.c $(srcdir)/test-moo-asub1.oo.h $(srcdir)/test-moo-aroot.oo.h + +EXTRA_DIST += test-moo-root.oo.h test-moo-root.oo.c test-moo-sub1.oo.h test-moo-sub1.oo.c test-moo-sub2.oo.h test-moo-sub2.oo.c test-moo-aroot.oo.h test-moo-aroot.oo.c test-moo-asub1.oo.h test-moo-asub1.oo.c test-moo-assign.c + +## end gnulib module moo-tests + +## begin gnulib module open-tests + +TESTS += test-open +check_PROGRAMS += test-open +EXTRA_DIST += test-open.h test-open.c signature.h macros.h + +## end gnulib module open-tests + +## begin gnulib module pathmax-tests + +TESTS += test-pathmax +check_PROGRAMS += test-pathmax +EXTRA_DIST += test-pathmax.c + +## end gnulib module pathmax-tests + +## begin gnulib module pipe-filter-ii-tests + +TESTS += test-pipe-filter-ii1.sh test-pipe-filter-ii2.sh +check_PROGRAMS += test-pipe-filter-ii1 test-pipe-filter-ii2-main test-pipe-filter-ii2-child +test_pipe_filter_ii1_LDADD = $(LDADD) @LIBINTL@ +test_pipe_filter_ii2_main_LDADD = $(LDADD) @LIBINTL@ +EXTRA_DIST += test-pipe-filter-ii1.sh test-pipe-filter-ii1.c test-vasnprintf-posix.c test-pipe-filter-ii2.sh test-pipe-filter-ii2-main.c test-pipe-filter-ii2-child.c macros.h + +## end gnulib module pipe-filter-ii-tests + +## begin gnulib module pipe2-tests + +TESTS += test-pipe2 +check_PROGRAMS += test-pipe2 +test_pipe2_LDADD = $(LDADD) $(LIBSOCKET) +EXTRA_DIST += test-pipe2.c signature.h macros.h + +## end gnulib module pipe2-tests + +## begin gnulib module posix_spawn_file_actions_addclose-tests + +TESTS += test-posix_spawn_file_actions_addclose +check_PROGRAMS += test-posix_spawn_file_actions_addclose +EXTRA_DIST += test-posix_spawn_file_actions_addclose.c signature.h macros.h + +## end gnulib module posix_spawn_file_actions_addclose-tests + +## begin gnulib module posix_spawn_file_actions_adddup2-tests + +TESTS += test-posix_spawn_file_actions_adddup2 +check_PROGRAMS += test-posix_spawn_file_actions_adddup2 +EXTRA_DIST += test-posix_spawn_file_actions_adddup2.c signature.h macros.h + +## end gnulib module posix_spawn_file_actions_adddup2-tests + +## begin gnulib module posix_spawn_file_actions_addopen-tests + +TESTS += test-posix_spawn_file_actions_addopen +check_PROGRAMS += test-posix_spawn_file_actions_addopen +EXTRA_DIST += test-posix_spawn_file_actions_addopen.c signature.h macros.h + +## end gnulib module posix_spawn_file_actions_addopen-tests + +## begin gnulib module posix_spawnp-tests + +if POSIX_SPAWN_PORTED +TESTS += test-posix_spawn1 test-posix_spawn2 +check_PROGRAMS += test-posix_spawn1 test-posix_spawn2 + +BUILT_SOURCES += test-posix_spawn1.sh +test-posix_spawn1.sh: test-posix_spawn1.in.sh + $(AM_V_GEN)rm -f $@-t $@ && \ + cp $(srcdir)/test-posix_spawn1.in.sh $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += test-posix_spawn1.sh test-posix_spawn1.sh-t + +BUILT_SOURCES += test-posix_spawn2.sh +test-posix_spawn2.sh: test-posix_spawn2.in.sh + $(AM_V_GEN)rm -f $@-t $@ && \ + cp $(srcdir)/test-posix_spawn2.in.sh $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += test-posix_spawn2.sh test-posix_spawn2.sh-t +endif +EXTRA_DIST += test-posix_spawn1.c test-posix_spawn1.in.sh test-posix_spawn2.c test-posix_spawn2.in.sh signature.h + +## end gnulib module posix_spawnp-tests + +## begin gnulib module putenv + + +EXTRA_DIST += putenv.c + +EXTRA_libtests_a_SOURCES += putenv.c + +## end gnulib module putenv + +## begin gnulib module quotearg-simple-tests + +TESTS += test-quotearg-simple +check_PROGRAMS += test-quotearg-simple +test_quotearg_simple_LDADD = $(LDADD) @LIBINTL@ +EXTRA_DIST += test-quotearg-simple.c test-quotearg.h macros.h zerosize-ptr.h + +## end gnulib module quotearg-simple-tests + +## begin gnulib module raise-tests + +TESTS += test-raise +check_PROGRAMS += test-raise +EXTRA_DIST += test-raise.c signature.h macros.h + +## end gnulib module raise-tests + +## begin gnulib module rawmemchr-tests + +TESTS += test-rawmemchr +check_PROGRAMS += test-rawmemchr +EXTRA_DIST += test-rawmemchr.c zerosize-ptr.h signature.h macros.h + +## end gnulib module rawmemchr-tests + +## begin gnulib module read-file + +libtests_a_SOURCES += read-file.c + +EXTRA_DIST += read-file.h + +## end gnulib module read-file + +## begin gnulib module read-file-tests + +TESTS += test-read-file +check_PROGRAMS += test-read-file +EXTRA_DIST += test-read-file.c + +## end gnulib module read-file-tests + +## begin gnulib module read-tests + +TESTS += test-read +check_PROGRAMS += test-read +EXTRA_DIST += test-read.c signature.h macros.h + +## end gnulib module read-tests + +## begin gnulib module readlink-tests + +TESTS += test-readlink +check_PROGRAMS += test-readlink +EXTRA_DIST += test-readlink.h test-readlink.c signature.h macros.h + +## end gnulib module readlink-tests + +## begin gnulib module rmdir-tests + +TESTS += test-rmdir +check_PROGRAMS += test-rmdir +EXTRA_DIST += test-rmdir.h test-rmdir.c signature.h macros.h + +## end gnulib module rmdir-tests + +## begin gnulib module same-inode + + +EXTRA_DIST += same-inode.h + +## end gnulib module same-inode + +## begin gnulib module sched-tests + +TESTS += test-sched +check_PROGRAMS += test-sched +EXTRA_DIST += test-sched.c + +## end gnulib module sched-tests + +## begin gnulib module setenv-tests + +TESTS += test-setenv +check_PROGRAMS += test-setenv +EXTRA_DIST += test-setenv.c signature.h macros.h + +## end gnulib module setenv-tests + +## begin gnulib module setlocale-tests + +TESTS += test-setlocale1.sh test-setlocale2.sh +TESTS_ENVIRONMENT += \ + LOCALE_FR='@LOCALE_FR@' \ + LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \ + LOCALE_JA='@LOCALE_JA@' \ + LOCALE_ZH_CN='@LOCALE_ZH_CN@' +check_PROGRAMS += test-setlocale1 test-setlocale2 +EXTRA_DIST += test-setlocale1.sh test-setlocale1.c test-setlocale2.sh test-setlocale2.c signature.h macros.h + +## end gnulib module setlocale-tests + +## begin gnulib module sh-quote-tests + +TESTS += test-sh-quote +check_PROGRAMS += test-sh-quote +test_sh_quote_LDADD = $(LDADD) @LIBINTL@ +EXTRA_DIST += test-sh-quote.c + +## end gnulib module sh-quote-tests + +## begin gnulib module sigaction-tests + +TESTS += test-sigaction +check_PROGRAMS += test-sigaction +EXTRA_DIST += test-sigaction.c signature.h macros.h + +## end gnulib module sigaction-tests + +## begin gnulib module signal-h-tests + +TESTS += test-signal-h +check_PROGRAMS += test-signal-h +EXTRA_DIST += test-signal-h.c + +## end gnulib module signal-h-tests + +## begin gnulib module sigpipe-tests + +TESTS += test-sigpipe.sh +check_PROGRAMS += test-sigpipe + +EXTRA_DIST += test-sigpipe.c test-sigpipe.sh + +## end gnulib module sigpipe-tests + +## begin gnulib module sigprocmask-tests + +TESTS += test-sigprocmask +check_PROGRAMS += test-sigprocmask +EXTRA_DIST += test-sigprocmask.c signature.h macros.h + +## end gnulib module sigprocmask-tests + +## begin gnulib module sleep + + +EXTRA_DIST += sleep.c + +EXTRA_libtests_a_SOURCES += sleep.c + +## end gnulib module sleep + +## begin gnulib module sleep-tests + +TESTS += test-sleep +check_PROGRAMS += test-sleep +EXTRA_DIST += test-sleep.c signature.h macros.h + +## end gnulib module sleep-tests + +## begin gnulib module snippet/_Noreturn + +# Because this Makefile snippet defines a variable used by other +# gnulib Makefile snippets, it must be present in all Makefile.am that +# need it. This is ensured by the applicability 'all' defined above. + +_NORETURN_H=$(top_srcdir)/../build-aux/snippet/_Noreturn.h + +EXTRA_DIST += $(top_srcdir)/../build-aux/snippet/_Noreturn.h + +## end gnulib module snippet/_Noreturn + +## begin gnulib module snippet/arg-nonnull + +# The BUILT_SOURCES created by this Makefile snippet are not used via #include +# statements but through direct file reference. Therefore this snippet must be +# present in all Makefile.am that need it. This is ensured by the applicability +# 'all' defined above. + +BUILT_SOURCES += arg-nonnull.h +# The arg-nonnull.h that gets inserted into generated .h files is the same as +# build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut +# off. +arg-nonnull.h: $(top_srcdir)/../build-aux/snippet/arg-nonnull.h + $(AM_V_GEN)rm -f $@-t $@ && \ + sed -n -e '/GL_ARG_NONNULL/,$$p' \ + < $(top_srcdir)/../build-aux/snippet/arg-nonnull.h \ + > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t + +ARG_NONNULL_H=arg-nonnull.h + +EXTRA_DIST += $(top_srcdir)/../build-aux/snippet/arg-nonnull.h + +## end gnulib module snippet/arg-nonnull + +## begin gnulib module snippet/c++defs + +# The BUILT_SOURCES created by this Makefile snippet are not used via #include +# statements but through direct file reference. Therefore this snippet must be +# present in all Makefile.am that need it. This is ensured by the applicability +# 'all' defined above. + +BUILT_SOURCES += c++defs.h +# The c++defs.h that gets inserted into generated .h files is the same as +# build-aux/snippet/c++defs.h, except that it has the copyright header cut off. +c++defs.h: $(top_srcdir)/../build-aux/snippet/c++defs.h + $(AM_V_GEN)rm -f $@-t $@ && \ + sed -n -e '/_GL_CXXDEFS/,$$p' \ + < $(top_srcdir)/../build-aux/snippet/c++defs.h \ + > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += c++defs.h c++defs.h-t + +CXXDEFS_H=c++defs.h + +EXTRA_DIST += $(top_srcdir)/../build-aux/snippet/c++defs.h + +## end gnulib module snippet/c++defs + +## begin gnulib module snippet/unused-parameter + +# The BUILT_SOURCES created by this Makefile snippet are not used via #include +# statements but through direct file reference. Therefore this snippet must be +# present in all Makefile.am that need it. This is ensured by the applicability +# 'all' defined above. + +BUILT_SOURCES += unused-parameter.h +# The unused-parameter.h that gets inserted into generated .h files is the same +# as build-aux/snippet/unused-parameter.h, except that it has the copyright +# header cut off. +unused-parameter.h: $(top_srcdir)/../build-aux/snippet/unused-parameter.h + $(AM_V_GEN)rm -f $@-t $@ && \ + sed -n -e '/GL_UNUSED_PARAMETER/,$$p' \ + < $(top_srcdir)/../build-aux/snippet/unused-parameter.h \ + > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += unused-parameter.h unused-parameter.h-t + +UNUSED_PARAMETER_H=unused-parameter.h + +EXTRA_DIST += $(top_srcdir)/../build-aux/snippet/unused-parameter.h + +## end gnulib module snippet/unused-parameter + +## begin gnulib module snippet/warn-on-use + +BUILT_SOURCES += warn-on-use.h +# The warn-on-use.h that gets inserted into generated .h files is the same as +# build-aux/snippet/warn-on-use.h, except that it has the copyright header cut +# off. +warn-on-use.h: $(top_srcdir)/../build-aux/snippet/warn-on-use.h + $(AM_V_GEN)rm -f $@-t $@ && \ + sed -n -e '/^.ifndef/,$$p' \ + < $(top_srcdir)/../build-aux/snippet/warn-on-use.h \ + > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t + +WARN_ON_USE_H=warn-on-use.h + +EXTRA_DIST += $(top_srcdir)/../build-aux/snippet/warn-on-use.h + +## end gnulib module snippet/warn-on-use + +## begin gnulib module snprintf-tests + +TESTS += test-snprintf +check_PROGRAMS += test-snprintf + +EXTRA_DIST += test-snprintf.c signature.h macros.h + +## end gnulib module snprintf-tests + +## begin gnulib module spawn-pipe-tests + +TESTS += test-spawn-pipe.sh +check_PROGRAMS += test-spawn-pipe-main test-spawn-pipe-child +test_spawn_pipe_main_LDADD = $(LDADD) @LIBINTL@ +# The test-spawn-pipe-child program must be a real executable, not a libtool +# wrapper script, and should link against as few libraries as possible. +# Therefore don't link it against any libraries other than -lc. +test_spawn_pipe_child_LDADD = +EXTRA_DIST += test-spawn-pipe.sh test-spawn-pipe-main.c test-spawn-pipe-child.c macros.h + +## end gnulib module spawn-pipe-tests + +## begin gnulib module spawn-tests + +TESTS += test-spawn +check_PROGRAMS += test-spawn +EXTRA_DIST += test-spawn.c + +## end gnulib module spawn-tests + +## begin gnulib module stat-tests + +TESTS += test-stat +check_PROGRAMS += test-stat +test_stat_LDADD = $(LDADD) $(LIBINTL) +EXTRA_DIST += test-stat.h test-stat.c signature.h macros.h + +## end gnulib module stat-tests + +## begin gnulib module stdbool-tests + +TESTS += test-stdbool +check_PROGRAMS += test-stdbool +EXTRA_DIST += test-stdbool.c + +## end gnulib module stdbool-tests + +## begin gnulib module stddef-tests + +TESTS += test-stddef +check_PROGRAMS += test-stddef +EXTRA_DIST += test-stddef.c + +## end gnulib module stddef-tests + +## begin gnulib module stdint-tests + +TESTS += test-stdint +check_PROGRAMS += test-stdint +EXTRA_DIST += test-stdint.c + +## end gnulib module stdint-tests + +## begin gnulib module stdio-tests + +TESTS += test-stdio +check_PROGRAMS += test-stdio +EXTRA_DIST += test-stdio.c + +## end gnulib module stdio-tests + +## begin gnulib module stdlib-tests + +TESTS += test-stdlib +check_PROGRAMS += test-stdlib +EXTRA_DIST += test-stdlib.c test-sys_wait.h + +## end gnulib module stdlib-tests + +## begin gnulib module strchrnul-tests + +TESTS += test-strchrnul +check_PROGRAMS += test-strchrnul +EXTRA_DIST += test-strchrnul.c signature.h macros.h + +## end gnulib module strchrnul-tests + +## begin gnulib module strerror-tests + +TESTS += test-strerror +check_PROGRAMS += test-strerror +EXTRA_DIST += test-strerror.c signature.h macros.h + +## end gnulib module strerror-tests + +## begin gnulib module striconv-tests + +TESTS += test-striconv +check_PROGRAMS += test-striconv +test_striconv_LDADD = $(LDADD) @LIBICONV@ + +EXTRA_DIST += test-striconv.c macros.h + +## end gnulib module striconv-tests + +## begin gnulib module striconveh-tests + +TESTS += test-striconveh +check_PROGRAMS += test-striconveh +test_striconveh_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ + +EXTRA_DIST += test-striconveh.c macros.h + +## end gnulib module striconveh-tests + +## begin gnulib module striconveha-tests + +TESTS += test-striconveha +check_PROGRAMS += test-striconveha +test_striconveha_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ + +EXTRA_DIST += test-striconveha.c macros.h + +## end gnulib module striconveha-tests + +## begin gnulib module string-tests + +TESTS += test-string +check_PROGRAMS += test-string +EXTRA_DIST += test-string.c + +## end gnulib module string-tests + +## begin gnulib module strnlen-tests + +TESTS += test-strnlen +check_PROGRAMS += test-strnlen +EXTRA_DIST += test-strnlen.c zerosize-ptr.h signature.h macros.h + +## end gnulib module strnlen-tests + +## begin gnulib module strstr-tests + +TESTS += test-strstr +check_PROGRAMS += test-strstr +EXTRA_DIST += test-strstr.c zerosize-ptr.h signature.h macros.h + +## end gnulib module strstr-tests + +## begin gnulib module strtol-tests + +TESTS += test-strtol +check_PROGRAMS += test-strtol +EXTRA_DIST += test-strtol.c signature.h macros.h + +## end gnulib module strtol-tests + +## begin gnulib module strtoul-tests + +TESTS += test-strtoul +check_PROGRAMS += test-strtoul +EXTRA_DIST += test-strtoul.c signature.h macros.h + +## end gnulib module strtoul-tests + +## begin gnulib module symlink + + +EXTRA_DIST += symlink.c + +EXTRA_libtests_a_SOURCES += symlink.c + +## end gnulib module symlink + +## begin gnulib module symlink-tests + +TESTS += test-symlink +check_PROGRAMS += test-symlink +EXTRA_DIST += test-symlink.h test-symlink.c signature.h macros.h + +## end gnulib module symlink-tests + +## begin gnulib module sys_select-tests + +TESTS += test-sys_select +check_PROGRAMS += test-sys_select +EXTRA_DIST += test-sys_select.c signature.h + +## end gnulib module sys_select-tests + +## begin gnulib module sys_stat-tests + +TESTS += test-sys_stat +check_PROGRAMS += test-sys_stat +EXTRA_DIST += test-sys_stat.c + +## end gnulib module sys_stat-tests + +## begin gnulib module sys_time-tests + +TESTS += test-sys_time +check_PROGRAMS += test-sys_time +EXTRA_DIST += test-sys_time.c + +## end gnulib module sys_time-tests + +## begin gnulib module sys_types-tests + +TESTS += test-sys_types +check_PROGRAMS += test-sys_types +EXTRA_DIST += test-sys_types.c + +## end gnulib module sys_types-tests + +## begin gnulib module sys_wait-tests + +TESTS += test-sys_wait +check_PROGRAMS += test-sys_wait +EXTRA_DIST += test-sys_wait.c test-sys_wait.h + +## end gnulib module sys_wait-tests + +## begin gnulib module term-ostream-tests + +TESTS += test-term-ostream-xterm +TESTS_ENVIRONMENT += srcdir='$(srcdir)' +check_PROGRAMS += test-term-ostream +test_term_ostream_LDADD = $(LIBTERMCAP) $(LDADD) +EXTRA_DIST += test-term-ostream.c test-term-ostream-xterm test-term-ostream-xterm-r6.out test-term-ostream-xterm-xf86-v32.out test-term-ostream-xterm-basic.out test-term-ostream-xterm-basic-italic.out test-term-ostream-xterm-8bit.out test-term-ostream-xterm-linux-debian.out test-term-ostream-xterm-linux-mandriva.out test-term-ostream-xterm-netbsd3.out test-term-ostream-xterm-solaris10.out test-term-ostream-xterm-aix51.out test-term-ostream-xterm-osf51.out test-term-ostream-xterm-irix65.out test-term-ostream-xterm-mingw.out test-term-ostream-xterm-16color.out test-term-ostream-xterm-88color.out test-term-ostream-xterm-256color.out + +## end gnulib module term-ostream-tests + +## begin gnulib module test-framework-sh-tests + +TESTS += test-init.sh +EXTRA_DIST += init.sh +EXTRA_DIST += test-init.sh + +## end gnulib module test-framework-sh-tests + +## begin gnulib module thread + +libtests_a_SOURCES += glthread/thread.h glthread/thread.c + +## end gnulib module thread + +## begin gnulib module thread-tests + +TESTS += test-thread_self test-thread_create +check_PROGRAMS += test-thread_self test-thread_create +test_thread_self_LDADD = $(LDADD) @LIBTHREAD@ +test_thread_create_LDADD = $(LDADD) @LIBMULTITHREAD@ +EXTRA_DIST += test-thread_self.c test-thread_create.c macros.h + +## end gnulib module thread-tests + +## begin gnulib module time-tests + +TESTS += test-time +check_PROGRAMS += test-time +EXTRA_DIST += test-time.c + +## end gnulib module time-tests + +## begin gnulib module tls-tests + +TESTS += test-tls +check_PROGRAMS += test-tls +test_tls_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@ + +EXTRA_DIST += test-tls.c + +## end gnulib module tls-tests + +## begin gnulib module uniconv/u8-conv-from-enc-tests + +TESTS += test-u8-conv-from-enc +check_PROGRAMS += test-u8-conv-from-enc +test_u8_conv_from_enc_SOURCES = uniconv/test-u8-conv-from-enc.c +test_u8_conv_from_enc_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ + +EXTRA_DIST += uniconv/test-u8-conv-from-enc.c macros.h + +## end gnulib module uniconv/u8-conv-from-enc-tests + +## begin gnulib module unilbrk/u8-width-linebreaks-tests + +TESTS += test-u8-width-linebreaks +check_PROGRAMS += test-u8-width-linebreaks +test_u8_width_linebreaks_SOURCES = unilbrk/test-u8-width-linebreaks.c +test_u8_width_linebreaks_LDADD = $(LDADD) $(LIBUNISTRING) +EXTRA_DIST += unilbrk/test-u8-width-linebreaks.c macros.h + +## end gnulib module unilbrk/u8-width-linebreaks-tests + +## begin gnulib module uniname/uniname-tests + +if LIBUNISTRING_COMPILE_UNINAME_UNINAME +TESTS += uniname/test-uninames.sh +check_PROGRAMS += test-uninames +test_uninames_SOURCES = uniname/test-uninames.c +test_uninames_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ +endif + +EXTRA_DIST += uniname/test-uninames.sh uniname/test-uninames.c uniname/UnicodeDataNames.txt + +## end gnulib module uniname/uniname-tests + +## begin gnulib module unistd-safer-tests + +TESTS += test-dup-safer +check_PROGRAMS += test-dup-safer +EXTRA_DIST += test-dup-safer.c macros.h + +## end gnulib module unistd-safer-tests + +## begin gnulib module unistd-tests + +TESTS += test-unistd +check_PROGRAMS += test-unistd +EXTRA_DIST += test-unistd.c + +## end gnulib module unistd-tests + +## begin gnulib module unistr/u16-mbtouc-tests + +TESTS += test-u16-mbtouc +check_PROGRAMS += test-u16-mbtouc +test_u16_mbtouc_SOURCES = unistr/test-u16-mbtouc.c +test_u16_mbtouc_LDADD = $(LDADD) $(LIBUNISTRING) +EXTRA_DIST += unistr/test-u16-mbtouc.c unistr/test-u16-mbtouc.h macros.h + +## end gnulib module unistr/u16-mbtouc-tests + +## begin gnulib module unistr/u8-check-tests + +TESTS += test-u8-check +check_PROGRAMS += test-u8-check +test_u8_check_SOURCES = unistr/test-u8-check.c +test_u8_check_LDADD = $(LDADD) $(LIBUNISTRING) +EXTRA_DIST += unistr/test-u8-check.c macros.h + +## end gnulib module unistr/u8-check-tests + +## begin gnulib module unistr/u8-cmp + +if LIBUNISTRING_COMPILE_UNISTR_U8_CMP +libtests_a_SOURCES += unistr/u8-cmp.c +endif + +## end gnulib module unistr/u8-cmp + +## begin gnulib module unistr/u8-cmp-tests + +TESTS += test-u8-cmp +check_PROGRAMS += test-u8-cmp +test_u8_cmp_SOURCES = unistr/test-u8-cmp.c +test_u8_cmp_LDADD = $(LDADD) $(LIBUNISTRING) +EXTRA_DIST += unistr/test-u8-cmp.c unistr/test-cmp.h zerosize-ptr.h macros.h + +## end gnulib module unistr/u8-cmp-tests + +## begin gnulib module unistr/u8-mblen-tests + +TESTS += test-u8-mblen +check_PROGRAMS += test-u8-mblen +test_u8_mblen_SOURCES = unistr/test-u8-mblen.c +test_u8_mblen_LDADD = $(LDADD) $(LIBUNISTRING) +EXTRA_DIST += unistr/test-u8-mblen.c macros.h + +## end gnulib module unistr/u8-mblen-tests + +## begin gnulib module unistr/u8-mbtoucr-tests + +TESTS += test-u8-mbtoucr +check_PROGRAMS += test-u8-mbtoucr +test_u8_mbtoucr_SOURCES = unistr/test-u8-mbtoucr.c +test_u8_mbtoucr_LDADD = $(LDADD) $(LIBUNISTRING) +EXTRA_DIST += unistr/test-u8-mbtoucr.c macros.h + +## end gnulib module unistr/u8-mbtoucr-tests + +## begin gnulib module unistr/u8-prev-tests + +TESTS += test-u8-prev +check_PROGRAMS += test-u8-prev +test_u8_prev_SOURCES = unistr/test-u8-prev.c +test_u8_prev_LDADD = $(LDADD) $(LIBUNISTRING) +EXTRA_DIST += unistr/test-u8-prev.c macros.h + +## end gnulib module unistr/u8-prev-tests + +## begin gnulib module unistr/u8-strlen + +if LIBUNISTRING_COMPILE_UNISTR_U8_STRLEN +libtests_a_SOURCES += unistr/u8-strlen.c +endif + +## end gnulib module unistr/u8-strlen + +## begin gnulib module unistr/u8-strlen-tests + +TESTS += test-u8-strlen +check_PROGRAMS += test-u8-strlen +test_u8_strlen_SOURCES = unistr/test-u8-strlen.c +test_u8_strlen_LDADD = $(LDADD) $(LIBUNISTRING) +EXTRA_DIST += unistr/test-u8-strlen.c macros.h + +## end gnulib module unistr/u8-strlen-tests + +## begin gnulib module unistr/u8-uctomb-tests + +TESTS += test-u8-uctomb +check_PROGRAMS += test-u8-uctomb +test_u8_uctomb_SOURCES = unistr/test-u8-uctomb.c +test_u8_uctomb_LDADD = $(LDADD) $(LIBUNISTRING) +EXTRA_DIST += unistr/test-u8-uctomb.c macros.h + +## end gnulib module unistr/u8-uctomb-tests + +## begin gnulib module unsetenv-tests + +TESTS += test-unsetenv +check_PROGRAMS += test-unsetenv +EXTRA_DIST += test-unsetenv.c signature.h macros.h + +## end gnulib module unsetenv-tests + +## begin gnulib module vasnprintf-tests + +TESTS += test-vasnprintf +check_PROGRAMS += test-vasnprintf + +EXTRA_DIST += test-vasnprintf.c macros.h + +## end gnulib module vasnprintf-tests + +## begin gnulib module vasprintf-tests + +TESTS += test-vasprintf +check_PROGRAMS += test-vasprintf + +EXTRA_DIST += test-vasprintf.c signature.h macros.h + +## end gnulib module vasprintf-tests + +## begin gnulib module verify-tests + +TESTS_ENVIRONMENT += MAKE='$(MAKE)' +TESTS += test-verify test-verify.sh +check_PROGRAMS += test-verify +EXTRA_DIST += test-verify.c test-verify.sh + +## end gnulib module verify-tests + +## begin gnulib module vsnprintf-tests + +TESTS += test-vsnprintf +check_PROGRAMS += test-vsnprintf + +EXTRA_DIST += test-vsnprintf.c signature.h macros.h + +## end gnulib module vsnprintf-tests + +## begin gnulib module wchar-tests + +TESTS += test-wchar +check_PROGRAMS += test-wchar +EXTRA_DIST += test-wchar.c + +## end gnulib module wchar-tests + +## begin gnulib module wcrtomb + + +EXTRA_DIST += wcrtomb.c + +EXTRA_libtests_a_SOURCES += wcrtomb.c + +## end gnulib module wcrtomb + +## begin gnulib module wcrtomb-tests + +TESTS += \ + test-wcrtomb.sh \ + test-wcrtomb-w32-1.sh test-wcrtomb-w32-2.sh test-wcrtomb-w32-3.sh \ + test-wcrtomb-w32-4.sh test-wcrtomb-w32-5.sh +TESTS_ENVIRONMENT += \ + LOCALE_FR='@LOCALE_FR@' \ + LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \ + LOCALE_JA='@LOCALE_JA@' \ + LOCALE_ZH_CN='@LOCALE_ZH_CN@' +check_PROGRAMS += test-wcrtomb test-wcrtomb-w32 + +EXTRA_DIST += test-wcrtomb.sh test-wcrtomb.c test-wcrtomb-w32-1.sh test-wcrtomb-w32-2.sh test-wcrtomb-w32-3.sh test-wcrtomb-w32-4.sh test-wcrtomb-w32-5.sh test-wcrtomb-w32.c signature.h macros.h + +## end gnulib module wcrtomb-tests + +## begin gnulib module wctob + + +EXTRA_DIST += wctob.c + +EXTRA_libtests_a_SOURCES += wctob.c + +## end gnulib module wctob + +## begin gnulib module wctomb + + +EXTRA_DIST += wctomb-impl.h wctomb.c + +EXTRA_libtests_a_SOURCES += wctomb.c + +## end gnulib module wctomb + +## begin gnulib module wctype-h-tests + +TESTS += test-wctype-h +check_PROGRAMS += test-wctype-h +EXTRA_DIST += test-wctype-h.c macros.h + +## end gnulib module wctype-h-tests + +## begin gnulib module wcwidth-tests + +TESTS += test-wcwidth +check_PROGRAMS += test-wcwidth + +EXTRA_DIST += test-wcwidth.c signature.h macros.h + +## end gnulib module wcwidth-tests + +## begin gnulib module write-tests + +TESTS += test-write +check_PROGRAMS += test-write +EXTRA_DIST += test-write.c signature.h macros.h + +## end gnulib module write-tests + +## begin gnulib module xalloc-die-tests + +TESTS += test-xalloc-die.sh +check_PROGRAMS += test-xalloc-die +test_xalloc_die_LDADD = $(LDADD) @LIBINTL@ +EXTRA_DIST += test-xalloc-die.c test-xalloc-die.sh + +## end gnulib module xalloc-die-tests + +## begin gnulib module xvasprintf-tests + +TESTS += test-xvasprintf +check_PROGRAMS += test-xvasprintf +test_xvasprintf_LDADD = $(LDADD) @LIBINTL@ + +EXTRA_DIST += test-xvasprintf.c macros.h + +## end gnulib module xvasprintf-tests + +## begin gnulib module yield + +libtests_a_SOURCES += glthread/yield.h + +## end gnulib module yield + +# Clean up after Solaris cc. +clean-local: + rm -rf SunWS_cache + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + fi; \ + done; \ + : diff --git a/gettext-tools/gnulib-tests/Makefile.in b/gettext-tools/gnulib-tests/Makefile.in new file mode 100644 index 0000000..50eecda --- /dev/null +++ b/gettext-tools/gnulib-tests/Makefile.in @@ -0,0 +1,5841 @@ +# Makefile.in generated by automake 1.14.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this file. If not, see <http://www.gnu.org/licenses/>. +# +# As a special exception to the GNU General Public License, +# this file may be distributed as part of a program that +# contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. + + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.gnulib $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/../build-aux/mkinstalldirs \ + $(top_srcdir)/../build-aux/depcomp $(noinst_HEADERS) \ + $(top_srcdir)/../build-aux/test-driver ChangeLog +TESTS = test-file-has-acl.sh test-file-has-acl-1.sh \ + test-file-has-acl-2.sh test-set-mode-acl.sh \ + test-set-mode-acl-1.sh test-set-mode-acl-2.sh test-copy-acl.sh \ + test-copy-acl-1.sh test-copy-acl-2.sh test-alignof$(EXEEXT) \ + test-alloca-opt$(EXEEXT) test-areadlink$(EXEEXT) \ + test-argmatch$(EXEEXT) test-array_list$(EXEEXT) test-atexit.sh \ + test-binary-io.sh test-btowc1.sh test-btowc2.sh \ + test-byteswap$(EXEEXT) test-c-ctype$(EXEEXT) test-c-strcase.sh \ + test-c-strcasestr$(EXEEXT) test-c-strstr$(EXEEXT) \ + test-canonicalize-lgpl$(EXEEXT) test-cloexec$(EXEEXT) \ + test-close$(EXEEXT) test-copy-file.sh test-copy-file-1.sh \ + test-copy-file-2.sh test-dirent$(EXEEXT) test-dup$(EXEEXT) \ + test-dup2$(EXEEXT) test-environ$(EXEEXT) test-errno$(EXEEXT) \ + test-fcntl-h$(EXEEXT) test-fcntl$(EXEEXT) test-fdopen$(EXEEXT) \ + test-fgetc$(EXEEXT) test-float$(EXEEXT) test-fnmatch$(EXEEXT) \ + test-fopen$(EXEEXT) test-fputc$(EXEEXT) test-fread$(EXEEXT) \ + test-fstat$(EXEEXT) test-fstrcmp$(EXEEXT) test-ftell.sh \ + test-ftell2.sh test-ftell3$(EXEEXT) test-ftello.sh \ + test-ftello2.sh test-ftello3$(EXEEXT) test-ftello4.sh \ + test-fwrite$(EXEEXT) test-getcwd-lgpl$(EXEEXT) \ + test-getdelim$(EXEEXT) test-getdtablesize$(EXEEXT) \ + test-getline$(EXEEXT) test-getopt$(EXEEXT) \ + test-gettimeofday$(EXEEXT) test-iconv-h$(EXEEXT) \ + test-iconv$(EXEEXT) test-ignore-value$(EXEEXT) \ + test-intprops$(EXEEXT) test-inttypes$(EXEEXT) \ + test-iswblank$(EXEEXT) test-linkedhash_list$(EXEEXT) \ + test-locale$(EXEEXT) test-localename$(EXEEXT) \ + test-lock$(EXEEXT) test-lseek.sh test-lstat$(EXEEXT) \ + test-malloca$(EXEEXT) test-mbrtowc1.sh test-mbrtowc2.sh \ + test-mbrtowc3.sh test-mbrtowc4.sh test-mbrtowc-w32-1.sh \ + test-mbrtowc-w32-2.sh test-mbrtowc-w32-3.sh \ + test-mbrtowc-w32-4.sh test-mbrtowc-w32-5.sh test-mbsinit.sh \ + test-mbsrtowcs1.sh test-mbsrtowcs2.sh test-mbsrtowcs3.sh \ + test-mbsrtowcs4.sh test-mbsstr1$(EXEEXT) test-mbsstr2.sh \ + test-mbsstr3.sh test-memchr$(EXEEXT) test-open$(EXEEXT) \ + test-pathmax$(EXEEXT) test-pipe-filter-ii1.sh \ + test-pipe-filter-ii2.sh test-pipe2$(EXEEXT) \ + test-posix_spawn_file_actions_addclose$(EXEEXT) \ + test-posix_spawn_file_actions_adddup2$(EXEEXT) \ + test-posix_spawn_file_actions_addopen$(EXEEXT) $(am__EXEEXT_1) \ + test-quotearg-simple$(EXEEXT) test-raise$(EXEEXT) \ + test-rawmemchr$(EXEEXT) test-read-file$(EXEEXT) \ + test-read$(EXEEXT) test-readlink$(EXEEXT) test-rmdir$(EXEEXT) \ + test-sched$(EXEEXT) test-setenv$(EXEEXT) test-setlocale1.sh \ + test-setlocale2.sh test-sh-quote$(EXEEXT) \ + test-sigaction$(EXEEXT) test-signal-h$(EXEEXT) test-sigpipe.sh \ + test-sigprocmask$(EXEEXT) test-sleep$(EXEEXT) \ + test-snprintf$(EXEEXT) test-spawn-pipe.sh test-spawn$(EXEEXT) \ + test-stat$(EXEEXT) test-stdbool$(EXEEXT) test-stddef$(EXEEXT) \ + test-stdint$(EXEEXT) test-stdio$(EXEEXT) test-stdlib$(EXEEXT) \ + test-strchrnul$(EXEEXT) test-strerror$(EXEEXT) \ + test-striconv$(EXEEXT) test-striconveh$(EXEEXT) \ + test-striconveha$(EXEEXT) test-string$(EXEEXT) \ + test-strnlen$(EXEEXT) test-strstr$(EXEEXT) \ + test-strtol$(EXEEXT) test-strtoul$(EXEEXT) \ + test-symlink$(EXEEXT) test-sys_select$(EXEEXT) \ + test-sys_stat$(EXEEXT) test-sys_time$(EXEEXT) \ + test-sys_types$(EXEEXT) test-sys_wait$(EXEEXT) \ + test-term-ostream-xterm test-init.sh test-thread_self$(EXEEXT) \ + test-thread_create$(EXEEXT) test-time$(EXEEXT) \ + test-tls$(EXEEXT) test-u8-conv-from-enc$(EXEEXT) \ + test-u8-width-linebreaks$(EXEEXT) $(am__append_5) \ + test-dup-safer$(EXEEXT) test-unistd$(EXEEXT) \ + test-u16-mbtouc$(EXEEXT) test-u8-check$(EXEEXT) \ + test-u8-cmp$(EXEEXT) test-u8-mblen$(EXEEXT) \ + test-u8-mbtoucr$(EXEEXT) test-u8-prev$(EXEEXT) \ + test-u8-strlen$(EXEEXT) test-u8-uctomb$(EXEEXT) \ + test-unsetenv$(EXEEXT) test-vasnprintf$(EXEEXT) \ + test-vasprintf$(EXEEXT) test-verify$(EXEEXT) test-verify.sh \ + test-vsnprintf$(EXEEXT) test-wchar$(EXEEXT) test-wcrtomb.sh \ + test-wcrtomb-w32-1.sh test-wcrtomb-w32-2.sh \ + test-wcrtomb-w32-3.sh test-wcrtomb-w32-4.sh \ + test-wcrtomb-w32-5.sh test-wctype-h$(EXEEXT) \ + test-wcwidth$(EXEEXT) test-write$(EXEEXT) test-xalloc-die.sh \ + test-xvasprintf$(EXEEXT) +XFAIL_TESTS = +noinst_PROGRAMS = +check_PROGRAMS = test-file-has-acl$(EXEEXT) test-set-mode-acl$(EXEEXT) \ + test-copy-acl$(EXEEXT) test-sameacls$(EXEEXT) \ + test-alignof$(EXEEXT) test-alloca-opt$(EXEEXT) \ + test-areadlink$(EXEEXT) test-argmatch$(EXEEXT) \ + test-array_list$(EXEEXT) test-atexit$(EXEEXT) \ + test-binary-io$(EXEEXT) test-btowc$(EXEEXT) \ + test-byteswap$(EXEEXT) test-c-ctype$(EXEEXT) \ + test-c-strcasecmp$(EXEEXT) test-c-strncasecmp$(EXEEXT) \ + test-c-strcasestr$(EXEEXT) test-c-strstr$(EXEEXT) \ + test-canonicalize-lgpl$(EXEEXT) test-cloexec$(EXEEXT) \ + test-close$(EXEEXT) test-copy-file$(EXEEXT) \ + test-dirent$(EXEEXT) test-dup$(EXEEXT) test-dup2$(EXEEXT) \ + test-environ$(EXEEXT) test-errno$(EXEEXT) \ + test-fcntl-h$(EXEEXT) test-fcntl$(EXEEXT) test-fdopen$(EXEEXT) \ + test-fgetc$(EXEEXT) test-float$(EXEEXT) test-fnmatch$(EXEEXT) \ + test-fopen$(EXEEXT) test-fputc$(EXEEXT) test-fread$(EXEEXT) \ + test-fstat$(EXEEXT) test-fstrcmp$(EXEEXT) test-ftell$(EXEEXT) \ + test-ftell3$(EXEEXT) test-ftello$(EXEEXT) \ + test-ftello3$(EXEEXT) test-ftello4$(EXEEXT) \ + test-fwrite$(EXEEXT) test-getcwd-lgpl$(EXEEXT) \ + test-getdelim$(EXEEXT) test-getdtablesize$(EXEEXT) \ + test-getline$(EXEEXT) test-getopt$(EXEEXT) \ + test-gettimeofday$(EXEEXT) test-iconv-h$(EXEEXT) \ + test-iconv$(EXEEXT) test-ignore-value$(EXEEXT) \ + test-intprops$(EXEEXT) test-inttypes$(EXEEXT) \ + test-iswblank$(EXEEXT) test-linkedhash_list$(EXEEXT) \ + test-locale$(EXEEXT) test-localename$(EXEEXT) \ + test-lock$(EXEEXT) test-lseek$(EXEEXT) test-lstat$(EXEEXT) \ + test-malloca$(EXEEXT) test-mbrtowc$(EXEEXT) \ + test-mbrtowc-w32$(EXEEXT) test-mbsinit$(EXEEXT) \ + test-mbsrtowcs$(EXEEXT) test-mbsstr1$(EXEEXT) \ + test-mbsstr2$(EXEEXT) test-mbsstr3$(EXEEXT) \ + test-memchr$(EXEEXT) test-open$(EXEEXT) test-pathmax$(EXEEXT) \ + test-pipe-filter-ii1$(EXEEXT) \ + test-pipe-filter-ii2-main$(EXEEXT) \ + test-pipe-filter-ii2-child$(EXEEXT) test-pipe2$(EXEEXT) \ + test-posix_spawn_file_actions_addclose$(EXEEXT) \ + test-posix_spawn_file_actions_adddup2$(EXEEXT) \ + test-posix_spawn_file_actions_addopen$(EXEEXT) $(am__EXEEXT_1) \ + test-quotearg-simple$(EXEEXT) test-raise$(EXEEXT) \ + test-rawmemchr$(EXEEXT) test-read-file$(EXEEXT) \ + test-read$(EXEEXT) test-readlink$(EXEEXT) test-rmdir$(EXEEXT) \ + test-sched$(EXEEXT) test-setenv$(EXEEXT) \ + test-setlocale1$(EXEEXT) test-setlocale2$(EXEEXT) \ + test-sh-quote$(EXEEXT) test-sigaction$(EXEEXT) \ + test-signal-h$(EXEEXT) test-sigpipe$(EXEEXT) \ + test-sigprocmask$(EXEEXT) test-sleep$(EXEEXT) \ + test-snprintf$(EXEEXT) test-spawn-pipe-main$(EXEEXT) \ + test-spawn-pipe-child$(EXEEXT) test-spawn$(EXEEXT) \ + test-stat$(EXEEXT) test-stdbool$(EXEEXT) test-stddef$(EXEEXT) \ + test-stdint$(EXEEXT) test-stdio$(EXEEXT) test-stdlib$(EXEEXT) \ + test-strchrnul$(EXEEXT) test-strerror$(EXEEXT) \ + test-striconv$(EXEEXT) test-striconveh$(EXEEXT) \ + test-striconveha$(EXEEXT) test-string$(EXEEXT) \ + test-strnlen$(EXEEXT) test-strstr$(EXEEXT) \ + test-strtol$(EXEEXT) test-strtoul$(EXEEXT) \ + test-symlink$(EXEEXT) test-sys_select$(EXEEXT) \ + test-sys_stat$(EXEEXT) test-sys_time$(EXEEXT) \ + test-sys_types$(EXEEXT) test-sys_wait$(EXEEXT) \ + test-term-ostream$(EXEEXT) test-thread_self$(EXEEXT) \ + test-thread_create$(EXEEXT) test-time$(EXEEXT) \ + test-tls$(EXEEXT) test-u8-conv-from-enc$(EXEEXT) \ + test-u8-width-linebreaks$(EXEEXT) $(am__EXEEXT_2) \ + test-dup-safer$(EXEEXT) test-unistd$(EXEEXT) \ + test-u16-mbtouc$(EXEEXT) test-u8-check$(EXEEXT) \ + test-u8-cmp$(EXEEXT) test-u8-mblen$(EXEEXT) \ + test-u8-mbtoucr$(EXEEXT) test-u8-prev$(EXEEXT) \ + test-u8-strlen$(EXEEXT) test-u8-uctomb$(EXEEXT) \ + test-unsetenv$(EXEEXT) test-vasnprintf$(EXEEXT) \ + test-vasprintf$(EXEEXT) test-verify$(EXEEXT) \ + test-vsnprintf$(EXEEXT) test-wchar$(EXEEXT) \ + test-wcrtomb$(EXEEXT) test-wcrtomb-w32$(EXEEXT) \ + test-wctype-h$(EXEEXT) test-wcwidth$(EXEEXT) \ + test-write$(EXEEXT) test-xalloc-die$(EXEEXT) \ + test-xvasprintf$(EXEEXT) +@POSIX_SPAWN_PORTED_TRUE@am__append_1 = test-posix_spawn1 test-posix_spawn2 +@POSIX_SPAWN_PORTED_TRUE@am__append_2 = test-posix_spawn1 test-posix_spawn2 +@POSIX_SPAWN_PORTED_TRUE@am__append_3 = test-posix_spawn1.sh \ +@POSIX_SPAWN_PORTED_TRUE@ test-posix_spawn2.sh +@POSIX_SPAWN_PORTED_TRUE@am__append_4 = test-posix_spawn1.sh \ +@POSIX_SPAWN_PORTED_TRUE@ test-posix_spawn1.sh-t \ +@POSIX_SPAWN_PORTED_TRUE@ test-posix_spawn2.sh \ +@POSIX_SPAWN_PORTED_TRUE@ test-posix_spawn2.sh-t +@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@am__append_5 = uniname/test-uninames.sh +@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@am__append_6 = test-uninames +@LIBUNISTRING_COMPILE_UNISTR_U8_CMP_TRUE@am__append_7 = unistr/u8-cmp.c +@LIBUNISTRING_COMPILE_UNISTR_U8_STRLEN_TRUE@am__append_8 = unistr/u8-strlen.c +subdir = gnulib-tests +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = \ + $(top_srcdir)/libgettextpo/gnulib-m4/gnulib-comp.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/gnulib-comp.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/langinfo_h.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/localeconv.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/mbrlen.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/nl_langinfo.m4 \ + $(top_srcdir)/libgrep/gnulib-m4/regex.m4 \ + $(top_srcdir)/gnulib-m4/00gnulib.m4 \ + $(top_srcdir)/gnulib-m4/absolute-header.m4 \ + $(top_srcdir)/gnulib-m4/acl.m4 \ + $(top_srcdir)/gnulib-m4/alloca.m4 \ + $(top_srcdir)/gnulib-m4/ansi-c++.m4 \ + $(top_srcdir)/gnulib-m4/asm-underscore.m4 \ + $(top_srcdir)/gnulib-m4/atexit.m4 \ + $(top_srcdir)/gnulib-m4/backupfile.m4 \ + $(top_srcdir)/gnulib-m4/bison-i18n.m4 \ + $(top_srcdir)/gnulib-m4/btowc.m4 \ + $(top_srcdir)/gnulib-m4/byteswap.m4 \ + $(top_srcdir)/gnulib-m4/canonicalize.m4 \ + $(top_srcdir)/gnulib-m4/close.m4 \ + $(top_srcdir)/gnulib-m4/closedir.m4 \ + $(top_srcdir)/gnulib-m4/configmake.m4 \ + $(top_srcdir)/gnulib-m4/copy-file.m4 \ + $(top_srcdir)/gnulib-m4/csharp.m4 \ + $(top_srcdir)/gnulib-m4/csharpcomp.m4 \ + $(top_srcdir)/gnulib-m4/csharpexec.m4 \ + $(top_srcdir)/gnulib-m4/curses.m4 \ + $(top_srcdir)/gnulib-m4/dirent_h.m4 \ + $(top_srcdir)/gnulib-m4/double-slash-root.m4 \ + $(top_srcdir)/gnulib-m4/dup.m4 $(top_srcdir)/gnulib-m4/dup2.m4 \ + $(top_srcdir)/gnulib-m4/eaccess.m4 \ + $(top_srcdir)/gnulib-m4/eealloc.m4 \ + $(top_srcdir)/gnulib-m4/environ.m4 \ + $(top_srcdir)/gnulib-m4/errno_h.m4 \ + $(top_srcdir)/gnulib-m4/error.m4 \ + $(top_srcdir)/gnulib-m4/execute.m4 \ + $(top_srcdir)/gnulib-m4/exponentd.m4 \ + $(top_srcdir)/gnulib-m4/extensions.m4 \ + $(top_srcdir)/gnulib-m4/fatal-signal.m4 \ + $(top_srcdir)/gnulib-m4/fcntl.m4 \ + $(top_srcdir)/gnulib-m4/fcntl_h.m4 \ + $(top_srcdir)/gnulib-m4/fdopen.m4 \ + $(top_srcdir)/gnulib-m4/findprog.m4 \ + $(top_srcdir)/gnulib-m4/float_h.m4 \ + $(top_srcdir)/gnulib-m4/fnmatch.m4 \ + $(top_srcdir)/gnulib-m4/fopen.m4 \ + $(top_srcdir)/gnulib-m4/fpieee.m4 \ + $(top_srcdir)/gnulib-m4/fseeko.m4 \ + $(top_srcdir)/gnulib-m4/fstat.m4 \ + $(top_srcdir)/gnulib-m4/ftell.m4 \ + $(top_srcdir)/gnulib-m4/ftello.m4 \ + $(top_srcdir)/gnulib-m4/gcj.m4 \ + $(top_srcdir)/gnulib-m4/getcwd.m4 \ + $(top_srcdir)/gnulib-m4/getdelim.m4 \ + $(top_srcdir)/gnulib-m4/getdtablesize.m4 \ + $(top_srcdir)/gnulib-m4/getline.m4 \ + $(top_srcdir)/gnulib-m4/getopt.m4 \ + $(top_srcdir)/gnulib-m4/getpagesize.m4 \ + $(top_srcdir)/gnulib-m4/gettimeofday.m4 \ + $(top_srcdir)/gnulib-m4/gnulib-common.m4 \ + $(top_srcdir)/gnulib-m4/gnulib-comp.m4 \ + $(top_srcdir)/gnulib-m4/iconv_h.m4 \ + $(top_srcdir)/gnulib-m4/iconv_open.m4 \ + $(top_srcdir)/gnulib-m4/include_next.m4 \ + $(top_srcdir)/gnulib-m4/inline.m4 \ + $(top_srcdir)/gnulib-m4/intmax_t.m4 \ + $(top_srcdir)/gnulib-m4/inttypes.m4 \ + $(top_srcdir)/gnulib-m4/iswblank.m4 \ + $(top_srcdir)/gnulib-m4/java.m4 \ + $(top_srcdir)/gnulib-m4/javacomp.m4 \ + $(top_srcdir)/gnulib-m4/javaexec.m4 \ + $(top_srcdir)/gnulib-m4/largefile.m4 \ + $(top_srcdir)/gnulib-m4/lib-ld.m4 \ + $(top_srcdir)/gnulib-m4/lib-link.m4 \ + $(top_srcdir)/gnulib-m4/lib-prefix.m4 \ + $(top_srcdir)/gnulib-m4/libcroco.m4 \ + $(top_srcdir)/gnulib-m4/libglib.m4 \ + $(top_srcdir)/gnulib-m4/libunistring-base.m4 \ + $(top_srcdir)/gnulib-m4/libunistring-optional.m4 \ + $(top_srcdir)/gnulib-m4/libunistring.m4 \ + $(top_srcdir)/gnulib-m4/libxml.m4 \ + $(top_srcdir)/gnulib-m4/localcharset.m4 \ + $(top_srcdir)/gnulib-m4/locale-fr.m4 \ + $(top_srcdir)/gnulib-m4/locale-ja.m4 \ + $(top_srcdir)/gnulib-m4/locale-tr.m4 \ + $(top_srcdir)/gnulib-m4/locale-zh.m4 \ + $(top_srcdir)/gnulib-m4/locale_h.m4 \ + $(top_srcdir)/gnulib-m4/localename.m4 \ + $(top_srcdir)/gnulib-m4/lseek.m4 \ + $(top_srcdir)/gnulib-m4/lstat.m4 \ + $(top_srcdir)/gnulib-m4/malloc.m4 \ + $(top_srcdir)/gnulib-m4/malloca.m4 \ + $(top_srcdir)/gnulib-m4/mbchar.m4 \ + $(top_srcdir)/gnulib-m4/mbiter.m4 \ + $(top_srcdir)/gnulib-m4/mbrtowc.m4 \ + $(top_srcdir)/gnulib-m4/mbsinit.m4 \ + $(top_srcdir)/gnulib-m4/mbslen.m4 \ + $(top_srcdir)/gnulib-m4/mbsrtowcs.m4 \ + $(top_srcdir)/gnulib-m4/mbstate_t.m4 \ + $(top_srcdir)/gnulib-m4/mbswidth.m4 \ + $(top_srcdir)/gnulib-m4/mbtowc.m4 \ + $(top_srcdir)/gnulib-m4/memchr.m4 \ + $(top_srcdir)/gnulib-m4/memmove.m4 \ + $(top_srcdir)/gnulib-m4/memset.m4 \ + $(top_srcdir)/gnulib-m4/minmax.m4 \ + $(top_srcdir)/gnulib-m4/mkdtemp.m4 \ + $(top_srcdir)/gnulib-m4/mmap-anon.m4 \ + $(top_srcdir)/gnulib-m4/mode_t.m4 \ + $(top_srcdir)/gnulib-m4/moo.m4 \ + $(top_srcdir)/gnulib-m4/msvc-inval.m4 \ + $(top_srcdir)/gnulib-m4/msvc-nothrow.m4 \ + $(top_srcdir)/gnulib-m4/multiarch.m4 \ + $(top_srcdir)/gnulib-m4/no-c++.m4 \ + $(top_srcdir)/gnulib-m4/nocrash.m4 \ + $(top_srcdir)/gnulib-m4/obstack.m4 \ + $(top_srcdir)/gnulib-m4/off_t.m4 \ + $(top_srcdir)/gnulib-m4/open.m4 \ + $(top_srcdir)/gnulib-m4/opendir.m4 \ + $(top_srcdir)/gnulib-m4/pathmax.m4 \ + $(top_srcdir)/gnulib-m4/pipe2.m4 \ + $(top_srcdir)/gnulib-m4/posix_spawn.m4 \ + $(top_srcdir)/gnulib-m4/printf.m4 \ + $(top_srcdir)/gnulib-m4/putenv.m4 \ + $(top_srcdir)/gnulib-m4/quote.m4 \ + $(top_srcdir)/gnulib-m4/quotearg.m4 \ + $(top_srcdir)/gnulib-m4/raise.m4 \ + $(top_srcdir)/gnulib-m4/rawmemchr.m4 \ + $(top_srcdir)/gnulib-m4/read-file.m4 \ + $(top_srcdir)/gnulib-m4/read.m4 \ + $(top_srcdir)/gnulib-m4/readdir.m4 \ + $(top_srcdir)/gnulib-m4/readlink.m4 \ + $(top_srcdir)/gnulib-m4/realloc.m4 \ + $(top_srcdir)/gnulib-m4/relocatable-lib.m4 \ + $(top_srcdir)/gnulib-m4/relocatable.m4 \ + $(top_srcdir)/gnulib-m4/rmdir.m4 \ + $(top_srcdir)/gnulib-m4/safe-read.m4 \ + $(top_srcdir)/gnulib-m4/safe-write.m4 \ + $(top_srcdir)/gnulib-m4/sched_h.m4 \ + $(top_srcdir)/gnulib-m4/secure_getenv.m4 \ + $(top_srcdir)/gnulib-m4/setenv.m4 \ + $(top_srcdir)/gnulib-m4/setlocale.m4 \ + $(top_srcdir)/gnulib-m4/sig_atomic_t.m4 \ + $(top_srcdir)/gnulib-m4/sigaction.m4 \ + $(top_srcdir)/gnulib-m4/signal_h.m4 \ + $(top_srcdir)/gnulib-m4/signalblocking.m4 \ + $(top_srcdir)/gnulib-m4/sigpipe.m4 \ + $(top_srcdir)/gnulib-m4/sleep.m4 \ + $(top_srcdir)/gnulib-m4/snprintf.m4 \ + $(top_srcdir)/gnulib-m4/spawn-pipe.m4 \ + $(top_srcdir)/gnulib-m4/spawn_h.m4 \ + $(top_srcdir)/gnulib-m4/ssize_t.m4 \ + $(top_srcdir)/gnulib-m4/stat.m4 \ + $(top_srcdir)/gnulib-m4/stdarg.m4 \ + $(top_srcdir)/gnulib-m4/stdbool.m4 \ + $(top_srcdir)/gnulib-m4/stddef_h.m4 \ + $(top_srcdir)/gnulib-m4/stdint.m4 \ + $(top_srcdir)/gnulib-m4/stdio_h.m4 \ + $(top_srcdir)/gnulib-m4/stdlib_h.m4 \ + $(top_srcdir)/gnulib-m4/stpcpy.m4 \ + $(top_srcdir)/gnulib-m4/stpncpy.m4 \ + $(top_srcdir)/gnulib-m4/strchrnul.m4 \ + $(top_srcdir)/gnulib-m4/strcspn.m4 \ + $(top_srcdir)/gnulib-m4/strerror.m4 \ + $(top_srcdir)/gnulib-m4/string_h.m4 \ + $(top_srcdir)/gnulib-m4/strnlen.m4 \ + $(top_srcdir)/gnulib-m4/strpbrk.m4 \ + $(top_srcdir)/gnulib-m4/strstr.m4 \ + $(top_srcdir)/gnulib-m4/strtol.m4 \ + $(top_srcdir)/gnulib-m4/strtoul.m4 \ + $(top_srcdir)/gnulib-m4/symlink.m4 \ + $(top_srcdir)/gnulib-m4/sys_select_h.m4 \ + $(top_srcdir)/gnulib-m4/sys_socket_h.m4 \ + $(top_srcdir)/gnulib-m4/sys_stat_h.m4 \ + $(top_srcdir)/gnulib-m4/sys_time_h.m4 \ + $(top_srcdir)/gnulib-m4/sys_types_h.m4 \ + $(top_srcdir)/gnulib-m4/sys_wait_h.m4 \ + $(top_srcdir)/gnulib-m4/tempname.m4 \ + $(top_srcdir)/gnulib-m4/term-ostream.m4 \ + $(top_srcdir)/gnulib-m4/terminfo.m4 \ + $(top_srcdir)/gnulib-m4/thread.m4 \ + $(top_srcdir)/gnulib-m4/time_h.m4 \ + $(top_srcdir)/gnulib-m4/tls.m4 \ + $(top_srcdir)/gnulib-m4/tmpdir.m4 \ + $(top_srcdir)/gnulib-m4/ungetc.m4 \ + $(top_srcdir)/gnulib-m4/unionwait.m4 \ + $(top_srcdir)/gnulib-m4/unistd-safer.m4 \ + $(top_srcdir)/gnulib-m4/unistd_h.m4 \ + $(top_srcdir)/gnulib-m4/unlocked-io.m4 \ + $(top_srcdir)/gnulib-m4/vasnprintf.m4 \ + $(top_srcdir)/gnulib-m4/vasprintf.m4 \ + $(top_srcdir)/gnulib-m4/vsnprintf.m4 \ + $(top_srcdir)/gnulib-m4/wait-process.m4 \ + $(top_srcdir)/gnulib-m4/waitpid.m4 \ + $(top_srcdir)/gnulib-m4/warn-on-use.m4 \ + $(top_srcdir)/gnulib-m4/wchar_h.m4 \ + $(top_srcdir)/gnulib-m4/wcrtomb.m4 \ + $(top_srcdir)/gnulib-m4/wctob.m4 \ + $(top_srcdir)/gnulib-m4/wctomb.m4 \ + $(top_srcdir)/gnulib-m4/wctype_h.m4 \ + $(top_srcdir)/gnulib-m4/wcwidth.m4 \ + $(top_srcdir)/gnulib-m4/write.m4 \ + $(top_srcdir)/gnulib-m4/xvasprintf.m4 \ + $(top_srcdir)/gnulib-m4/yield.m4 \ + $(top_srcdir)/../m4/fixautomake.m4 \ + $(top_srcdir)/../m4/libtool.m4 \ + $(top_srcdir)/../m4/ltoptions.m4 \ + $(top_srcdir)/../m4/ltsugar.m4 \ + $(top_srcdir)/../m4/ltversion.m4 \ + $(top_srcdir)/../m4/lt~obsolete.m4 \ + $(top_srcdir)/../m4/woe32-dll.m4 \ + $(top_srcdir)/../gettext-runtime/m4/codeset.m4 \ + $(top_srcdir)/../gettext-runtime/m4/extern-inline.m4 \ + $(top_srcdir)/../gettext-runtime/m4/fcntl-o.m4 \ + $(top_srcdir)/../gettext-runtime/m4/gettext.m4 \ + $(top_srcdir)/../gettext-runtime/m4/glibc2.m4 \ + $(top_srcdir)/../gettext-runtime/m4/glibc21.m4 \ + $(top_srcdir)/../gettext-runtime/m4/iconv.m4 \ + $(top_srcdir)/../gettext-runtime/m4/intdiv0.m4 \ + $(top_srcdir)/../gettext-runtime/m4/intl.m4 \ + $(top_srcdir)/../gettext-runtime/m4/intlmacosx.m4 \ + $(top_srcdir)/../gettext-runtime/m4/intmax.m4 \ + $(top_srcdir)/../gettext-runtime/m4/inttypes-pri.m4 \ + $(top_srcdir)/../gettext-runtime/m4/inttypes_h.m4 \ + $(top_srcdir)/../gettext-runtime/m4/lcmessage.m4 \ + $(top_srcdir)/../gettext-runtime/m4/lock.m4 \ + $(top_srcdir)/../gettext-runtime/m4/longlong.m4 \ + $(top_srcdir)/../gettext-runtime/m4/nls.m4 \ + $(top_srcdir)/../gettext-runtime/m4/po.m4 \ + $(top_srcdir)/../gettext-runtime/m4/printf-posix.m4 \ + $(top_srcdir)/../gettext-runtime/m4/progtest.m4 \ + $(top_srcdir)/../gettext-runtime/m4/size_max.m4 \ + $(top_srcdir)/../gettext-runtime/m4/stdint_h.m4 \ + $(top_srcdir)/../gettext-runtime/m4/threadlib.m4 \ + $(top_srcdir)/../gettext-runtime/m4/uintmax_t.m4 \ + $(top_srcdir)/../gettext-runtime/m4/visibility.m4 \ + $(top_srcdir)/../gettext-runtime/m4/wchar_t.m4 \ + $(top_srcdir)/../gettext-runtime/m4/wint_t.m4 \ + $(top_srcdir)/../gettext-runtime/m4/xsize.m4 \ + $(top_srcdir)/m4/exported.m4 $(top_srcdir)/m4/hostname.m4 \ + $(top_srcdir)/m4/setlocale.m4 $(top_srcdir)/m4/siginfo.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/../build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libtests_a_AR = $(AR) $(ARFLAGS) +am__DEPENDENCIES_1 = +am__libtests_a_SOURCES_DIST = read-file.c glthread/thread.h \ + glthread/thread.c unistr/u8-cmp.c unistr/u8-strlen.c \ + glthread/yield.h +am__dirstamp = $(am__leading_dot)dirstamp +@LIBUNISTRING_COMPILE_UNISTR_U8_CMP_TRUE@am__objects_1 = unistr/u8-cmp.$(OBJEXT) +@LIBUNISTRING_COMPILE_UNISTR_U8_STRLEN_TRUE@am__objects_2 = unistr/u8-strlen.$(OBJEXT) +am_libtests_a_OBJECTS = read-file.$(OBJEXT) glthread/thread.$(OBJEXT) \ + $(am__objects_1) $(am__objects_2) +libtests_a_OBJECTS = $(am_libtests_a_OBJECTS) +@POSIX_SPAWN_PORTED_TRUE@am__EXEEXT_1 = test-posix_spawn1$(EXEEXT) \ +@POSIX_SPAWN_PORTED_TRUE@ test-posix_spawn2$(EXEEXT) +@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@am__EXEEXT_2 = test-uninames$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) +test_alignof_SOURCES = test-alignof.c +test_alignof_OBJECTS = test-alignof.$(OBJEXT) +test_alignof_LDADD = $(LDADD) +test_alignof_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +test_alloca_opt_SOURCES = test-alloca-opt.c +test_alloca_opt_OBJECTS = test-alloca-opt.$(OBJEXT) +test_alloca_opt_LDADD = $(LDADD) +test_alloca_opt_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_areadlink_SOURCES = test-areadlink.c +test_areadlink_OBJECTS = test-areadlink.$(OBJEXT) +test_areadlink_LDADD = $(LDADD) +test_areadlink_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_argmatch_SOURCES = test-argmatch.c +test_argmatch_OBJECTS = test-argmatch.$(OBJEXT) +am__DEPENDENCIES_2 = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_argmatch_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_array_list_SOURCES = test-array_list.c +test_array_list_OBJECTS = test-array_list.$(OBJEXT) +test_array_list_LDADD = $(LDADD) +test_array_list_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_atexit_SOURCES = test-atexit.c +test_atexit_OBJECTS = test-atexit.$(OBJEXT) +test_atexit_LDADD = $(LDADD) +test_atexit_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_binary_io_SOURCES = test-binary-io.c +test_binary_io_OBJECTS = test-binary-io.$(OBJEXT) +test_binary_io_LDADD = $(LDADD) +test_binary_io_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_btowc_SOURCES = test-btowc.c +test_btowc_OBJECTS = test-btowc.$(OBJEXT) +test_btowc_LDADD = $(LDADD) +test_btowc_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_byteswap_SOURCES = test-byteswap.c +test_byteswap_OBJECTS = test-byteswap.$(OBJEXT) +test_byteswap_LDADD = $(LDADD) +test_byteswap_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_c_ctype_SOURCES = test-c-ctype.c +test_c_ctype_OBJECTS = test-c-ctype.$(OBJEXT) +test_c_ctype_LDADD = $(LDADD) +test_c_ctype_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_c_strcasecmp_SOURCES = test-c-strcasecmp.c +test_c_strcasecmp_OBJECTS = test-c-strcasecmp.$(OBJEXT) +test_c_strcasecmp_LDADD = $(LDADD) +test_c_strcasecmp_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_c_strcasestr_SOURCES = test-c-strcasestr.c +test_c_strcasestr_OBJECTS = test-c-strcasestr.$(OBJEXT) +test_c_strcasestr_LDADD = $(LDADD) +test_c_strcasestr_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_c_strncasecmp_SOURCES = test-c-strncasecmp.c +test_c_strncasecmp_OBJECTS = test-c-strncasecmp.$(OBJEXT) +test_c_strncasecmp_LDADD = $(LDADD) +test_c_strncasecmp_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_c_strstr_SOURCES = test-c-strstr.c +test_c_strstr_OBJECTS = test-c-strstr.$(OBJEXT) +test_c_strstr_LDADD = $(LDADD) +test_c_strstr_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_canonicalize_lgpl_SOURCES = test-canonicalize-lgpl.c +test_canonicalize_lgpl_OBJECTS = test-canonicalize-lgpl.$(OBJEXT) +test_canonicalize_lgpl_LDADD = $(LDADD) +test_canonicalize_lgpl_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_cloexec_SOURCES = test-cloexec.c +test_cloexec_OBJECTS = test-cloexec.$(OBJEXT) +test_cloexec_LDADD = $(LDADD) +test_cloexec_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_close_SOURCES = test-close.c +test_close_OBJECTS = test-close.$(OBJEXT) +test_close_LDADD = $(LDADD) +test_close_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_copy_acl_SOURCES = test-copy-acl.c +test_copy_acl_OBJECTS = test-copy-acl.$(OBJEXT) +test_copy_acl_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +test_copy_file_SOURCES = test-copy-file.c +test_copy_file_OBJECTS = test-copy-file.$(OBJEXT) +test_copy_file_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +test_dirent_SOURCES = test-dirent.c +test_dirent_OBJECTS = test-dirent.$(OBJEXT) +test_dirent_LDADD = $(LDADD) +test_dirent_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_dup_SOURCES = test-dup.c +test_dup_OBJECTS = test-dup.$(OBJEXT) +test_dup_LDADD = $(LDADD) +test_dup_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_dup_safer_SOURCES = test-dup-safer.c +test_dup_safer_OBJECTS = test-dup-safer.$(OBJEXT) +test_dup_safer_LDADD = $(LDADD) +test_dup_safer_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_dup2_SOURCES = test-dup2.c +test_dup2_OBJECTS = test-dup2.$(OBJEXT) +test_dup2_LDADD = $(LDADD) +test_dup2_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_environ_SOURCES = test-environ.c +test_environ_OBJECTS = test-environ.$(OBJEXT) +test_environ_LDADD = $(LDADD) +test_environ_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_errno_SOURCES = test-errno.c +test_errno_OBJECTS = test-errno.$(OBJEXT) +test_errno_LDADD = $(LDADD) +test_errno_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fcntl_SOURCES = test-fcntl.c +test_fcntl_OBJECTS = test-fcntl.$(OBJEXT) +test_fcntl_LDADD = $(LDADD) +test_fcntl_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fcntl_h_SOURCES = test-fcntl-h.c +test_fcntl_h_OBJECTS = test-fcntl-h.$(OBJEXT) +test_fcntl_h_LDADD = $(LDADD) +test_fcntl_h_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fdopen_SOURCES = test-fdopen.c +test_fdopen_OBJECTS = test-fdopen.$(OBJEXT) +test_fdopen_LDADD = $(LDADD) +test_fdopen_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fgetc_SOURCES = test-fgetc.c +test_fgetc_OBJECTS = test-fgetc.$(OBJEXT) +test_fgetc_LDADD = $(LDADD) +test_fgetc_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_file_has_acl_SOURCES = test-file-has-acl.c +test_file_has_acl_OBJECTS = test-file-has-acl.$(OBJEXT) +test_file_has_acl_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +test_float_SOURCES = test-float.c +test_float_OBJECTS = test-float.$(OBJEXT) +test_float_LDADD = $(LDADD) +test_float_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fnmatch_SOURCES = test-fnmatch.c +test_fnmatch_OBJECTS = test-fnmatch.$(OBJEXT) +test_fnmatch_LDADD = $(LDADD) +test_fnmatch_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fopen_SOURCES = test-fopen.c +test_fopen_OBJECTS = test-fopen.$(OBJEXT) +test_fopen_LDADD = $(LDADD) +test_fopen_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fputc_SOURCES = test-fputc.c +test_fputc_OBJECTS = test-fputc.$(OBJEXT) +test_fputc_LDADD = $(LDADD) +test_fputc_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fread_SOURCES = test-fread.c +test_fread_OBJECTS = test-fread.$(OBJEXT) +test_fread_LDADD = $(LDADD) +test_fread_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fstat_SOURCES = test-fstat.c +test_fstat_OBJECTS = test-fstat.$(OBJEXT) +test_fstat_LDADD = $(LDADD) +test_fstat_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fstrcmp_SOURCES = test-fstrcmp.c +test_fstrcmp_OBJECTS = test-fstrcmp.$(OBJEXT) +test_fstrcmp_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +test_ftell_SOURCES = test-ftell.c +test_ftell_OBJECTS = test-ftell.$(OBJEXT) +test_ftell_LDADD = $(LDADD) +test_ftell_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_ftell3_SOURCES = test-ftell3.c +test_ftell3_OBJECTS = test-ftell3.$(OBJEXT) +test_ftell3_LDADD = $(LDADD) +test_ftell3_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_ftello_SOURCES = test-ftello.c +test_ftello_OBJECTS = test-ftello.$(OBJEXT) +test_ftello_LDADD = $(LDADD) +test_ftello_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_ftello3_SOURCES = test-ftello3.c +test_ftello3_OBJECTS = test-ftello3.$(OBJEXT) +test_ftello3_LDADD = $(LDADD) +test_ftello3_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_ftello4_SOURCES = test-ftello4.c +test_ftello4_OBJECTS = test-ftello4.$(OBJEXT) +test_ftello4_LDADD = $(LDADD) +test_ftello4_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_fwrite_SOURCES = test-fwrite.c +test_fwrite_OBJECTS = test-fwrite.$(OBJEXT) +test_fwrite_LDADD = $(LDADD) +test_fwrite_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_getcwd_lgpl_SOURCES = test-getcwd-lgpl.c +test_getcwd_lgpl_OBJECTS = test-getcwd-lgpl.$(OBJEXT) +test_getcwd_lgpl_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +test_getdelim_SOURCES = test-getdelim.c +test_getdelim_OBJECTS = test-getdelim.$(OBJEXT) +test_getdelim_LDADD = $(LDADD) +test_getdelim_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_getdtablesize_SOURCES = test-getdtablesize.c +test_getdtablesize_OBJECTS = test-getdtablesize.$(OBJEXT) +test_getdtablesize_LDADD = $(LDADD) +test_getdtablesize_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_getline_SOURCES = test-getline.c +test_getline_OBJECTS = test-getline.$(OBJEXT) +test_getline_LDADD = $(LDADD) +test_getline_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_getopt_SOURCES = test-getopt.c +test_getopt_OBJECTS = test-getopt.$(OBJEXT) +test_getopt_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) +test_gettimeofday_SOURCES = test-gettimeofday.c +test_gettimeofday_OBJECTS = test-gettimeofday.$(OBJEXT) +test_gettimeofday_LDADD = $(LDADD) +test_gettimeofday_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_iconv_SOURCES = test-iconv.c +test_iconv_OBJECTS = test-iconv.$(OBJEXT) +test_iconv_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_iconv_h_SOURCES = test-iconv-h.c +test_iconv_h_OBJECTS = test-iconv-h.$(OBJEXT) +test_iconv_h_LDADD = $(LDADD) +test_iconv_h_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_ignore_value_SOURCES = test-ignore-value.c +test_ignore_value_OBJECTS = test-ignore-value.$(OBJEXT) +test_ignore_value_LDADD = $(LDADD) +test_ignore_value_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_intprops_SOURCES = test-intprops.c +test_intprops_OBJECTS = test-intprops.$(OBJEXT) +test_intprops_LDADD = $(LDADD) +test_intprops_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_inttypes_SOURCES = test-inttypes.c +test_inttypes_OBJECTS = test-inttypes.$(OBJEXT) +test_inttypes_LDADD = $(LDADD) +test_inttypes_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_iswblank_SOURCES = test-iswblank.c +test_iswblank_OBJECTS = test-iswblank.$(OBJEXT) +test_iswblank_LDADD = $(LDADD) +test_iswblank_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_linkedhash_list_SOURCES = test-linkedhash_list.c +test_linkedhash_list_OBJECTS = test-linkedhash_list.$(OBJEXT) +test_linkedhash_list_LDADD = $(LDADD) +test_linkedhash_list_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_locale_SOURCES = test-locale.c +test_locale_OBJECTS = test-locale.$(OBJEXT) +test_locale_LDADD = $(LDADD) +test_locale_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_localename_SOURCES = test-localename.c +test_localename_OBJECTS = test-localename.$(OBJEXT) +test_localename_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +test_lock_SOURCES = test-lock.c +test_lock_OBJECTS = test-lock.$(OBJEXT) +test_lock_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_lseek_SOURCES = test-lseek.c +test_lseek_OBJECTS = test-lseek.$(OBJEXT) +test_lseek_LDADD = $(LDADD) +test_lseek_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_lstat_SOURCES = test-lstat.c +test_lstat_OBJECTS = test-lstat.$(OBJEXT) +test_lstat_LDADD = $(LDADD) +test_lstat_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_malloca_SOURCES = test-malloca.c +test_malloca_OBJECTS = test-malloca.$(OBJEXT) +test_malloca_LDADD = $(LDADD) +test_malloca_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_mbrtowc_SOURCES = test-mbrtowc.c +test_mbrtowc_OBJECTS = test-mbrtowc.$(OBJEXT) +test_mbrtowc_LDADD = $(LDADD) +test_mbrtowc_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_mbrtowc_w32_SOURCES = test-mbrtowc-w32.c +test_mbrtowc_w32_OBJECTS = test-mbrtowc-w32.$(OBJEXT) +test_mbrtowc_w32_LDADD = $(LDADD) +test_mbrtowc_w32_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_mbsinit_SOURCES = test-mbsinit.c +test_mbsinit_OBJECTS = test-mbsinit.$(OBJEXT) +test_mbsinit_LDADD = $(LDADD) +test_mbsinit_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_mbsrtowcs_SOURCES = test-mbsrtowcs.c +test_mbsrtowcs_OBJECTS = test-mbsrtowcs.$(OBJEXT) +test_mbsrtowcs_LDADD = $(LDADD) +test_mbsrtowcs_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_mbsstr1_SOURCES = test-mbsstr1.c +test_mbsstr1_OBJECTS = test-mbsstr1.$(OBJEXT) +test_mbsstr1_LDADD = $(LDADD) +test_mbsstr1_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_mbsstr2_SOURCES = test-mbsstr2.c +test_mbsstr2_OBJECTS = test-mbsstr2.$(OBJEXT) +test_mbsstr2_LDADD = $(LDADD) +test_mbsstr2_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_mbsstr3_SOURCES = test-mbsstr3.c +test_mbsstr3_OBJECTS = test-mbsstr3.$(OBJEXT) +test_mbsstr3_LDADD = $(LDADD) +test_mbsstr3_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_memchr_SOURCES = test-memchr.c +test_memchr_OBJECTS = test-memchr.$(OBJEXT) +test_memchr_LDADD = $(LDADD) +test_memchr_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_open_SOURCES = test-open.c +test_open_OBJECTS = test-open.$(OBJEXT) +test_open_LDADD = $(LDADD) +test_open_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_pathmax_SOURCES = test-pathmax.c +test_pathmax_OBJECTS = test-pathmax.$(OBJEXT) +test_pathmax_LDADD = $(LDADD) +test_pathmax_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_pipe_filter_ii1_SOURCES = test-pipe-filter-ii1.c +test_pipe_filter_ii1_OBJECTS = test-pipe-filter-ii1.$(OBJEXT) +test_pipe_filter_ii1_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_pipe_filter_ii2_child_SOURCES = test-pipe-filter-ii2-child.c +test_pipe_filter_ii2_child_OBJECTS = \ + test-pipe-filter-ii2-child.$(OBJEXT) +test_pipe_filter_ii2_child_LDADD = $(LDADD) +test_pipe_filter_ii2_child_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_pipe_filter_ii2_main_SOURCES = test-pipe-filter-ii2-main.c +test_pipe_filter_ii2_main_OBJECTS = \ + test-pipe-filter-ii2-main.$(OBJEXT) +test_pipe_filter_ii2_main_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_pipe2_SOURCES = test-pipe2.c +test_pipe2_OBJECTS = test-pipe2.$(OBJEXT) +test_pipe2_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_posix_spawn1_SOURCES = test-posix_spawn1.c +test_posix_spawn1_OBJECTS = test-posix_spawn1.$(OBJEXT) +test_posix_spawn1_LDADD = $(LDADD) +test_posix_spawn1_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_posix_spawn2_SOURCES = test-posix_spawn2.c +test_posix_spawn2_OBJECTS = test-posix_spawn2.$(OBJEXT) +test_posix_spawn2_LDADD = $(LDADD) +test_posix_spawn2_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_posix_spawn_file_actions_addclose_SOURCES = \ + test-posix_spawn_file_actions_addclose.c +test_posix_spawn_file_actions_addclose_OBJECTS = \ + test-posix_spawn_file_actions_addclose.$(OBJEXT) +test_posix_spawn_file_actions_addclose_LDADD = $(LDADD) +test_posix_spawn_file_actions_addclose_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_posix_spawn_file_actions_adddup2_SOURCES = \ + test-posix_spawn_file_actions_adddup2.c +test_posix_spawn_file_actions_adddup2_OBJECTS = \ + test-posix_spawn_file_actions_adddup2.$(OBJEXT) +test_posix_spawn_file_actions_adddup2_LDADD = $(LDADD) +test_posix_spawn_file_actions_adddup2_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_posix_spawn_file_actions_addopen_SOURCES = \ + test-posix_spawn_file_actions_addopen.c +test_posix_spawn_file_actions_addopen_OBJECTS = \ + test-posix_spawn_file_actions_addopen.$(OBJEXT) +test_posix_spawn_file_actions_addopen_LDADD = $(LDADD) +test_posix_spawn_file_actions_addopen_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_quotearg_simple_SOURCES = test-quotearg-simple.c +test_quotearg_simple_OBJECTS = test-quotearg-simple.$(OBJEXT) +test_quotearg_simple_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_raise_SOURCES = test-raise.c +test_raise_OBJECTS = test-raise.$(OBJEXT) +test_raise_LDADD = $(LDADD) +test_raise_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_rawmemchr_SOURCES = test-rawmemchr.c +test_rawmemchr_OBJECTS = test-rawmemchr.$(OBJEXT) +test_rawmemchr_LDADD = $(LDADD) +test_rawmemchr_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_read_SOURCES = test-read.c +test_read_OBJECTS = test-read.$(OBJEXT) +test_read_LDADD = $(LDADD) +test_read_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_read_file_SOURCES = test-read-file.c +test_read_file_OBJECTS = test-read-file.$(OBJEXT) +test_read_file_LDADD = $(LDADD) +test_read_file_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_readlink_SOURCES = test-readlink.c +test_readlink_OBJECTS = test-readlink.$(OBJEXT) +test_readlink_LDADD = $(LDADD) +test_readlink_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_rmdir_SOURCES = test-rmdir.c +test_rmdir_OBJECTS = test-rmdir.$(OBJEXT) +test_rmdir_LDADD = $(LDADD) +test_rmdir_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_sameacls_SOURCES = test-sameacls.c +test_sameacls_OBJECTS = test-sameacls.$(OBJEXT) +test_sameacls_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +test_sched_SOURCES = test-sched.c +test_sched_OBJECTS = test-sched.$(OBJEXT) +test_sched_LDADD = $(LDADD) +test_sched_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_set_mode_acl_SOURCES = test-set-mode-acl.c +test_set_mode_acl_OBJECTS = test-set-mode-acl.$(OBJEXT) +test_set_mode_acl_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +test_setenv_SOURCES = test-setenv.c +test_setenv_OBJECTS = test-setenv.$(OBJEXT) +test_setenv_LDADD = $(LDADD) +test_setenv_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_setlocale1_SOURCES = test-setlocale1.c +test_setlocale1_OBJECTS = test-setlocale1.$(OBJEXT) +test_setlocale1_LDADD = $(LDADD) +test_setlocale1_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_setlocale2_SOURCES = test-setlocale2.c +test_setlocale2_OBJECTS = test-setlocale2.$(OBJEXT) +test_setlocale2_LDADD = $(LDADD) +test_setlocale2_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_sh_quote_SOURCES = test-sh-quote.c +test_sh_quote_OBJECTS = test-sh-quote.$(OBJEXT) +test_sh_quote_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_sigaction_SOURCES = test-sigaction.c +test_sigaction_OBJECTS = test-sigaction.$(OBJEXT) +test_sigaction_LDADD = $(LDADD) +test_sigaction_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_signal_h_SOURCES = test-signal-h.c +test_signal_h_OBJECTS = test-signal-h.$(OBJEXT) +test_signal_h_LDADD = $(LDADD) +test_signal_h_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_sigpipe_SOURCES = test-sigpipe.c +test_sigpipe_OBJECTS = test-sigpipe.$(OBJEXT) +test_sigpipe_LDADD = $(LDADD) +test_sigpipe_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_sigprocmask_SOURCES = test-sigprocmask.c +test_sigprocmask_OBJECTS = test-sigprocmask.$(OBJEXT) +test_sigprocmask_LDADD = $(LDADD) +test_sigprocmask_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_sleep_SOURCES = test-sleep.c +test_sleep_OBJECTS = test-sleep.$(OBJEXT) +test_sleep_LDADD = $(LDADD) +test_sleep_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_snprintf_SOURCES = test-snprintf.c +test_snprintf_OBJECTS = test-snprintf.$(OBJEXT) +test_snprintf_LDADD = $(LDADD) +test_snprintf_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_spawn_SOURCES = test-spawn.c +test_spawn_OBJECTS = test-spawn.$(OBJEXT) +test_spawn_LDADD = $(LDADD) +test_spawn_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_spawn_pipe_child_SOURCES = test-spawn-pipe-child.c +test_spawn_pipe_child_OBJECTS = test-spawn-pipe-child.$(OBJEXT) +test_spawn_pipe_child_DEPENDENCIES = +test_spawn_pipe_main_SOURCES = test-spawn-pipe-main.c +test_spawn_pipe_main_OBJECTS = test-spawn-pipe-main.$(OBJEXT) +test_spawn_pipe_main_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_stat_SOURCES = test-stat.c +test_stat_OBJECTS = test-stat.$(OBJEXT) +test_stat_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) +test_stdbool_SOURCES = test-stdbool.c +test_stdbool_OBJECTS = test-stdbool.$(OBJEXT) +test_stdbool_LDADD = $(LDADD) +test_stdbool_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_stddef_SOURCES = test-stddef.c +test_stddef_OBJECTS = test-stddef.$(OBJEXT) +test_stddef_LDADD = $(LDADD) +test_stddef_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_stdint_SOURCES = test-stdint.c +test_stdint_OBJECTS = test-stdint.$(OBJEXT) +test_stdint_LDADD = $(LDADD) +test_stdint_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_stdio_SOURCES = test-stdio.c +test_stdio_OBJECTS = test-stdio.$(OBJEXT) +test_stdio_LDADD = $(LDADD) +test_stdio_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_stdlib_SOURCES = test-stdlib.c +test_stdlib_OBJECTS = test-stdlib.$(OBJEXT) +test_stdlib_LDADD = $(LDADD) +test_stdlib_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_strchrnul_SOURCES = test-strchrnul.c +test_strchrnul_OBJECTS = test-strchrnul.$(OBJEXT) +test_strchrnul_LDADD = $(LDADD) +test_strchrnul_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_strerror_SOURCES = test-strerror.c +test_strerror_OBJECTS = test-strerror.$(OBJEXT) +test_strerror_LDADD = $(LDADD) +test_strerror_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_striconv_SOURCES = test-striconv.c +test_striconv_OBJECTS = test-striconv.$(OBJEXT) +test_striconv_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_striconveh_SOURCES = test-striconveh.c +test_striconveh_OBJECTS = test-striconveh.$(OBJEXT) +test_striconveh_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +test_striconveha_SOURCES = test-striconveha.c +test_striconveha_OBJECTS = test-striconveha.$(OBJEXT) +test_striconveha_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +test_string_SOURCES = test-string.c +test_string_OBJECTS = test-string.$(OBJEXT) +test_string_LDADD = $(LDADD) +test_string_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_strnlen_SOURCES = test-strnlen.c +test_strnlen_OBJECTS = test-strnlen.$(OBJEXT) +test_strnlen_LDADD = $(LDADD) +test_strnlen_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_strstr_SOURCES = test-strstr.c +test_strstr_OBJECTS = test-strstr.$(OBJEXT) +test_strstr_LDADD = $(LDADD) +test_strstr_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_strtol_SOURCES = test-strtol.c +test_strtol_OBJECTS = test-strtol.$(OBJEXT) +test_strtol_LDADD = $(LDADD) +test_strtol_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_strtoul_SOURCES = test-strtoul.c +test_strtoul_OBJECTS = test-strtoul.$(OBJEXT) +test_strtoul_LDADD = $(LDADD) +test_strtoul_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_symlink_SOURCES = test-symlink.c +test_symlink_OBJECTS = test-symlink.$(OBJEXT) +test_symlink_LDADD = $(LDADD) +test_symlink_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_sys_select_SOURCES = test-sys_select.c +test_sys_select_OBJECTS = test-sys_select.$(OBJEXT) +test_sys_select_LDADD = $(LDADD) +test_sys_select_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_sys_stat_SOURCES = test-sys_stat.c +test_sys_stat_OBJECTS = test-sys_stat.$(OBJEXT) +test_sys_stat_LDADD = $(LDADD) +test_sys_stat_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_sys_time_SOURCES = test-sys_time.c +test_sys_time_OBJECTS = test-sys_time.$(OBJEXT) +test_sys_time_LDADD = $(LDADD) +test_sys_time_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_sys_types_SOURCES = test-sys_types.c +test_sys_types_OBJECTS = test-sys_types.$(OBJEXT) +test_sys_types_LDADD = $(LDADD) +test_sys_types_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_sys_wait_SOURCES = test-sys_wait.c +test_sys_wait_OBJECTS = test-sys_wait.$(OBJEXT) +test_sys_wait_LDADD = $(LDADD) +test_sys_wait_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_term_ostream_SOURCES = test-term-ostream.c +test_term_ostream_OBJECTS = test-term-ostream.$(OBJEXT) +test_term_ostream_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_thread_create_SOURCES = test-thread_create.c +test_thread_create_OBJECTS = test-thread_create.$(OBJEXT) +test_thread_create_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_thread_self_SOURCES = test-thread_self.c +test_thread_self_OBJECTS = test-thread_self.$(OBJEXT) +test_thread_self_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_time_SOURCES = test-time.c +test_time_OBJECTS = test-time.$(OBJEXT) +test_time_LDADD = $(LDADD) +test_time_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_tls_SOURCES = test-tls.c +test_tls_OBJECTS = test-tls.$(OBJEXT) +test_tls_DEPENDENCIES = $(am__DEPENDENCIES_2) +am_test_u16_mbtouc_OBJECTS = unistr/test-u16-mbtouc.$(OBJEXT) +test_u16_mbtouc_OBJECTS = $(am_test_u16_mbtouc_OBJECTS) +test_u16_mbtouc_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +am_test_u8_check_OBJECTS = unistr/test-u8-check.$(OBJEXT) +test_u8_check_OBJECTS = $(am_test_u8_check_OBJECTS) +test_u8_check_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +am_test_u8_cmp_OBJECTS = unistr/test-u8-cmp.$(OBJEXT) +test_u8_cmp_OBJECTS = $(am_test_u8_cmp_OBJECTS) +test_u8_cmp_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) +am_test_u8_conv_from_enc_OBJECTS = \ + uniconv/test-u8-conv-from-enc.$(OBJEXT) +test_u8_conv_from_enc_OBJECTS = $(am_test_u8_conv_from_enc_OBJECTS) +test_u8_conv_from_enc_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +am_test_u8_mblen_OBJECTS = unistr/test-u8-mblen.$(OBJEXT) +test_u8_mblen_OBJECTS = $(am_test_u8_mblen_OBJECTS) +test_u8_mblen_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +am_test_u8_mbtoucr_OBJECTS = unistr/test-u8-mbtoucr.$(OBJEXT) +test_u8_mbtoucr_OBJECTS = $(am_test_u8_mbtoucr_OBJECTS) +test_u8_mbtoucr_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +am_test_u8_prev_OBJECTS = unistr/test-u8-prev.$(OBJEXT) +test_u8_prev_OBJECTS = $(am_test_u8_prev_OBJECTS) +test_u8_prev_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +am_test_u8_strlen_OBJECTS = unistr/test-u8-strlen.$(OBJEXT) +test_u8_strlen_OBJECTS = $(am_test_u8_strlen_OBJECTS) +test_u8_strlen_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +am_test_u8_uctomb_OBJECTS = unistr/test-u8-uctomb.$(OBJEXT) +test_u8_uctomb_OBJECTS = $(am_test_u8_uctomb_OBJECTS) +test_u8_uctomb_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +am_test_u8_width_linebreaks_OBJECTS = \ + unilbrk/test-u8-width-linebreaks.$(OBJEXT) +test_u8_width_linebreaks_OBJECTS = \ + $(am_test_u8_width_linebreaks_OBJECTS) +test_u8_width_linebreaks_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +am__test_uninames_SOURCES_DIST = uniname/test-uninames.c +@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@am_test_uninames_OBJECTS = uniname/test-uninames.$(OBJEXT) +test_uninames_OBJECTS = $(am_test_uninames_OBJECTS) +@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@test_uninames_DEPENDENCIES = $(am__DEPENDENCIES_2) \ +@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@ $(am__DEPENDENCIES_1) +test_unistd_SOURCES = test-unistd.c +test_unistd_OBJECTS = test-unistd.$(OBJEXT) +test_unistd_LDADD = $(LDADD) +test_unistd_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_unsetenv_SOURCES = test-unsetenv.c +test_unsetenv_OBJECTS = test-unsetenv.$(OBJEXT) +test_unsetenv_LDADD = $(LDADD) +test_unsetenv_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_vasnprintf_SOURCES = test-vasnprintf.c +test_vasnprintf_OBJECTS = test-vasnprintf.$(OBJEXT) +test_vasnprintf_LDADD = $(LDADD) +test_vasnprintf_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_vasprintf_SOURCES = test-vasprintf.c +test_vasprintf_OBJECTS = test-vasprintf.$(OBJEXT) +test_vasprintf_LDADD = $(LDADD) +test_vasprintf_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_verify_SOURCES = test-verify.c +test_verify_OBJECTS = test-verify.$(OBJEXT) +test_verify_LDADD = $(LDADD) +test_verify_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_vsnprintf_SOURCES = test-vsnprintf.c +test_vsnprintf_OBJECTS = test-vsnprintf.$(OBJEXT) +test_vsnprintf_LDADD = $(LDADD) +test_vsnprintf_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_wchar_SOURCES = test-wchar.c +test_wchar_OBJECTS = test-wchar.$(OBJEXT) +test_wchar_LDADD = $(LDADD) +test_wchar_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_wcrtomb_SOURCES = test-wcrtomb.c +test_wcrtomb_OBJECTS = test-wcrtomb.$(OBJEXT) +test_wcrtomb_LDADD = $(LDADD) +test_wcrtomb_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_wcrtomb_w32_SOURCES = test-wcrtomb-w32.c +test_wcrtomb_w32_OBJECTS = test-wcrtomb-w32.$(OBJEXT) +test_wcrtomb_w32_LDADD = $(LDADD) +test_wcrtomb_w32_DEPENDENCIES = libtests.a \ + ../gnulib-lib/libgettextlib.la libtests.a \ + $(am__DEPENDENCIES_1) +test_wctype_h_SOURCES = test-wctype-h.c +test_wctype_h_OBJECTS = test-wctype-h.$(OBJEXT) +test_wctype_h_LDADD = $(LDADD) +test_wctype_h_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_wcwidth_SOURCES = test-wcwidth.c +test_wcwidth_OBJECTS = test-wcwidth.$(OBJEXT) +test_wcwidth_LDADD = $(LDADD) +test_wcwidth_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_write_SOURCES = test-write.c +test_write_OBJECTS = test-write.$(OBJEXT) +test_write_LDADD = $(LDADD) +test_write_DEPENDENCIES = libtests.a ../gnulib-lib/libgettextlib.la \ + libtests.a $(am__DEPENDENCIES_1) +test_xalloc_die_SOURCES = test-xalloc-die.c +test_xalloc_die_OBJECTS = test-xalloc-die.$(OBJEXT) +test_xalloc_die_DEPENDENCIES = $(am__DEPENDENCIES_2) +test_xvasprintf_SOURCES = test-xvasprintf.c +test_xvasprintf_OBJECTS = test-xvasprintf.$(OBJEXT) +test_xvasprintf_DEPENDENCIES = $(am__DEPENDENCIES_2) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/../build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \ + test-alignof.c test-alloca-opt.c test-areadlink.c \ + test-argmatch.c test-array_list.c test-atexit.c \ + test-binary-io.c test-btowc.c test-byteswap.c test-c-ctype.c \ + test-c-strcasecmp.c test-c-strcasestr.c test-c-strncasecmp.c \ + test-c-strstr.c test-canonicalize-lgpl.c test-cloexec.c \ + test-close.c test-copy-acl.c test-copy-file.c test-dirent.c \ + test-dup.c test-dup-safer.c test-dup2.c test-environ.c \ + test-errno.c test-fcntl.c test-fcntl-h.c test-fdopen.c \ + test-fgetc.c test-file-has-acl.c test-float.c test-fnmatch.c \ + test-fopen.c test-fputc.c test-fread.c test-fstat.c \ + test-fstrcmp.c test-ftell.c test-ftell3.c test-ftello.c \ + test-ftello3.c test-ftello4.c test-fwrite.c test-getcwd-lgpl.c \ + test-getdelim.c test-getdtablesize.c test-getline.c \ + test-getopt.c test-gettimeofday.c test-iconv.c test-iconv-h.c \ + test-ignore-value.c test-intprops.c test-inttypes.c \ + test-iswblank.c test-linkedhash_list.c test-locale.c \ + test-localename.c test-lock.c test-lseek.c test-lstat.c \ + test-malloca.c test-mbrtowc.c test-mbrtowc-w32.c \ + test-mbsinit.c test-mbsrtowcs.c test-mbsstr1.c test-mbsstr2.c \ + test-mbsstr3.c test-memchr.c test-open.c test-pathmax.c \ + test-pipe-filter-ii1.c test-pipe-filter-ii2-child.c \ + test-pipe-filter-ii2-main.c test-pipe2.c test-posix_spawn1.c \ + test-posix_spawn2.c test-posix_spawn_file_actions_addclose.c \ + test-posix_spawn_file_actions_adddup2.c \ + test-posix_spawn_file_actions_addopen.c test-quotearg-simple.c \ + test-raise.c test-rawmemchr.c test-read.c test-read-file.c \ + test-readlink.c test-rmdir.c test-sameacls.c test-sched.c \ + test-set-mode-acl.c test-setenv.c test-setlocale1.c \ + test-setlocale2.c test-sh-quote.c test-sigaction.c \ + test-signal-h.c test-sigpipe.c test-sigprocmask.c test-sleep.c \ + test-snprintf.c test-spawn.c test-spawn-pipe-child.c \ + test-spawn-pipe-main.c test-stat.c test-stdbool.c \ + test-stddef.c test-stdint.c test-stdio.c test-stdlib.c \ + test-strchrnul.c test-strerror.c test-striconv.c \ + test-striconveh.c test-striconveha.c test-string.c \ + test-strnlen.c test-strstr.c test-strtol.c test-strtoul.c \ + test-symlink.c test-sys_select.c test-sys_stat.c \ + test-sys_time.c test-sys_types.c test-sys_wait.c \ + test-term-ostream.c test-thread_create.c test-thread_self.c \ + test-time.c test-tls.c $(test_u16_mbtouc_SOURCES) \ + $(test_u8_check_SOURCES) $(test_u8_cmp_SOURCES) \ + $(test_u8_conv_from_enc_SOURCES) $(test_u8_mblen_SOURCES) \ + $(test_u8_mbtoucr_SOURCES) $(test_u8_prev_SOURCES) \ + $(test_u8_strlen_SOURCES) $(test_u8_uctomb_SOURCES) \ + $(test_u8_width_linebreaks_SOURCES) $(test_uninames_SOURCES) \ + test-unistd.c test-unsetenv.c test-vasnprintf.c \ + test-vasprintf.c test-verify.c test-vsnprintf.c test-wchar.c \ + test-wcrtomb.c test-wcrtomb-w32.c test-wctype-h.c \ + test-wcwidth.c test-write.c test-xalloc-die.c \ + test-xvasprintf.c +DIST_SOURCES = $(am__libtests_a_SOURCES_DIST) \ + $(EXTRA_libtests_a_SOURCES) test-alignof.c test-alloca-opt.c \ + test-areadlink.c test-argmatch.c test-array_list.c \ + test-atexit.c test-binary-io.c test-btowc.c test-byteswap.c \ + test-c-ctype.c test-c-strcasecmp.c test-c-strcasestr.c \ + test-c-strncasecmp.c test-c-strstr.c test-canonicalize-lgpl.c \ + test-cloexec.c test-close.c test-copy-acl.c test-copy-file.c \ + test-dirent.c test-dup.c test-dup-safer.c test-dup2.c \ + test-environ.c test-errno.c test-fcntl.c test-fcntl-h.c \ + test-fdopen.c test-fgetc.c test-file-has-acl.c test-float.c \ + test-fnmatch.c test-fopen.c test-fputc.c test-fread.c \ + test-fstat.c test-fstrcmp.c test-ftell.c test-ftell3.c \ + test-ftello.c test-ftello3.c test-ftello4.c test-fwrite.c \ + test-getcwd-lgpl.c test-getdelim.c test-getdtablesize.c \ + test-getline.c test-getopt.c test-gettimeofday.c test-iconv.c \ + test-iconv-h.c test-ignore-value.c test-intprops.c \ + test-inttypes.c test-iswblank.c test-linkedhash_list.c \ + test-locale.c test-localename.c test-lock.c test-lseek.c \ + test-lstat.c test-malloca.c test-mbrtowc.c test-mbrtowc-w32.c \ + test-mbsinit.c test-mbsrtowcs.c test-mbsstr1.c test-mbsstr2.c \ + test-mbsstr3.c test-memchr.c test-open.c test-pathmax.c \ + test-pipe-filter-ii1.c test-pipe-filter-ii2-child.c \ + test-pipe-filter-ii2-main.c test-pipe2.c test-posix_spawn1.c \ + test-posix_spawn2.c test-posix_spawn_file_actions_addclose.c \ + test-posix_spawn_file_actions_adddup2.c \ + test-posix_spawn_file_actions_addopen.c test-quotearg-simple.c \ + test-raise.c test-rawmemchr.c test-read.c test-read-file.c \ + test-readlink.c test-rmdir.c test-sameacls.c test-sched.c \ + test-set-mode-acl.c test-setenv.c test-setlocale1.c \ + test-setlocale2.c test-sh-quote.c test-sigaction.c \ + test-signal-h.c test-sigpipe.c test-sigprocmask.c test-sleep.c \ + test-snprintf.c test-spawn.c test-spawn-pipe-child.c \ + test-spawn-pipe-main.c test-stat.c test-stdbool.c \ + test-stddef.c test-stdint.c test-stdio.c test-stdlib.c \ + test-strchrnul.c test-strerror.c test-striconv.c \ + test-striconveh.c test-striconveha.c test-string.c \ + test-strnlen.c test-strstr.c test-strtol.c test-strtoul.c \ + test-symlink.c test-sys_select.c test-sys_stat.c \ + test-sys_time.c test-sys_types.c test-sys_wait.c \ + test-term-ostream.c test-thread_create.c test-thread_self.c \ + test-time.c test-tls.c $(test_u16_mbtouc_SOURCES) \ + $(test_u8_check_SOURCES) $(test_u8_cmp_SOURCES) \ + $(test_u8_conv_from_enc_SOURCES) $(test_u8_mblen_SOURCES) \ + $(test_u8_mbtoucr_SOURCES) $(test_u8_prev_SOURCES) \ + $(test_u8_strlen_SOURCES) $(test_u8_uctomb_SOURCES) \ + $(test_u8_width_linebreaks_SOURCES) \ + $(am__test_uninames_SOURCES_DIST) test-unistd.c \ + test-unsetenv.c test-vasnprintf.c test-vasprintf.c \ + test-verify.c test-vsnprintf.c test-wchar.c test-wcrtomb.c \ + test-wcrtomb-w32.c test-wctype-h.c test-wcwidth.c test-write.c \ + test-xalloc-die.c test-xvasprintf.c +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + check recheck distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red='[0;31m'; \ + grn='[0;32m'; \ + lgn='[1;32m'; \ + blu='[1;34m'; \ + mgn='[0;35m'; \ + brg='[1m'; \ + std='[m'; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/../build-aux/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/../build-aux/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +pkglibexecdir = @pkglibexecdir@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +ARCHIVE_FORMAT = @ARCHIVE_FORMAT@ +ARFLAGS = @ARFLAGS@ +AS = @AS@ +ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BISON_LOCALEDIR = @BISON_LOCALEDIR@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +BUILDCSHARP = @BUILDCSHARP@ +BUILDJAVA = @BUILDJAVA@ +BUILDJAVAEXE = @BUILDJAVAEXE@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +BYTESWAP_H = @BYTESWAP_H@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CLASSPATH = @CLASSPATH@ +CLASSPATH_SEPARATOR = @CLASSPATH_SEPARATOR@ +CLIX_PATH = @CLIX_PATH@ +CLIX_PATH_VAR = @CLIX_PATH_VAR@ +CONF_JAVA = @CONF_JAVA@ +CONF_JAVAC = @CONF_JAVAC@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CROSS_COMPILING = @CROSS_COMPILING@ +CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@ +CSHARP_CHOICE = @CSHARP_CHOICE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CXX_CHOICE = @CXX_CHOICE@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +DVIPS = @DVIPS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMACS = @EMACS@ +EMACSLOADPATH = @EMACSLOADPATH@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FLOAT_H = @FLOAT_H@ +FNMATCH_H = @FNMATCH_H@ +GCJ = @GCJ@ +GCJFLAGS = @GCJFLAGS@ +GENCAT = @GENCAT@ +GETOPT_H = @GETOPT_H@ +GETTEXTLIB_EXPORTS_FLAGS = @GETTEXTLIB_EXPORTS_FLAGS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GLOBAL_SYMBOL_PIPE = @GLOBAL_SYMBOL_PIPE@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ +GNULIB_ATOLL = @GNULIB_ATOLL@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ +GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ +GNULIB_CHDIR = @GNULIB_CHDIR@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ +GNULIB_DIRFD = @GNULIB_DIRFD@ +GNULIB_DPRINTF = @GNULIB_DPRINTF@ +GNULIB_DUP = @GNULIB_DUP@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_DUP3 = @GNULIB_DUP3@ +GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ +GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ +GNULIB_FCLOSE = @GNULIB_FCLOSE@ +GNULIB_FCNTL = @GNULIB_FCNTL@ +GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ +GNULIB_FDOPEN = @GNULIB_FDOPEN@ +GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@ +GNULIB_FFLUSH = @GNULIB_FFLUSH@ +GNULIB_FFSL = @GNULIB_FFSL@ +GNULIB_FFSLL = @GNULIB_FFSLL@ +GNULIB_FGETC = @GNULIB_FGETC@ +GNULIB_FGETS = @GNULIB_FGETS@ +GNULIB_FOPEN = @GNULIB_FOPEN@ +GNULIB_FPRINTF = @GNULIB_FPRINTF@ +GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ +GNULIB_FPURGE = @GNULIB_FPURGE@ +GNULIB_FPUTC = @GNULIB_FPUTC@ +GNULIB_FPUTS = @GNULIB_FPUTS@ +GNULIB_FREAD = @GNULIB_FREAD@ +GNULIB_FREOPEN = @GNULIB_FREOPEN@ +GNULIB_FSCANF = @GNULIB_FSCANF@ +GNULIB_FSEEK = @GNULIB_FSEEK@ +GNULIB_FSEEKO = @GNULIB_FSEEKO@ +GNULIB_FSTAT = @GNULIB_FSTAT@ +GNULIB_FSTATAT = @GNULIB_FSTATAT@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTELL = @GNULIB_FTELL@ +GNULIB_FTELLO = @GNULIB_FTELLO@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ +GNULIB_FWRITE = @GNULIB_FWRITE@ +GNULIB_GETC = @GNULIB_GETC@ +GNULIB_GETCHAR = @GNULIB_GETCHAR@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDELIM = @GNULIB_GETDELIM@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLINE = @GNULIB_GETLINE@ +GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ +GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ +GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ +GNULIB_GRANTPT = @GNULIB_GRANTPT@ +GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ +GNULIB_ICONV = @GNULIB_ICONV@ +GNULIB_IMAXABS = @GNULIB_IMAXABS@ +GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ +GNULIB_ISATTY = @GNULIB_ISATTY@ +GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ +GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ +GNULIB_LCHMOD = @GNULIB_LCHMOD@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LINKAT = @GNULIB_LINKAT@ +GNULIB_LOCALECONV = @GNULIB_LOCALECONV@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_LSTAT = @GNULIB_LSTAT@ +GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MBTOWC = @GNULIB_MBTOWC@ +GNULIB_MEMCHR = @GNULIB_MEMCHR@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ +GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ +GNULIB_MKFIFO = @GNULIB_MKFIFO@ +GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ +GNULIB_MKNOD = @GNULIB_MKNOD@ +GNULIB_MKNODAT = @GNULIB_MKNODAT@ +GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ +GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ +GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ +GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ +GNULIB_MKTIME = @GNULIB_MKTIME@ +GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ +GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@ +GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ +GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ +GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ +GNULIB_OPEN = @GNULIB_OPEN@ +GNULIB_OPENAT = @GNULIB_OPENAT@ +GNULIB_OPENDIR = @GNULIB_OPENDIR@ +GNULIB_PCLOSE = @GNULIB_PCLOSE@ +GNULIB_PERROR = @GNULIB_PERROR@ +GNULIB_PIPE = @GNULIB_PIPE@ +GNULIB_PIPE2 = @GNULIB_PIPE2@ +GNULIB_POPEN = @GNULIB_POPEN@ +GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ +GNULIB_POSIX_SPAWN = @GNULIB_POSIX_SPAWN@ +GNULIB_POSIX_SPAWNATTR_DESTROY = @GNULIB_POSIX_SPAWNATTR_DESTROY@ +GNULIB_POSIX_SPAWNATTR_GETFLAGS = @GNULIB_POSIX_SPAWNATTR_GETFLAGS@ +GNULIB_POSIX_SPAWNATTR_GETPGROUP = @GNULIB_POSIX_SPAWNATTR_GETPGROUP@ +GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM = @GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM@ +GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY = @GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY@ +GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT = @GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT@ +GNULIB_POSIX_SPAWNATTR_GETSIGMASK = @GNULIB_POSIX_SPAWNATTR_GETSIGMASK@ +GNULIB_POSIX_SPAWNATTR_INIT = @GNULIB_POSIX_SPAWNATTR_INIT@ +GNULIB_POSIX_SPAWNATTR_SETFLAGS = @GNULIB_POSIX_SPAWNATTR_SETFLAGS@ +GNULIB_POSIX_SPAWNATTR_SETPGROUP = @GNULIB_POSIX_SPAWNATTR_SETPGROUP@ +GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM = @GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM@ +GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY = @GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY@ +GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT = @GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT@ +GNULIB_POSIX_SPAWNATTR_SETSIGMASK = @GNULIB_POSIX_SPAWNATTR_SETSIGMASK@ +GNULIB_POSIX_SPAWNP = @GNULIB_POSIX_SPAWNP@ +GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@ +GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@ +GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ +GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@ +GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT@ +GNULIB_PREAD = @GNULIB_PREAD@ +GNULIB_PRINTF = @GNULIB_PRINTF@ +GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ +GNULIB_PSELECT = @GNULIB_PSELECT@ +GNULIB_PTHREAD_SIGMASK = @GNULIB_PTHREAD_SIGMASK@ +GNULIB_PTSNAME = @GNULIB_PTSNAME@ +GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ +GNULIB_PUTC = @GNULIB_PUTC@ +GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ +GNULIB_PUTENV = @GNULIB_PUTENV@ +GNULIB_PUTS = @GNULIB_PUTS@ +GNULIB_PWRITE = @GNULIB_PWRITE@ +GNULIB_QSORT_R = @GNULIB_QSORT_R@ +GNULIB_RAISE = @GNULIB_RAISE@ +GNULIB_RANDOM = @GNULIB_RANDOM@ +GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READ = @GNULIB_READ@ +GNULIB_READDIR = @GNULIB_READDIR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_READLINKAT = @GNULIB_READLINKAT@ +GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ +GNULIB_REALPATH = @GNULIB_REALPATH@ +GNULIB_REMOVE = @GNULIB_REMOVE@ +GNULIB_RENAME = @GNULIB_RENAME@ +GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ +GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ +GNULIB_RMDIR = @GNULIB_RMDIR@ +GNULIB_RPMATCH = @GNULIB_RPMATCH@ +GNULIB_SCANDIR = @GNULIB_SCANDIR@ +GNULIB_SCANF = @GNULIB_SCANF@ +GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ +GNULIB_SELECT = @GNULIB_SELECT@ +GNULIB_SETENV = @GNULIB_SETENV@ +GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ +GNULIB_SETLOCALE = @GNULIB_SETLOCALE@ +GNULIB_SIGACTION = @GNULIB_SIGACTION@ +GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@ +GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ +GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ +GNULIB_STAT = @GNULIB_STAT@ +GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ +GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ +GNULIB_STRNCAT = @GNULIB_STRNCAT@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRPTIME = @GNULIB_STRPTIME@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOD = @GNULIB_STRTOD@ +GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRTOLL = @GNULIB_STRTOLL@ +GNULIB_STRTOULL = @GNULIB_STRTOULL@ +GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_SYMLINK = @GNULIB_SYMLINK@ +GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ +GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ +GNULIB_TIMEGM = @GNULIB_TIMEGM@ +GNULIB_TIME_R = @GNULIB_TIME_R@ +GNULIB_TMPFILE = @GNULIB_TMPFILE@ +GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ +GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ +GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_UNLINK = @GNULIB_UNLINK@ +GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ +GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ +GNULIB_UNSETENV = @GNULIB_UNSETENV@ +GNULIB_USLEEP = @GNULIB_USLEEP@ +GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ +GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ +GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ +GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ +GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ +GNULIB_VFSCANF = @GNULIB_VFSCANF@ +GNULIB_VPRINTF = @GNULIB_VPRINTF@ +GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ +GNULIB_VSCANF = @GNULIB_VSCANF@ +GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ +GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ +GNULIB_WAITPID = @GNULIB_WAITPID@ +GNULIB_WCPCPY = @GNULIB_WCPCPY@ +GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ +GNULIB_WCSCAT = @GNULIB_WCSCAT@ +GNULIB_WCSCHR = @GNULIB_WCSCHR@ +GNULIB_WCSCMP = @GNULIB_WCSCMP@ +GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ +GNULIB_WCSCPY = @GNULIB_WCSCPY@ +GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ +GNULIB_WCSDUP = @GNULIB_WCSDUP@ +GNULIB_WCSLEN = @GNULIB_WCSLEN@ +GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ +GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ +GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ +GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ +GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ +GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCSSPN = @GNULIB_WCSSPN@ +GNULIB_WCSSTR = @GNULIB_WCSSTR@ +GNULIB_WCSTOK = @GNULIB_WCSTOK@ +GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ +GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCTOMB = @GNULIB_WCTOMB@ +GNULIB_WCTRANS = @GNULIB_WCTRANS@ +GNULIB_WCTYPE = @GNULIB_WCTYPE@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ +GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ +GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ +GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ +GNULIB_WMEMSET = @GNULIB_WMEMSET@ +GNULIB_WRITE = @GNULIB_WRITE@ +GNULIB__EXIT = @GNULIB__EXIT@ +GREP = @GREP@ +HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_ATOLL = @HAVE_ATOLL@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CHOWN = @HAVE_CHOWN@ +HAVE_CLIX = @HAVE_CLIX@ +HAVE_CLIX_IN_PATH = @HAVE_CLIX_IN_PATH@ +HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ +HAVE_CSC = @HAVE_CSC@ +HAVE_CSCC = @HAVE_CSCC@ +HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@ +HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@ +HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ +HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ +HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ +HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ +HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ +HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ +HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ +HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ +HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ +HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ +HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ +HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ +HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ +HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DIRENT_H = @HAVE_DIRENT_H@ +HAVE_DPRINTF = @HAVE_DPRINTF@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_DUP3 = @HAVE_DUP3@ +HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FACCESSAT = @HAVE_FACCESSAT@ +HAVE_FCHDIR = @HAVE_FCHDIR@ +HAVE_FCHMODAT = @HAVE_FCHMODAT@ +HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ +HAVE_FCNTL = @HAVE_FCNTL@ +HAVE_FDATASYNC = @HAVE_FDATASYNC@ +HAVE_FDOPENDIR = @HAVE_FDOPENDIR@ +HAVE_FEATURES_H = @HAVE_FEATURES_H@ +HAVE_FFSL = @HAVE_FFSL@ +HAVE_FFSLL = @HAVE_FFSLL@ +HAVE_FSEEKO = @HAVE_FSEEKO@ +HAVE_FSTATAT = @HAVE_FSTATAT@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTELLO = @HAVE_FTELLO@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_FUTIMENS = @HAVE_FUTIMENS@ +HAVE_GCJ = @HAVE_GCJ@ +HAVE_GCJ_C = @HAVE_GCJ_C@ +HAVE_GCJ_IN_PATH = @HAVE_GCJ_IN_PATH@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETGROUPS = @HAVE_GETGROUPS@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETLOGIN = @HAVE_GETLOGIN@ +HAVE_GETOPT_H = @HAVE_GETOPT_H@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ +HAVE_GIJ = @HAVE_GIJ@ +HAVE_GIJ_IN_PATH = @HAVE_GIJ_IN_PATH@ +HAVE_GLOBAL_SYMBOL_PIPE = @HAVE_GLOBAL_SYMBOL_PIPE@ +HAVE_GRANTPT = @HAVE_GRANTPT@ +HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_ILRUN = @HAVE_ILRUN@ +HAVE_ILRUN_IN_PATH = @HAVE_ILRUN_IN_PATH@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISWBLANK = @HAVE_ISWBLANK@ +HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ +HAVE_JAVA = @HAVE_JAVA@ +HAVE_JAVAC = @HAVE_JAVAC@ +HAVE_JAVAC_ENVVAR = @HAVE_JAVAC_ENVVAR@ +HAVE_JAVAC_IN_PATH = @HAVE_JAVAC_IN_PATH@ +HAVE_JAVA_ENVVAR = @HAVE_JAVA_ENVVAR@ +HAVE_JAVA_IN_PATH = @HAVE_JAVA_IN_PATH@ +HAVE_JIKES = @HAVE_JIKES@ +HAVE_JIKES_IN_PATH = @HAVE_JIKES_IN_PATH@ +HAVE_JRE = @HAVE_JRE@ +HAVE_JRE_IN_PATH = @HAVE_JRE_IN_PATH@ +HAVE_JVIEW = @HAVE_JVIEW@ +HAVE_JVIEW_IN_PATH = @HAVE_JVIEW_IN_PATH@ +HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@ +HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@ +HAVE_LANGINFO_H = @HAVE_LANGINFO_H@ +HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@ +HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@ +HAVE_LCHMOD = @HAVE_LCHMOD@ +HAVE_LCHOWN = @HAVE_LCHOWN@ +HAVE_LIBEXPAT = @HAVE_LIBEXPAT@ +HAVE_LIBUNISTRING = @HAVE_LIBUNISTRING@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_LSTAT = @HAVE_LSTAT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSLEN = @HAVE_MBSLEN@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MCS = @HAVE_MCS@ +HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@ +HAVE_MEMCHR = @HAVE_MEMCHR@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_MKDIRAT = @HAVE_MKDIRAT@ +HAVE_MKDTEMP = @HAVE_MKDTEMP@ +HAVE_MKFIFO = @HAVE_MKFIFO@ +HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ +HAVE_MKNOD = @HAVE_MKNOD@ +HAVE_MKNODAT = @HAVE_MKNODAT@ +HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ +HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ +HAVE_MKSTEMP = @HAVE_MKSTEMP@ +HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MONO = @HAVE_MONO@ +HAVE_MONO_IN_PATH = @HAVE_MONO_IN_PATH@ +HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ +HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@ +HAVE_OPENAT = @HAVE_OPENAT@ +HAVE_OPENDIR = @HAVE_OPENDIR@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_PCLOSE = @HAVE_PCLOSE@ +HAVE_PIPE = @HAVE_PIPE@ +HAVE_PIPE2 = @HAVE_PIPE2@ +HAVE_POPEN = @HAVE_POPEN@ +HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ +HAVE_POSIX_SPAWN = @HAVE_POSIX_SPAWN@ +HAVE_POSIX_SPAWNATTR_T = @HAVE_POSIX_SPAWNATTR_T@ +HAVE_POSIX_SPAWN_FILE_ACTIONS_T = @HAVE_POSIX_SPAWN_FILE_ACTIONS_T@ +HAVE_PREAD = @HAVE_PREAD@ +HAVE_PSELECT = @HAVE_PSELECT@ +HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ +HAVE_PTSNAME = @HAVE_PTSNAME@ +HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ +HAVE_PWRITE = @HAVE_PWRITE@ +HAVE_RAISE = @HAVE_RAISE@ +HAVE_RANDOM = @HAVE_RANDOM@ +HAVE_RANDOM_H = @HAVE_RANDOM_H@ +HAVE_RANDOM_R = @HAVE_RANDOM_R@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READDIR = @HAVE_READDIR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_READLINKAT = @HAVE_READLINKAT@ +HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_RENAMEAT = @HAVE_RENAMEAT@ +HAVE_REWINDDIR = @HAVE_REWINDDIR@ +HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SCANDIR = @HAVE_SCANDIR@ +HAVE_SCHED_H = @HAVE_SCHED_H@ +HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ +HAVE_SETENV = @HAVE_SETENV@ +HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ +HAVE_SIGACTION = @HAVE_SIGACTION@ +HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ +HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SIGSET_T = @HAVE_SIGSET_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_SPAWN_H = @HAVE_SPAWN_H@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRPTIME = @HAVE_STRPTIME@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRTOD = @HAVE_STRTOD@ +HAVE_STRTOLL = @HAVE_STRTOLL@ +HAVE_STRTOULL = @HAVE_STRTOULL@ +HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ +HAVE_STRUCT_SCHED_PARAM = @HAVE_STRUCT_SCHED_PARAM@ +HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYMLINK = @HAVE_SYMLINK@ +HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_SELECT_H = @HAVE_SYS_SELECT_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_TIMEGM = @HAVE_TIMEGM@ +HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNLINKAT = @HAVE_UNLINKAT@ +HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_USLEEP = @HAVE_USLEEP@ +HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ +HAVE_VASPRINTF = @HAVE_VASPRINTF@ +HAVE_VDPRINTF = @HAVE_VDPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCHAR_T = @HAVE_WCHAR_T@ +HAVE_WCPCPY = @HAVE_WCPCPY@ +HAVE_WCPNCPY = @HAVE_WCPNCPY@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ +HAVE_WCSCAT = @HAVE_WCSCAT@ +HAVE_WCSCHR = @HAVE_WCSCHR@ +HAVE_WCSCMP = @HAVE_WCSCMP@ +HAVE_WCSCOLL = @HAVE_WCSCOLL@ +HAVE_WCSCPY = @HAVE_WCSCPY@ +HAVE_WCSCSPN = @HAVE_WCSCSPN@ +HAVE_WCSDUP = @HAVE_WCSDUP@ +HAVE_WCSLEN = @HAVE_WCSLEN@ +HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ +HAVE_WCSNCAT = @HAVE_WCSNCAT@ +HAVE_WCSNCMP = @HAVE_WCSNCMP@ +HAVE_WCSNCPY = @HAVE_WCSNCPY@ +HAVE_WCSNLEN = @HAVE_WCSNLEN@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSPBRK = @HAVE_WCSPBRK@ +HAVE_WCSRCHR = @HAVE_WCSRCHR@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WCSSPN = @HAVE_WCSSPN@ +HAVE_WCSSTR = @HAVE_WCSSTR@ +HAVE_WCSTOK = @HAVE_WCSTOK@ +HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ +HAVE_WCSXFRM = @HAVE_WCSXFRM@ +HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ +HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ +HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ +HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE_WMEMCHR = @HAVE_WMEMCHR@ +HAVE_WMEMCMP = @HAVE_WMEMCMP@ +HAVE_WMEMCPY = @HAVE_WMEMCPY@ +HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ +HAVE_WMEMSET = @HAVE_WMEMSET@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ +HAVE__BOOL = @HAVE__BOOL@ +HAVE__EXIT = @HAVE__EXIT@ +ICONV_CONST = @ICONV_CONST@ +ICONV_H = @ICONV_H@ +INCCROCO = @INCCROCO@ +INCGLIB = @INCGLIB@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INCTERMINFO = @INCTERMINFO@ +INCXML = @INCXML@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_PROGRAM_ENV = @INSTALL_PROGRAM_ENV@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ +INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JAR = @JAR@ +JAVA_CHOICE = @JAVA_CHOICE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCROCO = @LIBCROCO@ +LIBEXPAT = @LIBEXPAT@ +LIBEXPAT_PREFIX = @LIBEXPAT_PREFIX@ +LIBGLIB = @LIBGLIB@ +LIBGLIB_H = @LIBGLIB_H@ +LIBGREP_LIBDEPS = @LIBGREP_LIBDEPS@ +LIBGREP_LTLIBDEPS = @LIBGREP_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTERMINFO = @LIBTERMINFO@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIBUNISTRING = @LIBUNISTRING@ +LIBUNISTRING_PREFIX = @LIBUNISTRING_PREFIX@ +LIBUNISTRING_UNICONV_H = @LIBUNISTRING_UNICONV_H@ +LIBUNISTRING_UNILBRK_H = @LIBUNISTRING_UNILBRK_H@ +LIBUNISTRING_UNINAME_H = @LIBUNISTRING_UNINAME_H@ +LIBUNISTRING_UNISTR_H = @LIBUNISTRING_UNISTR_H@ +LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@ +LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@ +LIBXML = @LIBXML@ +LIBXML_H = @LIBXML_H@ +LIB_ACL = @LIB_ACL@ +LIB_POSIX_SPAWN = @LIB_POSIX_SPAWN@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ +LOCALE_JA = @LOCALE_JA@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LTLIBC = @LTLIBC@ +LTLIBCROCO = @LTLIBCROCO@ +LTLIBEXPAT = @LTLIBEXPAT@ +LTLIBGLIB = @LTLIBGLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTERMINFO = @LTLIBTERMINFO@ +LTLIBTHREAD = @LTLIBTHREAD@ +LTLIBUNISTRING = @LTLIBUNISTRING@ +LTLIBXML = @LTLIBXML@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MONO_PATH = @MONO_PATH@ +MONO_PATH_SEPARATOR = @MONO_PATH_SEPARATOR@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +MSGMERGE_LIBM = @MSGMERGE_LIBM@ +NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ +NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ +NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ +NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@ +NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@ +NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ +NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@ +NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ +NEXT_AS_FIRST_DIRECTIVE_SPAWN_H = @NEXT_AS_FIRST_DIRECTIVE_SPAWN_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ +NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ +NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ +NEXT_DIRENT_H = @NEXT_DIRENT_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_FCNTL_H = @NEXT_FCNTL_H@ +NEXT_FLOAT_H = @NEXT_FLOAT_H@ +NEXT_GETOPT_H = @NEXT_GETOPT_H@ +NEXT_ICONV_H = @NEXT_ICONV_H@ +NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ +NEXT_LANGINFO_H = @NEXT_LANGINFO_H@ +NEXT_LOCALE_H = @NEXT_LOCALE_H@ +NEXT_SCHED_H = @NEXT_SCHED_H@ +NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ +NEXT_SPAWN_H = @NEXT_SPAWN_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +NEXT_STDDEF_H = @NEXT_STDDEF_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STDIO_H = @NEXT_STDIO_H@ +NEXT_STDLIB_H = @NEXT_STDLIB_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_SYS_SELECT_H = @NEXT_SYS_SELECT_H@ +NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ +NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ +NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ +NEXT_TIME_H = @NEXT_TIME_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NO_CXX = @NO_CXX@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +POSUB = @POSUB@ +PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PRIPTR_PREFIX = @PRIPTR_PREFIX@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +RC = @RC@ +RELOCATABLE = @RELOCATABLE@ +RELOCATABLE_BUILD_DIR = @RELOCATABLE_BUILD_DIR@ +RELOCATABLE_CONFIG_H_DIR = @RELOCATABLE_CONFIG_H_DIR@ +RELOCATABLE_LDFLAGS = @RELOCATABLE_LDFLAGS@ +RELOCATABLE_LIBRARY_PATH = @RELOCATABLE_LIBRARY_PATH@ +RELOCATABLE_SRC_DIR = @RELOCATABLE_SRC_DIR@ +RELOCATABLE_STRIP = @RELOCATABLE_STRIP@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CALLOC = @REPLACE_CALLOC@ +REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ +REPLACE_DIRFD = @REPLACE_DIRFD@ +REPLACE_DPRINTF = @REPLACE_DPRINTF@ +REPLACE_DUP = @REPLACE_DUP@ +REPLACE_DUP2 = @REPLACE_DUP2@ +REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ +REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ +REPLACE_FCLOSE = @REPLACE_FCLOSE@ +REPLACE_FCNTL = @REPLACE_FCNTL@ +REPLACE_FDOPEN = @REPLACE_FDOPEN@ +REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ +REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FOPEN = @REPLACE_FOPEN@ +REPLACE_FPRINTF = @REPLACE_FPRINTF@ +REPLACE_FPURGE = @REPLACE_FPURGE@ +REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FSEEK = @REPLACE_FSEEK@ +REPLACE_FSEEKO = @REPLACE_FSEEKO@ +REPLACE_FSTAT = @REPLACE_FSTAT@ +REPLACE_FSTATAT = @REPLACE_FSTATAT@ +REPLACE_FTELL = @REPLACE_FTELL@ +REPLACE_FTELLO = @REPLACE_FTELLO@ +REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ +REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETDELIM = @REPLACE_GETDELIM@ +REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ +REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ +REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ +REPLACE_GETLINE = @REPLACE_GETLINE@ +REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_ICONV = @REPLACE_ICONV@ +REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@ +REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@ +REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ +REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ +REPLACE_ITOLD = @REPLACE_ITOLD@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LINK = @REPLACE_LINK@ +REPLACE_LINKAT = @REPLACE_LINKAT@ +REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ +REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ +REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_LSTAT = @REPLACE_LSTAT@ +REPLACE_MALLOC = @REPLACE_MALLOC@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MBTOWC = @REPLACE_MBTOWC@ +REPLACE_MEMCHR = @REPLACE_MEMCHR@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_MKDIR = @REPLACE_MKDIR@ +REPLACE_MKFIFO = @REPLACE_MKFIFO@ +REPLACE_MKNOD = @REPLACE_MKNOD@ +REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ +REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@ +REPLACE_NULL = @REPLACE_NULL@ +REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ +REPLACE_OPEN = @REPLACE_OPEN@ +REPLACE_OPENAT = @REPLACE_OPENAT@ +REPLACE_OPENDIR = @REPLACE_OPENDIR@ +REPLACE_PERROR = @REPLACE_PERROR@ +REPLACE_POPEN = @REPLACE_POPEN@ +REPLACE_POSIX_SPAWN = @REPLACE_POSIX_SPAWN@ +REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@ +REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@ +REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ +REPLACE_PREAD = @REPLACE_PREAD@ +REPLACE_PRINTF = @REPLACE_PRINTF@ +REPLACE_PSELECT = @REPLACE_PSELECT@ +REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ +REPLACE_PTSNAME = @REPLACE_PTSNAME@ +REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ +REPLACE_PUTENV = @REPLACE_PUTENV@ +REPLACE_PWRITE = @REPLACE_PWRITE@ +REPLACE_QSORT_R = @REPLACE_QSORT_R@ +REPLACE_RAISE = @REPLACE_RAISE@ +REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ +REPLACE_READ = @REPLACE_READ@ +REPLACE_READLINK = @REPLACE_READLINK@ +REPLACE_READLINKAT = @REPLACE_READLINKAT@ +REPLACE_REALLOC = @REPLACE_REALLOC@ +REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMOVE = @REPLACE_REMOVE@ +REPLACE_RENAME = @REPLACE_RENAME@ +REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ +REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_SELECT = @REPLACE_SELECT@ +REPLACE_SETENV = @REPLACE_SETENV@ +REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ +REPLACE_SLEEP = @REPLACE_SLEEP@ +REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ +REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_STAT = @REPLACE_STAT@ +REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ +REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ +REPLACE_STPNCPY = @REPLACE_STPNCPY@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ +REPLACE_STRNCAT = @REPLACE_STRNCAT@ +REPLACE_STRNDUP = @REPLACE_STRNDUP@ +REPLACE_STRNLEN = @REPLACE_STRNLEN@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_STRTOD = @REPLACE_STRTOD@ +REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ +REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ +REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ +REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ +REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ +REPLACE_SYMLINK = @REPLACE_SYMLINK@ +REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ +REPLACE_TIMEGM = @REPLACE_TIMEGM@ +REPLACE_TMPFILE = @REPLACE_TMPFILE@ +REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ +REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ +REPLACE_UNLINK = @REPLACE_UNLINK@ +REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ +REPLACE_UNSETENV = @REPLACE_UNSETENV@ +REPLACE_USLEEP = @REPLACE_USLEEP@ +REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ +REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ +REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ +REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ +REPLACE_VPRINTF = @REPLACE_VPRINTF@ +REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ +REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCTOMB = @REPLACE_WCTOMB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SCHED_H = @SCHED_H@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDDEF_H = @STDDEF_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +TESTCSHARP = @TESTCSHARP@ +TESTJAVA = @TESTJAVA@ +TESTLIBASPRINTF = @TESTLIBASPRINTF@ +TEXI2PDF = @TEXI2PDF@ +TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ +UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ +UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ +UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ +USE_ACL = @USE_ACL@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ +WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ +WINDRES = @WINDRES@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +YIELD_LIB = @YIELD_LIB@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +aclocaldir = @aclocaldir@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +grgl_LIBOBJS = @grgl_LIBOBJS@ +grgl_LTLIBOBJS = @grgl_LTLIBOBJS@ +grgltests_LIBOBJS = @grgltests_LIBOBJS@ +grgltests_LTLIBOBJS = @grgltests_LTLIBOBJS@ +grgltests_WITNESS = @grgltests_WITNESS@ +gtpo_LIBOBJS = @gtpo_LIBOBJS@ +gtpo_LTLIBOBJS = @gtpo_LTLIBOBJS@ +gtpotests_LIBOBJS = @gtpotests_LIBOBJS@ +gtpotests_LTLIBOBJS = @gtpotests_LTLIBOBJS@ +gtpotests_WITNESS = @gtpotests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +subdirs = @subdirs@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# Rules generated and collected by gnulib-tool. +AUTOMAKE_OPTIONS = 1.9.6 foreign subdir-objects 1.11 color-tests +SUBDIRS = . +TESTS_ENVIRONMENT = EXEEXT='@EXEEXT@' srcdir='$(srcdir)' \ + USE_ACL=$(USE_ACL) LOCALE_FR='@LOCALE_FR@' \ + LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_FR='@LOCALE_FR@' \ + LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' USE_ACL=$(USE_ACL) \ + LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \ + LOCALE_JA='@LOCALE_JA@' LOCALE_ZH_CN='@LOCALE_ZH_CN@' \ + LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_FR='@LOCALE_FR@' \ + LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_JA='@LOCALE_JA@' \ + LOCALE_ZH_CN='@LOCALE_ZH_CN@' \ + LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \ + LOCALE_ZH_CN='@LOCALE_ZH_CN@' LOCALE_FR='@LOCALE_FR@' \ + LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_JA='@LOCALE_JA@' \ + LOCALE_ZH_CN='@LOCALE_ZH_CN@' srcdir='$(srcdir)' \ + MAKE='$(MAKE)' LOCALE_FR='@LOCALE_FR@' \ + LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' LOCALE_JA='@LOCALE_JA@' \ + LOCALE_ZH_CN='@LOCALE_ZH_CN@' +noinst_HEADERS = +noinst_LIBRARIES = +check_LIBRARIES = libtests.a +EXTRA_DIST = test-file-has-acl.sh test-file-has-acl-1.sh \ + test-file-has-acl-2.sh test-set-mode-acl.sh \ + test-set-mode-acl-1.sh test-set-mode-acl-2.sh test-copy-acl.sh \ + test-copy-acl-1.sh test-copy-acl-2.sh test-file-has-acl.c \ + test-set-mode-acl.c test-copy-acl.c test-sameacls.c macros.h \ + test-alignof.c test-alloca-opt.c test-areadlink.h \ + test-areadlink.c macros.h test-argmatch.c macros.h \ + test-array_list.c macros.h signature.h test-atexit.sh \ + test-atexit.c test-binary-io.sh test-binary-io.c macros.h \ + btowc.c test-btowc1.sh test-btowc2.sh test-btowc.c signature.h \ + macros.h test-byteswap.c macros.h test-c-ctype.c macros.h \ + test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c \ + macros.h test-c-strcasestr.c macros.h test-c-strstr.c macros.h \ + test-canonicalize-lgpl.c signature.h macros.h test-cloexec.c \ + macros.h test-close.c signature.h macros.h test-copy-file.sh \ + test-copy-file-1.sh test-copy-file-2.sh test-copy-file.c \ + macros.h test-dirent.c dup.c test-dup.c signature.h macros.h \ + test-dup2.c signature.h macros.h test-environ.c test-errno.c \ + test-fcntl-h.c test-fcntl.c signature.h macros.h fdopen.c \ + test-fdopen.c signature.h macros.h test-fgetc.c signature.h \ + macros.h test-float.c macros.h test-fnmatch.c signature.h \ + macros.h test-fopen.h test-fopen.c signature.h macros.h \ + fpucw.h test-fputc.c signature.h macros.h test-fread.c \ + signature.h macros.h test-fstat.c signature.h macros.h \ + test-fstrcmp.c macros.h ftell.c test-ftell.c test-ftell.sh \ + test-ftell2.sh test-ftell3.c signature.h macros.h ftello.c \ + stdio-impl.h test-ftello.c test-ftello.sh test-ftello2.sh \ + test-ftello3.c test-ftello4.c test-ftello4.sh signature.h \ + macros.h test-fwrite.c signature.h macros.h getcwd-lgpl.c \ + test-getcwd-lgpl.c signature.h macros.h test-getdelim.c \ + signature.h macros.h test-getdtablesize.c signature.h macros.h \ + test-getline.c signature.h macros.h macros.h signature.h \ + test-getopt.c test-getopt.h test-getopt_long.h getpagesize.c \ + signature.h test-gettimeofday.c test-iconv-h.c test-iconv.c \ + signature.h macros.h test-ignore-value.c test-intprops.c \ + macros.h inttypes.in.h test-inttypes.c test-iswblank.c \ + macros.h test-linkedhash_list.c macros.h test-locale.c \ + test-localename.c macros.h test-lock.c lseek.c test-lseek.c \ + test-lseek.sh signature.h macros.h test-lstat.h test-lstat.c \ + signature.h macros.h test-malloca.c test-mbrtowc1.sh \ + test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh \ + test-mbrtowc.c test-mbrtowc-w32-1.sh test-mbrtowc-w32-2.sh \ + test-mbrtowc-w32-3.sh test-mbrtowc-w32-4.sh \ + test-mbrtowc-w32-5.sh test-mbrtowc-w32.c signature.h macros.h \ + test-mbsinit.sh test-mbsinit.c signature.h macros.h \ + test-mbsrtowcs1.sh test-mbsrtowcs2.sh test-mbsrtowcs3.sh \ + test-mbsrtowcs4.sh test-mbsrtowcs.c signature.h macros.h \ + test-mbsstr1.c test-mbsstr2.sh test-mbsstr2.c test-mbsstr3.sh \ + test-mbsstr3.c macros.h mbtowc-impl.h mbtowc.c test-memchr.c \ + zerosize-ptr.h signature.h macros.h test-moo-root.oo.h \ + test-moo-root.oo.c test-moo-sub1.oo.h test-moo-sub1.oo.c \ + test-moo-sub2.oo.h test-moo-sub2.oo.c test-moo-aroot.oo.h \ + test-moo-aroot.oo.c test-moo-asub1.oo.h test-moo-asub1.oo.c \ + test-moo-assign.c test-open.h test-open.c signature.h macros.h \ + test-pathmax.c test-pipe-filter-ii1.sh test-pipe-filter-ii1.c \ + test-vasnprintf-posix.c test-pipe-filter-ii2.sh \ + test-pipe-filter-ii2-main.c test-pipe-filter-ii2-child.c \ + macros.h test-pipe2.c signature.h macros.h \ + test-posix_spawn_file_actions_addclose.c signature.h macros.h \ + test-posix_spawn_file_actions_adddup2.c signature.h macros.h \ + test-posix_spawn_file_actions_addopen.c signature.h macros.h \ + test-posix_spawn1.c test-posix_spawn1.in.sh \ + test-posix_spawn2.c test-posix_spawn2.in.sh signature.h \ + putenv.c test-quotearg-simple.c test-quotearg.h macros.h \ + zerosize-ptr.h test-raise.c signature.h macros.h \ + test-rawmemchr.c zerosize-ptr.h signature.h macros.h \ + read-file.h test-read-file.c test-read.c signature.h macros.h \ + test-readlink.h test-readlink.c signature.h macros.h \ + test-rmdir.h test-rmdir.c signature.h macros.h same-inode.h \ + test-sched.c test-setenv.c signature.h macros.h \ + test-setlocale1.sh test-setlocale1.c test-setlocale2.sh \ + test-setlocale2.c signature.h macros.h test-sh-quote.c \ + test-sigaction.c signature.h macros.h test-signal-h.c \ + test-sigpipe.c test-sigpipe.sh test-sigprocmask.c signature.h \ + macros.h sleep.c test-sleep.c signature.h macros.h \ + $(top_srcdir)/../build-aux/snippet/_Noreturn.h \ + $(top_srcdir)/../build-aux/snippet/arg-nonnull.h \ + $(top_srcdir)/../build-aux/snippet/c++defs.h \ + $(top_srcdir)/../build-aux/snippet/unused-parameter.h \ + $(top_srcdir)/../build-aux/snippet/warn-on-use.h \ + test-snprintf.c signature.h macros.h test-spawn-pipe.sh \ + test-spawn-pipe-main.c test-spawn-pipe-child.c macros.h \ + test-spawn.c test-stat.h test-stat.c signature.h macros.h \ + test-stdbool.c test-stddef.c test-stdint.c test-stdio.c \ + test-stdlib.c test-sys_wait.h test-strchrnul.c signature.h \ + macros.h test-strerror.c signature.h macros.h test-striconv.c \ + macros.h test-striconveh.c macros.h test-striconveha.c \ + macros.h test-string.c test-strnlen.c zerosize-ptr.h \ + signature.h macros.h test-strstr.c zerosize-ptr.h signature.h \ + macros.h test-strtol.c signature.h macros.h test-strtoul.c \ + signature.h macros.h symlink.c test-symlink.h test-symlink.c \ + signature.h macros.h test-sys_select.c signature.h \ + test-sys_stat.c test-sys_time.c test-sys_types.c \ + test-sys_wait.c test-sys_wait.h test-term-ostream.c \ + test-term-ostream-xterm test-term-ostream-xterm-r6.out \ + test-term-ostream-xterm-xf86-v32.out \ + test-term-ostream-xterm-basic.out \ + test-term-ostream-xterm-basic-italic.out \ + test-term-ostream-xterm-8bit.out \ + test-term-ostream-xterm-linux-debian.out \ + test-term-ostream-xterm-linux-mandriva.out \ + test-term-ostream-xterm-netbsd3.out \ + test-term-ostream-xterm-solaris10.out \ + test-term-ostream-xterm-aix51.out \ + test-term-ostream-xterm-osf51.out \ + test-term-ostream-xterm-irix65.out \ + test-term-ostream-xterm-mingw.out \ + test-term-ostream-xterm-16color.out \ + test-term-ostream-xterm-88color.out \ + test-term-ostream-xterm-256color.out init.sh test-init.sh \ + test-thread_self.c test-thread_create.c macros.h test-time.c \ + test-tls.c uniconv/test-u8-conv-from-enc.c macros.h \ + unilbrk/test-u8-width-linebreaks.c macros.h \ + uniname/test-uninames.sh uniname/test-uninames.c \ + uniname/UnicodeDataNames.txt test-dup-safer.c macros.h \ + test-unistd.c unistr/test-u16-mbtouc.c \ + unistr/test-u16-mbtouc.h macros.h unistr/test-u8-check.c \ + macros.h unistr/test-u8-cmp.c unistr/test-cmp.h zerosize-ptr.h \ + macros.h unistr/test-u8-mblen.c macros.h \ + unistr/test-u8-mbtoucr.c macros.h unistr/test-u8-prev.c \ + macros.h unistr/test-u8-strlen.c macros.h \ + unistr/test-u8-uctomb.c macros.h test-unsetenv.c signature.h \ + macros.h test-vasnprintf.c macros.h test-vasprintf.c \ + signature.h macros.h test-verify.c test-verify.sh \ + test-vsnprintf.c signature.h macros.h test-wchar.c wcrtomb.c \ + test-wcrtomb.sh test-wcrtomb.c test-wcrtomb-w32-1.sh \ + test-wcrtomb-w32-2.sh test-wcrtomb-w32-3.sh \ + test-wcrtomb-w32-4.sh test-wcrtomb-w32-5.sh test-wcrtomb-w32.c \ + signature.h macros.h wctob.c wctomb-impl.h wctomb.c \ + test-wctype-h.c macros.h test-wcwidth.c signature.h macros.h \ + test-write.c signature.h macros.h test-xalloc-die.c \ + test-xalloc-die.sh test-xvasprintf.c macros.h + +# The BUILT_SOURCES created by this Makefile snippet are not used via #include +# statements but through direct file reference. Therefore this snippet must be +# present in all Makefile.am that need it. This is ensured by the applicability +# 'all' defined above. + +# The BUILT_SOURCES created by this Makefile snippet are not used via #include +# statements but through direct file reference. Therefore this snippet must be +# present in all Makefile.am that need it. This is ensured by the applicability +# 'all' defined above. + +# The BUILT_SOURCES created by this Makefile snippet are not used via #include +# statements but through direct file reference. Therefore this snippet must be +# present in all Makefile.am that need it. This is ensured by the applicability +# 'all' defined above. +BUILT_SOURCES = inttypes.h $(am__append_3) arg-nonnull.h c++defs.h \ + unused-parameter.h warn-on-use.h +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump t-ftell3.tmp t-ftello3.tmp \ + test-getdelim.txt test-getline.txt inttypes.h inttypes.h-t \ + $(am__append_4) arg-nonnull.h arg-nonnull.h-t c++defs.h \ + c++defs.h-t unused-parameter.h unused-parameter.h-t \ + warn-on-use.h warn-on-use.h-t +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = + +# Ensure that test-quotearg.c finds libintl.h. +AM_CPPFLAGS = -D@gltests_WITNESS@=1 -I. -I$(srcdir) -I.. \ + -I$(srcdir)/.. -I../gnulib-lib -I$(srcdir)/../gnulib-lib \ + -I../intl +LDADD = libtests.a ../gnulib-lib/libgettextlib.la libtests.a $(LIBTESTS_LIBDEPS) +libtests_a_SOURCES = read-file.c glthread/thread.h glthread/thread.c \ + $(am__append_7) $(am__append_8) glthread/yield.h +libtests_a_LIBADD = $(gltests_LIBOBJS) +libtests_a_DEPENDENCIES = $(gltests_LIBOBJS) +EXTRA_libtests_a_SOURCES = btowc.c dup.c fdopen.c ftell.c ftello.c \ + getcwd-lgpl.c getpagesize.c lseek.c mbtowc.c putenv.c sleep.c \ + symlink.c wcrtomb.c wctob.c wctomb.c +AM_LIBTOOLFLAGS = --preserve-dup-deps +test_file_has_acl_LDADD = $(LDADD) $(LIB_ACL) +test_set_mode_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ +test_copy_acl_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ +test_sameacls_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ +test_argmatch_LDADD = $(LDADD) @LIBINTL@ +test_copy_file_LDADD = $(LDADD) $(LIB_ACL) @LIBINTL@ +test_fstrcmp_LDADD = $(LDADD) @LIBINTL@ $(LIBTHREAD) +test_getcwd_lgpl_LDADD = $(LDADD) $(LIBINTL) +test_getopt_LDADD = $(LDADD) $(LIBINTL) +test_iconv_LDADD = $(LDADD) @LIBICONV@ +test_localename_LDADD = $(LDADD) @INTL_MACOSX_LIBS@ $(LIBTHREAD) +test_lock_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@ +test_pipe_filter_ii1_LDADD = $(LDADD) @LIBINTL@ +test_pipe_filter_ii2_main_LDADD = $(LDADD) @LIBINTL@ +test_pipe2_LDADD = $(LDADD) $(LIBSOCKET) +test_quotearg_simple_LDADD = $(LDADD) @LIBINTL@ +test_sh_quote_LDADD = $(LDADD) @LIBINTL@ + +# Because this Makefile snippet defines a variable used by other +# gnulib Makefile snippets, it must be present in all Makefile.am that +# need it. This is ensured by the applicability 'all' defined above. +_NORETURN_H = $(top_srcdir)/../build-aux/snippet/_Noreturn.h +ARG_NONNULL_H = arg-nonnull.h +CXXDEFS_H = c++defs.h +UNUSED_PARAMETER_H = unused-parameter.h +WARN_ON_USE_H = warn-on-use.h +test_spawn_pipe_main_LDADD = $(LDADD) @LIBINTL@ +# The test-spawn-pipe-child program must be a real executable, not a libtool +# wrapper script, and should link against as few libraries as possible. +# Therefore don't link it against any libraries other than -lc. +test_spawn_pipe_child_LDADD = +test_stat_LDADD = $(LDADD) $(LIBINTL) +test_striconv_LDADD = $(LDADD) @LIBICONV@ +test_striconveh_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ +test_striconveha_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ +test_term_ostream_LDADD = $(LIBTERMCAP) $(LDADD) +test_thread_self_LDADD = $(LDADD) @LIBTHREAD@ +test_thread_create_LDADD = $(LDADD) @LIBMULTITHREAD@ +test_tls_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@ +test_u8_conv_from_enc_SOURCES = uniconv/test-u8-conv-from-enc.c +test_u8_conv_from_enc_LDADD = $(LDADD) $(LIBUNISTRING) @LIBICONV@ +test_u8_width_linebreaks_SOURCES = unilbrk/test-u8-width-linebreaks.c +test_u8_width_linebreaks_LDADD = $(LDADD) $(LIBUNISTRING) +@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@test_uninames_SOURCES = uniname/test-uninames.c +@LIBUNISTRING_COMPILE_UNINAME_UNINAME_TRUE@test_uninames_LDADD = $(LDADD) $(LIBUNISTRING) @LIBINTL@ +test_u16_mbtouc_SOURCES = unistr/test-u16-mbtouc.c +test_u16_mbtouc_LDADD = $(LDADD) $(LIBUNISTRING) +test_u8_check_SOURCES = unistr/test-u8-check.c +test_u8_check_LDADD = $(LDADD) $(LIBUNISTRING) +test_u8_cmp_SOURCES = unistr/test-u8-cmp.c +test_u8_cmp_LDADD = $(LDADD) $(LIBUNISTRING) +test_u8_mblen_SOURCES = unistr/test-u8-mblen.c +test_u8_mblen_LDADD = $(LDADD) $(LIBUNISTRING) +test_u8_mbtoucr_SOURCES = unistr/test-u8-mbtoucr.c +test_u8_mbtoucr_LDADD = $(LDADD) $(LIBUNISTRING) +test_u8_prev_SOURCES = unistr/test-u8-prev.c +test_u8_prev_LDADD = $(LDADD) $(LIBUNISTRING) +test_u8_strlen_SOURCES = unistr/test-u8-strlen.c +test_u8_strlen_LDADD = $(LDADD) $(LIBUNISTRING) +test_u8_uctomb_SOURCES = unistr/test-u8-uctomb.c +test_u8_uctomb_LDADD = $(LDADD) $(LIBUNISTRING) +test_xalloc_die_LDADD = $(LDADD) @LIBINTL@ +test_xvasprintf_LDADD = $(LDADD) @LIBINTL@ +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.gnulib $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gnulib-tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign gnulib-tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(srcdir)/Makefile.gnulib: + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLIBRARIES: + -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES) + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +glthread/$(am__dirstamp): + @$(MKDIR_P) glthread + @: > glthread/$(am__dirstamp) +glthread/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) glthread/$(DEPDIR) + @: > glthread/$(DEPDIR)/$(am__dirstamp) +glthread/thread.$(OBJEXT): glthread/$(am__dirstamp) \ + glthread/$(DEPDIR)/$(am__dirstamp) +unistr/$(am__dirstamp): + @$(MKDIR_P) unistr + @: > unistr/$(am__dirstamp) +unistr/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) unistr/$(DEPDIR) + @: > unistr/$(DEPDIR)/$(am__dirstamp) +unistr/u8-cmp.$(OBJEXT): unistr/$(am__dirstamp) \ + unistr/$(DEPDIR)/$(am__dirstamp) +unistr/u8-strlen.$(OBJEXT): unistr/$(am__dirstamp) \ + unistr/$(DEPDIR)/$(am__dirstamp) + +libtests.a: $(libtests_a_OBJECTS) $(libtests_a_DEPENDENCIES) $(EXTRA_libtests_a_DEPENDENCIES) + $(AM_V_at)-rm -f libtests.a + $(AM_V_AR)$(libtests_a_AR) libtests.a $(libtests_a_OBJECTS) $(libtests_a_LIBADD) + $(AM_V_at)$(RANLIB) libtests.a + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +test-alignof$(EXEEXT): $(test_alignof_OBJECTS) $(test_alignof_DEPENDENCIES) $(EXTRA_test_alignof_DEPENDENCIES) + @rm -f test-alignof$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_alignof_OBJECTS) $(test_alignof_LDADD) $(LIBS) + +test-alloca-opt$(EXEEXT): $(test_alloca_opt_OBJECTS) $(test_alloca_opt_DEPENDENCIES) $(EXTRA_test_alloca_opt_DEPENDENCIES) + @rm -f test-alloca-opt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_alloca_opt_OBJECTS) $(test_alloca_opt_LDADD) $(LIBS) + +test-areadlink$(EXEEXT): $(test_areadlink_OBJECTS) $(test_areadlink_DEPENDENCIES) $(EXTRA_test_areadlink_DEPENDENCIES) + @rm -f test-areadlink$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_areadlink_OBJECTS) $(test_areadlink_LDADD) $(LIBS) + +test-argmatch$(EXEEXT): $(test_argmatch_OBJECTS) $(test_argmatch_DEPENDENCIES) $(EXTRA_test_argmatch_DEPENDENCIES) + @rm -f test-argmatch$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_argmatch_OBJECTS) $(test_argmatch_LDADD) $(LIBS) + +test-array_list$(EXEEXT): $(test_array_list_OBJECTS) $(test_array_list_DEPENDENCIES) $(EXTRA_test_array_list_DEPENDENCIES) + @rm -f test-array_list$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_array_list_OBJECTS) $(test_array_list_LDADD) $(LIBS) + +test-atexit$(EXEEXT): $(test_atexit_OBJECTS) $(test_atexit_DEPENDENCIES) $(EXTRA_test_atexit_DEPENDENCIES) + @rm -f test-atexit$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_atexit_OBJECTS) $(test_atexit_LDADD) $(LIBS) + +test-binary-io$(EXEEXT): $(test_binary_io_OBJECTS) $(test_binary_io_DEPENDENCIES) $(EXTRA_test_binary_io_DEPENDENCIES) + @rm -f test-binary-io$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_binary_io_OBJECTS) $(test_binary_io_LDADD) $(LIBS) + +test-btowc$(EXEEXT): $(test_btowc_OBJECTS) $(test_btowc_DEPENDENCIES) $(EXTRA_test_btowc_DEPENDENCIES) + @rm -f test-btowc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_btowc_OBJECTS) $(test_btowc_LDADD) $(LIBS) + +test-byteswap$(EXEEXT): $(test_byteswap_OBJECTS) $(test_byteswap_DEPENDENCIES) $(EXTRA_test_byteswap_DEPENDENCIES) + @rm -f test-byteswap$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_byteswap_OBJECTS) $(test_byteswap_LDADD) $(LIBS) + +test-c-ctype$(EXEEXT): $(test_c_ctype_OBJECTS) $(test_c_ctype_DEPENDENCIES) $(EXTRA_test_c_ctype_DEPENDENCIES) + @rm -f test-c-ctype$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_c_ctype_OBJECTS) $(test_c_ctype_LDADD) $(LIBS) + +test-c-strcasecmp$(EXEEXT): $(test_c_strcasecmp_OBJECTS) $(test_c_strcasecmp_DEPENDENCIES) $(EXTRA_test_c_strcasecmp_DEPENDENCIES) + @rm -f test-c-strcasecmp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_c_strcasecmp_OBJECTS) $(test_c_strcasecmp_LDADD) $(LIBS) + +test-c-strcasestr$(EXEEXT): $(test_c_strcasestr_OBJECTS) $(test_c_strcasestr_DEPENDENCIES) $(EXTRA_test_c_strcasestr_DEPENDENCIES) + @rm -f test-c-strcasestr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_c_strcasestr_OBJECTS) $(test_c_strcasestr_LDADD) $(LIBS) + +test-c-strncasecmp$(EXEEXT): $(test_c_strncasecmp_OBJECTS) $(test_c_strncasecmp_DEPENDENCIES) $(EXTRA_test_c_strncasecmp_DEPENDENCIES) + @rm -f test-c-strncasecmp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_c_strncasecmp_OBJECTS) $(test_c_strncasecmp_LDADD) $(LIBS) + +test-c-strstr$(EXEEXT): $(test_c_strstr_OBJECTS) $(test_c_strstr_DEPENDENCIES) $(EXTRA_test_c_strstr_DEPENDENCIES) + @rm -f test-c-strstr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_c_strstr_OBJECTS) $(test_c_strstr_LDADD) $(LIBS) + +test-canonicalize-lgpl$(EXEEXT): $(test_canonicalize_lgpl_OBJECTS) $(test_canonicalize_lgpl_DEPENDENCIES) $(EXTRA_test_canonicalize_lgpl_DEPENDENCIES) + @rm -f test-canonicalize-lgpl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_canonicalize_lgpl_OBJECTS) $(test_canonicalize_lgpl_LDADD) $(LIBS) + +test-cloexec$(EXEEXT): $(test_cloexec_OBJECTS) $(test_cloexec_DEPENDENCIES) $(EXTRA_test_cloexec_DEPENDENCIES) + @rm -f test-cloexec$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_cloexec_OBJECTS) $(test_cloexec_LDADD) $(LIBS) + +test-close$(EXEEXT): $(test_close_OBJECTS) $(test_close_DEPENDENCIES) $(EXTRA_test_close_DEPENDENCIES) + @rm -f test-close$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_close_OBJECTS) $(test_close_LDADD) $(LIBS) + +test-copy-acl$(EXEEXT): $(test_copy_acl_OBJECTS) $(test_copy_acl_DEPENDENCIES) $(EXTRA_test_copy_acl_DEPENDENCIES) + @rm -f test-copy-acl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_copy_acl_OBJECTS) $(test_copy_acl_LDADD) $(LIBS) + +test-copy-file$(EXEEXT): $(test_copy_file_OBJECTS) $(test_copy_file_DEPENDENCIES) $(EXTRA_test_copy_file_DEPENDENCIES) + @rm -f test-copy-file$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_copy_file_OBJECTS) $(test_copy_file_LDADD) $(LIBS) + +test-dirent$(EXEEXT): $(test_dirent_OBJECTS) $(test_dirent_DEPENDENCIES) $(EXTRA_test_dirent_DEPENDENCIES) + @rm -f test-dirent$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_dirent_OBJECTS) $(test_dirent_LDADD) $(LIBS) + +test-dup$(EXEEXT): $(test_dup_OBJECTS) $(test_dup_DEPENDENCIES) $(EXTRA_test_dup_DEPENDENCIES) + @rm -f test-dup$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_dup_OBJECTS) $(test_dup_LDADD) $(LIBS) + +test-dup-safer$(EXEEXT): $(test_dup_safer_OBJECTS) $(test_dup_safer_DEPENDENCIES) $(EXTRA_test_dup_safer_DEPENDENCIES) + @rm -f test-dup-safer$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_dup_safer_OBJECTS) $(test_dup_safer_LDADD) $(LIBS) + +test-dup2$(EXEEXT): $(test_dup2_OBJECTS) $(test_dup2_DEPENDENCIES) $(EXTRA_test_dup2_DEPENDENCIES) + @rm -f test-dup2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_dup2_OBJECTS) $(test_dup2_LDADD) $(LIBS) + +test-environ$(EXEEXT): $(test_environ_OBJECTS) $(test_environ_DEPENDENCIES) $(EXTRA_test_environ_DEPENDENCIES) + @rm -f test-environ$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_environ_OBJECTS) $(test_environ_LDADD) $(LIBS) + +test-errno$(EXEEXT): $(test_errno_OBJECTS) $(test_errno_DEPENDENCIES) $(EXTRA_test_errno_DEPENDENCIES) + @rm -f test-errno$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_errno_OBJECTS) $(test_errno_LDADD) $(LIBS) + +test-fcntl$(EXEEXT): $(test_fcntl_OBJECTS) $(test_fcntl_DEPENDENCIES) $(EXTRA_test_fcntl_DEPENDENCIES) + @rm -f test-fcntl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fcntl_OBJECTS) $(test_fcntl_LDADD) $(LIBS) + +test-fcntl-h$(EXEEXT): $(test_fcntl_h_OBJECTS) $(test_fcntl_h_DEPENDENCIES) $(EXTRA_test_fcntl_h_DEPENDENCIES) + @rm -f test-fcntl-h$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fcntl_h_OBJECTS) $(test_fcntl_h_LDADD) $(LIBS) + +test-fdopen$(EXEEXT): $(test_fdopen_OBJECTS) $(test_fdopen_DEPENDENCIES) $(EXTRA_test_fdopen_DEPENDENCIES) + @rm -f test-fdopen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fdopen_OBJECTS) $(test_fdopen_LDADD) $(LIBS) + +test-fgetc$(EXEEXT): $(test_fgetc_OBJECTS) $(test_fgetc_DEPENDENCIES) $(EXTRA_test_fgetc_DEPENDENCIES) + @rm -f test-fgetc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fgetc_OBJECTS) $(test_fgetc_LDADD) $(LIBS) + +test-file-has-acl$(EXEEXT): $(test_file_has_acl_OBJECTS) $(test_file_has_acl_DEPENDENCIES) $(EXTRA_test_file_has_acl_DEPENDENCIES) + @rm -f test-file-has-acl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_file_has_acl_OBJECTS) $(test_file_has_acl_LDADD) $(LIBS) + +test-float$(EXEEXT): $(test_float_OBJECTS) $(test_float_DEPENDENCIES) $(EXTRA_test_float_DEPENDENCIES) + @rm -f test-float$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_float_OBJECTS) $(test_float_LDADD) $(LIBS) + +test-fnmatch$(EXEEXT): $(test_fnmatch_OBJECTS) $(test_fnmatch_DEPENDENCIES) $(EXTRA_test_fnmatch_DEPENDENCIES) + @rm -f test-fnmatch$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fnmatch_OBJECTS) $(test_fnmatch_LDADD) $(LIBS) + +test-fopen$(EXEEXT): $(test_fopen_OBJECTS) $(test_fopen_DEPENDENCIES) $(EXTRA_test_fopen_DEPENDENCIES) + @rm -f test-fopen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fopen_OBJECTS) $(test_fopen_LDADD) $(LIBS) + +test-fputc$(EXEEXT): $(test_fputc_OBJECTS) $(test_fputc_DEPENDENCIES) $(EXTRA_test_fputc_DEPENDENCIES) + @rm -f test-fputc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fputc_OBJECTS) $(test_fputc_LDADD) $(LIBS) + +test-fread$(EXEEXT): $(test_fread_OBJECTS) $(test_fread_DEPENDENCIES) $(EXTRA_test_fread_DEPENDENCIES) + @rm -f test-fread$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fread_OBJECTS) $(test_fread_LDADD) $(LIBS) + +test-fstat$(EXEEXT): $(test_fstat_OBJECTS) $(test_fstat_DEPENDENCIES) $(EXTRA_test_fstat_DEPENDENCIES) + @rm -f test-fstat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fstat_OBJECTS) $(test_fstat_LDADD) $(LIBS) + +test-fstrcmp$(EXEEXT): $(test_fstrcmp_OBJECTS) $(test_fstrcmp_DEPENDENCIES) $(EXTRA_test_fstrcmp_DEPENDENCIES) + @rm -f test-fstrcmp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fstrcmp_OBJECTS) $(test_fstrcmp_LDADD) $(LIBS) + +test-ftell$(EXEEXT): $(test_ftell_OBJECTS) $(test_ftell_DEPENDENCIES) $(EXTRA_test_ftell_DEPENDENCIES) + @rm -f test-ftell$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ftell_OBJECTS) $(test_ftell_LDADD) $(LIBS) + +test-ftell3$(EXEEXT): $(test_ftell3_OBJECTS) $(test_ftell3_DEPENDENCIES) $(EXTRA_test_ftell3_DEPENDENCIES) + @rm -f test-ftell3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ftell3_OBJECTS) $(test_ftell3_LDADD) $(LIBS) + +test-ftello$(EXEEXT): $(test_ftello_OBJECTS) $(test_ftello_DEPENDENCIES) $(EXTRA_test_ftello_DEPENDENCIES) + @rm -f test-ftello$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ftello_OBJECTS) $(test_ftello_LDADD) $(LIBS) + +test-ftello3$(EXEEXT): $(test_ftello3_OBJECTS) $(test_ftello3_DEPENDENCIES) $(EXTRA_test_ftello3_DEPENDENCIES) + @rm -f test-ftello3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ftello3_OBJECTS) $(test_ftello3_LDADD) $(LIBS) + +test-ftello4$(EXEEXT): $(test_ftello4_OBJECTS) $(test_ftello4_DEPENDENCIES) $(EXTRA_test_ftello4_DEPENDENCIES) + @rm -f test-ftello4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ftello4_OBJECTS) $(test_ftello4_LDADD) $(LIBS) + +test-fwrite$(EXEEXT): $(test_fwrite_OBJECTS) $(test_fwrite_DEPENDENCIES) $(EXTRA_test_fwrite_DEPENDENCIES) + @rm -f test-fwrite$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_fwrite_OBJECTS) $(test_fwrite_LDADD) $(LIBS) + +test-getcwd-lgpl$(EXEEXT): $(test_getcwd_lgpl_OBJECTS) $(test_getcwd_lgpl_DEPENDENCIES) $(EXTRA_test_getcwd_lgpl_DEPENDENCIES) + @rm -f test-getcwd-lgpl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_getcwd_lgpl_OBJECTS) $(test_getcwd_lgpl_LDADD) $(LIBS) + +test-getdelim$(EXEEXT): $(test_getdelim_OBJECTS) $(test_getdelim_DEPENDENCIES) $(EXTRA_test_getdelim_DEPENDENCIES) + @rm -f test-getdelim$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_getdelim_OBJECTS) $(test_getdelim_LDADD) $(LIBS) + +test-getdtablesize$(EXEEXT): $(test_getdtablesize_OBJECTS) $(test_getdtablesize_DEPENDENCIES) $(EXTRA_test_getdtablesize_DEPENDENCIES) + @rm -f test-getdtablesize$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_getdtablesize_OBJECTS) $(test_getdtablesize_LDADD) $(LIBS) + +test-getline$(EXEEXT): $(test_getline_OBJECTS) $(test_getline_DEPENDENCIES) $(EXTRA_test_getline_DEPENDENCIES) + @rm -f test-getline$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_getline_OBJECTS) $(test_getline_LDADD) $(LIBS) + +test-getopt$(EXEEXT): $(test_getopt_OBJECTS) $(test_getopt_DEPENDENCIES) $(EXTRA_test_getopt_DEPENDENCIES) + @rm -f test-getopt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_getopt_OBJECTS) $(test_getopt_LDADD) $(LIBS) + +test-gettimeofday$(EXEEXT): $(test_gettimeofday_OBJECTS) $(test_gettimeofday_DEPENDENCIES) $(EXTRA_test_gettimeofday_DEPENDENCIES) + @rm -f test-gettimeofday$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_gettimeofday_OBJECTS) $(test_gettimeofday_LDADD) $(LIBS) + +test-iconv$(EXEEXT): $(test_iconv_OBJECTS) $(test_iconv_DEPENDENCIES) $(EXTRA_test_iconv_DEPENDENCIES) + @rm -f test-iconv$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_iconv_OBJECTS) $(test_iconv_LDADD) $(LIBS) + +test-iconv-h$(EXEEXT): $(test_iconv_h_OBJECTS) $(test_iconv_h_DEPENDENCIES) $(EXTRA_test_iconv_h_DEPENDENCIES) + @rm -f test-iconv-h$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_iconv_h_OBJECTS) $(test_iconv_h_LDADD) $(LIBS) + +test-ignore-value$(EXEEXT): $(test_ignore_value_OBJECTS) $(test_ignore_value_DEPENDENCIES) $(EXTRA_test_ignore_value_DEPENDENCIES) + @rm -f test-ignore-value$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_ignore_value_OBJECTS) $(test_ignore_value_LDADD) $(LIBS) + +test-intprops$(EXEEXT): $(test_intprops_OBJECTS) $(test_intprops_DEPENDENCIES) $(EXTRA_test_intprops_DEPENDENCIES) + @rm -f test-intprops$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_intprops_OBJECTS) $(test_intprops_LDADD) $(LIBS) + +test-inttypes$(EXEEXT): $(test_inttypes_OBJECTS) $(test_inttypes_DEPENDENCIES) $(EXTRA_test_inttypes_DEPENDENCIES) + @rm -f test-inttypes$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_inttypes_OBJECTS) $(test_inttypes_LDADD) $(LIBS) + +test-iswblank$(EXEEXT): $(test_iswblank_OBJECTS) $(test_iswblank_DEPENDENCIES) $(EXTRA_test_iswblank_DEPENDENCIES) + @rm -f test-iswblank$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_iswblank_OBJECTS) $(test_iswblank_LDADD) $(LIBS) + +test-linkedhash_list$(EXEEXT): $(test_linkedhash_list_OBJECTS) $(test_linkedhash_list_DEPENDENCIES) $(EXTRA_test_linkedhash_list_DEPENDENCIES) + @rm -f test-linkedhash_list$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_linkedhash_list_OBJECTS) $(test_linkedhash_list_LDADD) $(LIBS) + +test-locale$(EXEEXT): $(test_locale_OBJECTS) $(test_locale_DEPENDENCIES) $(EXTRA_test_locale_DEPENDENCIES) + @rm -f test-locale$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_locale_OBJECTS) $(test_locale_LDADD) $(LIBS) + +test-localename$(EXEEXT): $(test_localename_OBJECTS) $(test_localename_DEPENDENCIES) $(EXTRA_test_localename_DEPENDENCIES) + @rm -f test-localename$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_localename_OBJECTS) $(test_localename_LDADD) $(LIBS) + +test-lock$(EXEEXT): $(test_lock_OBJECTS) $(test_lock_DEPENDENCIES) $(EXTRA_test_lock_DEPENDENCIES) + @rm -f test-lock$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_lock_OBJECTS) $(test_lock_LDADD) $(LIBS) + +test-lseek$(EXEEXT): $(test_lseek_OBJECTS) $(test_lseek_DEPENDENCIES) $(EXTRA_test_lseek_DEPENDENCIES) + @rm -f test-lseek$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_lseek_OBJECTS) $(test_lseek_LDADD) $(LIBS) + +test-lstat$(EXEEXT): $(test_lstat_OBJECTS) $(test_lstat_DEPENDENCIES) $(EXTRA_test_lstat_DEPENDENCIES) + @rm -f test-lstat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_lstat_OBJECTS) $(test_lstat_LDADD) $(LIBS) + +test-malloca$(EXEEXT): $(test_malloca_OBJECTS) $(test_malloca_DEPENDENCIES) $(EXTRA_test_malloca_DEPENDENCIES) + @rm -f test-malloca$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_malloca_OBJECTS) $(test_malloca_LDADD) $(LIBS) + +test-mbrtowc$(EXEEXT): $(test_mbrtowc_OBJECTS) $(test_mbrtowc_DEPENDENCIES) $(EXTRA_test_mbrtowc_DEPENDENCIES) + @rm -f test-mbrtowc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_mbrtowc_OBJECTS) $(test_mbrtowc_LDADD) $(LIBS) + +test-mbrtowc-w32$(EXEEXT): $(test_mbrtowc_w32_OBJECTS) $(test_mbrtowc_w32_DEPENDENCIES) $(EXTRA_test_mbrtowc_w32_DEPENDENCIES) + @rm -f test-mbrtowc-w32$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_mbrtowc_w32_OBJECTS) $(test_mbrtowc_w32_LDADD) $(LIBS) + +test-mbsinit$(EXEEXT): $(test_mbsinit_OBJECTS) $(test_mbsinit_DEPENDENCIES) $(EXTRA_test_mbsinit_DEPENDENCIES) + @rm -f test-mbsinit$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_mbsinit_OBJECTS) $(test_mbsinit_LDADD) $(LIBS) + +test-mbsrtowcs$(EXEEXT): $(test_mbsrtowcs_OBJECTS) $(test_mbsrtowcs_DEPENDENCIES) $(EXTRA_test_mbsrtowcs_DEPENDENCIES) + @rm -f test-mbsrtowcs$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_mbsrtowcs_OBJECTS) $(test_mbsrtowcs_LDADD) $(LIBS) + +test-mbsstr1$(EXEEXT): $(test_mbsstr1_OBJECTS) $(test_mbsstr1_DEPENDENCIES) $(EXTRA_test_mbsstr1_DEPENDENCIES) + @rm -f test-mbsstr1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_mbsstr1_OBJECTS) $(test_mbsstr1_LDADD) $(LIBS) + +test-mbsstr2$(EXEEXT): $(test_mbsstr2_OBJECTS) $(test_mbsstr2_DEPENDENCIES) $(EXTRA_test_mbsstr2_DEPENDENCIES) + @rm -f test-mbsstr2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_mbsstr2_OBJECTS) $(test_mbsstr2_LDADD) $(LIBS) + +test-mbsstr3$(EXEEXT): $(test_mbsstr3_OBJECTS) $(test_mbsstr3_DEPENDENCIES) $(EXTRA_test_mbsstr3_DEPENDENCIES) + @rm -f test-mbsstr3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_mbsstr3_OBJECTS) $(test_mbsstr3_LDADD) $(LIBS) + +test-memchr$(EXEEXT): $(test_memchr_OBJECTS) $(test_memchr_DEPENDENCIES) $(EXTRA_test_memchr_DEPENDENCIES) + @rm -f test-memchr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_memchr_OBJECTS) $(test_memchr_LDADD) $(LIBS) + +test-open$(EXEEXT): $(test_open_OBJECTS) $(test_open_DEPENDENCIES) $(EXTRA_test_open_DEPENDENCIES) + @rm -f test-open$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_open_OBJECTS) $(test_open_LDADD) $(LIBS) + +test-pathmax$(EXEEXT): $(test_pathmax_OBJECTS) $(test_pathmax_DEPENDENCIES) $(EXTRA_test_pathmax_DEPENDENCIES) + @rm -f test-pathmax$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_pathmax_OBJECTS) $(test_pathmax_LDADD) $(LIBS) + +test-pipe-filter-ii1$(EXEEXT): $(test_pipe_filter_ii1_OBJECTS) $(test_pipe_filter_ii1_DEPENDENCIES) $(EXTRA_test_pipe_filter_ii1_DEPENDENCIES) + @rm -f test-pipe-filter-ii1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_pipe_filter_ii1_OBJECTS) $(test_pipe_filter_ii1_LDADD) $(LIBS) + +test-pipe-filter-ii2-child$(EXEEXT): $(test_pipe_filter_ii2_child_OBJECTS) $(test_pipe_filter_ii2_child_DEPENDENCIES) $(EXTRA_test_pipe_filter_ii2_child_DEPENDENCIES) + @rm -f test-pipe-filter-ii2-child$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_pipe_filter_ii2_child_OBJECTS) $(test_pipe_filter_ii2_child_LDADD) $(LIBS) + +test-pipe-filter-ii2-main$(EXEEXT): $(test_pipe_filter_ii2_main_OBJECTS) $(test_pipe_filter_ii2_main_DEPENDENCIES) $(EXTRA_test_pipe_filter_ii2_main_DEPENDENCIES) + @rm -f test-pipe-filter-ii2-main$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_pipe_filter_ii2_main_OBJECTS) $(test_pipe_filter_ii2_main_LDADD) $(LIBS) + +test-pipe2$(EXEEXT): $(test_pipe2_OBJECTS) $(test_pipe2_DEPENDENCIES) $(EXTRA_test_pipe2_DEPENDENCIES) + @rm -f test-pipe2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_pipe2_OBJECTS) $(test_pipe2_LDADD) $(LIBS) + +test-posix_spawn1$(EXEEXT): $(test_posix_spawn1_OBJECTS) $(test_posix_spawn1_DEPENDENCIES) $(EXTRA_test_posix_spawn1_DEPENDENCIES) + @rm -f test-posix_spawn1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_posix_spawn1_OBJECTS) $(test_posix_spawn1_LDADD) $(LIBS) + +test-posix_spawn2$(EXEEXT): $(test_posix_spawn2_OBJECTS) $(test_posix_spawn2_DEPENDENCIES) $(EXTRA_test_posix_spawn2_DEPENDENCIES) + @rm -f test-posix_spawn2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_posix_spawn2_OBJECTS) $(test_posix_spawn2_LDADD) $(LIBS) + +test-posix_spawn_file_actions_addclose$(EXEEXT): $(test_posix_spawn_file_actions_addclose_OBJECTS) $(test_posix_spawn_file_actions_addclose_DEPENDENCIES) $(EXTRA_test_posix_spawn_file_actions_addclose_DEPENDENCIES) + @rm -f test-posix_spawn_file_actions_addclose$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_posix_spawn_file_actions_addclose_OBJECTS) $(test_posix_spawn_file_actions_addclose_LDADD) $(LIBS) + +test-posix_spawn_file_actions_adddup2$(EXEEXT): $(test_posix_spawn_file_actions_adddup2_OBJECTS) $(test_posix_spawn_file_actions_adddup2_DEPENDENCIES) $(EXTRA_test_posix_spawn_file_actions_adddup2_DEPENDENCIES) + @rm -f test-posix_spawn_file_actions_adddup2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_posix_spawn_file_actions_adddup2_OBJECTS) $(test_posix_spawn_file_actions_adddup2_LDADD) $(LIBS) + +test-posix_spawn_file_actions_addopen$(EXEEXT): $(test_posix_spawn_file_actions_addopen_OBJECTS) $(test_posix_spawn_file_actions_addopen_DEPENDENCIES) $(EXTRA_test_posix_spawn_file_actions_addopen_DEPENDENCIES) + @rm -f test-posix_spawn_file_actions_addopen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_posix_spawn_file_actions_addopen_OBJECTS) $(test_posix_spawn_file_actions_addopen_LDADD) $(LIBS) + +test-quotearg-simple$(EXEEXT): $(test_quotearg_simple_OBJECTS) $(test_quotearg_simple_DEPENDENCIES) $(EXTRA_test_quotearg_simple_DEPENDENCIES) + @rm -f test-quotearg-simple$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_quotearg_simple_OBJECTS) $(test_quotearg_simple_LDADD) $(LIBS) + +test-raise$(EXEEXT): $(test_raise_OBJECTS) $(test_raise_DEPENDENCIES) $(EXTRA_test_raise_DEPENDENCIES) + @rm -f test-raise$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_raise_OBJECTS) $(test_raise_LDADD) $(LIBS) + +test-rawmemchr$(EXEEXT): $(test_rawmemchr_OBJECTS) $(test_rawmemchr_DEPENDENCIES) $(EXTRA_test_rawmemchr_DEPENDENCIES) + @rm -f test-rawmemchr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_rawmemchr_OBJECTS) $(test_rawmemchr_LDADD) $(LIBS) + +test-read$(EXEEXT): $(test_read_OBJECTS) $(test_read_DEPENDENCIES) $(EXTRA_test_read_DEPENDENCIES) + @rm -f test-read$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_read_OBJECTS) $(test_read_LDADD) $(LIBS) + +test-read-file$(EXEEXT): $(test_read_file_OBJECTS) $(test_read_file_DEPENDENCIES) $(EXTRA_test_read_file_DEPENDENCIES) + @rm -f test-read-file$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_read_file_OBJECTS) $(test_read_file_LDADD) $(LIBS) + +test-readlink$(EXEEXT): $(test_readlink_OBJECTS) $(test_readlink_DEPENDENCIES) $(EXTRA_test_readlink_DEPENDENCIES) + @rm -f test-readlink$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_readlink_OBJECTS) $(test_readlink_LDADD) $(LIBS) + +test-rmdir$(EXEEXT): $(test_rmdir_OBJECTS) $(test_rmdir_DEPENDENCIES) $(EXTRA_test_rmdir_DEPENDENCIES) + @rm -f test-rmdir$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_rmdir_OBJECTS) $(test_rmdir_LDADD) $(LIBS) + +test-sameacls$(EXEEXT): $(test_sameacls_OBJECTS) $(test_sameacls_DEPENDENCIES) $(EXTRA_test_sameacls_DEPENDENCIES) + @rm -f test-sameacls$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sameacls_OBJECTS) $(test_sameacls_LDADD) $(LIBS) + +test-sched$(EXEEXT): $(test_sched_OBJECTS) $(test_sched_DEPENDENCIES) $(EXTRA_test_sched_DEPENDENCIES) + @rm -f test-sched$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sched_OBJECTS) $(test_sched_LDADD) $(LIBS) + +test-set-mode-acl$(EXEEXT): $(test_set_mode_acl_OBJECTS) $(test_set_mode_acl_DEPENDENCIES) $(EXTRA_test_set_mode_acl_DEPENDENCIES) + @rm -f test-set-mode-acl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_set_mode_acl_OBJECTS) $(test_set_mode_acl_LDADD) $(LIBS) + +test-setenv$(EXEEXT): $(test_setenv_OBJECTS) $(test_setenv_DEPENDENCIES) $(EXTRA_test_setenv_DEPENDENCIES) + @rm -f test-setenv$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_setenv_OBJECTS) $(test_setenv_LDADD) $(LIBS) + +test-setlocale1$(EXEEXT): $(test_setlocale1_OBJECTS) $(test_setlocale1_DEPENDENCIES) $(EXTRA_test_setlocale1_DEPENDENCIES) + @rm -f test-setlocale1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_setlocale1_OBJECTS) $(test_setlocale1_LDADD) $(LIBS) + +test-setlocale2$(EXEEXT): $(test_setlocale2_OBJECTS) $(test_setlocale2_DEPENDENCIES) $(EXTRA_test_setlocale2_DEPENDENCIES) + @rm -f test-setlocale2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_setlocale2_OBJECTS) $(test_setlocale2_LDADD) $(LIBS) + +test-sh-quote$(EXEEXT): $(test_sh_quote_OBJECTS) $(test_sh_quote_DEPENDENCIES) $(EXTRA_test_sh_quote_DEPENDENCIES) + @rm -f test-sh-quote$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sh_quote_OBJECTS) $(test_sh_quote_LDADD) $(LIBS) + +test-sigaction$(EXEEXT): $(test_sigaction_OBJECTS) $(test_sigaction_DEPENDENCIES) $(EXTRA_test_sigaction_DEPENDENCIES) + @rm -f test-sigaction$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sigaction_OBJECTS) $(test_sigaction_LDADD) $(LIBS) + +test-signal-h$(EXEEXT): $(test_signal_h_OBJECTS) $(test_signal_h_DEPENDENCIES) $(EXTRA_test_signal_h_DEPENDENCIES) + @rm -f test-signal-h$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_signal_h_OBJECTS) $(test_signal_h_LDADD) $(LIBS) + +test-sigpipe$(EXEEXT): $(test_sigpipe_OBJECTS) $(test_sigpipe_DEPENDENCIES) $(EXTRA_test_sigpipe_DEPENDENCIES) + @rm -f test-sigpipe$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sigpipe_OBJECTS) $(test_sigpipe_LDADD) $(LIBS) + +test-sigprocmask$(EXEEXT): $(test_sigprocmask_OBJECTS) $(test_sigprocmask_DEPENDENCIES) $(EXTRA_test_sigprocmask_DEPENDENCIES) + @rm -f test-sigprocmask$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sigprocmask_OBJECTS) $(test_sigprocmask_LDADD) $(LIBS) + +test-sleep$(EXEEXT): $(test_sleep_OBJECTS) $(test_sleep_DEPENDENCIES) $(EXTRA_test_sleep_DEPENDENCIES) + @rm -f test-sleep$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sleep_OBJECTS) $(test_sleep_LDADD) $(LIBS) + +test-snprintf$(EXEEXT): $(test_snprintf_OBJECTS) $(test_snprintf_DEPENDENCIES) $(EXTRA_test_snprintf_DEPENDENCIES) + @rm -f test-snprintf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_snprintf_OBJECTS) $(test_snprintf_LDADD) $(LIBS) + +test-spawn$(EXEEXT): $(test_spawn_OBJECTS) $(test_spawn_DEPENDENCIES) $(EXTRA_test_spawn_DEPENDENCIES) + @rm -f test-spawn$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_spawn_OBJECTS) $(test_spawn_LDADD) $(LIBS) + +test-spawn-pipe-child$(EXEEXT): $(test_spawn_pipe_child_OBJECTS) $(test_spawn_pipe_child_DEPENDENCIES) $(EXTRA_test_spawn_pipe_child_DEPENDENCIES) + @rm -f test-spawn-pipe-child$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_spawn_pipe_child_OBJECTS) $(test_spawn_pipe_child_LDADD) $(LIBS) + +test-spawn-pipe-main$(EXEEXT): $(test_spawn_pipe_main_OBJECTS) $(test_spawn_pipe_main_DEPENDENCIES) $(EXTRA_test_spawn_pipe_main_DEPENDENCIES) + @rm -f test-spawn-pipe-main$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_spawn_pipe_main_OBJECTS) $(test_spawn_pipe_main_LDADD) $(LIBS) + +test-stat$(EXEEXT): $(test_stat_OBJECTS) $(test_stat_DEPENDENCIES) $(EXTRA_test_stat_DEPENDENCIES) + @rm -f test-stat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_stat_OBJECTS) $(test_stat_LDADD) $(LIBS) + +test-stdbool$(EXEEXT): $(test_stdbool_OBJECTS) $(test_stdbool_DEPENDENCIES) $(EXTRA_test_stdbool_DEPENDENCIES) + @rm -f test-stdbool$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_stdbool_OBJECTS) $(test_stdbool_LDADD) $(LIBS) + +test-stddef$(EXEEXT): $(test_stddef_OBJECTS) $(test_stddef_DEPENDENCIES) $(EXTRA_test_stddef_DEPENDENCIES) + @rm -f test-stddef$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_stddef_OBJECTS) $(test_stddef_LDADD) $(LIBS) + +test-stdint$(EXEEXT): $(test_stdint_OBJECTS) $(test_stdint_DEPENDENCIES) $(EXTRA_test_stdint_DEPENDENCIES) + @rm -f test-stdint$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_stdint_OBJECTS) $(test_stdint_LDADD) $(LIBS) + +test-stdio$(EXEEXT): $(test_stdio_OBJECTS) $(test_stdio_DEPENDENCIES) $(EXTRA_test_stdio_DEPENDENCIES) + @rm -f test-stdio$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_stdio_OBJECTS) $(test_stdio_LDADD) $(LIBS) + +test-stdlib$(EXEEXT): $(test_stdlib_OBJECTS) $(test_stdlib_DEPENDENCIES) $(EXTRA_test_stdlib_DEPENDENCIES) + @rm -f test-stdlib$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_stdlib_OBJECTS) $(test_stdlib_LDADD) $(LIBS) + +test-strchrnul$(EXEEXT): $(test_strchrnul_OBJECTS) $(test_strchrnul_DEPENDENCIES) $(EXTRA_test_strchrnul_DEPENDENCIES) + @rm -f test-strchrnul$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_strchrnul_OBJECTS) $(test_strchrnul_LDADD) $(LIBS) + +test-strerror$(EXEEXT): $(test_strerror_OBJECTS) $(test_strerror_DEPENDENCIES) $(EXTRA_test_strerror_DEPENDENCIES) + @rm -f test-strerror$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_strerror_OBJECTS) $(test_strerror_LDADD) $(LIBS) + +test-striconv$(EXEEXT): $(test_striconv_OBJECTS) $(test_striconv_DEPENDENCIES) $(EXTRA_test_striconv_DEPENDENCIES) + @rm -f test-striconv$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_striconv_OBJECTS) $(test_striconv_LDADD) $(LIBS) + +test-striconveh$(EXEEXT): $(test_striconveh_OBJECTS) $(test_striconveh_DEPENDENCIES) $(EXTRA_test_striconveh_DEPENDENCIES) + @rm -f test-striconveh$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_striconveh_OBJECTS) $(test_striconveh_LDADD) $(LIBS) + +test-striconveha$(EXEEXT): $(test_striconveha_OBJECTS) $(test_striconveha_DEPENDENCIES) $(EXTRA_test_striconveha_DEPENDENCIES) + @rm -f test-striconveha$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_striconveha_OBJECTS) $(test_striconveha_LDADD) $(LIBS) + +test-string$(EXEEXT): $(test_string_OBJECTS) $(test_string_DEPENDENCIES) $(EXTRA_test_string_DEPENDENCIES) + @rm -f test-string$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_string_OBJECTS) $(test_string_LDADD) $(LIBS) + +test-strnlen$(EXEEXT): $(test_strnlen_OBJECTS) $(test_strnlen_DEPENDENCIES) $(EXTRA_test_strnlen_DEPENDENCIES) + @rm -f test-strnlen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_strnlen_OBJECTS) $(test_strnlen_LDADD) $(LIBS) + +test-strstr$(EXEEXT): $(test_strstr_OBJECTS) $(test_strstr_DEPENDENCIES) $(EXTRA_test_strstr_DEPENDENCIES) + @rm -f test-strstr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_strstr_OBJECTS) $(test_strstr_LDADD) $(LIBS) + +test-strtol$(EXEEXT): $(test_strtol_OBJECTS) $(test_strtol_DEPENDENCIES) $(EXTRA_test_strtol_DEPENDENCIES) + @rm -f test-strtol$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_strtol_OBJECTS) $(test_strtol_LDADD) $(LIBS) + +test-strtoul$(EXEEXT): $(test_strtoul_OBJECTS) $(test_strtoul_DEPENDENCIES) $(EXTRA_test_strtoul_DEPENDENCIES) + @rm -f test-strtoul$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_strtoul_OBJECTS) $(test_strtoul_LDADD) $(LIBS) + +test-symlink$(EXEEXT): $(test_symlink_OBJECTS) $(test_symlink_DEPENDENCIES) $(EXTRA_test_symlink_DEPENDENCIES) + @rm -f test-symlink$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_symlink_OBJECTS) $(test_symlink_LDADD) $(LIBS) + +test-sys_select$(EXEEXT): $(test_sys_select_OBJECTS) $(test_sys_select_DEPENDENCIES) $(EXTRA_test_sys_select_DEPENDENCIES) + @rm -f test-sys_select$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sys_select_OBJECTS) $(test_sys_select_LDADD) $(LIBS) + +test-sys_stat$(EXEEXT): $(test_sys_stat_OBJECTS) $(test_sys_stat_DEPENDENCIES) $(EXTRA_test_sys_stat_DEPENDENCIES) + @rm -f test-sys_stat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sys_stat_OBJECTS) $(test_sys_stat_LDADD) $(LIBS) + +test-sys_time$(EXEEXT): $(test_sys_time_OBJECTS) $(test_sys_time_DEPENDENCIES) $(EXTRA_test_sys_time_DEPENDENCIES) + @rm -f test-sys_time$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sys_time_OBJECTS) $(test_sys_time_LDADD) $(LIBS) + +test-sys_types$(EXEEXT): $(test_sys_types_OBJECTS) $(test_sys_types_DEPENDENCIES) $(EXTRA_test_sys_types_DEPENDENCIES) + @rm -f test-sys_types$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sys_types_OBJECTS) $(test_sys_types_LDADD) $(LIBS) + +test-sys_wait$(EXEEXT): $(test_sys_wait_OBJECTS) $(test_sys_wait_DEPENDENCIES) $(EXTRA_test_sys_wait_DEPENDENCIES) + @rm -f test-sys_wait$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_sys_wait_OBJECTS) $(test_sys_wait_LDADD) $(LIBS) + +test-term-ostream$(EXEEXT): $(test_term_ostream_OBJECTS) $(test_term_ostream_DEPENDENCIES) $(EXTRA_test_term_ostream_DEPENDENCIES) + @rm -f test-term-ostream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_term_ostream_OBJECTS) $(test_term_ostream_LDADD) $(LIBS) + +test-thread_create$(EXEEXT): $(test_thread_create_OBJECTS) $(test_thread_create_DEPENDENCIES) $(EXTRA_test_thread_create_DEPENDENCIES) + @rm -f test-thread_create$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_thread_create_OBJECTS) $(test_thread_create_LDADD) $(LIBS) + +test-thread_self$(EXEEXT): $(test_thread_self_OBJECTS) $(test_thread_self_DEPENDENCIES) $(EXTRA_test_thread_self_DEPENDENCIES) + @rm -f test-thread_self$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_thread_self_OBJECTS) $(test_thread_self_LDADD) $(LIBS) + +test-time$(EXEEXT): $(test_time_OBJECTS) $(test_time_DEPENDENCIES) $(EXTRA_test_time_DEPENDENCIES) + @rm -f test-time$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_time_OBJECTS) $(test_time_LDADD) $(LIBS) + +test-tls$(EXEEXT): $(test_tls_OBJECTS) $(test_tls_DEPENDENCIES) $(EXTRA_test_tls_DEPENDENCIES) + @rm -f test-tls$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_tls_OBJECTS) $(test_tls_LDADD) $(LIBS) +unistr/test-u16-mbtouc.$(OBJEXT): unistr/$(am__dirstamp) \ + unistr/$(DEPDIR)/$(am__dirstamp) + +test-u16-mbtouc$(EXEEXT): $(test_u16_mbtouc_OBJECTS) $(test_u16_mbtouc_DEPENDENCIES) $(EXTRA_test_u16_mbtouc_DEPENDENCIES) + @rm -f test-u16-mbtouc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_u16_mbtouc_OBJECTS) $(test_u16_mbtouc_LDADD) $(LIBS) +unistr/test-u8-check.$(OBJEXT): unistr/$(am__dirstamp) \ + unistr/$(DEPDIR)/$(am__dirstamp) + +test-u8-check$(EXEEXT): $(test_u8_check_OBJECTS) $(test_u8_check_DEPENDENCIES) $(EXTRA_test_u8_check_DEPENDENCIES) + @rm -f test-u8-check$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_u8_check_OBJECTS) $(test_u8_check_LDADD) $(LIBS) +unistr/test-u8-cmp.$(OBJEXT): unistr/$(am__dirstamp) \ + unistr/$(DEPDIR)/$(am__dirstamp) + +test-u8-cmp$(EXEEXT): $(test_u8_cmp_OBJECTS) $(test_u8_cmp_DEPENDENCIES) $(EXTRA_test_u8_cmp_DEPENDENCIES) + @rm -f test-u8-cmp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_u8_cmp_OBJECTS) $(test_u8_cmp_LDADD) $(LIBS) +uniconv/$(am__dirstamp): + @$(MKDIR_P) uniconv + @: > uniconv/$(am__dirstamp) +uniconv/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) uniconv/$(DEPDIR) + @: > uniconv/$(DEPDIR)/$(am__dirstamp) +uniconv/test-u8-conv-from-enc.$(OBJEXT): uniconv/$(am__dirstamp) \ + uniconv/$(DEPDIR)/$(am__dirstamp) + +test-u8-conv-from-enc$(EXEEXT): $(test_u8_conv_from_enc_OBJECTS) $(test_u8_conv_from_enc_DEPENDENCIES) $(EXTRA_test_u8_conv_from_enc_DEPENDENCIES) + @rm -f test-u8-conv-from-enc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_u8_conv_from_enc_OBJECTS) $(test_u8_conv_from_enc_LDADD) $(LIBS) +unistr/test-u8-mblen.$(OBJEXT): unistr/$(am__dirstamp) \ + unistr/$(DEPDIR)/$(am__dirstamp) + +test-u8-mblen$(EXEEXT): $(test_u8_mblen_OBJECTS) $(test_u8_mblen_DEPENDENCIES) $(EXTRA_test_u8_mblen_DEPENDENCIES) + @rm -f test-u8-mblen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_u8_mblen_OBJECTS) $(test_u8_mblen_LDADD) $(LIBS) +unistr/test-u8-mbtoucr.$(OBJEXT): unistr/$(am__dirstamp) \ + unistr/$(DEPDIR)/$(am__dirstamp) + +test-u8-mbtoucr$(EXEEXT): $(test_u8_mbtoucr_OBJECTS) $(test_u8_mbtoucr_DEPENDENCIES) $(EXTRA_test_u8_mbtoucr_DEPENDENCIES) + @rm -f test-u8-mbtoucr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_u8_mbtoucr_OBJECTS) $(test_u8_mbtoucr_LDADD) $(LIBS) +unistr/test-u8-prev.$(OBJEXT): unistr/$(am__dirstamp) \ + unistr/$(DEPDIR)/$(am__dirstamp) + +test-u8-prev$(EXEEXT): $(test_u8_prev_OBJECTS) $(test_u8_prev_DEPENDENCIES) $(EXTRA_test_u8_prev_DEPENDENCIES) + @rm -f test-u8-prev$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_u8_prev_OBJECTS) $(test_u8_prev_LDADD) $(LIBS) +unistr/test-u8-strlen.$(OBJEXT): unistr/$(am__dirstamp) \ + unistr/$(DEPDIR)/$(am__dirstamp) + +test-u8-strlen$(EXEEXT): $(test_u8_strlen_OBJECTS) $(test_u8_strlen_DEPENDENCIES) $(EXTRA_test_u8_strlen_DEPENDENCIES) + @rm -f test-u8-strlen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_u8_strlen_OBJECTS) $(test_u8_strlen_LDADD) $(LIBS) +unistr/test-u8-uctomb.$(OBJEXT): unistr/$(am__dirstamp) \ + unistr/$(DEPDIR)/$(am__dirstamp) + +test-u8-uctomb$(EXEEXT): $(test_u8_uctomb_OBJECTS) $(test_u8_uctomb_DEPENDENCIES) $(EXTRA_test_u8_uctomb_DEPENDENCIES) + @rm -f test-u8-uctomb$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_u8_uctomb_OBJECTS) $(test_u8_uctomb_LDADD) $(LIBS) +unilbrk/$(am__dirstamp): + @$(MKDIR_P) unilbrk + @: > unilbrk/$(am__dirstamp) +unilbrk/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) unilbrk/$(DEPDIR) + @: > unilbrk/$(DEPDIR)/$(am__dirstamp) +unilbrk/test-u8-width-linebreaks.$(OBJEXT): unilbrk/$(am__dirstamp) \ + unilbrk/$(DEPDIR)/$(am__dirstamp) + +test-u8-width-linebreaks$(EXEEXT): $(test_u8_width_linebreaks_OBJECTS) $(test_u8_width_linebreaks_DEPENDENCIES) $(EXTRA_test_u8_width_linebreaks_DEPENDENCIES) + @rm -f test-u8-width-linebreaks$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_u8_width_linebreaks_OBJECTS) $(test_u8_width_linebreaks_LDADD) $(LIBS) +uniname/$(am__dirstamp): + @$(MKDIR_P) uniname + @: > uniname/$(am__dirstamp) +uniname/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) uniname/$(DEPDIR) + @: > uniname/$(DEPDIR)/$(am__dirstamp) +uniname/test-uninames.$(OBJEXT): uniname/$(am__dirstamp) \ + uniname/$(DEPDIR)/$(am__dirstamp) + +test-uninames$(EXEEXT): $(test_uninames_OBJECTS) $(test_uninames_DEPENDENCIES) $(EXTRA_test_uninames_DEPENDENCIES) + @rm -f test-uninames$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_uninames_OBJECTS) $(test_uninames_LDADD) $(LIBS) + +test-unistd$(EXEEXT): $(test_unistd_OBJECTS) $(test_unistd_DEPENDENCIES) $(EXTRA_test_unistd_DEPENDENCIES) + @rm -f test-unistd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_unistd_OBJECTS) $(test_unistd_LDADD) $(LIBS) + +test-unsetenv$(EXEEXT): $(test_unsetenv_OBJECTS) $(test_unsetenv_DEPENDENCIES) $(EXTRA_test_unsetenv_DEPENDENCIES) + @rm -f test-unsetenv$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_unsetenv_OBJECTS) $(test_unsetenv_LDADD) $(LIBS) + +test-vasnprintf$(EXEEXT): $(test_vasnprintf_OBJECTS) $(test_vasnprintf_DEPENDENCIES) $(EXTRA_test_vasnprintf_DEPENDENCIES) + @rm -f test-vasnprintf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_vasnprintf_OBJECTS) $(test_vasnprintf_LDADD) $(LIBS) + +test-vasprintf$(EXEEXT): $(test_vasprintf_OBJECTS) $(test_vasprintf_DEPENDENCIES) $(EXTRA_test_vasprintf_DEPENDENCIES) + @rm -f test-vasprintf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_vasprintf_OBJECTS) $(test_vasprintf_LDADD) $(LIBS) + +test-verify$(EXEEXT): $(test_verify_OBJECTS) $(test_verify_DEPENDENCIES) $(EXTRA_test_verify_DEPENDENCIES) + @rm -f test-verify$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_verify_OBJECTS) $(test_verify_LDADD) $(LIBS) + +test-vsnprintf$(EXEEXT): $(test_vsnprintf_OBJECTS) $(test_vsnprintf_DEPENDENCIES) $(EXTRA_test_vsnprintf_DEPENDENCIES) + @rm -f test-vsnprintf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_vsnprintf_OBJECTS) $(test_vsnprintf_LDADD) $(LIBS) + +test-wchar$(EXEEXT): $(test_wchar_OBJECTS) $(test_wchar_DEPENDENCIES) $(EXTRA_test_wchar_DEPENDENCIES) + @rm -f test-wchar$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_wchar_OBJECTS) $(test_wchar_LDADD) $(LIBS) + +test-wcrtomb$(EXEEXT): $(test_wcrtomb_OBJECTS) $(test_wcrtomb_DEPENDENCIES) $(EXTRA_test_wcrtomb_DEPENDENCIES) + @rm -f test-wcrtomb$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_wcrtomb_OBJECTS) $(test_wcrtomb_LDADD) $(LIBS) + +test-wcrtomb-w32$(EXEEXT): $(test_wcrtomb_w32_OBJECTS) $(test_wcrtomb_w32_DEPENDENCIES) $(EXTRA_test_wcrtomb_w32_DEPENDENCIES) + @rm -f test-wcrtomb-w32$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_wcrtomb_w32_OBJECTS) $(test_wcrtomb_w32_LDADD) $(LIBS) + +test-wctype-h$(EXEEXT): $(test_wctype_h_OBJECTS) $(test_wctype_h_DEPENDENCIES) $(EXTRA_test_wctype_h_DEPENDENCIES) + @rm -f test-wctype-h$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_wctype_h_OBJECTS) $(test_wctype_h_LDADD) $(LIBS) + +test-wcwidth$(EXEEXT): $(test_wcwidth_OBJECTS) $(test_wcwidth_DEPENDENCIES) $(EXTRA_test_wcwidth_DEPENDENCIES) + @rm -f test-wcwidth$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_wcwidth_OBJECTS) $(test_wcwidth_LDADD) $(LIBS) + +test-write$(EXEEXT): $(test_write_OBJECTS) $(test_write_DEPENDENCIES) $(EXTRA_test_write_DEPENDENCIES) + @rm -f test-write$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_write_OBJECTS) $(test_write_LDADD) $(LIBS) + +test-xalloc-die$(EXEEXT): $(test_xalloc_die_OBJECTS) $(test_xalloc_die_DEPENDENCIES) $(EXTRA_test_xalloc_die_DEPENDENCIES) + @rm -f test-xalloc-die$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_xalloc_die_OBJECTS) $(test_xalloc_die_LDADD) $(LIBS) + +test-xvasprintf$(EXEEXT): $(test_xvasprintf_OBJECTS) $(test_xvasprintf_DEPENDENCIES) $(EXTRA_test_xvasprintf_DEPENDENCIES) + @rm -f test-xvasprintf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_xvasprintf_OBJECTS) $(test_xvasprintf_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f glthread/*.$(OBJEXT) + -rm -f uniconv/*.$(OBJEXT) + -rm -f unilbrk/*.$(OBJEXT) + -rm -f uniname/*.$(OBJEXT) + -rm -f unistr/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btowc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdopen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftell.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftello.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcwd-lgpl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpagesize.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbtowc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putenv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read-file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-alignof.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-alloca-opt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-areadlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-argmatch.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-array_list.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-atexit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-binary-io.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-btowc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-byteswap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-ctype.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strcasecmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strcasestr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strncasecmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strstr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-canonicalize-lgpl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-cloexec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-copy-acl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-copy-file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dirent.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dup-safer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dup2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-environ.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-errno.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fcntl-h.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fcntl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fdopen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fgetc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-file-has-acl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-float.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fnmatch.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fopen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fputc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fstrcmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ftell.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ftell3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ftello.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ftello3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ftello4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fwrite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-getcwd-lgpl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-getdelim.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-getdtablesize.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-getline.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-getopt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-gettimeofday.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iconv-h.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iconv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ignore-value.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-intprops.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-inttypes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iswblank.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-linkedhash_list.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-locale.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-localename.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-lock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-lstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-malloca.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbrtowc-w32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbrtowc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbsinit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbsrtowcs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbsstr1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbsstr2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbsstr3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-memchr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pathmax.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pipe-filter-ii1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pipe-filter-ii2-child.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pipe-filter-ii2-main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pipe2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-posix_spawn1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-posix_spawn2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-posix_spawn_file_actions_addclose.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-posix_spawn_file_actions_adddup2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-posix_spawn_file_actions_addopen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-quotearg-simple.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-raise.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-rawmemchr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-read-file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-readlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-rmdir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sameacls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sched.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-set-mode-acl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setenv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setlocale1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setlocale2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sh-quote.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sigaction.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-signal-h.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sigpipe.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sigprocmask.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sleep.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-snprintf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-spawn-pipe-child.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-spawn-pipe-main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-spawn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdbool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stddef.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdio.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdlib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strchrnul.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strerror.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-striconv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-striconveh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-striconveha.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-string.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strnlen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strstr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strtol.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strtoul.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-symlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sys_select.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sys_stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sys_time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sys_types.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sys_wait.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-term-ostream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-thread_create.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-thread_self.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-tls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unistd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unsetenv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-vasnprintf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-vasprintf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-verify.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-vsnprintf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wchar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wcrtomb-w32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wcrtomb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wctype-h.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wcwidth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-xalloc-die.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-xvasprintf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wcrtomb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wctob.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wctomb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@glthread/$(DEPDIR)/thread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@uniconv/$(DEPDIR)/test-u8-conv-from-enc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unilbrk/$(DEPDIR)/test-u8-width-linebreaks.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@uniname/$(DEPDIR)/test-uninames.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u16-mbtouc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-check.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-cmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-mblen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-mbtoucr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-prev.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-strlen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/test-u8-uctomb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/u8-cmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unistr/$(DEPDIR)/u8-strlen.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LIBRARIES) $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +test-file-has-acl.sh.log: test-file-has-acl.sh + @p='test-file-has-acl.sh'; \ + b='test-file-has-acl.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-file-has-acl-1.sh.log: test-file-has-acl-1.sh + @p='test-file-has-acl-1.sh'; \ + b='test-file-has-acl-1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-file-has-acl-2.sh.log: test-file-has-acl-2.sh + @p='test-file-has-acl-2.sh'; \ + b='test-file-has-acl-2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-set-mode-acl.sh.log: test-set-mode-acl.sh + @p='test-set-mode-acl.sh'; \ + b='test-set-mode-acl.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-set-mode-acl-1.sh.log: test-set-mode-acl-1.sh + @p='test-set-mode-acl-1.sh'; \ + b='test-set-mode-acl-1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-set-mode-acl-2.sh.log: test-set-mode-acl-2.sh + @p='test-set-mode-acl-2.sh'; \ + b='test-set-mode-acl-2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-copy-acl.sh.log: test-copy-acl.sh + @p='test-copy-acl.sh'; \ + b='test-copy-acl.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-copy-acl-1.sh.log: test-copy-acl-1.sh + @p='test-copy-acl-1.sh'; \ + b='test-copy-acl-1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-copy-acl-2.sh.log: test-copy-acl-2.sh + @p='test-copy-acl-2.sh'; \ + b='test-copy-acl-2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-alignof.log: test-alignof$(EXEEXT) + @p='test-alignof$(EXEEXT)'; \ + b='test-alignof'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-alloca-opt.log: test-alloca-opt$(EXEEXT) + @p='test-alloca-opt$(EXEEXT)'; \ + b='test-alloca-opt'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-areadlink.log: test-areadlink$(EXEEXT) + @p='test-areadlink$(EXEEXT)'; \ + b='test-areadlink'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-argmatch.log: test-argmatch$(EXEEXT) + @p='test-argmatch$(EXEEXT)'; \ + b='test-argmatch'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-array_list.log: test-array_list$(EXEEXT) + @p='test-array_list$(EXEEXT)'; \ + b='test-array_list'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-atexit.sh.log: test-atexit.sh + @p='test-atexit.sh'; \ + b='test-atexit.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-binary-io.sh.log: test-binary-io.sh + @p='test-binary-io.sh'; \ + b='test-binary-io.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-btowc1.sh.log: test-btowc1.sh + @p='test-btowc1.sh'; \ + b='test-btowc1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-btowc2.sh.log: test-btowc2.sh + @p='test-btowc2.sh'; \ + b='test-btowc2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-byteswap.log: test-byteswap$(EXEEXT) + @p='test-byteswap$(EXEEXT)'; \ + b='test-byteswap'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-c-ctype.log: test-c-ctype$(EXEEXT) + @p='test-c-ctype$(EXEEXT)'; \ + b='test-c-ctype'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-c-strcase.sh.log: test-c-strcase.sh + @p='test-c-strcase.sh'; \ + b='test-c-strcase.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-c-strcasestr.log: test-c-strcasestr$(EXEEXT) + @p='test-c-strcasestr$(EXEEXT)'; \ + b='test-c-strcasestr'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-c-strstr.log: test-c-strstr$(EXEEXT) + @p='test-c-strstr$(EXEEXT)'; \ + b='test-c-strstr'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-canonicalize-lgpl.log: test-canonicalize-lgpl$(EXEEXT) + @p='test-canonicalize-lgpl$(EXEEXT)'; \ + b='test-canonicalize-lgpl'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-cloexec.log: test-cloexec$(EXEEXT) + @p='test-cloexec$(EXEEXT)'; \ + b='test-cloexec'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-close.log: test-close$(EXEEXT) + @p='test-close$(EXEEXT)'; \ + b='test-close'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-copy-file.sh.log: test-copy-file.sh + @p='test-copy-file.sh'; \ + b='test-copy-file.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-copy-file-1.sh.log: test-copy-file-1.sh + @p='test-copy-file-1.sh'; \ + b='test-copy-file-1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-copy-file-2.sh.log: test-copy-file-2.sh + @p='test-copy-file-2.sh'; \ + b='test-copy-file-2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-dirent.log: test-dirent$(EXEEXT) + @p='test-dirent$(EXEEXT)'; \ + b='test-dirent'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-dup.log: test-dup$(EXEEXT) + @p='test-dup$(EXEEXT)'; \ + b='test-dup'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-dup2.log: test-dup2$(EXEEXT) + @p='test-dup2$(EXEEXT)'; \ + b='test-dup2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-environ.log: test-environ$(EXEEXT) + @p='test-environ$(EXEEXT)'; \ + b='test-environ'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-errno.log: test-errno$(EXEEXT) + @p='test-errno$(EXEEXT)'; \ + b='test-errno'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fcntl-h.log: test-fcntl-h$(EXEEXT) + @p='test-fcntl-h$(EXEEXT)'; \ + b='test-fcntl-h'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fcntl.log: test-fcntl$(EXEEXT) + @p='test-fcntl$(EXEEXT)'; \ + b='test-fcntl'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fdopen.log: test-fdopen$(EXEEXT) + @p='test-fdopen$(EXEEXT)'; \ + b='test-fdopen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fgetc.log: test-fgetc$(EXEEXT) + @p='test-fgetc$(EXEEXT)'; \ + b='test-fgetc'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-float.log: test-float$(EXEEXT) + @p='test-float$(EXEEXT)'; \ + b='test-float'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fnmatch.log: test-fnmatch$(EXEEXT) + @p='test-fnmatch$(EXEEXT)'; \ + b='test-fnmatch'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fopen.log: test-fopen$(EXEEXT) + @p='test-fopen$(EXEEXT)'; \ + b='test-fopen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fputc.log: test-fputc$(EXEEXT) + @p='test-fputc$(EXEEXT)'; \ + b='test-fputc'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fread.log: test-fread$(EXEEXT) + @p='test-fread$(EXEEXT)'; \ + b='test-fread'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fstat.log: test-fstat$(EXEEXT) + @p='test-fstat$(EXEEXT)'; \ + b='test-fstat'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fstrcmp.log: test-fstrcmp$(EXEEXT) + @p='test-fstrcmp$(EXEEXT)'; \ + b='test-fstrcmp'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ftell.sh.log: test-ftell.sh + @p='test-ftell.sh'; \ + b='test-ftell.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ftell2.sh.log: test-ftell2.sh + @p='test-ftell2.sh'; \ + b='test-ftell2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ftell3.log: test-ftell3$(EXEEXT) + @p='test-ftell3$(EXEEXT)'; \ + b='test-ftell3'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ftello.sh.log: test-ftello.sh + @p='test-ftello.sh'; \ + b='test-ftello.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ftello2.sh.log: test-ftello2.sh + @p='test-ftello2.sh'; \ + b='test-ftello2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ftello3.log: test-ftello3$(EXEEXT) + @p='test-ftello3$(EXEEXT)'; \ + b='test-ftello3'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ftello4.sh.log: test-ftello4.sh + @p='test-ftello4.sh'; \ + b='test-ftello4.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-fwrite.log: test-fwrite$(EXEEXT) + @p='test-fwrite$(EXEEXT)'; \ + b='test-fwrite'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-getcwd-lgpl.log: test-getcwd-lgpl$(EXEEXT) + @p='test-getcwd-lgpl$(EXEEXT)'; \ + b='test-getcwd-lgpl'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-getdelim.log: test-getdelim$(EXEEXT) + @p='test-getdelim$(EXEEXT)'; \ + b='test-getdelim'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-getdtablesize.log: test-getdtablesize$(EXEEXT) + @p='test-getdtablesize$(EXEEXT)'; \ + b='test-getdtablesize'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-getline.log: test-getline$(EXEEXT) + @p='test-getline$(EXEEXT)'; \ + b='test-getline'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-getopt.log: test-getopt$(EXEEXT) + @p='test-getopt$(EXEEXT)'; \ + b='test-getopt'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-gettimeofday.log: test-gettimeofday$(EXEEXT) + @p='test-gettimeofday$(EXEEXT)'; \ + b='test-gettimeofday'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-iconv-h.log: test-iconv-h$(EXEEXT) + @p='test-iconv-h$(EXEEXT)'; \ + b='test-iconv-h'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-iconv.log: test-iconv$(EXEEXT) + @p='test-iconv$(EXEEXT)'; \ + b='test-iconv'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-ignore-value.log: test-ignore-value$(EXEEXT) + @p='test-ignore-value$(EXEEXT)'; \ + b='test-ignore-value'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-intprops.log: test-intprops$(EXEEXT) + @p='test-intprops$(EXEEXT)'; \ + b='test-intprops'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-inttypes.log: test-inttypes$(EXEEXT) + @p='test-inttypes$(EXEEXT)'; \ + b='test-inttypes'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-iswblank.log: test-iswblank$(EXEEXT) + @p='test-iswblank$(EXEEXT)'; \ + b='test-iswblank'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-linkedhash_list.log: test-linkedhash_list$(EXEEXT) + @p='test-linkedhash_list$(EXEEXT)'; \ + b='test-linkedhash_list'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-locale.log: test-locale$(EXEEXT) + @p='test-locale$(EXEEXT)'; \ + b='test-locale'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-localename.log: test-localename$(EXEEXT) + @p='test-localename$(EXEEXT)'; \ + b='test-localename'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-lock.log: test-lock$(EXEEXT) + @p='test-lock$(EXEEXT)'; \ + b='test-lock'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-lseek.sh.log: test-lseek.sh + @p='test-lseek.sh'; \ + b='test-lseek.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-lstat.log: test-lstat$(EXEEXT) + @p='test-lstat$(EXEEXT)'; \ + b='test-lstat'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-malloca.log: test-malloca$(EXEEXT) + @p='test-malloca$(EXEEXT)'; \ + b='test-malloca'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbrtowc1.sh.log: test-mbrtowc1.sh + @p='test-mbrtowc1.sh'; \ + b='test-mbrtowc1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbrtowc2.sh.log: test-mbrtowc2.sh + @p='test-mbrtowc2.sh'; \ + b='test-mbrtowc2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbrtowc3.sh.log: test-mbrtowc3.sh + @p='test-mbrtowc3.sh'; \ + b='test-mbrtowc3.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbrtowc4.sh.log: test-mbrtowc4.sh + @p='test-mbrtowc4.sh'; \ + b='test-mbrtowc4.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbrtowc-w32-1.sh.log: test-mbrtowc-w32-1.sh + @p='test-mbrtowc-w32-1.sh'; \ + b='test-mbrtowc-w32-1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbrtowc-w32-2.sh.log: test-mbrtowc-w32-2.sh + @p='test-mbrtowc-w32-2.sh'; \ + b='test-mbrtowc-w32-2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbrtowc-w32-3.sh.log: test-mbrtowc-w32-3.sh + @p='test-mbrtowc-w32-3.sh'; \ + b='test-mbrtowc-w32-3.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbrtowc-w32-4.sh.log: test-mbrtowc-w32-4.sh + @p='test-mbrtowc-w32-4.sh'; \ + b='test-mbrtowc-w32-4.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbrtowc-w32-5.sh.log: test-mbrtowc-w32-5.sh + @p='test-mbrtowc-w32-5.sh'; \ + b='test-mbrtowc-w32-5.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbsinit.sh.log: test-mbsinit.sh + @p='test-mbsinit.sh'; \ + b='test-mbsinit.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbsrtowcs1.sh.log: test-mbsrtowcs1.sh + @p='test-mbsrtowcs1.sh'; \ + b='test-mbsrtowcs1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbsrtowcs2.sh.log: test-mbsrtowcs2.sh + @p='test-mbsrtowcs2.sh'; \ + b='test-mbsrtowcs2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbsrtowcs3.sh.log: test-mbsrtowcs3.sh + @p='test-mbsrtowcs3.sh'; \ + b='test-mbsrtowcs3.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbsrtowcs4.sh.log: test-mbsrtowcs4.sh + @p='test-mbsrtowcs4.sh'; \ + b='test-mbsrtowcs4.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbsstr1.log: test-mbsstr1$(EXEEXT) + @p='test-mbsstr1$(EXEEXT)'; \ + b='test-mbsstr1'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbsstr2.sh.log: test-mbsstr2.sh + @p='test-mbsstr2.sh'; \ + b='test-mbsstr2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-mbsstr3.sh.log: test-mbsstr3.sh + @p='test-mbsstr3.sh'; \ + b='test-mbsstr3.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-memchr.log: test-memchr$(EXEEXT) + @p='test-memchr$(EXEEXT)'; \ + b='test-memchr'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-open.log: test-open$(EXEEXT) + @p='test-open$(EXEEXT)'; \ + b='test-open'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-pathmax.log: test-pathmax$(EXEEXT) + @p='test-pathmax$(EXEEXT)'; \ + b='test-pathmax'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-pipe-filter-ii1.sh.log: test-pipe-filter-ii1.sh + @p='test-pipe-filter-ii1.sh'; \ + b='test-pipe-filter-ii1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-pipe-filter-ii2.sh.log: test-pipe-filter-ii2.sh + @p='test-pipe-filter-ii2.sh'; \ + b='test-pipe-filter-ii2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-pipe2.log: test-pipe2$(EXEEXT) + @p='test-pipe2$(EXEEXT)'; \ + b='test-pipe2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-posix_spawn_file_actions_addclose.log: test-posix_spawn_file_actions_addclose$(EXEEXT) + @p='test-posix_spawn_file_actions_addclose$(EXEEXT)'; \ + b='test-posix_spawn_file_actions_addclose'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-posix_spawn_file_actions_adddup2.log: test-posix_spawn_file_actions_adddup2$(EXEEXT) + @p='test-posix_spawn_file_actions_adddup2$(EXEEXT)'; \ + b='test-posix_spawn_file_actions_adddup2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-posix_spawn_file_actions_addopen.log: test-posix_spawn_file_actions_addopen$(EXEEXT) + @p='test-posix_spawn_file_actions_addopen$(EXEEXT)'; \ + b='test-posix_spawn_file_actions_addopen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-posix_spawn1.log: test-posix_spawn1$(EXEEXT) + @p='test-posix_spawn1$(EXEEXT)'; \ + b='test-posix_spawn1'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-posix_spawn2.log: test-posix_spawn2$(EXEEXT) + @p='test-posix_spawn2$(EXEEXT)'; \ + b='test-posix_spawn2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-quotearg-simple.log: test-quotearg-simple$(EXEEXT) + @p='test-quotearg-simple$(EXEEXT)'; \ + b='test-quotearg-simple'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-raise.log: test-raise$(EXEEXT) + @p='test-raise$(EXEEXT)'; \ + b='test-raise'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-rawmemchr.log: test-rawmemchr$(EXEEXT) + @p='test-rawmemchr$(EXEEXT)'; \ + b='test-rawmemchr'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-read-file.log: test-read-file$(EXEEXT) + @p='test-read-file$(EXEEXT)'; \ + b='test-read-file'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-read.log: test-read$(EXEEXT) + @p='test-read$(EXEEXT)'; \ + b='test-read'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-readlink.log: test-readlink$(EXEEXT) + @p='test-readlink$(EXEEXT)'; \ + b='test-readlink'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-rmdir.log: test-rmdir$(EXEEXT) + @p='test-rmdir$(EXEEXT)'; \ + b='test-rmdir'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sched.log: test-sched$(EXEEXT) + @p='test-sched$(EXEEXT)'; \ + b='test-sched'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-setenv.log: test-setenv$(EXEEXT) + @p='test-setenv$(EXEEXT)'; \ + b='test-setenv'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-setlocale1.sh.log: test-setlocale1.sh + @p='test-setlocale1.sh'; \ + b='test-setlocale1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-setlocale2.sh.log: test-setlocale2.sh + @p='test-setlocale2.sh'; \ + b='test-setlocale2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sh-quote.log: test-sh-quote$(EXEEXT) + @p='test-sh-quote$(EXEEXT)'; \ + b='test-sh-quote'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sigaction.log: test-sigaction$(EXEEXT) + @p='test-sigaction$(EXEEXT)'; \ + b='test-sigaction'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-signal-h.log: test-signal-h$(EXEEXT) + @p='test-signal-h$(EXEEXT)'; \ + b='test-signal-h'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sigpipe.sh.log: test-sigpipe.sh + @p='test-sigpipe.sh'; \ + b='test-sigpipe.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sigprocmask.log: test-sigprocmask$(EXEEXT) + @p='test-sigprocmask$(EXEEXT)'; \ + b='test-sigprocmask'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sleep.log: test-sleep$(EXEEXT) + @p='test-sleep$(EXEEXT)'; \ + b='test-sleep'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-snprintf.log: test-snprintf$(EXEEXT) + @p='test-snprintf$(EXEEXT)'; \ + b='test-snprintf'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-spawn-pipe.sh.log: test-spawn-pipe.sh + @p='test-spawn-pipe.sh'; \ + b='test-spawn-pipe.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-spawn.log: test-spawn$(EXEEXT) + @p='test-spawn$(EXEEXT)'; \ + b='test-spawn'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-stat.log: test-stat$(EXEEXT) + @p='test-stat$(EXEEXT)'; \ + b='test-stat'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-stdbool.log: test-stdbool$(EXEEXT) + @p='test-stdbool$(EXEEXT)'; \ + b='test-stdbool'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-stddef.log: test-stddef$(EXEEXT) + @p='test-stddef$(EXEEXT)'; \ + b='test-stddef'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-stdint.log: test-stdint$(EXEEXT) + @p='test-stdint$(EXEEXT)'; \ + b='test-stdint'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-stdio.log: test-stdio$(EXEEXT) + @p='test-stdio$(EXEEXT)'; \ + b='test-stdio'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-stdlib.log: test-stdlib$(EXEEXT) + @p='test-stdlib$(EXEEXT)'; \ + b='test-stdlib'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-strchrnul.log: test-strchrnul$(EXEEXT) + @p='test-strchrnul$(EXEEXT)'; \ + b='test-strchrnul'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-strerror.log: test-strerror$(EXEEXT) + @p='test-strerror$(EXEEXT)'; \ + b='test-strerror'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-striconv.log: test-striconv$(EXEEXT) + @p='test-striconv$(EXEEXT)'; \ + b='test-striconv'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-striconveh.log: test-striconveh$(EXEEXT) + @p='test-striconveh$(EXEEXT)'; \ + b='test-striconveh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-striconveha.log: test-striconveha$(EXEEXT) + @p='test-striconveha$(EXEEXT)'; \ + b='test-striconveha'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-string.log: test-string$(EXEEXT) + @p='test-string$(EXEEXT)'; \ + b='test-string'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-strnlen.log: test-strnlen$(EXEEXT) + @p='test-strnlen$(EXEEXT)'; \ + b='test-strnlen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-strstr.log: test-strstr$(EXEEXT) + @p='test-strstr$(EXEEXT)'; \ + b='test-strstr'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-strtol.log: test-strtol$(EXEEXT) + @p='test-strtol$(EXEEXT)'; \ + b='test-strtol'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-strtoul.log: test-strtoul$(EXEEXT) + @p='test-strtoul$(EXEEXT)'; \ + b='test-strtoul'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-symlink.log: test-symlink$(EXEEXT) + @p='test-symlink$(EXEEXT)'; \ + b='test-symlink'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sys_select.log: test-sys_select$(EXEEXT) + @p='test-sys_select$(EXEEXT)'; \ + b='test-sys_select'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sys_stat.log: test-sys_stat$(EXEEXT) + @p='test-sys_stat$(EXEEXT)'; \ + b='test-sys_stat'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sys_time.log: test-sys_time$(EXEEXT) + @p='test-sys_time$(EXEEXT)'; \ + b='test-sys_time'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sys_types.log: test-sys_types$(EXEEXT) + @p='test-sys_types$(EXEEXT)'; \ + b='test-sys_types'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-sys_wait.log: test-sys_wait$(EXEEXT) + @p='test-sys_wait$(EXEEXT)'; \ + b='test-sys_wait'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-term-ostream-xterm.log: test-term-ostream-xterm + @p='test-term-ostream-xterm'; \ + b='test-term-ostream-xterm'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-init.sh.log: test-init.sh + @p='test-init.sh'; \ + b='test-init.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-thread_self.log: test-thread_self$(EXEEXT) + @p='test-thread_self$(EXEEXT)'; \ + b='test-thread_self'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-thread_create.log: test-thread_create$(EXEEXT) + @p='test-thread_create$(EXEEXT)'; \ + b='test-thread_create'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-time.log: test-time$(EXEEXT) + @p='test-time$(EXEEXT)'; \ + b='test-time'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-tls.log: test-tls$(EXEEXT) + @p='test-tls$(EXEEXT)'; \ + b='test-tls'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-u8-conv-from-enc.log: test-u8-conv-from-enc$(EXEEXT) + @p='test-u8-conv-from-enc$(EXEEXT)'; \ + b='test-u8-conv-from-enc'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-u8-width-linebreaks.log: test-u8-width-linebreaks$(EXEEXT) + @p='test-u8-width-linebreaks$(EXEEXT)'; \ + b='test-u8-width-linebreaks'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +uniname/test-uninames.sh.log: uniname/test-uninames.sh + @p='uniname/test-uninames.sh'; \ + b='uniname/test-uninames.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-dup-safer.log: test-dup-safer$(EXEEXT) + @p='test-dup-safer$(EXEEXT)'; \ + b='test-dup-safer'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-unistd.log: test-unistd$(EXEEXT) + @p='test-unistd$(EXEEXT)'; \ + b='test-unistd'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-u16-mbtouc.log: test-u16-mbtouc$(EXEEXT) + @p='test-u16-mbtouc$(EXEEXT)'; \ + b='test-u16-mbtouc'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-u8-check.log: test-u8-check$(EXEEXT) + @p='test-u8-check$(EXEEXT)'; \ + b='test-u8-check'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-u8-cmp.log: test-u8-cmp$(EXEEXT) + @p='test-u8-cmp$(EXEEXT)'; \ + b='test-u8-cmp'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-u8-mblen.log: test-u8-mblen$(EXEEXT) + @p='test-u8-mblen$(EXEEXT)'; \ + b='test-u8-mblen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-u8-mbtoucr.log: test-u8-mbtoucr$(EXEEXT) + @p='test-u8-mbtoucr$(EXEEXT)'; \ + b='test-u8-mbtoucr'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-u8-prev.log: test-u8-prev$(EXEEXT) + @p='test-u8-prev$(EXEEXT)'; \ + b='test-u8-prev'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-u8-strlen.log: test-u8-strlen$(EXEEXT) + @p='test-u8-strlen$(EXEEXT)'; \ + b='test-u8-strlen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-u8-uctomb.log: test-u8-uctomb$(EXEEXT) + @p='test-u8-uctomb$(EXEEXT)'; \ + b='test-u8-uctomb'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-unsetenv.log: test-unsetenv$(EXEEXT) + @p='test-unsetenv$(EXEEXT)'; \ + b='test-unsetenv'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-vasnprintf.log: test-vasnprintf$(EXEEXT) + @p='test-vasnprintf$(EXEEXT)'; \ + b='test-vasnprintf'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-vasprintf.log: test-vasprintf$(EXEEXT) + @p='test-vasprintf$(EXEEXT)'; \ + b='test-vasprintf'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-verify.log: test-verify$(EXEEXT) + @p='test-verify$(EXEEXT)'; \ + b='test-verify'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-verify.sh.log: test-verify.sh + @p='test-verify.sh'; \ + b='test-verify.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-vsnprintf.log: test-vsnprintf$(EXEEXT) + @p='test-vsnprintf$(EXEEXT)'; \ + b='test-vsnprintf'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-wchar.log: test-wchar$(EXEEXT) + @p='test-wchar$(EXEEXT)'; \ + b='test-wchar'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-wcrtomb.sh.log: test-wcrtomb.sh + @p='test-wcrtomb.sh'; \ + b='test-wcrtomb.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-wcrtomb-w32-1.sh.log: test-wcrtomb-w32-1.sh + @p='test-wcrtomb-w32-1.sh'; \ + b='test-wcrtomb-w32-1.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-wcrtomb-w32-2.sh.log: test-wcrtomb-w32-2.sh + @p='test-wcrtomb-w32-2.sh'; \ + b='test-wcrtomb-w32-2.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-wcrtomb-w32-3.sh.log: test-wcrtomb-w32-3.sh + @p='test-wcrtomb-w32-3.sh'; \ + b='test-wcrtomb-w32-3.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-wcrtomb-w32-4.sh.log: test-wcrtomb-w32-4.sh + @p='test-wcrtomb-w32-4.sh'; \ + b='test-wcrtomb-w32-4.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-wcrtomb-w32-5.sh.log: test-wcrtomb-w32-5.sh + @p='test-wcrtomb-w32-5.sh'; \ + b='test-wcrtomb-w32-5.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-wctype-h.log: test-wctype-h$(EXEEXT) + @p='test-wctype-h$(EXEEXT)'; \ + b='test-wctype-h'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-wcwidth.log: test-wcwidth$(EXEEXT) + @p='test-wcwidth$(EXEEXT)'; \ + b='test-wcwidth'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-write.log: test-write$(EXEEXT) + @p='test-write$(EXEEXT)'; \ + b='test-write'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-xalloc-die.sh.log: test-xalloc-die.sh + @p='test-xalloc-die.sh'; \ + b='test-xalloc-die.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-xvasprintf.log: test-xvasprintf$(EXEEXT) + @p='test-xvasprintf$(EXEEXT)'; \ + b='test-xvasprintf'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f glthread/$(DEPDIR)/$(am__dirstamp) + -rm -f glthread/$(am__dirstamp) + -rm -f uniconv/$(DEPDIR)/$(am__dirstamp) + -rm -f uniconv/$(am__dirstamp) + -rm -f unilbrk/$(DEPDIR)/$(am__dirstamp) + -rm -f unilbrk/$(am__dirstamp) + -rm -f uniname/$(DEPDIR)/$(am__dirstamp) + -rm -f uniname/$(am__dirstamp) + -rm -f unistr/$(DEPDIR)/$(am__dirstamp) + -rm -f unistr/$(am__dirstamp) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-libtool clean-local clean-noinstLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) glthread/$(DEPDIR) uniconv/$(DEPDIR) unilbrk/$(DEPDIR) uniname/$(DEPDIR) unistr/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) glthread/$(DEPDIR) uniconv/$(DEPDIR) unilbrk/$(DEPDIR) uniname/$(DEPDIR) unistr/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-local + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) all check check-am install install-am \ + install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-TESTS check-am clean clean-checkLIBRARIES \ + clean-checkPROGRAMS clean-generic clean-libtool clean-local \ + clean-noinstLIBRARIES clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ + pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am + + +# We need the following in order to create <inttypes.h> when the system +# doesn't have one that works with the given compiler. +inttypes.h: inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H) + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \ + -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \ + -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ + -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ + -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ + -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \ + -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \ + -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \ + -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \ + -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \ + -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \ + -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \ + -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \ + -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \ + -e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \ + -e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \ + -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \ + -e 's/@''INT64_MAX_EQ_LONG_MAX''@/$(INT64_MAX_EQ_LONG_MAX)/g' \ + -e 's/@''UINT32_MAX_LT_UINTMAX_MAX''@/$(UINT32_MAX_LT_UINTMAX_MAX)/g' \ + -e 's/@''UINT64_MAX_EQ_ULONG_MAX''@/$(UINT64_MAX_EQ_ULONG_MAX)/g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ + -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ + -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ + < $(srcdir)/inttypes.in.h; \ + } > $@-t && \ + mv $@-t $@ + +test-moo-root.h test-moo-root.c root.priv.h root.vt.h : $(top_srcdir)/../build-aux/moopp test-moo-root.oo.h test-moo-root.oo.c + $(top_srcdir)/../build-aux/moopp $(MOOPPFLAGS) $(srcdir)/test-moo-root.oo.c $(srcdir)/test-moo-root.oo.h + +test-moo-sub1.h test-moo-sub1.c sub1.priv.h sub1.vt.h : $(top_srcdir)/../build-aux/moopp test-moo-root.oo.h test-moo-sub1.oo.h test-moo-sub1.oo.c + $(top_srcdir)/../build-aux/moopp $(MOOPPFLAGS) $(srcdir)/test-moo-sub1.oo.c $(srcdir)/test-moo-sub1.oo.h $(srcdir)/test-moo-root.oo.h + +test-moo-sub2.h test-moo-sub2.c sub2.priv.h sub2.vt.h : $(top_srcdir)/../build-aux/moopp test-moo-root.oo.h test-moo-sub1.oo.h test-moo-sub2.oo.h test-moo-sub2.oo.c + $(top_srcdir)/../build-aux/moopp $(MOOPPFLAGS) $(srcdir)/test-moo-sub2.oo.c $(srcdir)/test-moo-sub2.oo.h $(srcdir)/test-moo-sub1.oo.h $(srcdir)/test-moo-root.oo.h + +test-moo-aroot.h test-moo-aroot.c aroot.priv.h aroot.vt.h : $(top_srcdir)/../build-aux/moopp test-moo-aroot.oo.h test-moo-aroot.oo.c + $(top_srcdir)/../build-aux/moopp $(MOOPPFLAGS) $(srcdir)/test-moo-aroot.oo.c $(srcdir)/test-moo-aroot.oo.h + +test-moo-asub1.h test-moo-asub1.c asub1.priv.h asub1.vt.h : $(top_srcdir)/../build-aux/moopp test-moo-aroot.oo.h test-moo-asub1.oo.h test-moo-asub1.oo.c + $(top_srcdir)/../build-aux/moopp $(MOOPPFLAGS) $(srcdir)/test-moo-asub1.oo.c $(srcdir)/test-moo-asub1.oo.h $(srcdir)/test-moo-aroot.oo.h +@POSIX_SPAWN_PORTED_TRUE@test-posix_spawn1.sh: test-posix_spawn1.in.sh +@POSIX_SPAWN_PORTED_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ +@POSIX_SPAWN_PORTED_TRUE@ cp $(srcdir)/test-posix_spawn1.in.sh $@-t && \ +@POSIX_SPAWN_PORTED_TRUE@ mv $@-t $@ +@POSIX_SPAWN_PORTED_TRUE@test-posix_spawn2.sh: test-posix_spawn2.in.sh +@POSIX_SPAWN_PORTED_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ +@POSIX_SPAWN_PORTED_TRUE@ cp $(srcdir)/test-posix_spawn2.in.sh $@-t && \ +@POSIX_SPAWN_PORTED_TRUE@ mv $@-t $@ +# The arg-nonnull.h that gets inserted into generated .h files is the same as +# build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut +# off. +arg-nonnull.h: $(top_srcdir)/../build-aux/snippet/arg-nonnull.h + $(AM_V_GEN)rm -f $@-t $@ && \ + sed -n -e '/GL_ARG_NONNULL/,$$p' \ + < $(top_srcdir)/../build-aux/snippet/arg-nonnull.h \ + > $@-t && \ + mv $@-t $@ +# The c++defs.h that gets inserted into generated .h files is the same as +# build-aux/snippet/c++defs.h, except that it has the copyright header cut off. +c++defs.h: $(top_srcdir)/../build-aux/snippet/c++defs.h + $(AM_V_GEN)rm -f $@-t $@ && \ + sed -n -e '/_GL_CXXDEFS/,$$p' \ + < $(top_srcdir)/../build-aux/snippet/c++defs.h \ + > $@-t && \ + mv $@-t $@ +# The unused-parameter.h that gets inserted into generated .h files is the same +# as build-aux/snippet/unused-parameter.h, except that it has the copyright +# header cut off. +unused-parameter.h: $(top_srcdir)/../build-aux/snippet/unused-parameter.h + $(AM_V_GEN)rm -f $@-t $@ && \ + sed -n -e '/GL_UNUSED_PARAMETER/,$$p' \ + < $(top_srcdir)/../build-aux/snippet/unused-parameter.h \ + > $@-t && \ + mv $@-t $@ +# The warn-on-use.h that gets inserted into generated .h files is the same as +# build-aux/snippet/warn-on-use.h, except that it has the copyright header cut +# off. +warn-on-use.h: $(top_srcdir)/../build-aux/snippet/warn-on-use.h + $(AM_V_GEN)rm -f $@-t $@ && \ + sed -n -e '/^.ifndef/,$$p' \ + < $(top_srcdir)/../build-aux/snippet/warn-on-use.h \ + > $@-t && \ + mv $@-t $@ + +# Clean up after Solaris cc. +clean-local: + rm -rf SunWS_cache + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + fi; \ + done; \ + : + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gettext-tools/gnulib-tests/btowc.c b/gettext-tools/gnulib-tests/btowc.c new file mode 100644 index 0000000..b06ca2e --- /dev/null +++ b/gettext-tools/gnulib-tests/btowc.c @@ -0,0 +1,39 @@ +/* Convert unibyte character to wide character. + Copyright (C) 2008, 2010-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2008. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <wchar.h> + +#include <stdio.h> +#include <stdlib.h> + +wint_t +btowc (int c) +{ + if (c != EOF) + { + char buf[1]; + wchar_t wc; + + buf[0] = c; + if (mbtowc (&wc, buf, 1) >= 0) + return wc; + } + return WEOF; +} diff --git a/gettext-tools/gnulib-tests/dup.c b/gettext-tools/gnulib-tests/dup.c new file mode 100644 index 0000000..c813df6 --- /dev/null +++ b/gettext-tools/gnulib-tests/dup.c @@ -0,0 +1,61 @@ +/* Duplicate an open file descriptor. + + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <unistd.h> + +#include <errno.h> + +#include "msvc-inval.h" + +#undef dup + +#if HAVE_MSVC_INVALID_PARAMETER_HANDLER +static int +dup_nothrow (int fd) +{ + int result; + + TRY_MSVC_INVAL + { + result = dup (fd); + } + CATCH_MSVC_INVAL + { + result = -1; + errno = EBADF; + } + DONE_MSVC_INVAL; + + return result; +} +#else +# define dup_nothrow dup +#endif + +int +rpl_dup (int fd) +{ + int result = dup_nothrow (fd); +#if REPLACE_FCHDIR + if (result >= 0) + result = _gl_register_dup (fd, result); +#endif + return result; +} diff --git a/gettext-tools/gnulib-tests/fdopen.c b/gettext-tools/gnulib-tests/fdopen.c new file mode 100644 index 0000000..eded1a6 --- /dev/null +++ b/gettext-tools/gnulib-tests/fdopen.c @@ -0,0 +1,69 @@ +/* Open a stream with a given file descriptor. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <stdio.h> + +#include <errno.h> + +#if HAVE_MSVC_INVALID_PARAMETER_HANDLER +# include "msvc-inval.h" +#endif + +#undef fdopen + +#if HAVE_MSVC_INVALID_PARAMETER_HANDLER +static FILE * +fdopen_nothrow (int fd, const char *mode) +{ + FILE *result; + + TRY_MSVC_INVAL + { + result = fdopen (fd, mode); + } + CATCH_MSVC_INVAL + { + result = NULL; + } + DONE_MSVC_INVAL; + + return result; +} +#else +# define fdopen_nothrow fdopen +#endif + +FILE * +rpl_fdopen (int fd, const char *mode) +{ + int saved_errno = errno; + FILE *fp; + + errno = 0; + fp = fdopen_nothrow (fd, mode); + if (fp == NULL) + { + if (errno == 0) + errno = EBADF; + } + else + errno = saved_errno; + + return fp; +} diff --git a/gettext-tools/gnulib-tests/fpucw.h b/gettext-tools/gnulib-tests/fpucw.h new file mode 100644 index 0000000..9170c27 --- /dev/null +++ b/gettext-tools/gnulib-tests/fpucw.h @@ -0,0 +1,108 @@ +/* Manipulating the FPU control word. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2007. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifndef _FPUCW_H +#define _FPUCW_H + +/* The i386 floating point hardware (the 387 compatible FPU, not the modern + SSE/SSE2 hardware) has a controllable rounding precision. It is specified + through the 'PC' bits in the FPU control word ('fctrl' register). (See + the GNU libc i386 <fpu_control.h> header for details.) + + On some platforms, such as Linux or Solaris, the default precision setting + is set to "extended precision". This means that 'long double' instructions + operate correctly, but 'double' computations often produce slightly + different results as on strictly IEEE 754 conforming systems. + + On some platforms, such as NetBSD, the default precision is set to + "double precision". This means that 'long double' instructions will operate + only as 'double', i.e. lead to wrong results. Similarly on FreeBSD 6.4, at + least for the division of 'long double' numbers. + + The FPU control word is under control of the application, i.e. it is + not required to be set either way by the ABI. (In fact, the i386 ABI + http://refspecs.freestandards.org/elf/abi386-4.pdf page 3-12 = page 38 + is not clear about it. But in any case, gcc treats the control word + like a "preserved" register: it emits code that assumes that the control + word is preserved across calls, and it restores the control word at the + end of functions that modify it.) + + See Vincent Lefèvre's page http://www.vinc17.org/research/extended.en.html + for a good explanation. + See http://www.uwsg.iu.edu/hypermail/linux/kernel/0103.0/0453.html for + some argumentation which setting should be the default. */ + +/* This header file provides the following facilities: + fpucw_t integral type holding the value of 'fctrl' + FPU_PC_MASK bit mask denoting the precision control + FPU_PC_DOUBLE precision control for 53 bits mantissa + FPU_PC_EXTENDED precision control for 64 bits mantissa + GET_FPUCW () yields the current FPU control word + SET_FPUCW (word) sets the FPU control word + DECL_LONG_DOUBLE_ROUNDING variable declaration for + BEGIN/END_LONG_DOUBLE_ROUNDING + BEGIN_LONG_DOUBLE_ROUNDING () starts a sequence of instructions with + 'long double' safe operation precision + END_LONG_DOUBLE_ROUNDING () ends a sequence of instructions with + 'long double' safe operation precision + */ + +/* Inline assembler like this works only with GNU C. */ +#if (defined __i386__ || defined __x86_64__) && defined __GNUC__ + +typedef unsigned short fpucw_t; /* glibc calls this fpu_control_t */ + +# define FPU_PC_MASK 0x0300 +# define FPU_PC_DOUBLE 0x200 /* glibc calls this _FPU_DOUBLE */ +# define FPU_PC_EXTENDED 0x300 /* glibc calls this _FPU_EXTENDED */ + +# define GET_FPUCW() \ + ({ fpucw_t _cw; \ + __asm__ __volatile__ ("fnstcw %0" : "=m" (*&_cw)); \ + _cw; \ + }) +# define SET_FPUCW(word) \ + (void)({ fpucw_t _ncw = (word); \ + __asm__ __volatile__ ("fldcw %0" : : "m" (*&_ncw)); \ + }) + +# define DECL_LONG_DOUBLE_ROUNDING \ + fpucw_t oldcw; +# define BEGIN_LONG_DOUBLE_ROUNDING() \ + (void)(oldcw = GET_FPUCW (), \ + SET_FPUCW ((oldcw & ~FPU_PC_MASK) | FPU_PC_EXTENDED)) +# define END_LONG_DOUBLE_ROUNDING() \ + SET_FPUCW (oldcw) + +#else + +typedef unsigned int fpucw_t; + +# define FPU_PC_MASK 0 +# define FPU_PC_DOUBLE 0 +# define FPU_PC_EXTENDED 0 + +# define GET_FPUCW() 0 +# define SET_FPUCW(word) (void)(word) + +# define DECL_LONG_DOUBLE_ROUNDING +# define BEGIN_LONG_DOUBLE_ROUNDING() +# define END_LONG_DOUBLE_ROUNDING() + +#endif + +#endif /* _FPUCW_H */ diff --git a/gettext-tools/gnulib-tests/ftell.c b/gettext-tools/gnulib-tests/ftell.c new file mode 100644 index 0000000..d5cbccd --- /dev/null +++ b/gettext-tools/gnulib-tests/ftell.c @@ -0,0 +1,37 @@ +/* An ftell() function that works around platform bugs. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <stdio.h> + +#include <errno.h> +#include <limits.h> + +long +ftell (FILE *fp) +{ + /* Use the replacement ftello function with all its workarounds. */ + off_t offset = ftello (fp); + if (LONG_MIN <= offset && offset <= LONG_MAX) + return /* (long) */ offset; + else + { + errno = EOVERFLOW; + return -1; + } +} diff --git a/gettext-tools/gnulib-tests/ftello.c b/gettext-tools/gnulib-tests/ftello.c new file mode 100644 index 0000000..ee4f7dc --- /dev/null +++ b/gettext-tools/gnulib-tests/ftello.c @@ -0,0 +1,85 @@ +/* An ftello() function that works around platform bugs. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <stdio.h> + +/* Get lseek. */ +#include <unistd.h> + +#include "stdio-impl.h" + +off_t +ftello (FILE *fp) +#undef ftello +#if !HAVE_FTELLO +# undef ftell +# define ftello ftell +#endif +#if _GL_WINDOWS_64_BIT_OFF_T +# undef ftello +# if HAVE__FTELLI64 /* msvc, mingw64 */ +# define ftello _ftelli64 +# else /* mingw */ +# define ftello ftello64 +# endif +#endif +{ +#if LSEEK_PIPE_BROKEN + /* mingw gives bogus answers rather than failure on non-seekable files. */ + if (lseek (fileno (fp), 0, SEEK_CUR) == -1) + return -1; +#endif + +#if FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE /* Solaris */ + /* The Solaris stdio leaves the _IOREAD flag set after reading from a file + reaches EOF and the program then starts writing to the file. ftello + gets confused by this. */ + if (fp_->_flag & _IOWRT) + { + off_t pos; + + /* Call ftello nevertheless, for the side effects that it does on fp. */ + ftello (fp); + + /* Compute the file position ourselves. */ + pos = lseek (fileno (fp), (off_t) 0, SEEK_CUR); + if (pos >= 0) + { + if ((fp_->_flag & _IONBF) == 0 && fp_->_base != NULL) + pos += fp_->_ptr - fp_->_base; + } + return pos; + } +#endif + +#if defined __SL64 && defined __SCLE /* Cygwin */ + if ((fp->_flags & __SL64) == 0) + { + /* Cygwin 1.5.0 through 1.5.24 failed to open stdin in 64-bit + mode; but has an ftello that requires 64-bit mode. */ + FILE *tmp = fopen ("/dev/null", "r"); + if (!tmp) + return -1; + fp->_flags |= __SL64; + fp->_seek64 = tmp->_seek64; + fclose (tmp); + } +#endif + return ftello (fp); +} diff --git a/gettext-tools/gnulib-tests/getcwd-lgpl.c b/gettext-tools/gnulib-tests/getcwd-lgpl.c new file mode 100644 index 0000000..044c000 --- /dev/null +++ b/gettext-tools/gnulib-tests/getcwd-lgpl.c @@ -0,0 +1,126 @@ +/* Copyright (C) 2011-2014 Free Software Foundation, Inc. + This file is part of gnulib. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification */ +#include <unistd.h> + +#include <errno.h> +#include <stdlib.h> +#include <string.h> + +#if GNULIB_GETCWD +/* Favor GPL getcwd.c if both getcwd and getcwd-lgpl modules are in use. */ +typedef int dummy; +#else + +/* Get the name of the current working directory, and put it in SIZE + bytes of BUF. Returns NULL if the directory couldn't be determined + (perhaps because the absolute name was longer than PATH_MAX, or + because of missing read/search permissions on parent directories) + or SIZE was too small. If successful, returns BUF. If BUF is + NULL, an array is allocated with 'malloc'; the array is SIZE bytes + long, unless SIZE == 0, in which case it is as big as + necessary. */ + +# undef getcwd +char * +rpl_getcwd (char *buf, size_t size) +{ + char *ptr; + char *result; + + /* Handle single size operations. */ + if (buf) + { + if (!size) + { + errno = EINVAL; + return NULL; + } + return getcwd (buf, size); + } + + if (size) + { + buf = malloc (size); + if (!buf) + { + errno = ENOMEM; + return NULL; + } + result = getcwd (buf, size); + if (!result) + { + int saved_errno = errno; + free (buf); + errno = saved_errno; + } + return result; + } + + /* Flexible sizing requested. Avoid over-allocation for the common + case of a name that fits within a 4k page, minus some space for + local variables, to be sure we don't skip over a guard page. */ + { + char tmp[4032]; + size = sizeof tmp; + ptr = getcwd (tmp, size); + if (ptr) + { + result = strdup (ptr); + if (!result) + errno = ENOMEM; + return result; + } + if (errno != ERANGE) + return NULL; + } + + /* My what a large directory name we have. */ + do + { + size <<= 1; + ptr = realloc (buf, size); + if (ptr == NULL) + { + free (buf); + errno = ENOMEM; + return NULL; + } + buf = ptr; + result = getcwd (buf, size); + } + while (!result && errno == ERANGE); + + if (!result) + { + int saved_errno = errno; + free (buf); + errno = saved_errno; + } + else + { + /* Trim to fit, if possible. */ + result = realloc (buf, strlen (buf) + 1); + if (!result) + result = buf; + } + return result; +} + +#endif diff --git a/gettext-tools/gnulib-tests/getpagesize.c b/gettext-tools/gnulib-tests/getpagesize.c new file mode 100644 index 0000000..86e1271 --- /dev/null +++ b/gettext-tools/gnulib-tests/getpagesize.c @@ -0,0 +1,39 @@ +/* getpagesize emulation for systems where it cannot be done in a C macro. + + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible and Martin Lambers. */ + +#include <config.h> + +/* Specification. */ +#include <unistd.h> + +/* This implementation is only for native Windows systems. */ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + +# define WIN32_LEAN_AND_MEAN +# include <windows.h> + +int +getpagesize (void) +{ + SYSTEM_INFO system_info; + GetSystemInfo (&system_info); + return system_info.dwPageSize; +} + +#endif diff --git a/gettext-tools/gnulib-tests/glthread/thread.c b/gettext-tools/gnulib-tests/glthread/thread.c new file mode 100644 index 0000000..cec0b7c --- /dev/null +++ b/gettext-tools/gnulib-tests/glthread/thread.c @@ -0,0 +1,232 @@ +/* Creating and controlling threads. + Copyright (C) 2005-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2005. + Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h, + gthr-win32.h. */ + +#include <config.h> + +/* Specification. */ +# define _GLTHREAD_THREAD_INLINE _GL_EXTERN_INLINE +#include "glthread/thread.h" + +#include <stdlib.h> +#include "glthread/lock.h" + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +#include <pthread.h> + +#ifdef PTW32_VERSION + +const gl_thread_t gl_null_thread /* = { .p = NULL } */; + +#endif + +#endif + +/* ========================================================================= */ + +#if USE_WINDOWS_THREADS + +#include <process.h> + +/* -------------------------- gl_thread_t datatype -------------------------- */ + +/* The Thread-Local Storage (TLS) key that allows to access each thread's + 'struct gl_thread_struct *' pointer. */ +static DWORD self_key = (DWORD)-1; + +/* Initializes self_key. This function must only be called once. */ +static void +do_init_self_key (void) +{ + self_key = TlsAlloc (); + /* If this fails, we're hosed. */ + if (self_key == (DWORD)-1) + abort (); +} + +/* Initializes self_key. */ +static void +init_self_key (void) +{ + gl_once_define(static, once) + gl_once (once, do_init_self_key); +} + +/* This structure contains information about a thread. + It is stored in TLS under key self_key. */ +struct gl_thread_struct +{ + /* Fields for managing the handle. */ + HANDLE volatile handle; + CRITICAL_SECTION handle_lock; + /* Fields for managing the exit value. */ + void * volatile result; + /* Fields for managing the thread start. */ + void * (*func) (void *); + void *arg; +}; + +/* Return a real HANDLE object for the current thread. */ +static HANDLE +get_current_thread_handle (void) +{ + HANDLE this_handle; + + /* GetCurrentThread() returns a pseudo-handle, i.e. only a symbolic + identifier, not a real handle. */ + if (!DuplicateHandle (GetCurrentProcess (), GetCurrentThread (), + GetCurrentProcess (), &this_handle, + 0, FALSE, DUPLICATE_SAME_ACCESS)) + abort (); + return this_handle; +} + +gl_thread_t +gl_thread_self_func (void) +{ + gl_thread_t thread; + + if (self_key == (DWORD)-1) + init_self_key (); + thread = TlsGetValue (self_key); + if (thread == NULL) + { + /* This happens only in threads that have not been created through + glthread_create(), such as the main thread. */ + for (;;) + { + thread = + (struct gl_thread_struct *) + malloc (sizeof (struct gl_thread_struct)); + if (thread != NULL) + break; + /* Memory allocation failed. There is not much we can do. Have to + busy-loop, waiting for the availability of memory. */ + Sleep (1); + } + + thread->handle = get_current_thread_handle (); + InitializeCriticalSection (&thread->handle_lock); + thread->result = NULL; /* just to be deterministic */ + TlsSetValue (self_key, thread); + } + return thread; +} + +/* The main function of a freshly creating thread. It's a wrapper around + the FUNC and ARG arguments passed to glthread_create_func. */ +static unsigned int WINAPI +wrapper_func (void *varg) +{ + struct gl_thread_struct *thread = (struct gl_thread_struct *)varg; + + EnterCriticalSection (&thread->handle_lock); + /* Create a new handle for the thread only if the parent thread did not yet + fill in the handle. */ + if (thread->handle == NULL) + thread->handle = get_current_thread_handle (); + LeaveCriticalSection (&thread->handle_lock); + + if (self_key == (DWORD)-1) + init_self_key (); + TlsSetValue (self_key, thread); + + /* Run the thread. Store the exit value if the thread was not terminated + otherwise. */ + thread->result = thread->func (thread->arg); + return 0; +} + +int +glthread_create_func (gl_thread_t *threadp, void * (*func) (void *), void *arg) +{ + struct gl_thread_struct *thread = + (struct gl_thread_struct *) malloc (sizeof (struct gl_thread_struct)); + if (thread == NULL) + return ENOMEM; + thread->handle = NULL; + InitializeCriticalSection (&thread->handle_lock); + thread->result = NULL; /* just to be deterministic */ + thread->func = func; + thread->arg = arg; + + { + unsigned int thread_id; + HANDLE thread_handle; + + thread_handle = (HANDLE) + _beginthreadex (NULL, 100000, wrapper_func, thread, 0, &thread_id); + /* calls CreateThread with the same arguments */ + if (thread_handle == NULL) + { + DeleteCriticalSection (&thread->handle_lock); + free (thread); + return EAGAIN; + } + + EnterCriticalSection (&thread->handle_lock); + if (thread->handle == NULL) + thread->handle = thread_handle; + else + /* thread->handle was already set by the thread itself. */ + CloseHandle (thread_handle); + LeaveCriticalSection (&thread->handle_lock); + + *threadp = thread; + return 0; + } +} + +int +glthread_join_func (gl_thread_t thread, void **retvalp) +{ + if (thread == NULL) + return EINVAL; + + if (thread == gl_thread_self ()) + return EDEADLK; + + if (WaitForSingleObject (thread->handle, INFINITE) == WAIT_FAILED) + return EINVAL; + + if (retvalp != NULL) + *retvalp = thread->result; + + DeleteCriticalSection (&thread->handle_lock); + CloseHandle (thread->handle); + free (thread); + + return 0; +} + +int +gl_thread_exit_func (void *retval) +{ + gl_thread_t thread = gl_thread_self (); + thread->result = retval; + _endthreadex (0); /* calls ExitThread (0) */ + abort (); +} + +#endif + +/* ========================================================================= */ diff --git a/gettext-tools/gnulib-tests/glthread/thread.h b/gettext-tools/gnulib-tests/glthread/thread.h new file mode 100644 index 0000000..509db6b --- /dev/null +++ b/gettext-tools/gnulib-tests/glthread/thread.h @@ -0,0 +1,416 @@ +/* Creating and controlling threads. + Copyright (C) 2005-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2005. + Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h, + gthr-win32.h. */ + +/* This file contains primitives for creating and controlling threads. + + Thread data type: gl_thread_t. + + Creating a thread: + thread = gl_thread_create (func, arg); + Or with control of error handling: + err = glthread_create (&thread, func, arg); + extern int glthread_create (gl_thread_t *result, + void *(*func) (void *), void *arg); + + Querying and changing the signal mask of a thread (not supported on all + platforms): + gl_thread_sigmask (how, newmask, oldmask); + Or with control of error handling: + err = glthread_sigmask (how, newmask, oldmask); + extern int glthread_sigmask (int how, const sigset_t *newmask, sigset_t *oldmask); + + Waiting for termination of another thread: + gl_thread_join (thread, &return_value); + Or with control of error handling: + err = glthread_join (thread, &return_value); + extern int glthread_join (gl_thread_t thread, void **return_value_ptr); + + Getting a reference to the current thread: + current = gl_thread_self (); + extern gl_thread_t gl_thread_self (void); + + Getting a reference to the current thread as a pointer, for debugging: + ptr = gl_thread_self_pointer (); + extern void * gl_thread_self_pointer (void); + + Terminating the current thread: + gl_thread_exit (return_value); + extern _Noreturn void gl_thread_exit (void *return_value); + + Requesting custom code to be executed at fork() time(not supported on all + platforms): + gl_thread_atfork (prepare_func, parent_func, child_func); + Or with control of error handling: + err = glthread_atfork (prepare_func, parent_func, child_func); + extern int glthread_atfork (void (*prepare_func) (void), + void (*parent_func) (void), + void (*child_func) (void)); + Note that even on platforms where this is supported, use of fork() and + threads together is problematic, see + <http://lists.gnu.org/archive/html/bug-gnulib/2008-08/msg00062.html> + */ + + +#ifndef _GLTHREAD_THREAD_H +#define _GLTHREAD_THREAD_H + +#include <errno.h> +#include <stdlib.h> + +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif +_GL_INLINE_HEADER_BEGIN +#ifndef _GLTHREAD_THREAD_INLINE +# define _GLTHREAD_THREAD_INLINE _GL_INLINE +#endif + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +/* Use the POSIX threads library. */ + +# include <pthread.h> + +# ifdef __cplusplus +extern "C" { +# endif + +# if PTHREAD_IN_USE_DETECTION_HARD + +/* The pthread_in_use() detection needs to be done at runtime. */ +# define pthread_in_use() \ + glthread_in_use () +extern int glthread_in_use (void); + +# endif + +# if USE_POSIX_THREADS_WEAK + +/* Use weak references to the POSIX threads library. */ + +/* Weak references avoid dragging in external libraries if the other parts + of the program don't use them. Here we use them, because we don't want + every program that uses libintl to depend on libpthread. This assumes + that libpthread would not be loaded after libintl; i.e. if libintl is + loaded first, by an executable that does not depend on libpthread, and + then a module is dynamically loaded that depends on libpthread, libintl + will not be multithread-safe. */ + +/* The way to test at runtime whether libpthread is present is to test + whether a function pointer's value, such as &pthread_mutex_init, is + non-NULL. However, some versions of GCC have a bug through which, in + PIC mode, &foo != NULL always evaluates to true if there is a direct + call to foo(...) in the same function. To avoid this, we test the + address of a function in libpthread that we don't use. */ + +# pragma weak pthread_create + +# ifdef __clang__ + /* Without this, clang complains that pthread_sigmask is never declared. */ +# include <signal.h> +# endif +# pragma weak pthread_sigmask + +# pragma weak pthread_join +# ifndef pthread_self +# pragma weak pthread_self +# endif +# pragma weak pthread_exit +# if HAVE_PTHREAD_ATFORK +# pragma weak pthread_atfork +# endif + +# if !PTHREAD_IN_USE_DETECTION_HARD +# pragma weak pthread_cancel +# define pthread_in_use() (pthread_cancel != NULL) +# endif + +# else + +# if !PTHREAD_IN_USE_DETECTION_HARD +# define pthread_in_use() 1 +# endif + +# endif + +/* -------------------------- gl_thread_t datatype -------------------------- */ + +/* This choice of gl_thread_t assumes that + pthread_equal (a, b) is equivalent to ((a) == (b)). + This is the case on all platforms in use in 2008. */ +typedef pthread_t gl_thread_t; +# define glthread_create(THREADP, FUNC, ARG) \ + (pthread_in_use () ? pthread_create (THREADP, NULL, FUNC, ARG) : ENOSYS) +# define glthread_sigmask(HOW, SET, OSET) \ + (pthread_in_use () ? pthread_sigmask (HOW, SET, OSET) : 0) +# define glthread_join(THREAD, RETVALP) \ + (pthread_in_use () ? pthread_join (THREAD, RETVALP) : 0) +# ifdef PTW32_VERSION + /* In pthreads-win32, pthread_t is a struct with a pointer field 'p' and + other fields. */ +# define gl_thread_self() \ + (pthread_in_use () ? pthread_self () : gl_null_thread) +# define gl_thread_self_pointer() \ + (pthread_in_use () ? pthread_self ().p : NULL) +extern const gl_thread_t gl_null_thread; +# else +# define gl_thread_self() \ + (pthread_in_use () ? pthread_self () : (pthread_t) NULL) +# define gl_thread_self_pointer() \ + (pthread_in_use () ? (void *) pthread_self () : NULL) +# endif +# define gl_thread_exit(RETVAL) \ + (pthread_in_use () ? pthread_exit (RETVAL) : 0) + +# if HAVE_PTHREAD_ATFORK +# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) \ + (pthread_in_use () ? pthread_atfork (PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) : 0) +# else +# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) 0 +# endif + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_PTH_THREADS + +/* Use the GNU Pth threads library. */ + +# include <pth.h> + +# ifdef __cplusplus +extern "C" { +# endif + +# if USE_PTH_THREADS_WEAK + +/* Use weak references to the GNU Pth threads library. */ + +# pragma weak pth_spawn +# pragma weak pth_sigmask +# pragma weak pth_join +# pragma weak pth_self +# pragma weak pth_exit + +# pragma weak pth_cancel +# define pth_in_use() (pth_cancel != NULL) + +# else + +# define pth_in_use() 1 + +# endif +/* -------------------------- gl_thread_t datatype -------------------------- */ + +typedef pth_t gl_thread_t; +# define glthread_create(THREADP, FUNC, ARG) \ + (pth_in_use () ? ((*(THREADP) = pth_spawn (NULL, FUNC, ARG)) ? 0 : errno) : 0) +# define glthread_sigmask(HOW, SET, OSET) \ + (pth_in_use () && !pth_sigmask (HOW, SET, OSET) ? errno : 0) +# define glthread_join(THREAD, RETVALP) \ + (pth_in_use () && !pth_join (THREAD, RETVALP) ? errno : 0) +# define gl_thread_self() \ + (pth_in_use () ? (void *) pth_self () : NULL) +# define gl_thread_self_pointer() \ + gl_thread_self () +# define gl_thread_exit(RETVAL) \ + (pth_in_use () ? pth_exit (RETVAL) : 0) +# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) 0 + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_SOLARIS_THREADS + +/* Use the old Solaris threads library. */ + +# include <thread.h> +# include <synch.h> + +# ifdef __cplusplus +extern "C" { +# endif + +# if USE_SOLARIS_THREADS_WEAK + +/* Use weak references to the old Solaris threads library. */ + +# pragma weak thr_create +# pragma weak thr_join +# pragma weak thr_self +# pragma weak thr_exit + +# pragma weak thr_suspend +# define thread_in_use() (thr_suspend != NULL) + +# else + +# define thread_in_use() 1 + +# endif + +/* -------------------------- gl_thread_t datatype -------------------------- */ + +typedef thread_t gl_thread_t; +# define glthread_create(THREADP, FUNC, ARG) \ + (thread_in_use () ? thr_create (NULL, 0, FUNC, ARG, 0, THREADP) : 0) +# define glthread_sigmask(HOW, SET, OSET) \ + (thread_in_use () ? sigprocmask (HOW, SET, OSET) : 0) +# define glthread_join(THREAD, RETVALP) \ + (thread_in_use () ? thr_join (THREAD, NULL, RETVALP) : 0) +# define gl_thread_self() \ + (thread_in_use () ? (void *) thr_self () : NULL) +# define gl_thread_self_pointer() \ + gl_thread_self () +# define gl_thread_exit(RETVAL) \ + (thread_in_use () ? thr_exit (RETVAL) : 0) +# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) 0 + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_WINDOWS_THREADS + +# define WIN32_LEAN_AND_MEAN /* avoid including junk */ +# include <windows.h> + +# ifdef __cplusplus +extern "C" { +# endif + +/* -------------------------- gl_thread_t datatype -------------------------- */ + +/* The gl_thread_t is a pointer to a structure in memory. + Why not the thread handle? If it were the thread handle, it would be hard + to implement gl_thread_self() (since GetCurrentThread () returns a pseudo- + handle, DuplicateHandle (GetCurrentThread ()) returns a handle that must be + closed afterwards, and there is no function for quickly retrieving a thread + handle from its id). + Why not the thread id? I tried it. It did not work: Sometimes ids appeared + that did not belong to running threads, and glthread_join failed with ESRCH. + */ +typedef struct gl_thread_struct *gl_thread_t; +# define glthread_create(THREADP, FUNC, ARG) \ + glthread_create_func (THREADP, FUNC, ARG) +# define glthread_sigmask(HOW, SET, OSET) \ + /* unsupported */ 0 +# define glthread_join(THREAD, RETVALP) \ + glthread_join_func (THREAD, RETVALP) +# define gl_thread_self() \ + gl_thread_self_func () +# define gl_thread_self_pointer() \ + gl_thread_self () +# define gl_thread_exit(RETVAL) \ + gl_thread_exit_func (RETVAL) +# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) 0 +extern int glthread_create_func (gl_thread_t *threadp, void * (*func) (void *), void *arg); +extern int glthread_join_func (gl_thread_t thread, void **retvalp); +extern gl_thread_t gl_thread_self_func (void); +extern int gl_thread_exit_func (void *retval); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WINDOWS_THREADS) + +/* Provide dummy implementation if threads are not supported. */ + +typedef int gl_thread_t; +# define glthread_create(THREADP, FUNC, ARG) ENOSYS +# define glthread_sigmask(HOW, SET, OSET) 0 +# define glthread_join(THREAD, RETVALP) 0 +# define gl_thread_self() 0 +# define gl_thread_self_pointer() \ + ((void *) gl_thread_self ()) +# define gl_thread_exit(RETVAL) 0 +# define glthread_atfork(PREPARE_FUNC, PARENT_FUNC, CHILD_FUNC) 0 + +#endif + +/* ========================================================================= */ + +/* Macros with built-in error handling. */ + +#ifdef __cplusplus +extern "C" { +#endif + +_GLTHREAD_THREAD_INLINE gl_thread_t +gl_thread_create (void *(*func) (void *arg), void *arg) +{ + gl_thread_t thread; + int ret; + + ret = glthread_create (&thread, func, arg); + if (ret != 0) + abort (); + return thread; +} +#define gl_thread_sigmask(HOW, SET, OSET) \ + do \ + { \ + if (glthread_sigmask (HOW, SET, OSET)) \ + abort (); \ + } \ + while (0) +#define gl_thread_join(THREAD, RETVAL) \ + do \ + { \ + if (glthread_join (THREAD, RETVAL)) \ + abort (); \ + } \ + while (0) +#define gl_thread_atfork(PREPARE, PARENT, CHILD) \ + do \ + { \ + if (glthread_atfork (PREPARE, PARENT, CHILD)) \ + abort (); \ + } \ + while (0) + +#ifdef __cplusplus +} +#endif + +_GL_INLINE_HEADER_END + +#endif /* _GLTHREAD_THREAD_H */ diff --git a/gettext-tools/gnulib-tests/glthread/yield.h b/gettext-tools/gnulib-tests/glthread/yield.h new file mode 100644 index 0000000..b929224 --- /dev/null +++ b/gettext-tools/gnulib-tests/glthread/yield.h @@ -0,0 +1,121 @@ +/* Yielding the processor to other threads and processes. + Copyright (C) 2005-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +/* This file contains a primitive for yielding the processor to other threads. + extern void gl_thread_yield (void); + */ + +#ifndef _GLTHREAD_YIELD_H +#define _GLTHREAD_YIELD_H + +#include <errno.h> + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +/* Use the POSIX threads library. */ + +# include <sched.h> + +# ifdef __cplusplus +extern "C" { +# endif + +# define gl_thread_yield() \ + sched_yield () + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_PTH_THREADS + +/* Use the GNU Pth threads library. */ + +# include <pth.h> + +# ifdef __cplusplus +extern "C" { +# endif + +# define gl_thread_yield() \ + pth_yield (NULL) + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_SOLARIS_THREADS + +/* Use the old Solaris threads library. */ + +# include <thread.h> + +# ifdef __cplusplus +extern "C" { +# endif + +# define gl_thread_yield() \ + thr_yield () + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_WINDOWS_THREADS + +# define WIN32_LEAN_AND_MEAN /* avoid including junk */ +# include <windows.h> + +# ifdef __cplusplus +extern "C" { +# endif + +# define gl_thread_yield() \ + Sleep (0) + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WINDOWS_THREADS) + +/* Provide dummy implementation if threads are not supported. */ + +# define gl_thread_yield() 0 + +#endif + +/* ========================================================================= */ + +#endif /* _GLTHREAD_YIELD_H */ diff --git a/gettext-tools/gnulib-tests/init.sh b/gettext-tools/gnulib-tests/init.sh new file mode 100644 index 0000000..fbd293d --- /dev/null +++ b/gettext-tools/gnulib-tests/init.sh @@ -0,0 +1,591 @@ +# source this file; set up for tests + +# Copyright (C) 2009-2014 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Using this file in a test +# ========================= +# +# The typical skeleton of a test looks like this: +# +# #!/bin/sh +# . "${srcdir=.}/init.sh"; path_prepend_ . +# Execute some commands. +# Note that these commands are executed in a subdirectory, therefore you +# need to prepend "../" to relative filenames in the build directory. +# Note that the "path_prepend_ ." is useful only if the body of your +# test invokes programs residing in the initial directory. +# For example, if the programs you want to test are in src/, and this test +# script is named tests/test-1, then you would use "path_prepend_ ../src", +# or perhaps export PATH='$(abs_top_builddir)/src$(PATH_SEPARATOR)'"$$PATH" +# to all tests via automake's TESTS_ENVIRONMENT. +# Set the exit code 0 for success, 77 for skipped, or 1 or other for failure. +# Use the skip_ and fail_ functions to print a diagnostic and then exit +# with the corresponding exit code. +# Exit $? + +# Executing a test that uses this file +# ==================================== +# +# Running a single test: +# $ make check TESTS=test-foo.sh +# +# Running a single test, with verbose output: +# $ make check TESTS=test-foo.sh VERBOSE=yes +# +# Running a single test, with single-stepping: +# 1. Go into a sub-shell: +# $ bash +# 2. Set relevant environment variables from TESTS_ENVIRONMENT in the +# Makefile: +# $ export srcdir=../../tests # this is an example +# 3. Execute the commands from the test, copy&pasting them one by one: +# $ . "$srcdir/init.sh"; path_prepend_ . +# ... +# 4. Finally +# $ exit + +ME_=`expr "./$0" : '.*/\(.*\)$'` + +# We use a trap below for cleanup. This requires us to go through +# hoops to get the right exit status transported through the handler. +# So use 'Exit STATUS' instead of 'exit STATUS' inside of the tests. +# Turn off errexit here so that we don't trip the bug with OSF1/Tru64 +# sh inside this function. +Exit () { set +e; (exit $1); exit $1; } + +# Print warnings (e.g., about skipped and failed tests) to this file number. +# Override by defining to say, 9, in init.cfg, and putting say, +# export ...ENVVAR_SETTINGS...; $(SHELL) 9>&2 +# in the definition of TESTS_ENVIRONMENT in your tests/Makefile.am file. +# This is useful when using automake's parallel tests mode, to print +# the reason for skip/failure to console, rather than to the .log files. +: ${stderr_fileno_=2} + +# Note that correct expansion of "$*" depends on IFS starting with ' '. +# Always write the full diagnostic to stderr. +# When stderr_fileno_ is not 2, also emit the first line of the +# diagnostic to that file descriptor. +warn_ () +{ + # If IFS does not start with ' ', set it and emit the warning in a subshell. + case $IFS in + ' '*) printf '%s\n' "$*" >&2 + test $stderr_fileno_ = 2 \ + || { printf '%s\n' "$*" | sed 1q >&$stderr_fileno_ ; } ;; + *) (IFS=' '; warn_ "$@");; + esac +} +fail_ () { warn_ "$ME_: failed test: $@"; Exit 1; } +skip_ () { warn_ "$ME_: skipped test: $@"; Exit 77; } +fatal_ () { warn_ "$ME_: hard error: $@"; Exit 99; } +framework_failure_ () { warn_ "$ME_: set-up failure: $@"; Exit 99; } + +# Sanitize this shell to POSIX mode, if possible. +DUALCASE=1; export DUALCASE +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; + esac +fi + +# We require $(...) support unconditionally. +# We require a few additional shell features only when $EXEEXT is nonempty, +# in order to support automatic $EXEEXT emulation: +# - hyphen-containing alias names +# - we prefer to use ${var#...} substitution, rather than having +# to work around lack of support for that feature. +# The following code attempts to find a shell with support for these features. +# If the current shell passes the test, we're done. Otherwise, test other +# shells until we find one that passes. If one is found, re-exec it. +# If no acceptable shell is found, skip the current test. +# +# The "...set -x; P=1 true 2>err..." test is to disqualify any shell that +# emits "P=1" into err, as /bin/sh from SunOS 5.11 and OpenBSD 4.7 do. +# +# Use "9" to indicate success (rather than 0), in case some shell acts +# like Solaris 10's /bin/sh but exits successfully instead of with status 2. + +# Eval this code in a subshell to determine a shell's suitability. +# 10 - passes all tests; ok to use +# 9 - ok, but enabling "set -x" corrupts app stderr; prefer higher score +# ? - not ok +gl_shell_test_script_=' +test $(echo y) = y || exit 1 +score_=10 +if test "$VERBOSE" = yes; then + test -n "$( (exec 3>&1; set -x; P=1 true 2>&3) 2> /dev/null)" && score_=9 +fi +test -z "$EXEEXT" && exit $score_ +shopt -s expand_aliases +alias a-b="echo zoo" +v=abx + test ${v%x} = ab \ + && test ${v#a} = bx \ + && test $(a-b) = zoo \ + && exit $score_ +' + +if test "x$1" = "x--no-reexec"; then + shift +else + # Assume a working shell. Export to subshells (setup_ needs this). + gl_set_x_corrupts_stderr_=false + export gl_set_x_corrupts_stderr_ + + # Record the first marginally acceptable shell. + marginal_= + + # Search for a shell that meets our requirements. + for re_shell_ in __current__ "${CONFIG_SHELL:-no_shell}" \ + /bin/sh bash dash zsh pdksh fail + do + test "$re_shell_" = no_shell && continue + + # If we've made it all the way to the sentinel, "fail" without + # finding even a marginal shell, skip this test. + if test "$re_shell_" = fail; then + test -z "$marginal_" && skip_ failed to find an adequate shell + re_shell_=$marginal_ + break + fi + + # When testing the current shell, simply "eval" the test code. + # Otherwise, run it via $re_shell_ -c ... + if test "$re_shell_" = __current__; then + # 'eval'ing this code makes Solaris 10's /bin/sh exit with + # $? set to 2. It does not evaluate any of the code after the + # "unexpected" first '('. Thus, we must run it in a subshell. + ( eval "$gl_shell_test_script_" ) > /dev/null 2>&1 + else + "$re_shell_" -c "$gl_shell_test_script_" 2>/dev/null + fi + + st_=$? + + # $re_shell_ works just fine. Use it. + if test $st_ = 10; then + gl_set_x_corrupts_stderr_=false + break + fi + + # If this is our first marginally acceptable shell, remember it. + if test "$st_:$marginal_" = 9: ; then + marginal_="$re_shell_" + gl_set_x_corrupts_stderr_=true + fi + done + + if test "$re_shell_" != __current__; then + # Found a usable shell. Preserve -v and -x. + case $- in + *v*x* | *x*v*) opts_=-vx ;; + *v*) opts_=-v ;; + *x*) opts_=-x ;; + *) opts_= ;; + esac + re_shell=$re_shell_ + export re_shell + exec "$re_shell_" $opts_ "$0" --no-reexec "$@" + echo "$ME_: exec failed" 1>&2 + exit 127 + fi +fi + +# If this is bash, turn off all aliases. +test -n "$BASH_VERSION" && unalias -a + +# Note that when supporting $EXEEXT (transparently mapping from PROG_NAME to +# PROG_NAME.exe), we want to support hyphen-containing names like test-acos. +# That is part of the shell-selection test above. Why use aliases rather +# than functions? Because support for hyphen-containing aliases is more +# widespread than that for hyphen-containing function names. +test -n "$EXEEXT" && shopt -s expand_aliases + +# Enable glibc's malloc-perturbing option. +# This is useful for exposing code that depends on the fact that +# malloc-related functions often return memory that is mostly zeroed. +# If you have the time and cycles, use valgrind to do an even better job. +: ${MALLOC_PERTURB_=87} +export MALLOC_PERTURB_ + +# This is a stub function that is run upon trap (upon regular exit and +# interrupt). Override it with a per-test function, e.g., to unmount +# a partition, or to undo any other global state changes. +cleanup_ () { :; } + +# Emit a header similar to that from diff -u; Print the simulated "diff" +# command so that the order of arguments is clear. Don't bother with @@ lines. +emit_diff_u_header_ () +{ + printf '%s\n' "diff -u $*" \ + "--- $1 1970-01-01" \ + "+++ $2 1970-01-01" +} + +# Arrange not to let diff or cmp operate on /dev/null, +# since on some systems (at least OSF/1 5.1), that doesn't work. +# When there are not two arguments, or no argument is /dev/null, return 2. +# When one argument is /dev/null and the other is not empty, +# cat the nonempty file to stderr and return 1. +# Otherwise, return 0. +compare_dev_null_ () +{ + test $# = 2 || return 2 + + if test "x$1" = x/dev/null; then + test -s "$2" || return 0 + emit_diff_u_header_ "$@"; sed 's/^/+/' "$2" + return 1 + fi + + if test "x$2" = x/dev/null; then + test -s "$1" || return 0 + emit_diff_u_header_ "$@"; sed 's/^/-/' "$1" + return 1 + fi + + return 2 +} + +if diff_out_=`exec 2>/dev/null; diff -u "$0" "$0" < /dev/null` \ + && diff -u Makefile "$0" 2>/dev/null | grep '^[+]#!' >/dev/null; then + # diff accepts the -u option and does not (like AIX 7 'diff') produce an + # extra space on column 1 of every content line. + if test -z "$diff_out_"; then + compare_ () { diff -u "$@"; } + else + compare_ () + { + if diff -u "$@" > diff.out; then + # No differences were found, but Solaris 'diff' produces output + # "No differences encountered". Hide this output. + rm -f diff.out + true + else + cat diff.out + rm -f diff.out + false + fi + } + fi +elif diff_out_=`exec 2>/dev/null; diff -c "$0" "$0" < /dev/null`; then + if test -z "$diff_out_"; then + compare_ () { diff -c "$@"; } + else + compare_ () + { + if diff -c "$@" > diff.out; then + # No differences were found, but AIX and HP-UX 'diff' produce output + # "No differences encountered" or "There are no differences between the + # files.". Hide this output. + rm -f diff.out + true + else + cat diff.out + rm -f diff.out + false + fi + } + fi +elif ( cmp --version < /dev/null 2>&1 | grep GNU ) > /dev/null 2>&1; then + compare_ () { cmp -s "$@"; } +else + compare_ () { cmp "$@"; } +fi + +# Usage: compare EXPECTED ACTUAL +# +# Given compare_dev_null_'s preprocessing, defer to compare_ if 2 or more. +# Otherwise, propagate $? to caller: any diffs have already been printed. +compare () +{ + # This looks like it can be factored to use a simple "case $?" + # after unchecked compare_dev_null_ invocation, but that would + # fail in a "set -e" environment. + if compare_dev_null_ "$@"; then + return 0 + else + case $? in + 1) return 1;; + *) compare_ "$@";; + esac + fi +} + +# An arbitrary prefix to help distinguish test directories. +testdir_prefix_ () { printf gt; } + +# Run the user-overridable cleanup_ function, remove the temporary +# directory and exit with the incoming value of $?. +remove_tmp_ () +{ + __st=$? + cleanup_ + # cd out of the directory we're about to remove + cd "$initial_cwd_" || cd / || cd /tmp + chmod -R u+rwx "$test_dir_" + # If removal fails and exit status was to be 0, then change it to 1. + rm -rf "$test_dir_" || { test $__st = 0 && __st=1; } + exit $__st +} + +# Given a directory name, DIR, if every entry in it that matches *.exe +# contains only the specified bytes (see the case stmt below), then print +# a space-separated list of those names and return 0. Otherwise, don't +# print anything and return 1. Naming constraints apply also to DIR. +find_exe_basenames_ () +{ + feb_dir_=$1 + feb_fail_=0 + feb_result_= + feb_sp_= + for feb_file_ in $feb_dir_/*.exe; do + # If there was no *.exe file, or there existed a file named "*.exe" that + # was deleted between the above glob expansion and the existence test + # below, just skip it. + test "x$feb_file_" = "x$feb_dir_/*.exe" && test ! -f "$feb_file_" \ + && continue + # Exempt [.exe, since we can't create a function by that name, yet + # we can't invoke [ by PATH search anyways due to shell builtins. + test "x$feb_file_" = "x$feb_dir_/[.exe" && continue + case $feb_file_ in + *[!-a-zA-Z/0-9_.+]*) feb_fail_=1; break;; + *) # Remove leading file name components as well as the .exe suffix. + feb_file_=${feb_file_##*/} + feb_file_=${feb_file_%.exe} + feb_result_="$feb_result_$feb_sp_$feb_file_";; + esac + feb_sp_=' ' + done + test $feb_fail_ = 0 && printf %s "$feb_result_" + return $feb_fail_ +} + +# Consider the files in directory, $1. +# For each file name of the form PROG.exe, create an alias named +# PROG that simply invokes PROG.exe, then return 0. If any selected +# file name or the directory name, $1, contains an unexpected character, +# define no alias and return 1. +create_exe_shims_ () +{ + case $EXEEXT in + '') return 0 ;; + .exe) ;; + *) echo "$0: unexpected \$EXEEXT value: $EXEEXT" 1>&2; return 1 ;; + esac + + base_names_=`find_exe_basenames_ $1` \ + || { echo "$0 (exe_shim): skipping directory: $1" 1>&2; return 0; } + + if test -n "$base_names_"; then + for base_ in $base_names_; do + alias "$base_"="$base_$EXEEXT" + done + fi + + return 0 +} + +# Use this function to prepend to PATH an absolute name for each +# specified, possibly-$initial_cwd_-relative, directory. +path_prepend_ () +{ + while test $# != 0; do + path_dir_=$1 + case $path_dir_ in + '') fail_ "invalid path dir: '$1'";; + /*) abs_path_dir_=$path_dir_;; + *) abs_path_dir_=$initial_cwd_/$path_dir_;; + esac + case $abs_path_dir_ in + *:*) fail_ "invalid path dir: '$abs_path_dir_'";; + esac + PATH="$abs_path_dir_:$PATH" + + # Create an alias, FOO, for each FOO.exe in this directory. + create_exe_shims_ "$abs_path_dir_" \ + || fail_ "something failed (above): $abs_path_dir_" + shift + done + export PATH +} + +setup_ () +{ + if test "$VERBOSE" = yes; then + # Test whether set -x may cause the selected shell to corrupt an + # application's stderr. Many do, including zsh-4.3.10 and the /bin/sh + # from SunOS 5.11, OpenBSD 4.7 and Irix 5.x and 6.5. + # If enabling verbose output this way would cause trouble, simply + # issue a warning and refrain. + if $gl_set_x_corrupts_stderr_; then + warn_ "using SHELL=$SHELL with 'set -x' corrupts stderr" + else + set -x + fi + fi + + initial_cwd_=$PWD + fail=0 + + pfx_=`testdir_prefix_` + test_dir_=`mktempd_ "$initial_cwd_" "$pfx_-$ME_.XXXX"` \ + || fail_ "failed to create temporary directory in $initial_cwd_" + cd "$test_dir_" || fail_ "failed to cd to temporary directory" + + # As autoconf-generated configure scripts do, ensure that IFS + # is defined initially, so that saving and restoring $IFS works. + gl_init_sh_nl_=' +' + IFS=" "" $gl_init_sh_nl_" + + # This trap statement, along with a trap on 0 below, ensure that the + # temporary directory, $test_dir_, is removed upon exit as well as + # upon receipt of any of the listed signals. + for sig_ in 1 2 3 13 15; do + eval "trap 'Exit $(expr $sig_ + 128)' $sig_" + done +} + +# Create a temporary directory, much like mktemp -d does. +# Written by Jim Meyering. +# +# Usage: mktempd_ /tmp phoey.XXXXXXXXXX +# +# First, try to use the mktemp program. +# Failing that, we'll roll our own mktemp-like function: +# - try to get random bytes from /dev/urandom +# - failing that, generate output from a combination of quickly-varying +# sources and gzip. Ignore non-varying gzip header, and extract +# "random" bits from there. +# - given those bits, map to file-name bytes using tr, and try to create +# the desired directory. +# - make only $MAX_TRIES_ attempts + +# Helper function. Print $N pseudo-random bytes from a-zA-Z0-9. +rand_bytes_ () +{ + n_=$1 + + # Maybe try openssl rand -base64 $n_prime_|tr '+/=\012' abcd first? + # But if they have openssl, they probably have mktemp, too. + + chars_=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + dev_rand_=/dev/urandom + if test -r "$dev_rand_"; then + # Note: 256-length($chars_) == 194; 3 copies of $chars_ is 186 + 8 = 194. + dd ibs=$n_ count=1 if=$dev_rand_ 2>/dev/null \ + | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_ + return + fi + + n_plus_50_=`expr $n_ + 50` + cmds_='date; date +%N; free; who -a; w; ps auxww; ps ef; netstat -n' + data_=` (eval "$cmds_") 2>&1 | gzip ` + + # Ensure that $data_ has length at least 50+$n_ + while :; do + len_=`echo "$data_"|wc -c` + test $n_plus_50_ -le $len_ && break; + data_=` (echo "$data_"; eval "$cmds_") 2>&1 | gzip ` + done + + echo "$data_" \ + | dd bs=1 skip=50 count=$n_ 2>/dev/null \ + | LC_ALL=C tr -c $chars_ 01234567$chars_$chars_$chars_ +} + +mktempd_ () +{ + case $# in + 2);; + *) fail_ "Usage: mktempd_ DIR TEMPLATE";; + esac + + destdir_=$1 + template_=$2 + + MAX_TRIES_=4 + + # Disallow any trailing slash on specified destdir: + # it would subvert the post-mktemp "case"-based destdir test. + case $destdir_ in + /) ;; + */) fail_ "invalid destination dir: remove trailing slash(es)";; + esac + + case $template_ in + *XXXX) ;; + *) fail_ \ + "invalid template: $template_ (must have a suffix of at least 4 X's)";; + esac + + # First, try to use mktemp. + d=`unset TMPDIR; { mktemp -d -t -p "$destdir_" "$template_"; } 2>/dev/null` \ + || fail=1 + + # The resulting name must be in the specified directory. + case $d in "$destdir_"*);; *) fail=1;; esac + + # It must have created the directory. + test -d "$d" || fail=1 + + # It must have 0700 permissions. Handle sticky "S" bits. + perms=`ls -dgo "$d" 2>/dev/null|tr S -` || fail=1 + case $perms in drwx------*) ;; *) fail=1;; esac + + test $fail = 0 && { + echo "$d" + return + } + + # If we reach this point, we'll have to create a directory manually. + + # Get a copy of the template without its suffix of X's. + base_template_=`echo "$template_"|sed 's/XX*$//'` + + # Calculate how many X's we've just removed. + template_length_=`echo "$template_" | wc -c` + nx_=`echo "$base_template_" | wc -c` + nx_=`expr $template_length_ - $nx_` + + err_= + i_=1 + while :; do + X_=`rand_bytes_ $nx_` + candidate_dir_="$destdir_/$base_template_$X_" + err_=`mkdir -m 0700 "$candidate_dir_" 2>&1` \ + && { echo "$candidate_dir_"; return; } + test $MAX_TRIES_ -le $i_ && break; + i_=`expr $i_ + 1` + done + fail_ "$err_" +} + +# If you want to override the testdir_prefix_ function, +# or to add more utility functions, use this file. +test -f "$srcdir/init.cfg" \ + && . "$srcdir/init.cfg" + +setup_ "$@" +# This trap is here, rather than in the setup_ function, because some +# shells run the exit trap at shell function exit, rather than script exit. +trap remove_tmp_ 0 diff --git a/gettext-tools/gnulib-tests/inttypes.in.h b/gettext-tools/gnulib-tests/inttypes.in.h new file mode 100644 index 0000000..4b2a13b --- /dev/null +++ b/gettext-tools/gnulib-tests/inttypes.in.h @@ -0,0 +1,1140 @@ +/* Copyright (C) 2006-2014 Free Software Foundation, Inc. + Written by Paul Eggert, Bruno Haible, Derek Price. + This file is part of gnulib. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* + * ISO C 99 <inttypes.h> for platforms that lack it. + * <http://www.opengroup.org/susv3xbd/inttypes.h.html> + */ + +#if __GNUC__ >= 3 +@PRAGMA_SYSTEM_HEADER@ +#endif +@PRAGMA_COLUMNS@ + +/* Include the original <inttypes.h> if it exists, and if this file + has not been included yet or if this file includes gnulib stdint.h + which in turn includes this file. + The include_next requires a split double-inclusion guard. */ +#if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H +# if @HAVE_INTTYPES_H@ + + /* Some pre-C++11 <stdint.h> implementations need this. */ +# if defined __cplusplus && ! defined __STDC_FORMAT_MACROS +# define __STDC_FORMAT_MACROS 1 +# endif + +# @INCLUDE_NEXT@ @NEXT_INTTYPES_H@ +# endif +#endif + +#if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H +#define INTTYPES_H + +/* Include <stdint.h> or the gnulib replacement. + But avoid namespace pollution on glibc systems. */ +#ifndef __GLIBC__ +# include <stdint.h> +#endif +/* Get CHAR_BIT. */ +#include <limits.h> + +#if !(INT_MIN == INT32_MIN && INT_MAX == INT32_MAX) +# error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>." +#endif + +/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ + +/* The definition of _GL_ARG_NONNULL is copied here. */ + +/* The definition of _GL_WARN_ON_USE is copied here. */ + +/* 7.8.1 Macros for format specifiers */ + +#if defined _TNS_R_TARGET + /* Tandem NonStop R series and compatible platforms released before + July 2005 support %Ld but not %lld. */ +# define _LONG_LONG_FORMAT_PREFIX "L" +#else +# define _LONG_LONG_FORMAT_PREFIX "ll" +#endif + +#if !defined PRId8 || @PRI_MACROS_BROKEN@ +# undef PRId8 +# ifdef INT8_MAX +# define PRId8 "d" +# endif +#endif +#if !defined PRIi8 || @PRI_MACROS_BROKEN@ +# undef PRIi8 +# ifdef INT8_MAX +# define PRIi8 "i" +# endif +#endif +#if !defined PRIo8 || @PRI_MACROS_BROKEN@ +# undef PRIo8 +# ifdef UINT8_MAX +# define PRIo8 "o" +# endif +#endif +#if !defined PRIu8 || @PRI_MACROS_BROKEN@ +# undef PRIu8 +# ifdef UINT8_MAX +# define PRIu8 "u" +# endif +#endif +#if !defined PRIx8 || @PRI_MACROS_BROKEN@ +# undef PRIx8 +# ifdef UINT8_MAX +# define PRIx8 "x" +# endif +#endif +#if !defined PRIX8 || @PRI_MACROS_BROKEN@ +# undef PRIX8 +# ifdef UINT8_MAX +# define PRIX8 "X" +# endif +#endif +#if !defined PRId16 || @PRI_MACROS_BROKEN@ +# undef PRId16 +# ifdef INT16_MAX +# define PRId16 "d" +# endif +#endif +#if !defined PRIi16 || @PRI_MACROS_BROKEN@ +# undef PRIi16 +# ifdef INT16_MAX +# define PRIi16 "i" +# endif +#endif +#if !defined PRIo16 || @PRI_MACROS_BROKEN@ +# undef PRIo16 +# ifdef UINT16_MAX +# define PRIo16 "o" +# endif +#endif +#if !defined PRIu16 || @PRI_MACROS_BROKEN@ +# undef PRIu16 +# ifdef UINT16_MAX +# define PRIu16 "u" +# endif +#endif +#if !defined PRIx16 || @PRI_MACROS_BROKEN@ +# undef PRIx16 +# ifdef UINT16_MAX +# define PRIx16 "x" +# endif +#endif +#if !defined PRIX16 || @PRI_MACROS_BROKEN@ +# undef PRIX16 +# ifdef UINT16_MAX +# define PRIX16 "X" +# endif +#endif +#if !defined PRId32 || @PRI_MACROS_BROKEN@ +# undef PRId32 +# ifdef INT32_MAX +# define PRId32 "d" +# endif +#endif +#if !defined PRIi32 || @PRI_MACROS_BROKEN@ +# undef PRIi32 +# ifdef INT32_MAX +# define PRIi32 "i" +# endif +#endif +#if !defined PRIo32 || @PRI_MACROS_BROKEN@ +# undef PRIo32 +# ifdef UINT32_MAX +# define PRIo32 "o" +# endif +#endif +#if !defined PRIu32 || @PRI_MACROS_BROKEN@ +# undef PRIu32 +# ifdef UINT32_MAX +# define PRIu32 "u" +# endif +#endif +#if !defined PRIx32 || @PRI_MACROS_BROKEN@ +# undef PRIx32 +# ifdef UINT32_MAX +# define PRIx32 "x" +# endif +#endif +#if !defined PRIX32 || @PRI_MACROS_BROKEN@ +# undef PRIX32 +# ifdef UINT32_MAX +# define PRIX32 "X" +# endif +#endif +#ifdef INT64_MAX +# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@) +# define _PRI64_PREFIX "l" +# elif defined _MSC_VER || defined __MINGW32__ +# define _PRI64_PREFIX "I64" +# elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 +# define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX +# endif +# if !defined PRId64 || @PRI_MACROS_BROKEN@ +# undef PRId64 +# define PRId64 _PRI64_PREFIX "d" +# endif +# if !defined PRIi64 || @PRI_MACROS_BROKEN@ +# undef PRIi64 +# define PRIi64 _PRI64_PREFIX "i" +# endif +#endif +#ifdef UINT64_MAX +# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@) +# define _PRIu64_PREFIX "l" +# elif defined _MSC_VER || defined __MINGW32__ +# define _PRIu64_PREFIX "I64" +# elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 +# define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX +# endif +# if !defined PRIo64 || @PRI_MACROS_BROKEN@ +# undef PRIo64 +# define PRIo64 _PRIu64_PREFIX "o" +# endif +# if !defined PRIu64 || @PRI_MACROS_BROKEN@ +# undef PRIu64 +# define PRIu64 _PRIu64_PREFIX "u" +# endif +# if !defined PRIx64 || @PRI_MACROS_BROKEN@ +# undef PRIx64 +# define PRIx64 _PRIu64_PREFIX "x" +# endif +# if !defined PRIX64 || @PRI_MACROS_BROKEN@ +# undef PRIX64 +# define PRIX64 _PRIu64_PREFIX "X" +# endif +#endif + +#if !defined PRIdLEAST8 || @PRI_MACROS_BROKEN@ +# undef PRIdLEAST8 +# define PRIdLEAST8 "d" +#endif +#if !defined PRIiLEAST8 || @PRI_MACROS_BROKEN@ +# undef PRIiLEAST8 +# define PRIiLEAST8 "i" +#endif +#if !defined PRIoLEAST8 || @PRI_MACROS_BROKEN@ +# undef PRIoLEAST8 +# define PRIoLEAST8 "o" +#endif +#if !defined PRIuLEAST8 || @PRI_MACROS_BROKEN@ +# undef PRIuLEAST8 +# define PRIuLEAST8 "u" +#endif +#if !defined PRIxLEAST8 || @PRI_MACROS_BROKEN@ +# undef PRIxLEAST8 +# define PRIxLEAST8 "x" +#endif +#if !defined PRIXLEAST8 || @PRI_MACROS_BROKEN@ +# undef PRIXLEAST8 +# define PRIXLEAST8 "X" +#endif +#if !defined PRIdLEAST16 || @PRI_MACROS_BROKEN@ +# undef PRIdLEAST16 +# define PRIdLEAST16 "d" +#endif +#if !defined PRIiLEAST16 || @PRI_MACROS_BROKEN@ +# undef PRIiLEAST16 +# define PRIiLEAST16 "i" +#endif +#if !defined PRIoLEAST16 || @PRI_MACROS_BROKEN@ +# undef PRIoLEAST16 +# define PRIoLEAST16 "o" +#endif +#if !defined PRIuLEAST16 || @PRI_MACROS_BROKEN@ +# undef PRIuLEAST16 +# define PRIuLEAST16 "u" +#endif +#if !defined PRIxLEAST16 || @PRI_MACROS_BROKEN@ +# undef PRIxLEAST16 +# define PRIxLEAST16 "x" +#endif +#if !defined PRIXLEAST16 || @PRI_MACROS_BROKEN@ +# undef PRIXLEAST16 +# define PRIXLEAST16 "X" +#endif +#if !defined PRIdLEAST32 || @PRI_MACROS_BROKEN@ +# undef PRIdLEAST32 +# define PRIdLEAST32 "d" +#endif +#if !defined PRIiLEAST32 || @PRI_MACROS_BROKEN@ +# undef PRIiLEAST32 +# define PRIiLEAST32 "i" +#endif +#if !defined PRIoLEAST32 || @PRI_MACROS_BROKEN@ +# undef PRIoLEAST32 +# define PRIoLEAST32 "o" +#endif +#if !defined PRIuLEAST32 || @PRI_MACROS_BROKEN@ +# undef PRIuLEAST32 +# define PRIuLEAST32 "u" +#endif +#if !defined PRIxLEAST32 || @PRI_MACROS_BROKEN@ +# undef PRIxLEAST32 +# define PRIxLEAST32 "x" +#endif +#if !defined PRIXLEAST32 || @PRI_MACROS_BROKEN@ +# undef PRIXLEAST32 +# define PRIXLEAST32 "X" +#endif +#ifdef INT64_MAX +# if !defined PRIdLEAST64 || @PRI_MACROS_BROKEN@ +# undef PRIdLEAST64 +# define PRIdLEAST64 PRId64 +# endif +# if !defined PRIiLEAST64 || @PRI_MACROS_BROKEN@ +# undef PRIiLEAST64 +# define PRIiLEAST64 PRIi64 +# endif +#endif +#ifdef UINT64_MAX +# if !defined PRIoLEAST64 || @PRI_MACROS_BROKEN@ +# undef PRIoLEAST64 +# define PRIoLEAST64 PRIo64 +# endif +# if !defined PRIuLEAST64 || @PRI_MACROS_BROKEN@ +# undef PRIuLEAST64 +# define PRIuLEAST64 PRIu64 +# endif +# if !defined PRIxLEAST64 || @PRI_MACROS_BROKEN@ +# undef PRIxLEAST64 +# define PRIxLEAST64 PRIx64 +# endif +# if !defined PRIXLEAST64 || @PRI_MACROS_BROKEN@ +# undef PRIXLEAST64 +# define PRIXLEAST64 PRIX64 +# endif +#endif + +#if !defined PRIdFAST8 || @PRI_MACROS_BROKEN@ +# undef PRIdFAST8 +# if INT_FAST8_MAX > INT32_MAX +# define PRIdFAST8 PRId64 +# else +# define PRIdFAST8 "d" +# endif +#endif +#if !defined PRIiFAST8 || @PRI_MACROS_BROKEN@ +# undef PRIiFAST8 +# if INT_FAST8_MAX > INT32_MAX +# define PRIiFAST8 PRIi64 +# else +# define PRIiFAST8 "i" +# endif +#endif +#if !defined PRIoFAST8 || @PRI_MACROS_BROKEN@ +# undef PRIoFAST8 +# if UINT_FAST8_MAX > UINT32_MAX +# define PRIoFAST8 PRIo64 +# else +# define PRIoFAST8 "o" +# endif +#endif +#if !defined PRIuFAST8 || @PRI_MACROS_BROKEN@ +# undef PRIuFAST8 +# if UINT_FAST8_MAX > UINT32_MAX +# define PRIuFAST8 PRIu64 +# else +# define PRIuFAST8 "u" +# endif +#endif +#if !defined PRIxFAST8 || @PRI_MACROS_BROKEN@ +# undef PRIxFAST8 +# if UINT_FAST8_MAX > UINT32_MAX +# define PRIxFAST8 PRIx64 +# else +# define PRIxFAST8 "x" +# endif +#endif +#if !defined PRIXFAST8 || @PRI_MACROS_BROKEN@ +# undef PRIXFAST8 +# if UINT_FAST8_MAX > UINT32_MAX +# define PRIXFAST8 PRIX64 +# else +# define PRIXFAST8 "X" +# endif +#endif +#if !defined PRIdFAST16 || @PRI_MACROS_BROKEN@ +# undef PRIdFAST16 +# if INT_FAST16_MAX > INT32_MAX +# define PRIdFAST16 PRId64 +# else +# define PRIdFAST16 "d" +# endif +#endif +#if !defined PRIiFAST16 || @PRI_MACROS_BROKEN@ +# undef PRIiFAST16 +# if INT_FAST16_MAX > INT32_MAX +# define PRIiFAST16 PRIi64 +# else +# define PRIiFAST16 "i" +# endif +#endif +#if !defined PRIoFAST16 || @PRI_MACROS_BROKEN@ +# undef PRIoFAST16 +# if UINT_FAST16_MAX > UINT32_MAX +# define PRIoFAST16 PRIo64 +# else +# define PRIoFAST16 "o" +# endif +#endif +#if !defined PRIuFAST16 || @PRI_MACROS_BROKEN@ +# undef PRIuFAST16 +# if UINT_FAST16_MAX > UINT32_MAX +# define PRIuFAST16 PRIu64 +# else +# define PRIuFAST16 "u" +# endif +#endif +#if !defined PRIxFAST16 || @PRI_MACROS_BROKEN@ +# undef PRIxFAST16 +# if UINT_FAST16_MAX > UINT32_MAX +# define PRIxFAST16 PRIx64 +# else +# define PRIxFAST16 "x" +# endif +#endif +#if !defined PRIXFAST16 || @PRI_MACROS_BROKEN@ +# undef PRIXFAST16 +# if UINT_FAST16_MAX > UINT32_MAX +# define PRIXFAST16 PRIX64 +# else +# define PRIXFAST16 "X" +# endif +#endif +#if !defined PRIdFAST32 || @PRI_MACROS_BROKEN@ +# undef PRIdFAST32 +# if INT_FAST32_MAX > INT32_MAX +# define PRIdFAST32 PRId64 +# else +# define PRIdFAST32 "d" +# endif +#endif +#if !defined PRIiFAST32 || @PRI_MACROS_BROKEN@ +# undef PRIiFAST32 +# if INT_FAST32_MAX > INT32_MAX +# define PRIiFAST32 PRIi64 +# else +# define PRIiFAST32 "i" +# endif +#endif +#if !defined PRIoFAST32 || @PRI_MACROS_BROKEN@ +# undef PRIoFAST32 +# if UINT_FAST32_MAX > UINT32_MAX +# define PRIoFAST32 PRIo64 +# else +# define PRIoFAST32 "o" +# endif +#endif +#if !defined PRIuFAST32 || @PRI_MACROS_BROKEN@ +# undef PRIuFAST32 +# if UINT_FAST32_MAX > UINT32_MAX +# define PRIuFAST32 PRIu64 +# else +# define PRIuFAST32 "u" +# endif +#endif +#if !defined PRIxFAST32 || @PRI_MACROS_BROKEN@ +# undef PRIxFAST32 +# if UINT_FAST32_MAX > UINT32_MAX +# define PRIxFAST32 PRIx64 +# else +# define PRIxFAST32 "x" +# endif +#endif +#if !defined PRIXFAST32 || @PRI_MACROS_BROKEN@ +# undef PRIXFAST32 +# if UINT_FAST32_MAX > UINT32_MAX +# define PRIXFAST32 PRIX64 +# else +# define PRIXFAST32 "X" +# endif +#endif +#ifdef INT64_MAX +# if !defined PRIdFAST64 || @PRI_MACROS_BROKEN@ +# undef PRIdFAST64 +# define PRIdFAST64 PRId64 +# endif +# if !defined PRIiFAST64 || @PRI_MACROS_BROKEN@ +# undef PRIiFAST64 +# define PRIiFAST64 PRIi64 +# endif +#endif +#ifdef UINT64_MAX +# if !defined PRIoFAST64 || @PRI_MACROS_BROKEN@ +# undef PRIoFAST64 +# define PRIoFAST64 PRIo64 +# endif +# if !defined PRIuFAST64 || @PRI_MACROS_BROKEN@ +# undef PRIuFAST64 +# define PRIuFAST64 PRIu64 +# endif +# if !defined PRIxFAST64 || @PRI_MACROS_BROKEN@ +# undef PRIxFAST64 +# define PRIxFAST64 PRIx64 +# endif +# if !defined PRIXFAST64 || @PRI_MACROS_BROKEN@ +# undef PRIXFAST64 +# define PRIXFAST64 PRIX64 +# endif +#endif + +#if !defined PRIdMAX || @PRI_MACROS_BROKEN@ +# undef PRIdMAX +# if @INT32_MAX_LT_INTMAX_MAX@ +# define PRIdMAX PRId64 +# else +# define PRIdMAX "ld" +# endif +#endif +#if !defined PRIiMAX || @PRI_MACROS_BROKEN@ +# undef PRIiMAX +# if @INT32_MAX_LT_INTMAX_MAX@ +# define PRIiMAX PRIi64 +# else +# define PRIiMAX "li" +# endif +#endif +#if !defined PRIoMAX || @PRI_MACROS_BROKEN@ +# undef PRIoMAX +# if @UINT32_MAX_LT_UINTMAX_MAX@ +# define PRIoMAX PRIo64 +# else +# define PRIoMAX "lo" +# endif +#endif +#if !defined PRIuMAX || @PRI_MACROS_BROKEN@ +# undef PRIuMAX +# if @UINT32_MAX_LT_UINTMAX_MAX@ +# define PRIuMAX PRIu64 +# else +# define PRIuMAX "lu" +# endif +#endif +#if !defined PRIxMAX || @PRI_MACROS_BROKEN@ +# undef PRIxMAX +# if @UINT32_MAX_LT_UINTMAX_MAX@ +# define PRIxMAX PRIx64 +# else +# define PRIxMAX "lx" +# endif +#endif +#if !defined PRIXMAX || @PRI_MACROS_BROKEN@ +# undef PRIXMAX +# if @UINT32_MAX_LT_UINTMAX_MAX@ +# define PRIXMAX PRIX64 +# else +# define PRIXMAX "lX" +# endif +#endif + +#if !defined PRIdPTR || @PRI_MACROS_BROKEN@ +# undef PRIdPTR +# ifdef INTPTR_MAX +# define PRIdPTR @PRIPTR_PREFIX@ "d" +# endif +#endif +#if !defined PRIiPTR || @PRI_MACROS_BROKEN@ +# undef PRIiPTR +# ifdef INTPTR_MAX +# define PRIiPTR @PRIPTR_PREFIX@ "i" +# endif +#endif +#if !defined PRIoPTR || @PRI_MACROS_BROKEN@ +# undef PRIoPTR +# ifdef UINTPTR_MAX +# define PRIoPTR @PRIPTR_PREFIX@ "o" +# endif +#endif +#if !defined PRIuPTR || @PRI_MACROS_BROKEN@ +# undef PRIuPTR +# ifdef UINTPTR_MAX +# define PRIuPTR @PRIPTR_PREFIX@ "u" +# endif +#endif +#if !defined PRIxPTR || @PRI_MACROS_BROKEN@ +# undef PRIxPTR +# ifdef UINTPTR_MAX +# define PRIxPTR @PRIPTR_PREFIX@ "x" +# endif +#endif +#if !defined PRIXPTR || @PRI_MACROS_BROKEN@ +# undef PRIXPTR +# ifdef UINTPTR_MAX +# define PRIXPTR @PRIPTR_PREFIX@ "X" +# endif +#endif + +#if !defined SCNd8 || @PRI_MACROS_BROKEN@ +# undef SCNd8 +# ifdef INT8_MAX +# define SCNd8 "hhd" +# endif +#endif +#if !defined SCNi8 || @PRI_MACROS_BROKEN@ +# undef SCNi8 +# ifdef INT8_MAX +# define SCNi8 "hhi" +# endif +#endif +#if !defined SCNo8 || @PRI_MACROS_BROKEN@ +# undef SCNo8 +# ifdef UINT8_MAX +# define SCNo8 "hho" +# endif +#endif +#if !defined SCNu8 || @PRI_MACROS_BROKEN@ +# undef SCNu8 +# ifdef UINT8_MAX +# define SCNu8 "hhu" +# endif +#endif +#if !defined SCNx8 || @PRI_MACROS_BROKEN@ +# undef SCNx8 +# ifdef UINT8_MAX +# define SCNx8 "hhx" +# endif +#endif +#if !defined SCNd16 || @PRI_MACROS_BROKEN@ +# undef SCNd16 +# ifdef INT16_MAX +# define SCNd16 "hd" +# endif +#endif +#if !defined SCNi16 || @PRI_MACROS_BROKEN@ +# undef SCNi16 +# ifdef INT16_MAX +# define SCNi16 "hi" +# endif +#endif +#if !defined SCNo16 || @PRI_MACROS_BROKEN@ +# undef SCNo16 +# ifdef UINT16_MAX +# define SCNo16 "ho" +# endif +#endif +#if !defined SCNu16 || @PRI_MACROS_BROKEN@ +# undef SCNu16 +# ifdef UINT16_MAX +# define SCNu16 "hu" +# endif +#endif +#if !defined SCNx16 || @PRI_MACROS_BROKEN@ +# undef SCNx16 +# ifdef UINT16_MAX +# define SCNx16 "hx" +# endif +#endif +#if !defined SCNd32 || @PRI_MACROS_BROKEN@ +# undef SCNd32 +# ifdef INT32_MAX +# define SCNd32 "d" +# endif +#endif +#if !defined SCNi32 || @PRI_MACROS_BROKEN@ +# undef SCNi32 +# ifdef INT32_MAX +# define SCNi32 "i" +# endif +#endif +#if !defined SCNo32 || @PRI_MACROS_BROKEN@ +# undef SCNo32 +# ifdef UINT32_MAX +# define SCNo32 "o" +# endif +#endif +#if !defined SCNu32 || @PRI_MACROS_BROKEN@ +# undef SCNu32 +# ifdef UINT32_MAX +# define SCNu32 "u" +# endif +#endif +#if !defined SCNx32 || @PRI_MACROS_BROKEN@ +# undef SCNx32 +# ifdef UINT32_MAX +# define SCNx32 "x" +# endif +#endif +#ifdef INT64_MAX +# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@) +# define _SCN64_PREFIX "l" +# elif defined _MSC_VER || defined __MINGW32__ +# define _SCN64_PREFIX "I64" +# elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 +# define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX +# endif +# if !defined SCNd64 || @PRI_MACROS_BROKEN@ +# undef SCNd64 +# define SCNd64 _SCN64_PREFIX "d" +# endif +# if !defined SCNi64 || @PRI_MACROS_BROKEN@ +# undef SCNi64 +# define SCNi64 _SCN64_PREFIX "i" +# endif +#endif +#ifdef UINT64_MAX +# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@) +# define _SCNu64_PREFIX "l" +# elif defined _MSC_VER || defined __MINGW32__ +# define _SCNu64_PREFIX "I64" +# elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 +# define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX +# endif +# if !defined SCNo64 || @PRI_MACROS_BROKEN@ +# undef SCNo64 +# define SCNo64 _SCNu64_PREFIX "o" +# endif +# if !defined SCNu64 || @PRI_MACROS_BROKEN@ +# undef SCNu64 +# define SCNu64 _SCNu64_PREFIX "u" +# endif +# if !defined SCNx64 || @PRI_MACROS_BROKEN@ +# undef SCNx64 +# define SCNx64 _SCNu64_PREFIX "x" +# endif +#endif + +#if !defined SCNdLEAST8 || @PRI_MACROS_BROKEN@ +# undef SCNdLEAST8 +# define SCNdLEAST8 "hhd" +#endif +#if !defined SCNiLEAST8 || @PRI_MACROS_BROKEN@ +# undef SCNiLEAST8 +# define SCNiLEAST8 "hhi" +#endif +#if !defined SCNoLEAST8 || @PRI_MACROS_BROKEN@ +# undef SCNoLEAST8 +# define SCNoLEAST8 "hho" +#endif +#if !defined SCNuLEAST8 || @PRI_MACROS_BROKEN@ +# undef SCNuLEAST8 +# define SCNuLEAST8 "hhu" +#endif +#if !defined SCNxLEAST8 || @PRI_MACROS_BROKEN@ +# undef SCNxLEAST8 +# define SCNxLEAST8 "hhx" +#endif +#if !defined SCNdLEAST16 || @PRI_MACROS_BROKEN@ +# undef SCNdLEAST16 +# define SCNdLEAST16 "hd" +#endif +#if !defined SCNiLEAST16 || @PRI_MACROS_BROKEN@ +# undef SCNiLEAST16 +# define SCNiLEAST16 "hi" +#endif +#if !defined SCNoLEAST16 || @PRI_MACROS_BROKEN@ +# undef SCNoLEAST16 +# define SCNoLEAST16 "ho" +#endif +#if !defined SCNuLEAST16 || @PRI_MACROS_BROKEN@ +# undef SCNuLEAST16 +# define SCNuLEAST16 "hu" +#endif +#if !defined SCNxLEAST16 || @PRI_MACROS_BROKEN@ +# undef SCNxLEAST16 +# define SCNxLEAST16 "hx" +#endif +#if !defined SCNdLEAST32 || @PRI_MACROS_BROKEN@ +# undef SCNdLEAST32 +# define SCNdLEAST32 "d" +#endif +#if !defined SCNiLEAST32 || @PRI_MACROS_BROKEN@ +# undef SCNiLEAST32 +# define SCNiLEAST32 "i" +#endif +#if !defined SCNoLEAST32 || @PRI_MACROS_BROKEN@ +# undef SCNoLEAST32 +# define SCNoLEAST32 "o" +#endif +#if !defined SCNuLEAST32 || @PRI_MACROS_BROKEN@ +# undef SCNuLEAST32 +# define SCNuLEAST32 "u" +#endif +#if !defined SCNxLEAST32 || @PRI_MACROS_BROKEN@ +# undef SCNxLEAST32 +# define SCNxLEAST32 "x" +#endif +#ifdef INT64_MAX +# if !defined SCNdLEAST64 || @PRI_MACROS_BROKEN@ +# undef SCNdLEAST64 +# define SCNdLEAST64 SCNd64 +# endif +# if !defined SCNiLEAST64 || @PRI_MACROS_BROKEN@ +# undef SCNiLEAST64 +# define SCNiLEAST64 SCNi64 +# endif +#endif +#ifdef UINT64_MAX +# if !defined SCNoLEAST64 || @PRI_MACROS_BROKEN@ +# undef SCNoLEAST64 +# define SCNoLEAST64 SCNo64 +# endif +# if !defined SCNuLEAST64 || @PRI_MACROS_BROKEN@ +# undef SCNuLEAST64 +# define SCNuLEAST64 SCNu64 +# endif +# if !defined SCNxLEAST64 || @PRI_MACROS_BROKEN@ +# undef SCNxLEAST64 +# define SCNxLEAST64 SCNx64 +# endif +#endif + +#if !defined SCNdFAST8 || @PRI_MACROS_BROKEN@ +# undef SCNdFAST8 +# if INT_FAST8_MAX > INT32_MAX +# define SCNdFAST8 SCNd64 +# elif INT_FAST8_MAX == 0x7fff +# define SCNdFAST8 "hd" +# elif INT_FAST8_MAX == 0x7f +# define SCNdFAST8 "hhd" +# else +# define SCNdFAST8 "d" +# endif +#endif +#if !defined SCNiFAST8 || @PRI_MACROS_BROKEN@ +# undef SCNiFAST8 +# if INT_FAST8_MAX > INT32_MAX +# define SCNiFAST8 SCNi64 +# elif INT_FAST8_MAX == 0x7fff +# define SCNiFAST8 "hi" +# elif INT_FAST8_MAX == 0x7f +# define SCNiFAST8 "hhi" +# else +# define SCNiFAST8 "i" +# endif +#endif +#if !defined SCNoFAST8 || @PRI_MACROS_BROKEN@ +# undef SCNoFAST8 +# if UINT_FAST8_MAX > UINT32_MAX +# define SCNoFAST8 SCNo64 +# elif UINT_FAST8_MAX == 0xffff +# define SCNoFAST8 "ho" +# elif UINT_FAST8_MAX == 0xff +# define SCNoFAST8 "hho" +# else +# define SCNoFAST8 "o" +# endif +#endif +#if !defined SCNuFAST8 || @PRI_MACROS_BROKEN@ +# undef SCNuFAST8 +# if UINT_FAST8_MAX > UINT32_MAX +# define SCNuFAST8 SCNu64 +# elif UINT_FAST8_MAX == 0xffff +# define SCNuFAST8 "hu" +# elif UINT_FAST8_MAX == 0xff +# define SCNuFAST8 "hhu" +# else +# define SCNuFAST8 "u" +# endif +#endif +#if !defined SCNxFAST8 || @PRI_MACROS_BROKEN@ +# undef SCNxFAST8 +# if UINT_FAST8_MAX > UINT32_MAX +# define SCNxFAST8 SCNx64 +# elif UINT_FAST8_MAX == 0xffff +# define SCNxFAST8 "hx" +# elif UINT_FAST8_MAX == 0xff +# define SCNxFAST8 "hhx" +# else +# define SCNxFAST8 "x" +# endif +#endif +#if !defined SCNdFAST16 || @PRI_MACROS_BROKEN@ +# undef SCNdFAST16 +# if INT_FAST16_MAX > INT32_MAX +# define SCNdFAST16 SCNd64 +# elif INT_FAST16_MAX == 0x7fff +# define SCNdFAST16 "hd" +# else +# define SCNdFAST16 "d" +# endif +#endif +#if !defined SCNiFAST16 || @PRI_MACROS_BROKEN@ +# undef SCNiFAST16 +# if INT_FAST16_MAX > INT32_MAX +# define SCNiFAST16 SCNi64 +# elif INT_FAST16_MAX == 0x7fff +# define SCNiFAST16 "hi" +# else +# define SCNiFAST16 "i" +# endif +#endif +#if !defined SCNoFAST16 || @PRI_MACROS_BROKEN@ +# undef SCNoFAST16 +# if UINT_FAST16_MAX > UINT32_MAX +# define SCNoFAST16 SCNo64 +# elif UINT_FAST16_MAX == 0xffff +# define SCNoFAST16 "ho" +# else +# define SCNoFAST16 "o" +# endif +#endif +#if !defined SCNuFAST16 || @PRI_MACROS_BROKEN@ +# undef SCNuFAST16 +# if UINT_FAST16_MAX > UINT32_MAX +# define SCNuFAST16 SCNu64 +# elif UINT_FAST16_MAX == 0xffff +# define SCNuFAST16 "hu" +# else +# define SCNuFAST16 "u" +# endif +#endif +#if !defined SCNxFAST16 || @PRI_MACROS_BROKEN@ +# undef SCNxFAST16 +# if UINT_FAST16_MAX > UINT32_MAX +# define SCNxFAST16 SCNx64 +# elif UINT_FAST16_MAX == 0xffff +# define SCNxFAST16 "hx" +# else +# define SCNxFAST16 "x" +# endif +#endif +#if !defined SCNdFAST32 || @PRI_MACROS_BROKEN@ +# undef SCNdFAST32 +# if INT_FAST32_MAX > INT32_MAX +# define SCNdFAST32 SCNd64 +# else +# define SCNdFAST32 "d" +# endif +#endif +#if !defined SCNiFAST32 || @PRI_MACROS_BROKEN@ +# undef SCNiFAST32 +# if INT_FAST32_MAX > INT32_MAX +# define SCNiFAST32 SCNi64 +# else +# define SCNiFAST32 "i" +# endif +#endif +#if !defined SCNoFAST32 || @PRI_MACROS_BROKEN@ +# undef SCNoFAST32 +# if UINT_FAST32_MAX > UINT32_MAX +# define SCNoFAST32 SCNo64 +# else +# define SCNoFAST32 "o" +# endif +#endif +#if !defined SCNuFAST32 || @PRI_MACROS_BROKEN@ +# undef SCNuFAST32 +# if UINT_FAST32_MAX > UINT32_MAX +# define SCNuFAST32 SCNu64 +# else +# define SCNuFAST32 "u" +# endif +#endif +#if !defined SCNxFAST32 || @PRI_MACROS_BROKEN@ +# undef SCNxFAST32 +# if UINT_FAST32_MAX > UINT32_MAX +# define SCNxFAST32 SCNx64 +# else +# define SCNxFAST32 "x" +# endif +#endif +#ifdef INT64_MAX +# if !defined SCNdFAST64 || @PRI_MACROS_BROKEN@ +# undef SCNdFAST64 +# define SCNdFAST64 SCNd64 +# endif +# if !defined SCNiFAST64 || @PRI_MACROS_BROKEN@ +# undef SCNiFAST64 +# define SCNiFAST64 SCNi64 +# endif +#endif +#ifdef UINT64_MAX +# if !defined SCNoFAST64 || @PRI_MACROS_BROKEN@ +# undef SCNoFAST64 +# define SCNoFAST64 SCNo64 +# endif +# if !defined SCNuFAST64 || @PRI_MACROS_BROKEN@ +# undef SCNuFAST64 +# define SCNuFAST64 SCNu64 +# endif +# if !defined SCNxFAST64 || @PRI_MACROS_BROKEN@ +# undef SCNxFAST64 +# define SCNxFAST64 SCNx64 +# endif +#endif + +#if !defined SCNdMAX || @PRI_MACROS_BROKEN@ +# undef SCNdMAX +# if @INT32_MAX_LT_INTMAX_MAX@ +# define SCNdMAX SCNd64 +# else +# define SCNdMAX "ld" +# endif +#endif +#if !defined SCNiMAX || @PRI_MACROS_BROKEN@ +# undef SCNiMAX +# if @INT32_MAX_LT_INTMAX_MAX@ +# define SCNiMAX SCNi64 +# else +# define SCNiMAX "li" +# endif +#endif +#if !defined SCNoMAX || @PRI_MACROS_BROKEN@ +# undef SCNoMAX +# if @UINT32_MAX_LT_UINTMAX_MAX@ +# define SCNoMAX SCNo64 +# else +# define SCNoMAX "lo" +# endif +#endif +#if !defined SCNuMAX || @PRI_MACROS_BROKEN@ +# undef SCNuMAX +# if @UINT32_MAX_LT_UINTMAX_MAX@ +# define SCNuMAX SCNu64 +# else +# define SCNuMAX "lu" +# endif +#endif +#if !defined SCNxMAX || @PRI_MACROS_BROKEN@ +# undef SCNxMAX +# if @UINT32_MAX_LT_UINTMAX_MAX@ +# define SCNxMAX SCNx64 +# else +# define SCNxMAX "lx" +# endif +#endif + +#if !defined SCNdPTR || @PRI_MACROS_BROKEN@ +# undef SCNdPTR +# ifdef INTPTR_MAX +# define SCNdPTR @PRIPTR_PREFIX@ "d" +# endif +#endif +#if !defined SCNiPTR || @PRI_MACROS_BROKEN@ +# undef SCNiPTR +# ifdef INTPTR_MAX +# define SCNiPTR @PRIPTR_PREFIX@ "i" +# endif +#endif +#if !defined SCNoPTR || @PRI_MACROS_BROKEN@ +# undef SCNoPTR +# ifdef UINTPTR_MAX +# define SCNoPTR @PRIPTR_PREFIX@ "o" +# endif +#endif +#if !defined SCNuPTR || @PRI_MACROS_BROKEN@ +# undef SCNuPTR +# ifdef UINTPTR_MAX +# define SCNuPTR @PRIPTR_PREFIX@ "u" +# endif +#endif +#if !defined SCNxPTR || @PRI_MACROS_BROKEN@ +# undef SCNxPTR +# ifdef UINTPTR_MAX +# define SCNxPTR @PRIPTR_PREFIX@ "x" +# endif +#endif + +/* 7.8.2 Functions for greatest-width integer types */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if @GNULIB_IMAXABS@ +# if !@HAVE_DECL_IMAXABS@ +extern intmax_t imaxabs (intmax_t); +# endif +#elif defined GNULIB_POSIXCHECK +# undef imaxabs +# if HAVE_RAW_DECL_IMAXABS +_GL_WARN_ON_USE (imaxabs, "imaxabs is unportable - " + "use gnulib module imaxabs for portability"); +# endif +#endif + +#if @GNULIB_IMAXDIV@ +# if !@HAVE_DECL_IMAXDIV@ +# if !GNULIB_defined_imaxdiv_t +typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t; +# define GNULIB_defined_imaxdiv_t 1 +# endif +extern imaxdiv_t imaxdiv (intmax_t, intmax_t); +# endif +#elif defined GNULIB_POSIXCHECK +# undef imaxdiv +# if HAVE_RAW_DECL_IMAXDIV +_GL_WARN_ON_USE (imaxdiv, "imaxdiv is unportable - " + "use gnulib module imaxdiv for portability"); +# endif +#endif + +#if @GNULIB_STRTOIMAX@ +# if @REPLACE_STRTOIMAX@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef strtoimax +# define strtoimax rpl_strtoimax +# endif +_GL_FUNCDECL_RPL (strtoimax, intmax_t, + (const char *, char **, int) _GL_ARG_NONNULL ((1))); +_GL_CXXALIAS_RPL (strtoimax, intmax_t, (const char *, char **, int)); +# else +# if !@HAVE_DECL_STRTOIMAX@ +# undef strtoimax +_GL_FUNCDECL_SYS (strtoimax, intmax_t, + (const char *, char **, int) _GL_ARG_NONNULL ((1))); +# endif +_GL_CXXALIAS_SYS (strtoimax, intmax_t, (const char *, char **, int)); +# endif +_GL_CXXALIASWARN (strtoimax); +#elif defined GNULIB_POSIXCHECK +# undef strtoimax +# if HAVE_RAW_DECL_STRTOIMAX +_GL_WARN_ON_USE (strtoimax, "strtoimax is unportable - " + "use gnulib module strtoimax for portability"); +# endif +#endif + +#if @GNULIB_STRTOUMAX@ +# if @REPLACE_STRTOUMAX@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef strtoumax +# define strtoumax rpl_strtoumax +# endif +_GL_FUNCDECL_RPL (strtoumax, uintmax_t, + (const char *, char **, int) _GL_ARG_NONNULL ((1))); +_GL_CXXALIAS_RPL (strtoumax, uintmax_t, (const char *, char **, int)); +# else +# if !@HAVE_DECL_STRTOUMAX@ +# undef strtoumax +_GL_FUNCDECL_SYS (strtoumax, uintmax_t, + (const char *, char **, int) _GL_ARG_NONNULL ((1))); +# endif +_GL_CXXALIAS_SYS (strtoumax, uintmax_t, (const char *, char **, int)); +# endif +_GL_CXXALIASWARN (strtoumax); +#elif defined GNULIB_POSIXCHECK +# undef strtoumax +# if HAVE_RAW_DECL_STRTOUMAX +_GL_WARN_ON_USE (strtoumax, "strtoumax is unportable - " + "use gnulib module strtoumax for portability"); +# endif +#endif + +/* Don't bother defining or declaring wcstoimax and wcstoumax, since + wide-character functions like this are hardly ever useful. */ + +#ifdef __cplusplus +} +#endif + +#endif /* !defined INTTYPES_H && !defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H */ diff --git a/gettext-tools/gnulib-tests/lseek.c b/gettext-tools/gnulib-tests/lseek.c new file mode 100644 index 0000000..f19b41b --- /dev/null +++ b/gettext-tools/gnulib-tests/lseek.c @@ -0,0 +1,67 @@ +/* An lseek() function that detects pipes. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <unistd.h> + +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +/* Windows platforms. */ +/* Get GetFileType. */ +# include <windows.h> +/* Get _get_osfhandle. */ +# include "msvc-nothrow.h" +#else +# include <sys/stat.h> +#endif +#include <errno.h> + +#undef lseek + +off_t +rpl_lseek (int fd, off_t offset, int whence) +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* mingw lseek mistakenly succeeds on pipes, sockets, and terminals. */ + HANDLE h = (HANDLE) _get_osfhandle (fd); + if (h == INVALID_HANDLE_VALUE) + { + errno = EBADF; + return -1; + } + if (GetFileType (h) != FILE_TYPE_DISK) + { + errno = ESPIPE; + return -1; + } +#else + /* BeOS lseek mistakenly succeeds on pipes... */ + struct stat statbuf; + if (fstat (fd, &statbuf) < 0) + return -1; + if (!S_ISREG (statbuf.st_mode)) + { + errno = ESPIPE; + return -1; + } +#endif +#if _GL_WINDOWS_64_BIT_OFF_T + return _lseeki64 (fd, offset, whence); +#else + return lseek (fd, offset, whence); +#endif +} diff --git a/gettext-tools/gnulib-tests/macros.h b/gettext-tools/gnulib-tests/macros.h new file mode 100644 index 0000000..0d7e378 --- /dev/null +++ b/gettext-tools/gnulib-tests/macros.h @@ -0,0 +1,73 @@ +/* Common macros used by gnulib tests. + Copyright (C) 2006-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + + +/* This file contains macros that are used by many gnulib tests. + Put here only frequently used macros, say, used by 10 tests or more. */ + +#include <stdio.h> +#include <stdlib.h> + +/* Define ASSERT_STREAM before including this file if ASSERT must + target a stream other than stderr. */ +#ifndef ASSERT_STREAM +# define ASSERT_STREAM stderr +#endif + +/* ASSERT (condition); + verifies that the specified condition is fulfilled. If not, a message + is printed to ASSERT_STREAM if defined (defaulting to stderr if + undefined) and the program is terminated with an error code. + + This macro has the following properties: + - The programmer specifies the expected condition, not the failure + condition. This simplifies thinking. + - The condition is tested always, regardless of compilation flags. + (Unlike the macro from <assert.h>.) + - On Unix platforms, the tester can debug the test program with a + debugger (provided core dumps are enabled: "ulimit -c unlimited"). + - For the sake of platforms where no debugger is available (such as + some mingw systems), an error message is printed on the error + stream that includes the source location of the ASSERT invocation. + */ +#define ASSERT(expr) \ + do \ + { \ + if (!(expr)) \ + { \ + fprintf (ASSERT_STREAM, "%s:%d: assertion '%s' failed\n", \ + __FILE__, __LINE__, #expr); \ + fflush (ASSERT_STREAM); \ + abort (); \ + } \ + } \ + while (0) + +/* SIZEOF (array) + returns the number of elements of an array. It works for arrays that are + declared outside functions and for local variables of array type. It does + *not* work for function parameters of array type, because they are actually + parameters of pointer type. */ +#define SIZEOF(array) (sizeof (array) / sizeof (array[0])) + +/* STREQ (str1, str2) + Return true if two strings compare equal. */ +#define STREQ(a, b) (strcmp (a, b) == 0) + +/* Some numbers in the interval [0,1). */ +extern const float randomf[1000]; +extern const double randomd[1000]; +extern const long double randoml[1000]; diff --git a/gettext-tools/gnulib-tests/mbtowc-impl.h b/gettext-tools/gnulib-tests/mbtowc-impl.h new file mode 100644 index 0000000..3cc70b0 --- /dev/null +++ b/gettext-tools/gnulib-tests/mbtowc-impl.h @@ -0,0 +1,44 @@ +/* Convert multibyte character to wide character. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2011. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* We don't need a static internal state, because the encoding is not state + dependent, and when mbrtowc returns (size_t)(-2). we throw the result + away. */ + +int +mbtowc (wchar_t *pwc, const char *s, size_t n) +{ + if (s == NULL) + return 0; + else + { + mbstate_t state; + wchar_t wc; + size_t result; + + memset (&state, 0, sizeof (mbstate_t)); + result = mbrtowc (&wc, s, n, &state); + if (result == (size_t)-1 || result == (size_t)-2) + { + errno = EILSEQ; + return -1; + } + if (pwc != NULL) + *pwc = wc; + return (wc == 0 ? 0 : result); + } +} diff --git a/gettext-tools/gnulib-tests/mbtowc.c b/gettext-tools/gnulib-tests/mbtowc.c new file mode 100644 index 0000000..93a7445 --- /dev/null +++ b/gettext-tools/gnulib-tests/mbtowc.c @@ -0,0 +1,26 @@ +/* Convert multibyte character to wide character. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2011. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdlib.h> + +#include <errno.h> +#include <string.h> +#include <wchar.h> + +#include "mbtowc-impl.h" diff --git a/gettext-tools/gnulib-tests/putenv.c b/gettext-tools/gnulib-tests/putenv.c new file mode 100644 index 0000000..b9f5079 --- /dev/null +++ b/gettext-tools/gnulib-tests/putenv.c @@ -0,0 +1,194 @@ +/* Copyright (C) 1991, 1994, 1997-1998, 2000, 2003-2014 Free Software + Foundation, Inc. + + NOTE: The canonical source of this file is maintained with the GNU C + Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3 of the License, or any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <stdlib.h> + +#include <stddef.h> + +/* Include errno.h *after* sys/types.h to work around header problems + on AIX 3.2.5. */ +#include <errno.h> +#ifndef __set_errno +# define __set_errno(ev) ((errno) = (ev)) +#endif + +#include <string.h> +#include <unistd.h> + +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +# define WIN32_LEAN_AND_MEAN +# include <windows.h> +#endif + +#if _LIBC +# if HAVE_GNU_LD +# define environ __environ +# else +extern char **environ; +# endif +#endif + +#if _LIBC +/* This lock protects against simultaneous modifications of 'environ'. */ +# include <bits/libc-lock.h> +__libc_lock_define_initialized (static, envlock) +# define LOCK __libc_lock_lock (envlock) +# define UNLOCK __libc_lock_unlock (envlock) +#else +# define LOCK +# define UNLOCK +#endif + +static int +_unsetenv (const char *name) +{ + size_t len; +#if !HAVE_DECL__PUTENV + char **ep; +#endif + + if (name == NULL || *name == '\0' || strchr (name, '=') != NULL) + { + __set_errno (EINVAL); + return -1; + } + + len = strlen (name); + +#if HAVE_DECL__PUTENV + { + int putenv_result, putenv_errno; + char *name_ = malloc (len + 2); + memcpy (name_, name, len); + name_[len] = '='; + name_[len + 1] = 0; + putenv_result = _putenv (name_); + putenv_errno = errno; + free (name_); + __set_errno (putenv_errno); + return putenv_result; + } +#else + + LOCK; + + ep = environ; + while (*ep != NULL) + if (!strncmp (*ep, name, len) && (*ep)[len] == '=') + { + /* Found it. Remove this pointer by moving later ones back. */ + char **dp = ep; + + do + dp[0] = dp[1]; + while (*dp++); + /* Continue the loop in case NAME appears again. */ + } + else + ++ep; + + UNLOCK; + + return 0; +#endif +} + + +/* Put STRING, which is of the form "NAME=VALUE", in the environment. + If STRING contains no '=', then remove STRING from the environment. */ +int +putenv (char *string) +{ + const char *name_end = strchr (string, '='); + char **ep; + + if (name_end == NULL) + { + /* Remove the variable from the environment. */ + return _unsetenv (string); + } + +#if HAVE_DECL__PUTENV + /* Rely on _putenv to allocate the new environment. If other + parts of the application use _putenv, the !HAVE_DECL__PUTENV code + would fight over who owns the environ vector, causing a crash. */ + if (name_end[1]) + return _putenv (string); + else + { + /* _putenv ("NAME=") unsets NAME, so invoke _putenv ("NAME= ") + to allocate the environ vector and then replace the new + entry with "NAME=". */ + int putenv_result, putenv_errno; + char *name_x = malloc (name_end - string + sizeof "= "); + if (!name_x) + return -1; + memcpy (name_x, string, name_end - string + 1); + name_x[name_end - string + 1] = ' '; + name_x[name_end - string + 2] = 0; + putenv_result = _putenv (name_x); + putenv_errno = errno; + for (ep = environ; *ep; ep++) + if (strcmp (*ep, name_x) == 0) + { + *ep = string; + break; + } +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + if (putenv_result == 0) + { + /* _putenv propagated "NAME= " into the subprocess environment; + fix that by calling SetEnvironmentVariable directly. */ + name_x[name_end - string] = 0; + putenv_result = SetEnvironmentVariable (name_x, "") ? 0 : -1; + putenv_errno = ENOMEM; /* ENOMEM is the only way to fail. */ + } +# endif + free (name_x); + __set_errno (putenv_errno); + return putenv_result; + } +#else + for (ep = environ; *ep; ep++) + if (strncmp (*ep, string, name_end - string) == 0 + && (*ep)[name_end - string] == '=') + break; + + if (*ep) + *ep = string; + else + { + static char **last_environ = NULL; + size_t size = ep - environ; + char **new_environ = malloc ((size + 2) * sizeof *new_environ); + if (! new_environ) + return -1; + new_environ[0] = string; + memcpy (new_environ + 1, environ, (size + 1) * sizeof *new_environ); + free (last_environ); + last_environ = new_environ; + environ = new_environ; + } + + return 0; +#endif +} diff --git a/gettext-tools/gnulib-tests/read-file.c b/gettext-tools/gnulib-tests/read-file.c new file mode 100644 index 0000000..45f6690 --- /dev/null +++ b/gettext-tools/gnulib-tests/read-file.c @@ -0,0 +1,188 @@ +/* read-file.c -- read file contents into a string + Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. + Written by Simon Josefsson and Bruno Haible. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include "read-file.h" + +/* Get fstat. */ +#include <sys/stat.h> + +/* Get ftello. */ +#include <stdio.h> + +/* Get SIZE_MAX. */ +#include <stdint.h> + +/* Get malloc, realloc, free. */ +#include <stdlib.h> + +/* Get errno. */ +#include <errno.h> + +/* Read a STREAM and return a newly allocated string with the content, + and set *LENGTH to the length of the string. The string is + zero-terminated, but the terminating zero byte is not counted in + *LENGTH. On errors, *LENGTH is undefined, errno preserves the + values set by system functions (if any), and NULL is returned. */ +char * +fread_file (FILE *stream, size_t *length) +{ + char *buf = NULL; + size_t alloc = BUFSIZ; + + /* For a regular file, allocate a buffer that has exactly the right + size. This avoids the need to do dynamic reallocations later. */ + { + struct stat st; + + if (fstat (fileno (stream), &st) >= 0 && S_ISREG (st.st_mode)) + { + off_t pos = ftello (stream); + + if (pos >= 0 && pos < st.st_size) + { + off_t alloc_off = st.st_size - pos; + + /* '1' below, accounts for the trailing NUL. */ + if (SIZE_MAX - 1 < alloc_off) + { + errno = ENOMEM; + return NULL; + } + + alloc = alloc_off + 1; + } + } + } + + if (!(buf = malloc (alloc))) + return NULL; /* errno is ENOMEM. */ + + { + size_t size = 0; /* number of bytes read so far */ + int save_errno; + + for (;;) + { + /* This reads 1 more than the size of a regular file + so that we get eof immediately. */ + size_t requested = alloc - size; + size_t count = fread (buf + size, 1, requested, stream); + size += count; + + if (count != requested) + { + save_errno = errno; + if (ferror (stream)) + break; + + /* Shrink the allocated memory if possible. */ + if (size < alloc - 1) + { + char *smaller_buf = realloc (buf, size + 1); + if (smaller_buf != NULL) + buf = smaller_buf; + } + + buf[size] = '\0'; + *length = size; + return buf; + } + + { + char *new_buf; + + if (alloc == SIZE_MAX) + { + save_errno = ENOMEM; + break; + } + + if (alloc < SIZE_MAX - alloc / 2) + alloc = alloc + alloc / 2; + else + alloc = SIZE_MAX; + + if (!(new_buf = realloc (buf, alloc))) + { + save_errno = errno; + break; + } + + buf = new_buf; + } + } + + free (buf); + errno = save_errno; + return NULL; + } +} + +static char * +internal_read_file (const char *filename, size_t *length, const char *mode) +{ + FILE *stream = fopen (filename, mode); + char *out; + int save_errno; + + if (!stream) + return NULL; + + out = fread_file (stream, length); + + save_errno = errno; + + if (fclose (stream) != 0) + { + if (out) + { + save_errno = errno; + free (out); + } + errno = save_errno; + return NULL; + } + + return out; +} + +/* Open and read the contents of FILENAME, and return a newly + allocated string with the content, and set *LENGTH to the length of + the string. The string is zero-terminated, but the terminating + zero byte is not counted in *LENGTH. On errors, *LENGTH is + undefined, errno preserves the values set by system functions (if + any), and NULL is returned. */ +char * +read_file (const char *filename, size_t *length) +{ + return internal_read_file (filename, length, "r"); +} + +/* Open (on non-POSIX systems, in binary mode) and read the contents + of FILENAME, and return a newly allocated string with the content, + and set LENGTH to the length of the string. The string is + zero-terminated, but the terminating zero byte is not counted in + the LENGTH variable. On errors, *LENGTH is undefined, errno + preserves the values set by system functions (if any), and NULL is + returned. */ +char * +read_binary_file (const char *filename, size_t *length) +{ + return internal_read_file (filename, length, "rb"); +} diff --git a/gettext-tools/gnulib-tests/read-file.h b/gettext-tools/gnulib-tests/read-file.h new file mode 100644 index 0000000..f458b48 --- /dev/null +++ b/gettext-tools/gnulib-tests/read-file.h @@ -0,0 +1,33 @@ +/* read-file.h -- read file contents into a string + Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. + Written by Simon Josefsson. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#ifndef READ_FILE_H +#define READ_FILE_H + +/* Get size_t. */ +#include <stddef.h> + +/* Get FILE. */ +#include <stdio.h> + +extern char *fread_file (FILE * stream, size_t * length); + +extern char *read_file (const char *filename, size_t * length); + +extern char *read_binary_file (const char *filename, size_t * length); + +#endif /* READ_FILE_H */ diff --git a/gettext-tools/gnulib-tests/same-inode.h b/gettext-tools/gnulib-tests/same-inode.h new file mode 100644 index 0000000..584f606 --- /dev/null +++ b/gettext-tools/gnulib-tests/same-inode.h @@ -0,0 +1,33 @@ +/* Determine whether two stat buffers refer to the same file. + + Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifndef SAME_INODE_H +# define SAME_INODE_H 1 + +# ifdef __VMS +# define SAME_INODE(a, b) \ + ((a).st_ino[0] == (b).st_ino[0] \ + && (a).st_ino[1] == (b).st_ino[1] \ + && (a).st_ino[2] == (b).st_ino[2] \ + && (a).st_dev == (b).st_dev) +# else +# define SAME_INODE(a, b) \ + ((a).st_ino == (b).st_ino \ + && (a).st_dev == (b).st_dev) +# endif + +#endif diff --git a/gettext-tools/gnulib-tests/signature.h b/gettext-tools/gnulib-tests/signature.h new file mode 100644 index 0000000..0ae64e7 --- /dev/null +++ b/gettext-tools/gnulib-tests/signature.h @@ -0,0 +1,48 @@ +/* Macro for checking that a function declaration is compliant. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifndef SIGNATURE_CHECK + +/* Check that the function FN takes the specified arguments ARGS with + a return type of RET. This header is designed to be included after + <config.h> and the one system header that is supposed to contain + the function being checked, but prior to any other system headers + that are necessary for the unit test. Therefore, this file does + not include any system headers, nor reference anything outside of + the macro arguments. For an example, if foo.h should provide: + + extern int foo (char, float); + + then the unit test named test-foo.c would start out with: + + #include <config.h> + #include <foo.h> + #include "signature.h" + SIGNATURE_CHECK (foo, int, (char, float)); + #include <other.h> + ... +*/ +# define SIGNATURE_CHECK(fn, ret, args) \ + SIGNATURE_CHECK1 (fn, ret, args, __LINE__) + +/* Necessary to allow multiple SIGNATURE_CHECK lines in a unit test. + Note that the checks must not occupy the same line. */ +# define SIGNATURE_CHECK1(fn, ret, args, id) \ + SIGNATURE_CHECK2 (fn, ret, args, id) /* macroexpand line */ +# define SIGNATURE_CHECK2(fn, ret, args, id) \ + static ret (* _GL_UNUSED signature_check ## id) args = fn + +#endif /* SIGNATURE_CHECK */ diff --git a/gettext-tools/gnulib-tests/sleep.c b/gettext-tools/gnulib-tests/sleep.c new file mode 100644 index 0000000..2d86b7e --- /dev/null +++ b/gettext-tools/gnulib-tests/sleep.c @@ -0,0 +1,76 @@ +/* Pausing execution of the current thread. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2007. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <unistd.h> + +#include <limits.h> + +#include "verify.h" + +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + +# define WIN32_LEAN_AND_MEAN /* avoid including junk */ +# include <windows.h> + +unsigned int +sleep (unsigned int seconds) +{ + unsigned int remaining; + + /* Sleep for 1 second many times, because + 1. Sleep is not interruptible by Ctrl-C, + 2. we want to avoid arithmetic overflow while multiplying with 1000. */ + for (remaining = seconds; remaining > 0; remaining--) + Sleep (1000); + + return remaining; +} + +#elif HAVE_SLEEP + +# undef sleep + +/* Guarantee unlimited sleep and a reasonable return value. Cygwin + 1.5.x rejects attempts to sleep more than 49.7 days (2**32 + milliseconds), but uses uninitialized memory which results in a + garbage answer. Similarly, Linux 2.6.9 with glibc 2.3.4 has a too + small return value when asked to sleep more than 24.85 days. */ +unsigned int +rpl_sleep (unsigned int seconds) +{ + /* This requires int larger than 16 bits. */ + verify (UINT_MAX / 24 / 24 / 60 / 60); + const unsigned int limit = 24 * 24 * 60 * 60; + while (limit < seconds) + { + unsigned int result; + seconds -= limit; + result = sleep (limit); + if (result) + return seconds + result; + } + return sleep (seconds); +} + +#else /* !HAVE_SLEEP */ + + #error "Please port gnulib sleep.c to your platform, possibly using usleep() or select(), then report this to bug-gnulib." + +#endif diff --git a/gettext-tools/gnulib-tests/stdio-impl.h b/gettext-tools/gnulib-tests/stdio-impl.h new file mode 100644 index 0000000..299fe47 --- /dev/null +++ b/gettext-tools/gnulib-tests/stdio-impl.h @@ -0,0 +1,112 @@ +/* Implementation details of FILE streams. + Copyright (C) 2007-2008, 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Many stdio implementations have the same logic and therefore can share + the same implementation of stdio extension API, except that some fields + have different naming conventions, or their access requires some casts. */ + + +/* BSD stdio derived implementations. */ + +#if defined __NetBSD__ /* NetBSD */ +/* Get __NetBSD_Version__. */ +# include <sys/param.h> +#endif + +#include <errno.h> /* For detecting Plan9. */ + +#if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin */ + +# if defined __DragonFly__ /* DragonFly */ + /* See <http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/priv_stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>. */ +# define fp_ ((struct { struct __FILE_public pub; \ + struct { unsigned char *_base; int _size; } _bf; \ + void *cookie; \ + void *_close; \ + void *_read; \ + void *_seek; \ + void *_write; \ + struct { unsigned char *_base; int _size; } _ub; \ + int _ur; \ + unsigned char _ubuf[3]; \ + unsigned char _nbuf[1]; \ + struct { unsigned char *_base; int _size; } _lb; \ + int _blksize; \ + fpos_t _offset; \ + /* More fields, not relevant here. */ \ + } *) fp) + /* See <http://www.dragonflybsd.org/cvsweb/src/include/stdio.h?rev=HEAD&content-type=text/x-cvsweb-markup>. */ +# define _p pub._p +# define _flags pub._flags +# define _r pub._r +# define _w pub._w +# else +# define fp_ fp +# endif + +# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ || defined __ANDROID__ /* NetBSD >= 1.5ZA, OpenBSD, Android */ + /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> + and <http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> */ + struct __sfileext + { + struct __sbuf _ub; /* ungetc buffer */ + /* More fields, not relevant here. */ + }; +# define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub +# else /* FreeBSD, NetBSD <= 1.5Z, DragonFly, Mac OS X, Cygwin */ +# define fp_ub fp_->_ub +# endif + +# define HASUB(fp) (fp_ub._base != NULL) + +#endif + + +/* SystemV derived implementations. */ + +#ifdef __TANDEM /* NonStop Kernel */ +# ifndef _IOERR +/* These values were determined by the program 'stdioext-flags' at + <http://lists.gnu.org/archive/html/bug-gnulib/2010-12/msg00165.html>. */ +# define _IOERR 0x40 +# define _IOREAD 0x80 +# define _IOWRT 0x4 +# define _IORW 0x100 +# endif +#endif + +#if defined _IOERR + +# if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ +# define fp_ ((struct { unsigned char *_ptr; \ + unsigned char *_base; \ + unsigned char *_end; \ + long _cnt; \ + int _file; \ + unsigned int _flag; \ + } *) fp) +# else +# define fp_ fp +# endif + +# if defined _SCO_DS /* OpenServer */ +# define _cnt __cnt +# define _ptr __ptr +# define _base __base +# define _flag __flag +# endif + +#endif diff --git a/gettext-tools/gnulib-tests/symlink.c b/gettext-tools/gnulib-tests/symlink.c new file mode 100644 index 0000000..0e3fae2 --- /dev/null +++ b/gettext-tools/gnulib-tests/symlink.c @@ -0,0 +1,57 @@ +/* Stub for symlink(). + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <unistd.h> + +#include <errno.h> +#include <string.h> +#include <sys/stat.h> + + +#if HAVE_SYMLINK + +# undef symlink + +/* Create a symlink, but reject trailing slash. */ +int +rpl_symlink (char const *contents, char const *name) +{ + size_t len = strlen (name); + if (len && name[len - 1] == '/') + { + struct stat st; + if (lstat (name, &st) == 0) + errno = EEXIST; + return -1; + } + return symlink (contents, name); +} + +#else /* !HAVE_SYMLINK */ + +/* The system does not support symlinks. */ +int +symlink (char const *contents _GL_UNUSED, + char const *name _GL_UNUSED) +{ + errno = ENOSYS; + return -1; +} + +#endif /* !HAVE_SYMLINK */ diff --git a/gettext-tools/gnulib-tests/test-alignof.c b/gettext-tools/gnulib-tests/test-alignof.c new file mode 100644 index 0000000..c2d2a8d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-alignof.c @@ -0,0 +1,59 @@ +/* Test of <alignof.h>. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2009. */ + +#include <config.h> + +#include <alignof.h> + +#include <stddef.h> +#include <stdint.h> + +#include "verify.h" + +typedef long double longdouble; +typedef struct { char a[1]; } struct1; +typedef struct { char a[2]; } struct2; +typedef struct { char a[3]; } struct3; +typedef struct { char a[4]; } struct4; + +#define CHECK(type) \ + typedef struct { char slot1; type slot2; } type##_helper; \ + verify (alignof_slot (type) == offsetof (type##_helper, slot2)); \ + const int type##_slot_alignment = alignof_slot (type); \ + const int type##_type_alignment = alignof_type (type); + +CHECK (char) +CHECK (short) +CHECK (int) +CHECK (long) +CHECK (float) +CHECK (double) +CHECK (longdouble) +#ifdef INT64_MAX +CHECK (int64_t) +#endif +CHECK (struct1) +CHECK (struct2) +CHECK (struct3) +CHECK (struct4) + +int +main () +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-alloca-opt.c b/gettext-tools/gnulib-tests/test-alloca-opt.c new file mode 100644 index 0000000..3d8acc4 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-alloca-opt.c @@ -0,0 +1,62 @@ +/* Test of optional automatic memory allocation. + Copyright (C) 2005, 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <alloca.h> + +#if HAVE_ALLOCA + +static void +do_allocation (int n) +{ + void *ptr = alloca (n); + (void) ptr; +} + +void (*func) (int) = do_allocation; + +#endif + +int +main () +{ +#if HAVE_ALLOCA + int i; + + /* Repeat a lot of times, to make sure there's no memory leak. */ + for (i = 0; i < 100000; i++) + { + /* Try various values. + n = 0 gave a crash on Alpha with gcc-2.5.8. + Some versions of Mac OS X have a stack size limit of 512 KB. */ + func (34); + func (134); + func (399); + func (510823); + func (129321); + func (0); + func (4070); + func (4095); + func (1); + func (16582); + } +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-areadlink.c b/gettext-tools/gnulib-tests/test-areadlink.c new file mode 100644 index 0000000..b487d44 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-areadlink.c @@ -0,0 +1,53 @@ +/* Tests of areadlink. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include "areadlink.h" + +#include <fcntl.h> +#include <errno.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <unistd.h> + +#include "ignore-value.h" +#include "macros.h" + +#define BASE "test-areadlink.t" + +#include "test-areadlink.h" + +/* Wrapper for testing areadlink. */ +static char * +do_areadlink (char const *name, size_t ignored _GL_UNUSED) +{ + return areadlink (name); +} + +int +main (void) +{ + /* Remove any leftovers from a previous partial run. */ + ignore_value (system ("rm -rf " BASE "*")); + + return test_areadlink (do_areadlink, true); +} diff --git a/gettext-tools/gnulib-tests/test-areadlink.h b/gettext-tools/gnulib-tests/test-areadlink.h new file mode 100644 index 0000000..61bce29 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-areadlink.h @@ -0,0 +1,83 @@ +/* Tests of areadlink and friends. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +/* This file is designed to test areadlink(a), + areadlink_with_size(a,b), and areadlinkat(AT_FDCWD,a). FUNC is the + function to test; a length is always supplied, but may be ignored. + Assumes that BASE and ASSERT are already defined, and that + appropriate headers are already included. If PRINT, warn before + skipping symlink tests with status 77. */ + +static int +test_areadlink (char * (*func) (char const *, size_t), bool print) +{ + /* Sanity checks of failures. Mingw lacks symlink, but areadlink can + still distinguish between various errors. */ + errno = 0; + ASSERT (func ("no_such", 1) == NULL); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("no_such/", 1) == NULL); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("", 1) == NULL); + ASSERT (errno == ENOENT || errno == EINVAL); + errno = 0; + ASSERT (func (".", 1) == NULL); + ASSERT (errno == EINVAL); + errno = 0; + ASSERT (func ("./", 1) == NULL); + ASSERT (errno == EINVAL); + ASSERT (close (creat (BASE "file", 0600)) == 0); + errno = 0; + ASSERT (func (BASE "file", 1) == NULL); + ASSERT (errno == EINVAL); + errno = 0; + ASSERT (func (BASE "file/", 1) == NULL); + ASSERT (errno == ENOTDIR || errno == EINVAL); /* AIX yields EINVAL */ + ASSERT (unlink (BASE "file") == 0); + + /* Now test actual symlinks. */ + if (symlink (BASE "dir", BASE "link")) + { + if (print) + fputs ("skipping test: symlinks not supported on this file system\n", + stderr); + return 77; + } + ASSERT (mkdir (BASE "dir", 0700) == 0); + errno = 0; + ASSERT (func (BASE "link/", 1) == NULL); + ASSERT (errno == EINVAL); + { + /* Too small a guess is okay. */ + char *buf = func (BASE "link", 1); + ASSERT (buf); + ASSERT (strcmp (buf, BASE "dir") == 0); + free (buf); + /* Too large a guess is okay. */ + buf = func (BASE "link", 10000000); + ASSERT (buf); + ASSERT (strcmp (buf, BASE "dir") == 0); + free (buf); + } + ASSERT (rmdir (BASE "dir") == 0); + ASSERT (unlink (BASE "link") == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-argmatch.c b/gettext-tools/gnulib-tests/test-argmatch.c new file mode 100644 index 0000000..735cb76 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-argmatch.c @@ -0,0 +1,101 @@ +/* Test of exact or abbreviated match search. + Copyright (C) 1990, 1998-1999, 2001-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007, based on test code + by David MacKenzie <djm@gnu.ai.mit.edu>. */ + +#include <config.h> + +#include "argmatch.h" + +#include <stdlib.h> + +#include "progname.h" +#include "macros.h" + +/* Some packages define ARGMATCH_DIE and ARGMATCH_DIE_DECL in <config.h>, and + thus must link with a definition of that function. Provide it here. */ +#ifdef ARGMATCH_DIE_DECL + +_Noreturn ARGMATCH_DIE_DECL; +ARGMATCH_DIE_DECL { exit (1); } + +#endif + +enum backup_type +{ + no_backups, + simple_backups, + numbered_existing_backups, + numbered_backups +}; + +static const char *const backup_args[] = +{ + "no", "none", "off", + "simple", "never", "single", + "existing", "nil", "numbered-existing", + "numbered", "t", "newstyle", + NULL +}; + +static const enum backup_type backup_vals[] = +{ + no_backups, no_backups, no_backups, + simple_backups, simple_backups, simple_backups, + numbered_existing_backups, numbered_existing_backups, numbered_existing_backups, + numbered_backups, numbered_backups, numbered_backups +}; + +int +main (int argc, char *argv[]) +{ + set_program_name (argv[0]); + + /* Not found. */ + ASSERT (ARGMATCH ("klingon", backup_args, backup_vals) == -1); + + /* Exact match. */ + ASSERT (ARGMATCH ("none", backup_args, backup_vals) == 1); + ASSERT (ARGMATCH ("nil", backup_args, backup_vals) == 7); + + /* Too long. */ + ASSERT (ARGMATCH ("nilpotent", backup_args, backup_vals) == -1); + + /* Abbreviated. */ + ASSERT (ARGMATCH ("simpl", backup_args, backup_vals) == 3); + ASSERT (ARGMATCH ("simp", backup_args, backup_vals) == 3); + ASSERT (ARGMATCH ("sim", backup_args, backup_vals) == 3); + + /* Exact match and abbreviated. */ + ASSERT (ARGMATCH ("numbered", backup_args, backup_vals) == 9); + ASSERT (ARGMATCH ("numbere", backup_args, backup_vals) == -2); + ASSERT (ARGMATCH ("number", backup_args, backup_vals) == -2); + ASSERT (ARGMATCH ("numbe", backup_args, backup_vals) == -2); + ASSERT (ARGMATCH ("numb", backup_args, backup_vals) == -2); + ASSERT (ARGMATCH ("num", backup_args, backup_vals) == -2); + ASSERT (ARGMATCH ("nu", backup_args, backup_vals) == -2); + ASSERT (ARGMATCH ("n", backup_args, backup_vals) == -2); + + /* Ambiguous abbreviated. */ + ASSERT (ARGMATCH ("ne", backup_args, backup_vals) == -2); + + /* Ambiguous abbreviated, but same value. */ + ASSERT (ARGMATCH ("si", backup_args, backup_vals) == 3); + ASSERT (ARGMATCH ("s", backup_args, backup_vals) == 3); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-array_list.c b/gettext-tools/gnulib-tests/test-array_list.c new file mode 100644 index 0000000..5a9dbbd --- /dev/null +++ b/gettext-tools/gnulib-tests/test-array_list.c @@ -0,0 +1,329 @@ +/* Test of sequential list data type implementation. + Copyright (C) 2006-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2007. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include "gl_array_list.h" + +#include <stdlib.h> + +#include "progname.h" +#include "macros.h" + +static const char *objects[15] = + { + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o" + }; + +#define RANDOM(n) (rand () % (n)) +#define RANDOM_OBJECT() objects[RANDOM (SIZEOF (objects))] + +static void +check_equals (gl_list_t list1, gl_list_t list2) +{ + size_t n, i; + + n = gl_list_size (list1); + ASSERT (n == gl_list_size (list2)); + for (i = 0; i < n; i++) + { + ASSERT (gl_list_get_at (list1, i) == gl_list_get_at (list2, i)); + } +} + +int +main (int argc, char *argv[]) +{ + gl_list_t list1, list2; + + set_program_name (argv[0]); + + /* Allow the user to provide a non-default random seed on the command line. */ + if (argc > 1) + srand (atoi (argv[1])); + + { + size_t initial_size = RANDOM (50); + const void **contents = + (const void **) malloc (initial_size * sizeof (const void *)); + size_t i; + unsigned int repeat; + + for (i = 0; i < initial_size; i++) + contents[i] = RANDOM_OBJECT (); + + /* Create list1. */ + list1 = gl_list_nx_create (GL_ARRAY_LIST, NULL, NULL, NULL, true, + initial_size, contents); + ASSERT (list1 != NULL); + /* Create list2. */ + list2 = gl_list_nx_create_empty (GL_ARRAY_LIST, NULL, NULL, NULL, true); + ASSERT (list2 != NULL); + for (i = 0; i < initial_size; i++) + ASSERT (gl_list_nx_add_last (list2, contents[i]) != NULL); + + check_equals (list1, list2); + + for (repeat = 0; repeat < 10000; repeat++) + { + unsigned int operation = RANDOM (16); + switch (operation) + { + case 0: + if (gl_list_size (list1) > 0) + { + size_t index = RANDOM (gl_list_size (list1)); + const char *obj = RANDOM_OBJECT (); + gl_list_node_t node1, node2; + + node1 = gl_list_nx_set_at (list1, index, obj); + ASSERT (node1 != NULL); + ASSERT (gl_list_get_at (list1, index) == obj); + ASSERT (gl_list_node_value (list1, node1) == obj); + + node2 = gl_list_nx_set_at (list2, index, obj); + ASSERT (node2 != NULL); + ASSERT (gl_list_get_at (list2, index) == obj); + ASSERT (gl_list_node_value (list2, node2) == obj); + + if (index > 0) + { + ASSERT (gl_list_node_value (list1, gl_list_previous_node (list1, node1)) + == gl_list_get_at (list1, index - 1)); + } + if (index + 1 < gl_list_size (list1)) + { + ASSERT (gl_list_node_value (list1, gl_list_next_node (list1, node1)) + == gl_list_get_at (list1, index + 1)); + } + } + break; + case 1: + { + const char *obj = RANDOM_OBJECT (); + gl_list_node_t node1, node2; + node1 = gl_list_search (list1, obj); + node2 = gl_list_search (list2, obj); + if (node1 == NULL) + { + ASSERT (node2 == NULL); + } + else + { + ASSERT (node2 != NULL); + ASSERT (gl_list_node_value (list1, node1) == obj); + ASSERT (gl_list_node_value (list2, node2) == obj); + } + } + break; + case 2: + { + const char *obj = RANDOM_OBJECT (); + size_t index1, index2; + index1 = gl_list_indexof (list1, obj); + index2 = gl_list_indexof (list2, obj); + if (index1 == (size_t)(-1)) + { + ASSERT (index2 == (size_t)(-1)); + } + else + { + ASSERT (index2 != (size_t)(-1)); + ASSERT (gl_list_get_at (list1, index1) == obj); + ASSERT (gl_list_get_at (list2, index2) == obj); + ASSERT (index2 == index1); + } + } + break; + case 3: /* add 1 element */ + { + const char *obj = RANDOM_OBJECT (); + gl_list_node_t node1, node2; + node1 = gl_list_nx_add_first (list1, obj); + ASSERT (node1 != NULL); + node2 = gl_list_nx_add_first (list2, obj); + ASSERT (node2 != NULL); + ASSERT (gl_list_node_value (list1, node1) == obj); + ASSERT (gl_list_node_value (list2, node2) == obj); + ASSERT (gl_list_get_at (list1, 0) == obj); + ASSERT (gl_list_get_at (list2, 0) == obj); + } + break; + case 4: /* add 1 element */ + { + const char *obj = RANDOM_OBJECT (); + gl_list_node_t node1, node2; + node1 = gl_list_nx_add_last (list1, obj); + ASSERT (node1 != NULL); + node2 = gl_list_nx_add_last (list2, obj); + ASSERT (node2 != NULL); + ASSERT (gl_list_node_value (list1, node1) == obj); + ASSERT (gl_list_node_value (list2, node2) == obj); + ASSERT (gl_list_get_at (list1, gl_list_size (list1) - 1) == obj); + ASSERT (gl_list_get_at (list2, gl_list_size (list2) - 1) == obj); + } + break; + case 5: /* add 3 elements */ + { + const char *obj0 = RANDOM_OBJECT (); + const char *obj1 = RANDOM_OBJECT (); + const char *obj2 = RANDOM_OBJECT (); + gl_list_node_t node1, node2; + node1 = gl_list_nx_add_first (list1, obj2); + ASSERT (node1 != NULL); + node1 = gl_list_nx_add_before (list1, node1, obj0); + ASSERT (node1 != NULL); + node1 = gl_list_nx_add_after (list1, node1, obj1); + ASSERT (node1 != NULL); + node2 = gl_list_nx_add_first (list2, obj2); + ASSERT (node2 != NULL); + node2 = gl_list_nx_add_before (list2, node2, obj0); + ASSERT (node2 != NULL); + node2 = gl_list_nx_add_after (list2, node2, obj1); + ASSERT (node2 != NULL); + ASSERT (gl_list_node_value (list1, node1) == obj1); + ASSERT (gl_list_node_value (list2, node2) == obj1); + ASSERT (gl_list_get_at (list1, 0) == obj0); + ASSERT (gl_list_get_at (list1, 1) == obj1); + ASSERT (gl_list_get_at (list1, 2) == obj2); + ASSERT (gl_list_get_at (list2, 0) == obj0); + ASSERT (gl_list_get_at (list2, 1) == obj1); + ASSERT (gl_list_get_at (list2, 2) == obj2); + } + break; + case 6: /* add 1 element */ + { + size_t index = RANDOM (gl_list_size (list1) + 1); + const char *obj = RANDOM_OBJECT (); + gl_list_node_t node1, node2; + node1 = gl_list_nx_add_at (list1, index, obj); + ASSERT (node1 != NULL); + node2 = gl_list_nx_add_at (list2, index, obj); + ASSERT (node2 != NULL); + ASSERT (gl_list_get_at (list1, index) == obj); + ASSERT (gl_list_node_value (list1, node1) == obj); + ASSERT (gl_list_get_at (list2, index) == obj); + ASSERT (gl_list_node_value (list2, node2) == obj); + if (index > 0) + { + ASSERT (gl_list_node_value (list1, gl_list_previous_node (list1, node1)) + == gl_list_get_at (list1, index - 1)); + } + if (index + 1 < gl_list_size (list1)) + { + ASSERT (gl_list_node_value (list1, gl_list_next_node (list1, node1)) + == gl_list_get_at (list1, index + 1)); + } + } + break; + case 7: case 8: /* remove 1 element */ + if (gl_list_size (list1) > 0) + { + size_t n = gl_list_size (list1); + const char *obj = gl_list_get_at (list1, RANDOM (n)); + gl_list_node_t node1, node2; + node1 = gl_list_search (list1, obj); + node2 = gl_list_search (list2, obj); + ASSERT (node1 != NULL); + ASSERT (node2 != NULL); + ASSERT (gl_list_remove_node (list1, node1)); + ASSERT (gl_list_remove_node (list2, node2)); + ASSERT (gl_list_size (list1) == n - 1); + } + break; + case 9: case 10: /* remove 1 element */ + if (gl_list_size (list1) > 0) + { + size_t n = gl_list_size (list1); + size_t index = RANDOM (n); + ASSERT (gl_list_remove_at (list1, index)); + ASSERT (gl_list_remove_at (list2, index)); + ASSERT (gl_list_size (list1) == n - 1); + } + break; + case 11: case 12: /* remove 1 element */ + if (gl_list_size (list1) > 0) + { + size_t n = gl_list_size (list1); + const char *obj = gl_list_get_at (list1, RANDOM (n)); + ASSERT (gl_list_remove (list1, obj)); + ASSERT (gl_list_remove (list2, obj)); + ASSERT (gl_list_size (list1) == n - 1); + } + break; + case 13: + if (gl_list_size (list1) > 0) + { + size_t n = gl_list_size (list1); + const char *obj = "xyzzy"; + ASSERT (!gl_list_remove (list1, obj)); + ASSERT (!gl_list_remove (list2, obj)); + ASSERT (gl_list_size (list1) == n); + } + break; + case 14: + { + size_t n = gl_list_size (list1); + gl_list_iterator_t iter1, iter2; + const void *elt; + iter1 = gl_list_iterator (list1); + iter2 = gl_list_iterator (list2); + for (i = 0; i < n; i++) + { + ASSERT (gl_list_iterator_next (&iter1, &elt, NULL)); + ASSERT (gl_list_get_at (list1, i) == elt); + ASSERT (gl_list_iterator_next (&iter2, &elt, NULL)); + ASSERT (gl_list_get_at (list2, i) == elt); + } + ASSERT (!gl_list_iterator_next (&iter1, &elt, NULL)); + ASSERT (!gl_list_iterator_next (&iter2, &elt, NULL)); + gl_list_iterator_free (&iter1); + gl_list_iterator_free (&iter2); + } + break; + case 15: + { + size_t end = RANDOM (gl_list_size (list1) + 1); + size_t start = RANDOM (end + 1); + gl_list_iterator_t iter1, iter2; + const void *elt; + iter1 = gl_list_iterator_from_to (list1, start, end); + iter2 = gl_list_iterator_from_to (list2, start, end); + for (i = start; i < end; i++) + { + ASSERT (gl_list_iterator_next (&iter1, &elt, NULL)); + ASSERT (gl_list_get_at (list1, i) == elt); + ASSERT (gl_list_iterator_next (&iter2, &elt, NULL)); + ASSERT (gl_list_get_at (list2, i) == elt); + } + ASSERT (!gl_list_iterator_next (&iter1, &elt, NULL)); + ASSERT (!gl_list_iterator_next (&iter2, &elt, NULL)); + gl_list_iterator_free (&iter1); + gl_list_iterator_free (&iter2); + } + break; + } + check_equals (list1, list2); + } + + gl_list_free (list1); + gl_list_free (list2); + free (contents); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-atexit.c b/gettext-tools/gnulib-tests/test-atexit.c new file mode 100644 index 0000000..abfcc93 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-atexit.c @@ -0,0 +1,45 @@ +/* Test of execution of program termination handlers. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <stdlib.h> + +#include "signature.h" +SIGNATURE_CHECK (atexit, int, (void (*) (void))); + +#include <unistd.h> + +#define TEMPFILE "t-atexit.tmp" + +static void +clear_temp_file (void) +{ + unlink (TEMPFILE); +} + +int +main (int argc, char *argv[]) +{ + atexit (clear_temp_file); + + if (argc > 1) + exit (atoi (argv[1])); + else + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-atexit.sh b/gettext-tools/gnulib-tests/test-atexit.sh new file mode 100755 index 0000000..643a72f --- /dev/null +++ b/gettext-tools/gnulib-tests/test-atexit.sh @@ -0,0 +1,28 @@ +#!/bin/sh +: ${srcdir=.} +. "$srcdir/init.sh"; path_prepend_ . + +# Check that an atexit handler is called when main() returns normally. +echo > t-atexit.tmp +test-atexit +if test -f t-atexit.tmp; then + Exit 1 +fi + +# Check that an atexit handler is called when the program is left +# through exit(0). +echo > t-atexit.tmp +test-atexit 0 +if test -f t-atexit.tmp; then + Exit 1 +fi + +# Check that an atexit handler is called when the program is left +# through exit(1). +echo > t-atexit.tmp +test-atexit 1 +if test -f t-atexit.tmp; then + Exit 1 +fi + +Exit 0 diff --git a/gettext-tools/gnulib-tests/test-binary-io.c b/gettext-tools/gnulib-tests/test-binary-io.c new file mode 100644 index 0000000..1b29fbd --- /dev/null +++ b/gettext-tools/gnulib-tests/test-binary-io.c @@ -0,0 +1,69 @@ +/* Test of binary mode I/O. + Copyright (C) 2005, 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2005. */ + +#include <config.h> + +#include "binary-io.h" + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + /* Test the O_BINARY macro. */ + { + int fd = + open ("t-bin-out0.tmp", O_CREAT | O_TRUNC | O_RDWR | O_BINARY, 0600); + if (write (fd, "Hello\n", 6) < 0) + exit (1); + close (fd); + } + { + struct stat statbuf; + if (stat ("t-bin-out0.tmp", &statbuf) < 0) + exit (1); + ASSERT (statbuf.st_size == 6); + } + + switch (argv[1][0]) + { + case '1': + /* Test the set_binary_mode() function. */ + set_binary_mode (1, O_BINARY); + fputs ("Hello\n", stdout); + break; + + case '2': + /* Test the SET_BINARY macro. */ + SET_BINARY (1); + fputs ("Hello\n", stdout); + break; + + default: + break; + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-binary-io.sh b/gettext-tools/gnulib-tests/test-binary-io.sh new file mode 100755 index 0000000..c4dd6e9 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-binary-io.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +tmpfiles="" +trap 'rm -fr $tmpfiles' 1 2 3 15 + +tmpfiles="$tmpfiles t-bin-out0.tmp t-bin-out1.tmp t-bin-out2.tmp" +./test-binary-io${EXEEXT} 1 > t-bin-out1.tmp || exit 1 +cmp t-bin-out0.tmp t-bin-out1.tmp > /dev/null || exit 1 +./test-binary-io${EXEEXT} 2 > t-bin-out2.tmp || exit 1 +cmp t-bin-out0.tmp t-bin-out2.tmp > /dev/null || exit 1 + +rm -fr $tmpfiles + +exit 0 diff --git a/gettext-tools/gnulib-tests/test-btowc.c b/gettext-tools/gnulib-tests/test-btowc.c new file mode 100644 index 0000000..b9df2f0 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-btowc.c @@ -0,0 +1,63 @@ +/* Test of conversion of unibyte character to wide character. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <wchar.h> + +#include "signature.h" +SIGNATURE_CHECK (btowc, wint_t, (int)); + +#include <locale.h> +#include <stdio.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + int c; + + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + + ASSERT (btowc (EOF) == WEOF); + + if (argc > 1) + switch (argv[1][0]) + { + case '1': + /* Locale encoding is ISO-8859-1 or ISO-8859-15. */ + for (c = 0; c < 0x80; c++) + ASSERT (btowc (c) == c); + for (c = 0xA0; c < 0x100; c++) + ASSERT (btowc (c) != WEOF); + return 0; + + case '2': + /* Locale encoding is UTF-8. */ + for (c = 0; c < 0x80; c++) + ASSERT (btowc (c) == c); + for (c = 0x80; c < 0x100; c++) + ASSERT (btowc (c) == WEOF); + return 0; + } + + return 1; +} diff --git a/gettext-tools/gnulib-tests/test-btowc1.sh b/gettext-tools/gnulib-tests/test-btowc1.sh new file mode 100755 index 0000000..aaef48d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-btowc1.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test in an ISO-8859-1 or ISO-8859-15 locale. +: ${LOCALE_FR=fr_FR} +if test $LOCALE_FR = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no traditional french locale is installed" + else + echo "Skipping test: no traditional french locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_FR \ +./test-btowc${EXEEXT} 1 diff --git a/gettext-tools/gnulib-tests/test-btowc2.sh b/gettext-tools/gnulib-tests/test-btowc2.sh new file mode 100755 index 0000000..2e06038 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-btowc2.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test whether a specific UTF-8 locale is installed. +: ${LOCALE_FR_UTF8=fr_FR.UTF-8} +if test $LOCALE_FR_UTF8 = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no french Unicode locale is installed" + else + echo "Skipping test: no french Unicode locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_FR_UTF8 \ +./test-btowc${EXEEXT} 2 diff --git a/gettext-tools/gnulib-tests/test-byteswap.c b/gettext-tools/gnulib-tests/test-byteswap.c new file mode 100644 index 0000000..5f832b8 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-byteswap.c @@ -0,0 +1,32 @@ +/* Test of <byteswap.h> substitute. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <byteswap.h> + +#include "macros.h" + +int +main () +{ + ASSERT (bswap_16 (0xABCD) == 0xCDAB); + ASSERT (bswap_32 (0xDEADBEEF) == 0xEFBEADDE); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-c-ctype.c b/gettext-tools/gnulib-tests/test-c-ctype.c new file mode 100644 index 0000000..80bf703 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-c-ctype.c @@ -0,0 +1,386 @@ +/* Test of character handling in C locale. + Copyright (C) 2005, 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2005. */ + +#include <config.h> + +#include "c-ctype.h" + +#include <locale.h> + +#include "macros.h" + +static void +test_all (void) +{ + int c; + + for (c = -0x80; c < 0x100; c++) + { + ASSERT (c_isascii (c) == (c >= 0 && c < 0x80)); + + switch (c) + { + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + ASSERT (c_isalnum (c) == 1); + break; + default: + ASSERT (c_isalnum (c) == 0); + break; + } + + switch (c) + { + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + ASSERT (c_isalpha (c) == 1); + break; + default: + ASSERT (c_isalpha (c) == 0); + break; + } + + switch (c) + { + case '\t': case ' ': + ASSERT (c_isblank (c) == 1); + break; + default: + ASSERT (c_isblank (c) == 0); + break; + } + + ASSERT (c_iscntrl (c) == ((c >= 0 && c < 0x20) || c == 0x7f)); + + switch (c) + { + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + ASSERT (c_isdigit (c) == 1); + break; + default: + ASSERT (c_isdigit (c) == 0); + break; + } + + switch (c) + { + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': + case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': + case 's': case 't': case 'u': case 'v': case 'w': case 'x': + case 'y': case 'z': + ASSERT (c_islower (c) == 1); + break; + default: + ASSERT (c_islower (c) == 0); + break; + } + + ASSERT (c_isgraph (c) == ((c >= 0x20 && c < 0x7f) && c != ' ')); + + ASSERT (c_isprint (c) == (c >= 0x20 && c < 0x7f)); + + ASSERT (c_ispunct (c) == (c_isgraph (c) && !c_isalnum (c))); + + switch (c) + { + case ' ': case '\t': case '\n': case '\v': case '\f': case '\r': + ASSERT (c_isspace (c) == 1); + break; + default: + ASSERT (c_isspace (c) == 0); + break; + } + + switch (c) + { + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': + case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': + case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': + case 'Y': case 'Z': + ASSERT (c_isupper (c) == 1); + break; + default: + ASSERT (c_isupper (c) == 0); + break; + } + + switch (c) + { + case '0': case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + ASSERT (c_isxdigit (c) == 1); + break; + default: + ASSERT (c_isxdigit (c) == 0); + break; + } + + switch (c) + { + case 'A': + ASSERT (c_tolower (c) == 'a'); + ASSERT (c_toupper (c) == c); + break; + case 'B': + ASSERT (c_tolower (c) == 'b'); + ASSERT (c_toupper (c) == c); + break; + case 'C': + ASSERT (c_tolower (c) == 'c'); + ASSERT (c_toupper (c) == c); + break; + case 'D': + ASSERT (c_tolower (c) == 'd'); + ASSERT (c_toupper (c) == c); + break; + case 'E': + ASSERT (c_tolower (c) == 'e'); + ASSERT (c_toupper (c) == c); + break; + case 'F': + ASSERT (c_tolower (c) == 'f'); + ASSERT (c_toupper (c) == c); + break; + case 'G': + ASSERT (c_tolower (c) == 'g'); + ASSERT (c_toupper (c) == c); + break; + case 'H': + ASSERT (c_tolower (c) == 'h'); + ASSERT (c_toupper (c) == c); + break; + case 'I': + ASSERT (c_tolower (c) == 'i'); + ASSERT (c_toupper (c) == c); + break; + case 'J': + ASSERT (c_tolower (c) == 'j'); + ASSERT (c_toupper (c) == c); + break; + case 'K': + ASSERT (c_tolower (c) == 'k'); + ASSERT (c_toupper (c) == c); + break; + case 'L': + ASSERT (c_tolower (c) == 'l'); + ASSERT (c_toupper (c) == c); + break; + case 'M': + ASSERT (c_tolower (c) == 'm'); + ASSERT (c_toupper (c) == c); + break; + case 'N': + ASSERT (c_tolower (c) == 'n'); + ASSERT (c_toupper (c) == c); + break; + case 'O': + ASSERT (c_tolower (c) == 'o'); + ASSERT (c_toupper (c) == c); + break; + case 'P': + ASSERT (c_tolower (c) == 'p'); + ASSERT (c_toupper (c) == c); + break; + case 'Q': + ASSERT (c_tolower (c) == 'q'); + ASSERT (c_toupper (c) == c); + break; + case 'R': + ASSERT (c_tolower (c) == 'r'); + ASSERT (c_toupper (c) == c); + break; + case 'S': + ASSERT (c_tolower (c) == 's'); + ASSERT (c_toupper (c) == c); + break; + case 'T': + ASSERT (c_tolower (c) == 't'); + ASSERT (c_toupper (c) == c); + break; + case 'U': + ASSERT (c_tolower (c) == 'u'); + ASSERT (c_toupper (c) == c); + break; + case 'V': + ASSERT (c_tolower (c) == 'v'); + ASSERT (c_toupper (c) == c); + break; + case 'W': + ASSERT (c_tolower (c) == 'w'); + ASSERT (c_toupper (c) == c); + break; + case 'X': + ASSERT (c_tolower (c) == 'x'); + ASSERT (c_toupper (c) == c); + break; + case 'Y': + ASSERT (c_tolower (c) == 'y'); + ASSERT (c_toupper (c) == c); + break; + case 'Z': + ASSERT (c_tolower (c) == 'z'); + ASSERT (c_toupper (c) == c); + break; + case 'a': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'A'); + break; + case 'b': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'B'); + break; + case 'c': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'C'); + break; + case 'd': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'D'); + break; + case 'e': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'E'); + break; + case 'f': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'F'); + break; + case 'g': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'G'); + break; + case 'h': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'H'); + break; + case 'i': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'I'); + break; + case 'j': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'J'); + break; + case 'k': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'K'); + break; + case 'l': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'L'); + break; + case 'm': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'M'); + break; + case 'n': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'N'); + break; + case 'o': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'O'); + break; + case 'p': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'P'); + break; + case 'q': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'Q'); + break; + case 'r': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'R'); + break; + case 's': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'S'); + break; + case 't': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'T'); + break; + case 'u': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'U'); + break; + case 'v': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'V'); + break; + case 'w': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'W'); + break; + case 'x': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'X'); + break; + case 'y': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'Y'); + break; + case 'z': + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == 'Z'); + break; + default: + ASSERT (c_tolower (c) == c); + ASSERT (c_toupper (c) == c); + break; + } + } +} + +int +main () +{ + test_all (); + + setlocale (LC_ALL, "de_DE"); + test_all (); + + setlocale (LC_ALL, "ja_JP.EUC-JP"); + test_all (); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-c-strcase.sh b/gettext-tools/gnulib-tests/test-c-strcase.sh new file mode 100755 index 0000000..5fcf906 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-c-strcase.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Test in the C locale. +./test-c-strcasecmp${EXEEXT} || exit 1 +./test-c-strncasecmp${EXEEXT} || exit 1 + +# Test in an ISO-8859-1 or ISO-8859-15 locale. +: ${LOCALE_FR=fr_FR} +if test $LOCALE_FR != none; then + LC_ALL=$LOCALE_FR ./test-c-strcasecmp${EXEEXT} locale || exit 1 + LC_ALL=$LOCALE_FR ./test-c-strncasecmp${EXEEXT} locale || exit 1 +fi + +# Test in a Turkish UTF-8 locale. +: ${LOCALE_TR_UTF8=tr_TR.UTF-8} +if test $LOCALE_TR_UTF8 != none; then + LC_ALL=$LOCALE_TR_UTF8 ./test-c-strcasecmp${EXEEXT} locale || exit 1 + LC_ALL=$LOCALE_TR_UTF8 ./test-c-strncasecmp${EXEEXT} locale || exit 1 +fi + +exit 0 diff --git a/gettext-tools/gnulib-tests/test-c-strcasecmp.c b/gettext-tools/gnulib-tests/test-c-strcasecmp.c new file mode 100644 index 0000000..03088ff --- /dev/null +++ b/gettext-tools/gnulib-tests/test-c-strcasecmp.c @@ -0,0 +1,65 @@ +/* Test of case-insensitive string comparison function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "c-strcase.h" + +#include <locale.h> +#include <string.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + if (argc > 1) + { + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + } + + ASSERT (c_strcasecmp ("paragraph", "Paragraph") == 0); + + ASSERT (c_strcasecmp ("paragrapH", "parAgRaph") == 0); + + ASSERT (c_strcasecmp ("paragraph", "paraLyzed") < 0); + ASSERT (c_strcasecmp ("paraLyzed", "paragraph") > 0); + + ASSERT (c_strcasecmp ("para", "paragraph") < 0); + ASSERT (c_strcasecmp ("paragraph", "para") > 0); + + /* The following tests shows how c_strcasecmp() is different from + strcasecmp(). */ + + ASSERT (c_strcasecmp ("\311mile", "\351mile") < 0); + ASSERT (c_strcasecmp ("\351mile", "\311mile") > 0); + + /* The following tests shows how c_strcasecmp() is different from + mbscasecmp(). */ + + ASSERT (c_strcasecmp ("\303\266zg\303\274r", "\303\226ZG\303\234R") > 0); /* özgür */ + ASSERT (c_strcasecmp ("\303\226ZG\303\234R", "\303\266zg\303\274r") < 0); /* özgür */ + + /* This test shows how strings of different size cannot compare equal. */ + ASSERT (c_strcasecmp ("turkish", "TURK\304\260SH") < 0); + ASSERT (c_strcasecmp ("TURK\304\260SH", "turkish") > 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-c-strcasestr.c b/gettext-tools/gnulib-tests/test-c-strcasestr.c new file mode 100644 index 0000000..88c905b --- /dev/null +++ b/gettext-tools/gnulib-tests/test-c-strcasestr.c @@ -0,0 +1,241 @@ +/* Test of case-insensitive searching in a string. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "c-strcasestr.h" + +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +int +main () +{ + { + const char input[] = "foo"; + const char *result = c_strcasestr (input, ""); + ASSERT (result == input); + } + + { + const char input[] = "foo"; + const char *result = c_strcasestr (input, "O"); + ASSERT (result == input + 1); + } + + { + const char input[] = "ABC ABCDAB ABCDABCDABDE"; + const char *result = c_strcasestr (input, "ABCDaBD"); + ASSERT (result == input + 15); + } + + { + const char input[] = "ABC ABCDAB ABCDABCDABDE"; + const char *result = c_strcasestr (input, "ABCDaBE"); + ASSERT (result == NULL); + } + + { + const char input[] = "ABC ABCDAB ABCDABCDABDE"; + const char *result = c_strcasestr (input, "ABCDaBCD"); + ASSERT (result == input + 11); + } + + /* Check that a long periodic needle does not cause false positives. */ + { + const char input[] = ("F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD" + "_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD" + "_C3_A7_20_EF_BF_BD"); + const char need[] = "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; + const char *result = c_strcasestr (input, need); + ASSERT (result == NULL); + } + { + const char input[] = ("F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD" + "_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD" + "_C3_A7_20_EF_BF_BD_DA_B5_C2_A6_20" + "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"); + const char need[] = "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; + const char *result = c_strcasestr (input, need); + ASSERT (result == input + 115); + } + + /* Check that a very long haystack is handled quickly if the needle is + short and occurs near the beginning. */ + { + size_t repeat = 10000; + size_t m = 1000000; + const char *needle = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaAAAAaaaaaaa" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + char *haystack = (char *) malloc (m + 1); + if (haystack != NULL) + { + memset (haystack, 'A', m); + haystack[0] = 'B'; + haystack[m] = '\0'; + + for (; repeat > 0; repeat--) + { + ASSERT (c_strcasestr (haystack, needle) == haystack + 1); + } + + free (haystack); + } + } + + /* Check that a very long needle is discarded quickly if the haystack is + short. */ + { + size_t repeat = 10000; + size_t m = 1000000; + const char *haystack = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB"; + char *needle = (char *) malloc (m + 1); + if (needle != NULL) + { + memset (needle, 'A', m); + needle[m] = '\0'; + + for (; repeat > 0; repeat--) + { + ASSERT (c_strcasestr (haystack, needle) == NULL); + } + + free (needle); + } + } + + /* Check that the asymptotic worst-case complexity is not quadratic. */ + { + size_t m = 1000000; + char *haystack = (char *) malloc (2 * m + 2); + char *needle = (char *) malloc (m + 2); + if (haystack != NULL && needle != NULL) + { + const char *result; + + memset (haystack, 'A', 2 * m); + haystack[2 * m] = 'B'; + haystack[2 * m + 1] = '\0'; + + memset (needle, 'a', m); + needle[m] = 'B'; + needle[m + 1] = '\0'; + + result = c_strcasestr (haystack, needle); + ASSERT (result == haystack + m); + } + free (needle); + free (haystack); + } + + { + /* Ensure that with a barely periodic "short" needle, c_strcasestr's + search does not mistakenly skip just past the match point. + This use of c_strcasestr would mistakenly return NULL before + gnulib v0.0-4927. */ + const char *haystack = + "\n" + "with_build_libsubdir\n" + "with_local_prefix\n" + "with_gxx_include_dir\n" + "with_cpp_install_dir\n" + "enable_generated_files_in_srcdir\n" + "with_gnu_ld\n" + "with_ld\n" + "with_demangler_in_ld\n" + "with_gnu_as\n" + "with_as\n" + "enable_largefile\n" + "enable_werror_always\n" + "enable_checking\n" + "enable_coverage\n" + "enable_gather_detailed_mem_stats\n" + "enable_build_with_cxx\n" + "with_stabs\n" + "enable_multilib\n" + "enable___cxa_atexit\n" + "enable_decimal_float\n" + "enable_fixed_point\n" + "enable_threads\n" + "enable_tls\n" + "enable_objc_gc\n" + "with_dwarf2\n" + "enable_shared\n" + "with_build_sysroot\n" + "with_sysroot\n" + "with_specs\n" + "with_pkgversion\n" + "with_bugurl\n" + "enable_languages\n" + "with_multilib_list\n"; + const char *needle = "\n" + "with_GNU_ld\n"; + const char* p = c_strcasestr (haystack, needle); + ASSERT (p - haystack == 114); + } + + { + /* Same bug, shorter trigger. */ + const char *haystack = "..wi.D."; + const char *needle = ".d."; + const char* p = c_strcasestr (haystack, needle); + ASSERT (p - haystack == 4); + } + + { + /* Like the above, but trigger the flaw in two_way_long_needle + by using a needle of length LONG_NEEDLE_THRESHOLD (32) or greater. + Rather than trying to find the right alignment manually, I've + arbitrarily chosen the following needle and template for the + haystack, and ensure that for each placement of the needle in + that haystack, c_strcasestr finds it. */ + const char *needle = "\nwith_gnu_ld-extend-to-len-32-b\n"; + const char *h = + "\n" + "with_build_libsubdir\n" + "with_local_prefix\n" + "with_gxx_include_dir\n" + "with_cpp_install_dir\n" + "with_e_\n" + "..............................\n" + "with_FGHIJKLMNOPQRSTUVWXYZ\n" + "with_567890123456789\n" + "with_multilib_list\n"; + size_t h_len = strlen (h); + char *haystack = malloc (h_len + 1); + size_t i; + ASSERT (haystack); + for (i = 0; i < h_len - strlen (needle); i++) + { + const char *p; + memcpy (haystack, h, h_len + 1); + memcpy (haystack + i, needle, strlen (needle) + 1); + p = c_strcasestr (haystack, needle); + ASSERT (p); + ASSERT (p - haystack == i); + } + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-c-strncasecmp.c b/gettext-tools/gnulib-tests/test-c-strncasecmp.c new file mode 100644 index 0000000..0fba0e5 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-c-strncasecmp.c @@ -0,0 +1,79 @@ +/* Test of case-insensitive string comparison function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "c-strcase.h" + +#include <locale.h> +#include <string.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + if (argc > 1) + { + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + } + + ASSERT (c_strncasecmp ("paragraph", "Paragraph", 1000000) == 0); + ASSERT (c_strncasecmp ("paragraph", "Paragraph", 9) == 0); + + ASSERT (c_strncasecmp ("paragrapH", "parAgRaph", 1000000) == 0); + ASSERT (c_strncasecmp ("paragrapH", "parAgRaph", 9) == 0); + + ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 10) < 0); + ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 9) < 0); + ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 5) < 0); + ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 4) == 0); + ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 10) > 0); + ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 9) > 0); + ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 5) > 0); + ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 4) == 0); + + ASSERT (c_strncasecmp ("para", "paragraph", 10) < 0); + ASSERT (c_strncasecmp ("para", "paragraph", 9) < 0); + ASSERT (c_strncasecmp ("para", "paragraph", 5) < 0); + ASSERT (c_strncasecmp ("para", "paragraph", 4) == 0); + ASSERT (c_strncasecmp ("paragraph", "para", 10) > 0); + ASSERT (c_strncasecmp ("paragraph", "para", 9) > 0); + ASSERT (c_strncasecmp ("paragraph", "para", 5) > 0); + ASSERT (c_strncasecmp ("paragraph", "para", 4) == 0); + + /* The following tests shows how c_strncasecmp() is different from + strncasecmp(). */ + + ASSERT (c_strncasecmp ("\311mily", "\351mile", 4) < 0); + ASSERT (c_strncasecmp ("\351mile", "\311mily", 4) > 0); + + /* The following tests shows how c_strncasecmp() is different from + mbsncasecmp(). */ + + ASSERT (c_strncasecmp ("\303\266zg\303\274r", "\303\226ZG\303\234R", 99) > 0); /* özgür */ + ASSERT (c_strncasecmp ("\303\226ZG\303\234R", "\303\266zg\303\274r", 99) < 0); /* özgür */ + + /* This test shows how strings of different size cannot compare equal. */ + ASSERT (c_strncasecmp ("turkish", "TURK\304\260SH", 7) < 0); + ASSERT (c_strncasecmp ("TURK\304\260SH", "turkish", 7) > 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-c-strstr.c b/gettext-tools/gnulib-tests/test-c-strstr.c new file mode 100644 index 0000000..c27e0ef --- /dev/null +++ b/gettext-tools/gnulib-tests/test-c-strstr.c @@ -0,0 +1,127 @@ +/* Test of searching in a string. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "c-strstr.h" + +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +int +main () +{ + { + const char input[] = "foo"; + const char *result = c_strstr (input, ""); + ASSERT (result == input); + } + + { + const char input[] = "foo"; + const char *result = c_strstr (input, "o"); + ASSERT (result == input + 1); + } + + { + const char input[] = "ABC ABCDAB ABCDABCDABDE"; + const char *result = c_strstr (input, "ABCDABD"); + ASSERT (result == input + 15); + } + + { + const char input[] = "ABC ABCDAB ABCDABCDABDE"; + const char *result = c_strstr (input, "ABCDABE"); + ASSERT (result == NULL); + } + + /* Check that a very long haystack is handled quickly if the needle is + short and occurs near the beginning. */ + { + size_t repeat = 10000; + size_t m = 1000000; + const char *needle = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + char *haystack = (char *) malloc (m + 1); + if (haystack != NULL) + { + memset (haystack, 'A', m); + haystack[0] = 'B'; + haystack[m] = '\0'; + + for (; repeat > 0; repeat--) + { + ASSERT (c_strstr (haystack, needle) == haystack + 1); + } + + free (haystack); + } + } + + /* Check that a very long needle is discarded quickly if the haystack is + short. */ + { + size_t repeat = 10000; + size_t m = 1000000; + const char *haystack = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB"; + char *needle = (char *) malloc (m + 1); + if (needle != NULL) + { + memset (needle, 'A', m); + needle[m] = '\0'; + + for (; repeat > 0; repeat--) + { + ASSERT (c_strstr (haystack, needle) == NULL); + } + + free (needle); + } + } + + /* Check that the asymptotic worst-case complexity is not quadratic. */ + { + size_t m = 1000000; + char *haystack = (char *) malloc (2 * m + 2); + char *needle = (char *) malloc (m + 2); + if (haystack != NULL && needle != NULL) + { + const char *result; + + memset (haystack, 'A', 2 * m); + haystack[2 * m] = 'B'; + haystack[2 * m + 1] = '\0'; + + memset (needle, 'A', m); + needle[m] = 'B'; + needle[m + 1] = '\0'; + + result = c_strstr (haystack, needle); + ASSERT (result == haystack + m); + } + free (needle); + free (haystack); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-canonicalize-lgpl.c b/gettext-tools/gnulib-tests/test-canonicalize-lgpl.c new file mode 100644 index 0000000..0570053 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-canonicalize-lgpl.c @@ -0,0 +1,222 @@ +/* Test of execution of program termination handlers. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <stdlib.h> + +#include "signature.h" +SIGNATURE_CHECK (realpath, char *, (const char *, char *)); +SIGNATURE_CHECK (canonicalize_file_name, char *, (const char *)); + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <string.h> +#include <sys/stat.h> +#include <unistd.h> + +#include "same-inode.h" +#include "ignore-value.h" +#include "macros.h" + +#define BASE "t-can-lgpl.tmp" + +static void * +null_ptr (void) +{ + return NULL; +} + +int +main (void) +{ +#if GNULIB_TEST_CANONICALIZE + /* No need to test canonicalize-lgpl module if canonicalize is also + in use. */ + return 0; +#endif + + /* Setup some hierarchy to be used by this test. Start by removing + any leftovers from a previous partial run. */ + { + int fd; + ignore_value (system ("rm -rf " BASE " ise")); + ASSERT (mkdir (BASE, 0700) == 0); + fd = creat (BASE "/tra", 0600); + ASSERT (0 <= fd); + ASSERT (close (fd) == 0); + } + + /* Check for ., .., intermediate // handling, and for error cases. */ + { + char *result = canonicalize_file_name (BASE "//./..//" BASE "/tra"); + ASSERT (result != NULL); + ASSERT (strstr (result, "/" BASE "/tra") + == result + strlen (result) - strlen ("/" BASE "/tra")); + free (result); + errno = 0; + result = canonicalize_file_name (""); + ASSERT (result == NULL); + ASSERT (errno == ENOENT); + errno = 0; + result = canonicalize_file_name (null_ptr ()); + ASSERT (result == NULL); + ASSERT (errno == EINVAL); + } + + /* Check that a non-directory with trailing slash yields NULL. */ + { + char *result; + errno = 0; + result = canonicalize_file_name (BASE "/tra/"); + ASSERT (result == NULL); + ASSERT (errno == ENOTDIR); + } + + /* Check that a missing directory yields NULL. */ + { + char *result; + errno = 0; + result = canonicalize_file_name (BASE "/zzz/.."); + ASSERT (result == NULL); + ASSERT (errno == ENOENT); + } + + /* From here on out, tests involve symlinks. */ + if (symlink (BASE "/ket", "ise") != 0) + { + ASSERT (remove (BASE "/tra") == 0); + ASSERT (rmdir (BASE) == 0); + fputs ("skipping test: symlinks not supported on this file system\n", + stderr); + return 77; + } + ASSERT (symlink ("bef", BASE "/plo") == 0); + ASSERT (symlink ("tra", BASE "/huk") == 0); + ASSERT (symlink ("lum", BASE "/bef") == 0); + ASSERT (symlink ("wum", BASE "/ouk") == 0); + ASSERT (symlink ("../ise", BASE "/ket") == 0); + ASSERT (mkdir (BASE "/lum", 0700) == 0); + ASSERT (symlink ("//.//../..", BASE "/droot") == 0); + + /* Check that the symbolic link to a file can be resolved. */ + { + char *result1 = canonicalize_file_name (BASE "/huk"); + char *result2 = canonicalize_file_name (BASE "/tra"); + ASSERT (result1 != NULL); + ASSERT (result2 != NULL); + ASSERT (strcmp (result1, result2) == 0); + ASSERT (strcmp (result1 + strlen (result1) - strlen ("/" BASE "/tra"), + "/" BASE "/tra") == 0); + free (result1); + free (result2); + } + + /* Check that the symbolic link to a directory can be resolved. */ + { + char *result1 = canonicalize_file_name (BASE "/plo"); + char *result2 = canonicalize_file_name (BASE "/bef"); + char *result3 = canonicalize_file_name (BASE "/lum"); + ASSERT (result1 != NULL); + ASSERT (result2 != NULL); + ASSERT (result3 != NULL); + ASSERT (strcmp (result1, result2) == 0); + ASSERT (strcmp (result2, result3) == 0); + ASSERT (strcmp (result1 + strlen (result1) - strlen ("/" BASE "/lum"), + "/" BASE "/lum") == 0); + free (result1); + free (result2); + free (result3); + } + + /* Check that a symbolic link to a nonexistent file yields NULL. */ + { + char *result; + errno = 0; + result = canonicalize_file_name (BASE "/ouk"); + ASSERT (result == NULL); + ASSERT (errno == ENOENT); + } + + /* Check that a non-directory symlink with trailing slash yields NULL. */ + { + char *result; + errno = 0; + result = canonicalize_file_name (BASE "/huk/"); + ASSERT (result == NULL); + ASSERT (errno == ENOTDIR); + } + + /* Check that a missing directory via symlink yields NULL. */ + { + char *result; + errno = 0; + result = canonicalize_file_name (BASE "/ouk/.."); + ASSERT (result == NULL); + ASSERT (errno == ENOENT); + } + + /* Check that a loop of symbolic links is detected. */ + { + char *result; + errno = 0; + result = canonicalize_file_name ("ise"); + ASSERT (result == NULL); + ASSERT (errno == ELOOP); + } + + /* Check that leading // is honored correctly. */ + { + struct stat st1; + struct stat st2; + char *result1 = canonicalize_file_name ("//."); + char *result2 = canonicalize_file_name (BASE "/droot"); + ASSERT (result1); + ASSERT (result2); + ASSERT (stat ("/", &st1) == 0); + ASSERT (stat ("//", &st2) == 0); + if (SAME_INODE (st1, st2)) + { + ASSERT (strcmp (result1, "/") == 0); + ASSERT (strcmp (result2, "/") == 0); + } + else + { + ASSERT (strcmp (result1, "//") == 0); + ASSERT (strcmp (result2, "//") == 0); + } + free (result1); + free (result2); + } + + + /* Cleanup. */ + ASSERT (remove (BASE "/droot") == 0); + ASSERT (remove (BASE "/plo") == 0); + ASSERT (remove (BASE "/huk") == 0); + ASSERT (remove (BASE "/bef") == 0); + ASSERT (remove (BASE "/ouk") == 0); + ASSERT (remove (BASE "/ket") == 0); + ASSERT (remove (BASE "/lum") == 0); + ASSERT (remove (BASE "/tra") == 0); + ASSERT (remove (BASE) == 0); + ASSERT (remove ("ise") == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-cloexec.c b/gettext-tools/gnulib-tests/test-cloexec.c new file mode 100644 index 0000000..116953d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-cloexec.c @@ -0,0 +1,144 @@ +/* Test duplicating non-inheritable file descriptors. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include "cloexec.h" + +#include <errno.h> +#include <fcntl.h> +#include <unistd.h> + +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +/* Get declarations of the native Windows API functions. */ +# define WIN32_LEAN_AND_MEAN +# include <windows.h> +/* Get _get_osfhandle. */ +# include "msvc-nothrow.h" +#endif + +#include "binary-io.h" +#include "macros.h" + +/* Return non-zero if FD is open and inheritable across exec/spawn. */ +static int +is_inheritable (int fd) +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Windows, the initial state of unassigned standard file + descriptors is that they are open but point to an + INVALID_HANDLE_VALUE, and there is no fcntl. */ + HANDLE h = (HANDLE) _get_osfhandle (fd); + DWORD flags; + if (h == INVALID_HANDLE_VALUE || GetHandleInformation (h, &flags) == 0) + return 0; + return (flags & HANDLE_FLAG_INHERIT) != 0; +#else +# ifndef F_GETFD +# error Please port fcntl to your platform +# endif + int i = fcntl (fd, F_GETFD); + return 0 <= i && (i & FD_CLOEXEC) == 0; +#endif +} + +#if !O_BINARY +# define setmode(f,m) zero () +static int zero (void) { return 0; } +#endif + +/* Return non-zero if FD is open in the given MODE, which is either + O_TEXT or O_BINARY. */ +static int +is_mode (int fd, int mode) +{ + int value = setmode (fd, O_BINARY); + setmode (fd, value); + return mode == value; +} + +int +main (void) +{ + const char *file = "test-cloexec.tmp"; + int fd = creat (file, 0600); + int fd2; + int bad_fd = getdtablesize (); + + /* Assume std descriptors were provided by invoker. */ + ASSERT (STDERR_FILENO < fd); + ASSERT (is_inheritable (fd)); + + /* Normal use of set_cloexec_flag. */ + ASSERT (set_cloexec_flag (fd, true) == 0); +#if !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) + ASSERT (!is_inheritable (fd)); +#endif + ASSERT (set_cloexec_flag (fd, false) == 0); + ASSERT (is_inheritable (fd)); + + /* Normal use of dup_cloexec. */ + fd2 = dup_cloexec (fd); + ASSERT (fd < fd2); + ASSERT (!is_inheritable (fd2)); + ASSERT (close (fd) == 0); + ASSERT (dup_cloexec (fd2) == fd); + ASSERT (!is_inheritable (fd)); + ASSERT (close (fd2) == 0); + + /* On systems that distinguish between text and binary mode, + dup_cloexec reuses the mode of the source. */ + setmode (fd, O_BINARY); + ASSERT (is_mode (fd, O_BINARY)); + fd2 = dup_cloexec (fd); + ASSERT (fd < fd2); + ASSERT (is_mode (fd2, O_BINARY)); + ASSERT (close (fd2) == 0); + setmode (fd, O_TEXT); + ASSERT (is_mode (fd, O_TEXT)); + fd2 = dup_cloexec (fd); + ASSERT (fd < fd2); + ASSERT (is_mode (fd2, O_TEXT)); + ASSERT (close (fd2) == 0); + + /* Test error handling. */ + errno = 0; + ASSERT (set_cloexec_flag (-1, false) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (set_cloexec_flag (bad_fd, false) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (set_cloexec_flag (fd2, false) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (dup_cloexec (-1) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (dup_cloexec (bad_fd) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (dup_cloexec (fd2) == -1); + ASSERT (errno == EBADF); + + /* Clean up. */ + ASSERT (close (fd) == 0); + ASSERT (unlink (file) == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-close.c b/gettext-tools/gnulib-tests/test-close.c new file mode 100644 index 0000000..44bce54 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-close.c @@ -0,0 +1,45 @@ +/* Test closing a file or socket. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (close, int, (int)); + +#include <errno.h> + +#include "macros.h" + +int +main (void) +{ + /* Test behaviour for invalid file descriptors. */ + { + errno = 0; + ASSERT (close (-1) == -1); + ASSERT (errno == EBADF); + } + { + close (99); + errno = 0; + ASSERT (close (99) == -1); + ASSERT (errno == EBADF); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-copy-acl-1.sh b/gettext-tools/gnulib-tests/test-copy-acl-1.sh new file mode 100755 index 0000000..2f9880e --- /dev/null +++ b/gettext-tools/gnulib-tests/test-copy-acl-1.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# Test copy-acl on the file system of /var/tmp, which usually is a local +# file system. + +if test -d /var/tmp; then + TMPDIR=/var/tmp +else + TMPDIR=/tmp +fi +export TMPDIR + +exec "${srcdir}/test-copy-acl.sh" diff --git a/gettext-tools/gnulib-tests/test-copy-acl-2.sh b/gettext-tools/gnulib-tests/test-copy-acl-2.sh new file mode 100755 index 0000000..984602d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-copy-acl-2.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# Test copy-acl on the file system of the build directory, which may be +# a local file system or NFS mounted. + +TMPDIR=`pwd` +export TMPDIR + +exec "${srcdir}/test-copy-acl.sh" diff --git a/gettext-tools/gnulib-tests/test-copy-acl.c b/gettext-tools/gnulib-tests/test-copy-acl.c new file mode 100644 index 0000000..82b5abf --- /dev/null +++ b/gettext-tools/gnulib-tests/test-copy-acl.c @@ -0,0 +1,76 @@ +/* Test of copying of files. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include "acl.h" + +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> + +#include "progname.h" +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + const char *file1; + const char *file2; + int fd1; + struct stat statbuf; + int mode; + int fd2; + + set_program_name (argv[0]); + + ASSERT (argc == 3); + + file1 = argv[1]; + file2 = argv[2]; + + fd1 = open (file1, O_RDONLY); + if (fd1 < 0 || fstat (fd1, &statbuf) < 0) + { + fprintf (stderr, "could not open file \"%s\"\n", file1); + exit (EXIT_FAILURE); + } + mode = statbuf.st_mode & 07777; + + fd2 = open (file2, O_WRONLY, 0600); + if (fd2 < 0) + { + fprintf (stderr, "could not open file \"%s\"\n", file2); + exit (EXIT_FAILURE); + } + +#if USE_ACL + if (copy_acl (file1, fd1, file2, fd2, mode)) + exit (EXIT_FAILURE); +#else + chmod (file2, mode); +#endif + + close (fd2); + close (fd1); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-copy-acl.sh b/gettext-tools/gnulib-tests/test-copy-acl.sh new file mode 100755 index 0000000..147bf56 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-copy-acl.sh @@ -0,0 +1,659 @@ +#!/bin/sh + +# Show all commands when run with environment variable VERBOSE=yes. +test -z "$VERBOSE" || set -x + +test "$USE_ACL" = 0 && + { + echo "Skipping test: insufficient ACL support" + exit 77 + } + +# func_tmpdir +# creates a temporary directory. +# Sets variable +# - tmp pathname of freshly created temporary directory +func_tmpdir () +{ + # Use the environment variable TMPDIR, falling back to /tmp. This allows + # users to specify a different temporary directory, for example, if their + # /tmp is filled up or too small. + : ${TMPDIR=/tmp} + { + # Use the mktemp program if available. If not available, hide the error + # message. + tmp=`(umask 077 && mktemp -d "$TMPDIR/glXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { + # Use a simple mkdir command. It is guaranteed to fail if the directory + # already exists. $RANDOM is bash specific and expands to empty in shells + # other than bash, ksh and zsh. Its use does not increase security; + # rather, it minimizes the probability of failure in a very cluttered /tmp + # directory. + tmp=$TMPDIR/gl$$-$RANDOM + (umask 077 && mkdir "$tmp") + } || + { + echo "$0: cannot create a temporary directory in $TMPDIR" >&2 + exit 1 + } +} + +func_tmpdir +builddir=`pwd` +cd "$builddir" || + { + echo "$0: cannot determine build directory (unreadable parent dir?)" >&2 + exit 1 + } +# Switch to a temporary directory, to increase the likelihood that ACLs are +# supported on the current file system. (/tmp is usually locally mounted, +# whereas the build dir is sometimes NFS-mounted.) +( cd "$tmp" + + # Prepare tmpfile0. + rm -f tmpfile[0-9] tmpaclout[0-2] + echo "Simple contents" > tmpfile0 + chmod 600 tmpfile0 + + # Classification of the platform according to the programs available for + # manipulating ACLs. + # Possible values are: + # linux, cygwin, freebsd, solaris, hpux, hpuxjfs, osf1, aix, macosx, irix, none. + # TODO: Support also native Windows platforms (mingw). + acl_flavor=none + if (getfacl tmpfile0 >/dev/null) 2>/dev/null; then + # Platforms with the getfacl and setfacl programs. + # Linux, FreeBSD, Solaris, Cygwin. + if (setfacl --help >/dev/null) 2>/dev/null; then + # Linux, Cygwin. + if (LC_ALL=C setfacl --help | grep ' --set-file' >/dev/null) 2>/dev/null; then + # Linux. + acl_flavor=linux + else + acl_flavor=cygwin + fi + else + # FreeBSD, Solaris. + if (LC_ALL=C setfacl 2>&1 | grep '\-x entries' >/dev/null) 2>/dev/null; then + # FreeBSD. + acl_flavor=freebsd + else + # Solaris. + acl_flavor=solaris + fi + fi + else + if (lsacl / >/dev/null) 2>/dev/null; then + # Platforms with the lsacl and chacl programs. + # HP-UX, sometimes also IRIX. + if (getacl tmpfile0 >/dev/null) 2>/dev/null; then + # HP-UX 11.11 or newer. + acl_flavor=hpuxjfs + else + # HP-UX 11.00. + acl_flavor=hpux + fi + else + if (getacl tmpfile0 >/dev/null) 2>/dev/null; then + # Tru64, NonStop Kernel. + if (getacl -m tmpfile0 >/dev/null) 2>/dev/null; then + # Tru64. + acl_flavor=osf1 + else + # NonStop Kernel. + acl_flavor=nsk + fi + else + if (aclget tmpfile0 >/dev/null) 2>/dev/null; then + # AIX. + acl_flavor=aix + else + if (fsaclctl -v >/dev/null) 2>/dev/null; then + # Mac OS X. + acl_flavor=macosx + else + if test -f /sbin/chacl; then + # IRIX. + acl_flavor=irix + fi + fi + fi + fi + fi + fi + + # Define a function to test for the same ACLs, from the point of view of + # the programs. + # func_test_same_acls file1 file2 + case $acl_flavor in + linux | cygwin | freebsd | solaris) + func_test_same_acls () + { + getfacl "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + getfacl "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + hpux) + func_test_same_acls () + { + lsacl "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + lsacl "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + hpuxjfs) + func_test_same_acls () + { + { lsacl "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + lsacl "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } && + { getacl "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + getacl "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + } + ;; + osf1 | nsk) + func_test_same_acls () + { + getacl "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + getacl "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + aix) + func_test_same_acls () + { + aclget "$1" > tmpaclout1 + aclget "$2" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + macosx) + func_test_same_acls () + { + /bin/ls -le "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + /bin/ls -le "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + irix) + func_test_same_acls () + { + /bin/ls -lD "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + /bin/ls -lD "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + none) + func_test_same_acls () + { + : + } + ;; + esac + + # func_test_copy file1 file2 + # copies file1 to file2 and verifies the permissions and ACLs are the same + # on both. + func_test_copy () + { + echo "Simple contents" > "$2" + chmod 600 "$2" + "$builddir"/test-copy-acl${EXEEXT} "$1" "$2" || exit 1 + "$builddir"/test-sameacls${EXEEXT} "$1" "$2" || exit 1 + func_test_same_acls "$1" "$2" || exit 1 + } + + func_test_copy tmpfile0 tmpfile1 + + if test $acl_flavor != none; then + # A POSIX compliant 'id' program. + if test -f /usr/xpg4/bin/id; then + ID=/usr/xpg4/bin/id + else + ID=id + fi + # Use a user and group id different from the current one, to avoid + # redundant/ambiguous ACLs. + myuid=`$ID -u` + mygid=`$ID -g` + auid=1 + if test "$auid" = "$myuid"; then auid=2; fi + agid=1 + if test "$agid" = "$mygid"; then agid=2; fi + + case $acl_flavor in + linux | freebsd | solaris) + + # Set an ACL for a user. + setfacl -m user:$auid:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + setfacl -m group:$agid:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + case $acl_flavor in + freebsd) setfacl -m other::4 tmpfile0 ;; + solaris) chmod o+r tmpfile0 ;; + *) setfacl -m other:4 tmpfile0 ;; + esac + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + case $acl_flavor in + linux) setfacl -x user:$auid tmpfile0 ;; + freebsd) setfacl -x user:$auid:1 tmpfile0 ;; + *) setfacl -d user:$auid:1 tmpfile0 ;; + esac + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for other. + case $acl_flavor in + linux | solaris) ;; # impossible + freebsd) setfacl -x other::4 tmpfile0 ;; + *) setfacl -d other:4 tmpfile0 ;; + esac + + func_test_copy tmpfile0 tmpfile6 + + # Remove the ACL for the group. + case $acl_flavor in + linux) setfacl -x group:$agid tmpfile0 ;; + freebsd) setfacl -x group:$agid:4 tmpfile0 ;; + *) setfacl -d group:$agid:4 tmpfile0 ;; + esac + + func_test_copy tmpfile0 tmpfile7 + + # Delete all optional ACLs. + case $acl_flavor in + linux | freebsd) + setfacl -m user:$auid:1 tmpfile0 + setfacl -b tmpfile0 + ;; + *) + setfacl -s user::6,group::0,other:0 tmpfile0 ;; + esac + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + case $acl_flavor in + linux) getfacl tmpfile9 | setfacl --set-file=- tmpfile0 ;; + freebsd) ;; + *) getfacl tmpfile9 | setfacl -f - tmpfile0 ;; + esac + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + cygwin) + + # Set an ACL for a group. + setfacl -m group:0:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for other. + setfacl -m other:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the group. + setfacl -d group:0 tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for other. + setfacl -d other:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile6 + + # Delete all optional ACLs. + setfacl -s user::6,group::0,other:0 tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + getfacl tmpfile9 | setfacl -f - tmpfile0 + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + hpux) + + # Set an ACL for a user. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}($auid.%,--x)" tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}(%.$agid,r--)" tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}(%.%,r--)" tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + chacl -d "($auid.%,--x)" tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + chacl -d "(%.$agid,r--)" tmpfile0 + + func_test_copy tmpfile0 tmpfile6 + + # Delete all optional ACLs. + chacl -z tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + orig=`lsacl tmpfile9 | sed -e 's/ tmpfile9$//'` + rm -f tmpfile9 + chacl -r "${orig}" tmpfile0 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + hpuxjfs) + + # Set an ACL for a user. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}($auid.%,--x)" tmpfile0 \ + || setacl -m user:$auid:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}(%.$agid,r--)" tmpfile0 \ + || setacl -m group:$agid:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}(%.%,r--)" tmpfile0 \ + || setacl -m other:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + chacl -d "($auid.%,--x)" tmpfile0 \ + || setacl -d user:$auid tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + chacl -d "(%.$agid,r--)" tmpfile0 \ + || setacl -d group:$agid tmpfile0 + + func_test_copy tmpfile0 tmpfile6 + + # Delete all optional ACLs. + chacl -z tmpfile0 \ + || { setacl -m user:$auid:1 tmpfile0 + setacl -s user::6,group::0,class:7,other:0 tmpfile0 + } + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + orig=`lsacl tmpfile9 | sed -e 's/ tmpfile9$//'` + getacl tmpfile9 > tmpaclout0 + rm -f tmpfile9 + chacl -r "${orig}" tmpfile0 \ + || setacl -f tmpaclout0 tmpfile0 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + osf1) + + # Set an ACL for a user. + setacl -u user:$auid:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + setacl -u group:$agid:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + setacl -u other::4 tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + setacl -x user:$auid:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + if false; then # would give an error "can't set ACL: Invalid argument" + # Remove the ACL for other. + setacl -x other::4 tmpfile0 + + func_test_copy tmpfile0 tmpfile6 + fi + + # Remove the ACL for the group. + setacl -x group:$agid:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile7 + + # Delete all optional ACLs. + setacl -u user:$auid:1 tmpfile0 + setacl -b tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + getacl tmpfile9 > tmpaclout0 + setacl -b -U tmpaclout0 tmpfile0 + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + nsk) + + # Set an ACL for a user. + setacl -m user:$auid:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + setacl -m group:$agid:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + setacl -m other:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + setacl -d user:$auid tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + setacl -d group:$agid tmpfile0 + + func_test_copy tmpfile0 tmpfile6 + + # Delete all optional ACLs. + setacl -m user:$auid:1 tmpfile0 + setacl -s user::6,group::0,class:7,other:0 tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + getacl tmpfile9 > tmpaclout0 + setacl -f tmpaclout0 tmpfile0 + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + aix) + + # Set an ACL for a user. + { aclget tmpfile0 | sed -e 's/disabled$/enabled/'; echo " permit --x u:$auid"; } | aclput tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + { aclget tmpfile0 | sed -e 's/disabled$/enabled/'; echo " permit r-- g:$agid"; } | aclput tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + chmod o+r tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + aclget tmpfile0 | grep -v ' u:[^ ]*$' | aclput tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + aclget tmpfile0 | grep -v ' g:[^ ]*$' | aclput tmpfile0 + + func_test_copy tmpfile0 tmpfile7 + + # Delete all optional ACLs. + aclget tmpfile0 | sed -e 's/enabled$/disabled/' | sed -e '/disabled$/q' | aclput tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + aclget tmpfile9 | aclput tmpfile0 + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + macosx) + + # Set an ACL for a user. + /bin/chmod +a "user:daemon allow execute" tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + /bin/chmod +a "group:daemon allow read" tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + chmod o+r tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + /bin/chmod -a "user:daemon allow execute" tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + /bin/chmod -a "group:daemon allow read" tmpfile0 + + func_test_copy tmpfile0 tmpfile7 + + # Delete all optional ACLs. + /bin/chmod -N tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + { /bin/ls -le tmpfile9 | sed -n -e 's/^ [0-9][0-9]*: //p'; echo; } | /bin/chmod -E tmpfile0 + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + irix) + + # Set an ACL for a user. + /sbin/chacl user::rw-,group::---,other::---,user:$auid:--x tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + /sbin/chacl user::rw-,group::---,other::---,user:$auid:--x,group:$agid:r-- tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + /sbin/chacl user::rw-,group::---,user:$auid:--x,group:$agid:r--,other::r-- tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + /sbin/chacl user::rw-,group::---,group:$agid:r--,other::r-- tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + /sbin/chacl user::rw-,group::---,other::r-- tmpfile0 + + func_test_copy tmpfile0 tmpfile7 + + ;; + + esac + fi + + rm -f tmpfile[0-9] tmpaclout[0-2] +) || exit 1 + +rm -rf "$tmp" +exit 0 diff --git a/gettext-tools/gnulib-tests/test-copy-file-1.sh b/gettext-tools/gnulib-tests/test-copy-file-1.sh new file mode 100755 index 0000000..8998ba5 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-copy-file-1.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# Test copy-file on the file system of /var/tmp, which usually is a local +# file system. + +if test -d /var/tmp; then + TMPDIR=/var/tmp +else + TMPDIR=/tmp +fi +export TMPDIR + +"${srcdir}/test-copy-file.sh" +ret1=$? +NO_STDERR_OUTPUT=1 "${srcdir}/test-copy-file.sh" +ret2=$? +case $ret1 in + 77 ) exit $ret2 ;; + * ) exit $ret1 ;; +esac diff --git a/gettext-tools/gnulib-tests/test-copy-file-2.sh b/gettext-tools/gnulib-tests/test-copy-file-2.sh new file mode 100755 index 0000000..1756f7e --- /dev/null +++ b/gettext-tools/gnulib-tests/test-copy-file-2.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# Test copy-file on the file system of the build directory, which may be +# a local file system or NFS mounted. + +TMPDIR=`pwd` +export TMPDIR + +"${srcdir}/test-copy-file.sh" +ret1=$? +NO_STDERR_OUTPUT=1 "${srcdir}/test-copy-file.sh" +ret2=$? +case $ret1 in + 77 ) exit $ret2 ;; + * ) exit $ret1 ;; +esac diff --git a/gettext-tools/gnulib-tests/test-copy-file.c b/gettext-tools/gnulib-tests/test-copy-file.c new file mode 100644 index 0000000..a494745 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-copy-file.c @@ -0,0 +1,49 @@ +/* Test of copying of files. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include "copy-file.h" + +#include <stdlib.h> + +#include "progname.h" +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + const char *file1; + const char *file2; + int null_stderr; + + set_program_name (argv[0]); + + ASSERT (argc == 3); + + file1 = argv[1]; + file2 = argv[2]; + null_stderr = (getenv ("NO_STDERR_OUTPUT") != NULL); + + if (null_stderr) + ASSERT (qcopy_file_preserving (file1, file2) == 0); + else + copy_file_preserving (file1, file2); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-copy-file.sh b/gettext-tools/gnulib-tests/test-copy-file.sh new file mode 100755 index 0000000..98da280 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-copy-file.sh @@ -0,0 +1,653 @@ +#!/bin/sh + +# Show all commands when run with environment variable VERBOSE=yes. +test -z "$VERBOSE" || set -x + +# func_tmpdir +# creates a temporary directory. +# Sets variable +# - tmp pathname of freshly created temporary directory +func_tmpdir () +{ + # Use the environment variable TMPDIR, falling back to /tmp. This allows + # users to specify a different temporary directory, for example, if their + # /tmp is filled up or too small. + : ${TMPDIR=/tmp} + { + # Use the mktemp program if available. If not available, hide the error + # message. + tmp=`(umask 077 && mktemp -d "$TMPDIR/glXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { + # Use a simple mkdir command. It is guaranteed to fail if the directory + # already exists. $RANDOM is bash specific and expands to empty in shells + # other than bash, ksh and zsh. Its use does not increase security; + # rather, it minimizes the probability of failure in a very cluttered /tmp + # directory. + tmp=$TMPDIR/gl$$-$RANDOM + (umask 077 && mkdir "$tmp") + } || + { + echo "$0: cannot create a temporary directory in $TMPDIR" >&2 + exit 1 + } +} + +func_tmpdir +builddir=`pwd` +cd "$builddir" || + { + echo "$0: cannot determine build directory (unreadable parent dir?)" >&2 + exit 1 + } +# Switch to a temporary directory, to increase the likelihood that ACLs are +# supported on the current file system. (/tmp is usually locally mounted, +# whereas the build dir is sometimes NFS-mounted.) +( cd "$tmp" + + # Prepare tmpfile0. + rm -f tmpfile[0-9] tmpaclout[0-2] + echo "Simple contents" > tmpfile0 + chmod 600 tmpfile0 + + # Classification of the platform according to the programs available for + # manipulating ACLs. + # Possible values are: + # linux, cygwin, freebsd, solaris, hpux, hpuxjfs, osf1, aix, macosx, irix, none. + # TODO: Support also native Windows platforms (mingw). + acl_flavor=none + if (getfacl tmpfile0 >/dev/null) 2>/dev/null; then + # Platforms with the getfacl and setfacl programs. + # Linux, FreeBSD, Solaris, Cygwin. + if (setfacl --help >/dev/null) 2>/dev/null; then + # Linux, Cygwin. + if (LC_ALL=C setfacl --help | grep ' --set-file' >/dev/null) 2>/dev/null; then + # Linux. + acl_flavor=linux + else + acl_flavor=cygwin + fi + else + # FreeBSD, Solaris. + if (LC_ALL=C setfacl 2>&1 | grep '\-x entries' >/dev/null) 2>/dev/null; then + # FreeBSD. + acl_flavor=freebsd + else + # Solaris. + acl_flavor=solaris + fi + fi + else + if (lsacl / >/dev/null) 2>/dev/null; then + # Platforms with the lsacl and chacl programs. + # HP-UX, sometimes also IRIX. + if (getacl tmpfile0 >/dev/null) 2>/dev/null; then + # HP-UX 11.11 or newer. + acl_flavor=hpuxjfs + else + # HP-UX 11.00. + acl_flavor=hpux + fi + else + if (getacl tmpfile0 >/dev/null) 2>/dev/null; then + # Tru64, NonStop Kernel. + if (getacl -m tmpfile0 >/dev/null) 2>/dev/null; then + # Tru64. + acl_flavor=osf1 + else + # NonStop Kernel. + acl_flavor=nsk + fi + else + if (aclget tmpfile0 >/dev/null) 2>/dev/null; then + # AIX. + acl_flavor=aix + else + if (fsaclctl -v >/dev/null) 2>/dev/null; then + # Mac OS X. + acl_flavor=macosx + else + if test -f /sbin/chacl; then + # IRIX. + acl_flavor=irix + fi + fi + fi + fi + fi + fi + + # Define a function to test for the same ACLs, from the point of view of + # the programs. + # func_test_same_acls file1 file2 + case $acl_flavor in + linux | cygwin | freebsd | solaris) + func_test_same_acls () + { + getfacl "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + getfacl "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + hpux) + func_test_same_acls () + { + lsacl "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + lsacl "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + hpuxjfs) + func_test_same_acls () + { + { lsacl "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + lsacl "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } && + { getacl "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + getacl "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + } + ;; + osf1 | nsk) + func_test_same_acls () + { + getacl "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + getacl "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + aix) + func_test_same_acls () + { + aclget "$1" > tmpaclout1 + aclget "$2" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + macosx) + func_test_same_acls () + { + /bin/ls -le "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + /bin/ls -le "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + irix) + func_test_same_acls () + { + /bin/ls -lD "$1" | sed -e "s/$1/FILENAME/g" > tmpaclout1 + /bin/ls -lD "$2" | sed -e "s/$2/FILENAME/g" > tmpaclout2 + cmp tmpaclout1 tmpaclout2 > /dev/null + } + ;; + none) + func_test_same_acls () + { + : + } + ;; + esac + + # func_test_copy file1 file2 + # copies file1 to file2 and verifies the permissions and ACLs are the same + # on both. + func_test_copy () + { + "$builddir"/test-copy-file${EXEEXT} "$1" "$2" || exit 1 + if test "$USE_ACL" != 0; then + "$builddir"/test-sameacls${EXEEXT} "$1" "$2" || exit 1 + func_test_same_acls "$1" "$2" || exit 1 + fi + } + + func_test_copy tmpfile0 tmpfile1 + + if test "$USE_ACL" != 0 && test $acl_flavor != none; then + # A POSIX compliant 'id' program. + if test -f /usr/xpg4/bin/id; then + ID=/usr/xpg4/bin/id + else + ID=id + fi + # Use a user and group id different from the current one, to avoid + # redundant/ambiguous ACLs. + myuid=`$ID -u` + mygid=`$ID -g` + auid=1 + if test "$auid" = "$myuid"; then auid=2; fi + agid=1 + if test "$agid" = "$mygid"; then agid=2; fi + + case $acl_flavor in + linux | freebsd | solaris) + + # Set an ACL for a user. + setfacl -m user:$auid:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + setfacl -m group:$agid:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + case $acl_flavor in + freebsd) setfacl -m other::4 tmpfile0 ;; + solaris) chmod o+r tmpfile0 ;; + *) setfacl -m other:4 tmpfile0 ;; + esac + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + case $acl_flavor in + linux) setfacl -x user:$auid tmpfile0 ;; + freebsd) setfacl -x user:$auid:1 tmpfile0 ;; + *) setfacl -d user:$auid:1 tmpfile0 ;; + esac + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for other. + case $acl_flavor in + linux | solaris) ;; # impossible + freebsd) setfacl -x other::4 tmpfile0 ;; + *) setfacl -d other:4 tmpfile0 ;; + esac + + func_test_copy tmpfile0 tmpfile6 + + # Remove the ACL for the group. + case $acl_flavor in + linux) setfacl -x group:$agid tmpfile0 ;; + freebsd) setfacl -x group:$agid:4 tmpfile0 ;; + *) setfacl -d group:$agid:4 tmpfile0 ;; + esac + + func_test_copy tmpfile0 tmpfile7 + + # Delete all optional ACLs. + case $acl_flavor in + linux | freebsd) + setfacl -m user:$auid:1 tmpfile0 + setfacl -b tmpfile0 + ;; + *) + setfacl -s user::6,group::0,other:0 tmpfile0 ;; + esac + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + case $acl_flavor in + linux) getfacl tmpfile9 | setfacl --set-file=- tmpfile0 ;; + freebsd) ;; + *) getfacl tmpfile9 | setfacl -f - tmpfile0 ;; + esac + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + cygwin) + + # Set an ACL for a group. + setfacl -m group:0:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for other. + setfacl -m other:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the group. + setfacl -d group:0 tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for other. + setfacl -d other:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile6 + + # Delete all optional ACLs. + setfacl -s user::6,group::0,other:0 tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + getfacl tmpfile9 | setfacl -f - tmpfile0 + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + hpux) + + # Set an ACL for a user. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}($auid.%,--x)" tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}(%.$agid,r--)" tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}(%.%,r--)" tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + chacl -d "($auid.%,--x)" tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + chacl -d "(%.$agid,r--)" tmpfile0 + + func_test_copy tmpfile0 tmpfile6 + + # Delete all optional ACLs. + chacl -z tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + orig=`lsacl tmpfile9 | sed -e 's/ tmpfile9$//'` + rm -f tmpfile9 + chacl -r "${orig}" tmpfile0 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + hpuxjfs) + + # Set an ACL for a user. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}($auid.%,--x)" tmpfile0 \ + || setacl -m user:$auid:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}(%.$agid,r--)" tmpfile0 \ + || setacl -m group:$agid:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}(%.%,r--)" tmpfile0 \ + || setacl -m other:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + chacl -d "($auid.%,--x)" tmpfile0 \ + || setacl -d user:$auid tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + chacl -d "(%.$agid,r--)" tmpfile0 \ + || setacl -d group:$agid tmpfile0 + + func_test_copy tmpfile0 tmpfile6 + + # Delete all optional ACLs. + chacl -z tmpfile0 \ + || { setacl -m user:$auid:1 tmpfile0 + setacl -s user::6,group::0,class:7,other:0 tmpfile0 + } + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + orig=`lsacl tmpfile9 | sed -e 's/ tmpfile9$//'` + getacl tmpfile9 > tmpaclout0 + rm -f tmpfile9 + chacl -r "${orig}" tmpfile0 \ + || setacl -f tmpaclout0 tmpfile0 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + osf1) + + # Set an ACL for a user. + setacl -u user:$auid:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + setacl -u group:$agid:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + setacl -u other::4 tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + setacl -x user:$auid:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + if false; then # would give an error "can't set ACL: Invalid argument" + # Remove the ACL for other. + setacl -x other::4 tmpfile0 + + func_test_copy tmpfile0 tmpfile6 + fi + + # Remove the ACL for the group. + setacl -x group:$agid:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile7 + + # Delete all optional ACLs. + setacl -u user:$auid:1 tmpfile0 + setacl -b tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + getacl tmpfile9 > tmpaclout0 + setacl -b -U tmpaclout0 tmpfile0 + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + nsk) + + # Set an ACL for a user. + setacl -m user:$auid:1 tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + setacl -m group:$agid:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + setacl -m other:4 tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + setacl -d user:$auid tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + setacl -d group:$agid tmpfile0 + + func_test_copy tmpfile0 tmpfile6 + + # Delete all optional ACLs. + setacl -m user:$auid:1 tmpfile0 + setacl -s user::6,group::0,class:7,other:0 tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + getacl tmpfile9 > tmpaclout0 + setacl -f tmpaclout0 tmpfile0 + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + aix) + + # Set an ACL for a user. + { aclget tmpfile0 | sed -e 's/disabled$/enabled/'; echo " permit --x u:$auid"; } | aclput tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + { aclget tmpfile0 | sed -e 's/disabled$/enabled/'; echo " permit r-- g:$agid"; } | aclput tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + chmod o+r tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + aclget tmpfile0 | grep -v ' u:[^ ]*$' | aclput tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + aclget tmpfile0 | grep -v ' g:[^ ]*$' | aclput tmpfile0 + + func_test_copy tmpfile0 tmpfile7 + + # Delete all optional ACLs. + aclget tmpfile0 | sed -e 's/enabled$/disabled/' | sed -e '/disabled$/q' | aclput tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + aclget tmpfile9 | aclput tmpfile0 + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + macosx) + + # Set an ACL for a user. + /bin/chmod +a "user:daemon allow execute" tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + /bin/chmod +a "group:daemon allow read" tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + chmod o+r tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + /bin/chmod -a "user:daemon allow execute" tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + /bin/chmod -a "group:daemon allow read" tmpfile0 + + func_test_copy tmpfile0 tmpfile7 + + # Delete all optional ACLs. + /bin/chmod -N tmpfile0 + + func_test_copy tmpfile0 tmpfile8 + + # Copy ACLs from a file that has no ACLs. + echo > tmpfile9 + chmod a+x tmpfile9 + { /bin/ls -le tmpfile9 | sed -n -e 's/^ [0-9][0-9]*: //p'; echo; } | /bin/chmod -E tmpfile0 + rm -f tmpfile9 + + func_test_copy tmpfile0 tmpfile9 + + ;; + + irix) + + # Set an ACL for a user. + /sbin/chacl user::rw-,group::---,other::---,user:$auid:--x tmpfile0 + + func_test_copy tmpfile0 tmpfile2 + + # Set an ACL for a group. + /sbin/chacl user::rw-,group::---,other::---,user:$auid:--x,group:$agid:r-- tmpfile0 + + func_test_copy tmpfile0 tmpfile3 + + # Set an ACL for other. + /sbin/chacl user::rw-,group::---,user:$auid:--x,group:$agid:r--,other::r-- tmpfile0 + + func_test_copy tmpfile0 tmpfile4 + + # Remove the ACL for the user. + /sbin/chacl user::rw-,group::---,group:$agid:r--,other::r-- tmpfile0 + + func_test_copy tmpfile0 tmpfile5 + + # Remove the ACL for the group. + /sbin/chacl user::rw-,group::---,other::r-- tmpfile0 + + func_test_copy tmpfile0 tmpfile7 + + ;; + + esac + fi + + rm -f tmpfile[0-9] tmpaclout[0-2] +) || exit 1 + +rm -rf "$tmp" +exit 0 diff --git a/gettext-tools/gnulib-tests/test-dirent.c b/gettext-tools/gnulib-tests/test-dirent.c new file mode 100644 index 0000000..7905a2a --- /dev/null +++ b/gettext-tools/gnulib-tests/test-dirent.c @@ -0,0 +1,32 @@ +/* Test of <dirent.h> substitute. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <dirent.h> + +/* Check for existence of required types. */ +static DIR *dir _GL_UNUSED; +static struct dirent d; +static ino_t i; + +int +main (void) +{ + return d.d_name[0] + i; +} diff --git a/gettext-tools/gnulib-tests/test-dup-safer.c b/gettext-tools/gnulib-tests/test-dup-safer.c new file mode 100644 index 0000000..d11891e --- /dev/null +++ b/gettext-tools/gnulib-tests/test-dup-safer.c @@ -0,0 +1,176 @@ +/* Test that dup_safer leaves standard fds alone. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include "unistd--.h" + +#include <fcntl.h> +#include <errno.h> +#include <stdbool.h> +#include <stdio.h> +#include <unistd.h> + +#include "binary-io.h" +#include "cloexec.h" + +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +/* Get declarations of the native Windows API functions. */ +# define WIN32_LEAN_AND_MEAN +# include <windows.h> +/* Get _get_osfhandle. */ +# include "msvc-nothrow.h" +#endif + +#if !O_BINARY +# define setmode(f,m) zero () +static int zero (void) { return 0; } +#endif + +/* This test intentionally closes stderr. So, we arrange to have fd 10 + (outside the range of interesting fd's during the test) set up to + duplicate the original stderr. */ + +#define BACKUP_STDERR_FILENO 10 +#define ASSERT_STREAM myerr +#include "macros.h" + +static FILE *myerr; + +/* Return true if FD is open. */ +static bool +is_open (int fd) +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Windows, the initial state of unassigned standard file + descriptors is that they are open but point to an + INVALID_HANDLE_VALUE, and there is no fcntl. */ + return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE; +#else +# ifndef F_GETFL +# error Please port fcntl to your platform +# endif + return 0 <= fcntl (fd, F_GETFL); +#endif +} + +/* Return true if FD is open and inheritable across exec/spawn. */ +static bool +is_inheritable (int fd) +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Windows, the initial state of unassigned standard file + descriptors is that they are open but point to an + INVALID_HANDLE_VALUE, and there is no fcntl. */ + HANDLE h = (HANDLE) _get_osfhandle (fd); + DWORD flags; + if (h == INVALID_HANDLE_VALUE || GetHandleInformation (h, &flags) == 0) + return 0; + return (flags & HANDLE_FLAG_INHERIT) != 0; +#else +# ifndef F_GETFD +# error Please port fcntl to your platform +# endif + int i = fcntl (fd, F_GETFD); + return 0 <= i && (i & FD_CLOEXEC) == 0; +#endif +} + +/* Return true if FD is open in the given MODE, which is either + O_TEXT or O_BINARY. */ +static bool +is_mode (int fd, int mode) +{ + int value = setmode (fd, O_BINARY); + setmode (fd, value); + return mode == value; +} + +#define witness "test-dup-safer.txt" + +int +main (void) +{ + int i; + int fd; + int bad_fd = getdtablesize (); + + /* We close fd 2 later, so save it in fd 10. */ + if (dup2 (STDERR_FILENO, BACKUP_STDERR_FILENO) != BACKUP_STDERR_FILENO + || (myerr = fdopen (BACKUP_STDERR_FILENO, "w")) == NULL) + return 2; + + /* Create file for later checks. */ + fd = creat (witness, 0600); + ASSERT (STDERR_FILENO < fd); + + /* Four iterations, with progressively more standard descriptors + closed. */ + for (i = -1; i <= STDERR_FILENO; i++) + { + if (0 <= i) + ASSERT (close (i) == 0); + + /* Detect errors. */ + errno = 0; + ASSERT (dup (-1) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (dup (bad_fd) == -1); + ASSERT (errno == EBADF); + close (fd + 1); + errno = 0; + ASSERT (dup (fd + 1) == -1); + ASSERT (errno == EBADF); + + /* Preserve text vs. binary. */ + setmode (fd, O_BINARY); + ASSERT (dup (fd) == fd + 1); + ASSERT (is_open (fd + 1)); + ASSERT (is_inheritable (fd + 1)); + ASSERT (is_mode (fd + 1, O_BINARY)); + + ASSERT (close (fd + 1) == 0); + setmode (fd, O_TEXT); + ASSERT (dup (fd) == fd + 1); + ASSERT (is_open (fd + 1)); + ASSERT (is_inheritable (fd + 1)); + ASSERT (is_mode (fd + 1, O_TEXT)); + + /* Create cloexec copy. */ + ASSERT (close (fd + 1) == 0); + ASSERT (fd_safer_flag (dup_cloexec (fd), O_CLOEXEC) == fd + 1); + ASSERT (set_cloexec_flag (fd + 1, true) == 0); + ASSERT (is_open (fd + 1)); + ASSERT (!is_inheritable (fd + 1)); + ASSERT (close (fd) == 0); + + /* dup always creates inheritable copies. Also, check that + earliest slot past std fds is used. */ + ASSERT (dup (fd + 1) == fd); + ASSERT (is_open (fd)); + ASSERT (is_inheritable (fd)); + ASSERT (close (fd + 1) == 0); + } + + /* Cleanup. */ + ASSERT (close (fd) == 0); + ASSERT (unlink (witness) == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-dup.c b/gettext-tools/gnulib-tests/test-dup.c new file mode 100644 index 0000000..905275c --- /dev/null +++ b/gettext-tools/gnulib-tests/test-dup.c @@ -0,0 +1,45 @@ +/* Test duplicating a file descriptor. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (dup, int, (int)); + +#include <errno.h> + +#include "macros.h" + +int +main (void) +{ + /* Test behaviour for invalid file descriptors. */ + { + errno = 0; + ASSERT (dup (-1) == -1); + ASSERT (errno == EBADF); + } + { + close (99); + errno = 0; + ASSERT (dup (99) == -1); + ASSERT (errno == EBADF); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-dup2.c b/gettext-tools/gnulib-tests/test-dup2.c new file mode 100644 index 0000000..c7cb965 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-dup2.c @@ -0,0 +1,218 @@ +/* Test duplicating file descriptors. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (dup2, int, (int, int)); + +#include <errno.h> +#include <fcntl.h> + +#if HAVE_SYS_RESOURCE_H +# include <sys/resource.h> +#endif + +#include "binary-io.h" + +#if GNULIB_TEST_CLOEXEC +# include "cloexec.h" +#endif + +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +/* Get declarations of the native Windows API functions. */ +# define WIN32_LEAN_AND_MEAN +# include <windows.h> +/* Get _get_osfhandle. */ +# include "msvc-nothrow.h" +#endif + +#include "macros.h" + +/* Return non-zero if FD is open. */ +static int +is_open (int fd) +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Windows, the initial state of unassigned standard file + descriptors is that they are open but point to an + INVALID_HANDLE_VALUE, and there is no fcntl. */ + return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE; +#else +# ifndef F_GETFL +# error Please port fcntl to your platform +# endif + return 0 <= fcntl (fd, F_GETFL); +#endif +} + +#if GNULIB_TEST_CLOEXEC +/* Return non-zero if FD is open and inheritable across exec/spawn. */ +static int +is_inheritable (int fd) +{ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Windows, the initial state of unassigned standard file + descriptors is that they are open but point to an + INVALID_HANDLE_VALUE, and there is no fcntl. */ + HANDLE h = (HANDLE) _get_osfhandle (fd); + DWORD flags; + if (h == INVALID_HANDLE_VALUE || GetHandleInformation (h, &flags) == 0) + return 0; + return (flags & HANDLE_FLAG_INHERIT) != 0; +# else +# ifndef F_GETFD +# error Please port fcntl to your platform +# endif + int i = fcntl (fd, F_GETFD); + return 0 <= i && (i & FD_CLOEXEC) == 0; +# endif +} +#endif /* GNULIB_TEST_CLOEXEC */ + +#if !O_BINARY +# define setmode(f,m) zero () +static int zero (void) { return 0; } +#endif + +/* Return non-zero if FD is open in the given MODE, which is either + O_TEXT or O_BINARY. */ +static int +is_mode (int fd, int mode) +{ + int value = setmode (fd, O_BINARY); + setmode (fd, value); + return mode == value; +} + +int +main (void) +{ + const char *file = "test-dup2.tmp"; + char buffer[1]; + int bad_fd = getdtablesize (); + int fd = open (file, O_CREAT | O_TRUNC | O_RDWR, 0600); + + /* Assume std descriptors were provided by invoker. */ + ASSERT (STDERR_FILENO < fd); + ASSERT (is_open (fd)); + /* Ignore any other fd's leaked into this process. */ + close (fd + 1); + close (fd + 2); + ASSERT (!is_open (fd + 1)); + ASSERT (!is_open (fd + 2)); + + /* Assigning to self must be a no-op. */ + ASSERT (dup2 (fd, fd) == fd); + ASSERT (is_open (fd)); + + /* The source must be valid. */ + errno = 0; + ASSERT (dup2 (-1, fd) == -1); + ASSERT (errno == EBADF); + close (99); + errno = 0; + ASSERT (dup2 (99, fd) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (dup2 (AT_FDCWD, fd) == -1); + ASSERT (errno == EBADF); + ASSERT (is_open (fd)); + + /* If the source is not open, then the destination is unaffected. */ + errno = 0; + ASSERT (dup2 (fd + 1, fd + 1) == -1); + ASSERT (errno == EBADF); + ASSERT (!is_open (fd + 1)); + errno = 0; + ASSERT (dup2 (fd + 1, fd) == -1); + ASSERT (errno == EBADF); + ASSERT (is_open (fd)); + + /* The destination must be valid. */ + errno = 0; + ASSERT (dup2 (fd, -2) == -1); + ASSERT (errno == EBADF); + if (bad_fd > 256) + { + ASSERT (dup2 (fd, 255) == 255); + ASSERT (dup2 (fd, 256) == 256); + ASSERT (close (255) == 0); + ASSERT (close (256) == 0); + } + ASSERT (dup2 (fd, bad_fd - 1) == bad_fd - 1); + ASSERT (close (bad_fd - 1) == 0); + errno = 0; + ASSERT (dup2 (fd, bad_fd) == -1); + ASSERT (errno == EBADF); + + /* Using dup2 can skip fds. */ + ASSERT (dup2 (fd, fd + 2) == fd + 2); + ASSERT (is_open (fd)); + ASSERT (!is_open (fd + 1)); + ASSERT (is_open (fd + 2)); + + /* Verify that dup2 closes the previous occupant of a fd. */ + ASSERT (open ("/dev/null", O_WRONLY, 0600) == fd + 1); + ASSERT (dup2 (fd + 1, fd) == fd); + ASSERT (close (fd + 1) == 0); + ASSERT (write (fd, "1", 1) == 1); + ASSERT (dup2 (fd + 2, fd) == fd); + ASSERT (lseek (fd, 0, SEEK_END) == 0); + ASSERT (write (fd + 2, "2", 1) == 1); + ASSERT (lseek (fd, 0, SEEK_SET) == 0); + ASSERT (read (fd, buffer, 1) == 1); + ASSERT (*buffer == '2'); + +#if GNULIB_TEST_CLOEXEC + /* Any new fd created by dup2 must not be cloexec. */ + ASSERT (close (fd + 2) == 0); + ASSERT (dup_cloexec (fd) == fd + 1); + ASSERT (!is_inheritable (fd + 1)); + ASSERT (dup2 (fd + 1, fd + 1) == fd + 1); + ASSERT (!is_inheritable (fd + 1)); + ASSERT (dup2 (fd + 1, fd + 2) == fd + 2); + ASSERT (!is_inheritable (fd + 1)); + ASSERT (is_inheritable (fd + 2)); + errno = 0; + ASSERT (dup2 (fd + 1, -1) == -1); + ASSERT (errno == EBADF); + ASSERT (!is_inheritable (fd + 1)); +#endif + + /* On systems that distinguish between text and binary mode, dup2 + reuses the mode of the source. */ + setmode (fd, O_BINARY); + ASSERT (is_mode (fd, O_BINARY)); + ASSERT (dup2 (fd, fd + 1) == fd + 1); + ASSERT (is_mode (fd + 1, O_BINARY)); + setmode (fd, O_TEXT); + ASSERT (is_mode (fd, O_TEXT)); + ASSERT (dup2 (fd, fd + 1) == fd + 1); + ASSERT (is_mode (fd + 1, O_TEXT)); + + /* Clean up. */ + ASSERT (close (fd + 2) == 0); + ASSERT (close (fd + 1) == 0); + ASSERT (close (fd) == 0); + ASSERT (unlink (file) == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-environ.c b/gettext-tools/gnulib-tests/test-environ.c new file mode 100644 index 0000000..8afecb7 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-environ.c @@ -0,0 +1,51 @@ +/* Test of environ variable. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <unistd.h> + +#include <string.h> + +/* environ is the exported symbol referencing the internal + __cygwin_environ variable on cygwin64: + <https://cygwin.com/ml/cygwin/2013-06/msg00228.html>. */ +#if defined __CYGWIN__ && defined __x86_64__ +extern DLL_VARIABLE char **environ; +#endif + +int +main () +{ + /* The environment variables that are set even in the weirdest situations + are HOME and PATH. + POSIX says that HOME is initialized by the system, and that PATH may be + unset. But in practice it's more frequent to see HOME unset and PATH + set. So we test the presence of PATH. */ + char **remaining_variables = environ; + char *string; + + for (; (string = *remaining_variables) != NULL; remaining_variables++) + { + if (strncmp (string, "PATH=", 5) == 0) + /* Found the PATH environment variable. */ + return 0; + } + /* Failed to find the PATH environment variable. */ + return 1; +} diff --git a/gettext-tools/gnulib-tests/test-errno.c b/gettext-tools/gnulib-tests/test-errno.c new file mode 100644 index 0000000..495242b --- /dev/null +++ b/gettext-tools/gnulib-tests/test-errno.c @@ -0,0 +1,119 @@ +/* Test of <errno.h> substitute. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <errno.h> + +/* Verify that the POSIX mandated errno values exist and can be used as + initializers outside of a function. + The variable names happen to match the Linux/x86 error numbers. */ +int e1 = EPERM; +int e2 = ENOENT; +int e3 = ESRCH; +int e4 = EINTR; +int e5 = EIO; +int e6 = ENXIO; +int e7 = E2BIG; +int e8 = ENOEXEC; +int e9 = EBADF; +int e10 = ECHILD; +int e11 = EAGAIN; +int e11a = EWOULDBLOCK; +int e12 = ENOMEM; +int e13 = EACCES; +int e14 = EFAULT; +int e16 = EBUSY; +int e17 = EEXIST; +int e18 = EXDEV; +int e19 = ENODEV; +int e20 = ENOTDIR; +int e21 = EISDIR; +int e22 = EINVAL; +int e23 = ENFILE; +int e24 = EMFILE; +int e25 = ENOTTY; +int e26 = ETXTBSY; +int e27 = EFBIG; +int e28 = ENOSPC; +int e29 = ESPIPE; +int e30 = EROFS; +int e31 = EMLINK; +int e32 = EPIPE; +int e33 = EDOM; +int e34 = ERANGE; +int e35 = EDEADLK; +int e36 = ENAMETOOLONG; +int e37 = ENOLCK; +int e38 = ENOSYS; +int e39 = ENOTEMPTY; +int e40 = ELOOP; +int e42 = ENOMSG; +int e43 = EIDRM; +int e67 = ENOLINK; +int e71 = EPROTO; +int e72 = EMULTIHOP; +int e74 = EBADMSG; +int e75 = EOVERFLOW; +int e84 = EILSEQ; +int e88 = ENOTSOCK; +int e89 = EDESTADDRREQ; +int e90 = EMSGSIZE; +int e91 = EPROTOTYPE; +int e92 = ENOPROTOOPT; +int e93 = EPROTONOSUPPORT; +int e95 = EOPNOTSUPP; +int e95a = ENOTSUP; +int e97 = EAFNOSUPPORT; +int e98 = EADDRINUSE; +int e99 = EADDRNOTAVAIL; +int e100 = ENETDOWN; +int e101 = ENETUNREACH; +int e102 = ENETRESET; +int e103 = ECONNABORTED; +int e104 = ECONNRESET; +int e105 = ENOBUFS; +int e106 = EISCONN; +int e107 = ENOTCONN; +int e110 = ETIMEDOUT; +int e111 = ECONNREFUSED; +int e113 = EHOSTUNREACH; +int e114 = EALREADY; +int e115 = EINPROGRESS; +int e116 = ESTALE; +int e122 = EDQUOT; +int e125 = ECANCELED; +int e130 = EOWNERDEAD; +int e131 = ENOTRECOVERABLE; + +/* Don't verify that these errno values are all different, except for possibly + EWOULDBLOCK == EAGAIN. Even Linux/x86 does not pass this check: it has + ENOTSUP == EOPNOTSUPP. */ + +int +main () +{ + /* Verify that errno can be assigned. */ + errno = EOVERFLOW; + + /* snprintf() callers want to distinguish EINVAL and EOVERFLOW. */ + if (errno == EINVAL) + return 1; + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-fcntl-h.c b/gettext-tools/gnulib-tests/test-fcntl-h.c new file mode 100644 index 0000000..19e4fc5 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fcntl-h.c @@ -0,0 +1,130 @@ +/* Test of <fcntl.h> substitute. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <fcntl.h> + +/* Check that the various O_* macros are defined. */ +int o = (O_DIRECT | O_DIRECTORY | O_DSYNC | O_IGNORE_CTTY | O_NDELAY | O_NOATIME + | O_NONBLOCK | O_NOCTTY | O_NOFOLLOW | O_NOLINK | O_NOLINKS | O_NOTRANS + | O_RSYNC | O_SYNC | O_TTY_INIT | O_BINARY | O_TEXT); + +/* Check that the various SEEK_* macros are defined. */ +int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET }; + +/* Check that the FD_* macros are defined. */ +int i = FD_CLOEXEC; + +/* Check that the types are all defined. */ +pid_t t1; +off_t t2; +mode_t t3; + +int +main (void) +{ + /* Ensure no overlap in SEEK_*. */ + switch (0) + { + case SEEK_CUR: + case SEEK_END: + case SEEK_SET: + ; + } + + /* Ensure no dangerous overlap in non-zero gnulib-defined replacements. */ + switch (O_RDONLY) + { + /* Access modes */ + case O_RDONLY: + case O_WRONLY: + case O_RDWR: +#if O_EXEC && O_EXEC != O_RDONLY + case O_EXEC: +#endif +#if O_SEARCH && O_EXEC != O_SEARCH && O_SEARCH != O_RDONLY + case O_SEARCH: +#endif + i = ! (~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)); + break; + + /* Everyone should have these */ + case O_CREAT: + case O_EXCL: + case O_TRUNC: + case O_APPEND: + break; + + /* These might be 0 or O_RDONLY, only test non-zero versions. */ +#if O_CLOEXEC + case O_CLOEXEC: +#endif +#if O_DIRECT + case O_DIRECT: +#endif +#if O_DIRECTORY + case O_DIRECTORY: +#endif +#if O_DSYNC + case O_DSYNC: +#endif +#if O_IGNORE_CTTY + case O_IGNORE_CTTY: +#endif +#if O_NOATIME + case O_NOATIME: +#endif +#if O_NONBLOCK + case O_NONBLOCK: +#endif +#if O_NOCTTY + case O_NOCTTY: +#endif +#if O_NOFOLLOW + case O_NOFOLLOW: +#endif +#if O_NOLINK + case O_NOLINK: +#endif +#if O_NOLINKS + case O_NOLINKS: +#endif +#if O_NOTRANS + case O_NOTRANS: +#endif +#if O_RSYNC && O_RSYNC != O_DSYNC + case O_RSYNC: +#endif +#if O_SYNC && O_SYNC != O_DSYNC && O_SYNC != O_RSYNC + case O_SYNC: +#endif +#if O_TTY_INIT + case O_TTY_INIT: +#endif +#if O_BINARY + case O_BINARY: +#endif +#if O_TEXT + case O_TEXT: +#endif + ; + } + + return !i; +} diff --git a/gettext-tools/gnulib-tests/test-fcntl.c b/gettext-tools/gnulib-tests/test-fcntl.c new file mode 100644 index 0000000..23d74d8 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fcntl.c @@ -0,0 +1,409 @@ +/* Test of fcntl(2). + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +/* Specification. */ +#include <fcntl.h> + +#include "signature.h" +SIGNATURE_CHECK (fcntl, int, (int, int, ...)); + +/* Helpers. */ +#include <errno.h> +#include <stdarg.h> +#include <stdbool.h> +#include <unistd.h> + +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +/* Get declarations of the native Windows API functions. */ +# define WIN32_LEAN_AND_MEAN +# include <windows.h> +/* Get _get_osfhandle. */ +# include "msvc-nothrow.h" +#endif + +#include "binary-io.h" +#include "macros.h" + +#if !O_BINARY +# define setmode(f,m) zero () +static int zero (void) { return 0; } +#endif + +/* Return true if FD is open. */ +static bool +is_open (int fd) +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Windows, the initial state of unassigned standard file + descriptors is that they are open but point to an + INVALID_HANDLE_VALUE, and there is no fcntl. */ + return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE; +#else +# ifndef F_GETFL +# error Please port fcntl to your platform +# endif + return 0 <= fcntl (fd, F_GETFL); +#endif +} + +/* Return true if FD is open and inheritable across exec/spawn. */ +static bool +is_inheritable (int fd) +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Windows, the initial state of unassigned standard file + descriptors is that they are open but point to an + INVALID_HANDLE_VALUE, and there is no fcntl. */ + HANDLE h = (HANDLE) _get_osfhandle (fd); + DWORD flags; + if (h == INVALID_HANDLE_VALUE || GetHandleInformation (h, &flags) == 0) + return false; + return (flags & HANDLE_FLAG_INHERIT) != 0; +#else +# ifndef F_GETFD +# error Please port fcntl to your platform +# endif + int i = fcntl (fd, F_GETFD); + return 0 <= i && (i & FD_CLOEXEC) == 0; +#endif +} + +/* Return non-zero if FD is open in the given MODE, which is either + O_TEXT or O_BINARY. */ +static bool +is_mode (int fd, int mode) +{ + int value = setmode (fd, O_BINARY); + setmode (fd, value); + return mode == value; +} + +/* Since native fcntl can have more supported operations than our + replacement is aware of, and since various operations assign + different types to the vararg argument, a wrapper around fcntl must + be able to pass a vararg of unknown type on through to the original + fcntl. Make sure that this works properly: func1 behaves like the + original fcntl interpreting the vararg as an int or a pointer to a + struct, and func2 behaves like rpl_fcntl that doesn't know what + type to forward. */ +struct dummy_struct +{ + long filler; + int value; +}; +static int +func1 (int a, ...) +{ + va_list arg; + int i; + va_start (arg, a); + if (a < 4) + i = va_arg (arg, int); + else + { + struct dummy_struct *s = va_arg (arg, struct dummy_struct *); + i = s->value; + } + va_end (arg); + return i; +} +static int +func2 (int a, ...) +{ + va_list arg; + void *p; + va_start (arg, a); + p = va_arg (arg, void *); + va_end (arg); + return func1 (a, p); +} + +/* Ensure that all supported fcntl actions are distinct, and + usable in preprocessor expressions. */ +static void +check_flags (void) +{ + switch (0) + { + case F_DUPFD: +#if F_DUPFD +#endif + + case F_DUPFD_CLOEXEC: +#if F_DUPFD_CLOEXEC +#endif + + case F_GETFD: +#if F_GETFD +#endif + +#ifdef F_SETFD + case F_SETFD: +# if F_SETFD +# endif +#endif + +#ifdef F_GETFL + case F_GETFL: +# if F_GETFL +# endif +#endif + +#ifdef F_SETFL + case F_SETFL: +# if F_SETFL +# endif +#endif + +#ifdef F_GETOWN + case F_GETOWN: +# if F_GETOWN +# endif +#endif + +#ifdef F_SETOWN + case F_SETOWN: +# if F_SETOWN +# endif +#endif + +#ifdef F_GETLK + case F_GETLK: +# if F_GETLK +# endif +#endif + +#ifdef F_SETLK + case F_SETLK: +# if F_SETLK +# endif +#endif + +#ifdef F_SETLKW + case F_SETLKW: +# if F_SETLKW +# endif +#endif + + ; + } +} + +int +main (void) +{ + const char *file = "test-fcntl.tmp"; + int fd; + int bad_fd = getdtablesize (); + + /* Sanity check that rpl_fcntl is likely to work. */ + ASSERT (func2 (1, 2) == 2); + ASSERT (func2 (2, -2) == -2); + ASSERT (func2 (3, 0x80000000) == 0x80000000); + { + struct dummy_struct s = { 0L, 4 }; + ASSERT (func2 (4, &s) == 4); + } + check_flags (); + + /* Assume std descriptors were provided by invoker, and ignore fds + that might have been inherited. */ + fd = creat (file, 0600); + ASSERT (STDERR_FILENO < fd); + close (fd + 1); + close (fd + 2); + + /* For F_DUPFD*, the source must be valid. */ + errno = 0; + ASSERT (fcntl (-1, F_DUPFD, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (fd + 1, F_DUPFD, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (bad_fd, F_DUPFD, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (-1, F_DUPFD_CLOEXEC, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (fd + 1, F_DUPFD_CLOEXEC, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (bad_fd, F_DUPFD_CLOEXEC, 0) == -1); + ASSERT (errno == EBADF); + + /* For F_DUPFD*, the destination must be valid. */ + errno = 0; + ASSERT (fcntl (fd, F_DUPFD, -1) == -1); + ASSERT (errno == EINVAL); + errno = 0; + ASSERT (fcntl (fd, F_DUPFD, bad_fd) == -1); + ASSERT (errno == EINVAL); + errno = 0; + ASSERT (fcntl (fd, F_DUPFD_CLOEXEC, -1) == -1); + ASSERT (errno == EINVAL); + errno = 0; + ASSERT (fcntl (fd, F_DUPFD_CLOEXEC, bad_fd) == -1); + ASSERT (errno == EINVAL); + + /* For F_DUPFD*, check for correct inheritance, as well as + preservation of text vs. binary. */ + setmode (fd, O_BINARY); + ASSERT (is_open (fd)); + ASSERT (!is_open (fd + 1)); + ASSERT (!is_open (fd + 2)); + ASSERT (is_inheritable (fd)); + ASSERT (is_mode (fd, O_BINARY)); + + ASSERT (fcntl (fd, F_DUPFD, fd) == fd + 1); + ASSERT (is_open (fd)); + ASSERT (is_open (fd + 1)); + ASSERT (!is_open (fd + 2)); + ASSERT (is_inheritable (fd + 1)); + ASSERT (is_mode (fd, O_BINARY)); + ASSERT (is_mode (fd + 1, O_BINARY)); + ASSERT (close (fd + 1) == 0); + + ASSERT (fcntl (fd, F_DUPFD_CLOEXEC, fd + 2) == fd + 2); + ASSERT (is_open (fd)); + ASSERT (!is_open (fd + 1)); + ASSERT (is_open (fd + 2)); + ASSERT (is_inheritable (fd)); + ASSERT (!is_inheritable (fd + 2)); + ASSERT (is_mode (fd, O_BINARY)); + ASSERT (is_mode (fd + 2, O_BINARY)); + ASSERT (close (fd) == 0); + + setmode (fd + 2, O_TEXT); + ASSERT (fcntl (fd + 2, F_DUPFD, fd + 1) == fd + 1); + ASSERT (!is_open (fd)); + ASSERT (is_open (fd + 1)); + ASSERT (is_open (fd + 2)); + ASSERT (is_inheritable (fd + 1)); + ASSERT (!is_inheritable (fd + 2)); + ASSERT (is_mode (fd + 1, O_TEXT)); + ASSERT (is_mode (fd + 2, O_TEXT)); + ASSERT (close (fd + 1) == 0); + + ASSERT (fcntl (fd + 2, F_DUPFD_CLOEXEC, 0) == fd); + ASSERT (is_open (fd)); + ASSERT (!is_open (fd + 1)); + ASSERT (is_open (fd + 2)); + ASSERT (!is_inheritable (fd)); + ASSERT (!is_inheritable (fd + 2)); + ASSERT (is_mode (fd, O_TEXT)); + ASSERT (is_mode (fd + 2, O_TEXT)); + ASSERT (close (fd + 2) == 0); + + /* Test F_GETFD on invalid file descriptors. */ + errno = 0; + ASSERT (fcntl (-1, F_GETFD) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (fd + 1, F_GETFD) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (bad_fd, F_GETFD) == -1); + ASSERT (errno == EBADF); + + /* Test F_GETFD, the FD_CLOEXEC bit. */ + { + int result = fcntl (fd, F_GETFD); + ASSERT (0 <= result); + ASSERT ((result & FD_CLOEXEC) == FD_CLOEXEC); + ASSERT (dup (fd) == fd + 1); + result = fcntl (fd + 1, F_GETFD); + ASSERT (0 <= result); + ASSERT ((result & FD_CLOEXEC) == 0); + ASSERT (close (fd + 1) == 0); + } + +#ifdef F_SETFD + /* Test F_SETFD on invalid file descriptors. */ + errno = 0; + ASSERT (fcntl (-1, F_SETFD, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (fd + 1, F_SETFD, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (bad_fd, F_SETFD, 0) == -1); + ASSERT (errno == EBADF); +#endif + +#ifdef F_GETFL + /* Test F_GETFL on invalid file descriptors. */ + errno = 0; + ASSERT (fcntl (-1, F_GETFL) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (fd + 1, F_GETFL) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (bad_fd, F_GETFL) == -1); + ASSERT (errno == EBADF); +#endif + +#ifdef F_SETFL + /* Test F_SETFL on invalid file descriptors. */ + errno = 0; + ASSERT (fcntl (-1, F_SETFL, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (fd + 1, F_SETFL, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (bad_fd, F_SETFL, 0) == -1); + ASSERT (errno == EBADF); +#endif + +#ifdef F_GETOWN + /* Test F_GETOWN on invalid file descriptors. */ + errno = 0; + ASSERT (fcntl (-1, F_GETOWN) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (fd + 1, F_GETOWN) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (bad_fd, F_GETOWN) == -1); + ASSERT (errno == EBADF); +#endif + +#ifdef F_SETOWN + /* Test F_SETFL on invalid file descriptors. */ + errno = 0; + ASSERT (fcntl (-1, F_SETOWN, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (fd + 1, F_SETOWN, 0) == -1); + ASSERT (errno == EBADF); + errno = 0; + ASSERT (fcntl (bad_fd, F_SETOWN, 0) == -1); + ASSERT (errno == EBADF); +#endif + + /* Cleanup. */ + ASSERT (close (fd) == 0); + ASSERT (unlink (file) == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-fdopen.c b/gettext-tools/gnulib-tests/test-fdopen.c new file mode 100644 index 0000000..743511e --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fdopen.c @@ -0,0 +1,49 @@ +/* Test opening a stream with a file descriptor. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (fdopen, FILE *, (int, const char *)); + +#include <errno.h> +#include <unistd.h> + +#include "macros.h" + +int +main (void) +{ + /* Test behavior on failure. POSIX makes it hard to check for + failure, since the behavior is not well-defined on invalid file + descriptors, so try fdopen 1000 times and if that's not enough to + fail due to EMFILE, so be it. */ + + int i; + for (i = 0; i < 1000; i++) + { + errno = 0; + if (! fdopen (STDOUT_FILENO, "w")) + { + ASSERT (errno != 0); + break; + } + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-fgetc.c b/gettext-tools/gnulib-tests/test-fgetc.c new file mode 100644 index 0000000..2534d4b --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fgetc.c @@ -0,0 +1,97 @@ +/* Test of fgetc() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (fgetc, int, (FILE *)); + +#include <errno.h> +#include <fcntl.h> +#include <unistd.h> + +#include "msvc-inval.h" + +#include "macros.h" + +int +main (int argc, char **argv) +{ + const char *filename = "test-fgetc.txt"; + + /* We don't have an fgetc() function that installs an invalid parameter + handler so far. So install that handler here, explicitly. */ +#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ + && MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING + gl_msvc_inval_ensure_handler (); +#endif + + /* Prepare a file. */ + { + const char text[] = "hello world"; + int fd = open (filename, O_RDWR | O_CREAT | O_TRUNC, 0600); + ASSERT (fd >= 0); + ASSERT (write (fd, text, sizeof (text)) == sizeof (text)); + ASSERT (close (fd) == 0); + } + + /* Test that fgetc() sets errno if someone else closes the stream + fd behind the back of stdio. */ + { + FILE *fp = fopen (filename, "r"); + ASSERT (fp != NULL); + ASSERT (close (fileno (fp)) == 0); + errno = 0; + ASSERT (fgetc (fp) == EOF); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + + /* Test that fgetc() sets errno if the stream was constructed with + an invalid file descriptor. */ + { + FILE *fp = fdopen (-1, "r"); + if (fp != NULL) + { + errno = 0; + ASSERT (fgetc (fp) == EOF); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + } + { + FILE *fp; + close (99); + fp = fdopen (99, "r"); + if (fp != NULL) + { + errno = 0; + ASSERT (fgetc (fp) == EOF); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + } + + /* Clean up. */ + unlink (filename); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-file-has-acl-1.sh b/gettext-tools/gnulib-tests/test-file-has-acl-1.sh new file mode 100755 index 0000000..e3ad9c0 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-file-has-acl-1.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# Test file-has-acl on the file system of /var/tmp, which usually is a local +# file system. + +if test -d /var/tmp; then + TMPDIR=/var/tmp +else + TMPDIR=/tmp +fi +export TMPDIR + +exec "${srcdir}/test-file-has-acl.sh" diff --git a/gettext-tools/gnulib-tests/test-file-has-acl-2.sh b/gettext-tools/gnulib-tests/test-file-has-acl-2.sh new file mode 100755 index 0000000..6b92b1d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-file-has-acl-2.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# Test file-has-acl on the file system of the build directory, which may be +# a local file system or NFS mounted. + +TMPDIR=`pwd` +export TMPDIR + +exec "${srcdir}/test-file-has-acl.sh" diff --git a/gettext-tools/gnulib-tests/test-file-has-acl.c b/gettext-tools/gnulib-tests/test-file-has-acl.c new file mode 100644 index 0000000..f0de2ce --- /dev/null +++ b/gettext-tools/gnulib-tests/test-file-has-acl.c @@ -0,0 +1,74 @@ +/* Test for presence of ACL. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include "acl.h" + +#include <signal.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + const char *file; + struct stat statbuf; + + ASSERT (argc == 2); + + file = argv[1]; + + if (stat (file, &statbuf) < 0) + { + fprintf (stderr, "could not access file \"%s\"\n", file); + exit (EXIT_FAILURE); + } + + /* Check against possible infinite loop in file_has_acl. */ +#if HAVE_DECL_ALARM + /* Declare failure if test takes too long, by using default abort + caused by SIGALRM. */ + { + int alarm_value = 5; + signal (SIGALRM, SIG_DFL); + alarm (alarm_value); + } +#endif + +#if USE_ACL + { + int ret = file_has_acl (file, &statbuf); + if (ret < 0) + { + fprintf (stderr, "could not access the ACL of file \"%s\"\n", file); + exit (EXIT_FAILURE); + } + printf ("%s\n", ret ? "yes" : "no"); + } +#else + printf ("no\n"); +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-file-has-acl.sh b/gettext-tools/gnulib-tests/test-file-has-acl.sh new file mode 100755 index 0000000..26610c1 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-file-has-acl.sh @@ -0,0 +1,384 @@ +#!/bin/sh + +# Show all commands when run with environment variable VERBOSE=yes. +test -z "$VERBOSE" || set -x + +test "$USE_ACL" = 0 && + { + echo "Skipping test: insufficient ACL support" + exit 77 + } + +# func_tmpdir +# creates a temporary directory. +# Sets variable +# - tmp pathname of freshly created temporary directory +func_tmpdir () +{ + # Use the environment variable TMPDIR, falling back to /tmp. This allows + # users to specify a different temporary directory, for example, if their + # /tmp is filled up or too small. + : ${TMPDIR=/tmp} + { + # Use the mktemp program if available. If not available, hide the error + # message. + tmp=`(umask 077 && mktemp -d "$TMPDIR/glXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { + # Use a simple mkdir command. It is guaranteed to fail if the directory + # already exists. $RANDOM is bash specific and expands to empty in shells + # other than bash, ksh and zsh. Its use does not increase security; + # rather, it minimizes the probability of failure in a very cluttered /tmp + # directory. + tmp=$TMPDIR/gl$$-$RANDOM + (umask 077 && mkdir "$tmp") + } || + { + echo "$0: cannot create a temporary directory in $TMPDIR" >&2 + exit 1 + } +} + +func_tmpdir +builddir=`pwd` +cd "$builddir" || + { + echo "$0: cannot determine build directory (unreadable parent dir?)" >&2 + exit 1 + } +# Switch to a temporary directory, to increase the likelihood that ACLs are +# supported on the current file system. (/tmp is usually locally mounted, +# whereas the build dir is sometimes NFS-mounted.) +( cd "$tmp" + + # Prepare tmpfile0. + rm -f tmpfile[0-9] tmp.err + echo "Simple contents" > tmpfile0 + chmod 600 tmpfile0 + + # Classification of the platform according to the programs available for + # manipulating ACLs. + # Possible values are: + # linux, cygwin, freebsd, solaris, hpux, hpuxjfs, osf1, aix, macosx, irix, none. + # TODO: Support also native Windows platforms (mingw). + acl_flavor=none + if (getfacl tmpfile0 >/dev/null) 2>/dev/null; then + # Platforms with the getfacl and setfacl programs. + # Linux, FreeBSD, Solaris, Cygwin. + if (setfacl --help >/dev/null) 2>/dev/null; then + # Linux, Cygwin. + if (LC_ALL=C setfacl --help | grep ' --set-file' >/dev/null) 2>/dev/null; then + # Linux. + acl_flavor=linux + else + acl_flavor=cygwin + fi + else + # FreeBSD, Solaris. + if (LC_ALL=C setfacl 2>&1 | grep '\-x entries' >/dev/null) 2>/dev/null; then + # FreeBSD. + acl_flavor=freebsd + else + # Solaris. + acl_flavor=solaris + fi + fi + else + if (lsacl / >/dev/null) 2>/dev/null; then + # Platforms with the lsacl and chacl programs. + # HP-UX, sometimes also IRIX. + if (getacl tmpfile0 >/dev/null) 2>/dev/null; then + # HP-UX 11.11 or newer. + acl_flavor=hpuxjfs + else + # HP-UX 11.00. + acl_flavor=hpux + fi + else + if (getacl tmpfile0 >/dev/null) 2>/dev/null; then + # Tru64, NonStop Kernel. + if (getacl -m tmpfile0 >/dev/null) 2>/dev/null; then + # Tru64. + acl_flavor=osf1 + else + # NonStop Kernel. + acl_flavor=nsk + fi + else + if (aclget tmpfile0 >/dev/null) 2>/dev/null; then + # AIX. + acl_flavor=aix + else + if (fsaclctl -v >/dev/null) 2>/dev/null; then + # Mac OS X. + acl_flavor=macosx + else + if test -f /sbin/chacl; then + # IRIX. + acl_flavor=irix + fi + fi + fi + fi + fi + fi + + # func_test_file_has_acl file expected + # tests the result of the file_has_acl function on file, and checks that it + # matches the expected value. + func_test_file_has_acl () + { + res=`"$builddir"/test-file-has-acl${EXEEXT} "$1"` + test "$res" = "$2" || { + echo "file_has_acl(\"$1\") returned $res, expected $2" 1>&2 + exit 1 + } + } + + # func_test_has_acl file expected + # tests the result of the file_has_acl function on file, and checks that it + # matches the expected value, also taking into account the system's 'ls' + # program. + case $acl_flavor in + freebsd | solaris | hpux | macosx) + case $acl_flavor in + freebsd | solaris | hpux) acl_ls_option="-ld" ;; + macosx) acl_ls_option="-lde" ;; + esac + func_test_has_acl () + { + func_test_file_has_acl "$1" "$2" + case `/bin/ls $acl_ls_option "$1" | sed 1q` in + ??????????+*) + test "$2" = yes || { + echo "/bin/ls $acl_ls_option $1 shows an ACL, but expected $2" 1>&2 + exit 1 + } + ;; + ??????????" "*) + test "$2" = no || { + echo "/bin/ls $acl_ls_option $1 shows no ACL, but expected $2" 1>&2 + exit 1 + } + ;; + esac + } + ;; + irix) + func_test_has_acl () + { + func_test_file_has_acl "$1" "$2" + case `/bin/ls -ldD "$1" | sed 1q` in + *" []") + test "$2" = no || { + echo "/bin/ls -ldD $1 shows no ACL, but expected $2" 1>&2 + exit 1 + } + ;; + *) + test "$2" = yes || { + echo "/bin/ls -ldD $1 shows an ACL, but expected $2" 1>&2 + exit 1 + } + ;; + esac + } + ;; + *) + func_test_has_acl () + { + func_test_file_has_acl "$1" "$2" + } + ;; + esac + + func_test_has_acl tmpfile0 no + + mkdir tmpdir0 + func_test_has_acl tmpdir0 no + + if test $acl_flavor != none; then + # A POSIX compliant 'id' program. + if test -f /usr/xpg4/bin/id; then + ID=/usr/xpg4/bin/id + else + ID=id + fi + # Use a user and group id different from the current one, to avoid + # redundant/ambiguous ACLs. + myuid=`$ID -u` + mygid=`$ID -g` + auid=1 + if test "$auid" = "$myuid"; then auid=2; fi + agid=1 + if test "$agid" = "$mygid"; then agid=2; fi + + case $acl_flavor in + linux | freebsd | solaris) + + # Set an ACL for a user. + if setfacl -m user:$auid:1 tmpfile0; then + + func_test_has_acl tmpfile0 yes + + # Remove the ACL for the user. + case $acl_flavor in + linux) setfacl -x user:$auid tmpfile0 ;; + freebsd) setfacl -x user:$auid:1 tmpfile0 ;; + *) setfacl -d user:$auid:1 tmpfile0 ;; + esac + + # On Linux and FreeBSD, the ACL for the mask is implicitly added. + # On Solaris, it is always there. + case $acl_flavor in + linux | freebsd) func_test_has_acl tmpfile0 yes ;; + *) func_test_has_acl tmpfile0 no ;; + esac + + # Remove the ACL for the mask, if it was implicitly added. + case $acl_flavor in + linux | freebsd) setfacl -x mask: tmpfile0 ;; + *) setfacl -d mask: tmpfile0 ;; + esac + + func_test_has_acl tmpfile0 no + + fi + ;; + + cygwin) + + # Set an ACL for a group. + if setfacl -m group:0:1 tmpfile0; then + + func_test_has_acl tmpfile0 yes + + # Remove the ACL for the group. + setfacl -d group:0 tmpfile0 + + func_test_has_acl tmpfile0 no + + fi + ;; + + hpux | hpuxjfs) + + # Set an ACL for a user. + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + if chacl -r "${orig}($auid.%,--x)" tmpfile0; then + + func_test_has_acl tmpfile0 yes + + # Remove the ACL for the user. + chacl -d "($auid.%,--x)" tmpfile0 + + func_test_has_acl tmpfile0 no + + else + if test $acl_flavor = hpuxjfs; then + + # Set an ACL for a user. + setacl -m user:$auid:1 tmpfile0 + + func_test_has_acl tmpfile0 yes + + # Remove the ACL for the user. + setacl -d user:$auid tmpfile0 + + func_test_has_acl tmpfile0 no + + fi + fi + ;; + + osf1) + + # Set an ACL for a user. + setacl -u user:$auid:1 tmpfile0 2> tmp.err + cat tmp.err 1>&2 + if grep 'Error:' tmp.err > /dev/null \ + || grep 'Operation not supported' tmp.err > /dev/null; then + : + else + + func_test_has_acl tmpfile0 yes + + # Remove the ACL for the user. + setacl -x user:$auid:1 tmpfile0 + + func_test_has_acl tmpfile0 no + + fi + ;; + + nsk) + + # Set an ACL for a user. + setacl -m user:$auid:1 tmpfile0 + + func_test_has_acl tmpfile0 yes + + # Remove the ACL for the user. + setacl -d user:$auid tmpfile0 + + func_test_has_acl tmpfile0 no + + ;; + + aix) + + # Set an ACL for a user. + { aclget tmpfile0 | sed -e 's/disabled$/enabled/'; echo " permit --x u:$auid"; } | aclput tmpfile0 + if aclget tmpfile0 | grep enabled > /dev/null; then + + func_test_has_acl tmpfile0 yes + + # Remove the ACL for the user. + aclget tmpfile0 | grep -v ' u:[^ ]*$' | aclput tmpfile0 + + func_test_has_acl tmpfile0 no + + fi + ;; + + macosx) + + # Set an ACL for a user. + /bin/chmod +a "user:daemon allow execute" tmpfile0 + + func_test_has_acl tmpfile0 yes + + # Remove the ACL for the user. + /bin/chmod -a "user:daemon allow execute" tmpfile0 + + func_test_has_acl tmpfile0 no + + ;; + + irix) + + # Set an ACL for a user. + /sbin/chacl user::rw-,group::---,other::---,user:$auid:--x tmpfile0 2> tmp.err + cat tmp.err 1>&2 + if test -s tmp.err; then :; else + + func_test_has_acl tmpfile0 yes + + # Remove the ACL for the user. + /sbin/chacl user::rw-,group::---,other::--- tmpfile0 + + func_test_has_acl tmpfile0 no + + fi + ;; + + esac + fi + + rm -f tmpfile[0-9] tmp.err + rm -rf tmpdir0 +) || exit 1 + +rm -rf "$tmp" +exit 0 diff --git a/gettext-tools/gnulib-tests/test-float.c b/gettext-tools/gnulib-tests/test-float.c new file mode 100644 index 0000000..28a67bb --- /dev/null +++ b/gettext-tools/gnulib-tests/test-float.c @@ -0,0 +1,384 @@ +/* Test of <float.h> substitute. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2011. */ + +#include <config.h> + +#include <float.h> + +#include "fpucw.h" +#include "macros.h" + +/* Check that FLT_RADIX is a constant expression. */ +int a[] = { FLT_RADIX }; + +#if FLT_RADIX == 2 + +/* Return 2^n. */ +static float +pow2f (int n) +{ + int k = n; + volatile float x = 1; + volatile float y = 2; + /* Invariant: 2^n == x * y^k. */ + if (k < 0) + { + y = 0.5f; + k = - k; + } + while (k > 0) + { + if (k != 2 * (k / 2)) + { + x = x * y; + k = k - 1; + } + if (k == 0) + break; + y = y * y; + k = k / 2; + } + /* Now k == 0, hence x == 2^n. */ + return x; +} + +/* Return 2^n. */ +static double +pow2d (int n) +{ + int k = n; + volatile double x = 1; + volatile double y = 2; + /* Invariant: 2^n == x * y^k. */ + if (k < 0) + { + y = 0.5; + k = - k; + } + while (k > 0) + { + if (k != 2 * (k / 2)) + { + x = x * y; + k = k - 1; + } + if (k == 0) + break; + y = y * y; + k = k / 2; + } + /* Now k == 0, hence x == 2^n. */ + return x; +} + +/* Return 2^n. */ +static long double +pow2l (int n) +{ + int k = n; + volatile long double x = 1; + volatile long double y = 2; + /* Invariant: 2^n == x * y^k. */ + if (k < 0) + { + y = 0.5L; + k = - k; + } + while (k > 0) + { + if (k != 2 * (k / 2)) + { + x = x * y; + k = k - 1; + } + if (k == 0) + break; + y = y * y; + k = k / 2; + } + /* Now k == 0, hence x == 2^n. */ + return x; +} + +/* ----------------------- Check macros for 'float' ----------------------- */ + +/* Check that the FLT_* macros expand to constant expressions. */ +int fb[] = + { + FLT_MANT_DIG, FLT_MIN_EXP, FLT_MAX_EXP, + FLT_DIG, FLT_MIN_10_EXP, FLT_MAX_10_EXP + }; +float fc[] = { FLT_EPSILON, FLT_MIN, FLT_MAX }; + +static void +test_float (void) +{ + /* Check that the value of FLT_MIN_EXP is well parenthesized. */ + ASSERT ((FLT_MIN_EXP % 101111) == (FLT_MIN_EXP) % 101111); + + /* Check that the value of DBL_MIN_10_EXP is well parenthesized. */ + ASSERT ((FLT_MIN_10_EXP % 101111) == (FLT_MIN_10_EXP) % 101111); + + /* Check that 'float' is as specified in IEEE 754. */ + ASSERT (FLT_MANT_DIG == 24); + ASSERT (FLT_MIN_EXP == -125); + ASSERT (FLT_MAX_EXP == 128); + + /* Check the value of FLT_MIN_10_EXP. */ + ASSERT (FLT_MIN_10_EXP == - (int) (- (FLT_MIN_EXP - 1) * 0.30103)); + + /* Check the value of FLT_DIG. */ + ASSERT (FLT_DIG == (int) ((FLT_MANT_DIG - 1) * 0.30103)); + + /* Check the value of FLT_MIN_10_EXP. */ + ASSERT (FLT_MIN_10_EXP == - (int) (- (FLT_MIN_EXP - 1) * 0.30103)); + + /* Check the value of FLT_MAX_10_EXP. */ + ASSERT (FLT_MAX_10_EXP == (int) (FLT_MAX_EXP * 0.30103)); + + /* Check the value of FLT_MAX. */ + { + volatile float m = FLT_MAX; + int n; + + ASSERT (m + m > m); + for (n = 0; n <= 2 * FLT_MANT_DIG; n++) + { + volatile float pow2_n = pow2f (n); /* 2^n */ + volatile float x = m + (m / pow2_n); + if (x > m) + ASSERT (x + x == x); + else + ASSERT (!(x + x == x)); + } + } + + /* Check the value of FLT_MIN. */ + { + volatile float m = FLT_MIN; + volatile float x = pow2f (FLT_MIN_EXP - 1); + ASSERT (m == x); + } + + /* Check the value of FLT_EPSILON. */ + { + volatile float e = FLT_EPSILON; + volatile float me; + int n; + + me = 1.0f + e; + ASSERT (me > 1.0f); + ASSERT (me - 1.0f == e); + for (n = 0; n <= 2 * FLT_MANT_DIG; n++) + { + volatile float half_n = pow2f (- n); /* 2^-n */ + volatile float x = me - half_n; + if (x < me) + ASSERT (x <= 1.0f); + } + } +} + +/* ----------------------- Check macros for 'double' ----------------------- */ + +/* Check that the DBL_* macros expand to constant expressions. */ +int db[] = + { + DBL_MANT_DIG, DBL_MIN_EXP, DBL_MAX_EXP, + DBL_DIG, DBL_MIN_10_EXP, DBL_MAX_10_EXP + }; +double dc[] = { DBL_EPSILON, DBL_MIN, DBL_MAX }; + +static void +test_double (void) +{ + /* Check that the value of DBL_MIN_EXP is well parenthesized. */ + ASSERT ((DBL_MIN_EXP % 101111) == (DBL_MIN_EXP) % 101111); + + /* Check that the value of DBL_MIN_10_EXP is well parenthesized. */ + ASSERT ((DBL_MIN_10_EXP % 101111) == (DBL_MIN_10_EXP) % 101111); + + /* Check that 'double' is as specified in IEEE 754. */ + ASSERT (DBL_MANT_DIG == 53); + ASSERT (DBL_MIN_EXP == -1021); + ASSERT (DBL_MAX_EXP == 1024); + + /* Check the value of DBL_MIN_10_EXP. */ + ASSERT (DBL_MIN_10_EXP == - (int) (- (DBL_MIN_EXP - 1) * 0.30103)); + + /* Check the value of DBL_DIG. */ + ASSERT (DBL_DIG == (int) ((DBL_MANT_DIG - 1) * 0.30103)); + + /* Check the value of DBL_MIN_10_EXP. */ + ASSERT (DBL_MIN_10_EXP == - (int) (- (DBL_MIN_EXP - 1) * 0.30103)); + + /* Check the value of DBL_MAX_10_EXP. */ + ASSERT (DBL_MAX_10_EXP == (int) (DBL_MAX_EXP * 0.30103)); + + /* Check the value of DBL_MAX. */ + { + volatile double m = DBL_MAX; + int n; + + ASSERT (m + m > m); + for (n = 0; n <= 2 * DBL_MANT_DIG; n++) + { + volatile double pow2_n = pow2d (n); /* 2^n */ + volatile double x = m + (m / pow2_n); + if (x > m) + ASSERT (x + x == x); + else + ASSERT (!(x + x == x)); + } + } + + /* Check the value of DBL_MIN. */ + { + volatile double m = DBL_MIN; + volatile double x = pow2d (DBL_MIN_EXP - 1); + ASSERT (m == x); + } + + /* Check the value of DBL_EPSILON. */ + { + volatile double e = DBL_EPSILON; + volatile double me; + int n; + + me = 1.0 + e; + ASSERT (me > 1.0); + ASSERT (me - 1.0 == e); + for (n = 0; n <= 2 * DBL_MANT_DIG; n++) + { + volatile double half_n = pow2d (- n); /* 2^-n */ + volatile double x = me - half_n; + if (x < me) + ASSERT (x <= 1.0); + } + } +} + +/* -------------------- Check macros for 'long double' -------------------- */ + +/* Check that the LDBL_* macros expand to constant expressions. */ +int lb[] = + { + LDBL_MANT_DIG, LDBL_MIN_EXP, LDBL_MAX_EXP, + LDBL_DIG, LDBL_MIN_10_EXP, LDBL_MAX_10_EXP + }; +long double lc1 = LDBL_EPSILON; +long double lc2 = LDBL_MIN; +#if 0 /* LDBL_MAX is not a constant expression on some platforms. */ +long double lc3 = LDBL_MAX; +#endif + +static void +test_long_double (void) +{ + /* Check that the value of LDBL_MIN_EXP is well parenthesized. */ + ASSERT ((LDBL_MIN_EXP % 101111) == (LDBL_MIN_EXP) % 101111); + + /* Check that the value of LDBL_MIN_10_EXP is well parenthesized. */ + ASSERT ((LDBL_MIN_10_EXP % 101111) == (LDBL_MIN_10_EXP) % 101111); + + /* Check that 'long double' is at least as wide as 'double'. */ + ASSERT (LDBL_MANT_DIG >= DBL_MANT_DIG); + ASSERT (LDBL_MIN_EXP - LDBL_MANT_DIG <= DBL_MIN_EXP - DBL_MANT_DIG); + ASSERT (LDBL_MAX_EXP >= DBL_MAX_EXP); + + /* Check the value of LDBL_DIG. */ + ASSERT (LDBL_DIG == (int)((LDBL_MANT_DIG - 1) * 0.30103)); + + /* Check the value of LDBL_MIN_10_EXP. */ + ASSERT (LDBL_MIN_10_EXP == - (int) (- (LDBL_MIN_EXP - 1) * 0.30103)); + + /* Check the value of LDBL_MAX_10_EXP. */ + ASSERT (LDBL_MAX_10_EXP == (int) (LDBL_MAX_EXP * 0.30103)); + + /* Check the value of LDBL_MAX. */ + { + volatile long double m = LDBL_MAX; + int n; + + ASSERT (m + m > m); + for (n = 0; n <= 2 * LDBL_MANT_DIG; n++) + { + volatile long double pow2_n = pow2l (n); /* 2^n */ + volatile long double x = m + (m / pow2_n); + if (x > m) + ASSERT (x + x == x); + else + ASSERT (!(x + x == x)); + } + } + + /* Check the value of LDBL_MIN. */ + { + volatile long double m = LDBL_MIN; + volatile long double x = pow2l (LDBL_MIN_EXP - 1); + ASSERT (m == x); + } + + /* Check the value of LDBL_EPSILON. */ + { + volatile long double e = LDBL_EPSILON; + volatile long double me; + int n; + + me = 1.0L + e; + ASSERT (me > 1.0L); + ASSERT (me - 1.0L == e); + for (n = 0; n <= 2 * LDBL_MANT_DIG; n++) + { + volatile long double half_n = pow2l (- n); /* 2^-n */ + volatile long double x = me - half_n; + if (x < me) + ASSERT (x <= 1.0L); + } + } +} + +int +main () +{ + test_float (); + test_double (); + + { + DECL_LONG_DOUBLE_ROUNDING + + BEGIN_LONG_DOUBLE_ROUNDING (); + + test_long_double (); + + END_LONG_DOUBLE_ROUNDING (); + } + + return 0; +} + +#else + +int +main () +{ + fprintf (stderr, "Skipping test: FLT_RADIX is not 2.\n"); + return 77; +} + +#endif diff --git a/gettext-tools/gnulib-tests/test-fnmatch.c b/gettext-tools/gnulib-tests/test-fnmatch.c new file mode 100644 index 0000000..de94559 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fnmatch.c @@ -0,0 +1,56 @@ +/* Test of fnmatch string matching function. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Simon Josefsson <simon@josefsson.org>, 2009. */ + +#include <config.h> + +#include <fnmatch.h> + +#include "signature.h" +SIGNATURE_CHECK (fnmatch, int, (char const *, char const *, int)); + +#include "macros.h" + +int +main () +{ + int res; + + ASSERT (res = fnmatch ("", "", 0) == 0); + + ASSERT (res = fnmatch ("*", "", 0) == 0); + ASSERT (res = fnmatch ("*", "foo", 0) == 0); + ASSERT (res = fnmatch ("*", "bar", 0) == 0); + ASSERT (res = fnmatch ("*", "*", 0) == 0); + ASSERT (res = fnmatch ("**", "f", 0) == 0); + ASSERT (res = fnmatch ("**", "foo.txt", 0) == 0); + ASSERT (res = fnmatch ("*.*", "foo.txt", 0) == 0); + + ASSERT (res = fnmatch ("foo*.txt", "foobar.txt", 0) == 0); + + ASSERT (res = fnmatch ("foo.txt", "foo.txt", 0) == 0); + ASSERT (res = fnmatch ("foo\\.txt", "foo.txt", 0) == 0); + ASSERT (res = fnmatch ("foo\\.txt", "foo.txt", FNM_NOESCAPE) == FNM_NOMATCH); + + /* Verify that an unmatched [ is treated as a literal, as POSIX + requires. This test ensures that glibc Bugzilla bug #12378 stays + fixed. + */ + ASSERT (res = fnmatch ("[/b", "[/b", 0) == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-fopen.c b/gettext-tools/gnulib-tests/test-fopen.c new file mode 100644 index 0000000..e1cb123 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fopen.c @@ -0,0 +1,34 @@ +/* Test of opening a file stream. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (fopen, FILE *, (char const *, char const *)); + +#define BASE "test-fopen.t" + +#include "test-fopen.h" + +int +main (void) +{ + return test_fopen (); +} diff --git a/gettext-tools/gnulib-tests/test-fopen.h b/gettext-tools/gnulib-tests/test-fopen.h new file mode 100644 index 0000000..f87bb2e --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fopen.h @@ -0,0 +1,73 @@ +/* Test of opening a file stream. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +/* Include <config.h> and a form of <stdio.h> first. */ + +#include <errno.h> +#include <unistd.h> + +#include "macros.h" + +/* Test fopen. Assumes BASE is defined. */ + +static int +test_fopen (void) +{ + FILE *f; + /* Remove anything from prior partial run. */ + unlink (BASE "file"); + + /* Read requires existing file. */ + errno = 0; + ASSERT (fopen (BASE "file", "r") == NULL); + ASSERT (errno == ENOENT); + + /* Write can create a file. */ + f = fopen (BASE "file", "w"); + ASSERT (f); + ASSERT (fclose (f) == 0); + + /* Trailing slash is invalid on non-directory. */ + errno = 0; + ASSERT (fopen (BASE "file/", "r") == NULL); + ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL); + + /* Cannot create a directory. */ + errno = 0; + ASSERT (fopen ("nonexist.ent/", "w") == NULL); + ASSERT (errno == ENOTDIR || errno == EISDIR || errno == ENOENT + || errno == EINVAL); + + /* Directories cannot be opened for writing. */ + errno = 0; + ASSERT (fopen (".", "w") == NULL); + ASSERT (errno == EISDIR || errno == EINVAL || errno == EACCES); + + /* /dev/null must exist, and be writable. */ + f = fopen ("/dev/null", "r"); + ASSERT (f); + ASSERT (fclose (f) == 0); + f = fopen ("/dev/null", "w"); + ASSERT (f); + ASSERT (fclose (f) == 0); + + /* Cleanup. */ + ASSERT (unlink (BASE "file") == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-fputc.c b/gettext-tools/gnulib-tests/test-fputc.c new file mode 100644 index 0000000..befb582 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fputc.c @@ -0,0 +1,91 @@ +/* Test of fputc() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (fputc, int, (int, FILE *)); + +#include <errno.h> +#include <fcntl.h> +#include <unistd.h> + +#include "msvc-inval.h" + +#include "macros.h" + +int +main (int argc, char **argv) +{ + const char *filename = "test-fputc.txt"; + + /* We don't have an fputc() function that installs an invalid parameter + handler so far. So install that handler here, explicitly. */ +#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ + && MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING + gl_msvc_inval_ensure_handler (); +#endif + + /* Test that fputc() on an unbuffered stream sets errno if someone else + closes the stream fd behind the back of stdio. */ + { + FILE *fp = fopen (filename, "w"); + ASSERT (fp != NULL); + setvbuf (fp, NULL, _IONBF, 0); + ASSERT (close (fileno (fp)) == 0); + errno = 0; + ASSERT (fputc ('x', fp) == EOF); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + + /* Test that fputc() on an unbuffered stream sets errno if the stream + was constructed with an invalid file descriptor. */ + { + FILE *fp = fdopen (-1, "w"); + if (fp != NULL) + { + setvbuf (fp, NULL, _IONBF, 0); + errno = 0; + ASSERT (fputc ('x', fp) == EOF); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + } + { + FILE *fp; + close (99); + fp = fdopen (99, "w"); + if (fp != NULL) + { + setvbuf (fp, NULL, _IONBF, 0); + errno = 0; + ASSERT (fputc ('x', fp) == EOF); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + } + + /* Clean up. */ + unlink (filename); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-fread.c b/gettext-tools/gnulib-tests/test-fread.c new file mode 100644 index 0000000..72b93a9 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fread.c @@ -0,0 +1,100 @@ +/* Test of fread() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (fread, size_t, (void *, size_t, size_t, FILE *)); + +#include <errno.h> +#include <fcntl.h> +#include <unistd.h> + +#include "msvc-inval.h" + +#include "macros.h" + +int +main (int argc, char **argv) +{ + const char *filename = "test-fread.txt"; + + /* We don't have an fread() function that installs an invalid parameter + handler so far. So install that handler here, explicitly. */ +#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ + && MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING + gl_msvc_inval_ensure_handler (); +#endif + + /* Prepare a file. */ + { + const char text[] = "hello world"; + int fd = open (filename, O_RDWR | O_CREAT | O_TRUNC, 0600); + ASSERT (fd >= 0); + ASSERT (write (fd, text, sizeof (text)) == sizeof (text)); + ASSERT (close (fd) == 0); + } + + /* Test that fread() sets errno if someone else closes the stream + fd behind the back of stdio. */ + { + FILE *fp = fopen (filename, "r"); + char buf[5]; + ASSERT (fp != NULL); + ASSERT (close (fileno (fp)) == 0); + errno = 0; + ASSERT (fread (buf, 1, sizeof (buf), fp) == 0); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + + /* Test that fread() sets errno if the stream was constructed with + an invalid file descriptor. */ + { + FILE *fp = fdopen (-1, "r"); + if (fp != NULL) + { + char buf[1]; + errno = 0; + ASSERT (fread (buf, 1, 1, fp) == 0); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + } + { + FILE *fp; + close (99); + fp = fdopen (99, "r"); + if (fp != NULL) + { + char buf[1]; + errno = 0; + ASSERT (fread (buf, 1, 1, fp) == 0); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + } + + /* Clean up. */ + unlink (filename); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-fstat.c b/gettext-tools/gnulib-tests/test-fstat.c new file mode 100644 index 0000000..9b793c9 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fstat.c @@ -0,0 +1,50 @@ +/* Tests of fstat() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <sys/stat.h> + +#include "signature.h" +SIGNATURE_CHECK (fstat, int, (int, struct stat *)); + +#include <errno.h> +#include <unistd.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + /* Test behaviour for invalid file descriptors. */ + { + struct stat statbuf; + + errno = 0; + ASSERT (fstat (-1, &statbuf) == -1); + ASSERT (errno == EBADF); + } + { + struct stat statbuf; + + close (99); + errno = 0; + ASSERT (fstat (99, &statbuf) == -1); + ASSERT (errno == EBADF); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-fstrcmp.c b/gettext-tools/gnulib-tests/test-fstrcmp.c new file mode 100644 index 0000000..7188b02 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fstrcmp.c @@ -0,0 +1,79 @@ +/* Test of fuzzy string comparison. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "fstrcmp.h" + +#include <stdbool.h> + +#include "progname.h" +#include "macros.h" + +static bool +check_fstrcmp (const char *string1, const char *string2, double expected) +{ + /* The use of 'volatile' guarantees that excess precision bits are dropped + before the addition and before the following comparison at the caller's + site. It is necessary on x86 systems where double-floats are not IEEE + compliant by default, to avoid that msgmerge results become platform and + compiler option dependent. 'volatile' is a portable alternative to gcc's + -ffloat-store option. */ + { + volatile double result = fstrcmp (string1, string2); + if (!(result == expected)) + return false; + } + { + volatile double result = fstrcmp_bounded (string1, string2, expected); + if (!(result == expected)) + return false; + } + { + double bound = expected * 0.5; /* implies bound <= expected */ + volatile double result = fstrcmp_bounded (string1, string2, bound); + if (!(result == expected)) + return false; + } + { + double bound = (1 + expected) * 0.5; + if (expected < bound) + { + volatile double result = fstrcmp_bounded (string1, string2, bound); + if (!(result < bound)) + return false; + } + } + + return true; +} + +int +main (int argc, char *argv[]) +{ + set_program_name (argv[0]); + + ASSERT (check_fstrcmp ("Langstrumpf", "Langstrumpf", 1.0)); + ASSERT (check_fstrcmp ("Levenshtein", "Levenstein", 20./21.)); + ASSERT (check_fstrcmp ("Levenstein", "Levenshtein", 20./21.)); + ASSERT (check_fstrcmp ("xy", "yx", 1./2.)); + ASSERT (check_fstrcmp ("George Bush", "Abraham Lincoln", 2./13.)); + ASSERT (check_fstrcmp ("George Bush", "George \"Bugs\" Moran", 2./3.)); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-ftell.c b/gettext-tools/gnulib-tests/test-ftell.c new file mode 100644 index 0000000..2b7120d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ftell.c @@ -0,0 +1,107 @@ +/* Test of ftell() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +/* None of the files accessed by this test are large, so disable the + fseek link warning if we are not using the gnulib fseek module. */ +#define _GL_NO_LARGE_FILES +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (ftell, long, (FILE *)); + +#include "binary-io.h" +#include "macros.h" + +#ifndef FUNC_UNGETC_BROKEN +# define FUNC_UNGETC_BROKEN 0 +#endif + +int +main (int argc, char **argv) +{ + int ch; + /* Assume stdin is seekable iff argc > 1. */ + if (argc == 1) + { + ASSERT (ftell (stdin) == -1); + return 0; + } + + /* mingw ftell is unreliable on text mode input. */ + SET_BINARY (0); + + /* Simple tests. */ + ASSERT (ftell (stdin) == 0); + + ch = fgetc (stdin); + ASSERT (ch == '#'); + ASSERT (ftell (stdin) == 1); + + /* Test ftell after ungetc of read input. */ + ch = ungetc ('#', stdin); + ASSERT (ch == '#'); + ASSERT (ftell (stdin) == 0); + + ch = fgetc (stdin); + ASSERT (ch == '#'); + ASSERT (ftell (stdin) == 1); + + /* Test ftell after fseek. */ + ASSERT (fseek (stdin, 2, SEEK_SET) == 0); + ASSERT (ftell (stdin) == 2); + + /* Test ftell after random ungetc. */ + ch = fgetc (stdin); + ASSERT (ch == '/'); + ch = ungetc ('@', stdin); + ASSERT (ch == '@'); + ASSERT (ftell (stdin) == 2); + + ch = fgetc (stdin); + ASSERT (ch == '@'); + ASSERT (ftell (stdin) == 3); + + if (2 < argc) + { + if (FUNC_UNGETC_BROKEN) + { + fputs ("Skipping test: ungetc cannot handle arbitrary bytes\n", + stderr); + return 77; + } + /* Test ftell after ungetc without read. */ + ASSERT (fseek (stdin, 0, SEEK_CUR) == 0); + ASSERT (ftell (stdin) == 3); + + ch = ungetc ('~', stdin); + ASSERT (ch == '~'); + ASSERT (ftell (stdin) == 2); + } + +#if !defined __MINT__ /* FreeMiNT has problems seeking past end of file */ + /* Test ftell beyond end of file. */ + ASSERT (fseek (stdin, 0, SEEK_END) == 0); + ch = ftell (stdin); + ASSERT (fseek (stdin, 10, SEEK_END) == 0); + ASSERT (ftell (stdin) == ch + 10); +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-ftell.sh b/gettext-tools/gnulib-tests/test-ftell.sh new file mode 100755 index 0000000..bf55d2e --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ftell.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +./test-ftell${EXEEXT} 1 < "$srcdir/test-ftell.sh" || exit 1 +echo hi | ./test-ftell${EXEEXT} || exit 1 +exit 0 diff --git a/gettext-tools/gnulib-tests/test-ftell2.sh b/gettext-tools/gnulib-tests/test-ftell2.sh new file mode 100755 index 0000000..3b645b8 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ftell2.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +exec ./test-ftell${EXEEXT} 1 2 < "$srcdir/test-ftell2.sh" diff --git a/gettext-tools/gnulib-tests/test-ftell3.c b/gettext-tools/gnulib-tests/test-ftell3.c new file mode 100644 index 0000000..918c9e4 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ftell3.c @@ -0,0 +1,78 @@ +/* Test of ftell() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* None of the files accessed by this test are large, so disable the + fseek link warning if we are not using the gnulib fseek module. */ +#define _GL_NO_LARGE_FILES +#include <stdio.h> + +#include <string.h> + +#include "macros.h" + +#define TESTFILE "t-ftell3.tmp" + +int +main (void) +{ + FILE *fp; + + /* Create a file with some contents. */ + fp = fopen (TESTFILE, "w"); + if (fp == NULL) + goto skip; + if (fwrite ("foogarsh", 1, 8, fp) < 8) + goto skip; + if (fclose (fp)) + goto skip; + + /* The file's contents is now "foogarsh". */ + + /* Try writing after reading to EOF. */ + fp = fopen (TESTFILE, "r+"); + if (fp == NULL) + goto skip; + if (fseek (fp, -1, SEEK_END)) + goto skip; + ASSERT (getc (fp) == 'h'); + ASSERT (getc (fp) == EOF); + ASSERT (ftell (fp) == 8); + ASSERT (ftell (fp) == 8); + ASSERT (putc ('!', fp) == '!'); + ASSERT (ftell (fp) == 9); + ASSERT (fclose (fp) == 0); + fp = fopen (TESTFILE, "r"); + if (fp == NULL) + goto skip; + { + char buf[10]; + ASSERT (fread (buf, 1, 10, fp) == 9); + ASSERT (memcmp (buf, "foogarsh!", 9) == 0); + } + ASSERT (fclose (fp) == 0); + + /* The file's contents is now "foogarsh!". */ + + remove (TESTFILE); + return 0; + + skip: + fprintf (stderr, "Skipping test: prerequisite file operations failed.\n"); + remove (TESTFILE); + return 77; +} diff --git a/gettext-tools/gnulib-tests/test-ftello.c b/gettext-tools/gnulib-tests/test-ftello.c new file mode 100644 index 0000000..6f3597b --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ftello.c @@ -0,0 +1,118 @@ +/* Test of ftello() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +/* None of the files accessed by this test are large, so disable the + fseek link warning if we are not using the gnulib fseek module. */ +#define _GL_NO_LARGE_FILES +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (ftello, off_t, (FILE *)); + +#include "binary-io.h" +#include "macros.h" + +#ifndef FUNC_UNGETC_BROKEN +# define FUNC_UNGETC_BROKEN 0 +#endif + +int +main (int argc, char **argv _GL_UNUSED) +{ + int ch; + /* Assume stdin is seekable iff argc > 1. */ + if (argc == 1) + { + ASSERT (ftell (stdin) == -1); + ASSERT (ftello (stdin) == -1); + return 0; + } + + /* mingw ftell is unreliable on text mode input. */ + SET_BINARY (0); + + /* Simple tests. For each test, make sure ftell and ftello agree. */ + ASSERT (ftell (stdin) == 0); + ASSERT (ftello (stdin) == 0); + + ch = fgetc (stdin); + ASSERT (ch == '#'); + ASSERT (ftell (stdin) == 1); + ASSERT (ftello (stdin) == 1); + + /* Test ftell after ungetc of read input. */ + ch = ungetc ('#', stdin); + ASSERT (ch == '#'); + ASSERT (ftell (stdin) == 0); + ASSERT (ftello (stdin) == 0); + + ch = fgetc (stdin); + ASSERT (ch == '#'); + ASSERT (ftell (stdin) == 1); + ASSERT (ftello (stdin) == 1); + + /* Test ftell after fseek. */ + ASSERT (fseek (stdin, 2, SEEK_SET) == 0); + ASSERT (ftell (stdin) == 2); + ASSERT (ftello (stdin) == 2); + + /* Test ftell after random ungetc. */ + ch = fgetc (stdin); + ASSERT (ch == '/'); + ch = ungetc ('@', stdin); + ASSERT (ch == '@'); + ASSERT (ftell (stdin) == 2); + ASSERT (ftello (stdin) == 2); + + ch = fgetc (stdin); + ASSERT (ch == '@'); + ASSERT (ftell (stdin) == 3); + ASSERT (ftello (stdin) == 3); + + if (2 < argc) + { + if (FUNC_UNGETC_BROKEN) + { + fputs ("Skipping test: ungetc cannot handle arbitrary bytes\n", + stderr); + return 77; + } + /* Test ftell after ungetc without read. */ + ASSERT (fseek (stdin, 0, SEEK_CUR) == 0); + ASSERT (ftell (stdin) == 3); + ASSERT (ftello (stdin) == 3); + + ch = ungetc ('~', stdin); + ASSERT (ch == '~'); + ASSERT (ftell (stdin) == 2); + ASSERT (ftello (stdin) == 2); + } + +#if !defined __MINT__ /* FreeMiNT has problems seeking past end of file */ + /* Test ftell beyond end of file. */ + ASSERT (fseek (stdin, 0, SEEK_END) == 0); + ch = ftello (stdin); + ASSERT (fseek (stdin, 10, SEEK_END) == 0); + ASSERT (ftell (stdin) == ch + 10); + ASSERT (ftello (stdin) == ch + 10); +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-ftello.sh b/gettext-tools/gnulib-tests/test-ftello.sh new file mode 100755 index 0000000..33d2e83 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ftello.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +./test-ftello${EXEEXT} 1 < "$srcdir/test-ftello.sh" || exit 1 +echo hi | ./test-ftello${EXEEXT} || exit 1 +exit 0 diff --git a/gettext-tools/gnulib-tests/test-ftello2.sh b/gettext-tools/gnulib-tests/test-ftello2.sh new file mode 100755 index 0000000..ba750b0 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ftello2.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +exec ./test-ftello${EXEEXT} 1 2 < "$srcdir/test-ftello2.sh" diff --git a/gettext-tools/gnulib-tests/test-ftello3.c b/gettext-tools/gnulib-tests/test-ftello3.c new file mode 100644 index 0000000..6918432 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ftello3.c @@ -0,0 +1,78 @@ +/* Test of ftello() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* None of the files accessed by this test are large, so disable the + fseek link warning if we are not using the gnulib fseek module. */ +#define _GL_NO_LARGE_FILES +#include <stdio.h> + +#include <string.h> + +#include "macros.h" + +#define TESTFILE "t-ftello3.tmp" + +int +main (void) +{ + FILE *fp; + + /* Create a file with some contents. */ + fp = fopen (TESTFILE, "w"); + if (fp == NULL) + goto skip; + if (fwrite ("foogarsh", 1, 8, fp) < 8) + goto skip; + if (fclose (fp)) + goto skip; + + /* The file's contents is now "foogarsh". */ + + /* Try writing after reading to EOF. */ + fp = fopen (TESTFILE, "r+"); + if (fp == NULL) + goto skip; + if (fseek (fp, -1, SEEK_END)) + goto skip; + ASSERT (getc (fp) == 'h'); + ASSERT (getc (fp) == EOF); + ASSERT (ftello (fp) == 8); + ASSERT (ftello (fp) == 8); + ASSERT (putc ('!', fp) == '!'); + ASSERT (ftello (fp) == 9); + ASSERT (fclose (fp) == 0); + fp = fopen (TESTFILE, "r"); + if (fp == NULL) + goto skip; + { + char buf[10]; + ASSERT (fread (buf, 1, 10, fp) == 9); + ASSERT (memcmp (buf, "foogarsh!", 9) == 0); + } + ASSERT (fclose (fp) == 0); + + /* The file's contents is now "foogarsh!". */ + + remove (TESTFILE); + return 0; + + skip: + fprintf (stderr, "Skipping test: prerequisite file operations failed.\n"); + remove (TESTFILE); + return 77; +} diff --git a/gettext-tools/gnulib-tests/test-ftello4.c b/gettext-tools/gnulib-tests/test-ftello4.c new file mode 100644 index 0000000..ef9e74b --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ftello4.c @@ -0,0 +1,70 @@ +/* Test of ftello() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdio.h> + +#include <errno.h> +#include <unistd.h> + +#include "macros.h" + +int +main (int argc, char **argv) +{ + const char *filename = argv[1]; + + /* Test that ftello() sets errno if someone else closes the stream + fd behind the back of stdio. */ + { + FILE *fp = fopen (filename, "r"); + ASSERT (fp != NULL); + setvbuf (fp, NULL, _IONBF, 0); + ASSERT (close (fileno (fp)) == 0); + errno = 0; + ASSERT (ftello (fp) == (off_t)-1); + ASSERT (errno == EBADF); + fclose (fp); + } + + /* Test that ftello() sets errno if the stream was constructed with + an invalid file descriptor. */ + { + FILE *fp = fdopen (-1, "w"); + if (fp != NULL) + { + errno = 0; + ASSERT (ftello (fp) == (off_t)-1); + ASSERT (errno == EBADF); + fclose (fp); + } + } + { + FILE *fp; + close (99); + fp = fdopen (99, "w"); + if (fp != NULL) + { + errno = 0; + ASSERT (ftello (fp) == (off_t)-1); + ASSERT (errno == EBADF); + fclose (fp); + } + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-ftello4.sh b/gettext-tools/gnulib-tests/test-ftello4.sh new file mode 100755 index 0000000..e3702bb --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ftello4.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +./test-ftello4${EXEEXT} "$srcdir/test-ftello4.sh" || exit 1 + +exit 0 diff --git a/gettext-tools/gnulib-tests/test-fwrite.c b/gettext-tools/gnulib-tests/test-fwrite.c new file mode 100644 index 0000000..e51b2ab --- /dev/null +++ b/gettext-tools/gnulib-tests/test-fwrite.c @@ -0,0 +1,94 @@ +/* Test of fwrite() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (fwrite, size_t, (const void *, size_t, size_t, FILE *)); + +#include <errno.h> +#include <fcntl.h> +#include <unistd.h> + +#include "msvc-inval.h" + +#include "macros.h" + +int +main (int argc, char **argv) +{ + const char *filename = "test-fwrite.txt"; + + /* We don't have an fwrite() function that installs an invalid parameter + handler so far. So install that handler here, explicitly. */ +#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ + && MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING + gl_msvc_inval_ensure_handler (); +#endif + + /* Test that fwrite() on an unbuffered stream sets errno if someone else + closes the stream fd behind the back of stdio. */ + { + FILE *fp = fopen (filename, "w"); + char buf[5] = "world"; + ASSERT (fp != NULL); + setvbuf (fp, NULL, _IONBF, 0); + ASSERT (close (fileno (fp)) == 0); + errno = 0; + ASSERT (fwrite (buf, 1, sizeof (buf), fp) == 0); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + + /* Test that fwrite() on an unbuffered stream sets errno if the stream + was constructed with an invalid file descriptor. */ + { + FILE *fp = fdopen (-1, "w"); + if (fp != NULL) + { + char buf[5] = "world"; + setvbuf (fp, NULL, _IONBF, 0); + errno = 0; + ASSERT (fwrite (buf, 1, sizeof (buf), fp) == 0); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + } + { + FILE *fp; + close (99); + fp = fdopen (99, "w"); + if (fp != NULL) + { + char buf[5] = "world"; + setvbuf (fp, NULL, _IONBF, 0); + errno = 0; + ASSERT (fwrite (buf, 1, sizeof (buf), fp) == 0); + ASSERT (errno == EBADF); + ASSERT (ferror (fp)); + fclose (fp); + } + } + + /* Clean up. */ + unlink (filename); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-getcwd-lgpl.c b/gettext-tools/gnulib-tests/test-getcwd-lgpl.c new file mode 100644 index 0000000..371c8df --- /dev/null +++ b/gettext-tools/gnulib-tests/test-getcwd-lgpl.c @@ -0,0 +1,102 @@ +/* Test of getcwd() function. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (getcwd, char *, (char *, size_t)); + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +int +main (int argc, char **argv) +{ + char *pwd1; + char *pwd2; + /* If the user provides an argument, attempt to chdir there first. */ + if (1 < argc) + { + if (chdir (argv[1]) == 0) + printf ("changed to directory %s\n", argv[1]); + } + + pwd1 = getcwd (NULL, 0); + ASSERT (pwd1 && *pwd1); + if (1 < argc) + printf ("cwd=%s\n", pwd1); + + /* Make sure the result is usable. */ + ASSERT (chdir (pwd1) == 0); + ASSERT (chdir (".//./.") == 0); + + /* Make sure that result is normalized. */ + pwd2 = getcwd (NULL, 0); + ASSERT (pwd2); + ASSERT (strcmp (pwd1, pwd2) == 0); + free (pwd2); + { + size_t len = strlen (pwd1); + ssize_t i = len - 10; + if (i < 1) + i = 1; + pwd2 = getcwd (NULL, len + 1); + ASSERT (pwd2); + free (pwd2); + pwd2 = malloc (len + 2); + for ( ; i <= len; i++) + { + char *tmp; + errno = 0; + ASSERT (getcwd (pwd2, i) == NULL); + ASSERT (errno == ERANGE); + /* Allow either glibc or BSD behavior, since POSIX allows both. */ + errno = 0; + tmp = getcwd (NULL, i); + if (tmp) + { + ASSERT (strcmp (pwd1, tmp) == 0); + free (tmp); + } + else + { + ASSERT (errno == ERANGE); + } + } + ASSERT (getcwd (pwd2, len + 1) == pwd2); + pwd2[len] = '/'; + pwd2[len + 1] = '\0'; + } + ASSERT (strstr (pwd2, "/./") == NULL); + ASSERT (strstr (pwd2, "/../") == NULL); + ASSERT (strstr (pwd2 + 1 + (pwd2[1] == '/'), "//") == NULL); + + /* Validate a POSIX requirement on size. */ + errno = 0; + ASSERT (getcwd(pwd2, 0) == NULL); + ASSERT (errno == EINVAL); + + free (pwd1); + free (pwd2); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-getdelim.c b/gettext-tools/gnulib-tests/test-getdelim.c new file mode 100644 index 0000000..76aba82 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-getdelim.c @@ -0,0 +1,94 @@ +/* Test of getdelim() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2007. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (getdelim, ssize_t, (char **, size_t *, int, FILE *)); + +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +int +main (void) +{ + FILE *f; + char *line; + size_t len; + ssize_t result; + + /* Create test file. */ + f = fopen ("test-getdelim.txt", "wb"); + if (!f || fwrite ("anAnbcnd\0f", 1, 10, f) != 10 || fclose (f) != 0) + { + fputs ("Failed to create sample file.\n", stderr); + remove ("test-getdelim.txt"); + return 1; + } + f = fopen ("test-getdelim.txt", "rb"); + if (!f) + { + fputs ("Failed to reopen sample file.\n", stderr); + remove ("test-getdelim.txt"); + return 1; + } + + /* Test initial allocation, which must include trailing NUL. */ + line = NULL; + len = 0; + result = getdelim (&line, &len, 'n', f); + ASSERT (result == 2); + ASSERT (strcmp (line, "an") == 0); + ASSERT (2 < len); + free (line); + + /* Test initial allocation again, with line = NULL and len != 0. */ + line = NULL; + len = (size_t)(~0) / 4; + result = getdelim (&line, &len, 'n', f); + ASSERT (result == 2); + ASSERT (strcmp (line, "An") == 0); + ASSERT (2 < len); + free (line); + + /* Test growth of buffer. */ + line = malloc (1); + len = 1; + result = getdelim (&line, &len, 'n', f); + ASSERT (result == 3); + ASSERT (strcmp (line, "bcn") == 0); + ASSERT (3 < len); + + /* Test embedded NULs and EOF behavior. */ + result = getdelim (&line, &len, 'n', f); + ASSERT (result == 3); + ASSERT (memcmp (line, "d\0f", 4) == 0); + ASSERT (3 < len); + + result = getdelim (&line, &len, 'n', f); + ASSERT (result == -1); + + free (line); + fclose (f); + remove ("test-getdelim.txt"); + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-getdtablesize.c b/gettext-tools/gnulib-tests/test-getdtablesize.c new file mode 100644 index 0000000..86a0b4f --- /dev/null +++ b/gettext-tools/gnulib-tests/test-getdtablesize.c @@ -0,0 +1,36 @@ +/* Test of getdtablesize() function. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (getdtablesize, int, (void)); + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + ASSERT (getdtablesize () >= 3); + ASSERT (dup2 (0, getdtablesize() - 1) == getdtablesize () - 1); + ASSERT (dup2 (0, getdtablesize()) == -1); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-getline.c b/gettext-tools/gnulib-tests/test-getline.c new file mode 100644 index 0000000..4dbc485 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-getline.c @@ -0,0 +1,94 @@ +/* Test of getline() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2007. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (getline, ssize_t, (char **, size_t *, FILE *)); + +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +int +main (void) +{ + FILE *f; + char *line; + size_t len; + ssize_t result; + + /* Create test file. */ + f = fopen ("test-getline.txt", "wb"); + if (!f || fwrite ("a\nA\nbc\nd\0f", 1, 10, f) != 10 || fclose (f) != 0) + { + fputs ("Failed to create sample file.\n", stderr); + remove ("test-getline.txt"); + return 1; + } + f = fopen ("test-getline.txt", "rb"); + if (!f) + { + fputs ("Failed to reopen sample file.\n", stderr); + remove ("test-getline.txt"); + return 1; + } + + /* Test initial allocation, which must include trailing NUL. */ + line = NULL; + len = 0; + result = getline (&line, &len, f); + ASSERT (result == 2); + ASSERT (strcmp (line, "a\n") == 0); + ASSERT (2 < len); + free (line); + + /* Test initial allocation again, with line = NULL and len != 0. */ + line = NULL; + len = (size_t)(~0) / 4; + result = getline (&line, &len, f); + ASSERT (result == 2); + ASSERT (strcmp (line, "A\n") == 0); + ASSERT (2 < len); + free (line); + + /* Test growth of buffer, must not leak. */ + line = malloc (1); + len = 0; + result = getline (&line, &len, f); + ASSERT (result == 3); + ASSERT (strcmp (line, "bc\n") == 0); + ASSERT (3 < len); + + /* Test embedded NULs and EOF behavior. */ + result = getline (&line, &len, f); + ASSERT (result == 3); + ASSERT (memcmp (line, "d\0f", 4) == 0); + ASSERT (3 < len); + + result = getline (&line, &len, f); + ASSERT (result == -1); + + free (line); + fclose (f); + remove ("test-getline.txt"); + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-getopt.c b/gettext-tools/gnulib-tests/test-getopt.c new file mode 100644 index 0000000..152efea --- /dev/null +++ b/gettext-tools/gnulib-tests/test-getopt.c @@ -0,0 +1,99 @@ +/* Test of command line argument processing. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2009. */ + +#include <config.h> + +/* None of the files accessed by this test are large, so disable the + ftell link warning if we are not using the gnulib ftell module. */ +#define _GL_NO_LARGE_FILES + +#if GNULIB_TEST_GETOPT_GNU +# include <getopt.h> + +# ifndef __getopt_argv_const +# define __getopt_argv_const const +# endif +# include "signature.h" +SIGNATURE_CHECK (getopt_long, int, (int, char *__getopt_argv_const *, + char const *, struct option const *, + int *)); +SIGNATURE_CHECK (getopt_long_only, int, (int, char *__getopt_argv_const *, + char const *, struct option const *, + int *)); + +#endif + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (getopt, int, (int, char * const[], char const *)); + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +/* This test intentionally remaps stderr. So, we arrange to have fd 10 + (outside the range of interesting fd's during the test) set up to + duplicate the original stderr. */ + +#define BACKUP_STDERR_FILENO 10 +#define ASSERT_STREAM myerr +#include "macros.h" + +static FILE *myerr; + +#include "test-getopt.h" +#if GNULIB_TEST_GETOPT_GNU +# include "test-getopt_long.h" +#endif + +int +main (void) +{ + /* This test validates that stderr is used correctly, so move the + original into fd 10. */ + if (dup2 (STDERR_FILENO, BACKUP_STDERR_FILENO) != BACKUP_STDERR_FILENO + || (myerr = fdopen (BACKUP_STDERR_FILENO, "w")) == NULL) + return 2; + + ASSERT (freopen ("test-getopt.tmp", "w", stderr) == stderr); + + /* These default values are required by POSIX. */ + ASSERT (optind == 1); + ASSERT (opterr != 0); + + setenv ("POSIXLY_CORRECT", "1", 1); + test_getopt (); + +#if GNULIB_TEST_GETOPT_GNU + test_getopt_long_posix (); +#endif + + unsetenv ("POSIXLY_CORRECT"); + test_getopt (); + +#if GNULIB_TEST_GETOPT_GNU + test_getopt_long (); + test_getopt_long_only (); +#endif + + ASSERT (fclose (stderr) == 0); + ASSERT (remove ("test-getopt.tmp") == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-getopt.h b/gettext-tools/gnulib-tests/test-getopt.h new file mode 100644 index 0000000..c982d57 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-getopt.h @@ -0,0 +1,1391 @@ +/* Test of command line argument processing. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2009. */ + +#include <stdbool.h> + +/* The glibc/gnulib implementation of getopt supports setting optind = + 0, but not all other implementations do. This matters for getopt. + But for getopt_long, we require GNU compatibility. */ +#if defined __GETOPT_PREFIX || (__GLIBC__ >= 2 && !defined __UCLIBC__) +# define OPTIND_MIN 0 +#elif HAVE_DECL_OPTRESET +# define OPTIND_MIN (optreset = 1) +#else +# define OPTIND_MIN 1 +#endif + +static void +getopt_loop (int argc, const char **argv, + const char *options, + int *a_seen, int *b_seen, + const char **p_value, const char **q_value, + int *non_options_count, const char **non_options, + int *unrecognized, bool *message_issued) +{ + int c; + int pos = ftell (stderr); + + while ((c = getopt (argc, (char **) argv, options)) != -1) + { + switch (c) + { + case 'a': + (*a_seen)++; + break; + case 'b': + (*b_seen)++; + break; + case 'p': + *p_value = optarg; + break; + case 'q': + *q_value = optarg; + break; + case '\1': + /* Must only happen with option '-' at the beginning. */ + ASSERT (options[0] == '-'); + non_options[(*non_options_count)++] = optarg; + break; + case ':': + /* Must only happen with option ':' at the beginning. */ + ASSERT (options[0] == ':' + || ((options[0] == '-' || options[0] == '+') + && options[1] == ':')); + /* fall through */ + case '?': + *unrecognized = optopt; + break; + default: + *unrecognized = c; + break; + } + } + + *message_issued = pos < ftell (stderr); +} + +static void +test_getopt (void) +{ + int start; + bool posixly = !!getenv ("POSIXLY_CORRECT"); + /* See comment in getopt.c: + glibc gets a LSB-compliant getopt. + Standalone applications get a POSIX-compliant getopt. */ +#if defined __GETOPT_PREFIX || !(__GLIBC__ >= 2 || defined __MINGW32__) + /* Using getopt from gnulib or from a non-glibc system. */ + posixly = true; +#endif + + /* Test processing of boolean options. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-a"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "ab", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-b"; + argv[argc++] = "-a"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "ab", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-ba"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "ab", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-ab"; + argv[argc++] = "-a"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "ab", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 2); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + ASSERT (!output); + } + + /* Test processing of options with arguments. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-pfoo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "p:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "p:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-ab"; + argv[argc++] = "-q"; + argv[argc++] = "baz"; + argv[argc++] = "-pfoo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value != NULL && strcmp (q_value, "baz") == 0); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 5); + ASSERT (!output); + } + +#if GNULIB_TEST_GETOPT_GNU + /* Test processing of options with optional arguments. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-pfoo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "p::q::", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "p::q::", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "abp::q::", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + ASSERT (!output); + } +#endif /* GNULIB_TEST_GETOPT_GNU */ + + /* Check that invalid options are recognized; and that both opterr + and leading ':' can silence output. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "-x"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 42; + getopt_loop (argc, argv, "abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 'x'); + ASSERT (optind == 5); + ASSERT (output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "-x"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 0; + getopt_loop (argc, argv, "abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 'x'); + ASSERT (optind == 5); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "-x"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, ":abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 'x'); + ASSERT (optind == 5); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "-:"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 42; + getopt_loop (argc, argv, "abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == ':'); + ASSERT (optind == 5); + ASSERT (output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "-:"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 0; + getopt_loop (argc, argv, "abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == ':'); + ASSERT (optind == 5); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "-:"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, ":abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == ':'); + ASSERT (optind == 5); + ASSERT (!output); + } + + /* Check for missing argument behavior. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-ap"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 'p'); + ASSERT (optind == 2); + ASSERT (output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-ap"; + argv[argc] = NULL; + optind = start; + opterr = 0; + getopt_loop (argc, argv, "abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 'p'); + ASSERT (optind == 2); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-ap"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, ":abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 'p'); + ASSERT (optind == 2); + ASSERT (!output); + } + + /* Check that by default, non-options arguments are moved to the end. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + if (posixly) + { + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 1); + ASSERT (!output); + } + else + { + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "-p") == 0); + ASSERT (strcmp (argv[2], "billy") == 0); + ASSERT (strcmp (argv[3], "-a") == 0); + ASSERT (strcmp (argv[4], "donald") == 0); + ASSERT (strcmp (argv[5], "duck") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 4); + ASSERT (!output); + } + } + + /* Check that '--' ends the argument processing. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[20]; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "--"; + argv[argc++] = "-b"; + argv[argc++] = "foo"; + argv[argc++] = "-q"; + argv[argc++] = "johnny"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + if (posixly) + { + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "--") == 0); + ASSERT (strcmp (argv[7], "-b") == 0); + ASSERT (strcmp (argv[8], "foo") == 0); + ASSERT (strcmp (argv[9], "-q") == 0); + ASSERT (strcmp (argv[10], "johnny") == 0); + ASSERT (strcmp (argv[11], "bar") == 0); + ASSERT (argv[12] == NULL); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 1); + ASSERT (!output); + } + else + { + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "-p") == 0); + ASSERT (strcmp (argv[2], "billy") == 0); + ASSERT (strcmp (argv[3], "-a") == 0); + ASSERT (strcmp (argv[4], "--") == 0); + ASSERT (strcmp (argv[5], "donald") == 0); + ASSERT (strcmp (argv[6], "duck") == 0); + ASSERT (strcmp (argv[7], "-b") == 0); + ASSERT (strcmp (argv[8], "foo") == 0); + ASSERT (strcmp (argv[9], "-q") == 0); + ASSERT (strcmp (argv[10], "johnny") == 0); + ASSERT (strcmp (argv[11], "bar") == 0); + ASSERT (argv[12] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 5); + ASSERT (!output); + } + } + +#if GNULIB_TEST_GETOPT_GNU + /* Check that the '-' flag causes non-options to be returned in order. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "-abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 3); + ASSERT (strcmp (non_options[0], "donald") == 0); + ASSERT (strcmp (non_options[1], "duck") == 0); + ASSERT (strcmp (non_options[2], "bar") == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 7); + ASSERT (!output); + } + + /* Check that '--' ends the argument processing. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[20]; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "--"; + argv[argc++] = "-b"; + argv[argc++] = "foo"; + argv[argc++] = "-q"; + argv[argc++] = "johnny"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "-abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "--") == 0); + ASSERT (strcmp (argv[7], "-b") == 0); + ASSERT (strcmp (argv[8], "foo") == 0); + ASSERT (strcmp (argv[9], "-q") == 0); + ASSERT (strcmp (argv[10], "johnny") == 0); + ASSERT (strcmp (argv[11], "bar") == 0); + ASSERT (argv[12] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (!output); + if (non_options_count == 2) + { + /* glibc behaviour. */ + ASSERT (non_options_count == 2); + ASSERT (strcmp (non_options[0], "donald") == 0); + ASSERT (strcmp (non_options[1], "duck") == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 7); + } + else + { + /* Another valid behaviour. */ + ASSERT (non_options_count == 7); + ASSERT (strcmp (non_options[0], "donald") == 0); + ASSERT (strcmp (non_options[1], "duck") == 0); + ASSERT (strcmp (non_options[2], "-b") == 0); + ASSERT (strcmp (non_options[3], "foo") == 0); + ASSERT (strcmp (non_options[4], "-q") == 0); + ASSERT (strcmp (non_options[5], "johnny") == 0); + ASSERT (strcmp (non_options[6], "bar") == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 12); + } + } + + /* Check that the '-' flag has to come first. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "abp:q:-", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + if (posixly) + { + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 1); + ASSERT (!output); + } + else + { + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "-p") == 0); + ASSERT (strcmp (argv[2], "billy") == 0); + ASSERT (strcmp (argv[3], "-a") == 0); + ASSERT (strcmp (argv[4], "donald") == 0); + ASSERT (strcmp (argv[5], "duck") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 4); + ASSERT (!output); + } + } + + /* Check that the '+' flag causes the first non-option to terminate the + loop. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "+abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 1); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-+"; + argv[argc] = NULL; + optind = start; + getopt_loop (argc, argv, "+abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == '+'); + ASSERT (optind == 2); + ASSERT (output); + } + + /* Check that '--' ends the argument processing. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[20]; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "--"; + argv[argc++] = "-b"; + argv[argc++] = "foo"; + argv[argc++] = "-q"; + argv[argc++] = "johnny"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "+abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "--") == 0); + ASSERT (strcmp (argv[7], "-b") == 0); + ASSERT (strcmp (argv[8], "foo") == 0); + ASSERT (strcmp (argv[9], "-q") == 0); + ASSERT (strcmp (argv[10], "johnny") == 0); + ASSERT (strcmp (argv[11], "bar") == 0); + ASSERT (argv[12] == NULL); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 1); + ASSERT (!output); + } +#endif /* GNULIB_TEST_GETOPT_GNU */ + + /* Check that the '+' flag has to come first. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "abp:q:+", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + if (posixly) + { + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 1); + ASSERT (!output); + } + else + { + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "-p") == 0); + ASSERT (strcmp (argv[2], "billy") == 0); + ASSERT (strcmp (argv[3], "-a") == 0); + ASSERT (strcmp (argv[4], "donald") == 0); + ASSERT (strcmp (argv[5], "duck") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 4); + ASSERT (!output); + } + } + +#if GNULIB_TEST_GETOPT_GNU + /* If GNU extensions are supported, require compliance with POSIX + interpretation on leading '+' behavior. + http://austingroupbugs.net/view.php?id=191 */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + opterr = 1; + getopt_loop (argc, argv, "+:abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 1); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc] = NULL; + optind = start; + getopt_loop (argc, argv, "+:abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 'p'); + ASSERT (optind == 2); + ASSERT (!output); + } + for (start = OPTIND_MIN; start <= 1; start++) + { + int a_seen = 0; + int b_seen = 0; + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + bool output; + int argc = 0; + const char *argv[10]; + + argv[argc++] = "program"; + argv[argc++] = "-b"; + argv[argc++] = "-p"; + argv[argc] = NULL; + optind = start; + getopt_loop (argc, argv, "+:abp:q:", + &a_seen, &b_seen, &p_value, &q_value, + &non_options_count, non_options, &unrecognized, &output); + ASSERT (a_seen == 0); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 'p'); + ASSERT (optind == 3); + ASSERT (!output); + } + + /* Check that 'W' does not dump core: + http://sourceware.org/bugzilla/show_bug.cgi?id=12922 + Technically, POSIX says the presence of ';' in the opt-string + gives unspecified behavior, so we only test this when GNU compliance + is desired. */ + for (start = OPTIND_MIN; start <= 1; start++) + { + int argc = 0; + const char *argv[10]; + int pos = ftell (stderr); + + argv[argc++] = "program"; + argv[argc++] = "-W"; + argv[argc++] = "dummy"; + argv[argc] = NULL; + optind = start; + opterr = 1; + ASSERT (getopt (argc, (char **) argv, "W;") == 'W'); + ASSERT (ftell (stderr) == pos); + ASSERT (optind == 2); + } +#endif /* GNULIB_TEST_GETOPT_GNU */ +} diff --git a/gettext-tools/gnulib-tests/test-getopt_long.h b/gettext-tools/gnulib-tests/test-getopt_long.h new file mode 100644 index 0000000..07ea4a2 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-getopt_long.h @@ -0,0 +1,2144 @@ +/* Test of command line argument processing. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2009. */ + +static int a_seen; +static int b_seen; +static int q_seen; + +static const struct option long_options_required[] = + { + { "alpha", no_argument, NULL, 'a' }, + { "beta", no_argument, &b_seen, 1 }, + { "prune", required_argument, NULL, 'p' }, + { "quetsche", required_argument, &q_seen, 1 }, + { "xtremely-",no_argument, NULL, 1003 }, + { "xtra", no_argument, NULL, 1001 }, + { "xtreme", no_argument, NULL, 1002 }, + { "xtremely", no_argument, NULL, 1003 }, + { NULL, 0, NULL, 0 } + }; + +static const struct option long_options_optional[] = + { + { "alpha", no_argument, NULL, 'a' }, + { "beta", no_argument, &b_seen, 1 }, + { "prune", optional_argument, NULL, 'p' }, + { "quetsche", optional_argument, &q_seen, 1 }, + { NULL, 0, NULL, 0 } + }; + +static void +getopt_long_loop (int argc, const char **argv, + const char *options, const struct option *long_options, + const char **p_value, const char **q_value, + int *non_options_count, const char **non_options, + int *unrecognized) +{ + int option_index = -1; + int c; + + opterr = 0; + q_seen = 0; + while ((c = getopt_long (argc, (char **) argv, options, long_options, + &option_index)) + != -1) + { + switch (c) + { + case 0: + /* An option with a non-NULL flag pointer was processed. */ + if (q_seen) + *q_value = optarg; + break; + case 'a': + a_seen++; + break; + case 'b': + b_seen = 1; + break; + case 'p': + *p_value = optarg; + break; + case 'q': + *q_value = optarg; + break; + case '\1': + /* Must only happen with option '-' at the beginning. */ + ASSERT (options[0] == '-'); + non_options[(*non_options_count)++] = optarg; + break; + case ':': + /* Must only happen with option ':' at the beginning. */ + ASSERT (options[0] == ':' + || ((options[0] == '-' || options[0] == '+') + && options[1] == ':')); + /* fall through */ + case '?': + *unrecognized = optopt; + break; + default: + *unrecognized = c; + break; + } + } +} + +/* Reduce casting, so we can use string literals elsewhere. + getopt_long takes an array of char*, but luckily does not modify + those elements, so we can pass const char*. */ +static int +do_getopt_long (int argc, const char **argv, const char *shortopts, + const struct option *longopts, int *longind) +{ + return getopt_long (argc, (char **) argv, shortopts, longopts, longind); +} + +static void +test_getopt_long (void) +{ + int start; + + /* Test disambiguation of options. */ + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--x"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "ab", long_options_required, &option_index); + ASSERT (c == '?'); + ASSERT (optopt == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--xt"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "ab", long_options_required, &option_index); + ASSERT (c == '?'); + ASSERT (optopt == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--xtr"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "ab", long_options_required, &option_index); + ASSERT (c == '?'); + ASSERT (optopt == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--xtra"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "ab", long_options_required, &option_index); + ASSERT (c == 1001); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--xtre"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "ab", long_options_required, &option_index); + ASSERT (c == '?'); + ASSERT (optopt == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--xtrem"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "ab", long_options_required, &option_index); + ASSERT (c == '?'); + ASSERT (optopt == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--xtreme"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "ab", long_options_required, &option_index); + ASSERT (c == 1002); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--xtremel"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "ab", long_options_required, &option_index); + ASSERT (c == 1003); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--xtremely"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "ab", long_options_required, &option_index); + ASSERT (c == 1003); + } + + /* Check that -W handles unknown options. */ + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-W"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "W;", long_options_required, &option_index); + ASSERT (c == '?'); + ASSERT (optopt == 'W'); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-Wunknown"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "W;", long_options_required, &option_index); + /* glibc and BSD behave differently here, but for now, we allow + both behaviors since W support is not frequently used. */ + if (c == '?') + { + ASSERT (optopt == 0); + ASSERT (optarg == NULL); + } + else + { + ASSERT (c == 'W'); + ASSERT (strcmp (optarg, "unknown") == 0); + } + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-W"; + argv[argc++] = "unknown"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "W;", long_options_required, &option_index); + /* glibc and BSD behave differently here, but for now, we allow + both behaviors since W support is not frequently used. */ + if (c == '?') + { + ASSERT (optopt == 0); + ASSERT (optarg == NULL); + } + else + { + ASSERT (c == 'W'); + ASSERT (strcmp (optarg, "unknown") == 0); + } + } + + /* Test that 'W' does not dump core: + http://sourceware.org/bugzilla/show_bug.cgi?id=12922 */ + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-W"; + argv[argc++] = "dummy"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long (argc, argv, "W;", NULL, &option_index); + ASSERT (c == 'W'); + ASSERT (optind == 2); + } + + /* Test processing of boolean short options. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-a"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "ab", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-b"; + argv[argc++] = "-a"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "ab", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-ba"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "ab", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-ab"; + argv[argc++] = "-a"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "ab", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 2); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + } + + /* Test processing of boolean long options. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "--alpha"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "ab", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "--beta"; + argv[argc++] = "--alpha"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "ab", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "--alpha"; + argv[argc++] = "--beta"; + argv[argc++] = "--alpha"; + argv[argc++] = "--beta"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "ab", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 2); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 5); + } + + /* Test processing of boolean long options via -W. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-Walpha"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abW;", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-W"; + argv[argc++] = "beta"; + argv[argc++] = "-W"; + argv[argc++] = "alpha"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "aW;b", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 5); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-Walpha"; + argv[argc++] = "-Wbeta"; + argv[argc++] = "-Walpha"; + argv[argc++] = "-Wbeta"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "W;ab", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 2); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 5); + } + + /* Test processing of short options with arguments. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-pfoo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-ab"; + argv[argc++] = "-q"; + argv[argc++] = "baz"; + argv[argc++] = "-pfoo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value != NULL && strcmp (q_value, "baz") == 0); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 5); + } + + /* Test processing of long options with arguments. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "--p=foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "--p"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-ab"; + argv[argc++] = "--q"; + argv[argc++] = "baz"; + argv[argc++] = "--p=foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value != NULL && strcmp (q_value, "baz") == 0); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 5); + } + + /* Test processing of long options with arguments via -W. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-Wp=foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p:q:W;", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-W"; + argv[argc++] = "p"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p:W;q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 4); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-ab"; + argv[argc++] = "-Wq"; + argv[argc++] = "baz"; + argv[argc++] = "-W"; + argv[argc++] = "p=foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "W;abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value != NULL && strcmp (q_value, "baz") == 0); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 6); + } + + /* Test processing of short options with optional arguments. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-pfoo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p::q::", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p::q::", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp::q::", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + } + + /* Test processing of long options with optional arguments. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "--p=foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p::q::", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "--p"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p::q::", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "--p="; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p::q::", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && *p_value == '\0'); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "--p"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp::q::", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + } + + /* Test processing of long options with optional arguments via -W. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-Wp=foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p::q::W;", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-Wp"; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p::q::W;", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-Wp="; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "W;p::q::", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && *p_value == '\0'); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-W"; + argv[argc++] = "p="; + argv[argc++] = "foo"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "W;p::q::", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && *p_value == '\0'); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 3); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-W"; + argv[argc++] = "p"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "W;abp::q::", long_options_optional, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + /* ASSERT (p_value == NULL); */ + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 4); + } + + /* Check that invalid options are recognized. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "-x"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 'x'); + ASSERT (optind == 5); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "-:"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == ':'); + ASSERT (optind == 5); + } + + /* Check that unexpected arguments are recognized. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "--a="; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 'a'); + ASSERT (optind == 4); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "foo"; + argv[argc++] = "--b="; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "foo") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + /* When flag is non-zero, glibc sets optopt anyway, but BSD + leaves optopt unchanged. */ + ASSERT (unrecognized == 1 || unrecognized == 0); + ASSERT (optind == 4); + } + + /* Check that by default, non-options arguments are moved to the end. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "-p") == 0); + ASSERT (strcmp (argv[2], "billy") == 0); + ASSERT (strcmp (argv[3], "-a") == 0); + ASSERT (strcmp (argv[4], "donald") == 0); + ASSERT (strcmp (argv[5], "duck") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 4); + } + + /* Check that '--' ends the argument processing. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[20]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "--"; + argv[argc++] = "-b"; + argv[argc++] = "foo"; + argv[argc++] = "-q"; + argv[argc++] = "johnny"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "-p") == 0); + ASSERT (strcmp (argv[2], "billy") == 0); + ASSERT (strcmp (argv[3], "-a") == 0); + ASSERT (strcmp (argv[4], "--") == 0); + ASSERT (strcmp (argv[5], "donald") == 0); + ASSERT (strcmp (argv[6], "duck") == 0); + ASSERT (strcmp (argv[7], "-b") == 0); + ASSERT (strcmp (argv[8], "foo") == 0); + ASSERT (strcmp (argv[9], "-q") == 0); + ASSERT (strcmp (argv[10], "johnny") == 0); + ASSERT (strcmp (argv[11], "bar") == 0); + ASSERT (argv[12] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 5); + } + + /* Check that the '-' flag causes non-options to be returned in order. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "-abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 3); + ASSERT (strcmp (non_options[0], "donald") == 0); + ASSERT (strcmp (non_options[1], "duck") == 0); + ASSERT (strcmp (non_options[2], "bar") == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 7); + } + + /* Check that '--' ends the argument processing. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[20]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "--"; + argv[argc++] = "-b"; + argv[argc++] = "foo"; + argv[argc++] = "-q"; + argv[argc++] = "johnny"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "-abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "--") == 0); + ASSERT (strcmp (argv[7], "-b") == 0); + ASSERT (strcmp (argv[8], "foo") == 0); + ASSERT (strcmp (argv[9], "-q") == 0); + ASSERT (strcmp (argv[10], "johnny") == 0); + ASSERT (strcmp (argv[11], "bar") == 0); + ASSERT (argv[12] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + if (non_options_count == 2) + { + /* glibc behaviour. */ + ASSERT (non_options_count == 2); + ASSERT (strcmp (non_options[0], "donald") == 0); + ASSERT (strcmp (non_options[1], "duck") == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 7); + } + else + { + /* Another valid behaviour. */ + ASSERT (non_options_count == 7); + ASSERT (strcmp (non_options[0], "donald") == 0); + ASSERT (strcmp (non_options[1], "duck") == 0); + ASSERT (strcmp (non_options[2], "-b") == 0); + ASSERT (strcmp (non_options[3], "foo") == 0); + ASSERT (strcmp (non_options[4], "-q") == 0); + ASSERT (strcmp (non_options[5], "johnny") == 0); + ASSERT (strcmp (non_options[6], "bar") == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 12); + } + } + + /* Check that the '-' flag has to come first. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:-", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "-p") == 0); + ASSERT (strcmp (argv[2], "billy") == 0); + ASSERT (strcmp (argv[3], "-a") == 0); + ASSERT (strcmp (argv[4], "donald") == 0); + ASSERT (strcmp (argv[5], "duck") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 4); + } + + /* Check that the '+' flag causes the first non-option to terminate the + loop. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "+abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 1); + } + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-+"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "+abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == '+'); + ASSERT (optind == 2); + } + + /* Check that '--' ends the argument processing. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[20]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "--"; + argv[argc++] = "-b"; + argv[argc++] = "foo"; + argv[argc++] = "-q"; + argv[argc++] = "johnny"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "+abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "--") == 0); + ASSERT (strcmp (argv[7], "-b") == 0); + ASSERT (strcmp (argv[8], "foo") == 0); + ASSERT (strcmp (argv[9], "-q") == 0); + ASSERT (strcmp (argv[10], "johnny") == 0); + ASSERT (strcmp (argv[11], "bar") == 0); + ASSERT (argv[12] == NULL); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 1); + } + + /* Check that the '+' flag has to come first. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:+", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "-p") == 0); + ASSERT (strcmp (argv[2], "billy") == 0); + ASSERT (strcmp (argv[3], "-a") == 0); + ASSERT (strcmp (argv[4], "donald") == 0); + ASSERT (strcmp (argv[5], "duck") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 1); + ASSERT (b_seen == 0); + ASSERT (p_value != NULL && strcmp (p_value, "billy") == 0); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 4); + } +} + +/* Test behavior of getopt_long when POSIXLY_CORRECT is set in the + environment. Options with optional arguments should not change + behavior just because of an environment variable. + http://lists.gnu.org/archive/html/bug-m4/2006-09/msg00028.html */ +static void +test_getopt_long_posix (void) +{ + int start; + + /* Check that POSIXLY_CORRECT stops parsing the same as leading '+'. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "donald"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc++] = "duck"; + argv[argc++] = "-a"; + argv[argc++] = "bar"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "abp:q:", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (strcmp (argv[0], "program") == 0); + ASSERT (strcmp (argv[1], "donald") == 0); + ASSERT (strcmp (argv[2], "-p") == 0); + ASSERT (strcmp (argv[3], "billy") == 0); + ASSERT (strcmp (argv[4], "duck") == 0); + ASSERT (strcmp (argv[5], "-a") == 0); + ASSERT (strcmp (argv[6], "bar") == 0); + ASSERT (argv[7] == NULL); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 1); + } + + /* Check that POSIXLY_CORRECT doesn't change optional arguments. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-p"; + argv[argc++] = "billy"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "p::", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 0); + ASSERT (b_seen == 0); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 2); + } + + /* Check that leading - still sees options after non-options. */ + for (start = 0; start <= 1; start++) + { + const char *p_value = NULL; + const char *q_value = NULL; + int non_options_count = 0; + const char *non_options[10]; + int unrecognized = 0; + int argc = 0; + const char *argv[10]; + a_seen = 0; + b_seen = 0; + + argv[argc++] = "program"; + argv[argc++] = "-a"; + argv[argc++] = "billy"; + argv[argc++] = "-b"; + argv[argc] = NULL; + optind = start; + getopt_long_loop (argc, argv, "-ab", long_options_required, + &p_value, &q_value, + &non_options_count, non_options, &unrecognized); + ASSERT (a_seen == 1); + ASSERT (b_seen == 1); + ASSERT (p_value == NULL); + ASSERT (q_value == NULL); + ASSERT (non_options_count == 1); + ASSERT (strcmp (non_options[0], "billy") == 0); + ASSERT (unrecognized == 0); + ASSERT (optind == 4); + } +} + +/* Reduce casting, so we can use string literals elsewhere. + getopt_long_only takes an array of char*, but luckily does not + modify those elements, so we can pass const char*. */ +static int +do_getopt_long_only (int argc, const char **argv, const char *shortopts, + const struct option *longopts, int *longind) +{ + return getopt_long_only (argc, (char **) argv, shortopts, longopts, longind); +} + +static void +test_getopt_long_only (void) +{ + /* Test disambiguation of options. */ + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-x"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long_only (argc, argv, "ab", long_options_required, + &option_index); + ASSERT (c == '?'); + ASSERT (optopt == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-x"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long_only (argc, argv, "abx", long_options_required, + &option_index); + ASSERT (c == 'x'); + ASSERT (optopt == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--x"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long_only (argc, argv, "abx", long_options_required, + &option_index); + ASSERT (c == '?'); + ASSERT (optopt == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-b"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + b_seen = 0; + c = do_getopt_long_only (argc, argv, "abx", long_options_required, + &option_index); + ASSERT (c == 'b'); + ASSERT (b_seen == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "--b"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + b_seen = 0; + c = do_getopt_long_only (argc, argv, "abx", long_options_required, + &option_index); + ASSERT (c == 0); + ASSERT (b_seen == 1); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-xt"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long_only (argc, argv, "ab", long_options_required, + &option_index); + ASSERT (c == '?'); + ASSERT (optopt == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-xt"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long_only (argc, argv, "abx", long_options_required, + &option_index); + ASSERT (c == '?'); + ASSERT (optopt == 0); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-xtra"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long_only (argc, argv, "ab", long_options_required, + &option_index); + ASSERT (c == 1001); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-xtreme"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long_only (argc, argv, "abx:", long_options_required, + &option_index); + ASSERT (c == 1002); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-xtremel"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long_only (argc, argv, "ab", long_options_required, + &option_index); + /* glibc getopt_long_only is intentionally different from + getopt_long when handling a prefix that is common to two + spellings, when both spellings have the same option directives. + BSD getopt_long_only treats both cases the same. */ + ASSERT (c == 1003 || c == '?'); + ASSERT (optind == 2); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-xtremel"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long_only (argc, argv, "abx::", long_options_required, + &option_index); + /* glibc getopt_long_only is intentionally different from + getopt_long when handling a prefix that is common to two + spellings, when both spellings have the same option directives. + BSD getopt_long_only treats both cases the same. */ + ASSERT (c == 1003 || c == '?'); + ASSERT (optind == 2); + ASSERT (optarg == NULL); + } + { + int argc = 0; + const char *argv[10]; + int option_index; + int c; + + argv[argc++] = "program"; + argv[argc++] = "-xtras"; + argv[argc] = NULL; + optind = 1; + opterr = 0; + c = do_getopt_long_only (argc, argv, "abx::", long_options_required, + &option_index); + ASSERT (c == 'x'); + ASSERT (strcmp (optarg, "tras") == 0); + } +} diff --git a/gettext-tools/gnulib-tests/test-gettimeofday.c b/gettext-tools/gnulib-tests/test-gettimeofday.c new file mode 100644 index 0000000..5abb872 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-gettimeofday.c @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2005, 2007, 2009-2014 Free Software Foundation, Inc. + * Written by Jim Meyering. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <sys/time.h> + +#include "signature.h" +SIGNATURE_CHECK (gettimeofday, int, + (struct timeval *, GETTIMEOFDAY_TIMEZONE *)); + +#include <time.h> + +#include <stdio.h> +#include <string.h> + +int +main (void) +{ + time_t t = 0; + struct tm *lt; + struct tm saved_lt; + struct timeval tv; + lt = localtime (&t); + saved_lt = *lt; + gettimeofday (&tv, NULL); + if (memcmp (lt, &saved_lt, sizeof (struct tm)) != 0) + { + fprintf (stderr, "gettimeofday still clobbers the localtime buffer!\n"); + return 1; + } + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-iconv-h.c b/gettext-tools/gnulib-tests/test-iconv-h.c new file mode 100644 index 0000000..e72e373 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-iconv-h.c @@ -0,0 +1,27 @@ +/* Test of <iconv.h> substitute. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#if HAVE_ICONV +# include <iconv.h> +#endif + +int +main () +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-iconv.c b/gettext-tools/gnulib-tests/test-iconv.c new file mode 100644 index 0000000..3c1b193 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-iconv.c @@ -0,0 +1,148 @@ +/* Test of character set conversion. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#if HAVE_ICONV +# include <iconv.h> + +# ifndef ICONV_CONST +# define ICONV_CONST /* empty */ +# endif + +#include "signature.h" +SIGNATURE_CHECK (iconv, size_t, (iconv_t, ICONV_CONST char **, size_t *, + char **, size_t *)); +SIGNATURE_CHECK (iconv_close, int, (iconv_t x)); +SIGNATURE_CHECK (iconv_open, iconv_t, (char const *, char const *)); + +#endif + +#include <errno.h> +#include <string.h> + +#include "macros.h" + +int +main () +{ +#if HAVE_ICONV + /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1, + and UTF-8. */ + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8"); + + ASSERT (cd_88591_to_utf8 != (iconv_t)(-1)); + ASSERT (cd_utf8_to_88591 != (iconv_t)(-1)); + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == 0 && inbytesleft == 0); + ASSERT (outptr == buf + strlen (expected)); + ASSERT (memcmp (buf, expected, strlen (expected)) == 0); + } + + /* Test conversion from ISO-8859-1 to UTF-8 with E2BIG. */ + { + static const char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + const char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == (size_t)(-1) && errno == E2BIG); + ASSERT (inbytesleft == 1); + ASSERT (outbytesleft == 1); + ASSERT ((unsigned char) buf[1] == 0xAD); + ASSERT ((unsigned char) buf[0] == 0xDE); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + { + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == 0 && inbytesleft == 0); + ASSERT (outptr == buf + strlen (expected)); + ASSERT (memcmp (buf, expected, strlen (expected)) == 0); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == (size_t)(-1)) + { + ASSERT (errno == EILSEQ); + ASSERT (inbytesleft == strlen (input) && outptr == buf); + } + else + { + ASSERT (res == 1); + ASSERT (inbytesleft == 0); + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + { + static const char input[] = "\342"; + char buf[10]; + const char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (ICONV_CONST char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + ASSERT (res == (size_t)(-1) && errno == EINVAL); + ASSERT (inbytesleft == 1 && outptr == buf); + } + + iconv_close (cd_88591_to_utf8); + iconv_close (cd_utf8_to_88591); +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-ignore-value.c b/gettext-tools/gnulib-tests/test-ignore-value.c new file mode 100644 index 0000000..3533d7c --- /dev/null +++ b/gettext-tools/gnulib-tests/test-ignore-value.c @@ -0,0 +1,84 @@ +/* Test the "ignore-value" module. + + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake. */ + +#include <config.h> + +#include "ignore-value.h" + +#include <stdio.h> + +#ifndef _GL_ATTRIBUTE_RETURN_CHECK +# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4) +# define _GL_ATTRIBUTE_RETURN_CHECK +# else +# define _GL_ATTRIBUTE_RETURN_CHECK __attribute__((__warn_unused_result__)) +# endif +#endif + +struct s { int i; }; +static char doChar (void) _GL_ATTRIBUTE_RETURN_CHECK; +static int doInt (void) _GL_ATTRIBUTE_RETURN_CHECK; +static off_t doOff (void) _GL_ATTRIBUTE_RETURN_CHECK; +static void *doPtr (void) _GL_ATTRIBUTE_RETURN_CHECK; +static struct s doStruct (void) _GL_ATTRIBUTE_RETURN_CHECK; + +static char +doChar (void) +{ + return 0; +} + +static int +doInt (void) +{ + return 0; +} + +static off_t +doOff (void) +{ + return 0; +} + +static void * +doPtr (void) +{ + return NULL; +} + +static struct s +doStruct (void) +{ + static struct s s1; + return s1; +} + +int +main (void) +{ + /* If this test can compile with -Werror and the same warnings as + the rest of the project, then we are properly silencing warnings + about ignored return values. */ + ignore_value (doChar ()); + ignore_value (doInt ()); + ignore_value (doOff ()); + ignore_value (doPtr ()); + ignore_value (doStruct ()); + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-init.sh b/gettext-tools/gnulib-tests/test-init.sh new file mode 100755 index 0000000..be447b3 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-init.sh @@ -0,0 +1,73 @@ +#!/bin/sh +# Unit tests for init.sh +# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# This file is part of the GNUlib Library. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +: ${srcdir=.} +. "$srcdir/init.sh"; path_prepend_ . + +fail=0 + +test_compare() +{ + touch empty || fail=1 + echo xyz > in || fail=1 + + compare /dev/null /dev/null >out 2>err || fail=1 + test -s out && fail_ "out not empty: $(cat out)" + # "err" should be empty, too, but has "set -x" output when VERBOSE=yes + case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac + + compare /dev/null empty >out 2>err || fail=1 + test -s out && fail_ "out not empty: $(cat out)" + case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac + + compare in in >out 2>err || fail=1 + test -s out && fail_ "out not empty: $(cat out)" + case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac + + compare /dev/null in >out 2>err && fail=1 + cat <<\EOF > exp +diff -u /dev/null in +--- /dev/null 1970-01-01 ++++ in 1970-01-01 ++xyz +EOF + compare exp out || fail=1 + case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac + + compare empty in >out 2>err && fail=1 + # Compare against expected output only if compare is using diff -u. + if grep @ out >/dev/null; then + # Remove the TAB-date suffix on each --- and +++ line, + # for both the expected and the actual output files. + # Also remove the @@ line, since Solaris 5.10 and GNU diff formats differ: + # -@@ -0,0 +1 @@ + # +@@ -1,0 +1,1 @@ + sed 's/ .*//;/^@@/d' out > k && mv k out + cat <<\EOF > exp +--- empty ++++ in ++xyz +EOF + compare exp out || fail=1 + fi + case $- in *x*) ;; *) test -s err && fail_ "err not empty: $(cat err)";; esac +} + +test_compare + +Exit $fail diff --git a/gettext-tools/gnulib-tests/test-intprops.c b/gettext-tools/gnulib-tests/test-intprops.c new file mode 100644 index 0000000..97553e7 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-intprops.c @@ -0,0 +1,275 @@ +/* Test intprops.h. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Paul Eggert. */ + +/* Tell gcc not to warn about the many (X < 0) expressions that + the overflow macros expand to. */ +#if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__ +# pragma GCC diagnostic ignored "-Wtype-limits" +#endif + +#include <config.h> + +#include "intprops.h" +#include "verify.h" + +#include <stdbool.h> +#include <inttypes.h> + +#include "macros.h" + +/* VERIFY (X) uses a static assertion for compilers that are known to work, + and falls back on a dynamic assertion for other compilers. + These tests should be checkable via 'verify' rather than 'ASSERT', but + using 'verify' would run into a bug with HP-UX 11.23 cc; see + <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00401.html>. */ +#if __GNUC__ || __SUNPRO_C +# define VERIFY(x) do { verify (x); } while (0) +#else +# define VERIFY(x) ASSERT (x) +#endif + +int +main (void) +{ + /* Use VERIFY for tests that must be integer constant expressions, + ASSERT otherwise. */ + + /* TYPE_IS_INTEGER. */ + ASSERT (TYPE_IS_INTEGER (bool)); + ASSERT (TYPE_IS_INTEGER (char)); + ASSERT (TYPE_IS_INTEGER (signed char)); + ASSERT (TYPE_IS_INTEGER (unsigned char)); + ASSERT (TYPE_IS_INTEGER (short int)); + ASSERT (TYPE_IS_INTEGER (unsigned short int)); + ASSERT (TYPE_IS_INTEGER (int)); + ASSERT (TYPE_IS_INTEGER (unsigned int)); + ASSERT (TYPE_IS_INTEGER (long int)); + ASSERT (TYPE_IS_INTEGER (unsigned long int)); + ASSERT (TYPE_IS_INTEGER (intmax_t)); + ASSERT (TYPE_IS_INTEGER (uintmax_t)); + ASSERT (! TYPE_IS_INTEGER (float)); + ASSERT (! TYPE_IS_INTEGER (double)); + ASSERT (! TYPE_IS_INTEGER (long double)); + + /* TYPE_SIGNED. */ + /* VERIFY (! TYPE_SIGNED (bool)); // not guaranteed by gnulib substitute */ + VERIFY (TYPE_SIGNED (signed char)); + VERIFY (! TYPE_SIGNED (unsigned char)); + VERIFY (TYPE_SIGNED (short int)); + VERIFY (! TYPE_SIGNED (unsigned short int)); + VERIFY (TYPE_SIGNED (int)); + VERIFY (! TYPE_SIGNED (unsigned int)); + VERIFY (TYPE_SIGNED (long int)); + VERIFY (! TYPE_SIGNED (unsigned long int)); + VERIFY (TYPE_SIGNED (intmax_t)); + VERIFY (! TYPE_SIGNED (uintmax_t)); + ASSERT (TYPE_SIGNED (float)); + ASSERT (TYPE_SIGNED (double)); + ASSERT (TYPE_SIGNED (long double)); + + /* Integer representation. */ + VERIFY (INT_MIN + INT_MAX < 0 + ? (TYPE_TWOS_COMPLEMENT (int) + && ! TYPE_ONES_COMPLEMENT (int) && ! TYPE_SIGNED_MAGNITUDE (int)) + : (! TYPE_TWOS_COMPLEMENT (int) + && (TYPE_ONES_COMPLEMENT (int) || TYPE_SIGNED_MAGNITUDE (int)))); + + /* TYPE_MINIMUM, TYPE_MAXIMUM. */ + VERIFY (TYPE_MINIMUM (char) == CHAR_MIN); + VERIFY (TYPE_MAXIMUM (char) == CHAR_MAX); + VERIFY (TYPE_MINIMUM (unsigned char) == 0); + VERIFY (TYPE_MAXIMUM (unsigned char) == UCHAR_MAX); + VERIFY (TYPE_MINIMUM (signed char) == SCHAR_MIN); + VERIFY (TYPE_MAXIMUM (signed char) == SCHAR_MAX); + VERIFY (TYPE_MINIMUM (short int) == SHRT_MIN); + VERIFY (TYPE_MAXIMUM (short int) == SHRT_MAX); + VERIFY (TYPE_MINIMUM (unsigned short int) == 0); + VERIFY (TYPE_MAXIMUM (unsigned short int) == USHRT_MAX); + VERIFY (TYPE_MINIMUM (int) == INT_MIN); + VERIFY (TYPE_MAXIMUM (int) == INT_MAX); + VERIFY (TYPE_MINIMUM (unsigned int) == 0); + VERIFY (TYPE_MAXIMUM (unsigned int) == UINT_MAX); + VERIFY (TYPE_MINIMUM (long int) == LONG_MIN); + VERIFY (TYPE_MAXIMUM (long int) == LONG_MAX); + VERIFY (TYPE_MINIMUM (unsigned long int) == 0); + VERIFY (TYPE_MAXIMUM (unsigned long int) == ULONG_MAX); + VERIFY (TYPE_MINIMUM (intmax_t) == INTMAX_MIN); + VERIFY (TYPE_MAXIMUM (intmax_t) == INTMAX_MAX); + VERIFY (TYPE_MINIMUM (uintmax_t) == 0); + VERIFY (TYPE_MAXIMUM (uintmax_t) == UINTMAX_MAX); + + /* INT_BITS_STRLEN_BOUND. */ + VERIFY (INT_BITS_STRLEN_BOUND (1) == 1); + VERIFY (INT_BITS_STRLEN_BOUND (2620) == 789); + + /* INT_STRLEN_BOUND, INT_BUFSIZE_BOUND. */ + #ifdef INT32_MAX /* POSIX guarantees int32_t; this ports to non-POSIX. */ + VERIFY (INT_STRLEN_BOUND (int32_t) == sizeof ("-2147483648") - 1); + VERIFY (INT_BUFSIZE_BOUND (int32_t) == sizeof ("-2147483648")); + #endif + #ifdef INT64_MAX + VERIFY (INT_STRLEN_BOUND (int64_t) == sizeof ("-9223372036854775808") - 1); + VERIFY (INT_BUFSIZE_BOUND (int64_t) == sizeof ("-9223372036854775808")); + #endif + + /* All the INT_<op>_RANGE_OVERFLOW tests are equally valid as + INT_<op>_OVERFLOW tests, so define a single macro to do both. */ + #define CHECK_BINOP(op, a, b, min, max, overflow) \ + (INT_##op##_RANGE_OVERFLOW (a, b, min, max) == (overflow) \ + && INT_##op##_OVERFLOW (a, b) == (overflow)) + #define CHECK_UNOP(op, a, min, max, overflow) \ + (INT_##op##_RANGE_OVERFLOW (a, min, max) == (overflow) \ + && INT_##op##_OVERFLOW (a) == (overflow)) + + /* INT_<op>_RANGE_OVERFLOW, INT_<op>_OVERFLOW. */ + VERIFY (INT_ADD_RANGE_OVERFLOW (INT_MAX, 1, INT_MIN, INT_MAX)); + VERIFY (INT_ADD_OVERFLOW (INT_MAX, 1)); + VERIFY (CHECK_BINOP (ADD, INT_MAX, 1, INT_MIN, INT_MAX, true)); + VERIFY (CHECK_BINOP (ADD, INT_MAX, -1, INT_MIN, INT_MAX, false)); + VERIFY (CHECK_BINOP (ADD, INT_MIN, 1, INT_MIN, INT_MAX, false)); + VERIFY (CHECK_BINOP (ADD, INT_MIN, -1, INT_MIN, INT_MAX, true)); + VERIFY (CHECK_BINOP (ADD, UINT_MAX, 1u, 0u, UINT_MAX, true)); + VERIFY (CHECK_BINOP (ADD, 0u, 1u, 0u, UINT_MAX, false)); + + VERIFY (CHECK_BINOP (SUBTRACT, INT_MAX, 1, INT_MIN, INT_MAX, false)); + VERIFY (CHECK_BINOP (SUBTRACT, INT_MAX, -1, INT_MIN, INT_MAX, true)); + VERIFY (CHECK_BINOP (SUBTRACT, INT_MIN, 1, INT_MIN, INT_MAX, true)); + VERIFY (CHECK_BINOP (SUBTRACT, INT_MIN, -1, INT_MIN, INT_MAX, false)); + VERIFY (CHECK_BINOP (SUBTRACT, UINT_MAX, 1u, 0u, UINT_MAX, false)); + VERIFY (CHECK_BINOP (SUBTRACT, 0u, 1u, 0u, UINT_MAX, true)); + + VERIFY (CHECK_UNOP (NEGATE, INT_MIN, INT_MIN, INT_MAX, + TYPE_TWOS_COMPLEMENT (int))); + VERIFY (CHECK_UNOP (NEGATE, 0, INT_MIN, INT_MAX, false)); + VERIFY (CHECK_UNOP (NEGATE, INT_MAX, INT_MIN, INT_MAX, false)); + VERIFY (CHECK_UNOP (NEGATE, 0u, 0u, UINT_MAX, false)); + VERIFY (CHECK_UNOP (NEGATE, 1u, 0u, UINT_MAX, true)); + VERIFY (CHECK_UNOP (NEGATE, UINT_MAX, 0u, UINT_MAX, true)); + + VERIFY (CHECK_BINOP (MULTIPLY, INT_MAX, INT_MAX, INT_MIN, INT_MAX, true)); + VERIFY (CHECK_BINOP (MULTIPLY, INT_MAX, INT_MIN, INT_MIN, INT_MAX, true)); + VERIFY (CHECK_BINOP (MULTIPLY, INT_MIN, INT_MAX, INT_MIN, INT_MAX, true)); + VERIFY (CHECK_BINOP (MULTIPLY, INT_MIN, INT_MIN, INT_MIN, INT_MAX, true)); + VERIFY (CHECK_BINOP (MULTIPLY, -1, INT_MIN, INT_MIN, INT_MAX, + INT_NEGATE_OVERFLOW (INT_MIN))); + VERIFY (CHECK_BINOP (MULTIPLY, LONG_MIN / INT_MAX, (long int) INT_MAX, + LONG_MIN, LONG_MIN, false)); + + VERIFY (CHECK_BINOP (DIVIDE, INT_MIN, -1, INT_MIN, INT_MAX, + INT_NEGATE_OVERFLOW (INT_MIN))); + VERIFY (CHECK_BINOP (DIVIDE, INT_MAX, 1, INT_MIN, INT_MAX, false)); + VERIFY (CHECK_BINOP (DIVIDE, (unsigned int) INT_MIN, + -1u, 0u, UINT_MAX, false)); + + VERIFY (CHECK_BINOP (REMAINDER, INT_MIN, -1, INT_MIN, INT_MAX, + INT_NEGATE_OVERFLOW (INT_MIN))); + VERIFY (CHECK_BINOP (REMAINDER, INT_MAX, 1, INT_MIN, INT_MAX, false)); + VERIFY (CHECK_BINOP (REMAINDER, (unsigned int) INT_MIN, + -1u, 0u, UINT_MAX, false)); + + VERIFY (CHECK_BINOP (LEFT_SHIFT, UINT_MAX, 1, 0u, UINT_MAX, true)); + VERIFY (CHECK_BINOP (LEFT_SHIFT, UINT_MAX / 2 + 1, 1, 0u, UINT_MAX, true)); + VERIFY (CHECK_BINOP (LEFT_SHIFT, UINT_MAX / 2, 1, 0u, UINT_MAX, false)); + + /* INT_<op>_OVERFLOW with mixed types. */ + #define CHECK_SUM(a, b, overflow) \ + VERIFY (INT_ADD_OVERFLOW (a, b) == (overflow)); \ + VERIFY (INT_ADD_OVERFLOW (b, a) == (overflow)) + CHECK_SUM (-1, LONG_MIN, true); + CHECK_SUM (-1, UINT_MAX, false); + CHECK_SUM (-1L, INT_MIN, INT_MIN == LONG_MIN); + CHECK_SUM (0u, -1, true); + CHECK_SUM (0u, 0, false); + CHECK_SUM (0u, 1, false); + CHECK_SUM (1, LONG_MAX, true); + CHECK_SUM (1, UINT_MAX, true); + CHECK_SUM (1L, INT_MAX, INT_MAX == LONG_MAX); + CHECK_SUM (1u, INT_MAX, INT_MAX == UINT_MAX); + CHECK_SUM (1u, INT_MIN, true); + + VERIFY (! INT_SUBTRACT_OVERFLOW (INT_MAX, 1u)); + VERIFY (! INT_SUBTRACT_OVERFLOW (UINT_MAX, 1)); + VERIFY (! INT_SUBTRACT_OVERFLOW (0u, -1)); + VERIFY (INT_SUBTRACT_OVERFLOW (UINT_MAX, -1)); + VERIFY (INT_SUBTRACT_OVERFLOW (INT_MIN, 1u)); + VERIFY (INT_SUBTRACT_OVERFLOW (-1, 0u)); + + #define CHECK_PRODUCT(a, b, overflow) \ + VERIFY (INT_MULTIPLY_OVERFLOW (a, b) == (overflow)); \ + VERIFY (INT_MULTIPLY_OVERFLOW (b, a) == (overflow)) + + CHECK_PRODUCT (-1, 1u, true); + CHECK_PRODUCT (-1, INT_MIN, INT_NEGATE_OVERFLOW (INT_MIN)); + CHECK_PRODUCT (-1, UINT_MAX, true); + CHECK_PRODUCT (-12345, LONG_MAX / -12345 - 1, true); + CHECK_PRODUCT (-12345, LONG_MAX / -12345, false); + CHECK_PRODUCT (0, -1, false); + CHECK_PRODUCT (0, 0, false); + CHECK_PRODUCT (0, 0u, false); + CHECK_PRODUCT (0, 1, false); + CHECK_PRODUCT (0, INT_MAX, false); + CHECK_PRODUCT (0, INT_MIN, false); + CHECK_PRODUCT (0, UINT_MAX, false); + CHECK_PRODUCT (0u, -1, false); + CHECK_PRODUCT (0u, 0, false); + CHECK_PRODUCT (0u, 0u, false); + CHECK_PRODUCT (0u, 1, false); + CHECK_PRODUCT (0u, INT_MAX, false); + CHECK_PRODUCT (0u, INT_MIN, false); + CHECK_PRODUCT (0u, UINT_MAX, false); + CHECK_PRODUCT (1, INT_MAX, false); + CHECK_PRODUCT (1, INT_MIN, false); + CHECK_PRODUCT (1, UINT_MAX, false); + CHECK_PRODUCT (1u, INT_MIN, true); + CHECK_PRODUCT (1u, INT_MAX, UINT_MAX < INT_MAX); + CHECK_PRODUCT (INT_MAX, UINT_MAX, true); + CHECK_PRODUCT (INT_MAX, ULONG_MAX, true); + CHECK_PRODUCT (INT_MIN, LONG_MAX / INT_MIN - 1, true); + CHECK_PRODUCT (INT_MIN, LONG_MAX / INT_MIN, false); + CHECK_PRODUCT (INT_MIN, UINT_MAX, true); + CHECK_PRODUCT (INT_MIN, ULONG_MAX, true); + + VERIFY (INT_DIVIDE_OVERFLOW (INT_MIN, -1L) + == (TYPE_TWOS_COMPLEMENT (long int) && INT_MIN == LONG_MIN)); + VERIFY (! INT_DIVIDE_OVERFLOW (INT_MIN, UINT_MAX)); + VERIFY (! INT_DIVIDE_OVERFLOW (INTMAX_MIN, UINTMAX_MAX)); + VERIFY (! INT_DIVIDE_OVERFLOW (INTMAX_MIN, UINT_MAX)); + VERIFY (INT_DIVIDE_OVERFLOW (-11, 10u)); + VERIFY (INT_DIVIDE_OVERFLOW (-10, 10u)); + VERIFY (! INT_DIVIDE_OVERFLOW (-9, 10u)); + VERIFY (INT_DIVIDE_OVERFLOW (11u, -10)); + VERIFY (INT_DIVIDE_OVERFLOW (10u, -10)); + VERIFY (! INT_DIVIDE_OVERFLOW (9u, -10)); + + VERIFY (INT_REMAINDER_OVERFLOW (INT_MIN, -1L) + == (TYPE_TWOS_COMPLEMENT (long int) && INT_MIN == LONG_MIN)); + VERIFY (INT_REMAINDER_OVERFLOW (-1, UINT_MAX)); + VERIFY (INT_REMAINDER_OVERFLOW ((intmax_t) -1, UINTMAX_MAX)); + VERIFY (INT_REMAINDER_OVERFLOW (INTMAX_MIN, UINT_MAX) + == (INTMAX_MAX < UINT_MAX + && - (unsigned int) INTMAX_MIN % UINT_MAX != 0)); + VERIFY (INT_REMAINDER_OVERFLOW (INT_MIN, ULONG_MAX) + == (INT_MIN % ULONG_MAX != 1)); + VERIFY (! INT_REMAINDER_OVERFLOW (1u, -1)); + VERIFY (! INT_REMAINDER_OVERFLOW (37*39u, -39)); + VERIFY (INT_REMAINDER_OVERFLOW (37*39u + 1, -39)); + VERIFY (INT_REMAINDER_OVERFLOW (37*39u - 1, -39)); + VERIFY (! INT_REMAINDER_OVERFLOW (LONG_MAX, -INT_MAX)); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-inttypes.c b/gettext-tools/gnulib-tests/test-inttypes.c new file mode 100644 index 0000000..35deeab --- /dev/null +++ b/gettext-tools/gnulib-tests/test-inttypes.c @@ -0,0 +1,118 @@ +/* Test of <inttypes.h> substitute. + Copyright (C) 2006-2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <inttypes.h> + +#include <stddef.h> + +/* Tests for macros supposed to be defined in inttypes.h. */ + +const char *k = /* implicit string concatenation */ +#ifdef INT8_MAX + PRId8 PRIi8 +#endif +#ifdef UINT8_MAX + PRIo8 PRIu8 PRIx8 PRIX8 +#endif +#ifdef INT16_MAX + PRId16 PRIi16 +#endif +#ifdef UINT16_MAX + PRIo16 PRIu16 PRIx16 PRIX16 +#endif +#ifdef INT32_MAX + PRId32 PRIi32 +#endif +#ifdef UINT32_MAX + PRIo32 PRIu32 PRIx32 PRIX32 +#endif +#ifdef INT64_MAX + PRId64 PRIi64 +#endif +#ifdef UINT64_MAX + PRIo64 PRIu64 PRIx64 PRIX64 +#endif + PRIdLEAST8 PRIiLEAST8 PRIoLEAST8 PRIuLEAST8 PRIxLEAST8 PRIXLEAST8 + PRIdLEAST16 PRIiLEAST16 PRIoLEAST16 PRIuLEAST16 PRIxLEAST16 PRIXLEAST16 + PRIdLEAST32 PRIiLEAST32 PRIoLEAST32 PRIuLEAST32 PRIxLEAST32 PRIXLEAST32 + PRIdLEAST64 PRIiLEAST64 + PRIoLEAST64 PRIuLEAST64 PRIxLEAST64 PRIXLEAST64 + PRIdFAST8 PRIiFAST8 PRIoFAST8 PRIuFAST8 PRIxFAST8 PRIXFAST8 + PRIdFAST16 PRIiFAST16 PRIoFAST16 PRIuFAST16 PRIxFAST16 PRIXFAST16 + PRIdFAST32 PRIiFAST32 PRIoFAST32 PRIuFAST32 PRIxFAST32 PRIXFAST32 + PRIdFAST64 PRIiFAST64 + PRIoFAST64 PRIuFAST64 PRIxFAST64 PRIXFAST64 + PRIdMAX PRIiMAX PRIoMAX PRIuMAX PRIxMAX PRIXMAX +#ifdef INTPTR_MAX + PRIdPTR PRIiPTR +#endif +#ifdef UINTPTR_MAX + PRIoPTR PRIuPTR PRIxPTR PRIXPTR +#endif + ; +const char *l = /* implicit string concatenation */ +#ifdef INT8_MAX + SCNd8 SCNi8 +#endif +#ifdef UINT8_MAX + SCNo8 SCNu8 SCNx8 +#endif +#ifdef INT16_MAX + SCNd16 SCNi16 +#endif +#ifdef UINT16_MAX + SCNo16 SCNu16 SCNx16 +#endif +#ifdef INT32_MAX + SCNd32 SCNi32 +#endif +#ifdef UINT32_MAX + SCNo32 SCNu32 SCNx32 +#endif +#ifdef INT64_MAX + SCNd64 SCNi64 +#endif +#ifdef UINT64_MAX + SCNo64 SCNu64 SCNx64 +#endif + SCNdLEAST8 SCNiLEAST8 SCNoLEAST8 SCNuLEAST8 SCNxLEAST8 + SCNdLEAST16 SCNiLEAST16 SCNoLEAST16 SCNuLEAST16 SCNxLEAST16 + SCNdLEAST32 SCNiLEAST32 SCNoLEAST32 SCNuLEAST32 SCNxLEAST32 + SCNdLEAST64 SCNiLEAST64 + SCNoLEAST64 SCNuLEAST64 SCNxLEAST64 + SCNdFAST8 SCNiFAST8 SCNoFAST8 SCNuFAST8 SCNxFAST8 + SCNdFAST16 SCNiFAST16 SCNoFAST16 SCNuFAST16 SCNxFAST16 + SCNdFAST32 SCNiFAST32 SCNoFAST32 SCNuFAST32 SCNxFAST32 + SCNdFAST64 SCNiFAST64 + SCNoFAST64 SCNuFAST64 SCNxFAST64 + SCNdMAX SCNiMAX SCNoMAX SCNuMAX SCNxMAX +#ifdef INTPTR_MAX + SCNdPTR SCNiPTR +#endif +#ifdef UINTPTR_MAX + SCNoPTR SCNuPTR SCNxPTR +#endif + ; + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-iswblank.c b/gettext-tools/gnulib-tests/test-iswblank.c new file mode 100644 index 0000000..68ede5c --- /dev/null +++ b/gettext-tools/gnulib-tests/test-iswblank.c @@ -0,0 +1,35 @@ +/* Test of iswblank() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <wctype.h> + +#include "macros.h" + +/* Check that WEOF is defined. */ +wint_t e = WEOF; + +int +main (void) +{ + /* Check that the function exist as a function or as a macro. */ + (void) iswblank (0); + /* Check that the isw* functions map WEOF to 0. */ + ASSERT (!iswblank (e)); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-linkedhash_list.c b/gettext-tools/gnulib-tests/test-linkedhash_list.c new file mode 100644 index 0000000..39f8f10 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-linkedhash_list.c @@ -0,0 +1,441 @@ +/* Test of sequential list data type implementation. + Copyright (C) 2006-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2006. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include "gl_linkedhash_list.h" + +#include <limits.h> +#include <stdlib.h> +#include <string.h> + +#include "gl_array_list.h" +#include "progname.h" +#include "macros.h" + +static const char *objects[15] = + { + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o" + }; + +#define SIZE_BITS (sizeof (size_t) * CHAR_BIT) + +static bool +string_equals (const void *x1, const void *x2) +{ + const char *s1 = x1; + const char *s2 = x2; + return strcmp (s1, s2) == 0; +} + +/* A hash function for NUL-terminated char* strings using + the method described by Bruno Haible. + See http://www.haible.de/bruno/hashfunc.html. */ +static size_t +string_hash (const void *x) +{ + const char *s = x; + size_t h = 0; + + for (; *s; s++) + h = *s + ((h << 9) | (h >> (SIZE_BITS - 9))); + + return h; +} + +#define RANDOM(n) (rand () % (n)) +#define RANDOM_OBJECT() objects[RANDOM (SIZEOF (objects))] + +static void +check_equals (gl_list_t list1, gl_list_t list2) +{ + size_t n, i; + + n = gl_list_size (list1); + ASSERT (n == gl_list_size (list2)); + for (i = 0; i < n; i++) + { + ASSERT (gl_list_get_at (list1, i) == gl_list_get_at (list2, i)); + } +} + +static void +check_all (gl_list_t list1, gl_list_t list2, gl_list_t list3) +{ + check_equals (list1, list2); + check_equals (list1, list3); +} + +int +main (int argc, char *argv[]) +{ + gl_list_t list1, list2, list3; + + set_program_name (argv[0]); + + /* Allow the user to provide a non-default random seed on the command line. */ + if (argc > 1) + srand (atoi (argv[1])); + + { + size_t initial_size = RANDOM (50); + const void **contents = + (const void **) malloc (initial_size * sizeof (const void *)); + size_t i; + unsigned int repeat; + + for (i = 0; i < initial_size; i++) + contents[i] = RANDOM_OBJECT (); + + /* Create list1. */ + list1 = gl_list_nx_create (GL_ARRAY_LIST, + string_equals, string_hash, NULL, true, + initial_size, contents); + ASSERT (list1 != NULL); + /* Create list2. */ + list2 = gl_list_nx_create_empty (GL_LINKEDHASH_LIST, + string_equals, string_hash, NULL, true); + ASSERT (list2 != NULL); + for (i = 0; i < initial_size; i++) + ASSERT (gl_list_nx_add_last (list2, contents[i]) != NULL); + + /* Create list3. */ + list3 = gl_list_nx_create (GL_LINKEDHASH_LIST, + string_equals, string_hash, NULL, true, + initial_size, contents); + ASSERT (list3 != NULL); + + check_all (list1, list2, list3); + + for (repeat = 0; repeat < 10000; repeat++) + { + unsigned int operation = RANDOM (16); + switch (operation) + { + case 0: + if (gl_list_size (list1) > 0) + { + size_t index = RANDOM (gl_list_size (list1)); + const char *obj = RANDOM_OBJECT (); + gl_list_node_t node1, node2, node3; + + node1 = gl_list_nx_set_at (list1, index, obj); + ASSERT (node1 != NULL); + ASSERT (gl_list_get_at (list1, index) == obj); + ASSERT (gl_list_node_value (list1, node1) == obj); + + node2 = gl_list_nx_set_at (list2, index, obj); + ASSERT (node2 != NULL); + ASSERT (gl_list_get_at (list2, index) == obj); + ASSERT (gl_list_node_value (list2, node2) == obj); + + node3 = gl_list_nx_set_at (list3, index, obj); + ASSERT (node3 != NULL); + ASSERT (gl_list_get_at (list3, index) == obj); + ASSERT (gl_list_node_value (list3, node3) == obj); + + if (index > 0) + { + ASSERT (gl_list_node_value (list1, gl_list_previous_node (list1, node1)) + == gl_list_get_at (list1, index - 1)); + ASSERT (gl_list_node_value (list2, gl_list_previous_node (list3, node3)) + == gl_list_get_at (list2, index - 1)); + ASSERT (gl_list_node_value (list3, gl_list_previous_node (list3, node3)) + == gl_list_get_at (list2, index - 1)); + } + if (index + 1 < gl_list_size (list1)) + { + ASSERT (gl_list_node_value (list1, gl_list_next_node (list1, node1)) + == gl_list_get_at (list1, index + 1)); + ASSERT (gl_list_node_value (list2, gl_list_next_node (list3, node3)) + == gl_list_get_at (list2, index + 1)); + ASSERT (gl_list_node_value (list3, gl_list_next_node (list3, node3)) + == gl_list_get_at (list2, index + 1)); + } + } + break; + case 1: + { + const char *obj = RANDOM_OBJECT (); + gl_list_node_t node1, node2, node3; + node1 = gl_list_search (list1, obj); + node2 = gl_list_search (list2, obj); + node3 = gl_list_search (list3, obj); + if (node1 == NULL) + { + ASSERT (node2 == NULL); + ASSERT (node3 == NULL); + } + else + { + ASSERT (node2 != NULL); + ASSERT (node3 != NULL); + ASSERT (gl_list_node_value (list1, node1) == obj); + ASSERT (gl_list_node_value (list2, node2) == obj); + ASSERT (gl_list_node_value (list3, node3) == obj); + } + } + break; + case 2: + { + const char *obj = RANDOM_OBJECT (); + size_t index1, index2, index3; + index1 = gl_list_indexof (list1, obj); + index2 = gl_list_indexof (list2, obj); + index3 = gl_list_indexof (list3, obj); + if (index1 == (size_t)(-1)) + { + ASSERT (index2 == (size_t)(-1)); + ASSERT (index3 == (size_t)(-1)); + } + else + { + ASSERT (index2 != (size_t)(-1)); + ASSERT (index3 != (size_t)(-1)); + ASSERT (gl_list_get_at (list1, index1) == obj); + ASSERT (gl_list_get_at (list2, index2) == obj); + ASSERT (gl_list_get_at (list3, index3) == obj); + ASSERT (index2 == index1); + ASSERT (index3 == index1); + } + } + break; + case 3: /* add 1 element */ + { + const char *obj = RANDOM_OBJECT (); + gl_list_node_t node1, node2, node3; + node1 = gl_list_nx_add_first (list1, obj); + ASSERT (node1 != NULL); + node2 = gl_list_nx_add_first (list2, obj); + ASSERT (node2 != NULL); + node3 = gl_list_nx_add_first (list3, obj); + ASSERT (node3 != NULL); + ASSERT (gl_list_node_value (list1, node1) == obj); + ASSERT (gl_list_node_value (list2, node2) == obj); + ASSERT (gl_list_node_value (list3, node3) == obj); + ASSERT (gl_list_get_at (list1, 0) == obj); + ASSERT (gl_list_get_at (list2, 0) == obj); + ASSERT (gl_list_get_at (list3, 0) == obj); + } + break; + case 4: /* add 1 element */ + { + const char *obj = RANDOM_OBJECT (); + gl_list_node_t node1, node2, node3; + node1 = gl_list_nx_add_last (list1, obj); + ASSERT (node1 != NULL); + node2 = gl_list_nx_add_last (list2, obj); + ASSERT (node2 != NULL); + node3 = gl_list_nx_add_last (list3, obj); + ASSERT (node3 != NULL); + ASSERT (gl_list_node_value (list1, node1) == obj); + ASSERT (gl_list_node_value (list2, node2) == obj); + ASSERT (gl_list_node_value (list3, node3) == obj); + ASSERT (gl_list_get_at (list1, gl_list_size (list1) - 1) == obj); + ASSERT (gl_list_get_at (list2, gl_list_size (list2) - 1) == obj); + ASSERT (gl_list_get_at (list3, gl_list_size (list3) - 1) == obj); + } + break; + case 5: /* add 3 elements */ + { + const char *obj0 = RANDOM_OBJECT (); + const char *obj1 = RANDOM_OBJECT (); + const char *obj2 = RANDOM_OBJECT (); + gl_list_node_t node1, node2, node3; + node1 = gl_list_nx_add_first (list1, obj2); + ASSERT (node1 != NULL); + node1 = gl_list_nx_add_before (list1, node1, obj0); + ASSERT (node1 != NULL); + node1 = gl_list_nx_add_after (list1, node1, obj1); + ASSERT (node1 != NULL); + node2 = gl_list_nx_add_first (list2, obj2); + ASSERT (node2 != NULL); + node2 = gl_list_nx_add_before (list2, node2, obj0); + ASSERT (node2 != NULL); + node2 = gl_list_nx_add_after (list2, node2, obj1); + ASSERT (node2 != NULL); + node3 = gl_list_nx_add_first (list3, obj2); + ASSERT (node3 != NULL); + node3 = gl_list_nx_add_before (list3, node3, obj0); + ASSERT (node3 != NULL); + node3 = gl_list_nx_add_after (list3, node3, obj1); + ASSERT (node3 != NULL); + ASSERT (gl_list_node_value (list1, node1) == obj1); + ASSERT (gl_list_node_value (list2, node2) == obj1); + ASSERT (gl_list_node_value (list3, node3) == obj1); + ASSERT (gl_list_get_at (list1, 0) == obj0); + ASSERT (gl_list_get_at (list1, 1) == obj1); + ASSERT (gl_list_get_at (list1, 2) == obj2); + ASSERT (gl_list_get_at (list2, 0) == obj0); + ASSERT (gl_list_get_at (list2, 1) == obj1); + ASSERT (gl_list_get_at (list2, 2) == obj2); + ASSERT (gl_list_get_at (list3, 0) == obj0); + ASSERT (gl_list_get_at (list3, 1) == obj1); + ASSERT (gl_list_get_at (list3, 2) == obj2); + } + break; + case 6: /* add 1 element */ + { + size_t index = RANDOM (gl_list_size (list1) + 1); + const char *obj = RANDOM_OBJECT (); + gl_list_node_t node1, node2, node3; + node1 = gl_list_nx_add_at (list1, index, obj); + ASSERT (node1 != NULL); + node2 = gl_list_nx_add_at (list2, index, obj); + ASSERT (node2 != NULL); + node3 = gl_list_nx_add_at (list3, index, obj); + ASSERT (node3 != NULL); + ASSERT (gl_list_get_at (list1, index) == obj); + ASSERT (gl_list_node_value (list1, node1) == obj); + ASSERT (gl_list_get_at (list2, index) == obj); + ASSERT (gl_list_node_value (list2, node2) == obj); + ASSERT (gl_list_get_at (list3, index) == obj); + ASSERT (gl_list_node_value (list3, node3) == obj); + if (index > 0) + { + ASSERT (gl_list_node_value (list1, gl_list_previous_node (list1, node1)) + == gl_list_get_at (list1, index - 1)); + ASSERT (gl_list_node_value (list2, gl_list_previous_node (list3, node3)) + == gl_list_get_at (list2, index - 1)); + ASSERT (gl_list_node_value (list3, gl_list_previous_node (list3, node3)) + == gl_list_get_at (list2, index - 1)); + } + if (index + 1 < gl_list_size (list1)) + { + ASSERT (gl_list_node_value (list1, gl_list_next_node (list1, node1)) + == gl_list_get_at (list1, index + 1)); + ASSERT (gl_list_node_value (list2, gl_list_next_node (list3, node3)) + == gl_list_get_at (list2, index + 1)); + ASSERT (gl_list_node_value (list3, gl_list_next_node (list3, node3)) + == gl_list_get_at (list2, index + 1)); + } + } + break; + case 7: case 8: /* remove 1 element */ + if (gl_list_size (list1) > 0) + { + size_t n = gl_list_size (list1); + const char *obj = gl_list_get_at (list1, RANDOM (n)); + gl_list_node_t node1, node2, node3; + node1 = gl_list_search (list1, obj); + node2 = gl_list_search (list2, obj); + node3 = gl_list_search (list3, obj); + ASSERT (node1 != NULL); + ASSERT (node2 != NULL); + ASSERT (node3 != NULL); + ASSERT (gl_list_remove_node (list1, node1)); + ASSERT (gl_list_remove_node (list2, node2)); + ASSERT (gl_list_remove_node (list3, node3)); + ASSERT (gl_list_size (list1) == n - 1); + } + break; + case 9: case 10: /* remove 1 element */ + if (gl_list_size (list1) > 0) + { + size_t n = gl_list_size (list1); + size_t index = RANDOM (n); + ASSERT (gl_list_remove_at (list1, index)); + ASSERT (gl_list_remove_at (list2, index)); + ASSERT (gl_list_remove_at (list3, index)); + ASSERT (gl_list_size (list1) == n - 1); + } + break; + case 11: case 12: /* remove 1 element */ + if (gl_list_size (list1) > 0) + { + size_t n = gl_list_size (list1); + const char *obj = gl_list_get_at (list1, RANDOM (n)); + ASSERT (gl_list_remove (list1, obj)); + ASSERT (gl_list_remove (list2, obj)); + ASSERT (gl_list_remove (list3, obj)); + ASSERT (gl_list_size (list1) == n - 1); + } + break; + case 13: + if (gl_list_size (list1) > 0) + { + size_t n = gl_list_size (list1); + const char *obj = "xyzzy"; + ASSERT (!gl_list_remove (list1, obj)); + ASSERT (!gl_list_remove (list2, obj)); + ASSERT (!gl_list_remove (list3, obj)); + ASSERT (gl_list_size (list1) == n); + } + break; + case 14: + { + size_t n = gl_list_size (list1); + gl_list_iterator_t iter1, iter2, iter3; + const void *elt; + iter1 = gl_list_iterator (list1); + iter2 = gl_list_iterator (list2); + iter3 = gl_list_iterator (list3); + for (i = 0; i < n; i++) + { + ASSERT (gl_list_iterator_next (&iter1, &elt, NULL)); + ASSERT (gl_list_get_at (list1, i) == elt); + ASSERT (gl_list_iterator_next (&iter2, &elt, NULL)); + ASSERT (gl_list_get_at (list2, i) == elt); + ASSERT (gl_list_iterator_next (&iter3, &elt, NULL)); + ASSERT (gl_list_get_at (list3, i) == elt); + } + ASSERT (!gl_list_iterator_next (&iter1, &elt, NULL)); + ASSERT (!gl_list_iterator_next (&iter2, &elt, NULL)); + ASSERT (!gl_list_iterator_next (&iter3, &elt, NULL)); + gl_list_iterator_free (&iter1); + gl_list_iterator_free (&iter2); + gl_list_iterator_free (&iter3); + } + break; + case 15: + { + size_t end = RANDOM (gl_list_size (list1) + 1); + size_t start = RANDOM (end + 1); + gl_list_iterator_t iter1, iter2, iter3; + const void *elt; + iter1 = gl_list_iterator_from_to (list1, start, end); + iter2 = gl_list_iterator_from_to (list2, start, end); + iter3 = gl_list_iterator_from_to (list3, start, end); + for (i = start; i < end; i++) + { + ASSERT (gl_list_iterator_next (&iter1, &elt, NULL)); + ASSERT (gl_list_get_at (list1, i) == elt); + ASSERT (gl_list_iterator_next (&iter2, &elt, NULL)); + ASSERT (gl_list_get_at (list2, i) == elt); + ASSERT (gl_list_iterator_next (&iter3, &elt, NULL)); + ASSERT (gl_list_get_at (list3, i) == elt); + } + ASSERT (!gl_list_iterator_next (&iter1, &elt, NULL)); + ASSERT (!gl_list_iterator_next (&iter2, &elt, NULL)); + ASSERT (!gl_list_iterator_next (&iter3, &elt, NULL)); + gl_list_iterator_free (&iter1); + gl_list_iterator_free (&iter2); + gl_list_iterator_free (&iter3); + } + break; + } + check_all (list1, list2, list3); + } + + gl_list_free (list1); + gl_list_free (list2); + gl_list_free (list3); + free (contents); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-locale.c b/gettext-tools/gnulib-tests/test-locale.c new file mode 100644 index 0000000..cf4e6e8 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-locale.c @@ -0,0 +1,79 @@ +/* Test of <locale.h> substitute. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <locale.h> + +#include "verify.h" + +int a[] = + { + LC_ALL, + LC_COLLATE, + LC_CTYPE, + LC_MESSAGES, + LC_MONETARY, + LC_NUMERIC, + LC_TIME + }; + +#if HAVE_NEWLOCALE +/* Check that the locale_t type and the LC_GLOBAL_LOCALE macro are defined. */ +locale_t b = LC_GLOBAL_LOCALE; +#endif + +/* Check that the 'struct lconv' type is defined. */ +struct lconv l; +int ls; + +/* Check that NULL can be passed through varargs as a pointer type, + per POSIX 2008. */ +verify (sizeof NULL == sizeof (void *)); + +int +main () +{ + /* Check that 'struct lconv' has the ISO C and POSIX specified members. */ + ls += sizeof (*l.decimal_point); + ls += sizeof (*l.thousands_sep); + ls += sizeof (*l.grouping); + ls += sizeof (*l.mon_decimal_point); + ls += sizeof (*l.mon_thousands_sep); + ls += sizeof (*l.mon_grouping); + ls += sizeof (*l.positive_sign); + ls += sizeof (*l.negative_sign); + ls += sizeof (*l.currency_symbol); + ls += sizeof (l.frac_digits); + ls += sizeof (l.p_cs_precedes); + ls += sizeof (l.p_sign_posn); + ls += sizeof (l.p_sep_by_space); + ls += sizeof (l.n_cs_precedes); + ls += sizeof (l.n_sign_posn); + ls += sizeof (l.n_sep_by_space); + ls += sizeof (*l.int_curr_symbol); + ls += sizeof (l.int_frac_digits); + ls += sizeof (l.int_p_cs_precedes); + ls += sizeof (l.int_p_sign_posn); + ls += sizeof (l.int_p_sep_by_space); + ls += sizeof (l.int_n_cs_precedes); + ls += sizeof (l.int_n_sign_posn); + ls += sizeof (l.int_n_sep_by_space); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-localename.c b/gettext-tools/gnulib-tests/test-localename.c new file mode 100644 index 0000000..df6c1d6 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-localename.c @@ -0,0 +1,747 @@ +/* Test of gl_locale_name function and its variants. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "localename.h" + +#include <locale.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + + +#if HAVE_NEWLOCALE + +static struct { int cat; int mask; const char *string; } const categories[] = + { + { LC_CTYPE, LC_CTYPE_MASK, "LC_CTYPE" }, + { LC_NUMERIC, LC_NUMERIC_MASK, "LC_NUMERIC" }, + { LC_TIME, LC_TIME_MASK, "LC_TIME" }, + { LC_COLLATE, LC_COLLATE_MASK, "LC_COLLATE" }, + { LC_MONETARY, LC_MONETARY_MASK, "LC_MONETARY" }, + { LC_MESSAGES, LC_MESSAGES_MASK, "LC_MESSAGES" } +# ifdef LC_PAPER + , { LC_PAPER, LC_PAPER_MASK, "LC_PAPER" } +# endif +# ifdef LC_NAME + , { LC_NAME, LC_NAME_MASK, "LC_NAME" } +# endif +# ifdef LC_ADDRESS + , { LC_ADDRESS, LC_ADDRESS_MASK, "LC_ADDRESS" } +# endif +# ifdef LC_TELEPHONE + , { LC_TELEPHONE, LC_TELEPHONE_MASK, "LC_TELEPHONE" } +# endif +# ifdef LC_MEASUREMENT + , { LC_MEASUREMENT, LC_MEASUREMENT_MASK, "LC_MEASUREMENT" } +# endif +# ifdef LC_IDENTIFICATION + , { LC_IDENTIFICATION, LC_IDENTIFICATION_MASK, "LC_IDENTIFICATION" } +# endif + }; + +#endif + +/* Test the gl_locale_name() function. */ +static void +test_locale_name (void) +{ + const char *name; + + /* Check that gl_locale_name returns non-NULL. */ + ASSERT (gl_locale_name (LC_MESSAGES, "LC_MESSAGES") != NULL); + + /* Get into a defined state, */ + setlocale (LC_ALL, "en_US.UTF-8"); +#if HAVE_NEWLOCALE + uselocale (LC_GLOBAL_LOCALE); +#endif + + /* Check that when all environment variables are unset, + gl_locale_name returns the default locale. */ + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + unsetenv ("LC_NUMERIC"); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), + gl_locale_name_default ()) == 0); + ASSERT (strcmp (gl_locale_name (LC_NUMERIC, "LC_NUMERIC"), + gl_locale_name_default ()) == 0); + + /* Check that an empty environment variable is treated like an unset + environment variable. */ + + setenv ("LC_ALL", "", 1); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), + gl_locale_name_default ()) == 0); + + unsetenv ("LC_ALL"); + setenv ("LC_CTYPE", "", 1); + unsetenv ("LC_MESSAGES"); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), + gl_locale_name_default ()) == 0); + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + setenv ("LC_MESSAGES", "", 1); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), + gl_locale_name_default ()) == 0); + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + setenv ("LANG", "", 1); + setlocale (LC_ALL, ""); + ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), + gl_locale_name_default ()) == 0); + + /* Check that LC_ALL overrides the others, and LANG is overridden by the + others. */ + + setenv ("LC_ALL", "C", 1); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), "C") == 0); + + unsetenv ("LC_ALL"); + setenv ("LC_CTYPE", "C", 1); + setenv ("LC_MESSAGES", "C", 1); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), "C") == 0); + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + setenv ("LANG", "C", 1); + setlocale (LC_ALL, ""); + ASSERT (strcmp (gl_locale_name (LC_MESSAGES, "LC_MESSAGES"), "C") == 0); + + /* Check mixed situations. */ + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + setenv ("LC_MESSAGES", "fr_FR.UTF-8", 1); + setenv ("LANG", "de_DE.UTF-8", 1); + if (setlocale (LC_ALL, "") != NULL) + { + name = gl_locale_name (LC_CTYPE, "LC_CTYPE"); + ASSERT (strcmp (name, "de_DE.UTF-8") == 0); + name = gl_locale_name (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "fr_FR.UTF-8") == 0); + } + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + setenv ("LC_MESSAGES", "fr_FR.UTF-8", 1); + unsetenv ("LANG"); + if (setlocale (LC_ALL, "") != NULL) + { + name = gl_locale_name (LC_CTYPE, "LC_CTYPE"); + ASSERT (strcmp (name, gl_locale_name_default ()) == 0); + name = gl_locale_name (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "fr_FR.UTF-8") == 0); + } + +#if HAVE_NEWLOCALE + /* Check that gl_locale_name considers the thread locale. */ + { + locale_t locale = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", NULL); + if (locale != NULL) + { + uselocale (locale); + name = gl_locale_name (LC_CTYPE, "LC_CTYPE"); + ASSERT (strcmp (name, "fr_FR.UTF-8") == 0); + name = gl_locale_name (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "fr_FR.UTF-8") == 0); + } + } + + /* Check that gl_locale_name distinguishes different categories of the + thread locale, and that the name is the right one for each. */ + { + unsigned int i; + + for (i = 0; i < SIZEOF (categories); i++) + { + int category_mask = categories[i].mask; + locale_t locale = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", NULL); + if (locale != NULL) + { + locale = newlocale (category_mask, "de_DE.UTF-8", locale); + if (locale != NULL) + { + unsigned int j; + + uselocale (locale); + for (j = 0; j < SIZEOF (categories); j++) + { + const char *name_j = + gl_locale_name (categories[j].cat, categories[j].string); + if (j == i) + ASSERT (strcmp (name_j, "de_DE.UTF-8") == 0); + else + ASSERT (strcmp (name_j, "fr_FR.UTF-8") == 0); + } + } + } + } + } +#endif +} + +/* Test the gl_locale_name_thread() function. */ +static void +test_locale_name_thread (void) +{ + /* Get into a defined state, */ + setlocale (LC_ALL, "en_US.UTF-8"); + +#if HAVE_NEWLOCALE + /* Check that gl_locale_name_thread returns NULL when no thread locale is + set. */ + uselocale (LC_GLOBAL_LOCALE); + ASSERT (gl_locale_name_thread (LC_CTYPE, "LC_CTYPE") == NULL); + ASSERT (gl_locale_name_thread (LC_MESSAGES, "LC_MESSAGES") == NULL); + + /* Check that gl_locale_name_thread considers the thread locale. */ + { + locale_t locale = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", NULL); + if (locale != NULL) + { + const char *name; + + uselocale (locale); + name = gl_locale_name_thread (LC_CTYPE, "LC_CTYPE"); + ASSERT (strcmp (name, "fr_FR.UTF-8") == 0); + name = gl_locale_name_thread (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "fr_FR.UTF-8") == 0); + } + } + + /* Check that gl_locale_name_thread distinguishes different categories of the + thread locale, and that the name is the right one for each. */ + { + unsigned int i; + + for (i = 0; i < SIZEOF (categories); i++) + { + int category_mask = categories[i].mask; + locale_t locale = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", NULL); + if (locale != NULL) + { + locale = newlocale (category_mask, "de_DE.UTF-8", locale); + if (locale != NULL) + { + unsigned int j; + + uselocale (locale); + for (j = 0; j < SIZEOF (categories); j++) + { + const char *name_j = + gl_locale_name_thread (categories[j].cat, + categories[j].string); + if (j == i) + ASSERT (strcmp (name_j, "de_DE.UTF-8") == 0); + else + ASSERT (strcmp (name_j, "fr_FR.UTF-8") == 0); + } + } + } + } + } + + /* Check that gl_locale_name_thread returns a string that is allocated with + indefinite extent. */ + { + /* Try many locale names in turn, in order to defeat possible caches. */ + static const char * const choices[] = + { + "C", + "POSIX", + "af_ZA", + "af_ZA.UTF-8", + "am_ET", + "am_ET.UTF-8", + "be_BY", + "be_BY.UTF-8", + "bg_BG", + "bg_BG.UTF-8", + "ca_ES", + "ca_ES.UTF-8", + "cs_CZ", + "cs_CZ.UTF-8", + "da_DK", + "da_DK.UTF-8", + "de_AT", + "de_AT.UTF-8", + "de_CH", + "de_CH.UTF-8", + "de_DE", + "de_DE.UTF-8", + "el_GR", + "el_GR.UTF-8", + "en_AU", + "en_AU.UTF-8", + "en_CA", + "en_CA.UTF-8", + "en_GB", + "en_GB.UTF-8", + "en_IE", + "en_IE.UTF-8", + "en_NZ", + "en_NZ.UTF-8", + "en_US", + "en_US.UTF-8", + "es_ES", + "es_ES.UTF-8", + "et_EE", + "et_EE.UTF-8", + "eu_ES", + "eu_ES.UTF-8", + "fi_FI", + "fi_FI.UTF-8", + "fr_BE", + "fr_BE.UTF-8", + "fr_CA", + "fr_CA.UTF-8", + "fr_CH", + "fr_CH.UTF-8", + "fr_FR", + "fr_FR.UTF-8", + "he_IL", + "he_IL.UTF-8", + "hr_HR", + "hr_HR.UTF-8", + "hu_HU", + "hu_HU.UTF-8", + "hy_AM", + "is_IS", + "is_IS.UTF-8", + "it_CH", + "it_CH.UTF-8", + "it_IT", + "it_IT.UTF-8", + "ja_JP.UTF-8", + "kk_KZ", + "kk_KZ.UTF-8", + "ko_KR.UTF-8", + "lt_LT", + "lt_LT.UTF-8", + "nl_BE", + "nl_BE.UTF-8", + "nl_NL", + "nl_NL.UTF-8", + "no_NO", + "no_NO.UTF-8", + "pl_PL", + "pl_PL.UTF-8", + "pt_BR", + "pt_BR.UTF-8", + "pt_PT", + "pt_PT.UTF-8", + "ro_RO", + "ro_RO.UTF-8", + "ru_RU", + "ru_RU.UTF-8", + "sk_SK", + "sk_SK.UTF-8", + "sl_SI", + "sl_SI.UTF-8", + "sv_SE", + "sv_SE.UTF-8", + "tr_TR", + "tr_TR.UTF-8", + "uk_UA", + "uk_UA.UTF-8", + "zh_CN", + "zh_CN.UTF-8", + "zh_HK", + "zh_HK.UTF-8", + "zh_TW", + "zh_TW.UTF-8" + }; + /* Remember which locales are available. */ + unsigned char /* bool */ available[SIZEOF (choices)]; + /* Array of remembered results of gl_locale_name_thread. */ + const char *unsaved_names[SIZEOF (choices)][SIZEOF (categories)]; + /* Array of remembered results of gl_locale_name_thread, stored in safe + memory. */ + char *saved_names[SIZEOF (choices)][SIZEOF (categories)]; + unsigned int j; + + for (j = 0; j < SIZEOF (choices); j++) + { + locale_t locale = newlocale (LC_ALL_MASK, choices[j], NULL); + available[j] = (locale != NULL); + if (locale != NULL) + { + unsigned int i; + + uselocale (locale); + for (i = 0; i < SIZEOF (categories); i++) + { + unsaved_names[j][i] = gl_locale_name_thread (categories[i].cat, categories[i].string); + saved_names[j][i] = strdup (unsaved_names[j][i]); + } + uselocale (LC_GLOBAL_LOCALE); + freelocale (locale); + } + } + /* Verify the unsaved_names are still valid. */ + for (j = 0; j < SIZEOF (choices); j++) + if (available[j]) + { + unsigned int i; + + for (i = 0; i < SIZEOF (categories); i++) + ASSERT (strcmp (unsaved_names[j][i], saved_names[j][i]) == 0); + } + /* Allocate many locales, without freeing them. This is an attempt at + overwriting as much of the previously allocated memory as possible. */ + for (j = SIZEOF (choices); j > 0; ) + { + j--; + if (available[j]) + { + locale_t locale = newlocale (LC_ALL_MASK, choices[j], NULL); + unsigned int i; + + ASSERT (locale != NULL); + uselocale (locale); + for (i = 0; i < SIZEOF (categories); i++) + { + const char *name = gl_locale_name_thread (categories[i].cat, categories[i].string); + ASSERT (strcmp (unsaved_names[j][i], name) == 0); + } + uselocale (LC_GLOBAL_LOCALE); + } + } + /* Verify the unsaved_names are still valid. */ + for (j = 0; j < SIZEOF (choices); j++) + if (available[j]) + { + unsigned int i; + + for (i = 0; i < SIZEOF (categories); i++) + ASSERT (strcmp (unsaved_names[j][i], saved_names[j][i]) == 0); + } + } +#else + /* Check that gl_locale_name_thread always returns NULL. */ + ASSERT (gl_locale_name_thread (LC_CTYPE, "LC_CTYPE") == NULL); + ASSERT (gl_locale_name_thread (LC_MESSAGES, "LC_MESSAGES") == NULL); +#endif +} + +/* Test the gl_locale_name_posix() function. */ +static void +test_locale_name_posix (void) +{ + const char *name; + + /* Get into a defined state, */ + setlocale (LC_ALL, "en_US.UTF-8"); +#if HAVE_NEWLOCALE + uselocale (LC_GLOBAL_LOCALE); +#endif + + /* Check that when all environment variables are unset, + gl_locale_name_posix returns either NULL or the default locale. */ + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + unsetenv ("LC_NUMERIC"); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0); + name = gl_locale_name_posix (LC_NUMERIC, "LC_NUMERIC"); + ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0); + + /* Check that an empty environment variable is treated like an unset + environment variable. */ + + setenv ("LC_ALL", "", 1); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0); + + unsetenv ("LC_ALL"); + setenv ("LC_CTYPE", "", 1); + unsetenv ("LC_MESSAGES"); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0); + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + setenv ("LC_MESSAGES", "", 1); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0); + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + setenv ("LANG", "", 1); + setlocale (LC_ALL, ""); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0); + + /* Check that LC_ALL overrides the others, and LANG is overridden by the + others. */ + + setenv ("LC_ALL", "C", 1); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "C") == 0); + + unsetenv ("LC_ALL"); + setenv ("LC_CTYPE", "C", 1); + setenv ("LC_MESSAGES", "C", 1); + unsetenv ("LANG"); + setlocale (LC_ALL, ""); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "C") == 0); + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + setenv ("LANG", "C", 1); + setlocale (LC_ALL, ""); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "C") == 0); + + /* Check mixed situations. */ + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + setenv ("LC_MESSAGES", "fr_FR.UTF-8", 1); + setenv ("LANG", "de_DE.UTF-8", 1); + if (setlocale (LC_ALL, "") != NULL) + { + name = gl_locale_name_posix (LC_CTYPE, "LC_CTYPE"); + ASSERT (strcmp (name, "de_DE.UTF-8") == 0); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "fr_FR.UTF-8") == 0); + } + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + setenv ("LC_MESSAGES", "fr_FR.UTF-8", 1); + unsetenv ("LANG"); + if (setlocale (LC_ALL, "") != NULL) + { + name = gl_locale_name_posix (LC_CTYPE, "LC_CTYPE"); + ASSERT (name == NULL || strcmp (name, gl_locale_name_default ()) == 0); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "fr_FR.UTF-8") == 0); + } + +#if HAVE_NEWLOCALE + /* Check that gl_locale_name_posix ignores the thread locale. */ + { + locale_t locale = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", NULL); + if (locale != NULL) + { + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + setenv ("LANG", "C", 1); + setlocale (LC_ALL, ""); + uselocale (locale); + name = gl_locale_name_posix (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "C") == 0); + } + } +#endif +} + +/* Test the gl_locale_name_environ() function. */ +static void +test_locale_name_environ (void) +{ + const char *name; + + /* Get into a defined state, */ + setlocale (LC_ALL, "en_US.UTF-8"); +#if HAVE_NEWLOCALE + uselocale (LC_GLOBAL_LOCALE); +#endif + + /* Check that when all environment variables are unset, + gl_locale_name_environ returns NULL. */ + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + unsetenv ("LC_NUMERIC"); + unsetenv ("LANG"); + ASSERT (gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES") == NULL); + ASSERT (gl_locale_name_environ (LC_NUMERIC, "LC_NUMERIC") == NULL); + + /* Check that an empty environment variable is treated like an unset + environment variable. */ + + setenv ("LC_ALL", "", 1); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + unsetenv ("LANG"); + ASSERT (gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES") == NULL); + + unsetenv ("LC_ALL"); + setenv ("LC_CTYPE", "", 1); + unsetenv ("LC_MESSAGES"); + unsetenv ("LANG"); + ASSERT (gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES") == NULL); + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + setenv ("LC_MESSAGES", "", 1); + unsetenv ("LANG"); + ASSERT (gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES") == NULL); + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + setenv ("LANG", "", 1); + ASSERT (gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES") == NULL); + + /* Check that LC_ALL overrides the others, and LANG is overridden by the + others. */ + + setenv ("LC_ALL", "C", 1); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + unsetenv ("LANG"); + name = gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "C") == 0); + + unsetenv ("LC_ALL"); + setenv ("LC_CTYPE", "C", 1); + setenv ("LC_MESSAGES", "C", 1); + unsetenv ("LANG"); + name = gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "C") == 0); + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + setenv ("LANG", "C", 1); + name = gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "C") == 0); + + /* Check mixed situations. */ + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + setenv ("LC_MESSAGES", "fr_FR.UTF-8", 1); + setenv ("LANG", "de_DE.UTF-8", 1); + name = gl_locale_name_environ (LC_CTYPE, "LC_CTYPE"); + ASSERT (strcmp (name, "de_DE.UTF-8") == 0); + name = gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "fr_FR.UTF-8") == 0); + + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + setenv ("LC_MESSAGES", "fr_FR.UTF-8", 1); + unsetenv ("LANG"); + name = gl_locale_name_environ (LC_CTYPE, "LC_CTYPE"); + ASSERT (name == NULL); + name = gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "fr_FR.UTF-8") == 0); + +#if HAVE_NEWLOCALE + /* Check that gl_locale_name_environ ignores the thread locale. */ + { + locale_t locale = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", NULL); + if (locale != NULL) + { + unsetenv ("LC_ALL"); + unsetenv ("LC_CTYPE"); + unsetenv ("LC_MESSAGES"); + setenv ("LANG", "C", 1); + setlocale (LC_ALL, ""); + uselocale (locale); + name = gl_locale_name_environ (LC_MESSAGES, "LC_MESSAGES"); + ASSERT (strcmp (name, "C") == 0); + } + } +#endif +} + +/* Test the gl_locale_name_default() function. */ +static void +test_locale_name_default (void) +{ + const char *name = gl_locale_name_default (); + + ASSERT (name != NULL); + + /* Only Mac OS X and Windows have a facility for the user to set the default + locale. */ +#if !((defined __APPLE__ && defined __MACH__) || (defined _WIN32 || defined __WIN32__ || defined __CYGWIN__)) + ASSERT (strcmp (name, "C") == 0); +#endif + +#if HAVE_NEWLOCALE + /* Check that gl_locale_name_default ignores the thread locale. */ + { + locale_t locale = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", NULL); + if (locale != NULL) + { + uselocale (locale); + ASSERT (strcmp (gl_locale_name_default (), name) == 0); + } + } +#endif +} + +int +main () +{ + test_locale_name (); + test_locale_name_thread (); + test_locale_name_posix (); + test_locale_name_environ (); + test_locale_name_default (); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-lock.c b/gettext-tools/gnulib-tests/test-lock.c new file mode 100644 index 0000000..fd2ed26 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-lock.c @@ -0,0 +1,601 @@ +/* Test of locking in multithreaded situations. + Copyright (C) 2005, 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2005. */ + +#include <config.h> + +#if USE_POSIX_THREADS || USE_SOLARIS_THREADS || USE_PTH_THREADS || USE_WINDOWS_THREADS + +#if USE_POSIX_THREADS +# define TEST_POSIX_THREADS 1 +#endif +#if USE_SOLARIS_THREADS +# define TEST_SOLARIS_THREADS 1 +#endif +#if USE_PTH_THREADS +# define TEST_PTH_THREADS 1 +#endif +#if USE_WINDOWS_THREADS +# define TEST_WINDOWS_THREADS 1 +#endif + +/* Whether to enable locking. + Uncomment this to get a test program without locking, to verify that + it crashes. */ +#define ENABLE_LOCKING 1 + +/* Which tests to perform. + Uncomment some of these, to verify that all tests crash if no locking + is enabled. */ +#define DO_TEST_LOCK 1 +#define DO_TEST_RWLOCK 1 +#define DO_TEST_RECURSIVE_LOCK 1 +#define DO_TEST_ONCE 1 + +/* Whether to help the scheduler through explicit yield(). + Uncomment this to see if the operating system has a fair scheduler. */ +#define EXPLICIT_YIELD 1 + +/* Whether to print debugging messages. */ +#define ENABLE_DEBUGGING 0 + +/* Number of simultaneous threads. */ +#define THREAD_COUNT 10 + +/* Number of operations performed in each thread. + This is quite high, because with a smaller count, say 5000, we often get + an "OK" result even without ENABLE_LOCKING (on Linux/x86). */ +#define REPEAT_COUNT 50000 + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#if !ENABLE_LOCKING +# undef USE_POSIX_THREADS +# undef USE_SOLARIS_THREADS +# undef USE_PTH_THREADS +# undef USE_WINDOWS_THREADS +#endif +#include "glthread/lock.h" + +#if !ENABLE_LOCKING +# if TEST_POSIX_THREADS +# define USE_POSIX_THREADS 1 +# endif +# if TEST_SOLARIS_THREADS +# define USE_SOLARIS_THREADS 1 +# endif +# if TEST_PTH_THREADS +# define USE_PTH_THREADS 1 +# endif +# if TEST_WINDOWS_THREADS +# define USE_WINDOWS_THREADS 1 +# endif +#endif + +#include "glthread/thread.h" +#include "glthread/yield.h" + +#if ENABLE_DEBUGGING +# define dbgprintf printf +#else +# define dbgprintf if (0) printf +#endif + +#if EXPLICIT_YIELD +# define yield() gl_thread_yield () +#else +# define yield() +#endif + +#define ACCOUNT_COUNT 4 + +static int account[ACCOUNT_COUNT]; + +static int +random_account (void) +{ + return ((unsigned int) rand () >> 3) % ACCOUNT_COUNT; +} + +static void +check_accounts (void) +{ + int i, sum; + + sum = 0; + for (i = 0; i < ACCOUNT_COUNT; i++) + sum += account[i]; + if (sum != ACCOUNT_COUNT * 1000) + abort (); +} + + +/* ------------------- Test normal (non-recursive) locks ------------------- */ + +/* Test normal locks by having several bank accounts and several threads + which shuffle around money between the accounts and another thread + checking that all the money is still there. */ + +gl_lock_define_initialized(static, my_lock) + +static void * +lock_mutator_thread (void *arg) +{ + int repeat; + + for (repeat = REPEAT_COUNT; repeat > 0; repeat--) + { + int i1, i2, value; + + dbgprintf ("Mutator %p before lock\n", gl_thread_self_pointer ()); + gl_lock_lock (my_lock); + dbgprintf ("Mutator %p after lock\n", gl_thread_self_pointer ()); + + i1 = random_account (); + i2 = random_account (); + value = ((unsigned int) rand () >> 3) % 10; + account[i1] += value; + account[i2] -= value; + + dbgprintf ("Mutator %p before unlock\n", gl_thread_self_pointer ()); + gl_lock_unlock (my_lock); + dbgprintf ("Mutator %p after unlock\n", gl_thread_self_pointer ()); + + dbgprintf ("Mutator %p before check lock\n", gl_thread_self_pointer ()); + gl_lock_lock (my_lock); + check_accounts (); + gl_lock_unlock (my_lock); + dbgprintf ("Mutator %p after check unlock\n", gl_thread_self_pointer ()); + + yield (); + } + + dbgprintf ("Mutator %p dying.\n", gl_thread_self_pointer ()); + return NULL; +} + +static volatile int lock_checker_done; + +static void * +lock_checker_thread (void *arg) +{ + while (!lock_checker_done) + { + dbgprintf ("Checker %p before check lock\n", gl_thread_self_pointer ()); + gl_lock_lock (my_lock); + check_accounts (); + gl_lock_unlock (my_lock); + dbgprintf ("Checker %p after check unlock\n", gl_thread_self_pointer ()); + + yield (); + } + + dbgprintf ("Checker %p dying.\n", gl_thread_self_pointer ()); + return NULL; +} + +static void +test_lock (void) +{ + int i; + gl_thread_t checkerthread; + gl_thread_t threads[THREAD_COUNT]; + + /* Initialization. */ + for (i = 0; i < ACCOUNT_COUNT; i++) + account[i] = 1000; + lock_checker_done = 0; + + /* Spawn the threads. */ + checkerthread = gl_thread_create (lock_checker_thread, NULL); + for (i = 0; i < THREAD_COUNT; i++) + threads[i] = gl_thread_create (lock_mutator_thread, NULL); + + /* Wait for the threads to terminate. */ + for (i = 0; i < THREAD_COUNT; i++) + gl_thread_join (threads[i], NULL); + lock_checker_done = 1; + gl_thread_join (checkerthread, NULL); + check_accounts (); +} + + +/* ----------------- Test read-write (non-recursive) locks ----------------- */ + +/* Test read-write locks by having several bank accounts and several threads + which shuffle around money between the accounts and several other threads + that check that all the money is still there. */ + +gl_rwlock_define_initialized(static, my_rwlock) + +static void * +rwlock_mutator_thread (void *arg) +{ + int repeat; + + for (repeat = REPEAT_COUNT; repeat > 0; repeat--) + { + int i1, i2, value; + + dbgprintf ("Mutator %p before wrlock\n", gl_thread_self_pointer ()); + gl_rwlock_wrlock (my_rwlock); + dbgprintf ("Mutator %p after wrlock\n", gl_thread_self_pointer ()); + + i1 = random_account (); + i2 = random_account (); + value = ((unsigned int) rand () >> 3) % 10; + account[i1] += value; + account[i2] -= value; + + dbgprintf ("Mutator %p before unlock\n", gl_thread_self_pointer ()); + gl_rwlock_unlock (my_rwlock); + dbgprintf ("Mutator %p after unlock\n", gl_thread_self_pointer ()); + + yield (); + } + + dbgprintf ("Mutator %p dying.\n", gl_thread_self_pointer ()); + return NULL; +} + +static volatile int rwlock_checker_done; + +static void * +rwlock_checker_thread (void *arg) +{ + while (!rwlock_checker_done) + { + dbgprintf ("Checker %p before check rdlock\n", gl_thread_self_pointer ()); + gl_rwlock_rdlock (my_rwlock); + check_accounts (); + gl_rwlock_unlock (my_rwlock); + dbgprintf ("Checker %p after check unlock\n", gl_thread_self_pointer ()); + + yield (); + } + + dbgprintf ("Checker %p dying.\n", gl_thread_self_pointer ()); + return NULL; +} + +static void +test_rwlock (void) +{ + int i; + gl_thread_t checkerthreads[THREAD_COUNT]; + gl_thread_t threads[THREAD_COUNT]; + + /* Initialization. */ + for (i = 0; i < ACCOUNT_COUNT; i++) + account[i] = 1000; + rwlock_checker_done = 0; + + /* Spawn the threads. */ + for (i = 0; i < THREAD_COUNT; i++) + checkerthreads[i] = gl_thread_create (rwlock_checker_thread, NULL); + for (i = 0; i < THREAD_COUNT; i++) + threads[i] = gl_thread_create (rwlock_mutator_thread, NULL); + + /* Wait for the threads to terminate. */ + for (i = 0; i < THREAD_COUNT; i++) + gl_thread_join (threads[i], NULL); + rwlock_checker_done = 1; + for (i = 0; i < THREAD_COUNT; i++) + gl_thread_join (checkerthreads[i], NULL); + check_accounts (); +} + + +/* -------------------------- Test recursive locks -------------------------- */ + +/* Test recursive locks by having several bank accounts and several threads + which shuffle around money between the accounts (recursively) and another + thread checking that all the money is still there. */ + +gl_recursive_lock_define_initialized(static, my_reclock) + +static void +recshuffle (void) +{ + int i1, i2, value; + + dbgprintf ("Mutator %p before lock\n", gl_thread_self_pointer ()); + gl_recursive_lock_lock (my_reclock); + dbgprintf ("Mutator %p after lock\n", gl_thread_self_pointer ()); + + i1 = random_account (); + i2 = random_account (); + value = ((unsigned int) rand () >> 3) % 10; + account[i1] += value; + account[i2] -= value; + + /* Recursive with probability 0.5. */ + if (((unsigned int) rand () >> 3) % 2) + recshuffle (); + + dbgprintf ("Mutator %p before unlock\n", gl_thread_self_pointer ()); + gl_recursive_lock_unlock (my_reclock); + dbgprintf ("Mutator %p after unlock\n", gl_thread_self_pointer ()); +} + +static void * +reclock_mutator_thread (void *arg) +{ + int repeat; + + for (repeat = REPEAT_COUNT; repeat > 0; repeat--) + { + recshuffle (); + + dbgprintf ("Mutator %p before check lock\n", gl_thread_self_pointer ()); + gl_recursive_lock_lock (my_reclock); + check_accounts (); + gl_recursive_lock_unlock (my_reclock); + dbgprintf ("Mutator %p after check unlock\n", gl_thread_self_pointer ()); + + yield (); + } + + dbgprintf ("Mutator %p dying.\n", gl_thread_self_pointer ()); + return NULL; +} + +static volatile int reclock_checker_done; + +static void * +reclock_checker_thread (void *arg) +{ + while (!reclock_checker_done) + { + dbgprintf ("Checker %p before check lock\n", gl_thread_self_pointer ()); + gl_recursive_lock_lock (my_reclock); + check_accounts (); + gl_recursive_lock_unlock (my_reclock); + dbgprintf ("Checker %p after check unlock\n", gl_thread_self_pointer ()); + + yield (); + } + + dbgprintf ("Checker %p dying.\n", gl_thread_self_pointer ()); + return NULL; +} + +static void +test_recursive_lock (void) +{ + int i; + gl_thread_t checkerthread; + gl_thread_t threads[THREAD_COUNT]; + + /* Initialization. */ + for (i = 0; i < ACCOUNT_COUNT; i++) + account[i] = 1000; + reclock_checker_done = 0; + + /* Spawn the threads. */ + checkerthread = gl_thread_create (reclock_checker_thread, NULL); + for (i = 0; i < THREAD_COUNT; i++) + threads[i] = gl_thread_create (reclock_mutator_thread, NULL); + + /* Wait for the threads to terminate. */ + for (i = 0; i < THREAD_COUNT; i++) + gl_thread_join (threads[i], NULL); + reclock_checker_done = 1; + gl_thread_join (checkerthread, NULL); + check_accounts (); +} + + +/* ------------------------ Test once-only execution ------------------------ */ + +/* Test once-only execution by having several threads attempt to grab a + once-only task simultaneously (triggered by releasing a read-write lock). */ + +gl_once_define(static, fresh_once) +static int ready[THREAD_COUNT]; +static gl_lock_t ready_lock[THREAD_COUNT]; +#if ENABLE_LOCKING +static gl_rwlock_t fire_signal[REPEAT_COUNT]; +#else +static volatile int fire_signal_state; +#endif +static gl_once_t once_control; +static int performed; +gl_lock_define_initialized(static, performed_lock) + +static void +once_execute (void) +{ + gl_lock_lock (performed_lock); + performed++; + gl_lock_unlock (performed_lock); +} + +static void * +once_contender_thread (void *arg) +{ + int id = (int) (long) arg; + int repeat; + + for (repeat = 0; repeat <= REPEAT_COUNT; repeat++) + { + /* Tell the main thread that we're ready. */ + gl_lock_lock (ready_lock[id]); + ready[id] = 1; + gl_lock_unlock (ready_lock[id]); + + if (repeat == REPEAT_COUNT) + break; + + dbgprintf ("Contender %p waiting for signal for round %d\n", + gl_thread_self_pointer (), repeat); +#if ENABLE_LOCKING + /* Wait for the signal to go. */ + gl_rwlock_rdlock (fire_signal[repeat]); + /* And don't hinder the others (if the scheduler is unfair). */ + gl_rwlock_unlock (fire_signal[repeat]); +#else + /* Wait for the signal to go. */ + while (fire_signal_state <= repeat) + yield (); +#endif + dbgprintf ("Contender %p got the signal for round %d\n", + gl_thread_self_pointer (), repeat); + + /* Contend for execution. */ + gl_once (once_control, once_execute); + } + + return NULL; +} + +static void +test_once (void) +{ + int i, repeat; + gl_thread_t threads[THREAD_COUNT]; + + /* Initialize all variables. */ + for (i = 0; i < THREAD_COUNT; i++) + { + ready[i] = 0; + gl_lock_init (ready_lock[i]); + } +#if ENABLE_LOCKING + for (i = 0; i < REPEAT_COUNT; i++) + gl_rwlock_init (fire_signal[i]); +#else + fire_signal_state = 0; +#endif + + /* Block all fire_signals. */ + for (i = REPEAT_COUNT-1; i >= 0; i--) + gl_rwlock_wrlock (fire_signal[i]); + + /* Spawn the threads. */ + for (i = 0; i < THREAD_COUNT; i++) + threads[i] = gl_thread_create (once_contender_thread, (void *) (long) i); + + for (repeat = 0; repeat <= REPEAT_COUNT; repeat++) + { + /* Wait until every thread is ready. */ + dbgprintf ("Main thread before synchronizing for round %d\n", repeat); + for (;;) + { + int ready_count = 0; + for (i = 0; i < THREAD_COUNT; i++) + { + gl_lock_lock (ready_lock[i]); + ready_count += ready[i]; + gl_lock_unlock (ready_lock[i]); + } + if (ready_count == THREAD_COUNT) + break; + yield (); + } + dbgprintf ("Main thread after synchronizing for round %d\n", repeat); + + if (repeat > 0) + { + /* Check that exactly one thread executed the once_execute() + function. */ + if (performed != 1) + abort (); + } + + if (repeat == REPEAT_COUNT) + break; + + /* Preparation for the next round: Initialize once_control. */ + memcpy (&once_control, &fresh_once, sizeof (gl_once_t)); + + /* Preparation for the next round: Reset the performed counter. */ + performed = 0; + + /* Preparation for the next round: Reset the ready flags. */ + for (i = 0; i < THREAD_COUNT; i++) + { + gl_lock_lock (ready_lock[i]); + ready[i] = 0; + gl_lock_unlock (ready_lock[i]); + } + + /* Signal all threads simultaneously. */ + dbgprintf ("Main thread giving signal for round %d\n", repeat); +#if ENABLE_LOCKING + gl_rwlock_unlock (fire_signal[repeat]); +#else + fire_signal_state = repeat + 1; +#endif + } + + /* Wait for the threads to terminate. */ + for (i = 0; i < THREAD_COUNT; i++) + gl_thread_join (threads[i], NULL); +} + + +/* -------------------------------------------------------------------------- */ + +int +main () +{ +#if TEST_PTH_THREADS + if (!pth_init ()) + abort (); +#endif + +#if DO_TEST_LOCK + printf ("Starting test_lock ..."); fflush (stdout); + test_lock (); + printf (" OK\n"); fflush (stdout); +#endif +#if DO_TEST_RWLOCK + printf ("Starting test_rwlock ..."); fflush (stdout); + test_rwlock (); + printf (" OK\n"); fflush (stdout); +#endif +#if DO_TEST_RECURSIVE_LOCK + printf ("Starting test_recursive_lock ..."); fflush (stdout); + test_recursive_lock (); + printf (" OK\n"); fflush (stdout); +#endif +#if DO_TEST_ONCE + printf ("Starting test_once ..."); fflush (stdout); + test_once (); + printf (" OK\n"); fflush (stdout); +#endif + + return 0; +} + +#else + +/* No multithreading available. */ + +#include <stdio.h> + +int +main () +{ + fputs ("Skipping test: multithreading not enabled\n", stderr); + return 77; +} + +#endif diff --git a/gettext-tools/gnulib-tests/test-lseek.c b/gettext-tools/gnulib-tests/test-lseek.c new file mode 100644 index 0000000..fc37ec2 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-lseek.c @@ -0,0 +1,109 @@ +/* Test of lseek() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake, 2007. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (lseek, off_t, (int, off_t, int)); + +#include <errno.h> + +#include "macros.h" + +/* ARGC must be 2; *ARGV[1] is '0' if stdin and stdout are files, '1' + if they are pipes, and '2' if they are closed. Check for proper + semantics of lseek. */ +int +main (int argc, char **argv) +{ + if (argc != 2) + return 2; + switch (*argv[1]) + { + case '0': /* regular files */ + ASSERT (lseek (0, (off_t)2, SEEK_SET) == 2); + ASSERT (lseek (0, (off_t)-4, SEEK_CUR) == -1); + ASSERT (errno == EINVAL); + errno = 0; +#if ! defined __BEOS__ + /* POSIX says that the last lseek call, when failing, does not change + the current offset. But BeOS sets it to 0. */ + ASSERT (lseek (0, (off_t)0, SEEK_CUR) == 2); +#endif +#if 0 /* leads to SIGSYS on IRIX 6.5 */ + ASSERT (lseek (0, (off_t)0, (SEEK_SET | SEEK_CUR | SEEK_END) + 1) == -1); + ASSERT (errno == EINVAL); +#endif + ASSERT (lseek (1, (off_t)2, SEEK_SET) == 2); + errno = 0; + ASSERT (lseek (1, (off_t)-4, SEEK_CUR) == -1); + ASSERT (errno == EINVAL); + errno = 0; +#if ! defined __BEOS__ + /* POSIX says that the last lseek call, when failing, does not change + the current offset. But BeOS sets it to 0. */ + ASSERT (lseek (1, (off_t)0, SEEK_CUR) == 2); +#endif +#if 0 /* leads to SIGSYS on IRIX 6.5 */ + ASSERT (lseek (1, (off_t)0, (SEEK_SET | SEEK_CUR | SEEK_END) + 1) == -1); + ASSERT (errno == EINVAL); +#endif + break; + + case '1': /* pipes */ + errno = 0; + ASSERT (lseek (0, (off_t)0, SEEK_CUR) == -1); + ASSERT (errno == ESPIPE); + errno = 0; + ASSERT (lseek (1, (off_t)0, SEEK_CUR) == -1); + ASSERT (errno == ESPIPE); + break; + + case '2': /* closed */ + /* Explicitly close file descriptors 0 and 1. The <&- and >&- in the + invoking shell are not enough on HP-UX. */ + close (0); + close (1); + + errno = 0; + ASSERT (lseek (0, (off_t)0, SEEK_CUR) == -1); + ASSERT (errno == EBADF); + + errno = 0; + ASSERT (lseek (1, (off_t)0, SEEK_CUR) == -1); + ASSERT (errno == EBADF); + + /* Test behaviour for invalid file descriptors. */ + errno = 0; + ASSERT (lseek (-1, (off_t)0, SEEK_CUR) == -1); + ASSERT (errno == EBADF); + + close (99); + errno = 0; + ASSERT (lseek (99, (off_t)0, SEEK_CUR) == -1); + ASSERT (errno == EBADF); + + break; + + default: + return 1; + } + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-lseek.sh b/gettext-tools/gnulib-tests/test-lseek.sh new file mode 100755 index 0000000..47237b5 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-lseek.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +tmpfiles= +trap 'rm -fr $tmpfiles' 1 2 3 15 + +tmpfiles=t-lseek.tmp +# seekable files +./test-lseek${EXEEXT} 0 < "$srcdir/test-lseek.sh" > t-lseek.tmp || exit 1 + +# pipes +echo hi | { ./test-lseek${EXEEXT} 1; echo $? > t-lseek.tmp; cat > /dev/null; } | cat +test "`cat t-lseek.tmp`" = "0" || exit 1 + +# closed descriptors +./test-lseek${EXEEXT} 2 <&- >&- || exit 1 + +rm -rf $tmpfiles +exit 0 diff --git a/gettext-tools/gnulib-tests/test-lstat.c b/gettext-tools/gnulib-tests/test-lstat.c new file mode 100644 index 0000000..eab2ad4 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-lstat.c @@ -0,0 +1,60 @@ +/* Test of lstat() function. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Simon Josefsson, 2008; and Eric Blake, 2009. */ + +#include <config.h> + +#include <sys/stat.h> + +/* Caution: lstat may be a function-like macro. Although this + signature check must pass, it may be the signature of the real (and + broken) lstat rather than rpl_lstat. Most code should not use the + address of lstat. */ +#include "signature.h" +SIGNATURE_CHECK (lstat, int, (char const *, struct stat *)); + +#include <fcntl.h> +#include <errno.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include "same-inode.h" +#include "ignore-value.h" +#include "macros.h" + +#define BASE "test-lstat.t" + +#include "test-lstat.h" + +/* Wrapper around lstat, which works even if lstat is a function-like + macro, where test_lstat_func(lstat) would do the wrong thing. */ +static int +do_lstat (char const *name, struct stat *st) +{ + return lstat (name, st); +} + +int +main (void) +{ + /* Remove any leftovers from a previous partial run. */ + ignore_value (system ("rm -rf " BASE "*")); + + return test_lstat_func (do_lstat, true); +} diff --git a/gettext-tools/gnulib-tests/test-lstat.h b/gettext-tools/gnulib-tests/test-lstat.h new file mode 100644 index 0000000..45ca3bf --- /dev/null +++ b/gettext-tools/gnulib-tests/test-lstat.h @@ -0,0 +1,116 @@ +/* Test of lstat() function. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Simon Josefsson, 2008; and Eric Blake, 2009. */ + +/* This file is designed to test both lstat(n,buf) and + fstatat(AT_FDCWD,n,buf,AT_SYMLINK_NOFOLLOW). FUNC is the function + to test. Assumes that BASE and ASSERT are already defined, and + that appropriate headers are already included. If PRINT, warn + before skipping symlink tests with status 77. */ + +static int +test_lstat_func (int (*func) (char const *, struct stat *), bool print) +{ + struct stat st1; + struct stat st2; + + /* Test for common directories. */ + ASSERT (func (".", &st1) == 0); + ASSERT (func ("./", &st2) == 0); + ASSERT (SAME_INODE (st1, st2)); + ASSERT (S_ISDIR (st1.st_mode)); + ASSERT (S_ISDIR (st2.st_mode)); + ASSERT (func ("/", &st1) == 0); + ASSERT (func ("///", &st2) == 0); + ASSERT (SAME_INODE (st1, st2)); + ASSERT (S_ISDIR (st1.st_mode)); + ASSERT (S_ISDIR (st2.st_mode)); + ASSERT (func ("..", &st1) == 0); + ASSERT (S_ISDIR (st1.st_mode)); + + /* Test for error conditions. */ + errno = 0; + ASSERT (func ("", &st1) == -1); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("nosuch", &st1) == -1); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("nosuch/", &st1) == -1); + ASSERT (errno == ENOENT); + + ASSERT (close (creat (BASE "file", 0600)) == 0); + ASSERT (func (BASE "file", &st1) == 0); + ASSERT (S_ISREG (st1.st_mode)); + errno = 0; + ASSERT (func (BASE "file/", &st1) == -1); + ASSERT (errno == ENOTDIR); + + /* Now for some symlink tests, where supported. We set up: + link1 -> directory + link2 -> file + link3 -> dangling + link4 -> loop + then test behavior both with and without trailing slash. + */ + if (symlink (".", BASE "link1") != 0) + { + ASSERT (unlink (BASE "file") == 0); + if (print) + fputs ("skipping test: symlinks not supported on this file system\n", + stderr); + return 77; + } + ASSERT (symlink (BASE "file", BASE "link2") == 0); + ASSERT (symlink (BASE "nosuch", BASE "link3") == 0); + ASSERT (symlink (BASE "link4", BASE "link4") == 0); + + ASSERT (func (BASE "link1", &st1) == 0); + ASSERT (S_ISLNK (st1.st_mode)); + ASSERT (func (BASE "link1/", &st1) == 0); + ASSERT (stat (BASE "link1", &st2) == 0); + ASSERT (S_ISDIR (st1.st_mode)); + ASSERT (S_ISDIR (st2.st_mode)); + ASSERT (SAME_INODE (st1, st2)); + + ASSERT (func (BASE "link2", &st1) == 0); + ASSERT (S_ISLNK (st1.st_mode)); + errno = 0; + ASSERT (func (BASE "link2/", &st1) == -1); + ASSERT (errno == ENOTDIR); + + ASSERT (func (BASE "link3", &st1) == 0); + ASSERT (S_ISLNK (st1.st_mode)); + errno = 0; + ASSERT (func (BASE "link3/", &st1) == -1); + ASSERT (errno == ENOENT); + + ASSERT (func (BASE "link4", &st1) == 0); + ASSERT (S_ISLNK (st1.st_mode)); + errno = 0; + ASSERT (func (BASE "link4/", &st1) == -1); + ASSERT (errno == ELOOP); + + /* Cleanup. */ + ASSERT (unlink (BASE "file") == 0); + ASSERT (unlink (BASE "link1") == 0); + ASSERT (unlink (BASE "link2") == 0); + ASSERT (unlink (BASE "link3") == 0); + ASSERT (unlink (BASE "link4") == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-malloca.c b/gettext-tools/gnulib-tests/test-malloca.c new file mode 100644 index 0000000..6f94d0d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-malloca.c @@ -0,0 +1,62 @@ +/* Test of safe automatic memory allocation. + Copyright (C) 2005, 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2005. */ + +#include <config.h> + +#include "malloca.h" + +#include <stdlib.h> + +static void +do_allocation (int n) +{ + void *ptr = malloca (n); + freea (ptr); + safe_alloca (n); +} + +void (*func) (int) = do_allocation; + +int +main () +{ + int i; + + /* This slows down malloc a lot. */ + unsetenv ("MALLOC_PERTURB_"); + + /* Repeat a lot of times, to make sure there's no memory leak. */ + for (i = 0; i < 50000; i++) + { + /* Try various values. + n = 0 gave a crash on Alpha with gcc-2.5.8. + Some versions of Mac OS X have a stack size limit of 512 KB. */ + func (34); + func (134); + func (399); + func (510823); + func (129321); + func (0); + func (4070); + func (4095); + func (1); + func (16582); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-mbrtowc-w32-1.sh b/gettext-tools/gnulib-tests/test-mbrtowc-w32-1.sh new file mode 100755 index 0000000..3f12e44 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc-w32-1.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Test a CP1252 locale. +./test-mbrtowc-w32${EXEEXT} French_France 1252 diff --git a/gettext-tools/gnulib-tests/test-mbrtowc-w32-2.sh b/gettext-tools/gnulib-tests/test-mbrtowc-w32-2.sh new file mode 100755 index 0000000..9e1a765 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc-w32-2.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Test a CP1256 locale. +./test-mbrtowc-w32${EXEEXT} "Arabic_Saudi Arabia" 1256 diff --git a/gettext-tools/gnulib-tests/test-mbrtowc-w32-3.sh b/gettext-tools/gnulib-tests/test-mbrtowc-w32-3.sh new file mode 100755 index 0000000..782c2d0 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc-w32-3.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Test a CP932 locale. +./test-mbrtowc-w32${EXEEXT} Japanese_Japan 932 diff --git a/gettext-tools/gnulib-tests/test-mbrtowc-w32-4.sh b/gettext-tools/gnulib-tests/test-mbrtowc-w32-4.sh new file mode 100755 index 0000000..0630f30 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc-w32-4.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Test a CP950 locale. +./test-mbrtowc-w32${EXEEXT} Chinese_Taiwan 950 diff --git a/gettext-tools/gnulib-tests/test-mbrtowc-w32-5.sh b/gettext-tools/gnulib-tests/test-mbrtowc-w32-5.sh new file mode 100755 index 0000000..7d7faa9 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc-w32-5.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Test a CP936 locale. +./test-mbrtowc-w32${EXEEXT} Chinese_China 936 diff --git a/gettext-tools/gnulib-tests/test-mbrtowc-w32.c b/gettext-tools/gnulib-tests/test-mbrtowc-w32.c new file mode 100644 index 0000000..06f07aa --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc-w32.c @@ -0,0 +1,735 @@ +/* Test of conversion of multibyte character to wide character. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <wchar.h> + +#include <errno.h> +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ + +static int +test_one_locale (const char *name, int codepage) +{ + mbstate_t state; + wchar_t wc; + size_t ret; + +# if 1 + /* Portable code to set the locale. */ + { + char name_with_codepage[1024]; + + sprintf (name_with_codepage, "%s.%d", name, codepage); + + /* Set the locale. */ + if (setlocale (LC_ALL, name_with_codepage) == NULL) + return 77; + } +# else + /* Hacky way to set a locale.codepage combination that setlocale() refuses + to set. */ + { + /* Codepage of the current locale, set with setlocale(). + Not necessarily the same as GetACP(). */ + extern __declspec(dllimport) unsigned int __lc_codepage; + + /* Set the locale. */ + if (setlocale (LC_ALL, name) == NULL) + return 77; + + /* Clobber the codepage and MB_CUR_MAX, both set by setlocale(). */ + __lc_codepage = codepage; + switch (codepage) + { + case 1252: + case 1256: + MB_CUR_MAX = 1; + break; + case 932: + case 950: + case 936: + MB_CUR_MAX = 2; + break; + case 54936: + case 65001: + MB_CUR_MAX = 4; + break; + } + + /* Test whether the codepage is really available. */ + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, " ", 1, &state) == (size_t)(-1)) + return 77; + } +# endif + + /* Test zero-length input. */ + { + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "x", 0, &state); + /* gnulib's implementation returns (size_t)(-2). + The AIX 5.1 implementation returns (size_t)(-1). + glibc's implementation returns 0. */ + ASSERT (ret == (size_t)(-2) || ret == (size_t)(-1) || ret == 0); + ASSERT (mbsinit (&state)); + } + + /* Test NUL byte input. */ + { + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "", 1, &state); + ASSERT (ret == 0); + ASSERT (wc == 0); + ASSERT (mbsinit (&state)); + ret = mbrtowc (NULL, "", 1, &state); + ASSERT (ret == 0); + ASSERT (mbsinit (&state)); + } + + /* Test single-byte input. */ + { + int c; + char buf[1]; + + memset (&state, '\0', sizeof (mbstate_t)); + for (c = 0; c < 0x100; c++) + switch (c) + { + case '\t': case '\v': case '\f': + case ' ': case '!': case '"': case '#': case '%': + case '&': case '\'': case '(': case ')': case '*': + case '+': case ',': case '-': case '.': case '/': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case ':': case ';': case '<': case '=': case '>': + case '?': + case 'A': case 'B': case 'C': case 'D': case 'E': + case 'F': case 'G': case 'H': case 'I': case 'J': + case 'K': case 'L': case 'M': case 'N': case 'O': + case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': + case 'Z': + case '[': case '\\': case ']': case '^': case '_': + case 'a': case 'b': case 'c': case 'd': case 'e': + case 'f': case 'g': case 'h': case 'i': case 'j': + case 'k': case 'l': case 'm': case 'n': case 'o': + case 'p': case 'q': case 'r': case 's': case 't': + case 'u': case 'v': case 'w': case 'x': case 'y': + case 'z': case '{': case '|': case '}': case '~': + /* c is in the ISO C "basic character set". */ + buf[0] = c; + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, buf, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == c); + ASSERT (mbsinit (&state)); + ret = mbrtowc (NULL, buf, 1, &state); + ASSERT (ret == 1); + ASSERT (mbsinit (&state)); + break; + } + } + + /* Test special calling convention, passing a NULL pointer. */ + { + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, NULL, 5, &state); + ASSERT (ret == 0); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (mbsinit (&state)); + } + + switch (codepage) + { + case 1252: + /* Locale encoding is CP1252, an extension of ISO-8859-1. */ + { + char input[] = "B\374\337er"; /* "Büßer" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'B'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 1, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == (unsigned char) '\374'); + ASSERT (wc == 0x00FC); + ASSERT (mbsinit (&state)); + input[1] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 2, 3, &state); + ASSERT (ret == 1); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 2, 3, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == (unsigned char) '\337'); + ASSERT (wc == 0x00DF); + ASSERT (mbsinit (&state)); + input[2] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 2, &state); + ASSERT (ret == 1); + ASSERT (wc == 'e'); + ASSERT (mbsinit (&state)); + input[3] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 4, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'r'); + ASSERT (mbsinit (&state)); + } + return 0; + + case 1256: + /* Locale encoding is CP1256, not the same as ISO-8859-6. */ + { + char input[] = "x\302\341\346y"; /* "xآلوy" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'x'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 1, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == (unsigned char) '\302'); + ASSERT (wc == 0x0622); + ASSERT (mbsinit (&state)); + input[1] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 2, 3, &state); + ASSERT (ret == 1); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 2, 3, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == (unsigned char) '\341'); + ASSERT (wc == 0x0644); + ASSERT (mbsinit (&state)); + input[2] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 2, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == (unsigned char) '\346'); + ASSERT (wc == 0x0648); + ASSERT (mbsinit (&state)); + input[3] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 4, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'y'); + ASSERT (mbsinit (&state)); + } + return 0; + + case 932: + /* Locale encoding is CP932, similar to Shift_JIS. */ + { + char input[] = "<\223\372\226\173\214\352>"; /* "<日本語>" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == '<'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 2, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x65E5); + ASSERT (mbsinit (&state)); + input[1] = '\0'; + input[2] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[3] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 4, 4, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x672C); + ASSERT (mbsinit (&state)); + input[4] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 5, 3, &state); + ASSERT (ret == 2); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 5, 3, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x8A9E); + ASSERT (mbsinit (&state)); + input[5] = '\0'; + input[6] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 7, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == '>'); + ASSERT (mbsinit (&state)); + + /* Test some invalid input. */ + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\377", 1, &state); /* 0xFF */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\225\377", 2, &state); /* 0x95 0xFF */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + } + return 0; + + case 950: + /* Locale encoding is CP950, similar to Big5. */ + { + char input[] = "<\244\351\245\273\273\171>"; /* "<日本語>" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == '<'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 2, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x65E5); + ASSERT (mbsinit (&state)); + input[1] = '\0'; + input[2] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[3] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 4, 4, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x672C); + ASSERT (mbsinit (&state)); + input[4] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 5, 3, &state); + ASSERT (ret == 2); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 5, 3, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x8A9E); + ASSERT (mbsinit (&state)); + input[5] = '\0'; + input[6] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 7, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == '>'); + ASSERT (mbsinit (&state)); + + /* Test some invalid input. */ + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\377", 1, &state); /* 0xFF */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\225\377", 2, &state); /* 0x95 0xFF */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + } + return 0; + + case 936: + /* Locale encoding is CP936 = GBK, an extension of GB2312. */ + { + char input[] = "<\310\325\261\276\325\132>"; /* "<日本語>" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == '<'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 2, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x65E5); + ASSERT (mbsinit (&state)); + input[1] = '\0'; + input[2] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[3] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 4, 4, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x672C); + ASSERT (mbsinit (&state)); + input[4] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 5, 3, &state); + ASSERT (ret == 2); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 5, 3, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x8A9E); + ASSERT (mbsinit (&state)); + input[5] = '\0'; + input[6] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 7, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == '>'); + ASSERT (mbsinit (&state)); + + /* Test some invalid input. */ + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\377", 1, &state); /* 0xFF */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\225\377", 2, &state); /* 0x95 0xFF */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + } + return 0; + + case 54936: + /* Locale encoding is CP54936 = GB18030. */ + { + char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'B'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[1] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 2, 7, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x00FC); + ASSERT (mbsinit (&state)); + input[2] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 3, 6, &state); + ASSERT (ret == 4); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 6, &state); + ASSERT (ret == 4); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x00DF); + ASSERT (mbsinit (&state)); + input[3] = '\0'; + input[4] = '\0'; + input[5] = '\0'; + input[6] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 7, 2, &state); + ASSERT (ret == 1); + ASSERT (wc == 'e'); + ASSERT (mbsinit (&state)); + input[5] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 8, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'r'); + ASSERT (mbsinit (&state)); + + /* Test some invalid input. */ + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\377", 1, &state); /* 0xFF */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\225\377", 2, &state); /* 0x95 0xFF */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\201\045", 2, &state); /* 0x81 0x25 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\201\060\377", 3, &state); /* 0x81 0x30 0xFF */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\201\060\377\064", 4, &state); /* 0x81 0x30 0xFF 0x34 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\201\060\211\072", 4, &state); /* 0x81 0x30 0x89 0x3A */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + } + return 0; + + case 65001: + /* Locale encoding is CP65001 = UTF-8. */ + { + char input[] = "B\303\274\303\237er"; /* "Büßer" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'B'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[1] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 2, 5, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x00FC); + ASSERT (mbsinit (&state)); + input[2] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 3, 4, &state); + ASSERT (ret == 2); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 4, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (wc == 0x00DF); + ASSERT (mbsinit (&state)); + input[3] = '\0'; + input[4] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 5, 2, &state); + ASSERT (ret == 1); + ASSERT (wc == 'e'); + ASSERT (mbsinit (&state)); + input[5] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 6, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'r'); + ASSERT (mbsinit (&state)); + + /* Test some invalid input. */ + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\377", 1, &state); /* 0xFF */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\303\300", 2, &state); /* 0xC3 0xC0 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\343\300", 2, &state); /* 0xE3 0xC0 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\343\300\200", 3, &state); /* 0xE3 0xC0 0x80 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\343\200\300", 3, &state); /* 0xE3 0x80 0xC0 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\363\300", 2, &state); /* 0xF3 0xC0 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\363\300\200\200", 4, &state); /* 0xF3 0xC0 0x80 0x80 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\363\200\300", 3, &state); /* 0xF3 0x80 0xC0 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\363\200\300\200", 4, &state); /* 0xF3 0x80 0xC0 0x80 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "\363\200\200\300", 4, &state); /* 0xF3 0x80 0x80 0xC0 */ + ASSERT (ret == (size_t)-1); + ASSERT (errno == EILSEQ); + } + return 0; + + default: + return 1; + } +} + +int +main (int argc, char *argv[]) +{ + int codepage = atoi (argv[argc - 1]); + int result; + int i; + + result = 77; + for (i = 1; i < argc - 1; i++) + { + int ret = test_one_locale (argv[i], codepage); + + if (ret != 77) + result = ret; + } + + if (result == 77) + { + fprintf (stderr, "Skipping test: found no locale with codepage %d\n", + codepage); + } + return result; +} + +#else + +int +main (int argc, char *argv[]) +{ + fputs ("Skipping test: not a native Windows system\n", stderr); + return 77; +} + +#endif diff --git a/gettext-tools/gnulib-tests/test-mbrtowc.c b/gettext-tools/gnulib-tests/test-mbrtowc.c new file mode 100644 index 0000000..e8cdea0 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc.c @@ -0,0 +1,340 @@ +/* Test of conversion of multibyte character to wide character. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <wchar.h> + +#include "signature.h" +SIGNATURE_CHECK (mbrtowc, size_t, (wchar_t *, char const *, size_t, + mbstate_t *)); + +#include <locale.h> +#include <stdio.h> +#include <string.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + mbstate_t state; + wchar_t wc; + size_t ret; + + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + + /* Test zero-length input. */ + { + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "x", 0, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (mbsinit (&state)); + } + + /* Test NUL byte input. */ + { + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, "", 1, &state); + ASSERT (ret == 0); + ASSERT (wc == 0); + ASSERT (mbsinit (&state)); + ret = mbrtowc (NULL, "", 1, &state); + ASSERT (ret == 0); + ASSERT (mbsinit (&state)); + } + + /* Test single-byte input. */ + { + int c; + char buf[1]; + + memset (&state, '\0', sizeof (mbstate_t)); + for (c = 0; c < 0x100; c++) + switch (c) + { + case '\t': case '\v': case '\f': + case ' ': case '!': case '"': case '#': case '%': + case '&': case '\'': case '(': case ')': case '*': + case '+': case ',': case '-': case '.': case '/': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case ':': case ';': case '<': case '=': case '>': + case '?': + case 'A': case 'B': case 'C': case 'D': case 'E': + case 'F': case 'G': case 'H': case 'I': case 'J': + case 'K': case 'L': case 'M': case 'N': case 'O': + case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': + case 'Z': + case '[': case '\\': case ']': case '^': case '_': + case 'a': case 'b': case 'c': case 'd': case 'e': + case 'f': case 'g': case 'h': case 'i': case 'j': + case 'k': case 'l': case 'm': case 'n': case 'o': + case 'p': case 'q': case 'r': case 's': case 't': + case 'u': case 'v': case 'w': case 'x': case 'y': + case 'z': case '{': case '|': case '}': case '~': + /* c is in the ISO C "basic character set". */ + buf[0] = c; + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, buf, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == c); + ASSERT (mbsinit (&state)); + ret = mbrtowc (NULL, buf, 1, &state); + ASSERT (ret == 1); + ASSERT (mbsinit (&state)); + break; + } + } + + /* Test special calling convention, passing a NULL pointer. */ + { + memset (&state, '\0', sizeof (mbstate_t)); + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, NULL, 5, &state); + ASSERT (ret == 0); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (mbsinit (&state)); + } + + if (argc > 1) + switch (argv[1][0]) + { + case '1': + /* Locale encoding is ISO-8859-1 or ISO-8859-15. */ + { + char input[] = "B\374\337er"; /* "Büßer" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'B'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 1, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == (unsigned char) '\374'); + ASSERT (mbsinit (&state)); + input[1] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 2, 3, &state); + ASSERT (ret == 1); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 2, 3, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == (unsigned char) '\337'); + ASSERT (mbsinit (&state)); + input[2] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 2, &state); + ASSERT (ret == 1); + ASSERT (wc == 'e'); + ASSERT (mbsinit (&state)); + input[3] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 4, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'r'); + ASSERT (mbsinit (&state)); + } + return 0; + + case '2': + /* Locale encoding is UTF-8. */ + { + char input[] = "B\303\274\303\237er"; /* "Büßer" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'B'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[1] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 2, 5, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == EOF); + ASSERT (mbsinit (&state)); + input[2] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 3, 4, &state); + ASSERT (ret == 2); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 4, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (mbsinit (&state)); + input[3] = '\0'; + input[4] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 5, 2, &state); + ASSERT (ret == 1); + ASSERT (wc == 'e'); + ASSERT (mbsinit (&state)); + input[5] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 6, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'r'); + ASSERT (mbsinit (&state)); + } + return 0; + + case '3': + /* Locale encoding is EUC-JP. */ + { + char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == '<'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 2, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (mbsinit (&state)); + input[1] = '\0'; + input[2] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[3] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 4, 4, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == EOF); + ASSERT (mbsinit (&state)); + input[4] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 5, 3, &state); + ASSERT (ret == 2); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 5, 3, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (mbsinit (&state)); + input[5] = '\0'; + input[6] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 7, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == '>'); + ASSERT (mbsinit (&state)); + } + return 0; + + case '4': + /* Locale encoding is GB18030. */ + { + char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'B'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[1] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 2, 7, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == EOF); + ASSERT (mbsinit (&state)); + input[2] = '\0'; + + /* Test support of NULL first argument. */ + ret = mbrtowc (NULL, input + 3, 6, &state); + ASSERT (ret == 4); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 6, &state); + ASSERT (ret == 4); + ASSERT (wctob (wc) == EOF); + ASSERT (mbsinit (&state)); + input[3] = '\0'; + input[4] = '\0'; + input[5] = '\0'; + input[6] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 7, 2, &state); + ASSERT (ret == 1); + ASSERT (wc == 'e'); + ASSERT (mbsinit (&state)); + input[5] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 8, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'r'); + ASSERT (mbsinit (&state)); + } + return 0; + } + + return 1; +} diff --git a/gettext-tools/gnulib-tests/test-mbrtowc1.sh b/gettext-tools/gnulib-tests/test-mbrtowc1.sh new file mode 100755 index 0000000..3becba3 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc1.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test in an ISO-8859-1 or ISO-8859-15 locale. +: ${LOCALE_FR=fr_FR} +if test $LOCALE_FR = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no traditional french locale is installed" + else + echo "Skipping test: no traditional french locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_FR \ +./test-mbrtowc${EXEEXT} 1 diff --git a/gettext-tools/gnulib-tests/test-mbrtowc2.sh b/gettext-tools/gnulib-tests/test-mbrtowc2.sh new file mode 100755 index 0000000..0405aba --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc2.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test whether a specific UTF-8 locale is installed. +: ${LOCALE_FR_UTF8=fr_FR.UTF-8} +if test $LOCALE_FR_UTF8 = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no french Unicode locale is installed" + else + echo "Skipping test: no french Unicode locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_FR_UTF8 \ +./test-mbrtowc${EXEEXT} 2 diff --git a/gettext-tools/gnulib-tests/test-mbrtowc3.sh b/gettext-tools/gnulib-tests/test-mbrtowc3.sh new file mode 100755 index 0000000..63a89a2 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc3.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test whether a specific EUC-JP locale is installed. +: ${LOCALE_JA=ja_JP} +if test $LOCALE_JA = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no traditional japanese locale is installed" + else + echo "Skipping test: no traditional japanese locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_JA \ +./test-mbrtowc${EXEEXT} 3 diff --git a/gettext-tools/gnulib-tests/test-mbrtowc4.sh b/gettext-tools/gnulib-tests/test-mbrtowc4.sh new file mode 100755 index 0000000..b299a2c --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbrtowc4.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test whether a specific GB18030 locale is installed. +: ${LOCALE_ZH_CN=zh_CN.GB18030} +if test $LOCALE_ZH_CN = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no transitional chinese locale is installed" + else + echo "Skipping test: no transitional chinese locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_ZH_CN \ +./test-mbrtowc${EXEEXT} 4 diff --git a/gettext-tools/gnulib-tests/test-mbsinit.c b/gettext-tools/gnulib-tests/test-mbsinit.c new file mode 100644 index 0000000..56548db --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsinit.c @@ -0,0 +1,55 @@ +/* Test of test for initial conversion state. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <wchar.h> + +#include "signature.h" +SIGNATURE_CHECK (mbsinit, int, (const mbstate_t *)); + +#include <locale.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + static mbstate_t state; + + ASSERT (mbsinit (NULL)); + + ASSERT (mbsinit (&state)); + + if (argc > 1) + { + static const char input[1] = "\303"; + wchar_t wc; + size_t ret; + + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (!mbsinit (&state)); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-mbsinit.sh b/gettext-tools/gnulib-tests/test-mbsinit.sh new file mode 100755 index 0000000..bbda48d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsinit.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test whether a specific UTF-8 locale is installed. +: ${LOCALE_FR_UTF8=fr_FR.UTF-8} +if test $LOCALE_FR_UTF8 = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no french Unicode locale is installed" + else + echo "Skipping test: no french Unicode locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_FR_UTF8 \ +./test-mbsinit${EXEEXT} diff --git a/gettext-tools/gnulib-tests/test-mbsrtowcs.c b/gettext-tools/gnulib-tests/test-mbsrtowcs.c new file mode 100644 index 0000000..079fa4c --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsrtowcs.c @@ -0,0 +1,293 @@ +/* Test of conversion of string to wide string. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <wchar.h> + +#include "signature.h" +SIGNATURE_CHECK (mbsrtowcs, size_t, (wchar_t *, char const **, size_t, + mbstate_t *)); + +#include <locale.h> +#include <stdio.h> +#include <string.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + mbstate_t state; + wchar_t wc; + size_t ret; + + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + + /* Test NUL byte input. */ + { + const char *src; + + memset (&state, '\0', sizeof (mbstate_t)); + + src = ""; + ret = mbsrtowcs (NULL, &src, 0, &state); + ASSERT (ret == 0); + ASSERT (mbsinit (&state)); + + src = ""; + ret = mbsrtowcs (NULL, &src, 1, &state); + ASSERT (ret == 0); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + src = ""; + ret = mbsrtowcs (&wc, &src, 0, &state); + ASSERT (ret == 0); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (mbsinit (&state)); + + wc = (wchar_t) 0xBADFACE; + src = ""; + ret = mbsrtowcs (&wc, &src, 1, &state); + ASSERT (ret == 0); + ASSERT (wc == 0); + ASSERT (mbsinit (&state)); + } + + if (argc > 1) + { + int unlimited; + + for (unlimited = 0; unlimited < 2; unlimited++) + { + #define BUFSIZE 10 + wchar_t buf[BUFSIZE]; + const char *src; + mbstate_t temp_state; + + { + size_t i; + for (i = 0; i < BUFSIZE; i++) + buf[i] = (wchar_t) 0xBADFACE; + } + + switch (argv[1][0]) + { + case '1': + /* Locale encoding is ISO-8859-1 or ISO-8859-15. */ + { + char input[] = "B\374\337er"; /* "Büßer" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'B'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 1, &state); + ASSERT (ret == 1); + ASSERT (wctob (wc) == (unsigned char) '\374'); + ASSERT (mbsinit (&state)); + input[1] = '\0'; + + src = input + 2; + temp_state = state; + ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 1, &temp_state); + ASSERT (ret == 3); + ASSERT (src == input + 2); + ASSERT (mbsinit (&state)); + + src = input + 2; + ret = mbsrtowcs (buf, &src, unlimited ? BUFSIZE : 1, &state); + ASSERT (ret == (unlimited ? 3 : 1)); + ASSERT (src == (unlimited ? NULL : input + 3)); + ASSERT (wctob (buf[0]) == (unsigned char) '\337'); + if (unlimited) + { + ASSERT (buf[1] == 'e'); + ASSERT (buf[2] == 'r'); + ASSERT (buf[3] == 0); + ASSERT (buf[4] == (wchar_t) 0xBADFACE); + } + else + ASSERT (buf[1] == (wchar_t) 0xBADFACE); + ASSERT (mbsinit (&state)); + } + break; + + case '2': + /* Locale encoding is UTF-8. */ + { + char input[] = "B\303\274\303\237er"; /* "Büßer" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'B'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[1] = '\0'; + + src = input + 2; + temp_state = state; + ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &temp_state); + ASSERT (ret == 4); + ASSERT (src == input + 2); + ASSERT (!mbsinit (&state)); + + src = input + 2; + ret = mbsrtowcs (buf, &src, unlimited ? BUFSIZE : 2, &state); + ASSERT (ret == (unlimited ? 4 : 2)); + ASSERT (src == (unlimited ? NULL : input + 5)); + ASSERT (wctob (buf[0]) == EOF); + ASSERT (wctob (buf[1]) == EOF); + if (unlimited) + { + ASSERT (buf[2] == 'e'); + ASSERT (buf[3] == 'r'); + ASSERT (buf[4] == 0); + ASSERT (buf[5] == (wchar_t) 0xBADFACE); + } + else + ASSERT (buf[2] == (wchar_t) 0xBADFACE); + ASSERT (mbsinit (&state)); + } + break; + + case '3': + /* Locale encoding is EUC-JP. */ + { + char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == '<'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 2, &state); + ASSERT (ret == 2); + ASSERT (wctob (wc) == EOF); + ASSERT (mbsinit (&state)); + input[1] = '\0'; + input[2] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 3, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[3] = '\0'; + + src = input + 4; + temp_state = state; + ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &temp_state); + ASSERT (ret == 3); + ASSERT (src == input + 4); + ASSERT (!mbsinit (&state)); + + src = input + 4; + ret = mbsrtowcs (buf, &src, unlimited ? BUFSIZE : 2, &state); + ASSERT (ret == (unlimited ? 3 : 2)); + ASSERT (src == (unlimited ? NULL : input + 7)); + ASSERT (wctob (buf[0]) == EOF); + ASSERT (wctob (buf[1]) == EOF); + if (unlimited) + { + ASSERT (buf[2] == '>'); + ASSERT (buf[3] == 0); + ASSERT (buf[4] == (wchar_t) 0xBADFACE); + } + else + ASSERT (buf[2] == (wchar_t) 0xBADFACE); + ASSERT (mbsinit (&state)); + } + break; + + case '4': + /* Locale encoding is GB18030. */ + { + char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ + memset (&state, '\0', sizeof (mbstate_t)); + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input, 1, &state); + ASSERT (ret == 1); + ASSERT (wc == 'B'); + ASSERT (mbsinit (&state)); + input[0] = '\0'; + + wc = (wchar_t) 0xBADFACE; + ret = mbrtowc (&wc, input + 1, 1, &state); + ASSERT (ret == (size_t)(-2)); + ASSERT (wc == (wchar_t) 0xBADFACE); + ASSERT (!mbsinit (&state)); + input[1] = '\0'; + + src = input + 2; + temp_state = state; + ret = mbsrtowcs (NULL, &src, unlimited ? BUFSIZE : 2, &temp_state); + ASSERT (ret == 4); + ASSERT (src == input + 2); + ASSERT (!mbsinit (&state)); + + src = input + 2; + ret = mbsrtowcs (buf, &src, unlimited ? BUFSIZE : 2, &state); + ASSERT (ret == (unlimited ? 4 : 2)); + ASSERT (src == (unlimited ? NULL : input + 7)); + ASSERT (wctob (buf[0]) == EOF); + ASSERT (wctob (buf[1]) == EOF); + if (unlimited) + { + ASSERT (buf[2] == 'e'); + ASSERT (buf[3] == 'r'); + ASSERT (buf[4] == 0); + ASSERT (buf[5] == (wchar_t) 0xBADFACE); + } + else + ASSERT (buf[2] == (wchar_t) 0xBADFACE); + ASSERT (mbsinit (&state)); + } + break; + + default: + return 1; + } + } + + return 0; + } + + return 1; +} diff --git a/gettext-tools/gnulib-tests/test-mbsrtowcs1.sh b/gettext-tools/gnulib-tests/test-mbsrtowcs1.sh new file mode 100755 index 0000000..01916e7 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsrtowcs1.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test in an ISO-8859-1 or ISO-8859-15 locale. +: ${LOCALE_FR=fr_FR} +if test $LOCALE_FR = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no traditional french locale is installed" + else + echo "Skipping test: no traditional french locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_FR \ +./test-mbsrtowcs${EXEEXT} 1 diff --git a/gettext-tools/gnulib-tests/test-mbsrtowcs2.sh b/gettext-tools/gnulib-tests/test-mbsrtowcs2.sh new file mode 100755 index 0000000..f72ceb6 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsrtowcs2.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test whether a specific UTF-8 locale is installed. +: ${LOCALE_FR_UTF8=fr_FR.UTF-8} +if test $LOCALE_FR_UTF8 = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no french Unicode locale is installed" + else + echo "Skipping test: no french Unicode locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_FR_UTF8 \ +./test-mbsrtowcs${EXEEXT} 2 diff --git a/gettext-tools/gnulib-tests/test-mbsrtowcs3.sh b/gettext-tools/gnulib-tests/test-mbsrtowcs3.sh new file mode 100755 index 0000000..b3c01d4 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsrtowcs3.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test whether a specific EUC-JP locale is installed. +: ${LOCALE_JA=ja_JP} +if test $LOCALE_JA = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no traditional japanese locale is installed" + else + echo "Skipping test: no traditional japanese locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_JA \ +./test-mbsrtowcs${EXEEXT} 3 diff --git a/gettext-tools/gnulib-tests/test-mbsrtowcs4.sh b/gettext-tools/gnulib-tests/test-mbsrtowcs4.sh new file mode 100755 index 0000000..226d6ff --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsrtowcs4.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test whether a specific GB18030 locale is installed. +: ${LOCALE_ZH_CN=zh_CN.GB18030} +if test $LOCALE_ZH_CN = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no transitional chinese locale is installed" + else + echo "Skipping test: no transitional chinese locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_ZH_CN \ +./test-mbsrtowcs${EXEEXT} 4 diff --git a/gettext-tools/gnulib-tests/test-mbsstr1.c b/gettext-tools/gnulib-tests/test-mbsstr1.c new file mode 100644 index 0000000..1e6f7e0 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsstr1.c @@ -0,0 +1,128 @@ +/* Test of searching in a string. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <string.h> + +#include <stdlib.h> + +#include "macros.h" + +int +main () +{ + /* This test is executed in the C locale. */ + + { + const char input[] = "foo"; + const char *result = mbsstr (input, ""); + ASSERT (result == input); + } + + { + const char input[] = "foo"; + const char *result = mbsstr (input, "o"); + ASSERT (result == input + 1); + } + + { + const char input[] = "ABC ABCDAB ABCDABCDABDE"; + const char *result = mbsstr (input, "ABCDABD"); + ASSERT (result == input + 15); + } + + { + const char input[] = "ABC ABCDAB ABCDABCDABDE"; + const char *result = mbsstr (input, "ABCDABE"); + ASSERT (result == NULL); + } + + /* Check that a very long haystack is handled quickly if the needle is + short and occurs near the beginning. */ + { + size_t repeat = 10000; + size_t m = 1000000; + const char *needle = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + char *haystack = (char *) malloc (m + 1); + if (haystack != NULL) + { + memset (haystack, 'A', m); + haystack[0] = 'B'; + haystack[m] = '\0'; + + for (; repeat > 0; repeat--) + { + ASSERT (mbsstr (haystack, needle) == haystack + 1); + } + + free (haystack); + } + } + + /* Check that a very long needle is discarded quickly if the haystack is + short. */ + { + size_t repeat = 10000; + size_t m = 1000000; + const char *haystack = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB"; + char *needle = (char *) malloc (m + 1); + if (needle != NULL) + { + memset (needle, 'A', m); + needle[m] = '\0'; + + for (; repeat > 0; repeat--) + { + ASSERT (mbsstr (haystack, needle) == NULL); + } + + free (needle); + } + } + + /* Check that the asymptotic worst-case complexity is not quadratic. */ + { + size_t m = 1000000; + char *haystack = (char *) malloc (2 * m + 2); + char *needle = (char *) malloc (m + 2); + if (haystack != NULL && needle != NULL) + { + const char *result; + + memset (haystack, 'A', 2 * m); + haystack[2 * m] = 'B'; + haystack[2 * m + 1] = '\0'; + + memset (needle, 'A', m); + needle[m] = 'B'; + needle[m + 1] = '\0'; + + result = mbsstr (haystack, needle); + ASSERT (result == haystack + m); + } + free (needle); + free (haystack); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-mbsstr2.c b/gettext-tools/gnulib-tests/test-mbsstr2.c new file mode 100644 index 0000000..2565128 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsstr2.c @@ -0,0 +1,141 @@ +/* Test of searching in a string. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <string.h> + +#include <locale.h> +#include <stdlib.h> + +#include "macros.h" + +int +main () +{ + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + + { + const char input[] = "f\303\266\303\266"; + const char *result = mbsstr (input, ""); + ASSERT (result == input); + } + + { + const char input[] = "f\303\266\303\266"; + const char *result = mbsstr (input, "\303\266"); + ASSERT (result == input + 1); + } + + { + const char input[] = "f\303\266\303\266"; + const char *result = mbsstr (input, "\266\303"); + ASSERT (result == NULL); + } + + { + const char input[] = "\303\204BC \303\204BCD\303\204B \303\204BCD\303\204BCD\303\204BDE"; /* "ÄBC ÄBCDÄB ÄBCDÄBCDÄBDE" */ + const char *result = mbsstr (input, "\303\204BCD\303\204BD"); /* "ÄBCDÄBD" */ + ASSERT (result == input + 19); + } + + { + const char input[] = "\303\204BC \303\204BCD\303\204B \303\204BCD\303\204BCD\303\204BDE"; /* "ÄBC ÄBCDÄB ÄBCDÄBCDÄBDE" */ + const char *result = mbsstr (input, "\303\204BCD\303\204BE"); /* "ÄBCDÄBE" */ + ASSERT (result == NULL); + } + + /* Check that a very long haystack is handled quickly if the needle is + short and occurs near the beginning. */ + { + size_t repeat = 10000; + size_t m = 1000000; + const char *needle = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + char *haystack = (char *) malloc (m + 1); + if (haystack != NULL) + { + memset (haystack, 'A', m); + haystack[0] = '\303'; haystack[1] = '\204'; + haystack[m] = '\0'; + + for (; repeat > 0; repeat--) + { + ASSERT (mbsstr (haystack, needle) == haystack + 2); + } + + free (haystack); + } + } + + /* Check that a very long needle is discarded quickly if the haystack is + short. */ + { + size_t repeat = 10000; + size_t m = 1000000; + const char *haystack = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "A\303\207A\303\207A\303\207A\303\207A\303\207A\303\207A\303\207" + "A\303\207A\303\207A\303\207A\303\207A\303\207A\303\207A\303\207" + "A\303\207A\303\207A\303\207A\303\207A\303\207A\303\207A\303\207" + "A\303\207A\303\207A\303\207A\303\207A\303\207A\303\207A\303\207" + "A\303\207A\303\207A\303\207A\303\207A\303\207A\303\207"; + char *needle = (char *) malloc (m + 1); + if (needle != NULL) + { + memset (needle, 'A', m); + needle[m] = '\0'; + + for (; repeat > 0; repeat--) + { + ASSERT (mbsstr (haystack, needle) == NULL); + } + + free (needle); + } + } + + /* Check that the asymptotic worst-case complexity is not quadratic. */ + { + size_t m = 1000000; + char *haystack = (char *) malloc (2 * m + 3); + char *needle = (char *) malloc (m + 3); + if (haystack != NULL && needle != NULL) + { + const char *result; + + memset (haystack, 'A', 2 * m); + haystack[2 * m] = '\303'; haystack[2 * m + 1] = '\207'; + haystack[2 * m + 2] = '\0'; + + memset (needle, 'A', m); + needle[m] = '\303'; needle[m + 1] = '\207'; + needle[m + 2] = '\0'; + + result = mbsstr (haystack, needle); + ASSERT (result == haystack + m); + } + free (needle); + free (haystack); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-mbsstr2.sh b/gettext-tools/gnulib-tests/test-mbsstr2.sh new file mode 100755 index 0000000..79d06df --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsstr2.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test whether a specific UTF-8 locale is installed. +: ${LOCALE_FR_UTF8=fr_FR.UTF-8} +if test $LOCALE_FR_UTF8 = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no french Unicode locale is installed" + else + echo "Skipping test: no french Unicode locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_FR_UTF8 \ +./test-mbsstr2${EXEEXT} diff --git a/gettext-tools/gnulib-tests/test-mbsstr3.c b/gettext-tools/gnulib-tests/test-mbsstr3.c new file mode 100644 index 0000000..e4d9a6d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsstr3.c @@ -0,0 +1,81 @@ +/* Test of searching in a string. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <string.h> + +#include <locale.h> + +#include "macros.h" + +int +main () +{ + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + + /* Tests with a character < 0x30. */ + { + const char input[] = "\312\276\300\375 \312\276\300\375 \312\276\300\375"; /* "示例 示例 示例" */ + const char *result = mbsstr (input, " "); + ASSERT (result == input + 4); + } + + { + const char input[] = "\312\276\300\375"; /* "示例" */ + const char *result = mbsstr (input, " "); + ASSERT (result == NULL); + } + + /* Tests with a character >= 0x30. */ + { + const char input[] = "\272\305123\324\313\320\320\241\243"; /* "号123运行。" */ + const char *result = mbsstr (input, "2"); + ASSERT (result == input + 3); + } + + /* The following tests show how mbsstr() is different from strstr(). */ + + { + const char input[] = "\313\320\320\320"; /* "诵行" */ + const char *result = mbsstr (input, "\320\320"); /* "行" */ + ASSERT (result == input + 2); + } + + { + const char input[] = "\203\062\332\066123\324\313\320\320\241\243"; /* "씋123运行。" */ + const char *result = mbsstr (input, "2"); + ASSERT (result == input + 5); + } + + { + const char input[] = "\312\276\300\375 \312\276\300\375 \312\276\300\375"; /* "示例 示例 示例" */ + const char *result = mbsstr (input, "\276\300"); /* "纠" */ + ASSERT (result == NULL); + } + + { + const char input[] = "\312\276\300\375 \312\276\300\375 \312\276\300\375"; /* "示例 示例 示例" */ + const char *result = mbsstr (input, "\375 "); /* invalid multibyte sequence */ + ASSERT (result == NULL); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-mbsstr3.sh b/gettext-tools/gnulib-tests/test-mbsstr3.sh new file mode 100755 index 0000000..732c01f --- /dev/null +++ b/gettext-tools/gnulib-tests/test-mbsstr3.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Test whether a specific GB18030 locale is installed. +: ${LOCALE_ZH_CN=zh_CN.GB18030} +if test $LOCALE_ZH_CN = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no chinese GB18030 locale is installed" + else + echo "Skipping test: no chinese GB18030 locale is supported" + fi + exit 77 +fi + +LC_ALL=$LOCALE_ZH_CN \ +./test-mbsstr3${EXEEXT} diff --git a/gettext-tools/gnulib-tests/test-memchr.c b/gettext-tools/gnulib-tests/test-memchr.c new file mode 100644 index 0000000..223c8e7 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-memchr.c @@ -0,0 +1,132 @@ +/* + * Copyright (C) 2008-2014 Free Software Foundation, Inc. + * Written by Eric Blake and Bruno Haible + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <string.h> + +#include "signature.h" +SIGNATURE_CHECK (memchr, void *, (void const *, int, size_t)); + +#include <stdlib.h> + +#include "zerosize-ptr.h" +#include "macros.h" + +/* Calculating void * + int is not portable, so this wrapper converts + to char * to make the tests easier to write. */ +#define MEMCHR (char *) memchr + +int +main (void) +{ + size_t n = 0x100000; + char *input = malloc (n); + ASSERT (input); + + input[0] = 'a'; + input[1] = 'b'; + memset (input + 2, 'c', 1024); + memset (input + 1026, 'd', n - 1028); + input[n - 2] = 'e'; + input[n - 1] = 'a'; + + /* Basic behavior tests. */ + ASSERT (MEMCHR (input, 'a', n) == input); + + ASSERT (MEMCHR (input, 'a', 0) == NULL); + ASSERT (MEMCHR (zerosize_ptr (), 'a', 0) == NULL); + + ASSERT (MEMCHR (input, 'b', n) == input + 1); + ASSERT (MEMCHR (input, 'c', n) == input + 2); + ASSERT (MEMCHR (input, 'd', n) == input + 1026); + + ASSERT (MEMCHR (input + 1, 'a', n - 1) == input + n - 1); + ASSERT (MEMCHR (input + 1, 'e', n - 1) == input + n - 2); + ASSERT (MEMCHR (input + 1, 0x789abc00 | 'e', n - 1) == input + n - 2); + + ASSERT (MEMCHR (input, 'f', n) == NULL); + ASSERT (MEMCHR (input, '\0', n) == NULL); + + /* Check that a very long haystack is handled quickly if the byte is + found near the beginning. */ + { + size_t repeat = 10000; + for (; repeat > 0; repeat--) + { + ASSERT (MEMCHR (input, 'c', n) == input + 2); + } + } + + /* Alignment tests. */ + { + int i, j; + for (i = 0; i < 32; i++) + { + for (j = 0; j < 256; j++) + input[i + j] = j; + for (j = 0; j < 256; j++) + { + ASSERT (MEMCHR (input + i, j, 256) == input + i + j); + } + } + } + + /* Check that memchr() does not read past the first occurrence of the + byte being searched. See the Austin Group's clarification + <http://www.opengroup.org/austin/docs/austin_454.txt>. + Test both '\0' and something else, since some implementations + special-case searching for NUL. + */ + { + char *page_boundary = (char *) zerosize_ptr (); + /* Too small, and we miss cache line boundary tests; too large, + and the test takes cubically longer to complete. */ + int limit = 257; + + if (page_boundary != NULL) + { + for (n = 1; n <= limit; n++) + { + char *mem = page_boundary - n; + memset (mem, 'X', n); + ASSERT (MEMCHR (mem, 'U', n) == NULL); + ASSERT (MEMCHR (mem, 0, n) == NULL); + + { + size_t i; + size_t k; + + for (i = 0; i < n; i++) + { + mem[i] = 'U'; + for (k = i + 1; k < n + limit; k++) + ASSERT (MEMCHR (mem, 'U', k) == mem + i); + mem[i] = 0; + for (k = i + 1; k < n + limit; k++) + ASSERT (MEMCHR (mem, 0, k) == mem + i); + mem[i] = 'X'; + } + } + } + } + } + + free (input); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-moo-aroot.oo.c b/gettext-tools/gnulib-tests/test-moo-aroot.oo.c new file mode 100644 index 0000000..ba67742 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-aroot.oo.c @@ -0,0 +1,6 @@ +#include <config.h> + +/* Specification. */ +#include "test-moo-aroot.h" + +#pragma implementation diff --git a/gettext-tools/gnulib-tests/test-moo-aroot.oo.h b/gettext-tools/gnulib-tests/test-moo-aroot.oo.h new file mode 100644 index 0000000..ef07447 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-aroot.oo.h @@ -0,0 +1,10 @@ +#include <stdlib.h> +#include "moo.h" + +/* Define an abstract root class. */ +struct aroot +{ +methods: + int write (aroot_t x, void *buf, size_t len); + void do_free (aroot_t x); +}; diff --git a/gettext-tools/gnulib-tests/test-moo-assign.c b/gettext-tools/gnulib-tests/test-moo-assign.c new file mode 100644 index 0000000..642bbe9 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-assign.c @@ -0,0 +1,32 @@ +/* Test assignments. + Errors are signalled in C++ mode only, not by a C compiler. */ +#include "test-moo-sub2.h" + +void foo () +{ + root_t a; + sub1_t b; + sub2_t c; + + /* Test initializations. */ + root_t a1 = a; + root_t a2 = b; + root_t a3 = c; + sub1_t b1 = a; /* ERROR */ + sub1_t b2 = b; + sub1_t b3 = c; + sub2_t c1 = a; /* ERROR */ + sub2_t c2 = b; /* ERROR */ + sub2_t c3 = c; + + /* Test assignments. */ + a = a1; + a = b1; + a = c1; + b = a2; /* ERROR */ + b = b2; + b = c2; + c = a3; /* ERROR */ + c = b3; /* ERROR */ + c = c3; +} diff --git a/gettext-tools/gnulib-tests/test-moo-asub1.oo.c b/gettext-tools/gnulib-tests/test-moo-asub1.oo.c new file mode 100644 index 0000000..bb5da83 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-asub1.oo.c @@ -0,0 +1,17 @@ +#include <config.h> + +/* Specification. */ +#include "test-moo-asub1.h" + +#pragma implementation + +int asub1::write (asub1_t x, void *buf, size_t len) +{ + fwrite (buf, 1, len, x->fp); + return 0; +} + +void asub1::do_free (asub1_t x) +{ + free (x); +} diff --git a/gettext-tools/gnulib-tests/test-moo-asub1.oo.h b/gettext-tools/gnulib-tests/test-moo-asub1.oo.h new file mode 100644 index 0000000..3a6620d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-asub1.oo.h @@ -0,0 +1,10 @@ +#include "test-moo-aroot.h" + +#include <stdio.h> + +/* Define a subclass. */ +struct asub1 : struct aroot +{ + FILE *fp; +methods: +}; diff --git a/gettext-tools/gnulib-tests/test-moo-root.oo.c b/gettext-tools/gnulib-tests/test-moo-root.oo.c new file mode 100644 index 0000000..00a72fe --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-root.oo.c @@ -0,0 +1,19 @@ +#include <config.h> + +/* Specification. */ +#include "test-moo-root.h" + +#include <stdio.h> + +#pragma implementation + +int root::write (root_t x, void *buf, size_t len) +{ + fwrite (buf, 1, len, stdout); + return 0; +} + +void root::do_free (root_t x) +{ + free (x); +} diff --git a/gettext-tools/gnulib-tests/test-moo-root.oo.h b/gettext-tools/gnulib-tests/test-moo-root.oo.h new file mode 100644 index 0000000..4fe9d3f --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-root.oo.h @@ -0,0 +1,10 @@ +#include <stdlib.h> +#include "moo.h" + +/* Define a root class. */ +struct root +{ +methods: + int write (root_t x, void *buf, size_t len); + void do_free (root_t x); +}; diff --git a/gettext-tools/gnulib-tests/test-moo-sub1.oo.c b/gettext-tools/gnulib-tests/test-moo-sub1.oo.c new file mode 100644 index 0000000..bc928da --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-sub1.oo.c @@ -0,0 +1,13 @@ +#include <config.h> + +/* Specification. */ +#include "test-moo-sub1.h" + +#pragma implementation + +/* Test an override. */ +int sub1::write (sub1_t x, void *buf, size_t len) +{ + fwrite (buf, 1, len, x->fp); + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-moo-sub1.oo.h b/gettext-tools/gnulib-tests/test-moo-sub1.oo.h new file mode 100644 index 0000000..5814394 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-sub1.oo.h @@ -0,0 +1,10 @@ +#include "test-moo-root.h" + +#include <stdio.h> + +/* Define a subclass. */ +struct sub1 : struct root +{ + FILE *fp; +methods: +}; diff --git a/gettext-tools/gnulib-tests/test-moo-sub2.oo.c b/gettext-tools/gnulib-tests/test-moo-sub2.oo.c new file mode 100644 index 0000000..7b61507 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-sub2.oo.c @@ -0,0 +1,20 @@ +#include <config.h> + +/* Specification. */ +#include "test-moo-sub2.h" + +#include <stdio.h> + +#pragma implementation + +void +sub2::begin_indent (sub2_t x) +{ + x->indent++; +} + +void +sub2::end_indent (sub2_t x) +{ + x->indent--; +} diff --git a/gettext-tools/gnulib-tests/test-moo-sub2.oo.h b/gettext-tools/gnulib-tests/test-moo-sub2.oo.h new file mode 100644 index 0000000..d03b36a --- /dev/null +++ b/gettext-tools/gnulib-tests/test-moo-sub2.oo.h @@ -0,0 +1,10 @@ +#include "test-moo-sub1.h" + +/* Define a subclass. */ +struct sub2 : struct sub1 +{ + int indent; +methods: + void begin_indent (sub2_t x); + void end_indent (sub2_t x); +}; diff --git a/gettext-tools/gnulib-tests/test-open.c b/gettext-tools/gnulib-tests/test-open.c new file mode 100644 index 0000000..985d901 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-open.c @@ -0,0 +1,41 @@ +/* Test of opening a file descriptor. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <fcntl.h> + +#include "signature.h" +SIGNATURE_CHECK (open, int, (char const *, int, ...)); + +#include <errno.h> +#include <stdbool.h> +#include <stdio.h> +#include <unistd.h> + +#include "macros.h" + +#define BASE "test-open.t" + +#include "test-open.h" + +int +main (void) +{ + return test_open (open, true); +} diff --git a/gettext-tools/gnulib-tests/test-open.h b/gettext-tools/gnulib-tests/test-open.h new file mode 100644 index 0000000..1807c90 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-open.h @@ -0,0 +1,104 @@ +/* Test of opening a file descriptor. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +/* Make test_open always inline if we're using Fortify, which defines + __always_inline to do that. Do nothing otherwise. This works + around a glibc bug whereby 'open' cannot be used as a function + pointer when _FORTIFY_SOURCE is positive. */ + +#if __GLIBC__ && defined __always_inline +# define ALWAYS_INLINE __always_inline +#else +# define ALWAYS_INLINE +#endif + +/* This file is designed to test both open(n,buf[,mode]) and + openat(AT_FDCWD,n,buf[,mode]). FUNC is the function to test. + Assumes that BASE and ASSERT are already defined, and that + appropriate headers are already included. If PRINT, warn before + skipping symlink tests with status 77. */ + +static ALWAYS_INLINE int +test_open (int (*func) (char const *, int, ...), bool print) +{ + int fd; + /* Remove anything from prior partial run. */ + unlink (BASE "file"); + + /* Cannot create directory. */ + errno = 0; + ASSERT (func ("nonexist.ent/", O_CREAT | O_RDONLY, 0600) == -1); + ASSERT (errno == ENOTDIR || errno == EISDIR || errno == ENOENT + || errno == EINVAL); + + /* Create a regular file. */ + fd = func (BASE "file", O_CREAT | O_RDONLY, 0600); + ASSERT (0 <= fd); + ASSERT (close (fd) == 0); + + /* Trailing slash handling. */ + errno = 0; + ASSERT (func (BASE "file/", O_RDONLY) == -1); + ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL); + + /* Directories cannot be opened for writing. */ + errno = 0; + ASSERT (func (".", O_WRONLY) == -1); + ASSERT (errno == EISDIR || errno == EACCES); + + /* /dev/null must exist, and be writable. */ + fd = func ("/dev/null", O_RDONLY); + ASSERT (0 <= fd); + { + char c; + ASSERT (read (fd, &c, 1) == 0); + } + ASSERT (close (fd) == 0); + fd = func ("/dev/null", O_WRONLY); + ASSERT (0 <= fd); + ASSERT (write (fd, "c", 1) == 1); + ASSERT (close (fd) == 0); + + /* Although O_NONBLOCK on regular files can be ignored, it must not + cause a failure. */ + fd = func (BASE "file", O_NONBLOCK | O_RDONLY); + ASSERT (0 <= fd); + ASSERT (close (fd) == 0); + + /* Symlink handling, where supported. */ + if (symlink (BASE "file", BASE "link") != 0) + { + ASSERT (unlink (BASE "file") == 0); + if (print) + fputs ("skipping test: symlinks not supported on this file system\n", + stderr); + return 77; + } + errno = 0; + ASSERT (func (BASE "link/", O_RDONLY) == -1); + ASSERT (errno == ENOTDIR); + fd = func (BASE "link", O_RDONLY); + ASSERT (0 <= fd); + ASSERT (close (fd) == 0); + + /* Cleanup. */ + ASSERT (unlink (BASE "file") == 0); + ASSERT (unlink (BASE "link") == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-pathmax.c b/gettext-tools/gnulib-tests/test-pathmax.c new file mode 100644 index 0000000..8bc7dbc --- /dev/null +++ b/gettext-tools/gnulib-tests/test-pathmax.c @@ -0,0 +1,32 @@ +/* Test of "pathmax.h". + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2011. */ + +#include <config.h> + +#include "pathmax.h" + +/* Check that PATH_MAX is a constant if it is defined. */ +#ifdef PATH_MAX +int a = PATH_MAX; +#endif + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-pipe-filter-ii1.c b/gettext-tools/gnulib-tests/test-pipe-filter-ii1.c new file mode 100644 index 0000000..10efcbe --- /dev/null +++ b/gettext-tools/gnulib-tests/test-pipe-filter-ii1.c @@ -0,0 +1,137 @@ +/* Test of filtering of data through a subprocess. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + Written by Bruno Haible <haible@clisp.cons.org>, 2009. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include "pipe-filter.h" + +#include "binary-io.h" +#include "c-ctype.h" +#include "read-file.h" +#include "progname.h" +#include "macros.h" + + +/* Pipe a text file through 'LC_ALL=C tr "[a-z]" "[A-Z]"', or equivalently, + 'tr "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"', which + converts ASCII characters from lower case to upper case. */ + +struct locals +{ + const char *input; + size_t size; + size_t nwritten; + size_t nread; + char buf[19]; +}; + +static const void * +prepare_write (size_t *num_bytes_p, void *private_data) +{ + struct locals *l = (struct locals *) private_data; + if (l->nwritten < l->size) + { + *num_bytes_p = l->size - l->nwritten; + return l->input + l->nwritten; + } + else + return NULL; +} + +static void +done_write (void *data_written, size_t num_bytes_written, void *private_data) +{ + struct locals *l = (struct locals *) private_data; + l->nwritten += num_bytes_written; +} + +static void * +prepare_read (size_t *num_bytes_p, void *private_data) +{ + struct locals *l = (struct locals *) private_data; + *num_bytes_p = sizeof (l->buf); + return l->buf; +} + +static void +done_read (void *data_read, size_t num_bytes_read, void *private_data) +{ + struct locals *l = (struct locals *) private_data; + const char *p = l->input + l->nread; + const char *q = (const char *) data_read; + size_t i; + + for (i = 0; i < num_bytes_read; i++, q++) + { + /* Handle conversion NL -> CRLF possibly done by the child process. */ + if (!(O_BINARY && *q == '\r')) + { + char orig = *p; + char expected = c_toupper (orig); + ASSERT (*q == expected); + p++; + } + } + l->nread = p - l->input; +} + +int +main (int argc, char *argv[]) +{ + const char *tr_program; + const char *input_filename; + size_t input_size; + char *input; + + set_program_name (argv[0]); + + ASSERT (argc == 3); + + tr_program = argv[1]; + + /* Read some text from a file. */ + input_filename = argv[2]; + input = read_binary_file (input_filename, &input_size); + ASSERT (input != NULL); + + /* Convert it to uppercase, line by line. */ + { + const char *argv[4]; + struct locals l; + int result; + + l.input = input; + l.size = input_size; + l.nwritten = 0; + l.nread = 0; + + argv[0] = tr_program; + argv[1] = "abcdefghijklmnopqrstuvwxyz"; + argv[2] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + argv[3] = NULL; + + result = pipe_filter_ii_execute ("tr", tr_program, argv, false, true, + prepare_write, done_write, + prepare_read, done_read, + &l); + ASSERT (result == 0); + ASSERT (l.nwritten == input_size); + ASSERT (l.nread == input_size); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-pipe-filter-ii1.sh b/gettext-tools/gnulib-tests/test-pipe-filter-ii1.sh new file mode 100755 index 0000000..e3ea165 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-pipe-filter-ii1.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# Find a 'tr' program that supports character ranges in the POSIX syntax. +# Solaris /usr/bin/tr does not. +if test -f /usr/xpg6/bin/tr; then + TR=/usr/xpg6/bin/tr +else + if test -f /usr/xpg4/bin/tr; then + TR=/usr/xpg4/bin/tr + else + TR=tr + fi +fi + +# A small file. +./test-pipe-filter-ii1${EXEEXT} ${TR} "${srcdir}/test-pipe-filter-ii1.sh" || exit 1 +# A medium-sized file. +./test-pipe-filter-ii1${EXEEXT} ${TR} "${srcdir}/test-pipe-filter-ii1.c" || exit 1 +# A large file. +./test-pipe-filter-ii1${EXEEXT} ${TR} "${srcdir}/test-vasnprintf-posix.c" || exit 1 diff --git a/gettext-tools/gnulib-tests/test-pipe-filter-ii2-child.c b/gettext-tools/gnulib-tests/test-pipe-filter-ii2-child.c new file mode 100644 index 0000000..4e89d5f --- /dev/null +++ b/gettext-tools/gnulib-tests/test-pipe-filter-ii2-child.c @@ -0,0 +1,43 @@ +/* Child program invoked by test-pipe-filter-ii2-main. + + Copyright (C) 2009-2014 Free Software Foundation, Inc. + Written by Paolo Bonzini <bonzini@gnu.org>, 2009. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdio.h> +#include <stdlib.h> + +int +main () +{ + /* Repeatedly: Read two integers i and j, then output all integers in the + range i..j, one per line. */ + for (;;) + { + int i, j; + + if (scanf (" %d", &i) != 1) + break; + if (scanf (" %d", &j) != 1) + break; + if (j == -1) + exit (i); + while (i <= j) + printf ("abcdefghijklmnopqrstuvwxyz%d\n", i++); + } + exit (0); +} diff --git a/gettext-tools/gnulib-tests/test-pipe-filter-ii2-main.c b/gettext-tools/gnulib-tests/test-pipe-filter-ii2-main.c new file mode 100644 index 0000000..a6d5a1b --- /dev/null +++ b/gettext-tools/gnulib-tests/test-pipe-filter-ii2-main.c @@ -0,0 +1,152 @@ +/* Test harness for pipe-filter-ii. + + Copyright (C) 2009-2014 Free Software Foundation, Inc. + Written by Paolo Bonzini <bonzini@gnu.org>, 2009. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include "pipe-filter.h" + +#include <stdio.h> +#include <errno.h> +#include <unistd.h> +#include <string.h> +#include <signal.h> + +#include "full-write.h" +#include "progname.h" +#include "macros.h" + +struct locals +{ + const char *input; + size_t size; + size_t nwritten; + size_t nread; + char buf[5]; +}; + +static const void * +prepare_write (size_t *num_bytes_p, void *private_data) +{ + struct locals *l = (struct locals *) private_data; + if (l->nwritten < l->size) + { + *num_bytes_p = l->size - l->nwritten; + return l->input + l->nwritten; + } + else + return NULL; +} + +static void +done_write (void *data_written, size_t num_bytes_written, void *private_data) +{ + struct locals *l = (struct locals *) private_data; + l->nwritten += num_bytes_written; +} + +static void * +prepare_read (size_t *num_bytes_p, void *private_data) +{ + struct locals *l = (struct locals *) private_data; + *num_bytes_p = sizeof (l->buf); + return l->buf; +} + +/* Callback that ignores the data that has been read. */ + +static void +ignore_done_read (void *data_read, size_t num_bytes_read, void *private_data) +{ +} + +/* Callback that outputs the data that has been read. */ + +static void +output_done_read (void *data_read, size_t num_bytes_read, void *private_data) +{ + full_write (STDOUT_FILENO, data_read, num_bytes_read); +} + +int +main (int argc, char **argv) +{ + const char *path[] = { NULL, NULL }; + + set_program_name (argv[0]); + + ASSERT (argc == 2); + + /* Test writing to a nonexistent program traps sooner or later. */ + { + struct locals l; + int rc; + + l.input = ""; + l.size = 1; + l.nwritten = 0; + l.nread = 0; + path[0] = "/nonexistent/blah"; + rc = pipe_filter_ii_execute ("pipe-filter-test", path[0], path, true, false, + prepare_write, done_write, + prepare_read, ignore_done_read, + &l); + ASSERT (rc == 127 || rc == -1); + printf ("Test 1 passed.\n"); + fflush (stdout); + } + + /* Test returning the exit status. */ + { + struct locals l; + int rc; + + l.input = "1 -1"; + l.size = strlen (l.input); + l.nwritten = 0; + l.nread = 0; + path[0] = argv[1]; + rc = pipe_filter_ii_execute ("pipe-filter-test", path[0], path, false, false, + prepare_write, done_write, + prepare_read, ignore_done_read, + &l); + ASSERT (rc == 1); + printf ("Test 2 passed.\n"); + fflush (stdout); + } + + /* Now test asynchronous I/O. */ + { + struct locals l; + int rc; + + l.input = "1 50\n51\n100"; + l.size = strlen (l.input); + l.nwritten = 0; + l.nread = 0; + path[0] = argv[1]; + rc = pipe_filter_ii_execute ("pipe-filter-test", path[0], path, false, true, + prepare_write, done_write, + prepare_read, output_done_read, + &l); + ASSERT (rc == 0); + printf ("Test 3 passed.\n"); + fflush (stdout); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-pipe-filter-ii2.sh b/gettext-tools/gnulib-tests/test-pipe-filter-ii2.sh new file mode 100755 index 0000000..827b324 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-pipe-filter-ii2.sh @@ -0,0 +1,31 @@ +#! /bin/sh + +# pipe-filter test driver. +# +# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# Written by Paolo Bonzini <bonzini@gnu.org>, 2009. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +./test-pipe-filter-ii2-main${EXEEXT} ./test-pipe-filter-ii2-child${EXEEXT} | { + set -e + read a && test "$a" = "Test 1 passed." + read a && test "$a" = "Test 2 passed." + i=1 + while test $i -le 100; do + read a && test "$a" = "abcdefghijklmnopqrstuvwxyz$i" + i=`expr $i + 1` + done + read a && test "$a" = "Test 3 passed." +} diff --git a/gettext-tools/gnulib-tests/test-pipe2.c b/gettext-tools/gnulib-tests/test-pipe2.c new file mode 100644 index 0000000..0e56dc5 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-pipe2.c @@ -0,0 +1,143 @@ +/* Test of pipe2. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (pipe2, int, (int[2], int)); + +#include <fcntl.h> +#include <stdbool.h> + +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +/* Get declarations of the native Windows API functions. */ +# define WIN32_LEAN_AND_MEAN +# include <windows.h> +/* Get _get_osfhandle. */ +# include "msvc-nothrow.h" +#endif + +#include "binary-io.h" +#include "macros.h" +#if GNULIB_NONBLOCKING +# include "nonblocking.h" +#endif + +/* Return true if FD is open. */ +static bool +is_open (int fd) +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Windows, the initial state of unassigned standard file + descriptors is that they are open but point to an + INVALID_HANDLE_VALUE, and there is no fcntl. */ + return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE; +#else +# ifndef F_GETFL +# error Please port fcntl to your platform +# endif + return 0 <= fcntl (fd, F_GETFL); +#endif +} + +/* Return true if FD is not inherited to child processes. */ +static bool +is_cloexec (int fd) +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + HANDLE h = (HANDLE) _get_osfhandle (fd); + DWORD flags; + ASSERT (GetHandleInformation (h, &flags)); + return (flags & HANDLE_FLAG_INHERIT) == 0; +#else + int flags; + ASSERT ((flags = fcntl (fd, F_GETFD)) >= 0); + return (flags & FD_CLOEXEC) != 0; +#endif +} + +#if ! GNULIB_NONBLOCKING +static int +get_nonblocking_flag (int fd) +{ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + return 0; +# else +# ifndef F_GETFL +# error Please port fcntl to your platform +# endif + int flags; + ASSERT ((flags = fcntl (fd, F_GETFL)) >= 0); + return (flags & O_NONBLOCK) != 0; +# endif +} +#endif + +int +main () +{ + int use_nonblocking; + int use_cloexec; + + for (use_nonblocking = 0; use_nonblocking <= !!O_NONBLOCK; use_nonblocking++) + for (use_cloexec = 0; use_cloexec <= !!O_CLOEXEC; use_cloexec++) + { + int o_flags; + int fd[2]; + + o_flags = 0; + if (use_nonblocking) + o_flags |= O_NONBLOCK; + if (use_cloexec) + o_flags |= O_CLOEXEC; + + fd[0] = -1; + fd[1] = -1; + ASSERT (pipe2 (fd, o_flags) >= 0); + ASSERT (fd[0] >= 0); + ASSERT (fd[1] >= 0); + ASSERT (fd[0] != fd[1]); + ASSERT (is_open (fd[0])); + ASSERT (is_open (fd[1])); + if (use_cloexec) + { + ASSERT (is_cloexec (fd[0])); + ASSERT (is_cloexec (fd[1])); + } + else + { + ASSERT (!is_cloexec (fd[0])); + ASSERT (!is_cloexec (fd[1])); + } + if (use_nonblocking) + { + ASSERT (get_nonblocking_flag (fd[0]) == 1); + ASSERT (get_nonblocking_flag (fd[1]) == 1); + } + else + { + ASSERT (get_nonblocking_flag (fd[0]) == 0); + ASSERT (get_nonblocking_flag (fd[1]) == 0); + } + + ASSERT (close (fd[0]) == 0); + ASSERT (close (fd[1]) == 0); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-posix_spawn1.c b/gettext-tools/gnulib-tests/test-posix_spawn1.c new file mode 100644 index 0000000..86b8d94 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-posix_spawn1.c @@ -0,0 +1,166 @@ +/* Test of posix_spawn() function. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <spawn.h> + +#include "signature.h" +SIGNATURE_CHECK (posix_spawnp, int, (pid_t *, char const *, + posix_spawn_file_actions_t const *, + posix_spawnattr_t const *, + char *const[], char *const[])); +SIGNATURE_CHECK (posix_spawnattr_init, int, (posix_spawnattr_t *)); +SIGNATURE_CHECK (posix_spawnattr_destroy, int, (posix_spawnattr_t *)); +SIGNATURE_CHECK (posix_spawnattr_setsigmask, int, (posix_spawnattr_t *, + sigset_t const *)); +SIGNATURE_CHECK (posix_spawnattr_setflags, int, (posix_spawnattr_t *, short)); +SIGNATURE_CHECK (posix_spawn_file_actions_init, int, + (posix_spawn_file_actions_t *)); +SIGNATURE_CHECK (posix_spawn_file_actions_destroy, int, + (posix_spawn_file_actions_t *)); +SIGNATURE_CHECK (posix_spawn_file_actions_addclose, int, + (posix_spawn_file_actions_t *, int)); +SIGNATURE_CHECK (posix_spawn_file_actions_addopen, int, + (posix_spawn_file_actions_t *, int, char const *, int, + mode_t)); +SIGNATURE_CHECK (posix_spawn_file_actions_adddup2, int, + (posix_spawn_file_actions_t *, int, int)); + +#include <errno.h> +#include <fcntl.h> +#include <signal.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/wait.h> + +extern char **environ; + +#define CHILD_PROGRAM_FILENAME "test-posix_spawn1.sh" + +static int +fd_safer (int fd) +{ + if (0 <= fd && fd <= 2) + { + int f = fd_safer (dup (fd)); + int e = errno; + close (fd); + errno = e; + fd = f; + } + + return fd; +} + +int +main () +{ + char *argv[3] = { (char *) "/bin/sh", (char *) CHILD_PROGRAM_FILENAME, NULL }; + int ifd[2]; + sigset_t blocked_signals; + sigset_t fatal_signal_set; + posix_spawn_file_actions_t actions; + bool actions_allocated; + posix_spawnattr_t attrs; + bool attrs_allocated; + int err; + pid_t child; + int fd; + FILE *fp; + char line[80]; + int status; + int exitstatus; + + if (pipe (ifd) < 0 || (ifd[0] = fd_safer (ifd[0])) < 0) + { + perror ("cannot create pipe"); + exit (1); + } + sigprocmask (SIG_SETMASK, NULL, &blocked_signals); + sigemptyset (&fatal_signal_set); + sigaddset (&fatal_signal_set, SIGINT); + sigaddset (&fatal_signal_set, SIGTERM); + sigaddset (&fatal_signal_set, SIGHUP); + sigaddset (&fatal_signal_set, SIGPIPE); + sigprocmask (SIG_BLOCK, &fatal_signal_set, NULL); + actions_allocated = false; + attrs_allocated = false; + if ((err = posix_spawn_file_actions_init (&actions)) != 0 + || (actions_allocated = true, + (err = posix_spawn_file_actions_adddup2 (&actions, ifd[1], STDOUT_FILENO)) != 0 + || (err = posix_spawn_file_actions_addclose (&actions, ifd[1])) != 0 + || (err = posix_spawn_file_actions_addclose (&actions, ifd[0])) != 0 + || (err = posix_spawn_file_actions_addopen (&actions, STDIN_FILENO, "/dev/null", O_RDONLY, 0)) != 0 + || (err = posix_spawnattr_init (&attrs)) != 0 + || (attrs_allocated = true, + (err = posix_spawnattr_setsigmask (&attrs, &blocked_signals)) != 0 + || (err = posix_spawnattr_setflags (&attrs, POSIX_SPAWN_SETSIGMASK)) != 0) + || (err = posix_spawnp (&child, "/bin/sh", &actions, &attrs, argv, environ)) != 0)) + { + if (actions_allocated) + posix_spawn_file_actions_destroy (&actions); + if (attrs_allocated) + posix_spawnattr_destroy (&attrs); + sigprocmask (SIG_UNBLOCK, &fatal_signal_set, NULL); + errno = err; + perror ("subprocess failed"); + exit (1); + } + posix_spawn_file_actions_destroy (&actions); + posix_spawnattr_destroy (&attrs); + sigprocmask (SIG_UNBLOCK, &fatal_signal_set, NULL); + close (ifd[1]); + fd = ifd[0]; + fp = fdopen (fd, "r"); + if (fp == NULL) + { + fprintf (stderr, "fdopen() failed\n"); + exit (1); + } + if (fread (line, 1, 80, fp) < 12) + { + fprintf (stderr, "could not read expected output\n"); + exit (1); + } + if (memcmp (line, "Halle Potta", 11) != 0) + { + fprintf (stderr, "read output is not the expected output"); + exit (1); + } + fclose (fp); + status = 0; + while (waitpid (child, &status, 0) != child) + ; + if (!WIFEXITED (status)) + { + fprintf (stderr, "subprocess terminated with unexpected wait status %d\n", status); + exit (1); + } + exitstatus = WEXITSTATUS (status); + if (exitstatus != 0) + { + fprintf (stderr, "subprocess terminated with unexpected exit status %d\n", exitstatus); + exit (1); + } + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-posix_spawn1.in.sh b/gettext-tools/gnulib-tests/test-posix_spawn1.in.sh new file mode 100644 index 0000000..b370856 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-posix_spawn1.in.sh @@ -0,0 +1,2 @@ +#!/bin/sh +echo "Halle Potta" diff --git a/gettext-tools/gnulib-tests/test-posix_spawn2.c b/gettext-tools/gnulib-tests/test-posix_spawn2.c new file mode 100644 index 0000000..8e7a501 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-posix_spawn2.c @@ -0,0 +1,139 @@ +/* Test of posix_spawn() function. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <spawn.h> + +#include <errno.h> +#include <fcntl.h> +#include <signal.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/wait.h> + +extern char **environ; + +#define CHILD_PROGRAM_FILENAME "test-posix_spawn2.sh" + +static int +fd_safer (int fd) +{ + if (0 <= fd && fd <= 2) + { + int f = fd_safer (dup (fd)); + int e = errno; + close (fd); + errno = e; + fd = f; + } + + return fd; +} + +int +main () +{ + char *argv[3] = { (char *) "/bin/sh", (char *) CHILD_PROGRAM_FILENAME, NULL }; + int ofd[2]; + sigset_t blocked_signals; + sigset_t fatal_signal_set; + posix_spawn_file_actions_t actions; + bool actions_allocated; + posix_spawnattr_t attrs; + bool attrs_allocated; + int err; + pid_t child; + int fd; + FILE *fp; + int written; + int status; + int exitstatus; + + if (pipe (ofd) < 0 || (ofd[1] = fd_safer (ofd[1])) < 0) + { + perror ("cannot create pipe"); + exit (1); + } + sigprocmask (SIG_SETMASK, NULL, &blocked_signals); + sigemptyset (&fatal_signal_set); + sigaddset (&fatal_signal_set, SIGINT); + sigaddset (&fatal_signal_set, SIGTERM); + sigaddset (&fatal_signal_set, SIGHUP); + sigaddset (&fatal_signal_set, SIGPIPE); + sigprocmask (SIG_BLOCK, &fatal_signal_set, NULL); + actions_allocated = false; + attrs_allocated = false; + if ((err = posix_spawn_file_actions_init (&actions)) != 0 + || (actions_allocated = true, + (err = posix_spawn_file_actions_adddup2 (&actions, ofd[0], STDIN_FILENO)) != 0 + || (err = posix_spawn_file_actions_addclose (&actions, ofd[0])) != 0 + || (err = posix_spawn_file_actions_addclose (&actions, ofd[1])) != 0 + || (err = posix_spawnattr_init (&attrs)) != 0 + || (attrs_allocated = true, + (err = posix_spawnattr_setsigmask (&attrs, &blocked_signals)) != 0 + || (err = posix_spawnattr_setflags (&attrs, POSIX_SPAWN_SETSIGMASK)) != 0) + || (err = posix_spawnp (&child, "/bin/sh", &actions, &attrs, argv, environ)) != 0)) + { + if (actions_allocated) + posix_spawn_file_actions_destroy (&actions); + if (attrs_allocated) + posix_spawnattr_destroy (&attrs); + sigprocmask (SIG_UNBLOCK, &fatal_signal_set, NULL); + errno = err; + perror ("subprocess failed"); + exit (1); + } + posix_spawn_file_actions_destroy (&actions); + posix_spawnattr_destroy (&attrs); + sigprocmask (SIG_UNBLOCK, &fatal_signal_set, NULL); + close (ofd[0]); + fd = ofd[1]; + fp = fdopen (fd, "w"); + if (fp == NULL) + { + fprintf (stderr, "fdopen() failed\n"); + exit (1); + } + written = fwrite ("Halle Potta\n", 1, 12, fp); + if (written < 12) + { + fprintf (stderr, "could not write input\n"); + exit (1); + } + fclose (fp); + status = 0; + while (waitpid (child, &status, 0) != child) + ; + if (!WIFEXITED (status)) + { + fprintf (stderr, "subprocess terminated with unexpected wait status %d\n", status); + exit (1); + } + exitstatus = WEXITSTATUS (status); + if (exitstatus != 0) + { + fprintf (stderr, "subprocess terminated with unexpected exit status %d\n", exitstatus); + exit (1); + } + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-posix_spawn2.in.sh b/gettext-tools/gnulib-tests/test-posix_spawn2.in.sh new file mode 100644 index 0000000..29a9b28 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-posix_spawn2.in.sh @@ -0,0 +1,3 @@ +#!/bin/sh +read line +test "$line" = "Halle Potta" diff --git a/gettext-tools/gnulib-tests/test-posix_spawn_file_actions_addclose.c b/gettext-tools/gnulib-tests/test-posix_spawn_file_actions_addclose.c new file mode 100644 index 0000000..c6790dd --- /dev/null +++ b/gettext-tools/gnulib-tests/test-posix_spawn_file_actions_addclose.c @@ -0,0 +1,64 @@ +/* Test posix_spawn_file_actions_addclose() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <spawn.h> + +#include "signature.h" +SIGNATURE_CHECK (posix_spawn_file_actions_addclose, int, + (posix_spawn_file_actions_t *, int)); + +#include <errno.h> +#include <limits.h> +#include <unistd.h> + +#include "macros.h" + +/* Return a file descriptor that is too big to use. + Prefer the smallest such fd, except use OPEN_MAX if it is defined + and is greater than getdtablesize (), as that's how OS X works. */ +static int +big_fd (void) +{ + int fd = getdtablesize (); +#ifdef OPEN_MAX + if (fd < OPEN_MAX) + fd = OPEN_MAX; +#endif + return fd; +} + +int +main (void) +{ + posix_spawn_file_actions_t actions; + + ASSERT (posix_spawn_file_actions_init (&actions) == 0); + + /* Test behaviour for invalid file descriptors. */ + { + errno = 0; + ASSERT (posix_spawn_file_actions_addclose (&actions, -1) == EBADF); + } + { + int bad_fd = big_fd (); + errno = 0; + ASSERT (posix_spawn_file_actions_addclose (&actions, bad_fd) == EBADF); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-posix_spawn_file_actions_adddup2.c b/gettext-tools/gnulib-tests/test-posix_spawn_file_actions_adddup2.c new file mode 100644 index 0000000..347e783 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-posix_spawn_file_actions_adddup2.c @@ -0,0 +1,72 @@ +/* Test posix_spawn_file_actions_adddup2() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <spawn.h> + +#include "signature.h" +SIGNATURE_CHECK (posix_spawn_file_actions_adddup2, int, + (posix_spawn_file_actions_t *, int, int)); + +#include <errno.h> +#include <limits.h> +#include <unistd.h> + +#include "macros.h" + +/* Return a file descriptor that is too big to use. + Prefer the smallest such fd, except use OPEN_MAX if it is defined + and is greater than getdtablesize (), as that's how OS X works. */ +static int +big_fd (void) +{ + int fd = getdtablesize (); +#ifdef OPEN_MAX + if (fd < OPEN_MAX) + fd = OPEN_MAX; +#endif + return fd; +} + +int +main (void) +{ + int bad_fd = big_fd (); + posix_spawn_file_actions_t actions; + + ASSERT (posix_spawn_file_actions_init (&actions) == 0); + + /* Test behaviour for invalid file descriptors. */ + { + errno = 0; + ASSERT (posix_spawn_file_actions_adddup2 (&actions, -1, 2) == EBADF); + } + { + errno = 0; + ASSERT (posix_spawn_file_actions_adddup2 (&actions, bad_fd, 2) == EBADF); + } + { + errno = 0; + ASSERT (posix_spawn_file_actions_adddup2 (&actions, 2, -1) == EBADF); + } + { + errno = 0; + ASSERT (posix_spawn_file_actions_adddup2 (&actions, 2, bad_fd) == EBADF); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-posix_spawn_file_actions_addopen.c b/gettext-tools/gnulib-tests/test-posix_spawn_file_actions_addopen.c new file mode 100644 index 0000000..ac07c33 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-posix_spawn_file_actions_addopen.c @@ -0,0 +1,70 @@ +/* Test posix_spawn_file_actions_addopen() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <spawn.h> + +#include "signature.h" +SIGNATURE_CHECK (posix_spawn_file_actions_addopen, int, + (posix_spawn_file_actions_t *, int, + const char *, int, mode_t)); + +#include <errno.h> +#include <fcntl.h> +#include <limits.h> +#include <unistd.h> + +#include "macros.h" + +/* Return a file descriptor that is too big to use. + Prefer the smallest such fd, except use OPEN_MAX if it is defined + and is greater than getdtablesize (), as that's how OS X works. */ +static int +big_fd (void) +{ + int fd = getdtablesize (); +#ifdef OPEN_MAX + if (fd < OPEN_MAX) + fd = OPEN_MAX; +#endif + return fd; +} + +int +main (void) +{ + posix_spawn_file_actions_t actions; + + ASSERT (posix_spawn_file_actions_init (&actions) == 0); + + /* Test behaviour for invalid file descriptors. */ + { + errno = 0; + ASSERT (posix_spawn_file_actions_addopen (&actions, -1, + "foo", 0, O_RDONLY) + == EBADF); + } + { + int bad_fd = big_fd (); + errno = 0; + ASSERT (posix_spawn_file_actions_addopen (&actions, bad_fd, + "foo", 0, O_RDONLY) + == EBADF); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-quotearg-simple.c b/gettext-tools/gnulib-tests/test-quotearg-simple.c new file mode 100644 index 0000000..08aadc1 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-quotearg-simple.c @@ -0,0 +1,337 @@ +/* Test of quotearg family of functions. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2008. */ + +#include <config.h> + +#include "quotearg.h" + +#include <ctype.h> +#include <stdbool.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> + +#include "localcharset.h" +#include "progname.h" +#include "macros.h" +#include "zerosize-ptr.h" + +#include "test-quotearg.h" + +static struct result_groups results_g[] = { + /* literal_quoting_style */ + { { "", "\0""1\0", 3, "simple", " \t\n'\"\033?""?/\\", "a:b", "a\\b", + LQ RQ, LQ RQ }, + { "", "1", 1, "simple", " \t\n'\"\033?""?/\\", "a:b", "a\\b", + LQ RQ, LQ RQ }, + { "", "1", 1, "simple", " \t\n'\"\033?""?/\\", "a:b", "a\\b", + LQ RQ, LQ RQ } }, + + /* shell_quoting_style */ + { { "''", "\0""1\0", 3, "simple", "' \t\n'\\''\"\033?""?/\\'", "a:b", + "'a\\b'", LQ RQ, LQ RQ }, + { "''", "1", 1, "simple", "' \t\n'\\''\"\033?""?/\\'", "a:b", + "'a\\b'", LQ RQ, LQ RQ }, + { "''", "1", 1, "simple", "' \t\n'\\''\"\033?""?/\\'", "'a:b'", + "'a\\b'", LQ RQ, LQ RQ } }, + + /* shell_always_quoting_style */ + { { "''", "'\0""1\0'", 5, "'simple'", "' \t\n'\\''\"\033?""?/\\'", "'a:b'", + "'a\\b'", "'" LQ RQ "'", "'" LQ RQ "'" }, + { "''", "'1'", 3, "'simple'", "' \t\n'\\''\"\033?""?/\\'", "'a:b'", + "'a\\b'", "'" LQ RQ "'", "'" LQ RQ "'" }, + { "''", "'1'", 3, "'simple'", "' \t\n'\\''\"\033?""?/\\'", "'a:b'", + "'a\\b'", "'" LQ RQ "'", "'" LQ RQ "'" } }, + + /* c_quoting_style */ + { { "\"\"", "\"\\0001\\0\"", 9, "\"simple\"", + "\" \\t\\n'\\\"\\033?""?/\\\\\"", "\"a:b\"", "\"a\\\\b\"", + "\"" LQ_ENC RQ_ENC "\"", "\"" LQ RQ "\"" }, + { "\"\"", "\"\\0001\\0\"", 9, "\"simple\"", + "\" \\t\\n'\\\"\\033?""?/\\\\\"", "\"a:b\"", "\"a\\\\b\"", + "\"" LQ_ENC RQ_ENC "\"", "\"" LQ RQ "\"" }, + { "\"\"", "\"\\0001\\0\"", 9, "\"simple\"", + "\" \\t\\n'\\\"\\033?""?/\\\\\"", "\"a\\:b\"", "\"a\\\\b\"", + "\"" LQ_ENC RQ_ENC "\"", "\"" LQ RQ "\"" } }, + + /* c_maybe_quoting_style */ + { { "", "\"\\0001\\0\"", 9, "simple", "\" \\t\\n'\\\"\\033?""?/\\\\\"", + "a:b", "a\\b", "\"" LQ_ENC RQ_ENC "\"", LQ RQ }, + { "", "\"\\0001\\0\"", 9, "simple", "\" \\t\\n'\\\"\\033?""?/\\\\\"", + "a:b", "a\\b", "\"" LQ_ENC RQ_ENC "\"", LQ RQ }, + { "", "\"\\0001\\0\"", 9, "simple", "\" \\t\\n'\\\"\\033?""?/\\\\\"", + "\"a:b\"", "a\\b", "\"" LQ_ENC RQ_ENC "\"", LQ RQ } }, + + /* escape_quoting_style */ + { { "", "\\0001\\0", 7, "simple", " \\t\\n'\"\\033?""?/\\\\", "a:b", + "a\\\\b", LQ_ENC RQ_ENC, LQ RQ }, + { "", "\\0001\\0", 7, "simple", " \\t\\n'\"\\033?""?/\\\\", "a:b", + "a\\\\b", LQ_ENC RQ_ENC, LQ RQ }, + { "", "\\0001\\0", 7, "simple", " \\t\\n'\"\\033?""?/\\\\", "a\\:b", + "a\\\\b", LQ_ENC RQ_ENC, LQ RQ } }, + + /* locale_quoting_style */ + { { "''", "'\\0001\\0'", 9, "'simple'", "' \\t\\n\\'\"\\033?""?/\\\\'", + "'a:b'", "'a\\\\b'", "'" LQ_ENC RQ_ENC "'", "'" LQ RQ "'" }, + { "''", "'\\0001\\0'", 9, "'simple'", "' \\t\\n\\'\"\\033?""?/\\\\'", + "'a:b'", "'a\\\\b'", "'" LQ_ENC RQ_ENC "'", "'" LQ RQ "'" }, + { "''", "'\\0001\\0'", 9, "'simple'", "' \\t\\n\\'\"\\033?""?/\\\\'", + "'a\\:b'", "'a\\\\b'", "'" LQ_ENC RQ_ENC "'", "'" LQ RQ "'" } }, + + /* clocale_quoting_style */ + { { "\"\"", "\"\\0001\\0\"", 9, "\"simple\"", + "\" \\t\\n'\\\"\\033?""?/\\\\\"", "\"a:b\"", "\"a\\\\b\"", + "\"" LQ_ENC RQ_ENC "\"", "\"" LQ RQ "\"" }, + { "\"\"", "\"\\0001\\0\"", 9, "\"simple\"", + "\" \\t\\n'\\\"\\033?""?/\\\\\"", "\"a:b\"", "\"a\\\\b\"", + "\"" LQ_ENC RQ_ENC "\"", "\"" LQ RQ "\"" }, + { "\"\"", "\"\\0001\\0\"", 9, "\"simple\"", + "\" \\t\\n'\\\"\\033?""?/\\\\\"", "\"a\\:b\"", "\"a\\\\b\"", + "\"" LQ_ENC RQ_ENC "\"", "\"" LQ RQ "\"" } } +}; + +static struct result_groups flag_results[] = { + /* literal_quoting_style and QA_ELIDE_NULL_BYTES */ + { { "", "1", 1, "simple", " \t\n'\"\033?""?/\\", "a:b", "a\\b", LQ RQ, + LQ RQ }, + { "", "1", 1, "simple", " \t\n'\"\033?""?/\\", "a:b", "a\\b", LQ RQ, + LQ RQ }, + { "", "1", 1, "simple", " \t\n'\"\033?""?/\\", "a:b", "a\\b", LQ RQ, + LQ RQ } }, + + /* c_quoting_style and QA_ELIDE_OUTER_QUOTES */ + { { "", "\"\\0001\\0\"", 9, "simple", "\" \\t\\n'\\\"\\033?""?/\\\\\"", + "a:b", "a\\b", "\"" LQ_ENC RQ_ENC "\"", LQ RQ }, + { "", "\"\\0001\\0\"", 9, "simple", "\" \\t\\n'\\\"\\033?""?/\\\\\"", + "a:b", "a\\b", "\"" LQ_ENC RQ_ENC "\"", LQ RQ }, + { "", "\"\\0001\\0\"", 9, "simple", "\" \\t\\n'\\\"\\033?""?/\\\\\"", + "\"a:b\"", "a\\b", "\"" LQ_ENC RQ_ENC "\"", LQ RQ } }, + + /* c_quoting_style and QA_SPLIT_TRIGRAPHS */ + { { "\"\"", "\"\\0001\\0\"", 9, "\"simple\"", + "\" \\t\\n'\\\"\\033?\"\"?/\\\\\"", "\"a:b\"", "\"a\\\\b\"", + "\"" LQ_ENC RQ_ENC "\"", "\"" LQ RQ "\"" }, + { "\"\"", "\"\\0001\\0\"", 9, "\"simple\"", + "\" \\t\\n'\\\"\\033?\"\"?/\\\\\"", "\"a:b\"", "\"a\\\\b\"", + "\"" LQ_ENC RQ_ENC "\"", "\"" LQ RQ "\"" }, + { "\"\"", "\"\\0001\\0\"", 9, "\"simple\"", + "\" \\t\\n'\\\"\\033?\"\"?/\\\\\"", "\"a\\:b\"", "\"a\\\\b\"", + "\"" LQ_ENC RQ_ENC "\"", "\"" LQ RQ "\"" } } +}; + +static char const *custom_quotes[][2] = { + { "", "" }, + { "'", "'" }, + { "(", ")" }, + { ":", " " }, + { " ", ":" }, + { "# ", "\n" }, + { "\"'", "'\"" } +}; + +static struct result_groups custom_results[] = { + /* left_quote = right_quote = "" */ + { { "", "\\0001\\0", 7, "simple", + " \\t\\n'\"\\033?""?/\\\\", "a:b", "a\\\\b", + LQ_ENC RQ_ENC, LQ RQ }, + { "", "\\0001\\0", 7, "simple", + " \\t\\n'\"\\033?""?/\\\\", "a:b", "a\\\\b", + LQ_ENC RQ_ENC, LQ RQ }, + { "", "\\0001\\0", 7, "simple", + " \\t\\n'\"\\033?""?/\\\\", "a\\:b", "a\\\\b", + LQ_ENC RQ_ENC, LQ RQ } }, + + /* left_quote = right_quote = "'" */ + { { "''", "'\\0001\\0'", 9, "'simple'", + "' \\t\\n\\'\"\\033?""?/\\\\'", "'a:b'", "'a\\\\b'", + "'" LQ_ENC RQ_ENC "'", "'" LQ RQ "'" }, + { "''", "'\\0001\\0'", 9, "'simple'", + "' \\t\\n\\'\"\\033?""?/\\\\'", "'a:b'", "'a\\\\b'", + "'" LQ_ENC RQ_ENC "'", "'" LQ RQ "'" }, + { "''", "'\\0001\\0'", 9, "'simple'", + "' \\t\\n\\'\"\\033?""?/\\\\'", "'a\\:b'", "'a\\\\b'", + "'" LQ_ENC RQ_ENC "'", "'" LQ RQ "'" } }, + + /* left_quote = "(" and right_quote = ")" */ + { { "()", "(\\0001\\0)", 9, "(simple)", + "( \\t\\n'\"\\033?""?/\\\\)", "(a:b)", "(a\\\\b)", + "(" LQ_ENC RQ_ENC ")", "(" LQ RQ ")" }, + { "()", "(\\0001\\0)", 9, "(simple)", + "( \\t\\n'\"\\033?""?/\\\\)", "(a:b)", "(a\\\\b)", + "(" LQ_ENC RQ_ENC ")", "(" LQ RQ ")" }, + { "()", "(\\0001\\0)", 9, "(simple)", + "( \\t\\n'\"\\033?""?/\\\\)", "(a\\:b)", "(a\\\\b)", + "(" LQ_ENC RQ_ENC ")", "(" LQ RQ ")" } }, + + /* left_quote = ":" and right_quote = " " */ + { { ": ", ":\\0001\\0 ", 9, ":simple ", + ":\\ \\t\\n'\"\\033?""?/\\\\ ", ":a:b ", ":a\\\\b ", + ":" LQ_ENC RQ_ENC " ", ":" LQ RQ " " }, + { ": ", ":\\0001\\0 ", 9, ":simple ", + ":\\ \\t\\n'\"\\033?""?/\\\\ ", ":a:b ", ":a\\\\b ", + ":" LQ_ENC RQ_ENC " ", ":" LQ RQ " " }, + { ": ", ":\\0001\\0 ", 9, ":simple ", + ":\\ \\t\\n'\"\\033?""?/\\\\ ", ":a\\:b ", ":a\\\\b ", + ":" LQ_ENC RQ_ENC " ", ":" LQ RQ " " } }, + + /* left_quote = " " and right_quote = ":" */ + { { " :", " \\0001\\0:", 9, " simple:", + " \\t\\n'\"\\033?""?/\\\\:", " a\\:b:", " a\\\\b:", + " " LQ_ENC RQ_ENC ":", " " LQ RQ ":" }, + { " :", " \\0001\\0:", 9, " simple:", + " \\t\\n'\"\\033?""?/\\\\:", " a\\:b:", " a\\\\b:", + " " LQ_ENC RQ_ENC ":", " " LQ RQ ":" }, + { " :", " \\0001\\0:", 9, " simple:", + " \\t\\n'\"\\033?""?/\\\\:", " a\\:b:", " a\\\\b:", + " " LQ_ENC RQ_ENC ":", " " LQ RQ ":" } }, + + /* left_quote = "# " and right_quote = "\n" */ + { { "# \n", "# \\0001\\0\n", 10, "# simple\n", + "# \\t\\n'\"\\033?""?/\\\\\n", "# a:b\n", "# a\\\\b\n", + "# " LQ_ENC RQ_ENC "\n", "# " LQ RQ "\n" }, + { "# \n", "# \\0001\\0\n", 10, "# simple\n", + "# \\t\\n'\"\\033?""?/\\\\\n", "# a:b\n", "# a\\\\b\n", + "# " LQ_ENC RQ_ENC "\n", "# " LQ RQ "\n" }, + { "# \n", "# \\0001\\0\n", 10, "# simple\n", + "# \\t\\n'\"\\033?""?/\\\\\n", "# a\\:b\n", "# a\\\\b\n", + "# " LQ_ENC RQ_ENC "\n", "# " LQ RQ "\n" } }, + + /* left_quote = "\"'" and right_quote = "'\"" */ + { { "\"''\"", "\"'\\0001\\0'\"", 11, "\"'simple'\"", + "\"' \\t\\n\\'\"\\033?""?/\\\\'\"", "\"'a:b'\"", "\"'a\\\\b'\"", + "\"'" LQ_ENC RQ_ENC "'\"", "\"'" LQ RQ "'\"" }, + { "\"''\"", "\"'\\0001\\0'\"", 11, "\"'simple'\"", + "\"' \\t\\n\\'\"\\033?""?/\\\\'\"", "\"'a:b'\"", "\"'a\\\\b'\"", + "\"'" LQ_ENC RQ_ENC "'\"", "\"'" LQ RQ "'\"" }, + { "\"''\"", "\"'\\0001\\0'\"", 11, "\"'simple'\"", + "\"' \\t\\n\\'\"\\033?""?/\\\\'\"", "\"'a\\:b'\"", "\"'a\\\\b'\"", + "\"'" LQ_ENC RQ_ENC "'\"", "\"'" LQ RQ "'\"" } } +}; + +int +main (int argc _GL_UNUSED, char *argv[]) +{ + int i; + bool ascii_only = MB_CUR_MAX == 1 && !isprint ((unsigned char) LQ[0]); + + set_program_name (argv[0]); + + /* This part of the program is hard-wired to the C locale since it + does not call setlocale. However, according to POSIX, the use of + 8-bit bytes in a character context in the C locale gives + unspecified results (that is, the C locale charset is allowed to + be unibyte with 8-bit bytes rejected [ASCII], unibyte with 8-bit + bytes being characters [often ISO-8859-1], or multibyte [often + UTF-8]). We assume that the latter two cases will be + indistinguishable in this test - that is, the LQ and RQ sequences + will pass through unchanged in either type of charset. So when + testing for quoting of str7, use the ascii_only flag to decide + what to expect for the 8-bit data being quoted. */ + ASSERT (!isprint ('\033')); + for (i = literal_quoting_style; i <= clocale_quoting_style; i++) + { + set_quoting_style (NULL, (enum quoting_style) i); + if (!(i == locale_quoting_style || i == clocale_quoting_style) + || (strcmp (locale_charset (), "ASCII") == 0 + || strcmp (locale_charset (), "ANSI_X3.4-1968") == 0)) + { + compare_strings (use_quotearg_buffer, &results_g[i].group1, + ascii_only); + compare_strings (use_quotearg, &results_g[i].group2, + ascii_only); + if (i == c_quoting_style) + compare_strings (use_quote_double_quotes, &results_g[i].group2, + ascii_only); + compare_strings (use_quotearg_colon, &results_g[i].group3, + ascii_only); + } + } + + set_quoting_style (NULL, literal_quoting_style); + ASSERT (set_quoting_flags (NULL, QA_ELIDE_NULL_BYTES) == 0); + compare_strings (use_quotearg_buffer, &flag_results[0].group1, ascii_only); + compare_strings (use_quotearg, &flag_results[0].group2, ascii_only); + compare_strings (use_quotearg_colon, &flag_results[0].group3, ascii_only); + + set_quoting_style (NULL, c_quoting_style); + ASSERT (set_quoting_flags (NULL, QA_ELIDE_OUTER_QUOTES) + == QA_ELIDE_NULL_BYTES); + compare_strings (use_quotearg_buffer, &flag_results[1].group1, ascii_only); + compare_strings (use_quotearg, &flag_results[1].group2, ascii_only); + compare_strings (use_quote_double_quotes, &flag_results[1].group2, + ascii_only); + compare_strings (use_quotearg_colon, &flag_results[1].group3, ascii_only); + + ASSERT (set_quoting_flags (NULL, QA_SPLIT_TRIGRAPHS) + == QA_ELIDE_OUTER_QUOTES); + compare_strings (use_quotearg_buffer, &flag_results[2].group1, ascii_only); + compare_strings (use_quotearg, &flag_results[2].group2, ascii_only); + compare_strings (use_quote_double_quotes, &flag_results[2].group2, + ascii_only); + compare_strings (use_quotearg_colon, &flag_results[2].group3, ascii_only); + + ASSERT (set_quoting_flags (NULL, 0) == QA_SPLIT_TRIGRAPHS); + + for (i = 0; i < sizeof custom_quotes / sizeof *custom_quotes; ++i) + { + set_custom_quoting (NULL, + custom_quotes[i][0], custom_quotes[i][1]); + compare_strings (use_quotearg_buffer, &custom_results[i].group1, + ascii_only); + compare_strings (use_quotearg, &custom_results[i].group2, ascii_only); + compare_strings (use_quotearg_colon, &custom_results[i].group3, + ascii_only); + } + + { + /* Trigger the bug whereby quotearg_buffer would read beyond the NUL + that defines the end of the string being quoted. Use an input + string whose NUL is the last byte before an unreadable page. */ + char *z = zerosize_ptr (); + + if (z) + { + size_t q_len = 1024; + char *q = malloc (q_len + 1); + char buf[10]; + memset (q, 'Q', q_len); + q[q_len] = 0; + + /* Z points to the boundary between a readable/writable page + and one that is neither readable nor writable. Position + our string so its NUL is at the end of the writable one. */ + char const *str = "____"; + size_t s_len = strlen (str); + z -= s_len + 1; + memcpy (z, str, s_len + 1); + + set_custom_quoting (NULL, q, q); + /* Whether this actually triggers a SEGV depends on the + implementation of memcmp: whether it compares only byte-at- + a-time, and from left to right (no SEGV) or some other way. */ + size_t n = quotearg_buffer (buf, sizeof buf, z, SIZE_MAX, NULL); + ASSERT (n == s_len + 2 * q_len); + ASSERT (memcmp (buf, q, sizeof buf) == 0); + free (q); + } + } + + quotearg_free (); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-quotearg.h b/gettext-tools/gnulib-tests/test-quotearg.h new file mode 100644 index 0000000..5fa7233 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-quotearg.h @@ -0,0 +1,132 @@ +/* Test of quotearg family of functions. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2008. */ + +struct result_strings { + char const *str1; /* Translation of "". */ + char const *str2; /* Translation of "\0""1\0". */ + size_t len2; /* Length of str2. */ + char const *str3; /* Translation of "simple". */ + char const *str4; /* Translation of " \t\n'\"\033?""?/\\". */ + char const *str5; /* Translation of "a:b". */ + char const *str6; /* Translation of "a\\b". */ + char const *str7a; /* Translation of LQ RQ, in ASCII charset. */ + char const *str7b; /* Translation of LQ RQ, in Latin1 or UTF-8 charset. */ +}; + +struct result_groups { + struct result_strings group1; /* Via quotearg_buffer. */ + struct result_strings group2; /* Via quotearg{,_mem}. */ + struct result_strings group3; /* Via quotearg_colon{,_mem}. */ +}; + +/* These quotes are borrowed from a pt_PT.utf8 translation. */ +# define LQ "\302\253" +# define RQ "\302\273" +# define LQ_ENC "\\302\\253" +# define RQ_ENC "\\302\\273" +# define RQ_ESC "\\\302\273" + +static struct result_strings inputs = { + "", "\0001\0", 3, "simple", " \t\n'\"\033?""?/\\", "a:b", "a\\b", + LQ RQ, NULL +}; + +static void +compare (char const *a, size_t la, char const *b, size_t lb) +{ + ASSERT (la == lb); + ASSERT (memcmp (a, b, la) == 0); + ASSERT (b[lb] == '\0'); +} + +static void +compare_strings (char *(func) (char const *, size_t *), + struct result_strings *results, bool ascii_only) +{ + size_t len; + char *p; + + len = 0; + p = func (inputs.str1, &len); + compare (results->str1, strlen (results->str1), p, len); + + len = inputs.len2; + p = func (inputs.str2, &len); + compare (results->str2, results->len2, p, len); + + len = SIZE_MAX; + p = func (inputs.str3, &len); + compare (results->str3, strlen (results->str3), p, len); + + len = strlen (inputs.str4); + p = func (inputs.str4, &len); + compare (results->str4, strlen (results->str4), p, len); + + len = SIZE_MAX; + p = func (inputs.str5, &len); + compare (results->str5, strlen (results->str5), p, len); + + len = strlen (inputs.str6); + p = func (inputs.str6, &len); + compare (results->str6, strlen (results->str6), p, len); + + len = strlen (inputs.str7a); + p = func (inputs.str7a, &len); + if (ascii_only) + compare (results->str7a, strlen (results->str7a), p, len); + else + compare (results->str7b, strlen (results->str7b), p, len); +} + +static char * +use_quotearg_buffer (const char *str, size_t *len) +{ + static char buf[100]; + size_t size; + memset (buf, 0xa5, 100); + size = quotearg_buffer (buf, 100, str, *len, NULL); + *len = size; + ASSERT ((unsigned char) buf[size + 1] == 0xa5); + return buf; +} + +static char * +use_quotearg (const char *str, size_t *len) +{ + char *p = *len == SIZE_MAX ? quotearg (str) : quotearg_mem (str, *len); + *len = strlen (p); + return p; +} + +static char * +use_quote_double_quotes (const char *str, size_t *len) +{ + char *p = *len == SIZE_MAX ? quotearg_char (str, '"') + : quotearg_char_mem (str, *len, '"'); + *len = strlen (p); + return p; +} + +static char * +use_quotearg_colon (const char *str, size_t *len) +{ + char *p = (*len == SIZE_MAX ? quotearg_colon (str) + : quotearg_colon_mem (str, *len)); + *len = strlen (p); + return p; +} diff --git a/gettext-tools/gnulib-tests/test-raise.c b/gettext-tools/gnulib-tests/test-raise.c new file mode 100644 index 0000000..bfe4352 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-raise.c @@ -0,0 +1,50 @@ +/* Test raising a signal. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <signal.h> + +#include "signature.h" +SIGNATURE_CHECK (raise, int, (int)); + +#include <stdlib.h> + +#include "macros.h" + +/* It is safe to use _Noreturn here: exit() never returns, and GCC knows that + exit() is a non-returning function, even on platforms where its declaration + in <stdlib.h> does not have the 'noreturn' attribute. */ +static _Noreturn void +handler (int sig) +{ + exit (0); +} + +int +main (void) +{ + /* Test behaviour for invalid argument. */ + ASSERT (raise (-1) != 0); + + /* Test behaviour for SIGINT. */ + ASSERT (signal (SIGINT, handler) != SIG_ERR); + + raise (SIGINT); + + /* We should not get here, because the handler takes away the control. */ + exit (1); +} diff --git a/gettext-tools/gnulib-tests/test-rawmemchr.c b/gettext-tools/gnulib-tests/test-rawmemchr.c new file mode 100644 index 0000000..c8a26bb --- /dev/null +++ b/gettext-tools/gnulib-tests/test-rawmemchr.c @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2008-2014 Free Software Foundation, Inc. + * Written by Eric Blake and Bruno Haible + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <string.h> + +#include "signature.h" +SIGNATURE_CHECK (rawmemchr, void *, (void const *, int)); + +#include <stdlib.h> + +#include "zerosize-ptr.h" +#include "macros.h" + +/* Calculating void * + int is not portable, so this wrapper converts + to char * to make the tests easier to write. */ +#define RAWMEMCHR (char *) rawmemchr + +int +main (void) +{ + size_t n = 0x100000; + char *input = malloc (n + 1); + ASSERT (input); + + input[0] = 'a'; + input[1] = 'b'; + memset (input + 2, 'c', 1024); + memset (input + 1026, 'd', n - 1028); + input[n - 2] = 'e'; + input[n - 1] = 'a'; + input[n] = '\0'; + + /* Basic behavior tests. */ + ASSERT (RAWMEMCHR (input, 'a') == input); + ASSERT (RAWMEMCHR (input, 'b') == input + 1); + ASSERT (RAWMEMCHR (input, 'c') == input + 2); + ASSERT (RAWMEMCHR (input, 'd') == input + 1026); + + ASSERT (RAWMEMCHR (input + 1, 'a') == input + n - 1); + ASSERT (RAWMEMCHR (input + 1, 'e') == input + n - 2); + ASSERT (RAWMEMCHR (input + 1, 0x789abc00 | 'e') == input + n - 2); + + ASSERT (RAWMEMCHR (input, '\0') == input + n); + + /* Alignment tests. */ + { + int i, j; + for (i = 0; i < 32; i++) + { + for (j = 0; j < 256; j++) + input[i + j] = j; + for (j = 0; j < 256; j++) + { + ASSERT (RAWMEMCHR (input + i, j) == input + i + j); + } + } + } + + /* Ensure that no unaligned oversized reads occur. */ + { + char *page_boundary = (char *) zerosize_ptr (); + size_t i; + + if (!page_boundary) + page_boundary = input + 4096; + memset (page_boundary - 512, '1', 511); + page_boundary[-1] = '2'; + for (i = 1; i <= 512; i++) + ASSERT (RAWMEMCHR (page_boundary - i, (i * 0x01010100) | '2') + == page_boundary - 1); + } + + free (input); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-read-file.c b/gettext-tools/gnulib-tests/test-read-file.c new file mode 100644 index 0000000..fff96ec --- /dev/null +++ b/gettext-tools/gnulib-tests/test-read-file.c @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2006-2007, 2010-2014 Free Software Foundation, Inc. + * Written by Simon Josefsson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include "read-file.h" + +#include <stdio.h> +#include <stdlib.h> +#include <sys/stat.h> + +#define FILE1 "/etc/resolv.conf" +#define FILE2 "/dev/null" + +int +main (void) +{ + struct stat statbuf; + int err = 0; + + /* We can perform the test only if the file exists and is readable. + Test whether it exists, then assume it is world-readable. */ + if (stat (FILE1, &statbuf) >= 0) + { + size_t len; + char *out = read_file (FILE1, &len); + + if (!out) + { + perror ("Could not read file"); + err = 1; + } + else + { + if (out[len] != '\0') + { + perror ("BAD: out[len] not zero"); + err = 1; + } + + if (S_ISREG (statbuf.st_mode)) + { + /* FILE1 is a regular file or a symlink to a regular file. */ + if (len != statbuf.st_size) + { + fprintf (stderr, "Read %ld from %s...\n", (unsigned long) len, FILE1); + err = 1; + } + } + else + { + /* Assume FILE1 is not empty. */ + if (len == 0) + { + fprintf (stderr, "Read nothing from %s\n", FILE1); + err = 1; + } + } + free (out); + } + } + + /* We can perform the test only if the file exists and is readable. + Test whether it exists, then assume it is world-readable. */ + if (stat (FILE2, &statbuf) >= 0) + { + size_t len; + char *out = read_file (FILE2, &len); + + if (!out) + { + perror ("Could not read file"); + err = 1; + } + else + { + if (out[len] != '\0') + { + perror ("BAD: out[len] not zero"); + err = 1; + } + + /* /dev/null should always be empty. Ignore statbuf.st_size, since it + is not a regular file. */ + if (len != 0) + { + fprintf (stderr, "Read %ld from %s...\n", (unsigned long) len, FILE2); + err = 1; + } + free (out); + } + } + + return err; +} diff --git a/gettext-tools/gnulib-tests/test-read.c b/gettext-tools/gnulib-tests/test-read.c new file mode 100644 index 0000000..541e4b9 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-read.c @@ -0,0 +1,73 @@ +/* Test the read() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (read, ssize_t, (int, void *, size_t)); + +#include <errno.h> +#include <fcntl.h> +#include <string.h> + +#include "macros.h" + +int +main (void) +{ + const char *filename = "test-read.tmp"; + int fd; + + /* Create a file with a simple contents. */ + fd = open (filename, O_CREAT | O_WRONLY, 0600); + ASSERT (fd >= 0); + ASSERT (write (fd, "Hello World", 11) == 11); + ASSERT (close (fd) == 0); + + /* Read from the middle of the file. */ + fd = open (filename, O_RDONLY); + ASSERT (fd >= 0); + ASSERT (lseek (fd, 6, SEEK_SET) == 6); + { + char buf[10]; + ssize_t ret = read (fd, buf, 10); + ASSERT (ret == 5); + ASSERT (memcmp (buf, "World", 5) == 0); + } + ASSERT (close (fd) == 0); + + /* Test behaviour for invalid file descriptors. */ + { + char byte; + errno = 0; + ASSERT (read (-1, &byte, 1) == -1); + ASSERT (errno == EBADF); + } + { + char byte; + close (99); + errno = 0; + ASSERT (read (99, &byte, 1) == -1); + ASSERT (errno == EBADF); + } + + /* Clean up. */ + unlink (filename); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-readlink.c b/gettext-tools/gnulib-tests/test-readlink.c new file mode 100644 index 0000000..e6adbe5 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-readlink.c @@ -0,0 +1,48 @@ +/* Tests of readlink. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (readlink, ssize_t, (char const *, char *, size_t)); + +#include <fcntl.h> +#include <errno.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> + +#include "ignore-value.h" +#include "macros.h" + +#define BASE "test-readlink.t" + +#include "test-readlink.h" + +int +main (void) +{ + /* Remove any leftovers from a previous partial run. */ + ignore_value (system ("rm -rf " BASE "*")); + + return test_readlink (readlink, true); +} diff --git a/gettext-tools/gnulib-tests/test-readlink.h b/gettext-tools/gnulib-tests/test-readlink.h new file mode 100644 index 0000000..33039de --- /dev/null +++ b/gettext-tools/gnulib-tests/test-readlink.h @@ -0,0 +1,119 @@ +/* Tests of readlink. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +/* This file is designed to test both readlink(a,b,c) and + readlinkat(AT_FDCWD,a,b,c). FUNC is the function to test. Assumes + that BASE and ASSERT are already defined, and that appropriate + headers are already included. If PRINT, warn before skipping + symlink tests with status 77. */ + +static int +test_readlink (ssize_t (*func) (char const *, char *, size_t), bool print) +{ + char buf[80]; + + /* Sanity checks of failures. Mingw lacks symlink, but readlink can + still distinguish between various errors. */ + memset (buf, 0xff, sizeof buf); + errno = 0; + ASSERT (func ("no_such", buf, sizeof buf) == -1); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("no_such/", buf, sizeof buf) == -1); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("", buf, sizeof buf) == -1); + ASSERT (errno == ENOENT || errno == EINVAL); + errno = 0; + ASSERT (func (".", buf, sizeof buf) == -1); + ASSERT (errno == EINVAL); + errno = 0; + ASSERT (func ("./", buf, sizeof buf) == -1); + ASSERT (errno == EINVAL); + ASSERT (close (creat (BASE "file", 0600)) == 0); + errno = 0; + ASSERT (func (BASE "file", buf, sizeof buf) == -1); + ASSERT (errno == EINVAL); + errno = 0; + ASSERT (func (BASE "file/", buf, sizeof buf) == -1); + ASSERT (errno == ENOTDIR || errno == EINVAL); /* AIX yields EINVAL */ + + /* Now test actual symlinks. */ + if (symlink (BASE "dir", BASE "link")) + { + ASSERT (unlink (BASE "file") == 0); + if (print) + fputs ("skipping test: symlinks not supported on this file system\n", + stderr); + return 77; + } + ASSERT (mkdir (BASE "dir", 0700) == 0); + errno = 0; + ASSERT (func (BASE "link/", buf, sizeof buf) == -1); + ASSERT (errno == EINVAL); + ASSERT (symlink (BASE "link", BASE "link2") == 0); + errno = 0; + ASSERT (func (BASE "link2/", buf, sizeof buf) == -1); + ASSERT (errno == EINVAL); + ASSERT (unlink (BASE "link2") == 0); + ASSERT (symlink (BASE "file", BASE "link2") == 0); + errno = 0; + ASSERT (func (BASE "link2/", buf, sizeof buf) == -1); + ASSERT (errno == ENOTDIR || errno == EINVAL); /* AIX yields EINVAL */ + ASSERT (unlink (BASE "file") == 0); + ASSERT (unlink (BASE "link2") == 0); + { + /* Up till now, no readlink has been successful, so buf should be + unchanged. */ + int i; + for (i = 0; i < sizeof buf; i++) + ASSERT (buf[i] == (char) 0xff); + } + { + size_t len = strlen (BASE "dir"); + /* When passing too small of a buffer, expect the truncated + length, or an ERANGE failure. However, a size of 0 is not + portable enough to test. */ + ssize_t result; + errno = 0; + result = readlink (BASE "link", buf, 1); + if (result == -1) + { + ASSERT (errno == ERANGE); + ASSERT (buf[0] == (char) 0xff); + } + else + { + ASSERT (result == 1); + ASSERT (buf[0] == BASE[0]); + } + ASSERT (buf[1] == (char) 0xff); + ASSERT (func (BASE "link", buf, len) == len); + ASSERT (strncmp (buf, BASE "dir", len) == 0); + ASSERT (buf[len] == (char) 0xff); + ASSERT (func (BASE "link", buf, sizeof buf) == len); + ASSERT (strncmp (buf, BASE "dir", len) == 0); + /* POSIX says rest of buf is unspecified; but in practice, it is + either left alone, or NUL-terminated. */ + ASSERT (buf[len] == '\0' || buf[len] == (char) 0xff); + } + ASSERT (rmdir (BASE "dir") == 0); + ASSERT (unlink (BASE "link") == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-rmdir.c b/gettext-tools/gnulib-tests/test-rmdir.c new file mode 100644 index 0000000..4903a57 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-rmdir.c @@ -0,0 +1,47 @@ +/* Tests of rmdir. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (rmdir, int, (char const *)); + +#include <fcntl.h> +#include <errno.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <sys/stat.h> + +#include "ignore-value.h" +#include "macros.h" + +#define BASE "test-rmdir.t" + +#include "test-rmdir.h" + +int +main (void) +{ + /* Remove any leftovers from a previous partial run. */ + ignore_value (system ("rm -rf " BASE "*")); + + return test_rmdir_func (rmdir, true); +} diff --git a/gettext-tools/gnulib-tests/test-rmdir.h b/gettext-tools/gnulib-tests/test-rmdir.h new file mode 100644 index 0000000..daaa415 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-rmdir.h @@ -0,0 +1,102 @@ +/* Tests of rmdir. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +/* This file is designed to test both rmdir(n) and + unlinkat(AT_FDCWD,n,AT_REMOVEDIR). FUNC is the function to test. + Assumes that BASE and ASSERT are already defined, and that + appropriate headers are already included. If PRINT, then warn + before returning status 77 when symlinks are unsupported. */ + +static int +test_rmdir_func (int (*func) (char const *name), bool print) +{ + /* Setup. */ + ASSERT (mkdir (BASE "dir", 0700) == 0); + ASSERT (close (creat (BASE "dir/file", 0600)) == 0); + + /* Basic error conditions. */ + errno = 0; + ASSERT (func ("") == -1); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func (BASE "nosuch") == -1); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func (BASE "nosuch/") == -1); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func (".") == -1); + ASSERT (errno == EINVAL || errno == EBUSY); + /* Resulting errno after ".." or "/" is too varied to test; it is + reasonable to see any of EINVAL, EBUSY, EEXIST, ENOTEMPTY, + EACCES, EPERM. */ + ASSERT (func ("..") == -1); + ASSERT (func ("/") == -1); + ASSERT (func ("///") == -1); + errno = 0; + ASSERT (func (BASE "dir/file/") == -1); + ASSERT (errno == ENOTDIR); + + /* Non-empty directory. */ + errno = 0; + ASSERT (func (BASE "dir") == -1); + ASSERT (errno == EEXIST || errno == ENOTEMPTY); + + /* Non-directory. */ + errno = 0; + ASSERT (func (BASE "dir/file") == -1); + ASSERT (errno == ENOTDIR); + + /* Empty directory. */ + ASSERT (unlink (BASE "dir/file") == 0); + errno = 0; + ASSERT (func (BASE "dir/.//") == -1); + ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST + || errno == ENOTEMPTY); + ASSERT (func (BASE "dir") == 0); + + /* Test symlink behavior. Specifying trailing slash should remove + referent directory (POSIX), or cause ENOTDIR failure (Linux), but + not touch symlink. We prefer the Linux behavior for its + intuitiveness (especially compared to rmdir("symlink-to-file/")), + but not enough to penalize POSIX systems with an rpl_rmdir. */ + if (symlink (BASE "dir", BASE "link") != 0) + { + if (print) + fputs ("skipping test: symlinks not supported on this file system\n", + stderr); + return 77; + } + ASSERT (mkdir (BASE "dir", 0700) == 0); + errno = 0; + if (func (BASE "link/") == 0) + { + struct stat st; + errno = 0; + ASSERT (stat (BASE "link", &st) == -1); + ASSERT (errno == ENOENT); + } + else + { + ASSERT (errno == ENOTDIR); + ASSERT (func (BASE "dir") == 0); + } + ASSERT (unlink (BASE "link") == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-sameacls.c b/gettext-tools/gnulib-tests/test-sameacls.c new file mode 100644 index 0000000..70e15c2 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sameacls.c @@ -0,0 +1,698 @@ +/* Test whether two files have the same ACLs. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> + +#if HAVE_ACL_GET_FILE || HAVE_FACL || HAVE_GETACL || HAVE_ACLX_GET || HAVE_STATACL || HAVE_ACLSORT +# include <sys/types.h> +# include <sys/acl.h> +#endif +#if HAVE_ACLV_H +# include <sys/types.h> +# include <aclv.h> +#endif + +#include "progname.h" +#include "read-file.h" +#include "xalloc.h" +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + const char *file1; + const char *file2; + + set_program_name (argv[0]); + + ASSERT (argc == 3); + + file1 = argv[1]; + file2 = argv[2]; + + /* Compare the contents of the two files. */ + { + size_t size1; + char *contents1; + size_t size2; + char *contents2; + + contents1 = read_file (file1, &size1); + if (contents1 == NULL) + { + fprintf (stderr, "error reading file %s: errno = %d\n", file1, errno); + fflush (stderr); + abort (); + } + contents2 = read_file (file2, &size2); + if (contents2 == NULL) + { + fprintf (stderr, "error reading file %s: errno = %d\n", file2, errno); + fflush (stderr); + abort (); + } + + if (size2 != size1) + { + fprintf (stderr, "files %s and %s have different sizes\n", + file1, file2); + fflush (stderr); + abort (); + } + if (memcmp (contents1, contents2, size1) != 0) + { + fprintf (stderr, "files %s and %s have different contents\n", + file1, file2); + fflush (stderr); + abort (); + } + } + + /* Compare the access permissions of the two files, including ACLs. */ + { + struct stat statbuf1; + struct stat statbuf2; + + if (stat (file1, &statbuf1) < 0) + { + fprintf (stderr, "error accessing file %s: errno = %d\n", file1, errno); + fflush (stderr); + abort (); + } + if (stat (file2, &statbuf2) < 0) + { + fprintf (stderr, "error accessing file %s: errno = %d\n", file2, errno); + fflush (stderr); + abort (); + } + if (statbuf1.st_mode != statbuf2.st_mode) + { + fprintf (stderr, "files %s and %s have different access modes: %03o and %03o\n", + file1, file2, + (unsigned int) statbuf1.st_mode, (unsigned int) statbuf2.st_mode); + return 1; + } + } + { +#if HAVE_ACL_GET_FILE /* Linux, FreeBSD, Mac OS X, IRIX, Tru64 */ + static const int types[] = + { + ACL_TYPE_ACCESS +# if HAVE_ACL_TYPE_EXTENDED /* Mac OS X */ + , ACL_TYPE_EXTENDED +# endif + }; + int t; + + for (t = 0; t < sizeof (types) / sizeof (types[0]); t++) + { + int type = types[t]; + acl_t acl1; + char *text1; + int errno1; + acl_t acl2; + char *text2; + int errno2; + + acl1 = acl_get_file (file1, type); + if (acl1 == (acl_t)NULL) + { + text1 = NULL; + errno1 = errno; + } + else + { + text1 = acl_to_text (acl1, NULL); + if (text1 == NULL) + errno1 = errno; + else + errno1 = 0; + } + acl2 = acl_get_file (file2, type); + if (acl2 == (acl_t)NULL) + { + text2 = NULL; + errno2 = errno; + } + else + { + text2 = acl_to_text (acl2, NULL); + if (text2 == NULL) + errno2 = errno; + else + errno2 = 0; + } + + if (acl1 != (acl_t)NULL) + { + if (acl2 != (acl_t)NULL) + { + if (text1 != NULL) + { + if (text2 != NULL) + { + if (strcmp (text1, text2) != 0) + { + fprintf (stderr, "files %s and %s have different ACLs:\n%s\n%s\n", + file1, file2, text1, text2); + return 1; + } + } + else + { + fprintf (stderr, "file %s has a valid ACL, but file %s has an invalid ACL\n", + file1, file2); + return 1; + } + } + else + { + if (text2 != NULL) + { + fprintf (stderr, "file %s has an invalid ACL, but file %s has a valid ACL\n", + file1, file2); + return 1; + } + else + { + if (errno1 != errno2) + { + fprintf (stderr, "files %s and %s have differently invalid ACLs, errno = %d vs. %d\n", + file1, file2, errno1, errno2); + return 1; + } + } + } + } + else + { + fprintf (stderr, "file %s has an ACL, but file %s has no ACL\n", + file1, file2); + return 1; + } + } + else + { + if (acl2 != (acl_t)NULL) + { + fprintf (stderr, "file %s has no ACL, but file %s has an ACL\n", + file1, file2); + return 1; + } + } + } +#elif HAVE_FACL && defined GETACL /* Solaris, Cygwin, not HP-UX */ + int count1; + int count2; + + count1 = acl (file1, GETACLCNT, 0, NULL); + if (count1 < 0 && errno == ENOSYS) /* Can happen on Solaris 10 with ZFS */ + count1 = 0; + count2 = acl (file2, GETACLCNT, 0, NULL); + if (count2 < 0 && errno == ENOSYS) /* Can happen on Solaris 10 with ZFS */ + count2 = 0; + + if (count1 < 0) + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + if (count2 < 0) + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + if (count1 != count2) + { + fprintf (stderr, "files %s and %s have different number of ACLs: %d and %d\n", + file1, file2, count1, count2); + return 1; + } + else + { + aclent_t *entries1 = XNMALLOC (count1, aclent_t); + aclent_t *entries2 = XNMALLOC (count2, aclent_t); + int i; + + if (count1 > 0 && acl (file1, GETACL, count1, entries1) < count1) + { + fprintf (stderr, "error retrieving the ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + if (count2 > 0 && acl (file2, GETACL, count2, entries2) < count1) + { + fprintf (stderr, "error retrieving the ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + for (i = 0; i < count1; i++) + { + if (entries1[i].a_type != entries2[i].a_type) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different types %d and %d\n", + file1, file2, i, entries1[i].a_type, entries2[i].a_type); + return 1; + } + if (entries1[i].a_id != entries2[i].a_id) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different ids %d and %d\n", + file1, file2, i, (int)entries1[i].a_id, (int)entries2[i].a_id); + return 1; + } + if (entries1[i].a_perm != entries2[i].a_perm) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different permissions %03o and %03o\n", + file1, file2, i, (unsigned int) entries1[i].a_perm, (unsigned int) entries2[i].a_perm); + return 1; + } + } + } +# ifdef ACE_GETACL + count1 = acl (file1, ACE_GETACLCNT, 0, NULL); + if (count1 < 0 && errno == EINVAL) + count1 = 0; + count2 = acl (file2, ACE_GETACLCNT, 0, NULL); + if (count2 < 0 && errno == EINVAL) + count2 = 0; + if (count1 < 0) + { + fprintf (stderr, "error accessing the ACE-ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + if (count2 < 0) + { + fprintf (stderr, "error accessing the ACE-ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + { + ace_t *entries1 = XNMALLOC (count1, ace_t); + ace_t *entries2 = XNMALLOC (count2, ace_t); + int ret; + int i; + + ret = acl (file1, ACE_GETACL, count1, entries1); + if (ret < 0 && errno == EINVAL) + count1 = 0; + else if (ret < count1) + { + fprintf (stderr, "error retrieving the ACE-ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + ret = acl (file2, ACE_GETACL, count2, entries2); + if (ret < 0 && errno == EINVAL) + count2 = 0; + else if (ret < count2) + { + fprintf (stderr, "error retrieving the ACE-ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + + if (count1 != count2) + { + fprintf (stderr, "files %s and %s have different number of ACE-ACLs: %d and %d\n", + file1, file2, count1, count2); + return 1; + } + + for (i = 0; i < count1; i++) + { + if (entries1[i].a_type != entries2[i].a_type) + { + fprintf (stderr, "files %s and %s: different ACE-ACL entry #%d: different types %d and %d\n", + file1, file2, i, entries1[i].a_type, entries2[i].a_type); + return 1; + } + if (entries1[i].a_who != entries2[i].a_who) + { + fprintf (stderr, "files %s and %s: different ACE-ACL entry #%d: different ids %d and %d\n", + file1, file2, i, (int)entries1[i].a_who, (int)entries2[i].a_who); + return 1; + } + if (entries1[i].a_access_mask != entries2[i].a_access_mask) + { + fprintf (stderr, "files %s and %s: different ACE-ACL entry #%d: different access masks %03o and %03o\n", + file1, file2, i, (unsigned int) entries1[i].a_access_mask, (unsigned int) entries2[i].a_access_mask); + return 1; + } + if (entries1[i].a_flags != entries2[i].a_flags) + { + fprintf (stderr, "files %s and %s: different ACE-ACL entry #%d: different flags 0x%x and 0x%x\n", + file1, file2, i, (unsigned int) entries1[i].a_flags, (unsigned int) entries2[i].a_flags); + return 1; + } + } + } +# endif +#elif HAVE_GETACL /* HP-UX */ + int count1; + int count2; + + count1 = getacl (file1, 0, NULL); + if (count1 < 0 + && (errno == ENOSYS || errno == EOPNOTSUPP || errno == ENOTSUP)) + count1 = 0; + count2 = getacl (file2, 0, NULL); + if (count2 < 0 + && (errno == ENOSYS || errno == EOPNOTSUPP || errno == ENOTSUP)) + count2 = 0; + + if (count1 < 0) + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + if (count2 < 0) + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + if (count1 != count2) + { + fprintf (stderr, "files %s and %s have different number of ACLs: %d and %d\n", + file1, file2, count1, count2); + return 1; + } + else if (count1 > 0) + { + struct acl_entry *entries1 = XNMALLOC (count1, struct acl_entry); + struct acl_entry *entries2 = XNMALLOC (count2, struct acl_entry); + int i; + + if (getacl (file1, count1, entries1) < count1) + { + fprintf (stderr, "error retrieving the ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + if (getacl (file2, count2, entries2) < count1) + { + fprintf (stderr, "error retrieving the ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + for (i = 0; i < count1; i++) + { + if (entries1[i].uid != entries2[i].uid) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different uids %d and %d\n", + file1, file2, i, (int)entries1[i].uid, (int)entries2[i].uid); + return 1; + } + if (entries1[i].gid != entries2[i].gid) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different gids %d and %d\n", + file1, file2, i, (int)entries1[i].gid, (int)entries2[i].gid); + return 1; + } + if (entries1[i].mode != entries2[i].mode) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different permissions %03o and %03o\n", + file1, file2, i, (unsigned int) entries1[i].mode, (unsigned int) entries2[i].mode); + return 1; + } + } + } + +# if HAVE_ACLV_H /* HP-UX >= 11.11 */ + { + struct acl dummy_entries[NACLVENTRIES]; + + count1 = acl ((char *) file1, ACL_CNT, NACLVENTRIES, dummy_entries); + if (count1 < 0 + && (errno == ENOSYS || errno == EOPNOTSUPP || errno == EINVAL)) + count1 = 0; + count2 = acl ((char *) file2, ACL_CNT, NACLVENTRIES, dummy_entries); + if (count2 < 0 + && (errno == ENOSYS || errno == EOPNOTSUPP || errno == EINVAL)) + count2 = 0; + } + + if (count1 < 0) + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + if (count2 < 0) + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + if (count1 != count2) + { + fprintf (stderr, "files %s and %s have different number of ACLs: %d and %d\n", + file1, file2, count1, count2); + return 1; + } + else if (count1 > 0) + { + struct acl *entries1 = XNMALLOC (count1, struct acl); + struct acl *entries2 = XNMALLOC (count2, struct acl); + int i; + + if (acl ((char *) file1, ACL_GET, count1, entries1) < count1) + { + fprintf (stderr, "error retrieving the ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + if (acl ((char *) file2, ACL_GET, count2, entries2) < count1) + { + fprintf (stderr, "error retrieving the ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + for (i = 0; i < count1; i++) + { + if (entries1[i].a_type != entries2[i].a_type) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different types %d and %d\n", + file1, file2, i, entries1[i].a_type, entries2[i].a_type); + return 1; + } + if (entries1[i].a_id != entries2[i].a_id) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different ids %d and %d\n", + file1, file2, i, (int)entries1[i].a_id, (int)entries2[i].a_id); + return 1; + } + if (entries1[i].a_perm != entries2[i].a_perm) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different permissions %03o and %03o\n", + file1, file2, i, (unsigned int) entries1[i].a_perm, (unsigned int) entries2[i].a_perm); + return 1; + } + } + } +# endif +#elif HAVE_ACLX_GET /* AIX */ + acl_type_t type1; + char acl1[1000]; + size_t aclsize1 = sizeof (acl1); + mode_t mode1; + char text1[1000]; + size_t textsize1 = sizeof (text1); + acl_type_t type2; + char acl2[1000]; + size_t aclsize2 = sizeof (acl2); + mode_t mode2; + char text2[1000]; + size_t textsize2 = sizeof (text2); + + /* The docs say that type1 being 0 is equivalent to ACL_ANY, but it is not + true, in AIX 5.3. */ + type1.u64 = ACL_ANY; + if (aclx_get (file1, 0, &type1, acl1, &aclsize1, &mode1) < 0) + { + if (errno == ENOSYS) + text1[0] = '\0'; + else + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + } + else + if (aclx_printStr (text1, &textsize1, acl1, aclsize1, type1, file1, 0) < 0) + { + fprintf (stderr, "cannot convert the ACLs of file %s to text\n", file1); + fflush (stderr); + abort (); + } + + /* The docs say that type2 being 0 is equivalent to ACL_ANY, but it is not + true, in AIX 5.3. */ + type2.u64 = ACL_ANY; + if (aclx_get (file2, 0, &type2, acl2, &aclsize2, &mode2) < 0) + { + if (errno == ENOSYS) + text2[0] = '\0'; + else + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + } + else + if (aclx_printStr (text2, &textsize2, acl2, aclsize2, type2, file2, 0) < 0) + { + fprintf (stderr, "cannot convert the ACLs of file %s to text\n", file2); + fflush (stderr); + abort (); + } + + if (strcmp (text1, text2) != 0) + { + fprintf (stderr, "files %s and %s have different ACLs:\n%s\n%s\n", + file1, file2, text1, text2); + return 1; + } +#elif HAVE_STATACL /* older AIX */ + union { struct acl a; char room[4096]; } acl1; + union { struct acl a; char room[4096]; } acl2; + unsigned int i; + + if (statacl (file1, STX_NORMAL, &acl1.a, sizeof (acl1)) < 0) + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + if (statacl (file2, STX_NORMAL, &acl2.a, sizeof (acl2)) < 0) + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + + if (acl1.a.acl_len != acl2.a.acl_len) + { + fprintf (stderr, "files %s and %s have different ACL lengths: %u and %u\n", + file1, file2, acl1.a.acl_len, acl2.a.acl_len); + return 1; + } + if (acl1.a.acl_mode != acl2.a.acl_mode) + { + fprintf (stderr, "files %s and %s have different ACL modes: %03o and %03o\n", + file1, file2, acl1.a.acl_mode, acl2.a.acl_mode); + return 1; + } + if (acl1.a.u_access != acl2.a.u_access + || acl1.a.g_access != acl2.a.g_access + || acl1.a.o_access != acl2.a.o_access) + { + fprintf (stderr, "files %s and %s have different ACL access masks: %03o %03o %03o and %03o %03o %03o\n", + file1, file2, + acl1.a.u_access, acl1.a.g_access, acl1.a.o_access, + acl2.a.u_access, acl2.a.g_access, acl2.a.o_access); + return 1; + } + if (memcmp (acl1.a.acl_ext, acl2.a.acl_ext, acl1.a.acl_len) != 0) + { + fprintf (stderr, "files %s and %s have different ACL entries\n", + file1, file2); + return 1; + } +#elif HAVE_ACLSORT /* NonStop Kernel */ + int count1; + int count2; + + count1 = acl ((char *) file1, ACL_CNT, NACLENTRIES, NULL); + count2 = acl ((char *) file2, ACL_CNT, NACLENTRIES, NULL); + + if (count1 < 0) + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + if (count2 < 0) + { + fprintf (stderr, "error accessing the ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + if (count1 != count2) + { + fprintf (stderr, "files %s and %s have different number of ACLs: %d and %d\n", + file1, file2, count1, count2); + return 1; + } + else if (count1 > 0) + { + struct acl *entries1 = XNMALLOC (count1, struct acl); + struct acl *entries2 = XNMALLOC (count2, struct acl); + int i; + + if (acl ((char *) file1, ACL_GET, count1, entries1) < count1) + { + fprintf (stderr, "error retrieving the ACLs of file %s\n", file1); + fflush (stderr); + abort (); + } + if (acl ((char *) file2, ACL_GET, count2, entries2) < count1) + { + fprintf (stderr, "error retrieving the ACLs of file %s\n", file2); + fflush (stderr); + abort (); + } + for (i = 0; i < count1; i++) + { + if (entries1[i].a_type != entries2[i].a_type) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different types %d and %d\n", + file1, file2, i, entries1[i].a_type, entries2[i].a_type); + return 1; + } + if (entries1[i].a_id != entries2[i].a_id) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different ids %d and %d\n", + file1, file2, i, (int)entries1[i].a_id, (int)entries2[i].a_id); + return 1; + } + if (entries1[i].a_perm != entries2[i].a_perm) + { + fprintf (stderr, "files %s and %s: different ACL entry #%d: different permissions %03o and %03o\n", + file1, file2, i, (unsigned int) entries1[i].a_perm, (unsigned int) entries2[i].a_perm); + return 1; + } + } + } +#endif + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-sched.c b/gettext-tools/gnulib-tests/test-sched.c new file mode 100644 index 0000000..f442909 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sched.c @@ -0,0 +1,41 @@ +/* Test of <sched.h> substitute. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <sched.h> + +/* Check that 'struct sched_param' is defined. */ +static struct sched_param a; + +/* Check that the SCHED_* macros are defined and compile-time constants. */ +int b[] = { SCHED_FIFO, SCHED_RR, SCHED_OTHER }; + +/* Check that the types are all defined. */ +pid_t t1; + +static int f1; + +int +main () +{ + /* Check fields of 'struct sched_param'. */ + f1 = a.sched_priority; + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-set-mode-acl-1.sh b/gettext-tools/gnulib-tests/test-set-mode-acl-1.sh new file mode 100755 index 0000000..68c247c --- /dev/null +++ b/gettext-tools/gnulib-tests/test-set-mode-acl-1.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# Test set-mode-acl on the file system of /var/tmp, which usually is a local +# file system. + +if test -d /var/tmp; then + TMPDIR=/var/tmp +else + TMPDIR=/tmp +fi +export TMPDIR + +exec "${srcdir}/test-set-mode-acl.sh" diff --git a/gettext-tools/gnulib-tests/test-set-mode-acl-2.sh b/gettext-tools/gnulib-tests/test-set-mode-acl-2.sh new file mode 100755 index 0000000..d1377df --- /dev/null +++ b/gettext-tools/gnulib-tests/test-set-mode-acl-2.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# Test set-mode-acl on the file system of the build directory, which may be +# a local file system or NFS mounted. + +TMPDIR=`pwd` +export TMPDIR + +exec "${srcdir}/test-set-mode-acl.sh" diff --git a/gettext-tools/gnulib-tests/test-set-mode-acl.c b/gettext-tools/gnulib-tests/test-set-mode-acl.c new file mode 100644 index 0000000..61f1975 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-set-mode-acl.c @@ -0,0 +1,44 @@ +/* Test of setting an ACL equivalent to a mode. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include "acl.h" + +#include <stdlib.h> + +#include "progname.h" +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + const char *file; + int mode; + + set_program_name (argv[0]); + + ASSERT (argc == 3); + + file = argv[1]; + mode = strtol (argv[2], NULL, 8); + + set_acl (file, -1, mode); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-set-mode-acl.sh b/gettext-tools/gnulib-tests/test-set-mode-acl.sh new file mode 100755 index 0000000..f0b1641 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-set-mode-acl.sh @@ -0,0 +1,229 @@ +#!/bin/sh + +# Show all commands when run with environment variable VERBOSE=yes. +test -z "$VERBOSE" || set -x + +test "$USE_ACL" = 0 && + { + echo "Skipping test: insufficient ACL support" + exit 77 + } + +# func_tmpdir +# creates a temporary directory. +# Sets variable +# - tmp pathname of freshly created temporary directory +func_tmpdir () +{ + # Use the environment variable TMPDIR, falling back to /tmp. This allows + # users to specify a different temporary directory, for example, if their + # /tmp is filled up or too small. + : ${TMPDIR=/tmp} + { + # Use the mktemp program if available. If not available, hide the error + # message. + tmp=`(umask 077 && mktemp -d "$TMPDIR/glXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { + # Use a simple mkdir command. It is guaranteed to fail if the directory + # already exists. $RANDOM is bash specific and expands to empty in shells + # other than bash, ksh and zsh. Its use does not increase security; + # rather, it minimizes the probability of failure in a very cluttered /tmp + # directory. + tmp=$TMPDIR/gl$$-$RANDOM + (umask 077 && mkdir "$tmp") + } || + { + echo "$0: cannot create a temporary directory in $TMPDIR" >&2 + exit 1 + } +} + +func_tmpdir +builddir=`pwd` +cd "$builddir" || + { + echo "$0: cannot determine build directory (unreadable parent dir?)" >&2 + exit 1 + } +# Switch to a temporary directory, to increase the likelihood that ACLs are +# supported on the current file system. (/tmp is usually locally mounted, +# whereas the build dir is sometimes NFS-mounted.) +( cd "$tmp" + + # Prepare tmpfile0. + rm -f tmpfile[0-9] + echo "Simple contents" > tmpfile0 + chmod 600 tmpfile0 + + # Classification of the platform according to the programs available for + # manipulating ACLs. + # Possible values are: + # linux, cygwin, freebsd, solaris, hpux, hpuxjfs, osf1, aix, macosx, irix, none. + # TODO: Support also native Windows platforms (mingw). + acl_flavor=none + if (getfacl tmpfile0 >/dev/null) 2>/dev/null; then + # Platforms with the getfacl and setfacl programs. + # Linux, FreeBSD, Solaris, Cygwin. + if (setfacl --help >/dev/null) 2>/dev/null; then + # Linux, Cygwin. + if (LC_ALL=C setfacl --help | grep ' --set-file' >/dev/null) 2>/dev/null; then + # Linux. + acl_flavor=linux + else + acl_flavor=cygwin + fi + else + # FreeBSD, Solaris. + if (LC_ALL=C setfacl 2>&1 | grep '\-x entries' >/dev/null) 2>/dev/null; then + # FreeBSD. + acl_flavor=freebsd + else + # Solaris. + acl_flavor=solaris + fi + fi + else + if (lsacl / >/dev/null) 2>/dev/null; then + # Platforms with the lsacl and chacl programs. + # HP-UX, sometimes also IRIX. + if (getacl tmpfile0 >/dev/null) 2>/dev/null; then + # HP-UX 11.11 or newer. + acl_flavor=hpuxjfs + else + # HP-UX 11.00. + acl_flavor=hpux + fi + else + if (getacl tmpfile0 >/dev/null) 2>/dev/null; then + # Tru64, NonStop Kernel. + if (getacl -m tmpfile0 >/dev/null) 2>/dev/null; then + # Tru64. + acl_flavor=osf1 + else + # NonStop Kernel. + acl_flavor=nsk + fi + else + if (aclget tmpfile0 >/dev/null) 2>/dev/null; then + # AIX. + acl_flavor=aix + else + if (fsaclctl -v >/dev/null) 2>/dev/null; then + # Mac OS X. + acl_flavor=macosx + else + if test -f /sbin/chacl; then + # IRIX. + acl_flavor=irix + fi + fi + fi + fi + fi + fi + + if test $acl_flavor != none; then + # A POSIX compliant 'id' program. + if test -f /usr/xpg4/bin/id; then + ID=/usr/xpg4/bin/id + else + ID=id + fi + # Use a user and group id different from the current one, to avoid + # redundant/ambiguous ACLs. + myuid=`$ID -u` + mygid=`$ID -g` + auid=1 + if test "$auid" = "$myuid"; then auid=2; fi + agid=1 + if test "$agid" = "$mygid"; then agid=2; fi + fi + + for mode in 700 400 200 100 644 650 605 011 4700 2070; do + rm -f tmpfile0 tmpfile1 tmpfile2 + + # Prepare a file with no ACL. + echo "Anything" > tmpfile0 + # If a mode is not supported (e.g. 2070 on FreeBSD), we skip testing it. + if chmod $mode tmpfile0 2>/dev/null; then + modestring0=`ls -l tmpfile0 | dd ibs=1 count=10 2>/dev/null` + + # Prepare a file with no ACL. + echo "Some contents" > tmpfile1 + chmod 600 tmpfile1 + + # Try to set the ACL to only the given mode. + "$builddir"/test-set-mode-acl${EXEEXT} tmpfile1 $mode + # Verify that tmpfile1 has no ACL and has the desired mode. + modestring=`ls -l tmpfile1 | dd ibs=1 count=10 2>/dev/null` + if test "x$modestring" != "x$modestring0"; then + echo "mode = $mode: tmpfile1 has wrong mode: $modestring" 1>&2 + exit 1 + fi + if test `"$builddir"/test-file-has-acl${EXEEXT} tmpfile1` != no; then + echo "mode = $mode: tmpfile1 got an ACL" 1>&2 + exit 1 + fi + + if test $acl_flavor != none; then + + # Prepare a file with an ACL. + echo "Special contents" > tmpfile2 + chmod 600 tmpfile2 + # Set an ACL for a user (or group). + case $acl_flavor in + linux | freebsd | solaris) + setfacl -m user:$auid:1 tmpfile0 + ;; + cygwin) + setfacl -m group:0:1 tmpfile0 + ;; + hpux) + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}($auid.%,--x)" tmpfile0 + ;; + hpuxjfs) + orig=`lsacl tmpfile0 | sed -e 's/ tmpfile0$//'` + chacl -r "${orig}($auid.%,--x)" tmpfile0 \ + || setacl -m user:$auid:1 tmpfile0 + ;; + osf1) + setacl -u user:$auid:1 tmpfile0 + ;; + nsk) + setacl -m user:$auid:1 tmpfile0 + ;; + aix) + { aclget tmpfile0 | sed -e 's/disabled$/enabled/'; echo " permit --x u:$auid"; } | aclput tmpfile0 + ;; + macosx) + /bin/chmod +a "user:daemon allow execute" tmpfile0 + ;; + irix) + /sbin/chacl user::rw-,group::---,other::---,user:$auid:--x tmpfile0 + ;; + esac + + # Try to set the ACL to only the given mode. + "$builddir"/test-set-mode-acl${EXEEXT} tmpfile2 $mode + # Verify that tmpfile2 has no ACL and has the desired mode. + modestring=`ls -l tmpfile2 | dd ibs=1 count=10 2>/dev/null` + if test "x$modestring" != "x$modestring0"; then + echo "mode = $mode: tmpfile2 has wrong mode: $modestring" 1>&2 + exit 1 + fi + if test `"$builddir"/test-file-has-acl${EXEEXT} tmpfile2` != no; then + echo "mode = $mode: tmpfile2 still has an ACL" 1>&2 + exit 1 + fi + fi + fi + done + + rm -f tmpfile[0-9] +) || exit 1 + +rm -rf "$tmp" +exit 0 diff --git a/gettext-tools/gnulib-tests/test-setenv.c b/gettext-tools/gnulib-tests/test-setenv.c new file mode 100644 index 0000000..548e4fb --- /dev/null +++ b/gettext-tools/gnulib-tests/test-setenv.c @@ -0,0 +1,56 @@ +/* Tests of setenv. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <stdlib.h> + +#include "signature.h" +SIGNATURE_CHECK (setenv, int, (char const *, char const *, int)); + +#include <errno.h> +#include <string.h> +#include <unistd.h> + +#include "macros.h" + +int +main (void) +{ + /* Test overwriting. */ + ASSERT (setenv ("a", "==", -1) == 0); + ASSERT (setenv ("a", "2", 0) == 0); + ASSERT (strcmp (getenv ("a"), "==") == 0); + + /* Required to fail with EINVAL. */ + errno = 0; + ASSERT (setenv ("", "", 1) == -1); + ASSERT (errno == EINVAL); + errno = 0; + ASSERT (setenv ("a=b", "", 0) == -1); + ASSERT (errno == EINVAL); +#if 0 + /* glibc and gnulib's implementation guarantee this, but POSIX no + longer requires it: http://austingroupbugs.net/view.php?id=185 */ + errno = 0; + ASSERT (setenv (NULL, "", 0) == -1); + ASSERT (errno == EINVAL); +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-setlocale1.c b/gettext-tools/gnulib-tests/test-setlocale1.c new file mode 100644 index 0000000..0434d7b --- /dev/null +++ b/gettext-tools/gnulib-tests/test-setlocale1.c @@ -0,0 +1,59 @@ +/* Test of setting the current locale. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <locale.h> + +#include "signature.h" +SIGNATURE_CHECK (setlocale, char *, (int, const char *)); + +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + char *name1; + char *name2; + + /* Try to set the locale by implicitly looking at the LC_ALL environment + variable. + configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + + name1 = strdup (setlocale (LC_ALL, NULL)); + + /* Reset the locale. */ + if (setlocale (LC_ALL, "C") == NULL) + return 1; + + /* Try to set the locale by explicitly looking at the LC_ALL environment + variable. + configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL) + return 1; + + name2 = strdup (setlocale (LC_ALL, NULL)); + + /* Test that the two results are the same. */ + ASSERT (strcmp (name1, name2) == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-setlocale1.sh b/gettext-tools/gnulib-tests/test-setlocale1.sh new file mode 100755 index 0000000..59a0532 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-setlocale1.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +: ${LOCALE_FR=fr_FR} +: ${LOCALE_FR_UTF8=fr_FR.UTF-8} +: ${LOCALE_JA=ja_JP} +: ${LOCALE_ZH_CN=zh_CN.GB18030} + +if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none \ + && test $LOCALE_JA = none && test $LOCALE_ZH_CN = none; then + if test -f /usr/bin/localedef; then + echo "Skipping test: no locale for testing is installed" + else + echo "Skipping test: no locale for testing is supported" + fi + exit 77 +fi + +if test $LOCALE_FR != none; then + LC_ALL=$LOCALE_FR ./test-setlocale1${EXEEXT} || exit 1 +fi + +if test $LOCALE_FR_UTF8 != none; then + LC_ALL=$LOCALE_FR_UTF8 ./test-setlocale1${EXEEXT} || exit 1 +fi + +if test $LOCALE_JA != none; then + LC_ALL=$LOCALE_JA ./test-setlocale1${EXEEXT} || exit 1 +fi + +if test $LOCALE_ZH_CN != none; then + LC_ALL=$LOCALE_ZH_CN ./test-setlocale1${EXEEXT} || exit 1 +fi + +exit 0 diff --git a/gettext-tools/gnulib-tests/test-setlocale2.c b/gettext-tools/gnulib-tests/test-setlocale2.c new file mode 100644 index 0000000..2f52fe0 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-setlocale2.c @@ -0,0 +1,55 @@ +/* Test of setting the current locale. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <locale.h> + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +int +main () +{ + /* Try to set the locale by implicitly looking at the LC_ALL environment + variable. */ + if (setlocale (LC_ALL, "") != NULL) + /* It was successful. Check whether LC_CTYPE is non-trivial. */ + if (strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) + { + fprintf (stderr, "setlocale did not fail for implicit %s\n", + getenv ("LC_ALL")); + return 1; + } + + /* Reset the locale. */ + if (setlocale (LC_ALL, "C") == NULL) + return 1; + + /* Try to set the locale by explicitly looking at the LC_ALL environment + variable. */ + if (setlocale (LC_ALL, getenv ("LC_ALL")) != NULL) + /* It was successful. Check whether LC_CTYPE is non-trivial. */ + if (strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) + { + fprintf (stderr, "setlocale did not fail for explicit %s\n", + getenv ("LC_ALL")); + return 1; + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-setlocale2.sh b/gettext-tools/gnulib-tests/test-setlocale2.sh new file mode 100755 index 0000000..904e147 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-setlocale2.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# Test locale names with likely unsupported encoding in Unix syntax. +for name in ar_SA.ISO-8859-1 fr_FR.CP1251 zh_TW.GB18030 zh_CN.BIG5; do + env LC_ALL=$name ./test-setlocale2${EXEEXT} 1 || exit 1 +done + +# Test locale names with likely unsupported encoding in native Windows syntax. +for name in "Arabic_Saudi Arabia.1252" "Arabic_Saudi Arabia.65001" \ + French_France.65001 Japanese_Japan.65001 Turkish_Turkey.65001 \ + Chinese_Taiwan.65001 Chinese_China.54936 Chinese_China.65001; do + # Here we use 'env' to set the LC_ALL environment variable, because on + # Solaris 11 2011-11, the /bin/sh refuses to do it for Turkish_Turkey.65001. + env LC_ALL="$name" ./test-setlocale2${EXEEXT} 1 || exit 1 +done + +exit 0 diff --git a/gettext-tools/gnulib-tests/test-sh-quote.c b/gettext-tools/gnulib-tests/test-sh-quote.c new file mode 100644 index 0000000..8bfe301 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sh-quote.c @@ -0,0 +1,203 @@ +/* Test of sh-quote module. + Copyright (C) 2012-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2012. */ + +#include <config.h> + +/* Specification. */ +#include "sh-quote.h" + +#include <limits.h> +#include <string.h> + +#include "macros.h" + +static void +check_one (const char *input, const char *expected) +{ + char buf[1000]; + size_t output_len; + char *output; + char *bufend; + + output_len = shell_quote_length (input); + + output = shell_quote (input); + ASSERT (strlen (output) == output_len); + + ASSERT (output_len <= sizeof (buf) - 2); + memset (buf, '\0', output_len + 1); + buf[output_len + 1] = '%'; + bufend = shell_quote_copy (buf, input); + ASSERT (bufend == buf + output_len); + ASSERT (memcmp (buf, output, output_len + 1) == 0); + ASSERT (buf[output_len + 1] == '%'); + + ASSERT (strcmp (output, expected) == 0); + + free (output); +} + +int +main (void) +{ + /* Check the shell_quote_length, shell_quote_copy, shell_quote functions. */ + { + int c; + + /* Empty argument. */ + check_one ("", "''"); + + /* Identifier or number. */ + check_one ("foo", "foo"); + check_one ("phr0ck", "phr0ck"); + + /* Whitespace would be interpreted as argument separator by the shell. */ + check_one ("foo\tbar", "'foo\tbar'"); + check_one ("foo\nbar", "'foo\nbar'"); + check_one ("foo\rbar", "'foo\rbar'"); + check_one ("foo bar", "'foo bar'"); + + /* '!' at the beginning of argv[0] would introduce a negated command. */ + check_one ("!foo", "'!foo'"); + + /* '"' would be interpreted as the start of a string. */ + check_one ("\"foo\"bar", "'\"foo\"bar'"); + + /* '#' at the beginning of an argument would be interpreted as the start + of a comment. */ + check_one ("#foo", "'#foo'"); + + /* '$' at the beginning of an argument would be interpreted as a variable + reference. */ + check_one ("$foo", "'$foo'"); + + /* '&' at the beginning of an argument would be interpreted as a background + task indicator. */ + check_one ("&", "'&'"); + + /* "'" would be interpreted as the start of a string. */ + check_one ("'foo'bar", "''\\''foo'\\''bar'"); /* or "\"'foo'bar\"" */ + + /* '(' at the beginning of argv[0] would introduce a subshell command. */ + check_one ("(", "'('"); + + /* ')' at the beginning of an argument would be interpreted as the end of + the command. */ + check_one (")", "')'"); + + /* '*' would be interpreted as a wildcard character. */ + check_one ("*", "'*'"); + check_one ("*foo", "'*foo'"); + + /* ';' at the beginning of an argument would be interpreted as an empty + statement in argv[0] and as the end of the command otherwise. */ + check_one (";", "';'"); + check_one ("foo;", "'foo;'"); + + /* '<' would be interpreted as a redirection of stdin. */ + check_one ("<", "'<'"); + + /* '=' inside argv[0] would be interpreted as an environment variable + assignment. */ + check_one ("foo=bar", "'foo=bar'"); + + /* '>' would be interpreted as a redirection of stdout. */ + check_one (">", "'>'"); + + /* '?' would be interpreted as a wildcard character. */ + check_one ("?", "'?'"); + check_one ("foo?bar", "'foo?bar'"); + + /* '^' would be interpreted in old /bin/sh, e.g. SunOS 4.1.4. */ + check_one ("^", "'^'"); + + /* "[...]" would be interpreted as a wildcard pattern. */ + check_one ("[", "'['"); + check_one ("]", "]"); /* or "']'" */ + + /* '\' would be interpreted as an escape character. */ + check_one ("\\foo", "'\\foo'"); + + /* '`' would be interpreted as the start of a command substitution. */ + check_one ("`foo", "'`foo'"); + + /* '{' at the beginning of argv[0] would introduce a complex command. */ + check_one ("{", "'{'"); + + /* '|' at the beginning of an argument would be interpreted as a pipe + between commands. */ + check_one ("|", "'|'"); + + /* '}' at the beginning of an argument would be interpreted as the end of + the command. */ + check_one ("}", "'}'"); + + /* '~' at the beginning of an argument would be interpreted as a reference + to a user's home directory. */ + check_one ("~", "'~'"); + check_one ("~foo", "'~foo'"); + + /* A string that contains both ' and ". */ + check_one ("foo'bar\"baz", "'foo'\\''bar\"baz'"); /* or "\"foo'bar\\\"baz\"" */ + + /* All other characters don't need quoting. */ + for (c = 1; c <= UCHAR_MAX; c++) + if (strchr ("\t\n\r !\"#$&'()*;<=>?^[\\]`{|}~", c) == NULL) + { + char s[5]; + s[0] = 'a'; + s[1] = (char) c; + s[2] = 'z'; + s[3] = (char) c; + s[4] = '\0'; + + check_one (s, s); + } + } + + /* Check the shell_quote_argv function. */ + { + char *argv[1]; + char *result; + argv[0] = NULL; + result = shell_quote_argv (argv); + ASSERT (strcmp (result, "") == 0); + free (result); + } + { + char *argv[2]; + char *result; + argv[0] = (char *) "foo bar/baz"; + argv[1] = NULL; + result = shell_quote_argv (argv); + ASSERT (strcmp (result, "'foo bar/baz'") == 0); /* or "\"foo bar/baz\"" */ + free (result); + } + { + char *argv[3]; + char *result; + argv[0] = (char *) "foo bar/baz"; + argv[1] = (char *) "$"; + argv[2] = NULL; + result = shell_quote_argv (argv); + ASSERT (strcmp (result, "'foo bar/baz' '$'") == 0); /* or "\"foo bar/baz\" \"\\$\"" */ + free (result); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-sigaction.c b/gettext-tools/gnulib-tests/test-sigaction.c new file mode 100644 index 0000000..0fa1c26 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sigaction.c @@ -0,0 +1,122 @@ +/* Test of sigaction() function. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2008. */ + +#include <config.h> + +#include <signal.h> + +#include "signature.h" +SIGNATURE_CHECK (sigaction, int, (int, struct sigaction const *, + struct sigaction *)); + +#include <stddef.h> + +#include "macros.h" + +#ifndef SA_NOCLDSTOP +# define SA_NOCLDSTOP 0 +#endif +#ifndef SA_ONSTACK +# define SA_ONSTACK 0 +#endif +#ifndef SA_RESETHAND +# define SA_RESETHAND 0 +#endif +#ifndef SA_RESTART +# define SA_RESTART 0 +#endif +#ifndef SA_SIGINFO +# define SA_SIGINFO 0 +#endif +#ifndef SA_NOCLDWAIT +# define SA_NOCLDWAIT 0 +#endif + +/* Define a mask of flags required by POSIX. Some implementations + provide other flags as extensions, such as SA_RESTORER, that we + must ignore in this test. */ +#define MASK_SA_FLAGS (SA_NOCLDSTOP | SA_ONSTACK | SA_RESETHAND | SA_RESTART \ + | SA_SIGINFO | SA_NOCLDWAIT | SA_NODEFER) + +/* This test is unsafe in the presence of an asynchronous SIGABRT, + because we install a signal-handler that is intentionally not + async-safe. Hopefully, this does not lead to too many reports of + false failures, since people don't generally use 'kill -s SIGABRT' + to end a runaway program. */ + +static void +handler (int sig) +{ + static int entry_count; + struct sigaction sa; + ASSERT (sig == SIGABRT); + ASSERT (sigaction (SIGABRT, NULL, &sa) == 0); + ASSERT ((sa.sa_flags & SA_SIGINFO) == 0); + switch (entry_count++) + { + case 0: + ASSERT ((sa.sa_flags & SA_RESETHAND) == 0); + ASSERT (sa.sa_handler == handler); + break; + case 1: + /* This assertion fails on glibc-2.3.6 systems with LinuxThreads, + when this program is linked with -lpthread, due to the sigaction() + override in libpthread.so. */ +#if !(defined __GLIBC__ || defined __UCLIBC__) + ASSERT (sa.sa_handler == SIG_DFL); +#endif + break; + default: + ASSERT (0); + } +} + +int +main (void) +{ + struct sigaction sa; + struct sigaction old_sa; + sa.sa_handler = handler; + + sa.sa_flags = 0; + ASSERT (sigemptyset (&sa.sa_mask) == 0); + ASSERT (sigaction (SIGABRT, &sa, NULL) == 0); + ASSERT (raise (SIGABRT) == 0); + + sa.sa_flags = SA_RESETHAND | SA_NODEFER; + ASSERT (sigaction (SIGABRT, &sa, &old_sa) == 0); + ASSERT ((old_sa.sa_flags & MASK_SA_FLAGS) == 0); + ASSERT (old_sa.sa_handler == handler); + ASSERT (raise (SIGABRT) == 0); + + sa.sa_handler = SIG_DFL; + ASSERT (sigaction (SIGABRT, &sa, &old_sa) == 0); + ASSERT ((old_sa.sa_flags & SA_SIGINFO) == 0); +#if !(defined __GLIBC__ || defined __UCLIBC__) /* see above */ + ASSERT (old_sa.sa_handler == SIG_DFL); +#endif + + sa.sa_handler = SIG_IGN; + ASSERT (sigaction (SIGABRT, &sa, NULL) == 0); + ASSERT (raise (SIGABRT) == 0); + ASSERT (sigaction (SIGABRT, NULL, &old_sa) == 0); + ASSERT (old_sa.sa_handler == SIG_IGN); + ASSERT (raise (SIGABRT) == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-signal-h.c b/gettext-tools/gnulib-tests/test-signal-h.c new file mode 100644 index 0000000..3bc9482 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-signal-h.c @@ -0,0 +1,129 @@ +/* Test of <signal.h> substitute. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <signal.h> + +/* Check for required types. */ +struct +{ + size_t a; + uid_t b; + volatile sig_atomic_t c; + sigset_t d; + pid_t e; +#if 0 + /* Not guaranteed by gnulib. */ + pthread_t f; + struct timespec g; +#endif +} s; + +/* Check that NSIG is defined. */ +int nsig = NSIG; + +int +main (void) +{ + switch (0) + { + /* The following are guaranteed by C. */ + case 0: + case SIGABRT: + case SIGFPE: + case SIGILL: + case SIGINT: + case SIGSEGV: + case SIGTERM: + /* The following is guaranteed by gnulib. */ +#if GNULIB_SIGPIPE || defined SIGPIPE + case SIGPIPE: +#endif + /* Ensure no conflict with other standardized names. */ +#ifdef SIGALRM + case SIGALRM: +#endif + /* On Haiku, SIGBUS is mistakenly equal to SIGSEGV. */ +#if defined SIGBUS && SIGBUS != SIGSEGV + case SIGBUS: +#endif +#ifdef SIGCHLD + case SIGCHLD: +#endif +#ifdef SIGCONT + case SIGCONT: +#endif +#ifdef SIGHUP + case SIGHUP: +#endif +#ifdef SIGKILL + case SIGKILL: +#endif +#ifdef SIGQUIT + case SIGQUIT: +#endif +#ifdef SIGSTOP + case SIGSTOP: +#endif +#ifdef SIGTSTP + case SIGTSTP: +#endif +#ifdef SIGTTIN + case SIGTTIN: +#endif +#ifdef SIGTTOU + case SIGTTOU: +#endif +#ifdef SIGUSR1 + case SIGUSR1: +#endif +#ifdef SIGUSR2 + case SIGUSR2: +#endif +#ifdef SIGSYS + case SIGSYS: +#endif +#ifdef SIGTRAP + case SIGTRAP: +#endif +#ifdef SIGURG + case SIGURG: +#endif +#ifdef SIGVTALRM + case SIGVTALRM: +#endif +#ifdef SIGXCPU + case SIGXCPU: +#endif +#ifdef SIGXFSZ + case SIGXFSZ: +#endif + /* SIGRTMIN and SIGRTMAX need not be compile-time constants. */ +#if 0 +# ifdef SIGRTMIN + case SIGRTMIN: +# endif +# ifdef SIGRTMAX + case SIGRTMAX: +# endif +#endif + ; + } + return s.a + s.b + s.c + s.e; +} diff --git a/gettext-tools/gnulib-tests/test-sigpipe.c b/gettext-tools/gnulib-tests/test-sigpipe.c new file mode 100644 index 0000000..c46af63 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sigpipe.c @@ -0,0 +1,68 @@ +/* Test of SIGPIPE handling. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <signal.h> + +/* Check that SIGPIPE is defined. */ +int s = SIGPIPE; + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +static void +handler (int sig) +{ + exit (0); +} + +int +main (int argc, char **argv) +{ + char mode = argv[1][0]; + + switch (mode) + { + case 'A': signal (SIGPIPE, SIG_DFL); break; + case 'B': signal (SIGPIPE, SIG_IGN); break; + case 'C': signal (SIGPIPE, handler); break; + } + + /* Produce infinite output. Since it is piped into "head -1", the writes + must ultimately fail. */ + for (;;) + { + char c[2] = { 'y', '\n' }; + int ret = write (1, c, sizeof (c)); + if (ret <= 0) + { + switch (mode) + { + case 'B': /* The write() call should have failed with EPIPE. */ + if (ret < 0 && errno == EPIPE) + exit (0); + /*FALLTHROUGH*/ + case 'A': /* The process should silently die. */ + case 'C': /* The handler should have been called. */ + fprintf (stderr, "write() returned %d with error %d.\n", ret, errno); + exit (1); + } + } + } +} diff --git a/gettext-tools/gnulib-tests/test-sigpipe.sh b/gettext-tools/gnulib-tests/test-sigpipe.sh new file mode 100755 index 0000000..bc2baf2 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sigpipe.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +tmpfiles="" +trap 'rm -fr $tmpfiles' 1 2 3 15 + +# Test signal's default behaviour. +tmpfiles="$tmpfiles t-sigpipeA.tmp" +./test-sigpipe${EXEEXT} A 2> t-sigpipeA.tmp | head -1 > /dev/null +if test -s t-sigpipeA.tmp; then + LC_ALL=C tr -d '\r' < t-sigpipeA.tmp + rm -fr $tmpfiles; exit 1 +fi + +# Test signal's ignored behaviour. +tmpfiles="$tmpfiles t-sigpipeB.tmp" +./test-sigpipe${EXEEXT} B 2> t-sigpipeB.tmp | head -1 > /dev/null +if test -s t-sigpipeB.tmp; then + LC_ALL=C tr -d '\r' < t-sigpipeB.tmp + rm -fr $tmpfiles; exit 1 +fi + +# Test signal's behaviour when a handler is installed. +tmpfiles="$tmpfiles t-sigpipeC.tmp" +./test-sigpipe${EXEEXT} B 2> t-sigpipeC.tmp | head -1 > /dev/null +if test -s t-sigpipeC.tmp; then + LC_ALL=C tr -d '\r' < t-sigpipeC.tmp + rm -fr $tmpfiles; exit 1 +fi + +rm -fr $tmpfiles +exit 0 diff --git a/gettext-tools/gnulib-tests/test-sigprocmask.c b/gettext-tools/gnulib-tests/test-sigprocmask.c new file mode 100644 index 0000000..c6c771e --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sigprocmask.c @@ -0,0 +1,102 @@ +/* Test of sigprocmask. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2011. */ + +#include <config.h> + +#include <signal.h> + +#include "signature.h" +SIGNATURE_CHECK (sigprocmask, int, (int, const sigset_t *, sigset_t *)); + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include "macros.h" + +#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) + +static volatile int sigint_occurred; + +static void +sigint_handler (int sig) +{ + sigint_occurred++; +} + +int +main (int argc, char *argv[]) +{ + sigset_t set; + pid_t pid = getpid (); + char command[80]; + + if (sizeof (int) < sizeof pid && 0x7fffffff < pid) + { + fputs ("Skipping test: pid too large\n", stderr); + return 77; + } + + signal (SIGINT, sigint_handler); + + sigemptyset (&set); + sigaddset (&set, SIGINT); + + /* Check error handling. */ + ASSERT (sigprocmask (1729, &set, NULL) == -1); + ASSERT (errno == EINVAL); + + /* Block SIGINT. */ + ASSERT (sigprocmask (SIG_BLOCK, &set, NULL) == 0); + + /* Request a SIGINT signal from outside. */ + sprintf (command, "sh -c 'sleep 1; kill -%d %d' &", SIGINT, (int) pid); + ASSERT (system (command) == 0); + + /* Wait. */ + sleep (2); + + /* The signal should not have arrived yet, because it is blocked. */ + ASSERT (sigint_occurred == 0); + + /* Unblock SIGINT. */ + ASSERT (sigprocmask (SIG_UNBLOCK, &set, NULL) == 0); + + /* The signal should have arrived now, because POSIX says + "If there are any pending unblocked signals after the call to + sigprocmask(), at least one of those signals shall be delivered + before the call to sigprocmask() returns." */ + ASSERT (sigint_occurred == 1); + + return 0; +} + +#else + +/* On native Windows, getpid() values and the arguments that are passed to + the (Cygwin?) 'kill' program are not necessarily related. */ + +int +main () +{ + fputs ("Skipping test: native Windows platform\n", stderr); + return 77; +} + +#endif diff --git a/gettext-tools/gnulib-tests/test-sleep.c b/gettext-tools/gnulib-tests/test-sleep.c new file mode 100644 index 0000000..9b93fef --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sleep.c @@ -0,0 +1,58 @@ +/* Test of sleep() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (sleep, unsigned int, (unsigned int)); + +#include <signal.h> + +#include "macros.h" + +#if HAVE_DECL_ALARM +static void +handle_alarm (int sig) +{ + if (sig != SIGALRM) + _exit (1); +} +#endif + +int +main (void) +{ + ASSERT (sleep (1) <= 1); + + ASSERT (sleep (0) == 0); + +#if HAVE_DECL_ALARM + { + const unsigned int pentecost = 50 * 24 * 60 * 60; /* 50 days. */ + unsigned int remaining; + signal (SIGALRM, handle_alarm); + alarm (1); + remaining = sleep (pentecost); + ASSERT (pentecost - 10 < remaining && remaining <= pentecost); + } +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-snprintf.c b/gettext-tools/gnulib-tests/test-snprintf.c new file mode 100644 index 0000000..38d9935 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-snprintf.c @@ -0,0 +1,72 @@ +/* Test of snprintf() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (snprintf, int, (char *, size_t, char const *, ...)); + +#include <string.h> + +#include "macros.h" + +int +main (int argc, char *argv[]) +{ + char buf[8]; + int size; + int retval; + + retval = snprintf (NULL, 0, "%d", 12345); + ASSERT (retval == 5); + + for (size = 0; size <= 8; size++) + { + memcpy (buf, "DEADBEEF", 8); + retval = snprintf (buf, size, "%d", 12345); + ASSERT (retval == 5); + if (size < 6) + { + if (size > 0) + { + ASSERT (memcmp (buf, "12345", size - 1) == 0); + ASSERT (buf[size - 1] == '\0' || buf[size - 1] == '0' + size); + } +#if !CHECK_SNPRINTF_POSIX + if (size > 0) +#endif + ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0); + } + else + { + ASSERT (memcmp (buf, "12345\0EF", 8) == 0); + } + } + + /* Test the support of the POSIX/XSI format strings with positions. */ + { + char result[100]; + retval = snprintf (result, sizeof (result), "%2$d %1$d", 33, 55); + ASSERT (strcmp (result, "55 33") == 0); + ASSERT (retval == strlen (result)); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-spawn-pipe-child.c b/gettext-tools/gnulib-tests/test-spawn-pipe-child.c new file mode 100644 index 0000000..b8f810f --- /dev/null +++ b/gettext-tools/gnulib-tests/test-spawn-pipe-child.c @@ -0,0 +1,119 @@ +/* Child program invoked by test-spawn-pipe-main. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +/* Get declarations of the native Windows API functions. */ +# define WIN32_LEAN_AND_MEAN +# include <windows.h> +#endif + +/* Depending on arguments, this test intentionally closes stderr or + starts life with stderr closed. So, we arrange to have fd 10 + (outside the range of interesting fd's during the test) set up to + duplicate the original stderr. */ + +#define BACKUP_STDERR_FILENO 10 +#define ASSERT_STREAM myerr +#include "macros.h" + +static FILE *myerr; + +/* In this file, we use only system functions, no overrides from gnulib. */ +#undef atoi +#undef close +#undef fcntl +#undef fdopen +#undef fflush +#undef fprintf +#undef read +#undef write + +/* Return non-zero if FD is open. */ +static int +is_open (int fd) +{ +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Windows, the initial state of unassigned standard file + descriptors is that they are open but point to an + INVALID_HANDLE_VALUE, and there is no fcntl. */ + return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE; +#else +# ifndef F_GETFL +# error Please port fcntl to your platform +# endif + return 0 <= fcntl (fd, F_GETFL); +#endif +} + +int +main (int argc, char *argv[]) +{ + char buffer[2] = { 's', 't' }; + int fd; + + /* fd 2 might be closed, but fd BACKUP_STDERR_FILENO is the original + stderr. */ + myerr = fdopen (BACKUP_STDERR_FILENO, "w"); + if (!myerr) + return 2; + + ASSERT (argc == 2); + + /* Read one byte from fd 0, and write its value plus one to fd 1. + fd 2 should be closed iff the argument is 1. Check that no other file + descriptors leaked. */ + + ASSERT (read (STDIN_FILENO, buffer, 2) == 1); + + buffer[0]++; + ASSERT (write (STDOUT_FILENO, buffer, 1) == 1); + + switch (atoi (argv[1])) + { + case 0: + /* Expect fd 2 is open. */ + ASSERT (is_open (STDERR_FILENO)); + break; + case 1: + /* Expect fd 2 is closed. + But on HP-UX 11, fd 2 gets automatically re-opened to /dev/null if it + was closed. Future POSIX will allow this, see + <http://austingroupbugs.net/view.php?id=173>. */ +#if !defined __hpux + ASSERT (! is_open (STDERR_FILENO)); +#endif + break; + default: + ASSERT (0); + } + + for (fd = 3; fd < 7; fd++) + { + errno = 0; + ASSERT (close (fd) == -1); + ASSERT (errno == EBADF); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-spawn-pipe-main.c b/gettext-tools/gnulib-tests/test-spawn-pipe-main.c new file mode 100644 index 0000000..33553b9 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-spawn-pipe-main.c @@ -0,0 +1,141 @@ +/* Test of create_pipe_bidi/wait_subprocess. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include "spawn-pipe.h" +#include "wait-process.h" +#include "progname.h" + +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +/* Depending on arguments, this test intentionally closes stderr or + starts life with stderr closed. So, we arrange to have fd 10 + (outside the range of interesting fd's during the test) set up to + duplicate the original stderr. */ + +#define BACKUP_STDERR_FILENO 10 +#define ASSERT_STREAM myerr +#include "macros.h" + +static FILE *myerr; + +/* Create a bi-directional pipe to a test child, and validate that the + child program returns the expected output. + PROG is the program to run in the child process. + STDERR_CLOSED is true if we have already closed fd 2. */ +static void +test_pipe (const char *prog, bool stderr_closed) +{ + int fd[2]; + char *argv[3]; + pid_t pid; + char buffer[2] = { 'a', 't' }; + + /* Set up child. */ + argv[0] = (char *) prog; + argv[1] = (char *) (stderr_closed ? "1" : "0"); + argv[2] = NULL; + pid = create_pipe_bidi (prog, prog, argv, false, true, true, fd); + ASSERT (0 <= pid); + ASSERT (STDERR_FILENO < fd[0]); + ASSERT (STDERR_FILENO < fd[1]); + + /* Push child's input. */ + ASSERT (write (fd[1], buffer, 1) == 1); + ASSERT (close (fd[1]) == 0); + + /* Get child's output. */ + ASSERT (read (fd[0], buffer, 2) == 1); + + /* Wait for child. */ + ASSERT (wait_subprocess (pid, prog, true, false, true, true, NULL) == 0); + ASSERT (close (fd[0]) == 0); + + /* Check the result. */ + ASSERT (buffer[0] == 'b'); + ASSERT (buffer[1] == 't'); +} + +int +main (int argc, char *argv[]) +{ + int test; + int fd; + + set_program_name (argv[0]); + + if (argc != 3) + { + fprintf (stderr, "%s: need 2 arguments\n", argv[0]); + return 2; + } + /* We might close fd 2 later, so save it in fd 10. */ + if (dup2 (STDERR_FILENO, BACKUP_STDERR_FILENO) != BACKUP_STDERR_FILENO + || (myerr = fdopen (BACKUP_STDERR_FILENO, "w")) == NULL) + return 2; + + /* Selectively close various standard fds, to verify the child process is + not impacted by this. */ + test = atoi (argv[2]); + switch (test) + { + case 0: + break; + case 1: + close (0); + break; + case 2: + close (1); + break; + case 3: + close (0); + close (1); + break; + case 4: + close (2); + break; + case 5: + close (0); + close (2); + break; + case 6: + close (1); + close (2); + break; + case 7: + close (0); + close (1); + close (2); + break; + default: + ASSERT (false); + } + + /* Plug any file descriptor leaks inherited from outside world before + starting, so that child has a clean slate (at least for the fds that we + might be manipulating). */ + for (fd = 3; fd < 7; fd++) + close (fd); + + test_pipe (argv[1], test >= 4); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-spawn-pipe.sh b/gettext-tools/gnulib-tests/test-spawn-pipe.sh new file mode 100755 index 0000000..676026c --- /dev/null +++ b/gettext-tools/gnulib-tests/test-spawn-pipe.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +st=0 +for i in 0 1 2 3 4 5 6 7 ; do + ./test-spawn-pipe-main${EXEEXT} ./test-spawn-pipe-child${EXEEXT} $i \ + || { echo test-spawn-pipe.sh: iteration $i failed >&2; st=1; } +done +exit $st diff --git a/gettext-tools/gnulib-tests/test-spawn.c b/gettext-tools/gnulib-tests/test-spawn.c new file mode 100644 index 0000000..8155bc8 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-spawn.c @@ -0,0 +1,54 @@ +/* Test of <spawn.h> substitute. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <spawn.h> + +/* Check for existence of required types. */ +struct check +{ + posix_spawnattr_t a; + posix_spawn_file_actions_t b; + mode_t c; + pid_t d; + sigset_t e; +} s; + +/* struct sched_param is allowed to be an incomplete type without + <sched.h>, but must have a forward declaration to avoid a + compilation error in the following usage. */ +extern void f (struct sched_param *g); +#include <sched.h> +extern void f (struct sched_param *g); + +int +main (void) +{ + switch (POSIX_SPAWN_RESETIDS) + { + case POSIX_SPAWN_RESETIDS: + case POSIX_SPAWN_SETPGROUP: + case POSIX_SPAWN_SETSIGDEF: + case POSIX_SPAWN_SETSIGMASK: + case (POSIX_SPAWN_SETSCHEDPARAM != 0 ? POSIX_SPAWN_SETSCHEDPARAM : -1): + case (POSIX_SPAWN_SETSCHEDULER != 0 ? POSIX_SPAWN_SETSCHEDULER : -2): + ; + } + return s.c + s.d; +} diff --git a/gettext-tools/gnulib-tests/test-stat.c b/gettext-tools/gnulib-tests/test-stat.c new file mode 100644 index 0000000..9ed462a --- /dev/null +++ b/gettext-tools/gnulib-tests/test-stat.c @@ -0,0 +1,55 @@ +/* Tests of stat. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <sys/stat.h> + +/* Caution: stat may be a function-like macro. Although this + signature check must pass, it may be the signature of the real (and + broken) stat rather than rpl_stat. Most code should not use the + address of stat. */ +#include "signature.h" +SIGNATURE_CHECK (stat, int, (char const *, struct stat *)); + +#include <fcntl.h> +#include <errno.h> +#include <stdbool.h> +#include <stdio.h> +#include <unistd.h> + +#include "same-inode.h" +#include "macros.h" + +#define BASE "test-stat.t" + +#include "test-stat.h" + +/* Wrapper around stat, which works even if stat is a function-like + macro, where test_stat_func(stat) would do the wrong thing. */ +static int +do_stat (char const *name, struct stat *st) +{ + return stat (name, st); +} + +int +main (void) +{ + return test_stat_func (do_stat, true); +} diff --git a/gettext-tools/gnulib-tests/test-stat.h b/gettext-tools/gnulib-tests/test-stat.h new file mode 100644 index 0000000..6cfc958 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-stat.h @@ -0,0 +1,100 @@ +/* Tests of stat. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +/* This file is designed to test both stat(n,buf) and + fstatat(AT_FDCWD,n,buf,0). FUNC is the function to test. Assumes + that BASE and ASSERT are already defined, and that appropriate + headers are already included. If PRINT, warn before skipping + symlink tests with status 77. */ + +static int +test_stat_func (int (*func) (char const *, struct stat *), bool print) +{ + struct stat st1; + struct stat st2; + char *cwd = getcwd (NULL, 0); + + ASSERT (cwd); + ASSERT (func (".", &st1) == 0); + ASSERT (func ("./", &st2) == 0); + ASSERT (SAME_INODE (st1, st2)); + ASSERT (func (cwd, &st2) == 0); + ASSERT (SAME_INODE (st1, st2)); + ASSERT (func ("/", &st1) == 0); + ASSERT (func ("///", &st2) == 0); + ASSERT (SAME_INODE (st1, st2)); + + errno = 0; + ASSERT (func ("", &st1) == -1); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("nosuch", &st1) == -1); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("nosuch/", &st1) == -1); + ASSERT (errno == ENOENT); + + ASSERT (close (creat (BASE "file", 0600)) == 0); + ASSERT (func (BASE "file", &st1) == 0); + errno = 0; + ASSERT (func (BASE "file/", &st1) == -1); + ASSERT (errno == ENOTDIR); + + /* Now for some symlink tests, where supported. We set up: + link1 -> directory + link2 -> file + link3 -> dangling + link4 -> loop + then test behavior with trailing slash. + */ + if (symlink (".", BASE "link1") != 0) + { + ASSERT (unlink (BASE "file") == 0); + if (print) + fputs ("skipping test: symlinks not supported on this file system\n", + stderr); + return 77; + } + ASSERT (symlink (BASE "file", BASE "link2") == 0); + ASSERT (symlink (BASE "nosuch", BASE "link3") == 0); + ASSERT (symlink (BASE "link4", BASE "link4") == 0); + + ASSERT (func (BASE "link1/", &st1) == 0); + ASSERT (S_ISDIR (st1.st_mode)); + + errno = 0; + ASSERT (func (BASE "link2/", &st1) == -1); + ASSERT (errno == ENOTDIR); + + errno = 0; + ASSERT (func (BASE "link3/", &st1) == -1); + ASSERT (errno == ENOENT); + + errno = 0; + ASSERT (func (BASE "link4/", &st1) == -1); + ASSERT (errno == ELOOP); + + /* Cleanup. */ + ASSERT (unlink (BASE "file") == 0); + ASSERT (unlink (BASE "link1") == 0); + ASSERT (unlink (BASE "link2") == 0); + ASSERT (unlink (BASE "link3") == 0); + ASSERT (unlink (BASE "link4") == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-stdbool.c b/gettext-tools/gnulib-tests/test-stdbool.c new file mode 100644 index 0000000..efa8324 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-stdbool.c @@ -0,0 +1,118 @@ +/* Test of <stdbool.h> substitute. + Copyright (C) 2002-2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +/* We want this test to succeed even when using gcc's -Werror; but to + do that requires a pragma that didn't exist before 4.3.0. */ +#ifndef __GNUC__ +# define ADDRESS_CHECK_OKAY +#elif __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) +/* No way to silence -Waddress. */ +#else +# pragma GCC diagnostic ignored "-Waddress" +# define ADDRESS_CHECK_OKAY +#endif + +#include <config.h> + +#include <stdbool.h> + +#ifndef bool + "error: bool is not defined" +#endif +#ifndef false + "error: false is not defined" +#endif +#if false + "error: false is not 0" +#endif +#ifndef true + "error: true is not defined" +#endif +#if true != 1 + "error: true is not 1" +#endif +#ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" +#endif + +/* Several tests cannot be guaranteed with gnulib's <stdbool.h>, at + least, not for all compilers and compiler options. */ +#if HAVE_STDBOOL_H || 3 <= __GNUC__ +struct s { _Bool s: 1; _Bool t; } s; +#endif + +char a[true == 1 ? 1 : -1]; +char b[false == 0 ? 1 : -1]; +char c[__bool_true_false_are_defined == 1 ? 1 : -1]; +#if HAVE_STDBOOL_H || 3 <= __GNUC__ /* See above. */ +char d[(bool) 0.5 == true ? 1 : -1]; +# ifdef ADDRESS_CHECK_OKAY /* Avoid gcc warning. */ +/* C99 may plausibly be interpreted as not requiring support for a cast from + a variable's address to bool in a static initializer. So treat it like a + GCC extension. */ +# ifdef __GNUC__ +bool e = &s; +# endif +# endif +char f[(_Bool) 0.0 == false ? 1 : -1]; +#endif +char g[true]; +char h[sizeof (_Bool)]; +#if HAVE_STDBOOL_H || 3 <= __GNUC__ /* See above. */ +char i[sizeof s.t]; +#endif +enum { j = false, k = true, l = false * true, m = true * 256 }; +_Bool n[m]; +char o[sizeof n == m * sizeof n[0] ? 1 : -1]; +char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; +/* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ +_Bool q = true; +_Bool *pq = &q; + +int +main () +{ + int error = 0; + +#if HAVE_STDBOOL_H || 3 <= __GNUC__ /* See above. */ +# ifdef ADDRESS_CHECK_OKAY /* Avoid gcc warning. */ + /* A cast from a variable's address to bool is valid in expressions. */ + { + bool e1 = &s; + if (!e1) + error = 1; + } +# endif +#endif + + /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0 + reported by James Lemley on 2005-10-05; see + http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html + This is a runtime test, since a corresponding compile-time + test would rely on initializer extensions. */ + { + char digs[] = "0123456789"; + if (&(digs + 5)[-2 + (bool) 1] != &digs[4]) + error = 1; + } + + return error; +} diff --git a/gettext-tools/gnulib-tests/test-stddef.c b/gettext-tools/gnulib-tests/test-stddef.c new file mode 100644 index 0000000..d5d887e --- /dev/null +++ b/gettext-tools/gnulib-tests/test-stddef.c @@ -0,0 +1,52 @@ +/* Test of <stddef.h> substitute. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <stddef.h> + +#include "verify.h" + +/* Check that appropriate types are defined. */ +wchar_t a = 'c'; +ptrdiff_t b = 1; +size_t c = 2; + +/* Check that NULL can be passed through varargs as a pointer type, + per POSIX 2008. */ +verify (sizeof NULL == sizeof (void *)); + +/* Check that offsetof produces integer constants with correct type. */ +struct d +{ + char e; + char f; +}; +/* Solaris 10 has a bug where offsetof is under-parenthesized, and + cannot be used as an arbitrary expression. However, since it is + unlikely to bite real code, we ignore that short-coming. */ +/* verify (sizeof offsetof (struct d, e) == sizeof (size_t)); */ +verify (sizeof (offsetof (struct d, e)) == sizeof (size_t)); +verify (offsetof (struct d, e) < -1); /* Must be unsigned. */ +verify (offsetof (struct d, f) == 1); + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-stdint.c b/gettext-tools/gnulib-tests/test-stdint.c new file mode 100644 index 0000000..008b517 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-stdint.c @@ -0,0 +1,359 @@ +/* Test of <stdint.h> substitute. + Copyright (C) 2006-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2006. */ + +#include <config.h> + +/* Whether to enable pedantic checks. */ +#define DO_PEDANTIC 0 + +#include <stdint.h> + +#include "verify.h" +#include "intprops.h" + +#if __GNUC__ >= 2 && DO_PEDANTIC +# define verify_same_types(expr1,expr2) \ + extern void _verify_func(__LINE__) (__typeof__ (expr1) *); \ + extern void _verify_func(__LINE__) (__typeof__ (expr2) *); +# define _verify_func(line) _verify_func2(line) +# define _verify_func2(line) verify_func_ ## line +#else +# define verify_same_types(expr1,expr2) extern void verify_func (int) +#endif + +/* 7.18.1.1. Exact-width integer types */ +/* 7.18.2.1. Limits of exact-width integer types */ + +int8_t a1[3] = { INT8_C (17), INT8_MIN, INT8_MAX }; +verify (TYPE_MINIMUM (int8_t) == INT8_MIN); +verify (TYPE_MAXIMUM (int8_t) == INT8_MAX); +verify_same_types (INT8_MIN, (int8_t) 0 + 0); +verify_same_types (INT8_MAX, (int8_t) 0 + 0); + +int16_t a2[3] = { INT16_C (17), INT16_MIN, INT16_MAX }; +verify (TYPE_MINIMUM (int16_t) == INT16_MIN); +verify (TYPE_MAXIMUM (int16_t) == INT16_MAX); +verify_same_types (INT16_MIN, (int16_t) 0 + 0); +verify_same_types (INT16_MAX, (int16_t) 0 + 0); + +int32_t a3[3] = { INT32_C (17), INT32_MIN, INT32_MAX }; +verify (TYPE_MINIMUM (int32_t) == INT32_MIN); +verify (TYPE_MAXIMUM (int32_t) == INT32_MAX); +verify_same_types (INT32_MIN, (int32_t) 0 + 0); +verify_same_types (INT32_MAX, (int32_t) 0 + 0); + +#ifdef INT64_MAX +int64_t a4[3] = { INT64_C (17), INT64_MIN, INT64_MAX }; +verify (TYPE_MINIMUM (int64_t) == INT64_MIN); +verify (TYPE_MAXIMUM (int64_t) == INT64_MAX); +verify_same_types (INT64_MIN, (int64_t) 0 + 0); +verify_same_types (INT64_MAX, (int64_t) 0 + 0); +#endif + +uint8_t b1[2] = { UINT8_C (17), UINT8_MAX }; +verify (TYPE_MAXIMUM (uint8_t) == UINT8_MAX); +verify_same_types (UINT8_MAX, (uint8_t) 0 + 0); + +uint16_t b2[2] = { UINT16_C (17), UINT16_MAX }; +verify (TYPE_MAXIMUM (uint16_t) == UINT16_MAX); +verify_same_types (UINT16_MAX, (uint16_t) 0 + 0); + +uint32_t b3[2] = { UINT32_C (17), UINT32_MAX }; +verify (TYPE_MAXIMUM (uint32_t) == UINT32_MAX); +verify_same_types (UINT32_MAX, (uint32_t) 0 + 0); + +#ifdef UINT64_MAX +uint64_t b4[2] = { UINT64_C (17), UINT64_MAX }; +verify (TYPE_MAXIMUM (uint64_t) == UINT64_MAX); +verify_same_types (UINT64_MAX, (uint64_t) 0 + 0); +#endif + +#if INT8_MIN && INT8_MAX && INT16_MIN && INT16_MAX && INT32_MIN && INT32_MAX +/* ok */ +#else +err or; +#endif + +#if UINT8_MAX && UINT16_MAX && UINT32_MAX +/* ok */ +#else +err or; +#endif + +/* 7.18.1.2. Minimum-width integer types */ +/* 7.18.2.2. Limits of minimum-width integer types */ + +int_least8_t c1[3] = { 17, INT_LEAST8_MIN, INT_LEAST8_MAX }; +verify (TYPE_MINIMUM (int_least8_t) == INT_LEAST8_MIN); +verify (TYPE_MAXIMUM (int_least8_t) == INT_LEAST8_MAX); +verify_same_types (INT_LEAST8_MIN, (int_least8_t) 0 + 0); +verify_same_types (INT_LEAST8_MAX, (int_least8_t) 0 + 0); + +int_least16_t c2[3] = { 17, INT_LEAST16_MIN, INT_LEAST16_MAX }; +verify (TYPE_MINIMUM (int_least16_t) == INT_LEAST16_MIN); +verify (TYPE_MAXIMUM (int_least16_t) == INT_LEAST16_MAX); +verify_same_types (INT_LEAST16_MIN, (int_least16_t) 0 + 0); +verify_same_types (INT_LEAST16_MAX, (int_least16_t) 0 + 0); + +int_least32_t c3[3] = { 17, INT_LEAST32_MIN, INT_LEAST32_MAX }; +verify (TYPE_MINIMUM (int_least32_t) == INT_LEAST32_MIN); +verify (TYPE_MAXIMUM (int_least32_t) == INT_LEAST32_MAX); +verify_same_types (INT_LEAST32_MIN, (int_least32_t) 0 + 0); +verify_same_types (INT_LEAST32_MAX, (int_least32_t) 0 + 0); + +#ifdef INT_LEAST64_MAX +int_least64_t c4[3] = { 17, INT_LEAST64_MIN, INT_LEAST64_MAX }; +verify (TYPE_MINIMUM (int_least64_t) == INT_LEAST64_MIN); +verify (TYPE_MAXIMUM (int_least64_t) == INT_LEAST64_MAX); +verify_same_types (INT_LEAST64_MIN, (int_least64_t) 0 + 0); +verify_same_types (INT_LEAST64_MAX, (int_least64_t) 0 + 0); +#endif + +uint_least8_t d1[2] = { 17, UINT_LEAST8_MAX }; +verify (TYPE_MAXIMUM (uint_least8_t) == UINT_LEAST8_MAX); +verify_same_types (UINT_LEAST8_MAX, (uint_least8_t) 0 + 0); + +uint_least16_t d2[2] = { 17, UINT_LEAST16_MAX }; +verify (TYPE_MAXIMUM (uint_least16_t) == UINT_LEAST16_MAX); +verify_same_types (UINT_LEAST16_MAX, (uint_least16_t) 0 + 0); + +uint_least32_t d3[2] = { 17, UINT_LEAST32_MAX }; +verify (TYPE_MAXIMUM (uint_least32_t) == UINT_LEAST32_MAX); +verify_same_types (UINT_LEAST32_MAX, (uint_least32_t) 0 + 0); + +#ifdef UINT_LEAST64_MAX +uint_least64_t d4[2] = { 17, UINT_LEAST64_MAX }; +verify (TYPE_MAXIMUM (uint_least64_t) == UINT_LEAST64_MAX); +verify_same_types (UINT_LEAST64_MAX, (uint_least64_t) 0 + 0); +#endif + +#if INT_LEAST8_MIN && INT_LEAST8_MAX && INT_LEAST16_MIN && INT_LEAST16_MAX && INT_LEAST32_MIN && INT_LEAST32_MAX +/* ok */ +#else +err or; +#endif + +#if UINT_LEAST8_MAX && UINT_LEAST16_MAX && UINT_LEAST32_MAX +/* ok */ +#else +err or; +#endif + +/* 7.18.1.3. Fastest minimum-width integer types */ +/* 7.18.2.3. Limits of fastest minimum-width integer types */ + +int_fast8_t e1[3] = { 17, INT_FAST8_MIN, INT_FAST8_MAX }; +verify (TYPE_MINIMUM (int_fast8_t) == INT_FAST8_MIN); +verify (TYPE_MAXIMUM (int_fast8_t) == INT_FAST8_MAX); +verify_same_types (INT_FAST8_MIN, (int_fast8_t) 0 + 0); +verify_same_types (INT_FAST8_MAX, (int_fast8_t) 0 + 0); + +int_fast16_t e2[3] = { 17, INT_FAST16_MIN, INT_FAST16_MAX }; +verify (TYPE_MINIMUM (int_fast16_t) == INT_FAST16_MIN); +verify (TYPE_MAXIMUM (int_fast16_t) == INT_FAST16_MAX); +verify_same_types (INT_FAST16_MIN, (int_fast16_t) 0 + 0); +verify_same_types (INT_FAST16_MAX, (int_fast16_t) 0 + 0); + +int_fast32_t e3[3] = { 17, INT_FAST32_MIN, INT_FAST32_MAX }; +verify (TYPE_MINIMUM (int_fast32_t) == INT_FAST32_MIN); +verify (TYPE_MAXIMUM (int_fast32_t) == INT_FAST32_MAX); +verify_same_types (INT_FAST32_MIN, (int_fast32_t) 0 + 0); +verify_same_types (INT_FAST32_MAX, (int_fast32_t) 0 + 0); + +#ifdef INT_FAST64_MAX +int_fast64_t e4[3] = { 17, INT_FAST64_MIN, INT_FAST64_MAX }; +verify (TYPE_MINIMUM (int_fast64_t) == INT_FAST64_MIN); +verify (TYPE_MAXIMUM (int_fast64_t) == INT_FAST64_MAX); +verify_same_types (INT_FAST64_MIN, (int_fast64_t) 0 + 0); +verify_same_types (INT_FAST64_MAX, (int_fast64_t) 0 + 0); +#endif + +uint_fast8_t f1[2] = { 17, UINT_FAST8_MAX }; +verify (TYPE_MAXIMUM (uint_fast8_t) == UINT_FAST8_MAX); +verify_same_types (UINT_FAST8_MAX, (uint_fast8_t) 0 + 0); + +uint_fast16_t f2[2] = { 17, UINT_FAST16_MAX }; +verify (TYPE_MAXIMUM (uint_fast16_t) == UINT_FAST16_MAX); +verify_same_types (UINT_FAST16_MAX, (uint_fast16_t) 0 + 0); + +uint_fast32_t f3[2] = { 17, UINT_FAST32_MAX }; +verify (TYPE_MAXIMUM (uint_fast32_t) == UINT_FAST32_MAX); +verify_same_types (UINT_FAST32_MAX, (uint_fast32_t) 0 + 0); + +#ifdef UINT_FAST64_MAX +uint_fast64_t f4[2] = { 17, UINT_FAST64_MAX }; +verify (TYPE_MAXIMUM (uint_fast64_t) == UINT_FAST64_MAX); +verify_same_types (UINT_FAST64_MAX, (uint_fast64_t) 0 + 0); +#endif + +#if INT_FAST8_MIN && INT_FAST8_MAX && INT_FAST16_MIN && INT_FAST16_MAX && INT_FAST32_MIN && INT_FAST32_MAX +/* ok */ +#else +err or; +#endif + +#if UINT_FAST8_MAX && UINT_FAST16_MAX && UINT_FAST32_MAX +/* ok */ +#else +err or; +#endif + +/* 7.18.1.4. Integer types capable of holding object pointers */ +/* 7.18.2.4. Limits of integer types capable of holding object pointers */ + +intptr_t g[3] = { 17, INTPTR_MIN, INTPTR_MAX }; +verify (TYPE_MINIMUM (intptr_t) == INTPTR_MIN); +verify (TYPE_MAXIMUM (intptr_t) == INTPTR_MAX); +verify_same_types (INTPTR_MIN, (intptr_t) 0 + 0); +verify_same_types (INTPTR_MAX, (intptr_t) 0 + 0); + +uintptr_t h[2] = { 17, UINTPTR_MAX }; +verify (TYPE_MAXIMUM (uintptr_t) == UINTPTR_MAX); +verify_same_types (UINTPTR_MAX, (uintptr_t) 0 + 0); + +#if INTPTR_MIN && INTPTR_MAX && UINTPTR_MAX +/* ok */ +#else +err or; +#endif + +/* 7.18.1.5. Greatest-width integer types */ +/* 7.18.2.5. Limits of greatest-width integer types */ + +intmax_t i[3] = { INTMAX_C (17), INTMAX_MIN, INTMAX_MAX }; +verify (TYPE_MINIMUM (intmax_t) == INTMAX_MIN); +verify (TYPE_MAXIMUM (intmax_t) == INTMAX_MAX); +verify_same_types (INTMAX_MIN, (intmax_t) 0 + 0); +verify_same_types (INTMAX_MAX, (intmax_t) 0 + 0); + +uintmax_t j[2] = { UINTMAX_C (17), UINTMAX_MAX }; +verify (TYPE_MAXIMUM (uintmax_t) == UINTMAX_MAX); +verify_same_types (UINTMAX_MAX, (uintmax_t) 0 + 0); + +/* As of 2007, Sun C and HP-UX 10.20 cc don't support 'long long' constants in + the preprocessor. */ +#if !(defined __SUNPRO_C || (defined __hpux && !defined __GNUC__)) +#if INTMAX_MIN && INTMAX_MAX && UINTMAX_MAX +/* ok */ +#else +err or; +#endif +#endif + +/* 7.18.3. Limits of other integer types */ + +#include <stddef.h> + +verify (TYPE_MINIMUM (ptrdiff_t) == PTRDIFF_MIN); +verify (TYPE_MAXIMUM (ptrdiff_t) == PTRDIFF_MAX); +verify_same_types (PTRDIFF_MIN, (ptrdiff_t) 0 + 0); +verify_same_types (PTRDIFF_MAX, (ptrdiff_t) 0 + 0); + +#if PTRDIFF_MIN && PTRDIFF_MAX +/* ok */ +#else +err or; +#endif + +#include <signal.h> + +verify (TYPE_MINIMUM (sig_atomic_t) == SIG_ATOMIC_MIN); +verify (TYPE_MAXIMUM (sig_atomic_t) == SIG_ATOMIC_MAX); +verify_same_types (SIG_ATOMIC_MIN, (sig_atomic_t) 0 + 0); +verify_same_types (SIG_ATOMIC_MAX, (sig_atomic_t) 0 + 0); + +#if SIG_ATOMIC_MIN != 17 && SIG_ATOMIC_MAX +/* ok */ +#else +err or; +#endif + +verify (TYPE_MAXIMUM (size_t) == SIZE_MAX); +verify_same_types (SIZE_MAX, (size_t) 0 + 0); + +#if SIZE_MAX +/* ok */ +#else +err or; +#endif + +#if HAVE_WCHAR_T +verify (TYPE_MINIMUM (wchar_t) == WCHAR_MIN); +verify (TYPE_MAXIMUM (wchar_t) == WCHAR_MAX); +verify_same_types (WCHAR_MIN, (wchar_t) 0 + 0); +verify_same_types (WCHAR_MAX, (wchar_t) 0 + 0); + +# if WCHAR_MIN != 17 && WCHAR_MAX +/* ok */ +# else +err or; +# endif +#endif + +#if HAVE_WINT_T +# include <wchar.h> + +verify (TYPE_MINIMUM (wint_t) == WINT_MIN); +verify (TYPE_MAXIMUM (wint_t) == WINT_MAX); +verify_same_types (WINT_MIN, (wint_t) 0 + 0); +verify_same_types (WINT_MAX, (wint_t) 0 + 0); + +# if WINT_MIN != 17 && WINT_MAX +/* ok */ +# else +err or; +# endif +#endif + +/* 7.18.4. Macros for integer constants */ + +verify (INT8_C (17) == 17); +verify_same_types (INT8_C (17), (int_least8_t)0 + 0); +verify (UINT8_C (17) == 17); +verify_same_types (UINT8_C (17), (uint_least8_t)0 + 0); + +verify (INT16_C (17) == 17); +verify_same_types (INT16_C (17), (int_least16_t)0 + 0); +verify (UINT16_C (17) == 17); +verify_same_types (UINT16_C (17), (uint_least16_t)0 + 0); + +verify (INT32_C (17) == 17); +verify_same_types (INT32_C (17), (int_least32_t)0 + 0); +verify (UINT32_C (17) == 17); +verify_same_types (UINT32_C (17), (uint_least32_t)0 + 0); + +#ifdef INT64_C +verify (INT64_C (17) == 17); +verify_same_types (INT64_C (17), (int_least64_t)0 + 0); +#endif +#ifdef UINT64_C +verify (UINT64_C (17) == 17); +verify_same_types (UINT64_C (17), (uint_least64_t)0 + 0); +#endif + +verify (INTMAX_C (17) == 17); +verify_same_types (INTMAX_C (17), (intmax_t)0 + 0); +verify (UINTMAX_C (17) == 17); +verify_same_types (UINTMAX_C (17), (uintmax_t)0 + 0); + + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-stdio.c b/gettext-tools/gnulib-tests/test-stdio.c new file mode 100644 index 0000000..d3f0e6b --- /dev/null +++ b/gettext-tools/gnulib-tests/test-stdio.c @@ -0,0 +1,43 @@ +/* Test of <stdio.h> substitute. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <stdio.h> + +#include "verify.h" + +/* Check that the various SEEK_* macros are defined. */ +int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET }; + +/* Check that NULL can be passed through varargs as a pointer type, + per POSIX 2008. */ +verify (sizeof NULL == sizeof (void *)); + +/* Check that the types are all defined. */ +fpos_t t1; +off_t t2; +size_t t3; +ssize_t t4; +va_list t5; + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-stdlib.c b/gettext-tools/gnulib-tests/test-stdlib.c new file mode 100644 index 0000000..a2743e4 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-stdlib.c @@ -0,0 +1,54 @@ +/* Test of <stdlib.h> substitute. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <stdlib.h> + +#include "verify.h" + +/* Check that EXIT_SUCCESS is 0, per POSIX. */ +static int exitcode = EXIT_SUCCESS; +#if EXIT_SUCCESS +"oops" +#endif + +/* Check for GNU value (not guaranteed by POSIX, but is guaranteed by + gnulib). */ +#if EXIT_FAILURE != 1 +"oops" +#endif + +/* Check that NULL can be passed through varargs as a pointer type, + per POSIX 2008. */ +verify (sizeof NULL == sizeof (void *)); + +#if GNULIB_TEST_SYSTEM_POSIX +# include "test-sys_wait.h" +#else +# define test_sys_wait_macros() 0 +#endif + +int +main (void) +{ + if (test_sys_wait_macros ()) + return 1; + + return exitcode; +} diff --git a/gettext-tools/gnulib-tests/test-strchrnul.c b/gettext-tools/gnulib-tests/test-strchrnul.c new file mode 100644 index 0000000..c8ee66f --- /dev/null +++ b/gettext-tools/gnulib-tests/test-strchrnul.c @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2008-2014 Free Software Foundation, Inc. + * Written by Eric Blake and Bruno Haible + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <string.h> + +#include "signature.h" +SIGNATURE_CHECK (strchrnul, char *, (char const *, int)); + +#include <stdlib.h> + +#include "macros.h" + +int +main (void) +{ + size_t n = 0x100000; + char *input = malloc (n + 1); + ASSERT (input); + + input[0] = 'a'; + input[1] = 'b'; + memset (input + 2, 'c', 1024); + memset (input + 1026, 'd', n - 1028); + input[n - 2] = 'e'; + input[n - 1] = 'a'; + input[n] = '\0'; + + /* Basic behavior tests. */ + ASSERT (strchrnul (input, 'a') == input); + ASSERT (strchrnul (input, 'b') == input + 1); + ASSERT (strchrnul (input, 'c') == input + 2); + ASSERT (strchrnul (input, 'd') == input + 1026); + + ASSERT (strchrnul (input + 1, 'a') == input + n - 1); + ASSERT (strchrnul (input + 1, 'e') == input + n - 2); + + ASSERT (strchrnul (input, 'f') == input + n); + ASSERT (strchrnul (input, '\0') == input + n); + + /* Check that a very long haystack is handled quickly if the byte is + found near the beginning. */ + { + size_t repeat = 10000; + for (; repeat > 0; repeat--) + { + ASSERT (strchrnul (input, 'c') == input + 2); + } + } + + /* Alignment tests. */ + { + int i, j; + for (i = 0; i < 32; i++) + { + for (j = 0; j < 256; j++) + input[i + j] = (j + 1) & 0xff; + for (j = 1; j < 256; j++) + { + ASSERT (strchrnul (input + i, j) == input + i + j - 1); + input[i + j - 1] = (j == 1 ? 2 : 1); + ASSERT (strchrnul (input + i, j) == input + i + 255); + input[i + j - 1] = j; + } + } + } + + free (input); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-strerror.c b/gettext-tools/gnulib-tests/test-strerror.c new file mode 100644 index 0000000..8e2ed7c --- /dev/null +++ b/gettext-tools/gnulib-tests/test-strerror.c @@ -0,0 +1,75 @@ +/* Test of strerror() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2007. */ + +#include <config.h> + +#include <string.h> + +#include "signature.h" +SIGNATURE_CHECK (strerror, char *, (int)); + +#include <errno.h> + +#include "macros.h" + +int +main (void) +{ + char *str; + + errno = 0; + str = strerror (EACCES); + ASSERT (str); + ASSERT (*str); + ASSERT (errno == 0); + + errno = 0; + str = strerror (ETIMEDOUT); + ASSERT (str); + ASSERT (*str); + ASSERT (errno == 0); + + errno = 0; + str = strerror (EOVERFLOW); + ASSERT (str); + ASSERT (*str); + ASSERT (errno == 0); + + /* POSIX requires strerror (0) to succeed. Reject use of "Unknown + error", but allow "Success", "No error", or even Solaris' "Error + 0" which are distinct patterns from true out-of-range strings. + http://austingroupbugs.net/view.php?id=382 */ + errno = 0; + str = strerror (0); + ASSERT (str); + ASSERT (*str); + ASSERT (errno == 0); + ASSERT (strstr (str, "nknown") == NULL); + ASSERT (strstr (str, "ndefined") == NULL); + + /* POSIX requires strerror to produce a non-NULL result for all + inputs; as an extension, we also guarantee a non-empty result. + Reporting EINVAL is optional. */ + errno = 0; + str = strerror (-3); + ASSERT (str); + ASSERT (*str); + ASSERT (errno == 0 || errno == EINVAL); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-striconv.c b/gettext-tools/gnulib-tests/test-striconv.c new file mode 100644 index 0000000..fd29a09 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-striconv.c @@ -0,0 +1,180 @@ +/* Test of character set conversion. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "striconv.h" + +#if HAVE_ICONV +# include <iconv.h> +#endif + +#include <errno.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +int +main () +{ +#if HAVE_ICONV + /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1, + and UTF-8. */ + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8"); + + ASSERT (cd_88591_to_utf8 != (iconv_t)(-1)); + ASSERT (cd_utf8_to_88591 != (iconv_t)(-1)); + + /* ------------------------- Test mem_cd_iconv() ------------------------- */ + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconv (input, strlen (input), cd_88591_to_utf8, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + { + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconv (input, strlen (input), cd_utf8_to_88591, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconv (input, strlen (input), cd_utf8_to_88591, + &result, &length); + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + { + static const char input[] = "\342"; + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconv (input, strlen (input), cd_utf8_to_88591, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == 0); + free (result); + } + + /* ------------------------- Test str_cd_iconv() ------------------------- */ + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char *result = str_cd_iconv (input, cd_88591_to_utf8); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + { + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = str_cd_iconv (input, cd_utf8_to_88591); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + { + static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */ + char *result = str_cd_iconv (input, cd_utf8_to_88591); + ASSERT (result == NULL && errno == EILSEQ); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + { + static const char input[] = "\342"; + char *result = str_cd_iconv (input, cd_utf8_to_88591); + ASSERT (result != NULL); + ASSERT (strcmp (result, "") == 0); + free (result); + } + + iconv_close (cd_88591_to_utf8); + iconv_close (cd_utf8_to_88591); + + /* -------------------------- Test str_iconv() -------------------------- */ + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char *result = str_iconv (input, "ISO-8859-1", "UTF-8"); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + { + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = str_iconv (input, "UTF-8", "ISO-8859-1"); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + { + static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */ + char *result = str_iconv (input, "UTF-8", "ISO-8859-1"); + ASSERT (result == NULL && errno == EILSEQ); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + { + static const char input[] = "\342"; + char *result = str_iconv (input, "UTF-8", "ISO-8859-1"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "") == 0); + free (result); + } + +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-striconveh.c b/gettext-tools/gnulib-tests/test-striconveh.c new file mode 100644 index 0000000..4c6b1e1 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-striconveh.c @@ -0,0 +1,1112 @@ +/* Test of character set conversion with error handling. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "striconveh.h" + +#if HAVE_ICONV +# include <iconv.h> +#endif + +#include <errno.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +/* Magic number for detecting bounds violations. */ +#define MAGIC 0x1983EFF1 + +static size_t * +new_offsets (size_t n) +{ + size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t)); + offsets[n] = MAGIC; + return offsets; +} + +int +main () +{ + static enum iconv_ilseq_handler handlers[] = + { iconveh_error, iconveh_question_mark, iconveh_escape_sequence }; + size_t indirect; + size_t h; + size_t o; + size_t i; + +#if HAVE_ICONV + /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1, + ISO-8859-2, and UTF-8. */ + iconv_t cd_ascii_to_88591 = iconv_open ("ISO-8859-1", "ASCII"); + iconv_t cd_88591_to_88592 = iconv_open ("ISO-8859-2", "ISO-8859-1"); + iconv_t cd_88592_to_88591 = iconv_open ("ISO-8859-1", "ISO-8859-2"); + iconv_t cd_ascii_to_utf8 = iconv_open ("UTF-8", "ASCII"); + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8"); + iconv_t cd_88592_to_utf8 = iconv_open ("UTF-8", "ISO-8859-2"); + iconv_t cd_utf8_to_88592 = iconv_open ("ISO-8859-2", "UTF-8"); + iconv_t cd_utf7_to_utf8 = iconv_open ("UTF-8", "UTF-7"); + iconveh_t cdeh_ascii_to_88591; + iconveh_t cdeh_ascii_to_88591_indirectly; + iconveh_t cdeh_88592_to_88591; + iconveh_t cdeh_88592_to_88591_indirectly; + iconveh_t cdeh_ascii_to_utf8; + iconveh_t cdeh_88591_to_utf8; + iconveh_t cdeh_utf8_to_88591; + iconveh_t cdeh_utf7_to_utf8; + + ASSERT (cd_ascii_to_utf8 != (iconv_t)(-1)); + ASSERT (cd_88591_to_utf8 != (iconv_t)(-1)); + ASSERT (cd_utf8_to_88591 != (iconv_t)(-1)); + ASSERT (cd_88592_to_utf8 != (iconv_t)(-1)); + ASSERT (cd_utf8_to_88592 != (iconv_t)(-1)); + + cdeh_ascii_to_88591.cd = cd_ascii_to_88591; + cdeh_ascii_to_88591.cd1 = cd_ascii_to_utf8; + cdeh_ascii_to_88591.cd2 = cd_utf8_to_88591; + + cdeh_ascii_to_88591_indirectly.cd = (iconv_t)(-1); + cdeh_ascii_to_88591_indirectly.cd1 = cd_ascii_to_utf8; + cdeh_ascii_to_88591_indirectly.cd2 = cd_utf8_to_88591; + + cdeh_88592_to_88591.cd = cd_88592_to_88591; + cdeh_88592_to_88591.cd1 = cd_88592_to_utf8; + cdeh_88592_to_88591.cd2 = cd_utf8_to_88591; + + cdeh_88592_to_88591_indirectly.cd = (iconv_t)(-1); + cdeh_88592_to_88591_indirectly.cd1 = cd_88592_to_utf8; + cdeh_88592_to_88591_indirectly.cd2 = cd_utf8_to_88591; + + cdeh_ascii_to_utf8.cd = cd_ascii_to_utf8; + cdeh_ascii_to_utf8.cd1 = cd_ascii_to_utf8; + cdeh_ascii_to_utf8.cd2 = (iconv_t)(-1); + + cdeh_88591_to_utf8.cd = cd_88591_to_utf8; + cdeh_88591_to_utf8.cd1 = cd_88591_to_utf8; + cdeh_88591_to_utf8.cd2 = (iconv_t)(-1); + + cdeh_utf8_to_88591.cd = cd_utf8_to_88591; + cdeh_utf8_to_88591.cd1 = (iconv_t)(-1); + cdeh_utf8_to_88591.cd2 = cd_utf8_to_88591; + + cdeh_utf7_to_utf8.cd = cd_utf7_to_utf8; + cdeh_utf7_to_utf8.cd1 = cd_utf7_to_utf8; + cdeh_utf7_to_utf8.cd2 = (iconv_t)(-1); + + /* ------------------------ Test mem_cd_iconveh() ------------------------ */ + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */ + for (indirect = 0; indirect <= 1; indirect++) + { + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconveh (input, strlen (input), + (indirect + ? &cdeh_88592_to_88591_indirectly + : &cdeh_88592_to_88591), + handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 37; i++) + ASSERT (offsets[i] == i); + ASSERT (offsets[37] == MAGIC); + free (offsets); + } + free (result); + } + } + } + + /* Test conversion from ASCII to ISO-8859-1 with invalid input (EILSEQ). */ + for (indirect = 0; indirect <= 1; indirect++) + { + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafa? Maszkowski */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconveh (input, strlen (input), + (indirect + ? &cdeh_ascii_to_88591_indirectly + : &cdeh_ascii_to_88591), + handler, + offsets, + &result, &length); + switch (handler) + { + case iconveh_error: + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + if (o) + free (offsets); + break; + case iconveh_question_mark: + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == i); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + break; + } + } + } + } + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */ + for (indirect = 0; indirect <= 1; indirect++) + { + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconveh (input, strlen (input), + (indirect + ? &cdeh_88592_to_88591_indirectly + : &cdeh_88592_to_88591), + handler, + offsets, + &result, &length); + switch (handler) + { + case iconveh_error: + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + if (o) + free (offsets); + break; + case iconveh_question_mark: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == i); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa\\u0142 Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == (i < 5 ? i : + i + 5)); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + break; + } + } + } + } + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconveh (input, strlen (input), + &cdeh_88591_to_utf8, + handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 37; i++) + ASSERT (offsets[i] == (i < 1 ? i : + i < 12 ? i + 1 : + i < 18 ? i + 2 : + i + 3)); + ASSERT (offsets[37] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconveh (input, strlen (input), + &cdeh_utf8_to_88591, + handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 41; i++) + ASSERT (offsets[i] == (i < 1 ? i : + i == 1 ? (size_t)(-1) : + i < 13 ? i - 1 : + i == 13 ? (size_t)(-1) : + i < 20 ? i - 2 : + i == 20 ? (size_t)(-1) : + i < 40 ? i - 3 : + (size_t)(-1))); + ASSERT (offsets[41] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* Test conversion from ASCII to UTF-8 with invalid input (EILSEQ). */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafa? Maszkowski */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconveh (input, strlen (input), + &cdeh_ascii_to_utf8, + handler, + offsets, + &result, &length); + switch (handler) + { + case iconveh_error: + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + if (o) + free (offsets); + break; + case iconveh_question_mark: + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == i); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + break; + } + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconveh (input, strlen (input), + &cdeh_utf8_to_88591, + handler, + offsets, + &result, &length); + switch (handler) + { + case iconveh_error: + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + if (o) + free (offsets); + break; + case iconveh_question_mark: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 17; i++) + ASSERT (offsets[i] == (i < 5 ? i : + i == 5 ? (size_t)(-1) : + i - 1)); + ASSERT (offsets[17] == MAGIC); + free (offsets); + } + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa\\u0142 Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 17; i++) + ASSERT (offsets[i] == (i < 5 ? i : + i == 5 ? (size_t)(-1) : + i + 4)); + ASSERT (offsets[17] == MAGIC); + free (offsets); + } + free (result); + } + break; + } + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\342"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconveh (input, strlen (input), + &cdeh_utf8_to_88591, + handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == 0); + if (o) + { + ASSERT (offsets[0] == 0); + ASSERT (offsets[1] == MAGIC); + free (offsets); + } + free (result); + } + } + + if (cd_utf7_to_utf8 != (iconv_t)(-1)) + { + /* Disabled on Solaris, because Solaris 9 iconv() is buggy: it returns + -1 / EILSEQ when converting the 7th byte of the input "+VDLYP9hA". */ +# if !(defined __sun && !defined _LIBICONV_VERSION) + /* Test conversion from UTF-7 to UTF-8 with EINVAL. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + /* This is base64 encoded 0x54 0x32 0xD8 0x3F 0xD8 0x40. It would + convert to U+5432 U+D83F U+D840 but these are Unicode surrogates. */ + static const char input[] = "+VDLYP9hA"; + static const char expected1[] = "\345\220\262"; /* 吲 glibc */ + static const char expected2[] = ""; /* libiconv */ + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconveh (input, 7, + &cdeh_utf7_to_utf8, + handler, + NULL, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected1) || length == strlen (expected2)); + ASSERT (result != NULL); + if (length == strlen (expected1)) + ASSERT (memcmp (result, expected1, strlen (expected1)) == 0); + else + ASSERT (memcmp (result, expected2, strlen (expected2)) == 0); + free (result); + } + + /* Disabled on NetBSD, because NetBSD 5.0 iconv() is buggy: it converts + the input "+2D/YQNhB" to U+1FED8 U+3FD8 U+40D8. */ +# if !(defined __NetBSD__ && !defined _LIBICONV_VERSION) + /* Test conversion from UTF-7 to UTF-8 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + /* This is base64 encoded 0xD8 0x3F 0xD8 0x40 0xD8 0x41. It would + convert to U+D83F U+D840 U+D841 but these are Unicode surrogates. */ + static const char input[] = "+2D/YQNhB"; + char *result = NULL; + size_t length = 0; + int retval = mem_cd_iconveh (input, strlen (input), + &cdeh_utf7_to_utf8, + handler, + NULL, + &result, &length); + switch (handler) + { + case iconveh_error: + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + break; + case iconveh_question_mark: + case iconveh_escape_sequence: + { + /* glibc result */ + static const char expected1[] = "?????"; + /* libiconv <= 1.12 result */ + static const char expected2[] = "?2D/YQNhB"; + /* libiconv behaviour changed in version 1.13: the result is + '?' U+0FF6 U+1036; this is U+D83F U+D840 U+D841 shifted left + by 6 bits. */ + static const char expected3[] = "?\340\277\266\341\200\266"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected1) + || length == strlen (expected2) + || length == strlen (expected3)); + ASSERT (result != NULL); + if (length == strlen (expected1)) + ASSERT (memcmp (result, expected1, strlen (expected1)) == 0); + else if (length == strlen (expected2)) + ASSERT (memcmp (result, expected2, strlen (expected2)) == 0); + else + ASSERT (memcmp (result, expected3, strlen (expected3)) == 0); + free (result); + } + break; + } + } +# endif +# endif + } + + /* ------------------------ Test str_cd_iconveh() ------------------------ */ + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */ + for (indirect = 0; indirect <= 1; indirect++) + { + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = str_cd_iconveh (input, + (indirect + ? &cdeh_88592_to_88591_indirectly + : &cdeh_88592_to_88591), + handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + } + + /* Test conversion from ASCII to ISO-8859-1 with invalid input (EILSEQ). */ + for (indirect = 0; indirect <= 1; indirect++) + { + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafa? Maszkowski */ + char *result = str_cd_iconveh (input, + (indirect + ? &cdeh_ascii_to_88591_indirectly + : &cdeh_ascii_to_88591), + handler); + switch (handler) + { + case iconveh_error: + ASSERT (result == NULL && errno == EILSEQ); + break; + case iconveh_question_mark: + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + } + } + } + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */ + for (indirect = 0; indirect <= 1; indirect++) + { + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */ + char *result = str_cd_iconveh (input, + (indirect + ? &cdeh_88592_to_88591_indirectly + : &cdeh_88592_to_88591), + handler); + switch (handler) + { + case iconveh_error: + ASSERT (result == NULL && errno == EILSEQ); + break; + case iconveh_question_mark: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa\\u0142 Maszkowski"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + } + } + } + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char *result = str_cd_iconveh (input, + &cdeh_88591_to_utf8, + handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = str_cd_iconveh (input, + &cdeh_utf8_to_88591, + handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from ASCII to UTF-8 with invalid input (EILSEQ). */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafa? Maszkowski */ + char *result = str_cd_iconveh (input, + &cdeh_ascii_to_utf8, + handler); + switch (handler) + { + case iconveh_error: + ASSERT (result == NULL && errno == EILSEQ); + break; + case iconveh_question_mark: + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */ + char *result = str_cd_iconveh (input, + &cdeh_utf8_to_88591, + handler); + switch (handler) + { + case iconveh_error: + ASSERT (result == NULL && errno == EILSEQ); + break; + case iconveh_question_mark: + { + static const char expected[] = "Costs: 27 ?"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Costs: 27 \\u20AC"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\342"; + char *result = str_cd_iconveh (input, + &cdeh_utf8_to_88591, + handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, "") == 0); + free (result); + } + + if (cd_88591_to_88592 != (iconv_t)(-1)) + iconv_close (cd_88591_to_88592); + if (cd_88592_to_88591 != (iconv_t)(-1)) + iconv_close (cd_88592_to_88591); + iconv_close (cd_88591_to_utf8); + iconv_close (cd_utf8_to_88591); + iconv_close (cd_88592_to_utf8); + iconv_close (cd_utf8_to_88592); + + /* ------------------------- Test mem_iconveh() ------------------------- */ + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveh (input, strlen (input), + "ISO-8859-2", "ISO-8859-1", + handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 37; i++) + ASSERT (offsets[i] == i); + ASSERT (offsets[37] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveh (input, strlen (input), + "ISO-8859-2", "ISO-8859-1", + handler, + offsets, + &result, &length); + switch (handler) + { + case iconveh_error: + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + if (o) + free (offsets); + break; + case iconveh_question_mark: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == i); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa\\u0142 Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == (i < 5 ? i : + i + 5)); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + break; + } + } + } + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveh (input, strlen (input), + "ISO-8859-1", "UTF-8", + handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 37; i++) + ASSERT (offsets[i] == (i < 1 ? i : + i < 12 ? i + 1 : + i < 18 ? i + 2 : + i + 3)); + ASSERT (offsets[37] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveh (input, strlen (input), + "UTF-8", "ISO-8859-1", + handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 41; i++) + ASSERT (offsets[i] == (i < 1 ? i : + i == 1 ? (size_t)(-1) : + i < 13 ? i - 1 : + i == 13 ? (size_t)(-1) : + i < 20 ? i - 2 : + i == 20 ? (size_t)(-1) : + i < 40 ? i - 3 : + (size_t)(-1))); + ASSERT (offsets[41] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveh (input, strlen (input), + "UTF-8", "ISO-8859-1", + handler, + offsets, + &result, &length); + switch (handler) + { + case iconveh_error: + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + if (o) + free (offsets); + break; + case iconveh_question_mark: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 17; i++) + ASSERT (offsets[i] == (i < 5 ? i : + i == 5 ? (size_t)(-1) : + i - 1)); + ASSERT (offsets[17] == MAGIC); + free (offsets); + } + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa\\u0142 Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 17; i++) + ASSERT (offsets[i] == (i < 5 ? i : + i == 5 ? (size_t)(-1) : + i + 4)); + ASSERT (offsets[17] == MAGIC); + free (offsets); + } + free (result); + } + break; + } + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\342"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveh (input, strlen (input), + "UTF-8", "ISO-8859-1", + handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == 0); + if (o) + { + ASSERT (offsets[0] == 0); + ASSERT (offsets[1] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* ------------------------- Test str_iconveh() ------------------------- */ + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = str_iconveh (input, "ISO-8859-2", "ISO-8859-1", handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */ + char *result = str_iconveh (input, "ISO-8859-2", "ISO-8859-1", handler); + switch (handler) + { + case iconveh_error: + ASSERT (result == NULL && errno == EILSEQ); + break; + case iconveh_question_mark: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa\\u0142 Maszkowski"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + } + } + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char *result = str_iconveh (input, "ISO-8859-1", "UTF-8", handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = str_iconveh (input, "UTF-8", "ISO-8859-1", handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */ + char *result = str_iconveh (input, "UTF-8", "ISO-8859-1", handler); + switch (handler) + { + case iconveh_error: + ASSERT (result == NULL && errno == EILSEQ); + break; + case iconveh_question_mark: + { + static const char expected[] = "Costs: 27 ?"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Costs: 27 \\u20AC"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\342"; + char *result = str_iconveh (input, "UTF-8", "ISO-8859-1", handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, "") == 0); + free (result); + } + +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-striconveha.c b/gettext-tools/gnulib-tests/test-striconveha.c new file mode 100644 index 0000000..ecfa79e --- /dev/null +++ b/gettext-tools/gnulib-tests/test-striconveha.c @@ -0,0 +1,597 @@ +/* Test of character set conversion with error handling and autodetection. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "striconveha.h" + +#if HAVE_ICONV +# include <iconv.h> +#endif + +#include <errno.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +/* Magic number for detecting bounds violations. */ +#define MAGIC 0x1983EFF1 + +static size_t * +new_offsets (size_t n) +{ + size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t)); + offsets[n] = MAGIC; + return offsets; +} + +int +main () +{ + static enum iconv_ilseq_handler handlers[] = + { iconveh_error, iconveh_question_mark, iconveh_escape_sequence }; + size_t h; + size_t o; + size_t i; + +#if HAVE_ICONV + /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1, + ISO-8859-2, and UTF-8. */ + + /* ------------------------- Test mem_iconveha() ------------------------- */ + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveha (input, strlen (input), + "ISO-8859-2", "ISO-8859-1", + false, handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 37; i++) + ASSERT (offsets[i] == i); + ASSERT (offsets[37] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveha (input, strlen (input), + "ISO-8859-2", "ISO-8859-1", + false, handler, + offsets, + &result, &length); + switch (handler) + { + case iconveh_error: + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + if (o) + free (offsets); + break; + case iconveh_question_mark: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == i); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa\\u0142 Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == (i < 5 ? i : + i + 5)); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + break; + } + } + } + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveha (input, strlen (input), + "ISO-8859-1", "UTF-8", + false, handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 37; i++) + ASSERT (offsets[i] == (i < 1 ? i : + i < 12 ? i + 1 : + i < 18 ? i + 2 : + i + 3)); + ASSERT (offsets[37] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveha (input, strlen (input), + "UTF-8", "ISO-8859-1", + false, handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 41; i++) + ASSERT (offsets[i] == (i < 1 ? i : + i == 1 ? (size_t)(-1) : + i < 13 ? i - 1 : + i == 13 ? (size_t)(-1) : + i < 20 ? i - 2 : + i == 20 ? (size_t)(-1) : + i < 40 ? i - 3 : + (size_t)(-1))); + ASSERT (offsets[41] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\305\202 Maszkowski"; /* Rafał Maszkowski */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveha (input, strlen (input), + "UTF-8", "ISO-8859-1", + false, handler, + offsets, + &result, &length); + switch (handler) + { + case iconveh_error: + ASSERT (retval == -1 && errno == EILSEQ); + ASSERT (result == NULL); + if (o) + free (offsets); + break; + case iconveh_question_mark: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 17; i++) + ASSERT (offsets[i] == (i < 5 ? i : + i == 5 ? (size_t)(-1) : + i - 1)); + ASSERT (offsets[17] == MAGIC); + free (offsets); + } + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa\\u0142 Maszkowski"; + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 17; i++) + ASSERT (offsets[i] == (i < 5 ? i : + i == 5 ? (size_t)(-1) : + i + 4)); + ASSERT (offsets[17] == MAGIC); + free (offsets); + } + free (result); + } + break; + } + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\342"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveha (input, strlen (input), + "UTF-8", "ISO-8859-1", + false, handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == 0); + if (o) + { + ASSERT (offsets[0] == 0); + ASSERT (offsets[1] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */ +# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun) + /* Test conversions from autodetect_jp to UTF-8. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */ + static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveha (input, strlen (input), + "autodetect_jp", "UTF-8", + false, handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 10; i++) + ASSERT (offsets[i] == ((i % 2) == 0 ? (i / 2) * 3 : (size_t)(-1))); + ASSERT (offsets[10] == MAGIC); + free (offsets); + } + free (result); + } + } + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */ + static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveha (input, strlen (input), + "autodetect_jp", "UTF-8", + false, handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 10; i++) + ASSERT (offsets[i] == ((i % 2) == 0 ? (i / 2) * 3 : (size_t)(-1))); + ASSERT (offsets[10] == MAGIC); + free (offsets); + } + free (result); + } + } + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */ + static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveha (input, strlen (input), + "autodetect_jp", "UTF-8", + false, handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == (i == 0 ? 0 : + i == 5 ? 3 : + i == 7 ? 6 : + i == 9 ? 9 : + i == 11 ? 12 : + i == 13 ? 15 : + (size_t)(-1))); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + } +# endif + +# if (((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) && !defined __UCLIBC__) || _LIBICONV_VERSION >= 0x0105 + /* Test conversion from UTF-8 to ISO-8859-1 with transliteration. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */ + static const char expected[] = "Costs: 27 EUR"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + char *result = NULL; + size_t length = 0; + int retval = mem_iconveha (input, strlen (input), + "UTF-8", "ISO-8859-1", + true, handler, + offsets, + &result, &length); + ASSERT (retval == 0); + ASSERT (length == strlen (expected)); + ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 13; i++) + ASSERT (offsets[i] == (i < 11 ? i : (size_t)(-1))); + ASSERT (offsets[13] == MAGIC); + free (offsets); + } + free (result); + } + } +# endif + + /* ------------------------- Test str_iconveha() ------------------------- */ + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = str_iconveha (input, "ISO-8859-2", "ISO-8859-1", false, handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from ISO-8859-2 to ISO-8859-1 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */ + char *result = str_iconveha (input, "ISO-8859-2", "ISO-8859-1", false, handler); + switch (handler) + { + case iconveh_error: + ASSERT (result == NULL && errno == EILSEQ); + break; + case iconveh_question_mark: + { + static const char expected[] = "Rafa? Maszkowski"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Rafa\\u0142 Maszkowski"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + } + } + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + char *result = str_iconveha (input, "ISO-8859-1", "UTF-8", false, handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char *result = str_iconveha (input, "UTF-8", "ISO-8859-1", false, handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */ + char *result = str_iconveha (input, "UTF-8", "ISO-8859-1", false, handler); + switch (handler) + { + case iconveh_error: + ASSERT (result == NULL && errno == EILSEQ); + break; + case iconveh_question_mark: + { + static const char expected[] = "Costs: 27 ?"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + case iconveh_escape_sequence: + { + static const char expected[] = "Costs: 27 \\u20AC"; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + break; + } + } + + /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\342"; + char *result = str_iconveha (input, "UTF-8", "ISO-8859-1", false, handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, "") == 0); + free (result); + } + + /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */ +# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun) + /* Test conversions from autodetect_jp to UTF-8. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */ + static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */ + char *result = str_iconveha (input, "autodetect_jp", "UTF-8", false, handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */ + static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */ + char *result = str_iconveha (input, "autodetect_jp", "UTF-8", false, handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */ + static const char expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */ + char *result = str_iconveha (input, "autodetect_jp", "UTF-8", false, handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } +# endif + +# if (((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) && !defined __UCLIBC__) || _LIBICONV_VERSION >= 0x0105 + /* Test conversion from UTF-8 to ISO-8859-1 with transliteration. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */ + static const char expected[] = "Costs: 27 EUR"; + char *result = str_iconveha (input, "UTF-8", "ISO-8859-1", true, handler); + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0); + free (result); + } +# endif + +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-string.c b/gettext-tools/gnulib-tests/test-string.c new file mode 100644 index 0000000..d890c8b --- /dev/null +++ b/gettext-tools/gnulib-tests/test-string.c @@ -0,0 +1,33 @@ +/* Test of <string.h> substitute. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <string.h> + +#include "verify.h" + +/* Check that NULL can be passed through varargs as a pointer type, + per POSIX 2008. */ +verify (sizeof NULL == sizeof (void *)); + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-strnlen.c b/gettext-tools/gnulib-tests/test-strnlen.c new file mode 100644 index 0000000..8a2089e --- /dev/null +++ b/gettext-tools/gnulib-tests/test-strnlen.c @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2010-2014 Free Software Foundation, Inc. + * Written by Eric Blake + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <string.h> + +#include "signature.h" +SIGNATURE_CHECK (strnlen, size_t, (char const *, size_t)); + +#include <stdlib.h> + +#include "zerosize-ptr.h" +#include "macros.h" + +int +main (void) +{ + size_t i; + char *page_boundary = (char *) zerosize_ptr (); + if (!page_boundary) + { + page_boundary = malloc (0x1000); + ASSERT (page_boundary); + page_boundary += 0x1000; + } + + /* Basic behavior tests. */ + ASSERT (strnlen ("a", 0) == 0); + ASSERT (strnlen ("a", 1) == 1); + ASSERT (strnlen ("a", 2) == 1); + ASSERT (strnlen ("", 0x100000) == 0); + + /* Memory fence and alignment testing. */ + for (i = 0; i < 512; i++) + { + char *start = page_boundary - i; + size_t j = i; + memset (start, 'x', i); + do + { + if (i != j) + { + start[j] = 0; + ASSERT (strnlen (start, i + j) == j); + } + ASSERT (strnlen (start, i) == j); + ASSERT (strnlen (start, j) == j); + } + while (j--); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-strstr.c b/gettext-tools/gnulib-tests/test-strstr.c new file mode 100644 index 0000000..d580cad --- /dev/null +++ b/gettext-tools/gnulib-tests/test-strstr.c @@ -0,0 +1,278 @@ +/* + * Copyright (C) 2004, 2007-2014 Free Software Foundation, Inc. + * Written by Bruno Haible and Eric Blake + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <string.h> + +#include "signature.h" +SIGNATURE_CHECK (strstr, char *, (char const *, char const *)); + +#include <signal.h> +#include <stdlib.h> +#include <unistd.h> + +#include "zerosize-ptr.h" +#include "macros.h" + +int +main (int argc, char *argv[]) +{ +#if HAVE_DECL_ALARM + /* Declare failure if test takes too long, by using default abort + caused by SIGALRM. All known platforms that lack alarm also have + a quadratic strstr, and the replacement strstr is known to not + take too long. */ + int alarm_value = 50; + signal (SIGALRM, SIG_DFL); + alarm (alarm_value); +#endif + + { + const char input[] = "foo"; + const char *result = strstr (input, ""); + ASSERT (result == input); + } + + { + const char input[] = "foo"; + const char *result = strstr (input, "o"); + ASSERT (result == input + 1); + } + + { + /* On some platforms, the memchr() functions reads past the first + occurrence of the byte to be searched, leading to an out-of-bounds + read access for strstr(). + See <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737>. + This is a bug in memchr(), see the Austin Group's clarification + <http://www.opengroup.org/austin/docs/austin_454.txt>. */ + const char *fix = "aBaaaaaaaaaaax"; + char *page_boundary = (char *) zerosize_ptr (); + size_t len = strlen (fix) + 1; + char *input = page_boundary ? page_boundary - len : malloc (len); + const char *result; + + strcpy (input, fix); + result = strstr (input, "B1x"); + ASSERT (result == NULL); + if (!page_boundary) + free (input); + } + + { + const char input[] = "ABC ABCDAB ABCDABCDABDE"; + const char *result = strstr (input, "ABCDABD"); + ASSERT (result == input + 15); + } + + { + const char input[] = "ABC ABCDAB ABCDABCDABDE"; + const char *result = strstr (input, "ABCDABE"); + ASSERT (result == NULL); + } + + { + const char input[] = "ABC ABCDAB ABCDABCDABDE"; + const char *result = strstr (input, "ABCDABCD"); + ASSERT (result == input + 11); + } + + /* Check that a long periodic needle does not cause false positives. */ + { + const char input[] = "F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD" + "_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD" + "_C3_A7_20_EF_BF_BD"; + const char need[] = "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; + const char *result = strstr (input, need); + ASSERT (result == NULL); + } + { + const char input[] = "F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD" + "_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD" + "_C3_A7_20_EF_BF_BD_DA_B5_C2_A6_20" + "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; + const char need[] = "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; + const char *result = strstr (input, need); + ASSERT (result == input + 115); + } + + /* Check that a very long haystack is handled quickly if the needle is + short and occurs near the beginning. */ + { + size_t repeat = 10000; + size_t m = 1000000; + const char *needle = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + char *haystack = (char *) malloc (m + 1); + if (haystack != NULL) + { + memset (haystack, 'A', m); + haystack[0] = 'B'; + haystack[m] = '\0'; + + for (; repeat > 0; repeat--) + { + ASSERT (strstr (haystack, needle) == haystack + 1); + } + + free (haystack); + } + } + + /* Check that a very long needle is discarded quickly if the haystack is + short. */ + { + size_t repeat = 10000; + size_t m = 1000000; + const char *haystack = + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB"; + char *needle = (char *) malloc (m + 1); + if (needle != NULL) + { + memset (needle, 'A', m); + needle[m] = '\0'; + + for (; repeat > 0; repeat--) + { + ASSERT (strstr (haystack, needle) == NULL); + } + + free (needle); + } + } + + /* Check that the asymptotic worst-case complexity is not quadratic. */ + { + size_t m = 1000000; + char *haystack = (char *) malloc (2 * m + 2); + char *needle = (char *) malloc (m + 2); + if (haystack != NULL && needle != NULL) + { + const char *result; + + memset (haystack, 'A', 2 * m); + haystack[2 * m] = 'B'; + haystack[2 * m + 1] = '\0'; + + memset (needle, 'A', m); + needle[m] = 'B'; + needle[m + 1] = '\0'; + + result = strstr (haystack, needle); + ASSERT (result == haystack + m); + } + free (needle); + free (haystack); + } + + /* Sublinear speed is only possible in memmem; strstr must examine + every character of haystack to find its length. */ + + + { + /* Ensure that with a barely periodic "short" needle, strstr's + search does not mistakenly skip just past the match point. + This use of strstr would mistakenly return NULL before + gnulib v0.0-4927. */ + const char *haystack = + "\n" + "with_build_libsubdir\n" + "with_local_prefix\n" + "with_gxx_include_dir\n" + "with_cpp_install_dir\n" + "enable_generated_files_in_srcdir\n" + "with_gnu_ld\n" + "with_ld\n" + "with_demangler_in_ld\n" + "with_gnu_as\n" + "with_as\n" + "enable_largefile\n" + "enable_werror_always\n" + "enable_checking\n" + "enable_coverage\n" + "enable_gather_detailed_mem_stats\n" + "enable_build_with_cxx\n" + "with_stabs\n" + "enable_multilib\n" + "enable___cxa_atexit\n" + "enable_decimal_float\n" + "enable_fixed_point\n" + "enable_threads\n" + "enable_tls\n" + "enable_objc_gc\n" + "with_dwarf2\n" + "enable_shared\n" + "with_build_sysroot\n" + "with_sysroot\n" + "with_specs\n" + "with_pkgversion\n" + "with_bugurl\n" + "enable_languages\n" + "with_multilib_list\n"; + const char *needle = "\n" + "with_gnu_ld\n"; + const char* p = strstr (haystack, needle); + ASSERT (p - haystack == 114); + } + + { + /* Same bug, shorter trigger. */ + const char *haystack = "..wi.d."; + const char *needle = ".d."; + const char* p = strstr (haystack, needle); + ASSERT (p - haystack == 4); + } + + { + /* Like the above, but trigger the flaw in two_way_long_needle + by using a needle of length LONG_NEEDLE_THRESHOLD (32) or greater. + Rather than trying to find the right alignment manually, I've + arbitrarily chosen the following needle and template for the + haystack, and ensure that for each placement of the needle in + that haystack, strstr finds it. */ + const char *needle = "\nwith_gnu_ld-extend-to-len-32-b\n"; + const char *h = + "\n" + "with_build_libsubdir\n" + "with_local_prefix\n" + "with_gxx_include_dir\n" + "with_cpp_install_dir\n" + "with_e_\n" + "..............................\n" + "with_FGHIJKLMNOPQRSTUVWXYZ\n" + "with_567890123456789\n" + "with_multilib_list\n"; + size_t h_len = strlen (h); + char *haystack = malloc (h_len + 1); + size_t i; + ASSERT (haystack); + for (i = 0; i < h_len - strlen (needle); i++) + { + const char *p; + memcpy (haystack, h, h_len + 1); + memcpy (haystack + i, needle, strlen (needle) + 1); + p = strstr (haystack, needle); + ASSERT (p); + ASSERT (p - haystack == i); + } + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-strtol.c b/gettext-tools/gnulib-tests/test-strtol.c new file mode 100644 index 0000000..49b7007 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-strtol.c @@ -0,0 +1,181 @@ +/* + * Copyright (C) 2011-2014 Free Software Foundation, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdlib.h> + +#include "signature.h" +#ifndef strtol +SIGNATURE_CHECK (strtol, long, (const char *, char **, int)); +#endif + +#include <errno.h> + +#include "macros.h" + +int +main (void) +{ + /* Subject sequence empty or invalid. */ + { + const char input[] = ""; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input); + ASSERT (errno == 0 || errno == EINVAL); + } + { + const char input[] = " "; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input); + ASSERT (errno == 0 || errno == EINVAL); + } + { + const char input[] = " +"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input); + ASSERT (errno == 0 || errno == EINVAL); + } + { + const char input[] = " -"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input); + ASSERT (errno == 0 || errno == EINVAL); + } + + /* Simple integer values. */ + { + const char input[] = "0"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input + 1); + ASSERT (errno == 0); + } + { + const char input[] = "+0"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input + 2); + ASSERT (errno == 0); + } + { + const char input[] = "-0"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input + 2); + ASSERT (errno == 0); + } + { + const char input[] = "23"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 23); + ASSERT (ptr == input + 2); + ASSERT (errno == 0); + } + { + const char input[] = " 23"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 23); + ASSERT (ptr == input + 3); + ASSERT (errno == 0); + } + { + const char input[] = "+23"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 23); + ASSERT (ptr == input + 3); + ASSERT (errno == 0); + } + { + const char input[] = "-23"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == -23); + ASSERT (ptr == input + 3); + ASSERT (errno == 0); + } + + /* Large integer values. */ + { + const char input[] = "2147483647"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 2147483647); + ASSERT (ptr == input + 10); + ASSERT (errno == 0); + } + { + const char input[] = "-2147483648"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == -2147483647 - 1); + ASSERT (ptr == input + 11); + ASSERT (errno == 0); + } + if (sizeof (long) > sizeof (int)) + { + const char input[] = "4294967295"; + char *ptr; + long result; + errno = 0; + result = strtol (input, &ptr, 10); + ASSERT (result == 65535L * 65537L); + ASSERT (ptr == input + 10); + ASSERT (errno == 0); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-strtoul.c b/gettext-tools/gnulib-tests/test-strtoul.c new file mode 100644 index 0000000..80a7343 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-strtoul.c @@ -0,0 +1,180 @@ +/* + * Copyright (C) 2011-2014 Free Software Foundation, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdlib.h> + +#include "signature.h" +#ifndef strtoul +SIGNATURE_CHECK (strtoul, unsigned long, (const char *, char **, int)); +#endif + +#include <errno.h> + +#include "macros.h" + +int +main (void) +{ + /* Subject sequence empty or invalid. */ + { + const char input[] = ""; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input); + ASSERT (errno == 0 || errno == EINVAL); + } + { + const char input[] = " "; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input); + ASSERT (errno == 0 || errno == EINVAL); + } + { + const char input[] = " +"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input); + ASSERT (errno == 0 || errno == EINVAL); + } + { + const char input[] = " -"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input); + ASSERT (errno == 0 || errno == EINVAL); + } + + /* Simple integer values. */ + { + const char input[] = "0"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input + 1); + ASSERT (errno == 0); + } + { + const char input[] = "+0"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input + 2); + ASSERT (errno == 0); + } + { + const char input[] = "-0"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 0); + ASSERT (ptr == input + 2); + ASSERT (errno == 0); + } + { + const char input[] = "23"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 23); + ASSERT (ptr == input + 2); + ASSERT (errno == 0); + } + { + const char input[] = " 23"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 23); + ASSERT (ptr == input + 3); + ASSERT (errno == 0); + } + { + const char input[] = "+23"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 23); + ASSERT (ptr == input + 3); + ASSERT (errno == 0); + } + { + const char input[] = "-23"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == - 23UL); + ASSERT (ptr == input + 3); + ASSERT (errno == 0); + } + + /* Large integer values. */ + { + const char input[] = "2147483647"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 2147483647); + ASSERT (ptr == input + 10); + ASSERT (errno == 0); + } + { + const char input[] = "-2147483648"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == - 2147483648UL); + ASSERT (ptr == input + 11); + ASSERT (errno == 0); + } + { + const char input[] = "4294967295"; + char *ptr; + unsigned long result; + errno = 0; + result = strtoul (input, &ptr, 10); + ASSERT (result == 4294967295U); + ASSERT (ptr == input + 10); + ASSERT (errno == 0); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-symlink.c b/gettext-tools/gnulib-tests/test-symlink.c new file mode 100644 index 0000000..78d46c2 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-symlink.c @@ -0,0 +1,47 @@ +/* Tests of symlink. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (symlink, int, (char const *, char const *)); + +#include <fcntl.h> +#include <errno.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <sys/stat.h> + +#include "ignore-value.h" +#include "macros.h" + +#define BASE "test-symlink.t" + +#include "test-symlink.h" + +int +main (void) +{ + /* Remove any leftovers from a previous partial run. */ + ignore_value (system ("rm -rf " BASE "*")); + + return test_symlink (symlink, true); +} diff --git a/gettext-tools/gnulib-tests/test-symlink.h b/gettext-tools/gnulib-tests/test-symlink.h new file mode 100644 index 0000000..eb11cf6 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-symlink.h @@ -0,0 +1,95 @@ +/* Tests of symlink. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +/* This file is designed to test both symlink(a,b) and + symlinkat(a,AT_FDCWD,b). FUNC is the function to test. Assumes + that BASE and ASSERT are already defined, and that appropriate + headers are already included. If PRINT, warn before skipping + symlink tests with status 77. */ + +static int +test_symlink (int (*func) (char const *, char const *), bool print) +{ + if (func ("nowhere", BASE "link1")) + { + if (print) + fputs ("skipping test: symlinks not supported on this file system\n", + stderr); + return 77; + } + + /* Some systems allow the creation of 0-length symlinks as a synonym + for "."; but most reject it. */ + { + int status; + errno = 0; + status = func ("", BASE "link2"); + if (status == -1) + ASSERT (errno == ENOENT || errno == EINVAL); + else + { + ASSERT (status == 0); + ASSERT (unlink (BASE "link2") == 0); + } + } + + /* Sanity checks of failures. */ + errno = 0; + ASSERT (func ("nowhere", "") == -1); + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("nowhere", ".") == -1); + ASSERT (errno == EEXIST || errno == EINVAL); + errno = 0; + ASSERT (func ("somewhere", BASE "link1") == -1); + ASSERT (errno == EEXIST); + errno = 0; + ASSERT (func ("nowhere", BASE "link2/") == -1); + ASSERT (errno == ENOTDIR || errno == ENOENT); + ASSERT (mkdir (BASE "dir", 0700) == 0); + errno = 0; + ASSERT (func ("nowhere", BASE "dir") == -1); + ASSERT (errno == EEXIST); + errno = 0; + ASSERT (func ("nowhere", BASE "dir/") == -1); + ASSERT (errno == EEXIST || errno == EINVAL); + ASSERT (close (creat (BASE "file", 0600)) == 0); + errno = 0; + ASSERT (func ("nowhere", BASE "file") == -1); + ASSERT (errno == EEXIST); + errno = 0; + ASSERT (func ("nowhere", BASE "file/") == -1); + ASSERT (errno == EEXIST || errno == ENOTDIR || errno == ENOENT); + + /* Trailing slash must always be rejected. */ + ASSERT (unlink (BASE "link1") == 0); + ASSERT (func (BASE "link2", BASE "link1") == 0); + errno = 0; + ASSERT (func (BASE "nowhere", BASE "link1/") == -1); + ASSERT (errno == EEXIST || errno == ENOTDIR || errno == ENOENT); + errno = 0; + ASSERT (unlink (BASE "link2") == -1); + ASSERT (errno == ENOENT); + + /* Cleanup. */ + ASSERT (rmdir (BASE "dir") == 0); + ASSERT (unlink (BASE "file") == 0); + ASSERT (unlink (BASE "link1") == 0); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-sys_select.c b/gettext-tools/gnulib-tests/test-sys_select.c new file mode 100644 index 0000000..2e4f7c1 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sys_select.c @@ -0,0 +1,59 @@ +/* Test of <sys/select.h> substitute. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <sys/select.h> + +#include "signature.h" + +/* The following may be macros without underlying functions, so only + check signature if they are not macros. */ +#ifndef FD_CLR +SIGNATURE_CHECK (FD_CLR, void, (int, fd_set *)); +#endif +#ifndef FD_ISSET +SIGNATURE_CHECK (FD_ISSET, void, (int, fd_set *)); +#endif +#ifndef FD_SET +SIGNATURE_CHECK (FD_SET, int, (int, fd_set *)); +#endif +#ifndef FD_ZERO +SIGNATURE_CHECK (FD_ZERO, void, (fd_set *)); +#endif + +/* Check that the 'struct timeval' type is defined. */ +struct timeval a; + +/* Check that a.tv_sec is wide enough to hold a time_t, ignoring + signedness issues. */ +typedef int verify_tv_sec_type[sizeof (time_t) <= sizeof (a.tv_sec) ? 1 : -1]; + +/* Check that sigset_t is defined. */ +sigset_t t2; + +int +main (void) +{ + /* Check that FD_ZERO can be used. This should not yield a warning + such as "warning: implicit declaration of function 'memset'". */ + fd_set fds; + FD_ZERO (&fds); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-sys_stat.c b/gettext-tools/gnulib-tests/test-sys_stat.c new file mode 100644 index 0000000..c6a67f7 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sys_stat.c @@ -0,0 +1,340 @@ +/* Test of <sys/stat.h> substitute. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <sys/stat.h> + +#include "verify.h" + +/* Check the existence of some macros. */ +int a[] = + { + S_IFMT, +#ifdef S_IFBLK /* missing on MSVC */ + S_IFBLK, +#endif + S_IFCHR, S_IFDIR, S_IFIFO, S_IFREG, +#ifdef S_IFLNK /* missing on native Windows and DJGPP */ + S_IFLNK, +#endif +#ifdef S_IFSOCK /* missing on native Windows and DJGPP */ + S_IFSOCK, +#endif + S_IRWXU, S_IRUSR, S_IWUSR, S_IXUSR, + S_IRWXG, S_IRGRP, S_IWGRP, S_IXGRP, + S_IRWXO, S_IROTH, S_IWOTH, S_IXOTH, + S_ISUID, S_ISGID, S_ISVTX, + S_ISBLK (S_IFREG), + S_ISCHR (S_IFREG), + S_ISDIR (S_IFREG), + S_ISFIFO (S_IFREG), + S_ISREG (S_IFREG), + S_ISLNK (S_IFREG), + S_ISSOCK (S_IFREG), + S_ISDOOR (S_IFREG), + S_ISMPB (S_IFREG), + S_ISMPX (S_IFREG), + S_ISNAM (S_IFREG), + S_ISNWK (S_IFREG), + S_ISPORT (S_IFREG), + S_ISCTG (S_IFREG), + S_ISOFD (S_IFREG), + S_ISOFL (S_IFREG), + S_ISWHT (S_IFREG) + }; + +/* Sanity checks. */ + +verify (S_IRWXU == (S_IRUSR | S_IWUSR | S_IXUSR)); +verify (S_IRWXG == (S_IRGRP | S_IWGRP | S_IXGRP)); +verify (S_IRWXO == (S_IROTH | S_IWOTH | S_IXOTH)); + +#ifdef S_IFBLK +verify (S_ISBLK (S_IFBLK)); +#endif +verify (!S_ISBLK (S_IFCHR)); +verify (!S_ISBLK (S_IFDIR)); +verify (!S_ISBLK (S_IFIFO)); +verify (!S_ISBLK (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISBLK (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISBLK (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISCHR (S_IFBLK)); +#endif +verify (S_ISCHR (S_IFCHR)); +verify (!S_ISCHR (S_IFDIR)); +verify (!S_ISCHR (S_IFIFO)); +verify (!S_ISCHR (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISCHR (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISCHR (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISDIR (S_IFBLK)); +#endif +verify (!S_ISDIR (S_IFCHR)); +verify (S_ISDIR (S_IFDIR)); +verify (!S_ISDIR (S_IFIFO)); +verify (!S_ISDIR (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISDIR (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISDIR (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISFIFO (S_IFBLK)); +#endif +verify (!S_ISFIFO (S_IFCHR)); +verify (!S_ISFIFO (S_IFDIR)); +verify (S_ISFIFO (S_IFIFO)); +verify (!S_ISFIFO (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISFIFO (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISFIFO (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISREG (S_IFBLK)); +#endif +verify (!S_ISREG (S_IFCHR)); +verify (!S_ISREG (S_IFDIR)); +verify (!S_ISREG (S_IFIFO)); +verify (S_ISREG (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISREG (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISREG (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISLNK (S_IFBLK)); +#endif +verify (!S_ISLNK (S_IFCHR)); +verify (!S_ISLNK (S_IFDIR)); +verify (!S_ISLNK (S_IFIFO)); +verify (!S_ISLNK (S_IFREG)); +#ifdef S_IFLNK +verify (S_ISLNK (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISLNK (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISSOCK (S_IFBLK)); +#endif +verify (!S_ISSOCK (S_IFCHR)); +verify (!S_ISSOCK (S_IFDIR)); +verify (!S_ISSOCK (S_IFIFO)); +verify (!S_ISSOCK (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISSOCK (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (S_ISSOCK (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISDOOR (S_IFBLK)); +#endif +verify (!S_ISDOOR (S_IFCHR)); +verify (!S_ISDOOR (S_IFDIR)); +verify (!S_ISDOOR (S_IFIFO)); +verify (!S_ISDOOR (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISDOOR (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISDOOR (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISMPB (S_IFBLK)); +#endif +verify (!S_ISMPB (S_IFCHR)); +verify (!S_ISMPB (S_IFDIR)); +verify (!S_ISMPB (S_IFIFO)); +verify (!S_ISMPB (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISMPB (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISMPB (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISMPX (S_IFBLK)); +#endif +verify (!S_ISMPX (S_IFCHR)); +verify (!S_ISMPX (S_IFDIR)); +verify (!S_ISMPX (S_IFIFO)); +verify (!S_ISMPX (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISMPX (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISMPX (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISNAM (S_IFBLK)); +#endif +verify (!S_ISNAM (S_IFCHR)); +verify (!S_ISNAM (S_IFDIR)); +verify (!S_ISNAM (S_IFIFO)); +verify (!S_ISNAM (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISNAM (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISNAM (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISNWK (S_IFBLK)); +#endif +verify (!S_ISNWK (S_IFCHR)); +verify (!S_ISNWK (S_IFDIR)); +verify (!S_ISNWK (S_IFIFO)); +verify (!S_ISNWK (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISNWK (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISNWK (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISPORT (S_IFBLK)); +#endif +verify (!S_ISPORT (S_IFCHR)); +verify (!S_ISPORT (S_IFDIR)); +verify (!S_ISPORT (S_IFIFO)); +verify (!S_ISPORT (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISPORT (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISPORT (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISCTG (S_IFBLK)); +#endif +verify (!S_ISCTG (S_IFCHR)); +verify (!S_ISCTG (S_IFDIR)); +verify (!S_ISCTG (S_IFIFO)); +verify (!S_ISCTG (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISCTG (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISCTG (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISOFD (S_IFBLK)); +#endif +verify (!S_ISOFD (S_IFCHR)); +verify (!S_ISOFD (S_IFDIR)); +verify (!S_ISOFD (S_IFIFO)); +verify (!S_ISOFD (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISOFD (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISOFD (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISOFL (S_IFBLK)); +#endif +verify (!S_ISOFL (S_IFCHR)); +verify (!S_ISOFL (S_IFDIR)); +verify (!S_ISOFL (S_IFIFO)); +verify (!S_ISOFL (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISOFL (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISOFL (S_IFSOCK)); +#endif + +#ifdef S_IFBLK +verify (!S_ISWHT (S_IFBLK)); +#endif +verify (!S_ISWHT (S_IFCHR)); +verify (!S_ISWHT (S_IFDIR)); +verify (!S_ISWHT (S_IFIFO)); +verify (!S_ISWHT (S_IFREG)); +#ifdef S_IFLNK +verify (!S_ISWHT (S_IFLNK)); +#endif +#ifdef S_IFSOCK +verify (!S_ISWHT (S_IFSOCK)); +#endif + +/* POSIX 2008 requires traditional encoding of permission constants. */ +verify (S_IRWXU == 00700); +verify (S_IRUSR == 00400); +verify (S_IWUSR == 00200); +verify (S_IXUSR == 00100); +verify (S_IRWXG == 00070); +verify (S_IRGRP == 00040); +verify (S_IWGRP == 00020); +verify (S_IXGRP == 00010); +verify (S_IRWXO == 00007); +verify (S_IROTH == 00004); +verify (S_IWOTH == 00002); +verify (S_IXOTH == 00001); +verify (S_ISUID == 04000); +verify (S_ISGID == 02000); +verify (S_ISVTX == 01000); + +#if ((0 <= UTIME_NOW && UTIME_NOW < 1000000000) \ + || (0 <= UTIME_OMIT && UTIME_OMIT < 1000000000) \ + || UTIME_NOW == UTIME_OMIT) +invalid UTIME macros +#endif + +/* Check the existence of some types. */ +nlink_t t1; +off_t t2; +mode_t t3; + +struct timespec st; + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-sys_time.c b/gettext-tools/gnulib-tests/test-sys_time.c new file mode 100644 index 0000000..ea12c63 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sys_time.c @@ -0,0 +1,34 @@ +/* Test of <sys/time.h> substitute. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <sys/time.h> + +/* Check that the 'struct timeval' type is defined. */ +struct timeval a; + +/* Check that a.tv_sec is wide enough to hold a time_t, ignoring + signedness issues. */ +typedef int verify_tv_sec_type[sizeof (time_t) <= sizeof (a.tv_sec) ? 1 : -1]; + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-sys_types.c b/gettext-tools/gnulib-tests/test-sys_types.c new file mode 100644 index 0000000..ddcb6d2 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sys_types.c @@ -0,0 +1,34 @@ +/* Test of <sys/types.h> substitute. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2011. */ + +#include <config.h> + +#include <sys/types.h> + +/* Check that the types are all defined. */ +pid_t t1; +size_t t2; +ssize_t t3; +off_t t4; +mode_t t5; + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-sys_wait.c b/gettext-tools/gnulib-tests/test-sys_wait.c new file mode 100644 index 0000000..daf6f28 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sys_wait.c @@ -0,0 +1,47 @@ +/* Test of <sys/wait.h> substitute. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <sys/wait.h> + +/* Check for existence of required types. */ +static pid_t a; + +#include "test-sys_wait.h" + +int +main (void) +{ + if (test_sys_wait_macros ()) + return 1; + +#if 0 + switch (WCONTINUED) + { + /* Gnulib doesn't guarantee these, yet. */ + case WCONTINUED: + case WEXITED: + case WNOWAIT: + case WSTOPPED: + break; + } +#endif + + return a ? 1 : 0; +} diff --git a/gettext-tools/gnulib-tests/test-sys_wait.h b/gettext-tools/gnulib-tests/test-sys_wait.h new file mode 100644 index 0000000..ed20219 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-sys_wait.h @@ -0,0 +1,53 @@ +/* Test of macros shared between <sys/wait.h> and <stdlib.h>. + Copyright (C) 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2010. */ + +static int +test_sys_wait_macros (void) +{ + /* Check subset of <sys/wait.h> macros that must be visible here. + Note that some of these macros are only portable when operating + on an lvalue. */ + int i; + for (i = 0; i < 0x8000; i = (i ? i << 1 : 1)) + { + /* POSIX requires that for all valid process statuses, that + exactly one of these three macros is true. But not all + possible 16-bit values map to valid process status. + Traditionally, 8 of the bits are for WIFEXITED, 7 of the bits + to tell between WIFSIGNALED and WIFSTOPPED, and either 0x80 + or 0x8000 to flag that core was also dumped. Since we don't + know which byte is WIFEXITED, we skip the both possible bits + that can signal core dump. */ + if (i == 0x80) + continue; + if (!!WIFSIGNALED (i) + !!WIFEXITED (i) + !!WIFSTOPPED (i) != 1) + return 1; + } + i = WEXITSTATUS (i) + WSTOPSIG (i) + WTERMSIG (i); + + switch (i) + { +#if 0 + /* Gnulib doesn't guarantee these, yet. */ + case WNOHANG: + case WUNTRACED: +#endif + break; + } + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm b/gettext-tools/gnulib-tests/test-term-ostream-xterm new file mode 100755 index 0000000..71dc6eb --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm @@ -0,0 +1,39 @@ +#!/bin/sh + +tmpfiles="" +trap 'rm -fr $tmpfiles' 1 2 3 15 + +tmpfiles="$tmpfiles out1 out" +# The redirection of stderr into a pipe avoids the output of padding bytes +# (unnecessary NUL bytes after escape sequences) on some systems. +(TERM=xterm ./test-term-ostream > out1) 2>&1 | cat 1>&2 +LC_ALL=C tr -d '\r' < out1 > out + +# There are several variants of the "xterm" terminal description floating +# around, each with a different sgr0 escape sequence. Use "infocmp -l -1 xterm" +# to inspect the escape sequences of xterm on your platform. +# xterm-r6: sgr0=\E[m +# xterm-xf86-v32: sgr0=\E[m\017 +# xterm-linux-mandriva: sgr0=\E[m\E(B +# xterm-basic: sgr0=\E(B\E[m +# xterm-8bit: sgr0=\2330m\E(B + +: ${DIFF=diff} + ${DIFF} ${srcdir}/test-term-ostream-xterm-r6.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-xf86-v32.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-basic.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-basic-italic.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-8bit.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-linux-debian.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-linux-mandriva.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-netbsd3.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-solaris10.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-aix51.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-osf51.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-irix65.out out > /dev/null \ +|| ${DIFF} ${srcdir}/test-term-ostream-xterm-mingw.out out > /dev/null +result=$? + +rm -fr $tmpfiles + +exit $result diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-16color.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-16color.out new file mode 100644 index 0000000..3c13e71 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-16color.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [39;49m|[30m[104m Words [39;49m|[30m[102m Words [39;49m|[30m[106m Words [39;49m|[30m[101m Words [39;49m|[30m[105m Words [39;49m|[30m[103m Words [39;49m|[30m[107m Words [39;49m|[30m Words [39;49m +blue |[94m[40m Words [39;49m|[94m[104m Words [39;49m|[94m[102m Words [39;49m|[94m[106m Words [39;49m|[94m[101m Words [39;49m|[94m[105m Words [39;49m|[94m[103m Words [39;49m|[94m[107m Words [39;49m|[94m Words [39;49m +green |[92m[40m Words [39;49m|[92m[104m Words [39;49m|[92m[102m Words [39;49m|[92m[106m Words [39;49m|[92m[101m Words [39;49m|[92m[105m Words [39;49m|[92m[103m Words [39;49m|[92m[107m Words [39;49m|[92m Words [39;49m +cyan |[96m[40m Words [39;49m|[96m[104m Words [39;49m|[96m[102m Words [39;49m|[96m[106m Words [39;49m|[96m[101m Words [39;49m|[96m[105m Words [39;49m|[96m[103m Words [39;49m|[96m[107m Words [39;49m|[96m Words [39;49m +red |[91m[40m Words [39;49m|[91m[104m Words [39;49m|[91m[102m Words [39;49m|[91m[106m Words [39;49m|[91m[101m Words [39;49m|[91m[105m Words [39;49m|[91m[103m Words [39;49m|[91m[107m Words [39;49m|[91m Words [39;49m +magenta|[95m[40m Words [39;49m|[95m[104m Words [39;49m|[95m[102m Words [39;49m|[95m[106m Words [39;49m|[95m[101m Words [39;49m|[95m[105m Words [39;49m|[95m[103m Words [39;49m|[95m[107m Words [39;49m|[95m Words [39;49m +yellow |[93m[40m Words [39;49m|[93m[104m Words [39;49m|[93m[102m Words [39;49m|[93m[106m Words [39;49m|[93m[101m Words [39;49m|[93m[105m Words [39;49m|[93m[103m Words [39;49m|[93m[107m Words [39;49m|[93m Words [39;49m +white |[97m[40m Words [39;49m|[97m[104m Words [39;49m|[97m[102m Words [39;49m|[97m[106m Words [39;49m|[97m[101m Words [39;49m|[97m[105m Words [39;49m|[97m[103m Words [39;49m|[97m[107m Words [39;49m|[97m Words [39;49m +default|[40m Words [39;49m|[104m Words [39;49m|[102m Words [39;49m|[106m Words [39;49m|[101m Words [39;49m|[105m Words [39;49m|[103m Words [39;49m|[107m Words [39;49m| Words + +Colors (hue/saturation): +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[103m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[102m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[106m [107m [39;49m +[104m [107m [39;49m +[104m [107m [39;49m +[104m [107m [39;49m +[104m [107m [39;49m +[104m [107m [39;49m +[104m [107m [39;49m +[104m [107m [39;49m +[104m [47m [107m [39;49m +[104m [47m [107m [39;49m +[104m [47m [107m [39;49m +[104m [47m [107m [39;49m +[104m [47m [107m [39;49m +[104m [47m [107m [39;49m +[104m [107m [39;49m +[104m [107m [39;49m +[104m [107m [39;49m +[104m [107m [39;49m +[104m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[105m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m +[101m [107m [39;49m + +Weights: +normal, [1mbold, [0mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [24mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-256color.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-256color.out new file mode 100644 index 0000000..792b247 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-256color.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[38;5;0m[48;5;0m Words [39;49m|[38;5;0m[48;5;12m Words [39;49m|[38;5;0m[48;5;10m Words [39;49m|[38;5;0m[48;5;14m Words [39;49m|[38;5;0m[48;5;9m Words [39;49m|[38;5;0m[48;5;13m Words [39;49m|[38;5;0m[48;5;11m Words [39;49m|[38;5;0m[48;5;15m Words [39;49m|[38;5;0m Words [39;49m +blue |[38;5;12m[48;5;0m Words [39;49m|[38;5;12m[48;5;12m Words [39;49m|[38;5;12m[48;5;10m Words [39;49m|[38;5;12m[48;5;14m Words [39;49m|[38;5;12m[48;5;9m Words [39;49m|[38;5;12m[48;5;13m Words [39;49m|[38;5;12m[48;5;11m Words [39;49m|[38;5;12m[48;5;15m Words [39;49m|[38;5;12m Words [39;49m +green |[38;5;10m[48;5;0m Words [39;49m|[38;5;10m[48;5;12m Words [39;49m|[38;5;10m[48;5;10m Words [39;49m|[38;5;10m[48;5;14m Words [39;49m|[38;5;10m[48;5;9m Words [39;49m|[38;5;10m[48;5;13m Words [39;49m|[38;5;10m[48;5;11m Words [39;49m|[38;5;10m[48;5;15m Words [39;49m|[38;5;10m Words [39;49m +cyan |[38;5;14m[48;5;0m Words [39;49m|[38;5;14m[48;5;12m Words [39;49m|[38;5;14m[48;5;10m Words [39;49m|[38;5;14m[48;5;14m Words [39;49m|[38;5;14m[48;5;9m Words [39;49m|[38;5;14m[48;5;13m Words [39;49m|[38;5;14m[48;5;11m Words [39;49m|[38;5;14m[48;5;15m Words [39;49m|[38;5;14m Words [39;49m +red |[38;5;9m[48;5;0m Words [39;49m|[38;5;9m[48;5;12m Words [39;49m|[38;5;9m[48;5;10m Words [39;49m|[38;5;9m[48;5;14m Words [39;49m|[38;5;9m[48;5;9m Words [39;49m|[38;5;9m[48;5;13m Words [39;49m|[38;5;9m[48;5;11m Words [39;49m|[38;5;9m[48;5;15m Words [39;49m|[38;5;9m Words [39;49m +magenta|[38;5;13m[48;5;0m Words [39;49m|[38;5;13m[48;5;12m Words [39;49m|[38;5;13m[48;5;10m Words [39;49m|[38;5;13m[48;5;14m Words [39;49m|[38;5;13m[48;5;9m Words [39;49m|[38;5;13m[48;5;13m Words [39;49m|[38;5;13m[48;5;11m Words [39;49m|[38;5;13m[48;5;15m Words [39;49m|[38;5;13m Words [39;49m +yellow |[38;5;11m[48;5;0m Words [39;49m|[38;5;11m[48;5;12m Words [39;49m|[38;5;11m[48;5;10m Words [39;49m|[38;5;11m[48;5;14m Words [39;49m|[38;5;11m[48;5;9m Words [39;49m|[38;5;11m[48;5;13m Words [39;49m|[38;5;11m[48;5;11m Words [39;49m|[38;5;11m[48;5;15m Words [39;49m|[38;5;11m Words [39;49m +white |[38;5;15m[48;5;0m Words [39;49m|[38;5;15m[48;5;12m Words [39;49m|[38;5;15m[48;5;10m Words [39;49m|[38;5;15m[48;5;14m Words [39;49m|[38;5;15m[48;5;9m Words [39;49m|[38;5;15m[48;5;13m Words [39;49m|[38;5;15m[48;5;11m Words [39;49m|[38;5;15m[48;5;15m Words [39;49m|[38;5;15m Words [39;49m +default|[48;5;0m Words [39;49m|[48;5;12m Words [39;49m|[48;5;10m Words [39;49m|[48;5;14m Words [39;49m|[48;5;9m Words [39;49m|[48;5;13m Words [39;49m|[48;5;11m Words [39;49m|[48;5;15m Words [39;49m| Words + +Colors (hue/saturation): +[48;5;9m [48;5;210m [48;5;217m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;9m [48;5;210m [48;5;217m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;9m [48;5;210m [48;5;217m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;202m [48;5;209m [48;5;216m [48;5;217m [48;5;216m [48;5;217m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;202m [48;5;209m [48;5;216m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;209m [48;5;216m [48;5;223m [48;5;224m [48;5;15m [39;49m +[48;5;208m [48;5;209m [48;5;216m [48;5;223m [48;5;224m [48;5;15m [39;49m +[48;5;208m [48;5;215m [48;5;216m [48;5;223m [48;5;224m [48;5;15m [39;49m +[48;5;208m [48;5;215m [48;5;223m [48;5;224m [48;5;15m [39;49m +[48;5;214m [48;5;215m [48;5;223m [48;5;230m [48;5;15m [39;49m +[48;5;214m [48;5;215m [48;5;222m [48;5;223m [48;5;230m [48;5;15m [39;49m +[48;5;214m [48;5;221m [48;5;222m [48;5;223m [48;5;230m [48;5;15m [39;49m +[48;5;220m [48;5;221m [48;5;222m [48;5;223m [48;5;230m [48;5;15m [39;49m +[48;5;220m [48;5;221m [48;5;222m [48;5;230m [48;5;15m [39;49m +[48;5;220m [48;5;221m [48;5;222m [48;5;229m [48;5;222m [48;5;229m [48;5;230m [48;5;15m [39;49m +[48;5;11m [48;5;228m [48;5;229m [48;5;230m [48;5;15m [39;49m +[48;5;11m [48;5;228m [48;5;229m [48;5;230m [48;5;15m [39;49m +[48;5;11m [48;5;228m [48;5;229m [48;5;230m [48;5;15m [39;49m +[48;5;11m [48;5;228m [48;5;229m [48;5;230m [48;5;15m [39;49m +[48;5;11m [48;5;228m [48;5;229m [48;5;230m [48;5;15m [39;49m +[48;5;11m [48;5;228m [48;5;229m [48;5;230m [48;5;15m [39;49m +[48;5;190m [48;5;191m [48;5;192m [48;5;229m [48;5;192m [48;5;229m [48;5;230m [48;5;15m [39;49m +[48;5;190m [48;5;191m [48;5;192m [48;5;230m [48;5;15m [39;49m +[48;5;190m [48;5;191m [48;5;192m [48;5;193m [48;5;230m [48;5;15m [39;49m +[48;5;154m [48;5;191m [48;5;192m [48;5;193m [48;5;230m [48;5;15m [39;49m +[48;5;154m [48;5;155m [48;5;192m [48;5;193m [48;5;230m [48;5;15m [39;49m +[48;5;154m [48;5;155m [48;5;193m [48;5;230m [48;5;15m [39;49m +[48;5;118m [48;5;155m [48;5;193m [48;5;194m [48;5;15m [39;49m +[48;5;118m [48;5;155m [48;5;156m [48;5;193m [48;5;194m [48;5;15m [39;49m +[48;5;118m [48;5;119m [48;5;156m [48;5;193m [48;5;194m [48;5;15m [39;49m +[48;5;119m [48;5;156m [48;5;193m [48;5;194m [48;5;15m [39;49m +[48;5;82m [48;5;119m [48;5;156m [48;5;194m [48;5;15m [39;49m +[48;5;82m [48;5;119m [48;5;156m [48;5;157m [48;5;156m [48;5;157m [48;5;194m [48;5;15m [39;49m +[48;5;10m [48;5;120m [48;5;157m [48;5;194m [48;5;15m [39;49m +[48;5;10m [48;5;120m [48;5;157m [48;5;194m [48;5;15m [39;49m +[48;5;10m [48;5;120m [48;5;157m [48;5;194m [48;5;15m [39;49m +[48;5;10m [48;5;120m [48;5;157m [48;5;194m [48;5;15m [39;49m +[48;5;10m [48;5;120m [48;5;157m [48;5;194m [48;5;15m [39;49m +[48;5;10m [48;5;120m [48;5;157m [48;5;194m [48;5;15m [39;49m +[48;5;47m [48;5;84m [48;5;121m [48;5;157m [48;5;121m [48;5;157m [48;5;194m [48;5;15m [39;49m +[48;5;47m [48;5;84m [48;5;121m [48;5;194m [48;5;15m [39;49m +[48;5;84m [48;5;121m [48;5;158m [48;5;194m [48;5;15m [39;49m +[48;5;48m [48;5;84m [48;5;121m [48;5;158m [48;5;194m [48;5;15m [39;49m +[48;5;48m [48;5;85m [48;5;121m [48;5;158m [48;5;194m [48;5;15m [39;49m +[48;5;48m [48;5;85m [48;5;158m [48;5;194m [48;5;15m [39;49m +[48;5;49m [48;5;85m [48;5;158m [48;5;195m [48;5;15m [39;49m +[48;5;49m [48;5;85m [48;5;122m [48;5;158m [48;5;195m [48;5;15m [39;49m +[48;5;49m [48;5;86m [48;5;122m [48;5;158m [48;5;195m [48;5;15m [39;49m +[48;5;50m [48;5;86m [48;5;122m [48;5;158m [48;5;195m [48;5;15m [39;49m +[48;5;50m [48;5;86m [48;5;122m [48;5;195m [48;5;15m [39;49m +[48;5;50m [48;5;86m [48;5;122m [48;5;159m [48;5;122m [48;5;159m [48;5;195m [48;5;15m [39;49m +[48;5;14m [48;5;123m [48;5;159m [48;5;195m [48;5;15m [39;49m +[48;5;14m [48;5;123m [48;5;159m [48;5;195m [48;5;15m [39;49m +[48;5;14m [48;5;123m [48;5;159m [48;5;195m [48;5;15m [39;49m +[48;5;14m [48;5;123m [48;5;159m [48;5;195m [48;5;15m [39;49m +[48;5;14m [48;5;123m [48;5;159m [48;5;195m [48;5;15m [39;49m +[48;5;14m [48;5;123m [48;5;159m [48;5;195m [48;5;15m [39;49m +[48;5;45m [48;5;81m [48;5;117m [48;5;159m [48;5;117m [48;5;159m [48;5;195m [48;5;15m [39;49m +[48;5;45m [48;5;81m [48;5;117m [48;5;195m [48;5;15m [39;49m +[48;5;45m [48;5;81m [48;5;117m [48;5;153m [48;5;195m [48;5;15m [39;49m +[48;5;39m [48;5;81m [48;5;117m [48;5;153m [48;5;195m [48;5;15m [39;49m +[48;5;39m [48;5;75m [48;5;117m [48;5;153m [48;5;195m [48;5;255m [48;5;15m [39;49m +[48;5;39m [48;5;75m [48;5;153m [48;5;195m [48;5;255m [48;5;15m [39;49m +[48;5;33m [48;5;75m [48;5;153m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;33m [48;5;75m [48;5;111m [48;5;153m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;33m [48;5;69m [48;5;111m [48;5;153m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;69m [48;5;111m [48;5;153m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;27m [48;5;69m [48;5;111m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;27m [48;5;69m [48;5;111m [48;5;147m [48;5;111m [48;5;147m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;12m [48;5;105m [48;5;147m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;12m [48;5;105m [48;5;147m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;12m [48;5;105m [48;5;147m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;12m [48;5;105m [48;5;147m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;12m [48;5;105m [48;5;147m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;12m [48;5;105m [48;5;147m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;57m [48;5;99m [48;5;141m [48;5;147m [48;5;141m [48;5;147m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;57m [48;5;99m [48;5;141m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;99m [48;5;141m [48;5;183m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;93m [48;5;99m [48;5;141m [48;5;183m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;93m [48;5;135m [48;5;141m [48;5;183m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;93m [48;5;135m [48;5;183m [48;5;189m [48;5;255m [48;5;15m [39;49m +[48;5;129m [48;5;135m [48;5;183m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;129m [48;5;135m [48;5;177m [48;5;183m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;129m [48;5;171m [48;5;177m [48;5;183m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;165m [48;5;171m [48;5;177m [48;5;183m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;165m [48;5;171m [48;5;177m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;165m [48;5;171m [48;5;177m [48;5;219m [48;5;177m [48;5;219m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;13m [48;5;213m [48;5;219m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;13m [48;5;213m [48;5;219m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;13m [48;5;213m [48;5;219m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;13m [48;5;213m [48;5;219m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;13m [48;5;213m [48;5;219m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;13m [48;5;213m [48;5;219m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;200m [48;5;206m [48;5;212m [48;5;219m [48;5;212m [48;5;219m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;200m [48;5;206m [48;5;212m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;200m [48;5;206m [48;5;212m [48;5;218m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;199m [48;5;206m [48;5;212m [48;5;218m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;199m [48;5;205m [48;5;212m [48;5;218m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;199m [48;5;205m [48;5;218m [48;5;225m [48;5;255m [48;5;15m [39;49m +[48;5;198m [48;5;205m [48;5;218m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;198m [48;5;205m [48;5;211m [48;5;218m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;198m [48;5;204m [48;5;211m [48;5;218m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;204m [48;5;211m [48;5;218m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;197m [48;5;204m [48;5;211m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;197m [48;5;204m [48;5;211m [48;5;217m [48;5;211m [48;5;217m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;9m [48;5;210m [48;5;217m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;9m [48;5;210m [48;5;217m [48;5;224m [48;5;255m [48;5;15m [39;49m +[48;5;9m [48;5;210m [48;5;217m [48;5;224m [48;5;255m [48;5;15m [39;49m + +Weights: +normal, [1mbold, [0mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [24mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-88color.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-88color.out new file mode 100644 index 0000000..5adb82d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-88color.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[38;5;0m[48;5;0m Words [39;49m|[38;5;0m[48;5;12m Words [39;49m|[38;5;0m[48;5;10m Words [39;49m|[38;5;0m[48;5;14m Words [39;49m|[38;5;0m[48;5;9m Words [39;49m|[38;5;0m[48;5;13m Words [39;49m|[38;5;0m[48;5;11m Words [39;49m|[38;5;0m[48;5;15m Words [39;49m|[38;5;0m Words [39;49m +blue |[38;5;12m[48;5;0m Words [39;49m|[38;5;12m[48;5;12m Words [39;49m|[38;5;12m[48;5;10m Words [39;49m|[38;5;12m[48;5;14m Words [39;49m|[38;5;12m[48;5;9m Words [39;49m|[38;5;12m[48;5;13m Words [39;49m|[38;5;12m[48;5;11m Words [39;49m|[38;5;12m[48;5;15m Words [39;49m|[38;5;12m Words [39;49m +green |[38;5;10m[48;5;0m Words [39;49m|[38;5;10m[48;5;12m Words [39;49m|[38;5;10m[48;5;10m Words [39;49m|[38;5;10m[48;5;14m Words [39;49m|[38;5;10m[48;5;9m Words [39;49m|[38;5;10m[48;5;13m Words [39;49m|[38;5;10m[48;5;11m Words [39;49m|[38;5;10m[48;5;15m Words [39;49m|[38;5;10m Words [39;49m +cyan |[38;5;14m[48;5;0m Words [39;49m|[38;5;14m[48;5;12m Words [39;49m|[38;5;14m[48;5;10m Words [39;49m|[38;5;14m[48;5;14m Words [39;49m|[38;5;14m[48;5;9m Words [39;49m|[38;5;14m[48;5;13m Words [39;49m|[38;5;14m[48;5;11m Words [39;49m|[38;5;14m[48;5;15m Words [39;49m|[38;5;14m Words [39;49m +red |[38;5;9m[48;5;0m Words [39;49m|[38;5;9m[48;5;12m Words [39;49m|[38;5;9m[48;5;10m Words [39;49m|[38;5;9m[48;5;14m Words [39;49m|[38;5;9m[48;5;9m Words [39;49m|[38;5;9m[48;5;13m Words [39;49m|[38;5;9m[48;5;11m Words [39;49m|[38;5;9m[48;5;15m Words [39;49m|[38;5;9m Words [39;49m +magenta|[38;5;13m[48;5;0m Words [39;49m|[38;5;13m[48;5;12m Words [39;49m|[38;5;13m[48;5;10m Words [39;49m|[38;5;13m[48;5;14m Words [39;49m|[38;5;13m[48;5;9m Words [39;49m|[38;5;13m[48;5;13m Words [39;49m|[38;5;13m[48;5;11m Words [39;49m|[38;5;13m[48;5;15m Words [39;49m|[38;5;13m Words [39;49m +yellow |[38;5;11m[48;5;0m Words [39;49m|[38;5;11m[48;5;12m Words [39;49m|[38;5;11m[48;5;10m Words [39;49m|[38;5;11m[48;5;14m Words [39;49m|[38;5;11m[48;5;9m Words [39;49m|[38;5;11m[48;5;13m Words [39;49m|[38;5;11m[48;5;11m Words [39;49m|[38;5;11m[48;5;15m Words [39;49m|[38;5;11m Words [39;49m +white |[38;5;15m[48;5;0m Words [39;49m|[38;5;15m[48;5;12m Words [39;49m|[38;5;15m[48;5;10m Words [39;49m|[38;5;15m[48;5;14m Words [39;49m|[38;5;15m[48;5;9m Words [39;49m|[38;5;15m[48;5;13m Words [39;49m|[38;5;15m[48;5;11m Words [39;49m|[38;5;15m[48;5;15m Words [39;49m|[38;5;15m Words [39;49m +default|[48;5;0m Words [39;49m|[48;5;12m Words [39;49m|[48;5;10m Words [39;49m|[48;5;14m Words [39;49m|[48;5;9m Words [39;49m|[48;5;13m Words [39;49m|[48;5;11m Words [39;49m|[48;5;15m Words [39;49m| Words + +Colors (hue/saturation): +[48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;69m [48;5;74m [48;5;15m [39;49m +[48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;69m [48;5;74m [48;5;15m [39;49m +[48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;69m [48;5;74m [48;5;15m [39;49m +[48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;69m [48;5;74m [48;5;15m [39;49m +[48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;69m [48;5;74m [48;5;15m [39;49m +[48;5;68m [48;5;73m [48;5;74m [48;5;15m [39;49m +[48;5;68m [48;5;73m [48;5;74m [48;5;15m [39;49m +[48;5;68m [48;5;73m [48;5;74m [48;5;15m [39;49m +[48;5;68m [48;5;73m [48;5;74m [48;5;15m [39;49m +[48;5;68m [48;5;73m [48;5;78m [48;5;15m [39;49m +[48;5;68m [48;5;73m [48;5;78m [48;5;15m [39;49m +[48;5;68m [48;5;73m [48;5;78m [48;5;15m [39;49m +[48;5;72m [48;5;73m [48;5;78m [48;5;15m [39;49m +[48;5;72m [48;5;73m [48;5;78m [48;5;15m [39;49m +[48;5;72m [48;5;77m [48;5;78m [48;5;15m [39;49m +[48;5;72m [48;5;77m [48;5;78m [48;5;15m [39;49m +[48;5;76m [48;5;11m [48;5;76m [48;5;11m [48;5;76m [48;5;11m [48;5;76m [48;5;77m [48;5;78m [48;5;15m [39;49m +[48;5;11m [48;5;76m [48;5;11m [48;5;76m [48;5;11m [48;5;76m [48;5;11m [48;5;76m [48;5;11m [48;5;77m [48;5;78m [48;5;15m [39;49m +[48;5;11m [48;5;76m [48;5;11m [48;5;76m [48;5;11m [48;5;76m [48;5;11m [48;5;76m [48;5;11m [48;5;77m [48;5;78m [48;5;15m [39;49m +[48;5;76m [48;5;11m [48;5;76m [48;5;11m [48;5;76m [48;5;11m [48;5;77m [48;5;78m [48;5;15m [39;49m +[48;5;60m [48;5;77m [48;5;78m [48;5;15m [39;49m +[48;5;60m [48;5;77m [48;5;78m [48;5;15m [39;49m +[48;5;60m [48;5;61m [48;5;78m [48;5;15m [39;49m +[48;5;60m [48;5;61m [48;5;78m [48;5;15m [39;49m +[48;5;44m [48;5;61m [48;5;78m [48;5;15m [39;49m +[48;5;44m [48;5;61m [48;5;78m [48;5;15m [39;49m +[48;5;44m [48;5;61m [48;5;78m [48;5;15m [39;49m +[48;5;44m [48;5;61m [48;5;62m [48;5;15m [39;49m +[48;5;44m [48;5;61m [48;5;62m [48;5;15m [39;49m +[48;5;44m [48;5;61m [48;5;62m [48;5;15m [39;49m +[48;5;44m [48;5;61m [48;5;62m [48;5;15m [39;49m +[48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;45m [48;5;62m [48;5;15m [39;49m +[48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;45m [48;5;62m [48;5;15m [39;49m +[48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;45m [48;5;62m [48;5;15m [39;49m +[48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;45m [48;5;62m [48;5;15m [39;49m +[48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;45m [48;5;62m [48;5;15m [39;49m +[48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;45m [48;5;62m [48;5;15m [39;49m +[48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;45m [48;5;62m [48;5;15m [39;49m +[48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;45m [48;5;62m [48;5;15m [39;49m +[48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;45m [48;5;62m [48;5;15m [39;49m +[48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;28m [48;5;10m [48;5;45m [48;5;62m [48;5;15m [39;49m +[48;5;29m [48;5;46m [48;5;62m [48;5;15m [39;49m +[48;5;29m [48;5;46m [48;5;62m [48;5;15m [39;49m +[48;5;29m [48;5;46m [48;5;62m [48;5;15m [39;49m +[48;5;29m [48;5;46m [48;5;62m [48;5;15m [39;49m +[48;5;29m [48;5;46m [48;5;63m [48;5;15m [39;49m +[48;5;29m [48;5;46m [48;5;63m [48;5;15m [39;49m +[48;5;29m [48;5;46m [48;5;63m [48;5;15m [39;49m +[48;5;30m [48;5;46m [48;5;63m [48;5;15m [39;49m +[48;5;30m [48;5;46m [48;5;63m [48;5;15m [39;49m +[48;5;30m [48;5;47m [48;5;63m [48;5;15m [39;49m +[48;5;30m [48;5;47m [48;5;63m [48;5;15m [39;49m +[48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;47m [48;5;63m [48;5;15m [39;49m +[48;5;14m [48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;47m [48;5;63m [48;5;15m [39;49m +[48;5;14m [48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;47m [48;5;63m [48;5;15m [39;49m +[48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;31m [48;5;14m [48;5;47m [48;5;63m [48;5;15m [39;49m +[48;5;27m [48;5;47m [48;5;63m [48;5;15m [39;49m +[48;5;27m [48;5;47m [48;5;63m [48;5;15m [39;49m +[48;5;27m [48;5;43m [48;5;63m [48;5;15m [39;49m +[48;5;27m [48;5;43m [48;5;63m [48;5;15m [39;49m +[48;5;23m [48;5;43m [48;5;63m [48;5;15m [39;49m +[48;5;23m [48;5;43m [48;5;63m [48;5;15m [39;49m +[48;5;23m [48;5;43m [48;5;63m [48;5;15m [39;49m +[48;5;23m [48;5;43m [48;5;59m [48;5;15m [39;49m +[48;5;23m [48;5;43m [48;5;59m [48;5;15m [39;49m +[48;5;23m [48;5;43m [48;5;59m [48;5;15m [39;49m +[48;5;23m [48;5;43m [48;5;59m [48;5;15m [39;49m +[48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;39m [48;5;59m [48;5;15m [39;49m +[48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;39m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;39m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;39m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;39m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;39m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;39m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;39m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;39m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;19m [48;5;12m [48;5;39m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;35m [48;5;55m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;35m [48;5;55m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;35m [48;5;55m [48;5;59m [48;5;87m [48;5;15m [39;49m +[48;5;35m [48;5;55m [48;5;59m [48;5;15m [39;49m +[48;5;35m [48;5;55m [48;5;75m [48;5;15m [39;49m +[48;5;35m [48;5;55m [48;5;75m [48;5;15m [39;49m +[48;5;35m [48;5;55m [48;5;75m [48;5;15m [39;49m +[48;5;51m [48;5;55m [48;5;75m [48;5;15m [39;49m +[48;5;51m [48;5;55m [48;5;75m [48;5;15m [39;49m +[48;5;51m [48;5;71m [48;5;75m [48;5;15m [39;49m +[48;5;51m [48;5;71m [48;5;75m [48;5;15m [39;49m +[48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;71m [48;5;75m [48;5;15m [39;49m +[48;5;13m [48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;71m [48;5;75m [48;5;15m [39;49m +[48;5;13m [48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;71m [48;5;75m [48;5;15m [39;49m +[48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;67m [48;5;13m [48;5;71m [48;5;75m [48;5;15m [39;49m +[48;5;66m [48;5;71m [48;5;75m [48;5;15m [39;49m +[48;5;66m [48;5;71m [48;5;75m [48;5;15m [39;49m +[48;5;66m [48;5;70m [48;5;75m [48;5;15m [39;49m +[48;5;66m [48;5;70m [48;5;75m [48;5;15m [39;49m +[48;5;65m [48;5;70m [48;5;75m [48;5;15m [39;49m +[48;5;65m [48;5;70m [48;5;75m [48;5;15m [39;49m +[48;5;65m [48;5;70m [48;5;75m [48;5;15m [39;49m +[48;5;65m [48;5;70m [48;5;74m [48;5;15m [39;49m +[48;5;65m [48;5;70m [48;5;74m [48;5;15m [39;49m +[48;5;65m [48;5;70m [48;5;74m [48;5;15m [39;49m +[48;5;65m [48;5;70m [48;5;74m [48;5;15m [39;49m +[48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;69m [48;5;74m [48;5;15m [39;49m +[48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;69m [48;5;74m [48;5;15m [39;49m +[48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;69m [48;5;74m [48;5;15m [39;49m +[48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;69m [48;5;74m [48;5;15m [39;49m +[48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;64m [48;5;9m [48;5;69m [48;5;74m [48;5;15m [39;49m + +Weights: +normal, [1mbold, [0mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [24mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-8bit.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-8bit.out new file mode 100644 index 0000000..671a07f --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-8bit.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words 39;49m|[30m[44m Words 39;49m|[30m[42m Words 39;49m|[30m[46m Words 39;49m|[30m[41m Words 39;49m|[30m[45m Words 39;49m|[30m[43m Words 39;49m|[30m[47m Words 39;49m|[30m Words 39;49m +blue |[34m[40m Words 39;49m|[34m[44m Words 39;49m|[34m[42m Words 39;49m|[34m[46m Words 39;49m|[34m[41m Words 39;49m|[34m[45m Words 39;49m|[34m[43m Words 39;49m|[34m[47m Words 39;49m|[34m Words 39;49m +green |[32m[40m Words 39;49m|[32m[44m Words 39;49m|[32m[42m Words 39;49m|[32m[46m Words 39;49m|[32m[41m Words 39;49m|[32m[45m Words 39;49m|[32m[43m Words 39;49m|[32m[47m Words 39;49m|[32m Words 39;49m +cyan |[36m[40m Words 39;49m|[36m[44m Words 39;49m|[36m[42m Words 39;49m|[36m[46m Words 39;49m|[36m[41m Words 39;49m|[36m[45m Words 39;49m|[36m[43m Words 39;49m|[36m[47m Words 39;49m|[36m Words 39;49m +red |[31m[40m Words 39;49m|[31m[44m Words 39;49m|[31m[42m Words 39;49m|[31m[46m Words 39;49m|[31m[41m Words 39;49m|[31m[45m Words 39;49m|[31m[43m Words 39;49m|[31m[47m Words 39;49m|[31m Words 39;49m +magenta|[35m[40m Words 39;49m|[35m[44m Words 39;49m|[35m[42m Words 39;49m|[35m[46m Words 39;49m|[35m[41m Words 39;49m|[35m[45m Words 39;49m|[35m[43m Words 39;49m|[35m[47m Words 39;49m|[35m Words 39;49m +yellow |[33m[40m Words 39;49m|[33m[44m Words 39;49m|[33m[42m Words 39;49m|[33m[46m Words 39;49m|[33m[41m Words 39;49m|[33m[45m Words 39;49m|[33m[43m Words 39;49m|[33m[47m Words 39;49m|[33m Words 39;49m +white |[37m[40m Words 39;49m|[37m[44m Words 39;49m|[37m[42m Words 39;49m|[37m[46m Words 39;49m|[37m[41m Words 39;49m|[37m[45m Words 39;49m|[37m[43m Words 39;49m|[37m[47m Words 39;49m|[37m Words 39;49m +default|[40m Words 39;49m|[44m Words 39;49m|[42m Words 39;49m|[46m Words 39;49m|[41m Words 39;49m|[45m Words 39;49m|[43m Words 39;49m|[47m Words 39;49m| Words + +Colors (hue/saturation): +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[43m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[42m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[46m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[44m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[45m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m +[41m [47m 39;49m + +Weights: +normal, 1mbold, 0m(Bdefault + +Postures: +normal, italic, default + +Text decorations: +normal, 4munderlined, 24mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-aix51.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-aix51.out new file mode 100644 index 0000000..d9a83cc --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-aix51.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [39;49m|[30m[44m Words [39;49m|[30m[42m Words [39;49m|[30m[46m Words [39;49m|[30m[41m Words [39;49m|[30m[45m Words [39;49m|[30m[43m Words [39;49m|[30m[47m Words [39;49m|[30m Words [39;49m +blue |[34m[40m Words [39;49m|[34m[44m Words [39;49m|[34m[42m Words [39;49m|[34m[46m Words [39;49m|[34m[41m Words [39;49m|[34m[45m Words [39;49m|[34m[43m Words [39;49m|[34m[47m Words [39;49m|[34m Words [39;49m +green |[32m[40m Words [39;49m|[32m[44m Words [39;49m|[32m[42m Words [39;49m|[32m[46m Words [39;49m|[32m[41m Words [39;49m|[32m[45m Words [39;49m|[32m[43m Words [39;49m|[32m[47m Words [39;49m|[32m Words [39;49m +cyan |[36m[40m Words [39;49m|[36m[44m Words [39;49m|[36m[42m Words [39;49m|[36m[46m Words [39;49m|[36m[41m Words [39;49m|[36m[45m Words [39;49m|[36m[43m Words [39;49m|[36m[47m Words [39;49m|[36m Words [39;49m +red |[31m[40m Words [39;49m|[31m[44m Words [39;49m|[31m[42m Words [39;49m|[31m[46m Words [39;49m|[31m[41m Words [39;49m|[31m[45m Words [39;49m|[31m[43m Words [39;49m|[31m[47m Words [39;49m|[31m Words [39;49m +magenta|[35m[40m Words [39;49m|[35m[44m Words [39;49m|[35m[42m Words [39;49m|[35m[46m Words [39;49m|[35m[41m Words [39;49m|[35m[45m Words [39;49m|[35m[43m Words [39;49m|[35m[47m Words [39;49m|[35m Words [39;49m +yellow |[33m[40m Words [39;49m|[33m[44m Words [39;49m|[33m[42m Words [39;49m|[33m[46m Words [39;49m|[33m[41m Words [39;49m|[33m[45m Words [39;49m|[33m[43m Words [39;49m|[33m[47m Words [39;49m|[33m Words [39;49m +white |[37m[40m Words [39;49m|[37m[44m Words [39;49m|[37m[42m Words [39;49m|[37m[46m Words [39;49m|[37m[41m Words [39;49m|[37m[45m Words [39;49m|[37m[43m Words [39;49m|[37m[47m Words [39;49m|[37m Words [39;49m +default|[40m Words [39;49m|[44m Words [39;49m|[42m Words [39;49m|[46m Words [39;49m|[41m Words [39;49m|[45m Words [39;49m|[43m Words [39;49m|[47m Words [39;49m| Words + +Colors (hue/saturation): +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m + +Weights: +normal, [1mbold, [m(Bdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-basic-italic.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-basic-italic.out new file mode 100644 index 0000000..4d74f8a --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-basic-italic.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [39;49m|[30m[44m Words [39;49m|[30m[42m Words [39;49m|[30m[46m Words [39;49m|[30m[41m Words [39;49m|[30m[45m Words [39;49m|[30m[43m Words [39;49m|[30m[47m Words [39;49m|[30m Words [39;49m +blue |[34m[40m Words [39;49m|[34m[44m Words [39;49m|[34m[42m Words [39;49m|[34m[46m Words [39;49m|[34m[41m Words [39;49m|[34m[45m Words [39;49m|[34m[43m Words [39;49m|[34m[47m Words [39;49m|[34m Words [39;49m +green |[32m[40m Words [39;49m|[32m[44m Words [39;49m|[32m[42m Words [39;49m|[32m[46m Words [39;49m|[32m[41m Words [39;49m|[32m[45m Words [39;49m|[32m[43m Words [39;49m|[32m[47m Words [39;49m|[32m Words [39;49m +cyan |[36m[40m Words [39;49m|[36m[44m Words [39;49m|[36m[42m Words [39;49m|[36m[46m Words [39;49m|[36m[41m Words [39;49m|[36m[45m Words [39;49m|[36m[43m Words [39;49m|[36m[47m Words [39;49m|[36m Words [39;49m +red |[31m[40m Words [39;49m|[31m[44m Words [39;49m|[31m[42m Words [39;49m|[31m[46m Words [39;49m|[31m[41m Words [39;49m|[31m[45m Words [39;49m|[31m[43m Words [39;49m|[31m[47m Words [39;49m|[31m Words [39;49m +magenta|[35m[40m Words [39;49m|[35m[44m Words [39;49m|[35m[42m Words [39;49m|[35m[46m Words [39;49m|[35m[41m Words [39;49m|[35m[45m Words [39;49m|[35m[43m Words [39;49m|[35m[47m Words [39;49m|[35m Words [39;49m +yellow |[33m[40m Words [39;49m|[33m[44m Words [39;49m|[33m[42m Words [39;49m|[33m[46m Words [39;49m|[33m[41m Words [39;49m|[33m[45m Words [39;49m|[33m[43m Words [39;49m|[33m[47m Words [39;49m|[33m Words [39;49m +white |[37m[40m Words [39;49m|[37m[44m Words [39;49m|[37m[42m Words [39;49m|[37m[46m Words [39;49m|[37m[41m Words [39;49m|[37m[45m Words [39;49m|[37m[43m Words [39;49m|[37m[47m Words [39;49m|[37m Words [39;49m +default|[40m Words [39;49m|[44m Words [39;49m|[42m Words [39;49m|[46m Words [39;49m|[41m Words [39;49m|[45m Words [39;49m|[43m Words [39;49m|[47m Words [39;49m| Words + +Colors (hue/saturation): +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m + +Weights: +normal, [1mbold, (B[mdefault + +Postures: +normal, [3mitalic, [23mdefault + +Text decorations: +normal, [4munderlined, [24mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-basic.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-basic.out new file mode 100644 index 0000000..1d6d3a3 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-basic.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [39;49m|[30m[44m Words [39;49m|[30m[42m Words [39;49m|[30m[46m Words [39;49m|[30m[41m Words [39;49m|[30m[45m Words [39;49m|[30m[43m Words [39;49m|[30m[47m Words [39;49m|[30m Words [39;49m +blue |[34m[40m Words [39;49m|[34m[44m Words [39;49m|[34m[42m Words [39;49m|[34m[46m Words [39;49m|[34m[41m Words [39;49m|[34m[45m Words [39;49m|[34m[43m Words [39;49m|[34m[47m Words [39;49m|[34m Words [39;49m +green |[32m[40m Words [39;49m|[32m[44m Words [39;49m|[32m[42m Words [39;49m|[32m[46m Words [39;49m|[32m[41m Words [39;49m|[32m[45m Words [39;49m|[32m[43m Words [39;49m|[32m[47m Words [39;49m|[32m Words [39;49m +cyan |[36m[40m Words [39;49m|[36m[44m Words [39;49m|[36m[42m Words [39;49m|[36m[46m Words [39;49m|[36m[41m Words [39;49m|[36m[45m Words [39;49m|[36m[43m Words [39;49m|[36m[47m Words [39;49m|[36m Words [39;49m +red |[31m[40m Words [39;49m|[31m[44m Words [39;49m|[31m[42m Words [39;49m|[31m[46m Words [39;49m|[31m[41m Words [39;49m|[31m[45m Words [39;49m|[31m[43m Words [39;49m|[31m[47m Words [39;49m|[31m Words [39;49m +magenta|[35m[40m Words [39;49m|[35m[44m Words [39;49m|[35m[42m Words [39;49m|[35m[46m Words [39;49m|[35m[41m Words [39;49m|[35m[45m Words [39;49m|[35m[43m Words [39;49m|[35m[47m Words [39;49m|[35m Words [39;49m +yellow |[33m[40m Words [39;49m|[33m[44m Words [39;49m|[33m[42m Words [39;49m|[33m[46m Words [39;49m|[33m[41m Words [39;49m|[33m[45m Words [39;49m|[33m[43m Words [39;49m|[33m[47m Words [39;49m|[33m Words [39;49m +white |[37m[40m Words [39;49m|[37m[44m Words [39;49m|[37m[42m Words [39;49m|[37m[46m Words [39;49m|[37m[41m Words [39;49m|[37m[45m Words [39;49m|[37m[43m Words [39;49m|[37m[47m Words [39;49m|[37m Words [39;49m +default|[40m Words [39;49m|[44m Words [39;49m|[42m Words [39;49m|[46m Words [39;49m|[41m Words [39;49m|[45m Words [39;49m|[43m Words [39;49m|[47m Words [39;49m| Words + +Colors (hue/saturation): +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m + +Weights: +normal, [1mbold, (B[mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [24mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-irix65.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-irix65.out new file mode 100644 index 0000000..b116768 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-irix65.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [39;49m|[30m[44m Words [39;49m|[30m[42m Words [39;49m|[30m[46m Words [39;49m|[30m[41m Words [39;49m|[30m[45m Words [39;49m|[30m[43m Words [39;49m|[30m[47m Words [39;49m|[30m Words [39;49m +blue |[34m[40m Words [39;49m|[34m[44m Words [39;49m|[34m[42m Words [39;49m|[34m[46m Words [39;49m|[34m[41m Words [39;49m|[34m[45m Words [39;49m|[34m[43m Words [39;49m|[34m[47m Words [39;49m|[34m Words [39;49m +green |[32m[40m Words [39;49m|[32m[44m Words [39;49m|[32m[42m Words [39;49m|[32m[46m Words [39;49m|[32m[41m Words [39;49m|[32m[45m Words [39;49m|[32m[43m Words [39;49m|[32m[47m Words [39;49m|[32m Words [39;49m +cyan |[36m[40m Words [39;49m|[36m[44m Words [39;49m|[36m[42m Words [39;49m|[36m[46m Words [39;49m|[36m[41m Words [39;49m|[36m[45m Words [39;49m|[36m[43m Words [39;49m|[36m[47m Words [39;49m|[36m Words [39;49m +red |[31m[40m Words [39;49m|[31m[44m Words [39;49m|[31m[42m Words [39;49m|[31m[46m Words [39;49m|[31m[41m Words [39;49m|[31m[45m Words [39;49m|[31m[43m Words [39;49m|[31m[47m Words [39;49m|[31m Words [39;49m +magenta|[35m[40m Words [39;49m|[35m[44m Words [39;49m|[35m[42m Words [39;49m|[35m[46m Words [39;49m|[35m[41m Words [39;49m|[35m[45m Words [39;49m|[35m[43m Words [39;49m|[35m[47m Words [39;49m|[35m Words [39;49m +yellow |[33m[40m Words [39;49m|[33m[44m Words [39;49m|[33m[42m Words [39;49m|[33m[46m Words [39;49m|[33m[41m Words [39;49m|[33m[45m Words [39;49m|[33m[43m Words [39;49m|[33m[47m Words [39;49m|[33m Words [39;49m +white |[37m[40m Words [39;49m|[37m[44m Words [39;49m|[37m[42m Words [39;49m|[37m[46m Words [39;49m|[37m[41m Words [39;49m|[37m[45m Words [39;49m|[37m[43m Words [39;49m|[37m[47m Words [39;49m|[37m Words [39;49m +default|[40m Words [39;49m|[44m Words [39;49m|[42m Words [39;49m|[46m Words [39;49m|[41m Words [39;49m|[45m Words [39;49m|[43m Words [39;49m|[47m Words [39;49m| Words + +Colors (hue/saturation): +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m + +Weights: +normal, [1mbold, [mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, underlined, default + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-linux-debian.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-linux-debian.out new file mode 100644 index 0000000..3e1ea67 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-linux-debian.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [39;49m|[30m[44m Words [39;49m|[30m[42m Words [39;49m|[30m[46m Words [39;49m|[30m[41m Words [39;49m|[30m[45m Words [39;49m|[30m[43m Words [39;49m|[30m[47m Words [39;49m|[30m Words [39;49m +blue |[34m[40m Words [39;49m|[34m[44m Words [39;49m|[34m[42m Words [39;49m|[34m[46m Words [39;49m|[34m[41m Words [39;49m|[34m[45m Words [39;49m|[34m[43m Words [39;49m|[34m[47m Words [39;49m|[34m Words [39;49m +green |[32m[40m Words [39;49m|[32m[44m Words [39;49m|[32m[42m Words [39;49m|[32m[46m Words [39;49m|[32m[41m Words [39;49m|[32m[45m Words [39;49m|[32m[43m Words [39;49m|[32m[47m Words [39;49m|[32m Words [39;49m +cyan |[36m[40m Words [39;49m|[36m[44m Words [39;49m|[36m[42m Words [39;49m|[36m[46m Words [39;49m|[36m[41m Words [39;49m|[36m[45m Words [39;49m|[36m[43m Words [39;49m|[36m[47m Words [39;49m|[36m Words [39;49m +red |[31m[40m Words [39;49m|[31m[44m Words [39;49m|[31m[42m Words [39;49m|[31m[46m Words [39;49m|[31m[41m Words [39;49m|[31m[45m Words [39;49m|[31m[43m Words [39;49m|[31m[47m Words [39;49m|[31m Words [39;49m +magenta|[35m[40m Words [39;49m|[35m[44m Words [39;49m|[35m[42m Words [39;49m|[35m[46m Words [39;49m|[35m[41m Words [39;49m|[35m[45m Words [39;49m|[35m[43m Words [39;49m|[35m[47m Words [39;49m|[35m Words [39;49m +yellow |[33m[40m Words [39;49m|[33m[44m Words [39;49m|[33m[42m Words [39;49m|[33m[46m Words [39;49m|[33m[41m Words [39;49m|[33m[45m Words [39;49m|[33m[43m Words [39;49m|[33m[47m Words [39;49m|[33m Words [39;49m +white |[37m[40m Words [39;49m|[37m[44m Words [39;49m|[37m[42m Words [39;49m|[37m[46m Words [39;49m|[37m[41m Words [39;49m|[37m[45m Words [39;49m|[37m[43m Words [39;49m|[37m[47m Words [39;49m|[37m Words [39;49m +default|[40m Words [39;49m|[44m Words [39;49m|[42m Words [39;49m|[46m Words [39;49m|[41m Words [39;49m|[45m Words [39;49m|[43m Words [39;49m|[47m Words [39;49m| Words + +Colors (hue/saturation): +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m + +Weights: +normal, [1mbold, [0;10mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-linux-mandriva.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-linux-mandriva.out new file mode 100644 index 0000000..4aa2880 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-linux-mandriva.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [39;49m|[30m[44m Words [39;49m|[30m[42m Words [39;49m|[30m[46m Words [39;49m|[30m[41m Words [39;49m|[30m[45m Words [39;49m|[30m[43m Words [39;49m|[30m[47m Words [39;49m|[30m Words [39;49m +blue |[34m[40m Words [39;49m|[34m[44m Words [39;49m|[34m[42m Words [39;49m|[34m[46m Words [39;49m|[34m[41m Words [39;49m|[34m[45m Words [39;49m|[34m[43m Words [39;49m|[34m[47m Words [39;49m|[34m Words [39;49m +green |[32m[40m Words [39;49m|[32m[44m Words [39;49m|[32m[42m Words [39;49m|[32m[46m Words [39;49m|[32m[41m Words [39;49m|[32m[45m Words [39;49m|[32m[43m Words [39;49m|[32m[47m Words [39;49m|[32m Words [39;49m +cyan |[36m[40m Words [39;49m|[36m[44m Words [39;49m|[36m[42m Words [39;49m|[36m[46m Words [39;49m|[36m[41m Words [39;49m|[36m[45m Words [39;49m|[36m[43m Words [39;49m|[36m[47m Words [39;49m|[36m Words [39;49m +red |[31m[40m Words [39;49m|[31m[44m Words [39;49m|[31m[42m Words [39;49m|[31m[46m Words [39;49m|[31m[41m Words [39;49m|[31m[45m Words [39;49m|[31m[43m Words [39;49m|[31m[47m Words [39;49m|[31m Words [39;49m +magenta|[35m[40m Words [39;49m|[35m[44m Words [39;49m|[35m[42m Words [39;49m|[35m[46m Words [39;49m|[35m[41m Words [39;49m|[35m[45m Words [39;49m|[35m[43m Words [39;49m|[35m[47m Words [39;49m|[35m Words [39;49m +yellow |[33m[40m Words [39;49m|[33m[44m Words [39;49m|[33m[42m Words [39;49m|[33m[46m Words [39;49m|[33m[41m Words [39;49m|[33m[45m Words [39;49m|[33m[43m Words [39;49m|[33m[47m Words [39;49m|[33m Words [39;49m +white |[37m[40m Words [39;49m|[37m[44m Words [39;49m|[37m[42m Words [39;49m|[37m[46m Words [39;49m|[37m[41m Words [39;49m|[37m[45m Words [39;49m|[37m[43m Words [39;49m|[37m[47m Words [39;49m|[37m Words [39;49m +default|[40m Words [39;49m|[44m Words [39;49m|[42m Words [39;49m|[46m Words [39;49m|[41m Words [39;49m|[45m Words [39;49m|[43m Words [39;49m|[47m Words [39;49m| Words + +Colors (hue/saturation): +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m + +Weights: +normal, [1mbold, [m(Bdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [24mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-mingw.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-mingw.out new file mode 100644 index 0000000..8c1b7d9 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-mingw.out @@ -0,0 +1,131 @@ +Colors (foreground/background):
+ |black |blue |green |cyan |red |magenta|yellow |white |default
+black |[30m[40m Words [39;49m|[30m[44m Words [39;49m|[30m[42m Words [39;49m|[30m[46m Words [39;49m|[30m[41m Words [39;49m|[30m[45m Words [39;49m|[30m[43m Words [39;49m|[30m[47m Words [39;49m|[30m Words [39;49m
+blue |[34m[40m Words [39;49m|[34m[44m Words [39;49m|[34m[42m Words [39;49m|[34m[46m Words [39;49m|[34m[41m Words [39;49m|[34m[45m Words [39;49m|[34m[43m Words [39;49m|[34m[47m Words [39;49m|[34m Words [39;49m
+green |[32m[40m Words [39;49m|[32m[44m Words [39;49m|[32m[42m Words [39;49m|[32m[46m Words [39;49m|[32m[41m Words [39;49m|[32m[45m Words [39;49m|[32m[43m Words [39;49m|[32m[47m Words [39;49m|[32m Words [39;49m
+cyan |[36m[40m Words [39;49m|[36m[44m Words [39;49m|[36m[42m Words [39;49m|[36m[46m Words [39;49m|[36m[41m Words [39;49m|[36m[45m Words [39;49m|[36m[43m Words [39;49m|[36m[47m Words [39;49m|[36m Words [39;49m
+red |[31m[40m Words [39;49m|[31m[44m Words [39;49m|[31m[42m Words [39;49m|[31m[46m Words [39;49m|[31m[41m Words [39;49m|[31m[45m Words [39;49m|[31m[43m Words [39;49m|[31m[47m Words [39;49m|[31m Words [39;49m
+magenta|[35m[40m Words [39;49m|[35m[44m Words [39;49m|[35m[42m Words [39;49m|[35m[46m Words [39;49m|[35m[41m Words [39;49m|[35m[45m Words [39;49m|[35m[43m Words [39;49m|[35m[47m Words [39;49m|[35m Words [39;49m
+yellow |[33m[40m Words [39;49m|[33m[44m Words [39;49m|[33m[42m Words [39;49m|[33m[46m Words [39;49m|[33m[41m Words [39;49m|[33m[45m Words [39;49m|[33m[43m Words [39;49m|[33m[47m Words [39;49m|[33m Words [39;49m
+white |[37m[40m Words [39;49m|[37m[44m Words [39;49m|[37m[42m Words [39;49m|[37m[46m Words [39;49m|[37m[41m Words [39;49m|[37m[45m Words [39;49m|[37m[43m Words [39;49m|[37m[47m Words [39;49m|[37m Words [39;49m
+default|[40m Words [39;49m|[44m Words [39;49m|[42m Words [39;49m|[46m Words [39;49m|[41m Words [39;49m|[45m Words [39;49m|[43m Words [39;49m|[47m Words [39;49m| Words
+
+Colors (hue/saturation):
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[43m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[42m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[46m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[44m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[45m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+[41m [47m [39;49m
+
+Weights:
+normal, [1mbold, [0;10mdefault
+
+Postures:
+normal, italic, default
+
+Text decorations:
+normal, [4munderlined, [mdefault
+
diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-netbsd3.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-netbsd3.out new file mode 100644 index 0000000..d45d1e6 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-netbsd3.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [m|[30m[44m Words [m|[30m[42m Words [m|[30m[46m Words [m|[30m[41m Words [m|[30m[45m Words [m|[30m[43m Words [m|[30m[47m Words [m|[30m Words [m +blue |[34m[40m Words [m|[34m[44m Words [m|[34m[42m Words [m|[34m[46m Words [m|[34m[41m Words [m|[34m[45m Words [m|[34m[43m Words [m|[34m[47m Words [m|[34m Words [m +green |[32m[40m Words [m|[32m[44m Words [m|[32m[42m Words [m|[32m[46m Words [m|[32m[41m Words [m|[32m[45m Words [m|[32m[43m Words [m|[32m[47m Words [m|[32m Words [m +cyan |[36m[40m Words [m|[36m[44m Words [m|[36m[42m Words [m|[36m[46m Words [m|[36m[41m Words [m|[36m[45m Words [m|[36m[43m Words [m|[36m[47m Words [m|[36m Words [m +red |[31m[40m Words [m|[31m[44m Words [m|[31m[42m Words [m|[31m[46m Words [m|[31m[41m Words [m|[31m[45m Words [m|[31m[43m Words [m|[31m[47m Words [m|[31m Words [m +magenta|[35m[40m Words [m|[35m[44m Words [m|[35m[42m Words [m|[35m[46m Words [m|[35m[41m Words [m|[35m[45m Words [m|[35m[43m Words [m|[35m[47m Words [m|[35m Words [m +yellow |[33m[40m Words [m|[33m[44m Words [m|[33m[42m Words [m|[33m[46m Words [m|[33m[41m Words [m|[33m[45m Words [m|[33m[43m Words [m|[33m[47m Words [m|[33m Words [m +white |[37m[40m Words [m|[37m[44m Words [m|[37m[42m Words [m|[37m[46m Words [m|[37m[41m Words [m|[37m[45m Words [m|[37m[43m Words [m|[37m[47m Words [m|[37m Words [m +default|[40m Words [m|[44m Words [m|[42m Words [m|[46m Words [m|[41m Words [m|[45m Words [m|[43m Words [m|[47m Words [m| Words + +Colors (hue/saturation): +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[43m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[42m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[46m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[44m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[45m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m +[41m [47m [m + +Weights: +normal, [1mbold, [mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-osf51.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-osf51.out new file mode 100644 index 0000000..9fc95ab --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-osf51.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [0m|[30m[44m Words [0m|[30m[42m Words [0m|[30m[46m Words [0m|[30m[41m Words [0m|[30m[45m Words [0m|[30m[43m Words [0m|[30m[47m Words [0m|[30m Words [0m +blue |[34m[40m Words [0m|[34m[44m Words [0m|[34m[42m Words [0m|[34m[46m Words [0m|[34m[41m Words [0m|[34m[45m Words [0m|[34m[43m Words [0m|[34m[47m Words [0m|[34m Words [0m +green |[32m[40m Words [0m|[32m[44m Words [0m|[32m[42m Words [0m|[32m[46m Words [0m|[32m[41m Words [0m|[32m[45m Words [0m|[32m[43m Words [0m|[32m[47m Words [0m|[32m Words [0m +cyan |[36m[40m Words [0m|[36m[44m Words [0m|[36m[42m Words [0m|[36m[46m Words [0m|[36m[41m Words [0m|[36m[45m Words [0m|[36m[43m Words [0m|[36m[47m Words [0m|[36m Words [0m +red |[31m[40m Words [0m|[31m[44m Words [0m|[31m[42m Words [0m|[31m[46m Words [0m|[31m[41m Words [0m|[31m[45m Words [0m|[31m[43m Words [0m|[31m[47m Words [0m|[31m Words [0m +magenta|[35m[40m Words [0m|[35m[44m Words [0m|[35m[42m Words [0m|[35m[46m Words [0m|[35m[41m Words [0m|[35m[45m Words [0m|[35m[43m Words [0m|[35m[47m Words [0m|[35m Words [0m +yellow |[33m[40m Words [0m|[33m[44m Words [0m|[33m[42m Words [0m|[33m[46m Words [0m|[33m[41m Words [0m|[33m[45m Words [0m|[33m[43m Words [0m|[33m[47m Words [0m|[33m Words [0m +white |[37m[40m Words [0m|[37m[44m Words [0m|[37m[42m Words [0m|[37m[46m Words [0m|[37m[41m Words [0m|[37m[45m Words [0m|[37m[43m Words [0m|[37m[47m Words [0m|[37m Words [0m +default|[40m Words [0m|[44m Words [0m|[42m Words [0m|[46m Words [0m|[41m Words [0m|[45m Words [0m|[43m Words [0m|[47m Words [0m| Words + +Colors (hue/saturation): +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[43m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[42m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[46m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[44m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[45m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m +[41m [47m [0m + +Weights: +normal, [1mbold, [mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-r6.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-r6.out new file mode 100644 index 0000000..240de88 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-r6.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black | Words | Words | Words | Words | Words | Words | Words | Words | Words +blue | Words | Words | Words | Words | Words | Words | Words | Words | Words +green | Words | Words | Words | Words | Words | Words | Words | Words | Words +cyan | Words | Words | Words | Words | Words | Words | Words | Words | Words +red | Words | Words | Words | Words | Words | Words | Words | Words | Words +magenta| Words | Words | Words | Words | Words | Words | Words | Words | Words +yellow | Words | Words | Words | Words | Words | Words | Words | Words | Words +white | Words | Words | Words | Words | Words | Words | Words | Words | Words +default| Words | Words | Words | Words | Words | Words | Words | Words | Words + +Colors (hue/saturation): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Weights: +normal, [1mbold, [mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-solaris10.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-solaris10.out new file mode 100644 index 0000000..fcb2930 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-solaris10.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [39;49m|[30m[44m Words [39;49m|[30m[42m Words [39;49m|[30m[46m Words [39;49m|[30m[41m Words [39;49m|[30m[45m Words [39;49m|[30m[43m Words [39;49m|[30m[47m Words [39;49m|[30m Words [39;49m +blue |[34m[40m Words [39;49m|[34m[44m Words [39;49m|[34m[42m Words [39;49m|[34m[46m Words [39;49m|[34m[41m Words [39;49m|[34m[45m Words [39;49m|[34m[43m Words [39;49m|[34m[47m Words [39;49m|[34m Words [39;49m +green |[32m[40m Words [39;49m|[32m[44m Words [39;49m|[32m[42m Words [39;49m|[32m[46m Words [39;49m|[32m[41m Words [39;49m|[32m[45m Words [39;49m|[32m[43m Words [39;49m|[32m[47m Words [39;49m|[32m Words [39;49m +cyan |[36m[40m Words [39;49m|[36m[44m Words [39;49m|[36m[42m Words [39;49m|[36m[46m Words [39;49m|[36m[41m Words [39;49m|[36m[45m Words [39;49m|[36m[43m Words [39;49m|[36m[47m Words [39;49m|[36m Words [39;49m +red |[31m[40m Words [39;49m|[31m[44m Words [39;49m|[31m[42m Words [39;49m|[31m[46m Words [39;49m|[31m[41m Words [39;49m|[31m[45m Words [39;49m|[31m[43m Words [39;49m|[31m[47m Words [39;49m|[31m Words [39;49m +magenta|[35m[40m Words [39;49m|[35m[44m Words [39;49m|[35m[42m Words [39;49m|[35m[46m Words [39;49m|[35m[41m Words [39;49m|[35m[45m Words [39;49m|[35m[43m Words [39;49m|[35m[47m Words [39;49m|[35m Words [39;49m +yellow |[33m[40m Words [39;49m|[33m[44m Words [39;49m|[33m[42m Words [39;49m|[33m[46m Words [39;49m|[33m[41m Words [39;49m|[33m[45m Words [39;49m|[33m[43m Words [39;49m|[33m[47m Words [39;49m|[33m Words [39;49m +white |[37m[40m Words [39;49m|[37m[44m Words [39;49m|[37m[42m Words [39;49m|[37m[46m Words [39;49m|[37m[41m Words [39;49m|[37m[45m Words [39;49m|[37m[43m Words [39;49m|[37m[47m Words [39;49m|[37m Words [39;49m +default|[40m Words [39;49m|[44m Words [39;49m|[42m Words [39;49m|[46m Words [39;49m|[41m Words [39;49m|[45m Words [39;49m|[43m Words [39;49m|[47m Words [39;49m| Words + +Colors (hue/saturation): +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m + +Weights: +normal, [1mbold, [mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream-xterm-xf86-v32.out b/gettext-tools/gnulib-tests/test-term-ostream-xterm-xf86-v32.out new file mode 100644 index 0000000..6e7465d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream-xterm-xf86-v32.out @@ -0,0 +1,131 @@ +Colors (foreground/background): + |black |blue |green |cyan |red |magenta|yellow |white |default +black |[30m[40m Words [39;49m|[30m[44m Words [39;49m|[30m[42m Words [39;49m|[30m[46m Words [39;49m|[30m[41m Words [39;49m|[30m[45m Words [39;49m|[30m[43m Words [39;49m|[30m[47m Words [39;49m|[30m Words [39;49m +blue |[34m[40m Words [39;49m|[34m[44m Words [39;49m|[34m[42m Words [39;49m|[34m[46m Words [39;49m|[34m[41m Words [39;49m|[34m[45m Words [39;49m|[34m[43m Words [39;49m|[34m[47m Words [39;49m|[34m Words [39;49m +green |[32m[40m Words [39;49m|[32m[44m Words [39;49m|[32m[42m Words [39;49m|[32m[46m Words [39;49m|[32m[41m Words [39;49m|[32m[45m Words [39;49m|[32m[43m Words [39;49m|[32m[47m Words [39;49m|[32m Words [39;49m +cyan |[36m[40m Words [39;49m|[36m[44m Words [39;49m|[36m[42m Words [39;49m|[36m[46m Words [39;49m|[36m[41m Words [39;49m|[36m[45m Words [39;49m|[36m[43m Words [39;49m|[36m[47m Words [39;49m|[36m Words [39;49m +red |[31m[40m Words [39;49m|[31m[44m Words [39;49m|[31m[42m Words [39;49m|[31m[46m Words [39;49m|[31m[41m Words [39;49m|[31m[45m Words [39;49m|[31m[43m Words [39;49m|[31m[47m Words [39;49m|[31m Words [39;49m +magenta|[35m[40m Words [39;49m|[35m[44m Words [39;49m|[35m[42m Words [39;49m|[35m[46m Words [39;49m|[35m[41m Words [39;49m|[35m[45m Words [39;49m|[35m[43m Words [39;49m|[35m[47m Words [39;49m|[35m Words [39;49m +yellow |[33m[40m Words [39;49m|[33m[44m Words [39;49m|[33m[42m Words [39;49m|[33m[46m Words [39;49m|[33m[41m Words [39;49m|[33m[45m Words [39;49m|[33m[43m Words [39;49m|[33m[47m Words [39;49m|[33m Words [39;49m +white |[37m[40m Words [39;49m|[37m[44m Words [39;49m|[37m[42m Words [39;49m|[37m[46m Words [39;49m|[37m[41m Words [39;49m|[37m[45m Words [39;49m|[37m[43m Words [39;49m|[37m[47m Words [39;49m|[37m Words [39;49m +default|[40m Words [39;49m|[44m Words [39;49m|[42m Words [39;49m|[46m Words [39;49m|[41m Words [39;49m|[45m Words [39;49m|[43m Words [39;49m|[47m Words [39;49m| Words + +Colors (hue/saturation): +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[43m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[42m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[46m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[44m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[45m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m +[41m [47m [39;49m + +Weights: +normal, [1mbold, [mdefault + +Postures: +normal, italic, default + +Text decorations: +normal, [4munderlined, [24mdefault + diff --git a/gettext-tools/gnulib-tests/test-term-ostream.c b/gettext-tools/gnulib-tests/test-term-ostream.c new file mode 100644 index 0000000..b8bdbd7 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-term-ostream.c @@ -0,0 +1,213 @@ +/* Test for the term-ostream API. */ + +#include <config.h> + +#include "term-ostream.h" + +#include <stdlib.h> +#include <string.h> + +int +main () +{ + static struct { const char *name; term_color_t c; int r; int g; int b; } + colors[] = + { + { "black", -2, 0, 0, 0 }, + { "blue", -2, 0, 0, 255 }, + { "green", -2, 0, 255, 0 }, + { "cyan", -2, 0, 255, 255 }, + { "red", -2, 255, 0, 0 }, + { "magenta", -2, 255, 0, 255 }, + { "yellow", -2, 255, 255, 0 }, + { "white", -2, 255, 255, 255 }, + { "default", COLOR_DEFAULT } + }; + term_ostream_t stream; + int i, row, col; + + stream = term_ostream_create (1, "stdout"); + + for (i = 0; i < 8; i++) + colors[i].c = + term_ostream_rgb_to_color (stream, colors[i].r, colors[i].g, colors[i].b); + + ostream_write_str (stream, "Colors (foreground/background):\n"); + ostream_write_str (stream, " "); + for (col = 0; col <= 8; col++) + { + const char *name = colors[col].name; + ostream_write_str (stream, "|"); + ostream_write_str (stream, name); + ostream_write_mem (stream, " ", 7 - strlen (name)); + } + ostream_write_str (stream, "\n"); + for (row = 0; row <= 8; row++) + { + const char *name = colors[row].name; + ostream_write_str (stream, name); + ostream_write_mem (stream, " ", 7 - strlen (name)); + for (col = 0; col <= 8; col++) + { + term_color_t row_color = colors[row].c; + term_color_t col_color = colors[col].c; + + ostream_write_str (stream, "|"); + term_ostream_set_color (stream, row_color); + term_ostream_set_bgcolor (stream, col_color); + if (!(term_ostream_get_color (stream) == row_color + && term_ostream_get_bgcolor (stream) == col_color)) + abort (); + ostream_write_str (stream, " Words "); + term_ostream_set_color (stream, COLOR_DEFAULT); + term_ostream_set_bgcolor (stream, COLOR_DEFAULT); + if (!(term_ostream_get_color (stream) == COLOR_DEFAULT + && term_ostream_get_bgcolor (stream) == COLOR_DEFAULT)) + abort (); + } + ostream_write_str (stream, "\n"); + } + ostream_write_str (stream, "\n"); + + ostream_write_str (stream, "Colors (hue/saturation):\n"); + /* Hue from 0 to 1. */ + for (row = 0; row <= 17; row++) + { + for (col = 0; col <= 64; col++) + { + int r = 255; + int b = (int) (255.0f / 64.0f * col + 0.5f); + int g = b + (int) (row / 17.0f * (r - b) + 0.5f); + term_color_t c = term_ostream_rgb_to_color (stream, r, g, b); + term_ostream_set_bgcolor (stream, c); + ostream_write_str (stream, " "); + term_ostream_set_bgcolor (stream, COLOR_DEFAULT); + } + ostream_write_str (stream, "\n"); + } + /* Hue from 1 to 2. */ + for (row = 17; row >= 0; row--) + { + for (col = 0; col <= 64; col++) + { + int g = 255; + int b = (int) (255.0f / 64.0f * col + 0.5f); + int r = b + (int) (row / 17.0f * (g - b) + 0.5f); + term_color_t c = term_ostream_rgb_to_color (stream, r, g, b); + term_ostream_set_bgcolor (stream, c); + ostream_write_str (stream, " "); + term_ostream_set_bgcolor (stream, COLOR_DEFAULT); + } + ostream_write_str (stream, "\n"); + } + /* Hue from 2 to 3. */ + for (row = 0; row <= 17; row++) + { + for (col = 0; col <= 64; col++) + { + int g = 255; + int r = (int) (255.0f / 64.0f * col + 0.5f); + int b = r + (int) (row / 17.0f * (g - r) + 0.5f); + term_color_t c = term_ostream_rgb_to_color (stream, r, g, b); + term_ostream_set_bgcolor (stream, c); + ostream_write_str (stream, " "); + term_ostream_set_bgcolor (stream, COLOR_DEFAULT); + } + ostream_write_str (stream, "\n"); + } + /* Hue from 3 to 4. */ + for (row = 17; row >= 0; row--) + { + for (col = 0; col <= 64; col++) + { + int b = 255; + int r = (int) (255.0f / 64.0f * col + 0.5f); + int g = r + (int) (row / 17.0f * (b - r) + 0.5f); + term_color_t c = term_ostream_rgb_to_color (stream, r, g, b); + term_ostream_set_bgcolor (stream, c); + ostream_write_str (stream, " "); + term_ostream_set_bgcolor (stream, COLOR_DEFAULT); + } + ostream_write_str (stream, "\n"); + } + /* Hue from 4 to 5. */ + for (row = 0; row <= 17; row++) + { + for (col = 0; col <= 64; col++) + { + int b = 255; + int g = (int) (255.0f / 64.0f * col + 0.5f); + int r = g + (int) (row / 17.0f * (b - g) + 0.5f); + term_color_t c = term_ostream_rgb_to_color (stream, r, g, b); + term_ostream_set_bgcolor (stream, c); + ostream_write_str (stream, " "); + term_ostream_set_bgcolor (stream, COLOR_DEFAULT); + } + ostream_write_str (stream, "\n"); + } + /* Hue from 5 to 6. */ + for (row = 17; row >= 0; row--) + { + for (col = 0; col <= 64; col++) + { + int r = 255; + int g = (int) (255.0f / 64.0f * col + 0.5f); + int b = g + (int) (row / 17.0f * (r - g) + 0.5f); + term_color_t c = term_ostream_rgb_to_color (stream, r, g, b); + term_ostream_set_bgcolor (stream, c); + ostream_write_str (stream, " "); + term_ostream_set_bgcolor (stream, COLOR_DEFAULT); + } + ostream_write_str (stream, "\n"); + } + ostream_write_str (stream, "\n"); + + ostream_write_str (stream, "Weights:\n"); + term_ostream_set_weight (stream, WEIGHT_NORMAL); + if (term_ostream_get_weight (stream) != WEIGHT_NORMAL) + abort (); + ostream_write_str (stream, "normal, "); + term_ostream_set_weight (stream, WEIGHT_BOLD); + if (term_ostream_get_weight (stream) != WEIGHT_BOLD) + abort (); + ostream_write_str (stream, "bold, "); + term_ostream_set_weight (stream, WEIGHT_DEFAULT); + if (term_ostream_get_weight (stream) != WEIGHT_DEFAULT) + abort (); + ostream_write_str (stream, "default \n"); + ostream_write_str (stream, "\n"); + + ostream_write_str (stream, "Postures:\n"); + term_ostream_set_posture (stream, POSTURE_NORMAL); + if (term_ostream_get_posture (stream) != POSTURE_NORMAL) + abort (); + ostream_write_str (stream, "normal, "); + term_ostream_set_posture (stream, POSTURE_ITALIC); + if (term_ostream_get_posture (stream) != POSTURE_ITALIC) + abort (); + ostream_write_str (stream, "italic, "); + term_ostream_set_posture (stream, POSTURE_DEFAULT); + if (term_ostream_get_posture (stream) != POSTURE_DEFAULT) + abort (); + ostream_write_str (stream, "default \n"); + ostream_write_str (stream, "\n"); + + ostream_write_str (stream, "Text decorations:\n"); + term_ostream_set_underline (stream, UNDERLINE_OFF); + if (term_ostream_get_underline (stream) != UNDERLINE_OFF) + abort (); + ostream_write_str (stream, "normal, "); + term_ostream_set_underline (stream, UNDERLINE_ON); + if (term_ostream_get_underline (stream) != UNDERLINE_ON) + abort (); + ostream_write_str (stream, "underlined, "); + term_ostream_set_underline (stream, UNDERLINE_DEFAULT); + if (term_ostream_get_underline (stream) != UNDERLINE_DEFAULT) + abort (); + ostream_write_str (stream, "default \n"); + ostream_write_str (stream, "\n"); + + ostream_free (stream); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-thread_create.c b/gettext-tools/gnulib-tests/test-thread_create.c new file mode 100644 index 0000000..12ba79d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-thread_create.c @@ -0,0 +1,78 @@ +/* Test of gl_thread_create () macro. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2011. */ + +#include <config.h> + +#include "glthread/thread.h" + +#include <stdio.h> +#include <string.h> + +#include "macros.h" + +static gl_thread_t main_thread_before; +static gl_thread_t main_thread_after; +static gl_thread_t worker_thread; + +static int dummy; +static volatile int work_done; + +static void * +worker_thread_func (void *arg) +{ + work_done = 1; + return &dummy; +} + +int +main () +{ + main_thread_before = gl_thread_self (); + + if (glthread_create (&worker_thread, worker_thread_func, NULL) == 0) + { + void *ret; + + /* Check that gl_thread_self () has the same value before than after the + first call to gl_thread_create (). */ + main_thread_after = gl_thread_self (); + ASSERT (memcmp (&main_thread_before, &main_thread_after, + sizeof (gl_thread_t)) + == 0); + + gl_thread_join (worker_thread, &ret); + + /* Check the return value of the thread. */ + ASSERT (ret == &dummy); + + /* Check that worker_thread_func () has finished executing. */ + ASSERT (work_done); + + return 0; + } + else + { +#if USE_POSIX_THREADS || USE_SOLARIS_THREADS || USE_PTH_THREADS || USE_WINDOWS_THREADS + fputs ("glthread_create failed\n", stderr); + return 1; +#else + fputs ("Skipping test: multithreading not enabled\n", stderr); + return 77; +#endif + } +} diff --git a/gettext-tools/gnulib-tests/test-thread_self.c b/gettext-tools/gnulib-tests/test-thread_self.c new file mode 100644 index 0000000..3629a82 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-thread_self.c @@ -0,0 +1,34 @@ +/* Test of gl_thread_self () macro. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2011. */ + +#include <config.h> + +#include "glthread/thread.h" + +gl_thread_t main_thread; + +int +main () +{ + /* Check that gl_thread_self () can be used with just $(LIBTHREAD), not + $(LIBMULTITHREAD), i.e. in libraries that are multithread-safe but don't + create threads themselves. */ + main_thread = gl_thread_self (); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-time.c b/gettext-tools/gnulib-tests/test-time.c new file mode 100644 index 0000000..cb39c3b --- /dev/null +++ b/gettext-tools/gnulib-tests/test-time.c @@ -0,0 +1,41 @@ +/* Test of <time.h> substitute. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <time.h> + +#include "verify.h" + +/* Check that the types are all defined. */ +struct timespec t1; +#if 0 +/* POSIX:2008 does not require pid_t in <time.h> unconditionally, and indeed + it's missing on Mac OS X 10.5, FreeBSD 6.4, OpenBSD 4.9, mingw. */ +pid_t t2; +#endif + +/* Check that NULL can be passed through varargs as a pointer type, + per POSIX 2008. */ +verify (sizeof NULL == sizeof (void *)); + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-tls.c b/gettext-tools/gnulib-tests/test-tls.c new file mode 100644 index 0000000..9eb0b13 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-tls.c @@ -0,0 +1,212 @@ +/* Test of thread-local storage in multithreaded situations. + Copyright (C) 2005, 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2005. */ + +#include <config.h> + +#if USE_POSIX_THREADS || USE_SOLARIS_THREADS || USE_PTH_THREADS || USE_WINDOWS_THREADS + +#if USE_POSIX_THREADS +# define TEST_POSIX_THREADS 1 +#endif +#if USE_SOLARIS_THREADS +# define TEST_SOLARIS_THREADS 1 +#endif +#if USE_PTH_THREADS +# define TEST_PTH_THREADS 1 +#endif +#if USE_WINDOWS_THREADS +# define TEST_WINDOWS_THREADS 1 +#endif + +/* Whether to help the scheduler through explicit yield(). + Uncomment this to see if the operating system has a fair scheduler. */ +#define EXPLICIT_YIELD 1 + +/* Whether to print debugging messages. */ +#define ENABLE_DEBUGGING 0 + +/* Number of simultaneous threads. */ +#define THREAD_COUNT 16 + +/* Number of operations performed in each thread. */ +#define REPEAT_COUNT 50000 + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "glthread/tls.h" +#include "glthread/thread.h" +#include "glthread/yield.h" + +#if ENABLE_DEBUGGING +# define dbgprintf printf +#else +# define dbgprintf if (0) printf +#endif + +#if EXPLICIT_YIELD +# define yield() gl_thread_yield () +#else +# define yield() +#endif + +static void +perhaps_yield (void) +{ + /* Call yield () only with a certain probability, otherwise with GNU Pth + the sequence of thread activations is too predictable. */ + if ((((unsigned int) rand () >> 3) % 4) == 0) + yield (); +} + + +/* ----------------------- Test thread-local storage ----------------------- */ + +#define KEYS_COUNT 4 + +static gl_tls_key_t mykeys[KEYS_COUNT]; + +static void * +worker_thread (void *arg) +{ + unsigned int id = (unsigned int) (unsigned long) arg; + int i, j, repeat; + unsigned int values[KEYS_COUNT]; + + dbgprintf ("Worker %p started\n", gl_thread_self_pointer ()); + + /* Initialize the per-thread storage. */ + for (i = 0; i < KEYS_COUNT; i++) + { + values[i] = (((unsigned int) rand () >> 3) % 1000000) * THREAD_COUNT + id; + /* Hopefully no arithmetic overflow. */ + if ((values[i] % THREAD_COUNT) != id) + abort (); + } + perhaps_yield (); + + /* Verify that the initial value is NULL. */ + dbgprintf ("Worker %p before initial verify\n", gl_thread_self_pointer ()); + for (i = 0; i < KEYS_COUNT; i++) + if (gl_tls_get (mykeys[i]) != NULL) + abort (); + dbgprintf ("Worker %p after initial verify\n", gl_thread_self_pointer ()); + perhaps_yield (); + + /* Initialize the per-thread storage. */ + dbgprintf ("Worker %p before first tls_set\n", gl_thread_self_pointer ()); + for (i = 0; i < KEYS_COUNT; i++) + { + unsigned int *ptr = (unsigned int *) malloc (sizeof (unsigned int)); + *ptr = values[i]; + gl_tls_set (mykeys[i], ptr); + } + dbgprintf ("Worker %p after first tls_set\n", gl_thread_self_pointer ()); + perhaps_yield (); + + /* Shuffle around the pointers. */ + for (repeat = REPEAT_COUNT; repeat > 0; repeat--) + { + dbgprintf ("Worker %p doing value swapping\n", gl_thread_self_pointer ()); + i = ((unsigned int) rand () >> 3) % KEYS_COUNT; + j = ((unsigned int) rand () >> 3) % KEYS_COUNT; + if (i != j) + { + void *vi = gl_tls_get (mykeys[i]); + void *vj = gl_tls_get (mykeys[j]); + + gl_tls_set (mykeys[i], vj); + gl_tls_set (mykeys[j], vi); + } + perhaps_yield (); + } + + /* Verify that all the values are from this thread. */ + dbgprintf ("Worker %p before final verify\n", gl_thread_self_pointer ()); + for (i = 0; i < KEYS_COUNT; i++) + if ((*(unsigned int *) gl_tls_get (mykeys[i]) % THREAD_COUNT) != id) + abort (); + dbgprintf ("Worker %p after final verify\n", gl_thread_self_pointer ()); + perhaps_yield (); + + dbgprintf ("Worker %p dying.\n", gl_thread_self_pointer ()); + return NULL; +} + +static void +test_tls (void) +{ + int pass, i; + + for (pass = 0; pass < 2; pass++) + { + gl_thread_t threads[THREAD_COUNT]; + + if (pass == 0) + for (i = 0; i < KEYS_COUNT; i++) + gl_tls_key_init (mykeys[i], free); + else + for (i = KEYS_COUNT - 1; i >= 0; i--) + gl_tls_key_init (mykeys[i], free); + + /* Spawn the threads. */ + for (i = 0; i < THREAD_COUNT; i++) + threads[i] = gl_thread_create (worker_thread, NULL); + + /* Wait for the threads to terminate. */ + for (i = 0; i < THREAD_COUNT; i++) + gl_thread_join (threads[i], NULL); + + for (i = 0; i < KEYS_COUNT; i++) + gl_tls_key_destroy (mykeys[i]); + } +} + + +/* -------------------------------------------------------------------------- */ + +int +main () +{ +#if TEST_PTH_THREADS + if (!pth_init ()) + abort (); +#endif + + printf ("Starting test_tls ..."); fflush (stdout); + test_tls (); + printf (" OK\n"); fflush (stdout); + + return 0; +} + +#else + +/* No multithreading available. */ + +#include <stdio.h> + +int +main () +{ + fputs ("Skipping test: multithreading not enabled\n", stderr); + return 77; +} + +#endif diff --git a/gettext-tools/gnulib-tests/test-unistd.c b/gettext-tools/gnulib-tests/test-unistd.c new file mode 100644 index 0000000..6d3fa00 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-unistd.c @@ -0,0 +1,56 @@ +/* Test of <unistd.h> substitute. + Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <unistd.h> + +#include "verify.h" + +/* Check that NULL can be passed through varargs as a pointer type, + per POSIX 2008. */ +verify (sizeof NULL == sizeof (void *)); + +/* Check that the various SEEK_* macros are defined. */ +int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET }; + +/* Check that the various *_FILENO macros are defined. */ +#if ! (defined STDIN_FILENO \ + && (STDIN_FILENO + STDOUT_FILENO + STDERR_FILENO == 3)) +missing or broken *_FILENO macros +#endif + +/* Check that the types are all defined. */ +size_t t1; +ssize_t t2; +#ifdef TODO /* Not implemented in gnulib yet */ +uid_t t3; +gid_t t4; +#endif +off_t t5; +pid_t t6; +#ifdef TODO +useconds_t t7; +intptr_t t8; +#endif + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-unsetenv.c b/gettext-tools/gnulib-tests/test-unsetenv.c new file mode 100644 index 0000000..50600a9 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-unsetenv.c @@ -0,0 +1,61 @@ +/* Tests of unsetenv. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Eric Blake <ebb9@byu.net>, 2009. */ + +#include <config.h> + +#include <stdlib.h> + +#include "signature.h" +SIGNATURE_CHECK (unsetenv, int, (char const *)); + +#include <errno.h> +#include <string.h> +#include <unistd.h> + +#include "macros.h" + +int +main (void) +{ + char entry[] = "b=2"; + + /* Test removal when multiple entries present. */ + ASSERT (putenv ((char *) "a=1") == 0); + ASSERT (putenv (entry) == 0); + entry[0] = 'a'; /* Unspecified what getenv("a") would be at this point. */ + ASSERT (unsetenv ("a") == 0); /* Both entries will be removed. */ + ASSERT (getenv ("a") == NULL); + ASSERT (unsetenv ("a") == 0); + + /* Required to fail with EINVAL. */ + errno = 0; + ASSERT (unsetenv ("") == -1); + ASSERT (errno == EINVAL); + errno = 0; + ASSERT (unsetenv ("a=b") == -1); + ASSERT (errno == EINVAL); +#if 0 + /* glibc and gnulib's implementation guarantee this, but POSIX no + longer requires it: http://austingroupbugs.net/view.php?id=185 */ + errno = 0; + ASSERT (unsetenv (NULL) == -1); + ASSERT (errno == EINVAL); +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-vasnprintf-posix.c b/gettext-tools/gnulib-tests/test-vasnprintf-posix.c new file mode 100644 index 0000000..4fd21c8 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-vasnprintf-posix.c @@ -0,0 +1,3738 @@ +/* Test of POSIX compatible vasnprintf() and asnprintf() functions. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "vasnprintf.h" + +#include <errno.h> +#include <float.h> +#include <stdarg.h> +#include <stddef.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" +#include "minus-zero.h" +#include "infinity.h" +#include "nan.h" + +/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */ +static int +have_minus_zero () +{ + static double plus_zero = 0.0; + double minus_zero = minus_zerod; + return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0; +} + +/* Representation of an 80-bit 'long double' as an initializer for a sequence + of 'unsigned int' words. */ +#ifdef WORDS_BIGENDIAN +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ + ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16), \ + (unsigned int) (mantlo) << 16 \ + } +#else +# define LDBL80_WORDS(exponent,manthi,mantlo) \ + { mantlo, manthi, exponent } +#endif + +static int +strmatch (const char *pattern, const char *string) +{ + if (strlen (pattern) != strlen (string)) + return 0; + for (; *pattern != '\0'; pattern++, string++) + if (*pattern != '*' && *string != *pattern) + return 0; + return 1; +} + +/* Test whether string[start_index..end_index-1] is a valid textual + representation of NaN. */ +static int +strisnan (const char *string, size_t start_index, size_t end_index, int uppercase) +{ + if (start_index < end_index) + { + if (string[start_index] == '-') + start_index++; + if (start_index + 3 <= end_index + && memcmp (string + start_index, uppercase ? "NAN" : "nan", 3) == 0) + { + start_index += 3; + if (start_index == end_index + || (string[start_index] == '(' && string[end_index - 1] == ')')) + return 1; + } + } + return 0; +} + +static void +test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) +{ + char buf[8]; + int size; + + /* Test return value convention. */ + + for (size = 0; size <= 8; size++) + { + size_t length = size; + char *result = my_asnprintf (NULL, &length, "%d", 12345); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345") == 0); + ASSERT (length == 5); + free (result); + } + + for (size = 0; size <= 8; size++) + { + size_t length; + char *result; + + memcpy (buf, "DEADBEEF", 8); + length = size; + result = my_asnprintf (buf, &length, "%d", 12345); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345") == 0); + ASSERT (length == 5); + if (size < 6) + ASSERT (result != buf); + ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0); + if (result != buf) + free (result); + } + + /* Test support of size specifiers as in C99. */ + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%ju %d", (uintmax_t) 12345671, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345671 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%zu %d", (size_t) 12345672, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345672 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345673 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", (long double) 1.5, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.5 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + /* Test the support of the 'a' and 'A' conversion specifier for hexadecimal + output of floating-point numbers. */ + + { /* A positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%a %d", 3.1416015625, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.922p+1 33") == 0 + || strcmp (result, "0x3.244p+0 33") == 0 + || strcmp (result, "0x6.488p-1 33") == 0 + || strcmp (result, "0xc.91p-2 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A negative number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%A %d", -3.1416015625, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-0X1.922P+1 33") == 0 + || strcmp (result, "-0X3.244P+0 33") == 0 + || strcmp (result, "-0X6.488P-1 33") == 0 + || strcmp (result, "-0XC.91P-2 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%a %d", 0.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x0p+0 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%a %d", minus_zerod, 33, 44, 55); + ASSERT (result != NULL); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0x0p+0 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%a %d", Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "inf 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%a %d", - Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-inf 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%a %d", NaNd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding near the decimal point. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.0a %d", 1.5, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1p+0 33") == 0 + || strcmp (result, "0x2p+0 33") == 0 + || strcmp (result, "0x3p-1 33") == 0 + || strcmp (result, "0x6p-2 33") == 0 + || strcmp (result, "0xcp-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding with precision 0. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.0a %d", 1.51, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x2p+0 33") == 0 + || strcmp (result, "0x3p-1 33") == 0 + || strcmp (result, "0x6p-2 33") == 0 + || strcmp (result, "0xcp-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding with precision 1. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.1a %d", 1.51, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.8p+0 33") == 0 + || strcmp (result, "0x3.0p-1 33") == 0 + || strcmp (result, "0x6.1p-2 33") == 0 + || strcmp (result, "0xc.1p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding with precision 2. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.2a %d", 1.51, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.83p+0 33") == 0 + || strcmp (result, "0x3.05p-1 33") == 0 + || strcmp (result, "0x6.0ap-2 33") == 0 + || strcmp (result, "0xc.14p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding with precision 3. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.3a %d", 1.51, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.829p+0 33") == 0 + || strcmp (result, "0x3.052p-1 33") == 0 + || strcmp (result, "0x6.0a4p-2 33") == 0 + || strcmp (result, "0xc.148p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding can turn a ...FFF into a ...000. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.3a %d", 1.49999, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.800p+0 33") == 0 + || strcmp (result, "0x3.000p-1 33") == 0 + || strcmp (result, "0x6.000p-2 33") == 0 + || strcmp (result, "0xc.000p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding can turn a ...FFF into a ...000. + This shows a Mac OS X 10.3.9 (Darwin 7.9) bug. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.1a %d", 1.999, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.0p+1 33") == 0 + || strcmp (result, "0x2.0p+0 33") == 0 + || strcmp (result, "0x4.0p-1 33") == 0 + || strcmp (result, "0x8.0p-2 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Width. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%10a %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Small precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.10a %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.c000000000p+0 33") == 0 + || strcmp (result, "0x3.8000000000p-1 33") == 0 + || strcmp (result, "0x7.0000000000p-2 33") == 0 + || strcmp (result, "0xe.0000000000p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Large precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.50a %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.c0000000000000000000000000000000000000000000000000p+0 33") == 0 + || strcmp (result, "0x3.80000000000000000000000000000000000000000000000000p-1 33") == 0 + || strcmp (result, "0x7.00000000000000000000000000000000000000000000000000p-2 33") == 0 + || strcmp (result, "0xe.00000000000000000000000000000000000000000000000000p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_LEFT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%-10a %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7p-2 33") == 0 + || strcmp (result, "0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SHOWSIGN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%+a %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "+0x1.cp+0 33") == 0 + || strcmp (result, "+0x3.8p-1 33") == 0 + || strcmp (result, "+0x7p-2 33") == 0 + || strcmp (result, "+0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SPACE. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "% a %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#a %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7.p-2 33") == 0 + || strcmp (result, "0xe.p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#a %d", 1.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.p+0 33") == 0 + || strcmp (result, "0x2.p-1 33") == 0 + || strcmp (result, "0x4.p-2 33") == 0 + || strcmp (result, "0x8.p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with finite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%010a %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x001.cp+0 33") == 0 + || strcmp (result, "0x003.8p-1 33") == 0 + || strcmp (result, "0x00007p-2 33") == 0 + || strcmp (result, "0x0000ep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with infinite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%010a %d", Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + /* "0000000inf 33" is not a valid result; see + <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */ + ASSERT (strcmp (result, " inf 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%050a %d", NaNd (), 33, 44, 55); + ASSERT (result != NULL); + /* "0000000nan 33" is not a valid result; see + <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */ + ASSERT (strlen (result) == 50 + 3 + && strisnan (result, strspn (result, " "), strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", 3.1416015625L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.922p+1 33") == 0 + || strcmp (result, "0x3.244p+0 33") == 0 + || strcmp (result, "0x6.488p-1 33") == 0 + || strcmp (result, "0xc.91p-2 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A negative number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%LA %d", -3.1416015625L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-0X1.922P+1 33") == 0 + || strcmp (result, "-0X3.244P+0 33") == 0 + || strcmp (result, "-0X6.488P-1 33") == 0 + || strcmp (result, "-0XC.91P-2 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", 0.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x0p+0 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", minus_zerol, 33, 44, 55); + ASSERT (result != NULL); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0x0p+0 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "inf 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", - Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-inf 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", NaNl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } +#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE + { /* Quiet NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { + /* Signalling NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities, + Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in + Intel IA-64 Architecture Software Developer's Manual, Volume 1: + Application Architecture. + Table 5-2 "Floating-Point Register Encodings" + Figure 5-6 "Memory to Floating-Point Register Data Translation" + */ + { /* Pseudo-NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Infinity. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Zero. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Unnormalized number. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Denormal. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } +#endif + + { /* Rounding near the decimal point. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.0La %d", 1.5L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x2p+0 33") == 0 + || strcmp (result, "0x3p-1 33") == 0 + || strcmp (result, "0x6p-2 33") == 0 + || strcmp (result, "0xcp-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding with precision 0. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.0La %d", 1.51L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x2p+0 33") == 0 + || strcmp (result, "0x3p-1 33") == 0 + || strcmp (result, "0x6p-2 33") == 0 + || strcmp (result, "0xcp-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding with precision 1. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.1La %d", 1.51L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.8p+0 33") == 0 + || strcmp (result, "0x3.0p-1 33") == 0 + || strcmp (result, "0x6.1p-2 33") == 0 + || strcmp (result, "0xc.1p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding with precision 2. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.2La %d", 1.51L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.83p+0 33") == 0 + || strcmp (result, "0x3.05p-1 33") == 0 + || strcmp (result, "0x6.0ap-2 33") == 0 + || strcmp (result, "0xc.14p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding with precision 3. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.3La %d", 1.51L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.829p+0 33") == 0 + || strcmp (result, "0x3.052p-1 33") == 0 + || strcmp (result, "0x6.0a4p-2 33") == 0 + || strcmp (result, "0xc.148p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding can turn a ...FFF into a ...000. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.3La %d", 1.49999L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.800p+0 33") == 0 + || strcmp (result, "0x3.000p-1 33") == 0 + || strcmp (result, "0x6.000p-2 33") == 0 + || strcmp (result, "0xc.000p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Rounding can turn a ...FFF into a ...000. + This shows a Mac OS X 10.3.9 (Darwin 7.9) bug and a + glibc 2.4 bug <http://sourceware.org/bugzilla/show_bug.cgi?id=2908>. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.1La %d", 1.999L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.0p+1 33") == 0 + || strcmp (result, "0x2.0p+0 33") == 0 + || strcmp (result, "0x4.0p-1 33") == 0 + || strcmp (result, "0x8.0p-2 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Width. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%10La %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Small precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.10La %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.c000000000p+0 33") == 0 + || strcmp (result, "0x3.8000000000p-1 33") == 0 + || strcmp (result, "0x7.0000000000p-2 33") == 0 + || strcmp (result, "0xe.0000000000p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Large precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.50La %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.c0000000000000000000000000000000000000000000000000p+0 33") == 0 + || strcmp (result, "0x3.80000000000000000000000000000000000000000000000000p-1 33") == 0 + || strcmp (result, "0x7.00000000000000000000000000000000000000000000000000p-2 33") == 0 + || strcmp (result, "0xe.00000000000000000000000000000000000000000000000000p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_LEFT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%-10La %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7p-2 33") == 0 + || strcmp (result, "0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SHOWSIGN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%+La %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "+0x1.cp+0 33") == 0 + || strcmp (result, "+0x3.8p-1 33") == 0 + || strcmp (result, "+0x7p-2 33") == 0 + || strcmp (result, "+0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SPACE. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "% La %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#La %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7.p-2 33") == 0 + || strcmp (result, "0xe.p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#La %d", 1.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.p+0 33") == 0 + || strcmp (result, "0x2.p-1 33") == 0 + || strcmp (result, "0x4.p-2 33") == 0 + || strcmp (result, "0x8.p-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with finite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%010La %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x001.cp+0 33") == 0 + || strcmp (result, "0x003.8p-1 33") == 0 + || strcmp (result, "0x00007p-2 33") == 0 + || strcmp (result, "0x0000ep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with infinite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%010La %d", Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + /* "0000000inf 33" is not a valid result; see + <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */ + ASSERT (strcmp (result, " inf 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%050La %d", NaNl (), 33, 44, 55); + ASSERT (result != NULL); + /* "0000000nan 33" is not a valid result; see + <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */ + ASSERT (strlen (result) == 50 + 3 + && strisnan (result, strspn (result, " "), strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + /* Test the support of the %f format directive. */ + + { /* A positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%f %d", 12.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A larger positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%f %d", 1234567.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1234567.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Small and large positive numbers. */ + static struct { double value; const char *string; } data[] = + { + { 1.234321234321234e-37, "0.000000" }, + { 1.234321234321234e-36, "0.000000" }, + { 1.234321234321234e-35, "0.000000" }, + { 1.234321234321234e-34, "0.000000" }, + { 1.234321234321234e-33, "0.000000" }, + { 1.234321234321234e-32, "0.000000" }, + { 1.234321234321234e-31, "0.000000" }, + { 1.234321234321234e-30, "0.000000" }, + { 1.234321234321234e-29, "0.000000" }, + { 1.234321234321234e-28, "0.000000" }, + { 1.234321234321234e-27, "0.000000" }, + { 1.234321234321234e-26, "0.000000" }, + { 1.234321234321234e-25, "0.000000" }, + { 1.234321234321234e-24, "0.000000" }, + { 1.234321234321234e-23, "0.000000" }, + { 1.234321234321234e-22, "0.000000" }, + { 1.234321234321234e-21, "0.000000" }, + { 1.234321234321234e-20, "0.000000" }, + { 1.234321234321234e-19, "0.000000" }, + { 1.234321234321234e-18, "0.000000" }, + { 1.234321234321234e-17, "0.000000" }, + { 1.234321234321234e-16, "0.000000" }, + { 1.234321234321234e-15, "0.000000" }, + { 1.234321234321234e-14, "0.000000" }, + { 1.234321234321234e-13, "0.000000" }, + { 1.234321234321234e-12, "0.000000" }, + { 1.234321234321234e-11, "0.000000" }, + { 1.234321234321234e-10, "0.000000" }, + { 1.234321234321234e-9, "0.000000" }, + { 1.234321234321234e-8, "0.000000" }, + { 1.234321234321234e-7, "0.000000" }, + { 1.234321234321234e-6, "0.000001" }, + { 1.234321234321234e-5, "0.000012" }, + { 1.234321234321234e-4, "0.000123" }, + { 1.234321234321234e-3, "0.001234" }, + { 1.234321234321234e-2, "0.012343" }, + { 1.234321234321234e-1, "0.123432" }, + { 1.234321234321234, "1.234321" }, + { 1.234321234321234e1, "12.343212" }, + { 1.234321234321234e2, "123.432123" }, + { 1.234321234321234e3, "1234.321234" }, + { 1.234321234321234e4, "12343.212343" }, + { 1.234321234321234e5, "123432.123432" }, + { 1.234321234321234e6, "1234321.234321" }, + { 1.234321234321234e7, "12343212.343212" }, + { 1.234321234321234e8, "123432123.432123" }, + { 1.234321234321234e9, "1234321234.321234" }, + { 1.234321234321234e10, "12343212343.2123**" }, + { 1.234321234321234e11, "123432123432.123***" }, + { 1.234321234321234e12, "1234321234321.23****" }, + { 1.234321234321234e13, "12343212343212.3*****" }, + { 1.234321234321234e14, "123432123432123.******" }, + { 1.234321234321234e15, "1234321234321234.000000" }, + { 1.234321234321234e16, "123432123432123**.000000" }, + { 1.234321234321234e17, "123432123432123***.000000" }, + { 1.234321234321234e18, "123432123432123****.000000" }, + { 1.234321234321234e19, "123432123432123*****.000000" }, + { 1.234321234321234e20, "123432123432123******.000000" }, + { 1.234321234321234e21, "123432123432123*******.000000" }, + { 1.234321234321234e22, "123432123432123********.000000" }, + { 1.234321234321234e23, "123432123432123*********.000000" }, + { 1.234321234321234e24, "123432123432123**********.000000" }, + { 1.234321234321234e25, "123432123432123***********.000000" }, + { 1.234321234321234e26, "123432123432123************.000000" }, + { 1.234321234321234e27, "123432123432123*************.000000" }, + { 1.234321234321234e28, "123432123432123**************.000000" }, + { 1.234321234321234e29, "123432123432123***************.000000" }, + { 1.234321234321234e30, "123432123432123****************.000000" }, + { 1.234321234321234e31, "123432123432123*****************.000000" }, + { 1.234321234321234e32, "123432123432123******************.000000" }, + { 1.234321234321234e33, "123432123432123*******************.000000" }, + { 1.234321234321234e34, "123432123432123********************.000000" }, + { 1.234321234321234e35, "123432123432123*********************.000000" }, + { 1.234321234321234e36, "123432123432123**********************.000000" } + }; + size_t k; + for (k = 0; k < SIZEOF (data); k++) + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%f", data[k].value); + ASSERT (result != NULL); + ASSERT (strmatch (data[k].string, result)); + ASSERT (length == strlen (result)); + free (result); + } + } + + { /* A negative number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%f %d", -0.03125, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-0.031250 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%f %d", 0.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%f %d", minus_zerod, 33, 44, 55); + ASSERT (result != NULL); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%f %d", Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "inf 33") == 0 + || strcmp (result, "infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%f %d", - Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-inf 33") == 0 + || strcmp (result, "-infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%f %d", NaNd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Width. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%10f %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_LEFT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%-10f %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SHOWSIGN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%+f %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "+1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SPACE. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "% f %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#f %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.f %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "2. 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with finite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015f %d", 1234.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "00001234.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with infinite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015f %d", - Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " -inf 33") == 0 + || strcmp (result, " -infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%050f %d", NaNd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) == 50 + 3 + && strisnan (result, strspn (result, " "), strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.f %d", 1234.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1234 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with no rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.2f %d", 999.951, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "999.95 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.2f %d", 999.996, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1000.00 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", 12.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A larger positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", 1234567.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1234567.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Small and large positive numbers. */ + static struct { long double value; const char *string; } data[] = + { + { 1.234321234321234e-37L, "0.000000" }, + { 1.234321234321234e-36L, "0.000000" }, + { 1.234321234321234e-35L, "0.000000" }, + { 1.234321234321234e-34L, "0.000000" }, + { 1.234321234321234e-33L, "0.000000" }, + { 1.234321234321234e-32L, "0.000000" }, + { 1.234321234321234e-31L, "0.000000" }, + { 1.234321234321234e-30L, "0.000000" }, + { 1.234321234321234e-29L, "0.000000" }, + { 1.234321234321234e-28L, "0.000000" }, + { 1.234321234321234e-27L, "0.000000" }, + { 1.234321234321234e-26L, "0.000000" }, + { 1.234321234321234e-25L, "0.000000" }, + { 1.234321234321234e-24L, "0.000000" }, + { 1.234321234321234e-23L, "0.000000" }, + { 1.234321234321234e-22L, "0.000000" }, + { 1.234321234321234e-21L, "0.000000" }, + { 1.234321234321234e-20L, "0.000000" }, + { 1.234321234321234e-19L, "0.000000" }, + { 1.234321234321234e-18L, "0.000000" }, + { 1.234321234321234e-17L, "0.000000" }, + { 1.234321234321234e-16L, "0.000000" }, + { 1.234321234321234e-15L, "0.000000" }, + { 1.234321234321234e-14L, "0.000000" }, + { 1.234321234321234e-13L, "0.000000" }, + { 1.234321234321234e-12L, "0.000000" }, + { 1.234321234321234e-11L, "0.000000" }, + { 1.234321234321234e-10L, "0.000000" }, + { 1.234321234321234e-9L, "0.000000" }, + { 1.234321234321234e-8L, "0.000000" }, + { 1.234321234321234e-7L, "0.000000" }, + { 1.234321234321234e-6L, "0.000001" }, + { 1.234321234321234e-5L, "0.000012" }, + { 1.234321234321234e-4L, "0.000123" }, + { 1.234321234321234e-3L, "0.001234" }, + { 1.234321234321234e-2L, "0.012343" }, + { 1.234321234321234e-1L, "0.123432" }, + { 1.234321234321234L, "1.234321" }, + { 1.234321234321234e1L, "12.343212" }, + { 1.234321234321234e2L, "123.432123" }, + { 1.234321234321234e3L, "1234.321234" }, + { 1.234321234321234e4L, "12343.212343" }, + { 1.234321234321234e5L, "123432.123432" }, + { 1.234321234321234e6L, "1234321.234321" }, + { 1.234321234321234e7L, "12343212.343212" }, + { 1.234321234321234e8L, "123432123.432123" }, + { 1.234321234321234e9L, "1234321234.321234" }, + { 1.234321234321234e10L, "12343212343.2123**" }, + { 1.234321234321234e11L, "123432123432.123***" }, + { 1.234321234321234e12L, "1234321234321.23****" }, + { 1.234321234321234e13L, "12343212343212.3*****" }, + { 1.234321234321234e14L, "123432123432123.******" }, + { 1.234321234321234e15L, "1234321234321234.000000" }, + { 1.234321234321234e16L, "123432123432123**.000000" }, + { 1.234321234321234e17L, "123432123432123***.000000" }, + { 1.234321234321234e18L, "123432123432123****.000000" }, + { 1.234321234321234e19L, "123432123432123*****.000000" }, + { 1.234321234321234e20L, "123432123432123******.000000" }, + { 1.234321234321234e21L, "123432123432123*******.000000" }, + { 1.234321234321234e22L, "123432123432123********.000000" }, + { 1.234321234321234e23L, "123432123432123*********.000000" }, + { 1.234321234321234e24L, "123432123432123**********.000000" }, + { 1.234321234321234e25L, "123432123432123***********.000000" }, + { 1.234321234321234e26L, "123432123432123************.000000" }, + { 1.234321234321234e27L, "123432123432123*************.000000" }, + { 1.234321234321234e28L, "123432123432123**************.000000" }, + { 1.234321234321234e29L, "123432123432123***************.000000" }, + { 1.234321234321234e30L, "123432123432123****************.000000" }, + { 1.234321234321234e31L, "123432123432123*****************.000000" }, + { 1.234321234321234e32L, "123432123432123******************.000000" }, + { 1.234321234321234e33L, "123432123432123*******************.000000" }, + { 1.234321234321234e34L, "123432123432123********************.000000" }, + { 1.234321234321234e35L, "123432123432123*********************.000000" }, + { 1.234321234321234e36L, "123432123432123**********************.000000" } + }; + size_t k; + for (k = 0; k < SIZEOF (data); k++) + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf", data[k].value); + ASSERT (result != NULL); + ASSERT (strmatch (data[k].string, result)); + ASSERT (length == strlen (result)); + free (result); + } + } + + { /* A negative number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", -0.03125L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-0.031250 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", 0.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", minus_zerol, 33, 44, 55); + ASSERT (result != NULL); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "inf 33") == 0 + || strcmp (result, "infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", - Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-inf 33") == 0 + || strcmp (result, "-infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", NaNl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } +#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE + { /* Quiet NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { + /* Signalling NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities, + Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in + Intel IA-64 Architecture Software Developer's Manual, Volume 1: + Application Architecture. + Table 5-2 "Floating-Point Register Encodings" + Figure 5-6 "Memory to Floating-Point Register Data Translation" + */ + { /* Pseudo-NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Infinity. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Zero. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Unnormalized number. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Denormal. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } +#endif + + { /* Width. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%10Lf %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_LEFT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%-10Lf %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SHOWSIGN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%+Lf %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "+1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SPACE. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "% Lf %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#Lf %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.Lf %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "2. 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with finite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015Lf %d", 1234.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "00001234.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with infinite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015Lf %d", - Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " -inf 33") == 0 + || strcmp (result, " -infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%050Lf %d", NaNl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) == 50 + 3 + && strisnan (result, strspn (result, " "), strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.Lf %d", 1234.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1234 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with no rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.2Lf %d", 999.951L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "999.95 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.2Lf %d", 999.996L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1000.00 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + /* Test the support of the %F format directive. */ + + { /* A positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%F %d", 12.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A larger positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%F %d", 1234567.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1234567.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A negative number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%F %d", -0.03125, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-0.031250 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%F %d", 0.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%F %d", minus_zerod, 33, 44, 55); + ASSERT (result != NULL); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%F %d", Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "INF 33") == 0 + || strcmp (result, "INFINITY 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%F %d", - Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-INF 33") == 0 + || strcmp (result, "-INFINITY 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%F %d", NaNd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 1) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015F %d", 1234.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "00001234.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with infinite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015F %d", - Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " -INF 33") == 0 + || strcmp (result, " -INFINITY 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.F %d", 1234.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1234 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with no rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.2F %d", 999.951, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "999.95 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.2F %d", 999.996, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1000.00 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%LF %d", 12.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A larger positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%LF %d", 1234567.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1234567.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A negative number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%LF %d", -0.03125L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-0.031250 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%LF %d", 0.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%LF %d", minus_zerol, 33, 44, 55); + ASSERT (result != NULL); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%LF %d", Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "INF 33") == 0 + || strcmp (result, "INFINITY 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%LF %d", - Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-INF 33") == 0 + || strcmp (result, "-INFINITY 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%LF %d", NaNl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 1) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015LF %d", 1234.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "00001234.000000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with infinite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015LF %d", - Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " -INF 33") == 0 + || strcmp (result, " -INFINITY 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.LF %d", 1234.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1234 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with no rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.2LF %d", 999.951L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "999.95 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.2LF %d", 999.996L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1000.00 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + /* Test the support of the %e format directive. */ + + { /* A positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%e %d", 12.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.275000e+01 33") == 0 + || strcmp (result, "1.275000e+001 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A larger positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%e %d", 1234567.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.234567e+06 33") == 0 + || strcmp (result, "1.234567e+006 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Small and large positive numbers. */ + static struct { double value; const char *string; } data[] = + { + { 1.234321234321234e-37, "1.234321e-37" }, + { 1.234321234321234e-36, "1.234321e-36" }, + { 1.234321234321234e-35, "1.234321e-35" }, + { 1.234321234321234e-34, "1.234321e-34" }, + { 1.234321234321234e-33, "1.234321e-33" }, + { 1.234321234321234e-32, "1.234321e-32" }, + { 1.234321234321234e-31, "1.234321e-31" }, + { 1.234321234321234e-30, "1.234321e-30" }, + { 1.234321234321234e-29, "1.234321e-29" }, + { 1.234321234321234e-28, "1.234321e-28" }, + { 1.234321234321234e-27, "1.234321e-27" }, + { 1.234321234321234e-26, "1.234321e-26" }, + { 1.234321234321234e-25, "1.234321e-25" }, + { 1.234321234321234e-24, "1.234321e-24" }, + { 1.234321234321234e-23, "1.234321e-23" }, + { 1.234321234321234e-22, "1.234321e-22" }, + { 1.234321234321234e-21, "1.234321e-21" }, + { 1.234321234321234e-20, "1.234321e-20" }, + { 1.234321234321234e-19, "1.234321e-19" }, + { 1.234321234321234e-18, "1.234321e-18" }, + { 1.234321234321234e-17, "1.234321e-17" }, + { 1.234321234321234e-16, "1.234321e-16" }, + { 1.234321234321234e-15, "1.234321e-15" }, + { 1.234321234321234e-14, "1.234321e-14" }, + { 1.234321234321234e-13, "1.234321e-13" }, + { 1.234321234321234e-12, "1.234321e-12" }, + { 1.234321234321234e-11, "1.234321e-11" }, + { 1.234321234321234e-10, "1.234321e-10" }, + { 1.234321234321234e-9, "1.234321e-09" }, + { 1.234321234321234e-8, "1.234321e-08" }, + { 1.234321234321234e-7, "1.234321e-07" }, + { 1.234321234321234e-6, "1.234321e-06" }, + { 1.234321234321234e-5, "1.234321e-05" }, + { 1.234321234321234e-4, "1.234321e-04" }, + { 1.234321234321234e-3, "1.234321e-03" }, + { 1.234321234321234e-2, "1.234321e-02" }, + { 1.234321234321234e-1, "1.234321e-01" }, + { 1.234321234321234, "1.234321e+00" }, + { 1.234321234321234e1, "1.234321e+01" }, + { 1.234321234321234e2, "1.234321e+02" }, + { 1.234321234321234e3, "1.234321e+03" }, + { 1.234321234321234e4, "1.234321e+04" }, + { 1.234321234321234e5, "1.234321e+05" }, + { 1.234321234321234e6, "1.234321e+06" }, + { 1.234321234321234e7, "1.234321e+07" }, + { 1.234321234321234e8, "1.234321e+08" }, + { 1.234321234321234e9, "1.234321e+09" }, + { 1.234321234321234e10, "1.234321e+10" }, + { 1.234321234321234e11, "1.234321e+11" }, + { 1.234321234321234e12, "1.234321e+12" }, + { 1.234321234321234e13, "1.234321e+13" }, + { 1.234321234321234e14, "1.234321e+14" }, + { 1.234321234321234e15, "1.234321e+15" }, + { 1.234321234321234e16, "1.234321e+16" }, + { 1.234321234321234e17, "1.234321e+17" }, + { 1.234321234321234e18, "1.234321e+18" }, + { 1.234321234321234e19, "1.234321e+19" }, + { 1.234321234321234e20, "1.234321e+20" }, + { 1.234321234321234e21, "1.234321e+21" }, + { 1.234321234321234e22, "1.234321e+22" }, + { 1.234321234321234e23, "1.234321e+23" }, + { 1.234321234321234e24, "1.234321e+24" }, + { 1.234321234321234e25, "1.234321e+25" }, + { 1.234321234321234e26, "1.234321e+26" }, + { 1.234321234321234e27, "1.234321e+27" }, + { 1.234321234321234e28, "1.234321e+28" }, + { 1.234321234321234e29, "1.234321e+29" }, + { 1.234321234321234e30, "1.234321e+30" }, + { 1.234321234321234e31, "1.234321e+31" }, + { 1.234321234321234e32, "1.234321e+32" }, + { 1.234321234321234e33, "1.234321e+33" }, + { 1.234321234321234e34, "1.234321e+34" }, + { 1.234321234321234e35, "1.234321e+35" }, + { 1.234321234321234e36, "1.234321e+36" } + }; + size_t k; + for (k = 0; k < SIZEOF (data); k++) + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%e", data[k].value); + const char *expected = data[k].string; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0 + /* Some implementations produce exponents with 3 digits. */ + || (strlen (result) == strlen (expected) + 1 + && memcmp (result, expected, strlen (expected) - 2) == 0 + && result[strlen (expected) - 2] == '0' + && strcmp (result + strlen (expected) - 1, + expected + strlen (expected) - 2) + == 0)); + ASSERT (length == strlen (result)); + free (result); + } + } + + { /* A negative number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%e %d", -0.03125, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-3.125000e-02 33") == 0 + || strcmp (result, "-3.125000e-002 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%e %d", 0.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0.000000e+00 33") == 0 + || strcmp (result, "0.000000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%e %d", minus_zerod, 33, 44, 55); + ASSERT (result != NULL); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000e+00 33") == 0 + || strcmp (result, "-0.000000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%e %d", Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "inf 33") == 0 + || strcmp (result, "infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%e %d", - Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-inf 33") == 0 + || strcmp (result, "-infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%e %d", NaNd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Width. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%15e %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_LEFT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%-15e %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SHOWSIGN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%+e %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "+1.750000e+00 33") == 0 + || strcmp (result, "+1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SPACE. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "% e %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#e %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.e %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "2.e+00 33") == 0 + || strcmp (result, "2.e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.e %d", 9.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.e+01 33") == 0 + || strcmp (result, "1.e+001 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with finite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015e %d", 1234.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0001.234000e+03 33") == 0 + || strcmp (result, "001.234000e+003 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with infinite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015e %d", - Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " -inf 33") == 0 + || strcmp (result, " -infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%050e %d", NaNd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) == 50 + 3 + && strisnan (result, strspn (result, " "), strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.e %d", 1234.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1e+03 33") == 0 + || strcmp (result, "1e+003 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with no rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.4e %d", 999.951, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "9.9995e+02 33") == 0 + || strcmp (result, "9.9995e+002 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.4e %d", 999.996, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.0000e+03 33") == 0 + || strcmp (result, "1.0000e+003 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", 12.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.275000e+01 33") == 0 + || strcmp (result, "1.275000e+001 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A larger positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", 1234567.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.234567e+06 33") == 0 + || strcmp (result, "1.234567e+006 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Small and large positive numbers. */ + static struct { long double value; const char *string; } data[] = + { + { 1.234321234321234e-37L, "1.234321e-37" }, + { 1.234321234321234e-36L, "1.234321e-36" }, + { 1.234321234321234e-35L, "1.234321e-35" }, + { 1.234321234321234e-34L, "1.234321e-34" }, + { 1.234321234321234e-33L, "1.234321e-33" }, + { 1.234321234321234e-32L, "1.234321e-32" }, + { 1.234321234321234e-31L, "1.234321e-31" }, + { 1.234321234321234e-30L, "1.234321e-30" }, + { 1.234321234321234e-29L, "1.234321e-29" }, + { 1.234321234321234e-28L, "1.234321e-28" }, + { 1.234321234321234e-27L, "1.234321e-27" }, + { 1.234321234321234e-26L, "1.234321e-26" }, + { 1.234321234321234e-25L, "1.234321e-25" }, + { 1.234321234321234e-24L, "1.234321e-24" }, + { 1.234321234321234e-23L, "1.234321e-23" }, + { 1.234321234321234e-22L, "1.234321e-22" }, + { 1.234321234321234e-21L, "1.234321e-21" }, + { 1.234321234321234e-20L, "1.234321e-20" }, + { 1.234321234321234e-19L, "1.234321e-19" }, + { 1.234321234321234e-18L, "1.234321e-18" }, + { 1.234321234321234e-17L, "1.234321e-17" }, + { 1.234321234321234e-16L, "1.234321e-16" }, + { 1.234321234321234e-15L, "1.234321e-15" }, + { 1.234321234321234e-14L, "1.234321e-14" }, + { 1.234321234321234e-13L, "1.234321e-13" }, + { 1.234321234321234e-12L, "1.234321e-12" }, + { 1.234321234321234e-11L, "1.234321e-11" }, + { 1.234321234321234e-10L, "1.234321e-10" }, + { 1.234321234321234e-9L, "1.234321e-09" }, + { 1.234321234321234e-8L, "1.234321e-08" }, + { 1.234321234321234e-7L, "1.234321e-07" }, + { 1.234321234321234e-6L, "1.234321e-06" }, + { 1.234321234321234e-5L, "1.234321e-05" }, + { 1.234321234321234e-4L, "1.234321e-04" }, + { 1.234321234321234e-3L, "1.234321e-03" }, + { 1.234321234321234e-2L, "1.234321e-02" }, + { 1.234321234321234e-1L, "1.234321e-01" }, + { 1.234321234321234L, "1.234321e+00" }, + { 1.234321234321234e1L, "1.234321e+01" }, + { 1.234321234321234e2L, "1.234321e+02" }, + { 1.234321234321234e3L, "1.234321e+03" }, + { 1.234321234321234e4L, "1.234321e+04" }, + { 1.234321234321234e5L, "1.234321e+05" }, + { 1.234321234321234e6L, "1.234321e+06" }, + { 1.234321234321234e7L, "1.234321e+07" }, + { 1.234321234321234e8L, "1.234321e+08" }, + { 1.234321234321234e9L, "1.234321e+09" }, + { 1.234321234321234e10L, "1.234321e+10" }, + { 1.234321234321234e11L, "1.234321e+11" }, + { 1.234321234321234e12L, "1.234321e+12" }, + { 1.234321234321234e13L, "1.234321e+13" }, + { 1.234321234321234e14L, "1.234321e+14" }, + { 1.234321234321234e15L, "1.234321e+15" }, + { 1.234321234321234e16L, "1.234321e+16" }, + { 1.234321234321234e17L, "1.234321e+17" }, + { 1.234321234321234e18L, "1.234321e+18" }, + { 1.234321234321234e19L, "1.234321e+19" }, + { 1.234321234321234e20L, "1.234321e+20" }, + { 1.234321234321234e21L, "1.234321e+21" }, + { 1.234321234321234e22L, "1.234321e+22" }, + { 1.234321234321234e23L, "1.234321e+23" }, + { 1.234321234321234e24L, "1.234321e+24" }, + { 1.234321234321234e25L, "1.234321e+25" }, + { 1.234321234321234e26L, "1.234321e+26" }, + { 1.234321234321234e27L, "1.234321e+27" }, + { 1.234321234321234e28L, "1.234321e+28" }, + { 1.234321234321234e29L, "1.234321e+29" }, + { 1.234321234321234e30L, "1.234321e+30" }, + { 1.234321234321234e31L, "1.234321e+31" }, + { 1.234321234321234e32L, "1.234321e+32" }, + { 1.234321234321234e33L, "1.234321e+33" }, + { 1.234321234321234e34L, "1.234321e+34" }, + { 1.234321234321234e35L, "1.234321e+35" }, + { 1.234321234321234e36L, "1.234321e+36" } + }; + size_t k; + for (k = 0; k < SIZEOF (data); k++) + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le", data[k].value); + const char *expected = data[k].string; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0 + /* Some implementations produce exponents with 3 digits. */ + || (strlen (result) == strlen (expected) + 1 + && memcmp (result, expected, strlen (expected) - 2) == 0 + && result[strlen (expected) - 2] == '0' + && strcmp (result + strlen (expected) - 1, + expected + strlen (expected) - 2) + == 0)); + ASSERT (length == strlen (result)); + free (result); + } + } + + { /* A negative number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", -0.03125L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-3.125000e-02 33") == 0 + || strcmp (result, "-3.125000e-002 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", 0.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0.000000e+00 33") == 0 + || strcmp (result, "0.000000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", minus_zerol, 33, 44, 55); + ASSERT (result != NULL); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000e+00 33") == 0 + || strcmp (result, "-0.000000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "inf 33") == 0 + || strcmp (result, "infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", - Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-inf 33") == 0 + || strcmp (result, "-infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", NaNl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } +#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE + { /* Quiet NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { + /* Signalling NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities, + Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in + Intel IA-64 Architecture Software Developer's Manual, Volume 1: + Application Architecture. + Table 5-2 "Floating-Point Register Encodings" + Figure 5-6 "Memory to Floating-Point Register Data Translation" + */ + { /* Pseudo-NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Infinity. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Zero. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Unnormalized number. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Denormal. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } +#endif + + { /* Width. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%15Le %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_LEFT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%-15Le %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SHOWSIGN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%+Le %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "+1.750000e+00 33") == 0 + || strcmp (result, "+1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SPACE. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "% Le %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#Le %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.Le %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "2.e+00 33") == 0 + || strcmp (result, "2.e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.Le %d", 9.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.e+01 33") == 0 + || strcmp (result, "1.e+001 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with finite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015Le %d", 1234.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0001.234000e+03 33") == 0 + || strcmp (result, "001.234000e+003 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with infinite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015Le %d", - Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " -inf 33") == 0 + || strcmp (result, " -infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%050Le %d", NaNl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) == 50 + 3 + && strisnan (result, strspn (result, " "), strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.Le %d", 1234.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1e+03 33") == 0 + || strcmp (result, "1e+003 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with no rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.4Le %d", 999.951L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "9.9995e+02 33") == 0 + || strcmp (result, "9.9995e+002 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.4Le %d", 999.996L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.0000e+03 33") == 0 + || strcmp (result, "1.0000e+003 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + /* Test the support of the %g format directive. */ + + { /* A positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%g %d", 12.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A larger positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%g %d", 1234567.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.23457e+06 33") == 0 + || strcmp (result, "1.23457e+006 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Small and large positive numbers. */ + static struct { double value; const char *string; } data[] = + { + { 1.234321234321234e-37, "1.23432e-37" }, + { 1.234321234321234e-36, "1.23432e-36" }, + { 1.234321234321234e-35, "1.23432e-35" }, + { 1.234321234321234e-34, "1.23432e-34" }, + { 1.234321234321234e-33, "1.23432e-33" }, + { 1.234321234321234e-32, "1.23432e-32" }, + { 1.234321234321234e-31, "1.23432e-31" }, + { 1.234321234321234e-30, "1.23432e-30" }, + { 1.234321234321234e-29, "1.23432e-29" }, + { 1.234321234321234e-28, "1.23432e-28" }, + { 1.234321234321234e-27, "1.23432e-27" }, + { 1.234321234321234e-26, "1.23432e-26" }, + { 1.234321234321234e-25, "1.23432e-25" }, + { 1.234321234321234e-24, "1.23432e-24" }, + { 1.234321234321234e-23, "1.23432e-23" }, + { 1.234321234321234e-22, "1.23432e-22" }, + { 1.234321234321234e-21, "1.23432e-21" }, + { 1.234321234321234e-20, "1.23432e-20" }, + { 1.234321234321234e-19, "1.23432e-19" }, + { 1.234321234321234e-18, "1.23432e-18" }, + { 1.234321234321234e-17, "1.23432e-17" }, + { 1.234321234321234e-16, "1.23432e-16" }, + { 1.234321234321234e-15, "1.23432e-15" }, + { 1.234321234321234e-14, "1.23432e-14" }, + { 1.234321234321234e-13, "1.23432e-13" }, + { 1.234321234321234e-12, "1.23432e-12" }, + { 1.234321234321234e-11, "1.23432e-11" }, + { 1.234321234321234e-10, "1.23432e-10" }, + { 1.234321234321234e-9, "1.23432e-09" }, + { 1.234321234321234e-8, "1.23432e-08" }, + { 1.234321234321234e-7, "1.23432e-07" }, + { 1.234321234321234e-6, "1.23432e-06" }, + { 1.234321234321234e-5, "1.23432e-05" }, + { 1.234321234321234e-4, "0.000123432" }, + { 1.234321234321234e-3, "0.00123432" }, + { 1.234321234321234e-2, "0.0123432" }, + { 1.234321234321234e-1, "0.123432" }, + { 1.234321234321234, "1.23432" }, + { 1.234321234321234e1, "12.3432" }, + { 1.234321234321234e2, "123.432" }, + { 1.234321234321234e3, "1234.32" }, + { 1.234321234321234e4, "12343.2" }, + { 1.234321234321234e5, "123432" }, + { 1.234321234321234e6, "1.23432e+06" }, + { 1.234321234321234e7, "1.23432e+07" }, + { 1.234321234321234e8, "1.23432e+08" }, + { 1.234321234321234e9, "1.23432e+09" }, + { 1.234321234321234e10, "1.23432e+10" }, + { 1.234321234321234e11, "1.23432e+11" }, + { 1.234321234321234e12, "1.23432e+12" }, + { 1.234321234321234e13, "1.23432e+13" }, + { 1.234321234321234e14, "1.23432e+14" }, + { 1.234321234321234e15, "1.23432e+15" }, + { 1.234321234321234e16, "1.23432e+16" }, + { 1.234321234321234e17, "1.23432e+17" }, + { 1.234321234321234e18, "1.23432e+18" }, + { 1.234321234321234e19, "1.23432e+19" }, + { 1.234321234321234e20, "1.23432e+20" }, + { 1.234321234321234e21, "1.23432e+21" }, + { 1.234321234321234e22, "1.23432e+22" }, + { 1.234321234321234e23, "1.23432e+23" }, + { 1.234321234321234e24, "1.23432e+24" }, + { 1.234321234321234e25, "1.23432e+25" }, + { 1.234321234321234e26, "1.23432e+26" }, + { 1.234321234321234e27, "1.23432e+27" }, + { 1.234321234321234e28, "1.23432e+28" }, + { 1.234321234321234e29, "1.23432e+29" }, + { 1.234321234321234e30, "1.23432e+30" }, + { 1.234321234321234e31, "1.23432e+31" }, + { 1.234321234321234e32, "1.23432e+32" }, + { 1.234321234321234e33, "1.23432e+33" }, + { 1.234321234321234e34, "1.23432e+34" }, + { 1.234321234321234e35, "1.23432e+35" }, + { 1.234321234321234e36, "1.23432e+36" } + }; + size_t k; + for (k = 0; k < SIZEOF (data); k++) + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%g", data[k].value); + const char *expected = data[k].string; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0 + /* Some implementations produce exponents with 3 digits. */ + || (expected[strlen (expected) - 4] == 'e' + && strlen (result) == strlen (expected) + 1 + && memcmp (result, expected, strlen (expected) - 2) == 0 + && result[strlen (expected) - 2] == '0' + && strcmp (result + strlen (expected) - 1, + expected + strlen (expected) - 2) + == 0)); + ASSERT (length == strlen (result)); + free (result); + } + } + + { /* A negative number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%g %d", -0.03125, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-0.03125 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%g %d", 0.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%g %d", minus_zerod, 33, 44, 55); + ASSERT (result != NULL); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%g %d", Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "inf 33") == 0 + || strcmp (result, "infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%g %d", - Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-inf 33") == 0 + || strcmp (result, "-infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%g %d", NaNd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Width. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%10g %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_LEFT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%-10g %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SHOWSIGN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%+g %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "+1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SPACE. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "% g %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#g %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.75000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.g %d", 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "2. 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.g %d", 9.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.e+01 33") == 0 + || strcmp (result, "1.e+001 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with finite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%010g %d", 1234.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0000001234 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with infinite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015g %d", - Infinityd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " -inf 33") == 0 + || strcmp (result, " -infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%050g %d", NaNd (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) == 50 + 3 + && strisnan (result, strspn (result, " "), strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.g %d", 1234.0, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1e+03 33") == 0 + || strcmp (result, "1e+003 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with no rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.5g %d", 999.951, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "999.95 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.5g %d", 999.996, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", 12.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* A larger positive number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", 1234567.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.23457e+06 33") == 0 + || strcmp (result, "1.23457e+006 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Small and large positive numbers. */ + static struct { long double value; const char *string; } data[] = + { + { 1.234321234321234e-37L, "1.23432e-37" }, + { 1.234321234321234e-36L, "1.23432e-36" }, + { 1.234321234321234e-35L, "1.23432e-35" }, + { 1.234321234321234e-34L, "1.23432e-34" }, + { 1.234321234321234e-33L, "1.23432e-33" }, + { 1.234321234321234e-32L, "1.23432e-32" }, + { 1.234321234321234e-31L, "1.23432e-31" }, + { 1.234321234321234e-30L, "1.23432e-30" }, + { 1.234321234321234e-29L, "1.23432e-29" }, + { 1.234321234321234e-28L, "1.23432e-28" }, + { 1.234321234321234e-27L, "1.23432e-27" }, + { 1.234321234321234e-26L, "1.23432e-26" }, + { 1.234321234321234e-25L, "1.23432e-25" }, + { 1.234321234321234e-24L, "1.23432e-24" }, + { 1.234321234321234e-23L, "1.23432e-23" }, + { 1.234321234321234e-22L, "1.23432e-22" }, + { 1.234321234321234e-21L, "1.23432e-21" }, + { 1.234321234321234e-20L, "1.23432e-20" }, + { 1.234321234321234e-19L, "1.23432e-19" }, + { 1.234321234321234e-18L, "1.23432e-18" }, + { 1.234321234321234e-17L, "1.23432e-17" }, + { 1.234321234321234e-16L, "1.23432e-16" }, + { 1.234321234321234e-15L, "1.23432e-15" }, + { 1.234321234321234e-14L, "1.23432e-14" }, + { 1.234321234321234e-13L, "1.23432e-13" }, + { 1.234321234321234e-12L, "1.23432e-12" }, + { 1.234321234321234e-11L, "1.23432e-11" }, + { 1.234321234321234e-10L, "1.23432e-10" }, + { 1.234321234321234e-9L, "1.23432e-09" }, + { 1.234321234321234e-8L, "1.23432e-08" }, + { 1.234321234321234e-7L, "1.23432e-07" }, + { 1.234321234321234e-6L, "1.23432e-06" }, + { 1.234321234321234e-5L, "1.23432e-05" }, + { 1.234321234321234e-4L, "0.000123432" }, + { 1.234321234321234e-3L, "0.00123432" }, + { 1.234321234321234e-2L, "0.0123432" }, + { 1.234321234321234e-1L, "0.123432" }, + { 1.234321234321234L, "1.23432" }, + { 1.234321234321234e1L, "12.3432" }, + { 1.234321234321234e2L, "123.432" }, + { 1.234321234321234e3L, "1234.32" }, + { 1.234321234321234e4L, "12343.2" }, + { 1.234321234321234e5L, "123432" }, + { 1.234321234321234e6L, "1.23432e+06" }, + { 1.234321234321234e7L, "1.23432e+07" }, + { 1.234321234321234e8L, "1.23432e+08" }, + { 1.234321234321234e9L, "1.23432e+09" }, + { 1.234321234321234e10L, "1.23432e+10" }, + { 1.234321234321234e11L, "1.23432e+11" }, + { 1.234321234321234e12L, "1.23432e+12" }, + { 1.234321234321234e13L, "1.23432e+13" }, + { 1.234321234321234e14L, "1.23432e+14" }, + { 1.234321234321234e15L, "1.23432e+15" }, + { 1.234321234321234e16L, "1.23432e+16" }, + { 1.234321234321234e17L, "1.23432e+17" }, + { 1.234321234321234e18L, "1.23432e+18" }, + { 1.234321234321234e19L, "1.23432e+19" }, + { 1.234321234321234e20L, "1.23432e+20" }, + { 1.234321234321234e21L, "1.23432e+21" }, + { 1.234321234321234e22L, "1.23432e+22" }, + { 1.234321234321234e23L, "1.23432e+23" }, + { 1.234321234321234e24L, "1.23432e+24" }, + { 1.234321234321234e25L, "1.23432e+25" }, + { 1.234321234321234e26L, "1.23432e+26" }, + { 1.234321234321234e27L, "1.23432e+27" }, + { 1.234321234321234e28L, "1.23432e+28" }, + { 1.234321234321234e29L, "1.23432e+29" }, + { 1.234321234321234e30L, "1.23432e+30" }, + { 1.234321234321234e31L, "1.23432e+31" }, + { 1.234321234321234e32L, "1.23432e+32" }, + { 1.234321234321234e33L, "1.23432e+33" }, + { 1.234321234321234e34L, "1.23432e+34" }, + { 1.234321234321234e35L, "1.23432e+35" }, + { 1.234321234321234e36L, "1.23432e+36" } + }; + size_t k; + for (k = 0; k < SIZEOF (data); k++) + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg", data[k].value); + const char *expected = data[k].string; + ASSERT (result != NULL); + ASSERT (strcmp (result, expected) == 0 + /* Some implementations produce exponents with 3 digits. */ + || (expected[strlen (expected) - 4] == 'e' + && strlen (result) == strlen (expected) + 1 + && memcmp (result, expected, strlen (expected) - 2) == 0 + && result[strlen (expected) - 2] == '0' + && strcmp (result + strlen (expected) - 1, + expected + strlen (expected) - 2) + == 0)); + ASSERT (length == strlen (result)); + free (result); + } + } + + { /* A negative number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", -0.03125L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-0.03125 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", 0.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative zero. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", minus_zerol, 33, 44, 55); + ASSERT (result != NULL); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Positive infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "inf 33") == 0 + || strcmp (result, "infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative infinity. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", - Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "-inf 33") == 0 + || strcmp (result, "-infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", NaNl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } +#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE + { /* Quiet NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { + /* Signalling NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities, + Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in + Intel IA-64 Architecture Software Developer's Manual, Volume 1: + Application Architecture. + Table 5-2 "Floating-Point Register Encodings" + Figure 5-6 "Memory to Floating-Point Register Data Translation" + */ + { /* Pseudo-NaN. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Infinity. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Zero. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Unnormalized number. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Pseudo-Denormal. */ + static union { unsigned int word[4]; long double value; } x = + { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) >= 3 + 3 + && strisnan (result, 0, strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } +#endif + + { /* Width. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%10Lg %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_LEFT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%-10Lg %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SHOWSIGN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%+Lg %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "+1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_SPACE. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "% Lg %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#Lg %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.75000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.Lg %d", 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "2. 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ALT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.Lg %d", 9.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.e+01 33") == 0 + || strcmp (result, "1.e+001 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with finite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%010Lg %d", 1234.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0000001234 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with infinite number. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%015Lg %d", - Infinityl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " -inf 33") == 0 + || strcmp (result, " -infinity 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* FLAG_ZERO with NaN. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%050Lg %d", NaNl (), 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strlen (result) == 50 + 3 + && strisnan (result, strspn (result, " "), strlen (result) - 3, 0) + && strcmp (result + strlen (result) - 3, " 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.Lg %d", 1234.0L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1e+03 33") == 0 + || strcmp (result, "1e+003 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with no rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.5Lg %d", 999.951L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "999.95 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Precision with rounding. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.5Lg %d", 999.996L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + /* Test the support of the %n format directive. */ + + { + int count = -1; + size_t length; + char *result = + my_asnprintf (NULL, &length, "%d %n", 123, &count, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "123 ") == 0); + ASSERT (length == strlen (result)); + ASSERT (count == 4); + free (result); + } + + /* Test the support of the POSIX/XSI format strings with positions. */ + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%2$d %1$d", 33, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "55 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + /* Test the support of the grouping flag. */ + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%'d %d", 1234567, 99); + ASSERT (result != NULL); + ASSERT (result[strlen (result) - 1] == '9'); + ASSERT (length == strlen (result)); + free (result); + } + + /* Test the support of the left-adjust flag. */ + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "a%*sc", -3, "b"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "ab c") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "a%-*sc", 3, "b"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "ab c") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "a%-*sc", -3, "b"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "ab c") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + /* Test the support of large precision. */ + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.4000d %d", 1234567, 99); + size_t i; + ASSERT (result != NULL); + for (i = 0; i < 4000 - 7; i++) + ASSERT (result[i] == '0'); + ASSERT (strcmp (result + 4000 - 7, "1234567 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.*d %d", 4000, 1234567, 99); + size_t i; + ASSERT (result != NULL); + for (i = 0; i < 4000 - 7; i++) + ASSERT (result[i] == '0'); + ASSERT (strcmp (result + 4000 - 7, "1234567 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.4000d %d", -1234567, 99); + size_t i; + ASSERT (result != NULL); + ASSERT (result[0] == '-'); + for (i = 0; i < 4000 - 7; i++) + ASSERT (result[1 + i] == '0'); + ASSERT (strcmp (result + 1 + 4000 - 7, "1234567 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.4000u %d", 1234567, 99); + size_t i; + ASSERT (result != NULL); + for (i = 0; i < 4000 - 7; i++) + ASSERT (result[i] == '0'); + ASSERT (strcmp (result + 4000 - 7, "1234567 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.4000o %d", 1234567, 99); + size_t i; + ASSERT (result != NULL); + for (i = 0; i < 4000 - 7; i++) + ASSERT (result[i] == '0'); + ASSERT (strcmp (result + 4000 - 7, "4553207 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.4000x %d", 1234567, 99); + size_t i; + ASSERT (result != NULL); + for (i = 0; i < 4000 - 6; i++) + ASSERT (result[i] == '0'); + ASSERT (strcmp (result + 4000 - 6, "12d687 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%#.4000x %d", 1234567, 99); + size_t i; + ASSERT (result != NULL); + ASSERT (result[0] == '0'); + ASSERT (result[1] == 'x'); + for (i = 0; i < 4000 - 6; i++) + ASSERT (result[2 + i] == '0'); + ASSERT (strcmp (result + 2 + 4000 - 6, "12d687 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.4000f %d", 1.0, 99); + size_t i; + ASSERT (result != NULL); + ASSERT (result[0] == '1'); + ASSERT (result[1] == '.'); + for (i = 0; i < 4000; i++) + ASSERT (result[2 + i] == '0'); + ASSERT (strcmp (result + 2 + 4000, " 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%.511f %d", 1.0, 99); + size_t i; + ASSERT (result != NULL); + ASSERT (result[0] == '1'); + ASSERT (result[1] == '.'); + for (i = 0; i < 511; i++) + ASSERT (result[2 + i] == '0'); + ASSERT (strcmp (result + 2 + 511, " 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { + char input[5000]; + size_t length; + char *result; + size_t i; + + for (i = 0; i < sizeof (input) - 1; i++) + input[i] = 'a' + ((1000000 / (i + 1)) % 26); + input[i] = '\0'; + result = my_asnprintf (NULL, &length, "%.4000s %d", input, 99); + ASSERT (result != NULL); + ASSERT (memcmp (result, input, 4000) == 0); + ASSERT (strcmp (result + 4000, " 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + /* Test the support of the %s format directive. */ + + /* To verify that these tests succeed, it is necessary to run them under + a tool that checks against invalid memory accesses, such as ElectricFence + or "valgrind --tool=memcheck". */ + { + size_t i; + + for (i = 1; i <= 8; i++) + { + char *block; + size_t length; + char *result; + + block = (char *) malloc (i); + memcpy (block, "abcdefgh", i); + result = my_asnprintf (NULL, &length, "%.*s", (int) i, block); + ASSERT (result != NULL); + ASSERT (memcmp (result, block, i) == 0); + ASSERT (result[i] == '\0'); + ASSERT (length == strlen (result)); + free (result); + free (block); + } + } +#if HAVE_WCHAR_T + { + size_t i; + + for (i = 1; i <= 8; i++) + { + wchar_t *block; + size_t j; + size_t length; + char *result; + + block = (wchar_t *) malloc (i * sizeof (wchar_t)); + for (j = 0; j < i; j++) + block[j] = "abcdefgh"[j]; + result = my_asnprintf (NULL, &length, "%.*ls", (int) i, block); + ASSERT (result != NULL); + ASSERT (memcmp (result, "abcdefgh", i) == 0); + ASSERT (result[i] == '\0'); + ASSERT (length == strlen (result)); + free (result); + free (block); + } + } +#endif + +#if HAVE_WCHAR_T + /* Test that converting an invalid wchar_t[] to char[] fails with EILSEQ. */ + { + static const wchar_t input[] = { (wchar_t) 1702057263, 114, 0 }; + size_t length; + char *result = my_asnprintf (NULL, &length, "%ls %d", input, 99); + if (result == NULL) + ASSERT (errno == EILSEQ); + else + free (result); + } + { + static const wchar_t input[] = { (wchar_t) 1702057263, 114, 0 }; + size_t length; + char *result = my_asnprintf (NULL, &length, "%3ls %d", input, 99); + if (result == NULL) + ASSERT (errno == EILSEQ); + else + free (result); + } + { + static const wchar_t input[] = { (wchar_t) 1702057263, 114, 0 }; + size_t length; + char *result = my_asnprintf (NULL, &length, "%.1ls %d", input, 99); + if (result == NULL) + ASSERT (errno == EILSEQ); + else + free (result); + } + { + static const wchar_t input[] = { (wchar_t) 1702057263, 114, 0 }; + size_t length; + char *result = my_asnprintf (NULL, &length, "%3.1ls %d", input, 99); + if (result == NULL) + ASSERT (errno == EILSEQ); + else + free (result); + } +#endif + +#if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) && !defined __UCLIBC__ + /* Test that the 'I' flag is supported. */ + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%Id %d", 1234567, 99); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1234567 99") == 0); + ASSERT (length == strlen (result)); + free (result); + } +#endif +} + +static char * +my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) +{ + va_list args; + char *ret; + + va_start (args, format); + ret = vasnprintf (resultbuf, lengthp, format, args); + va_end (args); + return ret; +} + +static void +test_vasnprintf () +{ + test_function (my_asnprintf); +} + +static void +test_asnprintf () +{ + test_function (asnprintf); +} + +int +main (int argc, char *argv[]) +{ + test_vasnprintf (); + test_asnprintf (); + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-vasnprintf.c b/gettext-tools/gnulib-tests/test-vasnprintf.c new file mode 100644 index 0000000..2cbad5d --- /dev/null +++ b/gettext-tools/gnulib-tests/test-vasnprintf.c @@ -0,0 +1,94 @@ +/* Test of vasnprintf() and asnprintf() functions. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "vasnprintf.h" + +#include <stdarg.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +static void +test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) +{ + char buf[8]; + int size; + + for (size = 0; size <= 8; size++) + { + size_t length = size; + char *result = my_asnprintf (NULL, &length, "%d", 12345); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345") == 0); + ASSERT (length == 5); + free (result); + } + + for (size = 0; size <= 8; size++) + { + size_t length; + char *result; + + memcpy (buf, "DEADBEEF", 8); + length = size; + result = my_asnprintf (buf, &length, "%d", 12345); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345") == 0); + ASSERT (length == 5); + if (size < 6) + ASSERT (result != buf); + ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0); + if (result != buf) + free (result); + } +} + +static char * +my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) +{ + va_list args; + char *ret; + + va_start (args, format); + ret = vasnprintf (resultbuf, lengthp, format, args); + va_end (args); + return ret; +} + +static void +test_vasnprintf () +{ + test_function (my_asnprintf); +} + +static void +test_asnprintf () +{ + test_function (asnprintf); +} + +int +main (int argc, char *argv[]) +{ + test_vasnprintf (); + test_asnprintf (); + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-vasprintf.c b/gettext-tools/gnulib-tests/test-vasprintf.c new file mode 100644 index 0000000..9bfffbd --- /dev/null +++ b/gettext-tools/gnulib-tests/test-vasprintf.c @@ -0,0 +1,103 @@ +/* Test of vasprintf() and asprintf() functions. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (asprintf, int, (char **, char const *, ...)); +SIGNATURE_CHECK (vasprintf, int, (char **, char const *, va_list)); + +#include <stdarg.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +static int +my_asprintf (char **result, const char *format, ...) +{ + va_list args; + int ret; + + va_start (args, format); + ret = vasprintf (result, format, args); + va_end (args); + return ret; +} + +static void +test_vasprintf () +{ + int repeat; + + for (repeat = 0; repeat <= 8; repeat++) + { + char *result; + int retval = my_asprintf (&result, "%d", 12345); + ASSERT (retval == 5); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345") == 0); + free (result); + } + + for (repeat = 0; repeat <= 8; repeat++) + { + char *result; + int retval = my_asprintf (&result, "%08lx", 12345UL); + ASSERT (retval == 8); + ASSERT (result != NULL); + ASSERT (strcmp (result, "00003039") == 0); + free (result); + } +} + +static void +test_asprintf () +{ + int repeat; + + for (repeat = 0; repeat <= 8; repeat++) + { + char *result; + int retval = asprintf (&result, "%d", 12345); + ASSERT (retval == 5); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345") == 0); + free (result); + } + + for (repeat = 0; repeat <= 8; repeat++) + { + char *result; + int retval = asprintf (&result, "%08lx", 12345UL); + ASSERT (retval == 8); + ASSERT (result != NULL); + ASSERT (strcmp (result, "00003039") == 0); + free (result); + } +} + +int +main (int argc, char *argv[]) +{ + test_vasprintf (); + test_asprintf (); + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-verify.c b/gettext-tools/gnulib-tests/test-verify.c new file mode 100644 index 0000000..2a41eb1 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-verify.c @@ -0,0 +1,69 @@ +/* Test the "verify" module. + + Copyright (C) 2005, 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible. */ + +#include <config.h> + +#include "verify.h" + +#ifndef EXP_FAIL +# define EXP_FAIL 0 +#endif + +int x; +enum { a, b, c }; + +#if EXP_FAIL == 1 +verify (x >= 0); /* should give ERROR: non-constant expression */ +#endif +verify (c == 2); /* should be ok */ +#if EXP_FAIL == 2 +verify (1 + 1 == 3); /* should give ERROR */ +#endif +verify (1 == 1); verify (1 == 1); /* should be ok */ + +enum +{ + item = verify_true (1 == 1) * 0 + 17 /* should be ok */ +}; + +static int +function (int n) +{ +#if EXP_FAIL == 3 + verify (n >= 0); /* should give ERROR: non-constant expression */ +#endif + verify (c == 2); /* should be ok */ +#if EXP_FAIL == 4 + verify (1 + 1 == 3); /* should give ERROR */ +#endif + verify (1 == 1); verify (1 == 1); /* should be ok */ + + if (n) + return ((void) verify_expr (1 == 1, 1), verify_expr (1 == 1, 8)); /* should be ok */ +#if EXP_FAIL == 5 + return verify_expr (1 == 2, 5); /* should give ERROR */ +#endif + return 0; +} + +int +main (void) +{ + return !(function (0) == 0 && function (1) == 8); +} diff --git a/gettext-tools/gnulib-tests/test-verify.sh b/gettext-tools/gnulib-tests/test-verify.sh new file mode 100755 index 0000000..3e76761 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-verify.sh @@ -0,0 +1,24 @@ +#!/bin/sh +. "${srcdir=.}/init.sh" + +# We are not interested in triggering bugs in the compilers and tools +# (such as gcc 4.3.1 on openSUSE 11.0). +unset MALLOC_PERTURB_ + +# Rather than figure out how to invoke the compiler with the right +# include path ourselves, we let make do it: +(cd "$initial_cwd_" && rm -f test-verify.o \ + && $MAKE test-verify.o >/dev/null 2>&1) \ + || skip_ "cannot compile error-free" + +# Now, prove that we encounter all expected compilation failures: +: >out +: >err +for i in 1 2 3 4 5; do + (cd "$initial_cwd_" + rm -f test-verify.o + $MAKE CFLAGS=-DEXP_FAIL=$i test-verify.o) >>out 2>>err \ + && { warn_ "compiler didn't detect verification failure $i"; fail=1; } +done + +Exit $fail diff --git a/gettext-tools/gnulib-tests/test-vsnprintf.c b/gettext-tools/gnulib-tests/test-vsnprintf.c new file mode 100644 index 0000000..2714a27 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-vsnprintf.c @@ -0,0 +1,85 @@ +/* Test of vsnprintf() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <stdio.h> + +#include "signature.h" +SIGNATURE_CHECK (vsnprintf, int, (char *, size_t, char const *, va_list)); + +#include <stdarg.h> +#include <string.h> + +#include "macros.h" + +static int +my_snprintf (char *buf, int size, const char *format, ...) +{ + va_list args; + int ret; + + va_start (args, format); + ret = vsnprintf (buf, size, format, args); + va_end (args); + return ret; +} + +int +main (int argc, char *argv[]) +{ + char buf[8]; + int size; + int retval; + + retval = my_snprintf (NULL, 0, "%d", 12345); + ASSERT (retval == 5); + + for (size = 0; size <= 8; size++) + { + memcpy (buf, "DEADBEEF", 8); + retval = my_snprintf (buf, size, "%d", 12345); + ASSERT (retval == 5); + if (size < 6) + { + if (size > 0) + { + ASSERT (memcmp (buf, "12345", size - 1) == 0); + ASSERT (buf[size - 1] == '\0' || buf[size - 1] == '0' + size); + } +#if !CHECK_VSNPRINTF_POSIX + if (size > 0) +#endif + ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0); + } + else + { + ASSERT (memcmp (buf, "12345\0EF", 8) == 0); + } + } + + /* Test the support of the POSIX/XSI format strings with positions. */ + { + char result[100]; + retval = my_snprintf (result, sizeof (result), "%2$d %1$d", 33, 55); + ASSERT (strcmp (result, "55 33") == 0); + ASSERT (retval == strlen (result)); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-wchar.c b/gettext-tools/gnulib-tests/test-wchar.c new file mode 100644 index 0000000..d9807ec --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wchar.c @@ -0,0 +1,37 @@ +/* Test of <wchar.h> substitute. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <wchar.h> + +#include "verify.h" + +/* Check that the types wchar_t and wint_t are defined. */ +wchar_t a = 'c'; +wint_t b = 'x'; + +/* Check that NULL can be passed through varargs as a pointer type, + per POSIX 2008. */ +verify (sizeof NULL == sizeof (void *)); + +int +main (void) +{ + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-wcrtomb-w32-1.sh b/gettext-tools/gnulib-tests/test-wcrtomb-w32-1.sh new file mode 100755 index 0000000..50c82f5 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wcrtomb-w32-1.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Test a CP1252 locale. +./test-wcrtomb-w32${EXEEXT} French_France 1252 diff --git a/gettext-tools/gnulib-tests/test-wcrtomb-w32-2.sh b/gettext-tools/gnulib-tests/test-wcrtomb-w32-2.sh new file mode 100755 index 0000000..783c70c --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wcrtomb-w32-2.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Test a CP1256 locale. +./test-wcrtomb-w32${EXEEXT} "Arabic_Saudi Arabia" 1256 diff --git a/gettext-tools/gnulib-tests/test-wcrtomb-w32-3.sh b/gettext-tools/gnulib-tests/test-wcrtomb-w32-3.sh new file mode 100755 index 0000000..619ea64 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wcrtomb-w32-3.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Test a CP932 locale. +./test-wcrtomb-w32${EXEEXT} Japanese_Japan 932 diff --git a/gettext-tools/gnulib-tests/test-wcrtomb-w32-4.sh b/gettext-tools/gnulib-tests/test-wcrtomb-w32-4.sh new file mode 100755 index 0000000..67b6803 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wcrtomb-w32-4.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Test a CP950 locale. +./test-wcrtomb-w32${EXEEXT} Chinese_Taiwan 950 diff --git a/gettext-tools/gnulib-tests/test-wcrtomb-w32-5.sh b/gettext-tools/gnulib-tests/test-wcrtomb-w32-5.sh new file mode 100755 index 0000000..9841fa9 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wcrtomb-w32-5.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Test a CP936 locale. +./test-wcrtomb-w32${EXEEXT} Chinese_China 936 diff --git a/gettext-tools/gnulib-tests/test-wcrtomb-w32.c b/gettext-tools/gnulib-tests/test-wcrtomb-w32.c new file mode 100644 index 0000000..793bbce --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wcrtomb-w32.c @@ -0,0 +1,332 @@ +/* Test of conversion of wide character to multibyte character. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <wchar.h> + +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ + +static int +test_one_locale (const char *name, int codepage) +{ + char buf[64]; + size_t ret; + +# if 1 + /* Portable code to set the locale. */ + { + char name_with_codepage[1024]; + + sprintf (name_with_codepage, "%s.%d", name, codepage); + + /* Set the locale. */ + if (setlocale (LC_ALL, name_with_codepage) == NULL) + return 77; + } +# else + /* Hacky way to set a locale.codepage combination that setlocale() refuses + to set. */ + { + /* Codepage of the current locale, set with setlocale(). + Not necessarily the same as GetACP(). */ + extern __declspec(dllimport) unsigned int __lc_codepage; + + /* Set the locale. */ + if (setlocale (LC_ALL, name) == NULL) + return 77; + + /* Clobber the codepage and MB_CUR_MAX, both set by setlocale(). */ + __lc_codepage = codepage; + switch (codepage) + { + case 1252: + case 1256: + MB_CUR_MAX = 1; + break; + case 932: + case 950: + case 936: + MB_CUR_MAX = 2; + break; + case 54936: + case 65001: + MB_CUR_MAX = 4; + break; + } + + /* Test whether the codepage is really available. */ + { + mbstate_t state; + wchar_t wc; + + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, " ", 1, &state) == (size_t)(-1)) + return 77; + } + } +# endif + + /* Test NUL character. */ + { + buf[0] = 'x'; + ret = wcrtomb (buf, 0, NULL); + ASSERT (ret == 1); + ASSERT (buf[0] == '\0'); + } + + /* Test single bytes. */ + { + int c; + + for (c = 0; c < 0x100; c++) + switch (c) + { + case '\t': case '\v': case '\f': + case ' ': case '!': case '"': case '#': case '%': + case '&': case '\'': case '(': case ')': case '*': + case '+': case ',': case '-': case '.': case '/': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case ':': case ';': case '<': case '=': case '>': + case '?': + case 'A': case 'B': case 'C': case 'D': case 'E': + case 'F': case 'G': case 'H': case 'I': case 'J': + case 'K': case 'L': case 'M': case 'N': case 'O': + case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': + case 'Z': + case '[': case '\\': case ']': case '^': case '_': + case 'a': case 'b': case 'c': case 'd': case 'e': + case 'f': case 'g': case 'h': case 'i': case 'j': + case 'k': case 'l': case 'm': case 'n': case 'o': + case 'p': case 'q': case 'r': case 's': case 't': + case 'u': case 'v': case 'w': case 'x': case 'y': + case 'z': case '{': case '|': case '}': case '~': + /* c is in the ISO C "basic character set". */ + ret = wcrtomb (buf, btowc (c), NULL); + ASSERT (ret == 1); + ASSERT (buf[0] == (char) c); + break; + } + } + + /* Test special calling convention, passing a NULL pointer. */ + { + ret = wcrtomb (NULL, '\0', NULL); + ASSERT (ret == 1); + ret = wcrtomb (NULL, btowc ('x'), NULL); + ASSERT (ret == 1); + } + + switch (codepage) + { + case 1252: + /* Locale encoding is CP1252, an extension of ISO-8859-1. */ + { + /* Convert "B\374\337er": "Büßer" */ + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x00FC, NULL); + ASSERT (ret == 1); + ASSERT (memcmp (buf, "\374", 1) == 0); + ASSERT (buf[1] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x00DF, NULL); + ASSERT (ret == 1); + ASSERT (memcmp (buf, "\337", 1) == 0); + ASSERT (buf[1] == 'x'); + } + return 0; + + case 1256: + /* Locale encoding is CP1256, not the same as ISO-8859-6. */ + { + /* Convert "x\302\341\346y": "xآلوy" */ + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x0622, NULL); + ASSERT (ret == 1); + ASSERT (memcmp (buf, "\302", 1) == 0); + ASSERT (buf[1] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x0644, NULL); + ASSERT (ret == 1); + ASSERT (memcmp (buf, "\341", 1) == 0); + ASSERT (buf[1] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x0648, NULL); + ASSERT (ret == 1); + ASSERT (memcmp (buf, "\346", 1) == 0); + ASSERT (buf[1] == 'x'); + } + return 0; + + case 932: + /* Locale encoding is CP932, similar to Shift_JIS. */ + { + /* Convert "<\223\372\226\173\214\352>": "<日本語>" */ + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x65E5, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\223\372", 2) == 0); + ASSERT (buf[2] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x672C, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\226\173", 2) == 0); + ASSERT (buf[2] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x8A9E, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\214\352", 2) == 0); + ASSERT (buf[2] == 'x'); + } + return 0; + + case 950: + /* Locale encoding is CP950, similar to Big5. */ + { + /* Convert "<\244\351\245\273\273\171>": "<日本語>" */ + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x65E5, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\244\351", 2) == 0); + ASSERT (buf[2] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x672C, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\245\273", 2) == 0); + ASSERT (buf[2] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x8A9E, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\273\171", 2) == 0); + ASSERT (buf[2] == 'x'); + } + return 0; + + case 936: + /* Locale encoding is CP936 = GBK, an extension of GB2312. */ + { + /* Convert "<\310\325\261\276\325\132>": "<日本語>" */ + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x65E5, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\310\325", 2) == 0); + ASSERT (buf[2] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x672C, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\261\276", 2) == 0); + ASSERT (buf[2] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x8A9E, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\325\132", 2) == 0); + ASSERT (buf[2] == 'x'); + } + return 0; + + case 54936: + /* Locale encoding is CP54936 = GB18030. */ + { + /* Convert "B\250\271\201\060\211\070er": "Büßer" */ + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x00FC, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\250\271", 2) == 0); + ASSERT (buf[2] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x00DF, NULL); + ASSERT (ret == 4); + ASSERT (memcmp (buf, "\201\060\211\070", 4) == 0); + ASSERT (buf[4] == 'x'); + } + return 0; + + case 65001: + /* Locale encoding is CP65001 = UTF-8. */ + { + /* Convert "B\303\274\303\237er": "Büßer" */ + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x00FC, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\303\274", 2) == 0); + ASSERT (buf[2] == 'x'); + + memset (buf, 'x', 8); + ret = wcrtomb (buf, 0x00DF, NULL); + ASSERT (ret == 2); + ASSERT (memcmp (buf, "\303\237", 2) == 0); + ASSERT (buf[2] == 'x'); + } + return 0; + + default: + return 1; + } +} + +int +main (int argc, char *argv[]) +{ + int codepage = atoi (argv[argc - 1]); + int result; + int i; + + result = 77; + for (i = 1; i < argc - 1; i++) + { + int ret = test_one_locale (argv[i], codepage); + + if (ret != 77) + result = ret; + } + + if (result == 77) + { + fprintf (stderr, "Skipping test: found no locale with codepage %d\n", + codepage); + } + return result; +} + +#else + +int +main (int argc, char *argv[]) +{ + fputs ("Skipping test: not a native Windows system\n", stderr); + return 77; +} + +#endif diff --git a/gettext-tools/gnulib-tests/test-wcrtomb.c b/gettext-tools/gnulib-tests/test-wcrtomb.c new file mode 100644 index 0000000..5b14050 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wcrtomb.c @@ -0,0 +1,162 @@ +/* Test of conversion of wide character to multibyte character. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include <wchar.h> + +#include "signature.h" +SIGNATURE_CHECK (wcrtomb, size_t, (char *, wchar_t, mbstate_t *)); + +#include <locale.h> +#include <stdlib.h> +#include <string.h> + +#include "macros.h" + +/* Check the multibyte character s[0..n-1]. */ +static void +check_character (const char *s, size_t n) +{ + wchar_t wc; + char buf[64]; + int iret; + size_t ret; + + wc = (wchar_t) 0xBADFACE; + iret = mbtowc (&wc, s, n); + ASSERT (iret == n); + + ret = wcrtomb (buf, wc, NULL); + ASSERT (ret == n); + ASSERT (memcmp (buf, s, n) == 0); + + /* Test special calling convention, passing a NULL pointer. */ + ret = wcrtomb (NULL, wc, NULL); + ASSERT (ret == 1); +} + +int +main (int argc, char *argv[]) +{ + char buf[64]; + size_t ret; + + /* configure should already have checked that the locale is supported. */ + if (setlocale (LC_ALL, "") == NULL) + return 1; + + /* Test NUL character. */ + { + buf[0] = 'x'; + ret = wcrtomb (buf, 0, NULL); + ASSERT (ret == 1); + ASSERT (buf[0] == '\0'); + } + + /* Test single bytes. */ + { + int c; + + for (c = 0; c < 0x100; c++) + switch (c) + { + case '\t': case '\v': case '\f': + case ' ': case '!': case '"': case '#': case '%': + case '&': case '\'': case '(': case ')': case '*': + case '+': case ',': case '-': case '.': case '/': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case ':': case ';': case '<': case '=': case '>': + case '?': + case 'A': case 'B': case 'C': case 'D': case 'E': + case 'F': case 'G': case 'H': case 'I': case 'J': + case 'K': case 'L': case 'M': case 'N': case 'O': + case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': + case 'Z': + case '[': case '\\': case ']': case '^': case '_': + case 'a': case 'b': case 'c': case 'd': case 'e': + case 'f': case 'g': case 'h': case 'i': case 'j': + case 'k': case 'l': case 'm': case 'n': case 'o': + case 'p': case 'q': case 'r': case 's': case 't': + case 'u': case 'v': case 'w': case 'x': case 'y': + case 'z': case '{': case '|': case '}': case '~': + /* c is in the ISO C "basic character set". */ + ret = wcrtomb (buf, btowc (c), NULL); + ASSERT (ret == 1); + ASSERT (buf[0] == (char) c); + break; + } + } + + /* Test special calling convention, passing a NULL pointer. */ + { + ret = wcrtomb (NULL, '\0', NULL); + ASSERT (ret == 1); + ret = wcrtomb (NULL, btowc ('x'), NULL); + ASSERT (ret == 1); + } + + if (argc > 1) + switch (argv[1][0]) + { + case '1': + /* Locale encoding is ISO-8859-1 or ISO-8859-15. */ + { + const char input[] = "B\374\337er"; /* "Büßer" */ + + check_character (input + 1, 1); + check_character (input + 2, 1); + } + return 0; + + case '2': + /* Locale encoding is UTF-8. */ + { + const char input[] = "B\303\274\303\237er"; /* "Büßer" */ + + check_character (input + 1, 2); + check_character (input + 3, 2); + } + return 0; + + case '3': + /* Locale encoding is EUC-JP. */ + { + const char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */ + + check_character (input + 1, 2); + check_character (input + 3, 2); + check_character (input + 5, 2); + } + return 0; + + case '4': + /* Locale encoding is GB18030. */ + { + const char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */ + + check_character (input + 1, 2); + check_character (input + 3, 4); + } + return 0; + } + + return 1; +} diff --git a/gettext-tools/gnulib-tests/test-wcrtomb.sh b/gettext-tools/gnulib-tests/test-wcrtomb.sh new file mode 100755 index 0000000..3eda8f3 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wcrtomb.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +# Test in an ISO-8859-1 or ISO-8859-15 locale. +: ${LOCALE_FR=fr_FR} +if test $LOCALE_FR != none; then + LC_ALL=$LOCALE_FR \ + ./test-wcrtomb${EXEEXT} 1 \ + || exit 1 +fi + +# Test whether a specific UTF-8 locale is installed. +: ${LOCALE_FR_UTF8=fr_FR.UTF-8} +if test $LOCALE_FR_UTF8 != none; then + LC_ALL=$LOCALE_FR_UTF8 \ + ./test-wcrtomb${EXEEXT} 2 \ + || exit 1 +fi + +# Test whether a specific EUC-JP locale is installed. +: ${LOCALE_JA=ja_JP} +if test $LOCALE_JA != none; then + LC_ALL=$LOCALE_JA \ + ./test-wcrtomb${EXEEXT} 3 \ + || exit 1 +fi + +# Test whether a specific GB18030 locale is installed. +: ${LOCALE_ZH_CN=zh_CN.GB18030} +if test $LOCALE_ZH_CN != none; then + LC_ALL=$LOCALE_ZH_CN \ + ./test-wcrtomb${EXEEXT} 4 \ + || exit 1 +fi + +exit 0 diff --git a/gettext-tools/gnulib-tests/test-wctype-h.c b/gettext-tools/gnulib-tests/test-wctype-h.c new file mode 100644 index 0000000..904a185 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wctype-h.c @@ -0,0 +1,74 @@ +/* Test of <wctype.h> substitute. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <wctype.h> + +#include "macros.h" + +/* Check that the type wint_t is defined. */ +wint_t a = 'x'; +/* Check that WEOF is defined. */ +wint_t e = WEOF; + +/* Check that the type wctype_t is defined. */ +wctype_t p; + +/* Check that the type wctrans_t is defined. */ +wctrans_t q; + +int +main (void) +{ + /* Check that the isw* functions exist as functions or as macros. */ + (void) iswalnum (0); + (void) iswalpha (0); + (void) iswcntrl (0); + (void) iswdigit (0); + (void) iswgraph (0); + (void) iswlower (0); + (void) iswprint (0); + (void) iswpunct (0); + (void) iswspace (0); + (void) iswupper (0); + (void) iswxdigit (0); + + /* Check that the isw* functions map WEOF to 0. */ + ASSERT (!iswalnum (e)); + ASSERT (!iswalpha (e)); + ASSERT (!iswcntrl (e)); + ASSERT (!iswdigit (e)); + ASSERT (!iswgraph (e)); + ASSERT (!iswlower (e)); + ASSERT (!iswprint (e)); + ASSERT (!iswpunct (e)); + ASSERT (!iswspace (e)); + ASSERT (!iswupper (e)); + ASSERT (!iswxdigit (e)); + + /* Check that the tow* functions exist as functions or as macros. */ + (void) towlower (0); + (void) towupper (0); + + /* Check that the tow* functions map WEOF to WEOF. */ + ASSERT (towlower (e) == e); + ASSERT (towupper (e) == e); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-wcwidth.c b/gettext-tools/gnulib-tests/test-wcwidth.c new file mode 100644 index 0000000..d571a79 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-wcwidth.c @@ -0,0 +1,81 @@ +/* Test of wcwidth() function. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include <wchar.h> + +#include "signature.h" +SIGNATURE_CHECK (wcwidth, int, (wchar_t)); + +#include <locale.h> +#include <string.h> + +#include "localcharset.h" +#include "macros.h" + +int +main () +{ + wchar_t wc; + + /* Test width of ASCII characters. */ + for (wc = 0x20; wc < 0x7F; wc++) + ASSERT (wcwidth (wc) == 1); + + /* Switch to an UTF-8 locale. */ + if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL + /* Check whether it's really an UTF-8 locale. + On OpenBSD 4.0, the setlocale call succeeds only for the LC_CTYPE + category and therefore returns "C/fr_FR.UTF-8/C/C/C/C", but the + LC_CTYPE category is effectively set to an ASCII LC_CTYPE category; + in particular, locale_charset() returns "ASCII". */ + && strcmp (locale_charset (), "UTF-8") == 0) + { + /* Test width of ASCII characters. */ + for (wc = 0x20; wc < 0x7F; wc++) + ASSERT (wcwidth (wc) == 1); + + /* Test width of some non-spacing characters. */ + ASSERT (wcwidth (0x0301) == 0); + ASSERT (wcwidth (0x05B0) == 0); + + /* Test width of some format control characters. */ + ASSERT (wcwidth (0x200E) <= 0); + ASSERT (wcwidth (0x2060) <= 0); +#if 0 /* wchar_t may be only 16 bits. */ + ASSERT (wcwidth (0xE0001) <= 0); + ASSERT (wcwidth (0xE0044) <= 0); +#endif + + /* Test width of some zero width characters. */ + ASSERT (wcwidth (0x200B) == 0); + ASSERT (wcwidth (0xFEFF) <= 0); + + /* Test width of some CJK characters. */ + ASSERT (wcwidth (0x3000) == 2); + ASSERT (wcwidth (0xB250) == 2); + ASSERT (wcwidth (0xFF1A) == 2); +#if 0 /* wchar_t may be only 16 bits. */ + ASSERT (wcwidth (0x20369) == 2); + ASSERT (wcwidth (0x2F876) == 2); +#endif + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-write.c b/gettext-tools/gnulib-tests/test-write.c new file mode 100644 index 0000000..a722429 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-write.c @@ -0,0 +1,79 @@ +/* Test the write() function. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <unistd.h> + +#include "signature.h" +SIGNATURE_CHECK (write, ssize_t, (int, const void *, size_t)); + +#include <errno.h> +#include <fcntl.h> +#include <string.h> + +#include "macros.h" + +int +main (void) +{ + const char *filename = "test-write.tmp"; + int fd; + + /* Create a file with a simple contents. */ + fd = open (filename, O_CREAT | O_WRONLY, 0600); + ASSERT (fd >= 0); + ASSERT (write (fd, "Hello World", 11) == 11); + ASSERT (close (fd) == 0); + + /* Write into the middle of the file. */ + fd = open (filename, O_WRONLY); + ASSERT (fd >= 0); + ASSERT (lseek (fd, 6, SEEK_SET) == 6); + ASSERT (write (fd, "fascination", 11) == 11); + + /* Verify the contents of the file. */ + { + char buf[64]; + int rfd = open (filename, O_RDONLY); + ASSERT (rfd >= 0); + ASSERT (read (rfd, buf, sizeof (buf)) == 17); + ASSERT (close (rfd) == 0); + ASSERT (memcmp (buf, "Hello fascination", 17) == 0); + } + + ASSERT (close (fd) == 0); + + /* Test behaviour for invalid file descriptors. */ + { + char byte = 'x'; + errno = 0; + ASSERT (write (-1, &byte, 1) == -1); + ASSERT (errno == EBADF); + } + { + char byte = 'x'; + close (99); + errno = 0; + ASSERT (write (99, &byte, 1) == -1); + ASSERT (errno == EBADF); + } + + /* Clean up. */ + unlink (filename); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-xalloc-die.c b/gettext-tools/gnulib-tests/test-xalloc-die.c new file mode 100644 index 0000000..baf7924 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-xalloc-die.c @@ -0,0 +1,30 @@ +/* Test of xalloc_die() function. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Simon Josefsson <simon@josefsson.org>, 2009. */ + +#include <config.h> + +#include "xalloc.h" +#include "progname.h" + +int +main (int argc _GL_UNUSED, char **argv) +{ + set_program_name (argv[0]); + xalloc_die (); + return 0; +} diff --git a/gettext-tools/gnulib-tests/test-xalloc-die.sh b/gettext-tools/gnulib-tests/test-xalloc-die.sh new file mode 100755 index 0000000..cf2ad40 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-xalloc-die.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# Test suite for xalloc_die. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# This file is part of the GNUlib Library. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "${srcdir=.}/init.sh"; path_prepend_ . + +test-xalloc-die${EXEEXT} > out 2> err +case $? in + 1) ;; + *) Exit 1;; +esac + +tr -d '\015' < err \ + | sed 's,.*test-xalloc-die[.ex]*:,test-xalloc-die:,' > err2 || Exit 1 + +compare - err2 <<\EOF || Exit 1 +test-xalloc-die: memory exhausted +EOF + +test -s out && Exit 1 + +Exit $fail diff --git a/gettext-tools/gnulib-tests/test-xvasprintf.c b/gettext-tools/gnulib-tests/test-xvasprintf.c new file mode 100644 index 0000000..45da3e4 --- /dev/null +++ b/gettext-tools/gnulib-tests/test-xvasprintf.c @@ -0,0 +1,138 @@ +/* Test of xvasprintf() and xasprintf() functions. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +/* Tell GCC not to warn about the specific edge cases tested here. */ +#if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__ +# pragma GCC diagnostic ignored "-Wformat-zero-length" +# pragma GCC diagnostic ignored "-Wformat-nonliteral" +# pragma GCC diagnostic ignored "-Wformat-security" +#endif + +#include <config.h> + +#include "xvasprintf.h" + +#include <stdarg.h> +#include <stdlib.h> +#include <string.h> + +#include "progname.h" +#include "macros.h" + +static char * +my_xasprintf (const char *format, ...) +{ + va_list args; + char *ret; + + va_start (args, format); + ret = xvasprintf (format, args); + va_end (args); + return ret; +} + +static void +test_xvasprintf (void) +{ + int repeat; + char *result; + + for (repeat = 0; repeat <= 8; repeat++) + { + result = my_xasprintf ("%d", 12345); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345") == 0); + free (result); + } + + { + /* Silence gcc warning about zero-length format string. */ + const char *empty = ""; + result = my_xasprintf (empty); + ASSERT (result != NULL); + ASSERT (strcmp (result, "") == 0); + free (result); + } + + result = my_xasprintf ("%s", "foo"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "foo") == 0); + free (result); + + result = my_xasprintf ("%s%s", "foo", "bar"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "foobar") == 0); + free (result); + + result = my_xasprintf ("%s%sbaz", "foo", "bar"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "foobarbaz") == 0); + free (result); +} + +static void +test_xasprintf (void) +{ + int repeat; + char *result; + + for (repeat = 0; repeat <= 8; repeat++) + { + result = xasprintf ("%d", 12345); + ASSERT (result != NULL); + ASSERT (strcmp (result, "12345") == 0); + free (result); + } + + { + /* Silence gcc warning about zero-length format string, + and about "format not a string literal and no format" + (whatever that means) . */ + const char *empty = ""; + result = xasprintf (empty, empty); + ASSERT (result != NULL); + ASSERT (strcmp (result, "") == 0); + free (result); + } + + result = xasprintf ("%s", "foo"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "foo") == 0); + free (result); + + result = xasprintf ("%s%s", "foo", "bar"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "foobar") == 0); + free (result); + + result = my_xasprintf ("%s%sbaz", "foo", "bar"); + ASSERT (result != NULL); + ASSERT (strcmp (result, "foobarbaz") == 0); + free (result); +} + +int +main (int argc _GL_UNUSED, char *argv[]) +{ + set_program_name (argv[0]); + + test_xvasprintf (); + test_xasprintf (); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/uniconv/test-u8-conv-from-enc.c b/gettext-tools/gnulib-tests/uniconv/test-u8-conv-from-enc.c new file mode 100644 index 0000000..968bc83 --- /dev/null +++ b/gettext-tools/gnulib-tests/uniconv/test-u8-conv-from-enc.c @@ -0,0 +1,205 @@ +/* Test of conversion to UTF-8 from legacy encodings. + Copyright (C) 2007-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2007. */ + +#include <config.h> + +#include "uniconv.h" + +#include <stdlib.h> +#include <string.h> + +#include "unistr.h" +#include "macros.h" + +/* Magic number for detecting bounds violations. */ +#define MAGIC 0x1983EFF1 + +static size_t * +new_offsets (size_t n) +{ + size_t *offsets = (size_t *) malloc ((n + 1) * sizeof (size_t)); + offsets[n] = MAGIC; + return offsets; +} + +int +main () +{ + static enum iconv_ilseq_handler handlers[] = + { iconveh_error, iconveh_question_mark, iconveh_escape_sequence }; + size_t h; + size_t o; + size_t i; + +#if HAVE_ICONV + /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1, + ISO-8859-2, and UTF-8. */ + + /* Test conversion from ISO-8859-1 to UTF-8 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + static const uint8_t expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + size_t length; + uint8_t *result = u8_conv_from_encoding ("ISO-8859-1", handler, + input, strlen (input), + offsets, + NULL, &length); + ASSERT (result != NULL); + ASSERT (length == u8_strlen (expected)); + ASSERT (u8_cmp (result, expected, u8_strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 37; i++) + ASSERT (offsets[i] == (i < 1 ? i : + i < 12 ? i + 1 : + i < 18 ? i + 2 : + i + 3)); + ASSERT (offsets[37] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* Test conversion from ISO-8859-2 to UTF-8 with no errors. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "Rafa\263 Maszkowski"; /* Rafał Maszkowski */ + static const uint8_t expected[] = "Rafa\305\202 Maszkowski"; + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + size_t length; + uint8_t *result = u8_conv_from_encoding ("ISO-8859-2", handler, + input, strlen (input), + offsets, + NULL, &length); + ASSERT (result != NULL); + ASSERT (length == u8_strlen (expected)); + ASSERT (u8_cmp (result, expected, u8_strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == (i < 5 ? i : + i + 1)); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + } + + /* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */ +# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun) + /* Test conversions from autodetect_jp to UTF-8. */ + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\244\263\244\363\244\313\244\301\244\317"; /* こんにちは in EUC-JP */ + static const uint8_t expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + size_t length; + uint8_t *result = u8_conv_from_encoding ("autodetect_jp", handler, + input, strlen (input), + offsets, + NULL, &length); + ASSERT (result != NULL); + ASSERT (length == u8_strlen (expected)); + ASSERT (u8_cmp (result, expected, u8_strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 10; i++) + ASSERT (offsets[i] == ((i % 2) == 0 ? (i / 2) * 3 : (size_t)(-1))); + ASSERT (offsets[10] == MAGIC); + free (offsets); + } + free (result); + } + } + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\202\261\202\361\202\311\202\277\202\315"; /* こんにちは in Shift_JIS */ + static const uint8_t expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + size_t length; + uint8_t *result = u8_conv_from_encoding ("autodetect_jp", handler, + input, strlen (input), + offsets, + NULL, &length); + ASSERT (result != NULL); + ASSERT (length == u8_strlen (expected)); + ASSERT (u8_cmp (result, expected, u8_strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 10; i++) + ASSERT (offsets[i] == ((i % 2) == 0 ? (i / 2) * 3 : (size_t)(-1))); + ASSERT (offsets[10] == MAGIC); + free (offsets); + } + free (result); + } + } + for (h = 0; h < SIZEOF (handlers); h++) + { + enum iconv_ilseq_handler handler = handlers[h]; + static const char input[] = "\033$B$3$s$K$A$O\033(B"; /* こんにちは in ISO-2022-JP-2 */ + static const uint8_t expected[] = "\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257"; /* こんにちは */ + for (o = 0; o < 2; o++) + { + size_t *offsets = (o ? new_offsets (strlen (input)) : NULL); + size_t length; + uint8_t *result = u8_conv_from_encoding ("autodetect_jp", handler, + input, strlen (input), + offsets, + NULL, &length); + ASSERT (result != NULL); + ASSERT (length == u8_strlen (expected)); + ASSERT (u8_cmp (result, expected, u8_strlen (expected)) == 0); + if (o) + { + for (i = 0; i < 16; i++) + ASSERT (offsets[i] == (i == 0 ? 0 : + i == 5 ? 3 : + i == 7 ? 6 : + i == 9 ? 9 : + i == 11 ? 12 : + i == 13 ? 15 : + (size_t)(-1))); + ASSERT (offsets[16] == MAGIC); + free (offsets); + } + free (result); + } + } +# endif + +#endif + + return 0; +} diff --git a/gettext-tools/gnulib-tests/unilbrk/test-u8-width-linebreaks.c b/gettext-tools/gnulib-tests/unilbrk/test-u8-width-linebreaks.c new file mode 100644 index 0000000..e8c1c85 --- /dev/null +++ b/gettext-tools/gnulib-tests/unilbrk/test-u8-width-linebreaks.c @@ -0,0 +1,68 @@ +/* Test of line breaking of UTF-8 strings. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2008. */ + +#include <config.h> + +#include "unilbrk.h" + +#include <stdlib.h> + +#include "macros.h" + +int +main () +{ + /* Test case n = 0. */ + u8_width_linebreaks (NULL, 0, 80, 0, 0, NULL, "GB18030", NULL); + + { + static const uint8_t input[91] = + /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */ + "Gr\303\274\303\237 Gott. \320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265! x=(-b\302\261sqrt(b\302\262-4ac))/(2a) \346\227\245\346\234\254\350\252\236,\344\270\255\346\226\207,\355\225\234\352\270\200\n"; + + { + char *p = (char *) malloc (SIZEOF (input)); + size_t i; + + u8_width_linebreaks (input, SIZEOF (input), 25, 0, 0, NULL, "GB18030", p); + for (i = 0; i < 91; i++) + { + ASSERT (p[i] == (i == 90 ? UC_BREAK_MANDATORY : + i == 39 || i == 61 ? UC_BREAK_POSSIBLE : + UC_BREAK_PROHIBITED)); + } + free (p); + } + + { + char *p = (char *) malloc (SIZEOF (input)); + size_t i; + + u8_width_linebreaks (input, SIZEOF (input), 25, 0, 0, NULL, "GB2312", p); + for (i = 0; i < 91; i++) + { + ASSERT (p[i] == (i == 90 ? UC_BREAK_MANDATORY : + i == 13 || i == 39 || i == 61 ? UC_BREAK_POSSIBLE : + UC_BREAK_PROHIBITED)); + } + free (p); + } + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/uniname/UnicodeDataNames.txt b/gettext-tools/gnulib-tests/uniname/UnicodeDataNames.txt new file mode 100644 index 0000000..5a4cf1a --- /dev/null +++ b/gettext-tools/gnulib-tests/uniname/UnicodeDataNames.txt @@ -0,0 +1,30423 @@ +0020;SPACE;Zs;0;WS;;;;;N;;;;; +0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; +0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;; +0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;; +0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;; +0026;AMPERSAND;Po;0;ON;;;;;N;;;;; +0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;; +0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; +0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; +002A;ASTERISK;Po;0;ON;;;;;N;;;;; +002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;; +002C;COMMA;Po;0;CS;;;;;N;;;;; +002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;; +002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; +002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;; +0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; +0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; +0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; +0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;; +0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;; +0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;; +0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;; +0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;; +0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;; +0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;; +003A;COLON;Po;0;CS;;;;;N;;;;; +003B;SEMICOLON;Po;0;ON;;;;;N;;;;; +003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;; +003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;; +003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;; +003F;QUESTION MARK;Po;0;ON;;;;;N;;;;; +0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;; +0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; +0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062; +0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063; +0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064; +0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065; +0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066; +0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067; +0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068; +0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069; +004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A; +004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B; +004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C; +004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D; +004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E; +004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F; +0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070; +0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071; +0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072; +0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073; +0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074; +0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075; +0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076; +0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077; +0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078; +0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079; +005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A; +005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;; +005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;; +005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;; +005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;; +005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;; +0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;; +0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 +0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042 +0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043 +0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044 +0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045 +0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046 +0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047 +0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048 +0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049 +006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A +006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B +006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C +006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D +006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E +006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F +0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050 +0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051 +0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052 +0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053 +0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054 +0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055 +0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056 +0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057 +0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058 +0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059 +007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A +007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;; +007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;; +007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;; +007E;TILDE;Sm;0;ON;;;;;N;;;;; +00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;; +00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;; +00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;; +00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; +00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;; +00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;; +00A7;SECTION SIGN;So;0;ON;;;;;N;;;;; +00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;; +00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;; +00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;; +00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;; +00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; +00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;; +00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; +00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;; +00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; +00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;; +00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;; +00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;; +00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;; +00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C +00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; +00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;; +00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;; +00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;; +00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;; +00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;; +00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; +00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; +00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; +00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; +00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; +00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; +00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; +00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; +00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; +00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5; +00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6; +00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7; +00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8; +00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9; +00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA; +00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB; +00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC; +00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED; +00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE; +00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF; +00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0; +00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1; +00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2; +00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3; +00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4; +00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5; +00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6; +00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; +00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8; +00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9; +00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA; +00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB; +00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC; +00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD; +00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE; +00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;; +00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0 +00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1 +00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2 +00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3 +00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4 +00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5 +00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6 +00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7 +00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8 +00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9 +00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA +00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB +00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC +00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD +00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE +00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF +00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0 +00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1 +00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2 +00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3 +00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4 +00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5 +00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6 +00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8 +00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9 +00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA +00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB +00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC +00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD +00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE +00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178 +0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101; +0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100 +0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103; +0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102 +0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105; +0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104 +0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107; +0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106 +0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109; +0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108 +010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B; +010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A +010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D; +010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C +010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F; +010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E +0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111; +0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110 +0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113; +0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112 +0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115; +0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114 +0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117; +0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116 +0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119; +0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118 +011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B; +011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A +011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D; +011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C +011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F; +011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E +0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121; +0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120 +0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123; +0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122 +0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125; +0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124 +0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127; +0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126 +0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129; +0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128 +012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B; +012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A +012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D; +012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C +012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F; +012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E +0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; +0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049 +0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133; +0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132 +0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135; +0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134 +0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137; +0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136 +0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;; +0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A; +013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139 +013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C; +013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B +013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E; +013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D +013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140; +0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F +0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142; +0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141 +0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144; +0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143 +0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146; +0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145 +0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148; +0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147 +0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;; +014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B; +014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A +014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D; +014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C +014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F; +014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E +0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151; +0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150 +0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153; +0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152 +0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155; +0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154 +0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157; +0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156 +0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159; +0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158 +015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B; +015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A +015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D; +015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C +015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F; +015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E +0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161; +0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160 +0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163; +0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162 +0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165; +0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164 +0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167; +0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166 +0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169; +0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168 +016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B; +016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A +016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D; +016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C +016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F; +016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E +0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171; +0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170 +0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173; +0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172 +0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175; +0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174 +0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177; +0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176 +0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF; +0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A; +017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179 +017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C; +017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B +017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E; +017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D +017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053 +0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243 +0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253; +0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183; +0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182 +0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185; +0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184 +0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254; +0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188; +0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187 +0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256; +018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257; +018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C; +018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B +018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;; +018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD; +018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259; +0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B; +0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192; +0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191 +0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260; +0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263; +0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6 +0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269; +0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268; +0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199; +0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198 +019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D +019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; +019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; +019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; +019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 +019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275; +01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; +01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 +01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3; +01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2 +01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5; +01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4 +01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280; +01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8; +01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7 +01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283; +01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;; +01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;; +01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD; +01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC +01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288; +01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0; +01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF +01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A; +01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B; +01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4; +01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3 +01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6; +01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5 +01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292; +01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9; +01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8 +01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;; +01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;; +01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD; +01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC +01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;; +01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7 +01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;; +01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;; +01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;; +01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;; +01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 +01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5 +01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 +01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8 +01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8 +01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8 +01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB +01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB +01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB +01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE; +01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD +01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0; +01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF +01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2; +01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1 +01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4; +01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3 +01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6; +01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5 +01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8; +01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7 +01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA; +01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9 +01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC; +01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB +01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E +01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF; +01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE +01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1; +01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0 +01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3; +01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2 +01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5; +01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4 +01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7; +01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6 +01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9; +01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8 +01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB; +01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA +01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED; +01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC +01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF; +01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE +01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;; +01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2 +01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2 +01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2 +01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5; +01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4 +01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195; +01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF; +01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9; +01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8 +01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB; +01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA +01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD; +01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC +01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF; +01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE +0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201; +0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200 +0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203; +0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202 +0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205; +0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204 +0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207; +0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206 +0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209; +0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208 +020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B; +020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A +020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D; +020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C +020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F; +020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E +0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211; +0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210 +0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213; +0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212 +0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215; +0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214 +0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217; +0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216 +0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219; +0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218 +021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B; +021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A +021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D; +021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C +021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; +021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E +0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; +0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;; +0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; +0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 +0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; +0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224 +0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227; +0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226 +0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229; +0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228 +022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B; +022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A +022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D; +022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C +022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F; +022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E +0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231; +0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230 +0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233; +0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232 +0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;; +0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;; +0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;; +0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;; +0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;; +0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;; +023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65; +023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C; +023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B +023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A; +023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66; +023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; +0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; +0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242; +0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241 +0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180; +0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289; +0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C; +0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247; +0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246 +0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249; +0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248 +024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B; +024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A +024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D; +024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C +024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F; +024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E +0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F +0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D +0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;; +0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181 +0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186 +0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;; +0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189 +0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A +0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;; +0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F +025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;; +025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190 +025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;; +025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;; +025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;; +025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;; +0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193 +0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;; +0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;; +0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194 +0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;; +0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;; +0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;; +0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; +0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 +0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 +026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; +026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62 +026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;; +026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; +026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;; +026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C +0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;; +0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;2C6E;;2C6E +0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D +0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;; +0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;; +0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F +0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;; +0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;; +0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;; +0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;; +027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;; +027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;; +027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;; +027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64 +027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;; +027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;; +0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6 +0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;; +0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;; +0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9 +0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;; +0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;; +0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;; +0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;; +0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE +0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244 +028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1 +028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2 +028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245 +028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;; +028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;; +028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;; +0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;; +0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;; +0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7 +0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;; +0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; +0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;; +0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;; +0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;; +0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;; +0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;; +029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; +029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; +029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; +029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; +029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;; +029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; +02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; +02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;; +02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;; +02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;; +02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;; +02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;; +02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;; +02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;; +02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;; +02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;; +02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;; +02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; +02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; +02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; +02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;; +02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;; +02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;; +02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; +02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;; +02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;; +02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;; +02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;; +02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;; +02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;; +02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;; +02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;; +02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;; +02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;; +02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;; +02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;; +02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;; +02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; +02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;; +02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;; +02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; +02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;; +02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;; +02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;; +02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;; +02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;; +02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;; +02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;; +02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; +02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;; +02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; +02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; +02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;; +02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;; +02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;; +02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;; +02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;; +02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;; +02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;; +02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;; +02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;; +02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;; +02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;; +02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;; +02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;; +02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;; +02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;; +02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;; +02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;; +02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;; +02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;; +02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; +02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; +02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;; +02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;; +02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;; +02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; +02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; +02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;; +02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; +02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; +02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; +02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;; +02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; +02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; +02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;; +02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;; +02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;; +02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;; +02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;; +02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;; +02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;; +02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;; +02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;; +02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;; +0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;; +0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;; +0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; +0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; +0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; +0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;; +0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;; +0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;; +0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;; +0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;; +030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; +030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; +030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; +030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; +030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; +030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; +0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; +0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;; +0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;; +0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;; +0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;; +0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;; +0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;; +0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;; +0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;; +0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;; +031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;; +031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;; +031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;; +031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;; +031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;; +031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;; +0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;; +0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;; +0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;; +0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;; +0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;; +0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; +0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;; +0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; +0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;; +0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;; +032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;; +032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;; +032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;; +032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;; +032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;; +032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;; +0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;; +0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;; +0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;; +0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;; +0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;; +0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;; +0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;; +0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;; +0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;; +0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;; +033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;; +033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;; +033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;; +033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;; +033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;; +033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;; +0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;; +0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;; +0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;; +0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;; +0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;; +0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399 +0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; +0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; +0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;; +0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;; +034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;; +034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;; +034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; +034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; +0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; +0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; +0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;; +0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;; +0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; +0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; +0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; +0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; +0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;; +0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;; +035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; +035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;; +035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;; +035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;; +035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;; +035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;; +0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; +0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; +0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; +0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; +0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; +0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; +0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; +0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; +0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; +0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; +036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; +036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; +036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; +036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; +036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; +036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; +0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371; +0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370 +0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373; +0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372 +0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;; +0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;; +0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377; +0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376 +037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; +037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD +037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE +037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF +037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;; +0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;; +0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;; +0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC; +0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;; +0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD; +0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE; +038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF; +038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC; +038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD; +038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE; +0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;; +0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1; +0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2; +0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3; +0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4; +0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5; +0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6; +0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7; +0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8; +0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9; +039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA; +039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB; +039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC; +039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD; +039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE; +039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF; +03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0; +03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; +03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; +03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4; +03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5; +03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6; +03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7; +03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8; +03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9; +03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA; +03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB; +03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386 +03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388 +03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389 +03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A +03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;; +03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391 +03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392 +03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393 +03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394 +03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395 +03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396 +03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397 +03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398 +03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399 +03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A +03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B +03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C +03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D +03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E +03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F +03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0 +03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 +03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 +03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 +03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4 +03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5 +03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6 +03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7 +03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8 +03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9 +03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA +03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB +03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C +03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E +03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F +03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7; +03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 +03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 +03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;; +03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;; +03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;; +03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 +03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 +03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF +03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9; +03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8 +03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; +03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA +03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; +03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC +03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF; +03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE +03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1; +03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0 +03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3; +03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2 +03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5; +03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4 +03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7; +03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6 +03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9; +03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8 +03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB; +03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA +03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED; +03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC +03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF; +03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE +03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A +03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 +03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9 +03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; +03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8; +03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395 +03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; +03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8; +03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7 +03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2; +03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB; +03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA +03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;; +03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B; +03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C; +03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D; +0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; +0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; +0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452; +0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453; +0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454; +0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455; +0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456; +0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457; +0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458; +0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459; +040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A; +040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B; +040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C; +040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D; +040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E; +040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F; +0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; +0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431; +0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432; +0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433; +0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434; +0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435; +0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436; +0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437; +0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438; +0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439; +041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A; +041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B; +041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C; +041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D; +041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E; +041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F; +0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440; +0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441; +0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442; +0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443; +0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444; +0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445; +0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446; +0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447; +0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448; +0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449; +042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A; +042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B; +042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C; +042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D; +042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E; +042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F; +0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410 +0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411 +0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412 +0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413 +0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414 +0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415 +0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416 +0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417 +0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418 +0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419 +043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A +043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B +043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C +043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D +043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E +043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F +0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420 +0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421 +0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422 +0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423 +0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424 +0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425 +0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426 +0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427 +0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428 +0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429 +044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A +044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B +044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C +044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D +044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E +044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F +0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400 +0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401 +0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402 +0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403 +0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404 +0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405 +0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406 +0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407 +0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408 +0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409 +045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A +045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B +045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C +045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D +045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E +045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F +0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461; +0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460 +0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463; +0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462 +0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465; +0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464 +0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467; +0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466 +0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469; +0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468 +046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B; +046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A +046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D; +046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C +046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F; +046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E +0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471; +0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470 +0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473; +0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472 +0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475; +0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474 +0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477; +0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476 +0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479; +0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478 +047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B; +047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A +047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D; +047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C +047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F; +047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E +0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481; +0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480 +0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;; +0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;; +0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;; +0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;; +0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; +0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;; +0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; +0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; +048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A +048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; +048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C +048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; +048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E +0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491; +0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490 +0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493; +0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492 +0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495; +0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494 +0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497; +0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496 +0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499; +0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498 +049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B; +049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A +049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D; +049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C +049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F; +049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E +04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1; +04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0 +04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3; +04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2 +04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5; +04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4 +04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7; +04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6 +04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9; +04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8 +04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB; +04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA +04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD; +04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC +04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF; +04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE +04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1; +04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0 +04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3; +04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2 +04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5; +04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4 +04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7; +04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6 +04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9; +04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8 +04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB; +04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA +04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD; +04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC +04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF; +04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE +04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF; +04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2; +04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 +04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; +04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 +04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; +04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 +04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; +04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 +04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; +04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 +04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; +04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB +04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; +04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD +04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0 +04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; +04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 +04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; +04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2 +04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5; +04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4 +04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7; +04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6 +04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9; +04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8 +04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB; +04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA +04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD; +04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC +04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF; +04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE +04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1; +04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0 +04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3; +04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2 +04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5; +04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4 +04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7; +04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6 +04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9; +04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8 +04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB; +04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA +04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED; +04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC +04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF; +04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE +04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1; +04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0 +04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3; +04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2 +04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5; +04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 +04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7; +04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6 +04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; +04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 +04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB; +04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA +04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD; +04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC +04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF; +04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE +0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; +0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 +0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; +0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 +0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; +0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 +0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; +0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 +0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; +0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 +050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; +050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A +050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; +050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C +050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; +050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E +0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511; +0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510 +0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513; +0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512 +0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515; +0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514 +0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517; +0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516 +0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519; +0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518 +051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B; +051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A +051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D; +051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C +051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F; +051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E +0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521; +0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520 +0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523; +0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522 +0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; +0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; +0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; +0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564; +0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565; +0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566; +0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567; +0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568; +0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569; +053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A; +053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B; +053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C; +053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D; +053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E; +053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F; +0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570; +0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571; +0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572; +0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573; +0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574; +0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575; +0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576; +0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577; +0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578; +0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579; +054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A; +054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B; +054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C; +054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D; +054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E; +054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F; +0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580; +0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581; +0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582; +0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583; +0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584; +0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585; +0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586; +0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; +055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;; +055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;; +055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;; +055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;; +055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;; +055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;; +0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531 +0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532 +0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533 +0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534 +0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535 +0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536 +0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537 +0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538 +0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539 +056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A +056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B +056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C +056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D +056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E +056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F +0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540 +0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541 +0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542 +0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543 +0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544 +0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545 +0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546 +0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547 +0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548 +0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549 +057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A +057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B +057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C +057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D +057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E +057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F +0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550 +0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551 +0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552 +0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553 +0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554 +0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555 +0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556 +0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;; +0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;; +058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;; +0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;; +0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;; +0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;; +0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;; +0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;; +0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;; +0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;; +0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;; +0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;; +059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;; +059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;; +059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;; +059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;; +059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;; +059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;; +05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;; +05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;; +05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;; +05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;; +05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;; +05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;; +05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;; +05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;; +05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;; +05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;; +05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;; +05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;; +05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;; +05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;; +05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;; +05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;; +05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;; +05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;; +05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;; +05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;; +05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;; +05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;; +05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;; +05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;; +05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;; +05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;; +05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;; +05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;; +05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;; +05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;; +05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;; +05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;; +05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;; +05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;; +05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;; +05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;; +05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;; +05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;; +05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;; +05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;; +05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;; +05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;; +05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;; +05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;; +05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;; +05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;; +05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;; +05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;; +05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;; +05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;; +05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;; +05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;; +05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;; +05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;; +05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;; +05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;; +05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;; +05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;; +05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;; +05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;; +05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;; +05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;; +05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;; +05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;; +05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;; +05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;; +05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;; +05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;; +05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;; +05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;; +05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;; +05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;; +0600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;; +0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;; +0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;; +0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;; +0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;; +0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;; +0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;; +0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;; +060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; +060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;; +060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; +060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;; +060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;; +060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;; +0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;; +0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;; +0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;; +0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;; +0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;; +0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;; +0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;; +0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;; +0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;; +0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;; +061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;; +061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; +061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; +061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; +0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; +0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;; +0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;; +0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;; +0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;; +0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;; +0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;; +0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;; +0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;; +062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;; +062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;; +062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; +062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;; +062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;; +062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;; +0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;; +0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;; +0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; +0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;; +0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; +0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;; +0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;; +0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;; +0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;; +0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;; +063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;; +063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;; +0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;; +0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;; +0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;; +0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;; +0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;; +0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;; +0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;; +0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;; +0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;; +064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;; +064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;; +064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;; +064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;; +064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;; +064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;; +0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;; +0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;; +0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;; +0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;; +0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;; +0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; +0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;; +0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;; +0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;; +0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;; +065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; +065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; +065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; +065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;; +065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;; +0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; +0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; +0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; +0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; +0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; +0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; +0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; +0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; +0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; +0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; +066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;; +066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; +066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; +066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; +066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; +066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; +0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; +0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; +0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; +0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;; +0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;; +0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;; +0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;; +0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;; +0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;; +0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;; +067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;; +067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;; +067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;; +067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;; +067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;; +067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;; +0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;; +0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;; +0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;; +0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;; +0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;; +0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;; +0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;; +0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;; +0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;; +0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;; +068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; +068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;; +068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;; +068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;; +068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;; +0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;; +0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;; +0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;; +0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;; +0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;; +0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;; +0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;; +0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;; +0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;; +069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;; +06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;; +06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;; +06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;; +06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;; +06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;; +06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;; +06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;; +06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;; +06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;; +06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;; +06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;; +06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;; +06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;; +06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;; +06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;; +06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;; +06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;; +06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;; +06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;; +06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;; +06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;; +06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;; +06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;; +06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;; +06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;; +06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;; +06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;; +06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;; +06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;; +06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;; +06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;; +06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;; +06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;; +06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;; +06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;; +06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;; +06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;; +06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;; +06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;; +06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;; +06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; +06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; +06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;; +06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;; +06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; +06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; +06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; +06DD;ARABIC END OF AYAH;Cf;0;AN;;;;;N;;;;; +06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;; +06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; +06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; +06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;; +06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;; +06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;; +06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;; +06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;; +06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;; +06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;; +06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;; +06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;; +06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;; +06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;; +06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;; +06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;; +06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;; +06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;; +06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;; +06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;; +06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;; +06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;; +06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;; +06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;; +06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;; +06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;; +06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;; +06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;; +06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;; +0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;; +0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;; +0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;; +0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;; +0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;; +0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; +0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; +0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; +0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; +070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;; +070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;; +070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;; +070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;; +070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;; +0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;; +0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;; +0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;; +0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;; +0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;; +0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;; +0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;; +0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;; +0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;; +0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; +071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;; +071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;; +071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;; +071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;; +071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;; +071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;; +0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;; +0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;; +0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;; +0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;; +0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;; +0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;; +0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;; +0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;; +0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;; +0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;; +072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;; +072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;; +072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;; +072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;; +072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;; +072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;; +0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;; +0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;; +0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;; +0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;; +0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;; +0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;; +0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;; +0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;; +0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;; +0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;; +073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;; +073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;; +073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;; +073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;; +073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;; +073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;; +0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;; +0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;; +0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;; +0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;; +0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;; +0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;; +074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;; +074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;; +074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;; +074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;; +0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;; +0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; +0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; +0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; +075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; +075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;; +075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;; +075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; +0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; +0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;; +0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;; +076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;; +076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; +076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; +076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; +076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;; +076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; +0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; +0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; +0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;; +0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; +0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; +0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; +0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; +0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; +0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; +0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; +077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; +077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; +077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; +077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;; +077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;; +077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; +0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;; +0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;; +0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;; +0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;; +0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;; +0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;; +0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;; +0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;; +0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;; +0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;; +078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;; +078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;; +078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;; +078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;; +078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;; +078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;; +0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;; +0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;; +0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;; +0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;; +0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;; +0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;; +0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;; +0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;; +0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;; +0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;; +079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;; +079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;; +079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;; +079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;; +079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;; +079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;; +07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;; +07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;; +07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;; +07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;; +07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;; +07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;; +07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;; +07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;; +07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;; +07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;; +07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;; +07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;; +07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;; +07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;; +07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; +07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; +07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; +07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; +07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;; +07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;; +07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;; +07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;; +07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;; +07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;; +07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;; +07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;; +07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;; +07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;; +07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;; +07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;; +07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;; +07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;; +07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;; +07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;; +07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;; +07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;; +07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;; +07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;; +07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;; +07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;; +07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;; +07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;; +07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;; +07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;; +07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;; +07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;; +07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;; +07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;; +07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;; +07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;; +07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;; +07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;; +07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;; +07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;; +07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;; +07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;; +07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;; +07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;; +07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;; +07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;; +07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;; +07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;; +07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;; +07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;; +07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;; +07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;; +07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;; +07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;; +07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;; +07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;; +07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; +07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; +07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;; +07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;; +07F8;NKO COMMA;Po;0;ON;;;;;N;;;;; +07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;; +0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;; +0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;; +0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;; +0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;; +0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;; +0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;; +090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;; +090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;; +090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;; +090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;; +0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;; +0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;; +0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;; +0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;; +0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;; +0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;; +0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;; +0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;; +0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;; +0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;; +091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;; +091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;; +091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;; +091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;; +091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;; +091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;; +0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;; +0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;; +0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;; +0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;; +0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;; +0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;; +0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;; +0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;; +092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;; +092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;; +092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;; +092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;; +092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;; +092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;; +0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;; +0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;; +0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;; +0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;; +0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;; +0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;; +0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;; +0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;; +0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;; +0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;; +093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; +0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;; +0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; +094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;; +094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;; +0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;; +0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;; +0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; +0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; +0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;; +0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;; +095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;; +095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;; +095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;; +095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;; +095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;; +095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;; +0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;; +0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; +0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;; +0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;; +097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;; +097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;; +097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; +097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;; +097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;; +0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;; +0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;; +0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;; +0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;; +0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;; +098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;; +098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;; +0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;; +0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;; +0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;; +0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;; +0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;; +0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;; +0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;; +0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;; +099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;; +099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;; +099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;; +099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;; +099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;; +099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;; +09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;; +09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;; +09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;; +09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;; +09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;; +09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;; +09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;; +09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;; +09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;; +09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;; +09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;; +09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;; +09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;; +09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;; +09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;; +09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;; +09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;; +09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;; +09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;; +09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;; +09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;; +09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;; +09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;; +09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;; +09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;; +09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;; +09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;; +09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;; +09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;; +09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;; +09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; +09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;; +09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;; +09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;; +09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;; +09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;; +09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;; +09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;; +0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;; +0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; +0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;; +0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;; +0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;; +0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;; +0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;; +0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;; +0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;; +0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;; +0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;; +0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;; +0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;; +0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;; +0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;; +0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;; +0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;; +0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;; +0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;; +0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;; +0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;; +0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;; +0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;; +0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;; +0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;; +0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;; +0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;; +0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;; +0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;; +0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;; +0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;; +0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;; +0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;; +0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;; +0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;; +0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;; +0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;; +0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;; +0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;; +0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;; +0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;; +0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;; +0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;; +0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; +0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; +0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0A51;GURMUKHI SIGN UDAAT;Mn;0;NSM;;;;;N;;;;; +0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;; +0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;; +0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;; +0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;; +0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;; +0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;; +0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;; +0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;; +0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;; +0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;; +0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;; +0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;; +0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;; +0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;; +0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;; +0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;; +0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;; +0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;; +0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;; +0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;; +0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;; +0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;; +0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;; +0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;; +0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;; +0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;; +0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;; +0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;; +0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;; +0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;; +0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;; +0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;; +0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;; +0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;; +0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;; +0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;; +0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;; +0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;; +0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;; +0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;; +0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;; +0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;; +0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;; +0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;; +0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;; +0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;; +0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;; +0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;; +0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;; +0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;; +0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;; +0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;; +0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;; +0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;; +0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;; +0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;; +0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;; +0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; +0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; +0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;; +0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; +0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;; +0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;; +0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;; +0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;; +0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;; +0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;; +0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;; +0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;; +0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;; +0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;; +0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;; +0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;; +0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;; +0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;; +0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;; +0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;; +0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;; +0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;; +0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;; +0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;; +0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;; +0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;; +0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;; +0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;; +0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;; +0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;; +0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;; +0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;; +0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;; +0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;; +0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;; +0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;; +0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;; +0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;; +0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;; +0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;; +0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;; +0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;; +0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;; +0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;; +0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;; +0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;; +0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;; +0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;; +0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0B44;ORIYA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;; +0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; +0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; +0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; +0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; +0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;; +0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;; +0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; +0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;; +0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; +0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; +0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; +0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; +0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;; +0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;; +0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;; +0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;; +0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;; +0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;; +0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;; +0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;; +0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;; +0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;; +0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;; +0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;; +0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;; +0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;; +0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;; +0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;; +0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;; +0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;; +0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;; +0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;; +0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;; +0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;; +0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;; +0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;; +0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;; +0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;; +0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;; +0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;; +0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;; +0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;; +0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;; +0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;; +0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;; +0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;; +0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;; +0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;; +0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;; +0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; +0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; +0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;; +0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;; +0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;; +0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;; +0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;; +0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;; +0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;; +0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;; +0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; +0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;; +0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;; +0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;; +0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;; +0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;; +0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;; +0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;; +0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;; +0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;; +0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;; +0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;; +0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;; +0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;; +0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;; +0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;; +0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;; +0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;; +0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;; +0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;; +0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;; +0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;; +0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;; +0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;; +0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;; +0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;; +0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;; +0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;; +0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;; +0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;; +0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;; +0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;; +0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;; +0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;; +0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;; +0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;; +0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;; +0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;; +0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;; +0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;; +0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;; +0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;; +0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;; +0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;; +0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;; +0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; +0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; +0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; +0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; +0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; +0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;; +0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; +0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;; +0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; +0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; +0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; +0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;; +0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;; +0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;; +0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;; +0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;; +0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;; +0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;; +0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;; +0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;; +0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;; +0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;; +0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;; +0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;; +0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;; +0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;; +0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;; +0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;; +0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;; +0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;; +0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;; +0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;; +0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;; +0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;; +0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;; +0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;; +0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;; +0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;; +0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;; +0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;; +0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;; +0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;; +0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;; +0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;; +0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;; +0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;; +0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;; +0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;; +0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;; +0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;; +0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;; +0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;; +0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;; +0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;; +0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;; +0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;; +0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;; +0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;; +0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;; +0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;; +0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;; +0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;; +0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;; +0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;; +0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;; +0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;; +0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;; +0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;; +0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;; +0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;; +0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;; +0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;; +0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;; +0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; +0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; +0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; +0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;; +0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;N;;;;; +0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; +0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; +0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; +0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; +0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;; +0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;; +0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;; +0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;; +0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;; +0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;; +0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;; +0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;; +0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;; +0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;; +0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;; +0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;; +0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;; +0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;; +0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;; +0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;; +0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;; +0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;; +0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;; +0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;; +0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;; +0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;; +0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;; +0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;; +0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;; +0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;; +0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;; +0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;; +0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;; +0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;; +0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;; +0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;; +0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;; +0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;; +0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;; +0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;; +0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;; +0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;; +0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;; +0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;; +0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;; +0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;; +0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;; +0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;; +0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;; +0D3D;MALAYALAM SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +0D44;MALAYALAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; +0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;; +0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; +0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;; +0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; +0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; +0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; +0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; +0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; +0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;; +0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;; +0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;; +0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;; +0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;; +0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;; +0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;; +0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; +0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; +0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; +0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;; +0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;; +0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;; +0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;; +0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;; +0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;; +0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;; +0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;; +0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;; +0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;; +0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;; +0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;; +0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;; +0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;; +0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;; +0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;; +0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;; +0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; +0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; +0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; +0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; +0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; +0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;; +0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; +0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; +0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; +0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;; +0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;; +0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; +0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; +0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;; +0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;; +0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; +0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; +0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;; +0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;; +0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; +0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; +0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; +0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; +0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;; +0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;; +0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;; +0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;; +0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;; +0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;; +0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;; +0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;; +0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;; +0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;; +0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;; +0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;; +0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;; +0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;; +0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;; +0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;; +0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;; +0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;; +0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;; +0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;; +0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;; +0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;; +0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;; +0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;; +0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;; +0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;; +0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;; +0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;; +0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;; +0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;; +0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;; +0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;; +0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;; +0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;; +0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;; +0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;; +0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;; +0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;; +0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;; +0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;; +0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;; +0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;; +0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;; +0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;; +0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;; +0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;; +0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;; +0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;; +0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;; +0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;; +0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;; +0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;; +0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;; +0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;; +0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;; +0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;; +0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;; +0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;; +0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;; +0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;; +0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;; +0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;; +0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;; +0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;; +0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;; +0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;; +0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;; +0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;; +0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;; +0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;; +0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;; +0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;; +0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;; +0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;; +0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;; +0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;; +0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;; +0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;; +0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;; +0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;; +0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;; +0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;; +0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;; +0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;; +0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;; +0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;; +0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;; +0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;; +0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;; +0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;; +0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;; +0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;; +0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;; +0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;; +0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;; +0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;; +0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;; +0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;; +0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;; +0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;; +0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;; +0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;; +0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;; +0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;; +0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;; +0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;; +0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;; +0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;; +0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;; +0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;; +0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;; +0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;; +0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;; +0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;; +0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;; +0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;; +0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;; +0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;; +0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;; +0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;; +0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;; +0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;; +0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;; +0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;; +0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;; +0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;; +0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;; +0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;; +0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;; +0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;; +0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;; +0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;; +0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;; +0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; +0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;; +0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; +0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; +0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;; +0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;; +0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;; +0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;; +0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;; +0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;; +0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;; +0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;; +0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; +0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;; +0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;; +0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;; +0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;; +0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;; +0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; +0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; +0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; +0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;; +0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;; +0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;; +0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;; +0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;; +0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;; +0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;; +0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;; +0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;; +0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;; +0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;; +0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;; +0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;; +0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;; +0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;; +0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;; +0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;; +0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;; +0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;; +0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;; +0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;; +0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;; +0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;; +0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;; +0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;; +0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;; +0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;; +0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;; +0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;; +0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;; +0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;; +0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;; +0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;; +0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;; +0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;; +0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;; +0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;; +0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;; +0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;; +0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;; +0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;; +0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;; +0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;; +0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;; +0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;; +0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;; +0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;; +0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;; +0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;; +0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;; +0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;gug ta yun;;; +0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;gug ta ye;;; +0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;ang kang yun;;; +0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;ang kang ye;;; +0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;; +0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;; +0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;; +0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;; +0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;; +0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;; +0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;; +0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;; +0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;; +0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;; +0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;; +0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;; +0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;; +0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;; +0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;; +0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;; +0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;; +0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;; +0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;; +0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;; +0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;; +0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;; +0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;; +0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;; +0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;; +0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;; +0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;; +0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;; +0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;; +0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;; +0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;; +0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;; +0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;; +0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;; +0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;; +0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;; +0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;; +0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;; +0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;; +0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;; +0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;; +0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;; +0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;; +0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;; +0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;; +0F6C;TIBETAN LETTER RRA;Lo;0;L;;;;;N;;;;; +0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;; +0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;; +0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;; +0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;; +0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;; +0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;; +0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;; +0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;; +0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;; +0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;; +0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;; +0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;; +0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;; +0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;; +0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;; +0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;; +0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;; +0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;; +0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;; +0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;; +0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;; +0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;; +0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;; +0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;; +0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;; +0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;; +0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;; +0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; +0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; +0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; +0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;; +0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; +0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; +0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; +0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; +0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; +0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;; +0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;; +0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;; +0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;; +0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;; +0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; +0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; +0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; +0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;; +0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; +0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; +0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; +0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; +0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;; +0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; +0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; +0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; +0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; +0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;; +0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;; +0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; +0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; +0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;; +0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;; +0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;; +0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; +0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; +0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;; +0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; +0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; +0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; +0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;; +0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;; +0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;; +0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;; +0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;; +0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;; +0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;; +0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;; +0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;; +0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;; +0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;; +0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;; +0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;; +0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;; +0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;; +0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;; +0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;; +0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;; +0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;; +0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;dena deka;;; +0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;; +0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;; +0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;; +0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;nyi tsek;;; +0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;da nying yik go dun ma;;; +0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;da nying yik go kab ma;;; +1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;; +1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;; +1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;; +1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;; +1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;; +1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;; +1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;; +1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;; +1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;; +1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;; +100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;; +100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;; +100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;; +100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;; +100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;; +100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;; +1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;; +1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;; +1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;; +1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;; +1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;; +1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;; +1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;; +1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;; +1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;; +1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;; +101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;; +101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;; +101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;; +101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;; +101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;; +101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;; +1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;; +1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;; +1022;MYANMAR LETTER SHAN A;Lo;0;L;;;;;N;;;;; +1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;; +1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;; +1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;; +1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;; +1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;; +1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;; +1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; +102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; +102B;MYANMAR VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;; +102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;; +1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;; +1035;MYANMAR VOWEL SIGN E ABOVE;Mn;0;NSM;;;;;N;;;;; +1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;; +1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;; +1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;; +103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;; +103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;; +103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; +103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;; +103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;N;;;;; +1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;; +104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;; +104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;; +104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;; +104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;; +104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;; +1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;; +1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;; +1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;; +105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;; +105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;; +105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;; +105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;; +105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;; +1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;; +1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;; +1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;; +1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;; +1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;; +1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;; +1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;; +1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;; +1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;; +1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;; +106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;; +106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;; +106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;; +106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;; +106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;; +106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;; +1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;; +1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;; +1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;; +1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;; +1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;; +1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;; +1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;; +1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;; +1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;; +1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;; +107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;; +107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;; +107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;; +107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;; +107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;; +107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;; +1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;; +1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;; +1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; +1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;; +1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;; +1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;; +1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;; +1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;; +1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;; +1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;; +108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;; +108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;; +108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;; +108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;; +108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;; +108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;; +1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;; +109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;; +10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;2D00; +10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01; +10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02; +10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03; +10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04; +10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05; +10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06; +10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07; +10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08; +10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09; +10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A; +10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B; +10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C; +10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D; +10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E; +10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F; +10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10; +10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11; +10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12; +10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13; +10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14; +10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15; +10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16; +10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17; +10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18; +10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19; +10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A; +10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B; +10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C; +10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D; +10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E; +10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F; +10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20; +10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21; +10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22; +10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23; +10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24; +10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25; +10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;; +10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;; +10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;; +10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;; +10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;; +10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;; +10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;; +10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;; +10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;; +10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;; +10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;; +10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;; +10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;; +10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;; +10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;; +10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;; +10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;; +10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;; +10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;; +10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;; +10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;; +10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;; +10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;; +10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;; +10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;; +10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;; +10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;; +10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;; +10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;; +10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;; +10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;; +10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;; +10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;; +10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;; +10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;; +10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;; +10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; +10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; +10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; +10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; +10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; +10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;; +10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;; +10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; +10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;; +1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; +1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; +1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; +1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; +1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;; +1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;; +1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; +1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; +1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;; +1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;; +110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; +110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;; +110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; +110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;; +110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; +110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; +1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; +1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; +1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; +1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; +1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; +1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; +1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;; +1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; +1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; +1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; +111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; +111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; +111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; +111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; +111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; +111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;; +1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; +1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; +1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;; +1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;; +1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; +1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; +1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;; +112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; +112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;; +112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;; +112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; +1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; +1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; +1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;; +1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;; +1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; +1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; +1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;; +1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; +113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;; +113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; +113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;; +113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; +113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;; +113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; +1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;; +1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; +1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;; +1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;; +1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;; +1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;; +1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; +1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; +1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;; +1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;; +114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;; +114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;; +114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; +114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;; +114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;; +114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; +1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;; +1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; +1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;; +1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;; +1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;; +1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;; +1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; +1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; +1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;; +1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; +115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;; +1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;; +1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; +1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;; +1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;; +1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;; +1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;; +1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;; +1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;; +1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;; +1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;; +116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;; +116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;; +116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;; +116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;; +116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;; +116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;; +1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;; +1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;; +1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;; +1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;; +1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;; +1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;; +1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;; +1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;; +1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;; +1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;; +117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;; +117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;; +117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;; +117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;; +117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;; +117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;; +1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;; +1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;; +1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;; +1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;; +1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;; +1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;; +1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;; +1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;; +1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;; +1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;; +118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;; +118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;; +118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;; +118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;; +118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;; +118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;; +1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;; +1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;; +1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;; +1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;; +1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;; +1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;; +1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;; +1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;; +1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;; +1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;; +119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;; +119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;; +119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;; +119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;; +119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;; +119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;; +11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;; +11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;; +11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;; +11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; +11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; +11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;; +11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; +11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;; +11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;; +11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; +11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;; +11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;; +11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;; +11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;; +11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;; +11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;; +11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;; +11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;; +11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; +11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; +11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;; +11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;; +11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; +11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;; +11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; +11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; +11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; +11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; +11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; +11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; +11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;; +11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; +11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; +11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; +11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;; +11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;; +11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; +11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; +11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; +11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; +11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; +11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;; +11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; +11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; +11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;; +11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; +11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; +11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;; +11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;; +11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; +11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;; +11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; +11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;; +11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; +11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; +11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;; +11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;; +11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;; +11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; +11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; +11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;; +11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; +11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; +11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; +11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; +11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; +11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; +11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; +11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;; +11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; +11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; +11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; +11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;; +11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; +11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;; +11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; +11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; +11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; +11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;; +11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;; +11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;; +11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;; +11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; +1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;; +1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;; +1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;; +1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;; +1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;; +1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;; +1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;; +1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;; +1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;; +1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;; +120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;; +120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;; +120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;; +120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;; +120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;; +120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;; +1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;; +1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;; +1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;; +1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;; +1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;; +1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;; +1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;; +1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;; +1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;; +1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;; +121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;; +121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;; +121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;; +121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;; +121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;; +121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;; +1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;; +1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;; +1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;; +1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;; +1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;; +1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;; +1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;; +1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;; +1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;; +1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;; +122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;; +122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;; +122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;; +122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;; +122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;; +122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;; +1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;; +1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;; +1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;; +1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;; +1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;; +1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;; +1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;; +1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;; +1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;; +1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;; +123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;; +123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;; +123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; +123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;; +123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;; +123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;; +1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;; +1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;; +1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;; +1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;; +1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;; +1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;; +1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;; +1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;; +1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;; +124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;; +124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;; +124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;; +124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;; +1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;; +1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;; +1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;; +1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;; +1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;; +1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;; +1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;; +1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;; +125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;; +125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;; +125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;; +125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;; +1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;; +1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;; +1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;; +1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;; +1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;; +1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;; +1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;; +1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;; +1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;; +1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;; +126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;; +126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;; +126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;; +126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;; +126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;; +126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;; +1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;; +1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;; +1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;; +1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;; +1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;; +1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;; +1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;; +1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;; +1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;; +1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;; +127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;; +127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;; +127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;; +127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;; +127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;; +127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;; +1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;; +1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;; +1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;; +1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;; +1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;; +1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;; +1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;; +1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;; +1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;; +128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;; +128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;; +128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;; +128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;; +1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;; +1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;; +1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;; +1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;; +1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;; +1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;; +1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;; +1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;; +1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;; +1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;; +129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; +129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;; +129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;; +12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;; +12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;; +12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;; +12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;; +12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;; +12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;; +12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;; +12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;; +12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;; +12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;; +12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;; +12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;; +12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;; +12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;; +12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;; +12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;; +12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;; +12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;; +12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;; +12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;; +12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;; +12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;; +12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;; +12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;; +12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;; +12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;; +12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;; +12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;; +12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;; +12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;; +12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;; +12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;; +12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;; +12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;; +12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;; +12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;; +12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;; +12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;; +12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;; +12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;; +12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;; +12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;; +12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;; +12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;; +12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;; +12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;; +12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;; +12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;; +12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;; +12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;; +12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;; +12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;; +12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; +12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;; +12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;; +12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;; +12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; +12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; +12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; +12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;; +12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; +12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; +12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; +12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;; +12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;; +12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;; +12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;; +12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;; +12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;; +12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;; +12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;; +12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;; +12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;; +12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;; +12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;; +12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;; +12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;; +12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;; +12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;; +12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;; +12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;; +12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;; +12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;; +12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;; +12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;; +12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;; +12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;; +12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; +1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;; +1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;; +1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;; +1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;; +1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;; +1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;; +1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;; +1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;; +1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;; +1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;; +130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;; +130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;; +130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;; +130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;; +130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;; +130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;; +1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;; +1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;; +1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;; +1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;; +1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;; +1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;; +1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;; +131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;; +131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;; +131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;; +131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;; +131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;; +131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;; +1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;; +1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;; +1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;; +1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;; +1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;; +1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;; +1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;; +1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;; +1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;; +1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;; +132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;; +132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;; +132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;; +132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;; +132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;; +132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;; +1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;; +1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;; +1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;; +1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;; +1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;; +1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;; +1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;; +1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;; +1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;; +1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;; +133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;; +133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;; +133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;; +133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;; +133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;; +133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;; +1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;; +1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;; +1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;; +1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;; +1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;; +1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;; +1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;; +1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;; +1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;; +1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;; +134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;; +134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;; +134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;; +134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;; +134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;; +134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;; +1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;; +1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;; +1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;; +1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;; +1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;; +1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;; +1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;; +1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;; +1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;; +1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;; +135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;; +135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; +1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;; +1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;; +1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;; +1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;; +1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;; +1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;; +1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; +1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; +1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; +1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;; +136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;; +136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;; +136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;; +136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;; +136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;; +136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;; +1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;; +1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;; +1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; +1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; +1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; +1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;; +1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;; +1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;; +1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;; +1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;; +137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;; +137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;; +137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; +1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;; +1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;; +1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;; +1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;; +1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;; +1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;; +1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;; +1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;; +1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;; +1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;; +138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;; +138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;; +138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;; +138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;; +138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;; +138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;; +1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;; +1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;; +1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;; +1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;; +1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;; +1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;; +1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;; +1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; +1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; +1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;; +13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; +13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; +13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; +13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; +13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; +13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; +13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; +13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; +13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; +13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; +13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; +13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; +13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; +13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; +13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; +13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; +13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; +13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; +13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; +13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; +13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; +13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; +13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; +13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; +13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; +13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; +13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; +13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; +13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; +13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; +13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; +13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; +13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; +13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; +13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; +13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; +13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; +13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; +13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; +13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; +13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; +13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; +13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; +13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; +13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; +13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; +13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; +13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; +13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; +13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; +13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; +13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; +13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; +13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; +13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; +13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; +13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; +13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; +13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; +13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; +13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; +13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; +13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; +13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; +13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; +13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; +13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; +13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; +13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; +13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; +13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; +13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; +13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; +13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; +13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; +13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; +13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; +13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; +13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; +13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; +13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; +13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; +13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; +13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; +13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; +1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; +1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; +1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;; +1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;; +1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;; +1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;; +1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;; +1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;; +1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;; +140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;; +140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;; +140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;; +140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;; +140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;; +140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;; +1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;; +1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;; +1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;; +1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;; +1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;; +1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;; +1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;; +1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;; +1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;; +1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;; +141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;; +141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;; +141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;; +141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;; +141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;; +141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;; +1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;; +1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;; +1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;; +1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;; +1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;; +1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;; +1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;; +1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;; +1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;; +1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;; +142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;; +142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;; +142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;; +142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;; +142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;; +142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;; +1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;; +1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;; +1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;; +1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;; +1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;; +1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;; +1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;; +1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;; +1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;; +1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;; +143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;; +143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;; +143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;; +143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;; +143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;; +143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;; +1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;; +1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;; +1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;; +1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;; +1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;; +1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;; +1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;; +1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;; +1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;; +1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;; +144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;; +144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;; +144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;; +144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;; +144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;; +144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;; +1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;; +1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;; +1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;; +1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;; +1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;; +1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;; +1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;; +1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;; +1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;; +1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;; +145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;; +145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;; +145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;; +145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;; +145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;; +145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;; +1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;; +1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;; +1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;; +1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;; +1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;; +1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;; +1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;; +1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;; +1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;; +1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;; +146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;; +146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;; +146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;; +146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;; +146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;; +146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;; +1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;; +1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;; +1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;; +1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;; +1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;; +1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;; +1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;; +1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;; +1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;; +1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;; +147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;; +147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;; +147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;; +147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;; +147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;; +147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;; +1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;; +1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;; +1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;; +1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;; +1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;; +1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;; +1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;; +1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;; +1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;; +1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;; +148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;; +148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;; +148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;; +148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;; +148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;; +148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;; +1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;; +1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;; +1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;; +1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;; +1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;; +1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;; +1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;; +1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;; +1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;; +1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;; +149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;; +149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;; +149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;; +149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;; +149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;; +149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;; +14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;; +14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;; +14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;; +14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;; +14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;; +14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;; +14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;; +14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;; +14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;; +14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;; +14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;; +14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;; +14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;; +14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;; +14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;; +14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;; +14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;; +14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;; +14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;; +14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;; +14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;; +14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;; +14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;; +14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;; +14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;; +14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;; +14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;; +14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;; +14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;; +14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;; +14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;; +14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;; +14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;; +14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;; +14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;; +14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;; +14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;; +14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;; +14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;; +14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;; +14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;; +14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;; +14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;; +14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;; +14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;; +14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;; +14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;; +14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;; +14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;; +14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;; +14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;; +14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;; +14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;; +14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;; +14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;; +14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;; +14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;; +14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;; +14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;; +14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;; +14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;; +14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;; +14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;; +14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;; +14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;; +14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;; +14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;; +14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;; +14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;; +14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;; +14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;; +14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;; +14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;; +14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;; +14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;; +14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;; +14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;; +14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;; +14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;; +14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;; +14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;; +14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;; +14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;; +14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;; +14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;; +14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;; +14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;; +14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;; +14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;; +14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;; +14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;; +14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;; +14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;; +14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;; +14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;; +14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;; +1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;; +1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;; +1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;; +1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;; +1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;; +1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;; +1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;; +1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;; +1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;; +1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;; +150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;; +150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;; +150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;; +150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;; +150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;; +150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;; +1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;; +1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;; +1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;; +1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;; +1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;; +1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;; +1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;; +1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;; +1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;; +1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;; +151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;; +151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;; +151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;; +151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;; +151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;; +151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;; +1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;; +1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;; +1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;; +1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;; +1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;; +1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;; +1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;; +1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;; +1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;; +1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;; +152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;; +152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;; +152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;; +152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;; +152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;; +152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;; +1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;; +1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;; +1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;; +1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;; +1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;; +1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;; +1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;; +1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;; +1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;; +1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;; +153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;; +153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;; +153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;; +153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;; +153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;; +153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;; +1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;; +1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;; +1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;; +1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;; +1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;; +1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;; +1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;; +1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;; +1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;; +1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;; +154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;; +154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;; +154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;; +154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;; +154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;; +154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;; +1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;; +1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;; +1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;; +1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;; +1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;; +1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;; +1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;; +1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;; +1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;; +1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;; +155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;; +155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;; +155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;; +155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;; +155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;; +155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;; +1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;; +1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;; +1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;; +1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;; +1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;; +1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;; +1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;; +1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;; +1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;; +1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;; +156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;; +156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;; +156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;; +156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;; +156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;; +156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;; +1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;; +1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;; +1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;; +1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;; +1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;; +1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;; +1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;; +1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;; +1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;; +1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;; +157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;; +157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;; +157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;; +157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;; +157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;; +157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;; +1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;; +1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;; +1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;; +1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;; +1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;; +1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;; +1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;; +1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;; +1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;; +1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;; +158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;; +158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;; +158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;; +158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;; +158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;; +158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;; +1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;; +1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;; +1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;; +1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;; +1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;; +1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;; +1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;; +1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;; +1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;; +1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;; +159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;; +159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;; +159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;; +159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;; +159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;; +159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;; +15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;; +15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;; +15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;; +15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;; +15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;; +15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;; +15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;; +15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;; +15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;; +15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;; +15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;; +15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;; +15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;; +15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;; +15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;; +15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;; +15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;; +15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;; +15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;; +15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;; +15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;; +15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;; +15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;; +15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;; +15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;; +15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;; +15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;; +15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;; +15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;; +15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;; +15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;; +15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;; +15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;; +15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;; +15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;; +15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;; +15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;; +15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;; +15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;; +15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;; +15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;; +15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;; +15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;; +15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;; +15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;; +15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;; +15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;; +15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;; +15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;; +15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;; +15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;; +15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;; +15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;; +15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;; +15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;; +15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;; +15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;; +15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;; +15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;; +15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;; +15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;; +15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;; +15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;; +15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;; +15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;; +15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;; +15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;; +15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;; +15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;; +15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;; +15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;; +15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;; +15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;; +15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;; +15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;; +15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;; +15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;; +15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;; +15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;; +15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;; +15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;; +15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;; +15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;; +15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;; +15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;; +15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;; +15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;; +15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;; +15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;; +15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;; +15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;; +15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;; +15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;; +15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;; +15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;; +15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;; +1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;; +1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;; +1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;; +1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;; +1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;; +1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;; +1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;; +1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;; +1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;; +1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;; +160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;; +160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;; +160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;; +160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;; +160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;; +160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;; +1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;; +1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;; +1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;; +1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;; +1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;; +1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;; +1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;; +1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;; +1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;; +1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;; +161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;; +161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;; +161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;; +161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;; +161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;; +161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;; +1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;; +1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;; +1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;; +1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;; +1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;; +1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;; +1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;; +1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;; +1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;; +1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;; +162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;; +162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;; +162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;; +162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;; +162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;; +162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;; +1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;; +1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;; +1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;; +1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;; +1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;; +1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;; +1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;; +1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;; +1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;; +1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;; +163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;; +163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;; +163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;; +163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;; +163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;; +163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;; +1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;; +1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;; +1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;; +1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;; +1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;; +1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;; +1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;; +1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;; +1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;; +1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;; +164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;; +164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;; +164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;; +164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;; +164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;; +164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;; +1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;; +1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;; +1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;; +1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;; +1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;; +1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;; +1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;; +1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;; +1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;; +1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;; +165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;; +165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;; +165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;; +165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;; +165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;; +165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;; +1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;; +1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;; +1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;; +1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;; +1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;; +1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;; +1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;; +1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;; +1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;; +1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;; +166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;; +166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;; +166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;; +166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;; +166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;; +166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;; +1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;; +1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;; +1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;; +1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;; +1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;; +1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;; +1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;; +1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; +1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;; +1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;; +1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;; +1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;; +1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;; +1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;; +1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;; +1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;; +1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;; +168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;; +168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;; +168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;; +168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;; +168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;; +168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;; +1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;; +1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;; +1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;; +1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;; +1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;; +1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;; +1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;; +1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;; +1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;; +1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;; +169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;; +169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;; +169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;; +16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;; +16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;; +16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;; +16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;; +16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;; +16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;; +16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;; +16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;; +16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;; +16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;; +16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;; +16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;; +16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;; +16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;; +16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;; +16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;; +16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;; +16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;; +16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;; +16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;; +16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;; +16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;; +16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;; +16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;; +16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;; +16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;; +16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;; +16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;; +16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;; +16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;; +16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;; +16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;; +16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;; +16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;; +16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;; +16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;; +16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;; +16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;; +16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;; +16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;; +16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;; +16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;; +16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;; +16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;; +16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;; +16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;; +16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;; +16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;; +16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;; +16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;; +16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;; +16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;; +16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;; +16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;; +16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;; +16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;; +16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;; +16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;; +16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;; +16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;; +16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;; +16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;; +16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;; +16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;; +16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;; +16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;; +16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;; +16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;; +16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;; +16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;; +16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;; +16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;; +16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;; +16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;; +16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;; +16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; +16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;; +16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; +16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;; +16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;; +16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;; +1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; +1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; +1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; +1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; +1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; +1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; +1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; +1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; +1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; +1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; +170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; +170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; +170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; +170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; +170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; +1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; +1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; +1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; +1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; +1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; +1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; +1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; +1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; +1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; +1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; +1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; +1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; +172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; +172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; +172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; +172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; +172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; +172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; +1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; +1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; +1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; +1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; +1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; +1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; +1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; +1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; +1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; +1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; +1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; +1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; +1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; +1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; +1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; +174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; +174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; +174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; +174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; +174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; +174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; +1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; +1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; +1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; +1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; +1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; +1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; +1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; +1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; +1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; +1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; +1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; +1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; +176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; +176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; +176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; +176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; +176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; +1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; +1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; +1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; +1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; +1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;; +1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;; +1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;; +1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;; +1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;; +1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;; +1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;; +178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;; +178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;; +178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;; +178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;; +178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;; +178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;; +1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;; +1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;; +1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;; +1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;; +1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;; +1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;; +1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;; +1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;; +1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;; +1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;; +179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;; +179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;; +179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;; +179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;; +179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;; +179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;; +17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;; +17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;; +17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;; +17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;; +17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;; +17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;; +17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;; +17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;; +17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;; +17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;; +17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;; +17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;; +17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;; +17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;; +17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;; +17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;; +17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;; +17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;; +17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;; +17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;; +17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;; +17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;; +17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; +17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; +17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;; +17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;; +17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;; +17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; +17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; +17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;; +17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;; +17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;; +17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;; +17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;; +17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;; +17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;; +17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;; +17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;; +17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;; +17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;; +17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;; +17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;; +17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;; +17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; +17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; +17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; +17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; +17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;; +17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; +17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; +17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; +17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; +17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;; +17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;; +17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;; +17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;; +17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;; +17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;; +17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;; +17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;; +17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;; +17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;; +17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;; +1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;; +1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;; +1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;; +1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;; +1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;; +1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;; +1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; +1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;; +1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; +1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; +180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; +180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; +180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; +180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; +180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;; +1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;; +1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;; +1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;; +1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;; +1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;; +1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;; +1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;; +1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;; +1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;; +1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;; +182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;; +182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;; +182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;; +182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;; +182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;; +182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;; +1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;; +1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;; +1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;; +1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;; +1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;; +1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;; +1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;; +1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;; +1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;; +1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;; +183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;; +183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;; +183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;; +183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;; +183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;; +183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;; +1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;; +1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;; +1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;; +1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;; +1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;; +1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;; +1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;; +1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;; +1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;; +1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;; +184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;; +184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;; +184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;; +184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;; +184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;; +184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;; +1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;; +1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;; +1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;; +1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;; +1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;; +1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;; +1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;; +1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;; +1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;; +1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;; +185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;; +185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;; +185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;; +185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;; +185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;; +185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;; +1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;; +1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;; +1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;; +1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;; +1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;; +1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;; +1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;; +1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;; +1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;; +1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;; +186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;; +186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;; +186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;; +186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;; +186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;; +186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;; +1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;; +1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;; +1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;; +1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;; +1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;; +1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;; +1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;; +1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;; +1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;; +1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;; +1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; +1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; +1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; +1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; +1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; +1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; +1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; +1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; +188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;; +188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;; +188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;; +188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;; +188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;; +188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;; +1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;; +1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;; +1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;; +1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;; +1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;; +1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;; +1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;; +1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;; +1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;; +189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;; +189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;; +189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;; +189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;; +189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;; +18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;; +18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;; +18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;; +18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;; +18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;; +18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;; +18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;; +18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;; +18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;; +18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;; +18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;; +1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;; +1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;; +1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;; +1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;; +1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;; +1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;; +1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;; +1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;; +1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;; +1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;; +190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;; +190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;; +190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;; +190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;; +190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;; +190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;; +1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;; +1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;; +1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;; +1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;; +1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;; +1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;; +1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;; +1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;; +1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;; +1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;; +191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;; +191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;; +191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;; +1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;; +1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +1929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; +192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; +192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;; +1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;; +1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;; +1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;; +1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;; +1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;; +1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;; +1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;; +1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;; +1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;; +1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;; +193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;; +193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;; +1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;; +1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;; +1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;; +1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;; +1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;; +1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;; +1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;; +1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;; +1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;; +1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;; +1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;; +1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;; +195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;; +195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;; +195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;; +195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;; +195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;; +195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;; +1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;; +1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;; +1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;; +1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;; +1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;; +1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;; +1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;; +1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;; +1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;; +1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;; +196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;; +196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;; +196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;; +196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;; +1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;; +1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;; +1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;; +1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;; +1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;; +1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;; +1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;; +1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;; +1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;; +1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;; +1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;; +1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;; +1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;; +1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;; +1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;; +198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;; +198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;; +198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;; +198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;; +198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;; +198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;; +1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;; +1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;; +1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;; +1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;; +1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;; +1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; +1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;; +1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;; +1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;; +1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;; +199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;; +199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;; +199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;; +199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;; +199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;; +199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;; +19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;; +19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;; +19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;; +19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;; +19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;; +19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;; +19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;; +19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;; +19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;; +19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; +19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; +19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; +19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; +19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; +19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; +19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; +19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; +19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; +19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; +19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; +19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; +19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; +19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; +19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; +19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;; +19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; +19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; +19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; +19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; +19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; +19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;; +19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;; +19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;; +19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;; +19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;; +19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;; +19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;; +19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;; +19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;; +19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;; +19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;; +19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;; +19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;; +19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;; +19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;; +19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;; +19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;; +19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;; +19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;; +19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;; +19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;; +19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;; +19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;; +19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;; +19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;; +19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;; +19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;; +19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;; +19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;; +19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;; +19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;; +19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;; +19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;; +19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;; +1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;; +1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;; +1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;; +1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;; +1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;; +1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;; +1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;; +1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;; +1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;; +1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;; +1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;; +1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;; +1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;; +1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;; +1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;; +1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;; +1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;; +1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;; +1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;; +1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;; +1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;; +1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;; +1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;; +1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; +1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;; +1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; +1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;; +1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;; +1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;ardhacandra;;; +1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;candrabindu;;; +1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;anusvara;;; +1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;repha;;; +1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;visarga;;; +1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;a;;; +1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;aa;;; +1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;i;;; +1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;ii;;; +1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;u;;; +1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;uu;;; +1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;vocalic r;;; +1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;vocalic rr;;; +1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;vocalic l;;; +1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;vocalic ll;;; +1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;e;;; +1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;ai;;; +1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;o;;; +1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;au;;; +1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;; +1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;kha;;; +1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;; +1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;gha;;; +1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;; +1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;; +1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;cha;;; +1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;; +1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;jha;;; +1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;; +1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;tta;;; +1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ttha;;; +1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;dda;;; +1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ddha;;; +1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;nna;;; +1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;; +1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;tha;;; +1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;; +1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;dha;;; +1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;; +1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;; +1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;pha;;; +1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;; +1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;bha;;; +1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;; +1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;; +1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;; +1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;; +1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;; +1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;sha;;; +1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;ssa;;; +1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;; +1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;; +1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;nukta;;; +1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;aa;;; +1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;i;;; +1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;ii;;; +1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;u;;; +1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;uu;;; +1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;vocalic r;;; +1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;vocalic rr;;; +1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;vocalic l;;; +1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;vocalic ll;;; +1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;e;;; +1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;ai;;; +1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;o;;; +1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;au;;; +1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;ae;;; +1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;oe;;; +1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;virama;;; +1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;; +1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;; +1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;; +1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;; +1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;; +1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;; +1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;; +1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1B5A;BALINESE PANTI;Po;0;L;;;;;N;;section;;; +1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;honorific section;;; +1B5C;BALINESE WINDU;Po;0;L;;;;;N;;punctuation ring;;; +1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;colon;;; +1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;danda;;; +1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;double danda;;; +1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;line-breaking hyphen;;; +1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;; +1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;; +1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;; +1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;; +1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;; +1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;; +1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;; +1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;; +1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;; +1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;; +1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;; +1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;; +1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;; +1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;; +1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;; +1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; +1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; +1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;; +1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;; +1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;; +1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;; +1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;; +1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;; +1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;; +1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;; +1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;; +1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;; +1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;; +1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;; +1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;; +1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;; +1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;; +1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;; +1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;; +1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;; +1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;; +1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;; +1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;; +1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;; +1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;; +1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;; +1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;; +1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;; +1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;; +1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;; +1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;; +1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;; +1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;; +1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;; +1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;; +1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;; +1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;; +1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;; +1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;; +1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;; +1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;; +1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;; +1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;; +1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;; +1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;; +1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;; +1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;; +1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;; +1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;; +1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;; +1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;; +1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;; +1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;; +1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;; +1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;; +1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;; +1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;; +1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;; +1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;; +1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;; +1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;; +1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;; +1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;; +1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;; +1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;; +1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;; +1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;; +1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;; +1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;; +1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;; +1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;; +1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;; +1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;; +1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;; +1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;; +1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;; +1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;; +1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;; +1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;; +1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;; +1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;; +1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;; +1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;; +1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;; +1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;; +1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;; +1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;; +1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;; +1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;; +1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;; +1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;; +1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;; +1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;; +1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;; +1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; +1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; +1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;; +1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;; +1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;; +1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; +1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;; +1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; +1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;; +1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;; +1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;; +1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;; +1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;; +1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;; +1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;; +1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;; +1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;; +1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;; +1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;; +1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;; +1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;; +1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;; +1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;; +1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;; +1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;; +1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;; +1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;; +1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;; +1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;; +1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;; +1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;; +1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;; +1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;; +1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;; +1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;; +1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;; +1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;; +1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;; +1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;; +1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;; +1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;; +1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;; +1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;; +1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;; +1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;; +1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;; +1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;; +1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;; +1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;; +1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;; +1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;; +1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; +1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; +1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;; +1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;; +1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;; +1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;; +1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;; +1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;; +1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;; +1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;; +1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;; +1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;; +1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;; +1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;; +1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;; +1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;; +1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;; +1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;; +1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;; +1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;; +1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;; +1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;; +1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;; +1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;; +1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;; +1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;; +1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;; +1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;; +1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;; +1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;; +1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;; +1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;; +1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;; +1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;; +1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;; +1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;; +1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;; +1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;; +1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;; +1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;; +1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;; +1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;; +1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;; +1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;; +1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;; +1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;; +1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;; +1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;; +1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;; +1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;; +1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;; +1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;; +1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;; +1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;; +1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;; +1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;; +1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;; +1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;; +1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;; +1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;; +1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;; +1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;; +1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;; +1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;; +1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;; +1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;; +1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;; +1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;; +1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;; +1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;; +1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;; +1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;; +1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;; +1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;; +1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;; +1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;; +1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;; +1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;; +1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;; +1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;; +1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;; +1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;; +1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;; +1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;; +1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;; +1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;; +1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;; +1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;; +1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;; +1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;; +1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;; +1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;; +1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;; +1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;; +1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;; +1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;; +1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;; +1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;; +1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;; +1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;; +1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;; +1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;; +1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;; +1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;; +1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;; +1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;; +1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;; +1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;; +1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;; +1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;; +1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;; +1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;; +1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;; +1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;; +1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;; +1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; +1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;; +1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;; +1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D +1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;; +1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;; +1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;; +1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63 +1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;; +1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;; +1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;; +1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;; +1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;; +1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;; +1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;; +1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;; +1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;; +1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;; +1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;; +1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;; +1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;; +1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;; +1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;; +1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;; +1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;; +1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;; +1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;; +1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;; +1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;; +1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;; +1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;; +1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;; +1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;; +1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;; +1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;; +1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;; +1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;; +1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;; +1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;; +1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;; +1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;; +1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;; +1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;; +1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;; +1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;; +1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;; +1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;; +1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;; +1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; +1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; +1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;; +1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;; +1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;; +1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;; +1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;; +1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;; +1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;; +1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;; +1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;; +1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;; +1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;; +1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;; +1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;; +1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;; +1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;; +1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;; +1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;; +1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;; +1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;; +1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;; +1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;; +1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;; +1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;; +1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;; +1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;; +1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;; +1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;; +1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;; +1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;; +1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;; +1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;; +1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;; +1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;; +1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;; +1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;; +1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;; +1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;; +1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; +1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; +1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01; +1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00 +1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03; +1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02 +1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05; +1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04 +1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07; +1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06 +1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09; +1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08 +1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B; +1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A +1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D; +1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C +1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F; +1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E +1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11; +1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10 +1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13; +1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12 +1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15; +1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14 +1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17; +1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16 +1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19; +1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18 +1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B; +1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A +1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D; +1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C +1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F; +1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E +1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21; +1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20 +1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23; +1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22 +1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25; +1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24 +1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27; +1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26 +1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29; +1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28 +1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B; +1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A +1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D; +1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C +1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F; +1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E +1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31; +1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30 +1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33; +1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32 +1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35; +1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34 +1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37; +1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36 +1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39; +1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38 +1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B; +1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A +1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D; +1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C +1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F; +1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E +1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41; +1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40 +1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43; +1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42 +1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45; +1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44 +1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47; +1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46 +1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49; +1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48 +1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B; +1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A +1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D; +1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C +1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F; +1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E +1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51; +1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50 +1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53; +1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52 +1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55; +1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54 +1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57; +1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56 +1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59; +1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58 +1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B; +1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A +1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D; +1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C +1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F; +1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E +1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61; +1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60 +1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63; +1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62 +1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65; +1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64 +1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67; +1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66 +1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69; +1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68 +1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B; +1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A +1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D; +1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C +1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F; +1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E +1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71; +1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70 +1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73; +1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72 +1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75; +1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74 +1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77; +1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76 +1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79; +1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78 +1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B; +1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A +1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D; +1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C +1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F; +1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E +1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81; +1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80 +1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83; +1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82 +1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85; +1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84 +1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87; +1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86 +1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89; +1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88 +1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B; +1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A +1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D; +1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C +1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F; +1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E +1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91; +1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90 +1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93; +1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92 +1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95; +1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94 +1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;; +1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;; +1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;; +1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;; +1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;; +1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60 +1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;; +1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;; +1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF; +1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;; +1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1; +1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0 +1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3; +1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2 +1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5; +1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4 +1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7; +1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6 +1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9; +1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8 +1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB; +1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA +1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD; +1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC +1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF; +1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE +1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1; +1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0 +1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3; +1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2 +1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5; +1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4 +1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7; +1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6 +1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9; +1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8 +1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB; +1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA +1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD; +1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC +1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF; +1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE +1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1; +1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0 +1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3; +1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2 +1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5; +1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4 +1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7; +1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6 +1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9; +1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8 +1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB; +1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA +1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD; +1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC +1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF; +1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE +1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1; +1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0 +1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3; +1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2 +1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5; +1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4 +1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7; +1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6 +1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9; +1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8 +1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB; +1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA +1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD; +1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC +1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF; +1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE +1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1; +1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0 +1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3; +1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2 +1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5; +1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4 +1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7; +1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6 +1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9; +1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8 +1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB; +1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA +1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED; +1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC +1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF; +1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE +1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1; +1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0 +1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3; +1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2 +1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5; +1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4 +1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7; +1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6 +1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9; +1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8 +1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB; +1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA +1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD; +1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC +1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF; +1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE +1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08 +1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09 +1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A +1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B +1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C +1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D +1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E +1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F +1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00; +1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01; +1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02; +1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03; +1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04; +1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05; +1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06; +1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07; +1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18 +1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19 +1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A +1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B +1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C +1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D +1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10; +1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11; +1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12; +1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13; +1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14; +1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15; +1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28 +1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29 +1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A +1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B +1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C +1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D +1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E +1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F +1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20; +1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21; +1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22; +1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23; +1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24; +1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25; +1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26; +1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27; +1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38 +1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39 +1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A +1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B +1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C +1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D +1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E +1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F +1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30; +1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31; +1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32; +1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33; +1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34; +1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35; +1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36; +1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37; +1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48 +1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49 +1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A +1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B +1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C +1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D +1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40; +1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41; +1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42; +1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43; +1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44; +1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45; +1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;; +1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59 +1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;; +1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B +1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;; +1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D +1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;; +1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F +1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51; +1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53; +1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55; +1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57; +1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68 +1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69 +1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A +1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B +1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C +1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D +1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E +1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F +1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60; +1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61; +1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62; +1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63; +1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64; +1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65; +1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66; +1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67; +1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA +1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB +1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8 +1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9 +1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA +1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB +1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA +1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB +1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8 +1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9 +1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA +1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB +1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA +1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB +1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88 +1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89 +1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A +1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B +1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C +1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D +1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E +1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F +1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80; +1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81; +1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82; +1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83; +1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84; +1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85; +1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86; +1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87; +1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98 +1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99 +1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A +1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B +1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C +1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D +1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E +1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F +1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90; +1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91; +1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92; +1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93; +1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94; +1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95; +1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96; +1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97; +1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8 +1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9 +1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA +1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB +1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC +1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD +1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE +1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF +1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0; +1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1; +1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2; +1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3; +1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4; +1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5; +1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6; +1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7; +1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8 +1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9 +1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;; +1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC +1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;; +1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;; +1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;; +1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0; +1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1; +1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70; +1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71; +1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3; +1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;; +1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399 +1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;; +1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;; +1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;; +1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;; +1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC +1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;; +1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;; +1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;; +1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72; +1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73; +1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74; +1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75; +1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3; +1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;; +1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;; +1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;; +1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8 +1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9 +1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;; +1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;; +1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;; +1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;; +1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0; +1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1; +1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76; +1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77; +1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;; +1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;; +1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;; +1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8 +1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9 +1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;; +1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;; +1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;; +1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC +1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;; +1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;; +1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0; +1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1; +1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A; +1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B; +1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5; +1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;; +1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;; +1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;; +1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;; +1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC +1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;; +1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;; +1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;; +1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78; +1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79; +1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C; +1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D; +1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3; +1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;; +1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;; +2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; +2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; +2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;; +2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;; +200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; +200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; +200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; +200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;; +2010;HYPHEN;Pd;0;ON;;;;;N;;;;; +2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;; +2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;; +2013;EN DASH;Pd;0;ON;;;;;N;;;;; +2014;EM DASH;Pd;0;ON;;;;;N;;;;; +2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;; +2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;; +2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;; +2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;; +2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;; +201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;; +201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;; +201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;; +201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;; +201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;; +201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;; +2020;DAGGER;Po;0;ON;;;;;N;;;;; +2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;; +2022;BULLET;Po;0;ON;;;;;N;;;;; +2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;; +2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;; +2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;; +2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;; +2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;; +2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; +2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; +202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;; +202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;; +202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;; +202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;; +202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;; +202F;NARROW NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;; +2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;; +2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; +2032;PRIME;Po;0;ET;;;;;N;;;;; +2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;; +2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;; +2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;; +2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;; +2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;; +2038;CARET;Po;0;ON;;;;;N;;;;; +2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;; +203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;; +203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;; +203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;; +203D;INTERROBANG;Po;0;ON;;;;;N;;;;; +203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;; +203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;; +2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;; +2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; +2042;ASTERISM;Po;0;ON;;;;;N;;;;; +2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; +2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;; +2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; +2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; +2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;; +2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;; +2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;; +204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; +204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; +204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; +204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; +204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; +204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; +2050;CLOSE UP;Po;0;ON;;;;;N;;;;; +2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; +2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; +2053;SWUNG DASH;Po;0;ON;;;;;N;;;;; +2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;; +2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;; +2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;; +2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;; +205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;; +205D;TRICOLON;Po;0;ON;;;;;N;;;;; +205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;; +205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; +2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; +2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; +2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; +2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; +2064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;; +206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; +206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; +206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; +206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; +206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; +206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; +2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; +2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;; +2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; +2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; +2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;; +2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; +2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; +2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;; +207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;; +207B;SUPERSCRIPT MINUS;Sm;0;ES;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;; +207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;; +207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;; +207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;; +207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;; +2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;; +2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;; +2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;; +2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;; +2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;; +2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;; +2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;; +2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; +2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; +2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;; +208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;; +208B;SUBSCRIPT MINUS;Sm;0;ES;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;; +208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;; +208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;; +208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;; +2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;; +2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;; +2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;; +2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;; +2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;; +20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; +20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;; +20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;; +20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;; +20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;; +20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;; +20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;; +20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;; +20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;; +20A9;WON SIGN;Sc;0;ET;;;;;N;;;;; +20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;; +20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;; +20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;; +20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; +20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; +20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; +20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; +20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; +20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;; +20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;; +20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;; +20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;; +20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; +20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; +20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; +20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;; +20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;; +20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;; +20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;; +20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;; +20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;; +20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;; +20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;; +20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;; +20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;; +20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;; +20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;; +20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;; +20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;; +20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; +20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; +20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; +20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; +20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; +20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; +20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; +20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; +20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; +20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; +20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; +20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; +20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; +20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; +20F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;; +2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;; +2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;; +2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;; +2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;; +2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;; +2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;; +2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;; +2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;; +2108;SCRUPLE;So;0;ON;;;;;N;;;;; +2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;; +210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;; +210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;; +210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;; +210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;; +210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;; +2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;; +2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;; +2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;; +2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;; +2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;; +2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;; +2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;; +2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;; +2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;; +211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;; +211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;; +211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;; +211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;; +211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;; +211F;RESPONSE;So;0;ON;;;;;N;;;;; +2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;; +2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;; +2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;; +2123;VERSICLE;So;0;ON;;;;;N;;;;; +2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;; +2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;; +2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9; +2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;; +2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;; +2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;; +212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B; +212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5; +212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;; +212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;; +212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;; +212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;; +2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;; +2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E; +2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;; +2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;; +2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;; +2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;; +2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; +2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;; +213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; +213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;; +213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;; +2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; +2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; +2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; +2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; +2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; +214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; +214C;PER SIGN;So;0;ON;;;;;N;;;;; +214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;; +214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132 +214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;; +2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; +2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; +2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; +2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;; +2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;; +2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;; +2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;; +215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;; +215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;; +215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;; +215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;; +215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;; +215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;; +2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170; +2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171; +2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172; +2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173; +2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174; +2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175; +2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176; +2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177; +2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178; +2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179; +216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A; +216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B; +216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C; +216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D; +216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E; +216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F; +2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160 +2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161 +2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162 +2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163 +2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164 +2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165 +2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166 +2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167 +2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168 +2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169 +217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A +217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B +217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C +217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D +217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E +217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F +2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;; +2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;; +2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;; +2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184; +2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183 +2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;; +2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;; +2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;; +2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;; +2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; +2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; +2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; +2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;; +2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; +2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;; +2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;; +2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;; +2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;; +2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;; +219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;; +219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;; +219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;; +219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;; +219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;; +219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;; +21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;; +21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;; +21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;; +21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;; +21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;; +21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;; +21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;; +21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;; +21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;; +21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;; +21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;; +21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;; +21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;; +21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;; +21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;; +21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;; +21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;; +21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;; +21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;; +21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;; +21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;; +21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;; +21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; +21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; +21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;; +21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;; +21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; +21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; +21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;; +21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;; +21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;; +21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;; +21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;; +21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;; +21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;; +21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;; +21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;; +21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;; +21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;; +21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;; +21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;; +21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;; +21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;; +21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;; +21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;; +21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;; +21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;; +21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;; +21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;; +21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;; +21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;; +21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;; +21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;; +21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;; +21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;; +21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;; +21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;; +21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;; +21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;; +21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;; +21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;; +21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;; +21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;; +21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;; +21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;; +21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;; +21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;; +21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;; +21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;; +21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;; +21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;; +21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;; +21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;; +21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;; +21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; +21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; +21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; +21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;; +21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; +21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;; +21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; +21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; +21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; +21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; +21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; +21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; +2200;FOR ALL;Sm;0;ON;;;;;N;;;;; +2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; +2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; +2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;; +2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;; +2205;EMPTY SET;Sm;0;ON;;;;;N;;;;; +2206;INCREMENT;Sm;0;ON;;;;;N;;;;; +2207;NABLA;Sm;0;ON;;;;;N;;;;; +2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;; +2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;; +220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;; +220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; +220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;; +220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; +220E;END OF PROOF;Sm;0;ON;;;;;N;;;;; +220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;; +2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;; +2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;; +2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;; +2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;; +2214;DOT PLUS;Sm;0;ON;;;;;N;;;;; +2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; +2216;SET MINUS;Sm;0;ON;;;;;Y;;;;; +2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; +2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;; +2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;; +221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;; +221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;; +221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;; +221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;; +221E;INFINITY;Sm;0;ON;;;;;N;;;;; +221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;; +2220;ANGLE;Sm;0;ON;;;;;Y;;;;; +2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;; +2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;; +2223;DIVIDES;Sm;0;ON;;;;;N;;;;; +2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;; +2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;; +2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;; +2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2229;INTERSECTION;Sm;0;ON;;;;;N;;;;; +222A;UNION;Sm;0;ON;;;;;N;;;;; +222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;; +222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;; +222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;; +222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;; +2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;; +2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2234;THEREFORE;Sm;0;ON;;;;;N;;;;; +2235;BECAUSE;Sm;0;ON;;;;;N;;;;; +2236;RATIO;Sm;0;ON;;;;;N;;;;; +2237;PROPORTION;Sm;0;ON;;;;;N;;;;; +2238;DOT MINUS;Sm;0;ON;;;;;N;;;;; +2239;EXCESS;Sm;0;ON;;;;;Y;;;;; +223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;; +223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;; +223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;; +223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;; +223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;; +2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;; +2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;; +2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;; +2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;; +2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;; +2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;; +224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;; +224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;; +224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;; +2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;; +2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;; +2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;; +2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;; +2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;; +2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;; +2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;; +2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;; +2259;ESTIMATES;Sm;0;ON;;;;;N;;;;; +225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;; +225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;; +225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;; +225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;; +225E;MEASURED BY;Sm;0;ON;;;;;N;;;;; +225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;; +2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;; +2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;; +2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; +2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;; +2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;; +2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;; +2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;; +2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;; +2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;; +226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;; +226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;; +226C;BETWEEN;Sm;0;ON;;;;;N;;;;; +226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;; +226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;; +226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;; +2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;; +2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;; +2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;; +2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;; +2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;; +2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;; +2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;; +2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;; +2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;; +2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;; +227A;PRECEDES;Sm;0;ON;;;;;Y;;;;; +227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;; +2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;; +2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;; +2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;; +2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;; +2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;; +2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;; +2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;; +228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;; +228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;; +228C;MULTISET;Sm;0;ON;;;;;Y;;;;; +228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;; +228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;; +228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;; +2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; +2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;; +2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;; +2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;; +2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;; +2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; +2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;; +229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; +229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;; +229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;; +229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;; +229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;; +22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;; +22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;; +22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;; +22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;; +22A5;UP TACK;Sm;0;ON;;;;;N;;;;; +22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;; +22A7;MODELS;Sm;0;ON;;;;;Y;;;;; +22A8;TRUE;Sm;0;ON;;;;;Y;;;;; +22A9;FORCES;Sm;0;ON;;;;;Y;;;;; +22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;; +22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;; +22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;; +22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;; +22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;; +22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;; +22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;; +22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;; +22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; +22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;; +22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;; +22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;; +22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;; +22BB;XOR;Sm;0;ON;;;;;N;;;;; +22BC;NAND;Sm;0;ON;;;;;N;;;;; +22BD;NOR;Sm;0;ON;;;;;N;;;;; +22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;; +22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;; +22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;; +22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;; +22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;; +22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;; +22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;; +22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;; +22C8;BOWTIE;Sm;0;ON;;;;;N;;;;; +22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; +22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;; +22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;; +22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;; +22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;; +22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;; +22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;; +22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;; +22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;; +22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;; +22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;; +22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;; +22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;; +22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;; +22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;; +22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;; +22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;; +22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;; +22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;; +22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;; +22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;; +22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;; +22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;; +22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;; +22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;; +22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; +22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;; +22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;; +22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;; +22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;; +22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; +22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; +22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; +22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; +22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; +22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; +2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; +2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; +2302;HOUSE;So;0;ON;;;;;N;;;;; +2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;; +2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;; +2305;PROJECTIVE;So;0;ON;;;;;N;;;;; +2306;PERSPECTIVE;So;0;ON;;;;;N;;;;; +2307;WAVY LINE;So;0;ON;;;;;N;;;;; +2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;; +2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;; +230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;; +230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;; +230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;; +230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;; +230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;; +230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;; +2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;; +2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;; +2312;ARC;So;0;ON;;;;;N;;;;; +2313;SEGMENT;So;0;ON;;;;;N;;;;; +2314;SECTOR;So;0;ON;;;;;N;;;;; +2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;; +2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;; +2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;; +2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;; +2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;; +231A;WATCH;So;0;ON;;;;;N;;;;; +231B;HOURGLASS;So;0;ON;;;;;N;;;;; +231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;; +231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;; +231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;; +231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;; +2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2322;FROWN;So;0;ON;;;;;N;;;;; +2323;SMILE;So;0;ON;;;;;N;;;;; +2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;; +2325;OPTION KEY;So;0;ON;;;;;N;;;;; +2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;; +2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;; +2328;KEYBOARD;So;0;ON;;;;;N;;;;; +2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;; +232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;; +232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;; +232C;BENZENE RING;So;0;ON;;;;;N;;;;; +232D;CYLINDRICITY;So;0;ON;;;;;N;;;;; +232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;; +232F;SYMMETRY;So;0;ON;;;;;N;;;;; +2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;; +2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;; +2332;CONICAL TAPER;So;0;ON;;;;;N;;;;; +2333;SLOPE;So;0;ON;;;;;N;;;;; +2334;COUNTERBORE;So;0;ON;;;;;N;;;;; +2335;COUNTERSINK;So;0;ON;;;;;N;;;;; +2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;; +2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;; +2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;; +2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;; +233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;; +233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;; +233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;; +233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;; +233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;; +233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;; +2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;; +2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;; +2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;; +2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;; +2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;; +2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;; +2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;; +2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;; +2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;; +2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;; +234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;; +234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;; +234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;; +234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;; +234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;; +234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;; +2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;; +2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;; +2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;; +2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;; +2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;; +2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;; +2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;; +2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;; +2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;; +2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;; +235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;; +235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;; +235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;; +235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;; +235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;; +235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;; +2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;; +2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;; +2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;; +2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;; +2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;; +2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;; +2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;; +2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;; +2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;; +2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;; +236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;; +236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;; +236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;; +236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;; +236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;; +236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;; +2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;; +2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;; +2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;; +2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;; +2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;; +2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;; +2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;; +2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;; +2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;; +2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; +237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; +237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; +237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; +237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; +237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; +237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; +2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;; +2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; +2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; +2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;; +2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;; +2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;; +2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;; +2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;; +2388;HELM SYMBOL;So;0;ON;;;;;N;;;;; +2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;; +238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;; +238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;; +238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;; +238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;; +238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;; +238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;; +2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;; +2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; +2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; +2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;; +2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;; +2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;; +2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;; +2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;; +2398;NEXT PAGE;So;0;ON;;;;;N;;;;; +2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; +239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; +239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; +239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; +239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; +239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; +239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; +23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; +23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; +23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; +23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; +23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; +23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; +23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; +23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; +23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; +23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; +23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; +23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; +23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; +23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; +23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; +23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; +23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; +23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;; +23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; +23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; +23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; +23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; +23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; +23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; +23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; +23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; +23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; +23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; +23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; +23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; +23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; +23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; +23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; +23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; +23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; +23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; +23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; +23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; +23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; +23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;; +23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;; +23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;; +23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;; +23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;; +23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;; +23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;; +23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;; +23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;; +23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;; +23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;; +23DA;EARTH GROUND;So;0;ON;;;;;N;;;;; +23DB;FUSE;So;0;ON;;;;;N;;;;; +23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;; +23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;; +23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; +23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; +23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; +23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; +23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;; +23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;; +23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;; +23E5;FLATNESS;So;0;ON;;;;;N;;;;; +23E6;AC CURRENT;So;0;ON;;;;;N;;;;; +23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;; +2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; +2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; +2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; +2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;; +2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;; +2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;; +2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;; +2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;; +2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;; +2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;; +240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;; +240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;; +240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;; +240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;; +240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;; +240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;; +2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;; +2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;; +2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;; +2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;; +2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;; +2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;; +2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;; +2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;; +2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;; +2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;; +241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;; +241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;; +241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;; +241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;; +241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;; +241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;; +2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;; +2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;; +2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;; +2423;OPEN BOX;So;0;ON;;;;;N;;;;; +2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;; +2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;; +2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;; +2440;OCR HOOK;So;0;ON;;;;;N;;;;; +2441;OCR CHAIR;So;0;ON;;;;;N;;;;; +2442;OCR FORK;So;0;ON;;;;;N;;;;; +2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;; +2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;; +2445;OCR BOW TIE;So;0;ON;;;;;N;;;;; +2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;; +2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;; +2448;OCR DASH;So;0;ON;;;;;N;;;;; +2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; +244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; +2460;CIRCLED DIGIT ONE;No;0;ON;<circle> 0031;;1;1;N;;;;; +2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;; +2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;; +2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;; +2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;; +2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;; +2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;; +2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;; +2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;; +2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;; +246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;; +246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;; +246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;; +246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;; +246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;; +246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;; +2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;; +2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;; +2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;; +2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;; +2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;; +2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;; +2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;; +2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;; +2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;; +2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;; +247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;; +247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;; +247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;; +247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;; +247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;; +247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;; +2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;; +2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;; +2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;; +2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;; +2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;; +2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;; +2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;; +2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;; +2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; +2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; +248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; +248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;; +248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;; +248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;; +248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;; +248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;; +2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;; +2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;; +2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;; +2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;; +2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;; +2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;; +2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;; +2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;; +2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;; +2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;; +249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;; +249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;; +249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;; +249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;; +249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;; +249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;; +24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;; +24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;; +24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;; +24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;; +24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;; +24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;; +24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;; +24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;; +24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;; +24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;; +24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;; +24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;; +24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;; +24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;; +24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;; +24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;; +24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;; +24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;; +24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;; +24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;; +24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;; +24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;; +24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0; +24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1; +24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2; +24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3; +24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4; +24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5; +24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6; +24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7; +24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8; +24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9; +24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA; +24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB; +24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC; +24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD; +24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE; +24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF; +24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0; +24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1; +24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2; +24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3; +24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4; +24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5; +24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6; +24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7; +24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8; +24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9; +24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6 +24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7 +24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8 +24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9 +24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA +24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB +24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC +24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD +24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE +24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF +24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0 +24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1 +24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2 +24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3 +24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4 +24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5 +24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6 +24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7 +24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8 +24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9 +24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA +24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB +24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC +24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD +24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE +24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF +24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;0;0;N;;;;; +24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; +24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; +24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; +24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; +24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; +24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; +24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; +24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; +24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; +24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; +24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; +24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; +24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; +24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; +24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; +24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; +24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; +24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; +24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; +24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; +24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;; +2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; +2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; +2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; +2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;; +2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;; +2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;; +2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;; +2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;; +2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;; +2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;; +250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;; +250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;; +250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;; +250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;; +250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;; +250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;; +2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;; +2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;; +2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;; +2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;; +2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;; +2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;; +2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;; +2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;; +2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;; +2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;; +251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;; +251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;; +251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;; +251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;; +251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;; +251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;; +2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;; +2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;; +2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;; +2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;; +2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;; +2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;; +2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;; +2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;; +2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;; +2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;; +252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;; +252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;; +252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;; +252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;; +252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;; +252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;; +2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;; +2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;; +2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;; +2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;; +2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;; +2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;; +2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;; +2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;; +2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;; +2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;; +253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;; +253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;; +253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;; +253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;; +253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;; +253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;; +2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;; +2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;; +2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;; +2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;; +2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;; +2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;; +2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;; +2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;; +2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;; +2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;; +254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;; +254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;; +254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;; +254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;; +254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;; +254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;; +2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;; +2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;; +2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;; +2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;; +2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;; +2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;; +2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;; +2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;; +2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;; +2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;; +255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;; +255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;; +255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;; +255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;; +255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;; +255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;; +2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;; +2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;; +2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;; +2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;; +2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;; +2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;; +2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;; +2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;; +2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;; +2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;; +256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;; +256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;; +256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;; +256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;; +256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;; +256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;; +2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;; +2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;; +2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;; +2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;; +2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;; +2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;; +2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;; +2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;; +2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;; +2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;; +257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;; +257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;; +257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;; +257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;; +257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;; +257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;; +2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;; +2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; +2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;; +2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +2588;FULL BLOCK;So;0;ON;;;;;N;;;;; +2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;; +258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;; +258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; +258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; +2591;LIGHT SHADE;So;0;ON;;;;;N;;;;; +2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;; +2593;DARK SHADE;So;0;ON;;;;;N;;;;; +2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; +2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; +2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; +2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; +2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; +259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; +25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; +25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; +25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; +25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;; +25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; +25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; +25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; +25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; +25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; +25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; +25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;; +25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;; +25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;; +25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; +25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; +25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;; +25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;; +25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;; +25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;; +25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;; +25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;; +25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;; +25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;; +25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;; +25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;; +25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;; +25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;; +25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;; +25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;; +25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;; +25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;; +25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;; +25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;; +25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;; +25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;; +25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;; +25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;; +25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;; +25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;; +25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; +25C9;FISHEYE;So;0;ON;;;;;N;;;;; +25CA;LOZENGE;So;0;ON;;;;;N;;;;; +25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;; +25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; +25CE;BULLSEYE;So;0;ON;;;;;N;;;;; +25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; +25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; +25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;; +25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;; +25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;; +25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;; +25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;; +25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; +25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; +25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;; +25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;; +25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; +25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; +25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; +25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; +25E6;WHITE BULLET;So;0;ON;;;;;N;;;;; +25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; +25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; +25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;; +25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;; +25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;; +25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;; +25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;; +25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; +25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; +25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; +25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; +25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; +25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; +25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; +25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; +2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; +2601;CLOUD;So;0;ON;;;;;N;;;;; +2602;UMBRELLA;So;0;ON;;;;;N;;;;; +2603;SNOWMAN;So;0;ON;;;;;N;;;;; +2604;COMET;So;0;ON;;;;;N;;;;; +2605;BLACK STAR;So;0;ON;;;;;N;;;;; +2606;WHITE STAR;So;0;ON;;;;;N;;;;; +2607;LIGHTNING;So;0;ON;;;;;N;;;;; +2608;THUNDERSTORM;So;0;ON;;;;;N;;;;; +2609;SUN;So;0;ON;;;;;N;;;;; +260A;ASCENDING NODE;So;0;ON;;;;;N;;;;; +260B;DESCENDING NODE;So;0;ON;;;;;N;;;;; +260C;CONJUNCTION;So;0;ON;;;;;N;;;;; +260D;OPPOSITION;So;0;ON;;;;;N;;;;; +260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;; +260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;; +2610;BALLOT BOX;So;0;ON;;;;;N;;;;; +2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; +2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; +2613;SALTIRE;So;0;ON;;;;;N;;;;; +2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;; +2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;; +2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; +2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; +2618;SHAMROCK;So;0;ON;;;;;N;;;;; +2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; +261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; +261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; +261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;; +261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; +261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; +2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;; +2621;CAUTION SIGN;So;0;ON;;;;;N;;;;; +2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;; +2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;; +2624;CADUCEUS;So;0;ON;;;;;N;;;;; +2625;ANKH;So;0;ON;;;;;N;;;;; +2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;; +2627;CHI RHO;So;0;ON;;;;;N;;;;; +2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;; +2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;; +262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;; +262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;; +262C;ADI SHAKTI;So;0;ON;;;;;N;;;;; +262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;; +262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;; +262F;YIN YANG;So;0;ON;;;;;N;;;;; +2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;; +2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;; +2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;; +2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;; +2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;; +2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;; +2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;; +2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; +2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;; +2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;; +263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;; +263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;; +263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;; +263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;; +263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;; +263F;MERCURY;So;0;ON;;;;;N;;;;; +2640;FEMALE SIGN;So;0;ON;;;;;N;;;;; +2641;EARTH;So;0;ON;;;;;N;;;;; +2642;MALE SIGN;So;0;ON;;;;;N;;;;; +2643;JUPITER;So;0;ON;;;;;N;;;;; +2644;SATURN;So;0;ON;;;;;N;;;;; +2645;URANUS;So;0;ON;;;;;N;;;;; +2646;NEPTUNE;So;0;ON;;;;;N;;;;; +2647;PLUTO;So;0;ON;;;;;N;;;;; +2648;ARIES;So;0;ON;;;;;N;;;;; +2649;TAURUS;So;0;ON;;;;;N;;;;; +264A;GEMINI;So;0;ON;;;;;N;;;;; +264B;CANCER;So;0;ON;;;;;N;;;;; +264C;LEO;So;0;ON;;;;;N;;;;; +264D;VIRGO;So;0;ON;;;;;N;;;;; +264E;LIBRA;So;0;ON;;;;;N;;;;; +264F;SCORPIUS;So;0;ON;;;;;N;;;;; +2650;SAGITTARIUS;So;0;ON;;;;;N;;;;; +2651;CAPRICORN;So;0;ON;;;;;N;;;;; +2652;AQUARIUS;So;0;ON;;;;;N;;;;; +2653;PISCES;So;0;ON;;;;;N;;;;; +2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;; +2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;; +2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;; +2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;; +2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;; +2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;; +265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;; +265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;; +265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;; +265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;; +265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;; +265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;; +2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;; +2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;; +2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;; +2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;; +2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;; +2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;; +2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;; +2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;; +2668;HOT SPRINGS;So;0;ON;;;;;N;;;;; +2669;QUARTER NOTE;So;0;ON;;;;;N;;;;; +266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;; +266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;; +266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;; +266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;; +266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;; +266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; +2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; +2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; +2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; +2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;; +2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;; +2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;; +2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;; +2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;; +2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;; +2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;; +267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; +267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; +267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; +267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; +267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;; +267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;; +2680;DIE FACE-1;So;0;ON;;;;;N;;;;; +2681;DIE FACE-2;So;0;ON;;;;;N;;;;; +2682;DIE FACE-3;So;0;ON;;;;;N;;;;; +2683;DIE FACE-4;So;0;ON;;;;;N;;;;; +2684;DIE FACE-5;So;0;ON;;;;;N;;;;; +2685;DIE FACE-6;So;0;ON;;;;;N;;;;; +2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; +2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; +2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; +2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; +268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;; +268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;; +268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;; +268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;; +268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;; +268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;; +2690;WHITE FLAG;So;0;ON;;;;;N;;;;; +2691;BLACK FLAG;So;0;ON;;;;;N;;;;; +2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;; +2693;ANCHOR;So;0;ON;;;;;N;;;;; +2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;; +2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;; +2696;SCALES;So;0;ON;;;;;N;;;;; +2697;ALEMBIC;So;0;ON;;;;;N;;;;; +2698;FLOWER;So;0;ON;;;;;N;;;;; +2699;GEAR;So;0;ON;;;;;N;;;;; +269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;; +269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;; +269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;; +269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; +26A0;WARNING SIGN;So;0;ON;;;;;N;;;;; +26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;; +26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;; +26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;; +26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;; +26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; +26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; +26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; +26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; +26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; +26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;; +26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;; +26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;; +26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;; +26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;; +26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;; +26B0;COFFIN;So;0;ON;;;;;N;;;;; +26B1;FUNERAL URN;So;0;ON;;;;;N;;;;; +26B2;NEUTER;So;0;ON;;;;;N;;;;; +26B3;CERES;So;0;ON;;;;;N;;;;; +26B4;PALLAS;So;0;ON;;;;;N;;;;; +26B5;JUNO;So;0;ON;;;;;N;;;;; +26B6;VESTA;So;0;ON;;;;;N;;;;; +26B7;CHIRON;So;0;ON;;;;;N;;;;; +26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;; +26B9;SEXTILE;So;0;ON;;;;;N;;;;; +26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;; +26BB;QUINCUNX;So;0;ON;;;;;N;;;;; +26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;; +26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;; +26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;; +26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;; +26C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;; +2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; +2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; +2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; +2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;; +2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;; +2707;TAPE DRIVE;So;0;ON;;;;;N;;;;; +2708;AIRPLANE;So;0;ON;;;;;N;;;;; +2709;ENVELOPE;So;0;ON;;;;;N;;;;; +270C;VICTORY HAND;So;0;ON;;;;;N;;;;; +270D;WRITING HAND;So;0;ON;;;;;N;;;;; +270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;; +270F;PENCIL;So;0;ON;;;;;N;;;;; +2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;; +2711;WHITE NIB;So;0;ON;;;;;N;;;;; +2712;BLACK NIB;So;0;ON;;;;;N;;;;; +2713;CHECK MARK;So;0;ON;;;;;N;;;;; +2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; +2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;; +2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;; +2717;BALLOT X;So;0;ON;;;;;N;;;;; +2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;; +2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;; +271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;; +271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;; +271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;; +271D;LATIN CROSS;So;0;ON;;;;;N;;;;; +271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;; +271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;; +2720;MALTESE CROSS;So;0;ON;;;;;N;;;;; +2721;STAR OF DAVID;So;0;ON;;;;;N;;;;; +2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;; +2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;; +2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; +272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;; +272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;; +272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;; +272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; +272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; +272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;; +2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;; +2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;; +2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;; +2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;; +2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; +2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; +2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;; +273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;; +273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;; +273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;; +273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;; +2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;; +2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;; +2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;; +2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;; +2744;SNOWFLAKE;So;0;ON;;;;;N;;;;; +2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;; +2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;; +2747;SPARKLE;So;0;ON;;;;;N;;;;; +2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;; +2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; +274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; +274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; +274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;; +274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; +2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;; +2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;; +2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;; +275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;; +275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;; +2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; +2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;; +2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; +2766;FLORAL HEART;So;0;ON;;;;;N;;;;; +2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; +2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; +276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; +2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; +2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; +2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; +2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; +2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;; +277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;; +277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;; +277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;; +277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;; +277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;; +277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;; +2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;; +2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;; +2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;; +2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;; +2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;; +2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;; +2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;; +2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;; +2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;; +2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;; +278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;; +278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;; +278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;; +278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;; +278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;; +278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;; +2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;; +2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;; +2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;; +2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;; +2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;; +2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;; +2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;; +279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;; +279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;; +279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;; +279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;; +279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;; +279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;; +27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;; +27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;; +27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;; +27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;; +27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;; +27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;; +27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;; +27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;; +27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;; +27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;; +27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;; +27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;; +27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;; +27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; +27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;; +27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;; +27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;; +27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;; +27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;; +27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;; +27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;; +27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;; +27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;; +27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;; +27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; +27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; +27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; +27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;; +27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;; +27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;; +27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;; +27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;; +27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;; +27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;; +27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;; +27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;; +27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;; +27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;; +27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; +27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; +27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; +27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; +27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; +27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; +27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; +27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; +27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; +27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; +27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; +27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; +27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; +27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; +27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; +27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; +27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; +27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; +27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; +27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; +27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; +27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; +27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; +27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; +27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; +27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; +27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; +2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;; +2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;; +2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;; +2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;; +2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;; +2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;; +2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;; +2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;; +2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;; +2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;; +280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;; +280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;; +280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;; +280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;; +280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;; +280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;; +2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;; +2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;; +2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;; +2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;; +2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;; +2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;; +2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;; +2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;; +2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;; +2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;; +281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;; +281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;; +281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;; +281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;; +281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;; +281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;; +2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;; +2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;; +2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;; +2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;; +2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;; +2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;; +2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;; +2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;; +2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;; +2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;; +282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;; +282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;; +282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;; +282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;; +282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;; +282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;; +2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;; +2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;; +2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;; +2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;; +2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;; +2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;; +2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;; +2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;; +2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;; +2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;; +283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;; +283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;; +283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;; +283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;; +283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;; +283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;; +2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;; +2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;; +2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;; +2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;; +2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;; +2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;; +2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;; +2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;; +2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;; +2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;; +284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;; +284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;; +284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;; +284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;; +284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;; +284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;; +2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;; +2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;; +2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;; +2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;; +2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;; +2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;; +2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;; +2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;; +2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;; +2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;; +285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;; +285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;; +285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;; +285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;; +285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;; +285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;; +2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;; +2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;; +2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;; +2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;; +2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;; +2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;; +2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;; +2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;; +2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;; +2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;; +286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;; +286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;; +286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;; +286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;; +286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;; +286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;; +2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;; +2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;; +2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;; +2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;; +2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;; +2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;; +2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;; +2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;; +2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;; +2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;; +287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;; +287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;; +287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;; +287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;; +287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;; +287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;; +2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;; +2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;; +2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;; +2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;; +2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;; +2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;; +2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;; +2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;; +2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;; +2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;; +288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;; +288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;; +288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;; +288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;; +288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;; +288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;; +2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;; +2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;; +2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;; +2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;; +2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;; +2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;; +2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;; +2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;; +2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;; +2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;; +289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;; +289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;; +289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;; +289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;; +289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;; +289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;; +28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;; +28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;; +28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;; +28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;; +28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;; +28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;; +28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;; +28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;; +28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;; +28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;; +28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;; +28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;; +28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;; +28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;; +28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;; +28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;; +28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;; +28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;; +28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;; +28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;; +28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;; +28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;; +28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;; +28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;; +28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;; +28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;; +28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;; +28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;; +28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;; +28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;; +28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;; +28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;; +28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;; +28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;; +28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;; +28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;; +28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;; +28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;; +28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;; +28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;; +28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;; +28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;; +28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;; +28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;; +28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;; +28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;; +28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;; +28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;; +28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;; +28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;; +28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;; +28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;; +28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;; +28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;; +28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;; +28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;; +28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;; +28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;; +28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;; +28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;; +28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;; +28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;; +28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;; +28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;; +28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;; +28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;; +28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;; +28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;; +28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;; +28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;; +28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;; +28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;; +28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;; +28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;; +28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;; +28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;; +28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;; +28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;; +28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;; +28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;; +28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;; +28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;; +28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;; +28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;; +28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;; +28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;; +28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;; +28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;; +28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;; +28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;; +28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;; +28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;; +28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;; +28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;; +28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;; +28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;; +2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; +290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; +290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; +2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; +2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; +2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; +2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; +291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; +2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; +292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; +292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; +2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; +2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; +2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; +2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; +2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; +2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; +2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; +293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; +293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; +2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; +2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; +2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; +2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; +2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; +294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; +294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; +294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; +294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; +294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; +2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; +2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; +2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; +2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; +2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; +2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; +2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; +2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; +2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; +2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; +295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; +295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; +295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; +295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; +295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; +295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; +2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; +2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; +2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; +2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; +2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; +296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; +296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; +296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; +296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; +296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; +2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; +2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; +2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; +297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; +297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; +297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; +297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; +2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; +2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; +2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; +2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; +2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; +2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; +2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; +2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; +298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; +298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; +298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; +298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; +298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; +298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; +2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; +2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; +2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; +2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; +2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; +2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; +2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; +2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; +2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; +2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; +299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; +299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; +299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; +299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; +299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; +299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; +29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; +29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; +29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; +29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; +29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; +29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; +29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; +29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; +29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; +29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; +29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; +29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; +29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; +29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; +29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; +29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; +29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; +29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; +29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; +29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; +29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; +29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; +29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; +29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; +29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; +29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; +29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; +29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; +29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; +29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; +29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; +29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; +29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; +29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; +29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; +29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; +29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; +29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; +29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; +29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; +29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; +29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; +29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; +29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; +29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; +29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; +29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; +29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; +29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; +29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; +29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; +29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; +29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; +29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; +29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; +29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; +29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; +29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; +29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; +29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; +29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; +29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; +29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; +29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; +29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; +29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; +29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; +29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; +29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; +29FE;TINY;Sm;0;ON;;;;;N;;;;; +29FF;MINY;Sm;0;ON;;;;;N;;;;; +2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; +2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; +2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; +2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; +2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; +2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; +2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; +2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; +2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; +2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; +2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; +2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;; +2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; +2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; +2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; +2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; +2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; +2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; +2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; +2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; +2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; +2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; +2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; +2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; +2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; +2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +2A1D;JOIN;Sm;0;ON;;;;;N;;;;; +2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; +2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; +2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; +2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; +2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; +2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; +2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; +2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; +2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; +2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; +2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; +2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; +2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; +2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; +2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; +2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; +2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; +2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; +2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; +2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; +2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; +2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; +2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; +2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; +2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; +2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; +2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; +2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; +2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; +2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; +2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; +2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; +2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; +2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; +2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; +2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; +2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; +2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; +2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; +2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; +2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; +2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; +2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; +2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; +2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; +2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; +2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; +2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; +2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; +2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; +2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; +2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; +2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; +2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;; +2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;; +2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;; +2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; +2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; +2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; +2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; +2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; +2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; +2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; +2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; +2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; +2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; +2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; +2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; +2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; +2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; +2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; +2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; +2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; +2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; +2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; +2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; +2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; +2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; +2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; +2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; +2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; +2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; +2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; +2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; +2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; +2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; +2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; +2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; +2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; +2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; +2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; +2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; +2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; +2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; +2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; +2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;; +2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;; +2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; +2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; +2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; +2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; +2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; +2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; +2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; +2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; +2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; +2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; +2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; +2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; +2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; +2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; +2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; +2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; +2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; +2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; +2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; +2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; +2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; +2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; +2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; +2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; +2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; +2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; +2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;; +2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; +2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; +2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; +2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;; +2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; +2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; +2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; +2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; +2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; +2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; +2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; +2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; +2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; +2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; +2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; +2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;; +2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;; +2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;; +2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; +2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; +2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;; +2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;; +2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;; +2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;; +2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;; +2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;; +2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; +2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; +2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; +2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; +2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; +2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;; +2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;; +2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; +2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; +2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; +2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; +2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; +2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; +2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; +2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; +2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; +2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; +2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; +2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; +2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; +2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; +2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;; +2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;; +2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;; +2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; +2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; +2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; +2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; +2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; +2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;; +2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;; +2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;; +2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; +2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; +2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; +2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; +2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; +2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33; +2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34; +2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35; +2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36; +2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37; +2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38; +2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39; +2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A; +2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B; +2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C; +2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D; +2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E; +2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F; +2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40; +2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41; +2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42; +2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43; +2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44; +2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45; +2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46; +2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47; +2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48; +2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49; +2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A; +2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B; +2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C; +2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D; +2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E; +2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F; +2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50; +2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51; +2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52; +2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53; +2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54; +2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55; +2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56; +2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57; +2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58; +2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59; +2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A; +2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B; +2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; +2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; +2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; +2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 +2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 +2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 +2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03 +2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04 +2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05 +2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06 +2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07 +2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08 +2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09 +2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A +2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B +2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C +2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D +2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E +2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F +2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10 +2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11 +2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12 +2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13 +2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14 +2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15 +2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16 +2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17 +2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18 +2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19 +2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A +2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B +2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C +2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D +2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E +2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F +2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20 +2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21 +2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22 +2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23 +2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24 +2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25 +2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26 +2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27 +2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28 +2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29 +2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A +2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B +2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C +2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D +2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E +2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61; +2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60 +2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B; +2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D; +2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D; +2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A +2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E +2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68; +2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67 +2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A; +2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69 +2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C; +2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B +2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251; +2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271; +2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250; +2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;; +2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73; +2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72 +2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;; +2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76; +2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75 +2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;; +2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;; +2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;; +2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;; +2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;; +2C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L;<sub> 006A;;;;N;;;;; +2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;; +2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81; +2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80 +2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83; +2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82 +2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85; +2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84 +2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87; +2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86 +2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89; +2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88 +2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B; +2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A +2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D; +2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C +2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F; +2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E +2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91; +2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90 +2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93; +2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92 +2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95; +2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94 +2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97; +2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96 +2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99; +2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98 +2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B; +2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A +2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D; +2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C +2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F; +2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E +2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1; +2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0 +2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3; +2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2 +2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5; +2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4 +2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7; +2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6 +2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9; +2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8 +2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB; +2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA +2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD; +2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC +2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF; +2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE +2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1; +2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0 +2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3; +2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2 +2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5; +2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4 +2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7; +2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6 +2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9; +2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8 +2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB; +2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA +2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD; +2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC +2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF; +2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE +2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1; +2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0 +2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3; +2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2 +2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5; +2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4 +2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7; +2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6 +2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9; +2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8 +2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB; +2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA +2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD; +2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC +2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF; +2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE +2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1; +2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0 +2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3; +2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2 +2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5; +2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4 +2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7; +2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6 +2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9; +2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8 +2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB; +2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA +2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD; +2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC +2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF; +2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE +2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1; +2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0 +2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3; +2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2 +2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;; +2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;; +2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;; +2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;; +2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;; +2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;; +2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;; +2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;; +2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; +2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; +2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;; +2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;; +2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;; +2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;; +2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0 +2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1 +2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2 +2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3 +2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4 +2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5 +2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6 +2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7 +2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8 +2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9 +2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA +2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB +2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC +2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD +2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE +2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF +2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0 +2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1 +2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2 +2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3 +2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4 +2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5 +2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6 +2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7 +2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8 +2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9 +2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA +2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB +2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC +2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD +2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE +2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF +2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0 +2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1 +2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2 +2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3 +2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4 +2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5 +2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;; +2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;; +2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;; +2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;; +2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;; +2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;; +2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;; +2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;; +2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;; +2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;; +2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;; +2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;; +2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;; +2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;; +2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;; +2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;; +2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;; +2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;; +2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;; +2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;; +2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;; +2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;; +2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;; +2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;; +2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;; +2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;; +2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;; +2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;; +2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;; +2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;; +2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;; +2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;; +2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;; +2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;; +2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;; +2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;; +2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;; +2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;; +2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;; +2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;; +2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;; +2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;; +2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;; +2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;; +2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;; +2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;; +2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;; +2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;; +2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;; +2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;; +2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;; +2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;; +2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;; +2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;; +2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;tamatart;;; +2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;; +2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;; +2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;; +2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;; +2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;; +2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;; +2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;; +2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;; +2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;; +2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;; +2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;; +2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;; +2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;; +2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;; +2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;; +2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;; +2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;; +2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;; +2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;; +2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;; +2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;; +2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;; +2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;; +2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;; +2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;; +2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;; +2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;; +2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;; +2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;; +2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;; +2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;; +2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;; +2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;; +2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;; +2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;; +2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;; +2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;; +2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; +2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; +2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; +2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;; +2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;; +2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; +2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; +2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;; +2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;; +2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;; +2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;; +2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;; +2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;; +2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;; +2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;; +2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;; +2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;; +2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;; +2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;; +2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;; +2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;; +2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;; +2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;; +2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;; +2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;; +2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;; +2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;; +2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;; +2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;; +2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;; +2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;; +2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;; +2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;; +2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;; +2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;; +2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;; +2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;; +2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;; +2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;; +2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;; +2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;; +2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;; +2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;; +2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;; +2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;; +2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;; +2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;; +2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;; +2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;; +2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;; +2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;; +2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;; +2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;; +2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;; +2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;; +2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;; +2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;; +2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;; +2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;; +2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;; +2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;; +2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;; +2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;; +2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;; +2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;; +2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;; +2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;; +2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;; +2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;; +2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;; +2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;; +2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;; +2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;; +2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;; +2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; +2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; +2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; +2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; +2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;; +2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;; +2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;; +2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;; +2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;; +2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;; +2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; +2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; +2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;; +2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;; +2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;; +2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;; +2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;; +2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; +2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;; +2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;; +2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;; +2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;; +2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;; +2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;; +2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;; +2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;; +2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;; +2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;; +2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; +2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; +2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; +2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; +2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;; +2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;; +2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;; +2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; +2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;; +2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;; +2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;; +2E30;RING POINT;Po;0;ON;;;;;N;;;;; +2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; +2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; +2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; +2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;; +2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;; +2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;; +2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;; +2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;; +2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;; +2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;; +2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;; +2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;; +2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;; +2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;; +2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;; +2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;; +2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;; +2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;; +2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;; +2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;; +2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;; +2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;; +2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;; +2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;; +2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;; +2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;; +2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;; +2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;; +2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;; +2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;; +2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;; +2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;; +2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;; +2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;; +2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;; +2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;; +2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;; +2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;; +2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;; +2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;; +2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;; +2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;; +2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;; +2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;; +2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;; +2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;; +2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;; +2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;; +2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;; +2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;; +2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;; +2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;; +2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;; +2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;; +2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;; +2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;; +2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;; +2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;; +2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;; +2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;; +2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;; +2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;; +2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;; +2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;; +2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;; +2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;; +2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;; +2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;; +2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;; +2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;; +2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;; +2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;; +2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;; +2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;; +2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;; +2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;; +2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;; +2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;; +2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;; +2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;; +2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;; +2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;; +2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;; +2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;; +2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;; +2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;; +2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;; +2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;; +2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;; +2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;; +2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;; +2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;; +2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;; +2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;; +2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;; +2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;; +2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;; +2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;; +2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;; +2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;; +2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;; +2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;; +2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;; +2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;; +2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;; +2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;; +2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; +2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; +2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; +2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; +2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; +2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; +2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;; +2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;; +2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;; +2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;; +2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;; +2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;; +2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;; +2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;; +2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;; +2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;; +2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;; +2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;; +2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;; +2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;; +2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;; +2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;; +2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;; +2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;; +2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;; +2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;; +2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;; +2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;; +2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;; +2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;; +2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;; +2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;; +2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;; +2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;; +2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;; +2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;; +2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;; +2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;; +2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;; +2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;; +2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;; +2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;; +2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;; +2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;; +2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;; +2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;; +2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;; +2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;; +2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;; +2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;; +2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;; +2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;; +2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;; +2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;; +2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;; +2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;; +2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;; +2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;; +2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;; +2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;; +2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;; +2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;; +2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;; +2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;; +2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;; +2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;; +2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;; +2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;; +2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;; +2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;; +2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;; +2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;; +2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;; +2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;; +2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;; +2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;; +2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;; +2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;; +2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;; +2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;; +2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;; +2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;; +2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;; +2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;; +2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;; +2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;; +2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;; +2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;; +2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;; +2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;; +2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;; +2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;; +2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;; +2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;; +2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;; +2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;; +2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;; +2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;; +2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;; +2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;; +2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;; +2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;; +2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;; +2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;; +2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;; +2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;; +2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;; +2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;; +2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;; +2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;; +2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;; +2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;; +2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;; +2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;; +2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;; +2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;; +2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;; +2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;; +2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;; +2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;; +2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;; +2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;; +2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;; +2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;; +2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;; +2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;; +2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;; +2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;; +2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;; +2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;; +2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;; +2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;; +2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;; +2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;; +2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;; +2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;; +2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;; +2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;; +2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;; +2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;; +2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;; +2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;; +2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;; +2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;; +2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;; +2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;; +2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;; +2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;; +2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;; +2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;; +2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;; +2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;; +2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;; +2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;; +2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;; +2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;; +2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;; +2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;; +2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;; +2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;; +2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;; +2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;; +2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;; +2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;; +2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;; +2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;; +2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;; +2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;; +2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;; +2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;; +2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;; +2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;; +2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;; +2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;; +2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;; +2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;; +2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;; +2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;; +2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;; +2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;; +2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;; +2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;; +2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;; +2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;; +2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;; +2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;; +2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;; +2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;; +2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;; +2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;; +2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;; +2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;; +2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;; +2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;; +2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;; +2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;; +2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;; +2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;; +2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;; +2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;; +2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;; +2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;; +2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;; +2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;; +2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;; +2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;; +2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;; +2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;; +2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;; +2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;; +2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;; +2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;; +2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;; +2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;; +2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;; +2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;; +2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;; +2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;; +2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;; +2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;; +2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;; +2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;; +2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;; +2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;; +2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;; +2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;; +2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;; +2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;; +2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;; +2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;; +2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;; +2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;; +2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; +2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; +2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; +3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;; +3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; +3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; +3003;DITTO MARK;Po;0;ON;;;;;N;;;;; +3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;; +3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; +3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;; +3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;; +3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;; +3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;; +300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;; +300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;; +300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;; +300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;; +300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;; +300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;; +3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;; +3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;; +3012;POSTAL MARK;So;0;ON;;;;;N;;;;; +3013;GETA MARK;So;0;ON;;;;;N;;;;; +3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;; +3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;; +3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;; +3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;; +3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;; +3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;; +301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;; +301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;; +301C;WAVE DASH;Pd;0;ON;;;;;N;;;;; +301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;; +301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; +301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; +3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;; +3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;; +3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;; +3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;; +3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;; +3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;; +3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;; +3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;; +3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;; +3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;; +302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;; +302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;; +302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;; +302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;; +302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; +302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; +3030;WAVY DASH;Pd;0;ON;;;;;N;;;;; +3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;; +3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;; +3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;; +3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;; +3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;; +3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;; +3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;; +3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;; +3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;; +303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;; +303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; +303C;MASU MARK;Lo;0;L;;;;;N;;;;; +303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; +303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; +303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; +3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; +3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;; +3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; +3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;; +3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; +3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;; +3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; +3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;; +3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; +304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;; +304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;; +304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;; +304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;; +304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;; +304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;; +3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;; +3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;; +3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;; +3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;; +3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;; +3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;; +3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;; +3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;; +3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;; +3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;; +305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;; +305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;; +305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;; +305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;; +305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;; +305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;; +3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;; +3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;; +3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;; +3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; +3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;; +3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;; +3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;; +3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;; +3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;; +3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;; +306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;; +306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;; +306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;; +306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;; +306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;; +306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;; +3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;; +3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;; +3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;; +3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;; +3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;; +3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;; +3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;; +3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;; +3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;; +3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;; +307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;; +307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;; +307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;; +307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;; +307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;; +307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;; +3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;; +3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;; +3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;; +3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; +3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;; +3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; +3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;; +3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; +3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;; +3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;; +308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;; +308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;; +308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;; +308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;; +308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; +308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;; +3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;; +3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;; +3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; +3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; +3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; +3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; +3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; +3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; +309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; +309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;; +309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;; +309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; +309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; +309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;; +30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; +30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; +30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; +30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; +30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;; +30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; +30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;; +30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; +30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;; +30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; +30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;; +30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;; +30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;; +30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;; +30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;; +30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;; +30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;; +30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;; +30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;; +30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;; +30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;; +30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;; +30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;; +30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;; +30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;; +30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;; +30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;; +30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;; +30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;; +30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;; +30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;; +30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;; +30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;; +30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;; +30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;; +30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; +30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;; +30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;; +30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;; +30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;; +30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;; +30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;; +30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;; +30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;; +30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;; +30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;; +30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;; +30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;; +30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;; +30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;; +30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;; +30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;; +30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;; +30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;; +30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;; +30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;; +30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;; +30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;; +30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;; +30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;; +30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;; +30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;; +30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;; +30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;; +30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;; +30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;; +30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;; +30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; +30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;; +30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; +30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;; +30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; +30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;; +30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;; +30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;; +30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;; +30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;; +30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;; +30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; +30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;; +30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;; +30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;; +30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;; +30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;; +30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;; +30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; +30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; +30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;; +30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;; +30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;; +30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;; +30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;; +30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; +30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; +30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; +30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;; +3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; +3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; +3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; +3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;; +3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;; +310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;; +310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;; +310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;; +310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;; +310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;; +310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;; +3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;; +3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;; +3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;; +3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;; +3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;; +3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;; +3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;; +3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;; +3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;; +3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;; +311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;; +311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;; +311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;; +311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;; +311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;; +311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;; +3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;; +3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;; +3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;; +3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;; +3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;; +3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;; +3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;; +3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;; +3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;; +3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;; +312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;; +312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;; +312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;; +312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;; +3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;; +3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;; +3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; +3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;; +3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;; +3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;; +3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;; +3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;; +3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;; +313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;; +313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;; +313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;; +313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;; +313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;; +313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;; +3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;; +3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;; +3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;; +3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;; +3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;; +3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;; +3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;; +3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;; +3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;; +3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;; +314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;; +314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;; +314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;; +314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;; +314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;; +314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;; +3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;; +3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;; +3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;; +3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;; +3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;; +3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;; +3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;; +3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;; +3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;; +3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;; +315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;; +315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;; +315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;; +315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;; +315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;; +315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;; +3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;; +3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;; +3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;; +3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;; +3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;; +3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;; +3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;; +3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;; +3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;; +3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;; +316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;; +316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;; +316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;; +316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;; +316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;; +316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;; +3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;; +3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;; +3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;; +3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;; +3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;; +3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;; +3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;; +3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;; +3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;; +3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;; +317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;; +317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;; +317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;; +317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;; +317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;; +317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;; +3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;; +3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;; +3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;; +3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;; +3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;; +3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;; +3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;; +3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;; +3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;; +3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;; +318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;; +318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;; +318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;; +318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;; +318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;; +3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;; +3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;; +3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;; +3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;; +3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;; +3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;; +3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;; +3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;; +3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;; +3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;; +319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;; +319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;; +319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;; +319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;; +319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;; +319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;; +31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;; +31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;; +31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;; +31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;; +31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;; +31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;; +31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;; +31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;; +31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;; +31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;; +31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;; +31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;; +31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;; +31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;; +31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;; +31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;; +31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;; +31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;; +31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;; +31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;; +31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;; +31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; +31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; +31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; +31C0;CJK STROKE T;So;0;ON;;;;;N;;;;; +31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;; +31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;; +31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;; +31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;; +31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;; +31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;; +31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;; +31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;; +31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;; +31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;; +31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;; +31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;; +31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;; +31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;; +31CF;CJK STROKE N;So;0;ON;;;;;N;;;;; +31D0;CJK STROKE H;So;0;ON;;;;;N;;;;; +31D1;CJK STROKE S;So;0;ON;;;;;N;;;;; +31D2;CJK STROKE P;So;0;ON;;;;;N;;;;; +31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;; +31D4;CJK STROKE D;So;0;ON;;;;;N;;;;; +31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;; +31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;; +31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;; +31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;; +31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;; +31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;; +31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;; +31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;; +31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;; +31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;; +31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;; +31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;; +31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;; +31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;; +31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;; +31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; +31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; +31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; +31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; +31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; +31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; +31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; +31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; +31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; +31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; +31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; +31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; +31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; +31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; +31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; +31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; +3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; +3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;; +3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; +3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;; +3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;; +3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;; +3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;; +3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;; +3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;; +3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;; +320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;; +320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;; +320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;; +320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;; +320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;; +320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;; +3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;; +3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;; +3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;; +3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;; +3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;; +3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;; +3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;; +3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;; +3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;; +3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;; +321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;; +321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;; +321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;; +321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;; +321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;; +3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;; +3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;; +3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;; +3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;; +3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;; +3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;; +3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;; +3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;; +3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;; +3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;; +322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;; +322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;; +322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;; +322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;; +322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;; +322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;; +3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;; +3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;; +3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;; +3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;; +3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;; +3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;; +3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;; +3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;; +3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;; +3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;; +323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;; +323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;; +323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;; +323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;; +323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;; +323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;; +3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;; +3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;; +3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;; +3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;; +3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;; +3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;; +3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;; +3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;; +3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;; +3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;; +3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;; +3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;; +3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;; +3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;; +325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;; +325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;; +325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;; +325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;; +325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;; +325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;; +3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; +3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;; +3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; +3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;; +3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;; +3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;; +3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;; +3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;; +3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;; +3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;; +326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;; +326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;; +326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;; +326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;; +326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;; +326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;; +3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;; +3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;; +3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;; +3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;; +3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;; +3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;; +3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;; +3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;; +3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;; +3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;; +327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;; +327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;; +327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;; +327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;; +327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;; +327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;; +3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;; +3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;; +3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;; +3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;; +3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;; +3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;; +3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;; +3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;; +3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;; +3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;; +328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;; +328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;; +328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;; +328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;; +328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;; +328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;; +3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;; +3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;; +3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;; +3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;; +3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;; +3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;; +3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;; +3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;; +3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;; +3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;; +329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;; +329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;; +329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;; +329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;; +329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;; +329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;; +32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;; +32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;; +32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;; +32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;; +32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;; +32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;; +32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;; +32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;; +32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;; +32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;; +32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;; +32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;; +32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;; +32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;; +32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;; +32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;; +32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;; +32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;; +32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;; +32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;; +32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;; +32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;; +32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;; +32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;; +32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;; +32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;; +32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;; +32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;; +32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;; +32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;; +32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;; +32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;; +32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;; +32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;; +32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;; +32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;; +32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;; +32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;; +32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;; +32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;; +32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;; +32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;; +32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;; +32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;; +32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;; +32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;; +32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;; +32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;; +32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;; +32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;; +32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;; +32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;; +32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;; +32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;; +32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;; +32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;; +32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;; +32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;; +32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;; +32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;; +32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;; +32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;; +32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;; +32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;; +32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;; +32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;; +32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;; +32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;; +32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;; +32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;; +32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;; +32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;; +32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;; +32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;; +32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;; +32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;; +32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;; +32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;; +32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;; +32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;; +32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;; +32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;; +32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;; +32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;; +32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;; +32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;; +32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;; +32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;; +32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;; +32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;; +32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;; +32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;; +32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;; +32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;; +32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;; +3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; +3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; +3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; +3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;; +3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;; +3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;; +3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;; +3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;; +3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;; +3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;; +330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;; +330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;; +330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;; +330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;; +330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;; +330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;; +3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;; +3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;; +3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;; +3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;; +3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;; +3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;; +3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;; +3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;; +3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;; +3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;; +331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;; +331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;; +331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;; +331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;; +331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;; +331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;; +3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;; +3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;; +3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;; +3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;; +3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;; +3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;; +3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;; +3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;; +3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;; +3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;; +332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;; +332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;; +332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;; +332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;; +332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;; +332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;; +3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;; +3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;; +3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;; +3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;; +3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;; +3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;; +3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;; +3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;; +3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;; +3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;; +333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;; +333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;; +333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;; +333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;; +333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;; +333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;; +3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;; +3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;; +3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;; +3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;; +3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;; +3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;; +3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;; +3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;; +3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;; +3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;; +334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;; +334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;; +334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;; +334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;; +334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;; +334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;; +3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;; +3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;; +3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;; +3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;; +3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;; +3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;; +3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;; +3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;; +3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;; +3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;; +335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;; +335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;; +335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;; +335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;; +335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;; +335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;; +3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;; +3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;; +3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;; +3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;; +3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;; +3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;; +3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;; +3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;; +3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;; +3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;; +336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;; +336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;; +336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;; +336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;; +336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;; +336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;; +3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;; +3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;; +3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;; +3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;; +3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;; +3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;; +3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;; +3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;; +3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;; +3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;; +337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;; +337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;; +337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;; +337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;; +337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;; +337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;; +3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;; +3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;; +3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;; +3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;; +3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;; +3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;; +3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;; +3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;; +3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;; +3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;; +338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;; +338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;; +338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;; +338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;; +338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;; +338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;; +3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;; +3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;; +3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;; +3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;; +3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;; +3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;; +3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;; +3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;; +3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;; +3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;; +339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;; +339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;; +339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;; +339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;; +339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;; +339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;; +33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;; +33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;; +33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;; +33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;; +33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;; +33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;; +33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;; +33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;; +33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;; +33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;; +33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;; +33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;; +33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;; +33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;; +33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;; +33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;; +33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;; +33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;; +33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;; +33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;; +33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;; +33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;; +33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;; +33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;; +33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;; +33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;; +33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;; +33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;; +33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;; +33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;; +33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;; +33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;; +33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;; +33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;; +33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;; +33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;; +33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;; +33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;; +33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;; +33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;; +33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;; +33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;; +33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;; +33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;; +33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;; +33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;; +33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;; +33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;; +33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;; +33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;; +33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;; +33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;; +33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;; +33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;; +33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;; +33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;; +33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;; +33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;; +33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;; +33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;; +33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;; +33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;; +33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;; +33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;; +33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;; +33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;; +33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;; +33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;; +33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;; +33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;; +33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;; +33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;; +33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;; +33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;; +33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;; +33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;; +33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;; +33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;; +33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;; +33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;; +33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;; +33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;; +33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;; +33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;; +33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;; +33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;; +33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;; +33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;; +33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;; +33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;; +33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;; +33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;; +33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;; +33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;; +33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;; +33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;; +4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;; +4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;; +4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;; +4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;; +4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; +4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;; +4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;; +4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;; +4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;; +4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;; +4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;; +4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;; +4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;; +4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;; +4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;; +4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;; +4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; +4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;; +4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;; +4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;; +4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;; +4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;; +4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;; +4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;; +4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;; +4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;; +4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;; +4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;; +4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;; +4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;; +4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;; +4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;; +4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;; +4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;; +4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;; +4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;; +4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;; +4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; +4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;; +4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;; +4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;; +4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; +4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;; +4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;; +4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;; +4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;; +4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;; +4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;; +4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;; +4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;; +4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;; +4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;; +4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;; +4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;; +4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;; +4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;; +4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;; +4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;; +4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;; +4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;; +4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;; +4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;; +4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; +4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; +A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; +A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; +A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; +A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;; +A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;; +A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;; +A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;; +A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;; +A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;; +A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;; +A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;; +A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;; +A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;; +A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;; +A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;; +A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;; +A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;; +A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;; +A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;; +A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;; +A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;; +A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;; +A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;; +A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;; +A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;; +A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;; +A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;; +A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;; +A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;; +A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;; +A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;; +A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;; +A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;; +A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;; +A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;; +A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;; +A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;; +A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;; +A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;; +A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;; +A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;; +A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;; +A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;; +A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;; +A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;; +A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;; +A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;; +A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;; +A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;; +A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;; +A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;; +A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;; +A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;; +A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;; +A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;; +A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;; +A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;; +A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;; +A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;; +A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;; +A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;; +A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;; +A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;; +A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;; +A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;; +A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;; +A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;; +A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;; +A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;; +A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;; +A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;; +A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;; +A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;; +A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;; +A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;; +A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;; +A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;; +A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;; +A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;; +A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;; +A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;; +A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;; +A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;; +A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;; +A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;; +A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;; +A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; +A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;; +A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;; +A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; +A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;; +A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;; +A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;; +A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;; +A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; +A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;; +A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;; +A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; +A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;; +A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;; +A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;; +A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; +A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;; +A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;; +A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; +A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;; +A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;; +A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; +A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; +A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;; +A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;; +A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; +A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;; +A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;; +A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;; +A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;; +A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;; +A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;; +A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;; +A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;; +A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;; +A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;; +A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;; +A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;; +A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;; +A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;; +A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;; +A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;; +A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;; +A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;; +A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;; +A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;; +A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;; +A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;; +A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;; +A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;; +A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;; +A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;; +A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;; +A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;; +A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;; +A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;; +A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;; +A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;; +A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;; +A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;; +A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;; +A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;; +A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;; +A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;; +A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;; +A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;; +A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;; +A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;; +A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;; +A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;; +A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;; +A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;; +A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;; +A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;; +A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;; +A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;; +A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;; +A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;; +A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;; +A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;; +A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;; +A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;; +A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;; +A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;; +A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;; +A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;; +A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;; +A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;; +A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;; +A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;; +A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;; +A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;; +A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;; +A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;; +A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;; +A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;; +A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;; +A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;; +A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;; +A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;; +A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;; +A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;; +A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;; +A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;; +A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;; +A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;; +A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;; +A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;; +A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;; +A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;; +A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;; +A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;; +A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;; +A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;; +A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;; +A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;; +A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;; +A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;; +A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;; +A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;; +A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;; +A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;; +A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;; +A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;; +A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;; +A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;; +A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;; +A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;; +A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;; +A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;; +A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;; +A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;; +A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;; +A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;; +A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;; +A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;; +A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;; +A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;; +A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;; +A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;; +A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;; +A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;; +A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;; +A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;; +A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;; +A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;; +A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;; +A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;; +A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;; +A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;; +A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;; +A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;; +A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;; +A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;; +A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;; +A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;; +A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;; +A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;; +A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;; +A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;; +A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;; +A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;; +A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;; +A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;; +A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;; +A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;; +A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;; +A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;; +A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;; +A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;; +A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;; +A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;; +A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;; +A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;; +A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;; +A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;; +A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;; +A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;; +A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;; +A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;; +A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;; +A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;; +A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;; +A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;; +A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;; +A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;; +A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;; +A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;; +A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;; +A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;; +A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;; +A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;; +A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;; +A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;; +A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;; +A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;; +A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;; +A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;; +A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;; +A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;; +A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;; +A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;; +A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;; +A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;; +A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;; +A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;; +A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;; +A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;; +A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;; +A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;; +A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;; +A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;; +A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;; +A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;; +A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;; +A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;; +A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;; +A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;; +A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;; +A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;; +A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;; +A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;; +A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;; +A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;; +A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; +A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;; +A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;; +A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; +A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;; +A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;; +A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;; +A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; +A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;; +A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;; +A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; +A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;; +A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;; +A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;; +A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; +A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;; +A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;; +A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; +A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;; +A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;; +A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; +A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; +A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;; +A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;; +A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; +A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;; +A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;; +A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;; +A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;; +A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; +A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;; +A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;; +A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;; +A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;; +A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;; +A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; +A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;; +A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;; +A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;; +A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; +A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;; +A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;; +A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; +A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;; +A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;; +A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;; +A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; +A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;; +A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;; +A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;; +A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;; +A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;; +A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;; +A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;; +A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;; +A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;; +A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;; +A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;; +A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;; +A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;; +A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;; +A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;; +A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;; +A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;; +A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;; +A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;; +A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;; +A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;; +A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;; +A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;; +A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;; +A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;; +A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;; +A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;; +A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;; +A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;; +A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;; +A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;; +A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;; +A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;; +A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;; +A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;; +A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;; +A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;; +A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;; +A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;; +A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;; +A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;; +A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;; +A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;; +A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;; +A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;; +A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;; +A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;; +A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;; +A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;; +A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;; +A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;; +A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;; +A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;; +A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;; +A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;; +A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;; +A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;; +A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;; +A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;; +A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;; +A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;; +A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;; +A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;; +A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;; +A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;; +A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;; +A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;; +A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;; +A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;; +A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;; +A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;; +A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;; +A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;; +A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;; +A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;; +A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;; +A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;; +A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;; +A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;; +A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;; +A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;; +A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;; +A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;; +A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;; +A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;; +A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;; +A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;; +A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;; +A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;; +A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;; +A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;; +A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;; +A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;; +A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;; +A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;; +A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;; +A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;; +A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;; +A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;; +A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;; +A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;; +A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;; +A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;; +A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;; +A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;; +A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;; +A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;; +A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;; +A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;; +A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;; +A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;; +A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;; +A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;; +A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;; +A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;; +A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;; +A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;; +A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;; +A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;; +A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;; +A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;; +A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;; +A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;; +A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;; +A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;; +A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;; +A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;; +A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;; +A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;; +A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;; +A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;; +A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;; +A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;; +A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;; +A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;; +A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;; +A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;; +A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;; +A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;; +A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;; +A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;; +A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;; +A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;; +A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;; +A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;; +A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;; +A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;; +A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;; +A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;; +A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;; +A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;; +A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;; +A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;; +A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;; +A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;; +A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;; +A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;; +A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;; +A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;; +A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;; +A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;; +A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;; +A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;; +A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;; +A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;; +A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;; +A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;; +A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;; +A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;; +A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;; +A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;; +A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;; +A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;; +A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;; +A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;; +A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; +A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;; +A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;; +A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;; +A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;; +A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;; +A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; +A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;; +A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;; +A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; +A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;; +A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;; +A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;; +A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;; +A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; +A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;; +A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;; +A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; +A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;; +A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;; +A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;; +A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; +A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; +A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;; +A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;; +A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; +A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;; +A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;; +A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;; +A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;; +A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;; +A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;; +A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;; +A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;; +A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;; +A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;; +A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;; +A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;; +A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;; +A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;; +A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;; +A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;; +A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;; +A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;; +A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;; +A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;; +A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;; +A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;; +A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;; +A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;; +A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;; +A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;; +A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;; +A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;; +A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;; +A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;; +A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;; +A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;; +A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;; +A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;; +A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;; +A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;; +A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;; +A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;; +A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;; +A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;; +A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;; +A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;; +A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;; +A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;; +A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;; +A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;; +A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;; +A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;; +A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;; +A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;; +A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;; +A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;; +A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;; +A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;; +A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;; +A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;; +A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;; +A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;; +A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;; +A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;; +A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;; +A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;; +A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;; +A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;; +A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;; +A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;; +A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;; +A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;; +A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;; +A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;; +A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;; +A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;; +A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;; +A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;; +A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;; +A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;; +A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;; +A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;; +A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;; +A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;; +A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;; +A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;; +A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;; +A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;; +A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;; +A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;; +A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;; +A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;; +A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;; +A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;; +A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;; +A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;; +A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;; +A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;; +A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;; +A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;; +A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;; +A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; +A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;; +A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;; +A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;; +A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;; +A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;; +A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;; +A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; +A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;; +A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;; +A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;; +A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;; +A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;; +A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;; +A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; +A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;; +A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;; +A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; +A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;; +A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;; +A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;; +A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; +A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;; +A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;; +A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;; +A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;; +A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;; +A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;; +A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;; +A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;; +A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;; +A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;; +A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;; +A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;; +A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;; +A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;; +A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;; +A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;; +A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;; +A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;; +A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;; +A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;; +A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;; +A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;; +A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;; +A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;; +A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;; +A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;; +A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;; +A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;; +A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;; +A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;; +A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;; +A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;; +A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;; +A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;; +A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;; +A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;; +A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;; +A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;; +A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;; +A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;; +A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;; +A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;; +A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;; +A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;; +A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;; +A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; +A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;; +A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;; +A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;; +A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;; +A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;; +A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;; +A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;; +A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; +A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;; +A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;; +A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; +A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;; +A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;; +A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; +A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;; +A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;; +A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; +A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;; +A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;; +A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;; +A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;; +A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;; +A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;; +A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;; +A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;; +A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;; +A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;; +A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;; +A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;; +A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;; +A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;; +A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;; +A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;; +A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;; +A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;; +A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;; +A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;; +A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;; +A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;; +A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;; +A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;; +A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;; +A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;; +A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;; +A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;; +A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;; +A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;; +A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;; +A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;; +A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;; +A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;; +A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;; +A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;; +A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;; +A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;; +A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;; +A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;; +A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;; +A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;; +A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;; +A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;; +A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;; +A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;; +A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;; +A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;; +A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;; +A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;; +A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;; +A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;; +A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;; +A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;; +A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;; +A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;; +A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;; +A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;; +A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;; +A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;; +A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;; +A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;; +A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;; +A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;; +A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;; +A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;; +A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;; +A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;; +A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;; +A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;; +A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; +A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;; +A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;; +A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; +A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;; +A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;; +A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;; +A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; +A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;; +A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;; +A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; +A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; +A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;; +A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;; +A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; +A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;; +A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;; +A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; +A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; +A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;; +A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;; +A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; +A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;; +A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;; +A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;; +A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;; +A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;; +A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;; +A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;; +A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;; +A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; +A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;; +A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;; +A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;; +A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;; +A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;; +A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;; +A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; +A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;; +A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;; +A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;; +A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; +A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;; +A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;; +A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;; +A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; +A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;; +A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;; +A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;; +A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;; +A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;; +A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;; +A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;; +A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;; +A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;; +A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;; +A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;; +A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;; +A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;; +A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;; +A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;; +A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;; +A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;; +A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;; +A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;; +A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;; +A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;; +A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;; +A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;; +A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;; +A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;; +A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;; +A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;; +A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;; +A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;; +A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;; +A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;; +A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;; +A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;; +A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;; +A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;; +A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;; +A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;; +A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;; +A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;; +A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;; +A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;; +A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;; +A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;; +A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;; +A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;; +A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;; +A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;; +A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;; +A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;; +A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;; +A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;; +A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;; +A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;; +A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;; +A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;; +A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;; +A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;; +A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;; +A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;; +A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;; +A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;; +A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;; +A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;; +A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;; +A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;; +A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;; +A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;; +A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;; +A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;; +A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;; +A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;; +A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;; +A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;; +A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;; +A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;; +A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;; +A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;; +A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;; +A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;; +A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;; +A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;; +A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;; +A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;; +A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;; +A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;; +A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; +A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;; +A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;; +A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;; +A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;; +A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;; +A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;; +A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; +A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;; +A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;; +A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;; +A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; +A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;; +A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;; +A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;; +A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; +A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;; +A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;; +A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;; +A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;; +A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;; +A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;; +A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;; +A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;; +A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;; +A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;; +A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;; +A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;; +A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;; +A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;; +A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;; +A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;; +A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;; +A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;; +A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;; +A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;; +A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;; +A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;; +A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;; +A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;; +A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;; +A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;; +A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;; +A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;; +A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;; +A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;; +A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;; +A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;; +A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;; +A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;; +A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;; +A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;; +A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;; +A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;; +A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;; +A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;; +A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;; +A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;; +A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;; +A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;; +A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;; +A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;; +A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;; +A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;; +A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;; +A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;; +A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;; +A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;; +A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;; +A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;; +A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;; +A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;; +A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;; +A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;; +A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;; +A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;; +A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;; +A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;; +A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;; +A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;; +A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;; +A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;; +A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;; +A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;; +A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;; +A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;; +A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;; +A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;; +A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;; +A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;; +A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;; +A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;; +A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;; +A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;; +A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;; +A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;; +A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;; +A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;; +A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;; +A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;; +A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;; +A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;; +A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;; +A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;; +A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;; +A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;; +A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;; +A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; +A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;; +A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;; +A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; +A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;; +A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;; +A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;; +A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;; +A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;; +A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;; +A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;; +A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; +A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;; +A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;; +A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; +A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; +A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;; +A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;; +A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; +A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;; +A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;; +A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;; +A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;; +A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;; +A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;; +A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;; +A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;; +A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; +A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;; +A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;; +A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;; +A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;; +A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;; +A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;; +A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;; +A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;; +A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;; +A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; +A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;; +A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;; +A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; +A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;; +A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;; +A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;; +A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;; +A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;; +A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;; +A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;; +A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;; +A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;; +A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; +A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;; +A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; +A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;; +A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;; +A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;; +A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;; +A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;; +A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;; +A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;; +A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; +A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;; +A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; +A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; +A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;; +A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; +A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;; +A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;; +A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;; +A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;; +A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;; +A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;; +A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;; +A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;; +A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;; +A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;; +A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;; +A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;; +A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;; +A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;; +A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;; +A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;; +A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;; +A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;; +A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;; +A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;; +A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;; +A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;; +A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;; +A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;; +A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;; +A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;; +A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;; +A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;; +A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;; +A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;; +A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;; +A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;; +A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;; +A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;; +A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;; +A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;; +A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;; +A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;; +A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;; +A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;; +A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;; +A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;; +A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;; +A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;; +A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;; +A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;; +A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;; +A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;; +A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;; +A491;YI RADICAL LI;So;0;ON;;;;;N;;;;; +A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;; +A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;; +A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;; +A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;; +A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;; +A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;; +A498;YI RADICAL MI;So;0;ON;;;;;N;;;;; +A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;; +A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;; +A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;; +A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;; +A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;; +A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; +A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; +A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; +A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; +A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; +A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; +A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; +A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; +A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; +A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;; +A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;; +A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;; +A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;; +A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;; +A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;; +A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;; +A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;; +A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;; +A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; +A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; +A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; +A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; +A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; +A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; +A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; +A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; +A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;; +A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;; +A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;; +A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;; +A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;; +A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; +A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; +A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; +A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; +A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; +A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; +A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; +A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; +A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; +A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; +A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;; +A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;; +A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;; +A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;; +A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;; +A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;; +A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;; +A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;; +A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;; +A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;; +A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;; +A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;; +A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;; +A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;; +A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;; +A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;; +A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;; +A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;; +A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;; +A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;; +A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;; +A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;; +A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;; +A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; +A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; +A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; +A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;; +A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;; +A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;; +A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;; +A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;; +A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;; +A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;; +A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;; +A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;; +A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; +A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;; +A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;; +A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;; +A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;; +A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;; +A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;; +A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;; +A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;; +A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;; +A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;; +A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;; +A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;; +A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;; +A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;; +A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;; +A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;; +A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;; +A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;; +A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;; +A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;; +A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;; +A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;; +A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; +A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;; +A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;; +A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; +A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; +A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;; +A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;; +A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; +A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;; +A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;; +A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;; +A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;; +A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;; +A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;; +A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;; +A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;; +A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;; +A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;; +A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;; +A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;; +A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;; +A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;; +A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;; +A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;; +A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;; +A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;; +A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;; +A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;; +A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;; +A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;; +A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;; +A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;; +A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;; +A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;; +A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;; +A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;; +A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;; +A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;; +A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; +A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;; +A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; +A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; +A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; +A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;; +A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;; +A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;; +A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;; +A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;; +A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;; +A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;; +A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;; +A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;; +A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;; +A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;; +A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;; +A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;; +A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;; +A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;; +A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;; +A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;; +A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;; +A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;; +A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;; +A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;; +A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;; +A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;; +A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;; +A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;; +A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;; +A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;; +A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;; +A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;; +A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;; +A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;; +A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;; +A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;; +A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;; +A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;; +A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;; +A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;; +A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;; +A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;; +A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;; +A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;; +A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;; +A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;; +A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;; +A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;; +A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;; +A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;; +A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;; +A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;; +A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;; +A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;; +A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;; +A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;; +A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;; +A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;; +A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;; +A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;; +A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;; +A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;; +A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;; +A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;; +A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;; +A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;; +A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;; +A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;; +A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;; +A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;; +A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;; +A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;; +A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; +A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;; +A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; +A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; +A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; +A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;; +A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;; +A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; +A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;; +A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;; +A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;; +A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;; +A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;; +A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;; +A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;; +A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;; +A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;; +A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;; +A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;; +A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;; +A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;; +A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;; +A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;; +A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;; +A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;; +A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;; +A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;; +A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;; +A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;; +A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;; +A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;; +A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;; +A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;; +A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;; +A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;; +A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;; +A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;; +A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;; +A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; +A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;; +A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; +A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; +A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; +A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;; +A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;; +A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; +A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;; +A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;; +A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;; +A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;; +A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;; +A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;; +A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;; +A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;; +A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;; +A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;; +A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;; +A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;; +A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;; +A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;; +A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;; +A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;; +A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;; +A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;; +A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;; +A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;; +A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;; +A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;; +A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;; +A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;; +A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;; +A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;; +A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;; +A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;; +A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;; +A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;; +A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;; +A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; +A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;; +A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; +A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; +A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; +A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;; +A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;; +A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;; +A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;; +A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;; +A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;; +A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;; +A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;; +A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;; +A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;; +A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;; +A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;; +A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;; +A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;; +A60D;VAI COMMA;Po;0;ON;;;;;N;;;;; +A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;; +A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;; +A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;; +A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;; +A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;; +A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;; +A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;; +A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;; +A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;; +A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;; +A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;; +A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;; +A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;; +A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;; +A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;; +A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;; +A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;; +A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;; +A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;; +A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;; +A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641; +A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640 +A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643; +A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642 +A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645; +A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644 +A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647; +A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646 +A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649; +A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648 +A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B; +A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A +A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D; +A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C +A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F; +A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E +A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651; +A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650 +A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653; +A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652 +A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655; +A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654 +A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657; +A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656 +A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659; +A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658 +A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B; +A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A +A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D; +A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C +A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F; +A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E +A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663; +A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662 +A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665; +A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664 +A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667; +A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666 +A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669; +A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668 +A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B; +A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A +A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D; +A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C +A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;; +A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;; +A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; +A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;; +A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;; +A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;; +A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;; +A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;; +A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681; +A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680 +A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683; +A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682 +A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685; +A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684 +A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687; +A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686 +A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689; +A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688 +A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B; +A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A +A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D; +A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C +A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F; +A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E +A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691; +A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690 +A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693; +A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692 +A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695; +A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694 +A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697; +A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696 +A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;; +A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;; +A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;; +A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;; +A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;; +A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;; +A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;; +A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;; +A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; +A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; +A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;; +A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;; +A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;; +A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;; +A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;; +A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;; +A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; +A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; +A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; +A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;; +A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;; +A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723; +A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722 +A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725; +A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724 +A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727; +A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726 +A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729; +A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728 +A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B; +A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A +A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D; +A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C +A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F; +A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E +A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;; +A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;; +A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733; +A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732 +A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735; +A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734 +A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737; +A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736 +A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739; +A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738 +A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B; +A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A +A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D; +A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C +A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F; +A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E +A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741; +A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740 +A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743; +A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742 +A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745; +A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744 +A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747; +A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746 +A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749; +A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748 +A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B; +A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A +A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D; +A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C +A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F; +A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E +A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751; +A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750 +A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753; +A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752 +A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755; +A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754 +A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757; +A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756 +A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759; +A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758 +A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B; +A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A +A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D; +A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C +A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F; +A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E +A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761; +A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760 +A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763; +A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762 +A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765; +A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764 +A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767; +A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766 +A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769; +A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768 +A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B; +A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A +A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D; +A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C +A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F; +A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E +A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;; +A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;; +A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;; +A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;; +A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;; +A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;; +A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;; +A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;; +A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;; +A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A; +A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779 +A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C; +A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B +A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79; +A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F; +A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E +A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781; +A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780 +A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783; +A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782 +A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785; +A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784 +A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787; +A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786 +A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;; +A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;; +A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;; +A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C; +A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B +A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;; +A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;; +A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;; +A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;; +A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;; +A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;; +A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;; +A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;; +A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;; +A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;; +A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;; +A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;; +A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;; +A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;; +A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;; +A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;; +A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;; +A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;; +A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;; +A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;; +A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;; +A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;; +A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;; +A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;; +A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;; +A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;; +A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;; +A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;; +A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;; +A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;; +A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;; +A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;; +A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;; +A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;; +A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;; +A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;; +A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;; +A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;; +A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;; +A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;; +A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;; +A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;; +A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;; +A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;; +A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;; +A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;; +A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;; +A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;; +A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;; +A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;; +A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;; +A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;; +A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;; +A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;; +A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;; +A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;; +A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;; +A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;; +A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;; +A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;; +A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;; +A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;; +A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;; +A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;; +A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;; +A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;; +A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;; +A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;; +A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;; +A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;; +A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;; +A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;; +A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;; +A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;; +A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;; +A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;; +A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;; +A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;; +A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;; +A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;; +A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;; +A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;; +A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;; +A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;; +A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;; +A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;; +A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;; +A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;; +A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;; +A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;; +A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;; +A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;; +A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;; +A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;; +A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;; +A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;; +A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;; +A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;; +A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;; +A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;; +A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;; +A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;; +A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;; +A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;; +A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;; +A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;; +A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;; +A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;; +A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;; +A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;; +A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;; +A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;; +A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;; +A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;; +A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;; +A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;; +A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;; +A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;; +A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;; +A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;; +A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;; +A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;; +A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;; +A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;; +A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;; +A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;; +A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;; +A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;; +A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;; +A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;; +A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;; +A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;; +A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;; +A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;; +A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;; +A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;; +A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;; +A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;; +A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;; +A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;; +A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;; +A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;; +A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;; +A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;; +A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;; +A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;; +A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;; +A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;; +A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; +A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; +A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; +A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; +A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;; +A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;; +A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; +A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;; +A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;; +A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;; +A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;; +A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;; +A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;; +A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;; +A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;; +A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;; +A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;; +A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;; +A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;; +A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;; +A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;; +A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;; +A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;; +A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;; +A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;; +A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;; +A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;; +A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;; +A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;; +A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;; +A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;; +A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;; +A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;; +A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;; +A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;; +A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;; +A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;; +A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;; +A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;; +A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;; +A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;; +A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;; +A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;; +A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;; +A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;; +A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;; +A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;; +A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;; +A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;; +A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;; +A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;; +A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;; +A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;; +A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;; +A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;; +A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;; +A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;; +A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;; +A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;; +A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;; +A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;; +A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;; +A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;; +A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;; +A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;; +A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;; +A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;; +A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;; +A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;; +A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;; +A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;; +A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;; +A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;; +A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; +A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; +A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;; +A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;; +A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;; +AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;; +AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;; +AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;; +AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;; +AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;; +AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;; +AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;; +AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;; +AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;; +AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;; +AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;; +AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;; +AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;; +AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;; +AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;; +AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;; +AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;; +AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;; +AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;; +AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;; +AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;; +AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;; +AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;; +AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;; +AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;; +AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;; +AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;; +AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;; +AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;; +AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;; +AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;; +AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;; +AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;; +AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;; +AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;; +AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;; +AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;; +AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;; +AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;; +AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;; +AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;; +AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; +AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;; +AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;; +AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;; +AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; +AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;; +AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;; +AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;; +AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;; +AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;; +AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;; +AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;; +AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;; +AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;; +AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;; +AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;; +AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;; +AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;; +AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;; +AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;; +AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;; +AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;; +AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;; +AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;; +AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;; +AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;; +AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;; +AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;; +AC00;HANGUL SYLLABLE GA;Lo;0;L;;;;;N;;;;; +AC01;HANGUL SYLLABLE GAG;Lo;0;L;;;;;N;;;;; +AC02;HANGUL SYLLABLE GAGG;Lo;0;L;;;;;N;;;;; +AC03;HANGUL SYLLABLE GAGS;Lo;0;L;;;;;N;;;;; +AC04;HANGUL SYLLABLE GAN;Lo;0;L;;;;;N;;;;; +AC05;HANGUL SYLLABLE GANI;Lo;0;L;;;;;N;;;;; +AC06;HANGUL SYLLABLE GANH;Lo;0;L;;;;;N;;;;; +AC07;HANGUL SYLLABLE GAD;Lo;0;L;;;;;N;;;;; +AC08;HANGUL SYLLABLE GAL;Lo;0;L;;;;;N;;;;; +AC09;HANGUL SYLLABLE GALG;Lo;0;L;;;;;N;;;;; +AC0A;HANGUL SYLLABLE GALM;Lo;0;L;;;;;N;;;;; +AC0B;HANGUL SYLLABLE GALB;Lo;0;L;;;;;N;;;;; +AC0C;HANGUL SYLLABLE GALS;Lo;0;L;;;;;N;;;;; +AC0D;HANGUL SYLLABLE GALT;Lo;0;L;;;;;N;;;;; +AC0E;HANGUL SYLLABLE GALP;Lo;0;L;;;;;N;;;;; +AC0F;HANGUL SYLLABLE GALH;Lo;0;L;;;;;N;;;;; +AC10;HANGUL SYLLABLE GAM;Lo;0;L;;;;;N;;;;; +AC11;HANGUL SYLLABLE GAB;Lo;0;L;;;;;N;;;;; +AC12;HANGUL SYLLABLE GABS;Lo;0;L;;;;;N;;;;; +AC13;HANGUL SYLLABLE GAS;Lo;0;L;;;;;N;;;;; +AC14;HANGUL SYLLABLE GASS;Lo;0;L;;;;;N;;;;; +AC15;HANGUL SYLLABLE GANG;Lo;0;L;;;;;N;;;;; +AC16;HANGUL SYLLABLE GAJ;Lo;0;L;;;;;N;;;;; +AC17;HANGUL SYLLABLE GAC;Lo;0;L;;;;;N;;;;; +AC18;HANGUL SYLLABLE GAK;Lo;0;L;;;;;N;;;;; +AC19;HANGUL SYLLABLE GAT;Lo;0;L;;;;;N;;;;; +AC1A;HANGUL SYLLABLE GAP;Lo;0;L;;;;;N;;;;; +AC1B;HANGUL SYLLABLE GAH;Lo;0;L;;;;;N;;;;; +AC1C;HANGUL SYLLABLE GAE;Lo;0;L;;;;;N;;;;; +AC1D;HANGUL SYLLABLE GAEG;Lo;0;L;;;;;N;;;;; +AC1E;HANGUL SYLLABLE GAEGG;Lo;0;L;;;;;N;;;;; +AC1F;HANGUL SYLLABLE GAEGS;Lo;0;L;;;;;N;;;;; +AC20;HANGUL SYLLABLE GAEN;Lo;0;L;;;;;N;;;;; +AC21;HANGUL SYLLABLE GAENI;Lo;0;L;;;;;N;;;;; +AC22;HANGUL SYLLABLE GAENH;Lo;0;L;;;;;N;;;;; +AC23;HANGUL SYLLABLE GAED;Lo;0;L;;;;;N;;;;; +AC24;HANGUL SYLLABLE GAEL;Lo;0;L;;;;;N;;;;; +AC25;HANGUL SYLLABLE GAELG;Lo;0;L;;;;;N;;;;; +AC26;HANGUL SYLLABLE GAELM;Lo;0;L;;;;;N;;;;; +AC27;HANGUL SYLLABLE GAELB;Lo;0;L;;;;;N;;;;; +AC28;HANGUL SYLLABLE GAELS;Lo;0;L;;;;;N;;;;; +AC29;HANGUL SYLLABLE GAELT;Lo;0;L;;;;;N;;;;; +AC2A;HANGUL SYLLABLE GAELP;Lo;0;L;;;;;N;;;;; +AC2B;HANGUL SYLLABLE GAELH;Lo;0;L;;;;;N;;;;; +AC2C;HANGUL SYLLABLE GAEM;Lo;0;L;;;;;N;;;;; +AC2D;HANGUL SYLLABLE GAEB;Lo;0;L;;;;;N;;;;; +AC2E;HANGUL SYLLABLE GAEBS;Lo;0;L;;;;;N;;;;; +AC2F;HANGUL SYLLABLE GAES;Lo;0;L;;;;;N;;;;; +AC30;HANGUL SYLLABLE GAESS;Lo;0;L;;;;;N;;;;; +AC31;HANGUL SYLLABLE GAENG;Lo;0;L;;;;;N;;;;; +AC32;HANGUL SYLLABLE GAEJ;Lo;0;L;;;;;N;;;;; +AC33;HANGUL SYLLABLE GAEC;Lo;0;L;;;;;N;;;;; +AC34;HANGUL SYLLABLE GAEK;Lo;0;L;;;;;N;;;;; +AC35;HANGUL SYLLABLE GAET;Lo;0;L;;;;;N;;;;; +AC36;HANGUL SYLLABLE GAEP;Lo;0;L;;;;;N;;;;; +AC37;HANGUL SYLLABLE GAEH;Lo;0;L;;;;;N;;;;; +AC38;HANGUL SYLLABLE GYA;Lo;0;L;;;;;N;;;;; +AC39;HANGUL SYLLABLE GYAG;Lo;0;L;;;;;N;;;;; +AC3A;HANGUL SYLLABLE GYAGG;Lo;0;L;;;;;N;;;;; +AC3B;HANGUL SYLLABLE GYAGS;Lo;0;L;;;;;N;;;;; +AC3C;HANGUL SYLLABLE GYAN;Lo;0;L;;;;;N;;;;; +AC3D;HANGUL SYLLABLE GYANI;Lo;0;L;;;;;N;;;;; +AC3E;HANGUL SYLLABLE GYANH;Lo;0;L;;;;;N;;;;; +AC3F;HANGUL SYLLABLE GYAD;Lo;0;L;;;;;N;;;;; +AC40;HANGUL SYLLABLE GYAL;Lo;0;L;;;;;N;;;;; +AC41;HANGUL SYLLABLE GYALG;Lo;0;L;;;;;N;;;;; +AC42;HANGUL SYLLABLE GYALM;Lo;0;L;;;;;N;;;;; +AC43;HANGUL SYLLABLE GYALB;Lo;0;L;;;;;N;;;;; +AC44;HANGUL SYLLABLE GYALS;Lo;0;L;;;;;N;;;;; +AC45;HANGUL SYLLABLE GYALT;Lo;0;L;;;;;N;;;;; +AC46;HANGUL SYLLABLE GYALP;Lo;0;L;;;;;N;;;;; +AC47;HANGUL SYLLABLE GYALH;Lo;0;L;;;;;N;;;;; +AC48;HANGUL SYLLABLE GYAM;Lo;0;L;;;;;N;;;;; +AC49;HANGUL SYLLABLE GYAB;Lo;0;L;;;;;N;;;;; +AC4A;HANGUL SYLLABLE GYABS;Lo;0;L;;;;;N;;;;; +AC4B;HANGUL SYLLABLE GYAS;Lo;0;L;;;;;N;;;;; +AC4C;HANGUL SYLLABLE GYASS;Lo;0;L;;;;;N;;;;; +AC4D;HANGUL SYLLABLE GYANG;Lo;0;L;;;;;N;;;;; +AC4E;HANGUL SYLLABLE GYAJ;Lo;0;L;;;;;N;;;;; +AC4F;HANGUL SYLLABLE GYAC;Lo;0;L;;;;;N;;;;; +AC50;HANGUL SYLLABLE GYAK;Lo;0;L;;;;;N;;;;; +AC51;HANGUL SYLLABLE GYAT;Lo;0;L;;;;;N;;;;; +AC52;HANGUL SYLLABLE GYAP;Lo;0;L;;;;;N;;;;; +AC53;HANGUL SYLLABLE GYAH;Lo;0;L;;;;;N;;;;; +AC54;HANGUL SYLLABLE GYAE;Lo;0;L;;;;;N;;;;; +AC55;HANGUL SYLLABLE GYAEG;Lo;0;L;;;;;N;;;;; +AC56;HANGUL SYLLABLE GYAEGG;Lo;0;L;;;;;N;;;;; +AC57;HANGUL SYLLABLE GYAEGS;Lo;0;L;;;;;N;;;;; +AC58;HANGUL SYLLABLE GYAEN;Lo;0;L;;;;;N;;;;; +AC59;HANGUL SYLLABLE GYAENI;Lo;0;L;;;;;N;;;;; +AC5A;HANGUL SYLLABLE GYAENH;Lo;0;L;;;;;N;;;;; +AC5B;HANGUL SYLLABLE GYAED;Lo;0;L;;;;;N;;;;; +AC5C;HANGUL SYLLABLE GYAEL;Lo;0;L;;;;;N;;;;; +AC5D;HANGUL SYLLABLE GYAELG;Lo;0;L;;;;;N;;;;; +AC5E;HANGUL SYLLABLE GYAELM;Lo;0;L;;;;;N;;;;; +AC5F;HANGUL SYLLABLE GYAELB;Lo;0;L;;;;;N;;;;; +AC60;HANGUL SYLLABLE GYAELS;Lo;0;L;;;;;N;;;;; +AC61;HANGUL SYLLABLE GYAELT;Lo;0;L;;;;;N;;;;; +AC62;HANGUL SYLLABLE GYAELP;Lo;0;L;;;;;N;;;;; +AC63;HANGUL SYLLABLE GYAELH;Lo;0;L;;;;;N;;;;; +AC64;HANGUL SYLLABLE GYAEM;Lo;0;L;;;;;N;;;;; +AC65;HANGUL SYLLABLE GYAEB;Lo;0;L;;;;;N;;;;; +AC66;HANGUL SYLLABLE GYAEBS;Lo;0;L;;;;;N;;;;; +AC67;HANGUL SYLLABLE GYAES;Lo;0;L;;;;;N;;;;; +AC68;HANGUL SYLLABLE GYAESS;Lo;0;L;;;;;N;;;;; +AC69;HANGUL SYLLABLE GYAENG;Lo;0;L;;;;;N;;;;; +AC6A;HANGUL SYLLABLE GYAEJ;Lo;0;L;;;;;N;;;;; +AC6B;HANGUL SYLLABLE GYAEC;Lo;0;L;;;;;N;;;;; +AC6C;HANGUL SYLLABLE GYAEK;Lo;0;L;;;;;N;;;;; +AC6D;HANGUL SYLLABLE GYAET;Lo;0;L;;;;;N;;;;; +AC6E;HANGUL SYLLABLE GYAEP;Lo;0;L;;;;;N;;;;; +AC6F;HANGUL SYLLABLE GYAEH;Lo;0;L;;;;;N;;;;; +AC70;HANGUL SYLLABLE GEO;Lo;0;L;;;;;N;;;;; +AC71;HANGUL SYLLABLE GEOG;Lo;0;L;;;;;N;;;;; +AC72;HANGUL SYLLABLE GEOGG;Lo;0;L;;;;;N;;;;; +AC73;HANGUL SYLLABLE GEOGS;Lo;0;L;;;;;N;;;;; +AC74;HANGUL SYLLABLE GEON;Lo;0;L;;;;;N;;;;; +AC75;HANGUL SYLLABLE GEONI;Lo;0;L;;;;;N;;;;; +AC76;HANGUL SYLLABLE GEONH;Lo;0;L;;;;;N;;;;; +AC77;HANGUL SYLLABLE GEOD;Lo;0;L;;;;;N;;;;; +AC78;HANGUL SYLLABLE GEOL;Lo;0;L;;;;;N;;;;; +AC79;HANGUL SYLLABLE GEOLG;Lo;0;L;;;;;N;;;;; +AC7A;HANGUL SYLLABLE GEOLM;Lo;0;L;;;;;N;;;;; +AC7B;HANGUL SYLLABLE GEOLB;Lo;0;L;;;;;N;;;;; +AC7C;HANGUL SYLLABLE GEOLS;Lo;0;L;;;;;N;;;;; +AC7D;HANGUL SYLLABLE GEOLT;Lo;0;L;;;;;N;;;;; +AC7E;HANGUL SYLLABLE GEOLP;Lo;0;L;;;;;N;;;;; +AC7F;HANGUL SYLLABLE GEOLH;Lo;0;L;;;;;N;;;;; +AC80;HANGUL SYLLABLE GEOM;Lo;0;L;;;;;N;;;;; +AC81;HANGUL SYLLABLE GEOB;Lo;0;L;;;;;N;;;;; +AC82;HANGUL SYLLABLE GEOBS;Lo;0;L;;;;;N;;;;; +AC83;HANGUL SYLLABLE GEOS;Lo;0;L;;;;;N;;;;; +AC84;HANGUL SYLLABLE GEOSS;Lo;0;L;;;;;N;;;;; +AC85;HANGUL SYLLABLE GEONG;Lo;0;L;;;;;N;;;;; +AC86;HANGUL SYLLABLE GEOJ;Lo;0;L;;;;;N;;;;; +AC87;HANGUL SYLLABLE GEOC;Lo;0;L;;;;;N;;;;; +AC88;HANGUL SYLLABLE GEOK;Lo;0;L;;;;;N;;;;; +AC89;HANGUL SYLLABLE GEOT;Lo;0;L;;;;;N;;;;; +AC8A;HANGUL SYLLABLE GEOP;Lo;0;L;;;;;N;;;;; +AC8B;HANGUL SYLLABLE GEOH;Lo;0;L;;;;;N;;;;; +AC8C;HANGUL SYLLABLE GE;Lo;0;L;;;;;N;;;;; +AC8D;HANGUL SYLLABLE GEG;Lo;0;L;;;;;N;;;;; +AC8E;HANGUL SYLLABLE GEGG;Lo;0;L;;;;;N;;;;; +AC8F;HANGUL SYLLABLE GEGS;Lo;0;L;;;;;N;;;;; +AC90;HANGUL SYLLABLE GEN;Lo;0;L;;;;;N;;;;; +AC91;HANGUL SYLLABLE GENI;Lo;0;L;;;;;N;;;;; +AC92;HANGUL SYLLABLE GENH;Lo;0;L;;;;;N;;;;; +AC93;HANGUL SYLLABLE GED;Lo;0;L;;;;;N;;;;; +AC94;HANGUL SYLLABLE GEL;Lo;0;L;;;;;N;;;;; +AC95;HANGUL SYLLABLE GELG;Lo;0;L;;;;;N;;;;; +AC96;HANGUL SYLLABLE GELM;Lo;0;L;;;;;N;;;;; +AC97;HANGUL SYLLABLE GELB;Lo;0;L;;;;;N;;;;; +AC98;HANGUL SYLLABLE GELS;Lo;0;L;;;;;N;;;;; +AC99;HANGUL SYLLABLE GELT;Lo;0;L;;;;;N;;;;; +AC9A;HANGUL SYLLABLE GELP;Lo;0;L;;;;;N;;;;; +AC9B;HANGUL SYLLABLE GELH;Lo;0;L;;;;;N;;;;; +AC9C;HANGUL SYLLABLE GEM;Lo;0;L;;;;;N;;;;; +AC9D;HANGUL SYLLABLE GEB;Lo;0;L;;;;;N;;;;; +AC9E;HANGUL SYLLABLE GEBS;Lo;0;L;;;;;N;;;;; +AC9F;HANGUL SYLLABLE GES;Lo;0;L;;;;;N;;;;; +ACA0;HANGUL SYLLABLE GESS;Lo;0;L;;;;;N;;;;; +ACA1;HANGUL SYLLABLE GENG;Lo;0;L;;;;;N;;;;; +ACA2;HANGUL SYLLABLE GEJ;Lo;0;L;;;;;N;;;;; +ACA3;HANGUL SYLLABLE GEC;Lo;0;L;;;;;N;;;;; +ACA4;HANGUL SYLLABLE GEK;Lo;0;L;;;;;N;;;;; +ACA5;HANGUL SYLLABLE GET;Lo;0;L;;;;;N;;;;; +ACA6;HANGUL SYLLABLE GEP;Lo;0;L;;;;;N;;;;; +ACA7;HANGUL SYLLABLE GEH;Lo;0;L;;;;;N;;;;; +ACA8;HANGUL SYLLABLE GYEO;Lo;0;L;;;;;N;;;;; +ACA9;HANGUL SYLLABLE GYEOG;Lo;0;L;;;;;N;;;;; +ACAA;HANGUL SYLLABLE GYEOGG;Lo;0;L;;;;;N;;;;; +ACAB;HANGUL SYLLABLE GYEOGS;Lo;0;L;;;;;N;;;;; +ACAC;HANGUL SYLLABLE GYEON;Lo;0;L;;;;;N;;;;; +ACAD;HANGUL SYLLABLE GYEONI;Lo;0;L;;;;;N;;;;; +ACAE;HANGUL SYLLABLE GYEONH;Lo;0;L;;;;;N;;;;; +ACAF;HANGUL SYLLABLE GYEOD;Lo;0;L;;;;;N;;;;; +ACB0;HANGUL SYLLABLE GYEOL;Lo;0;L;;;;;N;;;;; +ACB1;HANGUL SYLLABLE GYEOLG;Lo;0;L;;;;;N;;;;; +ACB2;HANGUL SYLLABLE GYEOLM;Lo;0;L;;;;;N;;;;; +ACB3;HANGUL SYLLABLE GYEOLB;Lo;0;L;;;;;N;;;;; +ACB4;HANGUL SYLLABLE GYEOLS;Lo;0;L;;;;;N;;;;; +ACB5;HANGUL SYLLABLE GYEOLT;Lo;0;L;;;;;N;;;;; +ACB6;HANGUL SYLLABLE GYEOLP;Lo;0;L;;;;;N;;;;; +ACB7;HANGUL SYLLABLE GYEOLH;Lo;0;L;;;;;N;;;;; +ACB8;HANGUL SYLLABLE GYEOM;Lo;0;L;;;;;N;;;;; +ACB9;HANGUL SYLLABLE GYEOB;Lo;0;L;;;;;N;;;;; +ACBA;HANGUL SYLLABLE GYEOBS;Lo;0;L;;;;;N;;;;; +ACBB;HANGUL SYLLABLE GYEOS;Lo;0;L;;;;;N;;;;; +ACBC;HANGUL SYLLABLE GYEOSS;Lo;0;L;;;;;N;;;;; +ACBD;HANGUL SYLLABLE GYEONG;Lo;0;L;;;;;N;;;;; +ACBE;HANGUL SYLLABLE GYEOJ;Lo;0;L;;;;;N;;;;; +ACBF;HANGUL SYLLABLE GYEOC;Lo;0;L;;;;;N;;;;; +ACC0;HANGUL SYLLABLE GYEOK;Lo;0;L;;;;;N;;;;; +ACC1;HANGUL SYLLABLE GYEOT;Lo;0;L;;;;;N;;;;; +ACC2;HANGUL SYLLABLE GYEOP;Lo;0;L;;;;;N;;;;; +ACC3;HANGUL SYLLABLE GYEOH;Lo;0;L;;;;;N;;;;; +ACC4;HANGUL SYLLABLE GYE;Lo;0;L;;;;;N;;;;; +ACC5;HANGUL SYLLABLE GYEG;Lo;0;L;;;;;N;;;;; +ACC6;HANGUL SYLLABLE GYEGG;Lo;0;L;;;;;N;;;;; +ACC7;HANGUL SYLLABLE GYEGS;Lo;0;L;;;;;N;;;;; +ACC8;HANGUL SYLLABLE GYEN;Lo;0;L;;;;;N;;;;; +ACC9;HANGUL SYLLABLE GYENI;Lo;0;L;;;;;N;;;;; +ACCA;HANGUL SYLLABLE GYENH;Lo;0;L;;;;;N;;;;; +ACCB;HANGUL SYLLABLE GYED;Lo;0;L;;;;;N;;;;; +ACCC;HANGUL SYLLABLE GYEL;Lo;0;L;;;;;N;;;;; +ACCD;HANGUL SYLLABLE GYELG;Lo;0;L;;;;;N;;;;; +ACCE;HANGUL SYLLABLE GYELM;Lo;0;L;;;;;N;;;;; +ACCF;HANGUL SYLLABLE GYELB;Lo;0;L;;;;;N;;;;; +ACD0;HANGUL SYLLABLE GYELS;Lo;0;L;;;;;N;;;;; +ACD1;HANGUL SYLLABLE GYELT;Lo;0;L;;;;;N;;;;; +ACD2;HANGUL SYLLABLE GYELP;Lo;0;L;;;;;N;;;;; +ACD3;HANGUL SYLLABLE GYELH;Lo;0;L;;;;;N;;;;; +ACD4;HANGUL SYLLABLE GYEM;Lo;0;L;;;;;N;;;;; +ACD5;HANGUL SYLLABLE GYEB;Lo;0;L;;;;;N;;;;; +ACD6;HANGUL SYLLABLE GYEBS;Lo;0;L;;;;;N;;;;; +ACD7;HANGUL SYLLABLE GYES;Lo;0;L;;;;;N;;;;; +ACD8;HANGUL SYLLABLE GYESS;Lo;0;L;;;;;N;;;;; +ACD9;HANGUL SYLLABLE GYENG;Lo;0;L;;;;;N;;;;; +ACDA;HANGUL SYLLABLE GYEJ;Lo;0;L;;;;;N;;;;; +ACDB;HANGUL SYLLABLE GYEC;Lo;0;L;;;;;N;;;;; +ACDC;HANGUL SYLLABLE GYEK;Lo;0;L;;;;;N;;;;; +ACDD;HANGUL SYLLABLE GYET;Lo;0;L;;;;;N;;;;; +ACDE;HANGUL SYLLABLE GYEP;Lo;0;L;;;;;N;;;;; +ACDF;HANGUL SYLLABLE GYEH;Lo;0;L;;;;;N;;;;; +ACE0;HANGUL SYLLABLE GO;Lo;0;L;;;;;N;;;;; +ACE1;HANGUL SYLLABLE GOG;Lo;0;L;;;;;N;;;;; +ACE2;HANGUL SYLLABLE GOGG;Lo;0;L;;;;;N;;;;; +ACE3;HANGUL SYLLABLE GOGS;Lo;0;L;;;;;N;;;;; +ACE4;HANGUL SYLLABLE GON;Lo;0;L;;;;;N;;;;; +ACE5;HANGUL SYLLABLE GONI;Lo;0;L;;;;;N;;;;; +ACE6;HANGUL SYLLABLE GONH;Lo;0;L;;;;;N;;;;; +ACE7;HANGUL SYLLABLE GOD;Lo;0;L;;;;;N;;;;; +ACE8;HANGUL SYLLABLE GOL;Lo;0;L;;;;;N;;;;; +ACE9;HANGUL SYLLABLE GOLG;Lo;0;L;;;;;N;;;;; +ACEA;HANGUL SYLLABLE GOLM;Lo;0;L;;;;;N;;;;; +ACEB;HANGUL SYLLABLE GOLB;Lo;0;L;;;;;N;;;;; +ACEC;HANGUL SYLLABLE GOLS;Lo;0;L;;;;;N;;;;; +ACED;HANGUL SYLLABLE GOLT;Lo;0;L;;;;;N;;;;; +ACEE;HANGUL SYLLABLE GOLP;Lo;0;L;;;;;N;;;;; +ACEF;HANGUL SYLLABLE GOLH;Lo;0;L;;;;;N;;;;; +ACF0;HANGUL SYLLABLE GOM;Lo;0;L;;;;;N;;;;; +ACF1;HANGUL SYLLABLE GOB;Lo;0;L;;;;;N;;;;; +ACF2;HANGUL SYLLABLE GOBS;Lo;0;L;;;;;N;;;;; +ACF3;HANGUL SYLLABLE GOS;Lo;0;L;;;;;N;;;;; +ACF4;HANGUL SYLLABLE GOSS;Lo;0;L;;;;;N;;;;; +ACF5;HANGUL SYLLABLE GONG;Lo;0;L;;;;;N;;;;; +ACF6;HANGUL SYLLABLE GOJ;Lo;0;L;;;;;N;;;;; +ACF7;HANGUL SYLLABLE GOC;Lo;0;L;;;;;N;;;;; +ACF8;HANGUL SYLLABLE GOK;Lo;0;L;;;;;N;;;;; +ACF9;HANGUL SYLLABLE GOT;Lo;0;L;;;;;N;;;;; +ACFA;HANGUL SYLLABLE GOP;Lo;0;L;;;;;N;;;;; +ACFB;HANGUL SYLLABLE GOH;Lo;0;L;;;;;N;;;;; +ACFC;HANGUL SYLLABLE GWA;Lo;0;L;;;;;N;;;;; +ACFD;HANGUL SYLLABLE GWAG;Lo;0;L;;;;;N;;;;; +ACFE;HANGUL SYLLABLE GWAGG;Lo;0;L;;;;;N;;;;; +ACFF;HANGUL SYLLABLE GWAGS;Lo;0;L;;;;;N;;;;; +AD00;HANGUL SYLLABLE GWAN;Lo;0;L;;;;;N;;;;; +AD01;HANGUL SYLLABLE GWANI;Lo;0;L;;;;;N;;;;; +AD02;HANGUL SYLLABLE GWANH;Lo;0;L;;;;;N;;;;; +AD03;HANGUL SYLLABLE GWAD;Lo;0;L;;;;;N;;;;; +AD04;HANGUL SYLLABLE GWAL;Lo;0;L;;;;;N;;;;; +AD05;HANGUL SYLLABLE GWALG;Lo;0;L;;;;;N;;;;; +AD06;HANGUL SYLLABLE GWALM;Lo;0;L;;;;;N;;;;; +AD07;HANGUL SYLLABLE GWALB;Lo;0;L;;;;;N;;;;; +AD08;HANGUL SYLLABLE GWALS;Lo;0;L;;;;;N;;;;; +AD09;HANGUL SYLLABLE GWALT;Lo;0;L;;;;;N;;;;; +AD0A;HANGUL SYLLABLE GWALP;Lo;0;L;;;;;N;;;;; +AD0B;HANGUL SYLLABLE GWALH;Lo;0;L;;;;;N;;;;; +AD0C;HANGUL SYLLABLE GWAM;Lo;0;L;;;;;N;;;;; +AD0D;HANGUL SYLLABLE GWAB;Lo;0;L;;;;;N;;;;; +AD0E;HANGUL SYLLABLE GWABS;Lo;0;L;;;;;N;;;;; +AD0F;HANGUL SYLLABLE GWAS;Lo;0;L;;;;;N;;;;; +AD10;HANGUL SYLLABLE GWASS;Lo;0;L;;;;;N;;;;; +AD11;HANGUL SYLLABLE GWANG;Lo;0;L;;;;;N;;;;; +AD12;HANGUL SYLLABLE GWAJ;Lo;0;L;;;;;N;;;;; +AD13;HANGUL SYLLABLE GWAC;Lo;0;L;;;;;N;;;;; +AD14;HANGUL SYLLABLE GWAK;Lo;0;L;;;;;N;;;;; +AD15;HANGUL SYLLABLE GWAT;Lo;0;L;;;;;N;;;;; +AD16;HANGUL SYLLABLE GWAP;Lo;0;L;;;;;N;;;;; +AD17;HANGUL SYLLABLE GWAH;Lo;0;L;;;;;N;;;;; +AD18;HANGUL SYLLABLE GWAE;Lo;0;L;;;;;N;;;;; +AD19;HANGUL SYLLABLE GWAEG;Lo;0;L;;;;;N;;;;; +AD1A;HANGUL SYLLABLE GWAEGG;Lo;0;L;;;;;N;;;;; +AD1B;HANGUL SYLLABLE GWAEGS;Lo;0;L;;;;;N;;;;; +AD1C;HANGUL SYLLABLE GWAEN;Lo;0;L;;;;;N;;;;; +AD1D;HANGUL SYLLABLE GWAENI;Lo;0;L;;;;;N;;;;; +AD1E;HANGUL SYLLABLE GWAENH;Lo;0;L;;;;;N;;;;; +AD1F;HANGUL SYLLABLE GWAED;Lo;0;L;;;;;N;;;;; +AD20;HANGUL SYLLABLE GWAEL;Lo;0;L;;;;;N;;;;; +AD21;HANGUL SYLLABLE GWAELG;Lo;0;L;;;;;N;;;;; +AD22;HANGUL SYLLABLE GWAELM;Lo;0;L;;;;;N;;;;; +AD23;HANGUL SYLLABLE GWAELB;Lo;0;L;;;;;N;;;;; +AD24;HANGUL SYLLABLE GWAELS;Lo;0;L;;;;;N;;;;; +AD25;HANGUL SYLLABLE GWAELT;Lo;0;L;;;;;N;;;;; +AD26;HANGUL SYLLABLE GWAELP;Lo;0;L;;;;;N;;;;; +AD27;HANGUL SYLLABLE GWAELH;Lo;0;L;;;;;N;;;;; +AD28;HANGUL SYLLABLE GWAEM;Lo;0;L;;;;;N;;;;; +AD29;HANGUL SYLLABLE GWAEB;Lo;0;L;;;;;N;;;;; +AD2A;HANGUL SYLLABLE GWAEBS;Lo;0;L;;;;;N;;;;; +AD2B;HANGUL SYLLABLE GWAES;Lo;0;L;;;;;N;;;;; +AD2C;HANGUL SYLLABLE GWAESS;Lo;0;L;;;;;N;;;;; +AD2D;HANGUL SYLLABLE GWAENG;Lo;0;L;;;;;N;;;;; +AD2E;HANGUL SYLLABLE GWAEJ;Lo;0;L;;;;;N;;;;; +AD2F;HANGUL SYLLABLE GWAEC;Lo;0;L;;;;;N;;;;; +AD30;HANGUL SYLLABLE GWAEK;Lo;0;L;;;;;N;;;;; +AD31;HANGUL SYLLABLE GWAET;Lo;0;L;;;;;N;;;;; +AD32;HANGUL SYLLABLE GWAEP;Lo;0;L;;;;;N;;;;; +AD33;HANGUL SYLLABLE GWAEH;Lo;0;L;;;;;N;;;;; +AD34;HANGUL SYLLABLE GOE;Lo;0;L;;;;;N;;;;; +AD35;HANGUL SYLLABLE GOEG;Lo;0;L;;;;;N;;;;; +AD36;HANGUL SYLLABLE GOEGG;Lo;0;L;;;;;N;;;;; +AD37;HANGUL SYLLABLE GOEGS;Lo;0;L;;;;;N;;;;; +AD38;HANGUL SYLLABLE GOEN;Lo;0;L;;;;;N;;;;; +AD39;HANGUL SYLLABLE GOENI;Lo;0;L;;;;;N;;;;; +AD3A;HANGUL SYLLABLE GOENH;Lo;0;L;;;;;N;;;;; +AD3B;HANGUL SYLLABLE GOED;Lo;0;L;;;;;N;;;;; +AD3C;HANGUL SYLLABLE GOEL;Lo;0;L;;;;;N;;;;; +AD3D;HANGUL SYLLABLE GOELG;Lo;0;L;;;;;N;;;;; +AD3E;HANGUL SYLLABLE GOELM;Lo;0;L;;;;;N;;;;; +AD3F;HANGUL SYLLABLE GOELB;Lo;0;L;;;;;N;;;;; +AD40;HANGUL SYLLABLE GOELS;Lo;0;L;;;;;N;;;;; +AD41;HANGUL SYLLABLE GOELT;Lo;0;L;;;;;N;;;;; +AD42;HANGUL SYLLABLE GOELP;Lo;0;L;;;;;N;;;;; +AD43;HANGUL SYLLABLE GOELH;Lo;0;L;;;;;N;;;;; +AD44;HANGUL SYLLABLE GOEM;Lo;0;L;;;;;N;;;;; +AD45;HANGUL SYLLABLE GOEB;Lo;0;L;;;;;N;;;;; +AD46;HANGUL SYLLABLE GOEBS;Lo;0;L;;;;;N;;;;; +AD47;HANGUL SYLLABLE GOES;Lo;0;L;;;;;N;;;;; +AD48;HANGUL SYLLABLE GOESS;Lo;0;L;;;;;N;;;;; +AD49;HANGUL SYLLABLE GOENG;Lo;0;L;;;;;N;;;;; +AD4A;HANGUL SYLLABLE GOEJ;Lo;0;L;;;;;N;;;;; +AD4B;HANGUL SYLLABLE GOEC;Lo;0;L;;;;;N;;;;; +AD4C;HANGUL SYLLABLE GOEK;Lo;0;L;;;;;N;;;;; +AD4D;HANGUL SYLLABLE GOET;Lo;0;L;;;;;N;;;;; +AD4E;HANGUL SYLLABLE GOEP;Lo;0;L;;;;;N;;;;; +AD4F;HANGUL SYLLABLE GOEH;Lo;0;L;;;;;N;;;;; +AD50;HANGUL SYLLABLE GYO;Lo;0;L;;;;;N;;;;; +AD51;HANGUL SYLLABLE GYOG;Lo;0;L;;;;;N;;;;; +AD52;HANGUL SYLLABLE GYOGG;Lo;0;L;;;;;N;;;;; +AD53;HANGUL SYLLABLE GYOGS;Lo;0;L;;;;;N;;;;; +AD54;HANGUL SYLLABLE GYON;Lo;0;L;;;;;N;;;;; +AD55;HANGUL SYLLABLE GYONI;Lo;0;L;;;;;N;;;;; +AD56;HANGUL SYLLABLE GYONH;Lo;0;L;;;;;N;;;;; +AD57;HANGUL SYLLABLE GYOD;Lo;0;L;;;;;N;;;;; +AD58;HANGUL SYLLABLE GYOL;Lo;0;L;;;;;N;;;;; +AD59;HANGUL SYLLABLE GYOLG;Lo;0;L;;;;;N;;;;; +AD5A;HANGUL SYLLABLE GYOLM;Lo;0;L;;;;;N;;;;; +AD5B;HANGUL SYLLABLE GYOLB;Lo;0;L;;;;;N;;;;; +AD5C;HANGUL SYLLABLE GYOLS;Lo;0;L;;;;;N;;;;; +AD5D;HANGUL SYLLABLE GYOLT;Lo;0;L;;;;;N;;;;; +AD5E;HANGUL SYLLABLE GYOLP;Lo;0;L;;;;;N;;;;; +AD5F;HANGUL SYLLABLE GYOLH;Lo;0;L;;;;;N;;;;; +AD60;HANGUL SYLLABLE GYOM;Lo;0;L;;;;;N;;;;; +AD61;HANGUL SYLLABLE GYOB;Lo;0;L;;;;;N;;;;; +AD62;HANGUL SYLLABLE GYOBS;Lo;0;L;;;;;N;;;;; +AD63;HANGUL SYLLABLE GYOS;Lo;0;L;;;;;N;;;;; +AD64;HANGUL SYLLABLE GYOSS;Lo;0;L;;;;;N;;;;; +AD65;HANGUL SYLLABLE GYONG;Lo;0;L;;;;;N;;;;; +AD66;HANGUL SYLLABLE GYOJ;Lo;0;L;;;;;N;;;;; +AD67;HANGUL SYLLABLE GYOC;Lo;0;L;;;;;N;;;;; +AD68;HANGUL SYLLABLE GYOK;Lo;0;L;;;;;N;;;;; +AD69;HANGUL SYLLABLE GYOT;Lo;0;L;;;;;N;;;;; +AD6A;HANGUL SYLLABLE GYOP;Lo;0;L;;;;;N;;;;; +AD6B;HANGUL SYLLABLE GYOH;Lo;0;L;;;;;N;;;;; +AD6C;HANGUL SYLLABLE GU;Lo;0;L;;;;;N;;;;; +AD6D;HANGUL SYLLABLE GUG;Lo;0;L;;;;;N;;;;; +AD6E;HANGUL SYLLABLE GUGG;Lo;0;L;;;;;N;;;;; +AD6F;HANGUL SYLLABLE GUGS;Lo;0;L;;;;;N;;;;; +AD70;HANGUL SYLLABLE GUN;Lo;0;L;;;;;N;;;;; +AD71;HANGUL SYLLABLE GUNI;Lo;0;L;;;;;N;;;;; +AD72;HANGUL SYLLABLE GUNH;Lo;0;L;;;;;N;;;;; +AD73;HANGUL SYLLABLE GUD;Lo;0;L;;;;;N;;;;; +AD74;HANGUL SYLLABLE GUL;Lo;0;L;;;;;N;;;;; +AD75;HANGUL SYLLABLE GULG;Lo;0;L;;;;;N;;;;; +AD76;HANGUL SYLLABLE GULM;Lo;0;L;;;;;N;;;;; +AD77;HANGUL SYLLABLE GULB;Lo;0;L;;;;;N;;;;; +AD78;HANGUL SYLLABLE GULS;Lo;0;L;;;;;N;;;;; +AD79;HANGUL SYLLABLE GULT;Lo;0;L;;;;;N;;;;; +AD7A;HANGUL SYLLABLE GULP;Lo;0;L;;;;;N;;;;; +AD7B;HANGUL SYLLABLE GULH;Lo;0;L;;;;;N;;;;; +AD7C;HANGUL SYLLABLE GUM;Lo;0;L;;;;;N;;;;; +AD7D;HANGUL SYLLABLE GUB;Lo;0;L;;;;;N;;;;; +AD7E;HANGUL SYLLABLE GUBS;Lo;0;L;;;;;N;;;;; +AD7F;HANGUL SYLLABLE GUS;Lo;0;L;;;;;N;;;;; +AD80;HANGUL SYLLABLE GUSS;Lo;0;L;;;;;N;;;;; +AD81;HANGUL SYLLABLE GUNG;Lo;0;L;;;;;N;;;;; +AD82;HANGUL SYLLABLE GUJ;Lo;0;L;;;;;N;;;;; +AD83;HANGUL SYLLABLE GUC;Lo;0;L;;;;;N;;;;; +AD84;HANGUL SYLLABLE GUK;Lo;0;L;;;;;N;;;;; +AD85;HANGUL SYLLABLE GUT;Lo;0;L;;;;;N;;;;; +AD86;HANGUL SYLLABLE GUP;Lo;0;L;;;;;N;;;;; +AD87;HANGUL SYLLABLE GUH;Lo;0;L;;;;;N;;;;; +AD88;HANGUL SYLLABLE GWEO;Lo;0;L;;;;;N;;;;; +AD89;HANGUL SYLLABLE GWEOG;Lo;0;L;;;;;N;;;;; +AD8A;HANGUL SYLLABLE GWEOGG;Lo;0;L;;;;;N;;;;; +AD8B;HANGUL SYLLABLE GWEOGS;Lo;0;L;;;;;N;;;;; +AD8C;HANGUL SYLLABLE GWEON;Lo;0;L;;;;;N;;;;; +AD8D;HANGUL SYLLABLE GWEONI;Lo;0;L;;;;;N;;;;; +AD8E;HANGUL SYLLABLE GWEONH;Lo;0;L;;;;;N;;;;; +AD8F;HANGUL SYLLABLE GWEOD;Lo;0;L;;;;;N;;;;; +AD90;HANGUL SYLLABLE GWEOL;Lo;0;L;;;;;N;;;;; +AD91;HANGUL SYLLABLE GWEOLG;Lo;0;L;;;;;N;;;;; +AD92;HANGUL SYLLABLE GWEOLM;Lo;0;L;;;;;N;;;;; +AD93;HANGUL SYLLABLE GWEOLB;Lo;0;L;;;;;N;;;;; +AD94;HANGUL SYLLABLE GWEOLS;Lo;0;L;;;;;N;;;;; +AD95;HANGUL SYLLABLE GWEOLT;Lo;0;L;;;;;N;;;;; +AD96;HANGUL SYLLABLE GWEOLP;Lo;0;L;;;;;N;;;;; +AD97;HANGUL SYLLABLE GWEOLH;Lo;0;L;;;;;N;;;;; +AD98;HANGUL SYLLABLE GWEOM;Lo;0;L;;;;;N;;;;; +AD99;HANGUL SYLLABLE GWEOB;Lo;0;L;;;;;N;;;;; +AD9A;HANGUL SYLLABLE GWEOBS;Lo;0;L;;;;;N;;;;; +AD9B;HANGUL SYLLABLE GWEOS;Lo;0;L;;;;;N;;;;; +AD9C;HANGUL SYLLABLE GWEOSS;Lo;0;L;;;;;N;;;;; +AD9D;HANGUL SYLLABLE GWEONG;Lo;0;L;;;;;N;;;;; +AD9E;HANGUL SYLLABLE GWEOJ;Lo;0;L;;;;;N;;;;; +AD9F;HANGUL SYLLABLE GWEOC;Lo;0;L;;;;;N;;;;; +ADA0;HANGUL SYLLABLE GWEOK;Lo;0;L;;;;;N;;;;; +ADA1;HANGUL SYLLABLE GWEOT;Lo;0;L;;;;;N;;;;; +ADA2;HANGUL SYLLABLE GWEOP;Lo;0;L;;;;;N;;;;; +ADA3;HANGUL SYLLABLE GWEOH;Lo;0;L;;;;;N;;;;; +ADA4;HANGUL SYLLABLE GWE;Lo;0;L;;;;;N;;;;; +ADA5;HANGUL SYLLABLE GWEG;Lo;0;L;;;;;N;;;;; +ADA6;HANGUL SYLLABLE GWEGG;Lo;0;L;;;;;N;;;;; +ADA7;HANGUL SYLLABLE GWEGS;Lo;0;L;;;;;N;;;;; +ADA8;HANGUL SYLLABLE GWEN;Lo;0;L;;;;;N;;;;; +ADA9;HANGUL SYLLABLE GWENI;Lo;0;L;;;;;N;;;;; +ADAA;HANGUL SYLLABLE GWENH;Lo;0;L;;;;;N;;;;; +ADAB;HANGUL SYLLABLE GWED;Lo;0;L;;;;;N;;;;; +ADAC;HANGUL SYLLABLE GWEL;Lo;0;L;;;;;N;;;;; +ADAD;HANGUL SYLLABLE GWELG;Lo;0;L;;;;;N;;;;; +ADAE;HANGUL SYLLABLE GWELM;Lo;0;L;;;;;N;;;;; +ADAF;HANGUL SYLLABLE GWELB;Lo;0;L;;;;;N;;;;; +ADB0;HANGUL SYLLABLE GWELS;Lo;0;L;;;;;N;;;;; +ADB1;HANGUL SYLLABLE GWELT;Lo;0;L;;;;;N;;;;; +ADB2;HANGUL SYLLABLE GWELP;Lo;0;L;;;;;N;;;;; +ADB3;HANGUL SYLLABLE GWELH;Lo;0;L;;;;;N;;;;; +ADB4;HANGUL SYLLABLE GWEM;Lo;0;L;;;;;N;;;;; +ADB5;HANGUL SYLLABLE GWEB;Lo;0;L;;;;;N;;;;; +ADB6;HANGUL SYLLABLE GWEBS;Lo;0;L;;;;;N;;;;; +ADB7;HANGUL SYLLABLE GWES;Lo;0;L;;;;;N;;;;; +ADB8;HANGUL SYLLABLE GWESS;Lo;0;L;;;;;N;;;;; +ADB9;HANGUL SYLLABLE GWENG;Lo;0;L;;;;;N;;;;; +ADBA;HANGUL SYLLABLE GWEJ;Lo;0;L;;;;;N;;;;; +ADBB;HANGUL SYLLABLE GWEC;Lo;0;L;;;;;N;;;;; +ADBC;HANGUL SYLLABLE GWEK;Lo;0;L;;;;;N;;;;; +ADBD;HANGUL SYLLABLE GWET;Lo;0;L;;;;;N;;;;; +ADBE;HANGUL SYLLABLE GWEP;Lo;0;L;;;;;N;;;;; +ADBF;HANGUL SYLLABLE GWEH;Lo;0;L;;;;;N;;;;; +ADC0;HANGUL SYLLABLE GWI;Lo;0;L;;;;;N;;;;; +ADC1;HANGUL SYLLABLE GWIG;Lo;0;L;;;;;N;;;;; +ADC2;HANGUL SYLLABLE GWIGG;Lo;0;L;;;;;N;;;;; +ADC3;HANGUL SYLLABLE GWIGS;Lo;0;L;;;;;N;;;;; +ADC4;HANGUL SYLLABLE GWIN;Lo;0;L;;;;;N;;;;; +ADC5;HANGUL SYLLABLE GWINI;Lo;0;L;;;;;N;;;;; +ADC6;HANGUL SYLLABLE GWINH;Lo;0;L;;;;;N;;;;; +ADC7;HANGUL SYLLABLE GWID;Lo;0;L;;;;;N;;;;; +ADC8;HANGUL SYLLABLE GWIL;Lo;0;L;;;;;N;;;;; +ADC9;HANGUL SYLLABLE GWILG;Lo;0;L;;;;;N;;;;; +ADCA;HANGUL SYLLABLE GWILM;Lo;0;L;;;;;N;;;;; +ADCB;HANGUL SYLLABLE GWILB;Lo;0;L;;;;;N;;;;; +ADCC;HANGUL SYLLABLE GWILS;Lo;0;L;;;;;N;;;;; +ADCD;HANGUL SYLLABLE GWILT;Lo;0;L;;;;;N;;;;; +ADCE;HANGUL SYLLABLE GWILP;Lo;0;L;;;;;N;;;;; +ADCF;HANGUL SYLLABLE GWILH;Lo;0;L;;;;;N;;;;; +ADD0;HANGUL SYLLABLE GWIM;Lo;0;L;;;;;N;;;;; +ADD1;HANGUL SYLLABLE GWIB;Lo;0;L;;;;;N;;;;; +ADD2;HANGUL SYLLABLE GWIBS;Lo;0;L;;;;;N;;;;; +ADD3;HANGUL SYLLABLE GWIS;Lo;0;L;;;;;N;;;;; +ADD4;HANGUL SYLLABLE GWISS;Lo;0;L;;;;;N;;;;; +ADD5;HANGUL SYLLABLE GWING;Lo;0;L;;;;;N;;;;; +ADD6;HANGUL SYLLABLE GWIJ;Lo;0;L;;;;;N;;;;; +ADD7;HANGUL SYLLABLE GWIC;Lo;0;L;;;;;N;;;;; +ADD8;HANGUL SYLLABLE GWIK;Lo;0;L;;;;;N;;;;; +ADD9;HANGUL SYLLABLE GWIT;Lo;0;L;;;;;N;;;;; +ADDA;HANGUL SYLLABLE GWIP;Lo;0;L;;;;;N;;;;; +ADDB;HANGUL SYLLABLE GWIH;Lo;0;L;;;;;N;;;;; +ADDC;HANGUL SYLLABLE GYU;Lo;0;L;;;;;N;;;;; +ADDD;HANGUL SYLLABLE GYUG;Lo;0;L;;;;;N;;;;; +ADDE;HANGUL SYLLABLE GYUGG;Lo;0;L;;;;;N;;;;; +ADDF;HANGUL SYLLABLE GYUGS;Lo;0;L;;;;;N;;;;; +ADE0;HANGUL SYLLABLE GYUN;Lo;0;L;;;;;N;;;;; +ADE1;HANGUL SYLLABLE GYUNI;Lo;0;L;;;;;N;;;;; +ADE2;HANGUL SYLLABLE GYUNH;Lo;0;L;;;;;N;;;;; +ADE3;HANGUL SYLLABLE GYUD;Lo;0;L;;;;;N;;;;; +ADE4;HANGUL SYLLABLE GYUL;Lo;0;L;;;;;N;;;;; +ADE5;HANGUL SYLLABLE GYULG;Lo;0;L;;;;;N;;;;; +ADE6;HANGUL SYLLABLE GYULM;Lo;0;L;;;;;N;;;;; +ADE7;HANGUL SYLLABLE GYULB;Lo;0;L;;;;;N;;;;; +ADE8;HANGUL SYLLABLE GYULS;Lo;0;L;;;;;N;;;;; +ADE9;HANGUL SYLLABLE GYULT;Lo;0;L;;;;;N;;;;; +ADEA;HANGUL SYLLABLE GYULP;Lo;0;L;;;;;N;;;;; +ADEB;HANGUL SYLLABLE GYULH;Lo;0;L;;;;;N;;;;; +ADEC;HANGUL SYLLABLE GYUM;Lo;0;L;;;;;N;;;;; +ADED;HANGUL SYLLABLE GYUB;Lo;0;L;;;;;N;;;;; +ADEE;HANGUL SYLLABLE GYUBS;Lo;0;L;;;;;N;;;;; +ADEF;HANGUL SYLLABLE GYUS;Lo;0;L;;;;;N;;;;; +ADF0;HANGUL SYLLABLE GYUSS;Lo;0;L;;;;;N;;;;; +ADF1;HANGUL SYLLABLE GYUNG;Lo;0;L;;;;;N;;;;; +ADF2;HANGUL SYLLABLE GYUJ;Lo;0;L;;;;;N;;;;; +ADF3;HANGUL SYLLABLE GYUC;Lo;0;L;;;;;N;;;;; +ADF4;HANGUL SYLLABLE GYUK;Lo;0;L;;;;;N;;;;; +ADF5;HANGUL SYLLABLE GYUT;Lo;0;L;;;;;N;;;;; +ADF6;HANGUL SYLLABLE GYUP;Lo;0;L;;;;;N;;;;; +ADF7;HANGUL SYLLABLE GYUH;Lo;0;L;;;;;N;;;;; +ADF8;HANGUL SYLLABLE GEU;Lo;0;L;;;;;N;;;;; +ADF9;HANGUL SYLLABLE GEUG;Lo;0;L;;;;;N;;;;; +ADFA;HANGUL SYLLABLE GEUGG;Lo;0;L;;;;;N;;;;; +ADFB;HANGUL SYLLABLE GEUGS;Lo;0;L;;;;;N;;;;; +ADFC;HANGUL SYLLABLE GEUN;Lo;0;L;;;;;N;;;;; +ADFD;HANGUL SYLLABLE GEUNI;Lo;0;L;;;;;N;;;;; +ADFE;HANGUL SYLLABLE GEUNH;Lo;0;L;;;;;N;;;;; +ADFF;HANGUL SYLLABLE GEUD;Lo;0;L;;;;;N;;;;; +AE00;HANGUL SYLLABLE GEUL;Lo;0;L;;;;;N;;;;; +AE01;HANGUL SYLLABLE GEULG;Lo;0;L;;;;;N;;;;; +AE02;HANGUL SYLLABLE GEULM;Lo;0;L;;;;;N;;;;; +AE03;HANGUL SYLLABLE GEULB;Lo;0;L;;;;;N;;;;; +AE04;HANGUL SYLLABLE GEULS;Lo;0;L;;;;;N;;;;; +AE05;HANGUL SYLLABLE GEULT;Lo;0;L;;;;;N;;;;; +AE06;HANGUL SYLLABLE GEULP;Lo;0;L;;;;;N;;;;; +AE07;HANGUL SYLLABLE GEULH;Lo;0;L;;;;;N;;;;; +AE08;HANGUL SYLLABLE GEUM;Lo;0;L;;;;;N;;;;; +AE09;HANGUL SYLLABLE GEUB;Lo;0;L;;;;;N;;;;; +AE0A;HANGUL SYLLABLE GEUBS;Lo;0;L;;;;;N;;;;; +AE0B;HANGUL SYLLABLE GEUS;Lo;0;L;;;;;N;;;;; +AE0C;HANGUL SYLLABLE GEUSS;Lo;0;L;;;;;N;;;;; +AE0D;HANGUL SYLLABLE GEUNG;Lo;0;L;;;;;N;;;;; +AE0E;HANGUL SYLLABLE GEUJ;Lo;0;L;;;;;N;;;;; +AE0F;HANGUL SYLLABLE GEUC;Lo;0;L;;;;;N;;;;; +AE10;HANGUL SYLLABLE GEUK;Lo;0;L;;;;;N;;;;; +AE11;HANGUL SYLLABLE GEUT;Lo;0;L;;;;;N;;;;; +AE12;HANGUL SYLLABLE GEUP;Lo;0;L;;;;;N;;;;; +AE13;HANGUL SYLLABLE GEUH;Lo;0;L;;;;;N;;;;; +AE14;HANGUL SYLLABLE GYI;Lo;0;L;;;;;N;;;;; +AE15;HANGUL SYLLABLE GYIG;Lo;0;L;;;;;N;;;;; +AE16;HANGUL SYLLABLE GYIGG;Lo;0;L;;;;;N;;;;; +AE17;HANGUL SYLLABLE GYIGS;Lo;0;L;;;;;N;;;;; +AE18;HANGUL SYLLABLE GYIN;Lo;0;L;;;;;N;;;;; +AE19;HANGUL SYLLABLE GYINI;Lo;0;L;;;;;N;;;;; +AE1A;HANGUL SYLLABLE GYINH;Lo;0;L;;;;;N;;;;; +AE1B;HANGUL SYLLABLE GYID;Lo;0;L;;;;;N;;;;; +AE1C;HANGUL SYLLABLE GYIL;Lo;0;L;;;;;N;;;;; +AE1D;HANGUL SYLLABLE GYILG;Lo;0;L;;;;;N;;;;; +AE1E;HANGUL SYLLABLE GYILM;Lo;0;L;;;;;N;;;;; +AE1F;HANGUL SYLLABLE GYILB;Lo;0;L;;;;;N;;;;; +AE20;HANGUL SYLLABLE GYILS;Lo;0;L;;;;;N;;;;; +AE21;HANGUL SYLLABLE GYILT;Lo;0;L;;;;;N;;;;; +AE22;HANGUL SYLLABLE GYILP;Lo;0;L;;;;;N;;;;; +AE23;HANGUL SYLLABLE GYILH;Lo;0;L;;;;;N;;;;; +AE24;HANGUL SYLLABLE GYIM;Lo;0;L;;;;;N;;;;; +AE25;HANGUL SYLLABLE GYIB;Lo;0;L;;;;;N;;;;; +AE26;HANGUL SYLLABLE GYIBS;Lo;0;L;;;;;N;;;;; +AE27;HANGUL SYLLABLE GYIS;Lo;0;L;;;;;N;;;;; +AE28;HANGUL SYLLABLE GYISS;Lo;0;L;;;;;N;;;;; +AE29;HANGUL SYLLABLE GYING;Lo;0;L;;;;;N;;;;; +AE2A;HANGUL SYLLABLE GYIJ;Lo;0;L;;;;;N;;;;; +AE2B;HANGUL SYLLABLE GYIC;Lo;0;L;;;;;N;;;;; +AE2C;HANGUL SYLLABLE GYIK;Lo;0;L;;;;;N;;;;; +AE2D;HANGUL SYLLABLE GYIT;Lo;0;L;;;;;N;;;;; +AE2E;HANGUL SYLLABLE GYIP;Lo;0;L;;;;;N;;;;; +AE2F;HANGUL SYLLABLE GYIH;Lo;0;L;;;;;N;;;;; +AE30;HANGUL SYLLABLE GI;Lo;0;L;;;;;N;;;;; +AE31;HANGUL SYLLABLE GIG;Lo;0;L;;;;;N;;;;; +AE32;HANGUL SYLLABLE GIGG;Lo;0;L;;;;;N;;;;; +AE33;HANGUL SYLLABLE GIGS;Lo;0;L;;;;;N;;;;; +AE34;HANGUL SYLLABLE GIN;Lo;0;L;;;;;N;;;;; +AE35;HANGUL SYLLABLE GINI;Lo;0;L;;;;;N;;;;; +AE36;HANGUL SYLLABLE GINH;Lo;0;L;;;;;N;;;;; +AE37;HANGUL SYLLABLE GID;Lo;0;L;;;;;N;;;;; +AE38;HANGUL SYLLABLE GIL;Lo;0;L;;;;;N;;;;; +AE39;HANGUL SYLLABLE GILG;Lo;0;L;;;;;N;;;;; +AE3A;HANGUL SYLLABLE GILM;Lo;0;L;;;;;N;;;;; +AE3B;HANGUL SYLLABLE GILB;Lo;0;L;;;;;N;;;;; +AE3C;HANGUL SYLLABLE GILS;Lo;0;L;;;;;N;;;;; +AE3D;HANGUL SYLLABLE GILT;Lo;0;L;;;;;N;;;;; +AE3E;HANGUL SYLLABLE GILP;Lo;0;L;;;;;N;;;;; +AE3F;HANGUL SYLLABLE GILH;Lo;0;L;;;;;N;;;;; +AE40;HANGUL SYLLABLE GIM;Lo;0;L;;;;;N;;;;; +AE41;HANGUL SYLLABLE GIB;Lo;0;L;;;;;N;;;;; +AE42;HANGUL SYLLABLE GIBS;Lo;0;L;;;;;N;;;;; +AE43;HANGUL SYLLABLE GIS;Lo;0;L;;;;;N;;;;; +AE44;HANGUL SYLLABLE GISS;Lo;0;L;;;;;N;;;;; +AE45;HANGUL SYLLABLE GING;Lo;0;L;;;;;N;;;;; +AE46;HANGUL SYLLABLE GIJ;Lo;0;L;;;;;N;;;;; +AE47;HANGUL SYLLABLE GIC;Lo;0;L;;;;;N;;;;; +AE48;HANGUL SYLLABLE GIK;Lo;0;L;;;;;N;;;;; +AE49;HANGUL SYLLABLE GIT;Lo;0;L;;;;;N;;;;; +AE4A;HANGUL SYLLABLE GIP;Lo;0;L;;;;;N;;;;; +AE4B;HANGUL SYLLABLE GIH;Lo;0;L;;;;;N;;;;; +AE4C;HANGUL SYLLABLE GGA;Lo;0;L;;;;;N;;;;; +AE4D;HANGUL SYLLABLE GGAG;Lo;0;L;;;;;N;;;;; +AE4E;HANGUL SYLLABLE GGAGG;Lo;0;L;;;;;N;;;;; +AE4F;HANGUL SYLLABLE GGAGS;Lo;0;L;;;;;N;;;;; +AE50;HANGUL SYLLABLE GGAN;Lo;0;L;;;;;N;;;;; +AE51;HANGUL SYLLABLE GGANI;Lo;0;L;;;;;N;;;;; +AE52;HANGUL SYLLABLE GGANH;Lo;0;L;;;;;N;;;;; +AE53;HANGUL SYLLABLE GGAD;Lo;0;L;;;;;N;;;;; +AE54;HANGUL SYLLABLE GGAL;Lo;0;L;;;;;N;;;;; +AE55;HANGUL SYLLABLE GGALG;Lo;0;L;;;;;N;;;;; +AE56;HANGUL SYLLABLE GGALM;Lo;0;L;;;;;N;;;;; +AE57;HANGUL SYLLABLE GGALB;Lo;0;L;;;;;N;;;;; +AE58;HANGUL SYLLABLE GGALS;Lo;0;L;;;;;N;;;;; +AE59;HANGUL SYLLABLE GGALT;Lo;0;L;;;;;N;;;;; +AE5A;HANGUL SYLLABLE GGALP;Lo;0;L;;;;;N;;;;; +AE5B;HANGUL SYLLABLE GGALH;Lo;0;L;;;;;N;;;;; +AE5C;HANGUL SYLLABLE GGAM;Lo;0;L;;;;;N;;;;; +AE5D;HANGUL SYLLABLE GGAB;Lo;0;L;;;;;N;;;;; +AE5E;HANGUL SYLLABLE GGABS;Lo;0;L;;;;;N;;;;; +AE5F;HANGUL SYLLABLE GGAS;Lo;0;L;;;;;N;;;;; +AE60;HANGUL SYLLABLE GGASS;Lo;0;L;;;;;N;;;;; +AE61;HANGUL SYLLABLE GGANG;Lo;0;L;;;;;N;;;;; +AE62;HANGUL SYLLABLE GGAJ;Lo;0;L;;;;;N;;;;; +AE63;HANGUL SYLLABLE GGAC;Lo;0;L;;;;;N;;;;; +AE64;HANGUL SYLLABLE GGAK;Lo;0;L;;;;;N;;;;; +AE65;HANGUL SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; +AE66;HANGUL SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; +AE67;HANGUL SYLLABLE GGAH;Lo;0;L;;;;;N;;;;; +AE68;HANGUL SYLLABLE GGAE;Lo;0;L;;;;;N;;;;; +AE69;HANGUL SYLLABLE GGAEG;Lo;0;L;;;;;N;;;;; +AE6A;HANGUL SYLLABLE GGAEGG;Lo;0;L;;;;;N;;;;; +AE6B;HANGUL SYLLABLE GGAEGS;Lo;0;L;;;;;N;;;;; +AE6C;HANGUL SYLLABLE GGAEN;Lo;0;L;;;;;N;;;;; +AE6D;HANGUL SYLLABLE GGAENI;Lo;0;L;;;;;N;;;;; +AE6E;HANGUL SYLLABLE GGAENH;Lo;0;L;;;;;N;;;;; +AE6F;HANGUL SYLLABLE GGAED;Lo;0;L;;;;;N;;;;; +AE70;HANGUL SYLLABLE GGAEL;Lo;0;L;;;;;N;;;;; +AE71;HANGUL SYLLABLE GGAELG;Lo;0;L;;;;;N;;;;; +AE72;HANGUL SYLLABLE GGAELM;Lo;0;L;;;;;N;;;;; +AE73;HANGUL SYLLABLE GGAELB;Lo;0;L;;;;;N;;;;; +AE74;HANGUL SYLLABLE GGAELS;Lo;0;L;;;;;N;;;;; +AE75;HANGUL SYLLABLE GGAELT;Lo;0;L;;;;;N;;;;; +AE76;HANGUL SYLLABLE GGAELP;Lo;0;L;;;;;N;;;;; +AE77;HANGUL SYLLABLE GGAELH;Lo;0;L;;;;;N;;;;; +AE78;HANGUL SYLLABLE GGAEM;Lo;0;L;;;;;N;;;;; +AE79;HANGUL SYLLABLE GGAEB;Lo;0;L;;;;;N;;;;; +AE7A;HANGUL SYLLABLE GGAEBS;Lo;0;L;;;;;N;;;;; +AE7B;HANGUL SYLLABLE GGAES;Lo;0;L;;;;;N;;;;; +AE7C;HANGUL SYLLABLE GGAESS;Lo;0;L;;;;;N;;;;; +AE7D;HANGUL SYLLABLE GGAENG;Lo;0;L;;;;;N;;;;; +AE7E;HANGUL SYLLABLE GGAEJ;Lo;0;L;;;;;N;;;;; +AE7F;HANGUL SYLLABLE GGAEC;Lo;0;L;;;;;N;;;;; +AE80;HANGUL SYLLABLE GGAEK;Lo;0;L;;;;;N;;;;; +AE81;HANGUL SYLLABLE GGAET;Lo;0;L;;;;;N;;;;; +AE82;HANGUL SYLLABLE GGAEP;Lo;0;L;;;;;N;;;;; +AE83;HANGUL SYLLABLE GGAEH;Lo;0;L;;;;;N;;;;; +AE84;HANGUL SYLLABLE GGYA;Lo;0;L;;;;;N;;;;; +AE85;HANGUL SYLLABLE GGYAG;Lo;0;L;;;;;N;;;;; +AE86;HANGUL SYLLABLE GGYAGG;Lo;0;L;;;;;N;;;;; +AE87;HANGUL SYLLABLE GGYAGS;Lo;0;L;;;;;N;;;;; +AE88;HANGUL SYLLABLE GGYAN;Lo;0;L;;;;;N;;;;; +AE89;HANGUL SYLLABLE GGYANI;Lo;0;L;;;;;N;;;;; +AE8A;HANGUL SYLLABLE GGYANH;Lo;0;L;;;;;N;;;;; +AE8B;HANGUL SYLLABLE GGYAD;Lo;0;L;;;;;N;;;;; +AE8C;HANGUL SYLLABLE GGYAL;Lo;0;L;;;;;N;;;;; +AE8D;HANGUL SYLLABLE GGYALG;Lo;0;L;;;;;N;;;;; +AE8E;HANGUL SYLLABLE GGYALM;Lo;0;L;;;;;N;;;;; +AE8F;HANGUL SYLLABLE GGYALB;Lo;0;L;;;;;N;;;;; +AE90;HANGUL SYLLABLE GGYALS;Lo;0;L;;;;;N;;;;; +AE91;HANGUL SYLLABLE GGYALT;Lo;0;L;;;;;N;;;;; +AE92;HANGUL SYLLABLE GGYALP;Lo;0;L;;;;;N;;;;; +AE93;HANGUL SYLLABLE GGYALH;Lo;0;L;;;;;N;;;;; +AE94;HANGUL SYLLABLE GGYAM;Lo;0;L;;;;;N;;;;; +AE95;HANGUL SYLLABLE GGYAB;Lo;0;L;;;;;N;;;;; +AE96;HANGUL SYLLABLE GGYABS;Lo;0;L;;;;;N;;;;; +AE97;HANGUL SYLLABLE GGYAS;Lo;0;L;;;;;N;;;;; +AE98;HANGUL SYLLABLE GGYASS;Lo;0;L;;;;;N;;;;; +AE99;HANGUL SYLLABLE GGYANG;Lo;0;L;;;;;N;;;;; +AE9A;HANGUL SYLLABLE GGYAJ;Lo;0;L;;;;;N;;;;; +AE9B;HANGUL SYLLABLE GGYAC;Lo;0;L;;;;;N;;;;; +AE9C;HANGUL SYLLABLE GGYAK;Lo;0;L;;;;;N;;;;; +AE9D;HANGUL SYLLABLE GGYAT;Lo;0;L;;;;;N;;;;; +AE9E;HANGUL SYLLABLE GGYAP;Lo;0;L;;;;;N;;;;; +AE9F;HANGUL SYLLABLE GGYAH;Lo;0;L;;;;;N;;;;; +AEA0;HANGUL SYLLABLE GGYAE;Lo;0;L;;;;;N;;;;; +AEA1;HANGUL SYLLABLE GGYAEG;Lo;0;L;;;;;N;;;;; +AEA2;HANGUL SYLLABLE GGYAEGG;Lo;0;L;;;;;N;;;;; +AEA3;HANGUL SYLLABLE GGYAEGS;Lo;0;L;;;;;N;;;;; +AEA4;HANGUL SYLLABLE GGYAEN;Lo;0;L;;;;;N;;;;; +AEA5;HANGUL SYLLABLE GGYAENI;Lo;0;L;;;;;N;;;;; +AEA6;HANGUL SYLLABLE GGYAENH;Lo;0;L;;;;;N;;;;; +AEA7;HANGUL SYLLABLE GGYAED;Lo;0;L;;;;;N;;;;; +AEA8;HANGUL SYLLABLE GGYAEL;Lo;0;L;;;;;N;;;;; +AEA9;HANGUL SYLLABLE GGYAELG;Lo;0;L;;;;;N;;;;; +AEAA;HANGUL SYLLABLE GGYAELM;Lo;0;L;;;;;N;;;;; +AEAB;HANGUL SYLLABLE GGYAELB;Lo;0;L;;;;;N;;;;; +AEAC;HANGUL SYLLABLE GGYAELS;Lo;0;L;;;;;N;;;;; +AEAD;HANGUL SYLLABLE GGYAELT;Lo;0;L;;;;;N;;;;; +AEAE;HANGUL SYLLABLE GGYAELP;Lo;0;L;;;;;N;;;;; +AEAF;HANGUL SYLLABLE GGYAELH;Lo;0;L;;;;;N;;;;; +AEB0;HANGUL SYLLABLE GGYAEM;Lo;0;L;;;;;N;;;;; +AEB1;HANGUL SYLLABLE GGYAEB;Lo;0;L;;;;;N;;;;; +AEB2;HANGUL SYLLABLE GGYAEBS;Lo;0;L;;;;;N;;;;; +AEB3;HANGUL SYLLABLE GGYAES;Lo;0;L;;;;;N;;;;; +AEB4;HANGUL SYLLABLE GGYAESS;Lo;0;L;;;;;N;;;;; +AEB5;HANGUL SYLLABLE GGYAENG;Lo;0;L;;;;;N;;;;; +AEB6;HANGUL SYLLABLE GGYAEJ;Lo;0;L;;;;;N;;;;; +AEB7;HANGUL SYLLABLE GGYAEC;Lo;0;L;;;;;N;;;;; +AEB8;HANGUL SYLLABLE GGYAEK;Lo;0;L;;;;;N;;;;; +AEB9;HANGUL SYLLABLE GGYAET;Lo;0;L;;;;;N;;;;; +AEBA;HANGUL SYLLABLE GGYAEP;Lo;0;L;;;;;N;;;;; +AEBB;HANGUL SYLLABLE GGYAEH;Lo;0;L;;;;;N;;;;; +AEBC;HANGUL SYLLABLE GGEO;Lo;0;L;;;;;N;;;;; +AEBD;HANGUL SYLLABLE GGEOG;Lo;0;L;;;;;N;;;;; +AEBE;HANGUL SYLLABLE GGEOGG;Lo;0;L;;;;;N;;;;; +AEBF;HANGUL SYLLABLE GGEOGS;Lo;0;L;;;;;N;;;;; +AEC0;HANGUL SYLLABLE GGEON;Lo;0;L;;;;;N;;;;; +AEC1;HANGUL SYLLABLE GGEONI;Lo;0;L;;;;;N;;;;; +AEC2;HANGUL SYLLABLE GGEONH;Lo;0;L;;;;;N;;;;; +AEC3;HANGUL SYLLABLE GGEOD;Lo;0;L;;;;;N;;;;; +AEC4;HANGUL SYLLABLE GGEOL;Lo;0;L;;;;;N;;;;; +AEC5;HANGUL SYLLABLE GGEOLG;Lo;0;L;;;;;N;;;;; +AEC6;HANGUL SYLLABLE GGEOLM;Lo;0;L;;;;;N;;;;; +AEC7;HANGUL SYLLABLE GGEOLB;Lo;0;L;;;;;N;;;;; +AEC8;HANGUL SYLLABLE GGEOLS;Lo;0;L;;;;;N;;;;; +AEC9;HANGUL SYLLABLE GGEOLT;Lo;0;L;;;;;N;;;;; +AECA;HANGUL SYLLABLE GGEOLP;Lo;0;L;;;;;N;;;;; +AECB;HANGUL SYLLABLE GGEOLH;Lo;0;L;;;;;N;;;;; +AECC;HANGUL SYLLABLE GGEOM;Lo;0;L;;;;;N;;;;; +AECD;HANGUL SYLLABLE GGEOB;Lo;0;L;;;;;N;;;;; +AECE;HANGUL SYLLABLE GGEOBS;Lo;0;L;;;;;N;;;;; +AECF;HANGUL SYLLABLE GGEOS;Lo;0;L;;;;;N;;;;; +AED0;HANGUL SYLLABLE GGEOSS;Lo;0;L;;;;;N;;;;; +AED1;HANGUL SYLLABLE GGEONG;Lo;0;L;;;;;N;;;;; +AED2;HANGUL SYLLABLE GGEOJ;Lo;0;L;;;;;N;;;;; +AED3;HANGUL SYLLABLE GGEOC;Lo;0;L;;;;;N;;;;; +AED4;HANGUL SYLLABLE GGEOK;Lo;0;L;;;;;N;;;;; +AED5;HANGUL SYLLABLE GGEOT;Lo;0;L;;;;;N;;;;; +AED6;HANGUL SYLLABLE GGEOP;Lo;0;L;;;;;N;;;;; +AED7;HANGUL SYLLABLE GGEOH;Lo;0;L;;;;;N;;;;; +AED8;HANGUL SYLLABLE GGE;Lo;0;L;;;;;N;;;;; +AED9;HANGUL SYLLABLE GGEG;Lo;0;L;;;;;N;;;;; +AEDA;HANGUL SYLLABLE GGEGG;Lo;0;L;;;;;N;;;;; +AEDB;HANGUL SYLLABLE GGEGS;Lo;0;L;;;;;N;;;;; +AEDC;HANGUL SYLLABLE GGEN;Lo;0;L;;;;;N;;;;; +AEDD;HANGUL SYLLABLE GGENI;Lo;0;L;;;;;N;;;;; +AEDE;HANGUL SYLLABLE GGENH;Lo;0;L;;;;;N;;;;; +AEDF;HANGUL SYLLABLE GGED;Lo;0;L;;;;;N;;;;; +AEE0;HANGUL SYLLABLE GGEL;Lo;0;L;;;;;N;;;;; +AEE1;HANGUL SYLLABLE GGELG;Lo;0;L;;;;;N;;;;; +AEE2;HANGUL SYLLABLE GGELM;Lo;0;L;;;;;N;;;;; +AEE3;HANGUL SYLLABLE GGELB;Lo;0;L;;;;;N;;;;; +AEE4;HANGUL SYLLABLE GGELS;Lo;0;L;;;;;N;;;;; +AEE5;HANGUL SYLLABLE GGELT;Lo;0;L;;;;;N;;;;; +AEE6;HANGUL SYLLABLE GGELP;Lo;0;L;;;;;N;;;;; +AEE7;HANGUL SYLLABLE GGELH;Lo;0;L;;;;;N;;;;; +AEE8;HANGUL SYLLABLE GGEM;Lo;0;L;;;;;N;;;;; +AEE9;HANGUL SYLLABLE GGEB;Lo;0;L;;;;;N;;;;; +AEEA;HANGUL SYLLABLE GGEBS;Lo;0;L;;;;;N;;;;; +AEEB;HANGUL SYLLABLE GGES;Lo;0;L;;;;;N;;;;; +AEEC;HANGUL SYLLABLE GGESS;Lo;0;L;;;;;N;;;;; +AEED;HANGUL SYLLABLE GGENG;Lo;0;L;;;;;N;;;;; +AEEE;HANGUL SYLLABLE GGEJ;Lo;0;L;;;;;N;;;;; +AEEF;HANGUL SYLLABLE GGEC;Lo;0;L;;;;;N;;;;; +AEF0;HANGUL SYLLABLE GGEK;Lo;0;L;;;;;N;;;;; +AEF1;HANGUL SYLLABLE GGET;Lo;0;L;;;;;N;;;;; +AEF2;HANGUL SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; +AEF3;HANGUL SYLLABLE GGEH;Lo;0;L;;;;;N;;;;; +AEF4;HANGUL SYLLABLE GGYEO;Lo;0;L;;;;;N;;;;; +AEF5;HANGUL SYLLABLE GGYEOG;Lo;0;L;;;;;N;;;;; +AEF6;HANGUL SYLLABLE GGYEOGG;Lo;0;L;;;;;N;;;;; +AEF7;HANGUL SYLLABLE GGYEOGS;Lo;0;L;;;;;N;;;;; +AEF8;HANGUL SYLLABLE GGYEON;Lo;0;L;;;;;N;;;;; +AEF9;HANGUL SYLLABLE GGYEONI;Lo;0;L;;;;;N;;;;; +AEFA;HANGUL SYLLABLE GGYEONH;Lo;0;L;;;;;N;;;;; +AEFB;HANGUL SYLLABLE GGYEOD;Lo;0;L;;;;;N;;;;; +AEFC;HANGUL SYLLABLE GGYEOL;Lo;0;L;;;;;N;;;;; +AEFD;HANGUL SYLLABLE GGYEOLG;Lo;0;L;;;;;N;;;;; +AEFE;HANGUL SYLLABLE GGYEOLM;Lo;0;L;;;;;N;;;;; +AEFF;HANGUL SYLLABLE GGYEOLB;Lo;0;L;;;;;N;;;;; +AF00;HANGUL SYLLABLE GGYEOLS;Lo;0;L;;;;;N;;;;; +AF01;HANGUL SYLLABLE GGYEOLT;Lo;0;L;;;;;N;;;;; +AF02;HANGUL SYLLABLE GGYEOLP;Lo;0;L;;;;;N;;;;; +AF03;HANGUL SYLLABLE GGYEOLH;Lo;0;L;;;;;N;;;;; +AF04;HANGUL SYLLABLE GGYEOM;Lo;0;L;;;;;N;;;;; +AF05;HANGUL SYLLABLE GGYEOB;Lo;0;L;;;;;N;;;;; +AF06;HANGUL SYLLABLE GGYEOBS;Lo;0;L;;;;;N;;;;; +AF07;HANGUL SYLLABLE GGYEOS;Lo;0;L;;;;;N;;;;; +AF08;HANGUL SYLLABLE GGYEOSS;Lo;0;L;;;;;N;;;;; +AF09;HANGUL SYLLABLE GGYEONG;Lo;0;L;;;;;N;;;;; +AF0A;HANGUL SYLLABLE GGYEOJ;Lo;0;L;;;;;N;;;;; +AF0B;HANGUL SYLLABLE GGYEOC;Lo;0;L;;;;;N;;;;; +AF0C;HANGUL SYLLABLE GGYEOK;Lo;0;L;;;;;N;;;;; +AF0D;HANGUL SYLLABLE GGYEOT;Lo;0;L;;;;;N;;;;; +AF0E;HANGUL SYLLABLE GGYEOP;Lo;0;L;;;;;N;;;;; +AF0F;HANGUL SYLLABLE GGYEOH;Lo;0;L;;;;;N;;;;; +AF10;HANGUL SYLLABLE GGYE;Lo;0;L;;;;;N;;;;; +AF11;HANGUL SYLLABLE GGYEG;Lo;0;L;;;;;N;;;;; +AF12;HANGUL SYLLABLE GGYEGG;Lo;0;L;;;;;N;;;;; +AF13;HANGUL SYLLABLE GGYEGS;Lo;0;L;;;;;N;;;;; +AF14;HANGUL SYLLABLE GGYEN;Lo;0;L;;;;;N;;;;; +AF15;HANGUL SYLLABLE GGYENI;Lo;0;L;;;;;N;;;;; +AF16;HANGUL SYLLABLE GGYENH;Lo;0;L;;;;;N;;;;; +AF17;HANGUL SYLLABLE GGYED;Lo;0;L;;;;;N;;;;; +AF18;HANGUL SYLLABLE GGYEL;Lo;0;L;;;;;N;;;;; +AF19;HANGUL SYLLABLE GGYELG;Lo;0;L;;;;;N;;;;; +AF1A;HANGUL SYLLABLE GGYELM;Lo;0;L;;;;;N;;;;; +AF1B;HANGUL SYLLABLE GGYELB;Lo;0;L;;;;;N;;;;; +AF1C;HANGUL SYLLABLE GGYELS;Lo;0;L;;;;;N;;;;; +AF1D;HANGUL SYLLABLE GGYELT;Lo;0;L;;;;;N;;;;; +AF1E;HANGUL SYLLABLE GGYELP;Lo;0;L;;;;;N;;;;; +AF1F;HANGUL SYLLABLE GGYELH;Lo;0;L;;;;;N;;;;; +AF20;HANGUL SYLLABLE GGYEM;Lo;0;L;;;;;N;;;;; +AF21;HANGUL SYLLABLE GGYEB;Lo;0;L;;;;;N;;;;; +AF22;HANGUL SYLLABLE GGYEBS;Lo;0;L;;;;;N;;;;; +AF23;HANGUL SYLLABLE GGYES;Lo;0;L;;;;;N;;;;; +AF24;HANGUL SYLLABLE GGYESS;Lo;0;L;;;;;N;;;;; +AF25;HANGUL SYLLABLE GGYENG;Lo;0;L;;;;;N;;;;; +AF26;HANGUL SYLLABLE GGYEJ;Lo;0;L;;;;;N;;;;; +AF27;HANGUL SYLLABLE GGYEC;Lo;0;L;;;;;N;;;;; +AF28;HANGUL SYLLABLE GGYEK;Lo;0;L;;;;;N;;;;; +AF29;HANGUL SYLLABLE GGYET;Lo;0;L;;;;;N;;;;; +AF2A;HANGUL SYLLABLE GGYEP;Lo;0;L;;;;;N;;;;; +AF2B;HANGUL SYLLABLE GGYEH;Lo;0;L;;;;;N;;;;; +AF2C;HANGUL SYLLABLE GGO;Lo;0;L;;;;;N;;;;; +AF2D;HANGUL SYLLABLE GGOG;Lo;0;L;;;;;N;;;;; +AF2E;HANGUL SYLLABLE GGOGG;Lo;0;L;;;;;N;;;;; +AF2F;HANGUL SYLLABLE GGOGS;Lo;0;L;;;;;N;;;;; +AF30;HANGUL SYLLABLE GGON;Lo;0;L;;;;;N;;;;; +AF31;HANGUL SYLLABLE GGONI;Lo;0;L;;;;;N;;;;; +AF32;HANGUL SYLLABLE GGONH;Lo;0;L;;;;;N;;;;; +AF33;HANGUL SYLLABLE GGOD;Lo;0;L;;;;;N;;;;; +AF34;HANGUL SYLLABLE GGOL;Lo;0;L;;;;;N;;;;; +AF35;HANGUL SYLLABLE GGOLG;Lo;0;L;;;;;N;;;;; +AF36;HANGUL SYLLABLE GGOLM;Lo;0;L;;;;;N;;;;; +AF37;HANGUL SYLLABLE GGOLB;Lo;0;L;;;;;N;;;;; +AF38;HANGUL SYLLABLE GGOLS;Lo;0;L;;;;;N;;;;; +AF39;HANGUL SYLLABLE GGOLT;Lo;0;L;;;;;N;;;;; +AF3A;HANGUL SYLLABLE GGOLP;Lo;0;L;;;;;N;;;;; +AF3B;HANGUL SYLLABLE GGOLH;Lo;0;L;;;;;N;;;;; +AF3C;HANGUL SYLLABLE GGOM;Lo;0;L;;;;;N;;;;; +AF3D;HANGUL SYLLABLE GGOB;Lo;0;L;;;;;N;;;;; +AF3E;HANGUL SYLLABLE GGOBS;Lo;0;L;;;;;N;;;;; +AF3F;HANGUL SYLLABLE GGOS;Lo;0;L;;;;;N;;;;; +AF40;HANGUL SYLLABLE GGOSS;Lo;0;L;;;;;N;;;;; +AF41;HANGUL SYLLABLE GGONG;Lo;0;L;;;;;N;;;;; +AF42;HANGUL SYLLABLE GGOJ;Lo;0;L;;;;;N;;;;; +AF43;HANGUL SYLLABLE GGOC;Lo;0;L;;;;;N;;;;; +AF44;HANGUL SYLLABLE GGOK;Lo;0;L;;;;;N;;;;; +AF45;HANGUL SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; +AF46;HANGUL SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; +AF47;HANGUL SYLLABLE GGOH;Lo;0;L;;;;;N;;;;; +AF48;HANGUL SYLLABLE GGWA;Lo;0;L;;;;;N;;;;; +AF49;HANGUL SYLLABLE GGWAG;Lo;0;L;;;;;N;;;;; +AF4A;HANGUL SYLLABLE GGWAGG;Lo;0;L;;;;;N;;;;; +AF4B;HANGUL SYLLABLE GGWAGS;Lo;0;L;;;;;N;;;;; +AF4C;HANGUL SYLLABLE GGWAN;Lo;0;L;;;;;N;;;;; +AF4D;HANGUL SYLLABLE GGWANI;Lo;0;L;;;;;N;;;;; +AF4E;HANGUL SYLLABLE GGWANH;Lo;0;L;;;;;N;;;;; +AF4F;HANGUL SYLLABLE GGWAD;Lo;0;L;;;;;N;;;;; +AF50;HANGUL SYLLABLE GGWAL;Lo;0;L;;;;;N;;;;; +AF51;HANGUL SYLLABLE GGWALG;Lo;0;L;;;;;N;;;;; +AF52;HANGUL SYLLABLE GGWALM;Lo;0;L;;;;;N;;;;; +AF53;HANGUL SYLLABLE GGWALB;Lo;0;L;;;;;N;;;;; +AF54;HANGUL SYLLABLE GGWALS;Lo;0;L;;;;;N;;;;; +AF55;HANGUL SYLLABLE GGWALT;Lo;0;L;;;;;N;;;;; +AF56;HANGUL SYLLABLE GGWALP;Lo;0;L;;;;;N;;;;; +AF57;HANGUL SYLLABLE GGWALH;Lo;0;L;;;;;N;;;;; +AF58;HANGUL SYLLABLE GGWAM;Lo;0;L;;;;;N;;;;; +AF59;HANGUL SYLLABLE GGWAB;Lo;0;L;;;;;N;;;;; +AF5A;HANGUL SYLLABLE GGWABS;Lo;0;L;;;;;N;;;;; +AF5B;HANGUL SYLLABLE GGWAS;Lo;0;L;;;;;N;;;;; +AF5C;HANGUL SYLLABLE GGWASS;Lo;0;L;;;;;N;;;;; +AF5D;HANGUL SYLLABLE GGWANG;Lo;0;L;;;;;N;;;;; +AF5E;HANGUL SYLLABLE GGWAJ;Lo;0;L;;;;;N;;;;; +AF5F;HANGUL SYLLABLE GGWAC;Lo;0;L;;;;;N;;;;; +AF60;HANGUL SYLLABLE GGWAK;Lo;0;L;;;;;N;;;;; +AF61;HANGUL SYLLABLE GGWAT;Lo;0;L;;;;;N;;;;; +AF62;HANGUL SYLLABLE GGWAP;Lo;0;L;;;;;N;;;;; +AF63;HANGUL SYLLABLE GGWAH;Lo;0;L;;;;;N;;;;; +AF64;HANGUL SYLLABLE GGWAE;Lo;0;L;;;;;N;;;;; +AF65;HANGUL SYLLABLE GGWAEG;Lo;0;L;;;;;N;;;;; +AF66;HANGUL SYLLABLE GGWAEGG;Lo;0;L;;;;;N;;;;; +AF67;HANGUL SYLLABLE GGWAEGS;Lo;0;L;;;;;N;;;;; +AF68;HANGUL SYLLABLE GGWAEN;Lo;0;L;;;;;N;;;;; +AF69;HANGUL SYLLABLE GGWAENI;Lo;0;L;;;;;N;;;;; +AF6A;HANGUL SYLLABLE GGWAENH;Lo;0;L;;;;;N;;;;; +AF6B;HANGUL SYLLABLE GGWAED;Lo;0;L;;;;;N;;;;; +AF6C;HANGUL SYLLABLE GGWAEL;Lo;0;L;;;;;N;;;;; +AF6D;HANGUL SYLLABLE GGWAELG;Lo;0;L;;;;;N;;;;; +AF6E;HANGUL SYLLABLE GGWAELM;Lo;0;L;;;;;N;;;;; +AF6F;HANGUL SYLLABLE GGWAELB;Lo;0;L;;;;;N;;;;; +AF70;HANGUL SYLLABLE GGWAELS;Lo;0;L;;;;;N;;;;; +AF71;HANGUL SYLLABLE GGWAELT;Lo;0;L;;;;;N;;;;; +AF72;HANGUL SYLLABLE GGWAELP;Lo;0;L;;;;;N;;;;; +AF73;HANGUL SYLLABLE GGWAELH;Lo;0;L;;;;;N;;;;; +AF74;HANGUL SYLLABLE GGWAEM;Lo;0;L;;;;;N;;;;; +AF75;HANGUL SYLLABLE GGWAEB;Lo;0;L;;;;;N;;;;; +AF76;HANGUL SYLLABLE GGWAEBS;Lo;0;L;;;;;N;;;;; +AF77;HANGUL SYLLABLE GGWAES;Lo;0;L;;;;;N;;;;; +AF78;HANGUL SYLLABLE GGWAESS;Lo;0;L;;;;;N;;;;; +AF79;HANGUL SYLLABLE GGWAENG;Lo;0;L;;;;;N;;;;; +AF7A;HANGUL SYLLABLE GGWAEJ;Lo;0;L;;;;;N;;;;; +AF7B;HANGUL SYLLABLE GGWAEC;Lo;0;L;;;;;N;;;;; +AF7C;HANGUL SYLLABLE GGWAEK;Lo;0;L;;;;;N;;;;; +AF7D;HANGUL SYLLABLE GGWAET;Lo;0;L;;;;;N;;;;; +AF7E;HANGUL SYLLABLE GGWAEP;Lo;0;L;;;;;N;;;;; +AF7F;HANGUL SYLLABLE GGWAEH;Lo;0;L;;;;;N;;;;; +AF80;HANGUL SYLLABLE GGOE;Lo;0;L;;;;;N;;;;; +AF81;HANGUL SYLLABLE GGOEG;Lo;0;L;;;;;N;;;;; +AF82;HANGUL SYLLABLE GGOEGG;Lo;0;L;;;;;N;;;;; +AF83;HANGUL SYLLABLE GGOEGS;Lo;0;L;;;;;N;;;;; +AF84;HANGUL SYLLABLE GGOEN;Lo;0;L;;;;;N;;;;; +AF85;HANGUL SYLLABLE GGOENI;Lo;0;L;;;;;N;;;;; +AF86;HANGUL SYLLABLE GGOENH;Lo;0;L;;;;;N;;;;; +AF87;HANGUL SYLLABLE GGOED;Lo;0;L;;;;;N;;;;; +AF88;HANGUL SYLLABLE GGOEL;Lo;0;L;;;;;N;;;;; +AF89;HANGUL SYLLABLE GGOELG;Lo;0;L;;;;;N;;;;; +AF8A;HANGUL SYLLABLE GGOELM;Lo;0;L;;;;;N;;;;; +AF8B;HANGUL SYLLABLE GGOELB;Lo;0;L;;;;;N;;;;; +AF8C;HANGUL SYLLABLE GGOELS;Lo;0;L;;;;;N;;;;; +AF8D;HANGUL SYLLABLE GGOELT;Lo;0;L;;;;;N;;;;; +AF8E;HANGUL SYLLABLE GGOELP;Lo;0;L;;;;;N;;;;; +AF8F;HANGUL SYLLABLE GGOELH;Lo;0;L;;;;;N;;;;; +AF90;HANGUL SYLLABLE GGOEM;Lo;0;L;;;;;N;;;;; +AF91;HANGUL SYLLABLE GGOEB;Lo;0;L;;;;;N;;;;; +AF92;HANGUL SYLLABLE GGOEBS;Lo;0;L;;;;;N;;;;; +AF93;HANGUL SYLLABLE GGOES;Lo;0;L;;;;;N;;;;; +AF94;HANGUL SYLLABLE GGOESS;Lo;0;L;;;;;N;;;;; +AF95;HANGUL SYLLABLE GGOENG;Lo;0;L;;;;;N;;;;; +AF96;HANGUL SYLLABLE GGOEJ;Lo;0;L;;;;;N;;;;; +AF97;HANGUL SYLLABLE GGOEC;Lo;0;L;;;;;N;;;;; +AF98;HANGUL SYLLABLE GGOEK;Lo;0;L;;;;;N;;;;; +AF99;HANGUL SYLLABLE GGOET;Lo;0;L;;;;;N;;;;; +AF9A;HANGUL SYLLABLE GGOEP;Lo;0;L;;;;;N;;;;; +AF9B;HANGUL SYLLABLE GGOEH;Lo;0;L;;;;;N;;;;; +AF9C;HANGUL SYLLABLE GGYO;Lo;0;L;;;;;N;;;;; +AF9D;HANGUL SYLLABLE GGYOG;Lo;0;L;;;;;N;;;;; +AF9E;HANGUL SYLLABLE GGYOGG;Lo;0;L;;;;;N;;;;; +AF9F;HANGUL SYLLABLE GGYOGS;Lo;0;L;;;;;N;;;;; +AFA0;HANGUL SYLLABLE GGYON;Lo;0;L;;;;;N;;;;; +AFA1;HANGUL SYLLABLE GGYONI;Lo;0;L;;;;;N;;;;; +AFA2;HANGUL SYLLABLE GGYONH;Lo;0;L;;;;;N;;;;; +AFA3;HANGUL SYLLABLE GGYOD;Lo;0;L;;;;;N;;;;; +AFA4;HANGUL SYLLABLE GGYOL;Lo;0;L;;;;;N;;;;; +AFA5;HANGUL SYLLABLE GGYOLG;Lo;0;L;;;;;N;;;;; +AFA6;HANGUL SYLLABLE GGYOLM;Lo;0;L;;;;;N;;;;; +AFA7;HANGUL SYLLABLE GGYOLB;Lo;0;L;;;;;N;;;;; +AFA8;HANGUL SYLLABLE GGYOLS;Lo;0;L;;;;;N;;;;; +AFA9;HANGUL SYLLABLE GGYOLT;Lo;0;L;;;;;N;;;;; +AFAA;HANGUL SYLLABLE GGYOLP;Lo;0;L;;;;;N;;;;; +AFAB;HANGUL SYLLABLE GGYOLH;Lo;0;L;;;;;N;;;;; +AFAC;HANGUL SYLLABLE GGYOM;Lo;0;L;;;;;N;;;;; +AFAD;HANGUL SYLLABLE GGYOB;Lo;0;L;;;;;N;;;;; +AFAE;HANGUL SYLLABLE GGYOBS;Lo;0;L;;;;;N;;;;; +AFAF;HANGUL SYLLABLE GGYOS;Lo;0;L;;;;;N;;;;; +AFB0;HANGUL SYLLABLE GGYOSS;Lo;0;L;;;;;N;;;;; +AFB1;HANGUL SYLLABLE GGYONG;Lo;0;L;;;;;N;;;;; +AFB2;HANGUL SYLLABLE GGYOJ;Lo;0;L;;;;;N;;;;; +AFB3;HANGUL SYLLABLE GGYOC;Lo;0;L;;;;;N;;;;; +AFB4;HANGUL SYLLABLE GGYOK;Lo;0;L;;;;;N;;;;; +AFB5;HANGUL SYLLABLE GGYOT;Lo;0;L;;;;;N;;;;; +AFB6;HANGUL SYLLABLE GGYOP;Lo;0;L;;;;;N;;;;; +AFB7;HANGUL SYLLABLE GGYOH;Lo;0;L;;;;;N;;;;; +AFB8;HANGUL SYLLABLE GGU;Lo;0;L;;;;;N;;;;; +AFB9;HANGUL SYLLABLE GGUG;Lo;0;L;;;;;N;;;;; +AFBA;HANGUL SYLLABLE GGUGG;Lo;0;L;;;;;N;;;;; +AFBB;HANGUL SYLLABLE GGUGS;Lo;0;L;;;;;N;;;;; +AFBC;HANGUL SYLLABLE GGUN;Lo;0;L;;;;;N;;;;; +AFBD;HANGUL SYLLABLE GGUNI;Lo;0;L;;;;;N;;;;; +AFBE;HANGUL SYLLABLE GGUNH;Lo;0;L;;;;;N;;;;; +AFBF;HANGUL SYLLABLE GGUD;Lo;0;L;;;;;N;;;;; +AFC0;HANGUL SYLLABLE GGUL;Lo;0;L;;;;;N;;;;; +AFC1;HANGUL SYLLABLE GGULG;Lo;0;L;;;;;N;;;;; +AFC2;HANGUL SYLLABLE GGULM;Lo;0;L;;;;;N;;;;; +AFC3;HANGUL SYLLABLE GGULB;Lo;0;L;;;;;N;;;;; +AFC4;HANGUL SYLLABLE GGULS;Lo;0;L;;;;;N;;;;; +AFC5;HANGUL SYLLABLE GGULT;Lo;0;L;;;;;N;;;;; +AFC6;HANGUL SYLLABLE GGULP;Lo;0;L;;;;;N;;;;; +AFC7;HANGUL SYLLABLE GGULH;Lo;0;L;;;;;N;;;;; +AFC8;HANGUL SYLLABLE GGUM;Lo;0;L;;;;;N;;;;; +AFC9;HANGUL SYLLABLE GGUB;Lo;0;L;;;;;N;;;;; +AFCA;HANGUL SYLLABLE GGUBS;Lo;0;L;;;;;N;;;;; +AFCB;HANGUL SYLLABLE GGUS;Lo;0;L;;;;;N;;;;; +AFCC;HANGUL SYLLABLE GGUSS;Lo;0;L;;;;;N;;;;; +AFCD;HANGUL SYLLABLE GGUNG;Lo;0;L;;;;;N;;;;; +AFCE;HANGUL SYLLABLE GGUJ;Lo;0;L;;;;;N;;;;; +AFCF;HANGUL SYLLABLE GGUC;Lo;0;L;;;;;N;;;;; +AFD0;HANGUL SYLLABLE GGUK;Lo;0;L;;;;;N;;;;; +AFD1;HANGUL SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; +AFD2;HANGUL SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; +AFD3;HANGUL SYLLABLE GGUH;Lo;0;L;;;;;N;;;;; +AFD4;HANGUL SYLLABLE GGWEO;Lo;0;L;;;;;N;;;;; +AFD5;HANGUL SYLLABLE GGWEOG;Lo;0;L;;;;;N;;;;; +AFD6;HANGUL SYLLABLE GGWEOGG;Lo;0;L;;;;;N;;;;; +AFD7;HANGUL SYLLABLE GGWEOGS;Lo;0;L;;;;;N;;;;; +AFD8;HANGUL SYLLABLE GGWEON;Lo;0;L;;;;;N;;;;; +AFD9;HANGUL SYLLABLE GGWEONI;Lo;0;L;;;;;N;;;;; +AFDA;HANGUL SYLLABLE GGWEONH;Lo;0;L;;;;;N;;;;; +AFDB;HANGUL SYLLABLE GGWEOD;Lo;0;L;;;;;N;;;;; +AFDC;HANGUL SYLLABLE GGWEOL;Lo;0;L;;;;;N;;;;; +AFDD;HANGUL SYLLABLE GGWEOLG;Lo;0;L;;;;;N;;;;; +AFDE;HANGUL SYLLABLE GGWEOLM;Lo;0;L;;;;;N;;;;; +AFDF;HANGUL SYLLABLE GGWEOLB;Lo;0;L;;;;;N;;;;; +AFE0;HANGUL SYLLABLE GGWEOLS;Lo;0;L;;;;;N;;;;; +AFE1;HANGUL SYLLABLE GGWEOLT;Lo;0;L;;;;;N;;;;; +AFE2;HANGUL SYLLABLE GGWEOLP;Lo;0;L;;;;;N;;;;; +AFE3;HANGUL SYLLABLE GGWEOLH;Lo;0;L;;;;;N;;;;; +AFE4;HANGUL SYLLABLE GGWEOM;Lo;0;L;;;;;N;;;;; +AFE5;HANGUL SYLLABLE GGWEOB;Lo;0;L;;;;;N;;;;; +AFE6;HANGUL SYLLABLE GGWEOBS;Lo;0;L;;;;;N;;;;; +AFE7;HANGUL SYLLABLE GGWEOS;Lo;0;L;;;;;N;;;;; +AFE8;HANGUL SYLLABLE GGWEOSS;Lo;0;L;;;;;N;;;;; +AFE9;HANGUL SYLLABLE GGWEONG;Lo;0;L;;;;;N;;;;; +AFEA;HANGUL SYLLABLE GGWEOJ;Lo;0;L;;;;;N;;;;; +AFEB;HANGUL SYLLABLE GGWEOC;Lo;0;L;;;;;N;;;;; +AFEC;HANGUL SYLLABLE GGWEOK;Lo;0;L;;;;;N;;;;; +AFED;HANGUL SYLLABLE GGWEOT;Lo;0;L;;;;;N;;;;; +AFEE;HANGUL SYLLABLE GGWEOP;Lo;0;L;;;;;N;;;;; +AFEF;HANGUL SYLLABLE GGWEOH;Lo;0;L;;;;;N;;;;; +AFF0;HANGUL SYLLABLE GGWE;Lo;0;L;;;;;N;;;;; +AFF1;HANGUL SYLLABLE GGWEG;Lo;0;L;;;;;N;;;;; +AFF2;HANGUL SYLLABLE GGWEGG;Lo;0;L;;;;;N;;;;; +AFF3;HANGUL SYLLABLE GGWEGS;Lo;0;L;;;;;N;;;;; +AFF4;HANGUL SYLLABLE GGWEN;Lo;0;L;;;;;N;;;;; +AFF5;HANGUL SYLLABLE GGWENI;Lo;0;L;;;;;N;;;;; +AFF6;HANGUL SYLLABLE GGWENH;Lo;0;L;;;;;N;;;;; +AFF7;HANGUL SYLLABLE GGWED;Lo;0;L;;;;;N;;;;; +AFF8;HANGUL SYLLABLE GGWEL;Lo;0;L;;;;;N;;;;; +AFF9;HANGUL SYLLABLE GGWELG;Lo;0;L;;;;;N;;;;; +AFFA;HANGUL SYLLABLE GGWELM;Lo;0;L;;;;;N;;;;; +AFFB;HANGUL SYLLABLE GGWELB;Lo;0;L;;;;;N;;;;; +AFFC;HANGUL SYLLABLE GGWELS;Lo;0;L;;;;;N;;;;; +AFFD;HANGUL SYLLABLE GGWELT;Lo;0;L;;;;;N;;;;; +AFFE;HANGUL SYLLABLE GGWELP;Lo;0;L;;;;;N;;;;; +AFFF;HANGUL SYLLABLE GGWELH;Lo;0;L;;;;;N;;;;; +B000;HANGUL SYLLABLE GGWEM;Lo;0;L;;;;;N;;;;; +B001;HANGUL SYLLABLE GGWEB;Lo;0;L;;;;;N;;;;; +B002;HANGUL SYLLABLE GGWEBS;Lo;0;L;;;;;N;;;;; +B003;HANGUL SYLLABLE GGWES;Lo;0;L;;;;;N;;;;; +B004;HANGUL SYLLABLE GGWESS;Lo;0;L;;;;;N;;;;; +B005;HANGUL SYLLABLE GGWENG;Lo;0;L;;;;;N;;;;; +B006;HANGUL SYLLABLE GGWEJ;Lo;0;L;;;;;N;;;;; +B007;HANGUL SYLLABLE GGWEC;Lo;0;L;;;;;N;;;;; +B008;HANGUL SYLLABLE GGWEK;Lo;0;L;;;;;N;;;;; +B009;HANGUL SYLLABLE GGWET;Lo;0;L;;;;;N;;;;; +B00A;HANGUL SYLLABLE GGWEP;Lo;0;L;;;;;N;;;;; +B00B;HANGUL SYLLABLE GGWEH;Lo;0;L;;;;;N;;;;; +B00C;HANGUL SYLLABLE GGWI;Lo;0;L;;;;;N;;;;; +B00D;HANGUL SYLLABLE GGWIG;Lo;0;L;;;;;N;;;;; +B00E;HANGUL SYLLABLE GGWIGG;Lo;0;L;;;;;N;;;;; +B00F;HANGUL SYLLABLE GGWIGS;Lo;0;L;;;;;N;;;;; +B010;HANGUL SYLLABLE GGWIN;Lo;0;L;;;;;N;;;;; +B011;HANGUL SYLLABLE GGWINI;Lo;0;L;;;;;N;;;;; +B012;HANGUL SYLLABLE GGWINH;Lo;0;L;;;;;N;;;;; +B013;HANGUL SYLLABLE GGWID;Lo;0;L;;;;;N;;;;; +B014;HANGUL SYLLABLE GGWIL;Lo;0;L;;;;;N;;;;; +B015;HANGUL SYLLABLE GGWILG;Lo;0;L;;;;;N;;;;; +B016;HANGUL SYLLABLE GGWILM;Lo;0;L;;;;;N;;;;; +B017;HANGUL SYLLABLE GGWILB;Lo;0;L;;;;;N;;;;; +B018;HANGUL SYLLABLE GGWILS;Lo;0;L;;;;;N;;;;; +B019;HANGUL SYLLABLE GGWILT;Lo;0;L;;;;;N;;;;; +B01A;HANGUL SYLLABLE GGWILP;Lo;0;L;;;;;N;;;;; +B01B;HANGUL SYLLABLE GGWILH;Lo;0;L;;;;;N;;;;; +B01C;HANGUL SYLLABLE GGWIM;Lo;0;L;;;;;N;;;;; +B01D;HANGUL SYLLABLE GGWIB;Lo;0;L;;;;;N;;;;; +B01E;HANGUL SYLLABLE GGWIBS;Lo;0;L;;;;;N;;;;; +B01F;HANGUL SYLLABLE GGWIS;Lo;0;L;;;;;N;;;;; +B020;HANGUL SYLLABLE GGWISS;Lo;0;L;;;;;N;;;;; +B021;HANGUL SYLLABLE GGWING;Lo;0;L;;;;;N;;;;; +B022;HANGUL SYLLABLE GGWIJ;Lo;0;L;;;;;N;;;;; +B023;HANGUL SYLLABLE GGWIC;Lo;0;L;;;;;N;;;;; +B024;HANGUL SYLLABLE GGWIK;Lo;0;L;;;;;N;;;;; +B025;HANGUL SYLLABLE GGWIT;Lo;0;L;;;;;N;;;;; +B026;HANGUL SYLLABLE GGWIP;Lo;0;L;;;;;N;;;;; +B027;HANGUL SYLLABLE GGWIH;Lo;0;L;;;;;N;;;;; +B028;HANGUL SYLLABLE GGYU;Lo;0;L;;;;;N;;;;; +B029;HANGUL SYLLABLE GGYUG;Lo;0;L;;;;;N;;;;; +B02A;HANGUL SYLLABLE GGYUGG;Lo;0;L;;;;;N;;;;; +B02B;HANGUL SYLLABLE GGYUGS;Lo;0;L;;;;;N;;;;; +B02C;HANGUL SYLLABLE GGYUN;Lo;0;L;;;;;N;;;;; +B02D;HANGUL SYLLABLE GGYUNI;Lo;0;L;;;;;N;;;;; +B02E;HANGUL SYLLABLE GGYUNH;Lo;0;L;;;;;N;;;;; +B02F;HANGUL SYLLABLE GGYUD;Lo;0;L;;;;;N;;;;; +B030;HANGUL SYLLABLE GGYUL;Lo;0;L;;;;;N;;;;; +B031;HANGUL SYLLABLE GGYULG;Lo;0;L;;;;;N;;;;; +B032;HANGUL SYLLABLE GGYULM;Lo;0;L;;;;;N;;;;; +B033;HANGUL SYLLABLE GGYULB;Lo;0;L;;;;;N;;;;; +B034;HANGUL SYLLABLE GGYULS;Lo;0;L;;;;;N;;;;; +B035;HANGUL SYLLABLE GGYULT;Lo;0;L;;;;;N;;;;; +B036;HANGUL SYLLABLE GGYULP;Lo;0;L;;;;;N;;;;; +B037;HANGUL SYLLABLE GGYULH;Lo;0;L;;;;;N;;;;; +B038;HANGUL SYLLABLE GGYUM;Lo;0;L;;;;;N;;;;; +B039;HANGUL SYLLABLE GGYUB;Lo;0;L;;;;;N;;;;; +B03A;HANGUL SYLLABLE GGYUBS;Lo;0;L;;;;;N;;;;; +B03B;HANGUL SYLLABLE GGYUS;Lo;0;L;;;;;N;;;;; +B03C;HANGUL SYLLABLE GGYUSS;Lo;0;L;;;;;N;;;;; +B03D;HANGUL SYLLABLE GGYUNG;Lo;0;L;;;;;N;;;;; +B03E;HANGUL SYLLABLE GGYUJ;Lo;0;L;;;;;N;;;;; +B03F;HANGUL SYLLABLE GGYUC;Lo;0;L;;;;;N;;;;; +B040;HANGUL SYLLABLE GGYUK;Lo;0;L;;;;;N;;;;; +B041;HANGUL SYLLABLE GGYUT;Lo;0;L;;;;;N;;;;; +B042;HANGUL SYLLABLE GGYUP;Lo;0;L;;;;;N;;;;; +B043;HANGUL SYLLABLE GGYUH;Lo;0;L;;;;;N;;;;; +B044;HANGUL SYLLABLE GGEU;Lo;0;L;;;;;N;;;;; +B045;HANGUL SYLLABLE GGEUG;Lo;0;L;;;;;N;;;;; +B046;HANGUL SYLLABLE GGEUGG;Lo;0;L;;;;;N;;;;; +B047;HANGUL SYLLABLE GGEUGS;Lo;0;L;;;;;N;;;;; +B048;HANGUL SYLLABLE GGEUN;Lo;0;L;;;;;N;;;;; +B049;HANGUL SYLLABLE GGEUNI;Lo;0;L;;;;;N;;;;; +B04A;HANGUL SYLLABLE GGEUNH;Lo;0;L;;;;;N;;;;; +B04B;HANGUL SYLLABLE GGEUD;Lo;0;L;;;;;N;;;;; +B04C;HANGUL SYLLABLE GGEUL;Lo;0;L;;;;;N;;;;; +B04D;HANGUL SYLLABLE GGEULG;Lo;0;L;;;;;N;;;;; +B04E;HANGUL SYLLABLE GGEULM;Lo;0;L;;;;;N;;;;; +B04F;HANGUL SYLLABLE GGEULB;Lo;0;L;;;;;N;;;;; +B050;HANGUL SYLLABLE GGEULS;Lo;0;L;;;;;N;;;;; +B051;HANGUL SYLLABLE GGEULT;Lo;0;L;;;;;N;;;;; +B052;HANGUL SYLLABLE GGEULP;Lo;0;L;;;;;N;;;;; +B053;HANGUL SYLLABLE GGEULH;Lo;0;L;;;;;N;;;;; +B054;HANGUL SYLLABLE GGEUM;Lo;0;L;;;;;N;;;;; +B055;HANGUL SYLLABLE GGEUB;Lo;0;L;;;;;N;;;;; +B056;HANGUL SYLLABLE GGEUBS;Lo;0;L;;;;;N;;;;; +B057;HANGUL SYLLABLE GGEUS;Lo;0;L;;;;;N;;;;; +B058;HANGUL SYLLABLE GGEUSS;Lo;0;L;;;;;N;;;;; +B059;HANGUL SYLLABLE GGEUNG;Lo;0;L;;;;;N;;;;; +B05A;HANGUL SYLLABLE GGEUJ;Lo;0;L;;;;;N;;;;; +B05B;HANGUL SYLLABLE GGEUC;Lo;0;L;;;;;N;;;;; +B05C;HANGUL SYLLABLE GGEUK;Lo;0;L;;;;;N;;;;; +B05D;HANGUL SYLLABLE GGEUT;Lo;0;L;;;;;N;;;;; +B05E;HANGUL SYLLABLE GGEUP;Lo;0;L;;;;;N;;;;; +B05F;HANGUL SYLLABLE GGEUH;Lo;0;L;;;;;N;;;;; +B060;HANGUL SYLLABLE GGYI;Lo;0;L;;;;;N;;;;; +B061;HANGUL SYLLABLE GGYIG;Lo;0;L;;;;;N;;;;; +B062;HANGUL SYLLABLE GGYIGG;Lo;0;L;;;;;N;;;;; +B063;HANGUL SYLLABLE GGYIGS;Lo;0;L;;;;;N;;;;; +B064;HANGUL SYLLABLE GGYIN;Lo;0;L;;;;;N;;;;; +B065;HANGUL SYLLABLE GGYINI;Lo;0;L;;;;;N;;;;; +B066;HANGUL SYLLABLE GGYINH;Lo;0;L;;;;;N;;;;; +B067;HANGUL SYLLABLE GGYID;Lo;0;L;;;;;N;;;;; +B068;HANGUL SYLLABLE GGYIL;Lo;0;L;;;;;N;;;;; +B069;HANGUL SYLLABLE GGYILG;Lo;0;L;;;;;N;;;;; +B06A;HANGUL SYLLABLE GGYILM;Lo;0;L;;;;;N;;;;; +B06B;HANGUL SYLLABLE GGYILB;Lo;0;L;;;;;N;;;;; +B06C;HANGUL SYLLABLE GGYILS;Lo;0;L;;;;;N;;;;; +B06D;HANGUL SYLLABLE GGYILT;Lo;0;L;;;;;N;;;;; +B06E;HANGUL SYLLABLE GGYILP;Lo;0;L;;;;;N;;;;; +B06F;HANGUL SYLLABLE GGYILH;Lo;0;L;;;;;N;;;;; +B070;HANGUL SYLLABLE GGYIM;Lo;0;L;;;;;N;;;;; +B071;HANGUL SYLLABLE GGYIB;Lo;0;L;;;;;N;;;;; +B072;HANGUL SYLLABLE GGYIBS;Lo;0;L;;;;;N;;;;; +B073;HANGUL SYLLABLE GGYIS;Lo;0;L;;;;;N;;;;; +B074;HANGUL SYLLABLE GGYISS;Lo;0;L;;;;;N;;;;; +B075;HANGUL SYLLABLE GGYING;Lo;0;L;;;;;N;;;;; +B076;HANGUL SYLLABLE GGYIJ;Lo;0;L;;;;;N;;;;; +B077;HANGUL SYLLABLE GGYIC;Lo;0;L;;;;;N;;;;; +B078;HANGUL SYLLABLE GGYIK;Lo;0;L;;;;;N;;;;; +B079;HANGUL SYLLABLE GGYIT;Lo;0;L;;;;;N;;;;; +B07A;HANGUL SYLLABLE GGYIP;Lo;0;L;;;;;N;;;;; +B07B;HANGUL SYLLABLE GGYIH;Lo;0;L;;;;;N;;;;; +B07C;HANGUL SYLLABLE GGI;Lo;0;L;;;;;N;;;;; +B07D;HANGUL SYLLABLE GGIG;Lo;0;L;;;;;N;;;;; +B07E;HANGUL SYLLABLE GGIGG;Lo;0;L;;;;;N;;;;; +B07F;HANGUL SYLLABLE GGIGS;Lo;0;L;;;;;N;;;;; +B080;HANGUL SYLLABLE GGIN;Lo;0;L;;;;;N;;;;; +B081;HANGUL SYLLABLE GGINI;Lo;0;L;;;;;N;;;;; +B082;HANGUL SYLLABLE GGINH;Lo;0;L;;;;;N;;;;; +B083;HANGUL SYLLABLE GGID;Lo;0;L;;;;;N;;;;; +B084;HANGUL SYLLABLE GGIL;Lo;0;L;;;;;N;;;;; +B085;HANGUL SYLLABLE GGILG;Lo;0;L;;;;;N;;;;; +B086;HANGUL SYLLABLE GGILM;Lo;0;L;;;;;N;;;;; +B087;HANGUL SYLLABLE GGILB;Lo;0;L;;;;;N;;;;; +B088;HANGUL SYLLABLE GGILS;Lo;0;L;;;;;N;;;;; +B089;HANGUL SYLLABLE GGILT;Lo;0;L;;;;;N;;;;; +B08A;HANGUL SYLLABLE GGILP;Lo;0;L;;;;;N;;;;; +B08B;HANGUL SYLLABLE GGILH;Lo;0;L;;;;;N;;;;; +B08C;HANGUL SYLLABLE GGIM;Lo;0;L;;;;;N;;;;; +B08D;HANGUL SYLLABLE GGIB;Lo;0;L;;;;;N;;;;; +B08E;HANGUL SYLLABLE GGIBS;Lo;0;L;;;;;N;;;;; +B08F;HANGUL SYLLABLE GGIS;Lo;0;L;;;;;N;;;;; +B090;HANGUL SYLLABLE GGISS;Lo;0;L;;;;;N;;;;; +B091;HANGUL SYLLABLE GGING;Lo;0;L;;;;;N;;;;; +B092;HANGUL SYLLABLE GGIJ;Lo;0;L;;;;;N;;;;; +B093;HANGUL SYLLABLE GGIC;Lo;0;L;;;;;N;;;;; +B094;HANGUL SYLLABLE GGIK;Lo;0;L;;;;;N;;;;; +B095;HANGUL SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; +B096;HANGUL SYLLABLE GGIP;Lo;0;L;;;;;N;;;;; +B097;HANGUL SYLLABLE GGIH;Lo;0;L;;;;;N;;;;; +B098;HANGUL SYLLABLE NA;Lo;0;L;;;;;N;;;;; +B099;HANGUL SYLLABLE NAG;Lo;0;L;;;;;N;;;;; +B09A;HANGUL SYLLABLE NAGG;Lo;0;L;;;;;N;;;;; +B09B;HANGUL SYLLABLE NAGS;Lo;0;L;;;;;N;;;;; +B09C;HANGUL SYLLABLE NAN;Lo;0;L;;;;;N;;;;; +B09D;HANGUL SYLLABLE NANI;Lo;0;L;;;;;N;;;;; +B09E;HANGUL SYLLABLE NANH;Lo;0;L;;;;;N;;;;; +B09F;HANGUL SYLLABLE NAD;Lo;0;L;;;;;N;;;;; +B0A0;HANGUL SYLLABLE NAL;Lo;0;L;;;;;N;;;;; +B0A1;HANGUL SYLLABLE NALG;Lo;0;L;;;;;N;;;;; +B0A2;HANGUL SYLLABLE NALM;Lo;0;L;;;;;N;;;;; +B0A3;HANGUL SYLLABLE NALB;Lo;0;L;;;;;N;;;;; +B0A4;HANGUL SYLLABLE NALS;Lo;0;L;;;;;N;;;;; +B0A5;HANGUL SYLLABLE NALT;Lo;0;L;;;;;N;;;;; +B0A6;HANGUL SYLLABLE NALP;Lo;0;L;;;;;N;;;;; +B0A7;HANGUL SYLLABLE NALH;Lo;0;L;;;;;N;;;;; +B0A8;HANGUL SYLLABLE NAM;Lo;0;L;;;;;N;;;;; +B0A9;HANGUL SYLLABLE NAB;Lo;0;L;;;;;N;;;;; +B0AA;HANGUL SYLLABLE NABS;Lo;0;L;;;;;N;;;;; +B0AB;HANGUL SYLLABLE NAS;Lo;0;L;;;;;N;;;;; +B0AC;HANGUL SYLLABLE NASS;Lo;0;L;;;;;N;;;;; +B0AD;HANGUL SYLLABLE NANG;Lo;0;L;;;;;N;;;;; +B0AE;HANGUL SYLLABLE NAJ;Lo;0;L;;;;;N;;;;; +B0AF;HANGUL SYLLABLE NAC;Lo;0;L;;;;;N;;;;; +B0B0;HANGUL SYLLABLE NAK;Lo;0;L;;;;;N;;;;; +B0B1;HANGUL SYLLABLE NAT;Lo;0;L;;;;;N;;;;; +B0B2;HANGUL SYLLABLE NAP;Lo;0;L;;;;;N;;;;; +B0B3;HANGUL SYLLABLE NAH;Lo;0;L;;;;;N;;;;; +B0B4;HANGUL SYLLABLE NAE;Lo;0;L;;;;;N;;;;; +B0B5;HANGUL SYLLABLE NAEG;Lo;0;L;;;;;N;;;;; +B0B6;HANGUL SYLLABLE NAEGG;Lo;0;L;;;;;N;;;;; +B0B7;HANGUL SYLLABLE NAEGS;Lo;0;L;;;;;N;;;;; +B0B8;HANGUL SYLLABLE NAEN;Lo;0;L;;;;;N;;;;; +B0B9;HANGUL SYLLABLE NAENI;Lo;0;L;;;;;N;;;;; +B0BA;HANGUL SYLLABLE NAENH;Lo;0;L;;;;;N;;;;; +B0BB;HANGUL SYLLABLE NAED;Lo;0;L;;;;;N;;;;; +B0BC;HANGUL SYLLABLE NAEL;Lo;0;L;;;;;N;;;;; +B0BD;HANGUL SYLLABLE NAELG;Lo;0;L;;;;;N;;;;; +B0BE;HANGUL SYLLABLE NAELM;Lo;0;L;;;;;N;;;;; +B0BF;HANGUL SYLLABLE NAELB;Lo;0;L;;;;;N;;;;; +B0C0;HANGUL SYLLABLE NAELS;Lo;0;L;;;;;N;;;;; +B0C1;HANGUL SYLLABLE NAELT;Lo;0;L;;;;;N;;;;; +B0C2;HANGUL SYLLABLE NAELP;Lo;0;L;;;;;N;;;;; +B0C3;HANGUL SYLLABLE NAELH;Lo;0;L;;;;;N;;;;; +B0C4;HANGUL SYLLABLE NAEM;Lo;0;L;;;;;N;;;;; +B0C5;HANGUL SYLLABLE NAEB;Lo;0;L;;;;;N;;;;; +B0C6;HANGUL SYLLABLE NAEBS;Lo;0;L;;;;;N;;;;; +B0C7;HANGUL SYLLABLE NAES;Lo;0;L;;;;;N;;;;; +B0C8;HANGUL SYLLABLE NAESS;Lo;0;L;;;;;N;;;;; +B0C9;HANGUL SYLLABLE NAENG;Lo;0;L;;;;;N;;;;; +B0CA;HANGUL SYLLABLE NAEJ;Lo;0;L;;;;;N;;;;; +B0CB;HANGUL SYLLABLE NAEC;Lo;0;L;;;;;N;;;;; +B0CC;HANGUL SYLLABLE NAEK;Lo;0;L;;;;;N;;;;; +B0CD;HANGUL SYLLABLE NAET;Lo;0;L;;;;;N;;;;; +B0CE;HANGUL SYLLABLE NAEP;Lo;0;L;;;;;N;;;;; +B0CF;HANGUL SYLLABLE NAEH;Lo;0;L;;;;;N;;;;; +B0D0;HANGUL SYLLABLE NYA;Lo;0;L;;;;;N;;;;; +B0D1;HANGUL SYLLABLE NYAG;Lo;0;L;;;;;N;;;;; +B0D2;HANGUL SYLLABLE NYAGG;Lo;0;L;;;;;N;;;;; +B0D3;HANGUL SYLLABLE NYAGS;Lo;0;L;;;;;N;;;;; +B0D4;HANGUL SYLLABLE NYAN;Lo;0;L;;;;;N;;;;; +B0D5;HANGUL SYLLABLE NYANI;Lo;0;L;;;;;N;;;;; +B0D6;HANGUL SYLLABLE NYANH;Lo;0;L;;;;;N;;;;; +B0D7;HANGUL SYLLABLE NYAD;Lo;0;L;;;;;N;;;;; +B0D8;HANGUL SYLLABLE NYAL;Lo;0;L;;;;;N;;;;; +B0D9;HANGUL SYLLABLE NYALG;Lo;0;L;;;;;N;;;;; +B0DA;HANGUL SYLLABLE NYALM;Lo;0;L;;;;;N;;;;; +B0DB;HANGUL SYLLABLE NYALB;Lo;0;L;;;;;N;;;;; +B0DC;HANGUL SYLLABLE NYALS;Lo;0;L;;;;;N;;;;; +B0DD;HANGUL SYLLABLE NYALT;Lo;0;L;;;;;N;;;;; +B0DE;HANGUL SYLLABLE NYALP;Lo;0;L;;;;;N;;;;; +B0DF;HANGUL SYLLABLE NYALH;Lo;0;L;;;;;N;;;;; +B0E0;HANGUL SYLLABLE NYAM;Lo;0;L;;;;;N;;;;; +B0E1;HANGUL SYLLABLE NYAB;Lo;0;L;;;;;N;;;;; +B0E2;HANGUL SYLLABLE NYABS;Lo;0;L;;;;;N;;;;; +B0E3;HANGUL SYLLABLE NYAS;Lo;0;L;;;;;N;;;;; +B0E4;HANGUL SYLLABLE NYASS;Lo;0;L;;;;;N;;;;; +B0E5;HANGUL SYLLABLE NYANG;Lo;0;L;;;;;N;;;;; +B0E6;HANGUL SYLLABLE NYAJ;Lo;0;L;;;;;N;;;;; +B0E7;HANGUL SYLLABLE NYAC;Lo;0;L;;;;;N;;;;; +B0E8;HANGUL SYLLABLE NYAK;Lo;0;L;;;;;N;;;;; +B0E9;HANGUL SYLLABLE NYAT;Lo;0;L;;;;;N;;;;; +B0EA;HANGUL SYLLABLE NYAP;Lo;0;L;;;;;N;;;;; +B0EB;HANGUL SYLLABLE NYAH;Lo;0;L;;;;;N;;;;; +B0EC;HANGUL SYLLABLE NYAE;Lo;0;L;;;;;N;;;;; +B0ED;HANGUL SYLLABLE NYAEG;Lo;0;L;;;;;N;;;;; +B0EE;HANGUL SYLLABLE NYAEGG;Lo;0;L;;;;;N;;;;; +B0EF;HANGUL SYLLABLE NYAEGS;Lo;0;L;;;;;N;;;;; +B0F0;HANGUL SYLLABLE NYAEN;Lo;0;L;;;;;N;;;;; +B0F1;HANGUL SYLLABLE NYAENI;Lo;0;L;;;;;N;;;;; +B0F2;HANGUL SYLLABLE NYAENH;Lo;0;L;;;;;N;;;;; +B0F3;HANGUL SYLLABLE NYAED;Lo;0;L;;;;;N;;;;; +B0F4;HANGUL SYLLABLE NYAEL;Lo;0;L;;;;;N;;;;; +B0F5;HANGUL SYLLABLE NYAELG;Lo;0;L;;;;;N;;;;; +B0F6;HANGUL SYLLABLE NYAELM;Lo;0;L;;;;;N;;;;; +B0F7;HANGUL SYLLABLE NYAELB;Lo;0;L;;;;;N;;;;; +B0F8;HANGUL SYLLABLE NYAELS;Lo;0;L;;;;;N;;;;; +B0F9;HANGUL SYLLABLE NYAELT;Lo;0;L;;;;;N;;;;; +B0FA;HANGUL SYLLABLE NYAELP;Lo;0;L;;;;;N;;;;; +B0FB;HANGUL SYLLABLE NYAELH;Lo;0;L;;;;;N;;;;; +B0FC;HANGUL SYLLABLE NYAEM;Lo;0;L;;;;;N;;;;; +B0FD;HANGUL SYLLABLE NYAEB;Lo;0;L;;;;;N;;;;; +B0FE;HANGUL SYLLABLE NYAEBS;Lo;0;L;;;;;N;;;;; +B0FF;HANGUL SYLLABLE NYAES;Lo;0;L;;;;;N;;;;; +B100;HANGUL SYLLABLE NYAESS;Lo;0;L;;;;;N;;;;; +B101;HANGUL SYLLABLE NYAENG;Lo;0;L;;;;;N;;;;; +B102;HANGUL SYLLABLE NYAEJ;Lo;0;L;;;;;N;;;;; +B103;HANGUL SYLLABLE NYAEC;Lo;0;L;;;;;N;;;;; +B104;HANGUL SYLLABLE NYAEK;Lo;0;L;;;;;N;;;;; +B105;HANGUL SYLLABLE NYAET;Lo;0;L;;;;;N;;;;; +B106;HANGUL SYLLABLE NYAEP;Lo;0;L;;;;;N;;;;; +B107;HANGUL SYLLABLE NYAEH;Lo;0;L;;;;;N;;;;; +B108;HANGUL SYLLABLE NEO;Lo;0;L;;;;;N;;;;; +B109;HANGUL SYLLABLE NEOG;Lo;0;L;;;;;N;;;;; +B10A;HANGUL SYLLABLE NEOGG;Lo;0;L;;;;;N;;;;; +B10B;HANGUL SYLLABLE NEOGS;Lo;0;L;;;;;N;;;;; +B10C;HANGUL SYLLABLE NEON;Lo;0;L;;;;;N;;;;; +B10D;HANGUL SYLLABLE NEONI;Lo;0;L;;;;;N;;;;; +B10E;HANGUL SYLLABLE NEONH;Lo;0;L;;;;;N;;;;; +B10F;HANGUL SYLLABLE NEOD;Lo;0;L;;;;;N;;;;; +B110;HANGUL SYLLABLE NEOL;Lo;0;L;;;;;N;;;;; +B111;HANGUL SYLLABLE NEOLG;Lo;0;L;;;;;N;;;;; +B112;HANGUL SYLLABLE NEOLM;Lo;0;L;;;;;N;;;;; +B113;HANGUL SYLLABLE NEOLB;Lo;0;L;;;;;N;;;;; +B114;HANGUL SYLLABLE NEOLS;Lo;0;L;;;;;N;;;;; +B115;HANGUL SYLLABLE NEOLT;Lo;0;L;;;;;N;;;;; +B116;HANGUL SYLLABLE NEOLP;Lo;0;L;;;;;N;;;;; +B117;HANGUL SYLLABLE NEOLH;Lo;0;L;;;;;N;;;;; +B118;HANGUL SYLLABLE NEOM;Lo;0;L;;;;;N;;;;; +B119;HANGUL SYLLABLE NEOB;Lo;0;L;;;;;N;;;;; +B11A;HANGUL SYLLABLE NEOBS;Lo;0;L;;;;;N;;;;; +B11B;HANGUL SYLLABLE NEOS;Lo;0;L;;;;;N;;;;; +B11C;HANGUL SYLLABLE NEOSS;Lo;0;L;;;;;N;;;;; +B11D;HANGUL SYLLABLE NEONG;Lo;0;L;;;;;N;;;;; +B11E;HANGUL SYLLABLE NEOJ;Lo;0;L;;;;;N;;;;; +B11F;HANGUL SYLLABLE NEOC;Lo;0;L;;;;;N;;;;; +B120;HANGUL SYLLABLE NEOK;Lo;0;L;;;;;N;;;;; +B121;HANGUL SYLLABLE NEOT;Lo;0;L;;;;;N;;;;; +B122;HANGUL SYLLABLE NEOP;Lo;0;L;;;;;N;;;;; +B123;HANGUL SYLLABLE NEOH;Lo;0;L;;;;;N;;;;; +B124;HANGUL SYLLABLE NE;Lo;0;L;;;;;N;;;;; +B125;HANGUL SYLLABLE NEG;Lo;0;L;;;;;N;;;;; +B126;HANGUL SYLLABLE NEGG;Lo;0;L;;;;;N;;;;; +B127;HANGUL SYLLABLE NEGS;Lo;0;L;;;;;N;;;;; +B128;HANGUL SYLLABLE NEN;Lo;0;L;;;;;N;;;;; +B129;HANGUL SYLLABLE NENI;Lo;0;L;;;;;N;;;;; +B12A;HANGUL SYLLABLE NENH;Lo;0;L;;;;;N;;;;; +B12B;HANGUL SYLLABLE NED;Lo;0;L;;;;;N;;;;; +B12C;HANGUL SYLLABLE NEL;Lo;0;L;;;;;N;;;;; +B12D;HANGUL SYLLABLE NELG;Lo;0;L;;;;;N;;;;; +B12E;HANGUL SYLLABLE NELM;Lo;0;L;;;;;N;;;;; +B12F;HANGUL SYLLABLE NELB;Lo;0;L;;;;;N;;;;; +B130;HANGUL SYLLABLE NELS;Lo;0;L;;;;;N;;;;; +B131;HANGUL SYLLABLE NELT;Lo;0;L;;;;;N;;;;; +B132;HANGUL SYLLABLE NELP;Lo;0;L;;;;;N;;;;; +B133;HANGUL SYLLABLE NELH;Lo;0;L;;;;;N;;;;; +B134;HANGUL SYLLABLE NEM;Lo;0;L;;;;;N;;;;; +B135;HANGUL SYLLABLE NEB;Lo;0;L;;;;;N;;;;; +B136;HANGUL SYLLABLE NEBS;Lo;0;L;;;;;N;;;;; +B137;HANGUL SYLLABLE NES;Lo;0;L;;;;;N;;;;; +B138;HANGUL SYLLABLE NESS;Lo;0;L;;;;;N;;;;; +B139;HANGUL SYLLABLE NENG;Lo;0;L;;;;;N;;;;; +B13A;HANGUL SYLLABLE NEJ;Lo;0;L;;;;;N;;;;; +B13B;HANGUL SYLLABLE NEC;Lo;0;L;;;;;N;;;;; +B13C;HANGUL SYLLABLE NEK;Lo;0;L;;;;;N;;;;; +B13D;HANGUL SYLLABLE NET;Lo;0;L;;;;;N;;;;; +B13E;HANGUL SYLLABLE NEP;Lo;0;L;;;;;N;;;;; +B13F;HANGUL SYLLABLE NEH;Lo;0;L;;;;;N;;;;; +B140;HANGUL SYLLABLE NYEO;Lo;0;L;;;;;N;;;;; +B141;HANGUL SYLLABLE NYEOG;Lo;0;L;;;;;N;;;;; +B142;HANGUL SYLLABLE NYEOGG;Lo;0;L;;;;;N;;;;; +B143;HANGUL SYLLABLE NYEOGS;Lo;0;L;;;;;N;;;;; +B144;HANGUL SYLLABLE NYEON;Lo;0;L;;;;;N;;;;; +B145;HANGUL SYLLABLE NYEONI;Lo;0;L;;;;;N;;;;; +B146;HANGUL SYLLABLE NYEONH;Lo;0;L;;;;;N;;;;; +B147;HANGUL SYLLABLE NYEOD;Lo;0;L;;;;;N;;;;; +B148;HANGUL SYLLABLE NYEOL;Lo;0;L;;;;;N;;;;; +B149;HANGUL SYLLABLE NYEOLG;Lo;0;L;;;;;N;;;;; +B14A;HANGUL SYLLABLE NYEOLM;Lo;0;L;;;;;N;;;;; +B14B;HANGUL SYLLABLE NYEOLB;Lo;0;L;;;;;N;;;;; +B14C;HANGUL SYLLABLE NYEOLS;Lo;0;L;;;;;N;;;;; +B14D;HANGUL SYLLABLE NYEOLT;Lo;0;L;;;;;N;;;;; +B14E;HANGUL SYLLABLE NYEOLP;Lo;0;L;;;;;N;;;;; +B14F;HANGUL SYLLABLE NYEOLH;Lo;0;L;;;;;N;;;;; +B150;HANGUL SYLLABLE NYEOM;Lo;0;L;;;;;N;;;;; +B151;HANGUL SYLLABLE NYEOB;Lo;0;L;;;;;N;;;;; +B152;HANGUL SYLLABLE NYEOBS;Lo;0;L;;;;;N;;;;; +B153;HANGUL SYLLABLE NYEOS;Lo;0;L;;;;;N;;;;; +B154;HANGUL SYLLABLE NYEOSS;Lo;0;L;;;;;N;;;;; +B155;HANGUL SYLLABLE NYEONG;Lo;0;L;;;;;N;;;;; +B156;HANGUL SYLLABLE NYEOJ;Lo;0;L;;;;;N;;;;; +B157;HANGUL SYLLABLE NYEOC;Lo;0;L;;;;;N;;;;; +B158;HANGUL SYLLABLE NYEOK;Lo;0;L;;;;;N;;;;; +B159;HANGUL SYLLABLE NYEOT;Lo;0;L;;;;;N;;;;; +B15A;HANGUL SYLLABLE NYEOP;Lo;0;L;;;;;N;;;;; +B15B;HANGUL SYLLABLE NYEOH;Lo;0;L;;;;;N;;;;; +B15C;HANGUL SYLLABLE NYE;Lo;0;L;;;;;N;;;;; +B15D;HANGUL SYLLABLE NYEG;Lo;0;L;;;;;N;;;;; +B15E;HANGUL SYLLABLE NYEGG;Lo;0;L;;;;;N;;;;; +B15F;HANGUL SYLLABLE NYEGS;Lo;0;L;;;;;N;;;;; +B160;HANGUL SYLLABLE NYEN;Lo;0;L;;;;;N;;;;; +B161;HANGUL SYLLABLE NYENI;Lo;0;L;;;;;N;;;;; +B162;HANGUL SYLLABLE NYENH;Lo;0;L;;;;;N;;;;; +B163;HANGUL SYLLABLE NYED;Lo;0;L;;;;;N;;;;; +B164;HANGUL SYLLABLE NYEL;Lo;0;L;;;;;N;;;;; +B165;HANGUL SYLLABLE NYELG;Lo;0;L;;;;;N;;;;; +B166;HANGUL SYLLABLE NYELM;Lo;0;L;;;;;N;;;;; +B167;HANGUL SYLLABLE NYELB;Lo;0;L;;;;;N;;;;; +B168;HANGUL SYLLABLE NYELS;Lo;0;L;;;;;N;;;;; +B169;HANGUL SYLLABLE NYELT;Lo;0;L;;;;;N;;;;; +B16A;HANGUL SYLLABLE NYELP;Lo;0;L;;;;;N;;;;; +B16B;HANGUL SYLLABLE NYELH;Lo;0;L;;;;;N;;;;; +B16C;HANGUL SYLLABLE NYEM;Lo;0;L;;;;;N;;;;; +B16D;HANGUL SYLLABLE NYEB;Lo;0;L;;;;;N;;;;; +B16E;HANGUL SYLLABLE NYEBS;Lo;0;L;;;;;N;;;;; +B16F;HANGUL SYLLABLE NYES;Lo;0;L;;;;;N;;;;; +B170;HANGUL SYLLABLE NYESS;Lo;0;L;;;;;N;;;;; +B171;HANGUL SYLLABLE NYENG;Lo;0;L;;;;;N;;;;; +B172;HANGUL SYLLABLE NYEJ;Lo;0;L;;;;;N;;;;; +B173;HANGUL SYLLABLE NYEC;Lo;0;L;;;;;N;;;;; +B174;HANGUL SYLLABLE NYEK;Lo;0;L;;;;;N;;;;; +B175;HANGUL SYLLABLE NYET;Lo;0;L;;;;;N;;;;; +B176;HANGUL SYLLABLE NYEP;Lo;0;L;;;;;N;;;;; +B177;HANGUL SYLLABLE NYEH;Lo;0;L;;;;;N;;;;; +B178;HANGUL SYLLABLE NO;Lo;0;L;;;;;N;;;;; +B179;HANGUL SYLLABLE NOG;Lo;0;L;;;;;N;;;;; +B17A;HANGUL SYLLABLE NOGG;Lo;0;L;;;;;N;;;;; +B17B;HANGUL SYLLABLE NOGS;Lo;0;L;;;;;N;;;;; +B17C;HANGUL SYLLABLE NON;Lo;0;L;;;;;N;;;;; +B17D;HANGUL SYLLABLE NONI;Lo;0;L;;;;;N;;;;; +B17E;HANGUL SYLLABLE NONH;Lo;0;L;;;;;N;;;;; +B17F;HANGUL SYLLABLE NOD;Lo;0;L;;;;;N;;;;; +B180;HANGUL SYLLABLE NOL;Lo;0;L;;;;;N;;;;; +B181;HANGUL SYLLABLE NOLG;Lo;0;L;;;;;N;;;;; +B182;HANGUL SYLLABLE NOLM;Lo;0;L;;;;;N;;;;; +B183;HANGUL SYLLABLE NOLB;Lo;0;L;;;;;N;;;;; +B184;HANGUL SYLLABLE NOLS;Lo;0;L;;;;;N;;;;; +B185;HANGUL SYLLABLE NOLT;Lo;0;L;;;;;N;;;;; +B186;HANGUL SYLLABLE NOLP;Lo;0;L;;;;;N;;;;; +B187;HANGUL SYLLABLE NOLH;Lo;0;L;;;;;N;;;;; +B188;HANGUL SYLLABLE NOM;Lo;0;L;;;;;N;;;;; +B189;HANGUL SYLLABLE NOB;Lo;0;L;;;;;N;;;;; +B18A;HANGUL SYLLABLE NOBS;Lo;0;L;;;;;N;;;;; +B18B;HANGUL SYLLABLE NOS;Lo;0;L;;;;;N;;;;; +B18C;HANGUL SYLLABLE NOSS;Lo;0;L;;;;;N;;;;; +B18D;HANGUL SYLLABLE NONG;Lo;0;L;;;;;N;;;;; +B18E;HANGUL SYLLABLE NOJ;Lo;0;L;;;;;N;;;;; +B18F;HANGUL SYLLABLE NOC;Lo;0;L;;;;;N;;;;; +B190;HANGUL SYLLABLE NOK;Lo;0;L;;;;;N;;;;; +B191;HANGUL SYLLABLE NOT;Lo;0;L;;;;;N;;;;; +B192;HANGUL SYLLABLE NOP;Lo;0;L;;;;;N;;;;; +B193;HANGUL SYLLABLE NOH;Lo;0;L;;;;;N;;;;; +B194;HANGUL SYLLABLE NWA;Lo;0;L;;;;;N;;;;; +B195;HANGUL SYLLABLE NWAG;Lo;0;L;;;;;N;;;;; +B196;HANGUL SYLLABLE NWAGG;Lo;0;L;;;;;N;;;;; +B197;HANGUL SYLLABLE NWAGS;Lo;0;L;;;;;N;;;;; +B198;HANGUL SYLLABLE NWAN;Lo;0;L;;;;;N;;;;; +B199;HANGUL SYLLABLE NWANI;Lo;0;L;;;;;N;;;;; +B19A;HANGUL SYLLABLE NWANH;Lo;0;L;;;;;N;;;;; +B19B;HANGUL SYLLABLE NWAD;Lo;0;L;;;;;N;;;;; +B19C;HANGUL SYLLABLE NWAL;Lo;0;L;;;;;N;;;;; +B19D;HANGUL SYLLABLE NWALG;Lo;0;L;;;;;N;;;;; +B19E;HANGUL SYLLABLE NWALM;Lo;0;L;;;;;N;;;;; +B19F;HANGUL SYLLABLE NWALB;Lo;0;L;;;;;N;;;;; +B1A0;HANGUL SYLLABLE NWALS;Lo;0;L;;;;;N;;;;; +B1A1;HANGUL SYLLABLE NWALT;Lo;0;L;;;;;N;;;;; +B1A2;HANGUL SYLLABLE NWALP;Lo;0;L;;;;;N;;;;; +B1A3;HANGUL SYLLABLE NWALH;Lo;0;L;;;;;N;;;;; +B1A4;HANGUL SYLLABLE NWAM;Lo;0;L;;;;;N;;;;; +B1A5;HANGUL SYLLABLE NWAB;Lo;0;L;;;;;N;;;;; +B1A6;HANGUL SYLLABLE NWABS;Lo;0;L;;;;;N;;;;; +B1A7;HANGUL SYLLABLE NWAS;Lo;0;L;;;;;N;;;;; +B1A8;HANGUL SYLLABLE NWASS;Lo;0;L;;;;;N;;;;; +B1A9;HANGUL SYLLABLE NWANG;Lo;0;L;;;;;N;;;;; +B1AA;HANGUL SYLLABLE NWAJ;Lo;0;L;;;;;N;;;;; +B1AB;HANGUL SYLLABLE NWAC;Lo;0;L;;;;;N;;;;; +B1AC;HANGUL SYLLABLE NWAK;Lo;0;L;;;;;N;;;;; +B1AD;HANGUL SYLLABLE NWAT;Lo;0;L;;;;;N;;;;; +B1AE;HANGUL SYLLABLE NWAP;Lo;0;L;;;;;N;;;;; +B1AF;HANGUL SYLLABLE NWAH;Lo;0;L;;;;;N;;;;; +B1B0;HANGUL SYLLABLE NWAE;Lo;0;L;;;;;N;;;;; +B1B1;HANGUL SYLLABLE NWAEG;Lo;0;L;;;;;N;;;;; +B1B2;HANGUL SYLLABLE NWAEGG;Lo;0;L;;;;;N;;;;; +B1B3;HANGUL SYLLABLE NWAEGS;Lo;0;L;;;;;N;;;;; +B1B4;HANGUL SYLLABLE NWAEN;Lo;0;L;;;;;N;;;;; +B1B5;HANGUL SYLLABLE NWAENI;Lo;0;L;;;;;N;;;;; +B1B6;HANGUL SYLLABLE NWAENH;Lo;0;L;;;;;N;;;;; +B1B7;HANGUL SYLLABLE NWAED;Lo;0;L;;;;;N;;;;; +B1B8;HANGUL SYLLABLE NWAEL;Lo;0;L;;;;;N;;;;; +B1B9;HANGUL SYLLABLE NWAELG;Lo;0;L;;;;;N;;;;; +B1BA;HANGUL SYLLABLE NWAELM;Lo;0;L;;;;;N;;;;; +B1BB;HANGUL SYLLABLE NWAELB;Lo;0;L;;;;;N;;;;; +B1BC;HANGUL SYLLABLE NWAELS;Lo;0;L;;;;;N;;;;; +B1BD;HANGUL SYLLABLE NWAELT;Lo;0;L;;;;;N;;;;; +B1BE;HANGUL SYLLABLE NWAELP;Lo;0;L;;;;;N;;;;; +B1BF;HANGUL SYLLABLE NWAELH;Lo;0;L;;;;;N;;;;; +B1C0;HANGUL SYLLABLE NWAEM;Lo;0;L;;;;;N;;;;; +B1C1;HANGUL SYLLABLE NWAEB;Lo;0;L;;;;;N;;;;; +B1C2;HANGUL SYLLABLE NWAEBS;Lo;0;L;;;;;N;;;;; +B1C3;HANGUL SYLLABLE NWAES;Lo;0;L;;;;;N;;;;; +B1C4;HANGUL SYLLABLE NWAESS;Lo;0;L;;;;;N;;;;; +B1C5;HANGUL SYLLABLE NWAENG;Lo;0;L;;;;;N;;;;; +B1C6;HANGUL SYLLABLE NWAEJ;Lo;0;L;;;;;N;;;;; +B1C7;HANGUL SYLLABLE NWAEC;Lo;0;L;;;;;N;;;;; +B1C8;HANGUL SYLLABLE NWAEK;Lo;0;L;;;;;N;;;;; +B1C9;HANGUL SYLLABLE NWAET;Lo;0;L;;;;;N;;;;; +B1CA;HANGUL SYLLABLE NWAEP;Lo;0;L;;;;;N;;;;; +B1CB;HANGUL SYLLABLE NWAEH;Lo;0;L;;;;;N;;;;; +B1CC;HANGUL SYLLABLE NOE;Lo;0;L;;;;;N;;;;; +B1CD;HANGUL SYLLABLE NOEG;Lo;0;L;;;;;N;;;;; +B1CE;HANGUL SYLLABLE NOEGG;Lo;0;L;;;;;N;;;;; +B1CF;HANGUL SYLLABLE NOEGS;Lo;0;L;;;;;N;;;;; +B1D0;HANGUL SYLLABLE NOEN;Lo;0;L;;;;;N;;;;; +B1D1;HANGUL SYLLABLE NOENI;Lo;0;L;;;;;N;;;;; +B1D2;HANGUL SYLLABLE NOENH;Lo;0;L;;;;;N;;;;; +B1D3;HANGUL SYLLABLE NOED;Lo;0;L;;;;;N;;;;; +B1D4;HANGUL SYLLABLE NOEL;Lo;0;L;;;;;N;;;;; +B1D5;HANGUL SYLLABLE NOELG;Lo;0;L;;;;;N;;;;; +B1D6;HANGUL SYLLABLE NOELM;Lo;0;L;;;;;N;;;;; +B1D7;HANGUL SYLLABLE NOELB;Lo;0;L;;;;;N;;;;; +B1D8;HANGUL SYLLABLE NOELS;Lo;0;L;;;;;N;;;;; +B1D9;HANGUL SYLLABLE NOELT;Lo;0;L;;;;;N;;;;; +B1DA;HANGUL SYLLABLE NOELP;Lo;0;L;;;;;N;;;;; +B1DB;HANGUL SYLLABLE NOELH;Lo;0;L;;;;;N;;;;; +B1DC;HANGUL SYLLABLE NOEM;Lo;0;L;;;;;N;;;;; +B1DD;HANGUL SYLLABLE NOEB;Lo;0;L;;;;;N;;;;; +B1DE;HANGUL SYLLABLE NOEBS;Lo;0;L;;;;;N;;;;; +B1DF;HANGUL SYLLABLE NOES;Lo;0;L;;;;;N;;;;; +B1E0;HANGUL SYLLABLE NOESS;Lo;0;L;;;;;N;;;;; +B1E1;HANGUL SYLLABLE NOENG;Lo;0;L;;;;;N;;;;; +B1E2;HANGUL SYLLABLE NOEJ;Lo;0;L;;;;;N;;;;; +B1E3;HANGUL SYLLABLE NOEC;Lo;0;L;;;;;N;;;;; +B1E4;HANGUL SYLLABLE NOEK;Lo;0;L;;;;;N;;;;; +B1E5;HANGUL SYLLABLE NOET;Lo;0;L;;;;;N;;;;; +B1E6;HANGUL SYLLABLE NOEP;Lo;0;L;;;;;N;;;;; +B1E7;HANGUL SYLLABLE NOEH;Lo;0;L;;;;;N;;;;; +B1E8;HANGUL SYLLABLE NYO;Lo;0;L;;;;;N;;;;; +B1E9;HANGUL SYLLABLE NYOG;Lo;0;L;;;;;N;;;;; +B1EA;HANGUL SYLLABLE NYOGG;Lo;0;L;;;;;N;;;;; +B1EB;HANGUL SYLLABLE NYOGS;Lo;0;L;;;;;N;;;;; +B1EC;HANGUL SYLLABLE NYON;Lo;0;L;;;;;N;;;;; +B1ED;HANGUL SYLLABLE NYONI;Lo;0;L;;;;;N;;;;; +B1EE;HANGUL SYLLABLE NYONH;Lo;0;L;;;;;N;;;;; +B1EF;HANGUL SYLLABLE NYOD;Lo;0;L;;;;;N;;;;; +B1F0;HANGUL SYLLABLE NYOL;Lo;0;L;;;;;N;;;;; +B1F1;HANGUL SYLLABLE NYOLG;Lo;0;L;;;;;N;;;;; +B1F2;HANGUL SYLLABLE NYOLM;Lo;0;L;;;;;N;;;;; +B1F3;HANGUL SYLLABLE NYOLB;Lo;0;L;;;;;N;;;;; +B1F4;HANGUL SYLLABLE NYOLS;Lo;0;L;;;;;N;;;;; +B1F5;HANGUL SYLLABLE NYOLT;Lo;0;L;;;;;N;;;;; +B1F6;HANGUL SYLLABLE NYOLP;Lo;0;L;;;;;N;;;;; +B1F7;HANGUL SYLLABLE NYOLH;Lo;0;L;;;;;N;;;;; +B1F8;HANGUL SYLLABLE NYOM;Lo;0;L;;;;;N;;;;; +B1F9;HANGUL SYLLABLE NYOB;Lo;0;L;;;;;N;;;;; +B1FA;HANGUL SYLLABLE NYOBS;Lo;0;L;;;;;N;;;;; +B1FB;HANGUL SYLLABLE NYOS;Lo;0;L;;;;;N;;;;; +B1FC;HANGUL SYLLABLE NYOSS;Lo;0;L;;;;;N;;;;; +B1FD;HANGUL SYLLABLE NYONG;Lo;0;L;;;;;N;;;;; +B1FE;HANGUL SYLLABLE NYOJ;Lo;0;L;;;;;N;;;;; +B1FF;HANGUL SYLLABLE NYOC;Lo;0;L;;;;;N;;;;; +B200;HANGUL SYLLABLE NYOK;Lo;0;L;;;;;N;;;;; +B201;HANGUL SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; +B202;HANGUL SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; +B203;HANGUL SYLLABLE NYOH;Lo;0;L;;;;;N;;;;; +B204;HANGUL SYLLABLE NU;Lo;0;L;;;;;N;;;;; +B205;HANGUL SYLLABLE NUG;Lo;0;L;;;;;N;;;;; +B206;HANGUL SYLLABLE NUGG;Lo;0;L;;;;;N;;;;; +B207;HANGUL SYLLABLE NUGS;Lo;0;L;;;;;N;;;;; +B208;HANGUL SYLLABLE NUN;Lo;0;L;;;;;N;;;;; +B209;HANGUL SYLLABLE NUNI;Lo;0;L;;;;;N;;;;; +B20A;HANGUL SYLLABLE NUNH;Lo;0;L;;;;;N;;;;; +B20B;HANGUL SYLLABLE NUD;Lo;0;L;;;;;N;;;;; +B20C;HANGUL SYLLABLE NUL;Lo;0;L;;;;;N;;;;; +B20D;HANGUL SYLLABLE NULG;Lo;0;L;;;;;N;;;;; +B20E;HANGUL SYLLABLE NULM;Lo;0;L;;;;;N;;;;; +B20F;HANGUL SYLLABLE NULB;Lo;0;L;;;;;N;;;;; +B210;HANGUL SYLLABLE NULS;Lo;0;L;;;;;N;;;;; +B211;HANGUL SYLLABLE NULT;Lo;0;L;;;;;N;;;;; +B212;HANGUL SYLLABLE NULP;Lo;0;L;;;;;N;;;;; +B213;HANGUL SYLLABLE NULH;Lo;0;L;;;;;N;;;;; +B214;HANGUL SYLLABLE NUM;Lo;0;L;;;;;N;;;;; +B215;HANGUL SYLLABLE NUB;Lo;0;L;;;;;N;;;;; +B216;HANGUL SYLLABLE NUBS;Lo;0;L;;;;;N;;;;; +B217;HANGUL SYLLABLE NUS;Lo;0;L;;;;;N;;;;; +B218;HANGUL SYLLABLE NUSS;Lo;0;L;;;;;N;;;;; +B219;HANGUL SYLLABLE NUNG;Lo;0;L;;;;;N;;;;; +B21A;HANGUL SYLLABLE NUJ;Lo;0;L;;;;;N;;;;; +B21B;HANGUL SYLLABLE NUC;Lo;0;L;;;;;N;;;;; +B21C;HANGUL SYLLABLE NUK;Lo;0;L;;;;;N;;;;; +B21D;HANGUL SYLLABLE NUT;Lo;0;L;;;;;N;;;;; +B21E;HANGUL SYLLABLE NUP;Lo;0;L;;;;;N;;;;; +B21F;HANGUL SYLLABLE NUH;Lo;0;L;;;;;N;;;;; +B220;HANGUL SYLLABLE NWEO;Lo;0;L;;;;;N;;;;; +B221;HANGUL SYLLABLE NWEOG;Lo;0;L;;;;;N;;;;; +B222;HANGUL SYLLABLE NWEOGG;Lo;0;L;;;;;N;;;;; +B223;HANGUL SYLLABLE NWEOGS;Lo;0;L;;;;;N;;;;; +B224;HANGUL SYLLABLE NWEON;Lo;0;L;;;;;N;;;;; +B225;HANGUL SYLLABLE NWEONI;Lo;0;L;;;;;N;;;;; +B226;HANGUL SYLLABLE NWEONH;Lo;0;L;;;;;N;;;;; +B227;HANGUL SYLLABLE NWEOD;Lo;0;L;;;;;N;;;;; +B228;HANGUL SYLLABLE NWEOL;Lo;0;L;;;;;N;;;;; +B229;HANGUL SYLLABLE NWEOLG;Lo;0;L;;;;;N;;;;; +B22A;HANGUL SYLLABLE NWEOLM;Lo;0;L;;;;;N;;;;; +B22B;HANGUL SYLLABLE NWEOLB;Lo;0;L;;;;;N;;;;; +B22C;HANGUL SYLLABLE NWEOLS;Lo;0;L;;;;;N;;;;; +B22D;HANGUL SYLLABLE NWEOLT;Lo;0;L;;;;;N;;;;; +B22E;HANGUL SYLLABLE NWEOLP;Lo;0;L;;;;;N;;;;; +B22F;HANGUL SYLLABLE NWEOLH;Lo;0;L;;;;;N;;;;; +B230;HANGUL SYLLABLE NWEOM;Lo;0;L;;;;;N;;;;; +B231;HANGUL SYLLABLE NWEOB;Lo;0;L;;;;;N;;;;; +B232;HANGUL SYLLABLE NWEOBS;Lo;0;L;;;;;N;;;;; +B233;HANGUL SYLLABLE NWEOS;Lo;0;L;;;;;N;;;;; +B234;HANGUL SYLLABLE NWEOSS;Lo;0;L;;;;;N;;;;; +B235;HANGUL SYLLABLE NWEONG;Lo;0;L;;;;;N;;;;; +B236;HANGUL SYLLABLE NWEOJ;Lo;0;L;;;;;N;;;;; +B237;HANGUL SYLLABLE NWEOC;Lo;0;L;;;;;N;;;;; +B238;HANGUL SYLLABLE NWEOK;Lo;0;L;;;;;N;;;;; +B239;HANGUL SYLLABLE NWEOT;Lo;0;L;;;;;N;;;;; +B23A;HANGUL SYLLABLE NWEOP;Lo;0;L;;;;;N;;;;; +B23B;HANGUL SYLLABLE NWEOH;Lo;0;L;;;;;N;;;;; +B23C;HANGUL SYLLABLE NWE;Lo;0;L;;;;;N;;;;; +B23D;HANGUL SYLLABLE NWEG;Lo;0;L;;;;;N;;;;; +B23E;HANGUL SYLLABLE NWEGG;Lo;0;L;;;;;N;;;;; +B23F;HANGUL SYLLABLE NWEGS;Lo;0;L;;;;;N;;;;; +B240;HANGUL SYLLABLE NWEN;Lo;0;L;;;;;N;;;;; +B241;HANGUL SYLLABLE NWENI;Lo;0;L;;;;;N;;;;; +B242;HANGUL SYLLABLE NWENH;Lo;0;L;;;;;N;;;;; +B243;HANGUL SYLLABLE NWED;Lo;0;L;;;;;N;;;;; +B244;HANGUL SYLLABLE NWEL;Lo;0;L;;;;;N;;;;; +B245;HANGUL SYLLABLE NWELG;Lo;0;L;;;;;N;;;;; +B246;HANGUL SYLLABLE NWELM;Lo;0;L;;;;;N;;;;; +B247;HANGUL SYLLABLE NWELB;Lo;0;L;;;;;N;;;;; +B248;HANGUL SYLLABLE NWELS;Lo;0;L;;;;;N;;;;; +B249;HANGUL SYLLABLE NWELT;Lo;0;L;;;;;N;;;;; +B24A;HANGUL SYLLABLE NWELP;Lo;0;L;;;;;N;;;;; +B24B;HANGUL SYLLABLE NWELH;Lo;0;L;;;;;N;;;;; +B24C;HANGUL SYLLABLE NWEM;Lo;0;L;;;;;N;;;;; +B24D;HANGUL SYLLABLE NWEB;Lo;0;L;;;;;N;;;;; +B24E;HANGUL SYLLABLE NWEBS;Lo;0;L;;;;;N;;;;; +B24F;HANGUL SYLLABLE NWES;Lo;0;L;;;;;N;;;;; +B250;HANGUL SYLLABLE NWESS;Lo;0;L;;;;;N;;;;; +B251;HANGUL SYLLABLE NWENG;Lo;0;L;;;;;N;;;;; +B252;HANGUL SYLLABLE NWEJ;Lo;0;L;;;;;N;;;;; +B253;HANGUL SYLLABLE NWEC;Lo;0;L;;;;;N;;;;; +B254;HANGUL SYLLABLE NWEK;Lo;0;L;;;;;N;;;;; +B255;HANGUL SYLLABLE NWET;Lo;0;L;;;;;N;;;;; +B256;HANGUL SYLLABLE NWEP;Lo;0;L;;;;;N;;;;; +B257;HANGUL SYLLABLE NWEH;Lo;0;L;;;;;N;;;;; +B258;HANGUL SYLLABLE NWI;Lo;0;L;;;;;N;;;;; +B259;HANGUL SYLLABLE NWIG;Lo;0;L;;;;;N;;;;; +B25A;HANGUL SYLLABLE NWIGG;Lo;0;L;;;;;N;;;;; +B25B;HANGUL SYLLABLE NWIGS;Lo;0;L;;;;;N;;;;; +B25C;HANGUL SYLLABLE NWIN;Lo;0;L;;;;;N;;;;; +B25D;HANGUL SYLLABLE NWINI;Lo;0;L;;;;;N;;;;; +B25E;HANGUL SYLLABLE NWINH;Lo;0;L;;;;;N;;;;; +B25F;HANGUL SYLLABLE NWID;Lo;0;L;;;;;N;;;;; +B260;HANGUL SYLLABLE NWIL;Lo;0;L;;;;;N;;;;; +B261;HANGUL SYLLABLE NWILG;Lo;0;L;;;;;N;;;;; +B262;HANGUL SYLLABLE NWILM;Lo;0;L;;;;;N;;;;; +B263;HANGUL SYLLABLE NWILB;Lo;0;L;;;;;N;;;;; +B264;HANGUL SYLLABLE NWILS;Lo;0;L;;;;;N;;;;; +B265;HANGUL SYLLABLE NWILT;Lo;0;L;;;;;N;;;;; +B266;HANGUL SYLLABLE NWILP;Lo;0;L;;;;;N;;;;; +B267;HANGUL SYLLABLE NWILH;Lo;0;L;;;;;N;;;;; +B268;HANGUL SYLLABLE NWIM;Lo;0;L;;;;;N;;;;; +B269;HANGUL SYLLABLE NWIB;Lo;0;L;;;;;N;;;;; +B26A;HANGUL SYLLABLE NWIBS;Lo;0;L;;;;;N;;;;; +B26B;HANGUL SYLLABLE NWIS;Lo;0;L;;;;;N;;;;; +B26C;HANGUL SYLLABLE NWISS;Lo;0;L;;;;;N;;;;; +B26D;HANGUL SYLLABLE NWING;Lo;0;L;;;;;N;;;;; +B26E;HANGUL SYLLABLE NWIJ;Lo;0;L;;;;;N;;;;; +B26F;HANGUL SYLLABLE NWIC;Lo;0;L;;;;;N;;;;; +B270;HANGUL SYLLABLE NWIK;Lo;0;L;;;;;N;;;;; +B271;HANGUL SYLLABLE NWIT;Lo;0;L;;;;;N;;;;; +B272;HANGUL SYLLABLE NWIP;Lo;0;L;;;;;N;;;;; +B273;HANGUL SYLLABLE NWIH;Lo;0;L;;;;;N;;;;; +B274;HANGUL SYLLABLE NYU;Lo;0;L;;;;;N;;;;; +B275;HANGUL SYLLABLE NYUG;Lo;0;L;;;;;N;;;;; +B276;HANGUL SYLLABLE NYUGG;Lo;0;L;;;;;N;;;;; +B277;HANGUL SYLLABLE NYUGS;Lo;0;L;;;;;N;;;;; +B278;HANGUL SYLLABLE NYUN;Lo;0;L;;;;;N;;;;; +B279;HANGUL SYLLABLE NYUNI;Lo;0;L;;;;;N;;;;; +B27A;HANGUL SYLLABLE NYUNH;Lo;0;L;;;;;N;;;;; +B27B;HANGUL SYLLABLE NYUD;Lo;0;L;;;;;N;;;;; +B27C;HANGUL SYLLABLE NYUL;Lo;0;L;;;;;N;;;;; +B27D;HANGUL SYLLABLE NYULG;Lo;0;L;;;;;N;;;;; +B27E;HANGUL SYLLABLE NYULM;Lo;0;L;;;;;N;;;;; +B27F;HANGUL SYLLABLE NYULB;Lo;0;L;;;;;N;;;;; +B280;HANGUL SYLLABLE NYULS;Lo;0;L;;;;;N;;;;; +B281;HANGUL SYLLABLE NYULT;Lo;0;L;;;;;N;;;;; +B282;HANGUL SYLLABLE NYULP;Lo;0;L;;;;;N;;;;; +B283;HANGUL SYLLABLE NYULH;Lo;0;L;;;;;N;;;;; +B284;HANGUL SYLLABLE NYUM;Lo;0;L;;;;;N;;;;; +B285;HANGUL SYLLABLE NYUB;Lo;0;L;;;;;N;;;;; +B286;HANGUL SYLLABLE NYUBS;Lo;0;L;;;;;N;;;;; +B287;HANGUL SYLLABLE NYUS;Lo;0;L;;;;;N;;;;; +B288;HANGUL SYLLABLE NYUSS;Lo;0;L;;;;;N;;;;; +B289;HANGUL SYLLABLE NYUNG;Lo;0;L;;;;;N;;;;; +B28A;HANGUL SYLLABLE NYUJ;Lo;0;L;;;;;N;;;;; +B28B;HANGUL SYLLABLE NYUC;Lo;0;L;;;;;N;;;;; +B28C;HANGUL SYLLABLE NYUK;Lo;0;L;;;;;N;;;;; +B28D;HANGUL SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; +B28E;HANGUL SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; +B28F;HANGUL SYLLABLE NYUH;Lo;0;L;;;;;N;;;;; +B290;HANGUL SYLLABLE NEU;Lo;0;L;;;;;N;;;;; +B291;HANGUL SYLLABLE NEUG;Lo;0;L;;;;;N;;;;; +B292;HANGUL SYLLABLE NEUGG;Lo;0;L;;;;;N;;;;; +B293;HANGUL SYLLABLE NEUGS;Lo;0;L;;;;;N;;;;; +B294;HANGUL SYLLABLE NEUN;Lo;0;L;;;;;N;;;;; +B295;HANGUL SYLLABLE NEUNI;Lo;0;L;;;;;N;;;;; +B296;HANGUL SYLLABLE NEUNH;Lo;0;L;;;;;N;;;;; +B297;HANGUL SYLLABLE NEUD;Lo;0;L;;;;;N;;;;; +B298;HANGUL SYLLABLE NEUL;Lo;0;L;;;;;N;;;;; +B299;HANGUL SYLLABLE NEULG;Lo;0;L;;;;;N;;;;; +B29A;HANGUL SYLLABLE NEULM;Lo;0;L;;;;;N;;;;; +B29B;HANGUL SYLLABLE NEULB;Lo;0;L;;;;;N;;;;; +B29C;HANGUL SYLLABLE NEULS;Lo;0;L;;;;;N;;;;; +B29D;HANGUL SYLLABLE NEULT;Lo;0;L;;;;;N;;;;; +B29E;HANGUL SYLLABLE NEULP;Lo;0;L;;;;;N;;;;; +B29F;HANGUL SYLLABLE NEULH;Lo;0;L;;;;;N;;;;; +B2A0;HANGUL SYLLABLE NEUM;Lo;0;L;;;;;N;;;;; +B2A1;HANGUL SYLLABLE NEUB;Lo;0;L;;;;;N;;;;; +B2A2;HANGUL SYLLABLE NEUBS;Lo;0;L;;;;;N;;;;; +B2A3;HANGUL SYLLABLE NEUS;Lo;0;L;;;;;N;;;;; +B2A4;HANGUL SYLLABLE NEUSS;Lo;0;L;;;;;N;;;;; +B2A5;HANGUL SYLLABLE NEUNG;Lo;0;L;;;;;N;;;;; +B2A6;HANGUL SYLLABLE NEUJ;Lo;0;L;;;;;N;;;;; +B2A7;HANGUL SYLLABLE NEUC;Lo;0;L;;;;;N;;;;; +B2A8;HANGUL SYLLABLE NEUK;Lo;0;L;;;;;N;;;;; +B2A9;HANGUL SYLLABLE NEUT;Lo;0;L;;;;;N;;;;; +B2AA;HANGUL SYLLABLE NEUP;Lo;0;L;;;;;N;;;;; +B2AB;HANGUL SYLLABLE NEUH;Lo;0;L;;;;;N;;;;; +B2AC;HANGUL SYLLABLE NYI;Lo;0;L;;;;;N;;;;; +B2AD;HANGUL SYLLABLE NYIG;Lo;0;L;;;;;N;;;;; +B2AE;HANGUL SYLLABLE NYIGG;Lo;0;L;;;;;N;;;;; +B2AF;HANGUL SYLLABLE NYIGS;Lo;0;L;;;;;N;;;;; +B2B0;HANGUL SYLLABLE NYIN;Lo;0;L;;;;;N;;;;; +B2B1;HANGUL SYLLABLE NYINI;Lo;0;L;;;;;N;;;;; +B2B2;HANGUL SYLLABLE NYINH;Lo;0;L;;;;;N;;;;; +B2B3;HANGUL SYLLABLE NYID;Lo;0;L;;;;;N;;;;; +B2B4;HANGUL SYLLABLE NYIL;Lo;0;L;;;;;N;;;;; +B2B5;HANGUL SYLLABLE NYILG;Lo;0;L;;;;;N;;;;; +B2B6;HANGUL SYLLABLE NYILM;Lo;0;L;;;;;N;;;;; +B2B7;HANGUL SYLLABLE NYILB;Lo;0;L;;;;;N;;;;; +B2B8;HANGUL SYLLABLE NYILS;Lo;0;L;;;;;N;;;;; +B2B9;HANGUL SYLLABLE NYILT;Lo;0;L;;;;;N;;;;; +B2BA;HANGUL SYLLABLE NYILP;Lo;0;L;;;;;N;;;;; +B2BB;HANGUL SYLLABLE NYILH;Lo;0;L;;;;;N;;;;; +B2BC;HANGUL SYLLABLE NYIM;Lo;0;L;;;;;N;;;;; +B2BD;HANGUL SYLLABLE NYIB;Lo;0;L;;;;;N;;;;; +B2BE;HANGUL SYLLABLE NYIBS;Lo;0;L;;;;;N;;;;; +B2BF;HANGUL SYLLABLE NYIS;Lo;0;L;;;;;N;;;;; +B2C0;HANGUL SYLLABLE NYISS;Lo;0;L;;;;;N;;;;; +B2C1;HANGUL SYLLABLE NYING;Lo;0;L;;;;;N;;;;; +B2C2;HANGUL SYLLABLE NYIJ;Lo;0;L;;;;;N;;;;; +B2C3;HANGUL SYLLABLE NYIC;Lo;0;L;;;;;N;;;;; +B2C4;HANGUL SYLLABLE NYIK;Lo;0;L;;;;;N;;;;; +B2C5;HANGUL SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; +B2C6;HANGUL SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; +B2C7;HANGUL SYLLABLE NYIH;Lo;0;L;;;;;N;;;;; +B2C8;HANGUL SYLLABLE NI;Lo;0;L;;;;;N;;;;; +B2C9;HANGUL SYLLABLE NIG;Lo;0;L;;;;;N;;;;; +B2CA;HANGUL SYLLABLE NIGG;Lo;0;L;;;;;N;;;;; +B2CB;HANGUL SYLLABLE NIGS;Lo;0;L;;;;;N;;;;; +B2CC;HANGUL SYLLABLE NIN;Lo;0;L;;;;;N;;;;; +B2CD;HANGUL SYLLABLE NINI;Lo;0;L;;;;;N;;;;; +B2CE;HANGUL SYLLABLE NINH;Lo;0;L;;;;;N;;;;; +B2CF;HANGUL SYLLABLE NID;Lo;0;L;;;;;N;;;;; +B2D0;HANGUL SYLLABLE NIL;Lo;0;L;;;;;N;;;;; +B2D1;HANGUL SYLLABLE NILG;Lo;0;L;;;;;N;;;;; +B2D2;HANGUL SYLLABLE NILM;Lo;0;L;;;;;N;;;;; +B2D3;HANGUL SYLLABLE NILB;Lo;0;L;;;;;N;;;;; +B2D4;HANGUL SYLLABLE NILS;Lo;0;L;;;;;N;;;;; +B2D5;HANGUL SYLLABLE NILT;Lo;0;L;;;;;N;;;;; +B2D6;HANGUL SYLLABLE NILP;Lo;0;L;;;;;N;;;;; +B2D7;HANGUL SYLLABLE NILH;Lo;0;L;;;;;N;;;;; +B2D8;HANGUL SYLLABLE NIM;Lo;0;L;;;;;N;;;;; +B2D9;HANGUL SYLLABLE NIB;Lo;0;L;;;;;N;;;;; +B2DA;HANGUL SYLLABLE NIBS;Lo;0;L;;;;;N;;;;; +B2DB;HANGUL SYLLABLE NIS;Lo;0;L;;;;;N;;;;; +B2DC;HANGUL SYLLABLE NISS;Lo;0;L;;;;;N;;;;; +B2DD;HANGUL SYLLABLE NING;Lo;0;L;;;;;N;;;;; +B2DE;HANGUL SYLLABLE NIJ;Lo;0;L;;;;;N;;;;; +B2DF;HANGUL SYLLABLE NIC;Lo;0;L;;;;;N;;;;; +B2E0;HANGUL SYLLABLE NIK;Lo;0;L;;;;;N;;;;; +B2E1;HANGUL SYLLABLE NIT;Lo;0;L;;;;;N;;;;; +B2E2;HANGUL SYLLABLE NIP;Lo;0;L;;;;;N;;;;; +B2E3;HANGUL SYLLABLE NIH;Lo;0;L;;;;;N;;;;; +B2E4;HANGUL SYLLABLE DA;Lo;0;L;;;;;N;;;;; +B2E5;HANGUL SYLLABLE DAG;Lo;0;L;;;;;N;;;;; +B2E6;HANGUL SYLLABLE DAGG;Lo;0;L;;;;;N;;;;; +B2E7;HANGUL SYLLABLE DAGS;Lo;0;L;;;;;N;;;;; +B2E8;HANGUL SYLLABLE DAN;Lo;0;L;;;;;N;;;;; +B2E9;HANGUL SYLLABLE DANI;Lo;0;L;;;;;N;;;;; +B2EA;HANGUL SYLLABLE DANH;Lo;0;L;;;;;N;;;;; +B2EB;HANGUL SYLLABLE DAD;Lo;0;L;;;;;N;;;;; +B2EC;HANGUL SYLLABLE DAL;Lo;0;L;;;;;N;;;;; +B2ED;HANGUL SYLLABLE DALG;Lo;0;L;;;;;N;;;;; +B2EE;HANGUL SYLLABLE DALM;Lo;0;L;;;;;N;;;;; +B2EF;HANGUL SYLLABLE DALB;Lo;0;L;;;;;N;;;;; +B2F0;HANGUL SYLLABLE DALS;Lo;0;L;;;;;N;;;;; +B2F1;HANGUL SYLLABLE DALT;Lo;0;L;;;;;N;;;;; +B2F2;HANGUL SYLLABLE DALP;Lo;0;L;;;;;N;;;;; +B2F3;HANGUL SYLLABLE DALH;Lo;0;L;;;;;N;;;;; +B2F4;HANGUL SYLLABLE DAM;Lo;0;L;;;;;N;;;;; +B2F5;HANGUL SYLLABLE DAB;Lo;0;L;;;;;N;;;;; +B2F6;HANGUL SYLLABLE DABS;Lo;0;L;;;;;N;;;;; +B2F7;HANGUL SYLLABLE DAS;Lo;0;L;;;;;N;;;;; +B2F8;HANGUL SYLLABLE DASS;Lo;0;L;;;;;N;;;;; +B2F9;HANGUL SYLLABLE DANG;Lo;0;L;;;;;N;;;;; +B2FA;HANGUL SYLLABLE DAJ;Lo;0;L;;;;;N;;;;; +B2FB;HANGUL SYLLABLE DAC;Lo;0;L;;;;;N;;;;; +B2FC;HANGUL SYLLABLE DAK;Lo;0;L;;;;;N;;;;; +B2FD;HANGUL SYLLABLE DAT;Lo;0;L;;;;;N;;;;; +B2FE;HANGUL SYLLABLE DAP;Lo;0;L;;;;;N;;;;; +B2FF;HANGUL SYLLABLE DAH;Lo;0;L;;;;;N;;;;; +B300;HANGUL SYLLABLE DAE;Lo;0;L;;;;;N;;;;; +B301;HANGUL SYLLABLE DAEG;Lo;0;L;;;;;N;;;;; +B302;HANGUL SYLLABLE DAEGG;Lo;0;L;;;;;N;;;;; +B303;HANGUL SYLLABLE DAEGS;Lo;0;L;;;;;N;;;;; +B304;HANGUL SYLLABLE DAEN;Lo;0;L;;;;;N;;;;; +B305;HANGUL SYLLABLE DAENI;Lo;0;L;;;;;N;;;;; +B306;HANGUL SYLLABLE DAENH;Lo;0;L;;;;;N;;;;; +B307;HANGUL SYLLABLE DAED;Lo;0;L;;;;;N;;;;; +B308;HANGUL SYLLABLE DAEL;Lo;0;L;;;;;N;;;;; +B309;HANGUL SYLLABLE DAELG;Lo;0;L;;;;;N;;;;; +B30A;HANGUL SYLLABLE DAELM;Lo;0;L;;;;;N;;;;; +B30B;HANGUL SYLLABLE DAELB;Lo;0;L;;;;;N;;;;; +B30C;HANGUL SYLLABLE DAELS;Lo;0;L;;;;;N;;;;; +B30D;HANGUL SYLLABLE DAELT;Lo;0;L;;;;;N;;;;; +B30E;HANGUL SYLLABLE DAELP;Lo;0;L;;;;;N;;;;; +B30F;HANGUL SYLLABLE DAELH;Lo;0;L;;;;;N;;;;; +B310;HANGUL SYLLABLE DAEM;Lo;0;L;;;;;N;;;;; +B311;HANGUL SYLLABLE DAEB;Lo;0;L;;;;;N;;;;; +B312;HANGUL SYLLABLE DAEBS;Lo;0;L;;;;;N;;;;; +B313;HANGUL SYLLABLE DAES;Lo;0;L;;;;;N;;;;; +B314;HANGUL SYLLABLE DAESS;Lo;0;L;;;;;N;;;;; +B315;HANGUL SYLLABLE DAENG;Lo;0;L;;;;;N;;;;; +B316;HANGUL SYLLABLE DAEJ;Lo;0;L;;;;;N;;;;; +B317;HANGUL SYLLABLE DAEC;Lo;0;L;;;;;N;;;;; +B318;HANGUL SYLLABLE DAEK;Lo;0;L;;;;;N;;;;; +B319;HANGUL SYLLABLE DAET;Lo;0;L;;;;;N;;;;; +B31A;HANGUL SYLLABLE DAEP;Lo;0;L;;;;;N;;;;; +B31B;HANGUL SYLLABLE DAEH;Lo;0;L;;;;;N;;;;; +B31C;HANGUL SYLLABLE DYA;Lo;0;L;;;;;N;;;;; +B31D;HANGUL SYLLABLE DYAG;Lo;0;L;;;;;N;;;;; +B31E;HANGUL SYLLABLE DYAGG;Lo;0;L;;;;;N;;;;; +B31F;HANGUL SYLLABLE DYAGS;Lo;0;L;;;;;N;;;;; +B320;HANGUL SYLLABLE DYAN;Lo;0;L;;;;;N;;;;; +B321;HANGUL SYLLABLE DYANI;Lo;0;L;;;;;N;;;;; +B322;HANGUL SYLLABLE DYANH;Lo;0;L;;;;;N;;;;; +B323;HANGUL SYLLABLE DYAD;Lo;0;L;;;;;N;;;;; +B324;HANGUL SYLLABLE DYAL;Lo;0;L;;;;;N;;;;; +B325;HANGUL SYLLABLE DYALG;Lo;0;L;;;;;N;;;;; +B326;HANGUL SYLLABLE DYALM;Lo;0;L;;;;;N;;;;; +B327;HANGUL SYLLABLE DYALB;Lo;0;L;;;;;N;;;;; +B328;HANGUL SYLLABLE DYALS;Lo;0;L;;;;;N;;;;; +B329;HANGUL SYLLABLE DYALT;Lo;0;L;;;;;N;;;;; +B32A;HANGUL SYLLABLE DYALP;Lo;0;L;;;;;N;;;;; +B32B;HANGUL SYLLABLE DYALH;Lo;0;L;;;;;N;;;;; +B32C;HANGUL SYLLABLE DYAM;Lo;0;L;;;;;N;;;;; +B32D;HANGUL SYLLABLE DYAB;Lo;0;L;;;;;N;;;;; +B32E;HANGUL SYLLABLE DYABS;Lo;0;L;;;;;N;;;;; +B32F;HANGUL SYLLABLE DYAS;Lo;0;L;;;;;N;;;;; +B330;HANGUL SYLLABLE DYASS;Lo;0;L;;;;;N;;;;; +B331;HANGUL SYLLABLE DYANG;Lo;0;L;;;;;N;;;;; +B332;HANGUL SYLLABLE DYAJ;Lo;0;L;;;;;N;;;;; +B333;HANGUL SYLLABLE DYAC;Lo;0;L;;;;;N;;;;; +B334;HANGUL SYLLABLE DYAK;Lo;0;L;;;;;N;;;;; +B335;HANGUL SYLLABLE DYAT;Lo;0;L;;;;;N;;;;; +B336;HANGUL SYLLABLE DYAP;Lo;0;L;;;;;N;;;;; +B337;HANGUL SYLLABLE DYAH;Lo;0;L;;;;;N;;;;; +B338;HANGUL SYLLABLE DYAE;Lo;0;L;;;;;N;;;;; +B339;HANGUL SYLLABLE DYAEG;Lo;0;L;;;;;N;;;;; +B33A;HANGUL SYLLABLE DYAEGG;Lo;0;L;;;;;N;;;;; +B33B;HANGUL SYLLABLE DYAEGS;Lo;0;L;;;;;N;;;;; +B33C;HANGUL SYLLABLE DYAEN;Lo;0;L;;;;;N;;;;; +B33D;HANGUL SYLLABLE DYAENI;Lo;0;L;;;;;N;;;;; +B33E;HANGUL SYLLABLE DYAENH;Lo;0;L;;;;;N;;;;; +B33F;HANGUL SYLLABLE DYAED;Lo;0;L;;;;;N;;;;; +B340;HANGUL SYLLABLE DYAEL;Lo;0;L;;;;;N;;;;; +B341;HANGUL SYLLABLE DYAELG;Lo;0;L;;;;;N;;;;; +B342;HANGUL SYLLABLE DYAELM;Lo;0;L;;;;;N;;;;; +B343;HANGUL SYLLABLE DYAELB;Lo;0;L;;;;;N;;;;; +B344;HANGUL SYLLABLE DYAELS;Lo;0;L;;;;;N;;;;; +B345;HANGUL SYLLABLE DYAELT;Lo;0;L;;;;;N;;;;; +B346;HANGUL SYLLABLE DYAELP;Lo;0;L;;;;;N;;;;; +B347;HANGUL SYLLABLE DYAELH;Lo;0;L;;;;;N;;;;; +B348;HANGUL SYLLABLE DYAEM;Lo;0;L;;;;;N;;;;; +B349;HANGUL SYLLABLE DYAEB;Lo;0;L;;;;;N;;;;; +B34A;HANGUL SYLLABLE DYAEBS;Lo;0;L;;;;;N;;;;; +B34B;HANGUL SYLLABLE DYAES;Lo;0;L;;;;;N;;;;; +B34C;HANGUL SYLLABLE DYAESS;Lo;0;L;;;;;N;;;;; +B34D;HANGUL SYLLABLE DYAENG;Lo;0;L;;;;;N;;;;; +B34E;HANGUL SYLLABLE DYAEJ;Lo;0;L;;;;;N;;;;; +B34F;HANGUL SYLLABLE DYAEC;Lo;0;L;;;;;N;;;;; +B350;HANGUL SYLLABLE DYAEK;Lo;0;L;;;;;N;;;;; +B351;HANGUL SYLLABLE DYAET;Lo;0;L;;;;;N;;;;; +B352;HANGUL SYLLABLE DYAEP;Lo;0;L;;;;;N;;;;; +B353;HANGUL SYLLABLE DYAEH;Lo;0;L;;;;;N;;;;; +B354;HANGUL SYLLABLE DEO;Lo;0;L;;;;;N;;;;; +B355;HANGUL SYLLABLE DEOG;Lo;0;L;;;;;N;;;;; +B356;HANGUL SYLLABLE DEOGG;Lo;0;L;;;;;N;;;;; +B357;HANGUL SYLLABLE DEOGS;Lo;0;L;;;;;N;;;;; +B358;HANGUL SYLLABLE DEON;Lo;0;L;;;;;N;;;;; +B359;HANGUL SYLLABLE DEONI;Lo;0;L;;;;;N;;;;; +B35A;HANGUL SYLLABLE DEONH;Lo;0;L;;;;;N;;;;; +B35B;HANGUL SYLLABLE DEOD;Lo;0;L;;;;;N;;;;; +B35C;HANGUL SYLLABLE DEOL;Lo;0;L;;;;;N;;;;; +B35D;HANGUL SYLLABLE DEOLG;Lo;0;L;;;;;N;;;;; +B35E;HANGUL SYLLABLE DEOLM;Lo;0;L;;;;;N;;;;; +B35F;HANGUL SYLLABLE DEOLB;Lo;0;L;;;;;N;;;;; +B360;HANGUL SYLLABLE DEOLS;Lo;0;L;;;;;N;;;;; +B361;HANGUL SYLLABLE DEOLT;Lo;0;L;;;;;N;;;;; +B362;HANGUL SYLLABLE DEOLP;Lo;0;L;;;;;N;;;;; +B363;HANGUL SYLLABLE DEOLH;Lo;0;L;;;;;N;;;;; +B364;HANGUL SYLLABLE DEOM;Lo;0;L;;;;;N;;;;; +B365;HANGUL SYLLABLE DEOB;Lo;0;L;;;;;N;;;;; +B366;HANGUL SYLLABLE DEOBS;Lo;0;L;;;;;N;;;;; +B367;HANGUL SYLLABLE DEOS;Lo;0;L;;;;;N;;;;; +B368;HANGUL SYLLABLE DEOSS;Lo;0;L;;;;;N;;;;; +B369;HANGUL SYLLABLE DEONG;Lo;0;L;;;;;N;;;;; +B36A;HANGUL SYLLABLE DEOJ;Lo;0;L;;;;;N;;;;; +B36B;HANGUL SYLLABLE DEOC;Lo;0;L;;;;;N;;;;; +B36C;HANGUL SYLLABLE DEOK;Lo;0;L;;;;;N;;;;; +B36D;HANGUL SYLLABLE DEOT;Lo;0;L;;;;;N;;;;; +B36E;HANGUL SYLLABLE DEOP;Lo;0;L;;;;;N;;;;; +B36F;HANGUL SYLLABLE DEOH;Lo;0;L;;;;;N;;;;; +B370;HANGUL SYLLABLE DE;Lo;0;L;;;;;N;;;;; +B371;HANGUL SYLLABLE DEG;Lo;0;L;;;;;N;;;;; +B372;HANGUL SYLLABLE DEGG;Lo;0;L;;;;;N;;;;; +B373;HANGUL SYLLABLE DEGS;Lo;0;L;;;;;N;;;;; +B374;HANGUL SYLLABLE DEN;Lo;0;L;;;;;N;;;;; +B375;HANGUL SYLLABLE DENI;Lo;0;L;;;;;N;;;;; +B376;HANGUL SYLLABLE DENH;Lo;0;L;;;;;N;;;;; +B377;HANGUL SYLLABLE DED;Lo;0;L;;;;;N;;;;; +B378;HANGUL SYLLABLE DEL;Lo;0;L;;;;;N;;;;; +B379;HANGUL SYLLABLE DELG;Lo;0;L;;;;;N;;;;; +B37A;HANGUL SYLLABLE DELM;Lo;0;L;;;;;N;;;;; +B37B;HANGUL SYLLABLE DELB;Lo;0;L;;;;;N;;;;; +B37C;HANGUL SYLLABLE DELS;Lo;0;L;;;;;N;;;;; +B37D;HANGUL SYLLABLE DELT;Lo;0;L;;;;;N;;;;; +B37E;HANGUL SYLLABLE DELP;Lo;0;L;;;;;N;;;;; +B37F;HANGUL SYLLABLE DELH;Lo;0;L;;;;;N;;;;; +B380;HANGUL SYLLABLE DEM;Lo;0;L;;;;;N;;;;; +B381;HANGUL SYLLABLE DEB;Lo;0;L;;;;;N;;;;; +B382;HANGUL SYLLABLE DEBS;Lo;0;L;;;;;N;;;;; +B383;HANGUL SYLLABLE DES;Lo;0;L;;;;;N;;;;; +B384;HANGUL SYLLABLE DESS;Lo;0;L;;;;;N;;;;; +B385;HANGUL SYLLABLE DENG;Lo;0;L;;;;;N;;;;; +B386;HANGUL SYLLABLE DEJ;Lo;0;L;;;;;N;;;;; +B387;HANGUL SYLLABLE DEC;Lo;0;L;;;;;N;;;;; +B388;HANGUL SYLLABLE DEK;Lo;0;L;;;;;N;;;;; +B389;HANGUL SYLLABLE DET;Lo;0;L;;;;;N;;;;; +B38A;HANGUL SYLLABLE DEP;Lo;0;L;;;;;N;;;;; +B38B;HANGUL SYLLABLE DEH;Lo;0;L;;;;;N;;;;; +B38C;HANGUL SYLLABLE DYEO;Lo;0;L;;;;;N;;;;; +B38D;HANGUL SYLLABLE DYEOG;Lo;0;L;;;;;N;;;;; +B38E;HANGUL SYLLABLE DYEOGG;Lo;0;L;;;;;N;;;;; +B38F;HANGUL SYLLABLE DYEOGS;Lo;0;L;;;;;N;;;;; +B390;HANGUL SYLLABLE DYEON;Lo;0;L;;;;;N;;;;; +B391;HANGUL SYLLABLE DYEONI;Lo;0;L;;;;;N;;;;; +B392;HANGUL SYLLABLE DYEONH;Lo;0;L;;;;;N;;;;; +B393;HANGUL SYLLABLE DYEOD;Lo;0;L;;;;;N;;;;; +B394;HANGUL SYLLABLE DYEOL;Lo;0;L;;;;;N;;;;; +B395;HANGUL SYLLABLE DYEOLG;Lo;0;L;;;;;N;;;;; +B396;HANGUL SYLLABLE DYEOLM;Lo;0;L;;;;;N;;;;; +B397;HANGUL SYLLABLE DYEOLB;Lo;0;L;;;;;N;;;;; +B398;HANGUL SYLLABLE DYEOLS;Lo;0;L;;;;;N;;;;; +B399;HANGUL SYLLABLE DYEOLT;Lo;0;L;;;;;N;;;;; +B39A;HANGUL SYLLABLE DYEOLP;Lo;0;L;;;;;N;;;;; +B39B;HANGUL SYLLABLE DYEOLH;Lo;0;L;;;;;N;;;;; +B39C;HANGUL SYLLABLE DYEOM;Lo;0;L;;;;;N;;;;; +B39D;HANGUL SYLLABLE DYEOB;Lo;0;L;;;;;N;;;;; +B39E;HANGUL SYLLABLE DYEOBS;Lo;0;L;;;;;N;;;;; +B39F;HANGUL SYLLABLE DYEOS;Lo;0;L;;;;;N;;;;; +B3A0;HANGUL SYLLABLE DYEOSS;Lo;0;L;;;;;N;;;;; +B3A1;HANGUL SYLLABLE DYEONG;Lo;0;L;;;;;N;;;;; +B3A2;HANGUL SYLLABLE DYEOJ;Lo;0;L;;;;;N;;;;; +B3A3;HANGUL SYLLABLE DYEOC;Lo;0;L;;;;;N;;;;; +B3A4;HANGUL SYLLABLE DYEOK;Lo;0;L;;;;;N;;;;; +B3A5;HANGUL SYLLABLE DYEOT;Lo;0;L;;;;;N;;;;; +B3A6;HANGUL SYLLABLE DYEOP;Lo;0;L;;;;;N;;;;; +B3A7;HANGUL SYLLABLE DYEOH;Lo;0;L;;;;;N;;;;; +B3A8;HANGUL SYLLABLE DYE;Lo;0;L;;;;;N;;;;; +B3A9;HANGUL SYLLABLE DYEG;Lo;0;L;;;;;N;;;;; +B3AA;HANGUL SYLLABLE DYEGG;Lo;0;L;;;;;N;;;;; +B3AB;HANGUL SYLLABLE DYEGS;Lo;0;L;;;;;N;;;;; +B3AC;HANGUL SYLLABLE DYEN;Lo;0;L;;;;;N;;;;; +B3AD;HANGUL SYLLABLE DYENI;Lo;0;L;;;;;N;;;;; +B3AE;HANGUL SYLLABLE DYENH;Lo;0;L;;;;;N;;;;; +B3AF;HANGUL SYLLABLE DYED;Lo;0;L;;;;;N;;;;; +B3B0;HANGUL SYLLABLE DYEL;Lo;0;L;;;;;N;;;;; +B3B1;HANGUL SYLLABLE DYELG;Lo;0;L;;;;;N;;;;; +B3B2;HANGUL SYLLABLE DYELM;Lo;0;L;;;;;N;;;;; +B3B3;HANGUL SYLLABLE DYELB;Lo;0;L;;;;;N;;;;; +B3B4;HANGUL SYLLABLE DYELS;Lo;0;L;;;;;N;;;;; +B3B5;HANGUL SYLLABLE DYELT;Lo;0;L;;;;;N;;;;; +B3B6;HANGUL SYLLABLE DYELP;Lo;0;L;;;;;N;;;;; +B3B7;HANGUL SYLLABLE DYELH;Lo;0;L;;;;;N;;;;; +B3B8;HANGUL SYLLABLE DYEM;Lo;0;L;;;;;N;;;;; +B3B9;HANGUL SYLLABLE DYEB;Lo;0;L;;;;;N;;;;; +B3BA;HANGUL SYLLABLE DYEBS;Lo;0;L;;;;;N;;;;; +B3BB;HANGUL SYLLABLE DYES;Lo;0;L;;;;;N;;;;; +B3BC;HANGUL SYLLABLE DYESS;Lo;0;L;;;;;N;;;;; +B3BD;HANGUL SYLLABLE DYENG;Lo;0;L;;;;;N;;;;; +B3BE;HANGUL SYLLABLE DYEJ;Lo;0;L;;;;;N;;;;; +B3BF;HANGUL SYLLABLE DYEC;Lo;0;L;;;;;N;;;;; +B3C0;HANGUL SYLLABLE DYEK;Lo;0;L;;;;;N;;;;; +B3C1;HANGUL SYLLABLE DYET;Lo;0;L;;;;;N;;;;; +B3C2;HANGUL SYLLABLE DYEP;Lo;0;L;;;;;N;;;;; +B3C3;HANGUL SYLLABLE DYEH;Lo;0;L;;;;;N;;;;; +B3C4;HANGUL SYLLABLE DO;Lo;0;L;;;;;N;;;;; +B3C5;HANGUL SYLLABLE DOG;Lo;0;L;;;;;N;;;;; +B3C6;HANGUL SYLLABLE DOGG;Lo;0;L;;;;;N;;;;; +B3C7;HANGUL SYLLABLE DOGS;Lo;0;L;;;;;N;;;;; +B3C8;HANGUL SYLLABLE DON;Lo;0;L;;;;;N;;;;; +B3C9;HANGUL SYLLABLE DONI;Lo;0;L;;;;;N;;;;; +B3CA;HANGUL SYLLABLE DONH;Lo;0;L;;;;;N;;;;; +B3CB;HANGUL SYLLABLE DOD;Lo;0;L;;;;;N;;;;; +B3CC;HANGUL SYLLABLE DOL;Lo;0;L;;;;;N;;;;; +B3CD;HANGUL SYLLABLE DOLG;Lo;0;L;;;;;N;;;;; +B3CE;HANGUL SYLLABLE DOLM;Lo;0;L;;;;;N;;;;; +B3CF;HANGUL SYLLABLE DOLB;Lo;0;L;;;;;N;;;;; +B3D0;HANGUL SYLLABLE DOLS;Lo;0;L;;;;;N;;;;; +B3D1;HANGUL SYLLABLE DOLT;Lo;0;L;;;;;N;;;;; +B3D2;HANGUL SYLLABLE DOLP;Lo;0;L;;;;;N;;;;; +B3D3;HANGUL SYLLABLE DOLH;Lo;0;L;;;;;N;;;;; +B3D4;HANGUL SYLLABLE DOM;Lo;0;L;;;;;N;;;;; +B3D5;HANGUL SYLLABLE DOB;Lo;0;L;;;;;N;;;;; +B3D6;HANGUL SYLLABLE DOBS;Lo;0;L;;;;;N;;;;; +B3D7;HANGUL SYLLABLE DOS;Lo;0;L;;;;;N;;;;; +B3D8;HANGUL SYLLABLE DOSS;Lo;0;L;;;;;N;;;;; +B3D9;HANGUL SYLLABLE DONG;Lo;0;L;;;;;N;;;;; +B3DA;HANGUL SYLLABLE DOJ;Lo;0;L;;;;;N;;;;; +B3DB;HANGUL SYLLABLE DOC;Lo;0;L;;;;;N;;;;; +B3DC;HANGUL SYLLABLE DOK;Lo;0;L;;;;;N;;;;; +B3DD;HANGUL SYLLABLE DOT;Lo;0;L;;;;;N;;;;; +B3DE;HANGUL SYLLABLE DOP;Lo;0;L;;;;;N;;;;; +B3DF;HANGUL SYLLABLE DOH;Lo;0;L;;;;;N;;;;; +B3E0;HANGUL SYLLABLE DWA;Lo;0;L;;;;;N;;;;; +B3E1;HANGUL SYLLABLE DWAG;Lo;0;L;;;;;N;;;;; +B3E2;HANGUL SYLLABLE DWAGG;Lo;0;L;;;;;N;;;;; +B3E3;HANGUL SYLLABLE DWAGS;Lo;0;L;;;;;N;;;;; +B3E4;HANGUL SYLLABLE DWAN;Lo;0;L;;;;;N;;;;; +B3E5;HANGUL SYLLABLE DWANI;Lo;0;L;;;;;N;;;;; +B3E6;HANGUL SYLLABLE DWANH;Lo;0;L;;;;;N;;;;; +B3E7;HANGUL SYLLABLE DWAD;Lo;0;L;;;;;N;;;;; +B3E8;HANGUL SYLLABLE DWAL;Lo;0;L;;;;;N;;;;; +B3E9;HANGUL SYLLABLE DWALG;Lo;0;L;;;;;N;;;;; +B3EA;HANGUL SYLLABLE DWALM;Lo;0;L;;;;;N;;;;; +B3EB;HANGUL SYLLABLE DWALB;Lo;0;L;;;;;N;;;;; +B3EC;HANGUL SYLLABLE DWALS;Lo;0;L;;;;;N;;;;; +B3ED;HANGUL SYLLABLE DWALT;Lo;0;L;;;;;N;;;;; +B3EE;HANGUL SYLLABLE DWALP;Lo;0;L;;;;;N;;;;; +B3EF;HANGUL SYLLABLE DWALH;Lo;0;L;;;;;N;;;;; +B3F0;HANGUL SYLLABLE DWAM;Lo;0;L;;;;;N;;;;; +B3F1;HANGUL SYLLABLE DWAB;Lo;0;L;;;;;N;;;;; +B3F2;HANGUL SYLLABLE DWABS;Lo;0;L;;;;;N;;;;; +B3F3;HANGUL SYLLABLE DWAS;Lo;0;L;;;;;N;;;;; +B3F4;HANGUL SYLLABLE DWASS;Lo;0;L;;;;;N;;;;; +B3F5;HANGUL SYLLABLE DWANG;Lo;0;L;;;;;N;;;;; +B3F6;HANGUL SYLLABLE DWAJ;Lo;0;L;;;;;N;;;;; +B3F7;HANGUL SYLLABLE DWAC;Lo;0;L;;;;;N;;;;; +B3F8;HANGUL SYLLABLE DWAK;Lo;0;L;;;;;N;;;;; +B3F9;HANGUL SYLLABLE DWAT;Lo;0;L;;;;;N;;;;; +B3FA;HANGUL SYLLABLE DWAP;Lo;0;L;;;;;N;;;;; +B3FB;HANGUL SYLLABLE DWAH;Lo;0;L;;;;;N;;;;; +B3FC;HANGUL SYLLABLE DWAE;Lo;0;L;;;;;N;;;;; +B3FD;HANGUL SYLLABLE DWAEG;Lo;0;L;;;;;N;;;;; +B3FE;HANGUL SYLLABLE DWAEGG;Lo;0;L;;;;;N;;;;; +B3FF;HANGUL SYLLABLE DWAEGS;Lo;0;L;;;;;N;;;;; +B400;HANGUL SYLLABLE DWAEN;Lo;0;L;;;;;N;;;;; +B401;HANGUL SYLLABLE DWAENI;Lo;0;L;;;;;N;;;;; +B402;HANGUL SYLLABLE DWAENH;Lo;0;L;;;;;N;;;;; +B403;HANGUL SYLLABLE DWAED;Lo;0;L;;;;;N;;;;; +B404;HANGUL SYLLABLE DWAEL;Lo;0;L;;;;;N;;;;; +B405;HANGUL SYLLABLE DWAELG;Lo;0;L;;;;;N;;;;; +B406;HANGUL SYLLABLE DWAELM;Lo;0;L;;;;;N;;;;; +B407;HANGUL SYLLABLE DWAELB;Lo;0;L;;;;;N;;;;; +B408;HANGUL SYLLABLE DWAELS;Lo;0;L;;;;;N;;;;; +B409;HANGUL SYLLABLE DWAELT;Lo;0;L;;;;;N;;;;; +B40A;HANGUL SYLLABLE DWAELP;Lo;0;L;;;;;N;;;;; +B40B;HANGUL SYLLABLE DWAELH;Lo;0;L;;;;;N;;;;; +B40C;HANGUL SYLLABLE DWAEM;Lo;0;L;;;;;N;;;;; +B40D;HANGUL SYLLABLE DWAEB;Lo;0;L;;;;;N;;;;; +B40E;HANGUL SYLLABLE DWAEBS;Lo;0;L;;;;;N;;;;; +B40F;HANGUL SYLLABLE DWAES;Lo;0;L;;;;;N;;;;; +B410;HANGUL SYLLABLE DWAESS;Lo;0;L;;;;;N;;;;; +B411;HANGUL SYLLABLE DWAENG;Lo;0;L;;;;;N;;;;; +B412;HANGUL SYLLABLE DWAEJ;Lo;0;L;;;;;N;;;;; +B413;HANGUL SYLLABLE DWAEC;Lo;0;L;;;;;N;;;;; +B414;HANGUL SYLLABLE DWAEK;Lo;0;L;;;;;N;;;;; +B415;HANGUL SYLLABLE DWAET;Lo;0;L;;;;;N;;;;; +B416;HANGUL SYLLABLE DWAEP;Lo;0;L;;;;;N;;;;; +B417;HANGUL SYLLABLE DWAEH;Lo;0;L;;;;;N;;;;; +B418;HANGUL SYLLABLE DOE;Lo;0;L;;;;;N;;;;; +B419;HANGUL SYLLABLE DOEG;Lo;0;L;;;;;N;;;;; +B41A;HANGUL SYLLABLE DOEGG;Lo;0;L;;;;;N;;;;; +B41B;HANGUL SYLLABLE DOEGS;Lo;0;L;;;;;N;;;;; +B41C;HANGUL SYLLABLE DOEN;Lo;0;L;;;;;N;;;;; +B41D;HANGUL SYLLABLE DOENI;Lo;0;L;;;;;N;;;;; +B41E;HANGUL SYLLABLE DOENH;Lo;0;L;;;;;N;;;;; +B41F;HANGUL SYLLABLE DOED;Lo;0;L;;;;;N;;;;; +B420;HANGUL SYLLABLE DOEL;Lo;0;L;;;;;N;;;;; +B421;HANGUL SYLLABLE DOELG;Lo;0;L;;;;;N;;;;; +B422;HANGUL SYLLABLE DOELM;Lo;0;L;;;;;N;;;;; +B423;HANGUL SYLLABLE DOELB;Lo;0;L;;;;;N;;;;; +B424;HANGUL SYLLABLE DOELS;Lo;0;L;;;;;N;;;;; +B425;HANGUL SYLLABLE DOELT;Lo;0;L;;;;;N;;;;; +B426;HANGUL SYLLABLE DOELP;Lo;0;L;;;;;N;;;;; +B427;HANGUL SYLLABLE DOELH;Lo;0;L;;;;;N;;;;; +B428;HANGUL SYLLABLE DOEM;Lo;0;L;;;;;N;;;;; +B429;HANGUL SYLLABLE DOEB;Lo;0;L;;;;;N;;;;; +B42A;HANGUL SYLLABLE DOEBS;Lo;0;L;;;;;N;;;;; +B42B;HANGUL SYLLABLE DOES;Lo;0;L;;;;;N;;;;; +B42C;HANGUL SYLLABLE DOESS;Lo;0;L;;;;;N;;;;; +B42D;HANGUL SYLLABLE DOENG;Lo;0;L;;;;;N;;;;; +B42E;HANGUL SYLLABLE DOEJ;Lo;0;L;;;;;N;;;;; +B42F;HANGUL SYLLABLE DOEC;Lo;0;L;;;;;N;;;;; +B430;HANGUL SYLLABLE DOEK;Lo;0;L;;;;;N;;;;; +B431;HANGUL SYLLABLE DOET;Lo;0;L;;;;;N;;;;; +B432;HANGUL SYLLABLE DOEP;Lo;0;L;;;;;N;;;;; +B433;HANGUL SYLLABLE DOEH;Lo;0;L;;;;;N;;;;; +B434;HANGUL SYLLABLE DYO;Lo;0;L;;;;;N;;;;; +B435;HANGUL SYLLABLE DYOG;Lo;0;L;;;;;N;;;;; +B436;HANGUL SYLLABLE DYOGG;Lo;0;L;;;;;N;;;;; +B437;HANGUL SYLLABLE DYOGS;Lo;0;L;;;;;N;;;;; +B438;HANGUL SYLLABLE DYON;Lo;0;L;;;;;N;;;;; +B439;HANGUL SYLLABLE DYONI;Lo;0;L;;;;;N;;;;; +B43A;HANGUL SYLLABLE DYONH;Lo;0;L;;;;;N;;;;; +B43B;HANGUL SYLLABLE DYOD;Lo;0;L;;;;;N;;;;; +B43C;HANGUL SYLLABLE DYOL;Lo;0;L;;;;;N;;;;; +B43D;HANGUL SYLLABLE DYOLG;Lo;0;L;;;;;N;;;;; +B43E;HANGUL SYLLABLE DYOLM;Lo;0;L;;;;;N;;;;; +B43F;HANGUL SYLLABLE DYOLB;Lo;0;L;;;;;N;;;;; +B440;HANGUL SYLLABLE DYOLS;Lo;0;L;;;;;N;;;;; +B441;HANGUL SYLLABLE DYOLT;Lo;0;L;;;;;N;;;;; +B442;HANGUL SYLLABLE DYOLP;Lo;0;L;;;;;N;;;;; +B443;HANGUL SYLLABLE DYOLH;Lo;0;L;;;;;N;;;;; +B444;HANGUL SYLLABLE DYOM;Lo;0;L;;;;;N;;;;; +B445;HANGUL SYLLABLE DYOB;Lo;0;L;;;;;N;;;;; +B446;HANGUL SYLLABLE DYOBS;Lo;0;L;;;;;N;;;;; +B447;HANGUL SYLLABLE DYOS;Lo;0;L;;;;;N;;;;; +B448;HANGUL SYLLABLE DYOSS;Lo;0;L;;;;;N;;;;; +B449;HANGUL SYLLABLE DYONG;Lo;0;L;;;;;N;;;;; +B44A;HANGUL SYLLABLE DYOJ;Lo;0;L;;;;;N;;;;; +B44B;HANGUL SYLLABLE DYOC;Lo;0;L;;;;;N;;;;; +B44C;HANGUL SYLLABLE DYOK;Lo;0;L;;;;;N;;;;; +B44D;HANGUL SYLLABLE DYOT;Lo;0;L;;;;;N;;;;; +B44E;HANGUL SYLLABLE DYOP;Lo;0;L;;;;;N;;;;; +B44F;HANGUL SYLLABLE DYOH;Lo;0;L;;;;;N;;;;; +B450;HANGUL SYLLABLE DU;Lo;0;L;;;;;N;;;;; +B451;HANGUL SYLLABLE DUG;Lo;0;L;;;;;N;;;;; +B452;HANGUL SYLLABLE DUGG;Lo;0;L;;;;;N;;;;; +B453;HANGUL SYLLABLE DUGS;Lo;0;L;;;;;N;;;;; +B454;HANGUL SYLLABLE DUN;Lo;0;L;;;;;N;;;;; +B455;HANGUL SYLLABLE DUNI;Lo;0;L;;;;;N;;;;; +B456;HANGUL SYLLABLE DUNH;Lo;0;L;;;;;N;;;;; +B457;HANGUL SYLLABLE DUD;Lo;0;L;;;;;N;;;;; +B458;HANGUL SYLLABLE DUL;Lo;0;L;;;;;N;;;;; +B459;HANGUL SYLLABLE DULG;Lo;0;L;;;;;N;;;;; +B45A;HANGUL SYLLABLE DULM;Lo;0;L;;;;;N;;;;; +B45B;HANGUL SYLLABLE DULB;Lo;0;L;;;;;N;;;;; +B45C;HANGUL SYLLABLE DULS;Lo;0;L;;;;;N;;;;; +B45D;HANGUL SYLLABLE DULT;Lo;0;L;;;;;N;;;;; +B45E;HANGUL SYLLABLE DULP;Lo;0;L;;;;;N;;;;; +B45F;HANGUL SYLLABLE DULH;Lo;0;L;;;;;N;;;;; +B460;HANGUL SYLLABLE DUM;Lo;0;L;;;;;N;;;;; +B461;HANGUL SYLLABLE DUB;Lo;0;L;;;;;N;;;;; +B462;HANGUL SYLLABLE DUBS;Lo;0;L;;;;;N;;;;; +B463;HANGUL SYLLABLE DUS;Lo;0;L;;;;;N;;;;; +B464;HANGUL SYLLABLE DUSS;Lo;0;L;;;;;N;;;;; +B465;HANGUL SYLLABLE DUNG;Lo;0;L;;;;;N;;;;; +B466;HANGUL SYLLABLE DUJ;Lo;0;L;;;;;N;;;;; +B467;HANGUL SYLLABLE DUC;Lo;0;L;;;;;N;;;;; +B468;HANGUL SYLLABLE DUK;Lo;0;L;;;;;N;;;;; +B469;HANGUL SYLLABLE DUT;Lo;0;L;;;;;N;;;;; +B46A;HANGUL SYLLABLE DUP;Lo;0;L;;;;;N;;;;; +B46B;HANGUL SYLLABLE DUH;Lo;0;L;;;;;N;;;;; +B46C;HANGUL SYLLABLE DWEO;Lo;0;L;;;;;N;;;;; +B46D;HANGUL SYLLABLE DWEOG;Lo;0;L;;;;;N;;;;; +B46E;HANGUL SYLLABLE DWEOGG;Lo;0;L;;;;;N;;;;; +B46F;HANGUL SYLLABLE DWEOGS;Lo;0;L;;;;;N;;;;; +B470;HANGUL SYLLABLE DWEON;Lo;0;L;;;;;N;;;;; +B471;HANGUL SYLLABLE DWEONI;Lo;0;L;;;;;N;;;;; +B472;HANGUL SYLLABLE DWEONH;Lo;0;L;;;;;N;;;;; +B473;HANGUL SYLLABLE DWEOD;Lo;0;L;;;;;N;;;;; +B474;HANGUL SYLLABLE DWEOL;Lo;0;L;;;;;N;;;;; +B475;HANGUL SYLLABLE DWEOLG;Lo;0;L;;;;;N;;;;; +B476;HANGUL SYLLABLE DWEOLM;Lo;0;L;;;;;N;;;;; +B477;HANGUL SYLLABLE DWEOLB;Lo;0;L;;;;;N;;;;; +B478;HANGUL SYLLABLE DWEOLS;Lo;0;L;;;;;N;;;;; +B479;HANGUL SYLLABLE DWEOLT;Lo;0;L;;;;;N;;;;; +B47A;HANGUL SYLLABLE DWEOLP;Lo;0;L;;;;;N;;;;; +B47B;HANGUL SYLLABLE DWEOLH;Lo;0;L;;;;;N;;;;; +B47C;HANGUL SYLLABLE DWEOM;Lo;0;L;;;;;N;;;;; +B47D;HANGUL SYLLABLE DWEOB;Lo;0;L;;;;;N;;;;; +B47E;HANGUL SYLLABLE DWEOBS;Lo;0;L;;;;;N;;;;; +B47F;HANGUL SYLLABLE DWEOS;Lo;0;L;;;;;N;;;;; +B480;HANGUL SYLLABLE DWEOSS;Lo;0;L;;;;;N;;;;; +B481;HANGUL SYLLABLE DWEONG;Lo;0;L;;;;;N;;;;; +B482;HANGUL SYLLABLE DWEOJ;Lo;0;L;;;;;N;;;;; +B483;HANGUL SYLLABLE DWEOC;Lo;0;L;;;;;N;;;;; +B484;HANGUL SYLLABLE DWEOK;Lo;0;L;;;;;N;;;;; +B485;HANGUL SYLLABLE DWEOT;Lo;0;L;;;;;N;;;;; +B486;HANGUL SYLLABLE DWEOP;Lo;0;L;;;;;N;;;;; +B487;HANGUL SYLLABLE DWEOH;Lo;0;L;;;;;N;;;;; +B488;HANGUL SYLLABLE DWE;Lo;0;L;;;;;N;;;;; +B489;HANGUL SYLLABLE DWEG;Lo;0;L;;;;;N;;;;; +B48A;HANGUL SYLLABLE DWEGG;Lo;0;L;;;;;N;;;;; +B48B;HANGUL SYLLABLE DWEGS;Lo;0;L;;;;;N;;;;; +B48C;HANGUL SYLLABLE DWEN;Lo;0;L;;;;;N;;;;; +B48D;HANGUL SYLLABLE DWENI;Lo;0;L;;;;;N;;;;; +B48E;HANGUL SYLLABLE DWENH;Lo;0;L;;;;;N;;;;; +B48F;HANGUL SYLLABLE DWED;Lo;0;L;;;;;N;;;;; +B490;HANGUL SYLLABLE DWEL;Lo;0;L;;;;;N;;;;; +B491;HANGUL SYLLABLE DWELG;Lo;0;L;;;;;N;;;;; +B492;HANGUL SYLLABLE DWELM;Lo;0;L;;;;;N;;;;; +B493;HANGUL SYLLABLE DWELB;Lo;0;L;;;;;N;;;;; +B494;HANGUL SYLLABLE DWELS;Lo;0;L;;;;;N;;;;; +B495;HANGUL SYLLABLE DWELT;Lo;0;L;;;;;N;;;;; +B496;HANGUL SYLLABLE DWELP;Lo;0;L;;;;;N;;;;; +B497;HANGUL SYLLABLE DWELH;Lo;0;L;;;;;N;;;;; +B498;HANGUL SYLLABLE DWEM;Lo;0;L;;;;;N;;;;; +B499;HANGUL SYLLABLE DWEB;Lo;0;L;;;;;N;;;;; +B49A;HANGUL SYLLABLE DWEBS;Lo;0;L;;;;;N;;;;; +B49B;HANGUL SYLLABLE DWES;Lo;0;L;;;;;N;;;;; +B49C;HANGUL SYLLABLE DWESS;Lo;0;L;;;;;N;;;;; +B49D;HANGUL SYLLABLE DWENG;Lo;0;L;;;;;N;;;;; +B49E;HANGUL SYLLABLE DWEJ;Lo;0;L;;;;;N;;;;; +B49F;HANGUL SYLLABLE DWEC;Lo;0;L;;;;;N;;;;; +B4A0;HANGUL SYLLABLE DWEK;Lo;0;L;;;;;N;;;;; +B4A1;HANGUL SYLLABLE DWET;Lo;0;L;;;;;N;;;;; +B4A2;HANGUL SYLLABLE DWEP;Lo;0;L;;;;;N;;;;; +B4A3;HANGUL SYLLABLE DWEH;Lo;0;L;;;;;N;;;;; +B4A4;HANGUL SYLLABLE DWI;Lo;0;L;;;;;N;;;;; +B4A5;HANGUL SYLLABLE DWIG;Lo;0;L;;;;;N;;;;; +B4A6;HANGUL SYLLABLE DWIGG;Lo;0;L;;;;;N;;;;; +B4A7;HANGUL SYLLABLE DWIGS;Lo;0;L;;;;;N;;;;; +B4A8;HANGUL SYLLABLE DWIN;Lo;0;L;;;;;N;;;;; +B4A9;HANGUL SYLLABLE DWINI;Lo;0;L;;;;;N;;;;; +B4AA;HANGUL SYLLABLE DWINH;Lo;0;L;;;;;N;;;;; +B4AB;HANGUL SYLLABLE DWID;Lo;0;L;;;;;N;;;;; +B4AC;HANGUL SYLLABLE DWIL;Lo;0;L;;;;;N;;;;; +B4AD;HANGUL SYLLABLE DWILG;Lo;0;L;;;;;N;;;;; +B4AE;HANGUL SYLLABLE DWILM;Lo;0;L;;;;;N;;;;; +B4AF;HANGUL SYLLABLE DWILB;Lo;0;L;;;;;N;;;;; +B4B0;HANGUL SYLLABLE DWILS;Lo;0;L;;;;;N;;;;; +B4B1;HANGUL SYLLABLE DWILT;Lo;0;L;;;;;N;;;;; +B4B2;HANGUL SYLLABLE DWILP;Lo;0;L;;;;;N;;;;; +B4B3;HANGUL SYLLABLE DWILH;Lo;0;L;;;;;N;;;;; +B4B4;HANGUL SYLLABLE DWIM;Lo;0;L;;;;;N;;;;; +B4B5;HANGUL SYLLABLE DWIB;Lo;0;L;;;;;N;;;;; +B4B6;HANGUL SYLLABLE DWIBS;Lo;0;L;;;;;N;;;;; +B4B7;HANGUL SYLLABLE DWIS;Lo;0;L;;;;;N;;;;; +B4B8;HANGUL SYLLABLE DWISS;Lo;0;L;;;;;N;;;;; +B4B9;HANGUL SYLLABLE DWING;Lo;0;L;;;;;N;;;;; +B4BA;HANGUL SYLLABLE DWIJ;Lo;0;L;;;;;N;;;;; +B4BB;HANGUL SYLLABLE DWIC;Lo;0;L;;;;;N;;;;; +B4BC;HANGUL SYLLABLE DWIK;Lo;0;L;;;;;N;;;;; +B4BD;HANGUL SYLLABLE DWIT;Lo;0;L;;;;;N;;;;; +B4BE;HANGUL SYLLABLE DWIP;Lo;0;L;;;;;N;;;;; +B4BF;HANGUL SYLLABLE DWIH;Lo;0;L;;;;;N;;;;; +B4C0;HANGUL SYLLABLE DYU;Lo;0;L;;;;;N;;;;; +B4C1;HANGUL SYLLABLE DYUG;Lo;0;L;;;;;N;;;;; +B4C2;HANGUL SYLLABLE DYUGG;Lo;0;L;;;;;N;;;;; +B4C3;HANGUL SYLLABLE DYUGS;Lo;0;L;;;;;N;;;;; +B4C4;HANGUL SYLLABLE DYUN;Lo;0;L;;;;;N;;;;; +B4C5;HANGUL SYLLABLE DYUNI;Lo;0;L;;;;;N;;;;; +B4C6;HANGUL SYLLABLE DYUNH;Lo;0;L;;;;;N;;;;; +B4C7;HANGUL SYLLABLE DYUD;Lo;0;L;;;;;N;;;;; +B4C8;HANGUL SYLLABLE DYUL;Lo;0;L;;;;;N;;;;; +B4C9;HANGUL SYLLABLE DYULG;Lo;0;L;;;;;N;;;;; +B4CA;HANGUL SYLLABLE DYULM;Lo;0;L;;;;;N;;;;; +B4CB;HANGUL SYLLABLE DYULB;Lo;0;L;;;;;N;;;;; +B4CC;HANGUL SYLLABLE DYULS;Lo;0;L;;;;;N;;;;; +B4CD;HANGUL SYLLABLE DYULT;Lo;0;L;;;;;N;;;;; +B4CE;HANGUL SYLLABLE DYULP;Lo;0;L;;;;;N;;;;; +B4CF;HANGUL SYLLABLE DYULH;Lo;0;L;;;;;N;;;;; +B4D0;HANGUL SYLLABLE DYUM;Lo;0;L;;;;;N;;;;; +B4D1;HANGUL SYLLABLE DYUB;Lo;0;L;;;;;N;;;;; +B4D2;HANGUL SYLLABLE DYUBS;Lo;0;L;;;;;N;;;;; +B4D3;HANGUL SYLLABLE DYUS;Lo;0;L;;;;;N;;;;; +B4D4;HANGUL SYLLABLE DYUSS;Lo;0;L;;;;;N;;;;; +B4D5;HANGUL SYLLABLE DYUNG;Lo;0;L;;;;;N;;;;; +B4D6;HANGUL SYLLABLE DYUJ;Lo;0;L;;;;;N;;;;; +B4D7;HANGUL SYLLABLE DYUC;Lo;0;L;;;;;N;;;;; +B4D8;HANGUL SYLLABLE DYUK;Lo;0;L;;;;;N;;;;; +B4D9;HANGUL SYLLABLE DYUT;Lo;0;L;;;;;N;;;;; +B4DA;HANGUL SYLLABLE DYUP;Lo;0;L;;;;;N;;;;; +B4DB;HANGUL SYLLABLE DYUH;Lo;0;L;;;;;N;;;;; +B4DC;HANGUL SYLLABLE DEU;Lo;0;L;;;;;N;;;;; +B4DD;HANGUL SYLLABLE DEUG;Lo;0;L;;;;;N;;;;; +B4DE;HANGUL SYLLABLE DEUGG;Lo;0;L;;;;;N;;;;; +B4DF;HANGUL SYLLABLE DEUGS;Lo;0;L;;;;;N;;;;; +B4E0;HANGUL SYLLABLE DEUN;Lo;0;L;;;;;N;;;;; +B4E1;HANGUL SYLLABLE DEUNI;Lo;0;L;;;;;N;;;;; +B4E2;HANGUL SYLLABLE DEUNH;Lo;0;L;;;;;N;;;;; +B4E3;HANGUL SYLLABLE DEUD;Lo;0;L;;;;;N;;;;; +B4E4;HANGUL SYLLABLE DEUL;Lo;0;L;;;;;N;;;;; +B4E5;HANGUL SYLLABLE DEULG;Lo;0;L;;;;;N;;;;; +B4E6;HANGUL SYLLABLE DEULM;Lo;0;L;;;;;N;;;;; +B4E7;HANGUL SYLLABLE DEULB;Lo;0;L;;;;;N;;;;; +B4E8;HANGUL SYLLABLE DEULS;Lo;0;L;;;;;N;;;;; +B4E9;HANGUL SYLLABLE DEULT;Lo;0;L;;;;;N;;;;; +B4EA;HANGUL SYLLABLE DEULP;Lo;0;L;;;;;N;;;;; +B4EB;HANGUL SYLLABLE DEULH;Lo;0;L;;;;;N;;;;; +B4EC;HANGUL SYLLABLE DEUM;Lo;0;L;;;;;N;;;;; +B4ED;HANGUL SYLLABLE DEUB;Lo;0;L;;;;;N;;;;; +B4EE;HANGUL SYLLABLE DEUBS;Lo;0;L;;;;;N;;;;; +B4EF;HANGUL SYLLABLE DEUS;Lo;0;L;;;;;N;;;;; +B4F0;HANGUL SYLLABLE DEUSS;Lo;0;L;;;;;N;;;;; +B4F1;HANGUL SYLLABLE DEUNG;Lo;0;L;;;;;N;;;;; +B4F2;HANGUL SYLLABLE DEUJ;Lo;0;L;;;;;N;;;;; +B4F3;HANGUL SYLLABLE DEUC;Lo;0;L;;;;;N;;;;; +B4F4;HANGUL SYLLABLE DEUK;Lo;0;L;;;;;N;;;;; +B4F5;HANGUL SYLLABLE DEUT;Lo;0;L;;;;;N;;;;; +B4F6;HANGUL SYLLABLE DEUP;Lo;0;L;;;;;N;;;;; +B4F7;HANGUL SYLLABLE DEUH;Lo;0;L;;;;;N;;;;; +B4F8;HANGUL SYLLABLE DYI;Lo;0;L;;;;;N;;;;; +B4F9;HANGUL SYLLABLE DYIG;Lo;0;L;;;;;N;;;;; +B4FA;HANGUL SYLLABLE DYIGG;Lo;0;L;;;;;N;;;;; +B4FB;HANGUL SYLLABLE DYIGS;Lo;0;L;;;;;N;;;;; +B4FC;HANGUL SYLLABLE DYIN;Lo;0;L;;;;;N;;;;; +B4FD;HANGUL SYLLABLE DYINI;Lo;0;L;;;;;N;;;;; +B4FE;HANGUL SYLLABLE DYINH;Lo;0;L;;;;;N;;;;; +B4FF;HANGUL SYLLABLE DYID;Lo;0;L;;;;;N;;;;; +B500;HANGUL SYLLABLE DYIL;Lo;0;L;;;;;N;;;;; +B501;HANGUL SYLLABLE DYILG;Lo;0;L;;;;;N;;;;; +B502;HANGUL SYLLABLE DYILM;Lo;0;L;;;;;N;;;;; +B503;HANGUL SYLLABLE DYILB;Lo;0;L;;;;;N;;;;; +B504;HANGUL SYLLABLE DYILS;Lo;0;L;;;;;N;;;;; +B505;HANGUL SYLLABLE DYILT;Lo;0;L;;;;;N;;;;; +B506;HANGUL SYLLABLE DYILP;Lo;0;L;;;;;N;;;;; +B507;HANGUL SYLLABLE DYILH;Lo;0;L;;;;;N;;;;; +B508;HANGUL SYLLABLE DYIM;Lo;0;L;;;;;N;;;;; +B509;HANGUL SYLLABLE DYIB;Lo;0;L;;;;;N;;;;; +B50A;HANGUL SYLLABLE DYIBS;Lo;0;L;;;;;N;;;;; +B50B;HANGUL SYLLABLE DYIS;Lo;0;L;;;;;N;;;;; +B50C;HANGUL SYLLABLE DYISS;Lo;0;L;;;;;N;;;;; +B50D;HANGUL SYLLABLE DYING;Lo;0;L;;;;;N;;;;; +B50E;HANGUL SYLLABLE DYIJ;Lo;0;L;;;;;N;;;;; +B50F;HANGUL SYLLABLE DYIC;Lo;0;L;;;;;N;;;;; +B510;HANGUL SYLLABLE DYIK;Lo;0;L;;;;;N;;;;; +B511;HANGUL SYLLABLE DYIT;Lo;0;L;;;;;N;;;;; +B512;HANGUL SYLLABLE DYIP;Lo;0;L;;;;;N;;;;; +B513;HANGUL SYLLABLE DYIH;Lo;0;L;;;;;N;;;;; +B514;HANGUL SYLLABLE DI;Lo;0;L;;;;;N;;;;; +B515;HANGUL SYLLABLE DIG;Lo;0;L;;;;;N;;;;; +B516;HANGUL SYLLABLE DIGG;Lo;0;L;;;;;N;;;;; +B517;HANGUL SYLLABLE DIGS;Lo;0;L;;;;;N;;;;; +B518;HANGUL SYLLABLE DIN;Lo;0;L;;;;;N;;;;; +B519;HANGUL SYLLABLE DINI;Lo;0;L;;;;;N;;;;; +B51A;HANGUL SYLLABLE DINH;Lo;0;L;;;;;N;;;;; +B51B;HANGUL SYLLABLE DID;Lo;0;L;;;;;N;;;;; +B51C;HANGUL SYLLABLE DIL;Lo;0;L;;;;;N;;;;; +B51D;HANGUL SYLLABLE DILG;Lo;0;L;;;;;N;;;;; +B51E;HANGUL SYLLABLE DILM;Lo;0;L;;;;;N;;;;; +B51F;HANGUL SYLLABLE DILB;Lo;0;L;;;;;N;;;;; +B520;HANGUL SYLLABLE DILS;Lo;0;L;;;;;N;;;;; +B521;HANGUL SYLLABLE DILT;Lo;0;L;;;;;N;;;;; +B522;HANGUL SYLLABLE DILP;Lo;0;L;;;;;N;;;;; +B523;HANGUL SYLLABLE DILH;Lo;0;L;;;;;N;;;;; +B524;HANGUL SYLLABLE DIM;Lo;0;L;;;;;N;;;;; +B525;HANGUL SYLLABLE DIB;Lo;0;L;;;;;N;;;;; +B526;HANGUL SYLLABLE DIBS;Lo;0;L;;;;;N;;;;; +B527;HANGUL SYLLABLE DIS;Lo;0;L;;;;;N;;;;; +B528;HANGUL SYLLABLE DISS;Lo;0;L;;;;;N;;;;; +B529;HANGUL SYLLABLE DING;Lo;0;L;;;;;N;;;;; +B52A;HANGUL SYLLABLE DIJ;Lo;0;L;;;;;N;;;;; +B52B;HANGUL SYLLABLE DIC;Lo;0;L;;;;;N;;;;; +B52C;HANGUL SYLLABLE DIK;Lo;0;L;;;;;N;;;;; +B52D;HANGUL SYLLABLE DIT;Lo;0;L;;;;;N;;;;; +B52E;HANGUL SYLLABLE DIP;Lo;0;L;;;;;N;;;;; +B52F;HANGUL SYLLABLE DIH;Lo;0;L;;;;;N;;;;; +B530;HANGUL SYLLABLE DDA;Lo;0;L;;;;;N;;;;; +B531;HANGUL SYLLABLE DDAG;Lo;0;L;;;;;N;;;;; +B532;HANGUL SYLLABLE DDAGG;Lo;0;L;;;;;N;;;;; +B533;HANGUL SYLLABLE DDAGS;Lo;0;L;;;;;N;;;;; +B534;HANGUL SYLLABLE DDAN;Lo;0;L;;;;;N;;;;; +B535;HANGUL SYLLABLE DDANI;Lo;0;L;;;;;N;;;;; +B536;HANGUL SYLLABLE DDANH;Lo;0;L;;;;;N;;;;; +B537;HANGUL SYLLABLE DDAD;Lo;0;L;;;;;N;;;;; +B538;HANGUL SYLLABLE DDAL;Lo;0;L;;;;;N;;;;; +B539;HANGUL SYLLABLE DDALG;Lo;0;L;;;;;N;;;;; +B53A;HANGUL SYLLABLE DDALM;Lo;0;L;;;;;N;;;;; +B53B;HANGUL SYLLABLE DDALB;Lo;0;L;;;;;N;;;;; +B53C;HANGUL SYLLABLE DDALS;Lo;0;L;;;;;N;;;;; +B53D;HANGUL SYLLABLE DDALT;Lo;0;L;;;;;N;;;;; +B53E;HANGUL SYLLABLE DDALP;Lo;0;L;;;;;N;;;;; +B53F;HANGUL SYLLABLE DDALH;Lo;0;L;;;;;N;;;;; +B540;HANGUL SYLLABLE DDAM;Lo;0;L;;;;;N;;;;; +B541;HANGUL SYLLABLE DDAB;Lo;0;L;;;;;N;;;;; +B542;HANGUL SYLLABLE DDABS;Lo;0;L;;;;;N;;;;; +B543;HANGUL SYLLABLE DDAS;Lo;0;L;;;;;N;;;;; +B544;HANGUL SYLLABLE DDASS;Lo;0;L;;;;;N;;;;; +B545;HANGUL SYLLABLE DDANG;Lo;0;L;;;;;N;;;;; +B546;HANGUL SYLLABLE DDAJ;Lo;0;L;;;;;N;;;;; +B547;HANGUL SYLLABLE DDAC;Lo;0;L;;;;;N;;;;; +B548;HANGUL SYLLABLE DDAK;Lo;0;L;;;;;N;;;;; +B549;HANGUL SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; +B54A;HANGUL SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; +B54B;HANGUL SYLLABLE DDAH;Lo;0;L;;;;;N;;;;; +B54C;HANGUL SYLLABLE DDAE;Lo;0;L;;;;;N;;;;; +B54D;HANGUL SYLLABLE DDAEG;Lo;0;L;;;;;N;;;;; +B54E;HANGUL SYLLABLE DDAEGG;Lo;0;L;;;;;N;;;;; +B54F;HANGUL SYLLABLE DDAEGS;Lo;0;L;;;;;N;;;;; +B550;HANGUL SYLLABLE DDAEN;Lo;0;L;;;;;N;;;;; +B551;HANGUL SYLLABLE DDAENI;Lo;0;L;;;;;N;;;;; +B552;HANGUL SYLLABLE DDAENH;Lo;0;L;;;;;N;;;;; +B553;HANGUL SYLLABLE DDAED;Lo;0;L;;;;;N;;;;; +B554;HANGUL SYLLABLE DDAEL;Lo;0;L;;;;;N;;;;; +B555;HANGUL SYLLABLE DDAELG;Lo;0;L;;;;;N;;;;; +B556;HANGUL SYLLABLE DDAELM;Lo;0;L;;;;;N;;;;; +B557;HANGUL SYLLABLE DDAELB;Lo;0;L;;;;;N;;;;; +B558;HANGUL SYLLABLE DDAELS;Lo;0;L;;;;;N;;;;; +B559;HANGUL SYLLABLE DDAELT;Lo;0;L;;;;;N;;;;; +B55A;HANGUL SYLLABLE DDAELP;Lo;0;L;;;;;N;;;;; +B55B;HANGUL SYLLABLE DDAELH;Lo;0;L;;;;;N;;;;; +B55C;HANGUL SYLLABLE DDAEM;Lo;0;L;;;;;N;;;;; +B55D;HANGUL SYLLABLE DDAEB;Lo;0;L;;;;;N;;;;; +B55E;HANGUL SYLLABLE DDAEBS;Lo;0;L;;;;;N;;;;; +B55F;HANGUL SYLLABLE DDAES;Lo;0;L;;;;;N;;;;; +B560;HANGUL SYLLABLE DDAESS;Lo;0;L;;;;;N;;;;; +B561;HANGUL SYLLABLE DDAENG;Lo;0;L;;;;;N;;;;; +B562;HANGUL SYLLABLE DDAEJ;Lo;0;L;;;;;N;;;;; +B563;HANGUL SYLLABLE DDAEC;Lo;0;L;;;;;N;;;;; +B564;HANGUL SYLLABLE DDAEK;Lo;0;L;;;;;N;;;;; +B565;HANGUL SYLLABLE DDAET;Lo;0;L;;;;;N;;;;; +B566;HANGUL SYLLABLE DDAEP;Lo;0;L;;;;;N;;;;; +B567;HANGUL SYLLABLE DDAEH;Lo;0;L;;;;;N;;;;; +B568;HANGUL SYLLABLE DDYA;Lo;0;L;;;;;N;;;;; +B569;HANGUL SYLLABLE DDYAG;Lo;0;L;;;;;N;;;;; +B56A;HANGUL SYLLABLE DDYAGG;Lo;0;L;;;;;N;;;;; +B56B;HANGUL SYLLABLE DDYAGS;Lo;0;L;;;;;N;;;;; +B56C;HANGUL SYLLABLE DDYAN;Lo;0;L;;;;;N;;;;; +B56D;HANGUL SYLLABLE DDYANI;Lo;0;L;;;;;N;;;;; +B56E;HANGUL SYLLABLE DDYANH;Lo;0;L;;;;;N;;;;; +B56F;HANGUL SYLLABLE DDYAD;Lo;0;L;;;;;N;;;;; +B570;HANGUL SYLLABLE DDYAL;Lo;0;L;;;;;N;;;;; +B571;HANGUL SYLLABLE DDYALG;Lo;0;L;;;;;N;;;;; +B572;HANGUL SYLLABLE DDYALM;Lo;0;L;;;;;N;;;;; +B573;HANGUL SYLLABLE DDYALB;Lo;0;L;;;;;N;;;;; +B574;HANGUL SYLLABLE DDYALS;Lo;0;L;;;;;N;;;;; +B575;HANGUL SYLLABLE DDYALT;Lo;0;L;;;;;N;;;;; +B576;HANGUL SYLLABLE DDYALP;Lo;0;L;;;;;N;;;;; +B577;HANGUL SYLLABLE DDYALH;Lo;0;L;;;;;N;;;;; +B578;HANGUL SYLLABLE DDYAM;Lo;0;L;;;;;N;;;;; +B579;HANGUL SYLLABLE DDYAB;Lo;0;L;;;;;N;;;;; +B57A;HANGUL SYLLABLE DDYABS;Lo;0;L;;;;;N;;;;; +B57B;HANGUL SYLLABLE DDYAS;Lo;0;L;;;;;N;;;;; +B57C;HANGUL SYLLABLE DDYASS;Lo;0;L;;;;;N;;;;; +B57D;HANGUL SYLLABLE DDYANG;Lo;0;L;;;;;N;;;;; +B57E;HANGUL SYLLABLE DDYAJ;Lo;0;L;;;;;N;;;;; +B57F;HANGUL SYLLABLE DDYAC;Lo;0;L;;;;;N;;;;; +B580;HANGUL SYLLABLE DDYAK;Lo;0;L;;;;;N;;;;; +B581;HANGUL SYLLABLE DDYAT;Lo;0;L;;;;;N;;;;; +B582;HANGUL SYLLABLE DDYAP;Lo;0;L;;;;;N;;;;; +B583;HANGUL SYLLABLE DDYAH;Lo;0;L;;;;;N;;;;; +B584;HANGUL SYLLABLE DDYAE;Lo;0;L;;;;;N;;;;; +B585;HANGUL SYLLABLE DDYAEG;Lo;0;L;;;;;N;;;;; +B586;HANGUL SYLLABLE DDYAEGG;Lo;0;L;;;;;N;;;;; +B587;HANGUL SYLLABLE DDYAEGS;Lo;0;L;;;;;N;;;;; +B588;HANGUL SYLLABLE DDYAEN;Lo;0;L;;;;;N;;;;; +B589;HANGUL SYLLABLE DDYAENI;Lo;0;L;;;;;N;;;;; +B58A;HANGUL SYLLABLE DDYAENH;Lo;0;L;;;;;N;;;;; +B58B;HANGUL SYLLABLE DDYAED;Lo;0;L;;;;;N;;;;; +B58C;HANGUL SYLLABLE DDYAEL;Lo;0;L;;;;;N;;;;; +B58D;HANGUL SYLLABLE DDYAELG;Lo;0;L;;;;;N;;;;; +B58E;HANGUL SYLLABLE DDYAELM;Lo;0;L;;;;;N;;;;; +B58F;HANGUL SYLLABLE DDYAELB;Lo;0;L;;;;;N;;;;; +B590;HANGUL SYLLABLE DDYAELS;Lo;0;L;;;;;N;;;;; +B591;HANGUL SYLLABLE DDYAELT;Lo;0;L;;;;;N;;;;; +B592;HANGUL SYLLABLE DDYAELP;Lo;0;L;;;;;N;;;;; +B593;HANGUL SYLLABLE DDYAELH;Lo;0;L;;;;;N;;;;; +B594;HANGUL SYLLABLE DDYAEM;Lo;0;L;;;;;N;;;;; +B595;HANGUL SYLLABLE DDYAEB;Lo;0;L;;;;;N;;;;; +B596;HANGUL SYLLABLE DDYAEBS;Lo;0;L;;;;;N;;;;; +B597;HANGUL SYLLABLE DDYAES;Lo;0;L;;;;;N;;;;; +B598;HANGUL SYLLABLE DDYAESS;Lo;0;L;;;;;N;;;;; +B599;HANGUL SYLLABLE DDYAENG;Lo;0;L;;;;;N;;;;; +B59A;HANGUL SYLLABLE DDYAEJ;Lo;0;L;;;;;N;;;;; +B59B;HANGUL SYLLABLE DDYAEC;Lo;0;L;;;;;N;;;;; +B59C;HANGUL SYLLABLE DDYAEK;Lo;0;L;;;;;N;;;;; +B59D;HANGUL SYLLABLE DDYAET;Lo;0;L;;;;;N;;;;; +B59E;HANGUL SYLLABLE DDYAEP;Lo;0;L;;;;;N;;;;; +B59F;HANGUL SYLLABLE DDYAEH;Lo;0;L;;;;;N;;;;; +B5A0;HANGUL SYLLABLE DDEO;Lo;0;L;;;;;N;;;;; +B5A1;HANGUL SYLLABLE DDEOG;Lo;0;L;;;;;N;;;;; +B5A2;HANGUL SYLLABLE DDEOGG;Lo;0;L;;;;;N;;;;; +B5A3;HANGUL SYLLABLE DDEOGS;Lo;0;L;;;;;N;;;;; +B5A4;HANGUL SYLLABLE DDEON;Lo;0;L;;;;;N;;;;; +B5A5;HANGUL SYLLABLE DDEONI;Lo;0;L;;;;;N;;;;; +B5A6;HANGUL SYLLABLE DDEONH;Lo;0;L;;;;;N;;;;; +B5A7;HANGUL SYLLABLE DDEOD;Lo;0;L;;;;;N;;;;; +B5A8;HANGUL SYLLABLE DDEOL;Lo;0;L;;;;;N;;;;; +B5A9;HANGUL SYLLABLE DDEOLG;Lo;0;L;;;;;N;;;;; +B5AA;HANGUL SYLLABLE DDEOLM;Lo;0;L;;;;;N;;;;; +B5AB;HANGUL SYLLABLE DDEOLB;Lo;0;L;;;;;N;;;;; +B5AC;HANGUL SYLLABLE DDEOLS;Lo;0;L;;;;;N;;;;; +B5AD;HANGUL SYLLABLE DDEOLT;Lo;0;L;;;;;N;;;;; +B5AE;HANGUL SYLLABLE DDEOLP;Lo;0;L;;;;;N;;;;; +B5AF;HANGUL SYLLABLE DDEOLH;Lo;0;L;;;;;N;;;;; +B5B0;HANGUL SYLLABLE DDEOM;Lo;0;L;;;;;N;;;;; +B5B1;HANGUL SYLLABLE DDEOB;Lo;0;L;;;;;N;;;;; +B5B2;HANGUL SYLLABLE DDEOBS;Lo;0;L;;;;;N;;;;; +B5B3;HANGUL SYLLABLE DDEOS;Lo;0;L;;;;;N;;;;; +B5B4;HANGUL SYLLABLE DDEOSS;Lo;0;L;;;;;N;;;;; +B5B5;HANGUL SYLLABLE DDEONG;Lo;0;L;;;;;N;;;;; +B5B6;HANGUL SYLLABLE DDEOJ;Lo;0;L;;;;;N;;;;; +B5B7;HANGUL SYLLABLE DDEOC;Lo;0;L;;;;;N;;;;; +B5B8;HANGUL SYLLABLE DDEOK;Lo;0;L;;;;;N;;;;; +B5B9;HANGUL SYLLABLE DDEOT;Lo;0;L;;;;;N;;;;; +B5BA;HANGUL SYLLABLE DDEOP;Lo;0;L;;;;;N;;;;; +B5BB;HANGUL SYLLABLE DDEOH;Lo;0;L;;;;;N;;;;; +B5BC;HANGUL SYLLABLE DDE;Lo;0;L;;;;;N;;;;; +B5BD;HANGUL SYLLABLE DDEG;Lo;0;L;;;;;N;;;;; +B5BE;HANGUL SYLLABLE DDEGG;Lo;0;L;;;;;N;;;;; +B5BF;HANGUL SYLLABLE DDEGS;Lo;0;L;;;;;N;;;;; +B5C0;HANGUL SYLLABLE DDEN;Lo;0;L;;;;;N;;;;; +B5C1;HANGUL SYLLABLE DDENI;Lo;0;L;;;;;N;;;;; +B5C2;HANGUL SYLLABLE DDENH;Lo;0;L;;;;;N;;;;; +B5C3;HANGUL SYLLABLE DDED;Lo;0;L;;;;;N;;;;; +B5C4;HANGUL SYLLABLE DDEL;Lo;0;L;;;;;N;;;;; +B5C5;HANGUL SYLLABLE DDELG;Lo;0;L;;;;;N;;;;; +B5C6;HANGUL SYLLABLE DDELM;Lo;0;L;;;;;N;;;;; +B5C7;HANGUL SYLLABLE DDELB;Lo;0;L;;;;;N;;;;; +B5C8;HANGUL SYLLABLE DDELS;Lo;0;L;;;;;N;;;;; +B5C9;HANGUL SYLLABLE DDELT;Lo;0;L;;;;;N;;;;; +B5CA;HANGUL SYLLABLE DDELP;Lo;0;L;;;;;N;;;;; +B5CB;HANGUL SYLLABLE DDELH;Lo;0;L;;;;;N;;;;; +B5CC;HANGUL SYLLABLE DDEM;Lo;0;L;;;;;N;;;;; +B5CD;HANGUL SYLLABLE DDEB;Lo;0;L;;;;;N;;;;; +B5CE;HANGUL SYLLABLE DDEBS;Lo;0;L;;;;;N;;;;; +B5CF;HANGUL SYLLABLE DDES;Lo;0;L;;;;;N;;;;; +B5D0;HANGUL SYLLABLE DDESS;Lo;0;L;;;;;N;;;;; +B5D1;HANGUL SYLLABLE DDENG;Lo;0;L;;;;;N;;;;; +B5D2;HANGUL SYLLABLE DDEJ;Lo;0;L;;;;;N;;;;; +B5D3;HANGUL SYLLABLE DDEC;Lo;0;L;;;;;N;;;;; +B5D4;HANGUL SYLLABLE DDEK;Lo;0;L;;;;;N;;;;; +B5D5;HANGUL SYLLABLE DDET;Lo;0;L;;;;;N;;;;; +B5D6;HANGUL SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; +B5D7;HANGUL SYLLABLE DDEH;Lo;0;L;;;;;N;;;;; +B5D8;HANGUL SYLLABLE DDYEO;Lo;0;L;;;;;N;;;;; +B5D9;HANGUL SYLLABLE DDYEOG;Lo;0;L;;;;;N;;;;; +B5DA;HANGUL SYLLABLE DDYEOGG;Lo;0;L;;;;;N;;;;; +B5DB;HANGUL SYLLABLE DDYEOGS;Lo;0;L;;;;;N;;;;; +B5DC;HANGUL SYLLABLE DDYEON;Lo;0;L;;;;;N;;;;; +B5DD;HANGUL SYLLABLE DDYEONI;Lo;0;L;;;;;N;;;;; +B5DE;HANGUL SYLLABLE DDYEONH;Lo;0;L;;;;;N;;;;; +B5DF;HANGUL SYLLABLE DDYEOD;Lo;0;L;;;;;N;;;;; +B5E0;HANGUL SYLLABLE DDYEOL;Lo;0;L;;;;;N;;;;; +B5E1;HANGUL SYLLABLE DDYEOLG;Lo;0;L;;;;;N;;;;; +B5E2;HANGUL SYLLABLE DDYEOLM;Lo;0;L;;;;;N;;;;; +B5E3;HANGUL SYLLABLE DDYEOLB;Lo;0;L;;;;;N;;;;; +B5E4;HANGUL SYLLABLE DDYEOLS;Lo;0;L;;;;;N;;;;; +B5E5;HANGUL SYLLABLE DDYEOLT;Lo;0;L;;;;;N;;;;; +B5E6;HANGUL SYLLABLE DDYEOLP;Lo;0;L;;;;;N;;;;; +B5E7;HANGUL SYLLABLE DDYEOLH;Lo;0;L;;;;;N;;;;; +B5E8;HANGUL SYLLABLE DDYEOM;Lo;0;L;;;;;N;;;;; +B5E9;HANGUL SYLLABLE DDYEOB;Lo;0;L;;;;;N;;;;; +B5EA;HANGUL SYLLABLE DDYEOBS;Lo;0;L;;;;;N;;;;; +B5EB;HANGUL SYLLABLE DDYEOS;Lo;0;L;;;;;N;;;;; +B5EC;HANGUL SYLLABLE DDYEOSS;Lo;0;L;;;;;N;;;;; +B5ED;HANGUL SYLLABLE DDYEONG;Lo;0;L;;;;;N;;;;; +B5EE;HANGUL SYLLABLE DDYEOJ;Lo;0;L;;;;;N;;;;; +B5EF;HANGUL SYLLABLE DDYEOC;Lo;0;L;;;;;N;;;;; +B5F0;HANGUL SYLLABLE DDYEOK;Lo;0;L;;;;;N;;;;; +B5F1;HANGUL SYLLABLE DDYEOT;Lo;0;L;;;;;N;;;;; +B5F2;HANGUL SYLLABLE DDYEOP;Lo;0;L;;;;;N;;;;; +B5F3;HANGUL SYLLABLE DDYEOH;Lo;0;L;;;;;N;;;;; +B5F4;HANGUL SYLLABLE DDYE;Lo;0;L;;;;;N;;;;; +B5F5;HANGUL SYLLABLE DDYEG;Lo;0;L;;;;;N;;;;; +B5F6;HANGUL SYLLABLE DDYEGG;Lo;0;L;;;;;N;;;;; +B5F7;HANGUL SYLLABLE DDYEGS;Lo;0;L;;;;;N;;;;; +B5F8;HANGUL SYLLABLE DDYEN;Lo;0;L;;;;;N;;;;; +B5F9;HANGUL SYLLABLE DDYENI;Lo;0;L;;;;;N;;;;; +B5FA;HANGUL SYLLABLE DDYENH;Lo;0;L;;;;;N;;;;; +B5FB;HANGUL SYLLABLE DDYED;Lo;0;L;;;;;N;;;;; +B5FC;HANGUL SYLLABLE DDYEL;Lo;0;L;;;;;N;;;;; +B5FD;HANGUL SYLLABLE DDYELG;Lo;0;L;;;;;N;;;;; +B5FE;HANGUL SYLLABLE DDYELM;Lo;0;L;;;;;N;;;;; +B5FF;HANGUL SYLLABLE DDYELB;Lo;0;L;;;;;N;;;;; +B600;HANGUL SYLLABLE DDYELS;Lo;0;L;;;;;N;;;;; +B601;HANGUL SYLLABLE DDYELT;Lo;0;L;;;;;N;;;;; +B602;HANGUL SYLLABLE DDYELP;Lo;0;L;;;;;N;;;;; +B603;HANGUL SYLLABLE DDYELH;Lo;0;L;;;;;N;;;;; +B604;HANGUL SYLLABLE DDYEM;Lo;0;L;;;;;N;;;;; +B605;HANGUL SYLLABLE DDYEB;Lo;0;L;;;;;N;;;;; +B606;HANGUL SYLLABLE DDYEBS;Lo;0;L;;;;;N;;;;; +B607;HANGUL SYLLABLE DDYES;Lo;0;L;;;;;N;;;;; +B608;HANGUL SYLLABLE DDYESS;Lo;0;L;;;;;N;;;;; +B609;HANGUL SYLLABLE DDYENG;Lo;0;L;;;;;N;;;;; +B60A;HANGUL SYLLABLE DDYEJ;Lo;0;L;;;;;N;;;;; +B60B;HANGUL SYLLABLE DDYEC;Lo;0;L;;;;;N;;;;; +B60C;HANGUL SYLLABLE DDYEK;Lo;0;L;;;;;N;;;;; +B60D;HANGUL SYLLABLE DDYET;Lo;0;L;;;;;N;;;;; +B60E;HANGUL SYLLABLE DDYEP;Lo;0;L;;;;;N;;;;; +B60F;HANGUL SYLLABLE DDYEH;Lo;0;L;;;;;N;;;;; +B610;HANGUL SYLLABLE DDO;Lo;0;L;;;;;N;;;;; +B611;HANGUL SYLLABLE DDOG;Lo;0;L;;;;;N;;;;; +B612;HANGUL SYLLABLE DDOGG;Lo;0;L;;;;;N;;;;; +B613;HANGUL SYLLABLE DDOGS;Lo;0;L;;;;;N;;;;; +B614;HANGUL SYLLABLE DDON;Lo;0;L;;;;;N;;;;; +B615;HANGUL SYLLABLE DDONI;Lo;0;L;;;;;N;;;;; +B616;HANGUL SYLLABLE DDONH;Lo;0;L;;;;;N;;;;; +B617;HANGUL SYLLABLE DDOD;Lo;0;L;;;;;N;;;;; +B618;HANGUL SYLLABLE DDOL;Lo;0;L;;;;;N;;;;; +B619;HANGUL SYLLABLE DDOLG;Lo;0;L;;;;;N;;;;; +B61A;HANGUL SYLLABLE DDOLM;Lo;0;L;;;;;N;;;;; +B61B;HANGUL SYLLABLE DDOLB;Lo;0;L;;;;;N;;;;; +B61C;HANGUL SYLLABLE DDOLS;Lo;0;L;;;;;N;;;;; +B61D;HANGUL SYLLABLE DDOLT;Lo;0;L;;;;;N;;;;; +B61E;HANGUL SYLLABLE DDOLP;Lo;0;L;;;;;N;;;;; +B61F;HANGUL SYLLABLE DDOLH;Lo;0;L;;;;;N;;;;; +B620;HANGUL SYLLABLE DDOM;Lo;0;L;;;;;N;;;;; +B621;HANGUL SYLLABLE DDOB;Lo;0;L;;;;;N;;;;; +B622;HANGUL SYLLABLE DDOBS;Lo;0;L;;;;;N;;;;; +B623;HANGUL SYLLABLE DDOS;Lo;0;L;;;;;N;;;;; +B624;HANGUL SYLLABLE DDOSS;Lo;0;L;;;;;N;;;;; +B625;HANGUL SYLLABLE DDONG;Lo;0;L;;;;;N;;;;; +B626;HANGUL SYLLABLE DDOJ;Lo;0;L;;;;;N;;;;; +B627;HANGUL SYLLABLE DDOC;Lo;0;L;;;;;N;;;;; +B628;HANGUL SYLLABLE DDOK;Lo;0;L;;;;;N;;;;; +B629;HANGUL SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; +B62A;HANGUL SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; +B62B;HANGUL SYLLABLE DDOH;Lo;0;L;;;;;N;;;;; +B62C;HANGUL SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; +B62D;HANGUL SYLLABLE DDWAG;Lo;0;L;;;;;N;;;;; +B62E;HANGUL SYLLABLE DDWAGG;Lo;0;L;;;;;N;;;;; +B62F;HANGUL SYLLABLE DDWAGS;Lo;0;L;;;;;N;;;;; +B630;HANGUL SYLLABLE DDWAN;Lo;0;L;;;;;N;;;;; +B631;HANGUL SYLLABLE DDWANI;Lo;0;L;;;;;N;;;;; +B632;HANGUL SYLLABLE DDWANH;Lo;0;L;;;;;N;;;;; +B633;HANGUL SYLLABLE DDWAD;Lo;0;L;;;;;N;;;;; +B634;HANGUL SYLLABLE DDWAL;Lo;0;L;;;;;N;;;;; +B635;HANGUL SYLLABLE DDWALG;Lo;0;L;;;;;N;;;;; +B636;HANGUL SYLLABLE DDWALM;Lo;0;L;;;;;N;;;;; +B637;HANGUL SYLLABLE DDWALB;Lo;0;L;;;;;N;;;;; +B638;HANGUL SYLLABLE DDWALS;Lo;0;L;;;;;N;;;;; +B639;HANGUL SYLLABLE DDWALT;Lo;0;L;;;;;N;;;;; +B63A;HANGUL SYLLABLE DDWALP;Lo;0;L;;;;;N;;;;; +B63B;HANGUL SYLLABLE DDWALH;Lo;0;L;;;;;N;;;;; +B63C;HANGUL SYLLABLE DDWAM;Lo;0;L;;;;;N;;;;; +B63D;HANGUL SYLLABLE DDWAB;Lo;0;L;;;;;N;;;;; +B63E;HANGUL SYLLABLE DDWABS;Lo;0;L;;;;;N;;;;; +B63F;HANGUL SYLLABLE DDWAS;Lo;0;L;;;;;N;;;;; +B640;HANGUL SYLLABLE DDWASS;Lo;0;L;;;;;N;;;;; +B641;HANGUL SYLLABLE DDWANG;Lo;0;L;;;;;N;;;;; +B642;HANGUL SYLLABLE DDWAJ;Lo;0;L;;;;;N;;;;; +B643;HANGUL SYLLABLE DDWAC;Lo;0;L;;;;;N;;;;; +B644;HANGUL SYLLABLE DDWAK;Lo;0;L;;;;;N;;;;; +B645;HANGUL SYLLABLE DDWAT;Lo;0;L;;;;;N;;;;; +B646;HANGUL SYLLABLE DDWAP;Lo;0;L;;;;;N;;;;; +B647;HANGUL SYLLABLE DDWAH;Lo;0;L;;;;;N;;;;; +B648;HANGUL SYLLABLE DDWAE;Lo;0;L;;;;;N;;;;; +B649;HANGUL SYLLABLE DDWAEG;Lo;0;L;;;;;N;;;;; +B64A;HANGUL SYLLABLE DDWAEGG;Lo;0;L;;;;;N;;;;; +B64B;HANGUL SYLLABLE DDWAEGS;Lo;0;L;;;;;N;;;;; +B64C;HANGUL SYLLABLE DDWAEN;Lo;0;L;;;;;N;;;;; +B64D;HANGUL SYLLABLE DDWAENI;Lo;0;L;;;;;N;;;;; +B64E;HANGUL SYLLABLE DDWAENH;Lo;0;L;;;;;N;;;;; +B64F;HANGUL SYLLABLE DDWAED;Lo;0;L;;;;;N;;;;; +B650;HANGUL SYLLABLE DDWAEL;Lo;0;L;;;;;N;;;;; +B651;HANGUL SYLLABLE DDWAELG;Lo;0;L;;;;;N;;;;; +B652;HANGUL SYLLABLE DDWAELM;Lo;0;L;;;;;N;;;;; +B653;HANGUL SYLLABLE DDWAELB;Lo;0;L;;;;;N;;;;; +B654;HANGUL SYLLABLE DDWAELS;Lo;0;L;;;;;N;;;;; +B655;HANGUL SYLLABLE DDWAELT;Lo;0;L;;;;;N;;;;; +B656;HANGUL SYLLABLE DDWAELP;Lo;0;L;;;;;N;;;;; +B657;HANGUL SYLLABLE DDWAELH;Lo;0;L;;;;;N;;;;; +B658;HANGUL SYLLABLE DDWAEM;Lo;0;L;;;;;N;;;;; +B659;HANGUL SYLLABLE DDWAEB;Lo;0;L;;;;;N;;;;; +B65A;HANGUL SYLLABLE DDWAEBS;Lo;0;L;;;;;N;;;;; +B65B;HANGUL SYLLABLE DDWAES;Lo;0;L;;;;;N;;;;; +B65C;HANGUL SYLLABLE DDWAESS;Lo;0;L;;;;;N;;;;; +B65D;HANGUL SYLLABLE DDWAENG;Lo;0;L;;;;;N;;;;; +B65E;HANGUL SYLLABLE DDWAEJ;Lo;0;L;;;;;N;;;;; +B65F;HANGUL SYLLABLE DDWAEC;Lo;0;L;;;;;N;;;;; +B660;HANGUL SYLLABLE DDWAEK;Lo;0;L;;;;;N;;;;; +B661;HANGUL SYLLABLE DDWAET;Lo;0;L;;;;;N;;;;; +B662;HANGUL SYLLABLE DDWAEP;Lo;0;L;;;;;N;;;;; +B663;HANGUL SYLLABLE DDWAEH;Lo;0;L;;;;;N;;;;; +B664;HANGUL SYLLABLE DDOE;Lo;0;L;;;;;N;;;;; +B665;HANGUL SYLLABLE DDOEG;Lo;0;L;;;;;N;;;;; +B666;HANGUL SYLLABLE DDOEGG;Lo;0;L;;;;;N;;;;; +B667;HANGUL SYLLABLE DDOEGS;Lo;0;L;;;;;N;;;;; +B668;HANGUL SYLLABLE DDOEN;Lo;0;L;;;;;N;;;;; +B669;HANGUL SYLLABLE DDOENI;Lo;0;L;;;;;N;;;;; +B66A;HANGUL SYLLABLE DDOENH;Lo;0;L;;;;;N;;;;; +B66B;HANGUL SYLLABLE DDOED;Lo;0;L;;;;;N;;;;; +B66C;HANGUL SYLLABLE DDOEL;Lo;0;L;;;;;N;;;;; +B66D;HANGUL SYLLABLE DDOELG;Lo;0;L;;;;;N;;;;; +B66E;HANGUL SYLLABLE DDOELM;Lo;0;L;;;;;N;;;;; +B66F;HANGUL SYLLABLE DDOELB;Lo;0;L;;;;;N;;;;; +B670;HANGUL SYLLABLE DDOELS;Lo;0;L;;;;;N;;;;; +B671;HANGUL SYLLABLE DDOELT;Lo;0;L;;;;;N;;;;; +B672;HANGUL SYLLABLE DDOELP;Lo;0;L;;;;;N;;;;; +B673;HANGUL SYLLABLE DDOELH;Lo;0;L;;;;;N;;;;; +B674;HANGUL SYLLABLE DDOEM;Lo;0;L;;;;;N;;;;; +B675;HANGUL SYLLABLE DDOEB;Lo;0;L;;;;;N;;;;; +B676;HANGUL SYLLABLE DDOEBS;Lo;0;L;;;;;N;;;;; +B677;HANGUL SYLLABLE DDOES;Lo;0;L;;;;;N;;;;; +B678;HANGUL SYLLABLE DDOESS;Lo;0;L;;;;;N;;;;; +B679;HANGUL SYLLABLE DDOENG;Lo;0;L;;;;;N;;;;; +B67A;HANGUL SYLLABLE DDOEJ;Lo;0;L;;;;;N;;;;; +B67B;HANGUL SYLLABLE DDOEC;Lo;0;L;;;;;N;;;;; +B67C;HANGUL SYLLABLE DDOEK;Lo;0;L;;;;;N;;;;; +B67D;HANGUL SYLLABLE DDOET;Lo;0;L;;;;;N;;;;; +B67E;HANGUL SYLLABLE DDOEP;Lo;0;L;;;;;N;;;;; +B67F;HANGUL SYLLABLE DDOEH;Lo;0;L;;;;;N;;;;; +B680;HANGUL SYLLABLE DDYO;Lo;0;L;;;;;N;;;;; +B681;HANGUL SYLLABLE DDYOG;Lo;0;L;;;;;N;;;;; +B682;HANGUL SYLLABLE DDYOGG;Lo;0;L;;;;;N;;;;; +B683;HANGUL SYLLABLE DDYOGS;Lo;0;L;;;;;N;;;;; +B684;HANGUL SYLLABLE DDYON;Lo;0;L;;;;;N;;;;; +B685;HANGUL SYLLABLE DDYONI;Lo;0;L;;;;;N;;;;; +B686;HANGUL SYLLABLE DDYONH;Lo;0;L;;;;;N;;;;; +B687;HANGUL SYLLABLE DDYOD;Lo;0;L;;;;;N;;;;; +B688;HANGUL SYLLABLE DDYOL;Lo;0;L;;;;;N;;;;; +B689;HANGUL SYLLABLE DDYOLG;Lo;0;L;;;;;N;;;;; +B68A;HANGUL SYLLABLE DDYOLM;Lo;0;L;;;;;N;;;;; +B68B;HANGUL SYLLABLE DDYOLB;Lo;0;L;;;;;N;;;;; +B68C;HANGUL SYLLABLE DDYOLS;Lo;0;L;;;;;N;;;;; +B68D;HANGUL SYLLABLE DDYOLT;Lo;0;L;;;;;N;;;;; +B68E;HANGUL SYLLABLE DDYOLP;Lo;0;L;;;;;N;;;;; +B68F;HANGUL SYLLABLE DDYOLH;Lo;0;L;;;;;N;;;;; +B690;HANGUL SYLLABLE DDYOM;Lo;0;L;;;;;N;;;;; +B691;HANGUL SYLLABLE DDYOB;Lo;0;L;;;;;N;;;;; +B692;HANGUL SYLLABLE DDYOBS;Lo;0;L;;;;;N;;;;; +B693;HANGUL SYLLABLE DDYOS;Lo;0;L;;;;;N;;;;; +B694;HANGUL SYLLABLE DDYOSS;Lo;0;L;;;;;N;;;;; +B695;HANGUL SYLLABLE DDYONG;Lo;0;L;;;;;N;;;;; +B696;HANGUL SYLLABLE DDYOJ;Lo;0;L;;;;;N;;;;; +B697;HANGUL SYLLABLE DDYOC;Lo;0;L;;;;;N;;;;; +B698;HANGUL SYLLABLE DDYOK;Lo;0;L;;;;;N;;;;; +B699;HANGUL SYLLABLE DDYOT;Lo;0;L;;;;;N;;;;; +B69A;HANGUL SYLLABLE DDYOP;Lo;0;L;;;;;N;;;;; +B69B;HANGUL SYLLABLE DDYOH;Lo;0;L;;;;;N;;;;; +B69C;HANGUL SYLLABLE DDU;Lo;0;L;;;;;N;;;;; +B69D;HANGUL SYLLABLE DDUG;Lo;0;L;;;;;N;;;;; +B69E;HANGUL SYLLABLE DDUGG;Lo;0;L;;;;;N;;;;; +B69F;HANGUL SYLLABLE DDUGS;Lo;0;L;;;;;N;;;;; +B6A0;HANGUL SYLLABLE DDUN;Lo;0;L;;;;;N;;;;; +B6A1;HANGUL SYLLABLE DDUNI;Lo;0;L;;;;;N;;;;; +B6A2;HANGUL SYLLABLE DDUNH;Lo;0;L;;;;;N;;;;; +B6A3;HANGUL SYLLABLE DDUD;Lo;0;L;;;;;N;;;;; +B6A4;HANGUL SYLLABLE DDUL;Lo;0;L;;;;;N;;;;; +B6A5;HANGUL SYLLABLE DDULG;Lo;0;L;;;;;N;;;;; +B6A6;HANGUL SYLLABLE DDULM;Lo;0;L;;;;;N;;;;; +B6A7;HANGUL SYLLABLE DDULB;Lo;0;L;;;;;N;;;;; +B6A8;HANGUL SYLLABLE DDULS;Lo;0;L;;;;;N;;;;; +B6A9;HANGUL SYLLABLE DDULT;Lo;0;L;;;;;N;;;;; +B6AA;HANGUL SYLLABLE DDULP;Lo;0;L;;;;;N;;;;; +B6AB;HANGUL SYLLABLE DDULH;Lo;0;L;;;;;N;;;;; +B6AC;HANGUL SYLLABLE DDUM;Lo;0;L;;;;;N;;;;; +B6AD;HANGUL SYLLABLE DDUB;Lo;0;L;;;;;N;;;;; +B6AE;HANGUL SYLLABLE DDUBS;Lo;0;L;;;;;N;;;;; +B6AF;HANGUL SYLLABLE DDUS;Lo;0;L;;;;;N;;;;; +B6B0;HANGUL SYLLABLE DDUSS;Lo;0;L;;;;;N;;;;; +B6B1;HANGUL SYLLABLE DDUNG;Lo;0;L;;;;;N;;;;; +B6B2;HANGUL SYLLABLE DDUJ;Lo;0;L;;;;;N;;;;; +B6B3;HANGUL SYLLABLE DDUC;Lo;0;L;;;;;N;;;;; +B6B4;HANGUL SYLLABLE DDUK;Lo;0;L;;;;;N;;;;; +B6B5;HANGUL SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; +B6B6;HANGUL SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; +B6B7;HANGUL SYLLABLE DDUH;Lo;0;L;;;;;N;;;;; +B6B8;HANGUL SYLLABLE DDWEO;Lo;0;L;;;;;N;;;;; +B6B9;HANGUL SYLLABLE DDWEOG;Lo;0;L;;;;;N;;;;; +B6BA;HANGUL SYLLABLE DDWEOGG;Lo;0;L;;;;;N;;;;; +B6BB;HANGUL SYLLABLE DDWEOGS;Lo;0;L;;;;;N;;;;; +B6BC;HANGUL SYLLABLE DDWEON;Lo;0;L;;;;;N;;;;; +B6BD;HANGUL SYLLABLE DDWEONI;Lo;0;L;;;;;N;;;;; +B6BE;HANGUL SYLLABLE DDWEONH;Lo;0;L;;;;;N;;;;; +B6BF;HANGUL SYLLABLE DDWEOD;Lo;0;L;;;;;N;;;;; +B6C0;HANGUL SYLLABLE DDWEOL;Lo;0;L;;;;;N;;;;; +B6C1;HANGUL SYLLABLE DDWEOLG;Lo;0;L;;;;;N;;;;; +B6C2;HANGUL SYLLABLE DDWEOLM;Lo;0;L;;;;;N;;;;; +B6C3;HANGUL SYLLABLE DDWEOLB;Lo;0;L;;;;;N;;;;; +B6C4;HANGUL SYLLABLE DDWEOLS;Lo;0;L;;;;;N;;;;; +B6C5;HANGUL SYLLABLE DDWEOLT;Lo;0;L;;;;;N;;;;; +B6C6;HANGUL SYLLABLE DDWEOLP;Lo;0;L;;;;;N;;;;; +B6C7;HANGUL SYLLABLE DDWEOLH;Lo;0;L;;;;;N;;;;; +B6C8;HANGUL SYLLABLE DDWEOM;Lo;0;L;;;;;N;;;;; +B6C9;HANGUL SYLLABLE DDWEOB;Lo;0;L;;;;;N;;;;; +B6CA;HANGUL SYLLABLE DDWEOBS;Lo;0;L;;;;;N;;;;; +B6CB;HANGUL SYLLABLE DDWEOS;Lo;0;L;;;;;N;;;;; +B6CC;HANGUL SYLLABLE DDWEOSS;Lo;0;L;;;;;N;;;;; +B6CD;HANGUL SYLLABLE DDWEONG;Lo;0;L;;;;;N;;;;; +B6CE;HANGUL SYLLABLE DDWEOJ;Lo;0;L;;;;;N;;;;; +B6CF;HANGUL SYLLABLE DDWEOC;Lo;0;L;;;;;N;;;;; +B6D0;HANGUL SYLLABLE DDWEOK;Lo;0;L;;;;;N;;;;; +B6D1;HANGUL SYLLABLE DDWEOT;Lo;0;L;;;;;N;;;;; +B6D2;HANGUL SYLLABLE DDWEOP;Lo;0;L;;;;;N;;;;; +B6D3;HANGUL SYLLABLE DDWEOH;Lo;0;L;;;;;N;;;;; +B6D4;HANGUL SYLLABLE DDWE;Lo;0;L;;;;;N;;;;; +B6D5;HANGUL SYLLABLE DDWEG;Lo;0;L;;;;;N;;;;; +B6D6;HANGUL SYLLABLE DDWEGG;Lo;0;L;;;;;N;;;;; +B6D7;HANGUL SYLLABLE DDWEGS;Lo;0;L;;;;;N;;;;; +B6D8;HANGUL SYLLABLE DDWEN;Lo;0;L;;;;;N;;;;; +B6D9;HANGUL SYLLABLE DDWENI;Lo;0;L;;;;;N;;;;; +B6DA;HANGUL SYLLABLE DDWENH;Lo;0;L;;;;;N;;;;; +B6DB;HANGUL SYLLABLE DDWED;Lo;0;L;;;;;N;;;;; +B6DC;HANGUL SYLLABLE DDWEL;Lo;0;L;;;;;N;;;;; +B6DD;HANGUL SYLLABLE DDWELG;Lo;0;L;;;;;N;;;;; +B6DE;HANGUL SYLLABLE DDWELM;Lo;0;L;;;;;N;;;;; +B6DF;HANGUL SYLLABLE DDWELB;Lo;0;L;;;;;N;;;;; +B6E0;HANGUL SYLLABLE DDWELS;Lo;0;L;;;;;N;;;;; +B6E1;HANGUL SYLLABLE DDWELT;Lo;0;L;;;;;N;;;;; +B6E2;HANGUL SYLLABLE DDWELP;Lo;0;L;;;;;N;;;;; +B6E3;HANGUL SYLLABLE DDWELH;Lo;0;L;;;;;N;;;;; +B6E4;HANGUL SYLLABLE DDWEM;Lo;0;L;;;;;N;;;;; +B6E5;HANGUL SYLLABLE DDWEB;Lo;0;L;;;;;N;;;;; +B6E6;HANGUL SYLLABLE DDWEBS;Lo;0;L;;;;;N;;;;; +B6E7;HANGUL SYLLABLE DDWES;Lo;0;L;;;;;N;;;;; +B6E8;HANGUL SYLLABLE DDWESS;Lo;0;L;;;;;N;;;;; +B6E9;HANGUL SYLLABLE DDWENG;Lo;0;L;;;;;N;;;;; +B6EA;HANGUL SYLLABLE DDWEJ;Lo;0;L;;;;;N;;;;; +B6EB;HANGUL SYLLABLE DDWEC;Lo;0;L;;;;;N;;;;; +B6EC;HANGUL SYLLABLE DDWEK;Lo;0;L;;;;;N;;;;; +B6ED;HANGUL SYLLABLE DDWET;Lo;0;L;;;;;N;;;;; +B6EE;HANGUL SYLLABLE DDWEP;Lo;0;L;;;;;N;;;;; +B6EF;HANGUL SYLLABLE DDWEH;Lo;0;L;;;;;N;;;;; +B6F0;HANGUL SYLLABLE DDWI;Lo;0;L;;;;;N;;;;; +B6F1;HANGUL SYLLABLE DDWIG;Lo;0;L;;;;;N;;;;; +B6F2;HANGUL SYLLABLE DDWIGG;Lo;0;L;;;;;N;;;;; +B6F3;HANGUL SYLLABLE DDWIGS;Lo;0;L;;;;;N;;;;; +B6F4;HANGUL SYLLABLE DDWIN;Lo;0;L;;;;;N;;;;; +B6F5;HANGUL SYLLABLE DDWINI;Lo;0;L;;;;;N;;;;; +B6F6;HANGUL SYLLABLE DDWINH;Lo;0;L;;;;;N;;;;; +B6F7;HANGUL SYLLABLE DDWID;Lo;0;L;;;;;N;;;;; +B6F8;HANGUL SYLLABLE DDWIL;Lo;0;L;;;;;N;;;;; +B6F9;HANGUL SYLLABLE DDWILG;Lo;0;L;;;;;N;;;;; +B6FA;HANGUL SYLLABLE DDWILM;Lo;0;L;;;;;N;;;;; +B6FB;HANGUL SYLLABLE DDWILB;Lo;0;L;;;;;N;;;;; +B6FC;HANGUL SYLLABLE DDWILS;Lo;0;L;;;;;N;;;;; +B6FD;HANGUL SYLLABLE DDWILT;Lo;0;L;;;;;N;;;;; +B6FE;HANGUL SYLLABLE DDWILP;Lo;0;L;;;;;N;;;;; +B6FF;HANGUL SYLLABLE DDWILH;Lo;0;L;;;;;N;;;;; +B700;HANGUL SYLLABLE DDWIM;Lo;0;L;;;;;N;;;;; +B701;HANGUL SYLLABLE DDWIB;Lo;0;L;;;;;N;;;;; +B702;HANGUL SYLLABLE DDWIBS;Lo;0;L;;;;;N;;;;; +B703;HANGUL SYLLABLE DDWIS;Lo;0;L;;;;;N;;;;; +B704;HANGUL SYLLABLE DDWISS;Lo;0;L;;;;;N;;;;; +B705;HANGUL SYLLABLE DDWING;Lo;0;L;;;;;N;;;;; +B706;HANGUL SYLLABLE DDWIJ;Lo;0;L;;;;;N;;;;; +B707;HANGUL SYLLABLE DDWIC;Lo;0;L;;;;;N;;;;; +B708;HANGUL SYLLABLE DDWIK;Lo;0;L;;;;;N;;;;; +B709;HANGUL SYLLABLE DDWIT;Lo;0;L;;;;;N;;;;; +B70A;HANGUL SYLLABLE DDWIP;Lo;0;L;;;;;N;;;;; +B70B;HANGUL SYLLABLE DDWIH;Lo;0;L;;;;;N;;;;; +B70C;HANGUL SYLLABLE DDYU;Lo;0;L;;;;;N;;;;; +B70D;HANGUL SYLLABLE DDYUG;Lo;0;L;;;;;N;;;;; +B70E;HANGUL SYLLABLE DDYUGG;Lo;0;L;;;;;N;;;;; +B70F;HANGUL SYLLABLE DDYUGS;Lo;0;L;;;;;N;;;;; +B710;HANGUL SYLLABLE DDYUN;Lo;0;L;;;;;N;;;;; +B711;HANGUL SYLLABLE DDYUNI;Lo;0;L;;;;;N;;;;; +B712;HANGUL SYLLABLE DDYUNH;Lo;0;L;;;;;N;;;;; +B713;HANGUL SYLLABLE DDYUD;Lo;0;L;;;;;N;;;;; +B714;HANGUL SYLLABLE DDYUL;Lo;0;L;;;;;N;;;;; +B715;HANGUL SYLLABLE DDYULG;Lo;0;L;;;;;N;;;;; +B716;HANGUL SYLLABLE DDYULM;Lo;0;L;;;;;N;;;;; +B717;HANGUL SYLLABLE DDYULB;Lo;0;L;;;;;N;;;;; +B718;HANGUL SYLLABLE DDYULS;Lo;0;L;;;;;N;;;;; +B719;HANGUL SYLLABLE DDYULT;Lo;0;L;;;;;N;;;;; +B71A;HANGUL SYLLABLE DDYULP;Lo;0;L;;;;;N;;;;; +B71B;HANGUL SYLLABLE DDYULH;Lo;0;L;;;;;N;;;;; +B71C;HANGUL SYLLABLE DDYUM;Lo;0;L;;;;;N;;;;; +B71D;HANGUL SYLLABLE DDYUB;Lo;0;L;;;;;N;;;;; +B71E;HANGUL SYLLABLE DDYUBS;Lo;0;L;;;;;N;;;;; +B71F;HANGUL SYLLABLE DDYUS;Lo;0;L;;;;;N;;;;; +B720;HANGUL SYLLABLE DDYUSS;Lo;0;L;;;;;N;;;;; +B721;HANGUL SYLLABLE DDYUNG;Lo;0;L;;;;;N;;;;; +B722;HANGUL SYLLABLE DDYUJ;Lo;0;L;;;;;N;;;;; +B723;HANGUL SYLLABLE DDYUC;Lo;0;L;;;;;N;;;;; +B724;HANGUL SYLLABLE DDYUK;Lo;0;L;;;;;N;;;;; +B725;HANGUL SYLLABLE DDYUT;Lo;0;L;;;;;N;;;;; +B726;HANGUL SYLLABLE DDYUP;Lo;0;L;;;;;N;;;;; +B727;HANGUL SYLLABLE DDYUH;Lo;0;L;;;;;N;;;;; +B728;HANGUL SYLLABLE DDEU;Lo;0;L;;;;;N;;;;; +B729;HANGUL SYLLABLE DDEUG;Lo;0;L;;;;;N;;;;; +B72A;HANGUL SYLLABLE DDEUGG;Lo;0;L;;;;;N;;;;; +B72B;HANGUL SYLLABLE DDEUGS;Lo;0;L;;;;;N;;;;; +B72C;HANGUL SYLLABLE DDEUN;Lo;0;L;;;;;N;;;;; +B72D;HANGUL SYLLABLE DDEUNI;Lo;0;L;;;;;N;;;;; +B72E;HANGUL SYLLABLE DDEUNH;Lo;0;L;;;;;N;;;;; +B72F;HANGUL SYLLABLE DDEUD;Lo;0;L;;;;;N;;;;; +B730;HANGUL SYLLABLE DDEUL;Lo;0;L;;;;;N;;;;; +B731;HANGUL SYLLABLE DDEULG;Lo;0;L;;;;;N;;;;; +B732;HANGUL SYLLABLE DDEULM;Lo;0;L;;;;;N;;;;; +B733;HANGUL SYLLABLE DDEULB;Lo;0;L;;;;;N;;;;; +B734;HANGUL SYLLABLE DDEULS;Lo;0;L;;;;;N;;;;; +B735;HANGUL SYLLABLE DDEULT;Lo;0;L;;;;;N;;;;; +B736;HANGUL SYLLABLE DDEULP;Lo;0;L;;;;;N;;;;; +B737;HANGUL SYLLABLE DDEULH;Lo;0;L;;;;;N;;;;; +B738;HANGUL SYLLABLE DDEUM;Lo;0;L;;;;;N;;;;; +B739;HANGUL SYLLABLE DDEUB;Lo;0;L;;;;;N;;;;; +B73A;HANGUL SYLLABLE DDEUBS;Lo;0;L;;;;;N;;;;; +B73B;HANGUL SYLLABLE DDEUS;Lo;0;L;;;;;N;;;;; +B73C;HANGUL SYLLABLE DDEUSS;Lo;0;L;;;;;N;;;;; +B73D;HANGUL SYLLABLE DDEUNG;Lo;0;L;;;;;N;;;;; +B73E;HANGUL SYLLABLE DDEUJ;Lo;0;L;;;;;N;;;;; +B73F;HANGUL SYLLABLE DDEUC;Lo;0;L;;;;;N;;;;; +B740;HANGUL SYLLABLE DDEUK;Lo;0;L;;;;;N;;;;; +B741;HANGUL SYLLABLE DDEUT;Lo;0;L;;;;;N;;;;; +B742;HANGUL SYLLABLE DDEUP;Lo;0;L;;;;;N;;;;; +B743;HANGUL SYLLABLE DDEUH;Lo;0;L;;;;;N;;;;; +B744;HANGUL SYLLABLE DDYI;Lo;0;L;;;;;N;;;;; +B745;HANGUL SYLLABLE DDYIG;Lo;0;L;;;;;N;;;;; +B746;HANGUL SYLLABLE DDYIGG;Lo;0;L;;;;;N;;;;; +B747;HANGUL SYLLABLE DDYIGS;Lo;0;L;;;;;N;;;;; +B748;HANGUL SYLLABLE DDYIN;Lo;0;L;;;;;N;;;;; +B749;HANGUL SYLLABLE DDYINI;Lo;0;L;;;;;N;;;;; +B74A;HANGUL SYLLABLE DDYINH;Lo;0;L;;;;;N;;;;; +B74B;HANGUL SYLLABLE DDYID;Lo;0;L;;;;;N;;;;; +B74C;HANGUL SYLLABLE DDYIL;Lo;0;L;;;;;N;;;;; +B74D;HANGUL SYLLABLE DDYILG;Lo;0;L;;;;;N;;;;; +B74E;HANGUL SYLLABLE DDYILM;Lo;0;L;;;;;N;;;;; +B74F;HANGUL SYLLABLE DDYILB;Lo;0;L;;;;;N;;;;; +B750;HANGUL SYLLABLE DDYILS;Lo;0;L;;;;;N;;;;; +B751;HANGUL SYLLABLE DDYILT;Lo;0;L;;;;;N;;;;; +B752;HANGUL SYLLABLE DDYILP;Lo;0;L;;;;;N;;;;; +B753;HANGUL SYLLABLE DDYILH;Lo;0;L;;;;;N;;;;; +B754;HANGUL SYLLABLE DDYIM;Lo;0;L;;;;;N;;;;; +B755;HANGUL SYLLABLE DDYIB;Lo;0;L;;;;;N;;;;; +B756;HANGUL SYLLABLE DDYIBS;Lo;0;L;;;;;N;;;;; +B757;HANGUL SYLLABLE DDYIS;Lo;0;L;;;;;N;;;;; +B758;HANGUL SYLLABLE DDYISS;Lo;0;L;;;;;N;;;;; +B759;HANGUL SYLLABLE DDYING;Lo;0;L;;;;;N;;;;; +B75A;HANGUL SYLLABLE DDYIJ;Lo;0;L;;;;;N;;;;; +B75B;HANGUL SYLLABLE DDYIC;Lo;0;L;;;;;N;;;;; +B75C;HANGUL SYLLABLE DDYIK;Lo;0;L;;;;;N;;;;; +B75D;HANGUL SYLLABLE DDYIT;Lo;0;L;;;;;N;;;;; +B75E;HANGUL SYLLABLE DDYIP;Lo;0;L;;;;;N;;;;; +B75F;HANGUL SYLLABLE DDYIH;Lo;0;L;;;;;N;;;;; +B760;HANGUL SYLLABLE DDI;Lo;0;L;;;;;N;;;;; +B761;HANGUL SYLLABLE DDIG;Lo;0;L;;;;;N;;;;; +B762;HANGUL SYLLABLE DDIGG;Lo;0;L;;;;;N;;;;; +B763;HANGUL SYLLABLE DDIGS;Lo;0;L;;;;;N;;;;; +B764;HANGUL SYLLABLE DDIN;Lo;0;L;;;;;N;;;;; +B765;HANGUL SYLLABLE DDINI;Lo;0;L;;;;;N;;;;; +B766;HANGUL SYLLABLE DDINH;Lo;0;L;;;;;N;;;;; +B767;HANGUL SYLLABLE DDID;Lo;0;L;;;;;N;;;;; +B768;HANGUL SYLLABLE DDIL;Lo;0;L;;;;;N;;;;; +B769;HANGUL SYLLABLE DDILG;Lo;0;L;;;;;N;;;;; +B76A;HANGUL SYLLABLE DDILM;Lo;0;L;;;;;N;;;;; +B76B;HANGUL SYLLABLE DDILB;Lo;0;L;;;;;N;;;;; +B76C;HANGUL SYLLABLE DDILS;Lo;0;L;;;;;N;;;;; +B76D;HANGUL SYLLABLE DDILT;Lo;0;L;;;;;N;;;;; +B76E;HANGUL SYLLABLE DDILP;Lo;0;L;;;;;N;;;;; +B76F;HANGUL SYLLABLE DDILH;Lo;0;L;;;;;N;;;;; +B770;HANGUL SYLLABLE DDIM;Lo;0;L;;;;;N;;;;; +B771;HANGUL SYLLABLE DDIB;Lo;0;L;;;;;N;;;;; +B772;HANGUL SYLLABLE DDIBS;Lo;0;L;;;;;N;;;;; +B773;HANGUL SYLLABLE DDIS;Lo;0;L;;;;;N;;;;; +B774;HANGUL SYLLABLE DDISS;Lo;0;L;;;;;N;;;;; +B775;HANGUL SYLLABLE DDING;Lo;0;L;;;;;N;;;;; +B776;HANGUL SYLLABLE DDIJ;Lo;0;L;;;;;N;;;;; +B777;HANGUL SYLLABLE DDIC;Lo;0;L;;;;;N;;;;; +B778;HANGUL SYLLABLE DDIK;Lo;0;L;;;;;N;;;;; +B779;HANGUL SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; +B77A;HANGUL SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; +B77B;HANGUL SYLLABLE DDIH;Lo;0;L;;;;;N;;;;; +B77C;HANGUL SYLLABLE RA;Lo;0;L;;;;;N;;;;; +B77D;HANGUL SYLLABLE RAG;Lo;0;L;;;;;N;;;;; +B77E;HANGUL SYLLABLE RAGG;Lo;0;L;;;;;N;;;;; +B77F;HANGUL SYLLABLE RAGS;Lo;0;L;;;;;N;;;;; +B780;HANGUL SYLLABLE RAN;Lo;0;L;;;;;N;;;;; +B781;HANGUL SYLLABLE RANI;Lo;0;L;;;;;N;;;;; +B782;HANGUL SYLLABLE RANH;Lo;0;L;;;;;N;;;;; +B783;HANGUL SYLLABLE RAD;Lo;0;L;;;;;N;;;;; +B784;HANGUL SYLLABLE RAL;Lo;0;L;;;;;N;;;;; +B785;HANGUL SYLLABLE RALG;Lo;0;L;;;;;N;;;;; +B786;HANGUL SYLLABLE RALM;Lo;0;L;;;;;N;;;;; +B787;HANGUL SYLLABLE RALB;Lo;0;L;;;;;N;;;;; +B788;HANGUL SYLLABLE RALS;Lo;0;L;;;;;N;;;;; +B789;HANGUL SYLLABLE RALT;Lo;0;L;;;;;N;;;;; +B78A;HANGUL SYLLABLE RALP;Lo;0;L;;;;;N;;;;; +B78B;HANGUL SYLLABLE RALH;Lo;0;L;;;;;N;;;;; +B78C;HANGUL SYLLABLE RAM;Lo;0;L;;;;;N;;;;; +B78D;HANGUL SYLLABLE RAB;Lo;0;L;;;;;N;;;;; +B78E;HANGUL SYLLABLE RABS;Lo;0;L;;;;;N;;;;; +B78F;HANGUL SYLLABLE RAS;Lo;0;L;;;;;N;;;;; +B790;HANGUL SYLLABLE RASS;Lo;0;L;;;;;N;;;;; +B791;HANGUL SYLLABLE RANG;Lo;0;L;;;;;N;;;;; +B792;HANGUL SYLLABLE RAJ;Lo;0;L;;;;;N;;;;; +B793;HANGUL SYLLABLE RAC;Lo;0;L;;;;;N;;;;; +B794;HANGUL SYLLABLE RAK;Lo;0;L;;;;;N;;;;; +B795;HANGUL SYLLABLE RAT;Lo;0;L;;;;;N;;;;; +B796;HANGUL SYLLABLE RAP;Lo;0;L;;;;;N;;;;; +B797;HANGUL SYLLABLE RAH;Lo;0;L;;;;;N;;;;; +B798;HANGUL SYLLABLE RAE;Lo;0;L;;;;;N;;;;; +B799;HANGUL SYLLABLE RAEG;Lo;0;L;;;;;N;;;;; +B79A;HANGUL SYLLABLE RAEGG;Lo;0;L;;;;;N;;;;; +B79B;HANGUL SYLLABLE RAEGS;Lo;0;L;;;;;N;;;;; +B79C;HANGUL SYLLABLE RAEN;Lo;0;L;;;;;N;;;;; +B79D;HANGUL SYLLABLE RAENI;Lo;0;L;;;;;N;;;;; +B79E;HANGUL SYLLABLE RAENH;Lo;0;L;;;;;N;;;;; +B79F;HANGUL SYLLABLE RAED;Lo;0;L;;;;;N;;;;; +B7A0;HANGUL SYLLABLE RAEL;Lo;0;L;;;;;N;;;;; +B7A1;HANGUL SYLLABLE RAELG;Lo;0;L;;;;;N;;;;; +B7A2;HANGUL SYLLABLE RAELM;Lo;0;L;;;;;N;;;;; +B7A3;HANGUL SYLLABLE RAELB;Lo;0;L;;;;;N;;;;; +B7A4;HANGUL SYLLABLE RAELS;Lo;0;L;;;;;N;;;;; +B7A5;HANGUL SYLLABLE RAELT;Lo;0;L;;;;;N;;;;; +B7A6;HANGUL SYLLABLE RAELP;Lo;0;L;;;;;N;;;;; +B7A7;HANGUL SYLLABLE RAELH;Lo;0;L;;;;;N;;;;; +B7A8;HANGUL SYLLABLE RAEM;Lo;0;L;;;;;N;;;;; +B7A9;HANGUL SYLLABLE RAEB;Lo;0;L;;;;;N;;;;; +B7AA;HANGUL SYLLABLE RAEBS;Lo;0;L;;;;;N;;;;; +B7AB;HANGUL SYLLABLE RAES;Lo;0;L;;;;;N;;;;; +B7AC;HANGUL SYLLABLE RAESS;Lo;0;L;;;;;N;;;;; +B7AD;HANGUL SYLLABLE RAENG;Lo;0;L;;;;;N;;;;; +B7AE;HANGUL SYLLABLE RAEJ;Lo;0;L;;;;;N;;;;; +B7AF;HANGUL SYLLABLE RAEC;Lo;0;L;;;;;N;;;;; +B7B0;HANGUL SYLLABLE RAEK;Lo;0;L;;;;;N;;;;; +B7B1;HANGUL SYLLABLE RAET;Lo;0;L;;;;;N;;;;; +B7B2;HANGUL SYLLABLE RAEP;Lo;0;L;;;;;N;;;;; +B7B3;HANGUL SYLLABLE RAEH;Lo;0;L;;;;;N;;;;; +B7B4;HANGUL SYLLABLE RYA;Lo;0;L;;;;;N;;;;; +B7B5;HANGUL SYLLABLE RYAG;Lo;0;L;;;;;N;;;;; +B7B6;HANGUL SYLLABLE RYAGG;Lo;0;L;;;;;N;;;;; +B7B7;HANGUL SYLLABLE RYAGS;Lo;0;L;;;;;N;;;;; +B7B8;HANGUL SYLLABLE RYAN;Lo;0;L;;;;;N;;;;; +B7B9;HANGUL SYLLABLE RYANI;Lo;0;L;;;;;N;;;;; +B7BA;HANGUL SYLLABLE RYANH;Lo;0;L;;;;;N;;;;; +B7BB;HANGUL SYLLABLE RYAD;Lo;0;L;;;;;N;;;;; +B7BC;HANGUL SYLLABLE RYAL;Lo;0;L;;;;;N;;;;; +B7BD;HANGUL SYLLABLE RYALG;Lo;0;L;;;;;N;;;;; +B7BE;HANGUL SYLLABLE RYALM;Lo;0;L;;;;;N;;;;; +B7BF;HANGUL SYLLABLE RYALB;Lo;0;L;;;;;N;;;;; +B7C0;HANGUL SYLLABLE RYALS;Lo;0;L;;;;;N;;;;; +B7C1;HANGUL SYLLABLE RYALT;Lo;0;L;;;;;N;;;;; +B7C2;HANGUL SYLLABLE RYALP;Lo;0;L;;;;;N;;;;; +B7C3;HANGUL SYLLABLE RYALH;Lo;0;L;;;;;N;;;;; +B7C4;HANGUL SYLLABLE RYAM;Lo;0;L;;;;;N;;;;; +B7C5;HANGUL SYLLABLE RYAB;Lo;0;L;;;;;N;;;;; +B7C6;HANGUL SYLLABLE RYABS;Lo;0;L;;;;;N;;;;; +B7C7;HANGUL SYLLABLE RYAS;Lo;0;L;;;;;N;;;;; +B7C8;HANGUL SYLLABLE RYASS;Lo;0;L;;;;;N;;;;; +B7C9;HANGUL SYLLABLE RYANG;Lo;0;L;;;;;N;;;;; +B7CA;HANGUL SYLLABLE RYAJ;Lo;0;L;;;;;N;;;;; +B7CB;HANGUL SYLLABLE RYAC;Lo;0;L;;;;;N;;;;; +B7CC;HANGUL SYLLABLE RYAK;Lo;0;L;;;;;N;;;;; +B7CD;HANGUL SYLLABLE RYAT;Lo;0;L;;;;;N;;;;; +B7CE;HANGUL SYLLABLE RYAP;Lo;0;L;;;;;N;;;;; +B7CF;HANGUL SYLLABLE RYAH;Lo;0;L;;;;;N;;;;; +B7D0;HANGUL SYLLABLE RYAE;Lo;0;L;;;;;N;;;;; +B7D1;HANGUL SYLLABLE RYAEG;Lo;0;L;;;;;N;;;;; +B7D2;HANGUL SYLLABLE RYAEGG;Lo;0;L;;;;;N;;;;; +B7D3;HANGUL SYLLABLE RYAEGS;Lo;0;L;;;;;N;;;;; +B7D4;HANGUL SYLLABLE RYAEN;Lo;0;L;;;;;N;;;;; +B7D5;HANGUL SYLLABLE RYAENI;Lo;0;L;;;;;N;;;;; +B7D6;HANGUL SYLLABLE RYAENH;Lo;0;L;;;;;N;;;;; +B7D7;HANGUL SYLLABLE RYAED;Lo;0;L;;;;;N;;;;; +B7D8;HANGUL SYLLABLE RYAEL;Lo;0;L;;;;;N;;;;; +B7D9;HANGUL SYLLABLE RYAELG;Lo;0;L;;;;;N;;;;; +B7DA;HANGUL SYLLABLE RYAELM;Lo;0;L;;;;;N;;;;; +B7DB;HANGUL SYLLABLE RYAELB;Lo;0;L;;;;;N;;;;; +B7DC;HANGUL SYLLABLE RYAELS;Lo;0;L;;;;;N;;;;; +B7DD;HANGUL SYLLABLE RYAELT;Lo;0;L;;;;;N;;;;; +B7DE;HANGUL SYLLABLE RYAELP;Lo;0;L;;;;;N;;;;; +B7DF;HANGUL SYLLABLE RYAELH;Lo;0;L;;;;;N;;;;; +B7E0;HANGUL SYLLABLE RYAEM;Lo;0;L;;;;;N;;;;; +B7E1;HANGUL SYLLABLE RYAEB;Lo;0;L;;;;;N;;;;; +B7E2;HANGUL SYLLABLE RYAEBS;Lo;0;L;;;;;N;;;;; +B7E3;HANGUL SYLLABLE RYAES;Lo;0;L;;;;;N;;;;; +B7E4;HANGUL SYLLABLE RYAESS;Lo;0;L;;;;;N;;;;; +B7E5;HANGUL SYLLABLE RYAENG;Lo;0;L;;;;;N;;;;; +B7E6;HANGUL SYLLABLE RYAEJ;Lo;0;L;;;;;N;;;;; +B7E7;HANGUL SYLLABLE RYAEC;Lo;0;L;;;;;N;;;;; +B7E8;HANGUL SYLLABLE RYAEK;Lo;0;L;;;;;N;;;;; +B7E9;HANGUL SYLLABLE RYAET;Lo;0;L;;;;;N;;;;; +B7EA;HANGUL SYLLABLE RYAEP;Lo;0;L;;;;;N;;;;; +B7EB;HANGUL SYLLABLE RYAEH;Lo;0;L;;;;;N;;;;; +B7EC;HANGUL SYLLABLE REO;Lo;0;L;;;;;N;;;;; +B7ED;HANGUL SYLLABLE REOG;Lo;0;L;;;;;N;;;;; +B7EE;HANGUL SYLLABLE REOGG;Lo;0;L;;;;;N;;;;; +B7EF;HANGUL SYLLABLE REOGS;Lo;0;L;;;;;N;;;;; +B7F0;HANGUL SYLLABLE REON;Lo;0;L;;;;;N;;;;; +B7F1;HANGUL SYLLABLE REONI;Lo;0;L;;;;;N;;;;; +B7F2;HANGUL SYLLABLE REONH;Lo;0;L;;;;;N;;;;; +B7F3;HANGUL SYLLABLE REOD;Lo;0;L;;;;;N;;;;; +B7F4;HANGUL SYLLABLE REOL;Lo;0;L;;;;;N;;;;; +B7F5;HANGUL SYLLABLE REOLG;Lo;0;L;;;;;N;;;;; +B7F6;HANGUL SYLLABLE REOLM;Lo;0;L;;;;;N;;;;; +B7F7;HANGUL SYLLABLE REOLB;Lo;0;L;;;;;N;;;;; +B7F8;HANGUL SYLLABLE REOLS;Lo;0;L;;;;;N;;;;; +B7F9;HANGUL SYLLABLE REOLT;Lo;0;L;;;;;N;;;;; +B7FA;HANGUL SYLLABLE REOLP;Lo;0;L;;;;;N;;;;; +B7FB;HANGUL SYLLABLE REOLH;Lo;0;L;;;;;N;;;;; +B7FC;HANGUL SYLLABLE REOM;Lo;0;L;;;;;N;;;;; +B7FD;HANGUL SYLLABLE REOB;Lo;0;L;;;;;N;;;;; +B7FE;HANGUL SYLLABLE REOBS;Lo;0;L;;;;;N;;;;; +B7FF;HANGUL SYLLABLE REOS;Lo;0;L;;;;;N;;;;; +B800;HANGUL SYLLABLE REOSS;Lo;0;L;;;;;N;;;;; +B801;HANGUL SYLLABLE REONG;Lo;0;L;;;;;N;;;;; +B802;HANGUL SYLLABLE REOJ;Lo;0;L;;;;;N;;;;; +B803;HANGUL SYLLABLE REOC;Lo;0;L;;;;;N;;;;; +B804;HANGUL SYLLABLE REOK;Lo;0;L;;;;;N;;;;; +B805;HANGUL SYLLABLE REOT;Lo;0;L;;;;;N;;;;; +B806;HANGUL SYLLABLE REOP;Lo;0;L;;;;;N;;;;; +B807;HANGUL SYLLABLE REOH;Lo;0;L;;;;;N;;;;; +B808;HANGUL SYLLABLE RE;Lo;0;L;;;;;N;;;;; +B809;HANGUL SYLLABLE REG;Lo;0;L;;;;;N;;;;; +B80A;HANGUL SYLLABLE REGG;Lo;0;L;;;;;N;;;;; +B80B;HANGUL SYLLABLE REGS;Lo;0;L;;;;;N;;;;; +B80C;HANGUL SYLLABLE REN;Lo;0;L;;;;;N;;;;; +B80D;HANGUL SYLLABLE RENI;Lo;0;L;;;;;N;;;;; +B80E;HANGUL SYLLABLE RENH;Lo;0;L;;;;;N;;;;; +B80F;HANGUL SYLLABLE RED;Lo;0;L;;;;;N;;;;; +B810;HANGUL SYLLABLE REL;Lo;0;L;;;;;N;;;;; +B811;HANGUL SYLLABLE RELG;Lo;0;L;;;;;N;;;;; +B812;HANGUL SYLLABLE RELM;Lo;0;L;;;;;N;;;;; +B813;HANGUL SYLLABLE RELB;Lo;0;L;;;;;N;;;;; +B814;HANGUL SYLLABLE RELS;Lo;0;L;;;;;N;;;;; +B815;HANGUL SYLLABLE RELT;Lo;0;L;;;;;N;;;;; +B816;HANGUL SYLLABLE RELP;Lo;0;L;;;;;N;;;;; +B817;HANGUL SYLLABLE RELH;Lo;0;L;;;;;N;;;;; +B818;HANGUL SYLLABLE REM;Lo;0;L;;;;;N;;;;; +B819;HANGUL SYLLABLE REB;Lo;0;L;;;;;N;;;;; +B81A;HANGUL SYLLABLE REBS;Lo;0;L;;;;;N;;;;; +B81B;HANGUL SYLLABLE RES;Lo;0;L;;;;;N;;;;; +B81C;HANGUL SYLLABLE RESS;Lo;0;L;;;;;N;;;;; +B81D;HANGUL SYLLABLE RENG;Lo;0;L;;;;;N;;;;; +B81E;HANGUL SYLLABLE REJ;Lo;0;L;;;;;N;;;;; +B81F;HANGUL SYLLABLE REC;Lo;0;L;;;;;N;;;;; +B820;HANGUL SYLLABLE REK;Lo;0;L;;;;;N;;;;; +B821;HANGUL SYLLABLE RET;Lo;0;L;;;;;N;;;;; +B822;HANGUL SYLLABLE REP;Lo;0;L;;;;;N;;;;; +B823;HANGUL SYLLABLE REH;Lo;0;L;;;;;N;;;;; +B824;HANGUL SYLLABLE RYEO;Lo;0;L;;;;;N;;;;; +B825;HANGUL SYLLABLE RYEOG;Lo;0;L;;;;;N;;;;; +B826;HANGUL SYLLABLE RYEOGG;Lo;0;L;;;;;N;;;;; +B827;HANGUL SYLLABLE RYEOGS;Lo;0;L;;;;;N;;;;; +B828;HANGUL SYLLABLE RYEON;Lo;0;L;;;;;N;;;;; +B829;HANGUL SYLLABLE RYEONI;Lo;0;L;;;;;N;;;;; +B82A;HANGUL SYLLABLE RYEONH;Lo;0;L;;;;;N;;;;; +B82B;HANGUL SYLLABLE RYEOD;Lo;0;L;;;;;N;;;;; +B82C;HANGUL SYLLABLE RYEOL;Lo;0;L;;;;;N;;;;; +B82D;HANGUL SYLLABLE RYEOLG;Lo;0;L;;;;;N;;;;; +B82E;HANGUL SYLLABLE RYEOLM;Lo;0;L;;;;;N;;;;; +B82F;HANGUL SYLLABLE RYEOLB;Lo;0;L;;;;;N;;;;; +B830;HANGUL SYLLABLE RYEOLS;Lo;0;L;;;;;N;;;;; +B831;HANGUL SYLLABLE RYEOLT;Lo;0;L;;;;;N;;;;; +B832;HANGUL SYLLABLE RYEOLP;Lo;0;L;;;;;N;;;;; +B833;HANGUL SYLLABLE RYEOLH;Lo;0;L;;;;;N;;;;; +B834;HANGUL SYLLABLE RYEOM;Lo;0;L;;;;;N;;;;; +B835;HANGUL SYLLABLE RYEOB;Lo;0;L;;;;;N;;;;; +B836;HANGUL SYLLABLE RYEOBS;Lo;0;L;;;;;N;;;;; +B837;HANGUL SYLLABLE RYEOS;Lo;0;L;;;;;N;;;;; +B838;HANGUL SYLLABLE RYEOSS;Lo;0;L;;;;;N;;;;; +B839;HANGUL SYLLABLE RYEONG;Lo;0;L;;;;;N;;;;; +B83A;HANGUL SYLLABLE RYEOJ;Lo;0;L;;;;;N;;;;; +B83B;HANGUL SYLLABLE RYEOC;Lo;0;L;;;;;N;;;;; +B83C;HANGUL SYLLABLE RYEOK;Lo;0;L;;;;;N;;;;; +B83D;HANGUL SYLLABLE RYEOT;Lo;0;L;;;;;N;;;;; +B83E;HANGUL SYLLABLE RYEOP;Lo;0;L;;;;;N;;;;; +B83F;HANGUL SYLLABLE RYEOH;Lo;0;L;;;;;N;;;;; +B840;HANGUL SYLLABLE RYE;Lo;0;L;;;;;N;;;;; +B841;HANGUL SYLLABLE RYEG;Lo;0;L;;;;;N;;;;; +B842;HANGUL SYLLABLE RYEGG;Lo;0;L;;;;;N;;;;; +B843;HANGUL SYLLABLE RYEGS;Lo;0;L;;;;;N;;;;; +B844;HANGUL SYLLABLE RYEN;Lo;0;L;;;;;N;;;;; +B845;HANGUL SYLLABLE RYENI;Lo;0;L;;;;;N;;;;; +B846;HANGUL SYLLABLE RYENH;Lo;0;L;;;;;N;;;;; +B847;HANGUL SYLLABLE RYED;Lo;0;L;;;;;N;;;;; +B848;HANGUL SYLLABLE RYEL;Lo;0;L;;;;;N;;;;; +B849;HANGUL SYLLABLE RYELG;Lo;0;L;;;;;N;;;;; +B84A;HANGUL SYLLABLE RYELM;Lo;0;L;;;;;N;;;;; +B84B;HANGUL SYLLABLE RYELB;Lo;0;L;;;;;N;;;;; +B84C;HANGUL SYLLABLE RYELS;Lo;0;L;;;;;N;;;;; +B84D;HANGUL SYLLABLE RYELT;Lo;0;L;;;;;N;;;;; +B84E;HANGUL SYLLABLE RYELP;Lo;0;L;;;;;N;;;;; +B84F;HANGUL SYLLABLE RYELH;Lo;0;L;;;;;N;;;;; +B850;HANGUL SYLLABLE RYEM;Lo;0;L;;;;;N;;;;; +B851;HANGUL SYLLABLE RYEB;Lo;0;L;;;;;N;;;;; +B852;HANGUL SYLLABLE RYEBS;Lo;0;L;;;;;N;;;;; +B853;HANGUL SYLLABLE RYES;Lo;0;L;;;;;N;;;;; +B854;HANGUL SYLLABLE RYESS;Lo;0;L;;;;;N;;;;; +B855;HANGUL SYLLABLE RYENG;Lo;0;L;;;;;N;;;;; +B856;HANGUL SYLLABLE RYEJ;Lo;0;L;;;;;N;;;;; +B857;HANGUL SYLLABLE RYEC;Lo;0;L;;;;;N;;;;; +B858;HANGUL SYLLABLE RYEK;Lo;0;L;;;;;N;;;;; +B859;HANGUL SYLLABLE RYET;Lo;0;L;;;;;N;;;;; +B85A;HANGUL SYLLABLE RYEP;Lo;0;L;;;;;N;;;;; +B85B;HANGUL SYLLABLE RYEH;Lo;0;L;;;;;N;;;;; +B85C;HANGUL SYLLABLE RO;Lo;0;L;;;;;N;;;;; +B85D;HANGUL SYLLABLE ROG;Lo;0;L;;;;;N;;;;; +B85E;HANGUL SYLLABLE ROGG;Lo;0;L;;;;;N;;;;; +B85F;HANGUL SYLLABLE ROGS;Lo;0;L;;;;;N;;;;; +B860;HANGUL SYLLABLE RON;Lo;0;L;;;;;N;;;;; +B861;HANGUL SYLLABLE RONI;Lo;0;L;;;;;N;;;;; +B862;HANGUL SYLLABLE RONH;Lo;0;L;;;;;N;;;;; +B863;HANGUL SYLLABLE ROD;Lo;0;L;;;;;N;;;;; +B864;HANGUL SYLLABLE ROL;Lo;0;L;;;;;N;;;;; +B865;HANGUL SYLLABLE ROLG;Lo;0;L;;;;;N;;;;; +B866;HANGUL SYLLABLE ROLM;Lo;0;L;;;;;N;;;;; +B867;HANGUL SYLLABLE ROLB;Lo;0;L;;;;;N;;;;; +B868;HANGUL SYLLABLE ROLS;Lo;0;L;;;;;N;;;;; +B869;HANGUL SYLLABLE ROLT;Lo;0;L;;;;;N;;;;; +B86A;HANGUL SYLLABLE ROLP;Lo;0;L;;;;;N;;;;; +B86B;HANGUL SYLLABLE ROLH;Lo;0;L;;;;;N;;;;; +B86C;HANGUL SYLLABLE ROM;Lo;0;L;;;;;N;;;;; +B86D;HANGUL SYLLABLE ROB;Lo;0;L;;;;;N;;;;; +B86E;HANGUL SYLLABLE ROBS;Lo;0;L;;;;;N;;;;; +B86F;HANGUL SYLLABLE ROS;Lo;0;L;;;;;N;;;;; +B870;HANGUL SYLLABLE ROSS;Lo;0;L;;;;;N;;;;; +B871;HANGUL SYLLABLE RONG;Lo;0;L;;;;;N;;;;; +B872;HANGUL SYLLABLE ROJ;Lo;0;L;;;;;N;;;;; +B873;HANGUL SYLLABLE ROC;Lo;0;L;;;;;N;;;;; +B874;HANGUL SYLLABLE ROK;Lo;0;L;;;;;N;;;;; +B875;HANGUL SYLLABLE ROT;Lo;0;L;;;;;N;;;;; +B876;HANGUL SYLLABLE ROP;Lo;0;L;;;;;N;;;;; +B877;HANGUL SYLLABLE ROH;Lo;0;L;;;;;N;;;;; +B878;HANGUL SYLLABLE RWA;Lo;0;L;;;;;N;;;;; +B879;HANGUL SYLLABLE RWAG;Lo;0;L;;;;;N;;;;; +B87A;HANGUL SYLLABLE RWAGG;Lo;0;L;;;;;N;;;;; +B87B;HANGUL SYLLABLE RWAGS;Lo;0;L;;;;;N;;;;; +B87C;HANGUL SYLLABLE RWAN;Lo;0;L;;;;;N;;;;; +B87D;HANGUL SYLLABLE RWANI;Lo;0;L;;;;;N;;;;; +B87E;HANGUL SYLLABLE RWANH;Lo;0;L;;;;;N;;;;; +B87F;HANGUL SYLLABLE RWAD;Lo;0;L;;;;;N;;;;; +B880;HANGUL SYLLABLE RWAL;Lo;0;L;;;;;N;;;;; +B881;HANGUL SYLLABLE RWALG;Lo;0;L;;;;;N;;;;; +B882;HANGUL SYLLABLE RWALM;Lo;0;L;;;;;N;;;;; +B883;HANGUL SYLLABLE RWALB;Lo;0;L;;;;;N;;;;; +B884;HANGUL SYLLABLE RWALS;Lo;0;L;;;;;N;;;;; +B885;HANGUL SYLLABLE RWALT;Lo;0;L;;;;;N;;;;; +B886;HANGUL SYLLABLE RWALP;Lo;0;L;;;;;N;;;;; +B887;HANGUL SYLLABLE RWALH;Lo;0;L;;;;;N;;;;; +B888;HANGUL SYLLABLE RWAM;Lo;0;L;;;;;N;;;;; +B889;HANGUL SYLLABLE RWAB;Lo;0;L;;;;;N;;;;; +B88A;HANGUL SYLLABLE RWABS;Lo;0;L;;;;;N;;;;; +B88B;HANGUL SYLLABLE RWAS;Lo;0;L;;;;;N;;;;; +B88C;HANGUL SYLLABLE RWASS;Lo;0;L;;;;;N;;;;; +B88D;HANGUL SYLLABLE RWANG;Lo;0;L;;;;;N;;;;; +B88E;HANGUL SYLLABLE RWAJ;Lo;0;L;;;;;N;;;;; +B88F;HANGUL SYLLABLE RWAC;Lo;0;L;;;;;N;;;;; +B890;HANGUL SYLLABLE RWAK;Lo;0;L;;;;;N;;;;; +B891;HANGUL SYLLABLE RWAT;Lo;0;L;;;;;N;;;;; +B892;HANGUL SYLLABLE RWAP;Lo;0;L;;;;;N;;;;; +B893;HANGUL SYLLABLE RWAH;Lo;0;L;;;;;N;;;;; +B894;HANGUL SYLLABLE RWAE;Lo;0;L;;;;;N;;;;; +B895;HANGUL SYLLABLE RWAEG;Lo;0;L;;;;;N;;;;; +B896;HANGUL SYLLABLE RWAEGG;Lo;0;L;;;;;N;;;;; +B897;HANGUL SYLLABLE RWAEGS;Lo;0;L;;;;;N;;;;; +B898;HANGUL SYLLABLE RWAEN;Lo;0;L;;;;;N;;;;; +B899;HANGUL SYLLABLE RWAENI;Lo;0;L;;;;;N;;;;; +B89A;HANGUL SYLLABLE RWAENH;Lo;0;L;;;;;N;;;;; +B89B;HANGUL SYLLABLE RWAED;Lo;0;L;;;;;N;;;;; +B89C;HANGUL SYLLABLE RWAEL;Lo;0;L;;;;;N;;;;; +B89D;HANGUL SYLLABLE RWAELG;Lo;0;L;;;;;N;;;;; +B89E;HANGUL SYLLABLE RWAELM;Lo;0;L;;;;;N;;;;; +B89F;HANGUL SYLLABLE RWAELB;Lo;0;L;;;;;N;;;;; +B8A0;HANGUL SYLLABLE RWAELS;Lo;0;L;;;;;N;;;;; +B8A1;HANGUL SYLLABLE RWAELT;Lo;0;L;;;;;N;;;;; +B8A2;HANGUL SYLLABLE RWAELP;Lo;0;L;;;;;N;;;;; +B8A3;HANGUL SYLLABLE RWAELH;Lo;0;L;;;;;N;;;;; +B8A4;HANGUL SYLLABLE RWAEM;Lo;0;L;;;;;N;;;;; +B8A5;HANGUL SYLLABLE RWAEB;Lo;0;L;;;;;N;;;;; +B8A6;HANGUL SYLLABLE RWAEBS;Lo;0;L;;;;;N;;;;; +B8A7;HANGUL SYLLABLE RWAES;Lo;0;L;;;;;N;;;;; +B8A8;HANGUL SYLLABLE RWAESS;Lo;0;L;;;;;N;;;;; +B8A9;HANGUL SYLLABLE RWAENG;Lo;0;L;;;;;N;;;;; +B8AA;HANGUL SYLLABLE RWAEJ;Lo;0;L;;;;;N;;;;; +B8AB;HANGUL SYLLABLE RWAEC;Lo;0;L;;;;;N;;;;; +B8AC;HANGUL SYLLABLE RWAEK;Lo;0;L;;;;;N;;;;; +B8AD;HANGUL SYLLABLE RWAET;Lo;0;L;;;;;N;;;;; +B8AE;HANGUL SYLLABLE RWAEP;Lo;0;L;;;;;N;;;;; +B8AF;HANGUL SYLLABLE RWAEH;Lo;0;L;;;;;N;;;;; +B8B0;HANGUL SYLLABLE ROE;Lo;0;L;;;;;N;;;;; +B8B1;HANGUL SYLLABLE ROEG;Lo;0;L;;;;;N;;;;; +B8B2;HANGUL SYLLABLE ROEGG;Lo;0;L;;;;;N;;;;; +B8B3;HANGUL SYLLABLE ROEGS;Lo;0;L;;;;;N;;;;; +B8B4;HANGUL SYLLABLE ROEN;Lo;0;L;;;;;N;;;;; +B8B5;HANGUL SYLLABLE ROENI;Lo;0;L;;;;;N;;;;; +B8B6;HANGUL SYLLABLE ROENH;Lo;0;L;;;;;N;;;;; +B8B7;HANGUL SYLLABLE ROED;Lo;0;L;;;;;N;;;;; +B8B8;HANGUL SYLLABLE ROEL;Lo;0;L;;;;;N;;;;; +B8B9;HANGUL SYLLABLE ROELG;Lo;0;L;;;;;N;;;;; +B8BA;HANGUL SYLLABLE ROELM;Lo;0;L;;;;;N;;;;; +B8BB;HANGUL SYLLABLE ROELB;Lo;0;L;;;;;N;;;;; +B8BC;HANGUL SYLLABLE ROELS;Lo;0;L;;;;;N;;;;; +B8BD;HANGUL SYLLABLE ROELT;Lo;0;L;;;;;N;;;;; +B8BE;HANGUL SYLLABLE ROELP;Lo;0;L;;;;;N;;;;; +B8BF;HANGUL SYLLABLE ROELH;Lo;0;L;;;;;N;;;;; +B8C0;HANGUL SYLLABLE ROEM;Lo;0;L;;;;;N;;;;; +B8C1;HANGUL SYLLABLE ROEB;Lo;0;L;;;;;N;;;;; +B8C2;HANGUL SYLLABLE ROEBS;Lo;0;L;;;;;N;;;;; +B8C3;HANGUL SYLLABLE ROES;Lo;0;L;;;;;N;;;;; +B8C4;HANGUL SYLLABLE ROESS;Lo;0;L;;;;;N;;;;; +B8C5;HANGUL SYLLABLE ROENG;Lo;0;L;;;;;N;;;;; +B8C6;HANGUL SYLLABLE ROEJ;Lo;0;L;;;;;N;;;;; +B8C7;HANGUL SYLLABLE ROEC;Lo;0;L;;;;;N;;;;; +B8C8;HANGUL SYLLABLE ROEK;Lo;0;L;;;;;N;;;;; +B8C9;HANGUL SYLLABLE ROET;Lo;0;L;;;;;N;;;;; +B8CA;HANGUL SYLLABLE ROEP;Lo;0;L;;;;;N;;;;; +B8CB;HANGUL SYLLABLE ROEH;Lo;0;L;;;;;N;;;;; +B8CC;HANGUL SYLLABLE RYO;Lo;0;L;;;;;N;;;;; +B8CD;HANGUL SYLLABLE RYOG;Lo;0;L;;;;;N;;;;; +B8CE;HANGUL SYLLABLE RYOGG;Lo;0;L;;;;;N;;;;; +B8CF;HANGUL SYLLABLE RYOGS;Lo;0;L;;;;;N;;;;; +B8D0;HANGUL SYLLABLE RYON;Lo;0;L;;;;;N;;;;; +B8D1;HANGUL SYLLABLE RYONI;Lo;0;L;;;;;N;;;;; +B8D2;HANGUL SYLLABLE RYONH;Lo;0;L;;;;;N;;;;; +B8D3;HANGUL SYLLABLE RYOD;Lo;0;L;;;;;N;;;;; +B8D4;HANGUL SYLLABLE RYOL;Lo;0;L;;;;;N;;;;; +B8D5;HANGUL SYLLABLE RYOLG;Lo;0;L;;;;;N;;;;; +B8D6;HANGUL SYLLABLE RYOLM;Lo;0;L;;;;;N;;;;; +B8D7;HANGUL SYLLABLE RYOLB;Lo;0;L;;;;;N;;;;; +B8D8;HANGUL SYLLABLE RYOLS;Lo;0;L;;;;;N;;;;; +B8D9;HANGUL SYLLABLE RYOLT;Lo;0;L;;;;;N;;;;; +B8DA;HANGUL SYLLABLE RYOLP;Lo;0;L;;;;;N;;;;; +B8DB;HANGUL SYLLABLE RYOLH;Lo;0;L;;;;;N;;;;; +B8DC;HANGUL SYLLABLE RYOM;Lo;0;L;;;;;N;;;;; +B8DD;HANGUL SYLLABLE RYOB;Lo;0;L;;;;;N;;;;; +B8DE;HANGUL SYLLABLE RYOBS;Lo;0;L;;;;;N;;;;; +B8DF;HANGUL SYLLABLE RYOS;Lo;0;L;;;;;N;;;;; +B8E0;HANGUL SYLLABLE RYOSS;Lo;0;L;;;;;N;;;;; +B8E1;HANGUL SYLLABLE RYONG;Lo;0;L;;;;;N;;;;; +B8E2;HANGUL SYLLABLE RYOJ;Lo;0;L;;;;;N;;;;; +B8E3;HANGUL SYLLABLE RYOC;Lo;0;L;;;;;N;;;;; +B8E4;HANGUL SYLLABLE RYOK;Lo;0;L;;;;;N;;;;; +B8E5;HANGUL SYLLABLE RYOT;Lo;0;L;;;;;N;;;;; +B8E6;HANGUL SYLLABLE RYOP;Lo;0;L;;;;;N;;;;; +B8E7;HANGUL SYLLABLE RYOH;Lo;0;L;;;;;N;;;;; +B8E8;HANGUL SYLLABLE RU;Lo;0;L;;;;;N;;;;; +B8E9;HANGUL SYLLABLE RUG;Lo;0;L;;;;;N;;;;; +B8EA;HANGUL SYLLABLE RUGG;Lo;0;L;;;;;N;;;;; +B8EB;HANGUL SYLLABLE RUGS;Lo;0;L;;;;;N;;;;; +B8EC;HANGUL SYLLABLE RUN;Lo;0;L;;;;;N;;;;; +B8ED;HANGUL SYLLABLE RUNI;Lo;0;L;;;;;N;;;;; +B8EE;HANGUL SYLLABLE RUNH;Lo;0;L;;;;;N;;;;; +B8EF;HANGUL SYLLABLE RUD;Lo;0;L;;;;;N;;;;; +B8F0;HANGUL SYLLABLE RUL;Lo;0;L;;;;;N;;;;; +B8F1;HANGUL SYLLABLE RULG;Lo;0;L;;;;;N;;;;; +B8F2;HANGUL SYLLABLE RULM;Lo;0;L;;;;;N;;;;; +B8F3;HANGUL SYLLABLE RULB;Lo;0;L;;;;;N;;;;; +B8F4;HANGUL SYLLABLE RULS;Lo;0;L;;;;;N;;;;; +B8F5;HANGUL SYLLABLE RULT;Lo;0;L;;;;;N;;;;; +B8F6;HANGUL SYLLABLE RULP;Lo;0;L;;;;;N;;;;; +B8F7;HANGUL SYLLABLE RULH;Lo;0;L;;;;;N;;;;; +B8F8;HANGUL SYLLABLE RUM;Lo;0;L;;;;;N;;;;; +B8F9;HANGUL SYLLABLE RUB;Lo;0;L;;;;;N;;;;; +B8FA;HANGUL SYLLABLE RUBS;Lo;0;L;;;;;N;;;;; +B8FB;HANGUL SYLLABLE RUS;Lo;0;L;;;;;N;;;;; +B8FC;HANGUL SYLLABLE RUSS;Lo;0;L;;;;;N;;;;; +B8FD;HANGUL SYLLABLE RUNG;Lo;0;L;;;;;N;;;;; +B8FE;HANGUL SYLLABLE RUJ;Lo;0;L;;;;;N;;;;; +B8FF;HANGUL SYLLABLE RUC;Lo;0;L;;;;;N;;;;; +B900;HANGUL SYLLABLE RUK;Lo;0;L;;;;;N;;;;; +B901;HANGUL SYLLABLE RUT;Lo;0;L;;;;;N;;;;; +B902;HANGUL SYLLABLE RUP;Lo;0;L;;;;;N;;;;; +B903;HANGUL SYLLABLE RUH;Lo;0;L;;;;;N;;;;; +B904;HANGUL SYLLABLE RWEO;Lo;0;L;;;;;N;;;;; +B905;HANGUL SYLLABLE RWEOG;Lo;0;L;;;;;N;;;;; +B906;HANGUL SYLLABLE RWEOGG;Lo;0;L;;;;;N;;;;; +B907;HANGUL SYLLABLE RWEOGS;Lo;0;L;;;;;N;;;;; +B908;HANGUL SYLLABLE RWEON;Lo;0;L;;;;;N;;;;; +B909;HANGUL SYLLABLE RWEONI;Lo;0;L;;;;;N;;;;; +B90A;HANGUL SYLLABLE RWEONH;Lo;0;L;;;;;N;;;;; +B90B;HANGUL SYLLABLE RWEOD;Lo;0;L;;;;;N;;;;; +B90C;HANGUL SYLLABLE RWEOL;Lo;0;L;;;;;N;;;;; +B90D;HANGUL SYLLABLE RWEOLG;Lo;0;L;;;;;N;;;;; +B90E;HANGUL SYLLABLE RWEOLM;Lo;0;L;;;;;N;;;;; +B90F;HANGUL SYLLABLE RWEOLB;Lo;0;L;;;;;N;;;;; +B910;HANGUL SYLLABLE RWEOLS;Lo;0;L;;;;;N;;;;; +B911;HANGUL SYLLABLE RWEOLT;Lo;0;L;;;;;N;;;;; +B912;HANGUL SYLLABLE RWEOLP;Lo;0;L;;;;;N;;;;; +B913;HANGUL SYLLABLE RWEOLH;Lo;0;L;;;;;N;;;;; +B914;HANGUL SYLLABLE RWEOM;Lo;0;L;;;;;N;;;;; +B915;HANGUL SYLLABLE RWEOB;Lo;0;L;;;;;N;;;;; +B916;HANGUL SYLLABLE RWEOBS;Lo;0;L;;;;;N;;;;; +B917;HANGUL SYLLABLE RWEOS;Lo;0;L;;;;;N;;;;; +B918;HANGUL SYLLABLE RWEOSS;Lo;0;L;;;;;N;;;;; +B919;HANGUL SYLLABLE RWEONG;Lo;0;L;;;;;N;;;;; +B91A;HANGUL SYLLABLE RWEOJ;Lo;0;L;;;;;N;;;;; +B91B;HANGUL SYLLABLE RWEOC;Lo;0;L;;;;;N;;;;; +B91C;HANGUL SYLLABLE RWEOK;Lo;0;L;;;;;N;;;;; +B91D;HANGUL SYLLABLE RWEOT;Lo;0;L;;;;;N;;;;; +B91E;HANGUL SYLLABLE RWEOP;Lo;0;L;;;;;N;;;;; +B91F;HANGUL SYLLABLE RWEOH;Lo;0;L;;;;;N;;;;; +B920;HANGUL SYLLABLE RWE;Lo;0;L;;;;;N;;;;; +B921;HANGUL SYLLABLE RWEG;Lo;0;L;;;;;N;;;;; +B922;HANGUL SYLLABLE RWEGG;Lo;0;L;;;;;N;;;;; +B923;HANGUL SYLLABLE RWEGS;Lo;0;L;;;;;N;;;;; +B924;HANGUL SYLLABLE RWEN;Lo;0;L;;;;;N;;;;; +B925;HANGUL SYLLABLE RWENI;Lo;0;L;;;;;N;;;;; +B926;HANGUL SYLLABLE RWENH;Lo;0;L;;;;;N;;;;; +B927;HANGUL SYLLABLE RWED;Lo;0;L;;;;;N;;;;; +B928;HANGUL SYLLABLE RWEL;Lo;0;L;;;;;N;;;;; +B929;HANGUL SYLLABLE RWELG;Lo;0;L;;;;;N;;;;; +B92A;HANGUL SYLLABLE RWELM;Lo;0;L;;;;;N;;;;; +B92B;HANGUL SYLLABLE RWELB;Lo;0;L;;;;;N;;;;; +B92C;HANGUL SYLLABLE RWELS;Lo;0;L;;;;;N;;;;; +B92D;HANGUL SYLLABLE RWELT;Lo;0;L;;;;;N;;;;; +B92E;HANGUL SYLLABLE RWELP;Lo;0;L;;;;;N;;;;; +B92F;HANGUL SYLLABLE RWELH;Lo;0;L;;;;;N;;;;; +B930;HANGUL SYLLABLE RWEM;Lo;0;L;;;;;N;;;;; +B931;HANGUL SYLLABLE RWEB;Lo;0;L;;;;;N;;;;; +B932;HANGUL SYLLABLE RWEBS;Lo;0;L;;;;;N;;;;; +B933;HANGUL SYLLABLE RWES;Lo;0;L;;;;;N;;;;; +B934;HANGUL SYLLABLE RWESS;Lo;0;L;;;;;N;;;;; +B935;HANGUL SYLLABLE RWENG;Lo;0;L;;;;;N;;;;; +B936;HANGUL SYLLABLE RWEJ;Lo;0;L;;;;;N;;;;; +B937;HANGUL SYLLABLE RWEC;Lo;0;L;;;;;N;;;;; +B938;HANGUL SYLLABLE RWEK;Lo;0;L;;;;;N;;;;; +B939;HANGUL SYLLABLE RWET;Lo;0;L;;;;;N;;;;; +B93A;HANGUL SYLLABLE RWEP;Lo;0;L;;;;;N;;;;; +B93B;HANGUL SYLLABLE RWEH;Lo;0;L;;;;;N;;;;; +B93C;HANGUL SYLLABLE RWI;Lo;0;L;;;;;N;;;;; +B93D;HANGUL SYLLABLE RWIG;Lo;0;L;;;;;N;;;;; +B93E;HANGUL SYLLABLE RWIGG;Lo;0;L;;;;;N;;;;; +B93F;HANGUL SYLLABLE RWIGS;Lo;0;L;;;;;N;;;;; +B940;HANGUL SYLLABLE RWIN;Lo;0;L;;;;;N;;;;; +B941;HANGUL SYLLABLE RWINI;Lo;0;L;;;;;N;;;;; +B942;HANGUL SYLLABLE RWINH;Lo;0;L;;;;;N;;;;; +B943;HANGUL SYLLABLE RWID;Lo;0;L;;;;;N;;;;; +B944;HANGUL SYLLABLE RWIL;Lo;0;L;;;;;N;;;;; +B945;HANGUL SYLLABLE RWILG;Lo;0;L;;;;;N;;;;; +B946;HANGUL SYLLABLE RWILM;Lo;0;L;;;;;N;;;;; +B947;HANGUL SYLLABLE RWILB;Lo;0;L;;;;;N;;;;; +B948;HANGUL SYLLABLE RWILS;Lo;0;L;;;;;N;;;;; +B949;HANGUL SYLLABLE RWILT;Lo;0;L;;;;;N;;;;; +B94A;HANGUL SYLLABLE RWILP;Lo;0;L;;;;;N;;;;; +B94B;HANGUL SYLLABLE RWILH;Lo;0;L;;;;;N;;;;; +B94C;HANGUL SYLLABLE RWIM;Lo;0;L;;;;;N;;;;; +B94D;HANGUL SYLLABLE RWIB;Lo;0;L;;;;;N;;;;; +B94E;HANGUL SYLLABLE RWIBS;Lo;0;L;;;;;N;;;;; +B94F;HANGUL SYLLABLE RWIS;Lo;0;L;;;;;N;;;;; +B950;HANGUL SYLLABLE RWISS;Lo;0;L;;;;;N;;;;; +B951;HANGUL SYLLABLE RWING;Lo;0;L;;;;;N;;;;; +B952;HANGUL SYLLABLE RWIJ;Lo;0;L;;;;;N;;;;; +B953;HANGUL SYLLABLE RWIC;Lo;0;L;;;;;N;;;;; +B954;HANGUL SYLLABLE RWIK;Lo;0;L;;;;;N;;;;; +B955;HANGUL SYLLABLE RWIT;Lo;0;L;;;;;N;;;;; +B956;HANGUL SYLLABLE RWIP;Lo;0;L;;;;;N;;;;; +B957;HANGUL SYLLABLE RWIH;Lo;0;L;;;;;N;;;;; +B958;HANGUL SYLLABLE RYU;Lo;0;L;;;;;N;;;;; +B959;HANGUL SYLLABLE RYUG;Lo;0;L;;;;;N;;;;; +B95A;HANGUL SYLLABLE RYUGG;Lo;0;L;;;;;N;;;;; +B95B;HANGUL SYLLABLE RYUGS;Lo;0;L;;;;;N;;;;; +B95C;HANGUL SYLLABLE RYUN;Lo;0;L;;;;;N;;;;; +B95D;HANGUL SYLLABLE RYUNI;Lo;0;L;;;;;N;;;;; +B95E;HANGUL SYLLABLE RYUNH;Lo;0;L;;;;;N;;;;; +B95F;HANGUL SYLLABLE RYUD;Lo;0;L;;;;;N;;;;; +B960;HANGUL SYLLABLE RYUL;Lo;0;L;;;;;N;;;;; +B961;HANGUL SYLLABLE RYULG;Lo;0;L;;;;;N;;;;; +B962;HANGUL SYLLABLE RYULM;Lo;0;L;;;;;N;;;;; +B963;HANGUL SYLLABLE RYULB;Lo;0;L;;;;;N;;;;; +B964;HANGUL SYLLABLE RYULS;Lo;0;L;;;;;N;;;;; +B965;HANGUL SYLLABLE RYULT;Lo;0;L;;;;;N;;;;; +B966;HANGUL SYLLABLE RYULP;Lo;0;L;;;;;N;;;;; +B967;HANGUL SYLLABLE RYULH;Lo;0;L;;;;;N;;;;; +B968;HANGUL SYLLABLE RYUM;Lo;0;L;;;;;N;;;;; +B969;HANGUL SYLLABLE RYUB;Lo;0;L;;;;;N;;;;; +B96A;HANGUL SYLLABLE RYUBS;Lo;0;L;;;;;N;;;;; +B96B;HANGUL SYLLABLE RYUS;Lo;0;L;;;;;N;;;;; +B96C;HANGUL SYLLABLE RYUSS;Lo;0;L;;;;;N;;;;; +B96D;HANGUL SYLLABLE RYUNG;Lo;0;L;;;;;N;;;;; +B96E;HANGUL SYLLABLE RYUJ;Lo;0;L;;;;;N;;;;; +B96F;HANGUL SYLLABLE RYUC;Lo;0;L;;;;;N;;;;; +B970;HANGUL SYLLABLE RYUK;Lo;0;L;;;;;N;;;;; +B971;HANGUL SYLLABLE RYUT;Lo;0;L;;;;;N;;;;; +B972;HANGUL SYLLABLE RYUP;Lo;0;L;;;;;N;;;;; +B973;HANGUL SYLLABLE RYUH;Lo;0;L;;;;;N;;;;; +B974;HANGUL SYLLABLE REU;Lo;0;L;;;;;N;;;;; +B975;HANGUL SYLLABLE REUG;Lo;0;L;;;;;N;;;;; +B976;HANGUL SYLLABLE REUGG;Lo;0;L;;;;;N;;;;; +B977;HANGUL SYLLABLE REUGS;Lo;0;L;;;;;N;;;;; +B978;HANGUL SYLLABLE REUN;Lo;0;L;;;;;N;;;;; +B979;HANGUL SYLLABLE REUNI;Lo;0;L;;;;;N;;;;; +B97A;HANGUL SYLLABLE REUNH;Lo;0;L;;;;;N;;;;; +B97B;HANGUL SYLLABLE REUD;Lo;0;L;;;;;N;;;;; +B97C;HANGUL SYLLABLE REUL;Lo;0;L;;;;;N;;;;; +B97D;HANGUL SYLLABLE REULG;Lo;0;L;;;;;N;;;;; +B97E;HANGUL SYLLABLE REULM;Lo;0;L;;;;;N;;;;; +B97F;HANGUL SYLLABLE REULB;Lo;0;L;;;;;N;;;;; +B980;HANGUL SYLLABLE REULS;Lo;0;L;;;;;N;;;;; +B981;HANGUL SYLLABLE REULT;Lo;0;L;;;;;N;;;;; +B982;HANGUL SYLLABLE REULP;Lo;0;L;;;;;N;;;;; +B983;HANGUL SYLLABLE REULH;Lo;0;L;;;;;N;;;;; +B984;HANGUL SYLLABLE REUM;Lo;0;L;;;;;N;;;;; +B985;HANGUL SYLLABLE REUB;Lo;0;L;;;;;N;;;;; +B986;HANGUL SYLLABLE REUBS;Lo;0;L;;;;;N;;;;; +B987;HANGUL SYLLABLE REUS;Lo;0;L;;;;;N;;;;; +B988;HANGUL SYLLABLE REUSS;Lo;0;L;;;;;N;;;;; +B989;HANGUL SYLLABLE REUNG;Lo;0;L;;;;;N;;;;; +B98A;HANGUL SYLLABLE REUJ;Lo;0;L;;;;;N;;;;; +B98B;HANGUL SYLLABLE REUC;Lo;0;L;;;;;N;;;;; +B98C;HANGUL SYLLABLE REUK;Lo;0;L;;;;;N;;;;; +B98D;HANGUL SYLLABLE REUT;Lo;0;L;;;;;N;;;;; +B98E;HANGUL SYLLABLE REUP;Lo;0;L;;;;;N;;;;; +B98F;HANGUL SYLLABLE REUH;Lo;0;L;;;;;N;;;;; +B990;HANGUL SYLLABLE RYI;Lo;0;L;;;;;N;;;;; +B991;HANGUL SYLLABLE RYIG;Lo;0;L;;;;;N;;;;; +B992;HANGUL SYLLABLE RYIGG;Lo;0;L;;;;;N;;;;; +B993;HANGUL SYLLABLE RYIGS;Lo;0;L;;;;;N;;;;; +B994;HANGUL SYLLABLE RYIN;Lo;0;L;;;;;N;;;;; +B995;HANGUL SYLLABLE RYINI;Lo;0;L;;;;;N;;;;; +B996;HANGUL SYLLABLE RYINH;Lo;0;L;;;;;N;;;;; +B997;HANGUL SYLLABLE RYID;Lo;0;L;;;;;N;;;;; +B998;HANGUL SYLLABLE RYIL;Lo;0;L;;;;;N;;;;; +B999;HANGUL SYLLABLE RYILG;Lo;0;L;;;;;N;;;;; +B99A;HANGUL SYLLABLE RYILM;Lo;0;L;;;;;N;;;;; +B99B;HANGUL SYLLABLE RYILB;Lo;0;L;;;;;N;;;;; +B99C;HANGUL SYLLABLE RYILS;Lo;0;L;;;;;N;;;;; +B99D;HANGUL SYLLABLE RYILT;Lo;0;L;;;;;N;;;;; +B99E;HANGUL SYLLABLE RYILP;Lo;0;L;;;;;N;;;;; +B99F;HANGUL SYLLABLE RYILH;Lo;0;L;;;;;N;;;;; +B9A0;HANGUL SYLLABLE RYIM;Lo;0;L;;;;;N;;;;; +B9A1;HANGUL SYLLABLE RYIB;Lo;0;L;;;;;N;;;;; +B9A2;HANGUL SYLLABLE RYIBS;Lo;0;L;;;;;N;;;;; +B9A3;HANGUL SYLLABLE RYIS;Lo;0;L;;;;;N;;;;; +B9A4;HANGUL SYLLABLE RYISS;Lo;0;L;;;;;N;;;;; +B9A5;HANGUL SYLLABLE RYING;Lo;0;L;;;;;N;;;;; +B9A6;HANGUL SYLLABLE RYIJ;Lo;0;L;;;;;N;;;;; +B9A7;HANGUL SYLLABLE RYIC;Lo;0;L;;;;;N;;;;; +B9A8;HANGUL SYLLABLE RYIK;Lo;0;L;;;;;N;;;;; +B9A9;HANGUL SYLLABLE RYIT;Lo;0;L;;;;;N;;;;; +B9AA;HANGUL SYLLABLE RYIP;Lo;0;L;;;;;N;;;;; +B9AB;HANGUL SYLLABLE RYIH;Lo;0;L;;;;;N;;;;; +B9AC;HANGUL SYLLABLE RI;Lo;0;L;;;;;N;;;;; +B9AD;HANGUL SYLLABLE RIG;Lo;0;L;;;;;N;;;;; +B9AE;HANGUL SYLLABLE RIGG;Lo;0;L;;;;;N;;;;; +B9AF;HANGUL SYLLABLE RIGS;Lo;0;L;;;;;N;;;;; +B9B0;HANGUL SYLLABLE RIN;Lo;0;L;;;;;N;;;;; +B9B1;HANGUL SYLLABLE RINI;Lo;0;L;;;;;N;;;;; +B9B2;HANGUL SYLLABLE RINH;Lo;0;L;;;;;N;;;;; +B9B3;HANGUL SYLLABLE RID;Lo;0;L;;;;;N;;;;; +B9B4;HANGUL SYLLABLE RIL;Lo;0;L;;;;;N;;;;; +B9B5;HANGUL SYLLABLE RILG;Lo;0;L;;;;;N;;;;; +B9B6;HANGUL SYLLABLE RILM;Lo;0;L;;;;;N;;;;; +B9B7;HANGUL SYLLABLE RILB;Lo;0;L;;;;;N;;;;; +B9B8;HANGUL SYLLABLE RILS;Lo;0;L;;;;;N;;;;; +B9B9;HANGUL SYLLABLE RILT;Lo;0;L;;;;;N;;;;; +B9BA;HANGUL SYLLABLE RILP;Lo;0;L;;;;;N;;;;; +B9BB;HANGUL SYLLABLE RILH;Lo;0;L;;;;;N;;;;; +B9BC;HANGUL SYLLABLE RIM;Lo;0;L;;;;;N;;;;; +B9BD;HANGUL SYLLABLE RIB;Lo;0;L;;;;;N;;;;; +B9BE;HANGUL SYLLABLE RIBS;Lo;0;L;;;;;N;;;;; +B9BF;HANGUL SYLLABLE RIS;Lo;0;L;;;;;N;;;;; +B9C0;HANGUL SYLLABLE RISS;Lo;0;L;;;;;N;;;;; +B9C1;HANGUL SYLLABLE RING;Lo;0;L;;;;;N;;;;; +B9C2;HANGUL SYLLABLE RIJ;Lo;0;L;;;;;N;;;;; +B9C3;HANGUL SYLLABLE RIC;Lo;0;L;;;;;N;;;;; +B9C4;HANGUL SYLLABLE RIK;Lo;0;L;;;;;N;;;;; +B9C5;HANGUL SYLLABLE RIT;Lo;0;L;;;;;N;;;;; +B9C6;HANGUL SYLLABLE RIP;Lo;0;L;;;;;N;;;;; +B9C7;HANGUL SYLLABLE RIH;Lo;0;L;;;;;N;;;;; +B9C8;HANGUL SYLLABLE MA;Lo;0;L;;;;;N;;;;; +B9C9;HANGUL SYLLABLE MAG;Lo;0;L;;;;;N;;;;; +B9CA;HANGUL SYLLABLE MAGG;Lo;0;L;;;;;N;;;;; +B9CB;HANGUL SYLLABLE MAGS;Lo;0;L;;;;;N;;;;; +B9CC;HANGUL SYLLABLE MAN;Lo;0;L;;;;;N;;;;; +B9CD;HANGUL SYLLABLE MANI;Lo;0;L;;;;;N;;;;; +B9CE;HANGUL SYLLABLE MANH;Lo;0;L;;;;;N;;;;; +B9CF;HANGUL SYLLABLE MAD;Lo;0;L;;;;;N;;;;; +B9D0;HANGUL SYLLABLE MAL;Lo;0;L;;;;;N;;;;; +B9D1;HANGUL SYLLABLE MALG;Lo;0;L;;;;;N;;;;; +B9D2;HANGUL SYLLABLE MALM;Lo;0;L;;;;;N;;;;; +B9D3;HANGUL SYLLABLE MALB;Lo;0;L;;;;;N;;;;; +B9D4;HANGUL SYLLABLE MALS;Lo;0;L;;;;;N;;;;; +B9D5;HANGUL SYLLABLE MALT;Lo;0;L;;;;;N;;;;; +B9D6;HANGUL SYLLABLE MALP;Lo;0;L;;;;;N;;;;; +B9D7;HANGUL SYLLABLE MALH;Lo;0;L;;;;;N;;;;; +B9D8;HANGUL SYLLABLE MAM;Lo;0;L;;;;;N;;;;; +B9D9;HANGUL SYLLABLE MAB;Lo;0;L;;;;;N;;;;; +B9DA;HANGUL SYLLABLE MABS;Lo;0;L;;;;;N;;;;; +B9DB;HANGUL SYLLABLE MAS;Lo;0;L;;;;;N;;;;; +B9DC;HANGUL SYLLABLE MASS;Lo;0;L;;;;;N;;;;; +B9DD;HANGUL SYLLABLE MANG;Lo;0;L;;;;;N;;;;; +B9DE;HANGUL SYLLABLE MAJ;Lo;0;L;;;;;N;;;;; +B9DF;HANGUL SYLLABLE MAC;Lo;0;L;;;;;N;;;;; +B9E0;HANGUL SYLLABLE MAK;Lo;0;L;;;;;N;;;;; +B9E1;HANGUL SYLLABLE MAT;Lo;0;L;;;;;N;;;;; +B9E2;HANGUL SYLLABLE MAP;Lo;0;L;;;;;N;;;;; +B9E3;HANGUL SYLLABLE MAH;Lo;0;L;;;;;N;;;;; +B9E4;HANGUL SYLLABLE MAE;Lo;0;L;;;;;N;;;;; +B9E5;HANGUL SYLLABLE MAEG;Lo;0;L;;;;;N;;;;; +B9E6;HANGUL SYLLABLE MAEGG;Lo;0;L;;;;;N;;;;; +B9E7;HANGUL SYLLABLE MAEGS;Lo;0;L;;;;;N;;;;; +B9E8;HANGUL SYLLABLE MAEN;Lo;0;L;;;;;N;;;;; +B9E9;HANGUL SYLLABLE MAENI;Lo;0;L;;;;;N;;;;; +B9EA;HANGUL SYLLABLE MAENH;Lo;0;L;;;;;N;;;;; +B9EB;HANGUL SYLLABLE MAED;Lo;0;L;;;;;N;;;;; +B9EC;HANGUL SYLLABLE MAEL;Lo;0;L;;;;;N;;;;; +B9ED;HANGUL SYLLABLE MAELG;Lo;0;L;;;;;N;;;;; +B9EE;HANGUL SYLLABLE MAELM;Lo;0;L;;;;;N;;;;; +B9EF;HANGUL SYLLABLE MAELB;Lo;0;L;;;;;N;;;;; +B9F0;HANGUL SYLLABLE MAELS;Lo;0;L;;;;;N;;;;; +B9F1;HANGUL SYLLABLE MAELT;Lo;0;L;;;;;N;;;;; +B9F2;HANGUL SYLLABLE MAELP;Lo;0;L;;;;;N;;;;; +B9F3;HANGUL SYLLABLE MAELH;Lo;0;L;;;;;N;;;;; +B9F4;HANGUL SYLLABLE MAEM;Lo;0;L;;;;;N;;;;; +B9F5;HANGUL SYLLABLE MAEB;Lo;0;L;;;;;N;;;;; +B9F6;HANGUL SYLLABLE MAEBS;Lo;0;L;;;;;N;;;;; +B9F7;HANGUL SYLLABLE MAES;Lo;0;L;;;;;N;;;;; +B9F8;HANGUL SYLLABLE MAESS;Lo;0;L;;;;;N;;;;; +B9F9;HANGUL SYLLABLE MAENG;Lo;0;L;;;;;N;;;;; +B9FA;HANGUL SYLLABLE MAEJ;Lo;0;L;;;;;N;;;;; +B9FB;HANGUL SYLLABLE MAEC;Lo;0;L;;;;;N;;;;; +B9FC;HANGUL SYLLABLE MAEK;Lo;0;L;;;;;N;;;;; +B9FD;HANGUL SYLLABLE MAET;Lo;0;L;;;;;N;;;;; +B9FE;HANGUL SYLLABLE MAEP;Lo;0;L;;;;;N;;;;; +B9FF;HANGUL SYLLABLE MAEH;Lo;0;L;;;;;N;;;;; +BA00;HANGUL SYLLABLE MYA;Lo;0;L;;;;;N;;;;; +BA01;HANGUL SYLLABLE MYAG;Lo;0;L;;;;;N;;;;; +BA02;HANGUL SYLLABLE MYAGG;Lo;0;L;;;;;N;;;;; +BA03;HANGUL SYLLABLE MYAGS;Lo;0;L;;;;;N;;;;; +BA04;HANGUL SYLLABLE MYAN;Lo;0;L;;;;;N;;;;; +BA05;HANGUL SYLLABLE MYANI;Lo;0;L;;;;;N;;;;; +BA06;HANGUL SYLLABLE MYANH;Lo;0;L;;;;;N;;;;; +BA07;HANGUL SYLLABLE MYAD;Lo;0;L;;;;;N;;;;; +BA08;HANGUL SYLLABLE MYAL;Lo;0;L;;;;;N;;;;; +BA09;HANGUL SYLLABLE MYALG;Lo;0;L;;;;;N;;;;; +BA0A;HANGUL SYLLABLE MYALM;Lo;0;L;;;;;N;;;;; +BA0B;HANGUL SYLLABLE MYALB;Lo;0;L;;;;;N;;;;; +BA0C;HANGUL SYLLABLE MYALS;Lo;0;L;;;;;N;;;;; +BA0D;HANGUL SYLLABLE MYALT;Lo;0;L;;;;;N;;;;; +BA0E;HANGUL SYLLABLE MYALP;Lo;0;L;;;;;N;;;;; +BA0F;HANGUL SYLLABLE MYALH;Lo;0;L;;;;;N;;;;; +BA10;HANGUL SYLLABLE MYAM;Lo;0;L;;;;;N;;;;; +BA11;HANGUL SYLLABLE MYAB;Lo;0;L;;;;;N;;;;; +BA12;HANGUL SYLLABLE MYABS;Lo;0;L;;;;;N;;;;; +BA13;HANGUL SYLLABLE MYAS;Lo;0;L;;;;;N;;;;; +BA14;HANGUL SYLLABLE MYASS;Lo;0;L;;;;;N;;;;; +BA15;HANGUL SYLLABLE MYANG;Lo;0;L;;;;;N;;;;; +BA16;HANGUL SYLLABLE MYAJ;Lo;0;L;;;;;N;;;;; +BA17;HANGUL SYLLABLE MYAC;Lo;0;L;;;;;N;;;;; +BA18;HANGUL SYLLABLE MYAK;Lo;0;L;;;;;N;;;;; +BA19;HANGUL SYLLABLE MYAT;Lo;0;L;;;;;N;;;;; +BA1A;HANGUL SYLLABLE MYAP;Lo;0;L;;;;;N;;;;; +BA1B;HANGUL SYLLABLE MYAH;Lo;0;L;;;;;N;;;;; +BA1C;HANGUL SYLLABLE MYAE;Lo;0;L;;;;;N;;;;; +BA1D;HANGUL SYLLABLE MYAEG;Lo;0;L;;;;;N;;;;; +BA1E;HANGUL SYLLABLE MYAEGG;Lo;0;L;;;;;N;;;;; +BA1F;HANGUL SYLLABLE MYAEGS;Lo;0;L;;;;;N;;;;; +BA20;HANGUL SYLLABLE MYAEN;Lo;0;L;;;;;N;;;;; +BA21;HANGUL SYLLABLE MYAENI;Lo;0;L;;;;;N;;;;; +BA22;HANGUL SYLLABLE MYAENH;Lo;0;L;;;;;N;;;;; +BA23;HANGUL SYLLABLE MYAED;Lo;0;L;;;;;N;;;;; +BA24;HANGUL SYLLABLE MYAEL;Lo;0;L;;;;;N;;;;; +BA25;HANGUL SYLLABLE MYAELG;Lo;0;L;;;;;N;;;;; +BA26;HANGUL SYLLABLE MYAELM;Lo;0;L;;;;;N;;;;; +BA27;HANGUL SYLLABLE MYAELB;Lo;0;L;;;;;N;;;;; +BA28;HANGUL SYLLABLE MYAELS;Lo;0;L;;;;;N;;;;; +BA29;HANGUL SYLLABLE MYAELT;Lo;0;L;;;;;N;;;;; +BA2A;HANGUL SYLLABLE MYAELP;Lo;0;L;;;;;N;;;;; +BA2B;HANGUL SYLLABLE MYAELH;Lo;0;L;;;;;N;;;;; +BA2C;HANGUL SYLLABLE MYAEM;Lo;0;L;;;;;N;;;;; +BA2D;HANGUL SYLLABLE MYAEB;Lo;0;L;;;;;N;;;;; +BA2E;HANGUL SYLLABLE MYAEBS;Lo;0;L;;;;;N;;;;; +BA2F;HANGUL SYLLABLE MYAES;Lo;0;L;;;;;N;;;;; +BA30;HANGUL SYLLABLE MYAESS;Lo;0;L;;;;;N;;;;; +BA31;HANGUL SYLLABLE MYAENG;Lo;0;L;;;;;N;;;;; +BA32;HANGUL SYLLABLE MYAEJ;Lo;0;L;;;;;N;;;;; +BA33;HANGUL SYLLABLE MYAEC;Lo;0;L;;;;;N;;;;; +BA34;HANGUL SYLLABLE MYAEK;Lo;0;L;;;;;N;;;;; +BA35;HANGUL SYLLABLE MYAET;Lo;0;L;;;;;N;;;;; +BA36;HANGUL SYLLABLE MYAEP;Lo;0;L;;;;;N;;;;; +BA37;HANGUL SYLLABLE MYAEH;Lo;0;L;;;;;N;;;;; +BA38;HANGUL SYLLABLE MEO;Lo;0;L;;;;;N;;;;; +BA39;HANGUL SYLLABLE MEOG;Lo;0;L;;;;;N;;;;; +BA3A;HANGUL SYLLABLE MEOGG;Lo;0;L;;;;;N;;;;; +BA3B;HANGUL SYLLABLE MEOGS;Lo;0;L;;;;;N;;;;; +BA3C;HANGUL SYLLABLE MEON;Lo;0;L;;;;;N;;;;; +BA3D;HANGUL SYLLABLE MEONI;Lo;0;L;;;;;N;;;;; +BA3E;HANGUL SYLLABLE MEONH;Lo;0;L;;;;;N;;;;; +BA3F;HANGUL SYLLABLE MEOD;Lo;0;L;;;;;N;;;;; +BA40;HANGUL SYLLABLE MEOL;Lo;0;L;;;;;N;;;;; +BA41;HANGUL SYLLABLE MEOLG;Lo;0;L;;;;;N;;;;; +BA42;HANGUL SYLLABLE MEOLM;Lo;0;L;;;;;N;;;;; +BA43;HANGUL SYLLABLE MEOLB;Lo;0;L;;;;;N;;;;; +BA44;HANGUL SYLLABLE MEOLS;Lo;0;L;;;;;N;;;;; +BA45;HANGUL SYLLABLE MEOLT;Lo;0;L;;;;;N;;;;; +BA46;HANGUL SYLLABLE MEOLP;Lo;0;L;;;;;N;;;;; +BA47;HANGUL SYLLABLE MEOLH;Lo;0;L;;;;;N;;;;; +BA48;HANGUL SYLLABLE MEOM;Lo;0;L;;;;;N;;;;; +BA49;HANGUL SYLLABLE MEOB;Lo;0;L;;;;;N;;;;; +BA4A;HANGUL SYLLABLE MEOBS;Lo;0;L;;;;;N;;;;; +BA4B;HANGUL SYLLABLE MEOS;Lo;0;L;;;;;N;;;;; +BA4C;HANGUL SYLLABLE MEOSS;Lo;0;L;;;;;N;;;;; +BA4D;HANGUL SYLLABLE MEONG;Lo;0;L;;;;;N;;;;; +BA4E;HANGUL SYLLABLE MEOJ;Lo;0;L;;;;;N;;;;; +BA4F;HANGUL SYLLABLE MEOC;Lo;0;L;;;;;N;;;;; +BA50;HANGUL SYLLABLE MEOK;Lo;0;L;;;;;N;;;;; +BA51;HANGUL SYLLABLE MEOT;Lo;0;L;;;;;N;;;;; +BA52;HANGUL SYLLABLE MEOP;Lo;0;L;;;;;N;;;;; +BA53;HANGUL SYLLABLE MEOH;Lo;0;L;;;;;N;;;;; +BA54;HANGUL SYLLABLE ME;Lo;0;L;;;;;N;;;;; +BA55;HANGUL SYLLABLE MEG;Lo;0;L;;;;;N;;;;; +BA56;HANGUL SYLLABLE MEGG;Lo;0;L;;;;;N;;;;; +BA57;HANGUL SYLLABLE MEGS;Lo;0;L;;;;;N;;;;; +BA58;HANGUL SYLLABLE MEN;Lo;0;L;;;;;N;;;;; +BA59;HANGUL SYLLABLE MENI;Lo;0;L;;;;;N;;;;; +BA5A;HANGUL SYLLABLE MENH;Lo;0;L;;;;;N;;;;; +BA5B;HANGUL SYLLABLE MED;Lo;0;L;;;;;N;;;;; +BA5C;HANGUL SYLLABLE MEL;Lo;0;L;;;;;N;;;;; +BA5D;HANGUL SYLLABLE MELG;Lo;0;L;;;;;N;;;;; +BA5E;HANGUL SYLLABLE MELM;Lo;0;L;;;;;N;;;;; +BA5F;HANGUL SYLLABLE MELB;Lo;0;L;;;;;N;;;;; +BA60;HANGUL SYLLABLE MELS;Lo;0;L;;;;;N;;;;; +BA61;HANGUL SYLLABLE MELT;Lo;0;L;;;;;N;;;;; +BA62;HANGUL SYLLABLE MELP;Lo;0;L;;;;;N;;;;; +BA63;HANGUL SYLLABLE MELH;Lo;0;L;;;;;N;;;;; +BA64;HANGUL SYLLABLE MEM;Lo;0;L;;;;;N;;;;; +BA65;HANGUL SYLLABLE MEB;Lo;0;L;;;;;N;;;;; +BA66;HANGUL SYLLABLE MEBS;Lo;0;L;;;;;N;;;;; +BA67;HANGUL SYLLABLE MES;Lo;0;L;;;;;N;;;;; +BA68;HANGUL SYLLABLE MESS;Lo;0;L;;;;;N;;;;; +BA69;HANGUL SYLLABLE MENG;Lo;0;L;;;;;N;;;;; +BA6A;HANGUL SYLLABLE MEJ;Lo;0;L;;;;;N;;;;; +BA6B;HANGUL SYLLABLE MEC;Lo;0;L;;;;;N;;;;; +BA6C;HANGUL SYLLABLE MEK;Lo;0;L;;;;;N;;;;; +BA6D;HANGUL SYLLABLE MET;Lo;0;L;;;;;N;;;;; +BA6E;HANGUL SYLLABLE MEP;Lo;0;L;;;;;N;;;;; +BA6F;HANGUL SYLLABLE MEH;Lo;0;L;;;;;N;;;;; +BA70;HANGUL SYLLABLE MYEO;Lo;0;L;;;;;N;;;;; +BA71;HANGUL SYLLABLE MYEOG;Lo;0;L;;;;;N;;;;; +BA72;HANGUL SYLLABLE MYEOGG;Lo;0;L;;;;;N;;;;; +BA73;HANGUL SYLLABLE MYEOGS;Lo;0;L;;;;;N;;;;; +BA74;HANGUL SYLLABLE MYEON;Lo;0;L;;;;;N;;;;; +BA75;HANGUL SYLLABLE MYEONI;Lo;0;L;;;;;N;;;;; +BA76;HANGUL SYLLABLE MYEONH;Lo;0;L;;;;;N;;;;; +BA77;HANGUL SYLLABLE MYEOD;Lo;0;L;;;;;N;;;;; +BA78;HANGUL SYLLABLE MYEOL;Lo;0;L;;;;;N;;;;; +BA79;HANGUL SYLLABLE MYEOLG;Lo;0;L;;;;;N;;;;; +BA7A;HANGUL SYLLABLE MYEOLM;Lo;0;L;;;;;N;;;;; +BA7B;HANGUL SYLLABLE MYEOLB;Lo;0;L;;;;;N;;;;; +BA7C;HANGUL SYLLABLE MYEOLS;Lo;0;L;;;;;N;;;;; +BA7D;HANGUL SYLLABLE MYEOLT;Lo;0;L;;;;;N;;;;; +BA7E;HANGUL SYLLABLE MYEOLP;Lo;0;L;;;;;N;;;;; +BA7F;HANGUL SYLLABLE MYEOLH;Lo;0;L;;;;;N;;;;; +BA80;HANGUL SYLLABLE MYEOM;Lo;0;L;;;;;N;;;;; +BA81;HANGUL SYLLABLE MYEOB;Lo;0;L;;;;;N;;;;; +BA82;HANGUL SYLLABLE MYEOBS;Lo;0;L;;;;;N;;;;; +BA83;HANGUL SYLLABLE MYEOS;Lo;0;L;;;;;N;;;;; +BA84;HANGUL SYLLABLE MYEOSS;Lo;0;L;;;;;N;;;;; +BA85;HANGUL SYLLABLE MYEONG;Lo;0;L;;;;;N;;;;; +BA86;HANGUL SYLLABLE MYEOJ;Lo;0;L;;;;;N;;;;; +BA87;HANGUL SYLLABLE MYEOC;Lo;0;L;;;;;N;;;;; +BA88;HANGUL SYLLABLE MYEOK;Lo;0;L;;;;;N;;;;; +BA89;HANGUL SYLLABLE MYEOT;Lo;0;L;;;;;N;;;;; +BA8A;HANGUL SYLLABLE MYEOP;Lo;0;L;;;;;N;;;;; +BA8B;HANGUL SYLLABLE MYEOH;Lo;0;L;;;;;N;;;;; +BA8C;HANGUL SYLLABLE MYE;Lo;0;L;;;;;N;;;;; +BA8D;HANGUL SYLLABLE MYEG;Lo;0;L;;;;;N;;;;; +BA8E;HANGUL SYLLABLE MYEGG;Lo;0;L;;;;;N;;;;; +BA8F;HANGUL SYLLABLE MYEGS;Lo;0;L;;;;;N;;;;; +BA90;HANGUL SYLLABLE MYEN;Lo;0;L;;;;;N;;;;; +BA91;HANGUL SYLLABLE MYENI;Lo;0;L;;;;;N;;;;; +BA92;HANGUL SYLLABLE MYENH;Lo;0;L;;;;;N;;;;; +BA93;HANGUL SYLLABLE MYED;Lo;0;L;;;;;N;;;;; +BA94;HANGUL SYLLABLE MYEL;Lo;0;L;;;;;N;;;;; +BA95;HANGUL SYLLABLE MYELG;Lo;0;L;;;;;N;;;;; +BA96;HANGUL SYLLABLE MYELM;Lo;0;L;;;;;N;;;;; +BA97;HANGUL SYLLABLE MYELB;Lo;0;L;;;;;N;;;;; +BA98;HANGUL SYLLABLE MYELS;Lo;0;L;;;;;N;;;;; +BA99;HANGUL SYLLABLE MYELT;Lo;0;L;;;;;N;;;;; +BA9A;HANGUL SYLLABLE MYELP;Lo;0;L;;;;;N;;;;; +BA9B;HANGUL SYLLABLE MYELH;Lo;0;L;;;;;N;;;;; +BA9C;HANGUL SYLLABLE MYEM;Lo;0;L;;;;;N;;;;; +BA9D;HANGUL SYLLABLE MYEB;Lo;0;L;;;;;N;;;;; +BA9E;HANGUL SYLLABLE MYEBS;Lo;0;L;;;;;N;;;;; +BA9F;HANGUL SYLLABLE MYES;Lo;0;L;;;;;N;;;;; +BAA0;HANGUL SYLLABLE MYESS;Lo;0;L;;;;;N;;;;; +BAA1;HANGUL SYLLABLE MYENG;Lo;0;L;;;;;N;;;;; +BAA2;HANGUL SYLLABLE MYEJ;Lo;0;L;;;;;N;;;;; +BAA3;HANGUL SYLLABLE MYEC;Lo;0;L;;;;;N;;;;; +BAA4;HANGUL SYLLABLE MYEK;Lo;0;L;;;;;N;;;;; +BAA5;HANGUL SYLLABLE MYET;Lo;0;L;;;;;N;;;;; +BAA6;HANGUL SYLLABLE MYEP;Lo;0;L;;;;;N;;;;; +BAA7;HANGUL SYLLABLE MYEH;Lo;0;L;;;;;N;;;;; +BAA8;HANGUL SYLLABLE MO;Lo;0;L;;;;;N;;;;; +BAA9;HANGUL SYLLABLE MOG;Lo;0;L;;;;;N;;;;; +BAAA;HANGUL SYLLABLE MOGG;Lo;0;L;;;;;N;;;;; +BAAB;HANGUL SYLLABLE MOGS;Lo;0;L;;;;;N;;;;; +BAAC;HANGUL SYLLABLE MON;Lo;0;L;;;;;N;;;;; +BAAD;HANGUL SYLLABLE MONI;Lo;0;L;;;;;N;;;;; +BAAE;HANGUL SYLLABLE MONH;Lo;0;L;;;;;N;;;;; +BAAF;HANGUL SYLLABLE MOD;Lo;0;L;;;;;N;;;;; +BAB0;HANGUL SYLLABLE MOL;Lo;0;L;;;;;N;;;;; +BAB1;HANGUL SYLLABLE MOLG;Lo;0;L;;;;;N;;;;; +BAB2;HANGUL SYLLABLE MOLM;Lo;0;L;;;;;N;;;;; +BAB3;HANGUL SYLLABLE MOLB;Lo;0;L;;;;;N;;;;; +BAB4;HANGUL SYLLABLE MOLS;Lo;0;L;;;;;N;;;;; +BAB5;HANGUL SYLLABLE MOLT;Lo;0;L;;;;;N;;;;; +BAB6;HANGUL SYLLABLE MOLP;Lo;0;L;;;;;N;;;;; +BAB7;HANGUL SYLLABLE MOLH;Lo;0;L;;;;;N;;;;; +BAB8;HANGUL SYLLABLE MOM;Lo;0;L;;;;;N;;;;; +BAB9;HANGUL SYLLABLE MOB;Lo;0;L;;;;;N;;;;; +BABA;HANGUL SYLLABLE MOBS;Lo;0;L;;;;;N;;;;; +BABB;HANGUL SYLLABLE MOS;Lo;0;L;;;;;N;;;;; +BABC;HANGUL SYLLABLE MOSS;Lo;0;L;;;;;N;;;;; +BABD;HANGUL SYLLABLE MONG;Lo;0;L;;;;;N;;;;; +BABE;HANGUL SYLLABLE MOJ;Lo;0;L;;;;;N;;;;; +BABF;HANGUL SYLLABLE MOC;Lo;0;L;;;;;N;;;;; +BAC0;HANGUL SYLLABLE MOK;Lo;0;L;;;;;N;;;;; +BAC1;HANGUL SYLLABLE MOT;Lo;0;L;;;;;N;;;;; +BAC2;HANGUL SYLLABLE MOP;Lo;0;L;;;;;N;;;;; +BAC3;HANGUL SYLLABLE MOH;Lo;0;L;;;;;N;;;;; +BAC4;HANGUL SYLLABLE MWA;Lo;0;L;;;;;N;;;;; +BAC5;HANGUL SYLLABLE MWAG;Lo;0;L;;;;;N;;;;; +BAC6;HANGUL SYLLABLE MWAGG;Lo;0;L;;;;;N;;;;; +BAC7;HANGUL SYLLABLE MWAGS;Lo;0;L;;;;;N;;;;; +BAC8;HANGUL SYLLABLE MWAN;Lo;0;L;;;;;N;;;;; +BAC9;HANGUL SYLLABLE MWANI;Lo;0;L;;;;;N;;;;; +BACA;HANGUL SYLLABLE MWANH;Lo;0;L;;;;;N;;;;; +BACB;HANGUL SYLLABLE MWAD;Lo;0;L;;;;;N;;;;; +BACC;HANGUL SYLLABLE MWAL;Lo;0;L;;;;;N;;;;; +BACD;HANGUL SYLLABLE MWALG;Lo;0;L;;;;;N;;;;; +BACE;HANGUL SYLLABLE MWALM;Lo;0;L;;;;;N;;;;; +BACF;HANGUL SYLLABLE MWALB;Lo;0;L;;;;;N;;;;; +BAD0;HANGUL SYLLABLE MWALS;Lo;0;L;;;;;N;;;;; +BAD1;HANGUL SYLLABLE MWALT;Lo;0;L;;;;;N;;;;; +BAD2;HANGUL SYLLABLE MWALP;Lo;0;L;;;;;N;;;;; +BAD3;HANGUL SYLLABLE MWALH;Lo;0;L;;;;;N;;;;; +BAD4;HANGUL SYLLABLE MWAM;Lo;0;L;;;;;N;;;;; +BAD5;HANGUL SYLLABLE MWAB;Lo;0;L;;;;;N;;;;; +BAD6;HANGUL SYLLABLE MWABS;Lo;0;L;;;;;N;;;;; +BAD7;HANGUL SYLLABLE MWAS;Lo;0;L;;;;;N;;;;; +BAD8;HANGUL SYLLABLE MWASS;Lo;0;L;;;;;N;;;;; +BAD9;HANGUL SYLLABLE MWANG;Lo;0;L;;;;;N;;;;; +BADA;HANGUL SYLLABLE MWAJ;Lo;0;L;;;;;N;;;;; +BADB;HANGUL SYLLABLE MWAC;Lo;0;L;;;;;N;;;;; +BADC;HANGUL SYLLABLE MWAK;Lo;0;L;;;;;N;;;;; +BADD;HANGUL SYLLABLE MWAT;Lo;0;L;;;;;N;;;;; +BADE;HANGUL SYLLABLE MWAP;Lo;0;L;;;;;N;;;;; +BADF;HANGUL SYLLABLE MWAH;Lo;0;L;;;;;N;;;;; +BAE0;HANGUL SYLLABLE MWAE;Lo;0;L;;;;;N;;;;; +BAE1;HANGUL SYLLABLE MWAEG;Lo;0;L;;;;;N;;;;; +BAE2;HANGUL SYLLABLE MWAEGG;Lo;0;L;;;;;N;;;;; +BAE3;HANGUL SYLLABLE MWAEGS;Lo;0;L;;;;;N;;;;; +BAE4;HANGUL SYLLABLE MWAEN;Lo;0;L;;;;;N;;;;; +BAE5;HANGUL SYLLABLE MWAENI;Lo;0;L;;;;;N;;;;; +BAE6;HANGUL SYLLABLE MWAENH;Lo;0;L;;;;;N;;;;; +BAE7;HANGUL SYLLABLE MWAED;Lo;0;L;;;;;N;;;;; +BAE8;HANGUL SYLLABLE MWAEL;Lo;0;L;;;;;N;;;;; +BAE9;HANGUL SYLLABLE MWAELG;Lo;0;L;;;;;N;;;;; +BAEA;HANGUL SYLLABLE MWAELM;Lo;0;L;;;;;N;;;;; +BAEB;HANGUL SYLLABLE MWAELB;Lo;0;L;;;;;N;;;;; +BAEC;HANGUL SYLLABLE MWAELS;Lo;0;L;;;;;N;;;;; +BAED;HANGUL SYLLABLE MWAELT;Lo;0;L;;;;;N;;;;; +BAEE;HANGUL SYLLABLE MWAELP;Lo;0;L;;;;;N;;;;; +BAEF;HANGUL SYLLABLE MWAELH;Lo;0;L;;;;;N;;;;; +BAF0;HANGUL SYLLABLE MWAEM;Lo;0;L;;;;;N;;;;; +BAF1;HANGUL SYLLABLE MWAEB;Lo;0;L;;;;;N;;;;; +BAF2;HANGUL SYLLABLE MWAEBS;Lo;0;L;;;;;N;;;;; +BAF3;HANGUL SYLLABLE MWAES;Lo;0;L;;;;;N;;;;; +BAF4;HANGUL SYLLABLE MWAESS;Lo;0;L;;;;;N;;;;; +BAF5;HANGUL SYLLABLE MWAENG;Lo;0;L;;;;;N;;;;; +BAF6;HANGUL SYLLABLE MWAEJ;Lo;0;L;;;;;N;;;;; +BAF7;HANGUL SYLLABLE MWAEC;Lo;0;L;;;;;N;;;;; +BAF8;HANGUL SYLLABLE MWAEK;Lo;0;L;;;;;N;;;;; +BAF9;HANGUL SYLLABLE MWAET;Lo;0;L;;;;;N;;;;; +BAFA;HANGUL SYLLABLE MWAEP;Lo;0;L;;;;;N;;;;; +BAFB;HANGUL SYLLABLE MWAEH;Lo;0;L;;;;;N;;;;; +BAFC;HANGUL SYLLABLE MOE;Lo;0;L;;;;;N;;;;; +BAFD;HANGUL SYLLABLE MOEG;Lo;0;L;;;;;N;;;;; +BAFE;HANGUL SYLLABLE MOEGG;Lo;0;L;;;;;N;;;;; +BAFF;HANGUL SYLLABLE MOEGS;Lo;0;L;;;;;N;;;;; +BB00;HANGUL SYLLABLE MOEN;Lo;0;L;;;;;N;;;;; +BB01;HANGUL SYLLABLE MOENI;Lo;0;L;;;;;N;;;;; +BB02;HANGUL SYLLABLE MOENH;Lo;0;L;;;;;N;;;;; +BB03;HANGUL SYLLABLE MOED;Lo;0;L;;;;;N;;;;; +BB04;HANGUL SYLLABLE MOEL;Lo;0;L;;;;;N;;;;; +BB05;HANGUL SYLLABLE MOELG;Lo;0;L;;;;;N;;;;; +BB06;HANGUL SYLLABLE MOELM;Lo;0;L;;;;;N;;;;; +BB07;HANGUL SYLLABLE MOELB;Lo;0;L;;;;;N;;;;; +BB08;HANGUL SYLLABLE MOELS;Lo;0;L;;;;;N;;;;; +BB09;HANGUL SYLLABLE MOELT;Lo;0;L;;;;;N;;;;; +BB0A;HANGUL SYLLABLE MOELP;Lo;0;L;;;;;N;;;;; +BB0B;HANGUL SYLLABLE MOELH;Lo;0;L;;;;;N;;;;; +BB0C;HANGUL SYLLABLE MOEM;Lo;0;L;;;;;N;;;;; +BB0D;HANGUL SYLLABLE MOEB;Lo;0;L;;;;;N;;;;; +BB0E;HANGUL SYLLABLE MOEBS;Lo;0;L;;;;;N;;;;; +BB0F;HANGUL SYLLABLE MOES;Lo;0;L;;;;;N;;;;; +BB10;HANGUL SYLLABLE MOESS;Lo;0;L;;;;;N;;;;; +BB11;HANGUL SYLLABLE MOENG;Lo;0;L;;;;;N;;;;; +BB12;HANGUL SYLLABLE MOEJ;Lo;0;L;;;;;N;;;;; +BB13;HANGUL SYLLABLE MOEC;Lo;0;L;;;;;N;;;;; +BB14;HANGUL SYLLABLE MOEK;Lo;0;L;;;;;N;;;;; +BB15;HANGUL SYLLABLE MOET;Lo;0;L;;;;;N;;;;; +BB16;HANGUL SYLLABLE MOEP;Lo;0;L;;;;;N;;;;; +BB17;HANGUL SYLLABLE MOEH;Lo;0;L;;;;;N;;;;; +BB18;HANGUL SYLLABLE MYO;Lo;0;L;;;;;N;;;;; +BB19;HANGUL SYLLABLE MYOG;Lo;0;L;;;;;N;;;;; +BB1A;HANGUL SYLLABLE MYOGG;Lo;0;L;;;;;N;;;;; +BB1B;HANGUL SYLLABLE MYOGS;Lo;0;L;;;;;N;;;;; +BB1C;HANGUL SYLLABLE MYON;Lo;0;L;;;;;N;;;;; +BB1D;HANGUL SYLLABLE MYONI;Lo;0;L;;;;;N;;;;; +BB1E;HANGUL SYLLABLE MYONH;Lo;0;L;;;;;N;;;;; +BB1F;HANGUL SYLLABLE MYOD;Lo;0;L;;;;;N;;;;; +BB20;HANGUL SYLLABLE MYOL;Lo;0;L;;;;;N;;;;; +BB21;HANGUL SYLLABLE MYOLG;Lo;0;L;;;;;N;;;;; +BB22;HANGUL SYLLABLE MYOLM;Lo;0;L;;;;;N;;;;; +BB23;HANGUL SYLLABLE MYOLB;Lo;0;L;;;;;N;;;;; +BB24;HANGUL SYLLABLE MYOLS;Lo;0;L;;;;;N;;;;; +BB25;HANGUL SYLLABLE MYOLT;Lo;0;L;;;;;N;;;;; +BB26;HANGUL SYLLABLE MYOLP;Lo;0;L;;;;;N;;;;; +BB27;HANGUL SYLLABLE MYOLH;Lo;0;L;;;;;N;;;;; +BB28;HANGUL SYLLABLE MYOM;Lo;0;L;;;;;N;;;;; +BB29;HANGUL SYLLABLE MYOB;Lo;0;L;;;;;N;;;;; +BB2A;HANGUL SYLLABLE MYOBS;Lo;0;L;;;;;N;;;;; +BB2B;HANGUL SYLLABLE MYOS;Lo;0;L;;;;;N;;;;; +BB2C;HANGUL SYLLABLE MYOSS;Lo;0;L;;;;;N;;;;; +BB2D;HANGUL SYLLABLE MYONG;Lo;0;L;;;;;N;;;;; +BB2E;HANGUL SYLLABLE MYOJ;Lo;0;L;;;;;N;;;;; +BB2F;HANGUL SYLLABLE MYOC;Lo;0;L;;;;;N;;;;; +BB30;HANGUL SYLLABLE MYOK;Lo;0;L;;;;;N;;;;; +BB31;HANGUL SYLLABLE MYOT;Lo;0;L;;;;;N;;;;; +BB32;HANGUL SYLLABLE MYOP;Lo;0;L;;;;;N;;;;; +BB33;HANGUL SYLLABLE MYOH;Lo;0;L;;;;;N;;;;; +BB34;HANGUL SYLLABLE MU;Lo;0;L;;;;;N;;;;; +BB35;HANGUL SYLLABLE MUG;Lo;0;L;;;;;N;;;;; +BB36;HANGUL SYLLABLE MUGG;Lo;0;L;;;;;N;;;;; +BB37;HANGUL SYLLABLE MUGS;Lo;0;L;;;;;N;;;;; +BB38;HANGUL SYLLABLE MUN;Lo;0;L;;;;;N;;;;; +BB39;HANGUL SYLLABLE MUNI;Lo;0;L;;;;;N;;;;; +BB3A;HANGUL SYLLABLE MUNH;Lo;0;L;;;;;N;;;;; +BB3B;HANGUL SYLLABLE MUD;Lo;0;L;;;;;N;;;;; +BB3C;HANGUL SYLLABLE MUL;Lo;0;L;;;;;N;;;;; +BB3D;HANGUL SYLLABLE MULG;Lo;0;L;;;;;N;;;;; +BB3E;HANGUL SYLLABLE MULM;Lo;0;L;;;;;N;;;;; +BB3F;HANGUL SYLLABLE MULB;Lo;0;L;;;;;N;;;;; +BB40;HANGUL SYLLABLE MULS;Lo;0;L;;;;;N;;;;; +BB41;HANGUL SYLLABLE MULT;Lo;0;L;;;;;N;;;;; +BB42;HANGUL SYLLABLE MULP;Lo;0;L;;;;;N;;;;; +BB43;HANGUL SYLLABLE MULH;Lo;0;L;;;;;N;;;;; +BB44;HANGUL SYLLABLE MUM;Lo;0;L;;;;;N;;;;; +BB45;HANGUL SYLLABLE MUB;Lo;0;L;;;;;N;;;;; +BB46;HANGUL SYLLABLE MUBS;Lo;0;L;;;;;N;;;;; +BB47;HANGUL SYLLABLE MUS;Lo;0;L;;;;;N;;;;; +BB48;HANGUL SYLLABLE MUSS;Lo;0;L;;;;;N;;;;; +BB49;HANGUL SYLLABLE MUNG;Lo;0;L;;;;;N;;;;; +BB4A;HANGUL SYLLABLE MUJ;Lo;0;L;;;;;N;;;;; +BB4B;HANGUL SYLLABLE MUC;Lo;0;L;;;;;N;;;;; +BB4C;HANGUL SYLLABLE MUK;Lo;0;L;;;;;N;;;;; +BB4D;HANGUL SYLLABLE MUT;Lo;0;L;;;;;N;;;;; +BB4E;HANGUL SYLLABLE MUP;Lo;0;L;;;;;N;;;;; +BB4F;HANGUL SYLLABLE MUH;Lo;0;L;;;;;N;;;;; +BB50;HANGUL SYLLABLE MWEO;Lo;0;L;;;;;N;;;;; +BB51;HANGUL SYLLABLE MWEOG;Lo;0;L;;;;;N;;;;; +BB52;HANGUL SYLLABLE MWEOGG;Lo;0;L;;;;;N;;;;; +BB53;HANGUL SYLLABLE MWEOGS;Lo;0;L;;;;;N;;;;; +BB54;HANGUL SYLLABLE MWEON;Lo;0;L;;;;;N;;;;; +BB55;HANGUL SYLLABLE MWEONI;Lo;0;L;;;;;N;;;;; +BB56;HANGUL SYLLABLE MWEONH;Lo;0;L;;;;;N;;;;; +BB57;HANGUL SYLLABLE MWEOD;Lo;0;L;;;;;N;;;;; +BB58;HANGUL SYLLABLE MWEOL;Lo;0;L;;;;;N;;;;; +BB59;HANGUL SYLLABLE MWEOLG;Lo;0;L;;;;;N;;;;; +BB5A;HANGUL SYLLABLE MWEOLM;Lo;0;L;;;;;N;;;;; +BB5B;HANGUL SYLLABLE MWEOLB;Lo;0;L;;;;;N;;;;; +BB5C;HANGUL SYLLABLE MWEOLS;Lo;0;L;;;;;N;;;;; +BB5D;HANGUL SYLLABLE MWEOLT;Lo;0;L;;;;;N;;;;; +BB5E;HANGUL SYLLABLE MWEOLP;Lo;0;L;;;;;N;;;;; +BB5F;HANGUL SYLLABLE MWEOLH;Lo;0;L;;;;;N;;;;; +BB60;HANGUL SYLLABLE MWEOM;Lo;0;L;;;;;N;;;;; +BB61;HANGUL SYLLABLE MWEOB;Lo;0;L;;;;;N;;;;; +BB62;HANGUL SYLLABLE MWEOBS;Lo;0;L;;;;;N;;;;; +BB63;HANGUL SYLLABLE MWEOS;Lo;0;L;;;;;N;;;;; +BB64;HANGUL SYLLABLE MWEOSS;Lo;0;L;;;;;N;;;;; +BB65;HANGUL SYLLABLE MWEONG;Lo;0;L;;;;;N;;;;; +BB66;HANGUL SYLLABLE MWEOJ;Lo;0;L;;;;;N;;;;; +BB67;HANGUL SYLLABLE MWEOC;Lo;0;L;;;;;N;;;;; +BB68;HANGUL SYLLABLE MWEOK;Lo;0;L;;;;;N;;;;; +BB69;HANGUL SYLLABLE MWEOT;Lo;0;L;;;;;N;;;;; +BB6A;HANGUL SYLLABLE MWEOP;Lo;0;L;;;;;N;;;;; +BB6B;HANGUL SYLLABLE MWEOH;Lo;0;L;;;;;N;;;;; +BB6C;HANGUL SYLLABLE MWE;Lo;0;L;;;;;N;;;;; +BB6D;HANGUL SYLLABLE MWEG;Lo;0;L;;;;;N;;;;; +BB6E;HANGUL SYLLABLE MWEGG;Lo;0;L;;;;;N;;;;; +BB6F;HANGUL SYLLABLE MWEGS;Lo;0;L;;;;;N;;;;; +BB70;HANGUL SYLLABLE MWEN;Lo;0;L;;;;;N;;;;; +BB71;HANGUL SYLLABLE MWENI;Lo;0;L;;;;;N;;;;; +BB72;HANGUL SYLLABLE MWENH;Lo;0;L;;;;;N;;;;; +BB73;HANGUL SYLLABLE MWED;Lo;0;L;;;;;N;;;;; +BB74;HANGUL SYLLABLE MWEL;Lo;0;L;;;;;N;;;;; +BB75;HANGUL SYLLABLE MWELG;Lo;0;L;;;;;N;;;;; +BB76;HANGUL SYLLABLE MWELM;Lo;0;L;;;;;N;;;;; +BB77;HANGUL SYLLABLE MWELB;Lo;0;L;;;;;N;;;;; +BB78;HANGUL SYLLABLE MWELS;Lo;0;L;;;;;N;;;;; +BB79;HANGUL SYLLABLE MWELT;Lo;0;L;;;;;N;;;;; +BB7A;HANGUL SYLLABLE MWELP;Lo;0;L;;;;;N;;;;; +BB7B;HANGUL SYLLABLE MWELH;Lo;0;L;;;;;N;;;;; +BB7C;HANGUL SYLLABLE MWEM;Lo;0;L;;;;;N;;;;; +BB7D;HANGUL SYLLABLE MWEB;Lo;0;L;;;;;N;;;;; +BB7E;HANGUL SYLLABLE MWEBS;Lo;0;L;;;;;N;;;;; +BB7F;HANGUL SYLLABLE MWES;Lo;0;L;;;;;N;;;;; +BB80;HANGUL SYLLABLE MWESS;Lo;0;L;;;;;N;;;;; +BB81;HANGUL SYLLABLE MWENG;Lo;0;L;;;;;N;;;;; +BB82;HANGUL SYLLABLE MWEJ;Lo;0;L;;;;;N;;;;; +BB83;HANGUL SYLLABLE MWEC;Lo;0;L;;;;;N;;;;; +BB84;HANGUL SYLLABLE MWEK;Lo;0;L;;;;;N;;;;; +BB85;HANGUL SYLLABLE MWET;Lo;0;L;;;;;N;;;;; +BB86;HANGUL SYLLABLE MWEP;Lo;0;L;;;;;N;;;;; +BB87;HANGUL SYLLABLE MWEH;Lo;0;L;;;;;N;;;;; +BB88;HANGUL SYLLABLE MWI;Lo;0;L;;;;;N;;;;; +BB89;HANGUL SYLLABLE MWIG;Lo;0;L;;;;;N;;;;; +BB8A;HANGUL SYLLABLE MWIGG;Lo;0;L;;;;;N;;;;; +BB8B;HANGUL SYLLABLE MWIGS;Lo;0;L;;;;;N;;;;; +BB8C;HANGUL SYLLABLE MWIN;Lo;0;L;;;;;N;;;;; +BB8D;HANGUL SYLLABLE MWINI;Lo;0;L;;;;;N;;;;; +BB8E;HANGUL SYLLABLE MWINH;Lo;0;L;;;;;N;;;;; +BB8F;HANGUL SYLLABLE MWID;Lo;0;L;;;;;N;;;;; +BB90;HANGUL SYLLABLE MWIL;Lo;0;L;;;;;N;;;;; +BB91;HANGUL SYLLABLE MWILG;Lo;0;L;;;;;N;;;;; +BB92;HANGUL SYLLABLE MWILM;Lo;0;L;;;;;N;;;;; +BB93;HANGUL SYLLABLE MWILB;Lo;0;L;;;;;N;;;;; +BB94;HANGUL SYLLABLE MWILS;Lo;0;L;;;;;N;;;;; +BB95;HANGUL SYLLABLE MWILT;Lo;0;L;;;;;N;;;;; +BB96;HANGUL SYLLABLE MWILP;Lo;0;L;;;;;N;;;;; +BB97;HANGUL SYLLABLE MWILH;Lo;0;L;;;;;N;;;;; +BB98;HANGUL SYLLABLE MWIM;Lo;0;L;;;;;N;;;;; +BB99;HANGUL SYLLABLE MWIB;Lo;0;L;;;;;N;;;;; +BB9A;HANGUL SYLLABLE MWIBS;Lo;0;L;;;;;N;;;;; +BB9B;HANGUL SYLLABLE MWIS;Lo;0;L;;;;;N;;;;; +BB9C;HANGUL SYLLABLE MWISS;Lo;0;L;;;;;N;;;;; +BB9D;HANGUL SYLLABLE MWING;Lo;0;L;;;;;N;;;;; +BB9E;HANGUL SYLLABLE MWIJ;Lo;0;L;;;;;N;;;;; +BB9F;HANGUL SYLLABLE MWIC;Lo;0;L;;;;;N;;;;; +BBA0;HANGUL SYLLABLE MWIK;Lo;0;L;;;;;N;;;;; +BBA1;HANGUL SYLLABLE MWIT;Lo;0;L;;;;;N;;;;; +BBA2;HANGUL SYLLABLE MWIP;Lo;0;L;;;;;N;;;;; +BBA3;HANGUL SYLLABLE MWIH;Lo;0;L;;;;;N;;;;; +BBA4;HANGUL SYLLABLE MYU;Lo;0;L;;;;;N;;;;; +BBA5;HANGUL SYLLABLE MYUG;Lo;0;L;;;;;N;;;;; +BBA6;HANGUL SYLLABLE MYUGG;Lo;0;L;;;;;N;;;;; +BBA7;HANGUL SYLLABLE MYUGS;Lo;0;L;;;;;N;;;;; +BBA8;HANGUL SYLLABLE MYUN;Lo;0;L;;;;;N;;;;; +BBA9;HANGUL SYLLABLE MYUNI;Lo;0;L;;;;;N;;;;; +BBAA;HANGUL SYLLABLE MYUNH;Lo;0;L;;;;;N;;;;; +BBAB;HANGUL SYLLABLE MYUD;Lo;0;L;;;;;N;;;;; +BBAC;HANGUL SYLLABLE MYUL;Lo;0;L;;;;;N;;;;; +BBAD;HANGUL SYLLABLE MYULG;Lo;0;L;;;;;N;;;;; +BBAE;HANGUL SYLLABLE MYULM;Lo;0;L;;;;;N;;;;; +BBAF;HANGUL SYLLABLE MYULB;Lo;0;L;;;;;N;;;;; +BBB0;HANGUL SYLLABLE MYULS;Lo;0;L;;;;;N;;;;; +BBB1;HANGUL SYLLABLE MYULT;Lo;0;L;;;;;N;;;;; +BBB2;HANGUL SYLLABLE MYULP;Lo;0;L;;;;;N;;;;; +BBB3;HANGUL SYLLABLE MYULH;Lo;0;L;;;;;N;;;;; +BBB4;HANGUL SYLLABLE MYUM;Lo;0;L;;;;;N;;;;; +BBB5;HANGUL SYLLABLE MYUB;Lo;0;L;;;;;N;;;;; +BBB6;HANGUL SYLLABLE MYUBS;Lo;0;L;;;;;N;;;;; +BBB7;HANGUL SYLLABLE MYUS;Lo;0;L;;;;;N;;;;; +BBB8;HANGUL SYLLABLE MYUSS;Lo;0;L;;;;;N;;;;; +BBB9;HANGUL SYLLABLE MYUNG;Lo;0;L;;;;;N;;;;; +BBBA;HANGUL SYLLABLE MYUJ;Lo;0;L;;;;;N;;;;; +BBBB;HANGUL SYLLABLE MYUC;Lo;0;L;;;;;N;;;;; +BBBC;HANGUL SYLLABLE MYUK;Lo;0;L;;;;;N;;;;; +BBBD;HANGUL SYLLABLE MYUT;Lo;0;L;;;;;N;;;;; +BBBE;HANGUL SYLLABLE MYUP;Lo;0;L;;;;;N;;;;; +BBBF;HANGUL SYLLABLE MYUH;Lo;0;L;;;;;N;;;;; +BBC0;HANGUL SYLLABLE MEU;Lo;0;L;;;;;N;;;;; +BBC1;HANGUL SYLLABLE MEUG;Lo;0;L;;;;;N;;;;; +BBC2;HANGUL SYLLABLE MEUGG;Lo;0;L;;;;;N;;;;; +BBC3;HANGUL SYLLABLE MEUGS;Lo;0;L;;;;;N;;;;; +BBC4;HANGUL SYLLABLE MEUN;Lo;0;L;;;;;N;;;;; +BBC5;HANGUL SYLLABLE MEUNI;Lo;0;L;;;;;N;;;;; +BBC6;HANGUL SYLLABLE MEUNH;Lo;0;L;;;;;N;;;;; +BBC7;HANGUL SYLLABLE MEUD;Lo;0;L;;;;;N;;;;; +BBC8;HANGUL SYLLABLE MEUL;Lo;0;L;;;;;N;;;;; +BBC9;HANGUL SYLLABLE MEULG;Lo;0;L;;;;;N;;;;; +BBCA;HANGUL SYLLABLE MEULM;Lo;0;L;;;;;N;;;;; +BBCB;HANGUL SYLLABLE MEULB;Lo;0;L;;;;;N;;;;; +BBCC;HANGUL SYLLABLE MEULS;Lo;0;L;;;;;N;;;;; +BBCD;HANGUL SYLLABLE MEULT;Lo;0;L;;;;;N;;;;; +BBCE;HANGUL SYLLABLE MEULP;Lo;0;L;;;;;N;;;;; +BBCF;HANGUL SYLLABLE MEULH;Lo;0;L;;;;;N;;;;; +BBD0;HANGUL SYLLABLE MEUM;Lo;0;L;;;;;N;;;;; +BBD1;HANGUL SYLLABLE MEUB;Lo;0;L;;;;;N;;;;; +BBD2;HANGUL SYLLABLE MEUBS;Lo;0;L;;;;;N;;;;; +BBD3;HANGUL SYLLABLE MEUS;Lo;0;L;;;;;N;;;;; +BBD4;HANGUL SYLLABLE MEUSS;Lo;0;L;;;;;N;;;;; +BBD5;HANGUL SYLLABLE MEUNG;Lo;0;L;;;;;N;;;;; +BBD6;HANGUL SYLLABLE MEUJ;Lo;0;L;;;;;N;;;;; +BBD7;HANGUL SYLLABLE MEUC;Lo;0;L;;;;;N;;;;; +BBD8;HANGUL SYLLABLE MEUK;Lo;0;L;;;;;N;;;;; +BBD9;HANGUL SYLLABLE MEUT;Lo;0;L;;;;;N;;;;; +BBDA;HANGUL SYLLABLE MEUP;Lo;0;L;;;;;N;;;;; +BBDB;HANGUL SYLLABLE MEUH;Lo;0;L;;;;;N;;;;; +BBDC;HANGUL SYLLABLE MYI;Lo;0;L;;;;;N;;;;; +BBDD;HANGUL SYLLABLE MYIG;Lo;0;L;;;;;N;;;;; +BBDE;HANGUL SYLLABLE MYIGG;Lo;0;L;;;;;N;;;;; +BBDF;HANGUL SYLLABLE MYIGS;Lo;0;L;;;;;N;;;;; +BBE0;HANGUL SYLLABLE MYIN;Lo;0;L;;;;;N;;;;; +BBE1;HANGUL SYLLABLE MYINI;Lo;0;L;;;;;N;;;;; +BBE2;HANGUL SYLLABLE MYINH;Lo;0;L;;;;;N;;;;; +BBE3;HANGUL SYLLABLE MYID;Lo;0;L;;;;;N;;;;; +BBE4;HANGUL SYLLABLE MYIL;Lo;0;L;;;;;N;;;;; +BBE5;HANGUL SYLLABLE MYILG;Lo;0;L;;;;;N;;;;; +BBE6;HANGUL SYLLABLE MYILM;Lo;0;L;;;;;N;;;;; +BBE7;HANGUL SYLLABLE MYILB;Lo;0;L;;;;;N;;;;; +BBE8;HANGUL SYLLABLE MYILS;Lo;0;L;;;;;N;;;;; +BBE9;HANGUL SYLLABLE MYILT;Lo;0;L;;;;;N;;;;; +BBEA;HANGUL SYLLABLE MYILP;Lo;0;L;;;;;N;;;;; +BBEB;HANGUL SYLLABLE MYILH;Lo;0;L;;;;;N;;;;; +BBEC;HANGUL SYLLABLE MYIM;Lo;0;L;;;;;N;;;;; +BBED;HANGUL SYLLABLE MYIB;Lo;0;L;;;;;N;;;;; +BBEE;HANGUL SYLLABLE MYIBS;Lo;0;L;;;;;N;;;;; +BBEF;HANGUL SYLLABLE MYIS;Lo;0;L;;;;;N;;;;; +BBF0;HANGUL SYLLABLE MYISS;Lo;0;L;;;;;N;;;;; +BBF1;HANGUL SYLLABLE MYING;Lo;0;L;;;;;N;;;;; +BBF2;HANGUL SYLLABLE MYIJ;Lo;0;L;;;;;N;;;;; +BBF3;HANGUL SYLLABLE MYIC;Lo;0;L;;;;;N;;;;; +BBF4;HANGUL SYLLABLE MYIK;Lo;0;L;;;;;N;;;;; +BBF5;HANGUL SYLLABLE MYIT;Lo;0;L;;;;;N;;;;; +BBF6;HANGUL SYLLABLE MYIP;Lo;0;L;;;;;N;;;;; +BBF7;HANGUL SYLLABLE MYIH;Lo;0;L;;;;;N;;;;; +BBF8;HANGUL SYLLABLE MI;Lo;0;L;;;;;N;;;;; +BBF9;HANGUL SYLLABLE MIG;Lo;0;L;;;;;N;;;;; +BBFA;HANGUL SYLLABLE MIGG;Lo;0;L;;;;;N;;;;; +BBFB;HANGUL SYLLABLE MIGS;Lo;0;L;;;;;N;;;;; +BBFC;HANGUL SYLLABLE MIN;Lo;0;L;;;;;N;;;;; +BBFD;HANGUL SYLLABLE MINI;Lo;0;L;;;;;N;;;;; +BBFE;HANGUL SYLLABLE MINH;Lo;0;L;;;;;N;;;;; +BBFF;HANGUL SYLLABLE MID;Lo;0;L;;;;;N;;;;; +BC00;HANGUL SYLLABLE MIL;Lo;0;L;;;;;N;;;;; +BC01;HANGUL SYLLABLE MILG;Lo;0;L;;;;;N;;;;; +BC02;HANGUL SYLLABLE MILM;Lo;0;L;;;;;N;;;;; +BC03;HANGUL SYLLABLE MILB;Lo;0;L;;;;;N;;;;; +BC04;HANGUL SYLLABLE MILS;Lo;0;L;;;;;N;;;;; +BC05;HANGUL SYLLABLE MILT;Lo;0;L;;;;;N;;;;; +BC06;HANGUL SYLLABLE MILP;Lo;0;L;;;;;N;;;;; +BC07;HANGUL SYLLABLE MILH;Lo;0;L;;;;;N;;;;; +BC08;HANGUL SYLLABLE MIM;Lo;0;L;;;;;N;;;;; +BC09;HANGUL SYLLABLE MIB;Lo;0;L;;;;;N;;;;; +BC0A;HANGUL SYLLABLE MIBS;Lo;0;L;;;;;N;;;;; +BC0B;HANGUL SYLLABLE MIS;Lo;0;L;;;;;N;;;;; +BC0C;HANGUL SYLLABLE MISS;Lo;0;L;;;;;N;;;;; +BC0D;HANGUL SYLLABLE MING;Lo;0;L;;;;;N;;;;; +BC0E;HANGUL SYLLABLE MIJ;Lo;0;L;;;;;N;;;;; +BC0F;HANGUL SYLLABLE MIC;Lo;0;L;;;;;N;;;;; +BC10;HANGUL SYLLABLE MIK;Lo;0;L;;;;;N;;;;; +BC11;HANGUL SYLLABLE MIT;Lo;0;L;;;;;N;;;;; +BC12;HANGUL SYLLABLE MIP;Lo;0;L;;;;;N;;;;; +BC13;HANGUL SYLLABLE MIH;Lo;0;L;;;;;N;;;;; +BC14;HANGUL SYLLABLE BA;Lo;0;L;;;;;N;;;;; +BC15;HANGUL SYLLABLE BAG;Lo;0;L;;;;;N;;;;; +BC16;HANGUL SYLLABLE BAGG;Lo;0;L;;;;;N;;;;; +BC17;HANGUL SYLLABLE BAGS;Lo;0;L;;;;;N;;;;; +BC18;HANGUL SYLLABLE BAN;Lo;0;L;;;;;N;;;;; +BC19;HANGUL SYLLABLE BANI;Lo;0;L;;;;;N;;;;; +BC1A;HANGUL SYLLABLE BANH;Lo;0;L;;;;;N;;;;; +BC1B;HANGUL SYLLABLE BAD;Lo;0;L;;;;;N;;;;; +BC1C;HANGUL SYLLABLE BAL;Lo;0;L;;;;;N;;;;; +BC1D;HANGUL SYLLABLE BALG;Lo;0;L;;;;;N;;;;; +BC1E;HANGUL SYLLABLE BALM;Lo;0;L;;;;;N;;;;; +BC1F;HANGUL SYLLABLE BALB;Lo;0;L;;;;;N;;;;; +BC20;HANGUL SYLLABLE BALS;Lo;0;L;;;;;N;;;;; +BC21;HANGUL SYLLABLE BALT;Lo;0;L;;;;;N;;;;; +BC22;HANGUL SYLLABLE BALP;Lo;0;L;;;;;N;;;;; +BC23;HANGUL SYLLABLE BALH;Lo;0;L;;;;;N;;;;; +BC24;HANGUL SYLLABLE BAM;Lo;0;L;;;;;N;;;;; +BC25;HANGUL SYLLABLE BAB;Lo;0;L;;;;;N;;;;; +BC26;HANGUL SYLLABLE BABS;Lo;0;L;;;;;N;;;;; +BC27;HANGUL SYLLABLE BAS;Lo;0;L;;;;;N;;;;; +BC28;HANGUL SYLLABLE BASS;Lo;0;L;;;;;N;;;;; +BC29;HANGUL SYLLABLE BANG;Lo;0;L;;;;;N;;;;; +BC2A;HANGUL SYLLABLE BAJ;Lo;0;L;;;;;N;;;;; +BC2B;HANGUL SYLLABLE BAC;Lo;0;L;;;;;N;;;;; +BC2C;HANGUL SYLLABLE BAK;Lo;0;L;;;;;N;;;;; +BC2D;HANGUL SYLLABLE BAT;Lo;0;L;;;;;N;;;;; +BC2E;HANGUL SYLLABLE BAP;Lo;0;L;;;;;N;;;;; +BC2F;HANGUL SYLLABLE BAH;Lo;0;L;;;;;N;;;;; +BC30;HANGUL SYLLABLE BAE;Lo;0;L;;;;;N;;;;; +BC31;HANGUL SYLLABLE BAEG;Lo;0;L;;;;;N;;;;; +BC32;HANGUL SYLLABLE BAEGG;Lo;0;L;;;;;N;;;;; +BC33;HANGUL SYLLABLE BAEGS;Lo;0;L;;;;;N;;;;; +BC34;HANGUL SYLLABLE BAEN;Lo;0;L;;;;;N;;;;; +BC35;HANGUL SYLLABLE BAENI;Lo;0;L;;;;;N;;;;; +BC36;HANGUL SYLLABLE BAENH;Lo;0;L;;;;;N;;;;; +BC37;HANGUL SYLLABLE BAED;Lo;0;L;;;;;N;;;;; +BC38;HANGUL SYLLABLE BAEL;Lo;0;L;;;;;N;;;;; +BC39;HANGUL SYLLABLE BAELG;Lo;0;L;;;;;N;;;;; +BC3A;HANGUL SYLLABLE BAELM;Lo;0;L;;;;;N;;;;; +BC3B;HANGUL SYLLABLE BAELB;Lo;0;L;;;;;N;;;;; +BC3C;HANGUL SYLLABLE BAELS;Lo;0;L;;;;;N;;;;; +BC3D;HANGUL SYLLABLE BAELT;Lo;0;L;;;;;N;;;;; +BC3E;HANGUL SYLLABLE BAELP;Lo;0;L;;;;;N;;;;; +BC3F;HANGUL SYLLABLE BAELH;Lo;0;L;;;;;N;;;;; +BC40;HANGUL SYLLABLE BAEM;Lo;0;L;;;;;N;;;;; +BC41;HANGUL SYLLABLE BAEB;Lo;0;L;;;;;N;;;;; +BC42;HANGUL SYLLABLE BAEBS;Lo;0;L;;;;;N;;;;; +BC43;HANGUL SYLLABLE BAES;Lo;0;L;;;;;N;;;;; +BC44;HANGUL SYLLABLE BAESS;Lo;0;L;;;;;N;;;;; +BC45;HANGUL SYLLABLE BAENG;Lo;0;L;;;;;N;;;;; +BC46;HANGUL SYLLABLE BAEJ;Lo;0;L;;;;;N;;;;; +BC47;HANGUL SYLLABLE BAEC;Lo;0;L;;;;;N;;;;; +BC48;HANGUL SYLLABLE BAEK;Lo;0;L;;;;;N;;;;; +BC49;HANGUL SYLLABLE BAET;Lo;0;L;;;;;N;;;;; +BC4A;HANGUL SYLLABLE BAEP;Lo;0;L;;;;;N;;;;; +BC4B;HANGUL SYLLABLE BAEH;Lo;0;L;;;;;N;;;;; +BC4C;HANGUL SYLLABLE BYA;Lo;0;L;;;;;N;;;;; +BC4D;HANGUL SYLLABLE BYAG;Lo;0;L;;;;;N;;;;; +BC4E;HANGUL SYLLABLE BYAGG;Lo;0;L;;;;;N;;;;; +BC4F;HANGUL SYLLABLE BYAGS;Lo;0;L;;;;;N;;;;; +BC50;HANGUL SYLLABLE BYAN;Lo;0;L;;;;;N;;;;; +BC51;HANGUL SYLLABLE BYANI;Lo;0;L;;;;;N;;;;; +BC52;HANGUL SYLLABLE BYANH;Lo;0;L;;;;;N;;;;; +BC53;HANGUL SYLLABLE BYAD;Lo;0;L;;;;;N;;;;; +BC54;HANGUL SYLLABLE BYAL;Lo;0;L;;;;;N;;;;; +BC55;HANGUL SYLLABLE BYALG;Lo;0;L;;;;;N;;;;; +BC56;HANGUL SYLLABLE BYALM;Lo;0;L;;;;;N;;;;; +BC57;HANGUL SYLLABLE BYALB;Lo;0;L;;;;;N;;;;; +BC58;HANGUL SYLLABLE BYALS;Lo;0;L;;;;;N;;;;; +BC59;HANGUL SYLLABLE BYALT;Lo;0;L;;;;;N;;;;; +BC5A;HANGUL SYLLABLE BYALP;Lo;0;L;;;;;N;;;;; +BC5B;HANGUL SYLLABLE BYALH;Lo;0;L;;;;;N;;;;; +BC5C;HANGUL SYLLABLE BYAM;Lo;0;L;;;;;N;;;;; +BC5D;HANGUL SYLLABLE BYAB;Lo;0;L;;;;;N;;;;; +BC5E;HANGUL SYLLABLE BYABS;Lo;0;L;;;;;N;;;;; +BC5F;HANGUL SYLLABLE BYAS;Lo;0;L;;;;;N;;;;; +BC60;HANGUL SYLLABLE BYASS;Lo;0;L;;;;;N;;;;; +BC61;HANGUL SYLLABLE BYANG;Lo;0;L;;;;;N;;;;; +BC62;HANGUL SYLLABLE BYAJ;Lo;0;L;;;;;N;;;;; +BC63;HANGUL SYLLABLE BYAC;Lo;0;L;;;;;N;;;;; +BC64;HANGUL SYLLABLE BYAK;Lo;0;L;;;;;N;;;;; +BC65;HANGUL SYLLABLE BYAT;Lo;0;L;;;;;N;;;;; +BC66;HANGUL SYLLABLE BYAP;Lo;0;L;;;;;N;;;;; +BC67;HANGUL SYLLABLE BYAH;Lo;0;L;;;;;N;;;;; +BC68;HANGUL SYLLABLE BYAE;Lo;0;L;;;;;N;;;;; +BC69;HANGUL SYLLABLE BYAEG;Lo;0;L;;;;;N;;;;; +BC6A;HANGUL SYLLABLE BYAEGG;Lo;0;L;;;;;N;;;;; +BC6B;HANGUL SYLLABLE BYAEGS;Lo;0;L;;;;;N;;;;; +BC6C;HANGUL SYLLABLE BYAEN;Lo;0;L;;;;;N;;;;; +BC6D;HANGUL SYLLABLE BYAENI;Lo;0;L;;;;;N;;;;; +BC6E;HANGUL SYLLABLE BYAENH;Lo;0;L;;;;;N;;;;; +BC6F;HANGUL SYLLABLE BYAED;Lo;0;L;;;;;N;;;;; +BC70;HANGUL SYLLABLE BYAEL;Lo;0;L;;;;;N;;;;; +BC71;HANGUL SYLLABLE BYAELG;Lo;0;L;;;;;N;;;;; +BC72;HANGUL SYLLABLE BYAELM;Lo;0;L;;;;;N;;;;; +BC73;HANGUL SYLLABLE BYAELB;Lo;0;L;;;;;N;;;;; +BC74;HANGUL SYLLABLE BYAELS;Lo;0;L;;;;;N;;;;; +BC75;HANGUL SYLLABLE BYAELT;Lo;0;L;;;;;N;;;;; +BC76;HANGUL SYLLABLE BYAELP;Lo;0;L;;;;;N;;;;; +BC77;HANGUL SYLLABLE BYAELH;Lo;0;L;;;;;N;;;;; +BC78;HANGUL SYLLABLE BYAEM;Lo;0;L;;;;;N;;;;; +BC79;HANGUL SYLLABLE BYAEB;Lo;0;L;;;;;N;;;;; +BC7A;HANGUL SYLLABLE BYAEBS;Lo;0;L;;;;;N;;;;; +BC7B;HANGUL SYLLABLE BYAES;Lo;0;L;;;;;N;;;;; +BC7C;HANGUL SYLLABLE BYAESS;Lo;0;L;;;;;N;;;;; +BC7D;HANGUL SYLLABLE BYAENG;Lo;0;L;;;;;N;;;;; +BC7E;HANGUL SYLLABLE BYAEJ;Lo;0;L;;;;;N;;;;; +BC7F;HANGUL SYLLABLE BYAEC;Lo;0;L;;;;;N;;;;; +BC80;HANGUL SYLLABLE BYAEK;Lo;0;L;;;;;N;;;;; +BC81;HANGUL SYLLABLE BYAET;Lo;0;L;;;;;N;;;;; +BC82;HANGUL SYLLABLE BYAEP;Lo;0;L;;;;;N;;;;; +BC83;HANGUL SYLLABLE BYAEH;Lo;0;L;;;;;N;;;;; +BC84;HANGUL SYLLABLE BEO;Lo;0;L;;;;;N;;;;; +BC85;HANGUL SYLLABLE BEOG;Lo;0;L;;;;;N;;;;; +BC86;HANGUL SYLLABLE BEOGG;Lo;0;L;;;;;N;;;;; +BC87;HANGUL SYLLABLE BEOGS;Lo;0;L;;;;;N;;;;; +BC88;HANGUL SYLLABLE BEON;Lo;0;L;;;;;N;;;;; +BC89;HANGUL SYLLABLE BEONI;Lo;0;L;;;;;N;;;;; +BC8A;HANGUL SYLLABLE BEONH;Lo;0;L;;;;;N;;;;; +BC8B;HANGUL SYLLABLE BEOD;Lo;0;L;;;;;N;;;;; +BC8C;HANGUL SYLLABLE BEOL;Lo;0;L;;;;;N;;;;; +BC8D;HANGUL SYLLABLE BEOLG;Lo;0;L;;;;;N;;;;; +BC8E;HANGUL SYLLABLE BEOLM;Lo;0;L;;;;;N;;;;; +BC8F;HANGUL SYLLABLE BEOLB;Lo;0;L;;;;;N;;;;; +BC90;HANGUL SYLLABLE BEOLS;Lo;0;L;;;;;N;;;;; +BC91;HANGUL SYLLABLE BEOLT;Lo;0;L;;;;;N;;;;; +BC92;HANGUL SYLLABLE BEOLP;Lo;0;L;;;;;N;;;;; +BC93;HANGUL SYLLABLE BEOLH;Lo;0;L;;;;;N;;;;; +BC94;HANGUL SYLLABLE BEOM;Lo;0;L;;;;;N;;;;; +BC95;HANGUL SYLLABLE BEOB;Lo;0;L;;;;;N;;;;; +BC96;HANGUL SYLLABLE BEOBS;Lo;0;L;;;;;N;;;;; +BC97;HANGUL SYLLABLE BEOS;Lo;0;L;;;;;N;;;;; +BC98;HANGUL SYLLABLE BEOSS;Lo;0;L;;;;;N;;;;; +BC99;HANGUL SYLLABLE BEONG;Lo;0;L;;;;;N;;;;; +BC9A;HANGUL SYLLABLE BEOJ;Lo;0;L;;;;;N;;;;; +BC9B;HANGUL SYLLABLE BEOC;Lo;0;L;;;;;N;;;;; +BC9C;HANGUL SYLLABLE BEOK;Lo;0;L;;;;;N;;;;; +BC9D;HANGUL SYLLABLE BEOT;Lo;0;L;;;;;N;;;;; +BC9E;HANGUL SYLLABLE BEOP;Lo;0;L;;;;;N;;;;; +BC9F;HANGUL SYLLABLE BEOH;Lo;0;L;;;;;N;;;;; +BCA0;HANGUL SYLLABLE BE;Lo;0;L;;;;;N;;;;; +BCA1;HANGUL SYLLABLE BEG;Lo;0;L;;;;;N;;;;; +BCA2;HANGUL SYLLABLE BEGG;Lo;0;L;;;;;N;;;;; +BCA3;HANGUL SYLLABLE BEGS;Lo;0;L;;;;;N;;;;; +BCA4;HANGUL SYLLABLE BEN;Lo;0;L;;;;;N;;;;; +BCA5;HANGUL SYLLABLE BENI;Lo;0;L;;;;;N;;;;; +BCA6;HANGUL SYLLABLE BENH;Lo;0;L;;;;;N;;;;; +BCA7;HANGUL SYLLABLE BED;Lo;0;L;;;;;N;;;;; +BCA8;HANGUL SYLLABLE BEL;Lo;0;L;;;;;N;;;;; +BCA9;HANGUL SYLLABLE BELG;Lo;0;L;;;;;N;;;;; +BCAA;HANGUL SYLLABLE BELM;Lo;0;L;;;;;N;;;;; +BCAB;HANGUL SYLLABLE BELB;Lo;0;L;;;;;N;;;;; +BCAC;HANGUL SYLLABLE BELS;Lo;0;L;;;;;N;;;;; +BCAD;HANGUL SYLLABLE BELT;Lo;0;L;;;;;N;;;;; +BCAE;HANGUL SYLLABLE BELP;Lo;0;L;;;;;N;;;;; +BCAF;HANGUL SYLLABLE BELH;Lo;0;L;;;;;N;;;;; +BCB0;HANGUL SYLLABLE BEM;Lo;0;L;;;;;N;;;;; +BCB1;HANGUL SYLLABLE BEB;Lo;0;L;;;;;N;;;;; +BCB2;HANGUL SYLLABLE BEBS;Lo;0;L;;;;;N;;;;; +BCB3;HANGUL SYLLABLE BES;Lo;0;L;;;;;N;;;;; +BCB4;HANGUL SYLLABLE BESS;Lo;0;L;;;;;N;;;;; +BCB5;HANGUL SYLLABLE BENG;Lo;0;L;;;;;N;;;;; +BCB6;HANGUL SYLLABLE BEJ;Lo;0;L;;;;;N;;;;; +BCB7;HANGUL SYLLABLE BEC;Lo;0;L;;;;;N;;;;; +BCB8;HANGUL SYLLABLE BEK;Lo;0;L;;;;;N;;;;; +BCB9;HANGUL SYLLABLE BET;Lo;0;L;;;;;N;;;;; +BCBA;HANGUL SYLLABLE BEP;Lo;0;L;;;;;N;;;;; +BCBB;HANGUL SYLLABLE BEH;Lo;0;L;;;;;N;;;;; +BCBC;HANGUL SYLLABLE BYEO;Lo;0;L;;;;;N;;;;; +BCBD;HANGUL SYLLABLE BYEOG;Lo;0;L;;;;;N;;;;; +BCBE;HANGUL SYLLABLE BYEOGG;Lo;0;L;;;;;N;;;;; +BCBF;HANGUL SYLLABLE BYEOGS;Lo;0;L;;;;;N;;;;; +BCC0;HANGUL SYLLABLE BYEON;Lo;0;L;;;;;N;;;;; +BCC1;HANGUL SYLLABLE BYEONI;Lo;0;L;;;;;N;;;;; +BCC2;HANGUL SYLLABLE BYEONH;Lo;0;L;;;;;N;;;;; +BCC3;HANGUL SYLLABLE BYEOD;Lo;0;L;;;;;N;;;;; +BCC4;HANGUL SYLLABLE BYEOL;Lo;0;L;;;;;N;;;;; +BCC5;HANGUL SYLLABLE BYEOLG;Lo;0;L;;;;;N;;;;; +BCC6;HANGUL SYLLABLE BYEOLM;Lo;0;L;;;;;N;;;;; +BCC7;HANGUL SYLLABLE BYEOLB;Lo;0;L;;;;;N;;;;; +BCC8;HANGUL SYLLABLE BYEOLS;Lo;0;L;;;;;N;;;;; +BCC9;HANGUL SYLLABLE BYEOLT;Lo;0;L;;;;;N;;;;; +BCCA;HANGUL SYLLABLE BYEOLP;Lo;0;L;;;;;N;;;;; +BCCB;HANGUL SYLLABLE BYEOLH;Lo;0;L;;;;;N;;;;; +BCCC;HANGUL SYLLABLE BYEOM;Lo;0;L;;;;;N;;;;; +BCCD;HANGUL SYLLABLE BYEOB;Lo;0;L;;;;;N;;;;; +BCCE;HANGUL SYLLABLE BYEOBS;Lo;0;L;;;;;N;;;;; +BCCF;HANGUL SYLLABLE BYEOS;Lo;0;L;;;;;N;;;;; +BCD0;HANGUL SYLLABLE BYEOSS;Lo;0;L;;;;;N;;;;; +BCD1;HANGUL SYLLABLE BYEONG;Lo;0;L;;;;;N;;;;; +BCD2;HANGUL SYLLABLE BYEOJ;Lo;0;L;;;;;N;;;;; +BCD3;HANGUL SYLLABLE BYEOC;Lo;0;L;;;;;N;;;;; +BCD4;HANGUL SYLLABLE BYEOK;Lo;0;L;;;;;N;;;;; +BCD5;HANGUL SYLLABLE BYEOT;Lo;0;L;;;;;N;;;;; +BCD6;HANGUL SYLLABLE BYEOP;Lo;0;L;;;;;N;;;;; +BCD7;HANGUL SYLLABLE BYEOH;Lo;0;L;;;;;N;;;;; +BCD8;HANGUL SYLLABLE BYE;Lo;0;L;;;;;N;;;;; +BCD9;HANGUL SYLLABLE BYEG;Lo;0;L;;;;;N;;;;; +BCDA;HANGUL SYLLABLE BYEGG;Lo;0;L;;;;;N;;;;; +BCDB;HANGUL SYLLABLE BYEGS;Lo;0;L;;;;;N;;;;; +BCDC;HANGUL SYLLABLE BYEN;Lo;0;L;;;;;N;;;;; +BCDD;HANGUL SYLLABLE BYENI;Lo;0;L;;;;;N;;;;; +BCDE;HANGUL SYLLABLE BYENH;Lo;0;L;;;;;N;;;;; +BCDF;HANGUL SYLLABLE BYED;Lo;0;L;;;;;N;;;;; +BCE0;HANGUL SYLLABLE BYEL;Lo;0;L;;;;;N;;;;; +BCE1;HANGUL SYLLABLE BYELG;Lo;0;L;;;;;N;;;;; +BCE2;HANGUL SYLLABLE BYELM;Lo;0;L;;;;;N;;;;; +BCE3;HANGUL SYLLABLE BYELB;Lo;0;L;;;;;N;;;;; +BCE4;HANGUL SYLLABLE BYELS;Lo;0;L;;;;;N;;;;; +BCE5;HANGUL SYLLABLE BYELT;Lo;0;L;;;;;N;;;;; +BCE6;HANGUL SYLLABLE BYELP;Lo;0;L;;;;;N;;;;; +BCE7;HANGUL SYLLABLE BYELH;Lo;0;L;;;;;N;;;;; +BCE8;HANGUL SYLLABLE BYEM;Lo;0;L;;;;;N;;;;; +BCE9;HANGUL SYLLABLE BYEB;Lo;0;L;;;;;N;;;;; +BCEA;HANGUL SYLLABLE BYEBS;Lo;0;L;;;;;N;;;;; +BCEB;HANGUL SYLLABLE BYES;Lo;0;L;;;;;N;;;;; +BCEC;HANGUL SYLLABLE BYESS;Lo;0;L;;;;;N;;;;; +BCED;HANGUL SYLLABLE BYENG;Lo;0;L;;;;;N;;;;; +BCEE;HANGUL SYLLABLE BYEJ;Lo;0;L;;;;;N;;;;; +BCEF;HANGUL SYLLABLE BYEC;Lo;0;L;;;;;N;;;;; +BCF0;HANGUL SYLLABLE BYEK;Lo;0;L;;;;;N;;;;; +BCF1;HANGUL SYLLABLE BYET;Lo;0;L;;;;;N;;;;; +BCF2;HANGUL SYLLABLE BYEP;Lo;0;L;;;;;N;;;;; +BCF3;HANGUL SYLLABLE BYEH;Lo;0;L;;;;;N;;;;; +BCF4;HANGUL SYLLABLE BO;Lo;0;L;;;;;N;;;;; +BCF5;HANGUL SYLLABLE BOG;Lo;0;L;;;;;N;;;;; +BCF6;HANGUL SYLLABLE BOGG;Lo;0;L;;;;;N;;;;; +BCF7;HANGUL SYLLABLE BOGS;Lo;0;L;;;;;N;;;;; +BCF8;HANGUL SYLLABLE BON;Lo;0;L;;;;;N;;;;; +BCF9;HANGUL SYLLABLE BONI;Lo;0;L;;;;;N;;;;; +BCFA;HANGUL SYLLABLE BONH;Lo;0;L;;;;;N;;;;; +BCFB;HANGUL SYLLABLE BOD;Lo;0;L;;;;;N;;;;; +BCFC;HANGUL SYLLABLE BOL;Lo;0;L;;;;;N;;;;; +BCFD;HANGUL SYLLABLE BOLG;Lo;0;L;;;;;N;;;;; +BCFE;HANGUL SYLLABLE BOLM;Lo;0;L;;;;;N;;;;; +BCFF;HANGUL SYLLABLE BOLB;Lo;0;L;;;;;N;;;;; +BD00;HANGUL SYLLABLE BOLS;Lo;0;L;;;;;N;;;;; +BD01;HANGUL SYLLABLE BOLT;Lo;0;L;;;;;N;;;;; +BD02;HANGUL SYLLABLE BOLP;Lo;0;L;;;;;N;;;;; +BD03;HANGUL SYLLABLE BOLH;Lo;0;L;;;;;N;;;;; +BD04;HANGUL SYLLABLE BOM;Lo;0;L;;;;;N;;;;; +BD05;HANGUL SYLLABLE BOB;Lo;0;L;;;;;N;;;;; +BD06;HANGUL SYLLABLE BOBS;Lo;0;L;;;;;N;;;;; +BD07;HANGUL SYLLABLE BOS;Lo;0;L;;;;;N;;;;; +BD08;HANGUL SYLLABLE BOSS;Lo;0;L;;;;;N;;;;; +BD09;HANGUL SYLLABLE BONG;Lo;0;L;;;;;N;;;;; +BD0A;HANGUL SYLLABLE BOJ;Lo;0;L;;;;;N;;;;; +BD0B;HANGUL SYLLABLE BOC;Lo;0;L;;;;;N;;;;; +BD0C;HANGUL SYLLABLE BOK;Lo;0;L;;;;;N;;;;; +BD0D;HANGUL SYLLABLE BOT;Lo;0;L;;;;;N;;;;; +BD0E;HANGUL SYLLABLE BOP;Lo;0;L;;;;;N;;;;; +BD0F;HANGUL SYLLABLE BOH;Lo;0;L;;;;;N;;;;; +BD10;HANGUL SYLLABLE BWA;Lo;0;L;;;;;N;;;;; +BD11;HANGUL SYLLABLE BWAG;Lo;0;L;;;;;N;;;;; +BD12;HANGUL SYLLABLE BWAGG;Lo;0;L;;;;;N;;;;; +BD13;HANGUL SYLLABLE BWAGS;Lo;0;L;;;;;N;;;;; +BD14;HANGUL SYLLABLE BWAN;Lo;0;L;;;;;N;;;;; +BD15;HANGUL SYLLABLE BWANI;Lo;0;L;;;;;N;;;;; +BD16;HANGUL SYLLABLE BWANH;Lo;0;L;;;;;N;;;;; +BD17;HANGUL SYLLABLE BWAD;Lo;0;L;;;;;N;;;;; +BD18;HANGUL SYLLABLE BWAL;Lo;0;L;;;;;N;;;;; +BD19;HANGUL SYLLABLE BWALG;Lo;0;L;;;;;N;;;;; +BD1A;HANGUL SYLLABLE BWALM;Lo;0;L;;;;;N;;;;; +BD1B;HANGUL SYLLABLE BWALB;Lo;0;L;;;;;N;;;;; +BD1C;HANGUL SYLLABLE BWALS;Lo;0;L;;;;;N;;;;; +BD1D;HANGUL SYLLABLE BWALT;Lo;0;L;;;;;N;;;;; +BD1E;HANGUL SYLLABLE BWALP;Lo;0;L;;;;;N;;;;; +BD1F;HANGUL SYLLABLE BWALH;Lo;0;L;;;;;N;;;;; +BD20;HANGUL SYLLABLE BWAM;Lo;0;L;;;;;N;;;;; +BD21;HANGUL SYLLABLE BWAB;Lo;0;L;;;;;N;;;;; +BD22;HANGUL SYLLABLE BWABS;Lo;0;L;;;;;N;;;;; +BD23;HANGUL SYLLABLE BWAS;Lo;0;L;;;;;N;;;;; +BD24;HANGUL SYLLABLE BWASS;Lo;0;L;;;;;N;;;;; +BD25;HANGUL SYLLABLE BWANG;Lo;0;L;;;;;N;;;;; +BD26;HANGUL SYLLABLE BWAJ;Lo;0;L;;;;;N;;;;; +BD27;HANGUL SYLLABLE BWAC;Lo;0;L;;;;;N;;;;; +BD28;HANGUL SYLLABLE BWAK;Lo;0;L;;;;;N;;;;; +BD29;HANGUL SYLLABLE BWAT;Lo;0;L;;;;;N;;;;; +BD2A;HANGUL SYLLABLE BWAP;Lo;0;L;;;;;N;;;;; +BD2B;HANGUL SYLLABLE BWAH;Lo;0;L;;;;;N;;;;; +BD2C;HANGUL SYLLABLE BWAE;Lo;0;L;;;;;N;;;;; +BD2D;HANGUL SYLLABLE BWAEG;Lo;0;L;;;;;N;;;;; +BD2E;HANGUL SYLLABLE BWAEGG;Lo;0;L;;;;;N;;;;; +BD2F;HANGUL SYLLABLE BWAEGS;Lo;0;L;;;;;N;;;;; +BD30;HANGUL SYLLABLE BWAEN;Lo;0;L;;;;;N;;;;; +BD31;HANGUL SYLLABLE BWAENI;Lo;0;L;;;;;N;;;;; +BD32;HANGUL SYLLABLE BWAENH;Lo;0;L;;;;;N;;;;; +BD33;HANGUL SYLLABLE BWAED;Lo;0;L;;;;;N;;;;; +BD34;HANGUL SYLLABLE BWAEL;Lo;0;L;;;;;N;;;;; +BD35;HANGUL SYLLABLE BWAELG;Lo;0;L;;;;;N;;;;; +BD36;HANGUL SYLLABLE BWAELM;Lo;0;L;;;;;N;;;;; +BD37;HANGUL SYLLABLE BWAELB;Lo;0;L;;;;;N;;;;; +BD38;HANGUL SYLLABLE BWAELS;Lo;0;L;;;;;N;;;;; +BD39;HANGUL SYLLABLE BWAELT;Lo;0;L;;;;;N;;;;; +BD3A;HANGUL SYLLABLE BWAELP;Lo;0;L;;;;;N;;;;; +BD3B;HANGUL SYLLABLE BWAELH;Lo;0;L;;;;;N;;;;; +BD3C;HANGUL SYLLABLE BWAEM;Lo;0;L;;;;;N;;;;; +BD3D;HANGUL SYLLABLE BWAEB;Lo;0;L;;;;;N;;;;; +BD3E;HANGUL SYLLABLE BWAEBS;Lo;0;L;;;;;N;;;;; +BD3F;HANGUL SYLLABLE BWAES;Lo;0;L;;;;;N;;;;; +BD40;HANGUL SYLLABLE BWAESS;Lo;0;L;;;;;N;;;;; +BD41;HANGUL SYLLABLE BWAENG;Lo;0;L;;;;;N;;;;; +BD42;HANGUL SYLLABLE BWAEJ;Lo;0;L;;;;;N;;;;; +BD43;HANGUL SYLLABLE BWAEC;Lo;0;L;;;;;N;;;;; +BD44;HANGUL SYLLABLE BWAEK;Lo;0;L;;;;;N;;;;; +BD45;HANGUL SYLLABLE BWAET;Lo;0;L;;;;;N;;;;; +BD46;HANGUL SYLLABLE BWAEP;Lo;0;L;;;;;N;;;;; +BD47;HANGUL SYLLABLE BWAEH;Lo;0;L;;;;;N;;;;; +BD48;HANGUL SYLLABLE BOE;Lo;0;L;;;;;N;;;;; +BD49;HANGUL SYLLABLE BOEG;Lo;0;L;;;;;N;;;;; +BD4A;HANGUL SYLLABLE BOEGG;Lo;0;L;;;;;N;;;;; +BD4B;HANGUL SYLLABLE BOEGS;Lo;0;L;;;;;N;;;;; +BD4C;HANGUL SYLLABLE BOEN;Lo;0;L;;;;;N;;;;; +BD4D;HANGUL SYLLABLE BOENI;Lo;0;L;;;;;N;;;;; +BD4E;HANGUL SYLLABLE BOENH;Lo;0;L;;;;;N;;;;; +BD4F;HANGUL SYLLABLE BOED;Lo;0;L;;;;;N;;;;; +BD50;HANGUL SYLLABLE BOEL;Lo;0;L;;;;;N;;;;; +BD51;HANGUL SYLLABLE BOELG;Lo;0;L;;;;;N;;;;; +BD52;HANGUL SYLLABLE BOELM;Lo;0;L;;;;;N;;;;; +BD53;HANGUL SYLLABLE BOELB;Lo;0;L;;;;;N;;;;; +BD54;HANGUL SYLLABLE BOELS;Lo;0;L;;;;;N;;;;; +BD55;HANGUL SYLLABLE BOELT;Lo;0;L;;;;;N;;;;; +BD56;HANGUL SYLLABLE BOELP;Lo;0;L;;;;;N;;;;; +BD57;HANGUL SYLLABLE BOELH;Lo;0;L;;;;;N;;;;; +BD58;HANGUL SYLLABLE BOEM;Lo;0;L;;;;;N;;;;; +BD59;HANGUL SYLLABLE BOEB;Lo;0;L;;;;;N;;;;; +BD5A;HANGUL SYLLABLE BOEBS;Lo;0;L;;;;;N;;;;; +BD5B;HANGUL SYLLABLE BOES;Lo;0;L;;;;;N;;;;; +BD5C;HANGUL SYLLABLE BOESS;Lo;0;L;;;;;N;;;;; +BD5D;HANGUL SYLLABLE BOENG;Lo;0;L;;;;;N;;;;; +BD5E;HANGUL SYLLABLE BOEJ;Lo;0;L;;;;;N;;;;; +BD5F;HANGUL SYLLABLE BOEC;Lo;0;L;;;;;N;;;;; +BD60;HANGUL SYLLABLE BOEK;Lo;0;L;;;;;N;;;;; +BD61;HANGUL SYLLABLE BOET;Lo;0;L;;;;;N;;;;; +BD62;HANGUL SYLLABLE BOEP;Lo;0;L;;;;;N;;;;; +BD63;HANGUL SYLLABLE BOEH;Lo;0;L;;;;;N;;;;; +BD64;HANGUL SYLLABLE BYO;Lo;0;L;;;;;N;;;;; +BD65;HANGUL SYLLABLE BYOG;Lo;0;L;;;;;N;;;;; +BD66;HANGUL SYLLABLE BYOGG;Lo;0;L;;;;;N;;;;; +BD67;HANGUL SYLLABLE BYOGS;Lo;0;L;;;;;N;;;;; +BD68;HANGUL SYLLABLE BYON;Lo;0;L;;;;;N;;;;; +BD69;HANGUL SYLLABLE BYONI;Lo;0;L;;;;;N;;;;; +BD6A;HANGUL SYLLABLE BYONH;Lo;0;L;;;;;N;;;;; +BD6B;HANGUL SYLLABLE BYOD;Lo;0;L;;;;;N;;;;; +BD6C;HANGUL SYLLABLE BYOL;Lo;0;L;;;;;N;;;;; +BD6D;HANGUL SYLLABLE BYOLG;Lo;0;L;;;;;N;;;;; +BD6E;HANGUL SYLLABLE BYOLM;Lo;0;L;;;;;N;;;;; +BD6F;HANGUL SYLLABLE BYOLB;Lo;0;L;;;;;N;;;;; +BD70;HANGUL SYLLABLE BYOLS;Lo;0;L;;;;;N;;;;; +BD71;HANGUL SYLLABLE BYOLT;Lo;0;L;;;;;N;;;;; +BD72;HANGUL SYLLABLE BYOLP;Lo;0;L;;;;;N;;;;; +BD73;HANGUL SYLLABLE BYOLH;Lo;0;L;;;;;N;;;;; +BD74;HANGUL SYLLABLE BYOM;Lo;0;L;;;;;N;;;;; +BD75;HANGUL SYLLABLE BYOB;Lo;0;L;;;;;N;;;;; +BD76;HANGUL SYLLABLE BYOBS;Lo;0;L;;;;;N;;;;; +BD77;HANGUL SYLLABLE BYOS;Lo;0;L;;;;;N;;;;; +BD78;HANGUL SYLLABLE BYOSS;Lo;0;L;;;;;N;;;;; +BD79;HANGUL SYLLABLE BYONG;Lo;0;L;;;;;N;;;;; +BD7A;HANGUL SYLLABLE BYOJ;Lo;0;L;;;;;N;;;;; +BD7B;HANGUL SYLLABLE BYOC;Lo;0;L;;;;;N;;;;; +BD7C;HANGUL SYLLABLE BYOK;Lo;0;L;;;;;N;;;;; +BD7D;HANGUL SYLLABLE BYOT;Lo;0;L;;;;;N;;;;; +BD7E;HANGUL SYLLABLE BYOP;Lo;0;L;;;;;N;;;;; +BD7F;HANGUL SYLLABLE BYOH;Lo;0;L;;;;;N;;;;; +BD80;HANGUL SYLLABLE BU;Lo;0;L;;;;;N;;;;; +BD81;HANGUL SYLLABLE BUG;Lo;0;L;;;;;N;;;;; +BD82;HANGUL SYLLABLE BUGG;Lo;0;L;;;;;N;;;;; +BD83;HANGUL SYLLABLE BUGS;Lo;0;L;;;;;N;;;;; +BD84;HANGUL SYLLABLE BUN;Lo;0;L;;;;;N;;;;; +BD85;HANGUL SYLLABLE BUNI;Lo;0;L;;;;;N;;;;; +BD86;HANGUL SYLLABLE BUNH;Lo;0;L;;;;;N;;;;; +BD87;HANGUL SYLLABLE BUD;Lo;0;L;;;;;N;;;;; +BD88;HANGUL SYLLABLE BUL;Lo;0;L;;;;;N;;;;; +BD89;HANGUL SYLLABLE BULG;Lo;0;L;;;;;N;;;;; +BD8A;HANGUL SYLLABLE BULM;Lo;0;L;;;;;N;;;;; +BD8B;HANGUL SYLLABLE BULB;Lo;0;L;;;;;N;;;;; +BD8C;HANGUL SYLLABLE BULS;Lo;0;L;;;;;N;;;;; +BD8D;HANGUL SYLLABLE BULT;Lo;0;L;;;;;N;;;;; +BD8E;HANGUL SYLLABLE BULP;Lo;0;L;;;;;N;;;;; +BD8F;HANGUL SYLLABLE BULH;Lo;0;L;;;;;N;;;;; +BD90;HANGUL SYLLABLE BUM;Lo;0;L;;;;;N;;;;; +BD91;HANGUL SYLLABLE BUB;Lo;0;L;;;;;N;;;;; +BD92;HANGUL SYLLABLE BUBS;Lo;0;L;;;;;N;;;;; +BD93;HANGUL SYLLABLE BUS;Lo;0;L;;;;;N;;;;; +BD94;HANGUL SYLLABLE BUSS;Lo;0;L;;;;;N;;;;; +BD95;HANGUL SYLLABLE BUNG;Lo;0;L;;;;;N;;;;; +BD96;HANGUL SYLLABLE BUJ;Lo;0;L;;;;;N;;;;; +BD97;HANGUL SYLLABLE BUC;Lo;0;L;;;;;N;;;;; +BD98;HANGUL SYLLABLE BUK;Lo;0;L;;;;;N;;;;; +BD99;HANGUL SYLLABLE BUT;Lo;0;L;;;;;N;;;;; +BD9A;HANGUL SYLLABLE BUP;Lo;0;L;;;;;N;;;;; +BD9B;HANGUL SYLLABLE BUH;Lo;0;L;;;;;N;;;;; +BD9C;HANGUL SYLLABLE BWEO;Lo;0;L;;;;;N;;;;; +BD9D;HANGUL SYLLABLE BWEOG;Lo;0;L;;;;;N;;;;; +BD9E;HANGUL SYLLABLE BWEOGG;Lo;0;L;;;;;N;;;;; +BD9F;HANGUL SYLLABLE BWEOGS;Lo;0;L;;;;;N;;;;; +BDA0;HANGUL SYLLABLE BWEON;Lo;0;L;;;;;N;;;;; +BDA1;HANGUL SYLLABLE BWEONI;Lo;0;L;;;;;N;;;;; +BDA2;HANGUL SYLLABLE BWEONH;Lo;0;L;;;;;N;;;;; +BDA3;HANGUL SYLLABLE BWEOD;Lo;0;L;;;;;N;;;;; +BDA4;HANGUL SYLLABLE BWEOL;Lo;0;L;;;;;N;;;;; +BDA5;HANGUL SYLLABLE BWEOLG;Lo;0;L;;;;;N;;;;; +BDA6;HANGUL SYLLABLE BWEOLM;Lo;0;L;;;;;N;;;;; +BDA7;HANGUL SYLLABLE BWEOLB;Lo;0;L;;;;;N;;;;; +BDA8;HANGUL SYLLABLE BWEOLS;Lo;0;L;;;;;N;;;;; +BDA9;HANGUL SYLLABLE BWEOLT;Lo;0;L;;;;;N;;;;; +BDAA;HANGUL SYLLABLE BWEOLP;Lo;0;L;;;;;N;;;;; +BDAB;HANGUL SYLLABLE BWEOLH;Lo;0;L;;;;;N;;;;; +BDAC;HANGUL SYLLABLE BWEOM;Lo;0;L;;;;;N;;;;; +BDAD;HANGUL SYLLABLE BWEOB;Lo;0;L;;;;;N;;;;; +BDAE;HANGUL SYLLABLE BWEOBS;Lo;0;L;;;;;N;;;;; +BDAF;HANGUL SYLLABLE BWEOS;Lo;0;L;;;;;N;;;;; +BDB0;HANGUL SYLLABLE BWEOSS;Lo;0;L;;;;;N;;;;; +BDB1;HANGUL SYLLABLE BWEONG;Lo;0;L;;;;;N;;;;; +BDB2;HANGUL SYLLABLE BWEOJ;Lo;0;L;;;;;N;;;;; +BDB3;HANGUL SYLLABLE BWEOC;Lo;0;L;;;;;N;;;;; +BDB4;HANGUL SYLLABLE BWEOK;Lo;0;L;;;;;N;;;;; +BDB5;HANGUL SYLLABLE BWEOT;Lo;0;L;;;;;N;;;;; +BDB6;HANGUL SYLLABLE BWEOP;Lo;0;L;;;;;N;;;;; +BDB7;HANGUL SYLLABLE BWEOH;Lo;0;L;;;;;N;;;;; +BDB8;HANGUL SYLLABLE BWE;Lo;0;L;;;;;N;;;;; +BDB9;HANGUL SYLLABLE BWEG;Lo;0;L;;;;;N;;;;; +BDBA;HANGUL SYLLABLE BWEGG;Lo;0;L;;;;;N;;;;; +BDBB;HANGUL SYLLABLE BWEGS;Lo;0;L;;;;;N;;;;; +BDBC;HANGUL SYLLABLE BWEN;Lo;0;L;;;;;N;;;;; +BDBD;HANGUL SYLLABLE BWENI;Lo;0;L;;;;;N;;;;; +BDBE;HANGUL SYLLABLE BWENH;Lo;0;L;;;;;N;;;;; +BDBF;HANGUL SYLLABLE BWED;Lo;0;L;;;;;N;;;;; +BDC0;HANGUL SYLLABLE BWEL;Lo;0;L;;;;;N;;;;; +BDC1;HANGUL SYLLABLE BWELG;Lo;0;L;;;;;N;;;;; +BDC2;HANGUL SYLLABLE BWELM;Lo;0;L;;;;;N;;;;; +BDC3;HANGUL SYLLABLE BWELB;Lo;0;L;;;;;N;;;;; +BDC4;HANGUL SYLLABLE BWELS;Lo;0;L;;;;;N;;;;; +BDC5;HANGUL SYLLABLE BWELT;Lo;0;L;;;;;N;;;;; +BDC6;HANGUL SYLLABLE BWELP;Lo;0;L;;;;;N;;;;; +BDC7;HANGUL SYLLABLE BWELH;Lo;0;L;;;;;N;;;;; +BDC8;HANGUL SYLLABLE BWEM;Lo;0;L;;;;;N;;;;; +BDC9;HANGUL SYLLABLE BWEB;Lo;0;L;;;;;N;;;;; +BDCA;HANGUL SYLLABLE BWEBS;Lo;0;L;;;;;N;;;;; +BDCB;HANGUL SYLLABLE BWES;Lo;0;L;;;;;N;;;;; +BDCC;HANGUL SYLLABLE BWESS;Lo;0;L;;;;;N;;;;; +BDCD;HANGUL SYLLABLE BWENG;Lo;0;L;;;;;N;;;;; +BDCE;HANGUL SYLLABLE BWEJ;Lo;0;L;;;;;N;;;;; +BDCF;HANGUL SYLLABLE BWEC;Lo;0;L;;;;;N;;;;; +BDD0;HANGUL SYLLABLE BWEK;Lo;0;L;;;;;N;;;;; +BDD1;HANGUL SYLLABLE BWET;Lo;0;L;;;;;N;;;;; +BDD2;HANGUL SYLLABLE BWEP;Lo;0;L;;;;;N;;;;; +BDD3;HANGUL SYLLABLE BWEH;Lo;0;L;;;;;N;;;;; +BDD4;HANGUL SYLLABLE BWI;Lo;0;L;;;;;N;;;;; +BDD5;HANGUL SYLLABLE BWIG;Lo;0;L;;;;;N;;;;; +BDD6;HANGUL SYLLABLE BWIGG;Lo;0;L;;;;;N;;;;; +BDD7;HANGUL SYLLABLE BWIGS;Lo;0;L;;;;;N;;;;; +BDD8;HANGUL SYLLABLE BWIN;Lo;0;L;;;;;N;;;;; +BDD9;HANGUL SYLLABLE BWINI;Lo;0;L;;;;;N;;;;; +BDDA;HANGUL SYLLABLE BWINH;Lo;0;L;;;;;N;;;;; +BDDB;HANGUL SYLLABLE BWID;Lo;0;L;;;;;N;;;;; +BDDC;HANGUL SYLLABLE BWIL;Lo;0;L;;;;;N;;;;; +BDDD;HANGUL SYLLABLE BWILG;Lo;0;L;;;;;N;;;;; +BDDE;HANGUL SYLLABLE BWILM;Lo;0;L;;;;;N;;;;; +BDDF;HANGUL SYLLABLE BWILB;Lo;0;L;;;;;N;;;;; +BDE0;HANGUL SYLLABLE BWILS;Lo;0;L;;;;;N;;;;; +BDE1;HANGUL SYLLABLE BWILT;Lo;0;L;;;;;N;;;;; +BDE2;HANGUL SYLLABLE BWILP;Lo;0;L;;;;;N;;;;; +BDE3;HANGUL SYLLABLE BWILH;Lo;0;L;;;;;N;;;;; +BDE4;HANGUL SYLLABLE BWIM;Lo;0;L;;;;;N;;;;; +BDE5;HANGUL SYLLABLE BWIB;Lo;0;L;;;;;N;;;;; +BDE6;HANGUL SYLLABLE BWIBS;Lo;0;L;;;;;N;;;;; +BDE7;HANGUL SYLLABLE BWIS;Lo;0;L;;;;;N;;;;; +BDE8;HANGUL SYLLABLE BWISS;Lo;0;L;;;;;N;;;;; +BDE9;HANGUL SYLLABLE BWING;Lo;0;L;;;;;N;;;;; +BDEA;HANGUL SYLLABLE BWIJ;Lo;0;L;;;;;N;;;;; +BDEB;HANGUL SYLLABLE BWIC;Lo;0;L;;;;;N;;;;; +BDEC;HANGUL SYLLABLE BWIK;Lo;0;L;;;;;N;;;;; +BDED;HANGUL SYLLABLE BWIT;Lo;0;L;;;;;N;;;;; +BDEE;HANGUL SYLLABLE BWIP;Lo;0;L;;;;;N;;;;; +BDEF;HANGUL SYLLABLE BWIH;Lo;0;L;;;;;N;;;;; +BDF0;HANGUL SYLLABLE BYU;Lo;0;L;;;;;N;;;;; +BDF1;HANGUL SYLLABLE BYUG;Lo;0;L;;;;;N;;;;; +BDF2;HANGUL SYLLABLE BYUGG;Lo;0;L;;;;;N;;;;; +BDF3;HANGUL SYLLABLE BYUGS;Lo;0;L;;;;;N;;;;; +BDF4;HANGUL SYLLABLE BYUN;Lo;0;L;;;;;N;;;;; +BDF5;HANGUL SYLLABLE BYUNI;Lo;0;L;;;;;N;;;;; +BDF6;HANGUL SYLLABLE BYUNH;Lo;0;L;;;;;N;;;;; +BDF7;HANGUL SYLLABLE BYUD;Lo;0;L;;;;;N;;;;; +BDF8;HANGUL SYLLABLE BYUL;Lo;0;L;;;;;N;;;;; +BDF9;HANGUL SYLLABLE BYULG;Lo;0;L;;;;;N;;;;; +BDFA;HANGUL SYLLABLE BYULM;Lo;0;L;;;;;N;;;;; +BDFB;HANGUL SYLLABLE BYULB;Lo;0;L;;;;;N;;;;; +BDFC;HANGUL SYLLABLE BYULS;Lo;0;L;;;;;N;;;;; +BDFD;HANGUL SYLLABLE BYULT;Lo;0;L;;;;;N;;;;; +BDFE;HANGUL SYLLABLE BYULP;Lo;0;L;;;;;N;;;;; +BDFF;HANGUL SYLLABLE BYULH;Lo;0;L;;;;;N;;;;; +BE00;HANGUL SYLLABLE BYUM;Lo;0;L;;;;;N;;;;; +BE01;HANGUL SYLLABLE BYUB;Lo;0;L;;;;;N;;;;; +BE02;HANGUL SYLLABLE BYUBS;Lo;0;L;;;;;N;;;;; +BE03;HANGUL SYLLABLE BYUS;Lo;0;L;;;;;N;;;;; +BE04;HANGUL SYLLABLE BYUSS;Lo;0;L;;;;;N;;;;; +BE05;HANGUL SYLLABLE BYUNG;Lo;0;L;;;;;N;;;;; +BE06;HANGUL SYLLABLE BYUJ;Lo;0;L;;;;;N;;;;; +BE07;HANGUL SYLLABLE BYUC;Lo;0;L;;;;;N;;;;; +BE08;HANGUL SYLLABLE BYUK;Lo;0;L;;;;;N;;;;; +BE09;HANGUL SYLLABLE BYUT;Lo;0;L;;;;;N;;;;; +BE0A;HANGUL SYLLABLE BYUP;Lo;0;L;;;;;N;;;;; +BE0B;HANGUL SYLLABLE BYUH;Lo;0;L;;;;;N;;;;; +BE0C;HANGUL SYLLABLE BEU;Lo;0;L;;;;;N;;;;; +BE0D;HANGUL SYLLABLE BEUG;Lo;0;L;;;;;N;;;;; +BE0E;HANGUL SYLLABLE BEUGG;Lo;0;L;;;;;N;;;;; +BE0F;HANGUL SYLLABLE BEUGS;Lo;0;L;;;;;N;;;;; +BE10;HANGUL SYLLABLE BEUN;Lo;0;L;;;;;N;;;;; +BE11;HANGUL SYLLABLE BEUNI;Lo;0;L;;;;;N;;;;; +BE12;HANGUL SYLLABLE BEUNH;Lo;0;L;;;;;N;;;;; +BE13;HANGUL SYLLABLE BEUD;Lo;0;L;;;;;N;;;;; +BE14;HANGUL SYLLABLE BEUL;Lo;0;L;;;;;N;;;;; +BE15;HANGUL SYLLABLE BEULG;Lo;0;L;;;;;N;;;;; +BE16;HANGUL SYLLABLE BEULM;Lo;0;L;;;;;N;;;;; +BE17;HANGUL SYLLABLE BEULB;Lo;0;L;;;;;N;;;;; +BE18;HANGUL SYLLABLE BEULS;Lo;0;L;;;;;N;;;;; +BE19;HANGUL SYLLABLE BEULT;Lo;0;L;;;;;N;;;;; +BE1A;HANGUL SYLLABLE BEULP;Lo;0;L;;;;;N;;;;; +BE1B;HANGUL SYLLABLE BEULH;Lo;0;L;;;;;N;;;;; +BE1C;HANGUL SYLLABLE BEUM;Lo;0;L;;;;;N;;;;; +BE1D;HANGUL SYLLABLE BEUB;Lo;0;L;;;;;N;;;;; +BE1E;HANGUL SYLLABLE BEUBS;Lo;0;L;;;;;N;;;;; +BE1F;HANGUL SYLLABLE BEUS;Lo;0;L;;;;;N;;;;; +BE20;HANGUL SYLLABLE BEUSS;Lo;0;L;;;;;N;;;;; +BE21;HANGUL SYLLABLE BEUNG;Lo;0;L;;;;;N;;;;; +BE22;HANGUL SYLLABLE BEUJ;Lo;0;L;;;;;N;;;;; +BE23;HANGUL SYLLABLE BEUC;Lo;0;L;;;;;N;;;;; +BE24;HANGUL SYLLABLE BEUK;Lo;0;L;;;;;N;;;;; +BE25;HANGUL SYLLABLE BEUT;Lo;0;L;;;;;N;;;;; +BE26;HANGUL SYLLABLE BEUP;Lo;0;L;;;;;N;;;;; +BE27;HANGUL SYLLABLE BEUH;Lo;0;L;;;;;N;;;;; +BE28;HANGUL SYLLABLE BYI;Lo;0;L;;;;;N;;;;; +BE29;HANGUL SYLLABLE BYIG;Lo;0;L;;;;;N;;;;; +BE2A;HANGUL SYLLABLE BYIGG;Lo;0;L;;;;;N;;;;; +BE2B;HANGUL SYLLABLE BYIGS;Lo;0;L;;;;;N;;;;; +BE2C;HANGUL SYLLABLE BYIN;Lo;0;L;;;;;N;;;;; +BE2D;HANGUL SYLLABLE BYINI;Lo;0;L;;;;;N;;;;; +BE2E;HANGUL SYLLABLE BYINH;Lo;0;L;;;;;N;;;;; +BE2F;HANGUL SYLLABLE BYID;Lo;0;L;;;;;N;;;;; +BE30;HANGUL SYLLABLE BYIL;Lo;0;L;;;;;N;;;;; +BE31;HANGUL SYLLABLE BYILG;Lo;0;L;;;;;N;;;;; +BE32;HANGUL SYLLABLE BYILM;Lo;0;L;;;;;N;;;;; +BE33;HANGUL SYLLABLE BYILB;Lo;0;L;;;;;N;;;;; +BE34;HANGUL SYLLABLE BYILS;Lo;0;L;;;;;N;;;;; +BE35;HANGUL SYLLABLE BYILT;Lo;0;L;;;;;N;;;;; +BE36;HANGUL SYLLABLE BYILP;Lo;0;L;;;;;N;;;;; +BE37;HANGUL SYLLABLE BYILH;Lo;0;L;;;;;N;;;;; +BE38;HANGUL SYLLABLE BYIM;Lo;0;L;;;;;N;;;;; +BE39;HANGUL SYLLABLE BYIB;Lo;0;L;;;;;N;;;;; +BE3A;HANGUL SYLLABLE BYIBS;Lo;0;L;;;;;N;;;;; +BE3B;HANGUL SYLLABLE BYIS;Lo;0;L;;;;;N;;;;; +BE3C;HANGUL SYLLABLE BYISS;Lo;0;L;;;;;N;;;;; +BE3D;HANGUL SYLLABLE BYING;Lo;0;L;;;;;N;;;;; +BE3E;HANGUL SYLLABLE BYIJ;Lo;0;L;;;;;N;;;;; +BE3F;HANGUL SYLLABLE BYIC;Lo;0;L;;;;;N;;;;; +BE40;HANGUL SYLLABLE BYIK;Lo;0;L;;;;;N;;;;; +BE41;HANGUL SYLLABLE BYIT;Lo;0;L;;;;;N;;;;; +BE42;HANGUL SYLLABLE BYIP;Lo;0;L;;;;;N;;;;; +BE43;HANGUL SYLLABLE BYIH;Lo;0;L;;;;;N;;;;; +BE44;HANGUL SYLLABLE BI;Lo;0;L;;;;;N;;;;; +BE45;HANGUL SYLLABLE BIG;Lo;0;L;;;;;N;;;;; +BE46;HANGUL SYLLABLE BIGG;Lo;0;L;;;;;N;;;;; +BE47;HANGUL SYLLABLE BIGS;Lo;0;L;;;;;N;;;;; +BE48;HANGUL SYLLABLE BIN;Lo;0;L;;;;;N;;;;; +BE49;HANGUL SYLLABLE BINI;Lo;0;L;;;;;N;;;;; +BE4A;HANGUL SYLLABLE BINH;Lo;0;L;;;;;N;;;;; +BE4B;HANGUL SYLLABLE BID;Lo;0;L;;;;;N;;;;; +BE4C;HANGUL SYLLABLE BIL;Lo;0;L;;;;;N;;;;; +BE4D;HANGUL SYLLABLE BILG;Lo;0;L;;;;;N;;;;; +BE4E;HANGUL SYLLABLE BILM;Lo;0;L;;;;;N;;;;; +BE4F;HANGUL SYLLABLE BILB;Lo;0;L;;;;;N;;;;; +BE50;HANGUL SYLLABLE BILS;Lo;0;L;;;;;N;;;;; +BE51;HANGUL SYLLABLE BILT;Lo;0;L;;;;;N;;;;; +BE52;HANGUL SYLLABLE BILP;Lo;0;L;;;;;N;;;;; +BE53;HANGUL SYLLABLE BILH;Lo;0;L;;;;;N;;;;; +BE54;HANGUL SYLLABLE BIM;Lo;0;L;;;;;N;;;;; +BE55;HANGUL SYLLABLE BIB;Lo;0;L;;;;;N;;;;; +BE56;HANGUL SYLLABLE BIBS;Lo;0;L;;;;;N;;;;; +BE57;HANGUL SYLLABLE BIS;Lo;0;L;;;;;N;;;;; +BE58;HANGUL SYLLABLE BISS;Lo;0;L;;;;;N;;;;; +BE59;HANGUL SYLLABLE BING;Lo;0;L;;;;;N;;;;; +BE5A;HANGUL SYLLABLE BIJ;Lo;0;L;;;;;N;;;;; +BE5B;HANGUL SYLLABLE BIC;Lo;0;L;;;;;N;;;;; +BE5C;HANGUL SYLLABLE BIK;Lo;0;L;;;;;N;;;;; +BE5D;HANGUL SYLLABLE BIT;Lo;0;L;;;;;N;;;;; +BE5E;HANGUL SYLLABLE BIP;Lo;0;L;;;;;N;;;;; +BE5F;HANGUL SYLLABLE BIH;Lo;0;L;;;;;N;;;;; +BE60;HANGUL SYLLABLE BBA;Lo;0;L;;;;;N;;;;; +BE61;HANGUL SYLLABLE BBAG;Lo;0;L;;;;;N;;;;; +BE62;HANGUL SYLLABLE BBAGG;Lo;0;L;;;;;N;;;;; +BE63;HANGUL SYLLABLE BBAGS;Lo;0;L;;;;;N;;;;; +BE64;HANGUL SYLLABLE BBAN;Lo;0;L;;;;;N;;;;; +BE65;HANGUL SYLLABLE BBANI;Lo;0;L;;;;;N;;;;; +BE66;HANGUL SYLLABLE BBANH;Lo;0;L;;;;;N;;;;; +BE67;HANGUL SYLLABLE BBAD;Lo;0;L;;;;;N;;;;; +BE68;HANGUL SYLLABLE BBAL;Lo;0;L;;;;;N;;;;; +BE69;HANGUL SYLLABLE BBALG;Lo;0;L;;;;;N;;;;; +BE6A;HANGUL SYLLABLE BBALM;Lo;0;L;;;;;N;;;;; +BE6B;HANGUL SYLLABLE BBALB;Lo;0;L;;;;;N;;;;; +BE6C;HANGUL SYLLABLE BBALS;Lo;0;L;;;;;N;;;;; +BE6D;HANGUL SYLLABLE BBALT;Lo;0;L;;;;;N;;;;; +BE6E;HANGUL SYLLABLE BBALP;Lo;0;L;;;;;N;;;;; +BE6F;HANGUL SYLLABLE BBALH;Lo;0;L;;;;;N;;;;; +BE70;HANGUL SYLLABLE BBAM;Lo;0;L;;;;;N;;;;; +BE71;HANGUL SYLLABLE BBAB;Lo;0;L;;;;;N;;;;; +BE72;HANGUL SYLLABLE BBABS;Lo;0;L;;;;;N;;;;; +BE73;HANGUL SYLLABLE BBAS;Lo;0;L;;;;;N;;;;; +BE74;HANGUL SYLLABLE BBASS;Lo;0;L;;;;;N;;;;; +BE75;HANGUL SYLLABLE BBANG;Lo;0;L;;;;;N;;;;; +BE76;HANGUL SYLLABLE BBAJ;Lo;0;L;;;;;N;;;;; +BE77;HANGUL SYLLABLE BBAC;Lo;0;L;;;;;N;;;;; +BE78;HANGUL SYLLABLE BBAK;Lo;0;L;;;;;N;;;;; +BE79;HANGUL SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; +BE7A;HANGUL SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; +BE7B;HANGUL SYLLABLE BBAH;Lo;0;L;;;;;N;;;;; +BE7C;HANGUL SYLLABLE BBAE;Lo;0;L;;;;;N;;;;; +BE7D;HANGUL SYLLABLE BBAEG;Lo;0;L;;;;;N;;;;; +BE7E;HANGUL SYLLABLE BBAEGG;Lo;0;L;;;;;N;;;;; +BE7F;HANGUL SYLLABLE BBAEGS;Lo;0;L;;;;;N;;;;; +BE80;HANGUL SYLLABLE BBAEN;Lo;0;L;;;;;N;;;;; +BE81;HANGUL SYLLABLE BBAENI;Lo;0;L;;;;;N;;;;; +BE82;HANGUL SYLLABLE BBAENH;Lo;0;L;;;;;N;;;;; +BE83;HANGUL SYLLABLE BBAED;Lo;0;L;;;;;N;;;;; +BE84;HANGUL SYLLABLE BBAEL;Lo;0;L;;;;;N;;;;; +BE85;HANGUL SYLLABLE BBAELG;Lo;0;L;;;;;N;;;;; +BE86;HANGUL SYLLABLE BBAELM;Lo;0;L;;;;;N;;;;; +BE87;HANGUL SYLLABLE BBAELB;Lo;0;L;;;;;N;;;;; +BE88;HANGUL SYLLABLE BBAELS;Lo;0;L;;;;;N;;;;; +BE89;HANGUL SYLLABLE BBAELT;Lo;0;L;;;;;N;;;;; +BE8A;HANGUL SYLLABLE BBAELP;Lo;0;L;;;;;N;;;;; +BE8B;HANGUL SYLLABLE BBAELH;Lo;0;L;;;;;N;;;;; +BE8C;HANGUL SYLLABLE BBAEM;Lo;0;L;;;;;N;;;;; +BE8D;HANGUL SYLLABLE BBAEB;Lo;0;L;;;;;N;;;;; +BE8E;HANGUL SYLLABLE BBAEBS;Lo;0;L;;;;;N;;;;; +BE8F;HANGUL SYLLABLE BBAES;Lo;0;L;;;;;N;;;;; +BE90;HANGUL SYLLABLE BBAESS;Lo;0;L;;;;;N;;;;; +BE91;HANGUL SYLLABLE BBAENG;Lo;0;L;;;;;N;;;;; +BE92;HANGUL SYLLABLE BBAEJ;Lo;0;L;;;;;N;;;;; +BE93;HANGUL SYLLABLE BBAEC;Lo;0;L;;;;;N;;;;; +BE94;HANGUL SYLLABLE BBAEK;Lo;0;L;;;;;N;;;;; +BE95;HANGUL SYLLABLE BBAET;Lo;0;L;;;;;N;;;;; +BE96;HANGUL SYLLABLE BBAEP;Lo;0;L;;;;;N;;;;; +BE97;HANGUL SYLLABLE BBAEH;Lo;0;L;;;;;N;;;;; +BE98;HANGUL SYLLABLE BBYA;Lo;0;L;;;;;N;;;;; +BE99;HANGUL SYLLABLE BBYAG;Lo;0;L;;;;;N;;;;; +BE9A;HANGUL SYLLABLE BBYAGG;Lo;0;L;;;;;N;;;;; +BE9B;HANGUL SYLLABLE BBYAGS;Lo;0;L;;;;;N;;;;; +BE9C;HANGUL SYLLABLE BBYAN;Lo;0;L;;;;;N;;;;; +BE9D;HANGUL SYLLABLE BBYANI;Lo;0;L;;;;;N;;;;; +BE9E;HANGUL SYLLABLE BBYANH;Lo;0;L;;;;;N;;;;; +BE9F;HANGUL SYLLABLE BBYAD;Lo;0;L;;;;;N;;;;; +BEA0;HANGUL SYLLABLE BBYAL;Lo;0;L;;;;;N;;;;; +BEA1;HANGUL SYLLABLE BBYALG;Lo;0;L;;;;;N;;;;; +BEA2;HANGUL SYLLABLE BBYALM;Lo;0;L;;;;;N;;;;; +BEA3;HANGUL SYLLABLE BBYALB;Lo;0;L;;;;;N;;;;; +BEA4;HANGUL SYLLABLE BBYALS;Lo;0;L;;;;;N;;;;; +BEA5;HANGUL SYLLABLE BBYALT;Lo;0;L;;;;;N;;;;; +BEA6;HANGUL SYLLABLE BBYALP;Lo;0;L;;;;;N;;;;; +BEA7;HANGUL SYLLABLE BBYALH;Lo;0;L;;;;;N;;;;; +BEA8;HANGUL SYLLABLE BBYAM;Lo;0;L;;;;;N;;;;; +BEA9;HANGUL SYLLABLE BBYAB;Lo;0;L;;;;;N;;;;; +BEAA;HANGUL SYLLABLE BBYABS;Lo;0;L;;;;;N;;;;; +BEAB;HANGUL SYLLABLE BBYAS;Lo;0;L;;;;;N;;;;; +BEAC;HANGUL SYLLABLE BBYASS;Lo;0;L;;;;;N;;;;; +BEAD;HANGUL SYLLABLE BBYANG;Lo;0;L;;;;;N;;;;; +BEAE;HANGUL SYLLABLE BBYAJ;Lo;0;L;;;;;N;;;;; +BEAF;HANGUL SYLLABLE BBYAC;Lo;0;L;;;;;N;;;;; +BEB0;HANGUL SYLLABLE BBYAK;Lo;0;L;;;;;N;;;;; +BEB1;HANGUL SYLLABLE BBYAT;Lo;0;L;;;;;N;;;;; +BEB2;HANGUL SYLLABLE BBYAP;Lo;0;L;;;;;N;;;;; +BEB3;HANGUL SYLLABLE BBYAH;Lo;0;L;;;;;N;;;;; +BEB4;HANGUL SYLLABLE BBYAE;Lo;0;L;;;;;N;;;;; +BEB5;HANGUL SYLLABLE BBYAEG;Lo;0;L;;;;;N;;;;; +BEB6;HANGUL SYLLABLE BBYAEGG;Lo;0;L;;;;;N;;;;; +BEB7;HANGUL SYLLABLE BBYAEGS;Lo;0;L;;;;;N;;;;; +BEB8;HANGUL SYLLABLE BBYAEN;Lo;0;L;;;;;N;;;;; +BEB9;HANGUL SYLLABLE BBYAENI;Lo;0;L;;;;;N;;;;; +BEBA;HANGUL SYLLABLE BBYAENH;Lo;0;L;;;;;N;;;;; +BEBB;HANGUL SYLLABLE BBYAED;Lo;0;L;;;;;N;;;;; +BEBC;HANGUL SYLLABLE BBYAEL;Lo;0;L;;;;;N;;;;; +BEBD;HANGUL SYLLABLE BBYAELG;Lo;0;L;;;;;N;;;;; +BEBE;HANGUL SYLLABLE BBYAELM;Lo;0;L;;;;;N;;;;; +BEBF;HANGUL SYLLABLE BBYAELB;Lo;0;L;;;;;N;;;;; +BEC0;HANGUL SYLLABLE BBYAELS;Lo;0;L;;;;;N;;;;; +BEC1;HANGUL SYLLABLE BBYAELT;Lo;0;L;;;;;N;;;;; +BEC2;HANGUL SYLLABLE BBYAELP;Lo;0;L;;;;;N;;;;; +BEC3;HANGUL SYLLABLE BBYAELH;Lo;0;L;;;;;N;;;;; +BEC4;HANGUL SYLLABLE BBYAEM;Lo;0;L;;;;;N;;;;; +BEC5;HANGUL SYLLABLE BBYAEB;Lo;0;L;;;;;N;;;;; +BEC6;HANGUL SYLLABLE BBYAEBS;Lo;0;L;;;;;N;;;;; +BEC7;HANGUL SYLLABLE BBYAES;Lo;0;L;;;;;N;;;;; +BEC8;HANGUL SYLLABLE BBYAESS;Lo;0;L;;;;;N;;;;; +BEC9;HANGUL SYLLABLE BBYAENG;Lo;0;L;;;;;N;;;;; +BECA;HANGUL SYLLABLE BBYAEJ;Lo;0;L;;;;;N;;;;; +BECB;HANGUL SYLLABLE BBYAEC;Lo;0;L;;;;;N;;;;; +BECC;HANGUL SYLLABLE BBYAEK;Lo;0;L;;;;;N;;;;; +BECD;HANGUL SYLLABLE BBYAET;Lo;0;L;;;;;N;;;;; +BECE;HANGUL SYLLABLE BBYAEP;Lo;0;L;;;;;N;;;;; +BECF;HANGUL SYLLABLE BBYAEH;Lo;0;L;;;;;N;;;;; +BED0;HANGUL SYLLABLE BBEO;Lo;0;L;;;;;N;;;;; +BED1;HANGUL SYLLABLE BBEOG;Lo;0;L;;;;;N;;;;; +BED2;HANGUL SYLLABLE BBEOGG;Lo;0;L;;;;;N;;;;; +BED3;HANGUL SYLLABLE BBEOGS;Lo;0;L;;;;;N;;;;; +BED4;HANGUL SYLLABLE BBEON;Lo;0;L;;;;;N;;;;; +BED5;HANGUL SYLLABLE BBEONI;Lo;0;L;;;;;N;;;;; +BED6;HANGUL SYLLABLE BBEONH;Lo;0;L;;;;;N;;;;; +BED7;HANGUL SYLLABLE BBEOD;Lo;0;L;;;;;N;;;;; +BED8;HANGUL SYLLABLE BBEOL;Lo;0;L;;;;;N;;;;; +BED9;HANGUL SYLLABLE BBEOLG;Lo;0;L;;;;;N;;;;; +BEDA;HANGUL SYLLABLE BBEOLM;Lo;0;L;;;;;N;;;;; +BEDB;HANGUL SYLLABLE BBEOLB;Lo;0;L;;;;;N;;;;; +BEDC;HANGUL SYLLABLE BBEOLS;Lo;0;L;;;;;N;;;;; +BEDD;HANGUL SYLLABLE BBEOLT;Lo;0;L;;;;;N;;;;; +BEDE;HANGUL SYLLABLE BBEOLP;Lo;0;L;;;;;N;;;;; +BEDF;HANGUL SYLLABLE BBEOLH;Lo;0;L;;;;;N;;;;; +BEE0;HANGUL SYLLABLE BBEOM;Lo;0;L;;;;;N;;;;; +BEE1;HANGUL SYLLABLE BBEOB;Lo;0;L;;;;;N;;;;; +BEE2;HANGUL SYLLABLE BBEOBS;Lo;0;L;;;;;N;;;;; +BEE3;HANGUL SYLLABLE BBEOS;Lo;0;L;;;;;N;;;;; +BEE4;HANGUL SYLLABLE BBEOSS;Lo;0;L;;;;;N;;;;; +BEE5;HANGUL SYLLABLE BBEONG;Lo;0;L;;;;;N;;;;; +BEE6;HANGUL SYLLABLE BBEOJ;Lo;0;L;;;;;N;;;;; +BEE7;HANGUL SYLLABLE BBEOC;Lo;0;L;;;;;N;;;;; +BEE8;HANGUL SYLLABLE BBEOK;Lo;0;L;;;;;N;;;;; +BEE9;HANGUL SYLLABLE BBEOT;Lo;0;L;;;;;N;;;;; +BEEA;HANGUL SYLLABLE BBEOP;Lo;0;L;;;;;N;;;;; +BEEB;HANGUL SYLLABLE BBEOH;Lo;0;L;;;;;N;;;;; +BEEC;HANGUL SYLLABLE BBE;Lo;0;L;;;;;N;;;;; +BEED;HANGUL SYLLABLE BBEG;Lo;0;L;;;;;N;;;;; +BEEE;HANGUL SYLLABLE BBEGG;Lo;0;L;;;;;N;;;;; +BEEF;HANGUL SYLLABLE BBEGS;Lo;0;L;;;;;N;;;;; +BEF0;HANGUL SYLLABLE BBEN;Lo;0;L;;;;;N;;;;; +BEF1;HANGUL SYLLABLE BBENI;Lo;0;L;;;;;N;;;;; +BEF2;HANGUL SYLLABLE BBENH;Lo;0;L;;;;;N;;;;; +BEF3;HANGUL SYLLABLE BBED;Lo;0;L;;;;;N;;;;; +BEF4;HANGUL SYLLABLE BBEL;Lo;0;L;;;;;N;;;;; +BEF5;HANGUL SYLLABLE BBELG;Lo;0;L;;;;;N;;;;; +BEF6;HANGUL SYLLABLE BBELM;Lo;0;L;;;;;N;;;;; +BEF7;HANGUL SYLLABLE BBELB;Lo;0;L;;;;;N;;;;; +BEF8;HANGUL SYLLABLE BBELS;Lo;0;L;;;;;N;;;;; +BEF9;HANGUL SYLLABLE BBELT;Lo;0;L;;;;;N;;;;; +BEFA;HANGUL SYLLABLE BBELP;Lo;0;L;;;;;N;;;;; +BEFB;HANGUL SYLLABLE BBELH;Lo;0;L;;;;;N;;;;; +BEFC;HANGUL SYLLABLE BBEM;Lo;0;L;;;;;N;;;;; +BEFD;HANGUL SYLLABLE BBEB;Lo;0;L;;;;;N;;;;; +BEFE;HANGUL SYLLABLE BBEBS;Lo;0;L;;;;;N;;;;; +BEFF;HANGUL SYLLABLE BBES;Lo;0;L;;;;;N;;;;; +BF00;HANGUL SYLLABLE BBESS;Lo;0;L;;;;;N;;;;; +BF01;HANGUL SYLLABLE BBENG;Lo;0;L;;;;;N;;;;; +BF02;HANGUL SYLLABLE BBEJ;Lo;0;L;;;;;N;;;;; +BF03;HANGUL SYLLABLE BBEC;Lo;0;L;;;;;N;;;;; +BF04;HANGUL SYLLABLE BBEK;Lo;0;L;;;;;N;;;;; +BF05;HANGUL SYLLABLE BBET;Lo;0;L;;;;;N;;;;; +BF06;HANGUL SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; +BF07;HANGUL SYLLABLE BBEH;Lo;0;L;;;;;N;;;;; +BF08;HANGUL SYLLABLE BBYEO;Lo;0;L;;;;;N;;;;; +BF09;HANGUL SYLLABLE BBYEOG;Lo;0;L;;;;;N;;;;; +BF0A;HANGUL SYLLABLE BBYEOGG;Lo;0;L;;;;;N;;;;; +BF0B;HANGUL SYLLABLE BBYEOGS;Lo;0;L;;;;;N;;;;; +BF0C;HANGUL SYLLABLE BBYEON;Lo;0;L;;;;;N;;;;; +BF0D;HANGUL SYLLABLE BBYEONI;Lo;0;L;;;;;N;;;;; +BF0E;HANGUL SYLLABLE BBYEONH;Lo;0;L;;;;;N;;;;; +BF0F;HANGUL SYLLABLE BBYEOD;Lo;0;L;;;;;N;;;;; +BF10;HANGUL SYLLABLE BBYEOL;Lo;0;L;;;;;N;;;;; +BF11;HANGUL SYLLABLE BBYEOLG;Lo;0;L;;;;;N;;;;; +BF12;HANGUL SYLLABLE BBYEOLM;Lo;0;L;;;;;N;;;;; +BF13;HANGUL SYLLABLE BBYEOLB;Lo;0;L;;;;;N;;;;; +BF14;HANGUL SYLLABLE BBYEOLS;Lo;0;L;;;;;N;;;;; +BF15;HANGUL SYLLABLE BBYEOLT;Lo;0;L;;;;;N;;;;; +BF16;HANGUL SYLLABLE BBYEOLP;Lo;0;L;;;;;N;;;;; +BF17;HANGUL SYLLABLE BBYEOLH;Lo;0;L;;;;;N;;;;; +BF18;HANGUL SYLLABLE BBYEOM;Lo;0;L;;;;;N;;;;; +BF19;HANGUL SYLLABLE BBYEOB;Lo;0;L;;;;;N;;;;; +BF1A;HANGUL SYLLABLE BBYEOBS;Lo;0;L;;;;;N;;;;; +BF1B;HANGUL SYLLABLE BBYEOS;Lo;0;L;;;;;N;;;;; +BF1C;HANGUL SYLLABLE BBYEOSS;Lo;0;L;;;;;N;;;;; +BF1D;HANGUL SYLLABLE BBYEONG;Lo;0;L;;;;;N;;;;; +BF1E;HANGUL SYLLABLE BBYEOJ;Lo;0;L;;;;;N;;;;; +BF1F;HANGUL SYLLABLE BBYEOC;Lo;0;L;;;;;N;;;;; +BF20;HANGUL SYLLABLE BBYEOK;Lo;0;L;;;;;N;;;;; +BF21;HANGUL SYLLABLE BBYEOT;Lo;0;L;;;;;N;;;;; +BF22;HANGUL SYLLABLE BBYEOP;Lo;0;L;;;;;N;;;;; +BF23;HANGUL SYLLABLE BBYEOH;Lo;0;L;;;;;N;;;;; +BF24;HANGUL SYLLABLE BBYE;Lo;0;L;;;;;N;;;;; +BF25;HANGUL SYLLABLE BBYEG;Lo;0;L;;;;;N;;;;; +BF26;HANGUL SYLLABLE BBYEGG;Lo;0;L;;;;;N;;;;; +BF27;HANGUL SYLLABLE BBYEGS;Lo;0;L;;;;;N;;;;; +BF28;HANGUL SYLLABLE BBYEN;Lo;0;L;;;;;N;;;;; +BF29;HANGUL SYLLABLE BBYENI;Lo;0;L;;;;;N;;;;; +BF2A;HANGUL SYLLABLE BBYENH;Lo;0;L;;;;;N;;;;; +BF2B;HANGUL SYLLABLE BBYED;Lo;0;L;;;;;N;;;;; +BF2C;HANGUL SYLLABLE BBYEL;Lo;0;L;;;;;N;;;;; +BF2D;HANGUL SYLLABLE BBYELG;Lo;0;L;;;;;N;;;;; +BF2E;HANGUL SYLLABLE BBYELM;Lo;0;L;;;;;N;;;;; +BF2F;HANGUL SYLLABLE BBYELB;Lo;0;L;;;;;N;;;;; +BF30;HANGUL SYLLABLE BBYELS;Lo;0;L;;;;;N;;;;; +BF31;HANGUL SYLLABLE BBYELT;Lo;0;L;;;;;N;;;;; +BF32;HANGUL SYLLABLE BBYELP;Lo;0;L;;;;;N;;;;; +BF33;HANGUL SYLLABLE BBYELH;Lo;0;L;;;;;N;;;;; +BF34;HANGUL SYLLABLE BBYEM;Lo;0;L;;;;;N;;;;; +BF35;HANGUL SYLLABLE BBYEB;Lo;0;L;;;;;N;;;;; +BF36;HANGUL SYLLABLE BBYEBS;Lo;0;L;;;;;N;;;;; +BF37;HANGUL SYLLABLE BBYES;Lo;0;L;;;;;N;;;;; +BF38;HANGUL SYLLABLE BBYESS;Lo;0;L;;;;;N;;;;; +BF39;HANGUL SYLLABLE BBYENG;Lo;0;L;;;;;N;;;;; +BF3A;HANGUL SYLLABLE BBYEJ;Lo;0;L;;;;;N;;;;; +BF3B;HANGUL SYLLABLE BBYEC;Lo;0;L;;;;;N;;;;; +BF3C;HANGUL SYLLABLE BBYEK;Lo;0;L;;;;;N;;;;; +BF3D;HANGUL SYLLABLE BBYET;Lo;0;L;;;;;N;;;;; +BF3E;HANGUL SYLLABLE BBYEP;Lo;0;L;;;;;N;;;;; +BF3F;HANGUL SYLLABLE BBYEH;Lo;0;L;;;;;N;;;;; +BF40;HANGUL SYLLABLE BBO;Lo;0;L;;;;;N;;;;; +BF41;HANGUL SYLLABLE BBOG;Lo;0;L;;;;;N;;;;; +BF42;HANGUL SYLLABLE BBOGG;Lo;0;L;;;;;N;;;;; +BF43;HANGUL SYLLABLE BBOGS;Lo;0;L;;;;;N;;;;; +BF44;HANGUL SYLLABLE BBON;Lo;0;L;;;;;N;;;;; +BF45;HANGUL SYLLABLE BBONI;Lo;0;L;;;;;N;;;;; +BF46;HANGUL SYLLABLE BBONH;Lo;0;L;;;;;N;;;;; +BF47;HANGUL SYLLABLE BBOD;Lo;0;L;;;;;N;;;;; +BF48;HANGUL SYLLABLE BBOL;Lo;0;L;;;;;N;;;;; +BF49;HANGUL SYLLABLE BBOLG;Lo;0;L;;;;;N;;;;; +BF4A;HANGUL SYLLABLE BBOLM;Lo;0;L;;;;;N;;;;; +BF4B;HANGUL SYLLABLE BBOLB;Lo;0;L;;;;;N;;;;; +BF4C;HANGUL SYLLABLE BBOLS;Lo;0;L;;;;;N;;;;; +BF4D;HANGUL SYLLABLE BBOLT;Lo;0;L;;;;;N;;;;; +BF4E;HANGUL SYLLABLE BBOLP;Lo;0;L;;;;;N;;;;; +BF4F;HANGUL SYLLABLE BBOLH;Lo;0;L;;;;;N;;;;; +BF50;HANGUL SYLLABLE BBOM;Lo;0;L;;;;;N;;;;; +BF51;HANGUL SYLLABLE BBOB;Lo;0;L;;;;;N;;;;; +BF52;HANGUL SYLLABLE BBOBS;Lo;0;L;;;;;N;;;;; +BF53;HANGUL SYLLABLE BBOS;Lo;0;L;;;;;N;;;;; +BF54;HANGUL SYLLABLE BBOSS;Lo;0;L;;;;;N;;;;; +BF55;HANGUL SYLLABLE BBONG;Lo;0;L;;;;;N;;;;; +BF56;HANGUL SYLLABLE BBOJ;Lo;0;L;;;;;N;;;;; +BF57;HANGUL SYLLABLE BBOC;Lo;0;L;;;;;N;;;;; +BF58;HANGUL SYLLABLE BBOK;Lo;0;L;;;;;N;;;;; +BF59;HANGUL SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; +BF5A;HANGUL SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; +BF5B;HANGUL SYLLABLE BBOH;Lo;0;L;;;;;N;;;;; +BF5C;HANGUL SYLLABLE BBWA;Lo;0;L;;;;;N;;;;; +BF5D;HANGUL SYLLABLE BBWAG;Lo;0;L;;;;;N;;;;; +BF5E;HANGUL SYLLABLE BBWAGG;Lo;0;L;;;;;N;;;;; +BF5F;HANGUL SYLLABLE BBWAGS;Lo;0;L;;;;;N;;;;; +BF60;HANGUL SYLLABLE BBWAN;Lo;0;L;;;;;N;;;;; +BF61;HANGUL SYLLABLE BBWANI;Lo;0;L;;;;;N;;;;; +BF62;HANGUL SYLLABLE BBWANH;Lo;0;L;;;;;N;;;;; +BF63;HANGUL SYLLABLE BBWAD;Lo;0;L;;;;;N;;;;; +BF64;HANGUL SYLLABLE BBWAL;Lo;0;L;;;;;N;;;;; +BF65;HANGUL SYLLABLE BBWALG;Lo;0;L;;;;;N;;;;; +BF66;HANGUL SYLLABLE BBWALM;Lo;0;L;;;;;N;;;;; +BF67;HANGUL SYLLABLE BBWALB;Lo;0;L;;;;;N;;;;; +BF68;HANGUL SYLLABLE BBWALS;Lo;0;L;;;;;N;;;;; +BF69;HANGUL SYLLABLE BBWALT;Lo;0;L;;;;;N;;;;; +BF6A;HANGUL SYLLABLE BBWALP;Lo;0;L;;;;;N;;;;; +BF6B;HANGUL SYLLABLE BBWALH;Lo;0;L;;;;;N;;;;; +BF6C;HANGUL SYLLABLE BBWAM;Lo;0;L;;;;;N;;;;; +BF6D;HANGUL SYLLABLE BBWAB;Lo;0;L;;;;;N;;;;; +BF6E;HANGUL SYLLABLE BBWABS;Lo;0;L;;;;;N;;;;; +BF6F;HANGUL SYLLABLE BBWAS;Lo;0;L;;;;;N;;;;; +BF70;HANGUL SYLLABLE BBWASS;Lo;0;L;;;;;N;;;;; +BF71;HANGUL SYLLABLE BBWANG;Lo;0;L;;;;;N;;;;; +BF72;HANGUL SYLLABLE BBWAJ;Lo;0;L;;;;;N;;;;; +BF73;HANGUL SYLLABLE BBWAC;Lo;0;L;;;;;N;;;;; +BF74;HANGUL SYLLABLE BBWAK;Lo;0;L;;;;;N;;;;; +BF75;HANGUL SYLLABLE BBWAT;Lo;0;L;;;;;N;;;;; +BF76;HANGUL SYLLABLE BBWAP;Lo;0;L;;;;;N;;;;; +BF77;HANGUL SYLLABLE BBWAH;Lo;0;L;;;;;N;;;;; +BF78;HANGUL SYLLABLE BBWAE;Lo;0;L;;;;;N;;;;; +BF79;HANGUL SYLLABLE BBWAEG;Lo;0;L;;;;;N;;;;; +BF7A;HANGUL SYLLABLE BBWAEGG;Lo;0;L;;;;;N;;;;; +BF7B;HANGUL SYLLABLE BBWAEGS;Lo;0;L;;;;;N;;;;; +BF7C;HANGUL SYLLABLE BBWAEN;Lo;0;L;;;;;N;;;;; +BF7D;HANGUL SYLLABLE BBWAENI;Lo;0;L;;;;;N;;;;; +BF7E;HANGUL SYLLABLE BBWAENH;Lo;0;L;;;;;N;;;;; +BF7F;HANGUL SYLLABLE BBWAED;Lo;0;L;;;;;N;;;;; +BF80;HANGUL SYLLABLE BBWAEL;Lo;0;L;;;;;N;;;;; +BF81;HANGUL SYLLABLE BBWAELG;Lo;0;L;;;;;N;;;;; +BF82;HANGUL SYLLABLE BBWAELM;Lo;0;L;;;;;N;;;;; +BF83;HANGUL SYLLABLE BBWAELB;Lo;0;L;;;;;N;;;;; +BF84;HANGUL SYLLABLE BBWAELS;Lo;0;L;;;;;N;;;;; +BF85;HANGUL SYLLABLE BBWAELT;Lo;0;L;;;;;N;;;;; +BF86;HANGUL SYLLABLE BBWAELP;Lo;0;L;;;;;N;;;;; +BF87;HANGUL SYLLABLE BBWAELH;Lo;0;L;;;;;N;;;;; +BF88;HANGUL SYLLABLE BBWAEM;Lo;0;L;;;;;N;;;;; +BF89;HANGUL SYLLABLE BBWAEB;Lo;0;L;;;;;N;;;;; +BF8A;HANGUL SYLLABLE BBWAEBS;Lo;0;L;;;;;N;;;;; +BF8B;HANGUL SYLLABLE BBWAES;Lo;0;L;;;;;N;;;;; +BF8C;HANGUL SYLLABLE BBWAESS;Lo;0;L;;;;;N;;;;; +BF8D;HANGUL SYLLABLE BBWAENG;Lo;0;L;;;;;N;;;;; +BF8E;HANGUL SYLLABLE BBWAEJ;Lo;0;L;;;;;N;;;;; +BF8F;HANGUL SYLLABLE BBWAEC;Lo;0;L;;;;;N;;;;; +BF90;HANGUL SYLLABLE BBWAEK;Lo;0;L;;;;;N;;;;; +BF91;HANGUL SYLLABLE BBWAET;Lo;0;L;;;;;N;;;;; +BF92;HANGUL SYLLABLE BBWAEP;Lo;0;L;;;;;N;;;;; +BF93;HANGUL SYLLABLE BBWAEH;Lo;0;L;;;;;N;;;;; +BF94;HANGUL SYLLABLE BBOE;Lo;0;L;;;;;N;;;;; +BF95;HANGUL SYLLABLE BBOEG;Lo;0;L;;;;;N;;;;; +BF96;HANGUL SYLLABLE BBOEGG;Lo;0;L;;;;;N;;;;; +BF97;HANGUL SYLLABLE BBOEGS;Lo;0;L;;;;;N;;;;; +BF98;HANGUL SYLLABLE BBOEN;Lo;0;L;;;;;N;;;;; +BF99;HANGUL SYLLABLE BBOENI;Lo;0;L;;;;;N;;;;; +BF9A;HANGUL SYLLABLE BBOENH;Lo;0;L;;;;;N;;;;; +BF9B;HANGUL SYLLABLE BBOED;Lo;0;L;;;;;N;;;;; +BF9C;HANGUL SYLLABLE BBOEL;Lo;0;L;;;;;N;;;;; +BF9D;HANGUL SYLLABLE BBOELG;Lo;0;L;;;;;N;;;;; +BF9E;HANGUL SYLLABLE BBOELM;Lo;0;L;;;;;N;;;;; +BF9F;HANGUL SYLLABLE BBOELB;Lo;0;L;;;;;N;;;;; +BFA0;HANGUL SYLLABLE BBOELS;Lo;0;L;;;;;N;;;;; +BFA1;HANGUL SYLLABLE BBOELT;Lo;0;L;;;;;N;;;;; +BFA2;HANGUL SYLLABLE BBOELP;Lo;0;L;;;;;N;;;;; +BFA3;HANGUL SYLLABLE BBOELH;Lo;0;L;;;;;N;;;;; +BFA4;HANGUL SYLLABLE BBOEM;Lo;0;L;;;;;N;;;;; +BFA5;HANGUL SYLLABLE BBOEB;Lo;0;L;;;;;N;;;;; +BFA6;HANGUL SYLLABLE BBOEBS;Lo;0;L;;;;;N;;;;; +BFA7;HANGUL SYLLABLE BBOES;Lo;0;L;;;;;N;;;;; +BFA8;HANGUL SYLLABLE BBOESS;Lo;0;L;;;;;N;;;;; +BFA9;HANGUL SYLLABLE BBOENG;Lo;0;L;;;;;N;;;;; +BFAA;HANGUL SYLLABLE BBOEJ;Lo;0;L;;;;;N;;;;; +BFAB;HANGUL SYLLABLE BBOEC;Lo;0;L;;;;;N;;;;; +BFAC;HANGUL SYLLABLE BBOEK;Lo;0;L;;;;;N;;;;; +BFAD;HANGUL SYLLABLE BBOET;Lo;0;L;;;;;N;;;;; +BFAE;HANGUL SYLLABLE BBOEP;Lo;0;L;;;;;N;;;;; +BFAF;HANGUL SYLLABLE BBOEH;Lo;0;L;;;;;N;;;;; +BFB0;HANGUL SYLLABLE BBYO;Lo;0;L;;;;;N;;;;; +BFB1;HANGUL SYLLABLE BBYOG;Lo;0;L;;;;;N;;;;; +BFB2;HANGUL SYLLABLE BBYOGG;Lo;0;L;;;;;N;;;;; +BFB3;HANGUL SYLLABLE BBYOGS;Lo;0;L;;;;;N;;;;; +BFB4;HANGUL SYLLABLE BBYON;Lo;0;L;;;;;N;;;;; +BFB5;HANGUL SYLLABLE BBYONI;Lo;0;L;;;;;N;;;;; +BFB6;HANGUL SYLLABLE BBYONH;Lo;0;L;;;;;N;;;;; +BFB7;HANGUL SYLLABLE BBYOD;Lo;0;L;;;;;N;;;;; +BFB8;HANGUL SYLLABLE BBYOL;Lo;0;L;;;;;N;;;;; +BFB9;HANGUL SYLLABLE BBYOLG;Lo;0;L;;;;;N;;;;; +BFBA;HANGUL SYLLABLE BBYOLM;Lo;0;L;;;;;N;;;;; +BFBB;HANGUL SYLLABLE BBYOLB;Lo;0;L;;;;;N;;;;; +BFBC;HANGUL SYLLABLE BBYOLS;Lo;0;L;;;;;N;;;;; +BFBD;HANGUL SYLLABLE BBYOLT;Lo;0;L;;;;;N;;;;; +BFBE;HANGUL SYLLABLE BBYOLP;Lo;0;L;;;;;N;;;;; +BFBF;HANGUL SYLLABLE BBYOLH;Lo;0;L;;;;;N;;;;; +BFC0;HANGUL SYLLABLE BBYOM;Lo;0;L;;;;;N;;;;; +BFC1;HANGUL SYLLABLE BBYOB;Lo;0;L;;;;;N;;;;; +BFC2;HANGUL SYLLABLE BBYOBS;Lo;0;L;;;;;N;;;;; +BFC3;HANGUL SYLLABLE BBYOS;Lo;0;L;;;;;N;;;;; +BFC4;HANGUL SYLLABLE BBYOSS;Lo;0;L;;;;;N;;;;; +BFC5;HANGUL SYLLABLE BBYONG;Lo;0;L;;;;;N;;;;; +BFC6;HANGUL SYLLABLE BBYOJ;Lo;0;L;;;;;N;;;;; +BFC7;HANGUL SYLLABLE BBYOC;Lo;0;L;;;;;N;;;;; +BFC8;HANGUL SYLLABLE BBYOK;Lo;0;L;;;;;N;;;;; +BFC9;HANGUL SYLLABLE BBYOT;Lo;0;L;;;;;N;;;;; +BFCA;HANGUL SYLLABLE BBYOP;Lo;0;L;;;;;N;;;;; +BFCB;HANGUL SYLLABLE BBYOH;Lo;0;L;;;;;N;;;;; +BFCC;HANGUL SYLLABLE BBU;Lo;0;L;;;;;N;;;;; +BFCD;HANGUL SYLLABLE BBUG;Lo;0;L;;;;;N;;;;; +BFCE;HANGUL SYLLABLE BBUGG;Lo;0;L;;;;;N;;;;; +BFCF;HANGUL SYLLABLE BBUGS;Lo;0;L;;;;;N;;;;; +BFD0;HANGUL SYLLABLE BBUN;Lo;0;L;;;;;N;;;;; +BFD1;HANGUL SYLLABLE BBUNI;Lo;0;L;;;;;N;;;;; +BFD2;HANGUL SYLLABLE BBUNH;Lo;0;L;;;;;N;;;;; +BFD3;HANGUL SYLLABLE BBUD;Lo;0;L;;;;;N;;;;; +BFD4;HANGUL SYLLABLE BBUL;Lo;0;L;;;;;N;;;;; +BFD5;HANGUL SYLLABLE BBULG;Lo;0;L;;;;;N;;;;; +BFD6;HANGUL SYLLABLE BBULM;Lo;0;L;;;;;N;;;;; +BFD7;HANGUL SYLLABLE BBULB;Lo;0;L;;;;;N;;;;; +BFD8;HANGUL SYLLABLE BBULS;Lo;0;L;;;;;N;;;;; +BFD9;HANGUL SYLLABLE BBULT;Lo;0;L;;;;;N;;;;; +BFDA;HANGUL SYLLABLE BBULP;Lo;0;L;;;;;N;;;;; +BFDB;HANGUL SYLLABLE BBULH;Lo;0;L;;;;;N;;;;; +BFDC;HANGUL SYLLABLE BBUM;Lo;0;L;;;;;N;;;;; +BFDD;HANGUL SYLLABLE BBUB;Lo;0;L;;;;;N;;;;; +BFDE;HANGUL SYLLABLE BBUBS;Lo;0;L;;;;;N;;;;; +BFDF;HANGUL SYLLABLE BBUS;Lo;0;L;;;;;N;;;;; +BFE0;HANGUL SYLLABLE BBUSS;Lo;0;L;;;;;N;;;;; +BFE1;HANGUL SYLLABLE BBUNG;Lo;0;L;;;;;N;;;;; +BFE2;HANGUL SYLLABLE BBUJ;Lo;0;L;;;;;N;;;;; +BFE3;HANGUL SYLLABLE BBUC;Lo;0;L;;;;;N;;;;; +BFE4;HANGUL SYLLABLE BBUK;Lo;0;L;;;;;N;;;;; +BFE5;HANGUL SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; +BFE6;HANGUL SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; +BFE7;HANGUL SYLLABLE BBUH;Lo;0;L;;;;;N;;;;; +BFE8;HANGUL SYLLABLE BBWEO;Lo;0;L;;;;;N;;;;; +BFE9;HANGUL SYLLABLE BBWEOG;Lo;0;L;;;;;N;;;;; +BFEA;HANGUL SYLLABLE BBWEOGG;Lo;0;L;;;;;N;;;;; +BFEB;HANGUL SYLLABLE BBWEOGS;Lo;0;L;;;;;N;;;;; +BFEC;HANGUL SYLLABLE BBWEON;Lo;0;L;;;;;N;;;;; +BFED;HANGUL SYLLABLE BBWEONI;Lo;0;L;;;;;N;;;;; +BFEE;HANGUL SYLLABLE BBWEONH;Lo;0;L;;;;;N;;;;; +BFEF;HANGUL SYLLABLE BBWEOD;Lo;0;L;;;;;N;;;;; +BFF0;HANGUL SYLLABLE BBWEOL;Lo;0;L;;;;;N;;;;; +BFF1;HANGUL SYLLABLE BBWEOLG;Lo;0;L;;;;;N;;;;; +BFF2;HANGUL SYLLABLE BBWEOLM;Lo;0;L;;;;;N;;;;; +BFF3;HANGUL SYLLABLE BBWEOLB;Lo;0;L;;;;;N;;;;; +BFF4;HANGUL SYLLABLE BBWEOLS;Lo;0;L;;;;;N;;;;; +BFF5;HANGUL SYLLABLE BBWEOLT;Lo;0;L;;;;;N;;;;; +BFF6;HANGUL SYLLABLE BBWEOLP;Lo;0;L;;;;;N;;;;; +BFF7;HANGUL SYLLABLE BBWEOLH;Lo;0;L;;;;;N;;;;; +BFF8;HANGUL SYLLABLE BBWEOM;Lo;0;L;;;;;N;;;;; +BFF9;HANGUL SYLLABLE BBWEOB;Lo;0;L;;;;;N;;;;; +BFFA;HANGUL SYLLABLE BBWEOBS;Lo;0;L;;;;;N;;;;; +BFFB;HANGUL SYLLABLE BBWEOS;Lo;0;L;;;;;N;;;;; +BFFC;HANGUL SYLLABLE BBWEOSS;Lo;0;L;;;;;N;;;;; +BFFD;HANGUL SYLLABLE BBWEONG;Lo;0;L;;;;;N;;;;; +BFFE;HANGUL SYLLABLE BBWEOJ;Lo;0;L;;;;;N;;;;; +BFFF;HANGUL SYLLABLE BBWEOC;Lo;0;L;;;;;N;;;;; +C000;HANGUL SYLLABLE BBWEOK;Lo;0;L;;;;;N;;;;; +C001;HANGUL SYLLABLE BBWEOT;Lo;0;L;;;;;N;;;;; +C002;HANGUL SYLLABLE BBWEOP;Lo;0;L;;;;;N;;;;; +C003;HANGUL SYLLABLE BBWEOH;Lo;0;L;;;;;N;;;;; +C004;HANGUL SYLLABLE BBWE;Lo;0;L;;;;;N;;;;; +C005;HANGUL SYLLABLE BBWEG;Lo;0;L;;;;;N;;;;; +C006;HANGUL SYLLABLE BBWEGG;Lo;0;L;;;;;N;;;;; +C007;HANGUL SYLLABLE BBWEGS;Lo;0;L;;;;;N;;;;; +C008;HANGUL SYLLABLE BBWEN;Lo;0;L;;;;;N;;;;; +C009;HANGUL SYLLABLE BBWENI;Lo;0;L;;;;;N;;;;; +C00A;HANGUL SYLLABLE BBWENH;Lo;0;L;;;;;N;;;;; +C00B;HANGUL SYLLABLE BBWED;Lo;0;L;;;;;N;;;;; +C00C;HANGUL SYLLABLE BBWEL;Lo;0;L;;;;;N;;;;; +C00D;HANGUL SYLLABLE BBWELG;Lo;0;L;;;;;N;;;;; +C00E;HANGUL SYLLABLE BBWELM;Lo;0;L;;;;;N;;;;; +C00F;HANGUL SYLLABLE BBWELB;Lo;0;L;;;;;N;;;;; +C010;HANGUL SYLLABLE BBWELS;Lo;0;L;;;;;N;;;;; +C011;HANGUL SYLLABLE BBWELT;Lo;0;L;;;;;N;;;;; +C012;HANGUL SYLLABLE BBWELP;Lo;0;L;;;;;N;;;;; +C013;HANGUL SYLLABLE BBWELH;Lo;0;L;;;;;N;;;;; +C014;HANGUL SYLLABLE BBWEM;Lo;0;L;;;;;N;;;;; +C015;HANGUL SYLLABLE BBWEB;Lo;0;L;;;;;N;;;;; +C016;HANGUL SYLLABLE BBWEBS;Lo;0;L;;;;;N;;;;; +C017;HANGUL SYLLABLE BBWES;Lo;0;L;;;;;N;;;;; +C018;HANGUL SYLLABLE BBWESS;Lo;0;L;;;;;N;;;;; +C019;HANGUL SYLLABLE BBWENG;Lo;0;L;;;;;N;;;;; +C01A;HANGUL SYLLABLE BBWEJ;Lo;0;L;;;;;N;;;;; +C01B;HANGUL SYLLABLE BBWEC;Lo;0;L;;;;;N;;;;; +C01C;HANGUL SYLLABLE BBWEK;Lo;0;L;;;;;N;;;;; +C01D;HANGUL SYLLABLE BBWET;Lo;0;L;;;;;N;;;;; +C01E;HANGUL SYLLABLE BBWEP;Lo;0;L;;;;;N;;;;; +C01F;HANGUL SYLLABLE BBWEH;Lo;0;L;;;;;N;;;;; +C020;HANGUL SYLLABLE BBWI;Lo;0;L;;;;;N;;;;; +C021;HANGUL SYLLABLE BBWIG;Lo;0;L;;;;;N;;;;; +C022;HANGUL SYLLABLE BBWIGG;Lo;0;L;;;;;N;;;;; +C023;HANGUL SYLLABLE BBWIGS;Lo;0;L;;;;;N;;;;; +C024;HANGUL SYLLABLE BBWIN;Lo;0;L;;;;;N;;;;; +C025;HANGUL SYLLABLE BBWINI;Lo;0;L;;;;;N;;;;; +C026;HANGUL SYLLABLE BBWINH;Lo;0;L;;;;;N;;;;; +C027;HANGUL SYLLABLE BBWID;Lo;0;L;;;;;N;;;;; +C028;HANGUL SYLLABLE BBWIL;Lo;0;L;;;;;N;;;;; +C029;HANGUL SYLLABLE BBWILG;Lo;0;L;;;;;N;;;;; +C02A;HANGUL SYLLABLE BBWILM;Lo;0;L;;;;;N;;;;; +C02B;HANGUL SYLLABLE BBWILB;Lo;0;L;;;;;N;;;;; +C02C;HANGUL SYLLABLE BBWILS;Lo;0;L;;;;;N;;;;; +C02D;HANGUL SYLLABLE BBWILT;Lo;0;L;;;;;N;;;;; +C02E;HANGUL SYLLABLE BBWILP;Lo;0;L;;;;;N;;;;; +C02F;HANGUL SYLLABLE BBWILH;Lo;0;L;;;;;N;;;;; +C030;HANGUL SYLLABLE BBWIM;Lo;0;L;;;;;N;;;;; +C031;HANGUL SYLLABLE BBWIB;Lo;0;L;;;;;N;;;;; +C032;HANGUL SYLLABLE BBWIBS;Lo;0;L;;;;;N;;;;; +C033;HANGUL SYLLABLE BBWIS;Lo;0;L;;;;;N;;;;; +C034;HANGUL SYLLABLE BBWISS;Lo;0;L;;;;;N;;;;; +C035;HANGUL SYLLABLE BBWING;Lo;0;L;;;;;N;;;;; +C036;HANGUL SYLLABLE BBWIJ;Lo;0;L;;;;;N;;;;; +C037;HANGUL SYLLABLE BBWIC;Lo;0;L;;;;;N;;;;; +C038;HANGUL SYLLABLE BBWIK;Lo;0;L;;;;;N;;;;; +C039;HANGUL SYLLABLE BBWIT;Lo;0;L;;;;;N;;;;; +C03A;HANGUL SYLLABLE BBWIP;Lo;0;L;;;;;N;;;;; +C03B;HANGUL SYLLABLE BBWIH;Lo;0;L;;;;;N;;;;; +C03C;HANGUL SYLLABLE BBYU;Lo;0;L;;;;;N;;;;; +C03D;HANGUL SYLLABLE BBYUG;Lo;0;L;;;;;N;;;;; +C03E;HANGUL SYLLABLE BBYUGG;Lo;0;L;;;;;N;;;;; +C03F;HANGUL SYLLABLE BBYUGS;Lo;0;L;;;;;N;;;;; +C040;HANGUL SYLLABLE BBYUN;Lo;0;L;;;;;N;;;;; +C041;HANGUL SYLLABLE BBYUNI;Lo;0;L;;;;;N;;;;; +C042;HANGUL SYLLABLE BBYUNH;Lo;0;L;;;;;N;;;;; +C043;HANGUL SYLLABLE BBYUD;Lo;0;L;;;;;N;;;;; +C044;HANGUL SYLLABLE BBYUL;Lo;0;L;;;;;N;;;;; +C045;HANGUL SYLLABLE BBYULG;Lo;0;L;;;;;N;;;;; +C046;HANGUL SYLLABLE BBYULM;Lo;0;L;;;;;N;;;;; +C047;HANGUL SYLLABLE BBYULB;Lo;0;L;;;;;N;;;;; +C048;HANGUL SYLLABLE BBYULS;Lo;0;L;;;;;N;;;;; +C049;HANGUL SYLLABLE BBYULT;Lo;0;L;;;;;N;;;;; +C04A;HANGUL SYLLABLE BBYULP;Lo;0;L;;;;;N;;;;; +C04B;HANGUL SYLLABLE BBYULH;Lo;0;L;;;;;N;;;;; +C04C;HANGUL SYLLABLE BBYUM;Lo;0;L;;;;;N;;;;; +C04D;HANGUL SYLLABLE BBYUB;Lo;0;L;;;;;N;;;;; +C04E;HANGUL SYLLABLE BBYUBS;Lo;0;L;;;;;N;;;;; +C04F;HANGUL SYLLABLE BBYUS;Lo;0;L;;;;;N;;;;; +C050;HANGUL SYLLABLE BBYUSS;Lo;0;L;;;;;N;;;;; +C051;HANGUL SYLLABLE BBYUNG;Lo;0;L;;;;;N;;;;; +C052;HANGUL SYLLABLE BBYUJ;Lo;0;L;;;;;N;;;;; +C053;HANGUL SYLLABLE BBYUC;Lo;0;L;;;;;N;;;;; +C054;HANGUL SYLLABLE BBYUK;Lo;0;L;;;;;N;;;;; +C055;HANGUL SYLLABLE BBYUT;Lo;0;L;;;;;N;;;;; +C056;HANGUL SYLLABLE BBYUP;Lo;0;L;;;;;N;;;;; +C057;HANGUL SYLLABLE BBYUH;Lo;0;L;;;;;N;;;;; +C058;HANGUL SYLLABLE BBEU;Lo;0;L;;;;;N;;;;; +C059;HANGUL SYLLABLE BBEUG;Lo;0;L;;;;;N;;;;; +C05A;HANGUL SYLLABLE BBEUGG;Lo;0;L;;;;;N;;;;; +C05B;HANGUL SYLLABLE BBEUGS;Lo;0;L;;;;;N;;;;; +C05C;HANGUL SYLLABLE BBEUN;Lo;0;L;;;;;N;;;;; +C05D;HANGUL SYLLABLE BBEUNI;Lo;0;L;;;;;N;;;;; +C05E;HANGUL SYLLABLE BBEUNH;Lo;0;L;;;;;N;;;;; +C05F;HANGUL SYLLABLE BBEUD;Lo;0;L;;;;;N;;;;; +C060;HANGUL SYLLABLE BBEUL;Lo;0;L;;;;;N;;;;; +C061;HANGUL SYLLABLE BBEULG;Lo;0;L;;;;;N;;;;; +C062;HANGUL SYLLABLE BBEULM;Lo;0;L;;;;;N;;;;; +C063;HANGUL SYLLABLE BBEULB;Lo;0;L;;;;;N;;;;; +C064;HANGUL SYLLABLE BBEULS;Lo;0;L;;;;;N;;;;; +C065;HANGUL SYLLABLE BBEULT;Lo;0;L;;;;;N;;;;; +C066;HANGUL SYLLABLE BBEULP;Lo;0;L;;;;;N;;;;; +C067;HANGUL SYLLABLE BBEULH;Lo;0;L;;;;;N;;;;; +C068;HANGUL SYLLABLE BBEUM;Lo;0;L;;;;;N;;;;; +C069;HANGUL SYLLABLE BBEUB;Lo;0;L;;;;;N;;;;; +C06A;HANGUL SYLLABLE BBEUBS;Lo;0;L;;;;;N;;;;; +C06B;HANGUL SYLLABLE BBEUS;Lo;0;L;;;;;N;;;;; +C06C;HANGUL SYLLABLE BBEUSS;Lo;0;L;;;;;N;;;;; +C06D;HANGUL SYLLABLE BBEUNG;Lo;0;L;;;;;N;;;;; +C06E;HANGUL SYLLABLE BBEUJ;Lo;0;L;;;;;N;;;;; +C06F;HANGUL SYLLABLE BBEUC;Lo;0;L;;;;;N;;;;; +C070;HANGUL SYLLABLE BBEUK;Lo;0;L;;;;;N;;;;; +C071;HANGUL SYLLABLE BBEUT;Lo;0;L;;;;;N;;;;; +C072;HANGUL SYLLABLE BBEUP;Lo;0;L;;;;;N;;;;; +C073;HANGUL SYLLABLE BBEUH;Lo;0;L;;;;;N;;;;; +C074;HANGUL SYLLABLE BBYI;Lo;0;L;;;;;N;;;;; +C075;HANGUL SYLLABLE BBYIG;Lo;0;L;;;;;N;;;;; +C076;HANGUL SYLLABLE BBYIGG;Lo;0;L;;;;;N;;;;; +C077;HANGUL SYLLABLE BBYIGS;Lo;0;L;;;;;N;;;;; +C078;HANGUL SYLLABLE BBYIN;Lo;0;L;;;;;N;;;;; +C079;HANGUL SYLLABLE BBYINI;Lo;0;L;;;;;N;;;;; +C07A;HANGUL SYLLABLE BBYINH;Lo;0;L;;;;;N;;;;; +C07B;HANGUL SYLLABLE BBYID;Lo;0;L;;;;;N;;;;; +C07C;HANGUL SYLLABLE BBYIL;Lo;0;L;;;;;N;;;;; +C07D;HANGUL SYLLABLE BBYILG;Lo;0;L;;;;;N;;;;; +C07E;HANGUL SYLLABLE BBYILM;Lo;0;L;;;;;N;;;;; +C07F;HANGUL SYLLABLE BBYILB;Lo;0;L;;;;;N;;;;; +C080;HANGUL SYLLABLE BBYILS;Lo;0;L;;;;;N;;;;; +C081;HANGUL SYLLABLE BBYILT;Lo;0;L;;;;;N;;;;; +C082;HANGUL SYLLABLE BBYILP;Lo;0;L;;;;;N;;;;; +C083;HANGUL SYLLABLE BBYILH;Lo;0;L;;;;;N;;;;; +C084;HANGUL SYLLABLE BBYIM;Lo;0;L;;;;;N;;;;; +C085;HANGUL SYLLABLE BBYIB;Lo;0;L;;;;;N;;;;; +C086;HANGUL SYLLABLE BBYIBS;Lo;0;L;;;;;N;;;;; +C087;HANGUL SYLLABLE BBYIS;Lo;0;L;;;;;N;;;;; +C088;HANGUL SYLLABLE BBYISS;Lo;0;L;;;;;N;;;;; +C089;HANGUL SYLLABLE BBYING;Lo;0;L;;;;;N;;;;; +C08A;HANGUL SYLLABLE BBYIJ;Lo;0;L;;;;;N;;;;; +C08B;HANGUL SYLLABLE BBYIC;Lo;0;L;;;;;N;;;;; +C08C;HANGUL SYLLABLE BBYIK;Lo;0;L;;;;;N;;;;; +C08D;HANGUL SYLLABLE BBYIT;Lo;0;L;;;;;N;;;;; +C08E;HANGUL SYLLABLE BBYIP;Lo;0;L;;;;;N;;;;; +C08F;HANGUL SYLLABLE BBYIH;Lo;0;L;;;;;N;;;;; +C090;HANGUL SYLLABLE BBI;Lo;0;L;;;;;N;;;;; +C091;HANGUL SYLLABLE BBIG;Lo;0;L;;;;;N;;;;; +C092;HANGUL SYLLABLE BBIGG;Lo;0;L;;;;;N;;;;; +C093;HANGUL SYLLABLE BBIGS;Lo;0;L;;;;;N;;;;; +C094;HANGUL SYLLABLE BBIN;Lo;0;L;;;;;N;;;;; +C095;HANGUL SYLLABLE BBINI;Lo;0;L;;;;;N;;;;; +C096;HANGUL SYLLABLE BBINH;Lo;0;L;;;;;N;;;;; +C097;HANGUL SYLLABLE BBID;Lo;0;L;;;;;N;;;;; +C098;HANGUL SYLLABLE BBIL;Lo;0;L;;;;;N;;;;; +C099;HANGUL SYLLABLE BBILG;Lo;0;L;;;;;N;;;;; +C09A;HANGUL SYLLABLE BBILM;Lo;0;L;;;;;N;;;;; +C09B;HANGUL SYLLABLE BBILB;Lo;0;L;;;;;N;;;;; +C09C;HANGUL SYLLABLE BBILS;Lo;0;L;;;;;N;;;;; +C09D;HANGUL SYLLABLE BBILT;Lo;0;L;;;;;N;;;;; +C09E;HANGUL SYLLABLE BBILP;Lo;0;L;;;;;N;;;;; +C09F;HANGUL SYLLABLE BBILH;Lo;0;L;;;;;N;;;;; +C0A0;HANGUL SYLLABLE BBIM;Lo;0;L;;;;;N;;;;; +C0A1;HANGUL SYLLABLE BBIB;Lo;0;L;;;;;N;;;;; +C0A2;HANGUL SYLLABLE BBIBS;Lo;0;L;;;;;N;;;;; +C0A3;HANGUL SYLLABLE BBIS;Lo;0;L;;;;;N;;;;; +C0A4;HANGUL SYLLABLE BBISS;Lo;0;L;;;;;N;;;;; +C0A5;HANGUL SYLLABLE BBING;Lo;0;L;;;;;N;;;;; +C0A6;HANGUL SYLLABLE BBIJ;Lo;0;L;;;;;N;;;;; +C0A7;HANGUL SYLLABLE BBIC;Lo;0;L;;;;;N;;;;; +C0A8;HANGUL SYLLABLE BBIK;Lo;0;L;;;;;N;;;;; +C0A9;HANGUL SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; +C0AA;HANGUL SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; +C0AB;HANGUL SYLLABLE BBIH;Lo;0;L;;;;;N;;;;; +C0AC;HANGUL SYLLABLE SA;Lo;0;L;;;;;N;;;;; +C0AD;HANGUL SYLLABLE SAG;Lo;0;L;;;;;N;;;;; +C0AE;HANGUL SYLLABLE SAGG;Lo;0;L;;;;;N;;;;; +C0AF;HANGUL SYLLABLE SAGS;Lo;0;L;;;;;N;;;;; +C0B0;HANGUL SYLLABLE SAN;Lo;0;L;;;;;N;;;;; +C0B1;HANGUL SYLLABLE SANI;Lo;0;L;;;;;N;;;;; +C0B2;HANGUL SYLLABLE SANH;Lo;0;L;;;;;N;;;;; +C0B3;HANGUL SYLLABLE SAD;Lo;0;L;;;;;N;;;;; +C0B4;HANGUL SYLLABLE SAL;Lo;0;L;;;;;N;;;;; +C0B5;HANGUL SYLLABLE SALG;Lo;0;L;;;;;N;;;;; +C0B6;HANGUL SYLLABLE SALM;Lo;0;L;;;;;N;;;;; +C0B7;HANGUL SYLLABLE SALB;Lo;0;L;;;;;N;;;;; +C0B8;HANGUL SYLLABLE SALS;Lo;0;L;;;;;N;;;;; +C0B9;HANGUL SYLLABLE SALT;Lo;0;L;;;;;N;;;;; +C0BA;HANGUL SYLLABLE SALP;Lo;0;L;;;;;N;;;;; +C0BB;HANGUL SYLLABLE SALH;Lo;0;L;;;;;N;;;;; +C0BC;HANGUL SYLLABLE SAM;Lo;0;L;;;;;N;;;;; +C0BD;HANGUL SYLLABLE SAB;Lo;0;L;;;;;N;;;;; +C0BE;HANGUL SYLLABLE SABS;Lo;0;L;;;;;N;;;;; +C0BF;HANGUL SYLLABLE SAS;Lo;0;L;;;;;N;;;;; +C0C0;HANGUL SYLLABLE SASS;Lo;0;L;;;;;N;;;;; +C0C1;HANGUL SYLLABLE SANG;Lo;0;L;;;;;N;;;;; +C0C2;HANGUL SYLLABLE SAJ;Lo;0;L;;;;;N;;;;; +C0C3;HANGUL SYLLABLE SAC;Lo;0;L;;;;;N;;;;; +C0C4;HANGUL SYLLABLE SAK;Lo;0;L;;;;;N;;;;; +C0C5;HANGUL SYLLABLE SAT;Lo;0;L;;;;;N;;;;; +C0C6;HANGUL SYLLABLE SAP;Lo;0;L;;;;;N;;;;; +C0C7;HANGUL SYLLABLE SAH;Lo;0;L;;;;;N;;;;; +C0C8;HANGUL SYLLABLE SAE;Lo;0;L;;;;;N;;;;; +C0C9;HANGUL SYLLABLE SAEG;Lo;0;L;;;;;N;;;;; +C0CA;HANGUL SYLLABLE SAEGG;Lo;0;L;;;;;N;;;;; +C0CB;HANGUL SYLLABLE SAEGS;Lo;0;L;;;;;N;;;;; +C0CC;HANGUL SYLLABLE SAEN;Lo;0;L;;;;;N;;;;; +C0CD;HANGUL SYLLABLE SAENI;Lo;0;L;;;;;N;;;;; +C0CE;HANGUL SYLLABLE SAENH;Lo;0;L;;;;;N;;;;; +C0CF;HANGUL SYLLABLE SAED;Lo;0;L;;;;;N;;;;; +C0D0;HANGUL SYLLABLE SAEL;Lo;0;L;;;;;N;;;;; +C0D1;HANGUL SYLLABLE SAELG;Lo;0;L;;;;;N;;;;; +C0D2;HANGUL SYLLABLE SAELM;Lo;0;L;;;;;N;;;;; +C0D3;HANGUL SYLLABLE SAELB;Lo;0;L;;;;;N;;;;; +C0D4;HANGUL SYLLABLE SAELS;Lo;0;L;;;;;N;;;;; +C0D5;HANGUL SYLLABLE SAELT;Lo;0;L;;;;;N;;;;; +C0D6;HANGUL SYLLABLE SAELP;Lo;0;L;;;;;N;;;;; +C0D7;HANGUL SYLLABLE SAELH;Lo;0;L;;;;;N;;;;; +C0D8;HANGUL SYLLABLE SAEM;Lo;0;L;;;;;N;;;;; +C0D9;HANGUL SYLLABLE SAEB;Lo;0;L;;;;;N;;;;; +C0DA;HANGUL SYLLABLE SAEBS;Lo;0;L;;;;;N;;;;; +C0DB;HANGUL SYLLABLE SAES;Lo;0;L;;;;;N;;;;; +C0DC;HANGUL SYLLABLE SAESS;Lo;0;L;;;;;N;;;;; +C0DD;HANGUL SYLLABLE SAENG;Lo;0;L;;;;;N;;;;; +C0DE;HANGUL SYLLABLE SAEJ;Lo;0;L;;;;;N;;;;; +C0DF;HANGUL SYLLABLE SAEC;Lo;0;L;;;;;N;;;;; +C0E0;HANGUL SYLLABLE SAEK;Lo;0;L;;;;;N;;;;; +C0E1;HANGUL SYLLABLE SAET;Lo;0;L;;;;;N;;;;; +C0E2;HANGUL SYLLABLE SAEP;Lo;0;L;;;;;N;;;;; +C0E3;HANGUL SYLLABLE SAEH;Lo;0;L;;;;;N;;;;; +C0E4;HANGUL SYLLABLE SYA;Lo;0;L;;;;;N;;;;; +C0E5;HANGUL SYLLABLE SYAG;Lo;0;L;;;;;N;;;;; +C0E6;HANGUL SYLLABLE SYAGG;Lo;0;L;;;;;N;;;;; +C0E7;HANGUL SYLLABLE SYAGS;Lo;0;L;;;;;N;;;;; +C0E8;HANGUL SYLLABLE SYAN;Lo;0;L;;;;;N;;;;; +C0E9;HANGUL SYLLABLE SYANI;Lo;0;L;;;;;N;;;;; +C0EA;HANGUL SYLLABLE SYANH;Lo;0;L;;;;;N;;;;; +C0EB;HANGUL SYLLABLE SYAD;Lo;0;L;;;;;N;;;;; +C0EC;HANGUL SYLLABLE SYAL;Lo;0;L;;;;;N;;;;; +C0ED;HANGUL SYLLABLE SYALG;Lo;0;L;;;;;N;;;;; +C0EE;HANGUL SYLLABLE SYALM;Lo;0;L;;;;;N;;;;; +C0EF;HANGUL SYLLABLE SYALB;Lo;0;L;;;;;N;;;;; +C0F0;HANGUL SYLLABLE SYALS;Lo;0;L;;;;;N;;;;; +C0F1;HANGUL SYLLABLE SYALT;Lo;0;L;;;;;N;;;;; +C0F2;HANGUL SYLLABLE SYALP;Lo;0;L;;;;;N;;;;; +C0F3;HANGUL SYLLABLE SYALH;Lo;0;L;;;;;N;;;;; +C0F4;HANGUL SYLLABLE SYAM;Lo;0;L;;;;;N;;;;; +C0F5;HANGUL SYLLABLE SYAB;Lo;0;L;;;;;N;;;;; +C0F6;HANGUL SYLLABLE SYABS;Lo;0;L;;;;;N;;;;; +C0F7;HANGUL SYLLABLE SYAS;Lo;0;L;;;;;N;;;;; +C0F8;HANGUL SYLLABLE SYASS;Lo;0;L;;;;;N;;;;; +C0F9;HANGUL SYLLABLE SYANG;Lo;0;L;;;;;N;;;;; +C0FA;HANGUL SYLLABLE SYAJ;Lo;0;L;;;;;N;;;;; +C0FB;HANGUL SYLLABLE SYAC;Lo;0;L;;;;;N;;;;; +C0FC;HANGUL SYLLABLE SYAK;Lo;0;L;;;;;N;;;;; +C0FD;HANGUL SYLLABLE SYAT;Lo;0;L;;;;;N;;;;; +C0FE;HANGUL SYLLABLE SYAP;Lo;0;L;;;;;N;;;;; +C0FF;HANGUL SYLLABLE SYAH;Lo;0;L;;;;;N;;;;; +C100;HANGUL SYLLABLE SYAE;Lo;0;L;;;;;N;;;;; +C101;HANGUL SYLLABLE SYAEG;Lo;0;L;;;;;N;;;;; +C102;HANGUL SYLLABLE SYAEGG;Lo;0;L;;;;;N;;;;; +C103;HANGUL SYLLABLE SYAEGS;Lo;0;L;;;;;N;;;;; +C104;HANGUL SYLLABLE SYAEN;Lo;0;L;;;;;N;;;;; +C105;HANGUL SYLLABLE SYAENI;Lo;0;L;;;;;N;;;;; +C106;HANGUL SYLLABLE SYAENH;Lo;0;L;;;;;N;;;;; +C107;HANGUL SYLLABLE SYAED;Lo;0;L;;;;;N;;;;; +C108;HANGUL SYLLABLE SYAEL;Lo;0;L;;;;;N;;;;; +C109;HANGUL SYLLABLE SYAELG;Lo;0;L;;;;;N;;;;; +C10A;HANGUL SYLLABLE SYAELM;Lo;0;L;;;;;N;;;;; +C10B;HANGUL SYLLABLE SYAELB;Lo;0;L;;;;;N;;;;; +C10C;HANGUL SYLLABLE SYAELS;Lo;0;L;;;;;N;;;;; +C10D;HANGUL SYLLABLE SYAELT;Lo;0;L;;;;;N;;;;; +C10E;HANGUL SYLLABLE SYAELP;Lo;0;L;;;;;N;;;;; +C10F;HANGUL SYLLABLE SYAELH;Lo;0;L;;;;;N;;;;; +C110;HANGUL SYLLABLE SYAEM;Lo;0;L;;;;;N;;;;; +C111;HANGUL SYLLABLE SYAEB;Lo;0;L;;;;;N;;;;; +C112;HANGUL SYLLABLE SYAEBS;Lo;0;L;;;;;N;;;;; +C113;HANGUL SYLLABLE SYAES;Lo;0;L;;;;;N;;;;; +C114;HANGUL SYLLABLE SYAESS;Lo;0;L;;;;;N;;;;; +C115;HANGUL SYLLABLE SYAENG;Lo;0;L;;;;;N;;;;; +C116;HANGUL SYLLABLE SYAEJ;Lo;0;L;;;;;N;;;;; +C117;HANGUL SYLLABLE SYAEC;Lo;0;L;;;;;N;;;;; +C118;HANGUL SYLLABLE SYAEK;Lo;0;L;;;;;N;;;;; +C119;HANGUL SYLLABLE SYAET;Lo;0;L;;;;;N;;;;; +C11A;HANGUL SYLLABLE SYAEP;Lo;0;L;;;;;N;;;;; +C11B;HANGUL SYLLABLE SYAEH;Lo;0;L;;;;;N;;;;; +C11C;HANGUL SYLLABLE SEO;Lo;0;L;;;;;N;;;;; +C11D;HANGUL SYLLABLE SEOG;Lo;0;L;;;;;N;;;;; +C11E;HANGUL SYLLABLE SEOGG;Lo;0;L;;;;;N;;;;; +C11F;HANGUL SYLLABLE SEOGS;Lo;0;L;;;;;N;;;;; +C120;HANGUL SYLLABLE SEON;Lo;0;L;;;;;N;;;;; +C121;HANGUL SYLLABLE SEONI;Lo;0;L;;;;;N;;;;; +C122;HANGUL SYLLABLE SEONH;Lo;0;L;;;;;N;;;;; +C123;HANGUL SYLLABLE SEOD;Lo;0;L;;;;;N;;;;; +C124;HANGUL SYLLABLE SEOL;Lo;0;L;;;;;N;;;;; +C125;HANGUL SYLLABLE SEOLG;Lo;0;L;;;;;N;;;;; +C126;HANGUL SYLLABLE SEOLM;Lo;0;L;;;;;N;;;;; +C127;HANGUL SYLLABLE SEOLB;Lo;0;L;;;;;N;;;;; +C128;HANGUL SYLLABLE SEOLS;Lo;0;L;;;;;N;;;;; +C129;HANGUL SYLLABLE SEOLT;Lo;0;L;;;;;N;;;;; +C12A;HANGUL SYLLABLE SEOLP;Lo;0;L;;;;;N;;;;; +C12B;HANGUL SYLLABLE SEOLH;Lo;0;L;;;;;N;;;;; +C12C;HANGUL SYLLABLE SEOM;Lo;0;L;;;;;N;;;;; +C12D;HANGUL SYLLABLE SEOB;Lo;0;L;;;;;N;;;;; +C12E;HANGUL SYLLABLE SEOBS;Lo;0;L;;;;;N;;;;; +C12F;HANGUL SYLLABLE SEOS;Lo;0;L;;;;;N;;;;; +C130;HANGUL SYLLABLE SEOSS;Lo;0;L;;;;;N;;;;; +C131;HANGUL SYLLABLE SEONG;Lo;0;L;;;;;N;;;;; +C132;HANGUL SYLLABLE SEOJ;Lo;0;L;;;;;N;;;;; +C133;HANGUL SYLLABLE SEOC;Lo;0;L;;;;;N;;;;; +C134;HANGUL SYLLABLE SEOK;Lo;0;L;;;;;N;;;;; +C135;HANGUL SYLLABLE SEOT;Lo;0;L;;;;;N;;;;; +C136;HANGUL SYLLABLE SEOP;Lo;0;L;;;;;N;;;;; +C137;HANGUL SYLLABLE SEOH;Lo;0;L;;;;;N;;;;; +C138;HANGUL SYLLABLE SE;Lo;0;L;;;;;N;;;;; +C139;HANGUL SYLLABLE SEG;Lo;0;L;;;;;N;;;;; +C13A;HANGUL SYLLABLE SEGG;Lo;0;L;;;;;N;;;;; +C13B;HANGUL SYLLABLE SEGS;Lo;0;L;;;;;N;;;;; +C13C;HANGUL SYLLABLE SEN;Lo;0;L;;;;;N;;;;; +C13D;HANGUL SYLLABLE SENI;Lo;0;L;;;;;N;;;;; +C13E;HANGUL SYLLABLE SENH;Lo;0;L;;;;;N;;;;; +C13F;HANGUL SYLLABLE SED;Lo;0;L;;;;;N;;;;; +C140;HANGUL SYLLABLE SEL;Lo;0;L;;;;;N;;;;; +C141;HANGUL SYLLABLE SELG;Lo;0;L;;;;;N;;;;; +C142;HANGUL SYLLABLE SELM;Lo;0;L;;;;;N;;;;; +C143;HANGUL SYLLABLE SELB;Lo;0;L;;;;;N;;;;; +C144;HANGUL SYLLABLE SELS;Lo;0;L;;;;;N;;;;; +C145;HANGUL SYLLABLE SELT;Lo;0;L;;;;;N;;;;; +C146;HANGUL SYLLABLE SELP;Lo;0;L;;;;;N;;;;; +C147;HANGUL SYLLABLE SELH;Lo;0;L;;;;;N;;;;; +C148;HANGUL SYLLABLE SEM;Lo;0;L;;;;;N;;;;; +C149;HANGUL SYLLABLE SEB;Lo;0;L;;;;;N;;;;; +C14A;HANGUL SYLLABLE SEBS;Lo;0;L;;;;;N;;;;; +C14B;HANGUL SYLLABLE SES;Lo;0;L;;;;;N;;;;; +C14C;HANGUL SYLLABLE SESS;Lo;0;L;;;;;N;;;;; +C14D;HANGUL SYLLABLE SENG;Lo;0;L;;;;;N;;;;; +C14E;HANGUL SYLLABLE SEJ;Lo;0;L;;;;;N;;;;; +C14F;HANGUL SYLLABLE SEC;Lo;0;L;;;;;N;;;;; +C150;HANGUL SYLLABLE SEK;Lo;0;L;;;;;N;;;;; +C151;HANGUL SYLLABLE SET;Lo;0;L;;;;;N;;;;; +C152;HANGUL SYLLABLE SEP;Lo;0;L;;;;;N;;;;; +C153;HANGUL SYLLABLE SEH;Lo;0;L;;;;;N;;;;; +C154;HANGUL SYLLABLE SYEO;Lo;0;L;;;;;N;;;;; +C155;HANGUL SYLLABLE SYEOG;Lo;0;L;;;;;N;;;;; +C156;HANGUL SYLLABLE SYEOGG;Lo;0;L;;;;;N;;;;; +C157;HANGUL SYLLABLE SYEOGS;Lo;0;L;;;;;N;;;;; +C158;HANGUL SYLLABLE SYEON;Lo;0;L;;;;;N;;;;; +C159;HANGUL SYLLABLE SYEONI;Lo;0;L;;;;;N;;;;; +C15A;HANGUL SYLLABLE SYEONH;Lo;0;L;;;;;N;;;;; +C15B;HANGUL SYLLABLE SYEOD;Lo;0;L;;;;;N;;;;; +C15C;HANGUL SYLLABLE SYEOL;Lo;0;L;;;;;N;;;;; +C15D;HANGUL SYLLABLE SYEOLG;Lo;0;L;;;;;N;;;;; +C15E;HANGUL SYLLABLE SYEOLM;Lo;0;L;;;;;N;;;;; +C15F;HANGUL SYLLABLE SYEOLB;Lo;0;L;;;;;N;;;;; +C160;HANGUL SYLLABLE SYEOLS;Lo;0;L;;;;;N;;;;; +C161;HANGUL SYLLABLE SYEOLT;Lo;0;L;;;;;N;;;;; +C162;HANGUL SYLLABLE SYEOLP;Lo;0;L;;;;;N;;;;; +C163;HANGUL SYLLABLE SYEOLH;Lo;0;L;;;;;N;;;;; +C164;HANGUL SYLLABLE SYEOM;Lo;0;L;;;;;N;;;;; +C165;HANGUL SYLLABLE SYEOB;Lo;0;L;;;;;N;;;;; +C166;HANGUL SYLLABLE SYEOBS;Lo;0;L;;;;;N;;;;; +C167;HANGUL SYLLABLE SYEOS;Lo;0;L;;;;;N;;;;; +C168;HANGUL SYLLABLE SYEOSS;Lo;0;L;;;;;N;;;;; +C169;HANGUL SYLLABLE SYEONG;Lo;0;L;;;;;N;;;;; +C16A;HANGUL SYLLABLE SYEOJ;Lo;0;L;;;;;N;;;;; +C16B;HANGUL SYLLABLE SYEOC;Lo;0;L;;;;;N;;;;; +C16C;HANGUL SYLLABLE SYEOK;Lo;0;L;;;;;N;;;;; +C16D;HANGUL SYLLABLE SYEOT;Lo;0;L;;;;;N;;;;; +C16E;HANGUL SYLLABLE SYEOP;Lo;0;L;;;;;N;;;;; +C16F;HANGUL SYLLABLE SYEOH;Lo;0;L;;;;;N;;;;; +C170;HANGUL SYLLABLE SYE;Lo;0;L;;;;;N;;;;; +C171;HANGUL SYLLABLE SYEG;Lo;0;L;;;;;N;;;;; +C172;HANGUL SYLLABLE SYEGG;Lo;0;L;;;;;N;;;;; +C173;HANGUL SYLLABLE SYEGS;Lo;0;L;;;;;N;;;;; +C174;HANGUL SYLLABLE SYEN;Lo;0;L;;;;;N;;;;; +C175;HANGUL SYLLABLE SYENI;Lo;0;L;;;;;N;;;;; +C176;HANGUL SYLLABLE SYENH;Lo;0;L;;;;;N;;;;; +C177;HANGUL SYLLABLE SYED;Lo;0;L;;;;;N;;;;; +C178;HANGUL SYLLABLE SYEL;Lo;0;L;;;;;N;;;;; +C179;HANGUL SYLLABLE SYELG;Lo;0;L;;;;;N;;;;; +C17A;HANGUL SYLLABLE SYELM;Lo;0;L;;;;;N;;;;; +C17B;HANGUL SYLLABLE SYELB;Lo;0;L;;;;;N;;;;; +C17C;HANGUL SYLLABLE SYELS;Lo;0;L;;;;;N;;;;; +C17D;HANGUL SYLLABLE SYELT;Lo;0;L;;;;;N;;;;; +C17E;HANGUL SYLLABLE SYELP;Lo;0;L;;;;;N;;;;; +C17F;HANGUL SYLLABLE SYELH;Lo;0;L;;;;;N;;;;; +C180;HANGUL SYLLABLE SYEM;Lo;0;L;;;;;N;;;;; +C181;HANGUL SYLLABLE SYEB;Lo;0;L;;;;;N;;;;; +C182;HANGUL SYLLABLE SYEBS;Lo;0;L;;;;;N;;;;; +C183;HANGUL SYLLABLE SYES;Lo;0;L;;;;;N;;;;; +C184;HANGUL SYLLABLE SYESS;Lo;0;L;;;;;N;;;;; +C185;HANGUL SYLLABLE SYENG;Lo;0;L;;;;;N;;;;; +C186;HANGUL SYLLABLE SYEJ;Lo;0;L;;;;;N;;;;; +C187;HANGUL SYLLABLE SYEC;Lo;0;L;;;;;N;;;;; +C188;HANGUL SYLLABLE SYEK;Lo;0;L;;;;;N;;;;; +C189;HANGUL SYLLABLE SYET;Lo;0;L;;;;;N;;;;; +C18A;HANGUL SYLLABLE SYEP;Lo;0;L;;;;;N;;;;; +C18B;HANGUL SYLLABLE SYEH;Lo;0;L;;;;;N;;;;; +C18C;HANGUL SYLLABLE SO;Lo;0;L;;;;;N;;;;; +C18D;HANGUL SYLLABLE SOG;Lo;0;L;;;;;N;;;;; +C18E;HANGUL SYLLABLE SOGG;Lo;0;L;;;;;N;;;;; +C18F;HANGUL SYLLABLE SOGS;Lo;0;L;;;;;N;;;;; +C190;HANGUL SYLLABLE SON;Lo;0;L;;;;;N;;;;; +C191;HANGUL SYLLABLE SONI;Lo;0;L;;;;;N;;;;; +C192;HANGUL SYLLABLE SONH;Lo;0;L;;;;;N;;;;; +C193;HANGUL SYLLABLE SOD;Lo;0;L;;;;;N;;;;; +C194;HANGUL SYLLABLE SOL;Lo;0;L;;;;;N;;;;; +C195;HANGUL SYLLABLE SOLG;Lo;0;L;;;;;N;;;;; +C196;HANGUL SYLLABLE SOLM;Lo;0;L;;;;;N;;;;; +C197;HANGUL SYLLABLE SOLB;Lo;0;L;;;;;N;;;;; +C198;HANGUL SYLLABLE SOLS;Lo;0;L;;;;;N;;;;; +C199;HANGUL SYLLABLE SOLT;Lo;0;L;;;;;N;;;;; +C19A;HANGUL SYLLABLE SOLP;Lo;0;L;;;;;N;;;;; +C19B;HANGUL SYLLABLE SOLH;Lo;0;L;;;;;N;;;;; +C19C;HANGUL SYLLABLE SOM;Lo;0;L;;;;;N;;;;; +C19D;HANGUL SYLLABLE SOB;Lo;0;L;;;;;N;;;;; +C19E;HANGUL SYLLABLE SOBS;Lo;0;L;;;;;N;;;;; +C19F;HANGUL SYLLABLE SOS;Lo;0;L;;;;;N;;;;; +C1A0;HANGUL SYLLABLE SOSS;Lo;0;L;;;;;N;;;;; +C1A1;HANGUL SYLLABLE SONG;Lo;0;L;;;;;N;;;;; +C1A2;HANGUL SYLLABLE SOJ;Lo;0;L;;;;;N;;;;; +C1A3;HANGUL SYLLABLE SOC;Lo;0;L;;;;;N;;;;; +C1A4;HANGUL SYLLABLE SOK;Lo;0;L;;;;;N;;;;; +C1A5;HANGUL SYLLABLE SOT;Lo;0;L;;;;;N;;;;; +C1A6;HANGUL SYLLABLE SOP;Lo;0;L;;;;;N;;;;; +C1A7;HANGUL SYLLABLE SOH;Lo;0;L;;;;;N;;;;; +C1A8;HANGUL SYLLABLE SWA;Lo;0;L;;;;;N;;;;; +C1A9;HANGUL SYLLABLE SWAG;Lo;0;L;;;;;N;;;;; +C1AA;HANGUL SYLLABLE SWAGG;Lo;0;L;;;;;N;;;;; +C1AB;HANGUL SYLLABLE SWAGS;Lo;0;L;;;;;N;;;;; +C1AC;HANGUL SYLLABLE SWAN;Lo;0;L;;;;;N;;;;; +C1AD;HANGUL SYLLABLE SWANI;Lo;0;L;;;;;N;;;;; +C1AE;HANGUL SYLLABLE SWANH;Lo;0;L;;;;;N;;;;; +C1AF;HANGUL SYLLABLE SWAD;Lo;0;L;;;;;N;;;;; +C1B0;HANGUL SYLLABLE SWAL;Lo;0;L;;;;;N;;;;; +C1B1;HANGUL SYLLABLE SWALG;Lo;0;L;;;;;N;;;;; +C1B2;HANGUL SYLLABLE SWALM;Lo;0;L;;;;;N;;;;; +C1B3;HANGUL SYLLABLE SWALB;Lo;0;L;;;;;N;;;;; +C1B4;HANGUL SYLLABLE SWALS;Lo;0;L;;;;;N;;;;; +C1B5;HANGUL SYLLABLE SWALT;Lo;0;L;;;;;N;;;;; +C1B6;HANGUL SYLLABLE SWALP;Lo;0;L;;;;;N;;;;; +C1B7;HANGUL SYLLABLE SWALH;Lo;0;L;;;;;N;;;;; +C1B8;HANGUL SYLLABLE SWAM;Lo;0;L;;;;;N;;;;; +C1B9;HANGUL SYLLABLE SWAB;Lo;0;L;;;;;N;;;;; +C1BA;HANGUL SYLLABLE SWABS;Lo;0;L;;;;;N;;;;; +C1BB;HANGUL SYLLABLE SWAS;Lo;0;L;;;;;N;;;;; +C1BC;HANGUL SYLLABLE SWASS;Lo;0;L;;;;;N;;;;; +C1BD;HANGUL SYLLABLE SWANG;Lo;0;L;;;;;N;;;;; +C1BE;HANGUL SYLLABLE SWAJ;Lo;0;L;;;;;N;;;;; +C1BF;HANGUL SYLLABLE SWAC;Lo;0;L;;;;;N;;;;; +C1C0;HANGUL SYLLABLE SWAK;Lo;0;L;;;;;N;;;;; +C1C1;HANGUL SYLLABLE SWAT;Lo;0;L;;;;;N;;;;; +C1C2;HANGUL SYLLABLE SWAP;Lo;0;L;;;;;N;;;;; +C1C3;HANGUL SYLLABLE SWAH;Lo;0;L;;;;;N;;;;; +C1C4;HANGUL SYLLABLE SWAE;Lo;0;L;;;;;N;;;;; +C1C5;HANGUL SYLLABLE SWAEG;Lo;0;L;;;;;N;;;;; +C1C6;HANGUL SYLLABLE SWAEGG;Lo;0;L;;;;;N;;;;; +C1C7;HANGUL SYLLABLE SWAEGS;Lo;0;L;;;;;N;;;;; +C1C8;HANGUL SYLLABLE SWAEN;Lo;0;L;;;;;N;;;;; +C1C9;HANGUL SYLLABLE SWAENI;Lo;0;L;;;;;N;;;;; +C1CA;HANGUL SYLLABLE SWAENH;Lo;0;L;;;;;N;;;;; +C1CB;HANGUL SYLLABLE SWAED;Lo;0;L;;;;;N;;;;; +C1CC;HANGUL SYLLABLE SWAEL;Lo;0;L;;;;;N;;;;; +C1CD;HANGUL SYLLABLE SWAELG;Lo;0;L;;;;;N;;;;; +C1CE;HANGUL SYLLABLE SWAELM;Lo;0;L;;;;;N;;;;; +C1CF;HANGUL SYLLABLE SWAELB;Lo;0;L;;;;;N;;;;; +C1D0;HANGUL SYLLABLE SWAELS;Lo;0;L;;;;;N;;;;; +C1D1;HANGUL SYLLABLE SWAELT;Lo;0;L;;;;;N;;;;; +C1D2;HANGUL SYLLABLE SWAELP;Lo;0;L;;;;;N;;;;; +C1D3;HANGUL SYLLABLE SWAELH;Lo;0;L;;;;;N;;;;; +C1D4;HANGUL SYLLABLE SWAEM;Lo;0;L;;;;;N;;;;; +C1D5;HANGUL SYLLABLE SWAEB;Lo;0;L;;;;;N;;;;; +C1D6;HANGUL SYLLABLE SWAEBS;Lo;0;L;;;;;N;;;;; +C1D7;HANGUL SYLLABLE SWAES;Lo;0;L;;;;;N;;;;; +C1D8;HANGUL SYLLABLE SWAESS;Lo;0;L;;;;;N;;;;; +C1D9;HANGUL SYLLABLE SWAENG;Lo;0;L;;;;;N;;;;; +C1DA;HANGUL SYLLABLE SWAEJ;Lo;0;L;;;;;N;;;;; +C1DB;HANGUL SYLLABLE SWAEC;Lo;0;L;;;;;N;;;;; +C1DC;HANGUL SYLLABLE SWAEK;Lo;0;L;;;;;N;;;;; +C1DD;HANGUL SYLLABLE SWAET;Lo;0;L;;;;;N;;;;; +C1DE;HANGUL SYLLABLE SWAEP;Lo;0;L;;;;;N;;;;; +C1DF;HANGUL SYLLABLE SWAEH;Lo;0;L;;;;;N;;;;; +C1E0;HANGUL SYLLABLE SOE;Lo;0;L;;;;;N;;;;; +C1E1;HANGUL SYLLABLE SOEG;Lo;0;L;;;;;N;;;;; +C1E2;HANGUL SYLLABLE SOEGG;Lo;0;L;;;;;N;;;;; +C1E3;HANGUL SYLLABLE SOEGS;Lo;0;L;;;;;N;;;;; +C1E4;HANGUL SYLLABLE SOEN;Lo;0;L;;;;;N;;;;; +C1E5;HANGUL SYLLABLE SOENI;Lo;0;L;;;;;N;;;;; +C1E6;HANGUL SYLLABLE SOENH;Lo;0;L;;;;;N;;;;; +C1E7;HANGUL SYLLABLE SOED;Lo;0;L;;;;;N;;;;; +C1E8;HANGUL SYLLABLE SOEL;Lo;0;L;;;;;N;;;;; +C1E9;HANGUL SYLLABLE SOELG;Lo;0;L;;;;;N;;;;; +C1EA;HANGUL SYLLABLE SOELM;Lo;0;L;;;;;N;;;;; +C1EB;HANGUL SYLLABLE SOELB;Lo;0;L;;;;;N;;;;; +C1EC;HANGUL SYLLABLE SOELS;Lo;0;L;;;;;N;;;;; +C1ED;HANGUL SYLLABLE SOELT;Lo;0;L;;;;;N;;;;; +C1EE;HANGUL SYLLABLE SOELP;Lo;0;L;;;;;N;;;;; +C1EF;HANGUL SYLLABLE SOELH;Lo;0;L;;;;;N;;;;; +C1F0;HANGUL SYLLABLE SOEM;Lo;0;L;;;;;N;;;;; +C1F1;HANGUL SYLLABLE SOEB;Lo;0;L;;;;;N;;;;; +C1F2;HANGUL SYLLABLE SOEBS;Lo;0;L;;;;;N;;;;; +C1F3;HANGUL SYLLABLE SOES;Lo;0;L;;;;;N;;;;; +C1F4;HANGUL SYLLABLE SOESS;Lo;0;L;;;;;N;;;;; +C1F5;HANGUL SYLLABLE SOENG;Lo;0;L;;;;;N;;;;; +C1F6;HANGUL SYLLABLE SOEJ;Lo;0;L;;;;;N;;;;; +C1F7;HANGUL SYLLABLE SOEC;Lo;0;L;;;;;N;;;;; +C1F8;HANGUL SYLLABLE SOEK;Lo;0;L;;;;;N;;;;; +C1F9;HANGUL SYLLABLE SOET;Lo;0;L;;;;;N;;;;; +C1FA;HANGUL SYLLABLE SOEP;Lo;0;L;;;;;N;;;;; +C1FB;HANGUL SYLLABLE SOEH;Lo;0;L;;;;;N;;;;; +C1FC;HANGUL SYLLABLE SYO;Lo;0;L;;;;;N;;;;; +C1FD;HANGUL SYLLABLE SYOG;Lo;0;L;;;;;N;;;;; +C1FE;HANGUL SYLLABLE SYOGG;Lo;0;L;;;;;N;;;;; +C1FF;HANGUL SYLLABLE SYOGS;Lo;0;L;;;;;N;;;;; +C200;HANGUL SYLLABLE SYON;Lo;0;L;;;;;N;;;;; +C201;HANGUL SYLLABLE SYONI;Lo;0;L;;;;;N;;;;; +C202;HANGUL SYLLABLE SYONH;Lo;0;L;;;;;N;;;;; +C203;HANGUL SYLLABLE SYOD;Lo;0;L;;;;;N;;;;; +C204;HANGUL SYLLABLE SYOL;Lo;0;L;;;;;N;;;;; +C205;HANGUL SYLLABLE SYOLG;Lo;0;L;;;;;N;;;;; +C206;HANGUL SYLLABLE SYOLM;Lo;0;L;;;;;N;;;;; +C207;HANGUL SYLLABLE SYOLB;Lo;0;L;;;;;N;;;;; +C208;HANGUL SYLLABLE SYOLS;Lo;0;L;;;;;N;;;;; +C209;HANGUL SYLLABLE SYOLT;Lo;0;L;;;;;N;;;;; +C20A;HANGUL SYLLABLE SYOLP;Lo;0;L;;;;;N;;;;; +C20B;HANGUL SYLLABLE SYOLH;Lo;0;L;;;;;N;;;;; +C20C;HANGUL SYLLABLE SYOM;Lo;0;L;;;;;N;;;;; +C20D;HANGUL SYLLABLE SYOB;Lo;0;L;;;;;N;;;;; +C20E;HANGUL SYLLABLE SYOBS;Lo;0;L;;;;;N;;;;; +C20F;HANGUL SYLLABLE SYOS;Lo;0;L;;;;;N;;;;; +C210;HANGUL SYLLABLE SYOSS;Lo;0;L;;;;;N;;;;; +C211;HANGUL SYLLABLE SYONG;Lo;0;L;;;;;N;;;;; +C212;HANGUL SYLLABLE SYOJ;Lo;0;L;;;;;N;;;;; +C213;HANGUL SYLLABLE SYOC;Lo;0;L;;;;;N;;;;; +C214;HANGUL SYLLABLE SYOK;Lo;0;L;;;;;N;;;;; +C215;HANGUL SYLLABLE SYOT;Lo;0;L;;;;;N;;;;; +C216;HANGUL SYLLABLE SYOP;Lo;0;L;;;;;N;;;;; +C217;HANGUL SYLLABLE SYOH;Lo;0;L;;;;;N;;;;; +C218;HANGUL SYLLABLE SU;Lo;0;L;;;;;N;;;;; +C219;HANGUL SYLLABLE SUG;Lo;0;L;;;;;N;;;;; +C21A;HANGUL SYLLABLE SUGG;Lo;0;L;;;;;N;;;;; +C21B;HANGUL SYLLABLE SUGS;Lo;0;L;;;;;N;;;;; +C21C;HANGUL SYLLABLE SUN;Lo;0;L;;;;;N;;;;; +C21D;HANGUL SYLLABLE SUNI;Lo;0;L;;;;;N;;;;; +C21E;HANGUL SYLLABLE SUNH;Lo;0;L;;;;;N;;;;; +C21F;HANGUL SYLLABLE SUD;Lo;0;L;;;;;N;;;;; +C220;HANGUL SYLLABLE SUL;Lo;0;L;;;;;N;;;;; +C221;HANGUL SYLLABLE SULG;Lo;0;L;;;;;N;;;;; +C222;HANGUL SYLLABLE SULM;Lo;0;L;;;;;N;;;;; +C223;HANGUL SYLLABLE SULB;Lo;0;L;;;;;N;;;;; +C224;HANGUL SYLLABLE SULS;Lo;0;L;;;;;N;;;;; +C225;HANGUL SYLLABLE SULT;Lo;0;L;;;;;N;;;;; +C226;HANGUL SYLLABLE SULP;Lo;0;L;;;;;N;;;;; +C227;HANGUL SYLLABLE SULH;Lo;0;L;;;;;N;;;;; +C228;HANGUL SYLLABLE SUM;Lo;0;L;;;;;N;;;;; +C229;HANGUL SYLLABLE SUB;Lo;0;L;;;;;N;;;;; +C22A;HANGUL SYLLABLE SUBS;Lo;0;L;;;;;N;;;;; +C22B;HANGUL SYLLABLE SUS;Lo;0;L;;;;;N;;;;; +C22C;HANGUL SYLLABLE SUSS;Lo;0;L;;;;;N;;;;; +C22D;HANGUL SYLLABLE SUNG;Lo;0;L;;;;;N;;;;; +C22E;HANGUL SYLLABLE SUJ;Lo;0;L;;;;;N;;;;; +C22F;HANGUL SYLLABLE SUC;Lo;0;L;;;;;N;;;;; +C230;HANGUL SYLLABLE SUK;Lo;0;L;;;;;N;;;;; +C231;HANGUL SYLLABLE SUT;Lo;0;L;;;;;N;;;;; +C232;HANGUL SYLLABLE SUP;Lo;0;L;;;;;N;;;;; +C233;HANGUL SYLLABLE SUH;Lo;0;L;;;;;N;;;;; +C234;HANGUL SYLLABLE SWEO;Lo;0;L;;;;;N;;;;; +C235;HANGUL SYLLABLE SWEOG;Lo;0;L;;;;;N;;;;; +C236;HANGUL SYLLABLE SWEOGG;Lo;0;L;;;;;N;;;;; +C237;HANGUL SYLLABLE SWEOGS;Lo;0;L;;;;;N;;;;; +C238;HANGUL SYLLABLE SWEON;Lo;0;L;;;;;N;;;;; +C239;HANGUL SYLLABLE SWEONI;Lo;0;L;;;;;N;;;;; +C23A;HANGUL SYLLABLE SWEONH;Lo;0;L;;;;;N;;;;; +C23B;HANGUL SYLLABLE SWEOD;Lo;0;L;;;;;N;;;;; +C23C;HANGUL SYLLABLE SWEOL;Lo;0;L;;;;;N;;;;; +C23D;HANGUL SYLLABLE SWEOLG;Lo;0;L;;;;;N;;;;; +C23E;HANGUL SYLLABLE SWEOLM;Lo;0;L;;;;;N;;;;; +C23F;HANGUL SYLLABLE SWEOLB;Lo;0;L;;;;;N;;;;; +C240;HANGUL SYLLABLE SWEOLS;Lo;0;L;;;;;N;;;;; +C241;HANGUL SYLLABLE SWEOLT;Lo;0;L;;;;;N;;;;; +C242;HANGUL SYLLABLE SWEOLP;Lo;0;L;;;;;N;;;;; +C243;HANGUL SYLLABLE SWEOLH;Lo;0;L;;;;;N;;;;; +C244;HANGUL SYLLABLE SWEOM;Lo;0;L;;;;;N;;;;; +C245;HANGUL SYLLABLE SWEOB;Lo;0;L;;;;;N;;;;; +C246;HANGUL SYLLABLE SWEOBS;Lo;0;L;;;;;N;;;;; +C247;HANGUL SYLLABLE SWEOS;Lo;0;L;;;;;N;;;;; +C248;HANGUL SYLLABLE SWEOSS;Lo;0;L;;;;;N;;;;; +C249;HANGUL SYLLABLE SWEONG;Lo;0;L;;;;;N;;;;; +C24A;HANGUL SYLLABLE SWEOJ;Lo;0;L;;;;;N;;;;; +C24B;HANGUL SYLLABLE SWEOC;Lo;0;L;;;;;N;;;;; +C24C;HANGUL SYLLABLE SWEOK;Lo;0;L;;;;;N;;;;; +C24D;HANGUL SYLLABLE SWEOT;Lo;0;L;;;;;N;;;;; +C24E;HANGUL SYLLABLE SWEOP;Lo;0;L;;;;;N;;;;; +C24F;HANGUL SYLLABLE SWEOH;Lo;0;L;;;;;N;;;;; +C250;HANGUL SYLLABLE SWE;Lo;0;L;;;;;N;;;;; +C251;HANGUL SYLLABLE SWEG;Lo;0;L;;;;;N;;;;; +C252;HANGUL SYLLABLE SWEGG;Lo;0;L;;;;;N;;;;; +C253;HANGUL SYLLABLE SWEGS;Lo;0;L;;;;;N;;;;; +C254;HANGUL SYLLABLE SWEN;Lo;0;L;;;;;N;;;;; +C255;HANGUL SYLLABLE SWENI;Lo;0;L;;;;;N;;;;; +C256;HANGUL SYLLABLE SWENH;Lo;0;L;;;;;N;;;;; +C257;HANGUL SYLLABLE SWED;Lo;0;L;;;;;N;;;;; +C258;HANGUL SYLLABLE SWEL;Lo;0;L;;;;;N;;;;; +C259;HANGUL SYLLABLE SWELG;Lo;0;L;;;;;N;;;;; +C25A;HANGUL SYLLABLE SWELM;Lo;0;L;;;;;N;;;;; +C25B;HANGUL SYLLABLE SWELB;Lo;0;L;;;;;N;;;;; +C25C;HANGUL SYLLABLE SWELS;Lo;0;L;;;;;N;;;;; +C25D;HANGUL SYLLABLE SWELT;Lo;0;L;;;;;N;;;;; +C25E;HANGUL SYLLABLE SWELP;Lo;0;L;;;;;N;;;;; +C25F;HANGUL SYLLABLE SWELH;Lo;0;L;;;;;N;;;;; +C260;HANGUL SYLLABLE SWEM;Lo;0;L;;;;;N;;;;; +C261;HANGUL SYLLABLE SWEB;Lo;0;L;;;;;N;;;;; +C262;HANGUL SYLLABLE SWEBS;Lo;0;L;;;;;N;;;;; +C263;HANGUL SYLLABLE SWES;Lo;0;L;;;;;N;;;;; +C264;HANGUL SYLLABLE SWESS;Lo;0;L;;;;;N;;;;; +C265;HANGUL SYLLABLE SWENG;Lo;0;L;;;;;N;;;;; +C266;HANGUL SYLLABLE SWEJ;Lo;0;L;;;;;N;;;;; +C267;HANGUL SYLLABLE SWEC;Lo;0;L;;;;;N;;;;; +C268;HANGUL SYLLABLE SWEK;Lo;0;L;;;;;N;;;;; +C269;HANGUL SYLLABLE SWET;Lo;0;L;;;;;N;;;;; +C26A;HANGUL SYLLABLE SWEP;Lo;0;L;;;;;N;;;;; +C26B;HANGUL SYLLABLE SWEH;Lo;0;L;;;;;N;;;;; +C26C;HANGUL SYLLABLE SWI;Lo;0;L;;;;;N;;;;; +C26D;HANGUL SYLLABLE SWIG;Lo;0;L;;;;;N;;;;; +C26E;HANGUL SYLLABLE SWIGG;Lo;0;L;;;;;N;;;;; +C26F;HANGUL SYLLABLE SWIGS;Lo;0;L;;;;;N;;;;; +C270;HANGUL SYLLABLE SWIN;Lo;0;L;;;;;N;;;;; +C271;HANGUL SYLLABLE SWINI;Lo;0;L;;;;;N;;;;; +C272;HANGUL SYLLABLE SWINH;Lo;0;L;;;;;N;;;;; +C273;HANGUL SYLLABLE SWID;Lo;0;L;;;;;N;;;;; +C274;HANGUL SYLLABLE SWIL;Lo;0;L;;;;;N;;;;; +C275;HANGUL SYLLABLE SWILG;Lo;0;L;;;;;N;;;;; +C276;HANGUL SYLLABLE SWILM;Lo;0;L;;;;;N;;;;; +C277;HANGUL SYLLABLE SWILB;Lo;0;L;;;;;N;;;;; +C278;HANGUL SYLLABLE SWILS;Lo;0;L;;;;;N;;;;; +C279;HANGUL SYLLABLE SWILT;Lo;0;L;;;;;N;;;;; +C27A;HANGUL SYLLABLE SWILP;Lo;0;L;;;;;N;;;;; +C27B;HANGUL SYLLABLE SWILH;Lo;0;L;;;;;N;;;;; +C27C;HANGUL SYLLABLE SWIM;Lo;0;L;;;;;N;;;;; +C27D;HANGUL SYLLABLE SWIB;Lo;0;L;;;;;N;;;;; +C27E;HANGUL SYLLABLE SWIBS;Lo;0;L;;;;;N;;;;; +C27F;HANGUL SYLLABLE SWIS;Lo;0;L;;;;;N;;;;; +C280;HANGUL SYLLABLE SWISS;Lo;0;L;;;;;N;;;;; +C281;HANGUL SYLLABLE SWING;Lo;0;L;;;;;N;;;;; +C282;HANGUL SYLLABLE SWIJ;Lo;0;L;;;;;N;;;;; +C283;HANGUL SYLLABLE SWIC;Lo;0;L;;;;;N;;;;; +C284;HANGUL SYLLABLE SWIK;Lo;0;L;;;;;N;;;;; +C285;HANGUL SYLLABLE SWIT;Lo;0;L;;;;;N;;;;; +C286;HANGUL SYLLABLE SWIP;Lo;0;L;;;;;N;;;;; +C287;HANGUL SYLLABLE SWIH;Lo;0;L;;;;;N;;;;; +C288;HANGUL SYLLABLE SYU;Lo;0;L;;;;;N;;;;; +C289;HANGUL SYLLABLE SYUG;Lo;0;L;;;;;N;;;;; +C28A;HANGUL SYLLABLE SYUGG;Lo;0;L;;;;;N;;;;; +C28B;HANGUL SYLLABLE SYUGS;Lo;0;L;;;;;N;;;;; +C28C;HANGUL SYLLABLE SYUN;Lo;0;L;;;;;N;;;;; +C28D;HANGUL SYLLABLE SYUNI;Lo;0;L;;;;;N;;;;; +C28E;HANGUL SYLLABLE SYUNH;Lo;0;L;;;;;N;;;;; +C28F;HANGUL SYLLABLE SYUD;Lo;0;L;;;;;N;;;;; +C290;HANGUL SYLLABLE SYUL;Lo;0;L;;;;;N;;;;; +C291;HANGUL SYLLABLE SYULG;Lo;0;L;;;;;N;;;;; +C292;HANGUL SYLLABLE SYULM;Lo;0;L;;;;;N;;;;; +C293;HANGUL SYLLABLE SYULB;Lo;0;L;;;;;N;;;;; +C294;HANGUL SYLLABLE SYULS;Lo;0;L;;;;;N;;;;; +C295;HANGUL SYLLABLE SYULT;Lo;0;L;;;;;N;;;;; +C296;HANGUL SYLLABLE SYULP;Lo;0;L;;;;;N;;;;; +C297;HANGUL SYLLABLE SYULH;Lo;0;L;;;;;N;;;;; +C298;HANGUL SYLLABLE SYUM;Lo;0;L;;;;;N;;;;; +C299;HANGUL SYLLABLE SYUB;Lo;0;L;;;;;N;;;;; +C29A;HANGUL SYLLABLE SYUBS;Lo;0;L;;;;;N;;;;; +C29B;HANGUL SYLLABLE SYUS;Lo;0;L;;;;;N;;;;; +C29C;HANGUL SYLLABLE SYUSS;Lo;0;L;;;;;N;;;;; +C29D;HANGUL SYLLABLE SYUNG;Lo;0;L;;;;;N;;;;; +C29E;HANGUL SYLLABLE SYUJ;Lo;0;L;;;;;N;;;;; +C29F;HANGUL SYLLABLE SYUC;Lo;0;L;;;;;N;;;;; +C2A0;HANGUL SYLLABLE SYUK;Lo;0;L;;;;;N;;;;; +C2A1;HANGUL SYLLABLE SYUT;Lo;0;L;;;;;N;;;;; +C2A2;HANGUL SYLLABLE SYUP;Lo;0;L;;;;;N;;;;; +C2A3;HANGUL SYLLABLE SYUH;Lo;0;L;;;;;N;;;;; +C2A4;HANGUL SYLLABLE SEU;Lo;0;L;;;;;N;;;;; +C2A5;HANGUL SYLLABLE SEUG;Lo;0;L;;;;;N;;;;; +C2A6;HANGUL SYLLABLE SEUGG;Lo;0;L;;;;;N;;;;; +C2A7;HANGUL SYLLABLE SEUGS;Lo;0;L;;;;;N;;;;; +C2A8;HANGUL SYLLABLE SEUN;Lo;0;L;;;;;N;;;;; +C2A9;HANGUL SYLLABLE SEUNI;Lo;0;L;;;;;N;;;;; +C2AA;HANGUL SYLLABLE SEUNH;Lo;0;L;;;;;N;;;;; +C2AB;HANGUL SYLLABLE SEUD;Lo;0;L;;;;;N;;;;; +C2AC;HANGUL SYLLABLE SEUL;Lo;0;L;;;;;N;;;;; +C2AD;HANGUL SYLLABLE SEULG;Lo;0;L;;;;;N;;;;; +C2AE;HANGUL SYLLABLE SEULM;Lo;0;L;;;;;N;;;;; +C2AF;HANGUL SYLLABLE SEULB;Lo;0;L;;;;;N;;;;; +C2B0;HANGUL SYLLABLE SEULS;Lo;0;L;;;;;N;;;;; +C2B1;HANGUL SYLLABLE SEULT;Lo;0;L;;;;;N;;;;; +C2B2;HANGUL SYLLABLE SEULP;Lo;0;L;;;;;N;;;;; +C2B3;HANGUL SYLLABLE SEULH;Lo;0;L;;;;;N;;;;; +C2B4;HANGUL SYLLABLE SEUM;Lo;0;L;;;;;N;;;;; +C2B5;HANGUL SYLLABLE SEUB;Lo;0;L;;;;;N;;;;; +C2B6;HANGUL SYLLABLE SEUBS;Lo;0;L;;;;;N;;;;; +C2B7;HANGUL SYLLABLE SEUS;Lo;0;L;;;;;N;;;;; +C2B8;HANGUL SYLLABLE SEUSS;Lo;0;L;;;;;N;;;;; +C2B9;HANGUL SYLLABLE SEUNG;Lo;0;L;;;;;N;;;;; +C2BA;HANGUL SYLLABLE SEUJ;Lo;0;L;;;;;N;;;;; +C2BB;HANGUL SYLLABLE SEUC;Lo;0;L;;;;;N;;;;; +C2BC;HANGUL SYLLABLE SEUK;Lo;0;L;;;;;N;;;;; +C2BD;HANGUL SYLLABLE SEUT;Lo;0;L;;;;;N;;;;; +C2BE;HANGUL SYLLABLE SEUP;Lo;0;L;;;;;N;;;;; +C2BF;HANGUL SYLLABLE SEUH;Lo;0;L;;;;;N;;;;; +C2C0;HANGUL SYLLABLE SYI;Lo;0;L;;;;;N;;;;; +C2C1;HANGUL SYLLABLE SYIG;Lo;0;L;;;;;N;;;;; +C2C2;HANGUL SYLLABLE SYIGG;Lo;0;L;;;;;N;;;;; +C2C3;HANGUL SYLLABLE SYIGS;Lo;0;L;;;;;N;;;;; +C2C4;HANGUL SYLLABLE SYIN;Lo;0;L;;;;;N;;;;; +C2C5;HANGUL SYLLABLE SYINI;Lo;0;L;;;;;N;;;;; +C2C6;HANGUL SYLLABLE SYINH;Lo;0;L;;;;;N;;;;; +C2C7;HANGUL SYLLABLE SYID;Lo;0;L;;;;;N;;;;; +C2C8;HANGUL SYLLABLE SYIL;Lo;0;L;;;;;N;;;;; +C2C9;HANGUL SYLLABLE SYILG;Lo;0;L;;;;;N;;;;; +C2CA;HANGUL SYLLABLE SYILM;Lo;0;L;;;;;N;;;;; +C2CB;HANGUL SYLLABLE SYILB;Lo;0;L;;;;;N;;;;; +C2CC;HANGUL SYLLABLE SYILS;Lo;0;L;;;;;N;;;;; +C2CD;HANGUL SYLLABLE SYILT;Lo;0;L;;;;;N;;;;; +C2CE;HANGUL SYLLABLE SYILP;Lo;0;L;;;;;N;;;;; +C2CF;HANGUL SYLLABLE SYILH;Lo;0;L;;;;;N;;;;; +C2D0;HANGUL SYLLABLE SYIM;Lo;0;L;;;;;N;;;;; +C2D1;HANGUL SYLLABLE SYIB;Lo;0;L;;;;;N;;;;; +C2D2;HANGUL SYLLABLE SYIBS;Lo;0;L;;;;;N;;;;; +C2D3;HANGUL SYLLABLE SYIS;Lo;0;L;;;;;N;;;;; +C2D4;HANGUL SYLLABLE SYISS;Lo;0;L;;;;;N;;;;; +C2D5;HANGUL SYLLABLE SYING;Lo;0;L;;;;;N;;;;; +C2D6;HANGUL SYLLABLE SYIJ;Lo;0;L;;;;;N;;;;; +C2D7;HANGUL SYLLABLE SYIC;Lo;0;L;;;;;N;;;;; +C2D8;HANGUL SYLLABLE SYIK;Lo;0;L;;;;;N;;;;; +C2D9;HANGUL SYLLABLE SYIT;Lo;0;L;;;;;N;;;;; +C2DA;HANGUL SYLLABLE SYIP;Lo;0;L;;;;;N;;;;; +C2DB;HANGUL SYLLABLE SYIH;Lo;0;L;;;;;N;;;;; +C2DC;HANGUL SYLLABLE SI;Lo;0;L;;;;;N;;;;; +C2DD;HANGUL SYLLABLE SIG;Lo;0;L;;;;;N;;;;; +C2DE;HANGUL SYLLABLE SIGG;Lo;0;L;;;;;N;;;;; +C2DF;HANGUL SYLLABLE SIGS;Lo;0;L;;;;;N;;;;; +C2E0;HANGUL SYLLABLE SIN;Lo;0;L;;;;;N;;;;; +C2E1;HANGUL SYLLABLE SINI;Lo;0;L;;;;;N;;;;; +C2E2;HANGUL SYLLABLE SINH;Lo;0;L;;;;;N;;;;; +C2E3;HANGUL SYLLABLE SID;Lo;0;L;;;;;N;;;;; +C2E4;HANGUL SYLLABLE SIL;Lo;0;L;;;;;N;;;;; +C2E5;HANGUL SYLLABLE SILG;Lo;0;L;;;;;N;;;;; +C2E6;HANGUL SYLLABLE SILM;Lo;0;L;;;;;N;;;;; +C2E7;HANGUL SYLLABLE SILB;Lo;0;L;;;;;N;;;;; +C2E8;HANGUL SYLLABLE SILS;Lo;0;L;;;;;N;;;;; +C2E9;HANGUL SYLLABLE SILT;Lo;0;L;;;;;N;;;;; +C2EA;HANGUL SYLLABLE SILP;Lo;0;L;;;;;N;;;;; +C2EB;HANGUL SYLLABLE SILH;Lo;0;L;;;;;N;;;;; +C2EC;HANGUL SYLLABLE SIM;Lo;0;L;;;;;N;;;;; +C2ED;HANGUL SYLLABLE SIB;Lo;0;L;;;;;N;;;;; +C2EE;HANGUL SYLLABLE SIBS;Lo;0;L;;;;;N;;;;; +C2EF;HANGUL SYLLABLE SIS;Lo;0;L;;;;;N;;;;; +C2F0;HANGUL SYLLABLE SISS;Lo;0;L;;;;;N;;;;; +C2F1;HANGUL SYLLABLE SING;Lo;0;L;;;;;N;;;;; +C2F2;HANGUL SYLLABLE SIJ;Lo;0;L;;;;;N;;;;; +C2F3;HANGUL SYLLABLE SIC;Lo;0;L;;;;;N;;;;; +C2F4;HANGUL SYLLABLE SIK;Lo;0;L;;;;;N;;;;; +C2F5;HANGUL SYLLABLE SIT;Lo;0;L;;;;;N;;;;; +C2F6;HANGUL SYLLABLE SIP;Lo;0;L;;;;;N;;;;; +C2F7;HANGUL SYLLABLE SIH;Lo;0;L;;;;;N;;;;; +C2F8;HANGUL SYLLABLE SSA;Lo;0;L;;;;;N;;;;; +C2F9;HANGUL SYLLABLE SSAG;Lo;0;L;;;;;N;;;;; +C2FA;HANGUL SYLLABLE SSAGG;Lo;0;L;;;;;N;;;;; +C2FB;HANGUL SYLLABLE SSAGS;Lo;0;L;;;;;N;;;;; +C2FC;HANGUL SYLLABLE SSAN;Lo;0;L;;;;;N;;;;; +C2FD;HANGUL SYLLABLE SSANI;Lo;0;L;;;;;N;;;;; +C2FE;HANGUL SYLLABLE SSANH;Lo;0;L;;;;;N;;;;; +C2FF;HANGUL SYLLABLE SSAD;Lo;0;L;;;;;N;;;;; +C300;HANGUL SYLLABLE SSAL;Lo;0;L;;;;;N;;;;; +C301;HANGUL SYLLABLE SSALG;Lo;0;L;;;;;N;;;;; +C302;HANGUL SYLLABLE SSALM;Lo;0;L;;;;;N;;;;; +C303;HANGUL SYLLABLE SSALB;Lo;0;L;;;;;N;;;;; +C304;HANGUL SYLLABLE SSALS;Lo;0;L;;;;;N;;;;; +C305;HANGUL SYLLABLE SSALT;Lo;0;L;;;;;N;;;;; +C306;HANGUL SYLLABLE SSALP;Lo;0;L;;;;;N;;;;; +C307;HANGUL SYLLABLE SSALH;Lo;0;L;;;;;N;;;;; +C308;HANGUL SYLLABLE SSAM;Lo;0;L;;;;;N;;;;; +C309;HANGUL SYLLABLE SSAB;Lo;0;L;;;;;N;;;;; +C30A;HANGUL SYLLABLE SSABS;Lo;0;L;;;;;N;;;;; +C30B;HANGUL SYLLABLE SSAS;Lo;0;L;;;;;N;;;;; +C30C;HANGUL SYLLABLE SSASS;Lo;0;L;;;;;N;;;;; +C30D;HANGUL SYLLABLE SSANG;Lo;0;L;;;;;N;;;;; +C30E;HANGUL SYLLABLE SSAJ;Lo;0;L;;;;;N;;;;; +C30F;HANGUL SYLLABLE SSAC;Lo;0;L;;;;;N;;;;; +C310;HANGUL SYLLABLE SSAK;Lo;0;L;;;;;N;;;;; +C311;HANGUL SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; +C312;HANGUL SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; +C313;HANGUL SYLLABLE SSAH;Lo;0;L;;;;;N;;;;; +C314;HANGUL SYLLABLE SSAE;Lo;0;L;;;;;N;;;;; +C315;HANGUL SYLLABLE SSAEG;Lo;0;L;;;;;N;;;;; +C316;HANGUL SYLLABLE SSAEGG;Lo;0;L;;;;;N;;;;; +C317;HANGUL SYLLABLE SSAEGS;Lo;0;L;;;;;N;;;;; +C318;HANGUL SYLLABLE SSAEN;Lo;0;L;;;;;N;;;;; +C319;HANGUL SYLLABLE SSAENI;Lo;0;L;;;;;N;;;;; +C31A;HANGUL SYLLABLE SSAENH;Lo;0;L;;;;;N;;;;; +C31B;HANGUL SYLLABLE SSAED;Lo;0;L;;;;;N;;;;; +C31C;HANGUL SYLLABLE SSAEL;Lo;0;L;;;;;N;;;;; +C31D;HANGUL SYLLABLE SSAELG;Lo;0;L;;;;;N;;;;; +C31E;HANGUL SYLLABLE SSAELM;Lo;0;L;;;;;N;;;;; +C31F;HANGUL SYLLABLE SSAELB;Lo;0;L;;;;;N;;;;; +C320;HANGUL SYLLABLE SSAELS;Lo;0;L;;;;;N;;;;; +C321;HANGUL SYLLABLE SSAELT;Lo;0;L;;;;;N;;;;; +C322;HANGUL SYLLABLE SSAELP;Lo;0;L;;;;;N;;;;; +C323;HANGUL SYLLABLE SSAELH;Lo;0;L;;;;;N;;;;; +C324;HANGUL SYLLABLE SSAEM;Lo;0;L;;;;;N;;;;; +C325;HANGUL SYLLABLE SSAEB;Lo;0;L;;;;;N;;;;; +C326;HANGUL SYLLABLE SSAEBS;Lo;0;L;;;;;N;;;;; +C327;HANGUL SYLLABLE SSAES;Lo;0;L;;;;;N;;;;; +C328;HANGUL SYLLABLE SSAESS;Lo;0;L;;;;;N;;;;; +C329;HANGUL SYLLABLE SSAENG;Lo;0;L;;;;;N;;;;; +C32A;HANGUL SYLLABLE SSAEJ;Lo;0;L;;;;;N;;;;; +C32B;HANGUL SYLLABLE SSAEC;Lo;0;L;;;;;N;;;;; +C32C;HANGUL SYLLABLE SSAEK;Lo;0;L;;;;;N;;;;; +C32D;HANGUL SYLLABLE SSAET;Lo;0;L;;;;;N;;;;; +C32E;HANGUL SYLLABLE SSAEP;Lo;0;L;;;;;N;;;;; +C32F;HANGUL SYLLABLE SSAEH;Lo;0;L;;;;;N;;;;; +C330;HANGUL SYLLABLE SSYA;Lo;0;L;;;;;N;;;;; +C331;HANGUL SYLLABLE SSYAG;Lo;0;L;;;;;N;;;;; +C332;HANGUL SYLLABLE SSYAGG;Lo;0;L;;;;;N;;;;; +C333;HANGUL SYLLABLE SSYAGS;Lo;0;L;;;;;N;;;;; +C334;HANGUL SYLLABLE SSYAN;Lo;0;L;;;;;N;;;;; +C335;HANGUL SYLLABLE SSYANI;Lo;0;L;;;;;N;;;;; +C336;HANGUL SYLLABLE SSYANH;Lo;0;L;;;;;N;;;;; +C337;HANGUL SYLLABLE SSYAD;Lo;0;L;;;;;N;;;;; +C338;HANGUL SYLLABLE SSYAL;Lo;0;L;;;;;N;;;;; +C339;HANGUL SYLLABLE SSYALG;Lo;0;L;;;;;N;;;;; +C33A;HANGUL SYLLABLE SSYALM;Lo;0;L;;;;;N;;;;; +C33B;HANGUL SYLLABLE SSYALB;Lo;0;L;;;;;N;;;;; +C33C;HANGUL SYLLABLE SSYALS;Lo;0;L;;;;;N;;;;; +C33D;HANGUL SYLLABLE SSYALT;Lo;0;L;;;;;N;;;;; +C33E;HANGUL SYLLABLE SSYALP;Lo;0;L;;;;;N;;;;; +C33F;HANGUL SYLLABLE SSYALH;Lo;0;L;;;;;N;;;;; +C340;HANGUL SYLLABLE SSYAM;Lo;0;L;;;;;N;;;;; +C341;HANGUL SYLLABLE SSYAB;Lo;0;L;;;;;N;;;;; +C342;HANGUL SYLLABLE SSYABS;Lo;0;L;;;;;N;;;;; +C343;HANGUL SYLLABLE SSYAS;Lo;0;L;;;;;N;;;;; +C344;HANGUL SYLLABLE SSYASS;Lo;0;L;;;;;N;;;;; +C345;HANGUL SYLLABLE SSYANG;Lo;0;L;;;;;N;;;;; +C346;HANGUL SYLLABLE SSYAJ;Lo;0;L;;;;;N;;;;; +C347;HANGUL SYLLABLE SSYAC;Lo;0;L;;;;;N;;;;; +C348;HANGUL SYLLABLE SSYAK;Lo;0;L;;;;;N;;;;; +C349;HANGUL SYLLABLE SSYAT;Lo;0;L;;;;;N;;;;; +C34A;HANGUL SYLLABLE SSYAP;Lo;0;L;;;;;N;;;;; +C34B;HANGUL SYLLABLE SSYAH;Lo;0;L;;;;;N;;;;; +C34C;HANGUL SYLLABLE SSYAE;Lo;0;L;;;;;N;;;;; +C34D;HANGUL SYLLABLE SSYAEG;Lo;0;L;;;;;N;;;;; +C34E;HANGUL SYLLABLE SSYAEGG;Lo;0;L;;;;;N;;;;; +C34F;HANGUL SYLLABLE SSYAEGS;Lo;0;L;;;;;N;;;;; +C350;HANGUL SYLLABLE SSYAEN;Lo;0;L;;;;;N;;;;; +C351;HANGUL SYLLABLE SSYAENI;Lo;0;L;;;;;N;;;;; +C352;HANGUL SYLLABLE SSYAENH;Lo;0;L;;;;;N;;;;; +C353;HANGUL SYLLABLE SSYAED;Lo;0;L;;;;;N;;;;; +C354;HANGUL SYLLABLE SSYAEL;Lo;0;L;;;;;N;;;;; +C355;HANGUL SYLLABLE SSYAELG;Lo;0;L;;;;;N;;;;; +C356;HANGUL SYLLABLE SSYAELM;Lo;0;L;;;;;N;;;;; +C357;HANGUL SYLLABLE SSYAELB;Lo;0;L;;;;;N;;;;; +C358;HANGUL SYLLABLE SSYAELS;Lo;0;L;;;;;N;;;;; +C359;HANGUL SYLLABLE SSYAELT;Lo;0;L;;;;;N;;;;; +C35A;HANGUL SYLLABLE SSYAELP;Lo;0;L;;;;;N;;;;; +C35B;HANGUL SYLLABLE SSYAELH;Lo;0;L;;;;;N;;;;; +C35C;HANGUL SYLLABLE SSYAEM;Lo;0;L;;;;;N;;;;; +C35D;HANGUL SYLLABLE SSYAEB;Lo;0;L;;;;;N;;;;; +C35E;HANGUL SYLLABLE SSYAEBS;Lo;0;L;;;;;N;;;;; +C35F;HANGUL SYLLABLE SSYAES;Lo;0;L;;;;;N;;;;; +C360;HANGUL SYLLABLE SSYAESS;Lo;0;L;;;;;N;;;;; +C361;HANGUL SYLLABLE SSYAENG;Lo;0;L;;;;;N;;;;; +C362;HANGUL SYLLABLE SSYAEJ;Lo;0;L;;;;;N;;;;; +C363;HANGUL SYLLABLE SSYAEC;Lo;0;L;;;;;N;;;;; +C364;HANGUL SYLLABLE SSYAEK;Lo;0;L;;;;;N;;;;; +C365;HANGUL SYLLABLE SSYAET;Lo;0;L;;;;;N;;;;; +C366;HANGUL SYLLABLE SSYAEP;Lo;0;L;;;;;N;;;;; +C367;HANGUL SYLLABLE SSYAEH;Lo;0;L;;;;;N;;;;; +C368;HANGUL SYLLABLE SSEO;Lo;0;L;;;;;N;;;;; +C369;HANGUL SYLLABLE SSEOG;Lo;0;L;;;;;N;;;;; +C36A;HANGUL SYLLABLE SSEOGG;Lo;0;L;;;;;N;;;;; +C36B;HANGUL SYLLABLE SSEOGS;Lo;0;L;;;;;N;;;;; +C36C;HANGUL SYLLABLE SSEON;Lo;0;L;;;;;N;;;;; +C36D;HANGUL SYLLABLE SSEONI;Lo;0;L;;;;;N;;;;; +C36E;HANGUL SYLLABLE SSEONH;Lo;0;L;;;;;N;;;;; +C36F;HANGUL SYLLABLE SSEOD;Lo;0;L;;;;;N;;;;; +C370;HANGUL SYLLABLE SSEOL;Lo;0;L;;;;;N;;;;; +C371;HANGUL SYLLABLE SSEOLG;Lo;0;L;;;;;N;;;;; +C372;HANGUL SYLLABLE SSEOLM;Lo;0;L;;;;;N;;;;; +C373;HANGUL SYLLABLE SSEOLB;Lo;0;L;;;;;N;;;;; +C374;HANGUL SYLLABLE SSEOLS;Lo;0;L;;;;;N;;;;; +C375;HANGUL SYLLABLE SSEOLT;Lo;0;L;;;;;N;;;;; +C376;HANGUL SYLLABLE SSEOLP;Lo;0;L;;;;;N;;;;; +C377;HANGUL SYLLABLE SSEOLH;Lo;0;L;;;;;N;;;;; +C378;HANGUL SYLLABLE SSEOM;Lo;0;L;;;;;N;;;;; +C379;HANGUL SYLLABLE SSEOB;Lo;0;L;;;;;N;;;;; +C37A;HANGUL SYLLABLE SSEOBS;Lo;0;L;;;;;N;;;;; +C37B;HANGUL SYLLABLE SSEOS;Lo;0;L;;;;;N;;;;; +C37C;HANGUL SYLLABLE SSEOSS;Lo;0;L;;;;;N;;;;; +C37D;HANGUL SYLLABLE SSEONG;Lo;0;L;;;;;N;;;;; +C37E;HANGUL SYLLABLE SSEOJ;Lo;0;L;;;;;N;;;;; +C37F;HANGUL SYLLABLE SSEOC;Lo;0;L;;;;;N;;;;; +C380;HANGUL SYLLABLE SSEOK;Lo;0;L;;;;;N;;;;; +C381;HANGUL SYLLABLE SSEOT;Lo;0;L;;;;;N;;;;; +C382;HANGUL SYLLABLE SSEOP;Lo;0;L;;;;;N;;;;; +C383;HANGUL SYLLABLE SSEOH;Lo;0;L;;;;;N;;;;; +C384;HANGUL SYLLABLE SSE;Lo;0;L;;;;;N;;;;; +C385;HANGUL SYLLABLE SSEG;Lo;0;L;;;;;N;;;;; +C386;HANGUL SYLLABLE SSEGG;Lo;0;L;;;;;N;;;;; +C387;HANGUL SYLLABLE SSEGS;Lo;0;L;;;;;N;;;;; +C388;HANGUL SYLLABLE SSEN;Lo;0;L;;;;;N;;;;; +C389;HANGUL SYLLABLE SSENI;Lo;0;L;;;;;N;;;;; +C38A;HANGUL SYLLABLE SSENH;Lo;0;L;;;;;N;;;;; +C38B;HANGUL SYLLABLE SSED;Lo;0;L;;;;;N;;;;; +C38C;HANGUL SYLLABLE SSEL;Lo;0;L;;;;;N;;;;; +C38D;HANGUL SYLLABLE SSELG;Lo;0;L;;;;;N;;;;; +C38E;HANGUL SYLLABLE SSELM;Lo;0;L;;;;;N;;;;; +C38F;HANGUL SYLLABLE SSELB;Lo;0;L;;;;;N;;;;; +C390;HANGUL SYLLABLE SSELS;Lo;0;L;;;;;N;;;;; +C391;HANGUL SYLLABLE SSELT;Lo;0;L;;;;;N;;;;; +C392;HANGUL SYLLABLE SSELP;Lo;0;L;;;;;N;;;;; +C393;HANGUL SYLLABLE SSELH;Lo;0;L;;;;;N;;;;; +C394;HANGUL SYLLABLE SSEM;Lo;0;L;;;;;N;;;;; +C395;HANGUL SYLLABLE SSEB;Lo;0;L;;;;;N;;;;; +C396;HANGUL SYLLABLE SSEBS;Lo;0;L;;;;;N;;;;; +C397;HANGUL SYLLABLE SSES;Lo;0;L;;;;;N;;;;; +C398;HANGUL SYLLABLE SSESS;Lo;0;L;;;;;N;;;;; +C399;HANGUL SYLLABLE SSENG;Lo;0;L;;;;;N;;;;; +C39A;HANGUL SYLLABLE SSEJ;Lo;0;L;;;;;N;;;;; +C39B;HANGUL SYLLABLE SSEC;Lo;0;L;;;;;N;;;;; +C39C;HANGUL SYLLABLE SSEK;Lo;0;L;;;;;N;;;;; +C39D;HANGUL SYLLABLE SSET;Lo;0;L;;;;;N;;;;; +C39E;HANGUL SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; +C39F;HANGUL SYLLABLE SSEH;Lo;0;L;;;;;N;;;;; +C3A0;HANGUL SYLLABLE SSYEO;Lo;0;L;;;;;N;;;;; +C3A1;HANGUL SYLLABLE SSYEOG;Lo;0;L;;;;;N;;;;; +C3A2;HANGUL SYLLABLE SSYEOGG;Lo;0;L;;;;;N;;;;; +C3A3;HANGUL SYLLABLE SSYEOGS;Lo;0;L;;;;;N;;;;; +C3A4;HANGUL SYLLABLE SSYEON;Lo;0;L;;;;;N;;;;; +C3A5;HANGUL SYLLABLE SSYEONI;Lo;0;L;;;;;N;;;;; +C3A6;HANGUL SYLLABLE SSYEONH;Lo;0;L;;;;;N;;;;; +C3A7;HANGUL SYLLABLE SSYEOD;Lo;0;L;;;;;N;;;;; +C3A8;HANGUL SYLLABLE SSYEOL;Lo;0;L;;;;;N;;;;; +C3A9;HANGUL SYLLABLE SSYEOLG;Lo;0;L;;;;;N;;;;; +C3AA;HANGUL SYLLABLE SSYEOLM;Lo;0;L;;;;;N;;;;; +C3AB;HANGUL SYLLABLE SSYEOLB;Lo;0;L;;;;;N;;;;; +C3AC;HANGUL SYLLABLE SSYEOLS;Lo;0;L;;;;;N;;;;; +C3AD;HANGUL SYLLABLE SSYEOLT;Lo;0;L;;;;;N;;;;; +C3AE;HANGUL SYLLABLE SSYEOLP;Lo;0;L;;;;;N;;;;; +C3AF;HANGUL SYLLABLE SSYEOLH;Lo;0;L;;;;;N;;;;; +C3B0;HANGUL SYLLABLE SSYEOM;Lo;0;L;;;;;N;;;;; +C3B1;HANGUL SYLLABLE SSYEOB;Lo;0;L;;;;;N;;;;; +C3B2;HANGUL SYLLABLE SSYEOBS;Lo;0;L;;;;;N;;;;; +C3B3;HANGUL SYLLABLE SSYEOS;Lo;0;L;;;;;N;;;;; +C3B4;HANGUL SYLLABLE SSYEOSS;Lo;0;L;;;;;N;;;;; +C3B5;HANGUL SYLLABLE SSYEONG;Lo;0;L;;;;;N;;;;; +C3B6;HANGUL SYLLABLE SSYEOJ;Lo;0;L;;;;;N;;;;; +C3B7;HANGUL SYLLABLE SSYEOC;Lo;0;L;;;;;N;;;;; +C3B8;HANGUL SYLLABLE SSYEOK;Lo;0;L;;;;;N;;;;; +C3B9;HANGUL SYLLABLE SSYEOT;Lo;0;L;;;;;N;;;;; +C3BA;HANGUL SYLLABLE SSYEOP;Lo;0;L;;;;;N;;;;; +C3BB;HANGUL SYLLABLE SSYEOH;Lo;0;L;;;;;N;;;;; +C3BC;HANGUL SYLLABLE SSYE;Lo;0;L;;;;;N;;;;; +C3BD;HANGUL SYLLABLE SSYEG;Lo;0;L;;;;;N;;;;; +C3BE;HANGUL SYLLABLE SSYEGG;Lo;0;L;;;;;N;;;;; +C3BF;HANGUL SYLLABLE SSYEGS;Lo;0;L;;;;;N;;;;; +C3C0;HANGUL SYLLABLE SSYEN;Lo;0;L;;;;;N;;;;; +C3C1;HANGUL SYLLABLE SSYENI;Lo;0;L;;;;;N;;;;; +C3C2;HANGUL SYLLABLE SSYENH;Lo;0;L;;;;;N;;;;; +C3C3;HANGUL SYLLABLE SSYED;Lo;0;L;;;;;N;;;;; +C3C4;HANGUL SYLLABLE SSYEL;Lo;0;L;;;;;N;;;;; +C3C5;HANGUL SYLLABLE SSYELG;Lo;0;L;;;;;N;;;;; +C3C6;HANGUL SYLLABLE SSYELM;Lo;0;L;;;;;N;;;;; +C3C7;HANGUL SYLLABLE SSYELB;Lo;0;L;;;;;N;;;;; +C3C8;HANGUL SYLLABLE SSYELS;Lo;0;L;;;;;N;;;;; +C3C9;HANGUL SYLLABLE SSYELT;Lo;0;L;;;;;N;;;;; +C3CA;HANGUL SYLLABLE SSYELP;Lo;0;L;;;;;N;;;;; +C3CB;HANGUL SYLLABLE SSYELH;Lo;0;L;;;;;N;;;;; +C3CC;HANGUL SYLLABLE SSYEM;Lo;0;L;;;;;N;;;;; +C3CD;HANGUL SYLLABLE SSYEB;Lo;0;L;;;;;N;;;;; +C3CE;HANGUL SYLLABLE SSYEBS;Lo;0;L;;;;;N;;;;; +C3CF;HANGUL SYLLABLE SSYES;Lo;0;L;;;;;N;;;;; +C3D0;HANGUL SYLLABLE SSYESS;Lo;0;L;;;;;N;;;;; +C3D1;HANGUL SYLLABLE SSYENG;Lo;0;L;;;;;N;;;;; +C3D2;HANGUL SYLLABLE SSYEJ;Lo;0;L;;;;;N;;;;; +C3D3;HANGUL SYLLABLE SSYEC;Lo;0;L;;;;;N;;;;; +C3D4;HANGUL SYLLABLE SSYEK;Lo;0;L;;;;;N;;;;; +C3D5;HANGUL SYLLABLE SSYET;Lo;0;L;;;;;N;;;;; +C3D6;HANGUL SYLLABLE SSYEP;Lo;0;L;;;;;N;;;;; +C3D7;HANGUL SYLLABLE SSYEH;Lo;0;L;;;;;N;;;;; +C3D8;HANGUL SYLLABLE SSO;Lo;0;L;;;;;N;;;;; +C3D9;HANGUL SYLLABLE SSOG;Lo;0;L;;;;;N;;;;; +C3DA;HANGUL SYLLABLE SSOGG;Lo;0;L;;;;;N;;;;; +C3DB;HANGUL SYLLABLE SSOGS;Lo;0;L;;;;;N;;;;; +C3DC;HANGUL SYLLABLE SSON;Lo;0;L;;;;;N;;;;; +C3DD;HANGUL SYLLABLE SSONI;Lo;0;L;;;;;N;;;;; +C3DE;HANGUL SYLLABLE SSONH;Lo;0;L;;;;;N;;;;; +C3DF;HANGUL SYLLABLE SSOD;Lo;0;L;;;;;N;;;;; +C3E0;HANGUL SYLLABLE SSOL;Lo;0;L;;;;;N;;;;; +C3E1;HANGUL SYLLABLE SSOLG;Lo;0;L;;;;;N;;;;; +C3E2;HANGUL SYLLABLE SSOLM;Lo;0;L;;;;;N;;;;; +C3E3;HANGUL SYLLABLE SSOLB;Lo;0;L;;;;;N;;;;; +C3E4;HANGUL SYLLABLE SSOLS;Lo;0;L;;;;;N;;;;; +C3E5;HANGUL SYLLABLE SSOLT;Lo;0;L;;;;;N;;;;; +C3E6;HANGUL SYLLABLE SSOLP;Lo;0;L;;;;;N;;;;; +C3E7;HANGUL SYLLABLE SSOLH;Lo;0;L;;;;;N;;;;; +C3E8;HANGUL SYLLABLE SSOM;Lo;0;L;;;;;N;;;;; +C3E9;HANGUL SYLLABLE SSOB;Lo;0;L;;;;;N;;;;; +C3EA;HANGUL SYLLABLE SSOBS;Lo;0;L;;;;;N;;;;; +C3EB;HANGUL SYLLABLE SSOS;Lo;0;L;;;;;N;;;;; +C3EC;HANGUL SYLLABLE SSOSS;Lo;0;L;;;;;N;;;;; +C3ED;HANGUL SYLLABLE SSONG;Lo;0;L;;;;;N;;;;; +C3EE;HANGUL SYLLABLE SSOJ;Lo;0;L;;;;;N;;;;; +C3EF;HANGUL SYLLABLE SSOC;Lo;0;L;;;;;N;;;;; +C3F0;HANGUL SYLLABLE SSOK;Lo;0;L;;;;;N;;;;; +C3F1;HANGUL SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; +C3F2;HANGUL SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; +C3F3;HANGUL SYLLABLE SSOH;Lo;0;L;;;;;N;;;;; +C3F4;HANGUL SYLLABLE SSWA;Lo;0;L;;;;;N;;;;; +C3F5;HANGUL SYLLABLE SSWAG;Lo;0;L;;;;;N;;;;; +C3F6;HANGUL SYLLABLE SSWAGG;Lo;0;L;;;;;N;;;;; +C3F7;HANGUL SYLLABLE SSWAGS;Lo;0;L;;;;;N;;;;; +C3F8;HANGUL SYLLABLE SSWAN;Lo;0;L;;;;;N;;;;; +C3F9;HANGUL SYLLABLE SSWANI;Lo;0;L;;;;;N;;;;; +C3FA;HANGUL SYLLABLE SSWANH;Lo;0;L;;;;;N;;;;; +C3FB;HANGUL SYLLABLE SSWAD;Lo;0;L;;;;;N;;;;; +C3FC;HANGUL SYLLABLE SSWAL;Lo;0;L;;;;;N;;;;; +C3FD;HANGUL SYLLABLE SSWALG;Lo;0;L;;;;;N;;;;; +C3FE;HANGUL SYLLABLE SSWALM;Lo;0;L;;;;;N;;;;; +C3FF;HANGUL SYLLABLE SSWALB;Lo;0;L;;;;;N;;;;; +C400;HANGUL SYLLABLE SSWALS;Lo;0;L;;;;;N;;;;; +C401;HANGUL SYLLABLE SSWALT;Lo;0;L;;;;;N;;;;; +C402;HANGUL SYLLABLE SSWALP;Lo;0;L;;;;;N;;;;; +C403;HANGUL SYLLABLE SSWALH;Lo;0;L;;;;;N;;;;; +C404;HANGUL SYLLABLE SSWAM;Lo;0;L;;;;;N;;;;; +C405;HANGUL SYLLABLE SSWAB;Lo;0;L;;;;;N;;;;; +C406;HANGUL SYLLABLE SSWABS;Lo;0;L;;;;;N;;;;; +C407;HANGUL SYLLABLE SSWAS;Lo;0;L;;;;;N;;;;; +C408;HANGUL SYLLABLE SSWASS;Lo;0;L;;;;;N;;;;; +C409;HANGUL SYLLABLE SSWANG;Lo;0;L;;;;;N;;;;; +C40A;HANGUL SYLLABLE SSWAJ;Lo;0;L;;;;;N;;;;; +C40B;HANGUL SYLLABLE SSWAC;Lo;0;L;;;;;N;;;;; +C40C;HANGUL SYLLABLE SSWAK;Lo;0;L;;;;;N;;;;; +C40D;HANGUL SYLLABLE SSWAT;Lo;0;L;;;;;N;;;;; +C40E;HANGUL SYLLABLE SSWAP;Lo;0;L;;;;;N;;;;; +C40F;HANGUL SYLLABLE SSWAH;Lo;0;L;;;;;N;;;;; +C410;HANGUL SYLLABLE SSWAE;Lo;0;L;;;;;N;;;;; +C411;HANGUL SYLLABLE SSWAEG;Lo;0;L;;;;;N;;;;; +C412;HANGUL SYLLABLE SSWAEGG;Lo;0;L;;;;;N;;;;; +C413;HANGUL SYLLABLE SSWAEGS;Lo;0;L;;;;;N;;;;; +C414;HANGUL SYLLABLE SSWAEN;Lo;0;L;;;;;N;;;;; +C415;HANGUL SYLLABLE SSWAENI;Lo;0;L;;;;;N;;;;; +C416;HANGUL SYLLABLE SSWAENH;Lo;0;L;;;;;N;;;;; +C417;HANGUL SYLLABLE SSWAED;Lo;0;L;;;;;N;;;;; +C418;HANGUL SYLLABLE SSWAEL;Lo;0;L;;;;;N;;;;; +C419;HANGUL SYLLABLE SSWAELG;Lo;0;L;;;;;N;;;;; +C41A;HANGUL SYLLABLE SSWAELM;Lo;0;L;;;;;N;;;;; +C41B;HANGUL SYLLABLE SSWAELB;Lo;0;L;;;;;N;;;;; +C41C;HANGUL SYLLABLE SSWAELS;Lo;0;L;;;;;N;;;;; +C41D;HANGUL SYLLABLE SSWAELT;Lo;0;L;;;;;N;;;;; +C41E;HANGUL SYLLABLE SSWAELP;Lo;0;L;;;;;N;;;;; +C41F;HANGUL SYLLABLE SSWAELH;Lo;0;L;;;;;N;;;;; +C420;HANGUL SYLLABLE SSWAEM;Lo;0;L;;;;;N;;;;; +C421;HANGUL SYLLABLE SSWAEB;Lo;0;L;;;;;N;;;;; +C422;HANGUL SYLLABLE SSWAEBS;Lo;0;L;;;;;N;;;;; +C423;HANGUL SYLLABLE SSWAES;Lo;0;L;;;;;N;;;;; +C424;HANGUL SYLLABLE SSWAESS;Lo;0;L;;;;;N;;;;; +C425;HANGUL SYLLABLE SSWAENG;Lo;0;L;;;;;N;;;;; +C426;HANGUL SYLLABLE SSWAEJ;Lo;0;L;;;;;N;;;;; +C427;HANGUL SYLLABLE SSWAEC;Lo;0;L;;;;;N;;;;; +C428;HANGUL SYLLABLE SSWAEK;Lo;0;L;;;;;N;;;;; +C429;HANGUL SYLLABLE SSWAET;Lo;0;L;;;;;N;;;;; +C42A;HANGUL SYLLABLE SSWAEP;Lo;0;L;;;;;N;;;;; +C42B;HANGUL SYLLABLE SSWAEH;Lo;0;L;;;;;N;;;;; +C42C;HANGUL SYLLABLE SSOE;Lo;0;L;;;;;N;;;;; +C42D;HANGUL SYLLABLE SSOEG;Lo;0;L;;;;;N;;;;; +C42E;HANGUL SYLLABLE SSOEGG;Lo;0;L;;;;;N;;;;; +C42F;HANGUL SYLLABLE SSOEGS;Lo;0;L;;;;;N;;;;; +C430;HANGUL SYLLABLE SSOEN;Lo;0;L;;;;;N;;;;; +C431;HANGUL SYLLABLE SSOENI;Lo;0;L;;;;;N;;;;; +C432;HANGUL SYLLABLE SSOENH;Lo;0;L;;;;;N;;;;; +C433;HANGUL SYLLABLE SSOED;Lo;0;L;;;;;N;;;;; +C434;HANGUL SYLLABLE SSOEL;Lo;0;L;;;;;N;;;;; +C435;HANGUL SYLLABLE SSOELG;Lo;0;L;;;;;N;;;;; +C436;HANGUL SYLLABLE SSOELM;Lo;0;L;;;;;N;;;;; +C437;HANGUL SYLLABLE SSOELB;Lo;0;L;;;;;N;;;;; +C438;HANGUL SYLLABLE SSOELS;Lo;0;L;;;;;N;;;;; +C439;HANGUL SYLLABLE SSOELT;Lo;0;L;;;;;N;;;;; +C43A;HANGUL SYLLABLE SSOELP;Lo;0;L;;;;;N;;;;; +C43B;HANGUL SYLLABLE SSOELH;Lo;0;L;;;;;N;;;;; +C43C;HANGUL SYLLABLE SSOEM;Lo;0;L;;;;;N;;;;; +C43D;HANGUL SYLLABLE SSOEB;Lo;0;L;;;;;N;;;;; +C43E;HANGUL SYLLABLE SSOEBS;Lo;0;L;;;;;N;;;;; +C43F;HANGUL SYLLABLE SSOES;Lo;0;L;;;;;N;;;;; +C440;HANGUL SYLLABLE SSOESS;Lo;0;L;;;;;N;;;;; +C441;HANGUL SYLLABLE SSOENG;Lo;0;L;;;;;N;;;;; +C442;HANGUL SYLLABLE SSOEJ;Lo;0;L;;;;;N;;;;; +C443;HANGUL SYLLABLE SSOEC;Lo;0;L;;;;;N;;;;; +C444;HANGUL SYLLABLE SSOEK;Lo;0;L;;;;;N;;;;; +C445;HANGUL SYLLABLE SSOET;Lo;0;L;;;;;N;;;;; +C446;HANGUL SYLLABLE SSOEP;Lo;0;L;;;;;N;;;;; +C447;HANGUL SYLLABLE SSOEH;Lo;0;L;;;;;N;;;;; +C448;HANGUL SYLLABLE SSYO;Lo;0;L;;;;;N;;;;; +C449;HANGUL SYLLABLE SSYOG;Lo;0;L;;;;;N;;;;; +C44A;HANGUL SYLLABLE SSYOGG;Lo;0;L;;;;;N;;;;; +C44B;HANGUL SYLLABLE SSYOGS;Lo;0;L;;;;;N;;;;; +C44C;HANGUL SYLLABLE SSYON;Lo;0;L;;;;;N;;;;; +C44D;HANGUL SYLLABLE SSYONI;Lo;0;L;;;;;N;;;;; +C44E;HANGUL SYLLABLE SSYONH;Lo;0;L;;;;;N;;;;; +C44F;HANGUL SYLLABLE SSYOD;Lo;0;L;;;;;N;;;;; +C450;HANGUL SYLLABLE SSYOL;Lo;0;L;;;;;N;;;;; +C451;HANGUL SYLLABLE SSYOLG;Lo;0;L;;;;;N;;;;; +C452;HANGUL SYLLABLE SSYOLM;Lo;0;L;;;;;N;;;;; +C453;HANGUL SYLLABLE SSYOLB;Lo;0;L;;;;;N;;;;; +C454;HANGUL SYLLABLE SSYOLS;Lo;0;L;;;;;N;;;;; +C455;HANGUL SYLLABLE SSYOLT;Lo;0;L;;;;;N;;;;; +C456;HANGUL SYLLABLE SSYOLP;Lo;0;L;;;;;N;;;;; +C457;HANGUL SYLLABLE SSYOLH;Lo;0;L;;;;;N;;;;; +C458;HANGUL SYLLABLE SSYOM;Lo;0;L;;;;;N;;;;; +C459;HANGUL SYLLABLE SSYOB;Lo;0;L;;;;;N;;;;; +C45A;HANGUL SYLLABLE SSYOBS;Lo;0;L;;;;;N;;;;; +C45B;HANGUL SYLLABLE SSYOS;Lo;0;L;;;;;N;;;;; +C45C;HANGUL SYLLABLE SSYOSS;Lo;0;L;;;;;N;;;;; +C45D;HANGUL SYLLABLE SSYONG;Lo;0;L;;;;;N;;;;; +C45E;HANGUL SYLLABLE SSYOJ;Lo;0;L;;;;;N;;;;; +C45F;HANGUL SYLLABLE SSYOC;Lo;0;L;;;;;N;;;;; +C460;HANGUL SYLLABLE SSYOK;Lo;0;L;;;;;N;;;;; +C461;HANGUL SYLLABLE SSYOT;Lo;0;L;;;;;N;;;;; +C462;HANGUL SYLLABLE SSYOP;Lo;0;L;;;;;N;;;;; +C463;HANGUL SYLLABLE SSYOH;Lo;0;L;;;;;N;;;;; +C464;HANGUL SYLLABLE SSU;Lo;0;L;;;;;N;;;;; +C465;HANGUL SYLLABLE SSUG;Lo;0;L;;;;;N;;;;; +C466;HANGUL SYLLABLE SSUGG;Lo;0;L;;;;;N;;;;; +C467;HANGUL SYLLABLE SSUGS;Lo;0;L;;;;;N;;;;; +C468;HANGUL SYLLABLE SSUN;Lo;0;L;;;;;N;;;;; +C469;HANGUL SYLLABLE SSUNI;Lo;0;L;;;;;N;;;;; +C46A;HANGUL SYLLABLE SSUNH;Lo;0;L;;;;;N;;;;; +C46B;HANGUL SYLLABLE SSUD;Lo;0;L;;;;;N;;;;; +C46C;HANGUL SYLLABLE SSUL;Lo;0;L;;;;;N;;;;; +C46D;HANGUL SYLLABLE SSULG;Lo;0;L;;;;;N;;;;; +C46E;HANGUL SYLLABLE SSULM;Lo;0;L;;;;;N;;;;; +C46F;HANGUL SYLLABLE SSULB;Lo;0;L;;;;;N;;;;; +C470;HANGUL SYLLABLE SSULS;Lo;0;L;;;;;N;;;;; +C471;HANGUL SYLLABLE SSULT;Lo;0;L;;;;;N;;;;; +C472;HANGUL SYLLABLE SSULP;Lo;0;L;;;;;N;;;;; +C473;HANGUL SYLLABLE SSULH;Lo;0;L;;;;;N;;;;; +C474;HANGUL SYLLABLE SSUM;Lo;0;L;;;;;N;;;;; +C475;HANGUL SYLLABLE SSUB;Lo;0;L;;;;;N;;;;; +C476;HANGUL SYLLABLE SSUBS;Lo;0;L;;;;;N;;;;; +C477;HANGUL SYLLABLE SSUS;Lo;0;L;;;;;N;;;;; +C478;HANGUL SYLLABLE SSUSS;Lo;0;L;;;;;N;;;;; +C479;HANGUL SYLLABLE SSUNG;Lo;0;L;;;;;N;;;;; +C47A;HANGUL SYLLABLE SSUJ;Lo;0;L;;;;;N;;;;; +C47B;HANGUL SYLLABLE SSUC;Lo;0;L;;;;;N;;;;; +C47C;HANGUL SYLLABLE SSUK;Lo;0;L;;;;;N;;;;; +C47D;HANGUL SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; +C47E;HANGUL SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; +C47F;HANGUL SYLLABLE SSUH;Lo;0;L;;;;;N;;;;; +C480;HANGUL SYLLABLE SSWEO;Lo;0;L;;;;;N;;;;; +C481;HANGUL SYLLABLE SSWEOG;Lo;0;L;;;;;N;;;;; +C482;HANGUL SYLLABLE SSWEOGG;Lo;0;L;;;;;N;;;;; +C483;HANGUL SYLLABLE SSWEOGS;Lo;0;L;;;;;N;;;;; +C484;HANGUL SYLLABLE SSWEON;Lo;0;L;;;;;N;;;;; +C485;HANGUL SYLLABLE SSWEONI;Lo;0;L;;;;;N;;;;; +C486;HANGUL SYLLABLE SSWEONH;Lo;0;L;;;;;N;;;;; +C487;HANGUL SYLLABLE SSWEOD;Lo;0;L;;;;;N;;;;; +C488;HANGUL SYLLABLE SSWEOL;Lo;0;L;;;;;N;;;;; +C489;HANGUL SYLLABLE SSWEOLG;Lo;0;L;;;;;N;;;;; +C48A;HANGUL SYLLABLE SSWEOLM;Lo;0;L;;;;;N;;;;; +C48B;HANGUL SYLLABLE SSWEOLB;Lo;0;L;;;;;N;;;;; +C48C;HANGUL SYLLABLE SSWEOLS;Lo;0;L;;;;;N;;;;; +C48D;HANGUL SYLLABLE SSWEOLT;Lo;0;L;;;;;N;;;;; +C48E;HANGUL SYLLABLE SSWEOLP;Lo;0;L;;;;;N;;;;; +C48F;HANGUL SYLLABLE SSWEOLH;Lo;0;L;;;;;N;;;;; +C490;HANGUL SYLLABLE SSWEOM;Lo;0;L;;;;;N;;;;; +C491;HANGUL SYLLABLE SSWEOB;Lo;0;L;;;;;N;;;;; +C492;HANGUL SYLLABLE SSWEOBS;Lo;0;L;;;;;N;;;;; +C493;HANGUL SYLLABLE SSWEOS;Lo;0;L;;;;;N;;;;; +C494;HANGUL SYLLABLE SSWEOSS;Lo;0;L;;;;;N;;;;; +C495;HANGUL SYLLABLE SSWEONG;Lo;0;L;;;;;N;;;;; +C496;HANGUL SYLLABLE SSWEOJ;Lo;0;L;;;;;N;;;;; +C497;HANGUL SYLLABLE SSWEOC;Lo;0;L;;;;;N;;;;; +C498;HANGUL SYLLABLE SSWEOK;Lo;0;L;;;;;N;;;;; +C499;HANGUL SYLLABLE SSWEOT;Lo;0;L;;;;;N;;;;; +C49A;HANGUL SYLLABLE SSWEOP;Lo;0;L;;;;;N;;;;; +C49B;HANGUL SYLLABLE SSWEOH;Lo;0;L;;;;;N;;;;; +C49C;HANGUL SYLLABLE SSWE;Lo;0;L;;;;;N;;;;; +C49D;HANGUL SYLLABLE SSWEG;Lo;0;L;;;;;N;;;;; +C49E;HANGUL SYLLABLE SSWEGG;Lo;0;L;;;;;N;;;;; +C49F;HANGUL SYLLABLE SSWEGS;Lo;0;L;;;;;N;;;;; +C4A0;HANGUL SYLLABLE SSWEN;Lo;0;L;;;;;N;;;;; +C4A1;HANGUL SYLLABLE SSWENI;Lo;0;L;;;;;N;;;;; +C4A2;HANGUL SYLLABLE SSWENH;Lo;0;L;;;;;N;;;;; +C4A3;HANGUL SYLLABLE SSWED;Lo;0;L;;;;;N;;;;; +C4A4;HANGUL SYLLABLE SSWEL;Lo;0;L;;;;;N;;;;; +C4A5;HANGUL SYLLABLE SSWELG;Lo;0;L;;;;;N;;;;; +C4A6;HANGUL SYLLABLE SSWELM;Lo;0;L;;;;;N;;;;; +C4A7;HANGUL SYLLABLE SSWELB;Lo;0;L;;;;;N;;;;; +C4A8;HANGUL SYLLABLE SSWELS;Lo;0;L;;;;;N;;;;; +C4A9;HANGUL SYLLABLE SSWELT;Lo;0;L;;;;;N;;;;; +C4AA;HANGUL SYLLABLE SSWELP;Lo;0;L;;;;;N;;;;; +C4AB;HANGUL SYLLABLE SSWELH;Lo;0;L;;;;;N;;;;; +C4AC;HANGUL SYLLABLE SSWEM;Lo;0;L;;;;;N;;;;; +C4AD;HANGUL SYLLABLE SSWEB;Lo;0;L;;;;;N;;;;; +C4AE;HANGUL SYLLABLE SSWEBS;Lo;0;L;;;;;N;;;;; +C4AF;HANGUL SYLLABLE SSWES;Lo;0;L;;;;;N;;;;; +C4B0;HANGUL SYLLABLE SSWESS;Lo;0;L;;;;;N;;;;; +C4B1;HANGUL SYLLABLE SSWENG;Lo;0;L;;;;;N;;;;; +C4B2;HANGUL SYLLABLE SSWEJ;Lo;0;L;;;;;N;;;;; +C4B3;HANGUL SYLLABLE SSWEC;Lo;0;L;;;;;N;;;;; +C4B4;HANGUL SYLLABLE SSWEK;Lo;0;L;;;;;N;;;;; +C4B5;HANGUL SYLLABLE SSWET;Lo;0;L;;;;;N;;;;; +C4B6;HANGUL SYLLABLE SSWEP;Lo;0;L;;;;;N;;;;; +C4B7;HANGUL SYLLABLE SSWEH;Lo;0;L;;;;;N;;;;; +C4B8;HANGUL SYLLABLE SSWI;Lo;0;L;;;;;N;;;;; +C4B9;HANGUL SYLLABLE SSWIG;Lo;0;L;;;;;N;;;;; +C4BA;HANGUL SYLLABLE SSWIGG;Lo;0;L;;;;;N;;;;; +C4BB;HANGUL SYLLABLE SSWIGS;Lo;0;L;;;;;N;;;;; +C4BC;HANGUL SYLLABLE SSWIN;Lo;0;L;;;;;N;;;;; +C4BD;HANGUL SYLLABLE SSWINI;Lo;0;L;;;;;N;;;;; +C4BE;HANGUL SYLLABLE SSWINH;Lo;0;L;;;;;N;;;;; +C4BF;HANGUL SYLLABLE SSWID;Lo;0;L;;;;;N;;;;; +C4C0;HANGUL SYLLABLE SSWIL;Lo;0;L;;;;;N;;;;; +C4C1;HANGUL SYLLABLE SSWILG;Lo;0;L;;;;;N;;;;; +C4C2;HANGUL SYLLABLE SSWILM;Lo;0;L;;;;;N;;;;; +C4C3;HANGUL SYLLABLE SSWILB;Lo;0;L;;;;;N;;;;; +C4C4;HANGUL SYLLABLE SSWILS;Lo;0;L;;;;;N;;;;; +C4C5;HANGUL SYLLABLE SSWILT;Lo;0;L;;;;;N;;;;; +C4C6;HANGUL SYLLABLE SSWILP;Lo;0;L;;;;;N;;;;; +C4C7;HANGUL SYLLABLE SSWILH;Lo;0;L;;;;;N;;;;; +C4C8;HANGUL SYLLABLE SSWIM;Lo;0;L;;;;;N;;;;; +C4C9;HANGUL SYLLABLE SSWIB;Lo;0;L;;;;;N;;;;; +C4CA;HANGUL SYLLABLE SSWIBS;Lo;0;L;;;;;N;;;;; +C4CB;HANGUL SYLLABLE SSWIS;Lo;0;L;;;;;N;;;;; +C4CC;HANGUL SYLLABLE SSWISS;Lo;0;L;;;;;N;;;;; +C4CD;HANGUL SYLLABLE SSWING;Lo;0;L;;;;;N;;;;; +C4CE;HANGUL SYLLABLE SSWIJ;Lo;0;L;;;;;N;;;;; +C4CF;HANGUL SYLLABLE SSWIC;Lo;0;L;;;;;N;;;;; +C4D0;HANGUL SYLLABLE SSWIK;Lo;0;L;;;;;N;;;;; +C4D1;HANGUL SYLLABLE SSWIT;Lo;0;L;;;;;N;;;;; +C4D2;HANGUL SYLLABLE SSWIP;Lo;0;L;;;;;N;;;;; +C4D3;HANGUL SYLLABLE SSWIH;Lo;0;L;;;;;N;;;;; +C4D4;HANGUL SYLLABLE SSYU;Lo;0;L;;;;;N;;;;; +C4D5;HANGUL SYLLABLE SSYUG;Lo;0;L;;;;;N;;;;; +C4D6;HANGUL SYLLABLE SSYUGG;Lo;0;L;;;;;N;;;;; +C4D7;HANGUL SYLLABLE SSYUGS;Lo;0;L;;;;;N;;;;; +C4D8;HANGUL SYLLABLE SSYUN;Lo;0;L;;;;;N;;;;; +C4D9;HANGUL SYLLABLE SSYUNI;Lo;0;L;;;;;N;;;;; +C4DA;HANGUL SYLLABLE SSYUNH;Lo;0;L;;;;;N;;;;; +C4DB;HANGUL SYLLABLE SSYUD;Lo;0;L;;;;;N;;;;; +C4DC;HANGUL SYLLABLE SSYUL;Lo;0;L;;;;;N;;;;; +C4DD;HANGUL SYLLABLE SSYULG;Lo;0;L;;;;;N;;;;; +C4DE;HANGUL SYLLABLE SSYULM;Lo;0;L;;;;;N;;;;; +C4DF;HANGUL SYLLABLE SSYULB;Lo;0;L;;;;;N;;;;; +C4E0;HANGUL SYLLABLE SSYULS;Lo;0;L;;;;;N;;;;; +C4E1;HANGUL SYLLABLE SSYULT;Lo;0;L;;;;;N;;;;; +C4E2;HANGUL SYLLABLE SSYULP;Lo;0;L;;;;;N;;;;; +C4E3;HANGUL SYLLABLE SSYULH;Lo;0;L;;;;;N;;;;; +C4E4;HANGUL SYLLABLE SSYUM;Lo;0;L;;;;;N;;;;; +C4E5;HANGUL SYLLABLE SSYUB;Lo;0;L;;;;;N;;;;; +C4E6;HANGUL SYLLABLE SSYUBS;Lo;0;L;;;;;N;;;;; +C4E7;HANGUL SYLLABLE SSYUS;Lo;0;L;;;;;N;;;;; +C4E8;HANGUL SYLLABLE SSYUSS;Lo;0;L;;;;;N;;;;; +C4E9;HANGUL SYLLABLE SSYUNG;Lo;0;L;;;;;N;;;;; +C4EA;HANGUL SYLLABLE SSYUJ;Lo;0;L;;;;;N;;;;; +C4EB;HANGUL SYLLABLE SSYUC;Lo;0;L;;;;;N;;;;; +C4EC;HANGUL SYLLABLE SSYUK;Lo;0;L;;;;;N;;;;; +C4ED;HANGUL SYLLABLE SSYUT;Lo;0;L;;;;;N;;;;; +C4EE;HANGUL SYLLABLE SSYUP;Lo;0;L;;;;;N;;;;; +C4EF;HANGUL SYLLABLE SSYUH;Lo;0;L;;;;;N;;;;; +C4F0;HANGUL SYLLABLE SSEU;Lo;0;L;;;;;N;;;;; +C4F1;HANGUL SYLLABLE SSEUG;Lo;0;L;;;;;N;;;;; +C4F2;HANGUL SYLLABLE SSEUGG;Lo;0;L;;;;;N;;;;; +C4F3;HANGUL SYLLABLE SSEUGS;Lo;0;L;;;;;N;;;;; +C4F4;HANGUL SYLLABLE SSEUN;Lo;0;L;;;;;N;;;;; +C4F5;HANGUL SYLLABLE SSEUNI;Lo;0;L;;;;;N;;;;; +C4F6;HANGUL SYLLABLE SSEUNH;Lo;0;L;;;;;N;;;;; +C4F7;HANGUL SYLLABLE SSEUD;Lo;0;L;;;;;N;;;;; +C4F8;HANGUL SYLLABLE SSEUL;Lo;0;L;;;;;N;;;;; +C4F9;HANGUL SYLLABLE SSEULG;Lo;0;L;;;;;N;;;;; +C4FA;HANGUL SYLLABLE SSEULM;Lo;0;L;;;;;N;;;;; +C4FB;HANGUL SYLLABLE SSEULB;Lo;0;L;;;;;N;;;;; +C4FC;HANGUL SYLLABLE SSEULS;Lo;0;L;;;;;N;;;;; +C4FD;HANGUL SYLLABLE SSEULT;Lo;0;L;;;;;N;;;;; +C4FE;HANGUL SYLLABLE SSEULP;Lo;0;L;;;;;N;;;;; +C4FF;HANGUL SYLLABLE SSEULH;Lo;0;L;;;;;N;;;;; +C500;HANGUL SYLLABLE SSEUM;Lo;0;L;;;;;N;;;;; +C501;HANGUL SYLLABLE SSEUB;Lo;0;L;;;;;N;;;;; +C502;HANGUL SYLLABLE SSEUBS;Lo;0;L;;;;;N;;;;; +C503;HANGUL SYLLABLE SSEUS;Lo;0;L;;;;;N;;;;; +C504;HANGUL SYLLABLE SSEUSS;Lo;0;L;;;;;N;;;;; +C505;HANGUL SYLLABLE SSEUNG;Lo;0;L;;;;;N;;;;; +C506;HANGUL SYLLABLE SSEUJ;Lo;0;L;;;;;N;;;;; +C507;HANGUL SYLLABLE SSEUC;Lo;0;L;;;;;N;;;;; +C508;HANGUL SYLLABLE SSEUK;Lo;0;L;;;;;N;;;;; +C509;HANGUL SYLLABLE SSEUT;Lo;0;L;;;;;N;;;;; +C50A;HANGUL SYLLABLE SSEUP;Lo;0;L;;;;;N;;;;; +C50B;HANGUL SYLLABLE SSEUH;Lo;0;L;;;;;N;;;;; +C50C;HANGUL SYLLABLE SSYI;Lo;0;L;;;;;N;;;;; +C50D;HANGUL SYLLABLE SSYIG;Lo;0;L;;;;;N;;;;; +C50E;HANGUL SYLLABLE SSYIGG;Lo;0;L;;;;;N;;;;; +C50F;HANGUL SYLLABLE SSYIGS;Lo;0;L;;;;;N;;;;; +C510;HANGUL SYLLABLE SSYIN;Lo;0;L;;;;;N;;;;; +C511;HANGUL SYLLABLE SSYINI;Lo;0;L;;;;;N;;;;; +C512;HANGUL SYLLABLE SSYINH;Lo;0;L;;;;;N;;;;; +C513;HANGUL SYLLABLE SSYID;Lo;0;L;;;;;N;;;;; +C514;HANGUL SYLLABLE SSYIL;Lo;0;L;;;;;N;;;;; +C515;HANGUL SYLLABLE SSYILG;Lo;0;L;;;;;N;;;;; +C516;HANGUL SYLLABLE SSYILM;Lo;0;L;;;;;N;;;;; +C517;HANGUL SYLLABLE SSYILB;Lo;0;L;;;;;N;;;;; +C518;HANGUL SYLLABLE SSYILS;Lo;0;L;;;;;N;;;;; +C519;HANGUL SYLLABLE SSYILT;Lo;0;L;;;;;N;;;;; +C51A;HANGUL SYLLABLE SSYILP;Lo;0;L;;;;;N;;;;; +C51B;HANGUL SYLLABLE SSYILH;Lo;0;L;;;;;N;;;;; +C51C;HANGUL SYLLABLE SSYIM;Lo;0;L;;;;;N;;;;; +C51D;HANGUL SYLLABLE SSYIB;Lo;0;L;;;;;N;;;;; +C51E;HANGUL SYLLABLE SSYIBS;Lo;0;L;;;;;N;;;;; +C51F;HANGUL SYLLABLE SSYIS;Lo;0;L;;;;;N;;;;; +C520;HANGUL SYLLABLE SSYISS;Lo;0;L;;;;;N;;;;; +C521;HANGUL SYLLABLE SSYING;Lo;0;L;;;;;N;;;;; +C522;HANGUL SYLLABLE SSYIJ;Lo;0;L;;;;;N;;;;; +C523;HANGUL SYLLABLE SSYIC;Lo;0;L;;;;;N;;;;; +C524;HANGUL SYLLABLE SSYIK;Lo;0;L;;;;;N;;;;; +C525;HANGUL SYLLABLE SSYIT;Lo;0;L;;;;;N;;;;; +C526;HANGUL SYLLABLE SSYIP;Lo;0;L;;;;;N;;;;; +C527;HANGUL SYLLABLE SSYIH;Lo;0;L;;;;;N;;;;; +C528;HANGUL SYLLABLE SSI;Lo;0;L;;;;;N;;;;; +C529;HANGUL SYLLABLE SSIG;Lo;0;L;;;;;N;;;;; +C52A;HANGUL SYLLABLE SSIGG;Lo;0;L;;;;;N;;;;; +C52B;HANGUL SYLLABLE SSIGS;Lo;0;L;;;;;N;;;;; +C52C;HANGUL SYLLABLE SSIN;Lo;0;L;;;;;N;;;;; +C52D;HANGUL SYLLABLE SSINI;Lo;0;L;;;;;N;;;;; +C52E;HANGUL SYLLABLE SSINH;Lo;0;L;;;;;N;;;;; +C52F;HANGUL SYLLABLE SSID;Lo;0;L;;;;;N;;;;; +C530;HANGUL SYLLABLE SSIL;Lo;0;L;;;;;N;;;;; +C531;HANGUL SYLLABLE SSILG;Lo;0;L;;;;;N;;;;; +C532;HANGUL SYLLABLE SSILM;Lo;0;L;;;;;N;;;;; +C533;HANGUL SYLLABLE SSILB;Lo;0;L;;;;;N;;;;; +C534;HANGUL SYLLABLE SSILS;Lo;0;L;;;;;N;;;;; +C535;HANGUL SYLLABLE SSILT;Lo;0;L;;;;;N;;;;; +C536;HANGUL SYLLABLE SSILP;Lo;0;L;;;;;N;;;;; +C537;HANGUL SYLLABLE SSILH;Lo;0;L;;;;;N;;;;; +C538;HANGUL SYLLABLE SSIM;Lo;0;L;;;;;N;;;;; +C539;HANGUL SYLLABLE SSIB;Lo;0;L;;;;;N;;;;; +C53A;HANGUL SYLLABLE SSIBS;Lo;0;L;;;;;N;;;;; +C53B;HANGUL SYLLABLE SSIS;Lo;0;L;;;;;N;;;;; +C53C;HANGUL SYLLABLE SSISS;Lo;0;L;;;;;N;;;;; +C53D;HANGUL SYLLABLE SSING;Lo;0;L;;;;;N;;;;; +C53E;HANGUL SYLLABLE SSIJ;Lo;0;L;;;;;N;;;;; +C53F;HANGUL SYLLABLE SSIC;Lo;0;L;;;;;N;;;;; +C540;HANGUL SYLLABLE SSIK;Lo;0;L;;;;;N;;;;; +C541;HANGUL SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; +C542;HANGUL SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; +C543;HANGUL SYLLABLE SSIH;Lo;0;L;;;;;N;;;;; +C544;HANGUL SYLLABLE A;Lo;0;L;;;;;N;;;;; +C545;HANGUL SYLLABLE AG;Lo;0;L;;;;;N;;;;; +C546;HANGUL SYLLABLE AGG;Lo;0;L;;;;;N;;;;; +C547;HANGUL SYLLABLE AGS;Lo;0;L;;;;;N;;;;; +C548;HANGUL SYLLABLE AN;Lo;0;L;;;;;N;;;;; +C549;HANGUL SYLLABLE ANI;Lo;0;L;;;;;N;;;;; +C54A;HANGUL SYLLABLE ANH;Lo;0;L;;;;;N;;;;; +C54B;HANGUL SYLLABLE AD;Lo;0;L;;;;;N;;;;; +C54C;HANGUL SYLLABLE AL;Lo;0;L;;;;;N;;;;; +C54D;HANGUL SYLLABLE ALG;Lo;0;L;;;;;N;;;;; +C54E;HANGUL SYLLABLE ALM;Lo;0;L;;;;;N;;;;; +C54F;HANGUL SYLLABLE ALB;Lo;0;L;;;;;N;;;;; +C550;HANGUL SYLLABLE ALS;Lo;0;L;;;;;N;;;;; +C551;HANGUL SYLLABLE ALT;Lo;0;L;;;;;N;;;;; +C552;HANGUL SYLLABLE ALP;Lo;0;L;;;;;N;;;;; +C553;HANGUL SYLLABLE ALH;Lo;0;L;;;;;N;;;;; +C554;HANGUL SYLLABLE AM;Lo;0;L;;;;;N;;;;; +C555;HANGUL SYLLABLE AB;Lo;0;L;;;;;N;;;;; +C556;HANGUL SYLLABLE ABS;Lo;0;L;;;;;N;;;;; +C557;HANGUL SYLLABLE AS;Lo;0;L;;;;;N;;;;; +C558;HANGUL SYLLABLE ASS;Lo;0;L;;;;;N;;;;; +C559;HANGUL SYLLABLE ANG;Lo;0;L;;;;;N;;;;; +C55A;HANGUL SYLLABLE AJ;Lo;0;L;;;;;N;;;;; +C55B;HANGUL SYLLABLE AC;Lo;0;L;;;;;N;;;;; +C55C;HANGUL SYLLABLE AK;Lo;0;L;;;;;N;;;;; +C55D;HANGUL SYLLABLE AT;Lo;0;L;;;;;N;;;;; +C55E;HANGUL SYLLABLE AP;Lo;0;L;;;;;N;;;;; +C55F;HANGUL SYLLABLE AH;Lo;0;L;;;;;N;;;;; +C560;HANGUL SYLLABLE AE;Lo;0;L;;;;;N;;;;; +C561;HANGUL SYLLABLE AEG;Lo;0;L;;;;;N;;;;; +C562;HANGUL SYLLABLE AEGG;Lo;0;L;;;;;N;;;;; +C563;HANGUL SYLLABLE AEGS;Lo;0;L;;;;;N;;;;; +C564;HANGUL SYLLABLE AEN;Lo;0;L;;;;;N;;;;; +C565;HANGUL SYLLABLE AENI;Lo;0;L;;;;;N;;;;; +C566;HANGUL SYLLABLE AENH;Lo;0;L;;;;;N;;;;; +C567;HANGUL SYLLABLE AED;Lo;0;L;;;;;N;;;;; +C568;HANGUL SYLLABLE AEL;Lo;0;L;;;;;N;;;;; +C569;HANGUL SYLLABLE AELG;Lo;0;L;;;;;N;;;;; +C56A;HANGUL SYLLABLE AELM;Lo;0;L;;;;;N;;;;; +C56B;HANGUL SYLLABLE AELB;Lo;0;L;;;;;N;;;;; +C56C;HANGUL SYLLABLE AELS;Lo;0;L;;;;;N;;;;; +C56D;HANGUL SYLLABLE AELT;Lo;0;L;;;;;N;;;;; +C56E;HANGUL SYLLABLE AELP;Lo;0;L;;;;;N;;;;; +C56F;HANGUL SYLLABLE AELH;Lo;0;L;;;;;N;;;;; +C570;HANGUL SYLLABLE AEM;Lo;0;L;;;;;N;;;;; +C571;HANGUL SYLLABLE AEB;Lo;0;L;;;;;N;;;;; +C572;HANGUL SYLLABLE AEBS;Lo;0;L;;;;;N;;;;; +C573;HANGUL SYLLABLE AES;Lo;0;L;;;;;N;;;;; +C574;HANGUL SYLLABLE AESS;Lo;0;L;;;;;N;;;;; +C575;HANGUL SYLLABLE AENG;Lo;0;L;;;;;N;;;;; +C576;HANGUL SYLLABLE AEJ;Lo;0;L;;;;;N;;;;; +C577;HANGUL SYLLABLE AEC;Lo;0;L;;;;;N;;;;; +C578;HANGUL SYLLABLE AEK;Lo;0;L;;;;;N;;;;; +C579;HANGUL SYLLABLE AET;Lo;0;L;;;;;N;;;;; +C57A;HANGUL SYLLABLE AEP;Lo;0;L;;;;;N;;;;; +C57B;HANGUL SYLLABLE AEH;Lo;0;L;;;;;N;;;;; +C57C;HANGUL SYLLABLE YA;Lo;0;L;;;;;N;;;;; +C57D;HANGUL SYLLABLE YAG;Lo;0;L;;;;;N;;;;; +C57E;HANGUL SYLLABLE YAGG;Lo;0;L;;;;;N;;;;; +C57F;HANGUL SYLLABLE YAGS;Lo;0;L;;;;;N;;;;; +C580;HANGUL SYLLABLE YAN;Lo;0;L;;;;;N;;;;; +C581;HANGUL SYLLABLE YANI;Lo;0;L;;;;;N;;;;; +C582;HANGUL SYLLABLE YANH;Lo;0;L;;;;;N;;;;; +C583;HANGUL SYLLABLE YAD;Lo;0;L;;;;;N;;;;; +C584;HANGUL SYLLABLE YAL;Lo;0;L;;;;;N;;;;; +C585;HANGUL SYLLABLE YALG;Lo;0;L;;;;;N;;;;; +C586;HANGUL SYLLABLE YALM;Lo;0;L;;;;;N;;;;; +C587;HANGUL SYLLABLE YALB;Lo;0;L;;;;;N;;;;; +C588;HANGUL SYLLABLE YALS;Lo;0;L;;;;;N;;;;; +C589;HANGUL SYLLABLE YALT;Lo;0;L;;;;;N;;;;; +C58A;HANGUL SYLLABLE YALP;Lo;0;L;;;;;N;;;;; +C58B;HANGUL SYLLABLE YALH;Lo;0;L;;;;;N;;;;; +C58C;HANGUL SYLLABLE YAM;Lo;0;L;;;;;N;;;;; +C58D;HANGUL SYLLABLE YAB;Lo;0;L;;;;;N;;;;; +C58E;HANGUL SYLLABLE YABS;Lo;0;L;;;;;N;;;;; +C58F;HANGUL SYLLABLE YAS;Lo;0;L;;;;;N;;;;; +C590;HANGUL SYLLABLE YASS;Lo;0;L;;;;;N;;;;; +C591;HANGUL SYLLABLE YANG;Lo;0;L;;;;;N;;;;; +C592;HANGUL SYLLABLE YAJ;Lo;0;L;;;;;N;;;;; +C593;HANGUL SYLLABLE YAC;Lo;0;L;;;;;N;;;;; +C594;HANGUL SYLLABLE YAK;Lo;0;L;;;;;N;;;;; +C595;HANGUL SYLLABLE YAT;Lo;0;L;;;;;N;;;;; +C596;HANGUL SYLLABLE YAP;Lo;0;L;;;;;N;;;;; +C597;HANGUL SYLLABLE YAH;Lo;0;L;;;;;N;;;;; +C598;HANGUL SYLLABLE YAE;Lo;0;L;;;;;N;;;;; +C599;HANGUL SYLLABLE YAEG;Lo;0;L;;;;;N;;;;; +C59A;HANGUL SYLLABLE YAEGG;Lo;0;L;;;;;N;;;;; +C59B;HANGUL SYLLABLE YAEGS;Lo;0;L;;;;;N;;;;; +C59C;HANGUL SYLLABLE YAEN;Lo;0;L;;;;;N;;;;; +C59D;HANGUL SYLLABLE YAENI;Lo;0;L;;;;;N;;;;; +C59E;HANGUL SYLLABLE YAENH;Lo;0;L;;;;;N;;;;; +C59F;HANGUL SYLLABLE YAED;Lo;0;L;;;;;N;;;;; +C5A0;HANGUL SYLLABLE YAEL;Lo;0;L;;;;;N;;;;; +C5A1;HANGUL SYLLABLE YAELG;Lo;0;L;;;;;N;;;;; +C5A2;HANGUL SYLLABLE YAELM;Lo;0;L;;;;;N;;;;; +C5A3;HANGUL SYLLABLE YAELB;Lo;0;L;;;;;N;;;;; +C5A4;HANGUL SYLLABLE YAELS;Lo;0;L;;;;;N;;;;; +C5A5;HANGUL SYLLABLE YAELT;Lo;0;L;;;;;N;;;;; +C5A6;HANGUL SYLLABLE YAELP;Lo;0;L;;;;;N;;;;; +C5A7;HANGUL SYLLABLE YAELH;Lo;0;L;;;;;N;;;;; +C5A8;HANGUL SYLLABLE YAEM;Lo;0;L;;;;;N;;;;; +C5A9;HANGUL SYLLABLE YAEB;Lo;0;L;;;;;N;;;;; +C5AA;HANGUL SYLLABLE YAEBS;Lo;0;L;;;;;N;;;;; +C5AB;HANGUL SYLLABLE YAES;Lo;0;L;;;;;N;;;;; +C5AC;HANGUL SYLLABLE YAESS;Lo;0;L;;;;;N;;;;; +C5AD;HANGUL SYLLABLE YAENG;Lo;0;L;;;;;N;;;;; +C5AE;HANGUL SYLLABLE YAEJ;Lo;0;L;;;;;N;;;;; +C5AF;HANGUL SYLLABLE YAEC;Lo;0;L;;;;;N;;;;; +C5B0;HANGUL SYLLABLE YAEK;Lo;0;L;;;;;N;;;;; +C5B1;HANGUL SYLLABLE YAET;Lo;0;L;;;;;N;;;;; +C5B2;HANGUL SYLLABLE YAEP;Lo;0;L;;;;;N;;;;; +C5B3;HANGUL SYLLABLE YAEH;Lo;0;L;;;;;N;;;;; +C5B4;HANGUL SYLLABLE EO;Lo;0;L;;;;;N;;;;; +C5B5;HANGUL SYLLABLE EOG;Lo;0;L;;;;;N;;;;; +C5B6;HANGUL SYLLABLE EOGG;Lo;0;L;;;;;N;;;;; +C5B7;HANGUL SYLLABLE EOGS;Lo;0;L;;;;;N;;;;; +C5B8;HANGUL SYLLABLE EON;Lo;0;L;;;;;N;;;;; +C5B9;HANGUL SYLLABLE EONI;Lo;0;L;;;;;N;;;;; +C5BA;HANGUL SYLLABLE EONH;Lo;0;L;;;;;N;;;;; +C5BB;HANGUL SYLLABLE EOD;Lo;0;L;;;;;N;;;;; +C5BC;HANGUL SYLLABLE EOL;Lo;0;L;;;;;N;;;;; +C5BD;HANGUL SYLLABLE EOLG;Lo;0;L;;;;;N;;;;; +C5BE;HANGUL SYLLABLE EOLM;Lo;0;L;;;;;N;;;;; +C5BF;HANGUL SYLLABLE EOLB;Lo;0;L;;;;;N;;;;; +C5C0;HANGUL SYLLABLE EOLS;Lo;0;L;;;;;N;;;;; +C5C1;HANGUL SYLLABLE EOLT;Lo;0;L;;;;;N;;;;; +C5C2;HANGUL SYLLABLE EOLP;Lo;0;L;;;;;N;;;;; +C5C3;HANGUL SYLLABLE EOLH;Lo;0;L;;;;;N;;;;; +C5C4;HANGUL SYLLABLE EOM;Lo;0;L;;;;;N;;;;; +C5C5;HANGUL SYLLABLE EOB;Lo;0;L;;;;;N;;;;; +C5C6;HANGUL SYLLABLE EOBS;Lo;0;L;;;;;N;;;;; +C5C7;HANGUL SYLLABLE EOS;Lo;0;L;;;;;N;;;;; +C5C8;HANGUL SYLLABLE EOSS;Lo;0;L;;;;;N;;;;; +C5C9;HANGUL SYLLABLE EONG;Lo;0;L;;;;;N;;;;; +C5CA;HANGUL SYLLABLE EOJ;Lo;0;L;;;;;N;;;;; +C5CB;HANGUL SYLLABLE EOC;Lo;0;L;;;;;N;;;;; +C5CC;HANGUL SYLLABLE EOK;Lo;0;L;;;;;N;;;;; +C5CD;HANGUL SYLLABLE EOT;Lo;0;L;;;;;N;;;;; +C5CE;HANGUL SYLLABLE EOP;Lo;0;L;;;;;N;;;;; +C5CF;HANGUL SYLLABLE EOH;Lo;0;L;;;;;N;;;;; +C5D0;HANGUL SYLLABLE E;Lo;0;L;;;;;N;;;;; +C5D1;HANGUL SYLLABLE EG;Lo;0;L;;;;;N;;;;; +C5D2;HANGUL SYLLABLE EGG;Lo;0;L;;;;;N;;;;; +C5D3;HANGUL SYLLABLE EGS;Lo;0;L;;;;;N;;;;; +C5D4;HANGUL SYLLABLE EN;Lo;0;L;;;;;N;;;;; +C5D5;HANGUL SYLLABLE ENI;Lo;0;L;;;;;N;;;;; +C5D6;HANGUL SYLLABLE ENH;Lo;0;L;;;;;N;;;;; +C5D7;HANGUL SYLLABLE ED;Lo;0;L;;;;;N;;;;; +C5D8;HANGUL SYLLABLE EL;Lo;0;L;;;;;N;;;;; +C5D9;HANGUL SYLLABLE ELG;Lo;0;L;;;;;N;;;;; +C5DA;HANGUL SYLLABLE ELM;Lo;0;L;;;;;N;;;;; +C5DB;HANGUL SYLLABLE ELB;Lo;0;L;;;;;N;;;;; +C5DC;HANGUL SYLLABLE ELS;Lo;0;L;;;;;N;;;;; +C5DD;HANGUL SYLLABLE ELT;Lo;0;L;;;;;N;;;;; +C5DE;HANGUL SYLLABLE ELP;Lo;0;L;;;;;N;;;;; +C5DF;HANGUL SYLLABLE ELH;Lo;0;L;;;;;N;;;;; +C5E0;HANGUL SYLLABLE EM;Lo;0;L;;;;;N;;;;; +C5E1;HANGUL SYLLABLE EB;Lo;0;L;;;;;N;;;;; +C5E2;HANGUL SYLLABLE EBS;Lo;0;L;;;;;N;;;;; +C5E3;HANGUL SYLLABLE ES;Lo;0;L;;;;;N;;;;; +C5E4;HANGUL SYLLABLE ESS;Lo;0;L;;;;;N;;;;; +C5E5;HANGUL SYLLABLE ENG;Lo;0;L;;;;;N;;;;; +C5E6;HANGUL SYLLABLE EJ;Lo;0;L;;;;;N;;;;; +C5E7;HANGUL SYLLABLE EC;Lo;0;L;;;;;N;;;;; +C5E8;HANGUL SYLLABLE EK;Lo;0;L;;;;;N;;;;; +C5E9;HANGUL SYLLABLE ET;Lo;0;L;;;;;N;;;;; +C5EA;HANGUL SYLLABLE EP;Lo;0;L;;;;;N;;;;; +C5EB;HANGUL SYLLABLE EH;Lo;0;L;;;;;N;;;;; +C5EC;HANGUL SYLLABLE YEO;Lo;0;L;;;;;N;;;;; +C5ED;HANGUL SYLLABLE YEOG;Lo;0;L;;;;;N;;;;; +C5EE;HANGUL SYLLABLE YEOGG;Lo;0;L;;;;;N;;;;; +C5EF;HANGUL SYLLABLE YEOGS;Lo;0;L;;;;;N;;;;; +C5F0;HANGUL SYLLABLE YEON;Lo;0;L;;;;;N;;;;; +C5F1;HANGUL SYLLABLE YEONI;Lo;0;L;;;;;N;;;;; +C5F2;HANGUL SYLLABLE YEONH;Lo;0;L;;;;;N;;;;; +C5F3;HANGUL SYLLABLE YEOD;Lo;0;L;;;;;N;;;;; +C5F4;HANGUL SYLLABLE YEOL;Lo;0;L;;;;;N;;;;; +C5F5;HANGUL SYLLABLE YEOLG;Lo;0;L;;;;;N;;;;; +C5F6;HANGUL SYLLABLE YEOLM;Lo;0;L;;;;;N;;;;; +C5F7;HANGUL SYLLABLE YEOLB;Lo;0;L;;;;;N;;;;; +C5F8;HANGUL SYLLABLE YEOLS;Lo;0;L;;;;;N;;;;; +C5F9;HANGUL SYLLABLE YEOLT;Lo;0;L;;;;;N;;;;; +C5FA;HANGUL SYLLABLE YEOLP;Lo;0;L;;;;;N;;;;; +C5FB;HANGUL SYLLABLE YEOLH;Lo;0;L;;;;;N;;;;; +C5FC;HANGUL SYLLABLE YEOM;Lo;0;L;;;;;N;;;;; +C5FD;HANGUL SYLLABLE YEOB;Lo;0;L;;;;;N;;;;; +C5FE;HANGUL SYLLABLE YEOBS;Lo;0;L;;;;;N;;;;; +C5FF;HANGUL SYLLABLE YEOS;Lo;0;L;;;;;N;;;;; +C600;HANGUL SYLLABLE YEOSS;Lo;0;L;;;;;N;;;;; +C601;HANGUL SYLLABLE YEONG;Lo;0;L;;;;;N;;;;; +C602;HANGUL SYLLABLE YEOJ;Lo;0;L;;;;;N;;;;; +C603;HANGUL SYLLABLE YEOC;Lo;0;L;;;;;N;;;;; +C604;HANGUL SYLLABLE YEOK;Lo;0;L;;;;;N;;;;; +C605;HANGUL SYLLABLE YEOT;Lo;0;L;;;;;N;;;;; +C606;HANGUL SYLLABLE YEOP;Lo;0;L;;;;;N;;;;; +C607;HANGUL SYLLABLE YEOH;Lo;0;L;;;;;N;;;;; +C608;HANGUL SYLLABLE YE;Lo;0;L;;;;;N;;;;; +C609;HANGUL SYLLABLE YEG;Lo;0;L;;;;;N;;;;; +C60A;HANGUL SYLLABLE YEGG;Lo;0;L;;;;;N;;;;; +C60B;HANGUL SYLLABLE YEGS;Lo;0;L;;;;;N;;;;; +C60C;HANGUL SYLLABLE YEN;Lo;0;L;;;;;N;;;;; +C60D;HANGUL SYLLABLE YENI;Lo;0;L;;;;;N;;;;; +C60E;HANGUL SYLLABLE YENH;Lo;0;L;;;;;N;;;;; +C60F;HANGUL SYLLABLE YED;Lo;0;L;;;;;N;;;;; +C610;HANGUL SYLLABLE YEL;Lo;0;L;;;;;N;;;;; +C611;HANGUL SYLLABLE YELG;Lo;0;L;;;;;N;;;;; +C612;HANGUL SYLLABLE YELM;Lo;0;L;;;;;N;;;;; +C613;HANGUL SYLLABLE YELB;Lo;0;L;;;;;N;;;;; +C614;HANGUL SYLLABLE YELS;Lo;0;L;;;;;N;;;;; +C615;HANGUL SYLLABLE YELT;Lo;0;L;;;;;N;;;;; +C616;HANGUL SYLLABLE YELP;Lo;0;L;;;;;N;;;;; +C617;HANGUL SYLLABLE YELH;Lo;0;L;;;;;N;;;;; +C618;HANGUL SYLLABLE YEM;Lo;0;L;;;;;N;;;;; +C619;HANGUL SYLLABLE YEB;Lo;0;L;;;;;N;;;;; +C61A;HANGUL SYLLABLE YEBS;Lo;0;L;;;;;N;;;;; +C61B;HANGUL SYLLABLE YES;Lo;0;L;;;;;N;;;;; +C61C;HANGUL SYLLABLE YESS;Lo;0;L;;;;;N;;;;; +C61D;HANGUL SYLLABLE YENG;Lo;0;L;;;;;N;;;;; +C61E;HANGUL SYLLABLE YEJ;Lo;0;L;;;;;N;;;;; +C61F;HANGUL SYLLABLE YEC;Lo;0;L;;;;;N;;;;; +C620;HANGUL SYLLABLE YEK;Lo;0;L;;;;;N;;;;; +C621;HANGUL SYLLABLE YET;Lo;0;L;;;;;N;;;;; +C622;HANGUL SYLLABLE YEP;Lo;0;L;;;;;N;;;;; +C623;HANGUL SYLLABLE YEH;Lo;0;L;;;;;N;;;;; +C624;HANGUL SYLLABLE O;Lo;0;L;;;;;N;;;;; +C625;HANGUL SYLLABLE OG;Lo;0;L;;;;;N;;;;; +C626;HANGUL SYLLABLE OGG;Lo;0;L;;;;;N;;;;; +C627;HANGUL SYLLABLE OGS;Lo;0;L;;;;;N;;;;; +C628;HANGUL SYLLABLE ON;Lo;0;L;;;;;N;;;;; +C629;HANGUL SYLLABLE ONI;Lo;0;L;;;;;N;;;;; +C62A;HANGUL SYLLABLE ONH;Lo;0;L;;;;;N;;;;; +C62B;HANGUL SYLLABLE OD;Lo;0;L;;;;;N;;;;; +C62C;HANGUL SYLLABLE OL;Lo;0;L;;;;;N;;;;; +C62D;HANGUL SYLLABLE OLG;Lo;0;L;;;;;N;;;;; +C62E;HANGUL SYLLABLE OLM;Lo;0;L;;;;;N;;;;; +C62F;HANGUL SYLLABLE OLB;Lo;0;L;;;;;N;;;;; +C630;HANGUL SYLLABLE OLS;Lo;0;L;;;;;N;;;;; +C631;HANGUL SYLLABLE OLT;Lo;0;L;;;;;N;;;;; +C632;HANGUL SYLLABLE OLP;Lo;0;L;;;;;N;;;;; +C633;HANGUL SYLLABLE OLH;Lo;0;L;;;;;N;;;;; +C634;HANGUL SYLLABLE OM;Lo;0;L;;;;;N;;;;; +C635;HANGUL SYLLABLE OB;Lo;0;L;;;;;N;;;;; +C636;HANGUL SYLLABLE OBS;Lo;0;L;;;;;N;;;;; +C637;HANGUL SYLLABLE OS;Lo;0;L;;;;;N;;;;; +C638;HANGUL SYLLABLE OSS;Lo;0;L;;;;;N;;;;; +C639;HANGUL SYLLABLE ONG;Lo;0;L;;;;;N;;;;; +C63A;HANGUL SYLLABLE OJ;Lo;0;L;;;;;N;;;;; +C63B;HANGUL SYLLABLE OC;Lo;0;L;;;;;N;;;;; +C63C;HANGUL SYLLABLE OK;Lo;0;L;;;;;N;;;;; +C63D;HANGUL SYLLABLE OT;Lo;0;L;;;;;N;;;;; +C63E;HANGUL SYLLABLE OP;Lo;0;L;;;;;N;;;;; +C63F;HANGUL SYLLABLE OH;Lo;0;L;;;;;N;;;;; +C640;HANGUL SYLLABLE WA;Lo;0;L;;;;;N;;;;; +C641;HANGUL SYLLABLE WAG;Lo;0;L;;;;;N;;;;; +C642;HANGUL SYLLABLE WAGG;Lo;0;L;;;;;N;;;;; +C643;HANGUL SYLLABLE WAGS;Lo;0;L;;;;;N;;;;; +C644;HANGUL SYLLABLE WAN;Lo;0;L;;;;;N;;;;; +C645;HANGUL SYLLABLE WANI;Lo;0;L;;;;;N;;;;; +C646;HANGUL SYLLABLE WANH;Lo;0;L;;;;;N;;;;; +C647;HANGUL SYLLABLE WAD;Lo;0;L;;;;;N;;;;; +C648;HANGUL SYLLABLE WAL;Lo;0;L;;;;;N;;;;; +C649;HANGUL SYLLABLE WALG;Lo;0;L;;;;;N;;;;; +C64A;HANGUL SYLLABLE WALM;Lo;0;L;;;;;N;;;;; +C64B;HANGUL SYLLABLE WALB;Lo;0;L;;;;;N;;;;; +C64C;HANGUL SYLLABLE WALS;Lo;0;L;;;;;N;;;;; +C64D;HANGUL SYLLABLE WALT;Lo;0;L;;;;;N;;;;; +C64E;HANGUL SYLLABLE WALP;Lo;0;L;;;;;N;;;;; +C64F;HANGUL SYLLABLE WALH;Lo;0;L;;;;;N;;;;; +C650;HANGUL SYLLABLE WAM;Lo;0;L;;;;;N;;;;; +C651;HANGUL SYLLABLE WAB;Lo;0;L;;;;;N;;;;; +C652;HANGUL SYLLABLE WABS;Lo;0;L;;;;;N;;;;; +C653;HANGUL SYLLABLE WAS;Lo;0;L;;;;;N;;;;; +C654;HANGUL SYLLABLE WASS;Lo;0;L;;;;;N;;;;; +C655;HANGUL SYLLABLE WANG;Lo;0;L;;;;;N;;;;; +C656;HANGUL SYLLABLE WAJ;Lo;0;L;;;;;N;;;;; +C657;HANGUL SYLLABLE WAC;Lo;0;L;;;;;N;;;;; +C658;HANGUL SYLLABLE WAK;Lo;0;L;;;;;N;;;;; +C659;HANGUL SYLLABLE WAT;Lo;0;L;;;;;N;;;;; +C65A;HANGUL SYLLABLE WAP;Lo;0;L;;;;;N;;;;; +C65B;HANGUL SYLLABLE WAH;Lo;0;L;;;;;N;;;;; +C65C;HANGUL SYLLABLE WAE;Lo;0;L;;;;;N;;;;; +C65D;HANGUL SYLLABLE WAEG;Lo;0;L;;;;;N;;;;; +C65E;HANGUL SYLLABLE WAEGG;Lo;0;L;;;;;N;;;;; +C65F;HANGUL SYLLABLE WAEGS;Lo;0;L;;;;;N;;;;; +C660;HANGUL SYLLABLE WAEN;Lo;0;L;;;;;N;;;;; +C661;HANGUL SYLLABLE WAENI;Lo;0;L;;;;;N;;;;; +C662;HANGUL SYLLABLE WAENH;Lo;0;L;;;;;N;;;;; +C663;HANGUL SYLLABLE WAED;Lo;0;L;;;;;N;;;;; +C664;HANGUL SYLLABLE WAEL;Lo;0;L;;;;;N;;;;; +C665;HANGUL SYLLABLE WAELG;Lo;0;L;;;;;N;;;;; +C666;HANGUL SYLLABLE WAELM;Lo;0;L;;;;;N;;;;; +C667;HANGUL SYLLABLE WAELB;Lo;0;L;;;;;N;;;;; +C668;HANGUL SYLLABLE WAELS;Lo;0;L;;;;;N;;;;; +C669;HANGUL SYLLABLE WAELT;Lo;0;L;;;;;N;;;;; +C66A;HANGUL SYLLABLE WAELP;Lo;0;L;;;;;N;;;;; +C66B;HANGUL SYLLABLE WAELH;Lo;0;L;;;;;N;;;;; +C66C;HANGUL SYLLABLE WAEM;Lo;0;L;;;;;N;;;;; +C66D;HANGUL SYLLABLE WAEB;Lo;0;L;;;;;N;;;;; +C66E;HANGUL SYLLABLE WAEBS;Lo;0;L;;;;;N;;;;; +C66F;HANGUL SYLLABLE WAES;Lo;0;L;;;;;N;;;;; +C670;HANGUL SYLLABLE WAESS;Lo;0;L;;;;;N;;;;; +C671;HANGUL SYLLABLE WAENG;Lo;0;L;;;;;N;;;;; +C672;HANGUL SYLLABLE WAEJ;Lo;0;L;;;;;N;;;;; +C673;HANGUL SYLLABLE WAEC;Lo;0;L;;;;;N;;;;; +C674;HANGUL SYLLABLE WAEK;Lo;0;L;;;;;N;;;;; +C675;HANGUL SYLLABLE WAET;Lo;0;L;;;;;N;;;;; +C676;HANGUL SYLLABLE WAEP;Lo;0;L;;;;;N;;;;; +C677;HANGUL SYLLABLE WAEH;Lo;0;L;;;;;N;;;;; +C678;HANGUL SYLLABLE OE;Lo;0;L;;;;;N;;;;; +C679;HANGUL SYLLABLE OEG;Lo;0;L;;;;;N;;;;; +C67A;HANGUL SYLLABLE OEGG;Lo;0;L;;;;;N;;;;; +C67B;HANGUL SYLLABLE OEGS;Lo;0;L;;;;;N;;;;; +C67C;HANGUL SYLLABLE OEN;Lo;0;L;;;;;N;;;;; +C67D;HANGUL SYLLABLE OENI;Lo;0;L;;;;;N;;;;; +C67E;HANGUL SYLLABLE OENH;Lo;0;L;;;;;N;;;;; +C67F;HANGUL SYLLABLE OED;Lo;0;L;;;;;N;;;;; +C680;HANGUL SYLLABLE OEL;Lo;0;L;;;;;N;;;;; +C681;HANGUL SYLLABLE OELG;Lo;0;L;;;;;N;;;;; +C682;HANGUL SYLLABLE OELM;Lo;0;L;;;;;N;;;;; +C683;HANGUL SYLLABLE OELB;Lo;0;L;;;;;N;;;;; +C684;HANGUL SYLLABLE OELS;Lo;0;L;;;;;N;;;;; +C685;HANGUL SYLLABLE OELT;Lo;0;L;;;;;N;;;;; +C686;HANGUL SYLLABLE OELP;Lo;0;L;;;;;N;;;;; +C687;HANGUL SYLLABLE OELH;Lo;0;L;;;;;N;;;;; +C688;HANGUL SYLLABLE OEM;Lo;0;L;;;;;N;;;;; +C689;HANGUL SYLLABLE OEB;Lo;0;L;;;;;N;;;;; +C68A;HANGUL SYLLABLE OEBS;Lo;0;L;;;;;N;;;;; +C68B;HANGUL SYLLABLE OES;Lo;0;L;;;;;N;;;;; +C68C;HANGUL SYLLABLE OESS;Lo;0;L;;;;;N;;;;; +C68D;HANGUL SYLLABLE OENG;Lo;0;L;;;;;N;;;;; +C68E;HANGUL SYLLABLE OEJ;Lo;0;L;;;;;N;;;;; +C68F;HANGUL SYLLABLE OEC;Lo;0;L;;;;;N;;;;; +C690;HANGUL SYLLABLE OEK;Lo;0;L;;;;;N;;;;; +C691;HANGUL SYLLABLE OET;Lo;0;L;;;;;N;;;;; +C692;HANGUL SYLLABLE OEP;Lo;0;L;;;;;N;;;;; +C693;HANGUL SYLLABLE OEH;Lo;0;L;;;;;N;;;;; +C694;HANGUL SYLLABLE YO;Lo;0;L;;;;;N;;;;; +C695;HANGUL SYLLABLE YOG;Lo;0;L;;;;;N;;;;; +C696;HANGUL SYLLABLE YOGG;Lo;0;L;;;;;N;;;;; +C697;HANGUL SYLLABLE YOGS;Lo;0;L;;;;;N;;;;; +C698;HANGUL SYLLABLE YON;Lo;0;L;;;;;N;;;;; +C699;HANGUL SYLLABLE YONI;Lo;0;L;;;;;N;;;;; +C69A;HANGUL SYLLABLE YONH;Lo;0;L;;;;;N;;;;; +C69B;HANGUL SYLLABLE YOD;Lo;0;L;;;;;N;;;;; +C69C;HANGUL SYLLABLE YOL;Lo;0;L;;;;;N;;;;; +C69D;HANGUL SYLLABLE YOLG;Lo;0;L;;;;;N;;;;; +C69E;HANGUL SYLLABLE YOLM;Lo;0;L;;;;;N;;;;; +C69F;HANGUL SYLLABLE YOLB;Lo;0;L;;;;;N;;;;; +C6A0;HANGUL SYLLABLE YOLS;Lo;0;L;;;;;N;;;;; +C6A1;HANGUL SYLLABLE YOLT;Lo;0;L;;;;;N;;;;; +C6A2;HANGUL SYLLABLE YOLP;Lo;0;L;;;;;N;;;;; +C6A3;HANGUL SYLLABLE YOLH;Lo;0;L;;;;;N;;;;; +C6A4;HANGUL SYLLABLE YOM;Lo;0;L;;;;;N;;;;; +C6A5;HANGUL SYLLABLE YOB;Lo;0;L;;;;;N;;;;; +C6A6;HANGUL SYLLABLE YOBS;Lo;0;L;;;;;N;;;;; +C6A7;HANGUL SYLLABLE YOS;Lo;0;L;;;;;N;;;;; +C6A8;HANGUL SYLLABLE YOSS;Lo;0;L;;;;;N;;;;; +C6A9;HANGUL SYLLABLE YONG;Lo;0;L;;;;;N;;;;; +C6AA;HANGUL SYLLABLE YOJ;Lo;0;L;;;;;N;;;;; +C6AB;HANGUL SYLLABLE YOC;Lo;0;L;;;;;N;;;;; +C6AC;HANGUL SYLLABLE YOK;Lo;0;L;;;;;N;;;;; +C6AD;HANGUL SYLLABLE YOT;Lo;0;L;;;;;N;;;;; +C6AE;HANGUL SYLLABLE YOP;Lo;0;L;;;;;N;;;;; +C6AF;HANGUL SYLLABLE YOH;Lo;0;L;;;;;N;;;;; +C6B0;HANGUL SYLLABLE U;Lo;0;L;;;;;N;;;;; +C6B1;HANGUL SYLLABLE UG;Lo;0;L;;;;;N;;;;; +C6B2;HANGUL SYLLABLE UGG;Lo;0;L;;;;;N;;;;; +C6B3;HANGUL SYLLABLE UGS;Lo;0;L;;;;;N;;;;; +C6B4;HANGUL SYLLABLE UN;Lo;0;L;;;;;N;;;;; +C6B5;HANGUL SYLLABLE UNI;Lo;0;L;;;;;N;;;;; +C6B6;HANGUL SYLLABLE UNH;Lo;0;L;;;;;N;;;;; +C6B7;HANGUL SYLLABLE UD;Lo;0;L;;;;;N;;;;; +C6B8;HANGUL SYLLABLE UL;Lo;0;L;;;;;N;;;;; +C6B9;HANGUL SYLLABLE ULG;Lo;0;L;;;;;N;;;;; +C6BA;HANGUL SYLLABLE ULM;Lo;0;L;;;;;N;;;;; +C6BB;HANGUL SYLLABLE ULB;Lo;0;L;;;;;N;;;;; +C6BC;HANGUL SYLLABLE ULS;Lo;0;L;;;;;N;;;;; +C6BD;HANGUL SYLLABLE ULT;Lo;0;L;;;;;N;;;;; +C6BE;HANGUL SYLLABLE ULP;Lo;0;L;;;;;N;;;;; +C6BF;HANGUL SYLLABLE ULH;Lo;0;L;;;;;N;;;;; +C6C0;HANGUL SYLLABLE UM;Lo;0;L;;;;;N;;;;; +C6C1;HANGUL SYLLABLE UB;Lo;0;L;;;;;N;;;;; +C6C2;HANGUL SYLLABLE UBS;Lo;0;L;;;;;N;;;;; +C6C3;HANGUL SYLLABLE US;Lo;0;L;;;;;N;;;;; +C6C4;HANGUL SYLLABLE USS;Lo;0;L;;;;;N;;;;; +C6C5;HANGUL SYLLABLE UNG;Lo;0;L;;;;;N;;;;; +C6C6;HANGUL SYLLABLE UJ;Lo;0;L;;;;;N;;;;; +C6C7;HANGUL SYLLABLE UC;Lo;0;L;;;;;N;;;;; +C6C8;HANGUL SYLLABLE UK;Lo;0;L;;;;;N;;;;; +C6C9;HANGUL SYLLABLE UT;Lo;0;L;;;;;N;;;;; +C6CA;HANGUL SYLLABLE UP;Lo;0;L;;;;;N;;;;; +C6CB;HANGUL SYLLABLE UH;Lo;0;L;;;;;N;;;;; +C6CC;HANGUL SYLLABLE WEO;Lo;0;L;;;;;N;;;;; +C6CD;HANGUL SYLLABLE WEOG;Lo;0;L;;;;;N;;;;; +C6CE;HANGUL SYLLABLE WEOGG;Lo;0;L;;;;;N;;;;; +C6CF;HANGUL SYLLABLE WEOGS;Lo;0;L;;;;;N;;;;; +C6D0;HANGUL SYLLABLE WEON;Lo;0;L;;;;;N;;;;; +C6D1;HANGUL SYLLABLE WEONI;Lo;0;L;;;;;N;;;;; +C6D2;HANGUL SYLLABLE WEONH;Lo;0;L;;;;;N;;;;; +C6D3;HANGUL SYLLABLE WEOD;Lo;0;L;;;;;N;;;;; +C6D4;HANGUL SYLLABLE WEOL;Lo;0;L;;;;;N;;;;; +C6D5;HANGUL SYLLABLE WEOLG;Lo;0;L;;;;;N;;;;; +C6D6;HANGUL SYLLABLE WEOLM;Lo;0;L;;;;;N;;;;; +C6D7;HANGUL SYLLABLE WEOLB;Lo;0;L;;;;;N;;;;; +C6D8;HANGUL SYLLABLE WEOLS;Lo;0;L;;;;;N;;;;; +C6D9;HANGUL SYLLABLE WEOLT;Lo;0;L;;;;;N;;;;; +C6DA;HANGUL SYLLABLE WEOLP;Lo;0;L;;;;;N;;;;; +C6DB;HANGUL SYLLABLE WEOLH;Lo;0;L;;;;;N;;;;; +C6DC;HANGUL SYLLABLE WEOM;Lo;0;L;;;;;N;;;;; +C6DD;HANGUL SYLLABLE WEOB;Lo;0;L;;;;;N;;;;; +C6DE;HANGUL SYLLABLE WEOBS;Lo;0;L;;;;;N;;;;; +C6DF;HANGUL SYLLABLE WEOS;Lo;0;L;;;;;N;;;;; +C6E0;HANGUL SYLLABLE WEOSS;Lo;0;L;;;;;N;;;;; +C6E1;HANGUL SYLLABLE WEONG;Lo;0;L;;;;;N;;;;; +C6E2;HANGUL SYLLABLE WEOJ;Lo;0;L;;;;;N;;;;; +C6E3;HANGUL SYLLABLE WEOC;Lo;0;L;;;;;N;;;;; +C6E4;HANGUL SYLLABLE WEOK;Lo;0;L;;;;;N;;;;; +C6E5;HANGUL SYLLABLE WEOT;Lo;0;L;;;;;N;;;;; +C6E6;HANGUL SYLLABLE WEOP;Lo;0;L;;;;;N;;;;; +C6E7;HANGUL SYLLABLE WEOH;Lo;0;L;;;;;N;;;;; +C6E8;HANGUL SYLLABLE WE;Lo;0;L;;;;;N;;;;; +C6E9;HANGUL SYLLABLE WEG;Lo;0;L;;;;;N;;;;; +C6EA;HANGUL SYLLABLE WEGG;Lo;0;L;;;;;N;;;;; +C6EB;HANGUL SYLLABLE WEGS;Lo;0;L;;;;;N;;;;; +C6EC;HANGUL SYLLABLE WEN;Lo;0;L;;;;;N;;;;; +C6ED;HANGUL SYLLABLE WENI;Lo;0;L;;;;;N;;;;; +C6EE;HANGUL SYLLABLE WENH;Lo;0;L;;;;;N;;;;; +C6EF;HANGUL SYLLABLE WED;Lo;0;L;;;;;N;;;;; +C6F0;HANGUL SYLLABLE WEL;Lo;0;L;;;;;N;;;;; +C6F1;HANGUL SYLLABLE WELG;Lo;0;L;;;;;N;;;;; +C6F2;HANGUL SYLLABLE WELM;Lo;0;L;;;;;N;;;;; +C6F3;HANGUL SYLLABLE WELB;Lo;0;L;;;;;N;;;;; +C6F4;HANGUL SYLLABLE WELS;Lo;0;L;;;;;N;;;;; +C6F5;HANGUL SYLLABLE WELT;Lo;0;L;;;;;N;;;;; +C6F6;HANGUL SYLLABLE WELP;Lo;0;L;;;;;N;;;;; +C6F7;HANGUL SYLLABLE WELH;Lo;0;L;;;;;N;;;;; +C6F8;HANGUL SYLLABLE WEM;Lo;0;L;;;;;N;;;;; +C6F9;HANGUL SYLLABLE WEB;Lo;0;L;;;;;N;;;;; +C6FA;HANGUL SYLLABLE WEBS;Lo;0;L;;;;;N;;;;; +C6FB;HANGUL SYLLABLE WES;Lo;0;L;;;;;N;;;;; +C6FC;HANGUL SYLLABLE WESS;Lo;0;L;;;;;N;;;;; +C6FD;HANGUL SYLLABLE WENG;Lo;0;L;;;;;N;;;;; +C6FE;HANGUL SYLLABLE WEJ;Lo;0;L;;;;;N;;;;; +C6FF;HANGUL SYLLABLE WEC;Lo;0;L;;;;;N;;;;; +C700;HANGUL SYLLABLE WEK;Lo;0;L;;;;;N;;;;; +C701;HANGUL SYLLABLE WET;Lo;0;L;;;;;N;;;;; +C702;HANGUL SYLLABLE WEP;Lo;0;L;;;;;N;;;;; +C703;HANGUL SYLLABLE WEH;Lo;0;L;;;;;N;;;;; +C704;HANGUL SYLLABLE WI;Lo;0;L;;;;;N;;;;; +C705;HANGUL SYLLABLE WIG;Lo;0;L;;;;;N;;;;; +C706;HANGUL SYLLABLE WIGG;Lo;0;L;;;;;N;;;;; +C707;HANGUL SYLLABLE WIGS;Lo;0;L;;;;;N;;;;; +C708;HANGUL SYLLABLE WIN;Lo;0;L;;;;;N;;;;; +C709;HANGUL SYLLABLE WINI;Lo;0;L;;;;;N;;;;; +C70A;HANGUL SYLLABLE WINH;Lo;0;L;;;;;N;;;;; +C70B;HANGUL SYLLABLE WID;Lo;0;L;;;;;N;;;;; +C70C;HANGUL SYLLABLE WIL;Lo;0;L;;;;;N;;;;; +C70D;HANGUL SYLLABLE WILG;Lo;0;L;;;;;N;;;;; +C70E;HANGUL SYLLABLE WILM;Lo;0;L;;;;;N;;;;; +C70F;HANGUL SYLLABLE WILB;Lo;0;L;;;;;N;;;;; +C710;HANGUL SYLLABLE WILS;Lo;0;L;;;;;N;;;;; +C711;HANGUL SYLLABLE WILT;Lo;0;L;;;;;N;;;;; +C712;HANGUL SYLLABLE WILP;Lo;0;L;;;;;N;;;;; +C713;HANGUL SYLLABLE WILH;Lo;0;L;;;;;N;;;;; +C714;HANGUL SYLLABLE WIM;Lo;0;L;;;;;N;;;;; +C715;HANGUL SYLLABLE WIB;Lo;0;L;;;;;N;;;;; +C716;HANGUL SYLLABLE WIBS;Lo;0;L;;;;;N;;;;; +C717;HANGUL SYLLABLE WIS;Lo;0;L;;;;;N;;;;; +C718;HANGUL SYLLABLE WISS;Lo;0;L;;;;;N;;;;; +C719;HANGUL SYLLABLE WING;Lo;0;L;;;;;N;;;;; +C71A;HANGUL SYLLABLE WIJ;Lo;0;L;;;;;N;;;;; +C71B;HANGUL SYLLABLE WIC;Lo;0;L;;;;;N;;;;; +C71C;HANGUL SYLLABLE WIK;Lo;0;L;;;;;N;;;;; +C71D;HANGUL SYLLABLE WIT;Lo;0;L;;;;;N;;;;; +C71E;HANGUL SYLLABLE WIP;Lo;0;L;;;;;N;;;;; +C71F;HANGUL SYLLABLE WIH;Lo;0;L;;;;;N;;;;; +C720;HANGUL SYLLABLE YU;Lo;0;L;;;;;N;;;;; +C721;HANGUL SYLLABLE YUG;Lo;0;L;;;;;N;;;;; +C722;HANGUL SYLLABLE YUGG;Lo;0;L;;;;;N;;;;; +C723;HANGUL SYLLABLE YUGS;Lo;0;L;;;;;N;;;;; +C724;HANGUL SYLLABLE YUN;Lo;0;L;;;;;N;;;;; +C725;HANGUL SYLLABLE YUNI;Lo;0;L;;;;;N;;;;; +C726;HANGUL SYLLABLE YUNH;Lo;0;L;;;;;N;;;;; +C727;HANGUL SYLLABLE YUD;Lo;0;L;;;;;N;;;;; +C728;HANGUL SYLLABLE YUL;Lo;0;L;;;;;N;;;;; +C729;HANGUL SYLLABLE YULG;Lo;0;L;;;;;N;;;;; +C72A;HANGUL SYLLABLE YULM;Lo;0;L;;;;;N;;;;; +C72B;HANGUL SYLLABLE YULB;Lo;0;L;;;;;N;;;;; +C72C;HANGUL SYLLABLE YULS;Lo;0;L;;;;;N;;;;; +C72D;HANGUL SYLLABLE YULT;Lo;0;L;;;;;N;;;;; +C72E;HANGUL SYLLABLE YULP;Lo;0;L;;;;;N;;;;; +C72F;HANGUL SYLLABLE YULH;Lo;0;L;;;;;N;;;;; +C730;HANGUL SYLLABLE YUM;Lo;0;L;;;;;N;;;;; +C731;HANGUL SYLLABLE YUB;Lo;0;L;;;;;N;;;;; +C732;HANGUL SYLLABLE YUBS;Lo;0;L;;;;;N;;;;; +C733;HANGUL SYLLABLE YUS;Lo;0;L;;;;;N;;;;; +C734;HANGUL SYLLABLE YUSS;Lo;0;L;;;;;N;;;;; +C735;HANGUL SYLLABLE YUNG;Lo;0;L;;;;;N;;;;; +C736;HANGUL SYLLABLE YUJ;Lo;0;L;;;;;N;;;;; +C737;HANGUL SYLLABLE YUC;Lo;0;L;;;;;N;;;;; +C738;HANGUL SYLLABLE YUK;Lo;0;L;;;;;N;;;;; +C739;HANGUL SYLLABLE YUT;Lo;0;L;;;;;N;;;;; +C73A;HANGUL SYLLABLE YUP;Lo;0;L;;;;;N;;;;; +C73B;HANGUL SYLLABLE YUH;Lo;0;L;;;;;N;;;;; +C73C;HANGUL SYLLABLE EU;Lo;0;L;;;;;N;;;;; +C73D;HANGUL SYLLABLE EUG;Lo;0;L;;;;;N;;;;; +C73E;HANGUL SYLLABLE EUGG;Lo;0;L;;;;;N;;;;; +C73F;HANGUL SYLLABLE EUGS;Lo;0;L;;;;;N;;;;; +C740;HANGUL SYLLABLE EUN;Lo;0;L;;;;;N;;;;; +C741;HANGUL SYLLABLE EUNI;Lo;0;L;;;;;N;;;;; +C742;HANGUL SYLLABLE EUNH;Lo;0;L;;;;;N;;;;; +C743;HANGUL SYLLABLE EUD;Lo;0;L;;;;;N;;;;; +C744;HANGUL SYLLABLE EUL;Lo;0;L;;;;;N;;;;; +C745;HANGUL SYLLABLE EULG;Lo;0;L;;;;;N;;;;; +C746;HANGUL SYLLABLE EULM;Lo;0;L;;;;;N;;;;; +C747;HANGUL SYLLABLE EULB;Lo;0;L;;;;;N;;;;; +C748;HANGUL SYLLABLE EULS;Lo;0;L;;;;;N;;;;; +C749;HANGUL SYLLABLE EULT;Lo;0;L;;;;;N;;;;; +C74A;HANGUL SYLLABLE EULP;Lo;0;L;;;;;N;;;;; +C74B;HANGUL SYLLABLE EULH;Lo;0;L;;;;;N;;;;; +C74C;HANGUL SYLLABLE EUM;Lo;0;L;;;;;N;;;;; +C74D;HANGUL SYLLABLE EUB;Lo;0;L;;;;;N;;;;; +C74E;HANGUL SYLLABLE EUBS;Lo;0;L;;;;;N;;;;; +C74F;HANGUL SYLLABLE EUS;Lo;0;L;;;;;N;;;;; +C750;HANGUL SYLLABLE EUSS;Lo;0;L;;;;;N;;;;; +C751;HANGUL SYLLABLE EUNG;Lo;0;L;;;;;N;;;;; +C752;HANGUL SYLLABLE EUJ;Lo;0;L;;;;;N;;;;; +C753;HANGUL SYLLABLE EUC;Lo;0;L;;;;;N;;;;; +C754;HANGUL SYLLABLE EUK;Lo;0;L;;;;;N;;;;; +C755;HANGUL SYLLABLE EUT;Lo;0;L;;;;;N;;;;; +C756;HANGUL SYLLABLE EUP;Lo;0;L;;;;;N;;;;; +C757;HANGUL SYLLABLE EUH;Lo;0;L;;;;;N;;;;; +C758;HANGUL SYLLABLE YI;Lo;0;L;;;;;N;;;;; +C759;HANGUL SYLLABLE YIG;Lo;0;L;;;;;N;;;;; +C75A;HANGUL SYLLABLE YIGG;Lo;0;L;;;;;N;;;;; +C75B;HANGUL SYLLABLE YIGS;Lo;0;L;;;;;N;;;;; +C75C;HANGUL SYLLABLE YIN;Lo;0;L;;;;;N;;;;; +C75D;HANGUL SYLLABLE YINI;Lo;0;L;;;;;N;;;;; +C75E;HANGUL SYLLABLE YINH;Lo;0;L;;;;;N;;;;; +C75F;HANGUL SYLLABLE YID;Lo;0;L;;;;;N;;;;; +C760;HANGUL SYLLABLE YIL;Lo;0;L;;;;;N;;;;; +C761;HANGUL SYLLABLE YILG;Lo;0;L;;;;;N;;;;; +C762;HANGUL SYLLABLE YILM;Lo;0;L;;;;;N;;;;; +C763;HANGUL SYLLABLE YILB;Lo;0;L;;;;;N;;;;; +C764;HANGUL SYLLABLE YILS;Lo;0;L;;;;;N;;;;; +C765;HANGUL SYLLABLE YILT;Lo;0;L;;;;;N;;;;; +C766;HANGUL SYLLABLE YILP;Lo;0;L;;;;;N;;;;; +C767;HANGUL SYLLABLE YILH;Lo;0;L;;;;;N;;;;; +C768;HANGUL SYLLABLE YIM;Lo;0;L;;;;;N;;;;; +C769;HANGUL SYLLABLE YIB;Lo;0;L;;;;;N;;;;; +C76A;HANGUL SYLLABLE YIBS;Lo;0;L;;;;;N;;;;; +C76B;HANGUL SYLLABLE YIS;Lo;0;L;;;;;N;;;;; +C76C;HANGUL SYLLABLE YISS;Lo;0;L;;;;;N;;;;; +C76D;HANGUL SYLLABLE YING;Lo;0;L;;;;;N;;;;; +C76E;HANGUL SYLLABLE YIJ;Lo;0;L;;;;;N;;;;; +C76F;HANGUL SYLLABLE YIC;Lo;0;L;;;;;N;;;;; +C770;HANGUL SYLLABLE YIK;Lo;0;L;;;;;N;;;;; +C771;HANGUL SYLLABLE YIT;Lo;0;L;;;;;N;;;;; +C772;HANGUL SYLLABLE YIP;Lo;0;L;;;;;N;;;;; +C773;HANGUL SYLLABLE YIH;Lo;0;L;;;;;N;;;;; +C774;HANGUL SYLLABLE I;Lo;0;L;;;;;N;;;;; +C775;HANGUL SYLLABLE IG;Lo;0;L;;;;;N;;;;; +C776;HANGUL SYLLABLE IGG;Lo;0;L;;;;;N;;;;; +C777;HANGUL SYLLABLE IGS;Lo;0;L;;;;;N;;;;; +C778;HANGUL SYLLABLE IN;Lo;0;L;;;;;N;;;;; +C779;HANGUL SYLLABLE INI;Lo;0;L;;;;;N;;;;; +C77A;HANGUL SYLLABLE INH;Lo;0;L;;;;;N;;;;; +C77B;HANGUL SYLLABLE ID;Lo;0;L;;;;;N;;;;; +C77C;HANGUL SYLLABLE IL;Lo;0;L;;;;;N;;;;; +C77D;HANGUL SYLLABLE ILG;Lo;0;L;;;;;N;;;;; +C77E;HANGUL SYLLABLE ILM;Lo;0;L;;;;;N;;;;; +C77F;HANGUL SYLLABLE ILB;Lo;0;L;;;;;N;;;;; +C780;HANGUL SYLLABLE ILS;Lo;0;L;;;;;N;;;;; +C781;HANGUL SYLLABLE ILT;Lo;0;L;;;;;N;;;;; +C782;HANGUL SYLLABLE ILP;Lo;0;L;;;;;N;;;;; +C783;HANGUL SYLLABLE ILH;Lo;0;L;;;;;N;;;;; +C784;HANGUL SYLLABLE IM;Lo;0;L;;;;;N;;;;; +C785;HANGUL SYLLABLE IB;Lo;0;L;;;;;N;;;;; +C786;HANGUL SYLLABLE IBS;Lo;0;L;;;;;N;;;;; +C787;HANGUL SYLLABLE IS;Lo;0;L;;;;;N;;;;; +C788;HANGUL SYLLABLE ISS;Lo;0;L;;;;;N;;;;; +C789;HANGUL SYLLABLE ING;Lo;0;L;;;;;N;;;;; +C78A;HANGUL SYLLABLE IJ;Lo;0;L;;;;;N;;;;; +C78B;HANGUL SYLLABLE IC;Lo;0;L;;;;;N;;;;; +C78C;HANGUL SYLLABLE IK;Lo;0;L;;;;;N;;;;; +C78D;HANGUL SYLLABLE IT;Lo;0;L;;;;;N;;;;; +C78E;HANGUL SYLLABLE IP;Lo;0;L;;;;;N;;;;; +C78F;HANGUL SYLLABLE IH;Lo;0;L;;;;;N;;;;; +C790;HANGUL SYLLABLE JA;Lo;0;L;;;;;N;;;;; +C791;HANGUL SYLLABLE JAG;Lo;0;L;;;;;N;;;;; +C792;HANGUL SYLLABLE JAGG;Lo;0;L;;;;;N;;;;; +C793;HANGUL SYLLABLE JAGS;Lo;0;L;;;;;N;;;;; +C794;HANGUL SYLLABLE JAN;Lo;0;L;;;;;N;;;;; +C795;HANGUL SYLLABLE JANI;Lo;0;L;;;;;N;;;;; +C796;HANGUL SYLLABLE JANH;Lo;0;L;;;;;N;;;;; +C797;HANGUL SYLLABLE JAD;Lo;0;L;;;;;N;;;;; +C798;HANGUL SYLLABLE JAL;Lo;0;L;;;;;N;;;;; +C799;HANGUL SYLLABLE JALG;Lo;0;L;;;;;N;;;;; +C79A;HANGUL SYLLABLE JALM;Lo;0;L;;;;;N;;;;; +C79B;HANGUL SYLLABLE JALB;Lo;0;L;;;;;N;;;;; +C79C;HANGUL SYLLABLE JALS;Lo;0;L;;;;;N;;;;; +C79D;HANGUL SYLLABLE JALT;Lo;0;L;;;;;N;;;;; +C79E;HANGUL SYLLABLE JALP;Lo;0;L;;;;;N;;;;; +C79F;HANGUL SYLLABLE JALH;Lo;0;L;;;;;N;;;;; +C7A0;HANGUL SYLLABLE JAM;Lo;0;L;;;;;N;;;;; +C7A1;HANGUL SYLLABLE JAB;Lo;0;L;;;;;N;;;;; +C7A2;HANGUL SYLLABLE JABS;Lo;0;L;;;;;N;;;;; +C7A3;HANGUL SYLLABLE JAS;Lo;0;L;;;;;N;;;;; +C7A4;HANGUL SYLLABLE JASS;Lo;0;L;;;;;N;;;;; +C7A5;HANGUL SYLLABLE JANG;Lo;0;L;;;;;N;;;;; +C7A6;HANGUL SYLLABLE JAJ;Lo;0;L;;;;;N;;;;; +C7A7;HANGUL SYLLABLE JAC;Lo;0;L;;;;;N;;;;; +C7A8;HANGUL SYLLABLE JAK;Lo;0;L;;;;;N;;;;; +C7A9;HANGUL SYLLABLE JAT;Lo;0;L;;;;;N;;;;; +C7AA;HANGUL SYLLABLE JAP;Lo;0;L;;;;;N;;;;; +C7AB;HANGUL SYLLABLE JAH;Lo;0;L;;;;;N;;;;; +C7AC;HANGUL SYLLABLE JAE;Lo;0;L;;;;;N;;;;; +C7AD;HANGUL SYLLABLE JAEG;Lo;0;L;;;;;N;;;;; +C7AE;HANGUL SYLLABLE JAEGG;Lo;0;L;;;;;N;;;;; +C7AF;HANGUL SYLLABLE JAEGS;Lo;0;L;;;;;N;;;;; +C7B0;HANGUL SYLLABLE JAEN;Lo;0;L;;;;;N;;;;; +C7B1;HANGUL SYLLABLE JAENI;Lo;0;L;;;;;N;;;;; +C7B2;HANGUL SYLLABLE JAENH;Lo;0;L;;;;;N;;;;; +C7B3;HANGUL SYLLABLE JAED;Lo;0;L;;;;;N;;;;; +C7B4;HANGUL SYLLABLE JAEL;Lo;0;L;;;;;N;;;;; +C7B5;HANGUL SYLLABLE JAELG;Lo;0;L;;;;;N;;;;; +C7B6;HANGUL SYLLABLE JAELM;Lo;0;L;;;;;N;;;;; +C7B7;HANGUL SYLLABLE JAELB;Lo;0;L;;;;;N;;;;; +C7B8;HANGUL SYLLABLE JAELS;Lo;0;L;;;;;N;;;;; +C7B9;HANGUL SYLLABLE JAELT;Lo;0;L;;;;;N;;;;; +C7BA;HANGUL SYLLABLE JAELP;Lo;0;L;;;;;N;;;;; +C7BB;HANGUL SYLLABLE JAELH;Lo;0;L;;;;;N;;;;; +C7BC;HANGUL SYLLABLE JAEM;Lo;0;L;;;;;N;;;;; +C7BD;HANGUL SYLLABLE JAEB;Lo;0;L;;;;;N;;;;; +C7BE;HANGUL SYLLABLE JAEBS;Lo;0;L;;;;;N;;;;; +C7BF;HANGUL SYLLABLE JAES;Lo;0;L;;;;;N;;;;; +C7C0;HANGUL SYLLABLE JAESS;Lo;0;L;;;;;N;;;;; +C7C1;HANGUL SYLLABLE JAENG;Lo;0;L;;;;;N;;;;; +C7C2;HANGUL SYLLABLE JAEJ;Lo;0;L;;;;;N;;;;; +C7C3;HANGUL SYLLABLE JAEC;Lo;0;L;;;;;N;;;;; +C7C4;HANGUL SYLLABLE JAEK;Lo;0;L;;;;;N;;;;; +C7C5;HANGUL SYLLABLE JAET;Lo;0;L;;;;;N;;;;; +C7C6;HANGUL SYLLABLE JAEP;Lo;0;L;;;;;N;;;;; +C7C7;HANGUL SYLLABLE JAEH;Lo;0;L;;;;;N;;;;; +C7C8;HANGUL SYLLABLE JYA;Lo;0;L;;;;;N;;;;; +C7C9;HANGUL SYLLABLE JYAG;Lo;0;L;;;;;N;;;;; +C7CA;HANGUL SYLLABLE JYAGG;Lo;0;L;;;;;N;;;;; +C7CB;HANGUL SYLLABLE JYAGS;Lo;0;L;;;;;N;;;;; +C7CC;HANGUL SYLLABLE JYAN;Lo;0;L;;;;;N;;;;; +C7CD;HANGUL SYLLABLE JYANI;Lo;0;L;;;;;N;;;;; +C7CE;HANGUL SYLLABLE JYANH;Lo;0;L;;;;;N;;;;; +C7CF;HANGUL SYLLABLE JYAD;Lo;0;L;;;;;N;;;;; +C7D0;HANGUL SYLLABLE JYAL;Lo;0;L;;;;;N;;;;; +C7D1;HANGUL SYLLABLE JYALG;Lo;0;L;;;;;N;;;;; +C7D2;HANGUL SYLLABLE JYALM;Lo;0;L;;;;;N;;;;; +C7D3;HANGUL SYLLABLE JYALB;Lo;0;L;;;;;N;;;;; +C7D4;HANGUL SYLLABLE JYALS;Lo;0;L;;;;;N;;;;; +C7D5;HANGUL SYLLABLE JYALT;Lo;0;L;;;;;N;;;;; +C7D6;HANGUL SYLLABLE JYALP;Lo;0;L;;;;;N;;;;; +C7D7;HANGUL SYLLABLE JYALH;Lo;0;L;;;;;N;;;;; +C7D8;HANGUL SYLLABLE JYAM;Lo;0;L;;;;;N;;;;; +C7D9;HANGUL SYLLABLE JYAB;Lo;0;L;;;;;N;;;;; +C7DA;HANGUL SYLLABLE JYABS;Lo;0;L;;;;;N;;;;; +C7DB;HANGUL SYLLABLE JYAS;Lo;0;L;;;;;N;;;;; +C7DC;HANGUL SYLLABLE JYASS;Lo;0;L;;;;;N;;;;; +C7DD;HANGUL SYLLABLE JYANG;Lo;0;L;;;;;N;;;;; +C7DE;HANGUL SYLLABLE JYAJ;Lo;0;L;;;;;N;;;;; +C7DF;HANGUL SYLLABLE JYAC;Lo;0;L;;;;;N;;;;; +C7E0;HANGUL SYLLABLE JYAK;Lo;0;L;;;;;N;;;;; +C7E1;HANGUL SYLLABLE JYAT;Lo;0;L;;;;;N;;;;; +C7E2;HANGUL SYLLABLE JYAP;Lo;0;L;;;;;N;;;;; +C7E3;HANGUL SYLLABLE JYAH;Lo;0;L;;;;;N;;;;; +C7E4;HANGUL SYLLABLE JYAE;Lo;0;L;;;;;N;;;;; +C7E5;HANGUL SYLLABLE JYAEG;Lo;0;L;;;;;N;;;;; +C7E6;HANGUL SYLLABLE JYAEGG;Lo;0;L;;;;;N;;;;; +C7E7;HANGUL SYLLABLE JYAEGS;Lo;0;L;;;;;N;;;;; +C7E8;HANGUL SYLLABLE JYAEN;Lo;0;L;;;;;N;;;;; +C7E9;HANGUL SYLLABLE JYAENI;Lo;0;L;;;;;N;;;;; +C7EA;HANGUL SYLLABLE JYAENH;Lo;0;L;;;;;N;;;;; +C7EB;HANGUL SYLLABLE JYAED;Lo;0;L;;;;;N;;;;; +C7EC;HANGUL SYLLABLE JYAEL;Lo;0;L;;;;;N;;;;; +C7ED;HANGUL SYLLABLE JYAELG;Lo;0;L;;;;;N;;;;; +C7EE;HANGUL SYLLABLE JYAELM;Lo;0;L;;;;;N;;;;; +C7EF;HANGUL SYLLABLE JYAELB;Lo;0;L;;;;;N;;;;; +C7F0;HANGUL SYLLABLE JYAELS;Lo;0;L;;;;;N;;;;; +C7F1;HANGUL SYLLABLE JYAELT;Lo;0;L;;;;;N;;;;; +C7F2;HANGUL SYLLABLE JYAELP;Lo;0;L;;;;;N;;;;; +C7F3;HANGUL SYLLABLE JYAELH;Lo;0;L;;;;;N;;;;; +C7F4;HANGUL SYLLABLE JYAEM;Lo;0;L;;;;;N;;;;; +C7F5;HANGUL SYLLABLE JYAEB;Lo;0;L;;;;;N;;;;; +C7F6;HANGUL SYLLABLE JYAEBS;Lo;0;L;;;;;N;;;;; +C7F7;HANGUL SYLLABLE JYAES;Lo;0;L;;;;;N;;;;; +C7F8;HANGUL SYLLABLE JYAESS;Lo;0;L;;;;;N;;;;; +C7F9;HANGUL SYLLABLE JYAENG;Lo;0;L;;;;;N;;;;; +C7FA;HANGUL SYLLABLE JYAEJ;Lo;0;L;;;;;N;;;;; +C7FB;HANGUL SYLLABLE JYAEC;Lo;0;L;;;;;N;;;;; +C7FC;HANGUL SYLLABLE JYAEK;Lo;0;L;;;;;N;;;;; +C7FD;HANGUL SYLLABLE JYAET;Lo;0;L;;;;;N;;;;; +C7FE;HANGUL SYLLABLE JYAEP;Lo;0;L;;;;;N;;;;; +C7FF;HANGUL SYLLABLE JYAEH;Lo;0;L;;;;;N;;;;; +C800;HANGUL SYLLABLE JEO;Lo;0;L;;;;;N;;;;; +C801;HANGUL SYLLABLE JEOG;Lo;0;L;;;;;N;;;;; +C802;HANGUL SYLLABLE JEOGG;Lo;0;L;;;;;N;;;;; +C803;HANGUL SYLLABLE JEOGS;Lo;0;L;;;;;N;;;;; +C804;HANGUL SYLLABLE JEON;Lo;0;L;;;;;N;;;;; +C805;HANGUL SYLLABLE JEONI;Lo;0;L;;;;;N;;;;; +C806;HANGUL SYLLABLE JEONH;Lo;0;L;;;;;N;;;;; +C807;HANGUL SYLLABLE JEOD;Lo;0;L;;;;;N;;;;; +C808;HANGUL SYLLABLE JEOL;Lo;0;L;;;;;N;;;;; +C809;HANGUL SYLLABLE JEOLG;Lo;0;L;;;;;N;;;;; +C80A;HANGUL SYLLABLE JEOLM;Lo;0;L;;;;;N;;;;; +C80B;HANGUL SYLLABLE JEOLB;Lo;0;L;;;;;N;;;;; +C80C;HANGUL SYLLABLE JEOLS;Lo;0;L;;;;;N;;;;; +C80D;HANGUL SYLLABLE JEOLT;Lo;0;L;;;;;N;;;;; +C80E;HANGUL SYLLABLE JEOLP;Lo;0;L;;;;;N;;;;; +C80F;HANGUL SYLLABLE JEOLH;Lo;0;L;;;;;N;;;;; +C810;HANGUL SYLLABLE JEOM;Lo;0;L;;;;;N;;;;; +C811;HANGUL SYLLABLE JEOB;Lo;0;L;;;;;N;;;;; +C812;HANGUL SYLLABLE JEOBS;Lo;0;L;;;;;N;;;;; +C813;HANGUL SYLLABLE JEOS;Lo;0;L;;;;;N;;;;; +C814;HANGUL SYLLABLE JEOSS;Lo;0;L;;;;;N;;;;; +C815;HANGUL SYLLABLE JEONG;Lo;0;L;;;;;N;;;;; +C816;HANGUL SYLLABLE JEOJ;Lo;0;L;;;;;N;;;;; +C817;HANGUL SYLLABLE JEOC;Lo;0;L;;;;;N;;;;; +C818;HANGUL SYLLABLE JEOK;Lo;0;L;;;;;N;;;;; +C819;HANGUL SYLLABLE JEOT;Lo;0;L;;;;;N;;;;; +C81A;HANGUL SYLLABLE JEOP;Lo;0;L;;;;;N;;;;; +C81B;HANGUL SYLLABLE JEOH;Lo;0;L;;;;;N;;;;; +C81C;HANGUL SYLLABLE JE;Lo;0;L;;;;;N;;;;; +C81D;HANGUL SYLLABLE JEG;Lo;0;L;;;;;N;;;;; +C81E;HANGUL SYLLABLE JEGG;Lo;0;L;;;;;N;;;;; +C81F;HANGUL SYLLABLE JEGS;Lo;0;L;;;;;N;;;;; +C820;HANGUL SYLLABLE JEN;Lo;0;L;;;;;N;;;;; +C821;HANGUL SYLLABLE JENI;Lo;0;L;;;;;N;;;;; +C822;HANGUL SYLLABLE JENH;Lo;0;L;;;;;N;;;;; +C823;HANGUL SYLLABLE JED;Lo;0;L;;;;;N;;;;; +C824;HANGUL SYLLABLE JEL;Lo;0;L;;;;;N;;;;; +C825;HANGUL SYLLABLE JELG;Lo;0;L;;;;;N;;;;; +C826;HANGUL SYLLABLE JELM;Lo;0;L;;;;;N;;;;; +C827;HANGUL SYLLABLE JELB;Lo;0;L;;;;;N;;;;; +C828;HANGUL SYLLABLE JELS;Lo;0;L;;;;;N;;;;; +C829;HANGUL SYLLABLE JELT;Lo;0;L;;;;;N;;;;; +C82A;HANGUL SYLLABLE JELP;Lo;0;L;;;;;N;;;;; +C82B;HANGUL SYLLABLE JELH;Lo;0;L;;;;;N;;;;; +C82C;HANGUL SYLLABLE JEM;Lo;0;L;;;;;N;;;;; +C82D;HANGUL SYLLABLE JEB;Lo;0;L;;;;;N;;;;; +C82E;HANGUL SYLLABLE JEBS;Lo;0;L;;;;;N;;;;; +C82F;HANGUL SYLLABLE JES;Lo;0;L;;;;;N;;;;; +C830;HANGUL SYLLABLE JESS;Lo;0;L;;;;;N;;;;; +C831;HANGUL SYLLABLE JENG;Lo;0;L;;;;;N;;;;; +C832;HANGUL SYLLABLE JEJ;Lo;0;L;;;;;N;;;;; +C833;HANGUL SYLLABLE JEC;Lo;0;L;;;;;N;;;;; +C834;HANGUL SYLLABLE JEK;Lo;0;L;;;;;N;;;;; +C835;HANGUL SYLLABLE JET;Lo;0;L;;;;;N;;;;; +C836;HANGUL SYLLABLE JEP;Lo;0;L;;;;;N;;;;; +C837;HANGUL SYLLABLE JEH;Lo;0;L;;;;;N;;;;; +C838;HANGUL SYLLABLE JYEO;Lo;0;L;;;;;N;;;;; +C839;HANGUL SYLLABLE JYEOG;Lo;0;L;;;;;N;;;;; +C83A;HANGUL SYLLABLE JYEOGG;Lo;0;L;;;;;N;;;;; +C83B;HANGUL SYLLABLE JYEOGS;Lo;0;L;;;;;N;;;;; +C83C;HANGUL SYLLABLE JYEON;Lo;0;L;;;;;N;;;;; +C83D;HANGUL SYLLABLE JYEONI;Lo;0;L;;;;;N;;;;; +C83E;HANGUL SYLLABLE JYEONH;Lo;0;L;;;;;N;;;;; +C83F;HANGUL SYLLABLE JYEOD;Lo;0;L;;;;;N;;;;; +C840;HANGUL SYLLABLE JYEOL;Lo;0;L;;;;;N;;;;; +C841;HANGUL SYLLABLE JYEOLG;Lo;0;L;;;;;N;;;;; +C842;HANGUL SYLLABLE JYEOLM;Lo;0;L;;;;;N;;;;; +C843;HANGUL SYLLABLE JYEOLB;Lo;0;L;;;;;N;;;;; +C844;HANGUL SYLLABLE JYEOLS;Lo;0;L;;;;;N;;;;; +C845;HANGUL SYLLABLE JYEOLT;Lo;0;L;;;;;N;;;;; +C846;HANGUL SYLLABLE JYEOLP;Lo;0;L;;;;;N;;;;; +C847;HANGUL SYLLABLE JYEOLH;Lo;0;L;;;;;N;;;;; +C848;HANGUL SYLLABLE JYEOM;Lo;0;L;;;;;N;;;;; +C849;HANGUL SYLLABLE JYEOB;Lo;0;L;;;;;N;;;;; +C84A;HANGUL SYLLABLE JYEOBS;Lo;0;L;;;;;N;;;;; +C84B;HANGUL SYLLABLE JYEOS;Lo;0;L;;;;;N;;;;; +C84C;HANGUL SYLLABLE JYEOSS;Lo;0;L;;;;;N;;;;; +C84D;HANGUL SYLLABLE JYEONG;Lo;0;L;;;;;N;;;;; +C84E;HANGUL SYLLABLE JYEOJ;Lo;0;L;;;;;N;;;;; +C84F;HANGUL SYLLABLE JYEOC;Lo;0;L;;;;;N;;;;; +C850;HANGUL SYLLABLE JYEOK;Lo;0;L;;;;;N;;;;; +C851;HANGUL SYLLABLE JYEOT;Lo;0;L;;;;;N;;;;; +C852;HANGUL SYLLABLE JYEOP;Lo;0;L;;;;;N;;;;; +C853;HANGUL SYLLABLE JYEOH;Lo;0;L;;;;;N;;;;; +C854;HANGUL SYLLABLE JYE;Lo;0;L;;;;;N;;;;; +C855;HANGUL SYLLABLE JYEG;Lo;0;L;;;;;N;;;;; +C856;HANGUL SYLLABLE JYEGG;Lo;0;L;;;;;N;;;;; +C857;HANGUL SYLLABLE JYEGS;Lo;0;L;;;;;N;;;;; +C858;HANGUL SYLLABLE JYEN;Lo;0;L;;;;;N;;;;; +C859;HANGUL SYLLABLE JYENI;Lo;0;L;;;;;N;;;;; +C85A;HANGUL SYLLABLE JYENH;Lo;0;L;;;;;N;;;;; +C85B;HANGUL SYLLABLE JYED;Lo;0;L;;;;;N;;;;; +C85C;HANGUL SYLLABLE JYEL;Lo;0;L;;;;;N;;;;; +C85D;HANGUL SYLLABLE JYELG;Lo;0;L;;;;;N;;;;; +C85E;HANGUL SYLLABLE JYELM;Lo;0;L;;;;;N;;;;; +C85F;HANGUL SYLLABLE JYELB;Lo;0;L;;;;;N;;;;; +C860;HANGUL SYLLABLE JYELS;Lo;0;L;;;;;N;;;;; +C861;HANGUL SYLLABLE JYELT;Lo;0;L;;;;;N;;;;; +C862;HANGUL SYLLABLE JYELP;Lo;0;L;;;;;N;;;;; +C863;HANGUL SYLLABLE JYELH;Lo;0;L;;;;;N;;;;; +C864;HANGUL SYLLABLE JYEM;Lo;0;L;;;;;N;;;;; +C865;HANGUL SYLLABLE JYEB;Lo;0;L;;;;;N;;;;; +C866;HANGUL SYLLABLE JYEBS;Lo;0;L;;;;;N;;;;; +C867;HANGUL SYLLABLE JYES;Lo;0;L;;;;;N;;;;; +C868;HANGUL SYLLABLE JYESS;Lo;0;L;;;;;N;;;;; +C869;HANGUL SYLLABLE JYENG;Lo;0;L;;;;;N;;;;; +C86A;HANGUL SYLLABLE JYEJ;Lo;0;L;;;;;N;;;;; +C86B;HANGUL SYLLABLE JYEC;Lo;0;L;;;;;N;;;;; +C86C;HANGUL SYLLABLE JYEK;Lo;0;L;;;;;N;;;;; +C86D;HANGUL SYLLABLE JYET;Lo;0;L;;;;;N;;;;; +C86E;HANGUL SYLLABLE JYEP;Lo;0;L;;;;;N;;;;; +C86F;HANGUL SYLLABLE JYEH;Lo;0;L;;;;;N;;;;; +C870;HANGUL SYLLABLE JO;Lo;0;L;;;;;N;;;;; +C871;HANGUL SYLLABLE JOG;Lo;0;L;;;;;N;;;;; +C872;HANGUL SYLLABLE JOGG;Lo;0;L;;;;;N;;;;; +C873;HANGUL SYLLABLE JOGS;Lo;0;L;;;;;N;;;;; +C874;HANGUL SYLLABLE JON;Lo;0;L;;;;;N;;;;; +C875;HANGUL SYLLABLE JONI;Lo;0;L;;;;;N;;;;; +C876;HANGUL SYLLABLE JONH;Lo;0;L;;;;;N;;;;; +C877;HANGUL SYLLABLE JOD;Lo;0;L;;;;;N;;;;; +C878;HANGUL SYLLABLE JOL;Lo;0;L;;;;;N;;;;; +C879;HANGUL SYLLABLE JOLG;Lo;0;L;;;;;N;;;;; +C87A;HANGUL SYLLABLE JOLM;Lo;0;L;;;;;N;;;;; +C87B;HANGUL SYLLABLE JOLB;Lo;0;L;;;;;N;;;;; +C87C;HANGUL SYLLABLE JOLS;Lo;0;L;;;;;N;;;;; +C87D;HANGUL SYLLABLE JOLT;Lo;0;L;;;;;N;;;;; +C87E;HANGUL SYLLABLE JOLP;Lo;0;L;;;;;N;;;;; +C87F;HANGUL SYLLABLE JOLH;Lo;0;L;;;;;N;;;;; +C880;HANGUL SYLLABLE JOM;Lo;0;L;;;;;N;;;;; +C881;HANGUL SYLLABLE JOB;Lo;0;L;;;;;N;;;;; +C882;HANGUL SYLLABLE JOBS;Lo;0;L;;;;;N;;;;; +C883;HANGUL SYLLABLE JOS;Lo;0;L;;;;;N;;;;; +C884;HANGUL SYLLABLE JOSS;Lo;0;L;;;;;N;;;;; +C885;HANGUL SYLLABLE JONG;Lo;0;L;;;;;N;;;;; +C886;HANGUL SYLLABLE JOJ;Lo;0;L;;;;;N;;;;; +C887;HANGUL SYLLABLE JOC;Lo;0;L;;;;;N;;;;; +C888;HANGUL SYLLABLE JOK;Lo;0;L;;;;;N;;;;; +C889;HANGUL SYLLABLE JOT;Lo;0;L;;;;;N;;;;; +C88A;HANGUL SYLLABLE JOP;Lo;0;L;;;;;N;;;;; +C88B;HANGUL SYLLABLE JOH;Lo;0;L;;;;;N;;;;; +C88C;HANGUL SYLLABLE JWA;Lo;0;L;;;;;N;;;;; +C88D;HANGUL SYLLABLE JWAG;Lo;0;L;;;;;N;;;;; +C88E;HANGUL SYLLABLE JWAGG;Lo;0;L;;;;;N;;;;; +C88F;HANGUL SYLLABLE JWAGS;Lo;0;L;;;;;N;;;;; +C890;HANGUL SYLLABLE JWAN;Lo;0;L;;;;;N;;;;; +C891;HANGUL SYLLABLE JWANI;Lo;0;L;;;;;N;;;;; +C892;HANGUL SYLLABLE JWANH;Lo;0;L;;;;;N;;;;; +C893;HANGUL SYLLABLE JWAD;Lo;0;L;;;;;N;;;;; +C894;HANGUL SYLLABLE JWAL;Lo;0;L;;;;;N;;;;; +C895;HANGUL SYLLABLE JWALG;Lo;0;L;;;;;N;;;;; +C896;HANGUL SYLLABLE JWALM;Lo;0;L;;;;;N;;;;; +C897;HANGUL SYLLABLE JWALB;Lo;0;L;;;;;N;;;;; +C898;HANGUL SYLLABLE JWALS;Lo;0;L;;;;;N;;;;; +C899;HANGUL SYLLABLE JWALT;Lo;0;L;;;;;N;;;;; +C89A;HANGUL SYLLABLE JWALP;Lo;0;L;;;;;N;;;;; +C89B;HANGUL SYLLABLE JWALH;Lo;0;L;;;;;N;;;;; +C89C;HANGUL SYLLABLE JWAM;Lo;0;L;;;;;N;;;;; +C89D;HANGUL SYLLABLE JWAB;Lo;0;L;;;;;N;;;;; +C89E;HANGUL SYLLABLE JWABS;Lo;0;L;;;;;N;;;;; +C89F;HANGUL SYLLABLE JWAS;Lo;0;L;;;;;N;;;;; +C8A0;HANGUL SYLLABLE JWASS;Lo;0;L;;;;;N;;;;; +C8A1;HANGUL SYLLABLE JWANG;Lo;0;L;;;;;N;;;;; +C8A2;HANGUL SYLLABLE JWAJ;Lo;0;L;;;;;N;;;;; +C8A3;HANGUL SYLLABLE JWAC;Lo;0;L;;;;;N;;;;; +C8A4;HANGUL SYLLABLE JWAK;Lo;0;L;;;;;N;;;;; +C8A5;HANGUL SYLLABLE JWAT;Lo;0;L;;;;;N;;;;; +C8A6;HANGUL SYLLABLE JWAP;Lo;0;L;;;;;N;;;;; +C8A7;HANGUL SYLLABLE JWAH;Lo;0;L;;;;;N;;;;; +C8A8;HANGUL SYLLABLE JWAE;Lo;0;L;;;;;N;;;;; +C8A9;HANGUL SYLLABLE JWAEG;Lo;0;L;;;;;N;;;;; +C8AA;HANGUL SYLLABLE JWAEGG;Lo;0;L;;;;;N;;;;; +C8AB;HANGUL SYLLABLE JWAEGS;Lo;0;L;;;;;N;;;;; +C8AC;HANGUL SYLLABLE JWAEN;Lo;0;L;;;;;N;;;;; +C8AD;HANGUL SYLLABLE JWAENI;Lo;0;L;;;;;N;;;;; +C8AE;HANGUL SYLLABLE JWAENH;Lo;0;L;;;;;N;;;;; +C8AF;HANGUL SYLLABLE JWAED;Lo;0;L;;;;;N;;;;; +C8B0;HANGUL SYLLABLE JWAEL;Lo;0;L;;;;;N;;;;; +C8B1;HANGUL SYLLABLE JWAELG;Lo;0;L;;;;;N;;;;; +C8B2;HANGUL SYLLABLE JWAELM;Lo;0;L;;;;;N;;;;; +C8B3;HANGUL SYLLABLE JWAELB;Lo;0;L;;;;;N;;;;; +C8B4;HANGUL SYLLABLE JWAELS;Lo;0;L;;;;;N;;;;; +C8B5;HANGUL SYLLABLE JWAELT;Lo;0;L;;;;;N;;;;; +C8B6;HANGUL SYLLABLE JWAELP;Lo;0;L;;;;;N;;;;; +C8B7;HANGUL SYLLABLE JWAELH;Lo;0;L;;;;;N;;;;; +C8B8;HANGUL SYLLABLE JWAEM;Lo;0;L;;;;;N;;;;; +C8B9;HANGUL SYLLABLE JWAEB;Lo;0;L;;;;;N;;;;; +C8BA;HANGUL SYLLABLE JWAEBS;Lo;0;L;;;;;N;;;;; +C8BB;HANGUL SYLLABLE JWAES;Lo;0;L;;;;;N;;;;; +C8BC;HANGUL SYLLABLE JWAESS;Lo;0;L;;;;;N;;;;; +C8BD;HANGUL SYLLABLE JWAENG;Lo;0;L;;;;;N;;;;; +C8BE;HANGUL SYLLABLE JWAEJ;Lo;0;L;;;;;N;;;;; +C8BF;HANGUL SYLLABLE JWAEC;Lo;0;L;;;;;N;;;;; +C8C0;HANGUL SYLLABLE JWAEK;Lo;0;L;;;;;N;;;;; +C8C1;HANGUL SYLLABLE JWAET;Lo;0;L;;;;;N;;;;; +C8C2;HANGUL SYLLABLE JWAEP;Lo;0;L;;;;;N;;;;; +C8C3;HANGUL SYLLABLE JWAEH;Lo;0;L;;;;;N;;;;; +C8C4;HANGUL SYLLABLE JOE;Lo;0;L;;;;;N;;;;; +C8C5;HANGUL SYLLABLE JOEG;Lo;0;L;;;;;N;;;;; +C8C6;HANGUL SYLLABLE JOEGG;Lo;0;L;;;;;N;;;;; +C8C7;HANGUL SYLLABLE JOEGS;Lo;0;L;;;;;N;;;;; +C8C8;HANGUL SYLLABLE JOEN;Lo;0;L;;;;;N;;;;; +C8C9;HANGUL SYLLABLE JOENI;Lo;0;L;;;;;N;;;;; +C8CA;HANGUL SYLLABLE JOENH;Lo;0;L;;;;;N;;;;; +C8CB;HANGUL SYLLABLE JOED;Lo;0;L;;;;;N;;;;; +C8CC;HANGUL SYLLABLE JOEL;Lo;0;L;;;;;N;;;;; +C8CD;HANGUL SYLLABLE JOELG;Lo;0;L;;;;;N;;;;; +C8CE;HANGUL SYLLABLE JOELM;Lo;0;L;;;;;N;;;;; +C8CF;HANGUL SYLLABLE JOELB;Lo;0;L;;;;;N;;;;; +C8D0;HANGUL SYLLABLE JOELS;Lo;0;L;;;;;N;;;;; +C8D1;HANGUL SYLLABLE JOELT;Lo;0;L;;;;;N;;;;; +C8D2;HANGUL SYLLABLE JOELP;Lo;0;L;;;;;N;;;;; +C8D3;HANGUL SYLLABLE JOELH;Lo;0;L;;;;;N;;;;; +C8D4;HANGUL SYLLABLE JOEM;Lo;0;L;;;;;N;;;;; +C8D5;HANGUL SYLLABLE JOEB;Lo;0;L;;;;;N;;;;; +C8D6;HANGUL SYLLABLE JOEBS;Lo;0;L;;;;;N;;;;; +C8D7;HANGUL SYLLABLE JOES;Lo;0;L;;;;;N;;;;; +C8D8;HANGUL SYLLABLE JOESS;Lo;0;L;;;;;N;;;;; +C8D9;HANGUL SYLLABLE JOENG;Lo;0;L;;;;;N;;;;; +C8DA;HANGUL SYLLABLE JOEJ;Lo;0;L;;;;;N;;;;; +C8DB;HANGUL SYLLABLE JOEC;Lo;0;L;;;;;N;;;;; +C8DC;HANGUL SYLLABLE JOEK;Lo;0;L;;;;;N;;;;; +C8DD;HANGUL SYLLABLE JOET;Lo;0;L;;;;;N;;;;; +C8DE;HANGUL SYLLABLE JOEP;Lo;0;L;;;;;N;;;;; +C8DF;HANGUL SYLLABLE JOEH;Lo;0;L;;;;;N;;;;; +C8E0;HANGUL SYLLABLE JYO;Lo;0;L;;;;;N;;;;; +C8E1;HANGUL SYLLABLE JYOG;Lo;0;L;;;;;N;;;;; +C8E2;HANGUL SYLLABLE JYOGG;Lo;0;L;;;;;N;;;;; +C8E3;HANGUL SYLLABLE JYOGS;Lo;0;L;;;;;N;;;;; +C8E4;HANGUL SYLLABLE JYON;Lo;0;L;;;;;N;;;;; +C8E5;HANGUL SYLLABLE JYONI;Lo;0;L;;;;;N;;;;; +C8E6;HANGUL SYLLABLE JYONH;Lo;0;L;;;;;N;;;;; +C8E7;HANGUL SYLLABLE JYOD;Lo;0;L;;;;;N;;;;; +C8E8;HANGUL SYLLABLE JYOL;Lo;0;L;;;;;N;;;;; +C8E9;HANGUL SYLLABLE JYOLG;Lo;0;L;;;;;N;;;;; +C8EA;HANGUL SYLLABLE JYOLM;Lo;0;L;;;;;N;;;;; +C8EB;HANGUL SYLLABLE JYOLB;Lo;0;L;;;;;N;;;;; +C8EC;HANGUL SYLLABLE JYOLS;Lo;0;L;;;;;N;;;;; +C8ED;HANGUL SYLLABLE JYOLT;Lo;0;L;;;;;N;;;;; +C8EE;HANGUL SYLLABLE JYOLP;Lo;0;L;;;;;N;;;;; +C8EF;HANGUL SYLLABLE JYOLH;Lo;0;L;;;;;N;;;;; +C8F0;HANGUL SYLLABLE JYOM;Lo;0;L;;;;;N;;;;; +C8F1;HANGUL SYLLABLE JYOB;Lo;0;L;;;;;N;;;;; +C8F2;HANGUL SYLLABLE JYOBS;Lo;0;L;;;;;N;;;;; +C8F3;HANGUL SYLLABLE JYOS;Lo;0;L;;;;;N;;;;; +C8F4;HANGUL SYLLABLE JYOSS;Lo;0;L;;;;;N;;;;; +C8F5;HANGUL SYLLABLE JYONG;Lo;0;L;;;;;N;;;;; +C8F6;HANGUL SYLLABLE JYOJ;Lo;0;L;;;;;N;;;;; +C8F7;HANGUL SYLLABLE JYOC;Lo;0;L;;;;;N;;;;; +C8F8;HANGUL SYLLABLE JYOK;Lo;0;L;;;;;N;;;;; +C8F9;HANGUL SYLLABLE JYOT;Lo;0;L;;;;;N;;;;; +C8FA;HANGUL SYLLABLE JYOP;Lo;0;L;;;;;N;;;;; +C8FB;HANGUL SYLLABLE JYOH;Lo;0;L;;;;;N;;;;; +C8FC;HANGUL SYLLABLE JU;Lo;0;L;;;;;N;;;;; +C8FD;HANGUL SYLLABLE JUG;Lo;0;L;;;;;N;;;;; +C8FE;HANGUL SYLLABLE JUGG;Lo;0;L;;;;;N;;;;; +C8FF;HANGUL SYLLABLE JUGS;Lo;0;L;;;;;N;;;;; +C900;HANGUL SYLLABLE JUN;Lo;0;L;;;;;N;;;;; +C901;HANGUL SYLLABLE JUNI;Lo;0;L;;;;;N;;;;; +C902;HANGUL SYLLABLE JUNH;Lo;0;L;;;;;N;;;;; +C903;HANGUL SYLLABLE JUD;Lo;0;L;;;;;N;;;;; +C904;HANGUL SYLLABLE JUL;Lo;0;L;;;;;N;;;;; +C905;HANGUL SYLLABLE JULG;Lo;0;L;;;;;N;;;;; +C906;HANGUL SYLLABLE JULM;Lo;0;L;;;;;N;;;;; +C907;HANGUL SYLLABLE JULB;Lo;0;L;;;;;N;;;;; +C908;HANGUL SYLLABLE JULS;Lo;0;L;;;;;N;;;;; +C909;HANGUL SYLLABLE JULT;Lo;0;L;;;;;N;;;;; +C90A;HANGUL SYLLABLE JULP;Lo;0;L;;;;;N;;;;; +C90B;HANGUL SYLLABLE JULH;Lo;0;L;;;;;N;;;;; +C90C;HANGUL SYLLABLE JUM;Lo;0;L;;;;;N;;;;; +C90D;HANGUL SYLLABLE JUB;Lo;0;L;;;;;N;;;;; +C90E;HANGUL SYLLABLE JUBS;Lo;0;L;;;;;N;;;;; +C90F;HANGUL SYLLABLE JUS;Lo;0;L;;;;;N;;;;; +C910;HANGUL SYLLABLE JUSS;Lo;0;L;;;;;N;;;;; +C911;HANGUL SYLLABLE JUNG;Lo;0;L;;;;;N;;;;; +C912;HANGUL SYLLABLE JUJ;Lo;0;L;;;;;N;;;;; +C913;HANGUL SYLLABLE JUC;Lo;0;L;;;;;N;;;;; +C914;HANGUL SYLLABLE JUK;Lo;0;L;;;;;N;;;;; +C915;HANGUL SYLLABLE JUT;Lo;0;L;;;;;N;;;;; +C916;HANGUL SYLLABLE JUP;Lo;0;L;;;;;N;;;;; +C917;HANGUL SYLLABLE JUH;Lo;0;L;;;;;N;;;;; +C918;HANGUL SYLLABLE JWEO;Lo;0;L;;;;;N;;;;; +C919;HANGUL SYLLABLE JWEOG;Lo;0;L;;;;;N;;;;; +C91A;HANGUL SYLLABLE JWEOGG;Lo;0;L;;;;;N;;;;; +C91B;HANGUL SYLLABLE JWEOGS;Lo;0;L;;;;;N;;;;; +C91C;HANGUL SYLLABLE JWEON;Lo;0;L;;;;;N;;;;; +C91D;HANGUL SYLLABLE JWEONI;Lo;0;L;;;;;N;;;;; +C91E;HANGUL SYLLABLE JWEONH;Lo;0;L;;;;;N;;;;; +C91F;HANGUL SYLLABLE JWEOD;Lo;0;L;;;;;N;;;;; +C920;HANGUL SYLLABLE JWEOL;Lo;0;L;;;;;N;;;;; +C921;HANGUL SYLLABLE JWEOLG;Lo;0;L;;;;;N;;;;; +C922;HANGUL SYLLABLE JWEOLM;Lo;0;L;;;;;N;;;;; +C923;HANGUL SYLLABLE JWEOLB;Lo;0;L;;;;;N;;;;; +C924;HANGUL SYLLABLE JWEOLS;Lo;0;L;;;;;N;;;;; +C925;HANGUL SYLLABLE JWEOLT;Lo;0;L;;;;;N;;;;; +C926;HANGUL SYLLABLE JWEOLP;Lo;0;L;;;;;N;;;;; +C927;HANGUL SYLLABLE JWEOLH;Lo;0;L;;;;;N;;;;; +C928;HANGUL SYLLABLE JWEOM;Lo;0;L;;;;;N;;;;; +C929;HANGUL SYLLABLE JWEOB;Lo;0;L;;;;;N;;;;; +C92A;HANGUL SYLLABLE JWEOBS;Lo;0;L;;;;;N;;;;; +C92B;HANGUL SYLLABLE JWEOS;Lo;0;L;;;;;N;;;;; +C92C;HANGUL SYLLABLE JWEOSS;Lo;0;L;;;;;N;;;;; +C92D;HANGUL SYLLABLE JWEONG;Lo;0;L;;;;;N;;;;; +C92E;HANGUL SYLLABLE JWEOJ;Lo;0;L;;;;;N;;;;; +C92F;HANGUL SYLLABLE JWEOC;Lo;0;L;;;;;N;;;;; +C930;HANGUL SYLLABLE JWEOK;Lo;0;L;;;;;N;;;;; +C931;HANGUL SYLLABLE JWEOT;Lo;0;L;;;;;N;;;;; +C932;HANGUL SYLLABLE JWEOP;Lo;0;L;;;;;N;;;;; +C933;HANGUL SYLLABLE JWEOH;Lo;0;L;;;;;N;;;;; +C934;HANGUL SYLLABLE JWE;Lo;0;L;;;;;N;;;;; +C935;HANGUL SYLLABLE JWEG;Lo;0;L;;;;;N;;;;; +C936;HANGUL SYLLABLE JWEGG;Lo;0;L;;;;;N;;;;; +C937;HANGUL SYLLABLE JWEGS;Lo;0;L;;;;;N;;;;; +C938;HANGUL SYLLABLE JWEN;Lo;0;L;;;;;N;;;;; +C939;HANGUL SYLLABLE JWENI;Lo;0;L;;;;;N;;;;; +C93A;HANGUL SYLLABLE JWENH;Lo;0;L;;;;;N;;;;; +C93B;HANGUL SYLLABLE JWED;Lo;0;L;;;;;N;;;;; +C93C;HANGUL SYLLABLE JWEL;Lo;0;L;;;;;N;;;;; +C93D;HANGUL SYLLABLE JWELG;Lo;0;L;;;;;N;;;;; +C93E;HANGUL SYLLABLE JWELM;Lo;0;L;;;;;N;;;;; +C93F;HANGUL SYLLABLE JWELB;Lo;0;L;;;;;N;;;;; +C940;HANGUL SYLLABLE JWELS;Lo;0;L;;;;;N;;;;; +C941;HANGUL SYLLABLE JWELT;Lo;0;L;;;;;N;;;;; +C942;HANGUL SYLLABLE JWELP;Lo;0;L;;;;;N;;;;; +C943;HANGUL SYLLABLE JWELH;Lo;0;L;;;;;N;;;;; +C944;HANGUL SYLLABLE JWEM;Lo;0;L;;;;;N;;;;; +C945;HANGUL SYLLABLE JWEB;Lo;0;L;;;;;N;;;;; +C946;HANGUL SYLLABLE JWEBS;Lo;0;L;;;;;N;;;;; +C947;HANGUL SYLLABLE JWES;Lo;0;L;;;;;N;;;;; +C948;HANGUL SYLLABLE JWESS;Lo;0;L;;;;;N;;;;; +C949;HANGUL SYLLABLE JWENG;Lo;0;L;;;;;N;;;;; +C94A;HANGUL SYLLABLE JWEJ;Lo;0;L;;;;;N;;;;; +C94B;HANGUL SYLLABLE JWEC;Lo;0;L;;;;;N;;;;; +C94C;HANGUL SYLLABLE JWEK;Lo;0;L;;;;;N;;;;; +C94D;HANGUL SYLLABLE JWET;Lo;0;L;;;;;N;;;;; +C94E;HANGUL SYLLABLE JWEP;Lo;0;L;;;;;N;;;;; +C94F;HANGUL SYLLABLE JWEH;Lo;0;L;;;;;N;;;;; +C950;HANGUL SYLLABLE JWI;Lo;0;L;;;;;N;;;;; +C951;HANGUL SYLLABLE JWIG;Lo;0;L;;;;;N;;;;; +C952;HANGUL SYLLABLE JWIGG;Lo;0;L;;;;;N;;;;; +C953;HANGUL SYLLABLE JWIGS;Lo;0;L;;;;;N;;;;; +C954;HANGUL SYLLABLE JWIN;Lo;0;L;;;;;N;;;;; +C955;HANGUL SYLLABLE JWINI;Lo;0;L;;;;;N;;;;; +C956;HANGUL SYLLABLE JWINH;Lo;0;L;;;;;N;;;;; +C957;HANGUL SYLLABLE JWID;Lo;0;L;;;;;N;;;;; +C958;HANGUL SYLLABLE JWIL;Lo;0;L;;;;;N;;;;; +C959;HANGUL SYLLABLE JWILG;Lo;0;L;;;;;N;;;;; +C95A;HANGUL SYLLABLE JWILM;Lo;0;L;;;;;N;;;;; +C95B;HANGUL SYLLABLE JWILB;Lo;0;L;;;;;N;;;;; +C95C;HANGUL SYLLABLE JWILS;Lo;0;L;;;;;N;;;;; +C95D;HANGUL SYLLABLE JWILT;Lo;0;L;;;;;N;;;;; +C95E;HANGUL SYLLABLE JWILP;Lo;0;L;;;;;N;;;;; +C95F;HANGUL SYLLABLE JWILH;Lo;0;L;;;;;N;;;;; +C960;HANGUL SYLLABLE JWIM;Lo;0;L;;;;;N;;;;; +C961;HANGUL SYLLABLE JWIB;Lo;0;L;;;;;N;;;;; +C962;HANGUL SYLLABLE JWIBS;Lo;0;L;;;;;N;;;;; +C963;HANGUL SYLLABLE JWIS;Lo;0;L;;;;;N;;;;; +C964;HANGUL SYLLABLE JWISS;Lo;0;L;;;;;N;;;;; +C965;HANGUL SYLLABLE JWING;Lo;0;L;;;;;N;;;;; +C966;HANGUL SYLLABLE JWIJ;Lo;0;L;;;;;N;;;;; +C967;HANGUL SYLLABLE JWIC;Lo;0;L;;;;;N;;;;; +C968;HANGUL SYLLABLE JWIK;Lo;0;L;;;;;N;;;;; +C969;HANGUL SYLLABLE JWIT;Lo;0;L;;;;;N;;;;; +C96A;HANGUL SYLLABLE JWIP;Lo;0;L;;;;;N;;;;; +C96B;HANGUL SYLLABLE JWIH;Lo;0;L;;;;;N;;;;; +C96C;HANGUL SYLLABLE JYU;Lo;0;L;;;;;N;;;;; +C96D;HANGUL SYLLABLE JYUG;Lo;0;L;;;;;N;;;;; +C96E;HANGUL SYLLABLE JYUGG;Lo;0;L;;;;;N;;;;; +C96F;HANGUL SYLLABLE JYUGS;Lo;0;L;;;;;N;;;;; +C970;HANGUL SYLLABLE JYUN;Lo;0;L;;;;;N;;;;; +C971;HANGUL SYLLABLE JYUNI;Lo;0;L;;;;;N;;;;; +C972;HANGUL SYLLABLE JYUNH;Lo;0;L;;;;;N;;;;; +C973;HANGUL SYLLABLE JYUD;Lo;0;L;;;;;N;;;;; +C974;HANGUL SYLLABLE JYUL;Lo;0;L;;;;;N;;;;; +C975;HANGUL SYLLABLE JYULG;Lo;0;L;;;;;N;;;;; +C976;HANGUL SYLLABLE JYULM;Lo;0;L;;;;;N;;;;; +C977;HANGUL SYLLABLE JYULB;Lo;0;L;;;;;N;;;;; +C978;HANGUL SYLLABLE JYULS;Lo;0;L;;;;;N;;;;; +C979;HANGUL SYLLABLE JYULT;Lo;0;L;;;;;N;;;;; +C97A;HANGUL SYLLABLE JYULP;Lo;0;L;;;;;N;;;;; +C97B;HANGUL SYLLABLE JYULH;Lo;0;L;;;;;N;;;;; +C97C;HANGUL SYLLABLE JYUM;Lo;0;L;;;;;N;;;;; +C97D;HANGUL SYLLABLE JYUB;Lo;0;L;;;;;N;;;;; +C97E;HANGUL SYLLABLE JYUBS;Lo;0;L;;;;;N;;;;; +C97F;HANGUL SYLLABLE JYUS;Lo;0;L;;;;;N;;;;; +C980;HANGUL SYLLABLE JYUSS;Lo;0;L;;;;;N;;;;; +C981;HANGUL SYLLABLE JYUNG;Lo;0;L;;;;;N;;;;; +C982;HANGUL SYLLABLE JYUJ;Lo;0;L;;;;;N;;;;; +C983;HANGUL SYLLABLE JYUC;Lo;0;L;;;;;N;;;;; +C984;HANGUL SYLLABLE JYUK;Lo;0;L;;;;;N;;;;; +C985;HANGUL SYLLABLE JYUT;Lo;0;L;;;;;N;;;;; +C986;HANGUL SYLLABLE JYUP;Lo;0;L;;;;;N;;;;; +C987;HANGUL SYLLABLE JYUH;Lo;0;L;;;;;N;;;;; +C988;HANGUL SYLLABLE JEU;Lo;0;L;;;;;N;;;;; +C989;HANGUL SYLLABLE JEUG;Lo;0;L;;;;;N;;;;; +C98A;HANGUL SYLLABLE JEUGG;Lo;0;L;;;;;N;;;;; +C98B;HANGUL SYLLABLE JEUGS;Lo;0;L;;;;;N;;;;; +C98C;HANGUL SYLLABLE JEUN;Lo;0;L;;;;;N;;;;; +C98D;HANGUL SYLLABLE JEUNI;Lo;0;L;;;;;N;;;;; +C98E;HANGUL SYLLABLE JEUNH;Lo;0;L;;;;;N;;;;; +C98F;HANGUL SYLLABLE JEUD;Lo;0;L;;;;;N;;;;; +C990;HANGUL SYLLABLE JEUL;Lo;0;L;;;;;N;;;;; +C991;HANGUL SYLLABLE JEULG;Lo;0;L;;;;;N;;;;; +C992;HANGUL SYLLABLE JEULM;Lo;0;L;;;;;N;;;;; +C993;HANGUL SYLLABLE JEULB;Lo;0;L;;;;;N;;;;; +C994;HANGUL SYLLABLE JEULS;Lo;0;L;;;;;N;;;;; +C995;HANGUL SYLLABLE JEULT;Lo;0;L;;;;;N;;;;; +C996;HANGUL SYLLABLE JEULP;Lo;0;L;;;;;N;;;;; +C997;HANGUL SYLLABLE JEULH;Lo;0;L;;;;;N;;;;; +C998;HANGUL SYLLABLE JEUM;Lo;0;L;;;;;N;;;;; +C999;HANGUL SYLLABLE JEUB;Lo;0;L;;;;;N;;;;; +C99A;HANGUL SYLLABLE JEUBS;Lo;0;L;;;;;N;;;;; +C99B;HANGUL SYLLABLE JEUS;Lo;0;L;;;;;N;;;;; +C99C;HANGUL SYLLABLE JEUSS;Lo;0;L;;;;;N;;;;; +C99D;HANGUL SYLLABLE JEUNG;Lo;0;L;;;;;N;;;;; +C99E;HANGUL SYLLABLE JEUJ;Lo;0;L;;;;;N;;;;; +C99F;HANGUL SYLLABLE JEUC;Lo;0;L;;;;;N;;;;; +C9A0;HANGUL SYLLABLE JEUK;Lo;0;L;;;;;N;;;;; +C9A1;HANGUL SYLLABLE JEUT;Lo;0;L;;;;;N;;;;; +C9A2;HANGUL SYLLABLE JEUP;Lo;0;L;;;;;N;;;;; +C9A3;HANGUL SYLLABLE JEUH;Lo;0;L;;;;;N;;;;; +C9A4;HANGUL SYLLABLE JYI;Lo;0;L;;;;;N;;;;; +C9A5;HANGUL SYLLABLE JYIG;Lo;0;L;;;;;N;;;;; +C9A6;HANGUL SYLLABLE JYIGG;Lo;0;L;;;;;N;;;;; +C9A7;HANGUL SYLLABLE JYIGS;Lo;0;L;;;;;N;;;;; +C9A8;HANGUL SYLLABLE JYIN;Lo;0;L;;;;;N;;;;; +C9A9;HANGUL SYLLABLE JYINI;Lo;0;L;;;;;N;;;;; +C9AA;HANGUL SYLLABLE JYINH;Lo;0;L;;;;;N;;;;; +C9AB;HANGUL SYLLABLE JYID;Lo;0;L;;;;;N;;;;; +C9AC;HANGUL SYLLABLE JYIL;Lo;0;L;;;;;N;;;;; +C9AD;HANGUL SYLLABLE JYILG;Lo;0;L;;;;;N;;;;; +C9AE;HANGUL SYLLABLE JYILM;Lo;0;L;;;;;N;;;;; +C9AF;HANGUL SYLLABLE JYILB;Lo;0;L;;;;;N;;;;; +C9B0;HANGUL SYLLABLE JYILS;Lo;0;L;;;;;N;;;;; +C9B1;HANGUL SYLLABLE JYILT;Lo;0;L;;;;;N;;;;; +C9B2;HANGUL SYLLABLE JYILP;Lo;0;L;;;;;N;;;;; +C9B3;HANGUL SYLLABLE JYILH;Lo;0;L;;;;;N;;;;; +C9B4;HANGUL SYLLABLE JYIM;Lo;0;L;;;;;N;;;;; +C9B5;HANGUL SYLLABLE JYIB;Lo;0;L;;;;;N;;;;; +C9B6;HANGUL SYLLABLE JYIBS;Lo;0;L;;;;;N;;;;; +C9B7;HANGUL SYLLABLE JYIS;Lo;0;L;;;;;N;;;;; +C9B8;HANGUL SYLLABLE JYISS;Lo;0;L;;;;;N;;;;; +C9B9;HANGUL SYLLABLE JYING;Lo;0;L;;;;;N;;;;; +C9BA;HANGUL SYLLABLE JYIJ;Lo;0;L;;;;;N;;;;; +C9BB;HANGUL SYLLABLE JYIC;Lo;0;L;;;;;N;;;;; +C9BC;HANGUL SYLLABLE JYIK;Lo;0;L;;;;;N;;;;; +C9BD;HANGUL SYLLABLE JYIT;Lo;0;L;;;;;N;;;;; +C9BE;HANGUL SYLLABLE JYIP;Lo;0;L;;;;;N;;;;; +C9BF;HANGUL SYLLABLE JYIH;Lo;0;L;;;;;N;;;;; +C9C0;HANGUL SYLLABLE JI;Lo;0;L;;;;;N;;;;; +C9C1;HANGUL SYLLABLE JIG;Lo;0;L;;;;;N;;;;; +C9C2;HANGUL SYLLABLE JIGG;Lo;0;L;;;;;N;;;;; +C9C3;HANGUL SYLLABLE JIGS;Lo;0;L;;;;;N;;;;; +C9C4;HANGUL SYLLABLE JIN;Lo;0;L;;;;;N;;;;; +C9C5;HANGUL SYLLABLE JINI;Lo;0;L;;;;;N;;;;; +C9C6;HANGUL SYLLABLE JINH;Lo;0;L;;;;;N;;;;; +C9C7;HANGUL SYLLABLE JID;Lo;0;L;;;;;N;;;;; +C9C8;HANGUL SYLLABLE JIL;Lo;0;L;;;;;N;;;;; +C9C9;HANGUL SYLLABLE JILG;Lo;0;L;;;;;N;;;;; +C9CA;HANGUL SYLLABLE JILM;Lo;0;L;;;;;N;;;;; +C9CB;HANGUL SYLLABLE JILB;Lo;0;L;;;;;N;;;;; +C9CC;HANGUL SYLLABLE JILS;Lo;0;L;;;;;N;;;;; +C9CD;HANGUL SYLLABLE JILT;Lo;0;L;;;;;N;;;;; +C9CE;HANGUL SYLLABLE JILP;Lo;0;L;;;;;N;;;;; +C9CF;HANGUL SYLLABLE JILH;Lo;0;L;;;;;N;;;;; +C9D0;HANGUL SYLLABLE JIM;Lo;0;L;;;;;N;;;;; +C9D1;HANGUL SYLLABLE JIB;Lo;0;L;;;;;N;;;;; +C9D2;HANGUL SYLLABLE JIBS;Lo;0;L;;;;;N;;;;; +C9D3;HANGUL SYLLABLE JIS;Lo;0;L;;;;;N;;;;; +C9D4;HANGUL SYLLABLE JISS;Lo;0;L;;;;;N;;;;; +C9D5;HANGUL SYLLABLE JING;Lo;0;L;;;;;N;;;;; +C9D6;HANGUL SYLLABLE JIJ;Lo;0;L;;;;;N;;;;; +C9D7;HANGUL SYLLABLE JIC;Lo;0;L;;;;;N;;;;; +C9D8;HANGUL SYLLABLE JIK;Lo;0;L;;;;;N;;;;; +C9D9;HANGUL SYLLABLE JIT;Lo;0;L;;;;;N;;;;; +C9DA;HANGUL SYLLABLE JIP;Lo;0;L;;;;;N;;;;; +C9DB;HANGUL SYLLABLE JIH;Lo;0;L;;;;;N;;;;; +C9DC;HANGUL SYLLABLE JJA;Lo;0;L;;;;;N;;;;; +C9DD;HANGUL SYLLABLE JJAG;Lo;0;L;;;;;N;;;;; +C9DE;HANGUL SYLLABLE JJAGG;Lo;0;L;;;;;N;;;;; +C9DF;HANGUL SYLLABLE JJAGS;Lo;0;L;;;;;N;;;;; +C9E0;HANGUL SYLLABLE JJAN;Lo;0;L;;;;;N;;;;; +C9E1;HANGUL SYLLABLE JJANI;Lo;0;L;;;;;N;;;;; +C9E2;HANGUL SYLLABLE JJANH;Lo;0;L;;;;;N;;;;; +C9E3;HANGUL SYLLABLE JJAD;Lo;0;L;;;;;N;;;;; +C9E4;HANGUL SYLLABLE JJAL;Lo;0;L;;;;;N;;;;; +C9E5;HANGUL SYLLABLE JJALG;Lo;0;L;;;;;N;;;;; +C9E6;HANGUL SYLLABLE JJALM;Lo;0;L;;;;;N;;;;; +C9E7;HANGUL SYLLABLE JJALB;Lo;0;L;;;;;N;;;;; +C9E8;HANGUL SYLLABLE JJALS;Lo;0;L;;;;;N;;;;; +C9E9;HANGUL SYLLABLE JJALT;Lo;0;L;;;;;N;;;;; +C9EA;HANGUL SYLLABLE JJALP;Lo;0;L;;;;;N;;;;; +C9EB;HANGUL SYLLABLE JJALH;Lo;0;L;;;;;N;;;;; +C9EC;HANGUL SYLLABLE JJAM;Lo;0;L;;;;;N;;;;; +C9ED;HANGUL SYLLABLE JJAB;Lo;0;L;;;;;N;;;;; +C9EE;HANGUL SYLLABLE JJABS;Lo;0;L;;;;;N;;;;; +C9EF;HANGUL SYLLABLE JJAS;Lo;0;L;;;;;N;;;;; +C9F0;HANGUL SYLLABLE JJASS;Lo;0;L;;;;;N;;;;; +C9F1;HANGUL SYLLABLE JJANG;Lo;0;L;;;;;N;;;;; +C9F2;HANGUL SYLLABLE JJAJ;Lo;0;L;;;;;N;;;;; +C9F3;HANGUL SYLLABLE JJAC;Lo;0;L;;;;;N;;;;; +C9F4;HANGUL SYLLABLE JJAK;Lo;0;L;;;;;N;;;;; +C9F5;HANGUL SYLLABLE JJAT;Lo;0;L;;;;;N;;;;; +C9F6;HANGUL SYLLABLE JJAP;Lo;0;L;;;;;N;;;;; +C9F7;HANGUL SYLLABLE JJAH;Lo;0;L;;;;;N;;;;; +C9F8;HANGUL SYLLABLE JJAE;Lo;0;L;;;;;N;;;;; +C9F9;HANGUL SYLLABLE JJAEG;Lo;0;L;;;;;N;;;;; +C9FA;HANGUL SYLLABLE JJAEGG;Lo;0;L;;;;;N;;;;; +C9FB;HANGUL SYLLABLE JJAEGS;Lo;0;L;;;;;N;;;;; +C9FC;HANGUL SYLLABLE JJAEN;Lo;0;L;;;;;N;;;;; +C9FD;HANGUL SYLLABLE JJAENI;Lo;0;L;;;;;N;;;;; +C9FE;HANGUL SYLLABLE JJAENH;Lo;0;L;;;;;N;;;;; +C9FF;HANGUL SYLLABLE JJAED;Lo;0;L;;;;;N;;;;; +CA00;HANGUL SYLLABLE JJAEL;Lo;0;L;;;;;N;;;;; +CA01;HANGUL SYLLABLE JJAELG;Lo;0;L;;;;;N;;;;; +CA02;HANGUL SYLLABLE JJAELM;Lo;0;L;;;;;N;;;;; +CA03;HANGUL SYLLABLE JJAELB;Lo;0;L;;;;;N;;;;; +CA04;HANGUL SYLLABLE JJAELS;Lo;0;L;;;;;N;;;;; +CA05;HANGUL SYLLABLE JJAELT;Lo;0;L;;;;;N;;;;; +CA06;HANGUL SYLLABLE JJAELP;Lo;0;L;;;;;N;;;;; +CA07;HANGUL SYLLABLE JJAELH;Lo;0;L;;;;;N;;;;; +CA08;HANGUL SYLLABLE JJAEM;Lo;0;L;;;;;N;;;;; +CA09;HANGUL SYLLABLE JJAEB;Lo;0;L;;;;;N;;;;; +CA0A;HANGUL SYLLABLE JJAEBS;Lo;0;L;;;;;N;;;;; +CA0B;HANGUL SYLLABLE JJAES;Lo;0;L;;;;;N;;;;; +CA0C;HANGUL SYLLABLE JJAESS;Lo;0;L;;;;;N;;;;; +CA0D;HANGUL SYLLABLE JJAENG;Lo;0;L;;;;;N;;;;; +CA0E;HANGUL SYLLABLE JJAEJ;Lo;0;L;;;;;N;;;;; +CA0F;HANGUL SYLLABLE JJAEC;Lo;0;L;;;;;N;;;;; +CA10;HANGUL SYLLABLE JJAEK;Lo;0;L;;;;;N;;;;; +CA11;HANGUL SYLLABLE JJAET;Lo;0;L;;;;;N;;;;; +CA12;HANGUL SYLLABLE JJAEP;Lo;0;L;;;;;N;;;;; +CA13;HANGUL SYLLABLE JJAEH;Lo;0;L;;;;;N;;;;; +CA14;HANGUL SYLLABLE JJYA;Lo;0;L;;;;;N;;;;; +CA15;HANGUL SYLLABLE JJYAG;Lo;0;L;;;;;N;;;;; +CA16;HANGUL SYLLABLE JJYAGG;Lo;0;L;;;;;N;;;;; +CA17;HANGUL SYLLABLE JJYAGS;Lo;0;L;;;;;N;;;;; +CA18;HANGUL SYLLABLE JJYAN;Lo;0;L;;;;;N;;;;; +CA19;HANGUL SYLLABLE JJYANI;Lo;0;L;;;;;N;;;;; +CA1A;HANGUL SYLLABLE JJYANH;Lo;0;L;;;;;N;;;;; +CA1B;HANGUL SYLLABLE JJYAD;Lo;0;L;;;;;N;;;;; +CA1C;HANGUL SYLLABLE JJYAL;Lo;0;L;;;;;N;;;;; +CA1D;HANGUL SYLLABLE JJYALG;Lo;0;L;;;;;N;;;;; +CA1E;HANGUL SYLLABLE JJYALM;Lo;0;L;;;;;N;;;;; +CA1F;HANGUL SYLLABLE JJYALB;Lo;0;L;;;;;N;;;;; +CA20;HANGUL SYLLABLE JJYALS;Lo;0;L;;;;;N;;;;; +CA21;HANGUL SYLLABLE JJYALT;Lo;0;L;;;;;N;;;;; +CA22;HANGUL SYLLABLE JJYALP;Lo;0;L;;;;;N;;;;; +CA23;HANGUL SYLLABLE JJYALH;Lo;0;L;;;;;N;;;;; +CA24;HANGUL SYLLABLE JJYAM;Lo;0;L;;;;;N;;;;; +CA25;HANGUL SYLLABLE JJYAB;Lo;0;L;;;;;N;;;;; +CA26;HANGUL SYLLABLE JJYABS;Lo;0;L;;;;;N;;;;; +CA27;HANGUL SYLLABLE JJYAS;Lo;0;L;;;;;N;;;;; +CA28;HANGUL SYLLABLE JJYASS;Lo;0;L;;;;;N;;;;; +CA29;HANGUL SYLLABLE JJYANG;Lo;0;L;;;;;N;;;;; +CA2A;HANGUL SYLLABLE JJYAJ;Lo;0;L;;;;;N;;;;; +CA2B;HANGUL SYLLABLE JJYAC;Lo;0;L;;;;;N;;;;; +CA2C;HANGUL SYLLABLE JJYAK;Lo;0;L;;;;;N;;;;; +CA2D;HANGUL SYLLABLE JJYAT;Lo;0;L;;;;;N;;;;; +CA2E;HANGUL SYLLABLE JJYAP;Lo;0;L;;;;;N;;;;; +CA2F;HANGUL SYLLABLE JJYAH;Lo;0;L;;;;;N;;;;; +CA30;HANGUL SYLLABLE JJYAE;Lo;0;L;;;;;N;;;;; +CA31;HANGUL SYLLABLE JJYAEG;Lo;0;L;;;;;N;;;;; +CA32;HANGUL SYLLABLE JJYAEGG;Lo;0;L;;;;;N;;;;; +CA33;HANGUL SYLLABLE JJYAEGS;Lo;0;L;;;;;N;;;;; +CA34;HANGUL SYLLABLE JJYAEN;Lo;0;L;;;;;N;;;;; +CA35;HANGUL SYLLABLE JJYAENI;Lo;0;L;;;;;N;;;;; +CA36;HANGUL SYLLABLE JJYAENH;Lo;0;L;;;;;N;;;;; +CA37;HANGUL SYLLABLE JJYAED;Lo;0;L;;;;;N;;;;; +CA38;HANGUL SYLLABLE JJYAEL;Lo;0;L;;;;;N;;;;; +CA39;HANGUL SYLLABLE JJYAELG;Lo;0;L;;;;;N;;;;; +CA3A;HANGUL SYLLABLE JJYAELM;Lo;0;L;;;;;N;;;;; +CA3B;HANGUL SYLLABLE JJYAELB;Lo;0;L;;;;;N;;;;; +CA3C;HANGUL SYLLABLE JJYAELS;Lo;0;L;;;;;N;;;;; +CA3D;HANGUL SYLLABLE JJYAELT;Lo;0;L;;;;;N;;;;; +CA3E;HANGUL SYLLABLE JJYAELP;Lo;0;L;;;;;N;;;;; +CA3F;HANGUL SYLLABLE JJYAELH;Lo;0;L;;;;;N;;;;; +CA40;HANGUL SYLLABLE JJYAEM;Lo;0;L;;;;;N;;;;; +CA41;HANGUL SYLLABLE JJYAEB;Lo;0;L;;;;;N;;;;; +CA42;HANGUL SYLLABLE JJYAEBS;Lo;0;L;;;;;N;;;;; +CA43;HANGUL SYLLABLE JJYAES;Lo;0;L;;;;;N;;;;; +CA44;HANGUL SYLLABLE JJYAESS;Lo;0;L;;;;;N;;;;; +CA45;HANGUL SYLLABLE JJYAENG;Lo;0;L;;;;;N;;;;; +CA46;HANGUL SYLLABLE JJYAEJ;Lo;0;L;;;;;N;;;;; +CA47;HANGUL SYLLABLE JJYAEC;Lo;0;L;;;;;N;;;;; +CA48;HANGUL SYLLABLE JJYAEK;Lo;0;L;;;;;N;;;;; +CA49;HANGUL SYLLABLE JJYAET;Lo;0;L;;;;;N;;;;; +CA4A;HANGUL SYLLABLE JJYAEP;Lo;0;L;;;;;N;;;;; +CA4B;HANGUL SYLLABLE JJYAEH;Lo;0;L;;;;;N;;;;; +CA4C;HANGUL SYLLABLE JJEO;Lo;0;L;;;;;N;;;;; +CA4D;HANGUL SYLLABLE JJEOG;Lo;0;L;;;;;N;;;;; +CA4E;HANGUL SYLLABLE JJEOGG;Lo;0;L;;;;;N;;;;; +CA4F;HANGUL SYLLABLE JJEOGS;Lo;0;L;;;;;N;;;;; +CA50;HANGUL SYLLABLE JJEON;Lo;0;L;;;;;N;;;;; +CA51;HANGUL SYLLABLE JJEONI;Lo;0;L;;;;;N;;;;; +CA52;HANGUL SYLLABLE JJEONH;Lo;0;L;;;;;N;;;;; +CA53;HANGUL SYLLABLE JJEOD;Lo;0;L;;;;;N;;;;; +CA54;HANGUL SYLLABLE JJEOL;Lo;0;L;;;;;N;;;;; +CA55;HANGUL SYLLABLE JJEOLG;Lo;0;L;;;;;N;;;;; +CA56;HANGUL SYLLABLE JJEOLM;Lo;0;L;;;;;N;;;;; +CA57;HANGUL SYLLABLE JJEOLB;Lo;0;L;;;;;N;;;;; +CA58;HANGUL SYLLABLE JJEOLS;Lo;0;L;;;;;N;;;;; +CA59;HANGUL SYLLABLE JJEOLT;Lo;0;L;;;;;N;;;;; +CA5A;HANGUL SYLLABLE JJEOLP;Lo;0;L;;;;;N;;;;; +CA5B;HANGUL SYLLABLE JJEOLH;Lo;0;L;;;;;N;;;;; +CA5C;HANGUL SYLLABLE JJEOM;Lo;0;L;;;;;N;;;;; +CA5D;HANGUL SYLLABLE JJEOB;Lo;0;L;;;;;N;;;;; +CA5E;HANGUL SYLLABLE JJEOBS;Lo;0;L;;;;;N;;;;; +CA5F;HANGUL SYLLABLE JJEOS;Lo;0;L;;;;;N;;;;; +CA60;HANGUL SYLLABLE JJEOSS;Lo;0;L;;;;;N;;;;; +CA61;HANGUL SYLLABLE JJEONG;Lo;0;L;;;;;N;;;;; +CA62;HANGUL SYLLABLE JJEOJ;Lo;0;L;;;;;N;;;;; +CA63;HANGUL SYLLABLE JJEOC;Lo;0;L;;;;;N;;;;; +CA64;HANGUL SYLLABLE JJEOK;Lo;0;L;;;;;N;;;;; +CA65;HANGUL SYLLABLE JJEOT;Lo;0;L;;;;;N;;;;; +CA66;HANGUL SYLLABLE JJEOP;Lo;0;L;;;;;N;;;;; +CA67;HANGUL SYLLABLE JJEOH;Lo;0;L;;;;;N;;;;; +CA68;HANGUL SYLLABLE JJE;Lo;0;L;;;;;N;;;;; +CA69;HANGUL SYLLABLE JJEG;Lo;0;L;;;;;N;;;;; +CA6A;HANGUL SYLLABLE JJEGG;Lo;0;L;;;;;N;;;;; +CA6B;HANGUL SYLLABLE JJEGS;Lo;0;L;;;;;N;;;;; +CA6C;HANGUL SYLLABLE JJEN;Lo;0;L;;;;;N;;;;; +CA6D;HANGUL SYLLABLE JJENI;Lo;0;L;;;;;N;;;;; +CA6E;HANGUL SYLLABLE JJENH;Lo;0;L;;;;;N;;;;; +CA6F;HANGUL SYLLABLE JJED;Lo;0;L;;;;;N;;;;; +CA70;HANGUL SYLLABLE JJEL;Lo;0;L;;;;;N;;;;; +CA71;HANGUL SYLLABLE JJELG;Lo;0;L;;;;;N;;;;; +CA72;HANGUL SYLLABLE JJELM;Lo;0;L;;;;;N;;;;; +CA73;HANGUL SYLLABLE JJELB;Lo;0;L;;;;;N;;;;; +CA74;HANGUL SYLLABLE JJELS;Lo;0;L;;;;;N;;;;; +CA75;HANGUL SYLLABLE JJELT;Lo;0;L;;;;;N;;;;; +CA76;HANGUL SYLLABLE JJELP;Lo;0;L;;;;;N;;;;; +CA77;HANGUL SYLLABLE JJELH;Lo;0;L;;;;;N;;;;; +CA78;HANGUL SYLLABLE JJEM;Lo;0;L;;;;;N;;;;; +CA79;HANGUL SYLLABLE JJEB;Lo;0;L;;;;;N;;;;; +CA7A;HANGUL SYLLABLE JJEBS;Lo;0;L;;;;;N;;;;; +CA7B;HANGUL SYLLABLE JJES;Lo;0;L;;;;;N;;;;; +CA7C;HANGUL SYLLABLE JJESS;Lo;0;L;;;;;N;;;;; +CA7D;HANGUL SYLLABLE JJENG;Lo;0;L;;;;;N;;;;; +CA7E;HANGUL SYLLABLE JJEJ;Lo;0;L;;;;;N;;;;; +CA7F;HANGUL SYLLABLE JJEC;Lo;0;L;;;;;N;;;;; +CA80;HANGUL SYLLABLE JJEK;Lo;0;L;;;;;N;;;;; +CA81;HANGUL SYLLABLE JJET;Lo;0;L;;;;;N;;;;; +CA82;HANGUL SYLLABLE JJEP;Lo;0;L;;;;;N;;;;; +CA83;HANGUL SYLLABLE JJEH;Lo;0;L;;;;;N;;;;; +CA84;HANGUL SYLLABLE JJYEO;Lo;0;L;;;;;N;;;;; +CA85;HANGUL SYLLABLE JJYEOG;Lo;0;L;;;;;N;;;;; +CA86;HANGUL SYLLABLE JJYEOGG;Lo;0;L;;;;;N;;;;; +CA87;HANGUL SYLLABLE JJYEOGS;Lo;0;L;;;;;N;;;;; +CA88;HANGUL SYLLABLE JJYEON;Lo;0;L;;;;;N;;;;; +CA89;HANGUL SYLLABLE JJYEONI;Lo;0;L;;;;;N;;;;; +CA8A;HANGUL SYLLABLE JJYEONH;Lo;0;L;;;;;N;;;;; +CA8B;HANGUL SYLLABLE JJYEOD;Lo;0;L;;;;;N;;;;; +CA8C;HANGUL SYLLABLE JJYEOL;Lo;0;L;;;;;N;;;;; +CA8D;HANGUL SYLLABLE JJYEOLG;Lo;0;L;;;;;N;;;;; +CA8E;HANGUL SYLLABLE JJYEOLM;Lo;0;L;;;;;N;;;;; +CA8F;HANGUL SYLLABLE JJYEOLB;Lo;0;L;;;;;N;;;;; +CA90;HANGUL SYLLABLE JJYEOLS;Lo;0;L;;;;;N;;;;; +CA91;HANGUL SYLLABLE JJYEOLT;Lo;0;L;;;;;N;;;;; +CA92;HANGUL SYLLABLE JJYEOLP;Lo;0;L;;;;;N;;;;; +CA93;HANGUL SYLLABLE JJYEOLH;Lo;0;L;;;;;N;;;;; +CA94;HANGUL SYLLABLE JJYEOM;Lo;0;L;;;;;N;;;;; +CA95;HANGUL SYLLABLE JJYEOB;Lo;0;L;;;;;N;;;;; +CA96;HANGUL SYLLABLE JJYEOBS;Lo;0;L;;;;;N;;;;; +CA97;HANGUL SYLLABLE JJYEOS;Lo;0;L;;;;;N;;;;; +CA98;HANGUL SYLLABLE JJYEOSS;Lo;0;L;;;;;N;;;;; +CA99;HANGUL SYLLABLE JJYEONG;Lo;0;L;;;;;N;;;;; +CA9A;HANGUL SYLLABLE JJYEOJ;Lo;0;L;;;;;N;;;;; +CA9B;HANGUL SYLLABLE JJYEOC;Lo;0;L;;;;;N;;;;; +CA9C;HANGUL SYLLABLE JJYEOK;Lo;0;L;;;;;N;;;;; +CA9D;HANGUL SYLLABLE JJYEOT;Lo;0;L;;;;;N;;;;; +CA9E;HANGUL SYLLABLE JJYEOP;Lo;0;L;;;;;N;;;;; +CA9F;HANGUL SYLLABLE JJYEOH;Lo;0;L;;;;;N;;;;; +CAA0;HANGUL SYLLABLE JJYE;Lo;0;L;;;;;N;;;;; +CAA1;HANGUL SYLLABLE JJYEG;Lo;0;L;;;;;N;;;;; +CAA2;HANGUL SYLLABLE JJYEGG;Lo;0;L;;;;;N;;;;; +CAA3;HANGUL SYLLABLE JJYEGS;Lo;0;L;;;;;N;;;;; +CAA4;HANGUL SYLLABLE JJYEN;Lo;0;L;;;;;N;;;;; +CAA5;HANGUL SYLLABLE JJYENI;Lo;0;L;;;;;N;;;;; +CAA6;HANGUL SYLLABLE JJYENH;Lo;0;L;;;;;N;;;;; +CAA7;HANGUL SYLLABLE JJYED;Lo;0;L;;;;;N;;;;; +CAA8;HANGUL SYLLABLE JJYEL;Lo;0;L;;;;;N;;;;; +CAA9;HANGUL SYLLABLE JJYELG;Lo;0;L;;;;;N;;;;; +CAAA;HANGUL SYLLABLE JJYELM;Lo;0;L;;;;;N;;;;; +CAAB;HANGUL SYLLABLE JJYELB;Lo;0;L;;;;;N;;;;; +CAAC;HANGUL SYLLABLE JJYELS;Lo;0;L;;;;;N;;;;; +CAAD;HANGUL SYLLABLE JJYELT;Lo;0;L;;;;;N;;;;; +CAAE;HANGUL SYLLABLE JJYELP;Lo;0;L;;;;;N;;;;; +CAAF;HANGUL SYLLABLE JJYELH;Lo;0;L;;;;;N;;;;; +CAB0;HANGUL SYLLABLE JJYEM;Lo;0;L;;;;;N;;;;; +CAB1;HANGUL SYLLABLE JJYEB;Lo;0;L;;;;;N;;;;; +CAB2;HANGUL SYLLABLE JJYEBS;Lo;0;L;;;;;N;;;;; +CAB3;HANGUL SYLLABLE JJYES;Lo;0;L;;;;;N;;;;; +CAB4;HANGUL SYLLABLE JJYESS;Lo;0;L;;;;;N;;;;; +CAB5;HANGUL SYLLABLE JJYENG;Lo;0;L;;;;;N;;;;; +CAB6;HANGUL SYLLABLE JJYEJ;Lo;0;L;;;;;N;;;;; +CAB7;HANGUL SYLLABLE JJYEC;Lo;0;L;;;;;N;;;;; +CAB8;HANGUL SYLLABLE JJYEK;Lo;0;L;;;;;N;;;;; +CAB9;HANGUL SYLLABLE JJYET;Lo;0;L;;;;;N;;;;; +CABA;HANGUL SYLLABLE JJYEP;Lo;0;L;;;;;N;;;;; +CABB;HANGUL SYLLABLE JJYEH;Lo;0;L;;;;;N;;;;; +CABC;HANGUL SYLLABLE JJO;Lo;0;L;;;;;N;;;;; +CABD;HANGUL SYLLABLE JJOG;Lo;0;L;;;;;N;;;;; +CABE;HANGUL SYLLABLE JJOGG;Lo;0;L;;;;;N;;;;; +CABF;HANGUL SYLLABLE JJOGS;Lo;0;L;;;;;N;;;;; +CAC0;HANGUL SYLLABLE JJON;Lo;0;L;;;;;N;;;;; +CAC1;HANGUL SYLLABLE JJONI;Lo;0;L;;;;;N;;;;; +CAC2;HANGUL SYLLABLE JJONH;Lo;0;L;;;;;N;;;;; +CAC3;HANGUL SYLLABLE JJOD;Lo;0;L;;;;;N;;;;; +CAC4;HANGUL SYLLABLE JJOL;Lo;0;L;;;;;N;;;;; +CAC5;HANGUL SYLLABLE JJOLG;Lo;0;L;;;;;N;;;;; +CAC6;HANGUL SYLLABLE JJOLM;Lo;0;L;;;;;N;;;;; +CAC7;HANGUL SYLLABLE JJOLB;Lo;0;L;;;;;N;;;;; +CAC8;HANGUL SYLLABLE JJOLS;Lo;0;L;;;;;N;;;;; +CAC9;HANGUL SYLLABLE JJOLT;Lo;0;L;;;;;N;;;;; +CACA;HANGUL SYLLABLE JJOLP;Lo;0;L;;;;;N;;;;; +CACB;HANGUL SYLLABLE JJOLH;Lo;0;L;;;;;N;;;;; +CACC;HANGUL SYLLABLE JJOM;Lo;0;L;;;;;N;;;;; +CACD;HANGUL SYLLABLE JJOB;Lo;0;L;;;;;N;;;;; +CACE;HANGUL SYLLABLE JJOBS;Lo;0;L;;;;;N;;;;; +CACF;HANGUL SYLLABLE JJOS;Lo;0;L;;;;;N;;;;; +CAD0;HANGUL SYLLABLE JJOSS;Lo;0;L;;;;;N;;;;; +CAD1;HANGUL SYLLABLE JJONG;Lo;0;L;;;;;N;;;;; +CAD2;HANGUL SYLLABLE JJOJ;Lo;0;L;;;;;N;;;;; +CAD3;HANGUL SYLLABLE JJOC;Lo;0;L;;;;;N;;;;; +CAD4;HANGUL SYLLABLE JJOK;Lo;0;L;;;;;N;;;;; +CAD5;HANGUL SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; +CAD6;HANGUL SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; +CAD7;HANGUL SYLLABLE JJOH;Lo;0;L;;;;;N;;;;; +CAD8;HANGUL SYLLABLE JJWA;Lo;0;L;;;;;N;;;;; +CAD9;HANGUL SYLLABLE JJWAG;Lo;0;L;;;;;N;;;;; +CADA;HANGUL SYLLABLE JJWAGG;Lo;0;L;;;;;N;;;;; +CADB;HANGUL SYLLABLE JJWAGS;Lo;0;L;;;;;N;;;;; +CADC;HANGUL SYLLABLE JJWAN;Lo;0;L;;;;;N;;;;; +CADD;HANGUL SYLLABLE JJWANI;Lo;0;L;;;;;N;;;;; +CADE;HANGUL SYLLABLE JJWANH;Lo;0;L;;;;;N;;;;; +CADF;HANGUL SYLLABLE JJWAD;Lo;0;L;;;;;N;;;;; +CAE0;HANGUL SYLLABLE JJWAL;Lo;0;L;;;;;N;;;;; +CAE1;HANGUL SYLLABLE JJWALG;Lo;0;L;;;;;N;;;;; +CAE2;HANGUL SYLLABLE JJWALM;Lo;0;L;;;;;N;;;;; +CAE3;HANGUL SYLLABLE JJWALB;Lo;0;L;;;;;N;;;;; +CAE4;HANGUL SYLLABLE JJWALS;Lo;0;L;;;;;N;;;;; +CAE5;HANGUL SYLLABLE JJWALT;Lo;0;L;;;;;N;;;;; +CAE6;HANGUL SYLLABLE JJWALP;Lo;0;L;;;;;N;;;;; +CAE7;HANGUL SYLLABLE JJWALH;Lo;0;L;;;;;N;;;;; +CAE8;HANGUL SYLLABLE JJWAM;Lo;0;L;;;;;N;;;;; +CAE9;HANGUL SYLLABLE JJWAB;Lo;0;L;;;;;N;;;;; +CAEA;HANGUL SYLLABLE JJWABS;Lo;0;L;;;;;N;;;;; +CAEB;HANGUL SYLLABLE JJWAS;Lo;0;L;;;;;N;;;;; +CAEC;HANGUL SYLLABLE JJWASS;Lo;0;L;;;;;N;;;;; +CAED;HANGUL SYLLABLE JJWANG;Lo;0;L;;;;;N;;;;; +CAEE;HANGUL SYLLABLE JJWAJ;Lo;0;L;;;;;N;;;;; +CAEF;HANGUL SYLLABLE JJWAC;Lo;0;L;;;;;N;;;;; +CAF0;HANGUL SYLLABLE JJWAK;Lo;0;L;;;;;N;;;;; +CAF1;HANGUL SYLLABLE JJWAT;Lo;0;L;;;;;N;;;;; +CAF2;HANGUL SYLLABLE JJWAP;Lo;0;L;;;;;N;;;;; +CAF3;HANGUL SYLLABLE JJWAH;Lo;0;L;;;;;N;;;;; +CAF4;HANGUL SYLLABLE JJWAE;Lo;0;L;;;;;N;;;;; +CAF5;HANGUL SYLLABLE JJWAEG;Lo;0;L;;;;;N;;;;; +CAF6;HANGUL SYLLABLE JJWAEGG;Lo;0;L;;;;;N;;;;; +CAF7;HANGUL SYLLABLE JJWAEGS;Lo;0;L;;;;;N;;;;; +CAF8;HANGUL SYLLABLE JJWAEN;Lo;0;L;;;;;N;;;;; +CAF9;HANGUL SYLLABLE JJWAENI;Lo;0;L;;;;;N;;;;; +CAFA;HANGUL SYLLABLE JJWAENH;Lo;0;L;;;;;N;;;;; +CAFB;HANGUL SYLLABLE JJWAED;Lo;0;L;;;;;N;;;;; +CAFC;HANGUL SYLLABLE JJWAEL;Lo;0;L;;;;;N;;;;; +CAFD;HANGUL SYLLABLE JJWAELG;Lo;0;L;;;;;N;;;;; +CAFE;HANGUL SYLLABLE JJWAELM;Lo;0;L;;;;;N;;;;; +CAFF;HANGUL SYLLABLE JJWAELB;Lo;0;L;;;;;N;;;;; +CB00;HANGUL SYLLABLE JJWAELS;Lo;0;L;;;;;N;;;;; +CB01;HANGUL SYLLABLE JJWAELT;Lo;0;L;;;;;N;;;;; +CB02;HANGUL SYLLABLE JJWAELP;Lo;0;L;;;;;N;;;;; +CB03;HANGUL SYLLABLE JJWAELH;Lo;0;L;;;;;N;;;;; +CB04;HANGUL SYLLABLE JJWAEM;Lo;0;L;;;;;N;;;;; +CB05;HANGUL SYLLABLE JJWAEB;Lo;0;L;;;;;N;;;;; +CB06;HANGUL SYLLABLE JJWAEBS;Lo;0;L;;;;;N;;;;; +CB07;HANGUL SYLLABLE JJWAES;Lo;0;L;;;;;N;;;;; +CB08;HANGUL SYLLABLE JJWAESS;Lo;0;L;;;;;N;;;;; +CB09;HANGUL SYLLABLE JJWAENG;Lo;0;L;;;;;N;;;;; +CB0A;HANGUL SYLLABLE JJWAEJ;Lo;0;L;;;;;N;;;;; +CB0B;HANGUL SYLLABLE JJWAEC;Lo;0;L;;;;;N;;;;; +CB0C;HANGUL SYLLABLE JJWAEK;Lo;0;L;;;;;N;;;;; +CB0D;HANGUL SYLLABLE JJWAET;Lo;0;L;;;;;N;;;;; +CB0E;HANGUL SYLLABLE JJWAEP;Lo;0;L;;;;;N;;;;; +CB0F;HANGUL SYLLABLE JJWAEH;Lo;0;L;;;;;N;;;;; +CB10;HANGUL SYLLABLE JJOE;Lo;0;L;;;;;N;;;;; +CB11;HANGUL SYLLABLE JJOEG;Lo;0;L;;;;;N;;;;; +CB12;HANGUL SYLLABLE JJOEGG;Lo;0;L;;;;;N;;;;; +CB13;HANGUL SYLLABLE JJOEGS;Lo;0;L;;;;;N;;;;; +CB14;HANGUL SYLLABLE JJOEN;Lo;0;L;;;;;N;;;;; +CB15;HANGUL SYLLABLE JJOENI;Lo;0;L;;;;;N;;;;; +CB16;HANGUL SYLLABLE JJOENH;Lo;0;L;;;;;N;;;;; +CB17;HANGUL SYLLABLE JJOED;Lo;0;L;;;;;N;;;;; +CB18;HANGUL SYLLABLE JJOEL;Lo;0;L;;;;;N;;;;; +CB19;HANGUL SYLLABLE JJOELG;Lo;0;L;;;;;N;;;;; +CB1A;HANGUL SYLLABLE JJOELM;Lo;0;L;;;;;N;;;;; +CB1B;HANGUL SYLLABLE JJOELB;Lo;0;L;;;;;N;;;;; +CB1C;HANGUL SYLLABLE JJOELS;Lo;0;L;;;;;N;;;;; +CB1D;HANGUL SYLLABLE JJOELT;Lo;0;L;;;;;N;;;;; +CB1E;HANGUL SYLLABLE JJOELP;Lo;0;L;;;;;N;;;;; +CB1F;HANGUL SYLLABLE JJOELH;Lo;0;L;;;;;N;;;;; +CB20;HANGUL SYLLABLE JJOEM;Lo;0;L;;;;;N;;;;; +CB21;HANGUL SYLLABLE JJOEB;Lo;0;L;;;;;N;;;;; +CB22;HANGUL SYLLABLE JJOEBS;Lo;0;L;;;;;N;;;;; +CB23;HANGUL SYLLABLE JJOES;Lo;0;L;;;;;N;;;;; +CB24;HANGUL SYLLABLE JJOESS;Lo;0;L;;;;;N;;;;; +CB25;HANGUL SYLLABLE JJOENG;Lo;0;L;;;;;N;;;;; +CB26;HANGUL SYLLABLE JJOEJ;Lo;0;L;;;;;N;;;;; +CB27;HANGUL SYLLABLE JJOEC;Lo;0;L;;;;;N;;;;; +CB28;HANGUL SYLLABLE JJOEK;Lo;0;L;;;;;N;;;;; +CB29;HANGUL SYLLABLE JJOET;Lo;0;L;;;;;N;;;;; +CB2A;HANGUL SYLLABLE JJOEP;Lo;0;L;;;;;N;;;;; +CB2B;HANGUL SYLLABLE JJOEH;Lo;0;L;;;;;N;;;;; +CB2C;HANGUL SYLLABLE JJYO;Lo;0;L;;;;;N;;;;; +CB2D;HANGUL SYLLABLE JJYOG;Lo;0;L;;;;;N;;;;; +CB2E;HANGUL SYLLABLE JJYOGG;Lo;0;L;;;;;N;;;;; +CB2F;HANGUL SYLLABLE JJYOGS;Lo;0;L;;;;;N;;;;; +CB30;HANGUL SYLLABLE JJYON;Lo;0;L;;;;;N;;;;; +CB31;HANGUL SYLLABLE JJYONI;Lo;0;L;;;;;N;;;;; +CB32;HANGUL SYLLABLE JJYONH;Lo;0;L;;;;;N;;;;; +CB33;HANGUL SYLLABLE JJYOD;Lo;0;L;;;;;N;;;;; +CB34;HANGUL SYLLABLE JJYOL;Lo;0;L;;;;;N;;;;; +CB35;HANGUL SYLLABLE JJYOLG;Lo;0;L;;;;;N;;;;; +CB36;HANGUL SYLLABLE JJYOLM;Lo;0;L;;;;;N;;;;; +CB37;HANGUL SYLLABLE JJYOLB;Lo;0;L;;;;;N;;;;; +CB38;HANGUL SYLLABLE JJYOLS;Lo;0;L;;;;;N;;;;; +CB39;HANGUL SYLLABLE JJYOLT;Lo;0;L;;;;;N;;;;; +CB3A;HANGUL SYLLABLE JJYOLP;Lo;0;L;;;;;N;;;;; +CB3B;HANGUL SYLLABLE JJYOLH;Lo;0;L;;;;;N;;;;; +CB3C;HANGUL SYLLABLE JJYOM;Lo;0;L;;;;;N;;;;; +CB3D;HANGUL SYLLABLE JJYOB;Lo;0;L;;;;;N;;;;; +CB3E;HANGUL SYLLABLE JJYOBS;Lo;0;L;;;;;N;;;;; +CB3F;HANGUL SYLLABLE JJYOS;Lo;0;L;;;;;N;;;;; +CB40;HANGUL SYLLABLE JJYOSS;Lo;0;L;;;;;N;;;;; +CB41;HANGUL SYLLABLE JJYONG;Lo;0;L;;;;;N;;;;; +CB42;HANGUL SYLLABLE JJYOJ;Lo;0;L;;;;;N;;;;; +CB43;HANGUL SYLLABLE JJYOC;Lo;0;L;;;;;N;;;;; +CB44;HANGUL SYLLABLE JJYOK;Lo;0;L;;;;;N;;;;; +CB45;HANGUL SYLLABLE JJYOT;Lo;0;L;;;;;N;;;;; +CB46;HANGUL SYLLABLE JJYOP;Lo;0;L;;;;;N;;;;; +CB47;HANGUL SYLLABLE JJYOH;Lo;0;L;;;;;N;;;;; +CB48;HANGUL SYLLABLE JJU;Lo;0;L;;;;;N;;;;; +CB49;HANGUL SYLLABLE JJUG;Lo;0;L;;;;;N;;;;; +CB4A;HANGUL SYLLABLE JJUGG;Lo;0;L;;;;;N;;;;; +CB4B;HANGUL SYLLABLE JJUGS;Lo;0;L;;;;;N;;;;; +CB4C;HANGUL SYLLABLE JJUN;Lo;0;L;;;;;N;;;;; +CB4D;HANGUL SYLLABLE JJUNI;Lo;0;L;;;;;N;;;;; +CB4E;HANGUL SYLLABLE JJUNH;Lo;0;L;;;;;N;;;;; +CB4F;HANGUL SYLLABLE JJUD;Lo;0;L;;;;;N;;;;; +CB50;HANGUL SYLLABLE JJUL;Lo;0;L;;;;;N;;;;; +CB51;HANGUL SYLLABLE JJULG;Lo;0;L;;;;;N;;;;; +CB52;HANGUL SYLLABLE JJULM;Lo;0;L;;;;;N;;;;; +CB53;HANGUL SYLLABLE JJULB;Lo;0;L;;;;;N;;;;; +CB54;HANGUL SYLLABLE JJULS;Lo;0;L;;;;;N;;;;; +CB55;HANGUL SYLLABLE JJULT;Lo;0;L;;;;;N;;;;; +CB56;HANGUL SYLLABLE JJULP;Lo;0;L;;;;;N;;;;; +CB57;HANGUL SYLLABLE JJULH;Lo;0;L;;;;;N;;;;; +CB58;HANGUL SYLLABLE JJUM;Lo;0;L;;;;;N;;;;; +CB59;HANGUL SYLLABLE JJUB;Lo;0;L;;;;;N;;;;; +CB5A;HANGUL SYLLABLE JJUBS;Lo;0;L;;;;;N;;;;; +CB5B;HANGUL SYLLABLE JJUS;Lo;0;L;;;;;N;;;;; +CB5C;HANGUL SYLLABLE JJUSS;Lo;0;L;;;;;N;;;;; +CB5D;HANGUL SYLLABLE JJUNG;Lo;0;L;;;;;N;;;;; +CB5E;HANGUL SYLLABLE JJUJ;Lo;0;L;;;;;N;;;;; +CB5F;HANGUL SYLLABLE JJUC;Lo;0;L;;;;;N;;;;; +CB60;HANGUL SYLLABLE JJUK;Lo;0;L;;;;;N;;;;; +CB61;HANGUL SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; +CB62;HANGUL SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; +CB63;HANGUL SYLLABLE JJUH;Lo;0;L;;;;;N;;;;; +CB64;HANGUL SYLLABLE JJWEO;Lo;0;L;;;;;N;;;;; +CB65;HANGUL SYLLABLE JJWEOG;Lo;0;L;;;;;N;;;;; +CB66;HANGUL SYLLABLE JJWEOGG;Lo;0;L;;;;;N;;;;; +CB67;HANGUL SYLLABLE JJWEOGS;Lo;0;L;;;;;N;;;;; +CB68;HANGUL SYLLABLE JJWEON;Lo;0;L;;;;;N;;;;; +CB69;HANGUL SYLLABLE JJWEONI;Lo;0;L;;;;;N;;;;; +CB6A;HANGUL SYLLABLE JJWEONH;Lo;0;L;;;;;N;;;;; +CB6B;HANGUL SYLLABLE JJWEOD;Lo;0;L;;;;;N;;;;; +CB6C;HANGUL SYLLABLE JJWEOL;Lo;0;L;;;;;N;;;;; +CB6D;HANGUL SYLLABLE JJWEOLG;Lo;0;L;;;;;N;;;;; +CB6E;HANGUL SYLLABLE JJWEOLM;Lo;0;L;;;;;N;;;;; +CB6F;HANGUL SYLLABLE JJWEOLB;Lo;0;L;;;;;N;;;;; +CB70;HANGUL SYLLABLE JJWEOLS;Lo;0;L;;;;;N;;;;; +CB71;HANGUL SYLLABLE JJWEOLT;Lo;0;L;;;;;N;;;;; +CB72;HANGUL SYLLABLE JJWEOLP;Lo;0;L;;;;;N;;;;; +CB73;HANGUL SYLLABLE JJWEOLH;Lo;0;L;;;;;N;;;;; +CB74;HANGUL SYLLABLE JJWEOM;Lo;0;L;;;;;N;;;;; +CB75;HANGUL SYLLABLE JJWEOB;Lo;0;L;;;;;N;;;;; +CB76;HANGUL SYLLABLE JJWEOBS;Lo;0;L;;;;;N;;;;; +CB77;HANGUL SYLLABLE JJWEOS;Lo;0;L;;;;;N;;;;; +CB78;HANGUL SYLLABLE JJWEOSS;Lo;0;L;;;;;N;;;;; +CB79;HANGUL SYLLABLE JJWEONG;Lo;0;L;;;;;N;;;;; +CB7A;HANGUL SYLLABLE JJWEOJ;Lo;0;L;;;;;N;;;;; +CB7B;HANGUL SYLLABLE JJWEOC;Lo;0;L;;;;;N;;;;; +CB7C;HANGUL SYLLABLE JJWEOK;Lo;0;L;;;;;N;;;;; +CB7D;HANGUL SYLLABLE JJWEOT;Lo;0;L;;;;;N;;;;; +CB7E;HANGUL SYLLABLE JJWEOP;Lo;0;L;;;;;N;;;;; +CB7F;HANGUL SYLLABLE JJWEOH;Lo;0;L;;;;;N;;;;; +CB80;HANGUL SYLLABLE JJWE;Lo;0;L;;;;;N;;;;; +CB81;HANGUL SYLLABLE JJWEG;Lo;0;L;;;;;N;;;;; +CB82;HANGUL SYLLABLE JJWEGG;Lo;0;L;;;;;N;;;;; +CB83;HANGUL SYLLABLE JJWEGS;Lo;0;L;;;;;N;;;;; +CB84;HANGUL SYLLABLE JJWEN;Lo;0;L;;;;;N;;;;; +CB85;HANGUL SYLLABLE JJWENI;Lo;0;L;;;;;N;;;;; +CB86;HANGUL SYLLABLE JJWENH;Lo;0;L;;;;;N;;;;; +CB87;HANGUL SYLLABLE JJWED;Lo;0;L;;;;;N;;;;; +CB88;HANGUL SYLLABLE JJWEL;Lo;0;L;;;;;N;;;;; +CB89;HANGUL SYLLABLE JJWELG;Lo;0;L;;;;;N;;;;; +CB8A;HANGUL SYLLABLE JJWELM;Lo;0;L;;;;;N;;;;; +CB8B;HANGUL SYLLABLE JJWELB;Lo;0;L;;;;;N;;;;; +CB8C;HANGUL SYLLABLE JJWELS;Lo;0;L;;;;;N;;;;; +CB8D;HANGUL SYLLABLE JJWELT;Lo;0;L;;;;;N;;;;; +CB8E;HANGUL SYLLABLE JJWELP;Lo;0;L;;;;;N;;;;; +CB8F;HANGUL SYLLABLE JJWELH;Lo;0;L;;;;;N;;;;; +CB90;HANGUL SYLLABLE JJWEM;Lo;0;L;;;;;N;;;;; +CB91;HANGUL SYLLABLE JJWEB;Lo;0;L;;;;;N;;;;; +CB92;HANGUL SYLLABLE JJWEBS;Lo;0;L;;;;;N;;;;; +CB93;HANGUL SYLLABLE JJWES;Lo;0;L;;;;;N;;;;; +CB94;HANGUL SYLLABLE JJWESS;Lo;0;L;;;;;N;;;;; +CB95;HANGUL SYLLABLE JJWENG;Lo;0;L;;;;;N;;;;; +CB96;HANGUL SYLLABLE JJWEJ;Lo;0;L;;;;;N;;;;; +CB97;HANGUL SYLLABLE JJWEC;Lo;0;L;;;;;N;;;;; +CB98;HANGUL SYLLABLE JJWEK;Lo;0;L;;;;;N;;;;; +CB99;HANGUL SYLLABLE JJWET;Lo;0;L;;;;;N;;;;; +CB9A;HANGUL SYLLABLE JJWEP;Lo;0;L;;;;;N;;;;; +CB9B;HANGUL SYLLABLE JJWEH;Lo;0;L;;;;;N;;;;; +CB9C;HANGUL SYLLABLE JJWI;Lo;0;L;;;;;N;;;;; +CB9D;HANGUL SYLLABLE JJWIG;Lo;0;L;;;;;N;;;;; +CB9E;HANGUL SYLLABLE JJWIGG;Lo;0;L;;;;;N;;;;; +CB9F;HANGUL SYLLABLE JJWIGS;Lo;0;L;;;;;N;;;;; +CBA0;HANGUL SYLLABLE JJWIN;Lo;0;L;;;;;N;;;;; +CBA1;HANGUL SYLLABLE JJWINI;Lo;0;L;;;;;N;;;;; +CBA2;HANGUL SYLLABLE JJWINH;Lo;0;L;;;;;N;;;;; +CBA3;HANGUL SYLLABLE JJWID;Lo;0;L;;;;;N;;;;; +CBA4;HANGUL SYLLABLE JJWIL;Lo;0;L;;;;;N;;;;; +CBA5;HANGUL SYLLABLE JJWILG;Lo;0;L;;;;;N;;;;; +CBA6;HANGUL SYLLABLE JJWILM;Lo;0;L;;;;;N;;;;; +CBA7;HANGUL SYLLABLE JJWILB;Lo;0;L;;;;;N;;;;; +CBA8;HANGUL SYLLABLE JJWILS;Lo;0;L;;;;;N;;;;; +CBA9;HANGUL SYLLABLE JJWILT;Lo;0;L;;;;;N;;;;; +CBAA;HANGUL SYLLABLE JJWILP;Lo;0;L;;;;;N;;;;; +CBAB;HANGUL SYLLABLE JJWILH;Lo;0;L;;;;;N;;;;; +CBAC;HANGUL SYLLABLE JJWIM;Lo;0;L;;;;;N;;;;; +CBAD;HANGUL SYLLABLE JJWIB;Lo;0;L;;;;;N;;;;; +CBAE;HANGUL SYLLABLE JJWIBS;Lo;0;L;;;;;N;;;;; +CBAF;HANGUL SYLLABLE JJWIS;Lo;0;L;;;;;N;;;;; +CBB0;HANGUL SYLLABLE JJWISS;Lo;0;L;;;;;N;;;;; +CBB1;HANGUL SYLLABLE JJWING;Lo;0;L;;;;;N;;;;; +CBB2;HANGUL SYLLABLE JJWIJ;Lo;0;L;;;;;N;;;;; +CBB3;HANGUL SYLLABLE JJWIC;Lo;0;L;;;;;N;;;;; +CBB4;HANGUL SYLLABLE JJWIK;Lo;0;L;;;;;N;;;;; +CBB5;HANGUL SYLLABLE JJWIT;Lo;0;L;;;;;N;;;;; +CBB6;HANGUL SYLLABLE JJWIP;Lo;0;L;;;;;N;;;;; +CBB7;HANGUL SYLLABLE JJWIH;Lo;0;L;;;;;N;;;;; +CBB8;HANGUL SYLLABLE JJYU;Lo;0;L;;;;;N;;;;; +CBB9;HANGUL SYLLABLE JJYUG;Lo;0;L;;;;;N;;;;; +CBBA;HANGUL SYLLABLE JJYUGG;Lo;0;L;;;;;N;;;;; +CBBB;HANGUL SYLLABLE JJYUGS;Lo;0;L;;;;;N;;;;; +CBBC;HANGUL SYLLABLE JJYUN;Lo;0;L;;;;;N;;;;; +CBBD;HANGUL SYLLABLE JJYUNI;Lo;0;L;;;;;N;;;;; +CBBE;HANGUL SYLLABLE JJYUNH;Lo;0;L;;;;;N;;;;; +CBBF;HANGUL SYLLABLE JJYUD;Lo;0;L;;;;;N;;;;; +CBC0;HANGUL SYLLABLE JJYUL;Lo;0;L;;;;;N;;;;; +CBC1;HANGUL SYLLABLE JJYULG;Lo;0;L;;;;;N;;;;; +CBC2;HANGUL SYLLABLE JJYULM;Lo;0;L;;;;;N;;;;; +CBC3;HANGUL SYLLABLE JJYULB;Lo;0;L;;;;;N;;;;; +CBC4;HANGUL SYLLABLE JJYULS;Lo;0;L;;;;;N;;;;; +CBC5;HANGUL SYLLABLE JJYULT;Lo;0;L;;;;;N;;;;; +CBC6;HANGUL SYLLABLE JJYULP;Lo;0;L;;;;;N;;;;; +CBC7;HANGUL SYLLABLE JJYULH;Lo;0;L;;;;;N;;;;; +CBC8;HANGUL SYLLABLE JJYUM;Lo;0;L;;;;;N;;;;; +CBC9;HANGUL SYLLABLE JJYUB;Lo;0;L;;;;;N;;;;; +CBCA;HANGUL SYLLABLE JJYUBS;Lo;0;L;;;;;N;;;;; +CBCB;HANGUL SYLLABLE JJYUS;Lo;0;L;;;;;N;;;;; +CBCC;HANGUL SYLLABLE JJYUSS;Lo;0;L;;;;;N;;;;; +CBCD;HANGUL SYLLABLE JJYUNG;Lo;0;L;;;;;N;;;;; +CBCE;HANGUL SYLLABLE JJYUJ;Lo;0;L;;;;;N;;;;; +CBCF;HANGUL SYLLABLE JJYUC;Lo;0;L;;;;;N;;;;; +CBD0;HANGUL SYLLABLE JJYUK;Lo;0;L;;;;;N;;;;; +CBD1;HANGUL SYLLABLE JJYUT;Lo;0;L;;;;;N;;;;; +CBD2;HANGUL SYLLABLE JJYUP;Lo;0;L;;;;;N;;;;; +CBD3;HANGUL SYLLABLE JJYUH;Lo;0;L;;;;;N;;;;; +CBD4;HANGUL SYLLABLE JJEU;Lo;0;L;;;;;N;;;;; +CBD5;HANGUL SYLLABLE JJEUG;Lo;0;L;;;;;N;;;;; +CBD6;HANGUL SYLLABLE JJEUGG;Lo;0;L;;;;;N;;;;; +CBD7;HANGUL SYLLABLE JJEUGS;Lo;0;L;;;;;N;;;;; +CBD8;HANGUL SYLLABLE JJEUN;Lo;0;L;;;;;N;;;;; +CBD9;HANGUL SYLLABLE JJEUNI;Lo;0;L;;;;;N;;;;; +CBDA;HANGUL SYLLABLE JJEUNH;Lo;0;L;;;;;N;;;;; +CBDB;HANGUL SYLLABLE JJEUD;Lo;0;L;;;;;N;;;;; +CBDC;HANGUL SYLLABLE JJEUL;Lo;0;L;;;;;N;;;;; +CBDD;HANGUL SYLLABLE JJEULG;Lo;0;L;;;;;N;;;;; +CBDE;HANGUL SYLLABLE JJEULM;Lo;0;L;;;;;N;;;;; +CBDF;HANGUL SYLLABLE JJEULB;Lo;0;L;;;;;N;;;;; +CBE0;HANGUL SYLLABLE JJEULS;Lo;0;L;;;;;N;;;;; +CBE1;HANGUL SYLLABLE JJEULT;Lo;0;L;;;;;N;;;;; +CBE2;HANGUL SYLLABLE JJEULP;Lo;0;L;;;;;N;;;;; +CBE3;HANGUL SYLLABLE JJEULH;Lo;0;L;;;;;N;;;;; +CBE4;HANGUL SYLLABLE JJEUM;Lo;0;L;;;;;N;;;;; +CBE5;HANGUL SYLLABLE JJEUB;Lo;0;L;;;;;N;;;;; +CBE6;HANGUL SYLLABLE JJEUBS;Lo;0;L;;;;;N;;;;; +CBE7;HANGUL SYLLABLE JJEUS;Lo;0;L;;;;;N;;;;; +CBE8;HANGUL SYLLABLE JJEUSS;Lo;0;L;;;;;N;;;;; +CBE9;HANGUL SYLLABLE JJEUNG;Lo;0;L;;;;;N;;;;; +CBEA;HANGUL SYLLABLE JJEUJ;Lo;0;L;;;;;N;;;;; +CBEB;HANGUL SYLLABLE JJEUC;Lo;0;L;;;;;N;;;;; +CBEC;HANGUL SYLLABLE JJEUK;Lo;0;L;;;;;N;;;;; +CBED;HANGUL SYLLABLE JJEUT;Lo;0;L;;;;;N;;;;; +CBEE;HANGUL SYLLABLE JJEUP;Lo;0;L;;;;;N;;;;; +CBEF;HANGUL SYLLABLE JJEUH;Lo;0;L;;;;;N;;;;; +CBF0;HANGUL SYLLABLE JJYI;Lo;0;L;;;;;N;;;;; +CBF1;HANGUL SYLLABLE JJYIG;Lo;0;L;;;;;N;;;;; +CBF2;HANGUL SYLLABLE JJYIGG;Lo;0;L;;;;;N;;;;; +CBF3;HANGUL SYLLABLE JJYIGS;Lo;0;L;;;;;N;;;;; +CBF4;HANGUL SYLLABLE JJYIN;Lo;0;L;;;;;N;;;;; +CBF5;HANGUL SYLLABLE JJYINI;Lo;0;L;;;;;N;;;;; +CBF6;HANGUL SYLLABLE JJYINH;Lo;0;L;;;;;N;;;;; +CBF7;HANGUL SYLLABLE JJYID;Lo;0;L;;;;;N;;;;; +CBF8;HANGUL SYLLABLE JJYIL;Lo;0;L;;;;;N;;;;; +CBF9;HANGUL SYLLABLE JJYILG;Lo;0;L;;;;;N;;;;; +CBFA;HANGUL SYLLABLE JJYILM;Lo;0;L;;;;;N;;;;; +CBFB;HANGUL SYLLABLE JJYILB;Lo;0;L;;;;;N;;;;; +CBFC;HANGUL SYLLABLE JJYILS;Lo;0;L;;;;;N;;;;; +CBFD;HANGUL SYLLABLE JJYILT;Lo;0;L;;;;;N;;;;; +CBFE;HANGUL SYLLABLE JJYILP;Lo;0;L;;;;;N;;;;; +CBFF;HANGUL SYLLABLE JJYILH;Lo;0;L;;;;;N;;;;; +CC00;HANGUL SYLLABLE JJYIM;Lo;0;L;;;;;N;;;;; +CC01;HANGUL SYLLABLE JJYIB;Lo;0;L;;;;;N;;;;; +CC02;HANGUL SYLLABLE JJYIBS;Lo;0;L;;;;;N;;;;; +CC03;HANGUL SYLLABLE JJYIS;Lo;0;L;;;;;N;;;;; +CC04;HANGUL SYLLABLE JJYISS;Lo;0;L;;;;;N;;;;; +CC05;HANGUL SYLLABLE JJYING;Lo;0;L;;;;;N;;;;; +CC06;HANGUL SYLLABLE JJYIJ;Lo;0;L;;;;;N;;;;; +CC07;HANGUL SYLLABLE JJYIC;Lo;0;L;;;;;N;;;;; +CC08;HANGUL SYLLABLE JJYIK;Lo;0;L;;;;;N;;;;; +CC09;HANGUL SYLLABLE JJYIT;Lo;0;L;;;;;N;;;;; +CC0A;HANGUL SYLLABLE JJYIP;Lo;0;L;;;;;N;;;;; +CC0B;HANGUL SYLLABLE JJYIH;Lo;0;L;;;;;N;;;;; +CC0C;HANGUL SYLLABLE JJI;Lo;0;L;;;;;N;;;;; +CC0D;HANGUL SYLLABLE JJIG;Lo;0;L;;;;;N;;;;; +CC0E;HANGUL SYLLABLE JJIGG;Lo;0;L;;;;;N;;;;; +CC0F;HANGUL SYLLABLE JJIGS;Lo;0;L;;;;;N;;;;; +CC10;HANGUL SYLLABLE JJIN;Lo;0;L;;;;;N;;;;; +CC11;HANGUL SYLLABLE JJINI;Lo;0;L;;;;;N;;;;; +CC12;HANGUL SYLLABLE JJINH;Lo;0;L;;;;;N;;;;; +CC13;HANGUL SYLLABLE JJID;Lo;0;L;;;;;N;;;;; +CC14;HANGUL SYLLABLE JJIL;Lo;0;L;;;;;N;;;;; +CC15;HANGUL SYLLABLE JJILG;Lo;0;L;;;;;N;;;;; +CC16;HANGUL SYLLABLE JJILM;Lo;0;L;;;;;N;;;;; +CC17;HANGUL SYLLABLE JJILB;Lo;0;L;;;;;N;;;;; +CC18;HANGUL SYLLABLE JJILS;Lo;0;L;;;;;N;;;;; +CC19;HANGUL SYLLABLE JJILT;Lo;0;L;;;;;N;;;;; +CC1A;HANGUL SYLLABLE JJILP;Lo;0;L;;;;;N;;;;; +CC1B;HANGUL SYLLABLE JJILH;Lo;0;L;;;;;N;;;;; +CC1C;HANGUL SYLLABLE JJIM;Lo;0;L;;;;;N;;;;; +CC1D;HANGUL SYLLABLE JJIB;Lo;0;L;;;;;N;;;;; +CC1E;HANGUL SYLLABLE JJIBS;Lo;0;L;;;;;N;;;;; +CC1F;HANGUL SYLLABLE JJIS;Lo;0;L;;;;;N;;;;; +CC20;HANGUL SYLLABLE JJISS;Lo;0;L;;;;;N;;;;; +CC21;HANGUL SYLLABLE JJING;Lo;0;L;;;;;N;;;;; +CC22;HANGUL SYLLABLE JJIJ;Lo;0;L;;;;;N;;;;; +CC23;HANGUL SYLLABLE JJIC;Lo;0;L;;;;;N;;;;; +CC24;HANGUL SYLLABLE JJIK;Lo;0;L;;;;;N;;;;; +CC25;HANGUL SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; +CC26;HANGUL SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; +CC27;HANGUL SYLLABLE JJIH;Lo;0;L;;;;;N;;;;; +CC28;HANGUL SYLLABLE CA;Lo;0;L;;;;;N;;;;; +CC29;HANGUL SYLLABLE CAG;Lo;0;L;;;;;N;;;;; +CC2A;HANGUL SYLLABLE CAGG;Lo;0;L;;;;;N;;;;; +CC2B;HANGUL SYLLABLE CAGS;Lo;0;L;;;;;N;;;;; +CC2C;HANGUL SYLLABLE CAN;Lo;0;L;;;;;N;;;;; +CC2D;HANGUL SYLLABLE CANI;Lo;0;L;;;;;N;;;;; +CC2E;HANGUL SYLLABLE CANH;Lo;0;L;;;;;N;;;;; +CC2F;HANGUL SYLLABLE CAD;Lo;0;L;;;;;N;;;;; +CC30;HANGUL SYLLABLE CAL;Lo;0;L;;;;;N;;;;; +CC31;HANGUL SYLLABLE CALG;Lo;0;L;;;;;N;;;;; +CC32;HANGUL SYLLABLE CALM;Lo;0;L;;;;;N;;;;; +CC33;HANGUL SYLLABLE CALB;Lo;0;L;;;;;N;;;;; +CC34;HANGUL SYLLABLE CALS;Lo;0;L;;;;;N;;;;; +CC35;HANGUL SYLLABLE CALT;Lo;0;L;;;;;N;;;;; +CC36;HANGUL SYLLABLE CALP;Lo;0;L;;;;;N;;;;; +CC37;HANGUL SYLLABLE CALH;Lo;0;L;;;;;N;;;;; +CC38;HANGUL SYLLABLE CAM;Lo;0;L;;;;;N;;;;; +CC39;HANGUL SYLLABLE CAB;Lo;0;L;;;;;N;;;;; +CC3A;HANGUL SYLLABLE CABS;Lo;0;L;;;;;N;;;;; +CC3B;HANGUL SYLLABLE CAS;Lo;0;L;;;;;N;;;;; +CC3C;HANGUL SYLLABLE CASS;Lo;0;L;;;;;N;;;;; +CC3D;HANGUL SYLLABLE CANG;Lo;0;L;;;;;N;;;;; +CC3E;HANGUL SYLLABLE CAJ;Lo;0;L;;;;;N;;;;; +CC3F;HANGUL SYLLABLE CAC;Lo;0;L;;;;;N;;;;; +CC40;HANGUL SYLLABLE CAK;Lo;0;L;;;;;N;;;;; +CC41;HANGUL SYLLABLE CAT;Lo;0;L;;;;;N;;;;; +CC42;HANGUL SYLLABLE CAP;Lo;0;L;;;;;N;;;;; +CC43;HANGUL SYLLABLE CAH;Lo;0;L;;;;;N;;;;; +CC44;HANGUL SYLLABLE CAE;Lo;0;L;;;;;N;;;;; +CC45;HANGUL SYLLABLE CAEG;Lo;0;L;;;;;N;;;;; +CC46;HANGUL SYLLABLE CAEGG;Lo;0;L;;;;;N;;;;; +CC47;HANGUL SYLLABLE CAEGS;Lo;0;L;;;;;N;;;;; +CC48;HANGUL SYLLABLE CAEN;Lo;0;L;;;;;N;;;;; +CC49;HANGUL SYLLABLE CAENI;Lo;0;L;;;;;N;;;;; +CC4A;HANGUL SYLLABLE CAENH;Lo;0;L;;;;;N;;;;; +CC4B;HANGUL SYLLABLE CAED;Lo;0;L;;;;;N;;;;; +CC4C;HANGUL SYLLABLE CAEL;Lo;0;L;;;;;N;;;;; +CC4D;HANGUL SYLLABLE CAELG;Lo;0;L;;;;;N;;;;; +CC4E;HANGUL SYLLABLE CAELM;Lo;0;L;;;;;N;;;;; +CC4F;HANGUL SYLLABLE CAELB;Lo;0;L;;;;;N;;;;; +CC50;HANGUL SYLLABLE CAELS;Lo;0;L;;;;;N;;;;; +CC51;HANGUL SYLLABLE CAELT;Lo;0;L;;;;;N;;;;; +CC52;HANGUL SYLLABLE CAELP;Lo;0;L;;;;;N;;;;; +CC53;HANGUL SYLLABLE CAELH;Lo;0;L;;;;;N;;;;; +CC54;HANGUL SYLLABLE CAEM;Lo;0;L;;;;;N;;;;; +CC55;HANGUL SYLLABLE CAEB;Lo;0;L;;;;;N;;;;; +CC56;HANGUL SYLLABLE CAEBS;Lo;0;L;;;;;N;;;;; +CC57;HANGUL SYLLABLE CAES;Lo;0;L;;;;;N;;;;; +CC58;HANGUL SYLLABLE CAESS;Lo;0;L;;;;;N;;;;; +CC59;HANGUL SYLLABLE CAENG;Lo;0;L;;;;;N;;;;; +CC5A;HANGUL SYLLABLE CAEJ;Lo;0;L;;;;;N;;;;; +CC5B;HANGUL SYLLABLE CAEC;Lo;0;L;;;;;N;;;;; +CC5C;HANGUL SYLLABLE CAEK;Lo;0;L;;;;;N;;;;; +CC5D;HANGUL SYLLABLE CAET;Lo;0;L;;;;;N;;;;; +CC5E;HANGUL SYLLABLE CAEP;Lo;0;L;;;;;N;;;;; +CC5F;HANGUL SYLLABLE CAEH;Lo;0;L;;;;;N;;;;; +CC60;HANGUL SYLLABLE CYA;Lo;0;L;;;;;N;;;;; +CC61;HANGUL SYLLABLE CYAG;Lo;0;L;;;;;N;;;;; +CC62;HANGUL SYLLABLE CYAGG;Lo;0;L;;;;;N;;;;; +CC63;HANGUL SYLLABLE CYAGS;Lo;0;L;;;;;N;;;;; +CC64;HANGUL SYLLABLE CYAN;Lo;0;L;;;;;N;;;;; +CC65;HANGUL SYLLABLE CYANI;Lo;0;L;;;;;N;;;;; +CC66;HANGUL SYLLABLE CYANH;Lo;0;L;;;;;N;;;;; +CC67;HANGUL SYLLABLE CYAD;Lo;0;L;;;;;N;;;;; +CC68;HANGUL SYLLABLE CYAL;Lo;0;L;;;;;N;;;;; +CC69;HANGUL SYLLABLE CYALG;Lo;0;L;;;;;N;;;;; +CC6A;HANGUL SYLLABLE CYALM;Lo;0;L;;;;;N;;;;; +CC6B;HANGUL SYLLABLE CYALB;Lo;0;L;;;;;N;;;;; +CC6C;HANGUL SYLLABLE CYALS;Lo;0;L;;;;;N;;;;; +CC6D;HANGUL SYLLABLE CYALT;Lo;0;L;;;;;N;;;;; +CC6E;HANGUL SYLLABLE CYALP;Lo;0;L;;;;;N;;;;; +CC6F;HANGUL SYLLABLE CYALH;Lo;0;L;;;;;N;;;;; +CC70;HANGUL SYLLABLE CYAM;Lo;0;L;;;;;N;;;;; +CC71;HANGUL SYLLABLE CYAB;Lo;0;L;;;;;N;;;;; +CC72;HANGUL SYLLABLE CYABS;Lo;0;L;;;;;N;;;;; +CC73;HANGUL SYLLABLE CYAS;Lo;0;L;;;;;N;;;;; +CC74;HANGUL SYLLABLE CYASS;Lo;0;L;;;;;N;;;;; +CC75;HANGUL SYLLABLE CYANG;Lo;0;L;;;;;N;;;;; +CC76;HANGUL SYLLABLE CYAJ;Lo;0;L;;;;;N;;;;; +CC77;HANGUL SYLLABLE CYAC;Lo;0;L;;;;;N;;;;; +CC78;HANGUL SYLLABLE CYAK;Lo;0;L;;;;;N;;;;; +CC79;HANGUL SYLLABLE CYAT;Lo;0;L;;;;;N;;;;; +CC7A;HANGUL SYLLABLE CYAP;Lo;0;L;;;;;N;;;;; +CC7B;HANGUL SYLLABLE CYAH;Lo;0;L;;;;;N;;;;; +CC7C;HANGUL SYLLABLE CYAE;Lo;0;L;;;;;N;;;;; +CC7D;HANGUL SYLLABLE CYAEG;Lo;0;L;;;;;N;;;;; +CC7E;HANGUL SYLLABLE CYAEGG;Lo;0;L;;;;;N;;;;; +CC7F;HANGUL SYLLABLE CYAEGS;Lo;0;L;;;;;N;;;;; +CC80;HANGUL SYLLABLE CYAEN;Lo;0;L;;;;;N;;;;; +CC81;HANGUL SYLLABLE CYAENI;Lo;0;L;;;;;N;;;;; +CC82;HANGUL SYLLABLE CYAENH;Lo;0;L;;;;;N;;;;; +CC83;HANGUL SYLLABLE CYAED;Lo;0;L;;;;;N;;;;; +CC84;HANGUL SYLLABLE CYAEL;Lo;0;L;;;;;N;;;;; +CC85;HANGUL SYLLABLE CYAELG;Lo;0;L;;;;;N;;;;; +CC86;HANGUL SYLLABLE CYAELM;Lo;0;L;;;;;N;;;;; +CC87;HANGUL SYLLABLE CYAELB;Lo;0;L;;;;;N;;;;; +CC88;HANGUL SYLLABLE CYAELS;Lo;0;L;;;;;N;;;;; +CC89;HANGUL SYLLABLE CYAELT;Lo;0;L;;;;;N;;;;; +CC8A;HANGUL SYLLABLE CYAELP;Lo;0;L;;;;;N;;;;; +CC8B;HANGUL SYLLABLE CYAELH;Lo;0;L;;;;;N;;;;; +CC8C;HANGUL SYLLABLE CYAEM;Lo;0;L;;;;;N;;;;; +CC8D;HANGUL SYLLABLE CYAEB;Lo;0;L;;;;;N;;;;; +CC8E;HANGUL SYLLABLE CYAEBS;Lo;0;L;;;;;N;;;;; +CC8F;HANGUL SYLLABLE CYAES;Lo;0;L;;;;;N;;;;; +CC90;HANGUL SYLLABLE CYAESS;Lo;0;L;;;;;N;;;;; +CC91;HANGUL SYLLABLE CYAENG;Lo;0;L;;;;;N;;;;; +CC92;HANGUL SYLLABLE CYAEJ;Lo;0;L;;;;;N;;;;; +CC93;HANGUL SYLLABLE CYAEC;Lo;0;L;;;;;N;;;;; +CC94;HANGUL SYLLABLE CYAEK;Lo;0;L;;;;;N;;;;; +CC95;HANGUL SYLLABLE CYAET;Lo;0;L;;;;;N;;;;; +CC96;HANGUL SYLLABLE CYAEP;Lo;0;L;;;;;N;;;;; +CC97;HANGUL SYLLABLE CYAEH;Lo;0;L;;;;;N;;;;; +CC98;HANGUL SYLLABLE CEO;Lo;0;L;;;;;N;;;;; +CC99;HANGUL SYLLABLE CEOG;Lo;0;L;;;;;N;;;;; +CC9A;HANGUL SYLLABLE CEOGG;Lo;0;L;;;;;N;;;;; +CC9B;HANGUL SYLLABLE CEOGS;Lo;0;L;;;;;N;;;;; +CC9C;HANGUL SYLLABLE CEON;Lo;0;L;;;;;N;;;;; +CC9D;HANGUL SYLLABLE CEONI;Lo;0;L;;;;;N;;;;; +CC9E;HANGUL SYLLABLE CEONH;Lo;0;L;;;;;N;;;;; +CC9F;HANGUL SYLLABLE CEOD;Lo;0;L;;;;;N;;;;; +CCA0;HANGUL SYLLABLE CEOL;Lo;0;L;;;;;N;;;;; +CCA1;HANGUL SYLLABLE CEOLG;Lo;0;L;;;;;N;;;;; +CCA2;HANGUL SYLLABLE CEOLM;Lo;0;L;;;;;N;;;;; +CCA3;HANGUL SYLLABLE CEOLB;Lo;0;L;;;;;N;;;;; +CCA4;HANGUL SYLLABLE CEOLS;Lo;0;L;;;;;N;;;;; +CCA5;HANGUL SYLLABLE CEOLT;Lo;0;L;;;;;N;;;;; +CCA6;HANGUL SYLLABLE CEOLP;Lo;0;L;;;;;N;;;;; +CCA7;HANGUL SYLLABLE CEOLH;Lo;0;L;;;;;N;;;;; +CCA8;HANGUL SYLLABLE CEOM;Lo;0;L;;;;;N;;;;; +CCA9;HANGUL SYLLABLE CEOB;Lo;0;L;;;;;N;;;;; +CCAA;HANGUL SYLLABLE CEOBS;Lo;0;L;;;;;N;;;;; +CCAB;HANGUL SYLLABLE CEOS;Lo;0;L;;;;;N;;;;; +CCAC;HANGUL SYLLABLE CEOSS;Lo;0;L;;;;;N;;;;; +CCAD;HANGUL SYLLABLE CEONG;Lo;0;L;;;;;N;;;;; +CCAE;HANGUL SYLLABLE CEOJ;Lo;0;L;;;;;N;;;;; +CCAF;HANGUL SYLLABLE CEOC;Lo;0;L;;;;;N;;;;; +CCB0;HANGUL SYLLABLE CEOK;Lo;0;L;;;;;N;;;;; +CCB1;HANGUL SYLLABLE CEOT;Lo;0;L;;;;;N;;;;; +CCB2;HANGUL SYLLABLE CEOP;Lo;0;L;;;;;N;;;;; +CCB3;HANGUL SYLLABLE CEOH;Lo;0;L;;;;;N;;;;; +CCB4;HANGUL SYLLABLE CE;Lo;0;L;;;;;N;;;;; +CCB5;HANGUL SYLLABLE CEG;Lo;0;L;;;;;N;;;;; +CCB6;HANGUL SYLLABLE CEGG;Lo;0;L;;;;;N;;;;; +CCB7;HANGUL SYLLABLE CEGS;Lo;0;L;;;;;N;;;;; +CCB8;HANGUL SYLLABLE CEN;Lo;0;L;;;;;N;;;;; +CCB9;HANGUL SYLLABLE CENI;Lo;0;L;;;;;N;;;;; +CCBA;HANGUL SYLLABLE CENH;Lo;0;L;;;;;N;;;;; +CCBB;HANGUL SYLLABLE CED;Lo;0;L;;;;;N;;;;; +CCBC;HANGUL SYLLABLE CEL;Lo;0;L;;;;;N;;;;; +CCBD;HANGUL SYLLABLE CELG;Lo;0;L;;;;;N;;;;; +CCBE;HANGUL SYLLABLE CELM;Lo;0;L;;;;;N;;;;; +CCBF;HANGUL SYLLABLE CELB;Lo;0;L;;;;;N;;;;; +CCC0;HANGUL SYLLABLE CELS;Lo;0;L;;;;;N;;;;; +CCC1;HANGUL SYLLABLE CELT;Lo;0;L;;;;;N;;;;; +CCC2;HANGUL SYLLABLE CELP;Lo;0;L;;;;;N;;;;; +CCC3;HANGUL SYLLABLE CELH;Lo;0;L;;;;;N;;;;; +CCC4;HANGUL SYLLABLE CEM;Lo;0;L;;;;;N;;;;; +CCC5;HANGUL SYLLABLE CEB;Lo;0;L;;;;;N;;;;; +CCC6;HANGUL SYLLABLE CEBS;Lo;0;L;;;;;N;;;;; +CCC7;HANGUL SYLLABLE CES;Lo;0;L;;;;;N;;;;; +CCC8;HANGUL SYLLABLE CESS;Lo;0;L;;;;;N;;;;; +CCC9;HANGUL SYLLABLE CENG;Lo;0;L;;;;;N;;;;; +CCCA;HANGUL SYLLABLE CEJ;Lo;0;L;;;;;N;;;;; +CCCB;HANGUL SYLLABLE CEC;Lo;0;L;;;;;N;;;;; +CCCC;HANGUL SYLLABLE CEK;Lo;0;L;;;;;N;;;;; +CCCD;HANGUL SYLLABLE CET;Lo;0;L;;;;;N;;;;; +CCCE;HANGUL SYLLABLE CEP;Lo;0;L;;;;;N;;;;; +CCCF;HANGUL SYLLABLE CEH;Lo;0;L;;;;;N;;;;; +CCD0;HANGUL SYLLABLE CYEO;Lo;0;L;;;;;N;;;;; +CCD1;HANGUL SYLLABLE CYEOG;Lo;0;L;;;;;N;;;;; +CCD2;HANGUL SYLLABLE CYEOGG;Lo;0;L;;;;;N;;;;; +CCD3;HANGUL SYLLABLE CYEOGS;Lo;0;L;;;;;N;;;;; +CCD4;HANGUL SYLLABLE CYEON;Lo;0;L;;;;;N;;;;; +CCD5;HANGUL SYLLABLE CYEONI;Lo;0;L;;;;;N;;;;; +CCD6;HANGUL SYLLABLE CYEONH;Lo;0;L;;;;;N;;;;; +CCD7;HANGUL SYLLABLE CYEOD;Lo;0;L;;;;;N;;;;; +CCD8;HANGUL SYLLABLE CYEOL;Lo;0;L;;;;;N;;;;; +CCD9;HANGUL SYLLABLE CYEOLG;Lo;0;L;;;;;N;;;;; +CCDA;HANGUL SYLLABLE CYEOLM;Lo;0;L;;;;;N;;;;; +CCDB;HANGUL SYLLABLE CYEOLB;Lo;0;L;;;;;N;;;;; +CCDC;HANGUL SYLLABLE CYEOLS;Lo;0;L;;;;;N;;;;; +CCDD;HANGUL SYLLABLE CYEOLT;Lo;0;L;;;;;N;;;;; +CCDE;HANGUL SYLLABLE CYEOLP;Lo;0;L;;;;;N;;;;; +CCDF;HANGUL SYLLABLE CYEOLH;Lo;0;L;;;;;N;;;;; +CCE0;HANGUL SYLLABLE CYEOM;Lo;0;L;;;;;N;;;;; +CCE1;HANGUL SYLLABLE CYEOB;Lo;0;L;;;;;N;;;;; +CCE2;HANGUL SYLLABLE CYEOBS;Lo;0;L;;;;;N;;;;; +CCE3;HANGUL SYLLABLE CYEOS;Lo;0;L;;;;;N;;;;; +CCE4;HANGUL SYLLABLE CYEOSS;Lo;0;L;;;;;N;;;;; +CCE5;HANGUL SYLLABLE CYEONG;Lo;0;L;;;;;N;;;;; +CCE6;HANGUL SYLLABLE CYEOJ;Lo;0;L;;;;;N;;;;; +CCE7;HANGUL SYLLABLE CYEOC;Lo;0;L;;;;;N;;;;; +CCE8;HANGUL SYLLABLE CYEOK;Lo;0;L;;;;;N;;;;; +CCE9;HANGUL SYLLABLE CYEOT;Lo;0;L;;;;;N;;;;; +CCEA;HANGUL SYLLABLE CYEOP;Lo;0;L;;;;;N;;;;; +CCEB;HANGUL SYLLABLE CYEOH;Lo;0;L;;;;;N;;;;; +CCEC;HANGUL SYLLABLE CYE;Lo;0;L;;;;;N;;;;; +CCED;HANGUL SYLLABLE CYEG;Lo;0;L;;;;;N;;;;; +CCEE;HANGUL SYLLABLE CYEGG;Lo;0;L;;;;;N;;;;; +CCEF;HANGUL SYLLABLE CYEGS;Lo;0;L;;;;;N;;;;; +CCF0;HANGUL SYLLABLE CYEN;Lo;0;L;;;;;N;;;;; +CCF1;HANGUL SYLLABLE CYENI;Lo;0;L;;;;;N;;;;; +CCF2;HANGUL SYLLABLE CYENH;Lo;0;L;;;;;N;;;;; +CCF3;HANGUL SYLLABLE CYED;Lo;0;L;;;;;N;;;;; +CCF4;HANGUL SYLLABLE CYEL;Lo;0;L;;;;;N;;;;; +CCF5;HANGUL SYLLABLE CYELG;Lo;0;L;;;;;N;;;;; +CCF6;HANGUL SYLLABLE CYELM;Lo;0;L;;;;;N;;;;; +CCF7;HANGUL SYLLABLE CYELB;Lo;0;L;;;;;N;;;;; +CCF8;HANGUL SYLLABLE CYELS;Lo;0;L;;;;;N;;;;; +CCF9;HANGUL SYLLABLE CYELT;Lo;0;L;;;;;N;;;;; +CCFA;HANGUL SYLLABLE CYELP;Lo;0;L;;;;;N;;;;; +CCFB;HANGUL SYLLABLE CYELH;Lo;0;L;;;;;N;;;;; +CCFC;HANGUL SYLLABLE CYEM;Lo;0;L;;;;;N;;;;; +CCFD;HANGUL SYLLABLE CYEB;Lo;0;L;;;;;N;;;;; +CCFE;HANGUL SYLLABLE CYEBS;Lo;0;L;;;;;N;;;;; +CCFF;HANGUL SYLLABLE CYES;Lo;0;L;;;;;N;;;;; +CD00;HANGUL SYLLABLE CYESS;Lo;0;L;;;;;N;;;;; +CD01;HANGUL SYLLABLE CYENG;Lo;0;L;;;;;N;;;;; +CD02;HANGUL SYLLABLE CYEJ;Lo;0;L;;;;;N;;;;; +CD03;HANGUL SYLLABLE CYEC;Lo;0;L;;;;;N;;;;; +CD04;HANGUL SYLLABLE CYEK;Lo;0;L;;;;;N;;;;; +CD05;HANGUL SYLLABLE CYET;Lo;0;L;;;;;N;;;;; +CD06;HANGUL SYLLABLE CYEP;Lo;0;L;;;;;N;;;;; +CD07;HANGUL SYLLABLE CYEH;Lo;0;L;;;;;N;;;;; +CD08;HANGUL SYLLABLE CO;Lo;0;L;;;;;N;;;;; +CD09;HANGUL SYLLABLE COG;Lo;0;L;;;;;N;;;;; +CD0A;HANGUL SYLLABLE COGG;Lo;0;L;;;;;N;;;;; +CD0B;HANGUL SYLLABLE COGS;Lo;0;L;;;;;N;;;;; +CD0C;HANGUL SYLLABLE CON;Lo;0;L;;;;;N;;;;; +CD0D;HANGUL SYLLABLE CONI;Lo;0;L;;;;;N;;;;; +CD0E;HANGUL SYLLABLE CONH;Lo;0;L;;;;;N;;;;; +CD0F;HANGUL SYLLABLE COD;Lo;0;L;;;;;N;;;;; +CD10;HANGUL SYLLABLE COL;Lo;0;L;;;;;N;;;;; +CD11;HANGUL SYLLABLE COLG;Lo;0;L;;;;;N;;;;; +CD12;HANGUL SYLLABLE COLM;Lo;0;L;;;;;N;;;;; +CD13;HANGUL SYLLABLE COLB;Lo;0;L;;;;;N;;;;; +CD14;HANGUL SYLLABLE COLS;Lo;0;L;;;;;N;;;;; +CD15;HANGUL SYLLABLE COLT;Lo;0;L;;;;;N;;;;; +CD16;HANGUL SYLLABLE COLP;Lo;0;L;;;;;N;;;;; +CD17;HANGUL SYLLABLE COLH;Lo;0;L;;;;;N;;;;; +CD18;HANGUL SYLLABLE COM;Lo;0;L;;;;;N;;;;; +CD19;HANGUL SYLLABLE COB;Lo;0;L;;;;;N;;;;; +CD1A;HANGUL SYLLABLE COBS;Lo;0;L;;;;;N;;;;; +CD1B;HANGUL SYLLABLE COS;Lo;0;L;;;;;N;;;;; +CD1C;HANGUL SYLLABLE COSS;Lo;0;L;;;;;N;;;;; +CD1D;HANGUL SYLLABLE CONG;Lo;0;L;;;;;N;;;;; +CD1E;HANGUL SYLLABLE COJ;Lo;0;L;;;;;N;;;;; +CD1F;HANGUL SYLLABLE COC;Lo;0;L;;;;;N;;;;; +CD20;HANGUL SYLLABLE COK;Lo;0;L;;;;;N;;;;; +CD21;HANGUL SYLLABLE COT;Lo;0;L;;;;;N;;;;; +CD22;HANGUL SYLLABLE COP;Lo;0;L;;;;;N;;;;; +CD23;HANGUL SYLLABLE COH;Lo;0;L;;;;;N;;;;; +CD24;HANGUL SYLLABLE CWA;Lo;0;L;;;;;N;;;;; +CD25;HANGUL SYLLABLE CWAG;Lo;0;L;;;;;N;;;;; +CD26;HANGUL SYLLABLE CWAGG;Lo;0;L;;;;;N;;;;; +CD27;HANGUL SYLLABLE CWAGS;Lo;0;L;;;;;N;;;;; +CD28;HANGUL SYLLABLE CWAN;Lo;0;L;;;;;N;;;;; +CD29;HANGUL SYLLABLE CWANI;Lo;0;L;;;;;N;;;;; +CD2A;HANGUL SYLLABLE CWANH;Lo;0;L;;;;;N;;;;; +CD2B;HANGUL SYLLABLE CWAD;Lo;0;L;;;;;N;;;;; +CD2C;HANGUL SYLLABLE CWAL;Lo;0;L;;;;;N;;;;; +CD2D;HANGUL SYLLABLE CWALG;Lo;0;L;;;;;N;;;;; +CD2E;HANGUL SYLLABLE CWALM;Lo;0;L;;;;;N;;;;; +CD2F;HANGUL SYLLABLE CWALB;Lo;0;L;;;;;N;;;;; +CD30;HANGUL SYLLABLE CWALS;Lo;0;L;;;;;N;;;;; +CD31;HANGUL SYLLABLE CWALT;Lo;0;L;;;;;N;;;;; +CD32;HANGUL SYLLABLE CWALP;Lo;0;L;;;;;N;;;;; +CD33;HANGUL SYLLABLE CWALH;Lo;0;L;;;;;N;;;;; +CD34;HANGUL SYLLABLE CWAM;Lo;0;L;;;;;N;;;;; +CD35;HANGUL SYLLABLE CWAB;Lo;0;L;;;;;N;;;;; +CD36;HANGUL SYLLABLE CWABS;Lo;0;L;;;;;N;;;;; +CD37;HANGUL SYLLABLE CWAS;Lo;0;L;;;;;N;;;;; +CD38;HANGUL SYLLABLE CWASS;Lo;0;L;;;;;N;;;;; +CD39;HANGUL SYLLABLE CWANG;Lo;0;L;;;;;N;;;;; +CD3A;HANGUL SYLLABLE CWAJ;Lo;0;L;;;;;N;;;;; +CD3B;HANGUL SYLLABLE CWAC;Lo;0;L;;;;;N;;;;; +CD3C;HANGUL SYLLABLE CWAK;Lo;0;L;;;;;N;;;;; +CD3D;HANGUL SYLLABLE CWAT;Lo;0;L;;;;;N;;;;; +CD3E;HANGUL SYLLABLE CWAP;Lo;0;L;;;;;N;;;;; +CD3F;HANGUL SYLLABLE CWAH;Lo;0;L;;;;;N;;;;; +CD40;HANGUL SYLLABLE CWAE;Lo;0;L;;;;;N;;;;; +CD41;HANGUL SYLLABLE CWAEG;Lo;0;L;;;;;N;;;;; +CD42;HANGUL SYLLABLE CWAEGG;Lo;0;L;;;;;N;;;;; +CD43;HANGUL SYLLABLE CWAEGS;Lo;0;L;;;;;N;;;;; +CD44;HANGUL SYLLABLE CWAEN;Lo;0;L;;;;;N;;;;; +CD45;HANGUL SYLLABLE CWAENI;Lo;0;L;;;;;N;;;;; +CD46;HANGUL SYLLABLE CWAENH;Lo;0;L;;;;;N;;;;; +CD47;HANGUL SYLLABLE CWAED;Lo;0;L;;;;;N;;;;; +CD48;HANGUL SYLLABLE CWAEL;Lo;0;L;;;;;N;;;;; +CD49;HANGUL SYLLABLE CWAELG;Lo;0;L;;;;;N;;;;; +CD4A;HANGUL SYLLABLE CWAELM;Lo;0;L;;;;;N;;;;; +CD4B;HANGUL SYLLABLE CWAELB;Lo;0;L;;;;;N;;;;; +CD4C;HANGUL SYLLABLE CWAELS;Lo;0;L;;;;;N;;;;; +CD4D;HANGUL SYLLABLE CWAELT;Lo;0;L;;;;;N;;;;; +CD4E;HANGUL SYLLABLE CWAELP;Lo;0;L;;;;;N;;;;; +CD4F;HANGUL SYLLABLE CWAELH;Lo;0;L;;;;;N;;;;; +CD50;HANGUL SYLLABLE CWAEM;Lo;0;L;;;;;N;;;;; +CD51;HANGUL SYLLABLE CWAEB;Lo;0;L;;;;;N;;;;; +CD52;HANGUL SYLLABLE CWAEBS;Lo;0;L;;;;;N;;;;; +CD53;HANGUL SYLLABLE CWAES;Lo;0;L;;;;;N;;;;; +CD54;HANGUL SYLLABLE CWAESS;Lo;0;L;;;;;N;;;;; +CD55;HANGUL SYLLABLE CWAENG;Lo;0;L;;;;;N;;;;; +CD56;HANGUL SYLLABLE CWAEJ;Lo;0;L;;;;;N;;;;; +CD57;HANGUL SYLLABLE CWAEC;Lo;0;L;;;;;N;;;;; +CD58;HANGUL SYLLABLE CWAEK;Lo;0;L;;;;;N;;;;; +CD59;HANGUL SYLLABLE CWAET;Lo;0;L;;;;;N;;;;; +CD5A;HANGUL SYLLABLE CWAEP;Lo;0;L;;;;;N;;;;; +CD5B;HANGUL SYLLABLE CWAEH;Lo;0;L;;;;;N;;;;; +CD5C;HANGUL SYLLABLE COE;Lo;0;L;;;;;N;;;;; +CD5D;HANGUL SYLLABLE COEG;Lo;0;L;;;;;N;;;;; +CD5E;HANGUL SYLLABLE COEGG;Lo;0;L;;;;;N;;;;; +CD5F;HANGUL SYLLABLE COEGS;Lo;0;L;;;;;N;;;;; +CD60;HANGUL SYLLABLE COEN;Lo;0;L;;;;;N;;;;; +CD61;HANGUL SYLLABLE COENI;Lo;0;L;;;;;N;;;;; +CD62;HANGUL SYLLABLE COENH;Lo;0;L;;;;;N;;;;; +CD63;HANGUL SYLLABLE COED;Lo;0;L;;;;;N;;;;; +CD64;HANGUL SYLLABLE COEL;Lo;0;L;;;;;N;;;;; +CD65;HANGUL SYLLABLE COELG;Lo;0;L;;;;;N;;;;; +CD66;HANGUL SYLLABLE COELM;Lo;0;L;;;;;N;;;;; +CD67;HANGUL SYLLABLE COELB;Lo;0;L;;;;;N;;;;; +CD68;HANGUL SYLLABLE COELS;Lo;0;L;;;;;N;;;;; +CD69;HANGUL SYLLABLE COELT;Lo;0;L;;;;;N;;;;; +CD6A;HANGUL SYLLABLE COELP;Lo;0;L;;;;;N;;;;; +CD6B;HANGUL SYLLABLE COELH;Lo;0;L;;;;;N;;;;; +CD6C;HANGUL SYLLABLE COEM;Lo;0;L;;;;;N;;;;; +CD6D;HANGUL SYLLABLE COEB;Lo;0;L;;;;;N;;;;; +CD6E;HANGUL SYLLABLE COEBS;Lo;0;L;;;;;N;;;;; +CD6F;HANGUL SYLLABLE COES;Lo;0;L;;;;;N;;;;; +CD70;HANGUL SYLLABLE COESS;Lo;0;L;;;;;N;;;;; +CD71;HANGUL SYLLABLE COENG;Lo;0;L;;;;;N;;;;; +CD72;HANGUL SYLLABLE COEJ;Lo;0;L;;;;;N;;;;; +CD73;HANGUL SYLLABLE COEC;Lo;0;L;;;;;N;;;;; +CD74;HANGUL SYLLABLE COEK;Lo;0;L;;;;;N;;;;; +CD75;HANGUL SYLLABLE COET;Lo;0;L;;;;;N;;;;; +CD76;HANGUL SYLLABLE COEP;Lo;0;L;;;;;N;;;;; +CD77;HANGUL SYLLABLE COEH;Lo;0;L;;;;;N;;;;; +CD78;HANGUL SYLLABLE CYO;Lo;0;L;;;;;N;;;;; +CD79;HANGUL SYLLABLE CYOG;Lo;0;L;;;;;N;;;;; +CD7A;HANGUL SYLLABLE CYOGG;Lo;0;L;;;;;N;;;;; +CD7B;HANGUL SYLLABLE CYOGS;Lo;0;L;;;;;N;;;;; +CD7C;HANGUL SYLLABLE CYON;Lo;0;L;;;;;N;;;;; +CD7D;HANGUL SYLLABLE CYONI;Lo;0;L;;;;;N;;;;; +CD7E;HANGUL SYLLABLE CYONH;Lo;0;L;;;;;N;;;;; +CD7F;HANGUL SYLLABLE CYOD;Lo;0;L;;;;;N;;;;; +CD80;HANGUL SYLLABLE CYOL;Lo;0;L;;;;;N;;;;; +CD81;HANGUL SYLLABLE CYOLG;Lo;0;L;;;;;N;;;;; +CD82;HANGUL SYLLABLE CYOLM;Lo;0;L;;;;;N;;;;; +CD83;HANGUL SYLLABLE CYOLB;Lo;0;L;;;;;N;;;;; +CD84;HANGUL SYLLABLE CYOLS;Lo;0;L;;;;;N;;;;; +CD85;HANGUL SYLLABLE CYOLT;Lo;0;L;;;;;N;;;;; +CD86;HANGUL SYLLABLE CYOLP;Lo;0;L;;;;;N;;;;; +CD87;HANGUL SYLLABLE CYOLH;Lo;0;L;;;;;N;;;;; +CD88;HANGUL SYLLABLE CYOM;Lo;0;L;;;;;N;;;;; +CD89;HANGUL SYLLABLE CYOB;Lo;0;L;;;;;N;;;;; +CD8A;HANGUL SYLLABLE CYOBS;Lo;0;L;;;;;N;;;;; +CD8B;HANGUL SYLLABLE CYOS;Lo;0;L;;;;;N;;;;; +CD8C;HANGUL SYLLABLE CYOSS;Lo;0;L;;;;;N;;;;; +CD8D;HANGUL SYLLABLE CYONG;Lo;0;L;;;;;N;;;;; +CD8E;HANGUL SYLLABLE CYOJ;Lo;0;L;;;;;N;;;;; +CD8F;HANGUL SYLLABLE CYOC;Lo;0;L;;;;;N;;;;; +CD90;HANGUL SYLLABLE CYOK;Lo;0;L;;;;;N;;;;; +CD91;HANGUL SYLLABLE CYOT;Lo;0;L;;;;;N;;;;; +CD92;HANGUL SYLLABLE CYOP;Lo;0;L;;;;;N;;;;; +CD93;HANGUL SYLLABLE CYOH;Lo;0;L;;;;;N;;;;; +CD94;HANGUL SYLLABLE CU;Lo;0;L;;;;;N;;;;; +CD95;HANGUL SYLLABLE CUG;Lo;0;L;;;;;N;;;;; +CD96;HANGUL SYLLABLE CUGG;Lo;0;L;;;;;N;;;;; +CD97;HANGUL SYLLABLE CUGS;Lo;0;L;;;;;N;;;;; +CD98;HANGUL SYLLABLE CUN;Lo;0;L;;;;;N;;;;; +CD99;HANGUL SYLLABLE CUNI;Lo;0;L;;;;;N;;;;; +CD9A;HANGUL SYLLABLE CUNH;Lo;0;L;;;;;N;;;;; +CD9B;HANGUL SYLLABLE CUD;Lo;0;L;;;;;N;;;;; +CD9C;HANGUL SYLLABLE CUL;Lo;0;L;;;;;N;;;;; +CD9D;HANGUL SYLLABLE CULG;Lo;0;L;;;;;N;;;;; +CD9E;HANGUL SYLLABLE CULM;Lo;0;L;;;;;N;;;;; +CD9F;HANGUL SYLLABLE CULB;Lo;0;L;;;;;N;;;;; +CDA0;HANGUL SYLLABLE CULS;Lo;0;L;;;;;N;;;;; +CDA1;HANGUL SYLLABLE CULT;Lo;0;L;;;;;N;;;;; +CDA2;HANGUL SYLLABLE CULP;Lo;0;L;;;;;N;;;;; +CDA3;HANGUL SYLLABLE CULH;Lo;0;L;;;;;N;;;;; +CDA4;HANGUL SYLLABLE CUM;Lo;0;L;;;;;N;;;;; +CDA5;HANGUL SYLLABLE CUB;Lo;0;L;;;;;N;;;;; +CDA6;HANGUL SYLLABLE CUBS;Lo;0;L;;;;;N;;;;; +CDA7;HANGUL SYLLABLE CUS;Lo;0;L;;;;;N;;;;; +CDA8;HANGUL SYLLABLE CUSS;Lo;0;L;;;;;N;;;;; +CDA9;HANGUL SYLLABLE CUNG;Lo;0;L;;;;;N;;;;; +CDAA;HANGUL SYLLABLE CUJ;Lo;0;L;;;;;N;;;;; +CDAB;HANGUL SYLLABLE CUC;Lo;0;L;;;;;N;;;;; +CDAC;HANGUL SYLLABLE CUK;Lo;0;L;;;;;N;;;;; +CDAD;HANGUL SYLLABLE CUT;Lo;0;L;;;;;N;;;;; +CDAE;HANGUL SYLLABLE CUP;Lo;0;L;;;;;N;;;;; +CDAF;HANGUL SYLLABLE CUH;Lo;0;L;;;;;N;;;;; +CDB0;HANGUL SYLLABLE CWEO;Lo;0;L;;;;;N;;;;; +CDB1;HANGUL SYLLABLE CWEOG;Lo;0;L;;;;;N;;;;; +CDB2;HANGUL SYLLABLE CWEOGG;Lo;0;L;;;;;N;;;;; +CDB3;HANGUL SYLLABLE CWEOGS;Lo;0;L;;;;;N;;;;; +CDB4;HANGUL SYLLABLE CWEON;Lo;0;L;;;;;N;;;;; +CDB5;HANGUL SYLLABLE CWEONI;Lo;0;L;;;;;N;;;;; +CDB6;HANGUL SYLLABLE CWEONH;Lo;0;L;;;;;N;;;;; +CDB7;HANGUL SYLLABLE CWEOD;Lo;0;L;;;;;N;;;;; +CDB8;HANGUL SYLLABLE CWEOL;Lo;0;L;;;;;N;;;;; +CDB9;HANGUL SYLLABLE CWEOLG;Lo;0;L;;;;;N;;;;; +CDBA;HANGUL SYLLABLE CWEOLM;Lo;0;L;;;;;N;;;;; +CDBB;HANGUL SYLLABLE CWEOLB;Lo;0;L;;;;;N;;;;; +CDBC;HANGUL SYLLABLE CWEOLS;Lo;0;L;;;;;N;;;;; +CDBD;HANGUL SYLLABLE CWEOLT;Lo;0;L;;;;;N;;;;; +CDBE;HANGUL SYLLABLE CWEOLP;Lo;0;L;;;;;N;;;;; +CDBF;HANGUL SYLLABLE CWEOLH;Lo;0;L;;;;;N;;;;; +CDC0;HANGUL SYLLABLE CWEOM;Lo;0;L;;;;;N;;;;; +CDC1;HANGUL SYLLABLE CWEOB;Lo;0;L;;;;;N;;;;; +CDC2;HANGUL SYLLABLE CWEOBS;Lo;0;L;;;;;N;;;;; +CDC3;HANGUL SYLLABLE CWEOS;Lo;0;L;;;;;N;;;;; +CDC4;HANGUL SYLLABLE CWEOSS;Lo;0;L;;;;;N;;;;; +CDC5;HANGUL SYLLABLE CWEONG;Lo;0;L;;;;;N;;;;; +CDC6;HANGUL SYLLABLE CWEOJ;Lo;0;L;;;;;N;;;;; +CDC7;HANGUL SYLLABLE CWEOC;Lo;0;L;;;;;N;;;;; +CDC8;HANGUL SYLLABLE CWEOK;Lo;0;L;;;;;N;;;;; +CDC9;HANGUL SYLLABLE CWEOT;Lo;0;L;;;;;N;;;;; +CDCA;HANGUL SYLLABLE CWEOP;Lo;0;L;;;;;N;;;;; +CDCB;HANGUL SYLLABLE CWEOH;Lo;0;L;;;;;N;;;;; +CDCC;HANGUL SYLLABLE CWE;Lo;0;L;;;;;N;;;;; +CDCD;HANGUL SYLLABLE CWEG;Lo;0;L;;;;;N;;;;; +CDCE;HANGUL SYLLABLE CWEGG;Lo;0;L;;;;;N;;;;; +CDCF;HANGUL SYLLABLE CWEGS;Lo;0;L;;;;;N;;;;; +CDD0;HANGUL SYLLABLE CWEN;Lo;0;L;;;;;N;;;;; +CDD1;HANGUL SYLLABLE CWENI;Lo;0;L;;;;;N;;;;; +CDD2;HANGUL SYLLABLE CWENH;Lo;0;L;;;;;N;;;;; +CDD3;HANGUL SYLLABLE CWED;Lo;0;L;;;;;N;;;;; +CDD4;HANGUL SYLLABLE CWEL;Lo;0;L;;;;;N;;;;; +CDD5;HANGUL SYLLABLE CWELG;Lo;0;L;;;;;N;;;;; +CDD6;HANGUL SYLLABLE CWELM;Lo;0;L;;;;;N;;;;; +CDD7;HANGUL SYLLABLE CWELB;Lo;0;L;;;;;N;;;;; +CDD8;HANGUL SYLLABLE CWELS;Lo;0;L;;;;;N;;;;; +CDD9;HANGUL SYLLABLE CWELT;Lo;0;L;;;;;N;;;;; +CDDA;HANGUL SYLLABLE CWELP;Lo;0;L;;;;;N;;;;; +CDDB;HANGUL SYLLABLE CWELH;Lo;0;L;;;;;N;;;;; +CDDC;HANGUL SYLLABLE CWEM;Lo;0;L;;;;;N;;;;; +CDDD;HANGUL SYLLABLE CWEB;Lo;0;L;;;;;N;;;;; +CDDE;HANGUL SYLLABLE CWEBS;Lo;0;L;;;;;N;;;;; +CDDF;HANGUL SYLLABLE CWES;Lo;0;L;;;;;N;;;;; +CDE0;HANGUL SYLLABLE CWESS;Lo;0;L;;;;;N;;;;; +CDE1;HANGUL SYLLABLE CWENG;Lo;0;L;;;;;N;;;;; +CDE2;HANGUL SYLLABLE CWEJ;Lo;0;L;;;;;N;;;;; +CDE3;HANGUL SYLLABLE CWEC;Lo;0;L;;;;;N;;;;; +CDE4;HANGUL SYLLABLE CWEK;Lo;0;L;;;;;N;;;;; +CDE5;HANGUL SYLLABLE CWET;Lo;0;L;;;;;N;;;;; +CDE6;HANGUL SYLLABLE CWEP;Lo;0;L;;;;;N;;;;; +CDE7;HANGUL SYLLABLE CWEH;Lo;0;L;;;;;N;;;;; +CDE8;HANGUL SYLLABLE CWI;Lo;0;L;;;;;N;;;;; +CDE9;HANGUL SYLLABLE CWIG;Lo;0;L;;;;;N;;;;; +CDEA;HANGUL SYLLABLE CWIGG;Lo;0;L;;;;;N;;;;; +CDEB;HANGUL SYLLABLE CWIGS;Lo;0;L;;;;;N;;;;; +CDEC;HANGUL SYLLABLE CWIN;Lo;0;L;;;;;N;;;;; +CDED;HANGUL SYLLABLE CWINI;Lo;0;L;;;;;N;;;;; +CDEE;HANGUL SYLLABLE CWINH;Lo;0;L;;;;;N;;;;; +CDEF;HANGUL SYLLABLE CWID;Lo;0;L;;;;;N;;;;; +CDF0;HANGUL SYLLABLE CWIL;Lo;0;L;;;;;N;;;;; +CDF1;HANGUL SYLLABLE CWILG;Lo;0;L;;;;;N;;;;; +CDF2;HANGUL SYLLABLE CWILM;Lo;0;L;;;;;N;;;;; +CDF3;HANGUL SYLLABLE CWILB;Lo;0;L;;;;;N;;;;; +CDF4;HANGUL SYLLABLE CWILS;Lo;0;L;;;;;N;;;;; +CDF5;HANGUL SYLLABLE CWILT;Lo;0;L;;;;;N;;;;; +CDF6;HANGUL SYLLABLE CWILP;Lo;0;L;;;;;N;;;;; +CDF7;HANGUL SYLLABLE CWILH;Lo;0;L;;;;;N;;;;; +CDF8;HANGUL SYLLABLE CWIM;Lo;0;L;;;;;N;;;;; +CDF9;HANGUL SYLLABLE CWIB;Lo;0;L;;;;;N;;;;; +CDFA;HANGUL SYLLABLE CWIBS;Lo;0;L;;;;;N;;;;; +CDFB;HANGUL SYLLABLE CWIS;Lo;0;L;;;;;N;;;;; +CDFC;HANGUL SYLLABLE CWISS;Lo;0;L;;;;;N;;;;; +CDFD;HANGUL SYLLABLE CWING;Lo;0;L;;;;;N;;;;; +CDFE;HANGUL SYLLABLE CWIJ;Lo;0;L;;;;;N;;;;; +CDFF;HANGUL SYLLABLE CWIC;Lo;0;L;;;;;N;;;;; +CE00;HANGUL SYLLABLE CWIK;Lo;0;L;;;;;N;;;;; +CE01;HANGUL SYLLABLE CWIT;Lo;0;L;;;;;N;;;;; +CE02;HANGUL SYLLABLE CWIP;Lo;0;L;;;;;N;;;;; +CE03;HANGUL SYLLABLE CWIH;Lo;0;L;;;;;N;;;;; +CE04;HANGUL SYLLABLE CYU;Lo;0;L;;;;;N;;;;; +CE05;HANGUL SYLLABLE CYUG;Lo;0;L;;;;;N;;;;; +CE06;HANGUL SYLLABLE CYUGG;Lo;0;L;;;;;N;;;;; +CE07;HANGUL SYLLABLE CYUGS;Lo;0;L;;;;;N;;;;; +CE08;HANGUL SYLLABLE CYUN;Lo;0;L;;;;;N;;;;; +CE09;HANGUL SYLLABLE CYUNI;Lo;0;L;;;;;N;;;;; +CE0A;HANGUL SYLLABLE CYUNH;Lo;0;L;;;;;N;;;;; +CE0B;HANGUL SYLLABLE CYUD;Lo;0;L;;;;;N;;;;; +CE0C;HANGUL SYLLABLE CYUL;Lo;0;L;;;;;N;;;;; +CE0D;HANGUL SYLLABLE CYULG;Lo;0;L;;;;;N;;;;; +CE0E;HANGUL SYLLABLE CYULM;Lo;0;L;;;;;N;;;;; +CE0F;HANGUL SYLLABLE CYULB;Lo;0;L;;;;;N;;;;; +CE10;HANGUL SYLLABLE CYULS;Lo;0;L;;;;;N;;;;; +CE11;HANGUL SYLLABLE CYULT;Lo;0;L;;;;;N;;;;; +CE12;HANGUL SYLLABLE CYULP;Lo;0;L;;;;;N;;;;; +CE13;HANGUL SYLLABLE CYULH;Lo;0;L;;;;;N;;;;; +CE14;HANGUL SYLLABLE CYUM;Lo;0;L;;;;;N;;;;; +CE15;HANGUL SYLLABLE CYUB;Lo;0;L;;;;;N;;;;; +CE16;HANGUL SYLLABLE CYUBS;Lo;0;L;;;;;N;;;;; +CE17;HANGUL SYLLABLE CYUS;Lo;0;L;;;;;N;;;;; +CE18;HANGUL SYLLABLE CYUSS;Lo;0;L;;;;;N;;;;; +CE19;HANGUL SYLLABLE CYUNG;Lo;0;L;;;;;N;;;;; +CE1A;HANGUL SYLLABLE CYUJ;Lo;0;L;;;;;N;;;;; +CE1B;HANGUL SYLLABLE CYUC;Lo;0;L;;;;;N;;;;; +CE1C;HANGUL SYLLABLE CYUK;Lo;0;L;;;;;N;;;;; +CE1D;HANGUL SYLLABLE CYUT;Lo;0;L;;;;;N;;;;; +CE1E;HANGUL SYLLABLE CYUP;Lo;0;L;;;;;N;;;;; +CE1F;HANGUL SYLLABLE CYUH;Lo;0;L;;;;;N;;;;; +CE20;HANGUL SYLLABLE CEU;Lo;0;L;;;;;N;;;;; +CE21;HANGUL SYLLABLE CEUG;Lo;0;L;;;;;N;;;;; +CE22;HANGUL SYLLABLE CEUGG;Lo;0;L;;;;;N;;;;; +CE23;HANGUL SYLLABLE CEUGS;Lo;0;L;;;;;N;;;;; +CE24;HANGUL SYLLABLE CEUN;Lo;0;L;;;;;N;;;;; +CE25;HANGUL SYLLABLE CEUNI;Lo;0;L;;;;;N;;;;; +CE26;HANGUL SYLLABLE CEUNH;Lo;0;L;;;;;N;;;;; +CE27;HANGUL SYLLABLE CEUD;Lo;0;L;;;;;N;;;;; +CE28;HANGUL SYLLABLE CEUL;Lo;0;L;;;;;N;;;;; +CE29;HANGUL SYLLABLE CEULG;Lo;0;L;;;;;N;;;;; +CE2A;HANGUL SYLLABLE CEULM;Lo;0;L;;;;;N;;;;; +CE2B;HANGUL SYLLABLE CEULB;Lo;0;L;;;;;N;;;;; +CE2C;HANGUL SYLLABLE CEULS;Lo;0;L;;;;;N;;;;; +CE2D;HANGUL SYLLABLE CEULT;Lo;0;L;;;;;N;;;;; +CE2E;HANGUL SYLLABLE CEULP;Lo;0;L;;;;;N;;;;; +CE2F;HANGUL SYLLABLE CEULH;Lo;0;L;;;;;N;;;;; +CE30;HANGUL SYLLABLE CEUM;Lo;0;L;;;;;N;;;;; +CE31;HANGUL SYLLABLE CEUB;Lo;0;L;;;;;N;;;;; +CE32;HANGUL SYLLABLE CEUBS;Lo;0;L;;;;;N;;;;; +CE33;HANGUL SYLLABLE CEUS;Lo;0;L;;;;;N;;;;; +CE34;HANGUL SYLLABLE CEUSS;Lo;0;L;;;;;N;;;;; +CE35;HANGUL SYLLABLE CEUNG;Lo;0;L;;;;;N;;;;; +CE36;HANGUL SYLLABLE CEUJ;Lo;0;L;;;;;N;;;;; +CE37;HANGUL SYLLABLE CEUC;Lo;0;L;;;;;N;;;;; +CE38;HANGUL SYLLABLE CEUK;Lo;0;L;;;;;N;;;;; +CE39;HANGUL SYLLABLE CEUT;Lo;0;L;;;;;N;;;;; +CE3A;HANGUL SYLLABLE CEUP;Lo;0;L;;;;;N;;;;; +CE3B;HANGUL SYLLABLE CEUH;Lo;0;L;;;;;N;;;;; +CE3C;HANGUL SYLLABLE CYI;Lo;0;L;;;;;N;;;;; +CE3D;HANGUL SYLLABLE CYIG;Lo;0;L;;;;;N;;;;; +CE3E;HANGUL SYLLABLE CYIGG;Lo;0;L;;;;;N;;;;; +CE3F;HANGUL SYLLABLE CYIGS;Lo;0;L;;;;;N;;;;; +CE40;HANGUL SYLLABLE CYIN;Lo;0;L;;;;;N;;;;; +CE41;HANGUL SYLLABLE CYINI;Lo;0;L;;;;;N;;;;; +CE42;HANGUL SYLLABLE CYINH;Lo;0;L;;;;;N;;;;; +CE43;HANGUL SYLLABLE CYID;Lo;0;L;;;;;N;;;;; +CE44;HANGUL SYLLABLE CYIL;Lo;0;L;;;;;N;;;;; +CE45;HANGUL SYLLABLE CYILG;Lo;0;L;;;;;N;;;;; +CE46;HANGUL SYLLABLE CYILM;Lo;0;L;;;;;N;;;;; +CE47;HANGUL SYLLABLE CYILB;Lo;0;L;;;;;N;;;;; +CE48;HANGUL SYLLABLE CYILS;Lo;0;L;;;;;N;;;;; +CE49;HANGUL SYLLABLE CYILT;Lo;0;L;;;;;N;;;;; +CE4A;HANGUL SYLLABLE CYILP;Lo;0;L;;;;;N;;;;; +CE4B;HANGUL SYLLABLE CYILH;Lo;0;L;;;;;N;;;;; +CE4C;HANGUL SYLLABLE CYIM;Lo;0;L;;;;;N;;;;; +CE4D;HANGUL SYLLABLE CYIB;Lo;0;L;;;;;N;;;;; +CE4E;HANGUL SYLLABLE CYIBS;Lo;0;L;;;;;N;;;;; +CE4F;HANGUL SYLLABLE CYIS;Lo;0;L;;;;;N;;;;; +CE50;HANGUL SYLLABLE CYISS;Lo;0;L;;;;;N;;;;; +CE51;HANGUL SYLLABLE CYING;Lo;0;L;;;;;N;;;;; +CE52;HANGUL SYLLABLE CYIJ;Lo;0;L;;;;;N;;;;; +CE53;HANGUL SYLLABLE CYIC;Lo;0;L;;;;;N;;;;; +CE54;HANGUL SYLLABLE CYIK;Lo;0;L;;;;;N;;;;; +CE55;HANGUL SYLLABLE CYIT;Lo;0;L;;;;;N;;;;; +CE56;HANGUL SYLLABLE CYIP;Lo;0;L;;;;;N;;;;; +CE57;HANGUL SYLLABLE CYIH;Lo;0;L;;;;;N;;;;; +CE58;HANGUL SYLLABLE CI;Lo;0;L;;;;;N;;;;; +CE59;HANGUL SYLLABLE CIG;Lo;0;L;;;;;N;;;;; +CE5A;HANGUL SYLLABLE CIGG;Lo;0;L;;;;;N;;;;; +CE5B;HANGUL SYLLABLE CIGS;Lo;0;L;;;;;N;;;;; +CE5C;HANGUL SYLLABLE CIN;Lo;0;L;;;;;N;;;;; +CE5D;HANGUL SYLLABLE CINI;Lo;0;L;;;;;N;;;;; +CE5E;HANGUL SYLLABLE CINH;Lo;0;L;;;;;N;;;;; +CE5F;HANGUL SYLLABLE CID;Lo;0;L;;;;;N;;;;; +CE60;HANGUL SYLLABLE CIL;Lo;0;L;;;;;N;;;;; +CE61;HANGUL SYLLABLE CILG;Lo;0;L;;;;;N;;;;; +CE62;HANGUL SYLLABLE CILM;Lo;0;L;;;;;N;;;;; +CE63;HANGUL SYLLABLE CILB;Lo;0;L;;;;;N;;;;; +CE64;HANGUL SYLLABLE CILS;Lo;0;L;;;;;N;;;;; +CE65;HANGUL SYLLABLE CILT;Lo;0;L;;;;;N;;;;; +CE66;HANGUL SYLLABLE CILP;Lo;0;L;;;;;N;;;;; +CE67;HANGUL SYLLABLE CILH;Lo;0;L;;;;;N;;;;; +CE68;HANGUL SYLLABLE CIM;Lo;0;L;;;;;N;;;;; +CE69;HANGUL SYLLABLE CIB;Lo;0;L;;;;;N;;;;; +CE6A;HANGUL SYLLABLE CIBS;Lo;0;L;;;;;N;;;;; +CE6B;HANGUL SYLLABLE CIS;Lo;0;L;;;;;N;;;;; +CE6C;HANGUL SYLLABLE CISS;Lo;0;L;;;;;N;;;;; +CE6D;HANGUL SYLLABLE CING;Lo;0;L;;;;;N;;;;; +CE6E;HANGUL SYLLABLE CIJ;Lo;0;L;;;;;N;;;;; +CE6F;HANGUL SYLLABLE CIC;Lo;0;L;;;;;N;;;;; +CE70;HANGUL SYLLABLE CIK;Lo;0;L;;;;;N;;;;; +CE71;HANGUL SYLLABLE CIT;Lo;0;L;;;;;N;;;;; +CE72;HANGUL SYLLABLE CIP;Lo;0;L;;;;;N;;;;; +CE73;HANGUL SYLLABLE CIH;Lo;0;L;;;;;N;;;;; +CE74;HANGUL SYLLABLE KA;Lo;0;L;;;;;N;;;;; +CE75;HANGUL SYLLABLE KAG;Lo;0;L;;;;;N;;;;; +CE76;HANGUL SYLLABLE KAGG;Lo;0;L;;;;;N;;;;; +CE77;HANGUL SYLLABLE KAGS;Lo;0;L;;;;;N;;;;; +CE78;HANGUL SYLLABLE KAN;Lo;0;L;;;;;N;;;;; +CE79;HANGUL SYLLABLE KANI;Lo;0;L;;;;;N;;;;; +CE7A;HANGUL SYLLABLE KANH;Lo;0;L;;;;;N;;;;; +CE7B;HANGUL SYLLABLE KAD;Lo;0;L;;;;;N;;;;; +CE7C;HANGUL SYLLABLE KAL;Lo;0;L;;;;;N;;;;; +CE7D;HANGUL SYLLABLE KALG;Lo;0;L;;;;;N;;;;; +CE7E;HANGUL SYLLABLE KALM;Lo;0;L;;;;;N;;;;; +CE7F;HANGUL SYLLABLE KALB;Lo;0;L;;;;;N;;;;; +CE80;HANGUL SYLLABLE KALS;Lo;0;L;;;;;N;;;;; +CE81;HANGUL SYLLABLE KALT;Lo;0;L;;;;;N;;;;; +CE82;HANGUL SYLLABLE KALP;Lo;0;L;;;;;N;;;;; +CE83;HANGUL SYLLABLE KALH;Lo;0;L;;;;;N;;;;; +CE84;HANGUL SYLLABLE KAM;Lo;0;L;;;;;N;;;;; +CE85;HANGUL SYLLABLE KAB;Lo;0;L;;;;;N;;;;; +CE86;HANGUL SYLLABLE KABS;Lo;0;L;;;;;N;;;;; +CE87;HANGUL SYLLABLE KAS;Lo;0;L;;;;;N;;;;; +CE88;HANGUL SYLLABLE KASS;Lo;0;L;;;;;N;;;;; +CE89;HANGUL SYLLABLE KANG;Lo;0;L;;;;;N;;;;; +CE8A;HANGUL SYLLABLE KAJ;Lo;0;L;;;;;N;;;;; +CE8B;HANGUL SYLLABLE KAC;Lo;0;L;;;;;N;;;;; +CE8C;HANGUL SYLLABLE KAK;Lo;0;L;;;;;N;;;;; +CE8D;HANGUL SYLLABLE KAT;Lo;0;L;;;;;N;;;;; +CE8E;HANGUL SYLLABLE KAP;Lo;0;L;;;;;N;;;;; +CE8F;HANGUL SYLLABLE KAH;Lo;0;L;;;;;N;;;;; +CE90;HANGUL SYLLABLE KAE;Lo;0;L;;;;;N;;;;; +CE91;HANGUL SYLLABLE KAEG;Lo;0;L;;;;;N;;;;; +CE92;HANGUL SYLLABLE KAEGG;Lo;0;L;;;;;N;;;;; +CE93;HANGUL SYLLABLE KAEGS;Lo;0;L;;;;;N;;;;; +CE94;HANGUL SYLLABLE KAEN;Lo;0;L;;;;;N;;;;; +CE95;HANGUL SYLLABLE KAENI;Lo;0;L;;;;;N;;;;; +CE96;HANGUL SYLLABLE KAENH;Lo;0;L;;;;;N;;;;; +CE97;HANGUL SYLLABLE KAED;Lo;0;L;;;;;N;;;;; +CE98;HANGUL SYLLABLE KAEL;Lo;0;L;;;;;N;;;;; +CE99;HANGUL SYLLABLE KAELG;Lo;0;L;;;;;N;;;;; +CE9A;HANGUL SYLLABLE KAELM;Lo;0;L;;;;;N;;;;; +CE9B;HANGUL SYLLABLE KAELB;Lo;0;L;;;;;N;;;;; +CE9C;HANGUL SYLLABLE KAELS;Lo;0;L;;;;;N;;;;; +CE9D;HANGUL SYLLABLE KAELT;Lo;0;L;;;;;N;;;;; +CE9E;HANGUL SYLLABLE KAELP;Lo;0;L;;;;;N;;;;; +CE9F;HANGUL SYLLABLE KAELH;Lo;0;L;;;;;N;;;;; +CEA0;HANGUL SYLLABLE KAEM;Lo;0;L;;;;;N;;;;; +CEA1;HANGUL SYLLABLE KAEB;Lo;0;L;;;;;N;;;;; +CEA2;HANGUL SYLLABLE KAEBS;Lo;0;L;;;;;N;;;;; +CEA3;HANGUL SYLLABLE KAES;Lo;0;L;;;;;N;;;;; +CEA4;HANGUL SYLLABLE KAESS;Lo;0;L;;;;;N;;;;; +CEA5;HANGUL SYLLABLE KAENG;Lo;0;L;;;;;N;;;;; +CEA6;HANGUL SYLLABLE KAEJ;Lo;0;L;;;;;N;;;;; +CEA7;HANGUL SYLLABLE KAEC;Lo;0;L;;;;;N;;;;; +CEA8;HANGUL SYLLABLE KAEK;Lo;0;L;;;;;N;;;;; +CEA9;HANGUL SYLLABLE KAET;Lo;0;L;;;;;N;;;;; +CEAA;HANGUL SYLLABLE KAEP;Lo;0;L;;;;;N;;;;; +CEAB;HANGUL SYLLABLE KAEH;Lo;0;L;;;;;N;;;;; +CEAC;HANGUL SYLLABLE KYA;Lo;0;L;;;;;N;;;;; +CEAD;HANGUL SYLLABLE KYAG;Lo;0;L;;;;;N;;;;; +CEAE;HANGUL SYLLABLE KYAGG;Lo;0;L;;;;;N;;;;; +CEAF;HANGUL SYLLABLE KYAGS;Lo;0;L;;;;;N;;;;; +CEB0;HANGUL SYLLABLE KYAN;Lo;0;L;;;;;N;;;;; +CEB1;HANGUL SYLLABLE KYANI;Lo;0;L;;;;;N;;;;; +CEB2;HANGUL SYLLABLE KYANH;Lo;0;L;;;;;N;;;;; +CEB3;HANGUL SYLLABLE KYAD;Lo;0;L;;;;;N;;;;; +CEB4;HANGUL SYLLABLE KYAL;Lo;0;L;;;;;N;;;;; +CEB5;HANGUL SYLLABLE KYALG;Lo;0;L;;;;;N;;;;; +CEB6;HANGUL SYLLABLE KYALM;Lo;0;L;;;;;N;;;;; +CEB7;HANGUL SYLLABLE KYALB;Lo;0;L;;;;;N;;;;; +CEB8;HANGUL SYLLABLE KYALS;Lo;0;L;;;;;N;;;;; +CEB9;HANGUL SYLLABLE KYALT;Lo;0;L;;;;;N;;;;; +CEBA;HANGUL SYLLABLE KYALP;Lo;0;L;;;;;N;;;;; +CEBB;HANGUL SYLLABLE KYALH;Lo;0;L;;;;;N;;;;; +CEBC;HANGUL SYLLABLE KYAM;Lo;0;L;;;;;N;;;;; +CEBD;HANGUL SYLLABLE KYAB;Lo;0;L;;;;;N;;;;; +CEBE;HANGUL SYLLABLE KYABS;Lo;0;L;;;;;N;;;;; +CEBF;HANGUL SYLLABLE KYAS;Lo;0;L;;;;;N;;;;; +CEC0;HANGUL SYLLABLE KYASS;Lo;0;L;;;;;N;;;;; +CEC1;HANGUL SYLLABLE KYANG;Lo;0;L;;;;;N;;;;; +CEC2;HANGUL SYLLABLE KYAJ;Lo;0;L;;;;;N;;;;; +CEC3;HANGUL SYLLABLE KYAC;Lo;0;L;;;;;N;;;;; +CEC4;HANGUL SYLLABLE KYAK;Lo;0;L;;;;;N;;;;; +CEC5;HANGUL SYLLABLE KYAT;Lo;0;L;;;;;N;;;;; +CEC6;HANGUL SYLLABLE KYAP;Lo;0;L;;;;;N;;;;; +CEC7;HANGUL SYLLABLE KYAH;Lo;0;L;;;;;N;;;;; +CEC8;HANGUL SYLLABLE KYAE;Lo;0;L;;;;;N;;;;; +CEC9;HANGUL SYLLABLE KYAEG;Lo;0;L;;;;;N;;;;; +CECA;HANGUL SYLLABLE KYAEGG;Lo;0;L;;;;;N;;;;; +CECB;HANGUL SYLLABLE KYAEGS;Lo;0;L;;;;;N;;;;; +CECC;HANGUL SYLLABLE KYAEN;Lo;0;L;;;;;N;;;;; +CECD;HANGUL SYLLABLE KYAENI;Lo;0;L;;;;;N;;;;; +CECE;HANGUL SYLLABLE KYAENH;Lo;0;L;;;;;N;;;;; +CECF;HANGUL SYLLABLE KYAED;Lo;0;L;;;;;N;;;;; +CED0;HANGUL SYLLABLE KYAEL;Lo;0;L;;;;;N;;;;; +CED1;HANGUL SYLLABLE KYAELG;Lo;0;L;;;;;N;;;;; +CED2;HANGUL SYLLABLE KYAELM;Lo;0;L;;;;;N;;;;; +CED3;HANGUL SYLLABLE KYAELB;Lo;0;L;;;;;N;;;;; +CED4;HANGUL SYLLABLE KYAELS;Lo;0;L;;;;;N;;;;; +CED5;HANGUL SYLLABLE KYAELT;Lo;0;L;;;;;N;;;;; +CED6;HANGUL SYLLABLE KYAELP;Lo;0;L;;;;;N;;;;; +CED7;HANGUL SYLLABLE KYAELH;Lo;0;L;;;;;N;;;;; +CED8;HANGUL SYLLABLE KYAEM;Lo;0;L;;;;;N;;;;; +CED9;HANGUL SYLLABLE KYAEB;Lo;0;L;;;;;N;;;;; +CEDA;HANGUL SYLLABLE KYAEBS;Lo;0;L;;;;;N;;;;; +CEDB;HANGUL SYLLABLE KYAES;Lo;0;L;;;;;N;;;;; +CEDC;HANGUL SYLLABLE KYAESS;Lo;0;L;;;;;N;;;;; +CEDD;HANGUL SYLLABLE KYAENG;Lo;0;L;;;;;N;;;;; +CEDE;HANGUL SYLLABLE KYAEJ;Lo;0;L;;;;;N;;;;; +CEDF;HANGUL SYLLABLE KYAEC;Lo;0;L;;;;;N;;;;; +CEE0;HANGUL SYLLABLE KYAEK;Lo;0;L;;;;;N;;;;; +CEE1;HANGUL SYLLABLE KYAET;Lo;0;L;;;;;N;;;;; +CEE2;HANGUL SYLLABLE KYAEP;Lo;0;L;;;;;N;;;;; +CEE3;HANGUL SYLLABLE KYAEH;Lo;0;L;;;;;N;;;;; +CEE4;HANGUL SYLLABLE KEO;Lo;0;L;;;;;N;;;;; +CEE5;HANGUL SYLLABLE KEOG;Lo;0;L;;;;;N;;;;; +CEE6;HANGUL SYLLABLE KEOGG;Lo;0;L;;;;;N;;;;; +CEE7;HANGUL SYLLABLE KEOGS;Lo;0;L;;;;;N;;;;; +CEE8;HANGUL SYLLABLE KEON;Lo;0;L;;;;;N;;;;; +CEE9;HANGUL SYLLABLE KEONI;Lo;0;L;;;;;N;;;;; +CEEA;HANGUL SYLLABLE KEONH;Lo;0;L;;;;;N;;;;; +CEEB;HANGUL SYLLABLE KEOD;Lo;0;L;;;;;N;;;;; +CEEC;HANGUL SYLLABLE KEOL;Lo;0;L;;;;;N;;;;; +CEED;HANGUL SYLLABLE KEOLG;Lo;0;L;;;;;N;;;;; +CEEE;HANGUL SYLLABLE KEOLM;Lo;0;L;;;;;N;;;;; +CEEF;HANGUL SYLLABLE KEOLB;Lo;0;L;;;;;N;;;;; +CEF0;HANGUL SYLLABLE KEOLS;Lo;0;L;;;;;N;;;;; +CEF1;HANGUL SYLLABLE KEOLT;Lo;0;L;;;;;N;;;;; +CEF2;HANGUL SYLLABLE KEOLP;Lo;0;L;;;;;N;;;;; +CEF3;HANGUL SYLLABLE KEOLH;Lo;0;L;;;;;N;;;;; +CEF4;HANGUL SYLLABLE KEOM;Lo;0;L;;;;;N;;;;; +CEF5;HANGUL SYLLABLE KEOB;Lo;0;L;;;;;N;;;;; +CEF6;HANGUL SYLLABLE KEOBS;Lo;0;L;;;;;N;;;;; +CEF7;HANGUL SYLLABLE KEOS;Lo;0;L;;;;;N;;;;; +CEF8;HANGUL SYLLABLE KEOSS;Lo;0;L;;;;;N;;;;; +CEF9;HANGUL SYLLABLE KEONG;Lo;0;L;;;;;N;;;;; +CEFA;HANGUL SYLLABLE KEOJ;Lo;0;L;;;;;N;;;;; +CEFB;HANGUL SYLLABLE KEOC;Lo;0;L;;;;;N;;;;; +CEFC;HANGUL SYLLABLE KEOK;Lo;0;L;;;;;N;;;;; +CEFD;HANGUL SYLLABLE KEOT;Lo;0;L;;;;;N;;;;; +CEFE;HANGUL SYLLABLE KEOP;Lo;0;L;;;;;N;;;;; +CEFF;HANGUL SYLLABLE KEOH;Lo;0;L;;;;;N;;;;; +CF00;HANGUL SYLLABLE KE;Lo;0;L;;;;;N;;;;; +CF01;HANGUL SYLLABLE KEG;Lo;0;L;;;;;N;;;;; +CF02;HANGUL SYLLABLE KEGG;Lo;0;L;;;;;N;;;;; +CF03;HANGUL SYLLABLE KEGS;Lo;0;L;;;;;N;;;;; +CF04;HANGUL SYLLABLE KEN;Lo;0;L;;;;;N;;;;; +CF05;HANGUL SYLLABLE KENI;Lo;0;L;;;;;N;;;;; +CF06;HANGUL SYLLABLE KENH;Lo;0;L;;;;;N;;;;; +CF07;HANGUL SYLLABLE KED;Lo;0;L;;;;;N;;;;; +CF08;HANGUL SYLLABLE KEL;Lo;0;L;;;;;N;;;;; +CF09;HANGUL SYLLABLE KELG;Lo;0;L;;;;;N;;;;; +CF0A;HANGUL SYLLABLE KELM;Lo;0;L;;;;;N;;;;; +CF0B;HANGUL SYLLABLE KELB;Lo;0;L;;;;;N;;;;; +CF0C;HANGUL SYLLABLE KELS;Lo;0;L;;;;;N;;;;; +CF0D;HANGUL SYLLABLE KELT;Lo;0;L;;;;;N;;;;; +CF0E;HANGUL SYLLABLE KELP;Lo;0;L;;;;;N;;;;; +CF0F;HANGUL SYLLABLE KELH;Lo;0;L;;;;;N;;;;; +CF10;HANGUL SYLLABLE KEM;Lo;0;L;;;;;N;;;;; +CF11;HANGUL SYLLABLE KEB;Lo;0;L;;;;;N;;;;; +CF12;HANGUL SYLLABLE KEBS;Lo;0;L;;;;;N;;;;; +CF13;HANGUL SYLLABLE KES;Lo;0;L;;;;;N;;;;; +CF14;HANGUL SYLLABLE KESS;Lo;0;L;;;;;N;;;;; +CF15;HANGUL SYLLABLE KENG;Lo;0;L;;;;;N;;;;; +CF16;HANGUL SYLLABLE KEJ;Lo;0;L;;;;;N;;;;; +CF17;HANGUL SYLLABLE KEC;Lo;0;L;;;;;N;;;;; +CF18;HANGUL SYLLABLE KEK;Lo;0;L;;;;;N;;;;; +CF19;HANGUL SYLLABLE KET;Lo;0;L;;;;;N;;;;; +CF1A;HANGUL SYLLABLE KEP;Lo;0;L;;;;;N;;;;; +CF1B;HANGUL SYLLABLE KEH;Lo;0;L;;;;;N;;;;; +CF1C;HANGUL SYLLABLE KYEO;Lo;0;L;;;;;N;;;;; +CF1D;HANGUL SYLLABLE KYEOG;Lo;0;L;;;;;N;;;;; +CF1E;HANGUL SYLLABLE KYEOGG;Lo;0;L;;;;;N;;;;; +CF1F;HANGUL SYLLABLE KYEOGS;Lo;0;L;;;;;N;;;;; +CF20;HANGUL SYLLABLE KYEON;Lo;0;L;;;;;N;;;;; +CF21;HANGUL SYLLABLE KYEONI;Lo;0;L;;;;;N;;;;; +CF22;HANGUL SYLLABLE KYEONH;Lo;0;L;;;;;N;;;;; +CF23;HANGUL SYLLABLE KYEOD;Lo;0;L;;;;;N;;;;; +CF24;HANGUL SYLLABLE KYEOL;Lo;0;L;;;;;N;;;;; +CF25;HANGUL SYLLABLE KYEOLG;Lo;0;L;;;;;N;;;;; +CF26;HANGUL SYLLABLE KYEOLM;Lo;0;L;;;;;N;;;;; +CF27;HANGUL SYLLABLE KYEOLB;Lo;0;L;;;;;N;;;;; +CF28;HANGUL SYLLABLE KYEOLS;Lo;0;L;;;;;N;;;;; +CF29;HANGUL SYLLABLE KYEOLT;Lo;0;L;;;;;N;;;;; +CF2A;HANGUL SYLLABLE KYEOLP;Lo;0;L;;;;;N;;;;; +CF2B;HANGUL SYLLABLE KYEOLH;Lo;0;L;;;;;N;;;;; +CF2C;HANGUL SYLLABLE KYEOM;Lo;0;L;;;;;N;;;;; +CF2D;HANGUL SYLLABLE KYEOB;Lo;0;L;;;;;N;;;;; +CF2E;HANGUL SYLLABLE KYEOBS;Lo;0;L;;;;;N;;;;; +CF2F;HANGUL SYLLABLE KYEOS;Lo;0;L;;;;;N;;;;; +CF30;HANGUL SYLLABLE KYEOSS;Lo;0;L;;;;;N;;;;; +CF31;HANGUL SYLLABLE KYEONG;Lo;0;L;;;;;N;;;;; +CF32;HANGUL SYLLABLE KYEOJ;Lo;0;L;;;;;N;;;;; +CF33;HANGUL SYLLABLE KYEOC;Lo;0;L;;;;;N;;;;; +CF34;HANGUL SYLLABLE KYEOK;Lo;0;L;;;;;N;;;;; +CF35;HANGUL SYLLABLE KYEOT;Lo;0;L;;;;;N;;;;; +CF36;HANGUL SYLLABLE KYEOP;Lo;0;L;;;;;N;;;;; +CF37;HANGUL SYLLABLE KYEOH;Lo;0;L;;;;;N;;;;; +CF38;HANGUL SYLLABLE KYE;Lo;0;L;;;;;N;;;;; +CF39;HANGUL SYLLABLE KYEG;Lo;0;L;;;;;N;;;;; +CF3A;HANGUL SYLLABLE KYEGG;Lo;0;L;;;;;N;;;;; +CF3B;HANGUL SYLLABLE KYEGS;Lo;0;L;;;;;N;;;;; +CF3C;HANGUL SYLLABLE KYEN;Lo;0;L;;;;;N;;;;; +CF3D;HANGUL SYLLABLE KYENI;Lo;0;L;;;;;N;;;;; +CF3E;HANGUL SYLLABLE KYENH;Lo;0;L;;;;;N;;;;; +CF3F;HANGUL SYLLABLE KYED;Lo;0;L;;;;;N;;;;; +CF40;HANGUL SYLLABLE KYEL;Lo;0;L;;;;;N;;;;; +CF41;HANGUL SYLLABLE KYELG;Lo;0;L;;;;;N;;;;; +CF42;HANGUL SYLLABLE KYELM;Lo;0;L;;;;;N;;;;; +CF43;HANGUL SYLLABLE KYELB;Lo;0;L;;;;;N;;;;; +CF44;HANGUL SYLLABLE KYELS;Lo;0;L;;;;;N;;;;; +CF45;HANGUL SYLLABLE KYELT;Lo;0;L;;;;;N;;;;; +CF46;HANGUL SYLLABLE KYELP;Lo;0;L;;;;;N;;;;; +CF47;HANGUL SYLLABLE KYELH;Lo;0;L;;;;;N;;;;; +CF48;HANGUL SYLLABLE KYEM;Lo;0;L;;;;;N;;;;; +CF49;HANGUL SYLLABLE KYEB;Lo;0;L;;;;;N;;;;; +CF4A;HANGUL SYLLABLE KYEBS;Lo;0;L;;;;;N;;;;; +CF4B;HANGUL SYLLABLE KYES;Lo;0;L;;;;;N;;;;; +CF4C;HANGUL SYLLABLE KYESS;Lo;0;L;;;;;N;;;;; +CF4D;HANGUL SYLLABLE KYENG;Lo;0;L;;;;;N;;;;; +CF4E;HANGUL SYLLABLE KYEJ;Lo;0;L;;;;;N;;;;; +CF4F;HANGUL SYLLABLE KYEC;Lo;0;L;;;;;N;;;;; +CF50;HANGUL SYLLABLE KYEK;Lo;0;L;;;;;N;;;;; +CF51;HANGUL SYLLABLE KYET;Lo;0;L;;;;;N;;;;; +CF52;HANGUL SYLLABLE KYEP;Lo;0;L;;;;;N;;;;; +CF53;HANGUL SYLLABLE KYEH;Lo;0;L;;;;;N;;;;; +CF54;HANGUL SYLLABLE KO;Lo;0;L;;;;;N;;;;; +CF55;HANGUL SYLLABLE KOG;Lo;0;L;;;;;N;;;;; +CF56;HANGUL SYLLABLE KOGG;Lo;0;L;;;;;N;;;;; +CF57;HANGUL SYLLABLE KOGS;Lo;0;L;;;;;N;;;;; +CF58;HANGUL SYLLABLE KON;Lo;0;L;;;;;N;;;;; +CF59;HANGUL SYLLABLE KONI;Lo;0;L;;;;;N;;;;; +CF5A;HANGUL SYLLABLE KONH;Lo;0;L;;;;;N;;;;; +CF5B;HANGUL SYLLABLE KOD;Lo;0;L;;;;;N;;;;; +CF5C;HANGUL SYLLABLE KOL;Lo;0;L;;;;;N;;;;; +CF5D;HANGUL SYLLABLE KOLG;Lo;0;L;;;;;N;;;;; +CF5E;HANGUL SYLLABLE KOLM;Lo;0;L;;;;;N;;;;; +CF5F;HANGUL SYLLABLE KOLB;Lo;0;L;;;;;N;;;;; +CF60;HANGUL SYLLABLE KOLS;Lo;0;L;;;;;N;;;;; +CF61;HANGUL SYLLABLE KOLT;Lo;0;L;;;;;N;;;;; +CF62;HANGUL SYLLABLE KOLP;Lo;0;L;;;;;N;;;;; +CF63;HANGUL SYLLABLE KOLH;Lo;0;L;;;;;N;;;;; +CF64;HANGUL SYLLABLE KOM;Lo;0;L;;;;;N;;;;; +CF65;HANGUL SYLLABLE KOB;Lo;0;L;;;;;N;;;;; +CF66;HANGUL SYLLABLE KOBS;Lo;0;L;;;;;N;;;;; +CF67;HANGUL SYLLABLE KOS;Lo;0;L;;;;;N;;;;; +CF68;HANGUL SYLLABLE KOSS;Lo;0;L;;;;;N;;;;; +CF69;HANGUL SYLLABLE KONG;Lo;0;L;;;;;N;;;;; +CF6A;HANGUL SYLLABLE KOJ;Lo;0;L;;;;;N;;;;; +CF6B;HANGUL SYLLABLE KOC;Lo;0;L;;;;;N;;;;; +CF6C;HANGUL SYLLABLE KOK;Lo;0;L;;;;;N;;;;; +CF6D;HANGUL SYLLABLE KOT;Lo;0;L;;;;;N;;;;; +CF6E;HANGUL SYLLABLE KOP;Lo;0;L;;;;;N;;;;; +CF6F;HANGUL SYLLABLE KOH;Lo;0;L;;;;;N;;;;; +CF70;HANGUL SYLLABLE KWA;Lo;0;L;;;;;N;;;;; +CF71;HANGUL SYLLABLE KWAG;Lo;0;L;;;;;N;;;;; +CF72;HANGUL SYLLABLE KWAGG;Lo;0;L;;;;;N;;;;; +CF73;HANGUL SYLLABLE KWAGS;Lo;0;L;;;;;N;;;;; +CF74;HANGUL SYLLABLE KWAN;Lo;0;L;;;;;N;;;;; +CF75;HANGUL SYLLABLE KWANI;Lo;0;L;;;;;N;;;;; +CF76;HANGUL SYLLABLE KWANH;Lo;0;L;;;;;N;;;;; +CF77;HANGUL SYLLABLE KWAD;Lo;0;L;;;;;N;;;;; +CF78;HANGUL SYLLABLE KWAL;Lo;0;L;;;;;N;;;;; +CF79;HANGUL SYLLABLE KWALG;Lo;0;L;;;;;N;;;;; +CF7A;HANGUL SYLLABLE KWALM;Lo;0;L;;;;;N;;;;; +CF7B;HANGUL SYLLABLE KWALB;Lo;0;L;;;;;N;;;;; +CF7C;HANGUL SYLLABLE KWALS;Lo;0;L;;;;;N;;;;; +CF7D;HANGUL SYLLABLE KWALT;Lo;0;L;;;;;N;;;;; +CF7E;HANGUL SYLLABLE KWALP;Lo;0;L;;;;;N;;;;; +CF7F;HANGUL SYLLABLE KWALH;Lo;0;L;;;;;N;;;;; +CF80;HANGUL SYLLABLE KWAM;Lo;0;L;;;;;N;;;;; +CF81;HANGUL SYLLABLE KWAB;Lo;0;L;;;;;N;;;;; +CF82;HANGUL SYLLABLE KWABS;Lo;0;L;;;;;N;;;;; +CF83;HANGUL SYLLABLE KWAS;Lo;0;L;;;;;N;;;;; +CF84;HANGUL SYLLABLE KWASS;Lo;0;L;;;;;N;;;;; +CF85;HANGUL SYLLABLE KWANG;Lo;0;L;;;;;N;;;;; +CF86;HANGUL SYLLABLE KWAJ;Lo;0;L;;;;;N;;;;; +CF87;HANGUL SYLLABLE KWAC;Lo;0;L;;;;;N;;;;; +CF88;HANGUL SYLLABLE KWAK;Lo;0;L;;;;;N;;;;; +CF89;HANGUL SYLLABLE KWAT;Lo;0;L;;;;;N;;;;; +CF8A;HANGUL SYLLABLE KWAP;Lo;0;L;;;;;N;;;;; +CF8B;HANGUL SYLLABLE KWAH;Lo;0;L;;;;;N;;;;; +CF8C;HANGUL SYLLABLE KWAE;Lo;0;L;;;;;N;;;;; +CF8D;HANGUL SYLLABLE KWAEG;Lo;0;L;;;;;N;;;;; +CF8E;HANGUL SYLLABLE KWAEGG;Lo;0;L;;;;;N;;;;; +CF8F;HANGUL SYLLABLE KWAEGS;Lo;0;L;;;;;N;;;;; +CF90;HANGUL SYLLABLE KWAEN;Lo;0;L;;;;;N;;;;; +CF91;HANGUL SYLLABLE KWAENI;Lo;0;L;;;;;N;;;;; +CF92;HANGUL SYLLABLE KWAENH;Lo;0;L;;;;;N;;;;; +CF93;HANGUL SYLLABLE KWAED;Lo;0;L;;;;;N;;;;; +CF94;HANGUL SYLLABLE KWAEL;Lo;0;L;;;;;N;;;;; +CF95;HANGUL SYLLABLE KWAELG;Lo;0;L;;;;;N;;;;; +CF96;HANGUL SYLLABLE KWAELM;Lo;0;L;;;;;N;;;;; +CF97;HANGUL SYLLABLE KWAELB;Lo;0;L;;;;;N;;;;; +CF98;HANGUL SYLLABLE KWAELS;Lo;0;L;;;;;N;;;;; +CF99;HANGUL SYLLABLE KWAELT;Lo;0;L;;;;;N;;;;; +CF9A;HANGUL SYLLABLE KWAELP;Lo;0;L;;;;;N;;;;; +CF9B;HANGUL SYLLABLE KWAELH;Lo;0;L;;;;;N;;;;; +CF9C;HANGUL SYLLABLE KWAEM;Lo;0;L;;;;;N;;;;; +CF9D;HANGUL SYLLABLE KWAEB;Lo;0;L;;;;;N;;;;; +CF9E;HANGUL SYLLABLE KWAEBS;Lo;0;L;;;;;N;;;;; +CF9F;HANGUL SYLLABLE KWAES;Lo;0;L;;;;;N;;;;; +CFA0;HANGUL SYLLABLE KWAESS;Lo;0;L;;;;;N;;;;; +CFA1;HANGUL SYLLABLE KWAENG;Lo;0;L;;;;;N;;;;; +CFA2;HANGUL SYLLABLE KWAEJ;Lo;0;L;;;;;N;;;;; +CFA3;HANGUL SYLLABLE KWAEC;Lo;0;L;;;;;N;;;;; +CFA4;HANGUL SYLLABLE KWAEK;Lo;0;L;;;;;N;;;;; +CFA5;HANGUL SYLLABLE KWAET;Lo;0;L;;;;;N;;;;; +CFA6;HANGUL SYLLABLE KWAEP;Lo;0;L;;;;;N;;;;; +CFA7;HANGUL SYLLABLE KWAEH;Lo;0;L;;;;;N;;;;; +CFA8;HANGUL SYLLABLE KOE;Lo;0;L;;;;;N;;;;; +CFA9;HANGUL SYLLABLE KOEG;Lo;0;L;;;;;N;;;;; +CFAA;HANGUL SYLLABLE KOEGG;Lo;0;L;;;;;N;;;;; +CFAB;HANGUL SYLLABLE KOEGS;Lo;0;L;;;;;N;;;;; +CFAC;HANGUL SYLLABLE KOEN;Lo;0;L;;;;;N;;;;; +CFAD;HANGUL SYLLABLE KOENI;Lo;0;L;;;;;N;;;;; +CFAE;HANGUL SYLLABLE KOENH;Lo;0;L;;;;;N;;;;; +CFAF;HANGUL SYLLABLE KOED;Lo;0;L;;;;;N;;;;; +CFB0;HANGUL SYLLABLE KOEL;Lo;0;L;;;;;N;;;;; +CFB1;HANGUL SYLLABLE KOELG;Lo;0;L;;;;;N;;;;; +CFB2;HANGUL SYLLABLE KOELM;Lo;0;L;;;;;N;;;;; +CFB3;HANGUL SYLLABLE KOELB;Lo;0;L;;;;;N;;;;; +CFB4;HANGUL SYLLABLE KOELS;Lo;0;L;;;;;N;;;;; +CFB5;HANGUL SYLLABLE KOELT;Lo;0;L;;;;;N;;;;; +CFB6;HANGUL SYLLABLE KOELP;Lo;0;L;;;;;N;;;;; +CFB7;HANGUL SYLLABLE KOELH;Lo;0;L;;;;;N;;;;; +CFB8;HANGUL SYLLABLE KOEM;Lo;0;L;;;;;N;;;;; +CFB9;HANGUL SYLLABLE KOEB;Lo;0;L;;;;;N;;;;; +CFBA;HANGUL SYLLABLE KOEBS;Lo;0;L;;;;;N;;;;; +CFBB;HANGUL SYLLABLE KOES;Lo;0;L;;;;;N;;;;; +CFBC;HANGUL SYLLABLE KOESS;Lo;0;L;;;;;N;;;;; +CFBD;HANGUL SYLLABLE KOENG;Lo;0;L;;;;;N;;;;; +CFBE;HANGUL SYLLABLE KOEJ;Lo;0;L;;;;;N;;;;; +CFBF;HANGUL SYLLABLE KOEC;Lo;0;L;;;;;N;;;;; +CFC0;HANGUL SYLLABLE KOEK;Lo;0;L;;;;;N;;;;; +CFC1;HANGUL SYLLABLE KOET;Lo;0;L;;;;;N;;;;; +CFC2;HANGUL SYLLABLE KOEP;Lo;0;L;;;;;N;;;;; +CFC3;HANGUL SYLLABLE KOEH;Lo;0;L;;;;;N;;;;; +CFC4;HANGUL SYLLABLE KYO;Lo;0;L;;;;;N;;;;; +CFC5;HANGUL SYLLABLE KYOG;Lo;0;L;;;;;N;;;;; +CFC6;HANGUL SYLLABLE KYOGG;Lo;0;L;;;;;N;;;;; +CFC7;HANGUL SYLLABLE KYOGS;Lo;0;L;;;;;N;;;;; +CFC8;HANGUL SYLLABLE KYON;Lo;0;L;;;;;N;;;;; +CFC9;HANGUL SYLLABLE KYONI;Lo;0;L;;;;;N;;;;; +CFCA;HANGUL SYLLABLE KYONH;Lo;0;L;;;;;N;;;;; +CFCB;HANGUL SYLLABLE KYOD;Lo;0;L;;;;;N;;;;; +CFCC;HANGUL SYLLABLE KYOL;Lo;0;L;;;;;N;;;;; +CFCD;HANGUL SYLLABLE KYOLG;Lo;0;L;;;;;N;;;;; +CFCE;HANGUL SYLLABLE KYOLM;Lo;0;L;;;;;N;;;;; +CFCF;HANGUL SYLLABLE KYOLB;Lo;0;L;;;;;N;;;;; +CFD0;HANGUL SYLLABLE KYOLS;Lo;0;L;;;;;N;;;;; +CFD1;HANGUL SYLLABLE KYOLT;Lo;0;L;;;;;N;;;;; +CFD2;HANGUL SYLLABLE KYOLP;Lo;0;L;;;;;N;;;;; +CFD3;HANGUL SYLLABLE KYOLH;Lo;0;L;;;;;N;;;;; +CFD4;HANGUL SYLLABLE KYOM;Lo;0;L;;;;;N;;;;; +CFD5;HANGUL SYLLABLE KYOB;Lo;0;L;;;;;N;;;;; +CFD6;HANGUL SYLLABLE KYOBS;Lo;0;L;;;;;N;;;;; +CFD7;HANGUL SYLLABLE KYOS;Lo;0;L;;;;;N;;;;; +CFD8;HANGUL SYLLABLE KYOSS;Lo;0;L;;;;;N;;;;; +CFD9;HANGUL SYLLABLE KYONG;Lo;0;L;;;;;N;;;;; +CFDA;HANGUL SYLLABLE KYOJ;Lo;0;L;;;;;N;;;;; +CFDB;HANGUL SYLLABLE KYOC;Lo;0;L;;;;;N;;;;; +CFDC;HANGUL SYLLABLE KYOK;Lo;0;L;;;;;N;;;;; +CFDD;HANGUL SYLLABLE KYOT;Lo;0;L;;;;;N;;;;; +CFDE;HANGUL SYLLABLE KYOP;Lo;0;L;;;;;N;;;;; +CFDF;HANGUL SYLLABLE KYOH;Lo;0;L;;;;;N;;;;; +CFE0;HANGUL SYLLABLE KU;Lo;0;L;;;;;N;;;;; +CFE1;HANGUL SYLLABLE KUG;Lo;0;L;;;;;N;;;;; +CFE2;HANGUL SYLLABLE KUGG;Lo;0;L;;;;;N;;;;; +CFE3;HANGUL SYLLABLE KUGS;Lo;0;L;;;;;N;;;;; +CFE4;HANGUL SYLLABLE KUN;Lo;0;L;;;;;N;;;;; +CFE5;HANGUL SYLLABLE KUNI;Lo;0;L;;;;;N;;;;; +CFE6;HANGUL SYLLABLE KUNH;Lo;0;L;;;;;N;;;;; +CFE7;HANGUL SYLLABLE KUD;Lo;0;L;;;;;N;;;;; +CFE8;HANGUL SYLLABLE KUL;Lo;0;L;;;;;N;;;;; +CFE9;HANGUL SYLLABLE KULG;Lo;0;L;;;;;N;;;;; +CFEA;HANGUL SYLLABLE KULM;Lo;0;L;;;;;N;;;;; +CFEB;HANGUL SYLLABLE KULB;Lo;0;L;;;;;N;;;;; +CFEC;HANGUL SYLLABLE KULS;Lo;0;L;;;;;N;;;;; +CFED;HANGUL SYLLABLE KULT;Lo;0;L;;;;;N;;;;; +CFEE;HANGUL SYLLABLE KULP;Lo;0;L;;;;;N;;;;; +CFEF;HANGUL SYLLABLE KULH;Lo;0;L;;;;;N;;;;; +CFF0;HANGUL SYLLABLE KUM;Lo;0;L;;;;;N;;;;; +CFF1;HANGUL SYLLABLE KUB;Lo;0;L;;;;;N;;;;; +CFF2;HANGUL SYLLABLE KUBS;Lo;0;L;;;;;N;;;;; +CFF3;HANGUL SYLLABLE KUS;Lo;0;L;;;;;N;;;;; +CFF4;HANGUL SYLLABLE KUSS;Lo;0;L;;;;;N;;;;; +CFF5;HANGUL SYLLABLE KUNG;Lo;0;L;;;;;N;;;;; +CFF6;HANGUL SYLLABLE KUJ;Lo;0;L;;;;;N;;;;; +CFF7;HANGUL SYLLABLE KUC;Lo;0;L;;;;;N;;;;; +CFF8;HANGUL SYLLABLE KUK;Lo;0;L;;;;;N;;;;; +CFF9;HANGUL SYLLABLE KUT;Lo;0;L;;;;;N;;;;; +CFFA;HANGUL SYLLABLE KUP;Lo;0;L;;;;;N;;;;; +CFFB;HANGUL SYLLABLE KUH;Lo;0;L;;;;;N;;;;; +CFFC;HANGUL SYLLABLE KWEO;Lo;0;L;;;;;N;;;;; +CFFD;HANGUL SYLLABLE KWEOG;Lo;0;L;;;;;N;;;;; +CFFE;HANGUL SYLLABLE KWEOGG;Lo;0;L;;;;;N;;;;; +CFFF;HANGUL SYLLABLE KWEOGS;Lo;0;L;;;;;N;;;;; +D000;HANGUL SYLLABLE KWEON;Lo;0;L;;;;;N;;;;; +D001;HANGUL SYLLABLE KWEONI;Lo;0;L;;;;;N;;;;; +D002;HANGUL SYLLABLE KWEONH;Lo;0;L;;;;;N;;;;; +D003;HANGUL SYLLABLE KWEOD;Lo;0;L;;;;;N;;;;; +D004;HANGUL SYLLABLE KWEOL;Lo;0;L;;;;;N;;;;; +D005;HANGUL SYLLABLE KWEOLG;Lo;0;L;;;;;N;;;;; +D006;HANGUL SYLLABLE KWEOLM;Lo;0;L;;;;;N;;;;; +D007;HANGUL SYLLABLE KWEOLB;Lo;0;L;;;;;N;;;;; +D008;HANGUL SYLLABLE KWEOLS;Lo;0;L;;;;;N;;;;; +D009;HANGUL SYLLABLE KWEOLT;Lo;0;L;;;;;N;;;;; +D00A;HANGUL SYLLABLE KWEOLP;Lo;0;L;;;;;N;;;;; +D00B;HANGUL SYLLABLE KWEOLH;Lo;0;L;;;;;N;;;;; +D00C;HANGUL SYLLABLE KWEOM;Lo;0;L;;;;;N;;;;; +D00D;HANGUL SYLLABLE KWEOB;Lo;0;L;;;;;N;;;;; +D00E;HANGUL SYLLABLE KWEOBS;Lo;0;L;;;;;N;;;;; +D00F;HANGUL SYLLABLE KWEOS;Lo;0;L;;;;;N;;;;; +D010;HANGUL SYLLABLE KWEOSS;Lo;0;L;;;;;N;;;;; +D011;HANGUL SYLLABLE KWEONG;Lo;0;L;;;;;N;;;;; +D012;HANGUL SYLLABLE KWEOJ;Lo;0;L;;;;;N;;;;; +D013;HANGUL SYLLABLE KWEOC;Lo;0;L;;;;;N;;;;; +D014;HANGUL SYLLABLE KWEOK;Lo;0;L;;;;;N;;;;; +D015;HANGUL SYLLABLE KWEOT;Lo;0;L;;;;;N;;;;; +D016;HANGUL SYLLABLE KWEOP;Lo;0;L;;;;;N;;;;; +D017;HANGUL SYLLABLE KWEOH;Lo;0;L;;;;;N;;;;; +D018;HANGUL SYLLABLE KWE;Lo;0;L;;;;;N;;;;; +D019;HANGUL SYLLABLE KWEG;Lo;0;L;;;;;N;;;;; +D01A;HANGUL SYLLABLE KWEGG;Lo;0;L;;;;;N;;;;; +D01B;HANGUL SYLLABLE KWEGS;Lo;0;L;;;;;N;;;;; +D01C;HANGUL SYLLABLE KWEN;Lo;0;L;;;;;N;;;;; +D01D;HANGUL SYLLABLE KWENI;Lo;0;L;;;;;N;;;;; +D01E;HANGUL SYLLABLE KWENH;Lo;0;L;;;;;N;;;;; +D01F;HANGUL SYLLABLE KWED;Lo;0;L;;;;;N;;;;; +D020;HANGUL SYLLABLE KWEL;Lo;0;L;;;;;N;;;;; +D021;HANGUL SYLLABLE KWELG;Lo;0;L;;;;;N;;;;; +D022;HANGUL SYLLABLE KWELM;Lo;0;L;;;;;N;;;;; +D023;HANGUL SYLLABLE KWELB;Lo;0;L;;;;;N;;;;; +D024;HANGUL SYLLABLE KWELS;Lo;0;L;;;;;N;;;;; +D025;HANGUL SYLLABLE KWELT;Lo;0;L;;;;;N;;;;; +D026;HANGUL SYLLABLE KWELP;Lo;0;L;;;;;N;;;;; +D027;HANGUL SYLLABLE KWELH;Lo;0;L;;;;;N;;;;; +D028;HANGUL SYLLABLE KWEM;Lo;0;L;;;;;N;;;;; +D029;HANGUL SYLLABLE KWEB;Lo;0;L;;;;;N;;;;; +D02A;HANGUL SYLLABLE KWEBS;Lo;0;L;;;;;N;;;;; +D02B;HANGUL SYLLABLE KWES;Lo;0;L;;;;;N;;;;; +D02C;HANGUL SYLLABLE KWESS;Lo;0;L;;;;;N;;;;; +D02D;HANGUL SYLLABLE KWENG;Lo;0;L;;;;;N;;;;; +D02E;HANGUL SYLLABLE KWEJ;Lo;0;L;;;;;N;;;;; +D02F;HANGUL SYLLABLE KWEC;Lo;0;L;;;;;N;;;;; +D030;HANGUL SYLLABLE KWEK;Lo;0;L;;;;;N;;;;; +D031;HANGUL SYLLABLE KWET;Lo;0;L;;;;;N;;;;; +D032;HANGUL SYLLABLE KWEP;Lo;0;L;;;;;N;;;;; +D033;HANGUL SYLLABLE KWEH;Lo;0;L;;;;;N;;;;; +D034;HANGUL SYLLABLE KWI;Lo;0;L;;;;;N;;;;; +D035;HANGUL SYLLABLE KWIG;Lo;0;L;;;;;N;;;;; +D036;HANGUL SYLLABLE KWIGG;Lo;0;L;;;;;N;;;;; +D037;HANGUL SYLLABLE KWIGS;Lo;0;L;;;;;N;;;;; +D038;HANGUL SYLLABLE KWIN;Lo;0;L;;;;;N;;;;; +D039;HANGUL SYLLABLE KWINI;Lo;0;L;;;;;N;;;;; +D03A;HANGUL SYLLABLE KWINH;Lo;0;L;;;;;N;;;;; +D03B;HANGUL SYLLABLE KWID;Lo;0;L;;;;;N;;;;; +D03C;HANGUL SYLLABLE KWIL;Lo;0;L;;;;;N;;;;; +D03D;HANGUL SYLLABLE KWILG;Lo;0;L;;;;;N;;;;; +D03E;HANGUL SYLLABLE KWILM;Lo;0;L;;;;;N;;;;; +D03F;HANGUL SYLLABLE KWILB;Lo;0;L;;;;;N;;;;; +D040;HANGUL SYLLABLE KWILS;Lo;0;L;;;;;N;;;;; +D041;HANGUL SYLLABLE KWILT;Lo;0;L;;;;;N;;;;; +D042;HANGUL SYLLABLE KWILP;Lo;0;L;;;;;N;;;;; +D043;HANGUL SYLLABLE KWILH;Lo;0;L;;;;;N;;;;; +D044;HANGUL SYLLABLE KWIM;Lo;0;L;;;;;N;;;;; +D045;HANGUL SYLLABLE KWIB;Lo;0;L;;;;;N;;;;; +D046;HANGUL SYLLABLE KWIBS;Lo;0;L;;;;;N;;;;; +D047;HANGUL SYLLABLE KWIS;Lo;0;L;;;;;N;;;;; +D048;HANGUL SYLLABLE KWISS;Lo;0;L;;;;;N;;;;; +D049;HANGUL SYLLABLE KWING;Lo;0;L;;;;;N;;;;; +D04A;HANGUL SYLLABLE KWIJ;Lo;0;L;;;;;N;;;;; +D04B;HANGUL SYLLABLE KWIC;Lo;0;L;;;;;N;;;;; +D04C;HANGUL SYLLABLE KWIK;Lo;0;L;;;;;N;;;;; +D04D;HANGUL SYLLABLE KWIT;Lo;0;L;;;;;N;;;;; +D04E;HANGUL SYLLABLE KWIP;Lo;0;L;;;;;N;;;;; +D04F;HANGUL SYLLABLE KWIH;Lo;0;L;;;;;N;;;;; +D050;HANGUL SYLLABLE KYU;Lo;0;L;;;;;N;;;;; +D051;HANGUL SYLLABLE KYUG;Lo;0;L;;;;;N;;;;; +D052;HANGUL SYLLABLE KYUGG;Lo;0;L;;;;;N;;;;; +D053;HANGUL SYLLABLE KYUGS;Lo;0;L;;;;;N;;;;; +D054;HANGUL SYLLABLE KYUN;Lo;0;L;;;;;N;;;;; +D055;HANGUL SYLLABLE KYUNI;Lo;0;L;;;;;N;;;;; +D056;HANGUL SYLLABLE KYUNH;Lo;0;L;;;;;N;;;;; +D057;HANGUL SYLLABLE KYUD;Lo;0;L;;;;;N;;;;; +D058;HANGUL SYLLABLE KYUL;Lo;0;L;;;;;N;;;;; +D059;HANGUL SYLLABLE KYULG;Lo;0;L;;;;;N;;;;; +D05A;HANGUL SYLLABLE KYULM;Lo;0;L;;;;;N;;;;; +D05B;HANGUL SYLLABLE KYULB;Lo;0;L;;;;;N;;;;; +D05C;HANGUL SYLLABLE KYULS;Lo;0;L;;;;;N;;;;; +D05D;HANGUL SYLLABLE KYULT;Lo;0;L;;;;;N;;;;; +D05E;HANGUL SYLLABLE KYULP;Lo;0;L;;;;;N;;;;; +D05F;HANGUL SYLLABLE KYULH;Lo;0;L;;;;;N;;;;; +D060;HANGUL SYLLABLE KYUM;Lo;0;L;;;;;N;;;;; +D061;HANGUL SYLLABLE KYUB;Lo;0;L;;;;;N;;;;; +D062;HANGUL SYLLABLE KYUBS;Lo;0;L;;;;;N;;;;; +D063;HANGUL SYLLABLE KYUS;Lo;0;L;;;;;N;;;;; +D064;HANGUL SYLLABLE KYUSS;Lo;0;L;;;;;N;;;;; +D065;HANGUL SYLLABLE KYUNG;Lo;0;L;;;;;N;;;;; +D066;HANGUL SYLLABLE KYUJ;Lo;0;L;;;;;N;;;;; +D067;HANGUL SYLLABLE KYUC;Lo;0;L;;;;;N;;;;; +D068;HANGUL SYLLABLE KYUK;Lo;0;L;;;;;N;;;;; +D069;HANGUL SYLLABLE KYUT;Lo;0;L;;;;;N;;;;; +D06A;HANGUL SYLLABLE KYUP;Lo;0;L;;;;;N;;;;; +D06B;HANGUL SYLLABLE KYUH;Lo;0;L;;;;;N;;;;; +D06C;HANGUL SYLLABLE KEU;Lo;0;L;;;;;N;;;;; +D06D;HANGUL SYLLABLE KEUG;Lo;0;L;;;;;N;;;;; +D06E;HANGUL SYLLABLE KEUGG;Lo;0;L;;;;;N;;;;; +D06F;HANGUL SYLLABLE KEUGS;Lo;0;L;;;;;N;;;;; +D070;HANGUL SYLLABLE KEUN;Lo;0;L;;;;;N;;;;; +D071;HANGUL SYLLABLE KEUNI;Lo;0;L;;;;;N;;;;; +D072;HANGUL SYLLABLE KEUNH;Lo;0;L;;;;;N;;;;; +D073;HANGUL SYLLABLE KEUD;Lo;0;L;;;;;N;;;;; +D074;HANGUL SYLLABLE KEUL;Lo;0;L;;;;;N;;;;; +D075;HANGUL SYLLABLE KEULG;Lo;0;L;;;;;N;;;;; +D076;HANGUL SYLLABLE KEULM;Lo;0;L;;;;;N;;;;; +D077;HANGUL SYLLABLE KEULB;Lo;0;L;;;;;N;;;;; +D078;HANGUL SYLLABLE KEULS;Lo;0;L;;;;;N;;;;; +D079;HANGUL SYLLABLE KEULT;Lo;0;L;;;;;N;;;;; +D07A;HANGUL SYLLABLE KEULP;Lo;0;L;;;;;N;;;;; +D07B;HANGUL SYLLABLE KEULH;Lo;0;L;;;;;N;;;;; +D07C;HANGUL SYLLABLE KEUM;Lo;0;L;;;;;N;;;;; +D07D;HANGUL SYLLABLE KEUB;Lo;0;L;;;;;N;;;;; +D07E;HANGUL SYLLABLE KEUBS;Lo;0;L;;;;;N;;;;; +D07F;HANGUL SYLLABLE KEUS;Lo;0;L;;;;;N;;;;; +D080;HANGUL SYLLABLE KEUSS;Lo;0;L;;;;;N;;;;; +D081;HANGUL SYLLABLE KEUNG;Lo;0;L;;;;;N;;;;; +D082;HANGUL SYLLABLE KEUJ;Lo;0;L;;;;;N;;;;; +D083;HANGUL SYLLABLE KEUC;Lo;0;L;;;;;N;;;;; +D084;HANGUL SYLLABLE KEUK;Lo;0;L;;;;;N;;;;; +D085;HANGUL SYLLABLE KEUT;Lo;0;L;;;;;N;;;;; +D086;HANGUL SYLLABLE KEUP;Lo;0;L;;;;;N;;;;; +D087;HANGUL SYLLABLE KEUH;Lo;0;L;;;;;N;;;;; +D088;HANGUL SYLLABLE KYI;Lo;0;L;;;;;N;;;;; +D089;HANGUL SYLLABLE KYIG;Lo;0;L;;;;;N;;;;; +D08A;HANGUL SYLLABLE KYIGG;Lo;0;L;;;;;N;;;;; +D08B;HANGUL SYLLABLE KYIGS;Lo;0;L;;;;;N;;;;; +D08C;HANGUL SYLLABLE KYIN;Lo;0;L;;;;;N;;;;; +D08D;HANGUL SYLLABLE KYINI;Lo;0;L;;;;;N;;;;; +D08E;HANGUL SYLLABLE KYINH;Lo;0;L;;;;;N;;;;; +D08F;HANGUL SYLLABLE KYID;Lo;0;L;;;;;N;;;;; +D090;HANGUL SYLLABLE KYIL;Lo;0;L;;;;;N;;;;; +D091;HANGUL SYLLABLE KYILG;Lo;0;L;;;;;N;;;;; +D092;HANGUL SYLLABLE KYILM;Lo;0;L;;;;;N;;;;; +D093;HANGUL SYLLABLE KYILB;Lo;0;L;;;;;N;;;;; +D094;HANGUL SYLLABLE KYILS;Lo;0;L;;;;;N;;;;; +D095;HANGUL SYLLABLE KYILT;Lo;0;L;;;;;N;;;;; +D096;HANGUL SYLLABLE KYILP;Lo;0;L;;;;;N;;;;; +D097;HANGUL SYLLABLE KYILH;Lo;0;L;;;;;N;;;;; +D098;HANGUL SYLLABLE KYIM;Lo;0;L;;;;;N;;;;; +D099;HANGUL SYLLABLE KYIB;Lo;0;L;;;;;N;;;;; +D09A;HANGUL SYLLABLE KYIBS;Lo;0;L;;;;;N;;;;; +D09B;HANGUL SYLLABLE KYIS;Lo;0;L;;;;;N;;;;; +D09C;HANGUL SYLLABLE KYISS;Lo;0;L;;;;;N;;;;; +D09D;HANGUL SYLLABLE KYING;Lo;0;L;;;;;N;;;;; +D09E;HANGUL SYLLABLE KYIJ;Lo;0;L;;;;;N;;;;; +D09F;HANGUL SYLLABLE KYIC;Lo;0;L;;;;;N;;;;; +D0A0;HANGUL SYLLABLE KYIK;Lo;0;L;;;;;N;;;;; +D0A1;HANGUL SYLLABLE KYIT;Lo;0;L;;;;;N;;;;; +D0A2;HANGUL SYLLABLE KYIP;Lo;0;L;;;;;N;;;;; +D0A3;HANGUL SYLLABLE KYIH;Lo;0;L;;;;;N;;;;; +D0A4;HANGUL SYLLABLE KI;Lo;0;L;;;;;N;;;;; +D0A5;HANGUL SYLLABLE KIG;Lo;0;L;;;;;N;;;;; +D0A6;HANGUL SYLLABLE KIGG;Lo;0;L;;;;;N;;;;; +D0A7;HANGUL SYLLABLE KIGS;Lo;0;L;;;;;N;;;;; +D0A8;HANGUL SYLLABLE KIN;Lo;0;L;;;;;N;;;;; +D0A9;HANGUL SYLLABLE KINI;Lo;0;L;;;;;N;;;;; +D0AA;HANGUL SYLLABLE KINH;Lo;0;L;;;;;N;;;;; +D0AB;HANGUL SYLLABLE KID;Lo;0;L;;;;;N;;;;; +D0AC;HANGUL SYLLABLE KIL;Lo;0;L;;;;;N;;;;; +D0AD;HANGUL SYLLABLE KILG;Lo;0;L;;;;;N;;;;; +D0AE;HANGUL SYLLABLE KILM;Lo;0;L;;;;;N;;;;; +D0AF;HANGUL SYLLABLE KILB;Lo;0;L;;;;;N;;;;; +D0B0;HANGUL SYLLABLE KILS;Lo;0;L;;;;;N;;;;; +D0B1;HANGUL SYLLABLE KILT;Lo;0;L;;;;;N;;;;; +D0B2;HANGUL SYLLABLE KILP;Lo;0;L;;;;;N;;;;; +D0B3;HANGUL SYLLABLE KILH;Lo;0;L;;;;;N;;;;; +D0B4;HANGUL SYLLABLE KIM;Lo;0;L;;;;;N;;;;; +D0B5;HANGUL SYLLABLE KIB;Lo;0;L;;;;;N;;;;; +D0B6;HANGUL SYLLABLE KIBS;Lo;0;L;;;;;N;;;;; +D0B7;HANGUL SYLLABLE KIS;Lo;0;L;;;;;N;;;;; +D0B8;HANGUL SYLLABLE KISS;Lo;0;L;;;;;N;;;;; +D0B9;HANGUL SYLLABLE KING;Lo;0;L;;;;;N;;;;; +D0BA;HANGUL SYLLABLE KIJ;Lo;0;L;;;;;N;;;;; +D0BB;HANGUL SYLLABLE KIC;Lo;0;L;;;;;N;;;;; +D0BC;HANGUL SYLLABLE KIK;Lo;0;L;;;;;N;;;;; +D0BD;HANGUL SYLLABLE KIT;Lo;0;L;;;;;N;;;;; +D0BE;HANGUL SYLLABLE KIP;Lo;0;L;;;;;N;;;;; +D0BF;HANGUL SYLLABLE KIH;Lo;0;L;;;;;N;;;;; +D0C0;HANGUL SYLLABLE TA;Lo;0;L;;;;;N;;;;; +D0C1;HANGUL SYLLABLE TAG;Lo;0;L;;;;;N;;;;; +D0C2;HANGUL SYLLABLE TAGG;Lo;0;L;;;;;N;;;;; +D0C3;HANGUL SYLLABLE TAGS;Lo;0;L;;;;;N;;;;; +D0C4;HANGUL SYLLABLE TAN;Lo;0;L;;;;;N;;;;; +D0C5;HANGUL SYLLABLE TANI;Lo;0;L;;;;;N;;;;; +D0C6;HANGUL SYLLABLE TANH;Lo;0;L;;;;;N;;;;; +D0C7;HANGUL SYLLABLE TAD;Lo;0;L;;;;;N;;;;; +D0C8;HANGUL SYLLABLE TAL;Lo;0;L;;;;;N;;;;; +D0C9;HANGUL SYLLABLE TALG;Lo;0;L;;;;;N;;;;; +D0CA;HANGUL SYLLABLE TALM;Lo;0;L;;;;;N;;;;; +D0CB;HANGUL SYLLABLE TALB;Lo;0;L;;;;;N;;;;; +D0CC;HANGUL SYLLABLE TALS;Lo;0;L;;;;;N;;;;; +D0CD;HANGUL SYLLABLE TALT;Lo;0;L;;;;;N;;;;; +D0CE;HANGUL SYLLABLE TALP;Lo;0;L;;;;;N;;;;; +D0CF;HANGUL SYLLABLE TALH;Lo;0;L;;;;;N;;;;; +D0D0;HANGUL SYLLABLE TAM;Lo;0;L;;;;;N;;;;; +D0D1;HANGUL SYLLABLE TAB;Lo;0;L;;;;;N;;;;; +D0D2;HANGUL SYLLABLE TABS;Lo;0;L;;;;;N;;;;; +D0D3;HANGUL SYLLABLE TAS;Lo;0;L;;;;;N;;;;; +D0D4;HANGUL SYLLABLE TASS;Lo;0;L;;;;;N;;;;; +D0D5;HANGUL SYLLABLE TANG;Lo;0;L;;;;;N;;;;; +D0D6;HANGUL SYLLABLE TAJ;Lo;0;L;;;;;N;;;;; +D0D7;HANGUL SYLLABLE TAC;Lo;0;L;;;;;N;;;;; +D0D8;HANGUL SYLLABLE TAK;Lo;0;L;;;;;N;;;;; +D0D9;HANGUL SYLLABLE TAT;Lo;0;L;;;;;N;;;;; +D0DA;HANGUL SYLLABLE TAP;Lo;0;L;;;;;N;;;;; +D0DB;HANGUL SYLLABLE TAH;Lo;0;L;;;;;N;;;;; +D0DC;HANGUL SYLLABLE TAE;Lo;0;L;;;;;N;;;;; +D0DD;HANGUL SYLLABLE TAEG;Lo;0;L;;;;;N;;;;; +D0DE;HANGUL SYLLABLE TAEGG;Lo;0;L;;;;;N;;;;; +D0DF;HANGUL SYLLABLE TAEGS;Lo;0;L;;;;;N;;;;; +D0E0;HANGUL SYLLABLE TAEN;Lo;0;L;;;;;N;;;;; +D0E1;HANGUL SYLLABLE TAENI;Lo;0;L;;;;;N;;;;; +D0E2;HANGUL SYLLABLE TAENH;Lo;0;L;;;;;N;;;;; +D0E3;HANGUL SYLLABLE TAED;Lo;0;L;;;;;N;;;;; +D0E4;HANGUL SYLLABLE TAEL;Lo;0;L;;;;;N;;;;; +D0E5;HANGUL SYLLABLE TAELG;Lo;0;L;;;;;N;;;;; +D0E6;HANGUL SYLLABLE TAELM;Lo;0;L;;;;;N;;;;; +D0E7;HANGUL SYLLABLE TAELB;Lo;0;L;;;;;N;;;;; +D0E8;HANGUL SYLLABLE TAELS;Lo;0;L;;;;;N;;;;; +D0E9;HANGUL SYLLABLE TAELT;Lo;0;L;;;;;N;;;;; +D0EA;HANGUL SYLLABLE TAELP;Lo;0;L;;;;;N;;;;; +D0EB;HANGUL SYLLABLE TAELH;Lo;0;L;;;;;N;;;;; +D0EC;HANGUL SYLLABLE TAEM;Lo;0;L;;;;;N;;;;; +D0ED;HANGUL SYLLABLE TAEB;Lo;0;L;;;;;N;;;;; +D0EE;HANGUL SYLLABLE TAEBS;Lo;0;L;;;;;N;;;;; +D0EF;HANGUL SYLLABLE TAES;Lo;0;L;;;;;N;;;;; +D0F0;HANGUL SYLLABLE TAESS;Lo;0;L;;;;;N;;;;; +D0F1;HANGUL SYLLABLE TAENG;Lo;0;L;;;;;N;;;;; +D0F2;HANGUL SYLLABLE TAEJ;Lo;0;L;;;;;N;;;;; +D0F3;HANGUL SYLLABLE TAEC;Lo;0;L;;;;;N;;;;; +D0F4;HANGUL SYLLABLE TAEK;Lo;0;L;;;;;N;;;;; +D0F5;HANGUL SYLLABLE TAET;Lo;0;L;;;;;N;;;;; +D0F6;HANGUL SYLLABLE TAEP;Lo;0;L;;;;;N;;;;; +D0F7;HANGUL SYLLABLE TAEH;Lo;0;L;;;;;N;;;;; +D0F8;HANGUL SYLLABLE TYA;Lo;0;L;;;;;N;;;;; +D0F9;HANGUL SYLLABLE TYAG;Lo;0;L;;;;;N;;;;; +D0FA;HANGUL SYLLABLE TYAGG;Lo;0;L;;;;;N;;;;; +D0FB;HANGUL SYLLABLE TYAGS;Lo;0;L;;;;;N;;;;; +D0FC;HANGUL SYLLABLE TYAN;Lo;0;L;;;;;N;;;;; +D0FD;HANGUL SYLLABLE TYANI;Lo;0;L;;;;;N;;;;; +D0FE;HANGUL SYLLABLE TYANH;Lo;0;L;;;;;N;;;;; +D0FF;HANGUL SYLLABLE TYAD;Lo;0;L;;;;;N;;;;; +D100;HANGUL SYLLABLE TYAL;Lo;0;L;;;;;N;;;;; +D101;HANGUL SYLLABLE TYALG;Lo;0;L;;;;;N;;;;; +D102;HANGUL SYLLABLE TYALM;Lo;0;L;;;;;N;;;;; +D103;HANGUL SYLLABLE TYALB;Lo;0;L;;;;;N;;;;; +D104;HANGUL SYLLABLE TYALS;Lo;0;L;;;;;N;;;;; +D105;HANGUL SYLLABLE TYALT;Lo;0;L;;;;;N;;;;; +D106;HANGUL SYLLABLE TYALP;Lo;0;L;;;;;N;;;;; +D107;HANGUL SYLLABLE TYALH;Lo;0;L;;;;;N;;;;; +D108;HANGUL SYLLABLE TYAM;Lo;0;L;;;;;N;;;;; +D109;HANGUL SYLLABLE TYAB;Lo;0;L;;;;;N;;;;; +D10A;HANGUL SYLLABLE TYABS;Lo;0;L;;;;;N;;;;; +D10B;HANGUL SYLLABLE TYAS;Lo;0;L;;;;;N;;;;; +D10C;HANGUL SYLLABLE TYASS;Lo;0;L;;;;;N;;;;; +D10D;HANGUL SYLLABLE TYANG;Lo;0;L;;;;;N;;;;; +D10E;HANGUL SYLLABLE TYAJ;Lo;0;L;;;;;N;;;;; +D10F;HANGUL SYLLABLE TYAC;Lo;0;L;;;;;N;;;;; +D110;HANGUL SYLLABLE TYAK;Lo;0;L;;;;;N;;;;; +D111;HANGUL SYLLABLE TYAT;Lo;0;L;;;;;N;;;;; +D112;HANGUL SYLLABLE TYAP;Lo;0;L;;;;;N;;;;; +D113;HANGUL SYLLABLE TYAH;Lo;0;L;;;;;N;;;;; +D114;HANGUL SYLLABLE TYAE;Lo;0;L;;;;;N;;;;; +D115;HANGUL SYLLABLE TYAEG;Lo;0;L;;;;;N;;;;; +D116;HANGUL SYLLABLE TYAEGG;Lo;0;L;;;;;N;;;;; +D117;HANGUL SYLLABLE TYAEGS;Lo;0;L;;;;;N;;;;; +D118;HANGUL SYLLABLE TYAEN;Lo;0;L;;;;;N;;;;; +D119;HANGUL SYLLABLE TYAENI;Lo;0;L;;;;;N;;;;; +D11A;HANGUL SYLLABLE TYAENH;Lo;0;L;;;;;N;;;;; +D11B;HANGUL SYLLABLE TYAED;Lo;0;L;;;;;N;;;;; +D11C;HANGUL SYLLABLE TYAEL;Lo;0;L;;;;;N;;;;; +D11D;HANGUL SYLLABLE TYAELG;Lo;0;L;;;;;N;;;;; +D11E;HANGUL SYLLABLE TYAELM;Lo;0;L;;;;;N;;;;; +D11F;HANGUL SYLLABLE TYAELB;Lo;0;L;;;;;N;;;;; +D120;HANGUL SYLLABLE TYAELS;Lo;0;L;;;;;N;;;;; +D121;HANGUL SYLLABLE TYAELT;Lo;0;L;;;;;N;;;;; +D122;HANGUL SYLLABLE TYAELP;Lo;0;L;;;;;N;;;;; +D123;HANGUL SYLLABLE TYAELH;Lo;0;L;;;;;N;;;;; +D124;HANGUL SYLLABLE TYAEM;Lo;0;L;;;;;N;;;;; +D125;HANGUL SYLLABLE TYAEB;Lo;0;L;;;;;N;;;;; +D126;HANGUL SYLLABLE TYAEBS;Lo;0;L;;;;;N;;;;; +D127;HANGUL SYLLABLE TYAES;Lo;0;L;;;;;N;;;;; +D128;HANGUL SYLLABLE TYAESS;Lo;0;L;;;;;N;;;;; +D129;HANGUL SYLLABLE TYAENG;Lo;0;L;;;;;N;;;;; +D12A;HANGUL SYLLABLE TYAEJ;Lo;0;L;;;;;N;;;;; +D12B;HANGUL SYLLABLE TYAEC;Lo;0;L;;;;;N;;;;; +D12C;HANGUL SYLLABLE TYAEK;Lo;0;L;;;;;N;;;;; +D12D;HANGUL SYLLABLE TYAET;Lo;0;L;;;;;N;;;;; +D12E;HANGUL SYLLABLE TYAEP;Lo;0;L;;;;;N;;;;; +D12F;HANGUL SYLLABLE TYAEH;Lo;0;L;;;;;N;;;;; +D130;HANGUL SYLLABLE TEO;Lo;0;L;;;;;N;;;;; +D131;HANGUL SYLLABLE TEOG;Lo;0;L;;;;;N;;;;; +D132;HANGUL SYLLABLE TEOGG;Lo;0;L;;;;;N;;;;; +D133;HANGUL SYLLABLE TEOGS;Lo;0;L;;;;;N;;;;; +D134;HANGUL SYLLABLE TEON;Lo;0;L;;;;;N;;;;; +D135;HANGUL SYLLABLE TEONI;Lo;0;L;;;;;N;;;;; +D136;HANGUL SYLLABLE TEONH;Lo;0;L;;;;;N;;;;; +D137;HANGUL SYLLABLE TEOD;Lo;0;L;;;;;N;;;;; +D138;HANGUL SYLLABLE TEOL;Lo;0;L;;;;;N;;;;; +D139;HANGUL SYLLABLE TEOLG;Lo;0;L;;;;;N;;;;; +D13A;HANGUL SYLLABLE TEOLM;Lo;0;L;;;;;N;;;;; +D13B;HANGUL SYLLABLE TEOLB;Lo;0;L;;;;;N;;;;; +D13C;HANGUL SYLLABLE TEOLS;Lo;0;L;;;;;N;;;;; +D13D;HANGUL SYLLABLE TEOLT;Lo;0;L;;;;;N;;;;; +D13E;HANGUL SYLLABLE TEOLP;Lo;0;L;;;;;N;;;;; +D13F;HANGUL SYLLABLE TEOLH;Lo;0;L;;;;;N;;;;; +D140;HANGUL SYLLABLE TEOM;Lo;0;L;;;;;N;;;;; +D141;HANGUL SYLLABLE TEOB;Lo;0;L;;;;;N;;;;; +D142;HANGUL SYLLABLE TEOBS;Lo;0;L;;;;;N;;;;; +D143;HANGUL SYLLABLE TEOS;Lo;0;L;;;;;N;;;;; +D144;HANGUL SYLLABLE TEOSS;Lo;0;L;;;;;N;;;;; +D145;HANGUL SYLLABLE TEONG;Lo;0;L;;;;;N;;;;; +D146;HANGUL SYLLABLE TEOJ;Lo;0;L;;;;;N;;;;; +D147;HANGUL SYLLABLE TEOC;Lo;0;L;;;;;N;;;;; +D148;HANGUL SYLLABLE TEOK;Lo;0;L;;;;;N;;;;; +D149;HANGUL SYLLABLE TEOT;Lo;0;L;;;;;N;;;;; +D14A;HANGUL SYLLABLE TEOP;Lo;0;L;;;;;N;;;;; +D14B;HANGUL SYLLABLE TEOH;Lo;0;L;;;;;N;;;;; +D14C;HANGUL SYLLABLE TE;Lo;0;L;;;;;N;;;;; +D14D;HANGUL SYLLABLE TEG;Lo;0;L;;;;;N;;;;; +D14E;HANGUL SYLLABLE TEGG;Lo;0;L;;;;;N;;;;; +D14F;HANGUL SYLLABLE TEGS;Lo;0;L;;;;;N;;;;; +D150;HANGUL SYLLABLE TEN;Lo;0;L;;;;;N;;;;; +D151;HANGUL SYLLABLE TENI;Lo;0;L;;;;;N;;;;; +D152;HANGUL SYLLABLE TENH;Lo;0;L;;;;;N;;;;; +D153;HANGUL SYLLABLE TED;Lo;0;L;;;;;N;;;;; +D154;HANGUL SYLLABLE TEL;Lo;0;L;;;;;N;;;;; +D155;HANGUL SYLLABLE TELG;Lo;0;L;;;;;N;;;;; +D156;HANGUL SYLLABLE TELM;Lo;0;L;;;;;N;;;;; +D157;HANGUL SYLLABLE TELB;Lo;0;L;;;;;N;;;;; +D158;HANGUL SYLLABLE TELS;Lo;0;L;;;;;N;;;;; +D159;HANGUL SYLLABLE TELT;Lo;0;L;;;;;N;;;;; +D15A;HANGUL SYLLABLE TELP;Lo;0;L;;;;;N;;;;; +D15B;HANGUL SYLLABLE TELH;Lo;0;L;;;;;N;;;;; +D15C;HANGUL SYLLABLE TEM;Lo;0;L;;;;;N;;;;; +D15D;HANGUL SYLLABLE TEB;Lo;0;L;;;;;N;;;;; +D15E;HANGUL SYLLABLE TEBS;Lo;0;L;;;;;N;;;;; +D15F;HANGUL SYLLABLE TES;Lo;0;L;;;;;N;;;;; +D160;HANGUL SYLLABLE TESS;Lo;0;L;;;;;N;;;;; +D161;HANGUL SYLLABLE TENG;Lo;0;L;;;;;N;;;;; +D162;HANGUL SYLLABLE TEJ;Lo;0;L;;;;;N;;;;; +D163;HANGUL SYLLABLE TEC;Lo;0;L;;;;;N;;;;; +D164;HANGUL SYLLABLE TEK;Lo;0;L;;;;;N;;;;; +D165;HANGUL SYLLABLE TET;Lo;0;L;;;;;N;;;;; +D166;HANGUL SYLLABLE TEP;Lo;0;L;;;;;N;;;;; +D167;HANGUL SYLLABLE TEH;Lo;0;L;;;;;N;;;;; +D168;HANGUL SYLLABLE TYEO;Lo;0;L;;;;;N;;;;; +D169;HANGUL SYLLABLE TYEOG;Lo;0;L;;;;;N;;;;; +D16A;HANGUL SYLLABLE TYEOGG;Lo;0;L;;;;;N;;;;; +D16B;HANGUL SYLLABLE TYEOGS;Lo;0;L;;;;;N;;;;; +D16C;HANGUL SYLLABLE TYEON;Lo;0;L;;;;;N;;;;; +D16D;HANGUL SYLLABLE TYEONI;Lo;0;L;;;;;N;;;;; +D16E;HANGUL SYLLABLE TYEONH;Lo;0;L;;;;;N;;;;; +D16F;HANGUL SYLLABLE TYEOD;Lo;0;L;;;;;N;;;;; +D170;HANGUL SYLLABLE TYEOL;Lo;0;L;;;;;N;;;;; +D171;HANGUL SYLLABLE TYEOLG;Lo;0;L;;;;;N;;;;; +D172;HANGUL SYLLABLE TYEOLM;Lo;0;L;;;;;N;;;;; +D173;HANGUL SYLLABLE TYEOLB;Lo;0;L;;;;;N;;;;; +D174;HANGUL SYLLABLE TYEOLS;Lo;0;L;;;;;N;;;;; +D175;HANGUL SYLLABLE TYEOLT;Lo;0;L;;;;;N;;;;; +D176;HANGUL SYLLABLE TYEOLP;Lo;0;L;;;;;N;;;;; +D177;HANGUL SYLLABLE TYEOLH;Lo;0;L;;;;;N;;;;; +D178;HANGUL SYLLABLE TYEOM;Lo;0;L;;;;;N;;;;; +D179;HANGUL SYLLABLE TYEOB;Lo;0;L;;;;;N;;;;; +D17A;HANGUL SYLLABLE TYEOBS;Lo;0;L;;;;;N;;;;; +D17B;HANGUL SYLLABLE TYEOS;Lo;0;L;;;;;N;;;;; +D17C;HANGUL SYLLABLE TYEOSS;Lo;0;L;;;;;N;;;;; +D17D;HANGUL SYLLABLE TYEONG;Lo;0;L;;;;;N;;;;; +D17E;HANGUL SYLLABLE TYEOJ;Lo;0;L;;;;;N;;;;; +D17F;HANGUL SYLLABLE TYEOC;Lo;0;L;;;;;N;;;;; +D180;HANGUL SYLLABLE TYEOK;Lo;0;L;;;;;N;;;;; +D181;HANGUL SYLLABLE TYEOT;Lo;0;L;;;;;N;;;;; +D182;HANGUL SYLLABLE TYEOP;Lo;0;L;;;;;N;;;;; +D183;HANGUL SYLLABLE TYEOH;Lo;0;L;;;;;N;;;;; +D184;HANGUL SYLLABLE TYE;Lo;0;L;;;;;N;;;;; +D185;HANGUL SYLLABLE TYEG;Lo;0;L;;;;;N;;;;; +D186;HANGUL SYLLABLE TYEGG;Lo;0;L;;;;;N;;;;; +D187;HANGUL SYLLABLE TYEGS;Lo;0;L;;;;;N;;;;; +D188;HANGUL SYLLABLE TYEN;Lo;0;L;;;;;N;;;;; +D189;HANGUL SYLLABLE TYENI;Lo;0;L;;;;;N;;;;; +D18A;HANGUL SYLLABLE TYENH;Lo;0;L;;;;;N;;;;; +D18B;HANGUL SYLLABLE TYED;Lo;0;L;;;;;N;;;;; +D18C;HANGUL SYLLABLE TYEL;Lo;0;L;;;;;N;;;;; +D18D;HANGUL SYLLABLE TYELG;Lo;0;L;;;;;N;;;;; +D18E;HANGUL SYLLABLE TYELM;Lo;0;L;;;;;N;;;;; +D18F;HANGUL SYLLABLE TYELB;Lo;0;L;;;;;N;;;;; +D190;HANGUL SYLLABLE TYELS;Lo;0;L;;;;;N;;;;; +D191;HANGUL SYLLABLE TYELT;Lo;0;L;;;;;N;;;;; +D192;HANGUL SYLLABLE TYELP;Lo;0;L;;;;;N;;;;; +D193;HANGUL SYLLABLE TYELH;Lo;0;L;;;;;N;;;;; +D194;HANGUL SYLLABLE TYEM;Lo;0;L;;;;;N;;;;; +D195;HANGUL SYLLABLE TYEB;Lo;0;L;;;;;N;;;;; +D196;HANGUL SYLLABLE TYEBS;Lo;0;L;;;;;N;;;;; +D197;HANGUL SYLLABLE TYES;Lo;0;L;;;;;N;;;;; +D198;HANGUL SYLLABLE TYESS;Lo;0;L;;;;;N;;;;; +D199;HANGUL SYLLABLE TYENG;Lo;0;L;;;;;N;;;;; +D19A;HANGUL SYLLABLE TYEJ;Lo;0;L;;;;;N;;;;; +D19B;HANGUL SYLLABLE TYEC;Lo;0;L;;;;;N;;;;; +D19C;HANGUL SYLLABLE TYEK;Lo;0;L;;;;;N;;;;; +D19D;HANGUL SYLLABLE TYET;Lo;0;L;;;;;N;;;;; +D19E;HANGUL SYLLABLE TYEP;Lo;0;L;;;;;N;;;;; +D19F;HANGUL SYLLABLE TYEH;Lo;0;L;;;;;N;;;;; +D1A0;HANGUL SYLLABLE TO;Lo;0;L;;;;;N;;;;; +D1A1;HANGUL SYLLABLE TOG;Lo;0;L;;;;;N;;;;; +D1A2;HANGUL SYLLABLE TOGG;Lo;0;L;;;;;N;;;;; +D1A3;HANGUL SYLLABLE TOGS;Lo;0;L;;;;;N;;;;; +D1A4;HANGUL SYLLABLE TON;Lo;0;L;;;;;N;;;;; +D1A5;HANGUL SYLLABLE TONI;Lo;0;L;;;;;N;;;;; +D1A6;HANGUL SYLLABLE TONH;Lo;0;L;;;;;N;;;;; +D1A7;HANGUL SYLLABLE TOD;Lo;0;L;;;;;N;;;;; +D1A8;HANGUL SYLLABLE TOL;Lo;0;L;;;;;N;;;;; +D1A9;HANGUL SYLLABLE TOLG;Lo;0;L;;;;;N;;;;; +D1AA;HANGUL SYLLABLE TOLM;Lo;0;L;;;;;N;;;;; +D1AB;HANGUL SYLLABLE TOLB;Lo;0;L;;;;;N;;;;; +D1AC;HANGUL SYLLABLE TOLS;Lo;0;L;;;;;N;;;;; +D1AD;HANGUL SYLLABLE TOLT;Lo;0;L;;;;;N;;;;; +D1AE;HANGUL SYLLABLE TOLP;Lo;0;L;;;;;N;;;;; +D1AF;HANGUL SYLLABLE TOLH;Lo;0;L;;;;;N;;;;; +D1B0;HANGUL SYLLABLE TOM;Lo;0;L;;;;;N;;;;; +D1B1;HANGUL SYLLABLE TOB;Lo;0;L;;;;;N;;;;; +D1B2;HANGUL SYLLABLE TOBS;Lo;0;L;;;;;N;;;;; +D1B3;HANGUL SYLLABLE TOS;Lo;0;L;;;;;N;;;;; +D1B4;HANGUL SYLLABLE TOSS;Lo;0;L;;;;;N;;;;; +D1B5;HANGUL SYLLABLE TONG;Lo;0;L;;;;;N;;;;; +D1B6;HANGUL SYLLABLE TOJ;Lo;0;L;;;;;N;;;;; +D1B7;HANGUL SYLLABLE TOC;Lo;0;L;;;;;N;;;;; +D1B8;HANGUL SYLLABLE TOK;Lo;0;L;;;;;N;;;;; +D1B9;HANGUL SYLLABLE TOT;Lo;0;L;;;;;N;;;;; +D1BA;HANGUL SYLLABLE TOP;Lo;0;L;;;;;N;;;;; +D1BB;HANGUL SYLLABLE TOH;Lo;0;L;;;;;N;;;;; +D1BC;HANGUL SYLLABLE TWA;Lo;0;L;;;;;N;;;;; +D1BD;HANGUL SYLLABLE TWAG;Lo;0;L;;;;;N;;;;; +D1BE;HANGUL SYLLABLE TWAGG;Lo;0;L;;;;;N;;;;; +D1BF;HANGUL SYLLABLE TWAGS;Lo;0;L;;;;;N;;;;; +D1C0;HANGUL SYLLABLE TWAN;Lo;0;L;;;;;N;;;;; +D1C1;HANGUL SYLLABLE TWANI;Lo;0;L;;;;;N;;;;; +D1C2;HANGUL SYLLABLE TWANH;Lo;0;L;;;;;N;;;;; +D1C3;HANGUL SYLLABLE TWAD;Lo;0;L;;;;;N;;;;; +D1C4;HANGUL SYLLABLE TWAL;Lo;0;L;;;;;N;;;;; +D1C5;HANGUL SYLLABLE TWALG;Lo;0;L;;;;;N;;;;; +D1C6;HANGUL SYLLABLE TWALM;Lo;0;L;;;;;N;;;;; +D1C7;HANGUL SYLLABLE TWALB;Lo;0;L;;;;;N;;;;; +D1C8;HANGUL SYLLABLE TWALS;Lo;0;L;;;;;N;;;;; +D1C9;HANGUL SYLLABLE TWALT;Lo;0;L;;;;;N;;;;; +D1CA;HANGUL SYLLABLE TWALP;Lo;0;L;;;;;N;;;;; +D1CB;HANGUL SYLLABLE TWALH;Lo;0;L;;;;;N;;;;; +D1CC;HANGUL SYLLABLE TWAM;Lo;0;L;;;;;N;;;;; +D1CD;HANGUL SYLLABLE TWAB;Lo;0;L;;;;;N;;;;; +D1CE;HANGUL SYLLABLE TWABS;Lo;0;L;;;;;N;;;;; +D1CF;HANGUL SYLLABLE TWAS;Lo;0;L;;;;;N;;;;; +D1D0;HANGUL SYLLABLE TWASS;Lo;0;L;;;;;N;;;;; +D1D1;HANGUL SYLLABLE TWANG;Lo;0;L;;;;;N;;;;; +D1D2;HANGUL SYLLABLE TWAJ;Lo;0;L;;;;;N;;;;; +D1D3;HANGUL SYLLABLE TWAC;Lo;0;L;;;;;N;;;;; +D1D4;HANGUL SYLLABLE TWAK;Lo;0;L;;;;;N;;;;; +D1D5;HANGUL SYLLABLE TWAT;Lo;0;L;;;;;N;;;;; +D1D6;HANGUL SYLLABLE TWAP;Lo;0;L;;;;;N;;;;; +D1D7;HANGUL SYLLABLE TWAH;Lo;0;L;;;;;N;;;;; +D1D8;HANGUL SYLLABLE TWAE;Lo;0;L;;;;;N;;;;; +D1D9;HANGUL SYLLABLE TWAEG;Lo;0;L;;;;;N;;;;; +D1DA;HANGUL SYLLABLE TWAEGG;Lo;0;L;;;;;N;;;;; +D1DB;HANGUL SYLLABLE TWAEGS;Lo;0;L;;;;;N;;;;; +D1DC;HANGUL SYLLABLE TWAEN;Lo;0;L;;;;;N;;;;; +D1DD;HANGUL SYLLABLE TWAENI;Lo;0;L;;;;;N;;;;; +D1DE;HANGUL SYLLABLE TWAENH;Lo;0;L;;;;;N;;;;; +D1DF;HANGUL SYLLABLE TWAED;Lo;0;L;;;;;N;;;;; +D1E0;HANGUL SYLLABLE TWAEL;Lo;0;L;;;;;N;;;;; +D1E1;HANGUL SYLLABLE TWAELG;Lo;0;L;;;;;N;;;;; +D1E2;HANGUL SYLLABLE TWAELM;Lo;0;L;;;;;N;;;;; +D1E3;HANGUL SYLLABLE TWAELB;Lo;0;L;;;;;N;;;;; +D1E4;HANGUL SYLLABLE TWAELS;Lo;0;L;;;;;N;;;;; +D1E5;HANGUL SYLLABLE TWAELT;Lo;0;L;;;;;N;;;;; +D1E6;HANGUL SYLLABLE TWAELP;Lo;0;L;;;;;N;;;;; +D1E7;HANGUL SYLLABLE TWAELH;Lo;0;L;;;;;N;;;;; +D1E8;HANGUL SYLLABLE TWAEM;Lo;0;L;;;;;N;;;;; +D1E9;HANGUL SYLLABLE TWAEB;Lo;0;L;;;;;N;;;;; +D1EA;HANGUL SYLLABLE TWAEBS;Lo;0;L;;;;;N;;;;; +D1EB;HANGUL SYLLABLE TWAES;Lo;0;L;;;;;N;;;;; +D1EC;HANGUL SYLLABLE TWAESS;Lo;0;L;;;;;N;;;;; +D1ED;HANGUL SYLLABLE TWAENG;Lo;0;L;;;;;N;;;;; +D1EE;HANGUL SYLLABLE TWAEJ;Lo;0;L;;;;;N;;;;; +D1EF;HANGUL SYLLABLE TWAEC;Lo;0;L;;;;;N;;;;; +D1F0;HANGUL SYLLABLE TWAEK;Lo;0;L;;;;;N;;;;; +D1F1;HANGUL SYLLABLE TWAET;Lo;0;L;;;;;N;;;;; +D1F2;HANGUL SYLLABLE TWAEP;Lo;0;L;;;;;N;;;;; +D1F3;HANGUL SYLLABLE TWAEH;Lo;0;L;;;;;N;;;;; +D1F4;HANGUL SYLLABLE TOE;Lo;0;L;;;;;N;;;;; +D1F5;HANGUL SYLLABLE TOEG;Lo;0;L;;;;;N;;;;; +D1F6;HANGUL SYLLABLE TOEGG;Lo;0;L;;;;;N;;;;; +D1F7;HANGUL SYLLABLE TOEGS;Lo;0;L;;;;;N;;;;; +D1F8;HANGUL SYLLABLE TOEN;Lo;0;L;;;;;N;;;;; +D1F9;HANGUL SYLLABLE TOENI;Lo;0;L;;;;;N;;;;; +D1FA;HANGUL SYLLABLE TOENH;Lo;0;L;;;;;N;;;;; +D1FB;HANGUL SYLLABLE TOED;Lo;0;L;;;;;N;;;;; +D1FC;HANGUL SYLLABLE TOEL;Lo;0;L;;;;;N;;;;; +D1FD;HANGUL SYLLABLE TOELG;Lo;0;L;;;;;N;;;;; +D1FE;HANGUL SYLLABLE TOELM;Lo;0;L;;;;;N;;;;; +D1FF;HANGUL SYLLABLE TOELB;Lo;0;L;;;;;N;;;;; +D200;HANGUL SYLLABLE TOELS;Lo;0;L;;;;;N;;;;; +D201;HANGUL SYLLABLE TOELT;Lo;0;L;;;;;N;;;;; +D202;HANGUL SYLLABLE TOELP;Lo;0;L;;;;;N;;;;; +D203;HANGUL SYLLABLE TOELH;Lo;0;L;;;;;N;;;;; +D204;HANGUL SYLLABLE TOEM;Lo;0;L;;;;;N;;;;; +D205;HANGUL SYLLABLE TOEB;Lo;0;L;;;;;N;;;;; +D206;HANGUL SYLLABLE TOEBS;Lo;0;L;;;;;N;;;;; +D207;HANGUL SYLLABLE TOES;Lo;0;L;;;;;N;;;;; +D208;HANGUL SYLLABLE TOESS;Lo;0;L;;;;;N;;;;; +D209;HANGUL SYLLABLE TOENG;Lo;0;L;;;;;N;;;;; +D20A;HANGUL SYLLABLE TOEJ;Lo;0;L;;;;;N;;;;; +D20B;HANGUL SYLLABLE TOEC;Lo;0;L;;;;;N;;;;; +D20C;HANGUL SYLLABLE TOEK;Lo;0;L;;;;;N;;;;; +D20D;HANGUL SYLLABLE TOET;Lo;0;L;;;;;N;;;;; +D20E;HANGUL SYLLABLE TOEP;Lo;0;L;;;;;N;;;;; +D20F;HANGUL SYLLABLE TOEH;Lo;0;L;;;;;N;;;;; +D210;HANGUL SYLLABLE TYO;Lo;0;L;;;;;N;;;;; +D211;HANGUL SYLLABLE TYOG;Lo;0;L;;;;;N;;;;; +D212;HANGUL SYLLABLE TYOGG;Lo;0;L;;;;;N;;;;; +D213;HANGUL SYLLABLE TYOGS;Lo;0;L;;;;;N;;;;; +D214;HANGUL SYLLABLE TYON;Lo;0;L;;;;;N;;;;; +D215;HANGUL SYLLABLE TYONI;Lo;0;L;;;;;N;;;;; +D216;HANGUL SYLLABLE TYONH;Lo;0;L;;;;;N;;;;; +D217;HANGUL SYLLABLE TYOD;Lo;0;L;;;;;N;;;;; +D218;HANGUL SYLLABLE TYOL;Lo;0;L;;;;;N;;;;; +D219;HANGUL SYLLABLE TYOLG;Lo;0;L;;;;;N;;;;; +D21A;HANGUL SYLLABLE TYOLM;Lo;0;L;;;;;N;;;;; +D21B;HANGUL SYLLABLE TYOLB;Lo;0;L;;;;;N;;;;; +D21C;HANGUL SYLLABLE TYOLS;Lo;0;L;;;;;N;;;;; +D21D;HANGUL SYLLABLE TYOLT;Lo;0;L;;;;;N;;;;; +D21E;HANGUL SYLLABLE TYOLP;Lo;0;L;;;;;N;;;;; +D21F;HANGUL SYLLABLE TYOLH;Lo;0;L;;;;;N;;;;; +D220;HANGUL SYLLABLE TYOM;Lo;0;L;;;;;N;;;;; +D221;HANGUL SYLLABLE TYOB;Lo;0;L;;;;;N;;;;; +D222;HANGUL SYLLABLE TYOBS;Lo;0;L;;;;;N;;;;; +D223;HANGUL SYLLABLE TYOS;Lo;0;L;;;;;N;;;;; +D224;HANGUL SYLLABLE TYOSS;Lo;0;L;;;;;N;;;;; +D225;HANGUL SYLLABLE TYONG;Lo;0;L;;;;;N;;;;; +D226;HANGUL SYLLABLE TYOJ;Lo;0;L;;;;;N;;;;; +D227;HANGUL SYLLABLE TYOC;Lo;0;L;;;;;N;;;;; +D228;HANGUL SYLLABLE TYOK;Lo;0;L;;;;;N;;;;; +D229;HANGUL SYLLABLE TYOT;Lo;0;L;;;;;N;;;;; +D22A;HANGUL SYLLABLE TYOP;Lo;0;L;;;;;N;;;;; +D22B;HANGUL SYLLABLE TYOH;Lo;0;L;;;;;N;;;;; +D22C;HANGUL SYLLABLE TU;Lo;0;L;;;;;N;;;;; +D22D;HANGUL SYLLABLE TUG;Lo;0;L;;;;;N;;;;; +D22E;HANGUL SYLLABLE TUGG;Lo;0;L;;;;;N;;;;; +D22F;HANGUL SYLLABLE TUGS;Lo;0;L;;;;;N;;;;; +D230;HANGUL SYLLABLE TUN;Lo;0;L;;;;;N;;;;; +D231;HANGUL SYLLABLE TUNI;Lo;0;L;;;;;N;;;;; +D232;HANGUL SYLLABLE TUNH;Lo;0;L;;;;;N;;;;; +D233;HANGUL SYLLABLE TUD;Lo;0;L;;;;;N;;;;; +D234;HANGUL SYLLABLE TUL;Lo;0;L;;;;;N;;;;; +D235;HANGUL SYLLABLE TULG;Lo;0;L;;;;;N;;;;; +D236;HANGUL SYLLABLE TULM;Lo;0;L;;;;;N;;;;; +D237;HANGUL SYLLABLE TULB;Lo;0;L;;;;;N;;;;; +D238;HANGUL SYLLABLE TULS;Lo;0;L;;;;;N;;;;; +D239;HANGUL SYLLABLE TULT;Lo;0;L;;;;;N;;;;; +D23A;HANGUL SYLLABLE TULP;Lo;0;L;;;;;N;;;;; +D23B;HANGUL SYLLABLE TULH;Lo;0;L;;;;;N;;;;; +D23C;HANGUL SYLLABLE TUM;Lo;0;L;;;;;N;;;;; +D23D;HANGUL SYLLABLE TUB;Lo;0;L;;;;;N;;;;; +D23E;HANGUL SYLLABLE TUBS;Lo;0;L;;;;;N;;;;; +D23F;HANGUL SYLLABLE TUS;Lo;0;L;;;;;N;;;;; +D240;HANGUL SYLLABLE TUSS;Lo;0;L;;;;;N;;;;; +D241;HANGUL SYLLABLE TUNG;Lo;0;L;;;;;N;;;;; +D242;HANGUL SYLLABLE TUJ;Lo;0;L;;;;;N;;;;; +D243;HANGUL SYLLABLE TUC;Lo;0;L;;;;;N;;;;; +D244;HANGUL SYLLABLE TUK;Lo;0;L;;;;;N;;;;; +D245;HANGUL SYLLABLE TUT;Lo;0;L;;;;;N;;;;; +D246;HANGUL SYLLABLE TUP;Lo;0;L;;;;;N;;;;; +D247;HANGUL SYLLABLE TUH;Lo;0;L;;;;;N;;;;; +D248;HANGUL SYLLABLE TWEO;Lo;0;L;;;;;N;;;;; +D249;HANGUL SYLLABLE TWEOG;Lo;0;L;;;;;N;;;;; +D24A;HANGUL SYLLABLE TWEOGG;Lo;0;L;;;;;N;;;;; +D24B;HANGUL SYLLABLE TWEOGS;Lo;0;L;;;;;N;;;;; +D24C;HANGUL SYLLABLE TWEON;Lo;0;L;;;;;N;;;;; +D24D;HANGUL SYLLABLE TWEONI;Lo;0;L;;;;;N;;;;; +D24E;HANGUL SYLLABLE TWEONH;Lo;0;L;;;;;N;;;;; +D24F;HANGUL SYLLABLE TWEOD;Lo;0;L;;;;;N;;;;; +D250;HANGUL SYLLABLE TWEOL;Lo;0;L;;;;;N;;;;; +D251;HANGUL SYLLABLE TWEOLG;Lo;0;L;;;;;N;;;;; +D252;HANGUL SYLLABLE TWEOLM;Lo;0;L;;;;;N;;;;; +D253;HANGUL SYLLABLE TWEOLB;Lo;0;L;;;;;N;;;;; +D254;HANGUL SYLLABLE TWEOLS;Lo;0;L;;;;;N;;;;; +D255;HANGUL SYLLABLE TWEOLT;Lo;0;L;;;;;N;;;;; +D256;HANGUL SYLLABLE TWEOLP;Lo;0;L;;;;;N;;;;; +D257;HANGUL SYLLABLE TWEOLH;Lo;0;L;;;;;N;;;;; +D258;HANGUL SYLLABLE TWEOM;Lo;0;L;;;;;N;;;;; +D259;HANGUL SYLLABLE TWEOB;Lo;0;L;;;;;N;;;;; +D25A;HANGUL SYLLABLE TWEOBS;Lo;0;L;;;;;N;;;;; +D25B;HANGUL SYLLABLE TWEOS;Lo;0;L;;;;;N;;;;; +D25C;HANGUL SYLLABLE TWEOSS;Lo;0;L;;;;;N;;;;; +D25D;HANGUL SYLLABLE TWEONG;Lo;0;L;;;;;N;;;;; +D25E;HANGUL SYLLABLE TWEOJ;Lo;0;L;;;;;N;;;;; +D25F;HANGUL SYLLABLE TWEOC;Lo;0;L;;;;;N;;;;; +D260;HANGUL SYLLABLE TWEOK;Lo;0;L;;;;;N;;;;; +D261;HANGUL SYLLABLE TWEOT;Lo;0;L;;;;;N;;;;; +D262;HANGUL SYLLABLE TWEOP;Lo;0;L;;;;;N;;;;; +D263;HANGUL SYLLABLE TWEOH;Lo;0;L;;;;;N;;;;; +D264;HANGUL SYLLABLE TWE;Lo;0;L;;;;;N;;;;; +D265;HANGUL SYLLABLE TWEG;Lo;0;L;;;;;N;;;;; +D266;HANGUL SYLLABLE TWEGG;Lo;0;L;;;;;N;;;;; +D267;HANGUL SYLLABLE TWEGS;Lo;0;L;;;;;N;;;;; +D268;HANGUL SYLLABLE TWEN;Lo;0;L;;;;;N;;;;; +D269;HANGUL SYLLABLE TWENI;Lo;0;L;;;;;N;;;;; +D26A;HANGUL SYLLABLE TWENH;Lo;0;L;;;;;N;;;;; +D26B;HANGUL SYLLABLE TWED;Lo;0;L;;;;;N;;;;; +D26C;HANGUL SYLLABLE TWEL;Lo;0;L;;;;;N;;;;; +D26D;HANGUL SYLLABLE TWELG;Lo;0;L;;;;;N;;;;; +D26E;HANGUL SYLLABLE TWELM;Lo;0;L;;;;;N;;;;; +D26F;HANGUL SYLLABLE TWELB;Lo;0;L;;;;;N;;;;; +D270;HANGUL SYLLABLE TWELS;Lo;0;L;;;;;N;;;;; +D271;HANGUL SYLLABLE TWELT;Lo;0;L;;;;;N;;;;; +D272;HANGUL SYLLABLE TWELP;Lo;0;L;;;;;N;;;;; +D273;HANGUL SYLLABLE TWELH;Lo;0;L;;;;;N;;;;; +D274;HANGUL SYLLABLE TWEM;Lo;0;L;;;;;N;;;;; +D275;HANGUL SYLLABLE TWEB;Lo;0;L;;;;;N;;;;; +D276;HANGUL SYLLABLE TWEBS;Lo;0;L;;;;;N;;;;; +D277;HANGUL SYLLABLE TWES;Lo;0;L;;;;;N;;;;; +D278;HANGUL SYLLABLE TWESS;Lo;0;L;;;;;N;;;;; +D279;HANGUL SYLLABLE TWENG;Lo;0;L;;;;;N;;;;; +D27A;HANGUL SYLLABLE TWEJ;Lo;0;L;;;;;N;;;;; +D27B;HANGUL SYLLABLE TWEC;Lo;0;L;;;;;N;;;;; +D27C;HANGUL SYLLABLE TWEK;Lo;0;L;;;;;N;;;;; +D27D;HANGUL SYLLABLE TWET;Lo;0;L;;;;;N;;;;; +D27E;HANGUL SYLLABLE TWEP;Lo;0;L;;;;;N;;;;; +D27F;HANGUL SYLLABLE TWEH;Lo;0;L;;;;;N;;;;; +D280;HANGUL SYLLABLE TWI;Lo;0;L;;;;;N;;;;; +D281;HANGUL SYLLABLE TWIG;Lo;0;L;;;;;N;;;;; +D282;HANGUL SYLLABLE TWIGG;Lo;0;L;;;;;N;;;;; +D283;HANGUL SYLLABLE TWIGS;Lo;0;L;;;;;N;;;;; +D284;HANGUL SYLLABLE TWIN;Lo;0;L;;;;;N;;;;; +D285;HANGUL SYLLABLE TWINI;Lo;0;L;;;;;N;;;;; +D286;HANGUL SYLLABLE TWINH;Lo;0;L;;;;;N;;;;; +D287;HANGUL SYLLABLE TWID;Lo;0;L;;;;;N;;;;; +D288;HANGUL SYLLABLE TWIL;Lo;0;L;;;;;N;;;;; +D289;HANGUL SYLLABLE TWILG;Lo;0;L;;;;;N;;;;; +D28A;HANGUL SYLLABLE TWILM;Lo;0;L;;;;;N;;;;; +D28B;HANGUL SYLLABLE TWILB;Lo;0;L;;;;;N;;;;; +D28C;HANGUL SYLLABLE TWILS;Lo;0;L;;;;;N;;;;; +D28D;HANGUL SYLLABLE TWILT;Lo;0;L;;;;;N;;;;; +D28E;HANGUL SYLLABLE TWILP;Lo;0;L;;;;;N;;;;; +D28F;HANGUL SYLLABLE TWILH;Lo;0;L;;;;;N;;;;; +D290;HANGUL SYLLABLE TWIM;Lo;0;L;;;;;N;;;;; +D291;HANGUL SYLLABLE TWIB;Lo;0;L;;;;;N;;;;; +D292;HANGUL SYLLABLE TWIBS;Lo;0;L;;;;;N;;;;; +D293;HANGUL SYLLABLE TWIS;Lo;0;L;;;;;N;;;;; +D294;HANGUL SYLLABLE TWISS;Lo;0;L;;;;;N;;;;; +D295;HANGUL SYLLABLE TWING;Lo;0;L;;;;;N;;;;; +D296;HANGUL SYLLABLE TWIJ;Lo;0;L;;;;;N;;;;; +D297;HANGUL SYLLABLE TWIC;Lo;0;L;;;;;N;;;;; +D298;HANGUL SYLLABLE TWIK;Lo;0;L;;;;;N;;;;; +D299;HANGUL SYLLABLE TWIT;Lo;0;L;;;;;N;;;;; +D29A;HANGUL SYLLABLE TWIP;Lo;0;L;;;;;N;;;;; +D29B;HANGUL SYLLABLE TWIH;Lo;0;L;;;;;N;;;;; +D29C;HANGUL SYLLABLE TYU;Lo;0;L;;;;;N;;;;; +D29D;HANGUL SYLLABLE TYUG;Lo;0;L;;;;;N;;;;; +D29E;HANGUL SYLLABLE TYUGG;Lo;0;L;;;;;N;;;;; +D29F;HANGUL SYLLABLE TYUGS;Lo;0;L;;;;;N;;;;; +D2A0;HANGUL SYLLABLE TYUN;Lo;0;L;;;;;N;;;;; +D2A1;HANGUL SYLLABLE TYUNI;Lo;0;L;;;;;N;;;;; +D2A2;HANGUL SYLLABLE TYUNH;Lo;0;L;;;;;N;;;;; +D2A3;HANGUL SYLLABLE TYUD;Lo;0;L;;;;;N;;;;; +D2A4;HANGUL SYLLABLE TYUL;Lo;0;L;;;;;N;;;;; +D2A5;HANGUL SYLLABLE TYULG;Lo;0;L;;;;;N;;;;; +D2A6;HANGUL SYLLABLE TYULM;Lo;0;L;;;;;N;;;;; +D2A7;HANGUL SYLLABLE TYULB;Lo;0;L;;;;;N;;;;; +D2A8;HANGUL SYLLABLE TYULS;Lo;0;L;;;;;N;;;;; +D2A9;HANGUL SYLLABLE TYULT;Lo;0;L;;;;;N;;;;; +D2AA;HANGUL SYLLABLE TYULP;Lo;0;L;;;;;N;;;;; +D2AB;HANGUL SYLLABLE TYULH;Lo;0;L;;;;;N;;;;; +D2AC;HANGUL SYLLABLE TYUM;Lo;0;L;;;;;N;;;;; +D2AD;HANGUL SYLLABLE TYUB;Lo;0;L;;;;;N;;;;; +D2AE;HANGUL SYLLABLE TYUBS;Lo;0;L;;;;;N;;;;; +D2AF;HANGUL SYLLABLE TYUS;Lo;0;L;;;;;N;;;;; +D2B0;HANGUL SYLLABLE TYUSS;Lo;0;L;;;;;N;;;;; +D2B1;HANGUL SYLLABLE TYUNG;Lo;0;L;;;;;N;;;;; +D2B2;HANGUL SYLLABLE TYUJ;Lo;0;L;;;;;N;;;;; +D2B3;HANGUL SYLLABLE TYUC;Lo;0;L;;;;;N;;;;; +D2B4;HANGUL SYLLABLE TYUK;Lo;0;L;;;;;N;;;;; +D2B5;HANGUL SYLLABLE TYUT;Lo;0;L;;;;;N;;;;; +D2B6;HANGUL SYLLABLE TYUP;Lo;0;L;;;;;N;;;;; +D2B7;HANGUL SYLLABLE TYUH;Lo;0;L;;;;;N;;;;; +D2B8;HANGUL SYLLABLE TEU;Lo;0;L;;;;;N;;;;; +D2B9;HANGUL SYLLABLE TEUG;Lo;0;L;;;;;N;;;;; +D2BA;HANGUL SYLLABLE TEUGG;Lo;0;L;;;;;N;;;;; +D2BB;HANGUL SYLLABLE TEUGS;Lo;0;L;;;;;N;;;;; +D2BC;HANGUL SYLLABLE TEUN;Lo;0;L;;;;;N;;;;; +D2BD;HANGUL SYLLABLE TEUNI;Lo;0;L;;;;;N;;;;; +D2BE;HANGUL SYLLABLE TEUNH;Lo;0;L;;;;;N;;;;; +D2BF;HANGUL SYLLABLE TEUD;Lo;0;L;;;;;N;;;;; +D2C0;HANGUL SYLLABLE TEUL;Lo;0;L;;;;;N;;;;; +D2C1;HANGUL SYLLABLE TEULG;Lo;0;L;;;;;N;;;;; +D2C2;HANGUL SYLLABLE TEULM;Lo;0;L;;;;;N;;;;; +D2C3;HANGUL SYLLABLE TEULB;Lo;0;L;;;;;N;;;;; +D2C4;HANGUL SYLLABLE TEULS;Lo;0;L;;;;;N;;;;; +D2C5;HANGUL SYLLABLE TEULT;Lo;0;L;;;;;N;;;;; +D2C6;HANGUL SYLLABLE TEULP;Lo;0;L;;;;;N;;;;; +D2C7;HANGUL SYLLABLE TEULH;Lo;0;L;;;;;N;;;;; +D2C8;HANGUL SYLLABLE TEUM;Lo;0;L;;;;;N;;;;; +D2C9;HANGUL SYLLABLE TEUB;Lo;0;L;;;;;N;;;;; +D2CA;HANGUL SYLLABLE TEUBS;Lo;0;L;;;;;N;;;;; +D2CB;HANGUL SYLLABLE TEUS;Lo;0;L;;;;;N;;;;; +D2CC;HANGUL SYLLABLE TEUSS;Lo;0;L;;;;;N;;;;; +D2CD;HANGUL SYLLABLE TEUNG;Lo;0;L;;;;;N;;;;; +D2CE;HANGUL SYLLABLE TEUJ;Lo;0;L;;;;;N;;;;; +D2CF;HANGUL SYLLABLE TEUC;Lo;0;L;;;;;N;;;;; +D2D0;HANGUL SYLLABLE TEUK;Lo;0;L;;;;;N;;;;; +D2D1;HANGUL SYLLABLE TEUT;Lo;0;L;;;;;N;;;;; +D2D2;HANGUL SYLLABLE TEUP;Lo;0;L;;;;;N;;;;; +D2D3;HANGUL SYLLABLE TEUH;Lo;0;L;;;;;N;;;;; +D2D4;HANGUL SYLLABLE TYI;Lo;0;L;;;;;N;;;;; +D2D5;HANGUL SYLLABLE TYIG;Lo;0;L;;;;;N;;;;; +D2D6;HANGUL SYLLABLE TYIGG;Lo;0;L;;;;;N;;;;; +D2D7;HANGUL SYLLABLE TYIGS;Lo;0;L;;;;;N;;;;; +D2D8;HANGUL SYLLABLE TYIN;Lo;0;L;;;;;N;;;;; +D2D9;HANGUL SYLLABLE TYINI;Lo;0;L;;;;;N;;;;; +D2DA;HANGUL SYLLABLE TYINH;Lo;0;L;;;;;N;;;;; +D2DB;HANGUL SYLLABLE TYID;Lo;0;L;;;;;N;;;;; +D2DC;HANGUL SYLLABLE TYIL;Lo;0;L;;;;;N;;;;; +D2DD;HANGUL SYLLABLE TYILG;Lo;0;L;;;;;N;;;;; +D2DE;HANGUL SYLLABLE TYILM;Lo;0;L;;;;;N;;;;; +D2DF;HANGUL SYLLABLE TYILB;Lo;0;L;;;;;N;;;;; +D2E0;HANGUL SYLLABLE TYILS;Lo;0;L;;;;;N;;;;; +D2E1;HANGUL SYLLABLE TYILT;Lo;0;L;;;;;N;;;;; +D2E2;HANGUL SYLLABLE TYILP;Lo;0;L;;;;;N;;;;; +D2E3;HANGUL SYLLABLE TYILH;Lo;0;L;;;;;N;;;;; +D2E4;HANGUL SYLLABLE TYIM;Lo;0;L;;;;;N;;;;; +D2E5;HANGUL SYLLABLE TYIB;Lo;0;L;;;;;N;;;;; +D2E6;HANGUL SYLLABLE TYIBS;Lo;0;L;;;;;N;;;;; +D2E7;HANGUL SYLLABLE TYIS;Lo;0;L;;;;;N;;;;; +D2E8;HANGUL SYLLABLE TYISS;Lo;0;L;;;;;N;;;;; +D2E9;HANGUL SYLLABLE TYING;Lo;0;L;;;;;N;;;;; +D2EA;HANGUL SYLLABLE TYIJ;Lo;0;L;;;;;N;;;;; +D2EB;HANGUL SYLLABLE TYIC;Lo;0;L;;;;;N;;;;; +D2EC;HANGUL SYLLABLE TYIK;Lo;0;L;;;;;N;;;;; +D2ED;HANGUL SYLLABLE TYIT;Lo;0;L;;;;;N;;;;; +D2EE;HANGUL SYLLABLE TYIP;Lo;0;L;;;;;N;;;;; +D2EF;HANGUL SYLLABLE TYIH;Lo;0;L;;;;;N;;;;; +D2F0;HANGUL SYLLABLE TI;Lo;0;L;;;;;N;;;;; +D2F1;HANGUL SYLLABLE TIG;Lo;0;L;;;;;N;;;;; +D2F2;HANGUL SYLLABLE TIGG;Lo;0;L;;;;;N;;;;; +D2F3;HANGUL SYLLABLE TIGS;Lo;0;L;;;;;N;;;;; +D2F4;HANGUL SYLLABLE TIN;Lo;0;L;;;;;N;;;;; +D2F5;HANGUL SYLLABLE TINI;Lo;0;L;;;;;N;;;;; +D2F6;HANGUL SYLLABLE TINH;Lo;0;L;;;;;N;;;;; +D2F7;HANGUL SYLLABLE TID;Lo;0;L;;;;;N;;;;; +D2F8;HANGUL SYLLABLE TIL;Lo;0;L;;;;;N;;;;; +D2F9;HANGUL SYLLABLE TILG;Lo;0;L;;;;;N;;;;; +D2FA;HANGUL SYLLABLE TILM;Lo;0;L;;;;;N;;;;; +D2FB;HANGUL SYLLABLE TILB;Lo;0;L;;;;;N;;;;; +D2FC;HANGUL SYLLABLE TILS;Lo;0;L;;;;;N;;;;; +D2FD;HANGUL SYLLABLE TILT;Lo;0;L;;;;;N;;;;; +D2FE;HANGUL SYLLABLE TILP;Lo;0;L;;;;;N;;;;; +D2FF;HANGUL SYLLABLE TILH;Lo;0;L;;;;;N;;;;; +D300;HANGUL SYLLABLE TIM;Lo;0;L;;;;;N;;;;; +D301;HANGUL SYLLABLE TIB;Lo;0;L;;;;;N;;;;; +D302;HANGUL SYLLABLE TIBS;Lo;0;L;;;;;N;;;;; +D303;HANGUL SYLLABLE TIS;Lo;0;L;;;;;N;;;;; +D304;HANGUL SYLLABLE TISS;Lo;0;L;;;;;N;;;;; +D305;HANGUL SYLLABLE TING;Lo;0;L;;;;;N;;;;; +D306;HANGUL SYLLABLE TIJ;Lo;0;L;;;;;N;;;;; +D307;HANGUL SYLLABLE TIC;Lo;0;L;;;;;N;;;;; +D308;HANGUL SYLLABLE TIK;Lo;0;L;;;;;N;;;;; +D309;HANGUL SYLLABLE TIT;Lo;0;L;;;;;N;;;;; +D30A;HANGUL SYLLABLE TIP;Lo;0;L;;;;;N;;;;; +D30B;HANGUL SYLLABLE TIH;Lo;0;L;;;;;N;;;;; +D30C;HANGUL SYLLABLE PA;Lo;0;L;;;;;N;;;;; +D30D;HANGUL SYLLABLE PAG;Lo;0;L;;;;;N;;;;; +D30E;HANGUL SYLLABLE PAGG;Lo;0;L;;;;;N;;;;; +D30F;HANGUL SYLLABLE PAGS;Lo;0;L;;;;;N;;;;; +D310;HANGUL SYLLABLE PAN;Lo;0;L;;;;;N;;;;; +D311;HANGUL SYLLABLE PANI;Lo;0;L;;;;;N;;;;; +D312;HANGUL SYLLABLE PANH;Lo;0;L;;;;;N;;;;; +D313;HANGUL SYLLABLE PAD;Lo;0;L;;;;;N;;;;; +D314;HANGUL SYLLABLE PAL;Lo;0;L;;;;;N;;;;; +D315;HANGUL SYLLABLE PALG;Lo;0;L;;;;;N;;;;; +D316;HANGUL SYLLABLE PALM;Lo;0;L;;;;;N;;;;; +D317;HANGUL SYLLABLE PALB;Lo;0;L;;;;;N;;;;; +D318;HANGUL SYLLABLE PALS;Lo;0;L;;;;;N;;;;; +D319;HANGUL SYLLABLE PALT;Lo;0;L;;;;;N;;;;; +D31A;HANGUL SYLLABLE PALP;Lo;0;L;;;;;N;;;;; +D31B;HANGUL SYLLABLE PALH;Lo;0;L;;;;;N;;;;; +D31C;HANGUL SYLLABLE PAM;Lo;0;L;;;;;N;;;;; +D31D;HANGUL SYLLABLE PAB;Lo;0;L;;;;;N;;;;; +D31E;HANGUL SYLLABLE PABS;Lo;0;L;;;;;N;;;;; +D31F;HANGUL SYLLABLE PAS;Lo;0;L;;;;;N;;;;; +D320;HANGUL SYLLABLE PASS;Lo;0;L;;;;;N;;;;; +D321;HANGUL SYLLABLE PANG;Lo;0;L;;;;;N;;;;; +D322;HANGUL SYLLABLE PAJ;Lo;0;L;;;;;N;;;;; +D323;HANGUL SYLLABLE PAC;Lo;0;L;;;;;N;;;;; +D324;HANGUL SYLLABLE PAK;Lo;0;L;;;;;N;;;;; +D325;HANGUL SYLLABLE PAT;Lo;0;L;;;;;N;;;;; +D326;HANGUL SYLLABLE PAP;Lo;0;L;;;;;N;;;;; +D327;HANGUL SYLLABLE PAH;Lo;0;L;;;;;N;;;;; +D328;HANGUL SYLLABLE PAE;Lo;0;L;;;;;N;;;;; +D329;HANGUL SYLLABLE PAEG;Lo;0;L;;;;;N;;;;; +D32A;HANGUL SYLLABLE PAEGG;Lo;0;L;;;;;N;;;;; +D32B;HANGUL SYLLABLE PAEGS;Lo;0;L;;;;;N;;;;; +D32C;HANGUL SYLLABLE PAEN;Lo;0;L;;;;;N;;;;; +D32D;HANGUL SYLLABLE PAENI;Lo;0;L;;;;;N;;;;; +D32E;HANGUL SYLLABLE PAENH;Lo;0;L;;;;;N;;;;; +D32F;HANGUL SYLLABLE PAED;Lo;0;L;;;;;N;;;;; +D330;HANGUL SYLLABLE PAEL;Lo;0;L;;;;;N;;;;; +D331;HANGUL SYLLABLE PAELG;Lo;0;L;;;;;N;;;;; +D332;HANGUL SYLLABLE PAELM;Lo;0;L;;;;;N;;;;; +D333;HANGUL SYLLABLE PAELB;Lo;0;L;;;;;N;;;;; +D334;HANGUL SYLLABLE PAELS;Lo;0;L;;;;;N;;;;; +D335;HANGUL SYLLABLE PAELT;Lo;0;L;;;;;N;;;;; +D336;HANGUL SYLLABLE PAELP;Lo;0;L;;;;;N;;;;; +D337;HANGUL SYLLABLE PAELH;Lo;0;L;;;;;N;;;;; +D338;HANGUL SYLLABLE PAEM;Lo;0;L;;;;;N;;;;; +D339;HANGUL SYLLABLE PAEB;Lo;0;L;;;;;N;;;;; +D33A;HANGUL SYLLABLE PAEBS;Lo;0;L;;;;;N;;;;; +D33B;HANGUL SYLLABLE PAES;Lo;0;L;;;;;N;;;;; +D33C;HANGUL SYLLABLE PAESS;Lo;0;L;;;;;N;;;;; +D33D;HANGUL SYLLABLE PAENG;Lo;0;L;;;;;N;;;;; +D33E;HANGUL SYLLABLE PAEJ;Lo;0;L;;;;;N;;;;; +D33F;HANGUL SYLLABLE PAEC;Lo;0;L;;;;;N;;;;; +D340;HANGUL SYLLABLE PAEK;Lo;0;L;;;;;N;;;;; +D341;HANGUL SYLLABLE PAET;Lo;0;L;;;;;N;;;;; +D342;HANGUL SYLLABLE PAEP;Lo;0;L;;;;;N;;;;; +D343;HANGUL SYLLABLE PAEH;Lo;0;L;;;;;N;;;;; +D344;HANGUL SYLLABLE PYA;Lo;0;L;;;;;N;;;;; +D345;HANGUL SYLLABLE PYAG;Lo;0;L;;;;;N;;;;; +D346;HANGUL SYLLABLE PYAGG;Lo;0;L;;;;;N;;;;; +D347;HANGUL SYLLABLE PYAGS;Lo;0;L;;;;;N;;;;; +D348;HANGUL SYLLABLE PYAN;Lo;0;L;;;;;N;;;;; +D349;HANGUL SYLLABLE PYANI;Lo;0;L;;;;;N;;;;; +D34A;HANGUL SYLLABLE PYANH;Lo;0;L;;;;;N;;;;; +D34B;HANGUL SYLLABLE PYAD;Lo;0;L;;;;;N;;;;; +D34C;HANGUL SYLLABLE PYAL;Lo;0;L;;;;;N;;;;; +D34D;HANGUL SYLLABLE PYALG;Lo;0;L;;;;;N;;;;; +D34E;HANGUL SYLLABLE PYALM;Lo;0;L;;;;;N;;;;; +D34F;HANGUL SYLLABLE PYALB;Lo;0;L;;;;;N;;;;; +D350;HANGUL SYLLABLE PYALS;Lo;0;L;;;;;N;;;;; +D351;HANGUL SYLLABLE PYALT;Lo;0;L;;;;;N;;;;; +D352;HANGUL SYLLABLE PYALP;Lo;0;L;;;;;N;;;;; +D353;HANGUL SYLLABLE PYALH;Lo;0;L;;;;;N;;;;; +D354;HANGUL SYLLABLE PYAM;Lo;0;L;;;;;N;;;;; +D355;HANGUL SYLLABLE PYAB;Lo;0;L;;;;;N;;;;; +D356;HANGUL SYLLABLE PYABS;Lo;0;L;;;;;N;;;;; +D357;HANGUL SYLLABLE PYAS;Lo;0;L;;;;;N;;;;; +D358;HANGUL SYLLABLE PYASS;Lo;0;L;;;;;N;;;;; +D359;HANGUL SYLLABLE PYANG;Lo;0;L;;;;;N;;;;; +D35A;HANGUL SYLLABLE PYAJ;Lo;0;L;;;;;N;;;;; +D35B;HANGUL SYLLABLE PYAC;Lo;0;L;;;;;N;;;;; +D35C;HANGUL SYLLABLE PYAK;Lo;0;L;;;;;N;;;;; +D35D;HANGUL SYLLABLE PYAT;Lo;0;L;;;;;N;;;;; +D35E;HANGUL SYLLABLE PYAP;Lo;0;L;;;;;N;;;;; +D35F;HANGUL SYLLABLE PYAH;Lo;0;L;;;;;N;;;;; +D360;HANGUL SYLLABLE PYAE;Lo;0;L;;;;;N;;;;; +D361;HANGUL SYLLABLE PYAEG;Lo;0;L;;;;;N;;;;; +D362;HANGUL SYLLABLE PYAEGG;Lo;0;L;;;;;N;;;;; +D363;HANGUL SYLLABLE PYAEGS;Lo;0;L;;;;;N;;;;; +D364;HANGUL SYLLABLE PYAEN;Lo;0;L;;;;;N;;;;; +D365;HANGUL SYLLABLE PYAENI;Lo;0;L;;;;;N;;;;; +D366;HANGUL SYLLABLE PYAENH;Lo;0;L;;;;;N;;;;; +D367;HANGUL SYLLABLE PYAED;Lo;0;L;;;;;N;;;;; +D368;HANGUL SYLLABLE PYAEL;Lo;0;L;;;;;N;;;;; +D369;HANGUL SYLLABLE PYAELG;Lo;0;L;;;;;N;;;;; +D36A;HANGUL SYLLABLE PYAELM;Lo;0;L;;;;;N;;;;; +D36B;HANGUL SYLLABLE PYAELB;Lo;0;L;;;;;N;;;;; +D36C;HANGUL SYLLABLE PYAELS;Lo;0;L;;;;;N;;;;; +D36D;HANGUL SYLLABLE PYAELT;Lo;0;L;;;;;N;;;;; +D36E;HANGUL SYLLABLE PYAELP;Lo;0;L;;;;;N;;;;; +D36F;HANGUL SYLLABLE PYAELH;Lo;0;L;;;;;N;;;;; +D370;HANGUL SYLLABLE PYAEM;Lo;0;L;;;;;N;;;;; +D371;HANGUL SYLLABLE PYAEB;Lo;0;L;;;;;N;;;;; +D372;HANGUL SYLLABLE PYAEBS;Lo;0;L;;;;;N;;;;; +D373;HANGUL SYLLABLE PYAES;Lo;0;L;;;;;N;;;;; +D374;HANGUL SYLLABLE PYAESS;Lo;0;L;;;;;N;;;;; +D375;HANGUL SYLLABLE PYAENG;Lo;0;L;;;;;N;;;;; +D376;HANGUL SYLLABLE PYAEJ;Lo;0;L;;;;;N;;;;; +D377;HANGUL SYLLABLE PYAEC;Lo;0;L;;;;;N;;;;; +D378;HANGUL SYLLABLE PYAEK;Lo;0;L;;;;;N;;;;; +D379;HANGUL SYLLABLE PYAET;Lo;0;L;;;;;N;;;;; +D37A;HANGUL SYLLABLE PYAEP;Lo;0;L;;;;;N;;;;; +D37B;HANGUL SYLLABLE PYAEH;Lo;0;L;;;;;N;;;;; +D37C;HANGUL SYLLABLE PEO;Lo;0;L;;;;;N;;;;; +D37D;HANGUL SYLLABLE PEOG;Lo;0;L;;;;;N;;;;; +D37E;HANGUL SYLLABLE PEOGG;Lo;0;L;;;;;N;;;;; +D37F;HANGUL SYLLABLE PEOGS;Lo;0;L;;;;;N;;;;; +D380;HANGUL SYLLABLE PEON;Lo;0;L;;;;;N;;;;; +D381;HANGUL SYLLABLE PEONI;Lo;0;L;;;;;N;;;;; +D382;HANGUL SYLLABLE PEONH;Lo;0;L;;;;;N;;;;; +D383;HANGUL SYLLABLE PEOD;Lo;0;L;;;;;N;;;;; +D384;HANGUL SYLLABLE PEOL;Lo;0;L;;;;;N;;;;; +D385;HANGUL SYLLABLE PEOLG;Lo;0;L;;;;;N;;;;; +D386;HANGUL SYLLABLE PEOLM;Lo;0;L;;;;;N;;;;; +D387;HANGUL SYLLABLE PEOLB;Lo;0;L;;;;;N;;;;; +D388;HANGUL SYLLABLE PEOLS;Lo;0;L;;;;;N;;;;; +D389;HANGUL SYLLABLE PEOLT;Lo;0;L;;;;;N;;;;; +D38A;HANGUL SYLLABLE PEOLP;Lo;0;L;;;;;N;;;;; +D38B;HANGUL SYLLABLE PEOLH;Lo;0;L;;;;;N;;;;; +D38C;HANGUL SYLLABLE PEOM;Lo;0;L;;;;;N;;;;; +D38D;HANGUL SYLLABLE PEOB;Lo;0;L;;;;;N;;;;; +D38E;HANGUL SYLLABLE PEOBS;Lo;0;L;;;;;N;;;;; +D38F;HANGUL SYLLABLE PEOS;Lo;0;L;;;;;N;;;;; +D390;HANGUL SYLLABLE PEOSS;Lo;0;L;;;;;N;;;;; +D391;HANGUL SYLLABLE PEONG;Lo;0;L;;;;;N;;;;; +D392;HANGUL SYLLABLE PEOJ;Lo;0;L;;;;;N;;;;; +D393;HANGUL SYLLABLE PEOC;Lo;0;L;;;;;N;;;;; +D394;HANGUL SYLLABLE PEOK;Lo;0;L;;;;;N;;;;; +D395;HANGUL SYLLABLE PEOT;Lo;0;L;;;;;N;;;;; +D396;HANGUL SYLLABLE PEOP;Lo;0;L;;;;;N;;;;; +D397;HANGUL SYLLABLE PEOH;Lo;0;L;;;;;N;;;;; +D398;HANGUL SYLLABLE PE;Lo;0;L;;;;;N;;;;; +D399;HANGUL SYLLABLE PEG;Lo;0;L;;;;;N;;;;; +D39A;HANGUL SYLLABLE PEGG;Lo;0;L;;;;;N;;;;; +D39B;HANGUL SYLLABLE PEGS;Lo;0;L;;;;;N;;;;; +D39C;HANGUL SYLLABLE PEN;Lo;0;L;;;;;N;;;;; +D39D;HANGUL SYLLABLE PENI;Lo;0;L;;;;;N;;;;; +D39E;HANGUL SYLLABLE PENH;Lo;0;L;;;;;N;;;;; +D39F;HANGUL SYLLABLE PED;Lo;0;L;;;;;N;;;;; +D3A0;HANGUL SYLLABLE PEL;Lo;0;L;;;;;N;;;;; +D3A1;HANGUL SYLLABLE PELG;Lo;0;L;;;;;N;;;;; +D3A2;HANGUL SYLLABLE PELM;Lo;0;L;;;;;N;;;;; +D3A3;HANGUL SYLLABLE PELB;Lo;0;L;;;;;N;;;;; +D3A4;HANGUL SYLLABLE PELS;Lo;0;L;;;;;N;;;;; +D3A5;HANGUL SYLLABLE PELT;Lo;0;L;;;;;N;;;;; +D3A6;HANGUL SYLLABLE PELP;Lo;0;L;;;;;N;;;;; +D3A7;HANGUL SYLLABLE PELH;Lo;0;L;;;;;N;;;;; +D3A8;HANGUL SYLLABLE PEM;Lo;0;L;;;;;N;;;;; +D3A9;HANGUL SYLLABLE PEB;Lo;0;L;;;;;N;;;;; +D3AA;HANGUL SYLLABLE PEBS;Lo;0;L;;;;;N;;;;; +D3AB;HANGUL SYLLABLE PES;Lo;0;L;;;;;N;;;;; +D3AC;HANGUL SYLLABLE PESS;Lo;0;L;;;;;N;;;;; +D3AD;HANGUL SYLLABLE PENG;Lo;0;L;;;;;N;;;;; +D3AE;HANGUL SYLLABLE PEJ;Lo;0;L;;;;;N;;;;; +D3AF;HANGUL SYLLABLE PEC;Lo;0;L;;;;;N;;;;; +D3B0;HANGUL SYLLABLE PEK;Lo;0;L;;;;;N;;;;; +D3B1;HANGUL SYLLABLE PET;Lo;0;L;;;;;N;;;;; +D3B2;HANGUL SYLLABLE PEP;Lo;0;L;;;;;N;;;;; +D3B3;HANGUL SYLLABLE PEH;Lo;0;L;;;;;N;;;;; +D3B4;HANGUL SYLLABLE PYEO;Lo;0;L;;;;;N;;;;; +D3B5;HANGUL SYLLABLE PYEOG;Lo;0;L;;;;;N;;;;; +D3B6;HANGUL SYLLABLE PYEOGG;Lo;0;L;;;;;N;;;;; +D3B7;HANGUL SYLLABLE PYEOGS;Lo;0;L;;;;;N;;;;; +D3B8;HANGUL SYLLABLE PYEON;Lo;0;L;;;;;N;;;;; +D3B9;HANGUL SYLLABLE PYEONI;Lo;0;L;;;;;N;;;;; +D3BA;HANGUL SYLLABLE PYEONH;Lo;0;L;;;;;N;;;;; +D3BB;HANGUL SYLLABLE PYEOD;Lo;0;L;;;;;N;;;;; +D3BC;HANGUL SYLLABLE PYEOL;Lo;0;L;;;;;N;;;;; +D3BD;HANGUL SYLLABLE PYEOLG;Lo;0;L;;;;;N;;;;; +D3BE;HANGUL SYLLABLE PYEOLM;Lo;0;L;;;;;N;;;;; +D3BF;HANGUL SYLLABLE PYEOLB;Lo;0;L;;;;;N;;;;; +D3C0;HANGUL SYLLABLE PYEOLS;Lo;0;L;;;;;N;;;;; +D3C1;HANGUL SYLLABLE PYEOLT;Lo;0;L;;;;;N;;;;; +D3C2;HANGUL SYLLABLE PYEOLP;Lo;0;L;;;;;N;;;;; +D3C3;HANGUL SYLLABLE PYEOLH;Lo;0;L;;;;;N;;;;; +D3C4;HANGUL SYLLABLE PYEOM;Lo;0;L;;;;;N;;;;; +D3C5;HANGUL SYLLABLE PYEOB;Lo;0;L;;;;;N;;;;; +D3C6;HANGUL SYLLABLE PYEOBS;Lo;0;L;;;;;N;;;;; +D3C7;HANGUL SYLLABLE PYEOS;Lo;0;L;;;;;N;;;;; +D3C8;HANGUL SYLLABLE PYEOSS;Lo;0;L;;;;;N;;;;; +D3C9;HANGUL SYLLABLE PYEONG;Lo;0;L;;;;;N;;;;; +D3CA;HANGUL SYLLABLE PYEOJ;Lo;0;L;;;;;N;;;;; +D3CB;HANGUL SYLLABLE PYEOC;Lo;0;L;;;;;N;;;;; +D3CC;HANGUL SYLLABLE PYEOK;Lo;0;L;;;;;N;;;;; +D3CD;HANGUL SYLLABLE PYEOT;Lo;0;L;;;;;N;;;;; +D3CE;HANGUL SYLLABLE PYEOP;Lo;0;L;;;;;N;;;;; +D3CF;HANGUL SYLLABLE PYEOH;Lo;0;L;;;;;N;;;;; +D3D0;HANGUL SYLLABLE PYE;Lo;0;L;;;;;N;;;;; +D3D1;HANGUL SYLLABLE PYEG;Lo;0;L;;;;;N;;;;; +D3D2;HANGUL SYLLABLE PYEGG;Lo;0;L;;;;;N;;;;; +D3D3;HANGUL SYLLABLE PYEGS;Lo;0;L;;;;;N;;;;; +D3D4;HANGUL SYLLABLE PYEN;Lo;0;L;;;;;N;;;;; +D3D5;HANGUL SYLLABLE PYENI;Lo;0;L;;;;;N;;;;; +D3D6;HANGUL SYLLABLE PYENH;Lo;0;L;;;;;N;;;;; +D3D7;HANGUL SYLLABLE PYED;Lo;0;L;;;;;N;;;;; +D3D8;HANGUL SYLLABLE PYEL;Lo;0;L;;;;;N;;;;; +D3D9;HANGUL SYLLABLE PYELG;Lo;0;L;;;;;N;;;;; +D3DA;HANGUL SYLLABLE PYELM;Lo;0;L;;;;;N;;;;; +D3DB;HANGUL SYLLABLE PYELB;Lo;0;L;;;;;N;;;;; +D3DC;HANGUL SYLLABLE PYELS;Lo;0;L;;;;;N;;;;; +D3DD;HANGUL SYLLABLE PYELT;Lo;0;L;;;;;N;;;;; +D3DE;HANGUL SYLLABLE PYELP;Lo;0;L;;;;;N;;;;; +D3DF;HANGUL SYLLABLE PYELH;Lo;0;L;;;;;N;;;;; +D3E0;HANGUL SYLLABLE PYEM;Lo;0;L;;;;;N;;;;; +D3E1;HANGUL SYLLABLE PYEB;Lo;0;L;;;;;N;;;;; +D3E2;HANGUL SYLLABLE PYEBS;Lo;0;L;;;;;N;;;;; +D3E3;HANGUL SYLLABLE PYES;Lo;0;L;;;;;N;;;;; +D3E4;HANGUL SYLLABLE PYESS;Lo;0;L;;;;;N;;;;; +D3E5;HANGUL SYLLABLE PYENG;Lo;0;L;;;;;N;;;;; +D3E6;HANGUL SYLLABLE PYEJ;Lo;0;L;;;;;N;;;;; +D3E7;HANGUL SYLLABLE PYEC;Lo;0;L;;;;;N;;;;; +D3E8;HANGUL SYLLABLE PYEK;Lo;0;L;;;;;N;;;;; +D3E9;HANGUL SYLLABLE PYET;Lo;0;L;;;;;N;;;;; +D3EA;HANGUL SYLLABLE PYEP;Lo;0;L;;;;;N;;;;; +D3EB;HANGUL SYLLABLE PYEH;Lo;0;L;;;;;N;;;;; +D3EC;HANGUL SYLLABLE PO;Lo;0;L;;;;;N;;;;; +D3ED;HANGUL SYLLABLE POG;Lo;0;L;;;;;N;;;;; +D3EE;HANGUL SYLLABLE POGG;Lo;0;L;;;;;N;;;;; +D3EF;HANGUL SYLLABLE POGS;Lo;0;L;;;;;N;;;;; +D3F0;HANGUL SYLLABLE PON;Lo;0;L;;;;;N;;;;; +D3F1;HANGUL SYLLABLE PONI;Lo;0;L;;;;;N;;;;; +D3F2;HANGUL SYLLABLE PONH;Lo;0;L;;;;;N;;;;; +D3F3;HANGUL SYLLABLE POD;Lo;0;L;;;;;N;;;;; +D3F4;HANGUL SYLLABLE POL;Lo;0;L;;;;;N;;;;; +D3F5;HANGUL SYLLABLE POLG;Lo;0;L;;;;;N;;;;; +D3F6;HANGUL SYLLABLE POLM;Lo;0;L;;;;;N;;;;; +D3F7;HANGUL SYLLABLE POLB;Lo;0;L;;;;;N;;;;; +D3F8;HANGUL SYLLABLE POLS;Lo;0;L;;;;;N;;;;; +D3F9;HANGUL SYLLABLE POLT;Lo;0;L;;;;;N;;;;; +D3FA;HANGUL SYLLABLE POLP;Lo;0;L;;;;;N;;;;; +D3FB;HANGUL SYLLABLE POLH;Lo;0;L;;;;;N;;;;; +D3FC;HANGUL SYLLABLE POM;Lo;0;L;;;;;N;;;;; +D3FD;HANGUL SYLLABLE POB;Lo;0;L;;;;;N;;;;; +D3FE;HANGUL SYLLABLE POBS;Lo;0;L;;;;;N;;;;; +D3FF;HANGUL SYLLABLE POS;Lo;0;L;;;;;N;;;;; +D400;HANGUL SYLLABLE POSS;Lo;0;L;;;;;N;;;;; +D401;HANGUL SYLLABLE PONG;Lo;0;L;;;;;N;;;;; +D402;HANGUL SYLLABLE POJ;Lo;0;L;;;;;N;;;;; +D403;HANGUL SYLLABLE POC;Lo;0;L;;;;;N;;;;; +D404;HANGUL SYLLABLE POK;Lo;0;L;;;;;N;;;;; +D405;HANGUL SYLLABLE POT;Lo;0;L;;;;;N;;;;; +D406;HANGUL SYLLABLE POP;Lo;0;L;;;;;N;;;;; +D407;HANGUL SYLLABLE POH;Lo;0;L;;;;;N;;;;; +D408;HANGUL SYLLABLE PWA;Lo;0;L;;;;;N;;;;; +D409;HANGUL SYLLABLE PWAG;Lo;0;L;;;;;N;;;;; +D40A;HANGUL SYLLABLE PWAGG;Lo;0;L;;;;;N;;;;; +D40B;HANGUL SYLLABLE PWAGS;Lo;0;L;;;;;N;;;;; +D40C;HANGUL SYLLABLE PWAN;Lo;0;L;;;;;N;;;;; +D40D;HANGUL SYLLABLE PWANI;Lo;0;L;;;;;N;;;;; +D40E;HANGUL SYLLABLE PWANH;Lo;0;L;;;;;N;;;;; +D40F;HANGUL SYLLABLE PWAD;Lo;0;L;;;;;N;;;;; +D410;HANGUL SYLLABLE PWAL;Lo;0;L;;;;;N;;;;; +D411;HANGUL SYLLABLE PWALG;Lo;0;L;;;;;N;;;;; +D412;HANGUL SYLLABLE PWALM;Lo;0;L;;;;;N;;;;; +D413;HANGUL SYLLABLE PWALB;Lo;0;L;;;;;N;;;;; +D414;HANGUL SYLLABLE PWALS;Lo;0;L;;;;;N;;;;; +D415;HANGUL SYLLABLE PWALT;Lo;0;L;;;;;N;;;;; +D416;HANGUL SYLLABLE PWALP;Lo;0;L;;;;;N;;;;; +D417;HANGUL SYLLABLE PWALH;Lo;0;L;;;;;N;;;;; +D418;HANGUL SYLLABLE PWAM;Lo;0;L;;;;;N;;;;; +D419;HANGUL SYLLABLE PWAB;Lo;0;L;;;;;N;;;;; +D41A;HANGUL SYLLABLE PWABS;Lo;0;L;;;;;N;;;;; +D41B;HANGUL SYLLABLE PWAS;Lo;0;L;;;;;N;;;;; +D41C;HANGUL SYLLABLE PWASS;Lo;0;L;;;;;N;;;;; +D41D;HANGUL SYLLABLE PWANG;Lo;0;L;;;;;N;;;;; +D41E;HANGUL SYLLABLE PWAJ;Lo;0;L;;;;;N;;;;; +D41F;HANGUL SYLLABLE PWAC;Lo;0;L;;;;;N;;;;; +D420;HANGUL SYLLABLE PWAK;Lo;0;L;;;;;N;;;;; +D421;HANGUL SYLLABLE PWAT;Lo;0;L;;;;;N;;;;; +D422;HANGUL SYLLABLE PWAP;Lo;0;L;;;;;N;;;;; +D423;HANGUL SYLLABLE PWAH;Lo;0;L;;;;;N;;;;; +D424;HANGUL SYLLABLE PWAE;Lo;0;L;;;;;N;;;;; +D425;HANGUL SYLLABLE PWAEG;Lo;0;L;;;;;N;;;;; +D426;HANGUL SYLLABLE PWAEGG;Lo;0;L;;;;;N;;;;; +D427;HANGUL SYLLABLE PWAEGS;Lo;0;L;;;;;N;;;;; +D428;HANGUL SYLLABLE PWAEN;Lo;0;L;;;;;N;;;;; +D429;HANGUL SYLLABLE PWAENI;Lo;0;L;;;;;N;;;;; +D42A;HANGUL SYLLABLE PWAENH;Lo;0;L;;;;;N;;;;; +D42B;HANGUL SYLLABLE PWAED;Lo;0;L;;;;;N;;;;; +D42C;HANGUL SYLLABLE PWAEL;Lo;0;L;;;;;N;;;;; +D42D;HANGUL SYLLABLE PWAELG;Lo;0;L;;;;;N;;;;; +D42E;HANGUL SYLLABLE PWAELM;Lo;0;L;;;;;N;;;;; +D42F;HANGUL SYLLABLE PWAELB;Lo;0;L;;;;;N;;;;; +D430;HANGUL SYLLABLE PWAELS;Lo;0;L;;;;;N;;;;; +D431;HANGUL SYLLABLE PWAELT;Lo;0;L;;;;;N;;;;; +D432;HANGUL SYLLABLE PWAELP;Lo;0;L;;;;;N;;;;; +D433;HANGUL SYLLABLE PWAELH;Lo;0;L;;;;;N;;;;; +D434;HANGUL SYLLABLE PWAEM;Lo;0;L;;;;;N;;;;; +D435;HANGUL SYLLABLE PWAEB;Lo;0;L;;;;;N;;;;; +D436;HANGUL SYLLABLE PWAEBS;Lo;0;L;;;;;N;;;;; +D437;HANGUL SYLLABLE PWAES;Lo;0;L;;;;;N;;;;; +D438;HANGUL SYLLABLE PWAESS;Lo;0;L;;;;;N;;;;; +D439;HANGUL SYLLABLE PWAENG;Lo;0;L;;;;;N;;;;; +D43A;HANGUL SYLLABLE PWAEJ;Lo;0;L;;;;;N;;;;; +D43B;HANGUL SYLLABLE PWAEC;Lo;0;L;;;;;N;;;;; +D43C;HANGUL SYLLABLE PWAEK;Lo;0;L;;;;;N;;;;; +D43D;HANGUL SYLLABLE PWAET;Lo;0;L;;;;;N;;;;; +D43E;HANGUL SYLLABLE PWAEP;Lo;0;L;;;;;N;;;;; +D43F;HANGUL SYLLABLE PWAEH;Lo;0;L;;;;;N;;;;; +D440;HANGUL SYLLABLE POE;Lo;0;L;;;;;N;;;;; +D441;HANGUL SYLLABLE POEG;Lo;0;L;;;;;N;;;;; +D442;HANGUL SYLLABLE POEGG;Lo;0;L;;;;;N;;;;; +D443;HANGUL SYLLABLE POEGS;Lo;0;L;;;;;N;;;;; +D444;HANGUL SYLLABLE POEN;Lo;0;L;;;;;N;;;;; +D445;HANGUL SYLLABLE POENI;Lo;0;L;;;;;N;;;;; +D446;HANGUL SYLLABLE POENH;Lo;0;L;;;;;N;;;;; +D447;HANGUL SYLLABLE POED;Lo;0;L;;;;;N;;;;; +D448;HANGUL SYLLABLE POEL;Lo;0;L;;;;;N;;;;; +D449;HANGUL SYLLABLE POELG;Lo;0;L;;;;;N;;;;; +D44A;HANGUL SYLLABLE POELM;Lo;0;L;;;;;N;;;;; +D44B;HANGUL SYLLABLE POELB;Lo;0;L;;;;;N;;;;; +D44C;HANGUL SYLLABLE POELS;Lo;0;L;;;;;N;;;;; +D44D;HANGUL SYLLABLE POELT;Lo;0;L;;;;;N;;;;; +D44E;HANGUL SYLLABLE POELP;Lo;0;L;;;;;N;;;;; +D44F;HANGUL SYLLABLE POELH;Lo;0;L;;;;;N;;;;; +D450;HANGUL SYLLABLE POEM;Lo;0;L;;;;;N;;;;; +D451;HANGUL SYLLABLE POEB;Lo;0;L;;;;;N;;;;; +D452;HANGUL SYLLABLE POEBS;Lo;0;L;;;;;N;;;;; +D453;HANGUL SYLLABLE POES;Lo;0;L;;;;;N;;;;; +D454;HANGUL SYLLABLE POESS;Lo;0;L;;;;;N;;;;; +D455;HANGUL SYLLABLE POENG;Lo;0;L;;;;;N;;;;; +D456;HANGUL SYLLABLE POEJ;Lo;0;L;;;;;N;;;;; +D457;HANGUL SYLLABLE POEC;Lo;0;L;;;;;N;;;;; +D458;HANGUL SYLLABLE POEK;Lo;0;L;;;;;N;;;;; +D459;HANGUL SYLLABLE POET;Lo;0;L;;;;;N;;;;; +D45A;HANGUL SYLLABLE POEP;Lo;0;L;;;;;N;;;;; +D45B;HANGUL SYLLABLE POEH;Lo;0;L;;;;;N;;;;; +D45C;HANGUL SYLLABLE PYO;Lo;0;L;;;;;N;;;;; +D45D;HANGUL SYLLABLE PYOG;Lo;0;L;;;;;N;;;;; +D45E;HANGUL SYLLABLE PYOGG;Lo;0;L;;;;;N;;;;; +D45F;HANGUL SYLLABLE PYOGS;Lo;0;L;;;;;N;;;;; +D460;HANGUL SYLLABLE PYON;Lo;0;L;;;;;N;;;;; +D461;HANGUL SYLLABLE PYONI;Lo;0;L;;;;;N;;;;; +D462;HANGUL SYLLABLE PYONH;Lo;0;L;;;;;N;;;;; +D463;HANGUL SYLLABLE PYOD;Lo;0;L;;;;;N;;;;; +D464;HANGUL SYLLABLE PYOL;Lo;0;L;;;;;N;;;;; +D465;HANGUL SYLLABLE PYOLG;Lo;0;L;;;;;N;;;;; +D466;HANGUL SYLLABLE PYOLM;Lo;0;L;;;;;N;;;;; +D467;HANGUL SYLLABLE PYOLB;Lo;0;L;;;;;N;;;;; +D468;HANGUL SYLLABLE PYOLS;Lo;0;L;;;;;N;;;;; +D469;HANGUL SYLLABLE PYOLT;Lo;0;L;;;;;N;;;;; +D46A;HANGUL SYLLABLE PYOLP;Lo;0;L;;;;;N;;;;; +D46B;HANGUL SYLLABLE PYOLH;Lo;0;L;;;;;N;;;;; +D46C;HANGUL SYLLABLE PYOM;Lo;0;L;;;;;N;;;;; +D46D;HANGUL SYLLABLE PYOB;Lo;0;L;;;;;N;;;;; +D46E;HANGUL SYLLABLE PYOBS;Lo;0;L;;;;;N;;;;; +D46F;HANGUL SYLLABLE PYOS;Lo;0;L;;;;;N;;;;; +D470;HANGUL SYLLABLE PYOSS;Lo;0;L;;;;;N;;;;; +D471;HANGUL SYLLABLE PYONG;Lo;0;L;;;;;N;;;;; +D472;HANGUL SYLLABLE PYOJ;Lo;0;L;;;;;N;;;;; +D473;HANGUL SYLLABLE PYOC;Lo;0;L;;;;;N;;;;; +D474;HANGUL SYLLABLE PYOK;Lo;0;L;;;;;N;;;;; +D475;HANGUL SYLLABLE PYOT;Lo;0;L;;;;;N;;;;; +D476;HANGUL SYLLABLE PYOP;Lo;0;L;;;;;N;;;;; +D477;HANGUL SYLLABLE PYOH;Lo;0;L;;;;;N;;;;; +D478;HANGUL SYLLABLE PU;Lo;0;L;;;;;N;;;;; +D479;HANGUL SYLLABLE PUG;Lo;0;L;;;;;N;;;;; +D47A;HANGUL SYLLABLE PUGG;Lo;0;L;;;;;N;;;;; +D47B;HANGUL SYLLABLE PUGS;Lo;0;L;;;;;N;;;;; +D47C;HANGUL SYLLABLE PUN;Lo;0;L;;;;;N;;;;; +D47D;HANGUL SYLLABLE PUNI;Lo;0;L;;;;;N;;;;; +D47E;HANGUL SYLLABLE PUNH;Lo;0;L;;;;;N;;;;; +D47F;HANGUL SYLLABLE PUD;Lo;0;L;;;;;N;;;;; +D480;HANGUL SYLLABLE PUL;Lo;0;L;;;;;N;;;;; +D481;HANGUL SYLLABLE PULG;Lo;0;L;;;;;N;;;;; +D482;HANGUL SYLLABLE PULM;Lo;0;L;;;;;N;;;;; +D483;HANGUL SYLLABLE PULB;Lo;0;L;;;;;N;;;;; +D484;HANGUL SYLLABLE PULS;Lo;0;L;;;;;N;;;;; +D485;HANGUL SYLLABLE PULT;Lo;0;L;;;;;N;;;;; +D486;HANGUL SYLLABLE PULP;Lo;0;L;;;;;N;;;;; +D487;HANGUL SYLLABLE PULH;Lo;0;L;;;;;N;;;;; +D488;HANGUL SYLLABLE PUM;Lo;0;L;;;;;N;;;;; +D489;HANGUL SYLLABLE PUB;Lo;0;L;;;;;N;;;;; +D48A;HANGUL SYLLABLE PUBS;Lo;0;L;;;;;N;;;;; +D48B;HANGUL SYLLABLE PUS;Lo;0;L;;;;;N;;;;; +D48C;HANGUL SYLLABLE PUSS;Lo;0;L;;;;;N;;;;; +D48D;HANGUL SYLLABLE PUNG;Lo;0;L;;;;;N;;;;; +D48E;HANGUL SYLLABLE PUJ;Lo;0;L;;;;;N;;;;; +D48F;HANGUL SYLLABLE PUC;Lo;0;L;;;;;N;;;;; +D490;HANGUL SYLLABLE PUK;Lo;0;L;;;;;N;;;;; +D491;HANGUL SYLLABLE PUT;Lo;0;L;;;;;N;;;;; +D492;HANGUL SYLLABLE PUP;Lo;0;L;;;;;N;;;;; +D493;HANGUL SYLLABLE PUH;Lo;0;L;;;;;N;;;;; +D494;HANGUL SYLLABLE PWEO;Lo;0;L;;;;;N;;;;; +D495;HANGUL SYLLABLE PWEOG;Lo;0;L;;;;;N;;;;; +D496;HANGUL SYLLABLE PWEOGG;Lo;0;L;;;;;N;;;;; +D497;HANGUL SYLLABLE PWEOGS;Lo;0;L;;;;;N;;;;; +D498;HANGUL SYLLABLE PWEON;Lo;0;L;;;;;N;;;;; +D499;HANGUL SYLLABLE PWEONI;Lo;0;L;;;;;N;;;;; +D49A;HANGUL SYLLABLE PWEONH;Lo;0;L;;;;;N;;;;; +D49B;HANGUL SYLLABLE PWEOD;Lo;0;L;;;;;N;;;;; +D49C;HANGUL SYLLABLE PWEOL;Lo;0;L;;;;;N;;;;; +D49D;HANGUL SYLLABLE PWEOLG;Lo;0;L;;;;;N;;;;; +D49E;HANGUL SYLLABLE PWEOLM;Lo;0;L;;;;;N;;;;; +D49F;HANGUL SYLLABLE PWEOLB;Lo;0;L;;;;;N;;;;; +D4A0;HANGUL SYLLABLE PWEOLS;Lo;0;L;;;;;N;;;;; +D4A1;HANGUL SYLLABLE PWEOLT;Lo;0;L;;;;;N;;;;; +D4A2;HANGUL SYLLABLE PWEOLP;Lo;0;L;;;;;N;;;;; +D4A3;HANGUL SYLLABLE PWEOLH;Lo;0;L;;;;;N;;;;; +D4A4;HANGUL SYLLABLE PWEOM;Lo;0;L;;;;;N;;;;; +D4A5;HANGUL SYLLABLE PWEOB;Lo;0;L;;;;;N;;;;; +D4A6;HANGUL SYLLABLE PWEOBS;Lo;0;L;;;;;N;;;;; +D4A7;HANGUL SYLLABLE PWEOS;Lo;0;L;;;;;N;;;;; +D4A8;HANGUL SYLLABLE PWEOSS;Lo;0;L;;;;;N;;;;; +D4A9;HANGUL SYLLABLE PWEONG;Lo;0;L;;;;;N;;;;; +D4AA;HANGUL SYLLABLE PWEOJ;Lo;0;L;;;;;N;;;;; +D4AB;HANGUL SYLLABLE PWEOC;Lo;0;L;;;;;N;;;;; +D4AC;HANGUL SYLLABLE PWEOK;Lo;0;L;;;;;N;;;;; +D4AD;HANGUL SYLLABLE PWEOT;Lo;0;L;;;;;N;;;;; +D4AE;HANGUL SYLLABLE PWEOP;Lo;0;L;;;;;N;;;;; +D4AF;HANGUL SYLLABLE PWEOH;Lo;0;L;;;;;N;;;;; +D4B0;HANGUL SYLLABLE PWE;Lo;0;L;;;;;N;;;;; +D4B1;HANGUL SYLLABLE PWEG;Lo;0;L;;;;;N;;;;; +D4B2;HANGUL SYLLABLE PWEGG;Lo;0;L;;;;;N;;;;; +D4B3;HANGUL SYLLABLE PWEGS;Lo;0;L;;;;;N;;;;; +D4B4;HANGUL SYLLABLE PWEN;Lo;0;L;;;;;N;;;;; +D4B5;HANGUL SYLLABLE PWENI;Lo;0;L;;;;;N;;;;; +D4B6;HANGUL SYLLABLE PWENH;Lo;0;L;;;;;N;;;;; +D4B7;HANGUL SYLLABLE PWED;Lo;0;L;;;;;N;;;;; +D4B8;HANGUL SYLLABLE PWEL;Lo;0;L;;;;;N;;;;; +D4B9;HANGUL SYLLABLE PWELG;Lo;0;L;;;;;N;;;;; +D4BA;HANGUL SYLLABLE PWELM;Lo;0;L;;;;;N;;;;; +D4BB;HANGUL SYLLABLE PWELB;Lo;0;L;;;;;N;;;;; +D4BC;HANGUL SYLLABLE PWELS;Lo;0;L;;;;;N;;;;; +D4BD;HANGUL SYLLABLE PWELT;Lo;0;L;;;;;N;;;;; +D4BE;HANGUL SYLLABLE PWELP;Lo;0;L;;;;;N;;;;; +D4BF;HANGUL SYLLABLE PWELH;Lo;0;L;;;;;N;;;;; +D4C0;HANGUL SYLLABLE PWEM;Lo;0;L;;;;;N;;;;; +D4C1;HANGUL SYLLABLE PWEB;Lo;0;L;;;;;N;;;;; +D4C2;HANGUL SYLLABLE PWEBS;Lo;0;L;;;;;N;;;;; +D4C3;HANGUL SYLLABLE PWES;Lo;0;L;;;;;N;;;;; +D4C4;HANGUL SYLLABLE PWESS;Lo;0;L;;;;;N;;;;; +D4C5;HANGUL SYLLABLE PWENG;Lo;0;L;;;;;N;;;;; +D4C6;HANGUL SYLLABLE PWEJ;Lo;0;L;;;;;N;;;;; +D4C7;HANGUL SYLLABLE PWEC;Lo;0;L;;;;;N;;;;; +D4C8;HANGUL SYLLABLE PWEK;Lo;0;L;;;;;N;;;;; +D4C9;HANGUL SYLLABLE PWET;Lo;0;L;;;;;N;;;;; +D4CA;HANGUL SYLLABLE PWEP;Lo;0;L;;;;;N;;;;; +D4CB;HANGUL SYLLABLE PWEH;Lo;0;L;;;;;N;;;;; +D4CC;HANGUL SYLLABLE PWI;Lo;0;L;;;;;N;;;;; +D4CD;HANGUL SYLLABLE PWIG;Lo;0;L;;;;;N;;;;; +D4CE;HANGUL SYLLABLE PWIGG;Lo;0;L;;;;;N;;;;; +D4CF;HANGUL SYLLABLE PWIGS;Lo;0;L;;;;;N;;;;; +D4D0;HANGUL SYLLABLE PWIN;Lo;0;L;;;;;N;;;;; +D4D1;HANGUL SYLLABLE PWINI;Lo;0;L;;;;;N;;;;; +D4D2;HANGUL SYLLABLE PWINH;Lo;0;L;;;;;N;;;;; +D4D3;HANGUL SYLLABLE PWID;Lo;0;L;;;;;N;;;;; +D4D4;HANGUL SYLLABLE PWIL;Lo;0;L;;;;;N;;;;; +D4D5;HANGUL SYLLABLE PWILG;Lo;0;L;;;;;N;;;;; +D4D6;HANGUL SYLLABLE PWILM;Lo;0;L;;;;;N;;;;; +D4D7;HANGUL SYLLABLE PWILB;Lo;0;L;;;;;N;;;;; +D4D8;HANGUL SYLLABLE PWILS;Lo;0;L;;;;;N;;;;; +D4D9;HANGUL SYLLABLE PWILT;Lo;0;L;;;;;N;;;;; +D4DA;HANGUL SYLLABLE PWILP;Lo;0;L;;;;;N;;;;; +D4DB;HANGUL SYLLABLE PWILH;Lo;0;L;;;;;N;;;;; +D4DC;HANGUL SYLLABLE PWIM;Lo;0;L;;;;;N;;;;; +D4DD;HANGUL SYLLABLE PWIB;Lo;0;L;;;;;N;;;;; +D4DE;HANGUL SYLLABLE PWIBS;Lo;0;L;;;;;N;;;;; +D4DF;HANGUL SYLLABLE PWIS;Lo;0;L;;;;;N;;;;; +D4E0;HANGUL SYLLABLE PWISS;Lo;0;L;;;;;N;;;;; +D4E1;HANGUL SYLLABLE PWING;Lo;0;L;;;;;N;;;;; +D4E2;HANGUL SYLLABLE PWIJ;Lo;0;L;;;;;N;;;;; +D4E3;HANGUL SYLLABLE PWIC;Lo;0;L;;;;;N;;;;; +D4E4;HANGUL SYLLABLE PWIK;Lo;0;L;;;;;N;;;;; +D4E5;HANGUL SYLLABLE PWIT;Lo;0;L;;;;;N;;;;; +D4E6;HANGUL SYLLABLE PWIP;Lo;0;L;;;;;N;;;;; +D4E7;HANGUL SYLLABLE PWIH;Lo;0;L;;;;;N;;;;; +D4E8;HANGUL SYLLABLE PYU;Lo;0;L;;;;;N;;;;; +D4E9;HANGUL SYLLABLE PYUG;Lo;0;L;;;;;N;;;;; +D4EA;HANGUL SYLLABLE PYUGG;Lo;0;L;;;;;N;;;;; +D4EB;HANGUL SYLLABLE PYUGS;Lo;0;L;;;;;N;;;;; +D4EC;HANGUL SYLLABLE PYUN;Lo;0;L;;;;;N;;;;; +D4ED;HANGUL SYLLABLE PYUNI;Lo;0;L;;;;;N;;;;; +D4EE;HANGUL SYLLABLE PYUNH;Lo;0;L;;;;;N;;;;; +D4EF;HANGUL SYLLABLE PYUD;Lo;0;L;;;;;N;;;;; +D4F0;HANGUL SYLLABLE PYUL;Lo;0;L;;;;;N;;;;; +D4F1;HANGUL SYLLABLE PYULG;Lo;0;L;;;;;N;;;;; +D4F2;HANGUL SYLLABLE PYULM;Lo;0;L;;;;;N;;;;; +D4F3;HANGUL SYLLABLE PYULB;Lo;0;L;;;;;N;;;;; +D4F4;HANGUL SYLLABLE PYULS;Lo;0;L;;;;;N;;;;; +D4F5;HANGUL SYLLABLE PYULT;Lo;0;L;;;;;N;;;;; +D4F6;HANGUL SYLLABLE PYULP;Lo;0;L;;;;;N;;;;; +D4F7;HANGUL SYLLABLE PYULH;Lo;0;L;;;;;N;;;;; +D4F8;HANGUL SYLLABLE PYUM;Lo;0;L;;;;;N;;;;; +D4F9;HANGUL SYLLABLE PYUB;Lo;0;L;;;;;N;;;;; +D4FA;HANGUL SYLLABLE PYUBS;Lo;0;L;;;;;N;;;;; +D4FB;HANGUL SYLLABLE PYUS;Lo;0;L;;;;;N;;;;; +D4FC;HANGUL SYLLABLE PYUSS;Lo;0;L;;;;;N;;;;; +D4FD;HANGUL SYLLABLE PYUNG;Lo;0;L;;;;;N;;;;; +D4FE;HANGUL SYLLABLE PYUJ;Lo;0;L;;;;;N;;;;; +D4FF;HANGUL SYLLABLE PYUC;Lo;0;L;;;;;N;;;;; +D500;HANGUL SYLLABLE PYUK;Lo;0;L;;;;;N;;;;; +D501;HANGUL SYLLABLE PYUT;Lo;0;L;;;;;N;;;;; +D502;HANGUL SYLLABLE PYUP;Lo;0;L;;;;;N;;;;; +D503;HANGUL SYLLABLE PYUH;Lo;0;L;;;;;N;;;;; +D504;HANGUL SYLLABLE PEU;Lo;0;L;;;;;N;;;;; +D505;HANGUL SYLLABLE PEUG;Lo;0;L;;;;;N;;;;; +D506;HANGUL SYLLABLE PEUGG;Lo;0;L;;;;;N;;;;; +D507;HANGUL SYLLABLE PEUGS;Lo;0;L;;;;;N;;;;; +D508;HANGUL SYLLABLE PEUN;Lo;0;L;;;;;N;;;;; +D509;HANGUL SYLLABLE PEUNI;Lo;0;L;;;;;N;;;;; +D50A;HANGUL SYLLABLE PEUNH;Lo;0;L;;;;;N;;;;; +D50B;HANGUL SYLLABLE PEUD;Lo;0;L;;;;;N;;;;; +D50C;HANGUL SYLLABLE PEUL;Lo;0;L;;;;;N;;;;; +D50D;HANGUL SYLLABLE PEULG;Lo;0;L;;;;;N;;;;; +D50E;HANGUL SYLLABLE PEULM;Lo;0;L;;;;;N;;;;; +D50F;HANGUL SYLLABLE PEULB;Lo;0;L;;;;;N;;;;; +D510;HANGUL SYLLABLE PEULS;Lo;0;L;;;;;N;;;;; +D511;HANGUL SYLLABLE PEULT;Lo;0;L;;;;;N;;;;; +D512;HANGUL SYLLABLE PEULP;Lo;0;L;;;;;N;;;;; +D513;HANGUL SYLLABLE PEULH;Lo;0;L;;;;;N;;;;; +D514;HANGUL SYLLABLE PEUM;Lo;0;L;;;;;N;;;;; +D515;HANGUL SYLLABLE PEUB;Lo;0;L;;;;;N;;;;; +D516;HANGUL SYLLABLE PEUBS;Lo;0;L;;;;;N;;;;; +D517;HANGUL SYLLABLE PEUS;Lo;0;L;;;;;N;;;;; +D518;HANGUL SYLLABLE PEUSS;Lo;0;L;;;;;N;;;;; +D519;HANGUL SYLLABLE PEUNG;Lo;0;L;;;;;N;;;;; +D51A;HANGUL SYLLABLE PEUJ;Lo;0;L;;;;;N;;;;; +D51B;HANGUL SYLLABLE PEUC;Lo;0;L;;;;;N;;;;; +D51C;HANGUL SYLLABLE PEUK;Lo;0;L;;;;;N;;;;; +D51D;HANGUL SYLLABLE PEUT;Lo;0;L;;;;;N;;;;; +D51E;HANGUL SYLLABLE PEUP;Lo;0;L;;;;;N;;;;; +D51F;HANGUL SYLLABLE PEUH;Lo;0;L;;;;;N;;;;; +D520;HANGUL SYLLABLE PYI;Lo;0;L;;;;;N;;;;; +D521;HANGUL SYLLABLE PYIG;Lo;0;L;;;;;N;;;;; +D522;HANGUL SYLLABLE PYIGG;Lo;0;L;;;;;N;;;;; +D523;HANGUL SYLLABLE PYIGS;Lo;0;L;;;;;N;;;;; +D524;HANGUL SYLLABLE PYIN;Lo;0;L;;;;;N;;;;; +D525;HANGUL SYLLABLE PYINI;Lo;0;L;;;;;N;;;;; +D526;HANGUL SYLLABLE PYINH;Lo;0;L;;;;;N;;;;; +D527;HANGUL SYLLABLE PYID;Lo;0;L;;;;;N;;;;; +D528;HANGUL SYLLABLE PYIL;Lo;0;L;;;;;N;;;;; +D529;HANGUL SYLLABLE PYILG;Lo;0;L;;;;;N;;;;; +D52A;HANGUL SYLLABLE PYILM;Lo;0;L;;;;;N;;;;; +D52B;HANGUL SYLLABLE PYILB;Lo;0;L;;;;;N;;;;; +D52C;HANGUL SYLLABLE PYILS;Lo;0;L;;;;;N;;;;; +D52D;HANGUL SYLLABLE PYILT;Lo;0;L;;;;;N;;;;; +D52E;HANGUL SYLLABLE PYILP;Lo;0;L;;;;;N;;;;; +D52F;HANGUL SYLLABLE PYILH;Lo;0;L;;;;;N;;;;; +D530;HANGUL SYLLABLE PYIM;Lo;0;L;;;;;N;;;;; +D531;HANGUL SYLLABLE PYIB;Lo;0;L;;;;;N;;;;; +D532;HANGUL SYLLABLE PYIBS;Lo;0;L;;;;;N;;;;; +D533;HANGUL SYLLABLE PYIS;Lo;0;L;;;;;N;;;;; +D534;HANGUL SYLLABLE PYISS;Lo;0;L;;;;;N;;;;; +D535;HANGUL SYLLABLE PYING;Lo;0;L;;;;;N;;;;; +D536;HANGUL SYLLABLE PYIJ;Lo;0;L;;;;;N;;;;; +D537;HANGUL SYLLABLE PYIC;Lo;0;L;;;;;N;;;;; +D538;HANGUL SYLLABLE PYIK;Lo;0;L;;;;;N;;;;; +D539;HANGUL SYLLABLE PYIT;Lo;0;L;;;;;N;;;;; +D53A;HANGUL SYLLABLE PYIP;Lo;0;L;;;;;N;;;;; +D53B;HANGUL SYLLABLE PYIH;Lo;0;L;;;;;N;;;;; +D53C;HANGUL SYLLABLE PI;Lo;0;L;;;;;N;;;;; +D53D;HANGUL SYLLABLE PIG;Lo;0;L;;;;;N;;;;; +D53E;HANGUL SYLLABLE PIGG;Lo;0;L;;;;;N;;;;; +D53F;HANGUL SYLLABLE PIGS;Lo;0;L;;;;;N;;;;; +D540;HANGUL SYLLABLE PIN;Lo;0;L;;;;;N;;;;; +D541;HANGUL SYLLABLE PINI;Lo;0;L;;;;;N;;;;; +D542;HANGUL SYLLABLE PINH;Lo;0;L;;;;;N;;;;; +D543;HANGUL SYLLABLE PID;Lo;0;L;;;;;N;;;;; +D544;HANGUL SYLLABLE PIL;Lo;0;L;;;;;N;;;;; +D545;HANGUL SYLLABLE PILG;Lo;0;L;;;;;N;;;;; +D546;HANGUL SYLLABLE PILM;Lo;0;L;;;;;N;;;;; +D547;HANGUL SYLLABLE PILB;Lo;0;L;;;;;N;;;;; +D548;HANGUL SYLLABLE PILS;Lo;0;L;;;;;N;;;;; +D549;HANGUL SYLLABLE PILT;Lo;0;L;;;;;N;;;;; +D54A;HANGUL SYLLABLE PILP;Lo;0;L;;;;;N;;;;; +D54B;HANGUL SYLLABLE PILH;Lo;0;L;;;;;N;;;;; +D54C;HANGUL SYLLABLE PIM;Lo;0;L;;;;;N;;;;; +D54D;HANGUL SYLLABLE PIB;Lo;0;L;;;;;N;;;;; +D54E;HANGUL SYLLABLE PIBS;Lo;0;L;;;;;N;;;;; +D54F;HANGUL SYLLABLE PIS;Lo;0;L;;;;;N;;;;; +D550;HANGUL SYLLABLE PISS;Lo;0;L;;;;;N;;;;; +D551;HANGUL SYLLABLE PING;Lo;0;L;;;;;N;;;;; +D552;HANGUL SYLLABLE PIJ;Lo;0;L;;;;;N;;;;; +D553;HANGUL SYLLABLE PIC;Lo;0;L;;;;;N;;;;; +D554;HANGUL SYLLABLE PIK;Lo;0;L;;;;;N;;;;; +D555;HANGUL SYLLABLE PIT;Lo;0;L;;;;;N;;;;; +D556;HANGUL SYLLABLE PIP;Lo;0;L;;;;;N;;;;; +D557;HANGUL SYLLABLE PIH;Lo;0;L;;;;;N;;;;; +D558;HANGUL SYLLABLE HA;Lo;0;L;;;;;N;;;;; +D559;HANGUL SYLLABLE HAG;Lo;0;L;;;;;N;;;;; +D55A;HANGUL SYLLABLE HAGG;Lo;0;L;;;;;N;;;;; +D55B;HANGUL SYLLABLE HAGS;Lo;0;L;;;;;N;;;;; +D55C;HANGUL SYLLABLE HAN;Lo;0;L;;;;;N;;;;; +D55D;HANGUL SYLLABLE HANI;Lo;0;L;;;;;N;;;;; +D55E;HANGUL SYLLABLE HANH;Lo;0;L;;;;;N;;;;; +D55F;HANGUL SYLLABLE HAD;Lo;0;L;;;;;N;;;;; +D560;HANGUL SYLLABLE HAL;Lo;0;L;;;;;N;;;;; +D561;HANGUL SYLLABLE HALG;Lo;0;L;;;;;N;;;;; +D562;HANGUL SYLLABLE HALM;Lo;0;L;;;;;N;;;;; +D563;HANGUL SYLLABLE HALB;Lo;0;L;;;;;N;;;;; +D564;HANGUL SYLLABLE HALS;Lo;0;L;;;;;N;;;;; +D565;HANGUL SYLLABLE HALT;Lo;0;L;;;;;N;;;;; +D566;HANGUL SYLLABLE HALP;Lo;0;L;;;;;N;;;;; +D567;HANGUL SYLLABLE HALH;Lo;0;L;;;;;N;;;;; +D568;HANGUL SYLLABLE HAM;Lo;0;L;;;;;N;;;;; +D569;HANGUL SYLLABLE HAB;Lo;0;L;;;;;N;;;;; +D56A;HANGUL SYLLABLE HABS;Lo;0;L;;;;;N;;;;; +D56B;HANGUL SYLLABLE HAS;Lo;0;L;;;;;N;;;;; +D56C;HANGUL SYLLABLE HASS;Lo;0;L;;;;;N;;;;; +D56D;HANGUL SYLLABLE HANG;Lo;0;L;;;;;N;;;;; +D56E;HANGUL SYLLABLE HAJ;Lo;0;L;;;;;N;;;;; +D56F;HANGUL SYLLABLE HAC;Lo;0;L;;;;;N;;;;; +D570;HANGUL SYLLABLE HAK;Lo;0;L;;;;;N;;;;; +D571;HANGUL SYLLABLE HAT;Lo;0;L;;;;;N;;;;; +D572;HANGUL SYLLABLE HAP;Lo;0;L;;;;;N;;;;; +D573;HANGUL SYLLABLE HAH;Lo;0;L;;;;;N;;;;; +D574;HANGUL SYLLABLE HAE;Lo;0;L;;;;;N;;;;; +D575;HANGUL SYLLABLE HAEG;Lo;0;L;;;;;N;;;;; +D576;HANGUL SYLLABLE HAEGG;Lo;0;L;;;;;N;;;;; +D577;HANGUL SYLLABLE HAEGS;Lo;0;L;;;;;N;;;;; +D578;HANGUL SYLLABLE HAEN;Lo;0;L;;;;;N;;;;; +D579;HANGUL SYLLABLE HAENI;Lo;0;L;;;;;N;;;;; +D57A;HANGUL SYLLABLE HAENH;Lo;0;L;;;;;N;;;;; +D57B;HANGUL SYLLABLE HAED;Lo;0;L;;;;;N;;;;; +D57C;HANGUL SYLLABLE HAEL;Lo;0;L;;;;;N;;;;; +D57D;HANGUL SYLLABLE HAELG;Lo;0;L;;;;;N;;;;; +D57E;HANGUL SYLLABLE HAELM;Lo;0;L;;;;;N;;;;; +D57F;HANGUL SYLLABLE HAELB;Lo;0;L;;;;;N;;;;; +D580;HANGUL SYLLABLE HAELS;Lo;0;L;;;;;N;;;;; +D581;HANGUL SYLLABLE HAELT;Lo;0;L;;;;;N;;;;; +D582;HANGUL SYLLABLE HAELP;Lo;0;L;;;;;N;;;;; +D583;HANGUL SYLLABLE HAELH;Lo;0;L;;;;;N;;;;; +D584;HANGUL SYLLABLE HAEM;Lo;0;L;;;;;N;;;;; +D585;HANGUL SYLLABLE HAEB;Lo;0;L;;;;;N;;;;; +D586;HANGUL SYLLABLE HAEBS;Lo;0;L;;;;;N;;;;; +D587;HANGUL SYLLABLE HAES;Lo;0;L;;;;;N;;;;; +D588;HANGUL SYLLABLE HAESS;Lo;0;L;;;;;N;;;;; +D589;HANGUL SYLLABLE HAENG;Lo;0;L;;;;;N;;;;; +D58A;HANGUL SYLLABLE HAEJ;Lo;0;L;;;;;N;;;;; +D58B;HANGUL SYLLABLE HAEC;Lo;0;L;;;;;N;;;;; +D58C;HANGUL SYLLABLE HAEK;Lo;0;L;;;;;N;;;;; +D58D;HANGUL SYLLABLE HAET;Lo;0;L;;;;;N;;;;; +D58E;HANGUL SYLLABLE HAEP;Lo;0;L;;;;;N;;;;; +D58F;HANGUL SYLLABLE HAEH;Lo;0;L;;;;;N;;;;; +D590;HANGUL SYLLABLE HYA;Lo;0;L;;;;;N;;;;; +D591;HANGUL SYLLABLE HYAG;Lo;0;L;;;;;N;;;;; +D592;HANGUL SYLLABLE HYAGG;Lo;0;L;;;;;N;;;;; +D593;HANGUL SYLLABLE HYAGS;Lo;0;L;;;;;N;;;;; +D594;HANGUL SYLLABLE HYAN;Lo;0;L;;;;;N;;;;; +D595;HANGUL SYLLABLE HYANI;Lo;0;L;;;;;N;;;;; +D596;HANGUL SYLLABLE HYANH;Lo;0;L;;;;;N;;;;; +D597;HANGUL SYLLABLE HYAD;Lo;0;L;;;;;N;;;;; +D598;HANGUL SYLLABLE HYAL;Lo;0;L;;;;;N;;;;; +D599;HANGUL SYLLABLE HYALG;Lo;0;L;;;;;N;;;;; +D59A;HANGUL SYLLABLE HYALM;Lo;0;L;;;;;N;;;;; +D59B;HANGUL SYLLABLE HYALB;Lo;0;L;;;;;N;;;;; +D59C;HANGUL SYLLABLE HYALS;Lo;0;L;;;;;N;;;;; +D59D;HANGUL SYLLABLE HYALT;Lo;0;L;;;;;N;;;;; +D59E;HANGUL SYLLABLE HYALP;Lo;0;L;;;;;N;;;;; +D59F;HANGUL SYLLABLE HYALH;Lo;0;L;;;;;N;;;;; +D5A0;HANGUL SYLLABLE HYAM;Lo;0;L;;;;;N;;;;; +D5A1;HANGUL SYLLABLE HYAB;Lo;0;L;;;;;N;;;;; +D5A2;HANGUL SYLLABLE HYABS;Lo;0;L;;;;;N;;;;; +D5A3;HANGUL SYLLABLE HYAS;Lo;0;L;;;;;N;;;;; +D5A4;HANGUL SYLLABLE HYASS;Lo;0;L;;;;;N;;;;; +D5A5;HANGUL SYLLABLE HYANG;Lo;0;L;;;;;N;;;;; +D5A6;HANGUL SYLLABLE HYAJ;Lo;0;L;;;;;N;;;;; +D5A7;HANGUL SYLLABLE HYAC;Lo;0;L;;;;;N;;;;; +D5A8;HANGUL SYLLABLE HYAK;Lo;0;L;;;;;N;;;;; +D5A9;HANGUL SYLLABLE HYAT;Lo;0;L;;;;;N;;;;; +D5AA;HANGUL SYLLABLE HYAP;Lo;0;L;;;;;N;;;;; +D5AB;HANGUL SYLLABLE HYAH;Lo;0;L;;;;;N;;;;; +D5AC;HANGUL SYLLABLE HYAE;Lo;0;L;;;;;N;;;;; +D5AD;HANGUL SYLLABLE HYAEG;Lo;0;L;;;;;N;;;;; +D5AE;HANGUL SYLLABLE HYAEGG;Lo;0;L;;;;;N;;;;; +D5AF;HANGUL SYLLABLE HYAEGS;Lo;0;L;;;;;N;;;;; +D5B0;HANGUL SYLLABLE HYAEN;Lo;0;L;;;;;N;;;;; +D5B1;HANGUL SYLLABLE HYAENI;Lo;0;L;;;;;N;;;;; +D5B2;HANGUL SYLLABLE HYAENH;Lo;0;L;;;;;N;;;;; +D5B3;HANGUL SYLLABLE HYAED;Lo;0;L;;;;;N;;;;; +D5B4;HANGUL SYLLABLE HYAEL;Lo;0;L;;;;;N;;;;; +D5B5;HANGUL SYLLABLE HYAELG;Lo;0;L;;;;;N;;;;; +D5B6;HANGUL SYLLABLE HYAELM;Lo;0;L;;;;;N;;;;; +D5B7;HANGUL SYLLABLE HYAELB;Lo;0;L;;;;;N;;;;; +D5B8;HANGUL SYLLABLE HYAELS;Lo;0;L;;;;;N;;;;; +D5B9;HANGUL SYLLABLE HYAELT;Lo;0;L;;;;;N;;;;; +D5BA;HANGUL SYLLABLE HYAELP;Lo;0;L;;;;;N;;;;; +D5BB;HANGUL SYLLABLE HYAELH;Lo;0;L;;;;;N;;;;; +D5BC;HANGUL SYLLABLE HYAEM;Lo;0;L;;;;;N;;;;; +D5BD;HANGUL SYLLABLE HYAEB;Lo;0;L;;;;;N;;;;; +D5BE;HANGUL SYLLABLE HYAEBS;Lo;0;L;;;;;N;;;;; +D5BF;HANGUL SYLLABLE HYAES;Lo;0;L;;;;;N;;;;; +D5C0;HANGUL SYLLABLE HYAESS;Lo;0;L;;;;;N;;;;; +D5C1;HANGUL SYLLABLE HYAENG;Lo;0;L;;;;;N;;;;; +D5C2;HANGUL SYLLABLE HYAEJ;Lo;0;L;;;;;N;;;;; +D5C3;HANGUL SYLLABLE HYAEC;Lo;0;L;;;;;N;;;;; +D5C4;HANGUL SYLLABLE HYAEK;Lo;0;L;;;;;N;;;;; +D5C5;HANGUL SYLLABLE HYAET;Lo;0;L;;;;;N;;;;; +D5C6;HANGUL SYLLABLE HYAEP;Lo;0;L;;;;;N;;;;; +D5C7;HANGUL SYLLABLE HYAEH;Lo;0;L;;;;;N;;;;; +D5C8;HANGUL SYLLABLE HEO;Lo;0;L;;;;;N;;;;; +D5C9;HANGUL SYLLABLE HEOG;Lo;0;L;;;;;N;;;;; +D5CA;HANGUL SYLLABLE HEOGG;Lo;0;L;;;;;N;;;;; +D5CB;HANGUL SYLLABLE HEOGS;Lo;0;L;;;;;N;;;;; +D5CC;HANGUL SYLLABLE HEON;Lo;0;L;;;;;N;;;;; +D5CD;HANGUL SYLLABLE HEONI;Lo;0;L;;;;;N;;;;; +D5CE;HANGUL SYLLABLE HEONH;Lo;0;L;;;;;N;;;;; +D5CF;HANGUL SYLLABLE HEOD;Lo;0;L;;;;;N;;;;; +D5D0;HANGUL SYLLABLE HEOL;Lo;0;L;;;;;N;;;;; +D5D1;HANGUL SYLLABLE HEOLG;Lo;0;L;;;;;N;;;;; +D5D2;HANGUL SYLLABLE HEOLM;Lo;0;L;;;;;N;;;;; +D5D3;HANGUL SYLLABLE HEOLB;Lo;0;L;;;;;N;;;;; +D5D4;HANGUL SYLLABLE HEOLS;Lo;0;L;;;;;N;;;;; +D5D5;HANGUL SYLLABLE HEOLT;Lo;0;L;;;;;N;;;;; +D5D6;HANGUL SYLLABLE HEOLP;Lo;0;L;;;;;N;;;;; +D5D7;HANGUL SYLLABLE HEOLH;Lo;0;L;;;;;N;;;;; +D5D8;HANGUL SYLLABLE HEOM;Lo;0;L;;;;;N;;;;; +D5D9;HANGUL SYLLABLE HEOB;Lo;0;L;;;;;N;;;;; +D5DA;HANGUL SYLLABLE HEOBS;Lo;0;L;;;;;N;;;;; +D5DB;HANGUL SYLLABLE HEOS;Lo;0;L;;;;;N;;;;; +D5DC;HANGUL SYLLABLE HEOSS;Lo;0;L;;;;;N;;;;; +D5DD;HANGUL SYLLABLE HEONG;Lo;0;L;;;;;N;;;;; +D5DE;HANGUL SYLLABLE HEOJ;Lo;0;L;;;;;N;;;;; +D5DF;HANGUL SYLLABLE HEOC;Lo;0;L;;;;;N;;;;; +D5E0;HANGUL SYLLABLE HEOK;Lo;0;L;;;;;N;;;;; +D5E1;HANGUL SYLLABLE HEOT;Lo;0;L;;;;;N;;;;; +D5E2;HANGUL SYLLABLE HEOP;Lo;0;L;;;;;N;;;;; +D5E3;HANGUL SYLLABLE HEOH;Lo;0;L;;;;;N;;;;; +D5E4;HANGUL SYLLABLE HE;Lo;0;L;;;;;N;;;;; +D5E5;HANGUL SYLLABLE HEG;Lo;0;L;;;;;N;;;;; +D5E6;HANGUL SYLLABLE HEGG;Lo;0;L;;;;;N;;;;; +D5E7;HANGUL SYLLABLE HEGS;Lo;0;L;;;;;N;;;;; +D5E8;HANGUL SYLLABLE HEN;Lo;0;L;;;;;N;;;;; +D5E9;HANGUL SYLLABLE HENI;Lo;0;L;;;;;N;;;;; +D5EA;HANGUL SYLLABLE HENH;Lo;0;L;;;;;N;;;;; +D5EB;HANGUL SYLLABLE HED;Lo;0;L;;;;;N;;;;; +D5EC;HANGUL SYLLABLE HEL;Lo;0;L;;;;;N;;;;; +D5ED;HANGUL SYLLABLE HELG;Lo;0;L;;;;;N;;;;; +D5EE;HANGUL SYLLABLE HELM;Lo;0;L;;;;;N;;;;; +D5EF;HANGUL SYLLABLE HELB;Lo;0;L;;;;;N;;;;; +D5F0;HANGUL SYLLABLE HELS;Lo;0;L;;;;;N;;;;; +D5F1;HANGUL SYLLABLE HELT;Lo;0;L;;;;;N;;;;; +D5F2;HANGUL SYLLABLE HELP;Lo;0;L;;;;;N;;;;; +D5F3;HANGUL SYLLABLE HELH;Lo;0;L;;;;;N;;;;; +D5F4;HANGUL SYLLABLE HEM;Lo;0;L;;;;;N;;;;; +D5F5;HANGUL SYLLABLE HEB;Lo;0;L;;;;;N;;;;; +D5F6;HANGUL SYLLABLE HEBS;Lo;0;L;;;;;N;;;;; +D5F7;HANGUL SYLLABLE HES;Lo;0;L;;;;;N;;;;; +D5F8;HANGUL SYLLABLE HESS;Lo;0;L;;;;;N;;;;; +D5F9;HANGUL SYLLABLE HENG;Lo;0;L;;;;;N;;;;; +D5FA;HANGUL SYLLABLE HEJ;Lo;0;L;;;;;N;;;;; +D5FB;HANGUL SYLLABLE HEC;Lo;0;L;;;;;N;;;;; +D5FC;HANGUL SYLLABLE HEK;Lo;0;L;;;;;N;;;;; +D5FD;HANGUL SYLLABLE HET;Lo;0;L;;;;;N;;;;; +D5FE;HANGUL SYLLABLE HEP;Lo;0;L;;;;;N;;;;; +D5FF;HANGUL SYLLABLE HEH;Lo;0;L;;;;;N;;;;; +D600;HANGUL SYLLABLE HYEO;Lo;0;L;;;;;N;;;;; +D601;HANGUL SYLLABLE HYEOG;Lo;0;L;;;;;N;;;;; +D602;HANGUL SYLLABLE HYEOGG;Lo;0;L;;;;;N;;;;; +D603;HANGUL SYLLABLE HYEOGS;Lo;0;L;;;;;N;;;;; +D604;HANGUL SYLLABLE HYEON;Lo;0;L;;;;;N;;;;; +D605;HANGUL SYLLABLE HYEONI;Lo;0;L;;;;;N;;;;; +D606;HANGUL SYLLABLE HYEONH;Lo;0;L;;;;;N;;;;; +D607;HANGUL SYLLABLE HYEOD;Lo;0;L;;;;;N;;;;; +D608;HANGUL SYLLABLE HYEOL;Lo;0;L;;;;;N;;;;; +D609;HANGUL SYLLABLE HYEOLG;Lo;0;L;;;;;N;;;;; +D60A;HANGUL SYLLABLE HYEOLM;Lo;0;L;;;;;N;;;;; +D60B;HANGUL SYLLABLE HYEOLB;Lo;0;L;;;;;N;;;;; +D60C;HANGUL SYLLABLE HYEOLS;Lo;0;L;;;;;N;;;;; +D60D;HANGUL SYLLABLE HYEOLT;Lo;0;L;;;;;N;;;;; +D60E;HANGUL SYLLABLE HYEOLP;Lo;0;L;;;;;N;;;;; +D60F;HANGUL SYLLABLE HYEOLH;Lo;0;L;;;;;N;;;;; +D610;HANGUL SYLLABLE HYEOM;Lo;0;L;;;;;N;;;;; +D611;HANGUL SYLLABLE HYEOB;Lo;0;L;;;;;N;;;;; +D612;HANGUL SYLLABLE HYEOBS;Lo;0;L;;;;;N;;;;; +D613;HANGUL SYLLABLE HYEOS;Lo;0;L;;;;;N;;;;; +D614;HANGUL SYLLABLE HYEOSS;Lo;0;L;;;;;N;;;;; +D615;HANGUL SYLLABLE HYEONG;Lo;0;L;;;;;N;;;;; +D616;HANGUL SYLLABLE HYEOJ;Lo;0;L;;;;;N;;;;; +D617;HANGUL SYLLABLE HYEOC;Lo;0;L;;;;;N;;;;; +D618;HANGUL SYLLABLE HYEOK;Lo;0;L;;;;;N;;;;; +D619;HANGUL SYLLABLE HYEOT;Lo;0;L;;;;;N;;;;; +D61A;HANGUL SYLLABLE HYEOP;Lo;0;L;;;;;N;;;;; +D61B;HANGUL SYLLABLE HYEOH;Lo;0;L;;;;;N;;;;; +D61C;HANGUL SYLLABLE HYE;Lo;0;L;;;;;N;;;;; +D61D;HANGUL SYLLABLE HYEG;Lo;0;L;;;;;N;;;;; +D61E;HANGUL SYLLABLE HYEGG;Lo;0;L;;;;;N;;;;; +D61F;HANGUL SYLLABLE HYEGS;Lo;0;L;;;;;N;;;;; +D620;HANGUL SYLLABLE HYEN;Lo;0;L;;;;;N;;;;; +D621;HANGUL SYLLABLE HYENI;Lo;0;L;;;;;N;;;;; +D622;HANGUL SYLLABLE HYENH;Lo;0;L;;;;;N;;;;; +D623;HANGUL SYLLABLE HYED;Lo;0;L;;;;;N;;;;; +D624;HANGUL SYLLABLE HYEL;Lo;0;L;;;;;N;;;;; +D625;HANGUL SYLLABLE HYELG;Lo;0;L;;;;;N;;;;; +D626;HANGUL SYLLABLE HYELM;Lo;0;L;;;;;N;;;;; +D627;HANGUL SYLLABLE HYELB;Lo;0;L;;;;;N;;;;; +D628;HANGUL SYLLABLE HYELS;Lo;0;L;;;;;N;;;;; +D629;HANGUL SYLLABLE HYELT;Lo;0;L;;;;;N;;;;; +D62A;HANGUL SYLLABLE HYELP;Lo;0;L;;;;;N;;;;; +D62B;HANGUL SYLLABLE HYELH;Lo;0;L;;;;;N;;;;; +D62C;HANGUL SYLLABLE HYEM;Lo;0;L;;;;;N;;;;; +D62D;HANGUL SYLLABLE HYEB;Lo;0;L;;;;;N;;;;; +D62E;HANGUL SYLLABLE HYEBS;Lo;0;L;;;;;N;;;;; +D62F;HANGUL SYLLABLE HYES;Lo;0;L;;;;;N;;;;; +D630;HANGUL SYLLABLE HYESS;Lo;0;L;;;;;N;;;;; +D631;HANGUL SYLLABLE HYENG;Lo;0;L;;;;;N;;;;; +D632;HANGUL SYLLABLE HYEJ;Lo;0;L;;;;;N;;;;; +D633;HANGUL SYLLABLE HYEC;Lo;0;L;;;;;N;;;;; +D634;HANGUL SYLLABLE HYEK;Lo;0;L;;;;;N;;;;; +D635;HANGUL SYLLABLE HYET;Lo;0;L;;;;;N;;;;; +D636;HANGUL SYLLABLE HYEP;Lo;0;L;;;;;N;;;;; +D637;HANGUL SYLLABLE HYEH;Lo;0;L;;;;;N;;;;; +D638;HANGUL SYLLABLE HO;Lo;0;L;;;;;N;;;;; +D639;HANGUL SYLLABLE HOG;Lo;0;L;;;;;N;;;;; +D63A;HANGUL SYLLABLE HOGG;Lo;0;L;;;;;N;;;;; +D63B;HANGUL SYLLABLE HOGS;Lo;0;L;;;;;N;;;;; +D63C;HANGUL SYLLABLE HON;Lo;0;L;;;;;N;;;;; +D63D;HANGUL SYLLABLE HONI;Lo;0;L;;;;;N;;;;; +D63E;HANGUL SYLLABLE HONH;Lo;0;L;;;;;N;;;;; +D63F;HANGUL SYLLABLE HOD;Lo;0;L;;;;;N;;;;; +D640;HANGUL SYLLABLE HOL;Lo;0;L;;;;;N;;;;; +D641;HANGUL SYLLABLE HOLG;Lo;0;L;;;;;N;;;;; +D642;HANGUL SYLLABLE HOLM;Lo;0;L;;;;;N;;;;; +D643;HANGUL SYLLABLE HOLB;Lo;0;L;;;;;N;;;;; +D644;HANGUL SYLLABLE HOLS;Lo;0;L;;;;;N;;;;; +D645;HANGUL SYLLABLE HOLT;Lo;0;L;;;;;N;;;;; +D646;HANGUL SYLLABLE HOLP;Lo;0;L;;;;;N;;;;; +D647;HANGUL SYLLABLE HOLH;Lo;0;L;;;;;N;;;;; +D648;HANGUL SYLLABLE HOM;Lo;0;L;;;;;N;;;;; +D649;HANGUL SYLLABLE HOB;Lo;0;L;;;;;N;;;;; +D64A;HANGUL SYLLABLE HOBS;Lo;0;L;;;;;N;;;;; +D64B;HANGUL SYLLABLE HOS;Lo;0;L;;;;;N;;;;; +D64C;HANGUL SYLLABLE HOSS;Lo;0;L;;;;;N;;;;; +D64D;HANGUL SYLLABLE HONG;Lo;0;L;;;;;N;;;;; +D64E;HANGUL SYLLABLE HOJ;Lo;0;L;;;;;N;;;;; +D64F;HANGUL SYLLABLE HOC;Lo;0;L;;;;;N;;;;; +D650;HANGUL SYLLABLE HOK;Lo;0;L;;;;;N;;;;; +D651;HANGUL SYLLABLE HOT;Lo;0;L;;;;;N;;;;; +D652;HANGUL SYLLABLE HOP;Lo;0;L;;;;;N;;;;; +D653;HANGUL SYLLABLE HOH;Lo;0;L;;;;;N;;;;; +D654;HANGUL SYLLABLE HWA;Lo;0;L;;;;;N;;;;; +D655;HANGUL SYLLABLE HWAG;Lo;0;L;;;;;N;;;;; +D656;HANGUL SYLLABLE HWAGG;Lo;0;L;;;;;N;;;;; +D657;HANGUL SYLLABLE HWAGS;Lo;0;L;;;;;N;;;;; +D658;HANGUL SYLLABLE HWAN;Lo;0;L;;;;;N;;;;; +D659;HANGUL SYLLABLE HWANI;Lo;0;L;;;;;N;;;;; +D65A;HANGUL SYLLABLE HWANH;Lo;0;L;;;;;N;;;;; +D65B;HANGUL SYLLABLE HWAD;Lo;0;L;;;;;N;;;;; +D65C;HANGUL SYLLABLE HWAL;Lo;0;L;;;;;N;;;;; +D65D;HANGUL SYLLABLE HWALG;Lo;0;L;;;;;N;;;;; +D65E;HANGUL SYLLABLE HWALM;Lo;0;L;;;;;N;;;;; +D65F;HANGUL SYLLABLE HWALB;Lo;0;L;;;;;N;;;;; +D660;HANGUL SYLLABLE HWALS;Lo;0;L;;;;;N;;;;; +D661;HANGUL SYLLABLE HWALT;Lo;0;L;;;;;N;;;;; +D662;HANGUL SYLLABLE HWALP;Lo;0;L;;;;;N;;;;; +D663;HANGUL SYLLABLE HWALH;Lo;0;L;;;;;N;;;;; +D664;HANGUL SYLLABLE HWAM;Lo;0;L;;;;;N;;;;; +D665;HANGUL SYLLABLE HWAB;Lo;0;L;;;;;N;;;;; +D666;HANGUL SYLLABLE HWABS;Lo;0;L;;;;;N;;;;; +D667;HANGUL SYLLABLE HWAS;Lo;0;L;;;;;N;;;;; +D668;HANGUL SYLLABLE HWASS;Lo;0;L;;;;;N;;;;; +D669;HANGUL SYLLABLE HWANG;Lo;0;L;;;;;N;;;;; +D66A;HANGUL SYLLABLE HWAJ;Lo;0;L;;;;;N;;;;; +D66B;HANGUL SYLLABLE HWAC;Lo;0;L;;;;;N;;;;; +D66C;HANGUL SYLLABLE HWAK;Lo;0;L;;;;;N;;;;; +D66D;HANGUL SYLLABLE HWAT;Lo;0;L;;;;;N;;;;; +D66E;HANGUL SYLLABLE HWAP;Lo;0;L;;;;;N;;;;; +D66F;HANGUL SYLLABLE HWAH;Lo;0;L;;;;;N;;;;; +D670;HANGUL SYLLABLE HWAE;Lo;0;L;;;;;N;;;;; +D671;HANGUL SYLLABLE HWAEG;Lo;0;L;;;;;N;;;;; +D672;HANGUL SYLLABLE HWAEGG;Lo;0;L;;;;;N;;;;; +D673;HANGUL SYLLABLE HWAEGS;Lo;0;L;;;;;N;;;;; +D674;HANGUL SYLLABLE HWAEN;Lo;0;L;;;;;N;;;;; +D675;HANGUL SYLLABLE HWAENI;Lo;0;L;;;;;N;;;;; +D676;HANGUL SYLLABLE HWAENH;Lo;0;L;;;;;N;;;;; +D677;HANGUL SYLLABLE HWAED;Lo;0;L;;;;;N;;;;; +D678;HANGUL SYLLABLE HWAEL;Lo;0;L;;;;;N;;;;; +D679;HANGUL SYLLABLE HWAELG;Lo;0;L;;;;;N;;;;; +D67A;HANGUL SYLLABLE HWAELM;Lo;0;L;;;;;N;;;;; +D67B;HANGUL SYLLABLE HWAELB;Lo;0;L;;;;;N;;;;; +D67C;HANGUL SYLLABLE HWAELS;Lo;0;L;;;;;N;;;;; +D67D;HANGUL SYLLABLE HWAELT;Lo;0;L;;;;;N;;;;; +D67E;HANGUL SYLLABLE HWAELP;Lo;0;L;;;;;N;;;;; +D67F;HANGUL SYLLABLE HWAELH;Lo;0;L;;;;;N;;;;; +D680;HANGUL SYLLABLE HWAEM;Lo;0;L;;;;;N;;;;; +D681;HANGUL SYLLABLE HWAEB;Lo;0;L;;;;;N;;;;; +D682;HANGUL SYLLABLE HWAEBS;Lo;0;L;;;;;N;;;;; +D683;HANGUL SYLLABLE HWAES;Lo;0;L;;;;;N;;;;; +D684;HANGUL SYLLABLE HWAESS;Lo;0;L;;;;;N;;;;; +D685;HANGUL SYLLABLE HWAENG;Lo;0;L;;;;;N;;;;; +D686;HANGUL SYLLABLE HWAEJ;Lo;0;L;;;;;N;;;;; +D687;HANGUL SYLLABLE HWAEC;Lo;0;L;;;;;N;;;;; +D688;HANGUL SYLLABLE HWAEK;Lo;0;L;;;;;N;;;;; +D689;HANGUL SYLLABLE HWAET;Lo;0;L;;;;;N;;;;; +D68A;HANGUL SYLLABLE HWAEP;Lo;0;L;;;;;N;;;;; +D68B;HANGUL SYLLABLE HWAEH;Lo;0;L;;;;;N;;;;; +D68C;HANGUL SYLLABLE HOE;Lo;0;L;;;;;N;;;;; +D68D;HANGUL SYLLABLE HOEG;Lo;0;L;;;;;N;;;;; +D68E;HANGUL SYLLABLE HOEGG;Lo;0;L;;;;;N;;;;; +D68F;HANGUL SYLLABLE HOEGS;Lo;0;L;;;;;N;;;;; +D690;HANGUL SYLLABLE HOEN;Lo;0;L;;;;;N;;;;; +D691;HANGUL SYLLABLE HOENI;Lo;0;L;;;;;N;;;;; +D692;HANGUL SYLLABLE HOENH;Lo;0;L;;;;;N;;;;; +D693;HANGUL SYLLABLE HOED;Lo;0;L;;;;;N;;;;; +D694;HANGUL SYLLABLE HOEL;Lo;0;L;;;;;N;;;;; +D695;HANGUL SYLLABLE HOELG;Lo;0;L;;;;;N;;;;; +D696;HANGUL SYLLABLE HOELM;Lo;0;L;;;;;N;;;;; +D697;HANGUL SYLLABLE HOELB;Lo;0;L;;;;;N;;;;; +D698;HANGUL SYLLABLE HOELS;Lo;0;L;;;;;N;;;;; +D699;HANGUL SYLLABLE HOELT;Lo;0;L;;;;;N;;;;; +D69A;HANGUL SYLLABLE HOELP;Lo;0;L;;;;;N;;;;; +D69B;HANGUL SYLLABLE HOELH;Lo;0;L;;;;;N;;;;; +D69C;HANGUL SYLLABLE HOEM;Lo;0;L;;;;;N;;;;; +D69D;HANGUL SYLLABLE HOEB;Lo;0;L;;;;;N;;;;; +D69E;HANGUL SYLLABLE HOEBS;Lo;0;L;;;;;N;;;;; +D69F;HANGUL SYLLABLE HOES;Lo;0;L;;;;;N;;;;; +D6A0;HANGUL SYLLABLE HOESS;Lo;0;L;;;;;N;;;;; +D6A1;HANGUL SYLLABLE HOENG;Lo;0;L;;;;;N;;;;; +D6A2;HANGUL SYLLABLE HOEJ;Lo;0;L;;;;;N;;;;; +D6A3;HANGUL SYLLABLE HOEC;Lo;0;L;;;;;N;;;;; +D6A4;HANGUL SYLLABLE HOEK;Lo;0;L;;;;;N;;;;; +D6A5;HANGUL SYLLABLE HOET;Lo;0;L;;;;;N;;;;; +D6A6;HANGUL SYLLABLE HOEP;Lo;0;L;;;;;N;;;;; +D6A7;HANGUL SYLLABLE HOEH;Lo;0;L;;;;;N;;;;; +D6A8;HANGUL SYLLABLE HYO;Lo;0;L;;;;;N;;;;; +D6A9;HANGUL SYLLABLE HYOG;Lo;0;L;;;;;N;;;;; +D6AA;HANGUL SYLLABLE HYOGG;Lo;0;L;;;;;N;;;;; +D6AB;HANGUL SYLLABLE HYOGS;Lo;0;L;;;;;N;;;;; +D6AC;HANGUL SYLLABLE HYON;Lo;0;L;;;;;N;;;;; +D6AD;HANGUL SYLLABLE HYONI;Lo;0;L;;;;;N;;;;; +D6AE;HANGUL SYLLABLE HYONH;Lo;0;L;;;;;N;;;;; +D6AF;HANGUL SYLLABLE HYOD;Lo;0;L;;;;;N;;;;; +D6B0;HANGUL SYLLABLE HYOL;Lo;0;L;;;;;N;;;;; +D6B1;HANGUL SYLLABLE HYOLG;Lo;0;L;;;;;N;;;;; +D6B2;HANGUL SYLLABLE HYOLM;Lo;0;L;;;;;N;;;;; +D6B3;HANGUL SYLLABLE HYOLB;Lo;0;L;;;;;N;;;;; +D6B4;HANGUL SYLLABLE HYOLS;Lo;0;L;;;;;N;;;;; +D6B5;HANGUL SYLLABLE HYOLT;Lo;0;L;;;;;N;;;;; +D6B6;HANGUL SYLLABLE HYOLP;Lo;0;L;;;;;N;;;;; +D6B7;HANGUL SYLLABLE HYOLH;Lo;0;L;;;;;N;;;;; +D6B8;HANGUL SYLLABLE HYOM;Lo;0;L;;;;;N;;;;; +D6B9;HANGUL SYLLABLE HYOB;Lo;0;L;;;;;N;;;;; +D6BA;HANGUL SYLLABLE HYOBS;Lo;0;L;;;;;N;;;;; +D6BB;HANGUL SYLLABLE HYOS;Lo;0;L;;;;;N;;;;; +D6BC;HANGUL SYLLABLE HYOSS;Lo;0;L;;;;;N;;;;; +D6BD;HANGUL SYLLABLE HYONG;Lo;0;L;;;;;N;;;;; +D6BE;HANGUL SYLLABLE HYOJ;Lo;0;L;;;;;N;;;;; +D6BF;HANGUL SYLLABLE HYOC;Lo;0;L;;;;;N;;;;; +D6C0;HANGUL SYLLABLE HYOK;Lo;0;L;;;;;N;;;;; +D6C1;HANGUL SYLLABLE HYOT;Lo;0;L;;;;;N;;;;; +D6C2;HANGUL SYLLABLE HYOP;Lo;0;L;;;;;N;;;;; +D6C3;HANGUL SYLLABLE HYOH;Lo;0;L;;;;;N;;;;; +D6C4;HANGUL SYLLABLE HU;Lo;0;L;;;;;N;;;;; +D6C5;HANGUL SYLLABLE HUG;Lo;0;L;;;;;N;;;;; +D6C6;HANGUL SYLLABLE HUGG;Lo;0;L;;;;;N;;;;; +D6C7;HANGUL SYLLABLE HUGS;Lo;0;L;;;;;N;;;;; +D6C8;HANGUL SYLLABLE HUN;Lo;0;L;;;;;N;;;;; +D6C9;HANGUL SYLLABLE HUNI;Lo;0;L;;;;;N;;;;; +D6CA;HANGUL SYLLABLE HUNH;Lo;0;L;;;;;N;;;;; +D6CB;HANGUL SYLLABLE HUD;Lo;0;L;;;;;N;;;;; +D6CC;HANGUL SYLLABLE HUL;Lo;0;L;;;;;N;;;;; +D6CD;HANGUL SYLLABLE HULG;Lo;0;L;;;;;N;;;;; +D6CE;HANGUL SYLLABLE HULM;Lo;0;L;;;;;N;;;;; +D6CF;HANGUL SYLLABLE HULB;Lo;0;L;;;;;N;;;;; +D6D0;HANGUL SYLLABLE HULS;Lo;0;L;;;;;N;;;;; +D6D1;HANGUL SYLLABLE HULT;Lo;0;L;;;;;N;;;;; +D6D2;HANGUL SYLLABLE HULP;Lo;0;L;;;;;N;;;;; +D6D3;HANGUL SYLLABLE HULH;Lo;0;L;;;;;N;;;;; +D6D4;HANGUL SYLLABLE HUM;Lo;0;L;;;;;N;;;;; +D6D5;HANGUL SYLLABLE HUB;Lo;0;L;;;;;N;;;;; +D6D6;HANGUL SYLLABLE HUBS;Lo;0;L;;;;;N;;;;; +D6D7;HANGUL SYLLABLE HUS;Lo;0;L;;;;;N;;;;; +D6D8;HANGUL SYLLABLE HUSS;Lo;0;L;;;;;N;;;;; +D6D9;HANGUL SYLLABLE HUNG;Lo;0;L;;;;;N;;;;; +D6DA;HANGUL SYLLABLE HUJ;Lo;0;L;;;;;N;;;;; +D6DB;HANGUL SYLLABLE HUC;Lo;0;L;;;;;N;;;;; +D6DC;HANGUL SYLLABLE HUK;Lo;0;L;;;;;N;;;;; +D6DD;HANGUL SYLLABLE HUT;Lo;0;L;;;;;N;;;;; +D6DE;HANGUL SYLLABLE HUP;Lo;0;L;;;;;N;;;;; +D6DF;HANGUL SYLLABLE HUH;Lo;0;L;;;;;N;;;;; +D6E0;HANGUL SYLLABLE HWEO;Lo;0;L;;;;;N;;;;; +D6E1;HANGUL SYLLABLE HWEOG;Lo;0;L;;;;;N;;;;; +D6E2;HANGUL SYLLABLE HWEOGG;Lo;0;L;;;;;N;;;;; +D6E3;HANGUL SYLLABLE HWEOGS;Lo;0;L;;;;;N;;;;; +D6E4;HANGUL SYLLABLE HWEON;Lo;0;L;;;;;N;;;;; +D6E5;HANGUL SYLLABLE HWEONI;Lo;0;L;;;;;N;;;;; +D6E6;HANGUL SYLLABLE HWEONH;Lo;0;L;;;;;N;;;;; +D6E7;HANGUL SYLLABLE HWEOD;Lo;0;L;;;;;N;;;;; +D6E8;HANGUL SYLLABLE HWEOL;Lo;0;L;;;;;N;;;;; +D6E9;HANGUL SYLLABLE HWEOLG;Lo;0;L;;;;;N;;;;; +D6EA;HANGUL SYLLABLE HWEOLM;Lo;0;L;;;;;N;;;;; +D6EB;HANGUL SYLLABLE HWEOLB;Lo;0;L;;;;;N;;;;; +D6EC;HANGUL SYLLABLE HWEOLS;Lo;0;L;;;;;N;;;;; +D6ED;HANGUL SYLLABLE HWEOLT;Lo;0;L;;;;;N;;;;; +D6EE;HANGUL SYLLABLE HWEOLP;Lo;0;L;;;;;N;;;;; +D6EF;HANGUL SYLLABLE HWEOLH;Lo;0;L;;;;;N;;;;; +D6F0;HANGUL SYLLABLE HWEOM;Lo;0;L;;;;;N;;;;; +D6F1;HANGUL SYLLABLE HWEOB;Lo;0;L;;;;;N;;;;; +D6F2;HANGUL SYLLABLE HWEOBS;Lo;0;L;;;;;N;;;;; +D6F3;HANGUL SYLLABLE HWEOS;Lo;0;L;;;;;N;;;;; +D6F4;HANGUL SYLLABLE HWEOSS;Lo;0;L;;;;;N;;;;; +D6F5;HANGUL SYLLABLE HWEONG;Lo;0;L;;;;;N;;;;; +D6F6;HANGUL SYLLABLE HWEOJ;Lo;0;L;;;;;N;;;;; +D6F7;HANGUL SYLLABLE HWEOC;Lo;0;L;;;;;N;;;;; +D6F8;HANGUL SYLLABLE HWEOK;Lo;0;L;;;;;N;;;;; +D6F9;HANGUL SYLLABLE HWEOT;Lo;0;L;;;;;N;;;;; +D6FA;HANGUL SYLLABLE HWEOP;Lo;0;L;;;;;N;;;;; +D6FB;HANGUL SYLLABLE HWEOH;Lo;0;L;;;;;N;;;;; +D6FC;HANGUL SYLLABLE HWE;Lo;0;L;;;;;N;;;;; +D6FD;HANGUL SYLLABLE HWEG;Lo;0;L;;;;;N;;;;; +D6FE;HANGUL SYLLABLE HWEGG;Lo;0;L;;;;;N;;;;; +D6FF;HANGUL SYLLABLE HWEGS;Lo;0;L;;;;;N;;;;; +D700;HANGUL SYLLABLE HWEN;Lo;0;L;;;;;N;;;;; +D701;HANGUL SYLLABLE HWENI;Lo;0;L;;;;;N;;;;; +D702;HANGUL SYLLABLE HWENH;Lo;0;L;;;;;N;;;;; +D703;HANGUL SYLLABLE HWED;Lo;0;L;;;;;N;;;;; +D704;HANGUL SYLLABLE HWEL;Lo;0;L;;;;;N;;;;; +D705;HANGUL SYLLABLE HWELG;Lo;0;L;;;;;N;;;;; +D706;HANGUL SYLLABLE HWELM;Lo;0;L;;;;;N;;;;; +D707;HANGUL SYLLABLE HWELB;Lo;0;L;;;;;N;;;;; +D708;HANGUL SYLLABLE HWELS;Lo;0;L;;;;;N;;;;; +D709;HANGUL SYLLABLE HWELT;Lo;0;L;;;;;N;;;;; +D70A;HANGUL SYLLABLE HWELP;Lo;0;L;;;;;N;;;;; +D70B;HANGUL SYLLABLE HWELH;Lo;0;L;;;;;N;;;;; +D70C;HANGUL SYLLABLE HWEM;Lo;0;L;;;;;N;;;;; +D70D;HANGUL SYLLABLE HWEB;Lo;0;L;;;;;N;;;;; +D70E;HANGUL SYLLABLE HWEBS;Lo;0;L;;;;;N;;;;; +D70F;HANGUL SYLLABLE HWES;Lo;0;L;;;;;N;;;;; +D710;HANGUL SYLLABLE HWESS;Lo;0;L;;;;;N;;;;; +D711;HANGUL SYLLABLE HWENG;Lo;0;L;;;;;N;;;;; +D712;HANGUL SYLLABLE HWEJ;Lo;0;L;;;;;N;;;;; +D713;HANGUL SYLLABLE HWEC;Lo;0;L;;;;;N;;;;; +D714;HANGUL SYLLABLE HWEK;Lo;0;L;;;;;N;;;;; +D715;HANGUL SYLLABLE HWET;Lo;0;L;;;;;N;;;;; +D716;HANGUL SYLLABLE HWEP;Lo;0;L;;;;;N;;;;; +D717;HANGUL SYLLABLE HWEH;Lo;0;L;;;;;N;;;;; +D718;HANGUL SYLLABLE HWI;Lo;0;L;;;;;N;;;;; +D719;HANGUL SYLLABLE HWIG;Lo;0;L;;;;;N;;;;; +D71A;HANGUL SYLLABLE HWIGG;Lo;0;L;;;;;N;;;;; +D71B;HANGUL SYLLABLE HWIGS;Lo;0;L;;;;;N;;;;; +D71C;HANGUL SYLLABLE HWIN;Lo;0;L;;;;;N;;;;; +D71D;HANGUL SYLLABLE HWINI;Lo;0;L;;;;;N;;;;; +D71E;HANGUL SYLLABLE HWINH;Lo;0;L;;;;;N;;;;; +D71F;HANGUL SYLLABLE HWID;Lo;0;L;;;;;N;;;;; +D720;HANGUL SYLLABLE HWIL;Lo;0;L;;;;;N;;;;; +D721;HANGUL SYLLABLE HWILG;Lo;0;L;;;;;N;;;;; +D722;HANGUL SYLLABLE HWILM;Lo;0;L;;;;;N;;;;; +D723;HANGUL SYLLABLE HWILB;Lo;0;L;;;;;N;;;;; +D724;HANGUL SYLLABLE HWILS;Lo;0;L;;;;;N;;;;; +D725;HANGUL SYLLABLE HWILT;Lo;0;L;;;;;N;;;;; +D726;HANGUL SYLLABLE HWILP;Lo;0;L;;;;;N;;;;; +D727;HANGUL SYLLABLE HWILH;Lo;0;L;;;;;N;;;;; +D728;HANGUL SYLLABLE HWIM;Lo;0;L;;;;;N;;;;; +D729;HANGUL SYLLABLE HWIB;Lo;0;L;;;;;N;;;;; +D72A;HANGUL SYLLABLE HWIBS;Lo;0;L;;;;;N;;;;; +D72B;HANGUL SYLLABLE HWIS;Lo;0;L;;;;;N;;;;; +D72C;HANGUL SYLLABLE HWISS;Lo;0;L;;;;;N;;;;; +D72D;HANGUL SYLLABLE HWING;Lo;0;L;;;;;N;;;;; +D72E;HANGUL SYLLABLE HWIJ;Lo;0;L;;;;;N;;;;; +D72F;HANGUL SYLLABLE HWIC;Lo;0;L;;;;;N;;;;; +D730;HANGUL SYLLABLE HWIK;Lo;0;L;;;;;N;;;;; +D731;HANGUL SYLLABLE HWIT;Lo;0;L;;;;;N;;;;; +D732;HANGUL SYLLABLE HWIP;Lo;0;L;;;;;N;;;;; +D733;HANGUL SYLLABLE HWIH;Lo;0;L;;;;;N;;;;; +D734;HANGUL SYLLABLE HYU;Lo;0;L;;;;;N;;;;; +D735;HANGUL SYLLABLE HYUG;Lo;0;L;;;;;N;;;;; +D736;HANGUL SYLLABLE HYUGG;Lo;0;L;;;;;N;;;;; +D737;HANGUL SYLLABLE HYUGS;Lo;0;L;;;;;N;;;;; +D738;HANGUL SYLLABLE HYUN;Lo;0;L;;;;;N;;;;; +D739;HANGUL SYLLABLE HYUNI;Lo;0;L;;;;;N;;;;; +D73A;HANGUL SYLLABLE HYUNH;Lo;0;L;;;;;N;;;;; +D73B;HANGUL SYLLABLE HYUD;Lo;0;L;;;;;N;;;;; +D73C;HANGUL SYLLABLE HYUL;Lo;0;L;;;;;N;;;;; +D73D;HANGUL SYLLABLE HYULG;Lo;0;L;;;;;N;;;;; +D73E;HANGUL SYLLABLE HYULM;Lo;0;L;;;;;N;;;;; +D73F;HANGUL SYLLABLE HYULB;Lo;0;L;;;;;N;;;;; +D740;HANGUL SYLLABLE HYULS;Lo;0;L;;;;;N;;;;; +D741;HANGUL SYLLABLE HYULT;Lo;0;L;;;;;N;;;;; +D742;HANGUL SYLLABLE HYULP;Lo;0;L;;;;;N;;;;; +D743;HANGUL SYLLABLE HYULH;Lo;0;L;;;;;N;;;;; +D744;HANGUL SYLLABLE HYUM;Lo;0;L;;;;;N;;;;; +D745;HANGUL SYLLABLE HYUB;Lo;0;L;;;;;N;;;;; +D746;HANGUL SYLLABLE HYUBS;Lo;0;L;;;;;N;;;;; +D747;HANGUL SYLLABLE HYUS;Lo;0;L;;;;;N;;;;; +D748;HANGUL SYLLABLE HYUSS;Lo;0;L;;;;;N;;;;; +D749;HANGUL SYLLABLE HYUNG;Lo;0;L;;;;;N;;;;; +D74A;HANGUL SYLLABLE HYUJ;Lo;0;L;;;;;N;;;;; +D74B;HANGUL SYLLABLE HYUC;Lo;0;L;;;;;N;;;;; +D74C;HANGUL SYLLABLE HYUK;Lo;0;L;;;;;N;;;;; +D74D;HANGUL SYLLABLE HYUT;Lo;0;L;;;;;N;;;;; +D74E;HANGUL SYLLABLE HYUP;Lo;0;L;;;;;N;;;;; +D74F;HANGUL SYLLABLE HYUH;Lo;0;L;;;;;N;;;;; +D750;HANGUL SYLLABLE HEU;Lo;0;L;;;;;N;;;;; +D751;HANGUL SYLLABLE HEUG;Lo;0;L;;;;;N;;;;; +D752;HANGUL SYLLABLE HEUGG;Lo;0;L;;;;;N;;;;; +D753;HANGUL SYLLABLE HEUGS;Lo;0;L;;;;;N;;;;; +D754;HANGUL SYLLABLE HEUN;Lo;0;L;;;;;N;;;;; +D755;HANGUL SYLLABLE HEUNI;Lo;0;L;;;;;N;;;;; +D756;HANGUL SYLLABLE HEUNH;Lo;0;L;;;;;N;;;;; +D757;HANGUL SYLLABLE HEUD;Lo;0;L;;;;;N;;;;; +D758;HANGUL SYLLABLE HEUL;Lo;0;L;;;;;N;;;;; +D759;HANGUL SYLLABLE HEULG;Lo;0;L;;;;;N;;;;; +D75A;HANGUL SYLLABLE HEULM;Lo;0;L;;;;;N;;;;; +D75B;HANGUL SYLLABLE HEULB;Lo;0;L;;;;;N;;;;; +D75C;HANGUL SYLLABLE HEULS;Lo;0;L;;;;;N;;;;; +D75D;HANGUL SYLLABLE HEULT;Lo;0;L;;;;;N;;;;; +D75E;HANGUL SYLLABLE HEULP;Lo;0;L;;;;;N;;;;; +D75F;HANGUL SYLLABLE HEULH;Lo;0;L;;;;;N;;;;; +D760;HANGUL SYLLABLE HEUM;Lo;0;L;;;;;N;;;;; +D761;HANGUL SYLLABLE HEUB;Lo;0;L;;;;;N;;;;; +D762;HANGUL SYLLABLE HEUBS;Lo;0;L;;;;;N;;;;; +D763;HANGUL SYLLABLE HEUS;Lo;0;L;;;;;N;;;;; +D764;HANGUL SYLLABLE HEUSS;Lo;0;L;;;;;N;;;;; +D765;HANGUL SYLLABLE HEUNG;Lo;0;L;;;;;N;;;;; +D766;HANGUL SYLLABLE HEUJ;Lo;0;L;;;;;N;;;;; +D767;HANGUL SYLLABLE HEUC;Lo;0;L;;;;;N;;;;; +D768;HANGUL SYLLABLE HEUK;Lo;0;L;;;;;N;;;;; +D769;HANGUL SYLLABLE HEUT;Lo;0;L;;;;;N;;;;; +D76A;HANGUL SYLLABLE HEUP;Lo;0;L;;;;;N;;;;; +D76B;HANGUL SYLLABLE HEUH;Lo;0;L;;;;;N;;;;; +D76C;HANGUL SYLLABLE HYI;Lo;0;L;;;;;N;;;;; +D76D;HANGUL SYLLABLE HYIG;Lo;0;L;;;;;N;;;;; +D76E;HANGUL SYLLABLE HYIGG;Lo;0;L;;;;;N;;;;; +D76F;HANGUL SYLLABLE HYIGS;Lo;0;L;;;;;N;;;;; +D770;HANGUL SYLLABLE HYIN;Lo;0;L;;;;;N;;;;; +D771;HANGUL SYLLABLE HYINI;Lo;0;L;;;;;N;;;;; +D772;HANGUL SYLLABLE HYINH;Lo;0;L;;;;;N;;;;; +D773;HANGUL SYLLABLE HYID;Lo;0;L;;;;;N;;;;; +D774;HANGUL SYLLABLE HYIL;Lo;0;L;;;;;N;;;;; +D775;HANGUL SYLLABLE HYILG;Lo;0;L;;;;;N;;;;; +D776;HANGUL SYLLABLE HYILM;Lo;0;L;;;;;N;;;;; +D777;HANGUL SYLLABLE HYILB;Lo;0;L;;;;;N;;;;; +D778;HANGUL SYLLABLE HYILS;Lo;0;L;;;;;N;;;;; +D779;HANGUL SYLLABLE HYILT;Lo;0;L;;;;;N;;;;; +D77A;HANGUL SYLLABLE HYILP;Lo;0;L;;;;;N;;;;; +D77B;HANGUL SYLLABLE HYILH;Lo;0;L;;;;;N;;;;; +D77C;HANGUL SYLLABLE HYIM;Lo;0;L;;;;;N;;;;; +D77D;HANGUL SYLLABLE HYIB;Lo;0;L;;;;;N;;;;; +D77E;HANGUL SYLLABLE HYIBS;Lo;0;L;;;;;N;;;;; +D77F;HANGUL SYLLABLE HYIS;Lo;0;L;;;;;N;;;;; +D780;HANGUL SYLLABLE HYISS;Lo;0;L;;;;;N;;;;; +D781;HANGUL SYLLABLE HYING;Lo;0;L;;;;;N;;;;; +D782;HANGUL SYLLABLE HYIJ;Lo;0;L;;;;;N;;;;; +D783;HANGUL SYLLABLE HYIC;Lo;0;L;;;;;N;;;;; +D784;HANGUL SYLLABLE HYIK;Lo;0;L;;;;;N;;;;; +D785;HANGUL SYLLABLE HYIT;Lo;0;L;;;;;N;;;;; +D786;HANGUL SYLLABLE HYIP;Lo;0;L;;;;;N;;;;; +D787;HANGUL SYLLABLE HYIH;Lo;0;L;;;;;N;;;;; +D788;HANGUL SYLLABLE HI;Lo;0;L;;;;;N;;;;; +D789;HANGUL SYLLABLE HIG;Lo;0;L;;;;;N;;;;; +D78A;HANGUL SYLLABLE HIGG;Lo;0;L;;;;;N;;;;; +D78B;HANGUL SYLLABLE HIGS;Lo;0;L;;;;;N;;;;; +D78C;HANGUL SYLLABLE HIN;Lo;0;L;;;;;N;;;;; +D78D;HANGUL SYLLABLE HINI;Lo;0;L;;;;;N;;;;; +D78E;HANGUL SYLLABLE HINH;Lo;0;L;;;;;N;;;;; +D78F;HANGUL SYLLABLE HID;Lo;0;L;;;;;N;;;;; +D790;HANGUL SYLLABLE HIL;Lo;0;L;;;;;N;;;;; +D791;HANGUL SYLLABLE HILG;Lo;0;L;;;;;N;;;;; +D792;HANGUL SYLLABLE HILM;Lo;0;L;;;;;N;;;;; +D793;HANGUL SYLLABLE HILB;Lo;0;L;;;;;N;;;;; +D794;HANGUL SYLLABLE HILS;Lo;0;L;;;;;N;;;;; +D795;HANGUL SYLLABLE HILT;Lo;0;L;;;;;N;;;;; +D796;HANGUL SYLLABLE HILP;Lo;0;L;;;;;N;;;;; +D797;HANGUL SYLLABLE HILH;Lo;0;L;;;;;N;;;;; +D798;HANGUL SYLLABLE HIM;Lo;0;L;;;;;N;;;;; +D799;HANGUL SYLLABLE HIB;Lo;0;L;;;;;N;;;;; +D79A;HANGUL SYLLABLE HIBS;Lo;0;L;;;;;N;;;;; +D79B;HANGUL SYLLABLE HIS;Lo;0;L;;;;;N;;;;; +D79C;HANGUL SYLLABLE HISS;Lo;0;L;;;;;N;;;;; +D79D;HANGUL SYLLABLE HING;Lo;0;L;;;;;N;;;;; +D79E;HANGUL SYLLABLE HIJ;Lo;0;L;;;;;N;;;;; +D79F;HANGUL SYLLABLE HIC;Lo;0;L;;;;;N;;;;; +D7A0;HANGUL SYLLABLE HIK;Lo;0;L;;;;;N;;;;; +D7A1;HANGUL SYLLABLE HIT;Lo;0;L;;;;;N;;;;; +D7A2;HANGUL SYLLABLE HIP;Lo;0;L;;;;;N;;;;; +D7A3;HANGUL SYLLABLE HIH;Lo;0;L;;;;;N;;;;; +F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;; +F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;; +F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;; +F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;; +F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;; +F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;; +F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;; +F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;; +F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;; +F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;; +F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;; +F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;; +F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;; +F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;; +F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;; +F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;; +F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;; +F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;; +F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;; +F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;; +F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;; +F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;; +F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;; +F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;; +F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;; +F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;; +F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;; +F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;; +F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;; +F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;; +F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;; +F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;; +F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;; +F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;; +F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;; +F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;; +F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;; +F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;; +F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;; +F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;; +F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;; +F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;; +F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;; +F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;; +F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;; +F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;; +F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;; +F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;; +F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;; +F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;; +F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;; +F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;; +F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;; +F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;; +F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;; +F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;; +F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;; +F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;; +F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;; +F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;; +F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;; +F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;; +F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;; +F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;; +F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;; +F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;; +F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;; +F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;; +F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;; +F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;; +F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;; +F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;; +F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;; +F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;; +F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;; +F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;; +F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;; +F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; +F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; +F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; +F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; +F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; +F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; +F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; +F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; +F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;; +F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;; +F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;; +F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;; +F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;; +F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;; +F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;; +F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;; +F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;; +F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;; +F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;; +F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;; +F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;; +F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;; +F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;; +F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;; +F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;; +F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;; +F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;; +F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;; +F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;; +F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;; +F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;3;N;;;;; +F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;; +F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;; +F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;; +F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;; +F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;; +F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;; +F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;; +F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;10;N;;;;; +F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;; +F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;; +F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;; +F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;; +F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;2;N;;;;; +F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;; +F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;; +F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;; +F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;; +F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;; +F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;; +F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;; +F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;; +F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;; +F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;; +F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;; +F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;; +F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;; +F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;; +F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;; +F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;; +F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;; +F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;; +F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;; +F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;; +F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;; +F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;; +F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;; +F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;; +F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;; +F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;; +F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;; +F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;; +F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;; +F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;; +F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;; +F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;; +F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;; +F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;; +F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;; +F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;; +F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;; +F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;; +F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;; +F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;; +F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;; +F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;; +F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;; +F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;; +F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;; +F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;; +F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;; +F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;; +F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;; +F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;; +F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;; +F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;; +F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;; +F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;; +F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;; +F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;; +F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;; +F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;0;N;;;;; +F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;; +F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;; +F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;; +F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;; +F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;; +F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;; +F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;; +F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;; +F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;; +F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;; +F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;; +F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;; +F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;; +F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;; +F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;; +F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;; +F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;; +F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;; +F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;; +F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;; +F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;; +F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;; +F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;; +F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;; +F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;; +F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;; +F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;; +F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;; +F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;; +F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;; +F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;6;N;;;;; +F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; +F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;N;;;;; +F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;; +F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;; +F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;; +F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;; +F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;; +F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;; +F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;; +F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;; +F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;; +F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;; +F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;; +F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;; +F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;; +F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;; +F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;; +F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;; +F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;; +F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;; +F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;; +F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;; +F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;; +F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;; +F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;; +F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;; +F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;; +F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;; +F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;; +F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;; +F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;; +F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;; +F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;; +F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;; +F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;; +F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;; +F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;; +F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;; +F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;; +F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;; +F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;; +F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;; +F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;; +F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;10;N;;;;; +F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;; +F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;; +FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;; +FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;; +FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;; +FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;; +FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;; +FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;; +FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;; +FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;; +FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;; +FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;; +FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;; +FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;; +FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;; +FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;; +FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;; +FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;; +FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;; +FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;; +FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;; +FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;; +FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;; +FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;; +FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;; +FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;; +FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;; +FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;; +FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;; +FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;; +FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;; +FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;; +FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;; +FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;; +FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;; +FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;; +FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;; +FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;; +FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;; +FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;; +FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;; +FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;; +FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;; +FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;; +FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; +FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; +FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; +FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; +FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; +FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; +FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; +FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; +FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; +FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; +FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; +FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; +FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; +FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; +FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; +FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; +FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; +FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; +FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; +FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; +FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; +FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; +FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; +FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; +FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; +FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; +FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; +FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; +FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; +FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; +FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; +FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; +FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; +FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; +FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; +FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; +FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; +FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; +FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; +FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; +FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; +FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; +FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; +FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; +FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; +FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; +FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; +FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; +FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; +FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; +FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; +FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; +FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; +FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; +FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; +FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; +FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; +FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; +FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; +FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; +FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; +FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; +FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; +FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;; +FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;; +FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;; +FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;; +FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;; +FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;; +FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;; +FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;; +FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;; +FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;; +FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;; +FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;; +FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;; +FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;; +FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;; +FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;; +FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;; +FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;; +FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;; +FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;; +FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;; +FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;; +FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;; +FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;; +FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;; +FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;; +FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;; +FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;; +FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;; +FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;; +FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;; +FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;; +FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;; +FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;; +FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;; +FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;; +FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;; +FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;; +FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;; +FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;; +FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;; +FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;; +FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;; +FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;; +FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;; +FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;; +FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;; +FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;; +FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;; +FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;; +FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;; +FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;; +FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;; +FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;; +FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;; +FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;; +FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;; +FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;; +FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;; +FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;; +FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;; +FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;; +FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;; +FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;; +FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;; +FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;; +FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;; +FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;; +FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;; +FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;; +FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;; +FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;; +FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;; +FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;; +FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;; +FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;; +FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;; +FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;; +FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;; +FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;; +FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;; +FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;; +FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;; +FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;; +FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;; +FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;; +FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;; +FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;; +FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;; +FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;; +FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;; +FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;; +FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;; +FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;; +FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;; +FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;; +FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;; +FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;; +FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;; +FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;; +FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;; +FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;; +FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;; +FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;; +FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;; +FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;; +FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;; +FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;; +FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;; +FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;; +FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;; +FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;; +FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;; +FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;; +FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;; +FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;; +FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;; +FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;; +FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;; +FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;; +FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;; +FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;; +FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;; +FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;; +FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;; +FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;; +FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;; +FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;; +FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;; +FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;; +FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES;<font> 002B;;;;N;;;;; +FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;; +FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;; +FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;; +FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;; +FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;; +FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;; +FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;; +FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;; +FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;; +FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;; +FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;; +FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;; +FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;; +FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;; +FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;; +FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;; +FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;; +FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;; +FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;; +FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;; +FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;; +FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;; +FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;; +FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;; +FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;; +FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;; +FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;; +FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;; +FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;; +FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;; +FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;; +FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;; +FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;; +FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;; +FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;; +FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;; +FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;; +FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;; +FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;; +FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;; +FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;; +FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;; +FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;; +FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;; +FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;; +FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;; +FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;; +FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;; +FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;; +FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;; +FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;; +FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;; +FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;; +FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;; +FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;; +FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;; +FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;; +FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;; +FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;; +FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;; +FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;; +FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;; +FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;; +FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;; +FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;; +FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;; +FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;; +FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;; +FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;; +FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;; +FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;; +FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;; +FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;; +FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;; +FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;; +FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;; +FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;; +FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;; +FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;; +FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;; +FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;; +FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;; +FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;; +FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;; +FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;; +FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;; +FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;; +FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;; +FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;; +FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;; +FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;; +FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;; +FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;; +FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;; +FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;; +FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;; +FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;; +FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;; +FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;; +FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;; +FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;; +FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;; +FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;; +FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;; +FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;; +FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;; +FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;; +FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;; +FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;; +FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;; +FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;; +FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;; +FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;; +FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;; +FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;; +FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;; +FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;; +FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;; +FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;; +FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;; +FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;; +FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;; +FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;; +FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;; +FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;; +FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;; +FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;; +FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;; +FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;; +FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;; +FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;; +FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;; +FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;; +FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;; +FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;; +FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;; +FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;; +FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;; +FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;; +FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;; +FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;; +FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;; +FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;; +FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;; +FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;; +FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;; +FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;; +FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;; +FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;; +FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;; +FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;; +FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;; +FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;; +FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;; +FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;; +FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;; +FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;; +FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;; +FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;; +FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;; +FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;; +FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;; +FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;; +FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;; +FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;; +FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;; +FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;; +FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;; +FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;; +FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;; +FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;; +FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;; +FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;; +FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;; +FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;; +FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;; +FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;; +FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;; +FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;; +FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;; +FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;; +FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;; +FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;; +FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;; +FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;; +FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;; +FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;; +FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;; +FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;; +FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;; +FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;; +FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;; +FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;; +FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;; +FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;; +FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;; +FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;; +FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;; +FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;; +FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;; +FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;; +FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;; +FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;; +FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;; +FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;; +FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;; +FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;; +FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;; +FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;; +FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;; +FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;; +FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;; +FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;; +FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;; +FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;; +FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;; +FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;; +FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;; +FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;; +FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;; +FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;; +FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;; +FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;; +FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;; +FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;; +FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;; +FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;; +FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;; +FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;; +FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;; +FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;; +FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;; +FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;; +FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;; +FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;; +FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;; +FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;; +FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;; +FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;; +FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;; +FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;; +FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;; +FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;; +FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;; +FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;; +FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;; +FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;; +FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;; +FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;; +FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;; +FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;; +FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;; +FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;; +FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;; +FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;; +FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;; +FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;; +FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;; +FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;; +FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;; +FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;; +FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;; +FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;; +FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;; +FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;; +FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;; +FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;; +FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;; +FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;; +FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;; +FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;; +FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;; +FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;; +FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;; +FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;; +FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;; +FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;; +FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;; +FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;; +FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;; +FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;; +FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;; +FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;; +FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;; +FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;; +FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;; +FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;; +FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;; +FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;; +FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;; +FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;; +FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;; +FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;; +FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;; +FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;; +FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;; +FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;; +FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;; +FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;; +FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;; +FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;; +FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;; +FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;; +FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;; +FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;; +FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;; +FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;; +FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;; +FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;; +FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;; +FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;; +FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;; +FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;; +FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;; +FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;; +FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;; +FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;; +FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;; +FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;; +FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;; +FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;; +FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;; +FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;; +FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;; +FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;; +FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;; +FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;; +FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;; +FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;; +FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;; +FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;; +FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;; +FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;; +FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;; +FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;; +FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;; +FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;; +FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;; +FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;; +FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;; +FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;; +FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;; +FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;; +FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;; +FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;; +FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;; +FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;; +FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;; +FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;; +FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;; +FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;; +FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;; +FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;; +FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;; +FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;; +FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;; +FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;; +FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;; +FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;; +FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;; +FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;; +FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;; +FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;; +FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;; +FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;; +FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;; +FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;; +FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;; +FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;; +FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;; +FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;; +FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;; +FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;; +FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;; +FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;; +FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;; +FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;; +FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;; +FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;; +FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;; +FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;; +FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;; +FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;; +FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;; +FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;; +FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;; +FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;; +FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;; +FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;; +FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;; +FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;; +FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;; +FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;; +FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;; +FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;; +FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;; +FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;; +FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;; +FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;; +FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;; +FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;; +FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;; +FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;; +FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;; +FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;; +FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;; +FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;; +FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;; +FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;; +FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;; +FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;; +FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;; +FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;; +FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;; +FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;; +FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;; +FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;; +FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;; +FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;; +FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;; +FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;; +FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;; +FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;; +FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;; +FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;; +FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;; +FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;; +FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;; +FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;; +FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;; +FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;; +FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;; +FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;; +FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;; +FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;; +FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;; +FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;; +FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;; +FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;; +FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;; +FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;; +FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;; +FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;; +FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;; +FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;; +FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;; +FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;; +FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;; +FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;; +FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;; +FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;; +FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;; +FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;; +FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;; +FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;; +FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;; +FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;; +FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;; +FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;; +FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;; +FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;; +FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;; +FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;; +FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;; +FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;; +FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;; +FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;; +FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;; +FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;; +FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;; +FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;; +FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;; +FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;; +FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;; +FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;; +FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;; +FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;; +FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;; +FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;; +FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;; +FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;; +FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;; +FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;; +FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;; +FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;; +FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;; +FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;; +FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;; +FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;; +FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;; +FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;; +FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;; +FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;; +FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;; +FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;; +FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;; +FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;; +FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;; +FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;; +FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;; +FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;; +FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;; +FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;; +FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;; +FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;; +FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;; +FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;; +FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;; +FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;; +FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;; +FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;; +FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;; +FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;; +FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;; +FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;; +FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;; +FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;; +FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;; +FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;; +FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;; +FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;; +FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;; +FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;; +FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;; +FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;; +FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;; +FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;; +FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;; +FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;; +FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;; +FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;; +FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;; +FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;; +FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;; +FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;; +FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;; +FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;; +FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;; +FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;; +FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;; +FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;; +FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;; +FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;; +FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;; +FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;; +FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;; +FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;; +FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;; +FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;; +FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;; +FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;; +FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;; +FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;; +FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;; +FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;; +FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;; +FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;; +FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;; +FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;; +FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;; +FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;; +FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;; +FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;; +FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;; +FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;; +FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;; +FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;; +FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;; +FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;; +FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;; +FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;; +FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;; +FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;; +FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;; +FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;; +FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;; +FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;; +FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;; +FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;; +FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;; +FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;; +FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;; +FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;; +FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;; +FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;; +FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;; +FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;; +FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;; +FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;; +FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;; +FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;; +FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;; +FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;; +FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;; +FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;; +FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;; +FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;; +FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;; +FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;; +FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;; +FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;; +FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;; +FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;; +FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;; +FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;; +FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;; +FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;; +FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;; +FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;; +FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;; +FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;; +FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;; +FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;; +FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;; +FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;; +FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;; +FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;; +FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;; +FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;; +FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;; +FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;; +FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;; +FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;; +FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;; +FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; +FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; +FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;; +FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; +FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; +FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; +FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; +FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; +FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; +FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; +FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; +FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; +FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; +FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; +FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; +FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; +FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; +FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; +FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; +FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; +FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;; +FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;; +FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;; +FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;; +FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;; +FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;; +FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;; +FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;; +FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;; +FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;N;;;;; +FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; +FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; +FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;; +FE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;; +FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; +FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; +FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; +FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;; +FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;; +FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;; +FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;; +FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;; +FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;; +FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;; +FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;; +FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;; +FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;; +FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;; +FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;; +FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;; +FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;; +FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;; +FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; +FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; +FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; +FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; +FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; +FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;; +FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;; +FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;; +FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; +FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;; +FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;; +FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;; +FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;; +FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;; +FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;; +FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;; +FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;; +FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;; +FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;; +FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;; +FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;; +FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;; +FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;Y;SMALL OPENING PARENTHESIS;;;; +FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;; +FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;; +FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;; +FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;; +FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;; +FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;; +FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;; +FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;; +FE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;; +FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;; +FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;; +FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;; +FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;; +FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;; +FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;; +FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;; +FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;; +FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; +FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; +FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; +FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; +FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; +FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; +FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; +FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;; +FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;; +FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;; +FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;; +FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;; +FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;; +FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;; +FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;; +FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;; +FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;; +FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;; +FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;; +FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;; +FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;; +FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;; +FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;; +FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;; +FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;; +FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;; +FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;; +FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;; +FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;; +FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;; +FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;; +FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;; +FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;; +FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;; +FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;; +FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;; +FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;; +FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;; +FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;; +FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;; +FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;; +FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;; +FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;; +FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;; +FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; +FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; +FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; +FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;; +FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;; +FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;; +FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;; +FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;; +FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;; +FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;; +FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;; +FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;; +FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;; +FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;; +FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;; +FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;; +FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;; +FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;; +FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;; +FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;; +FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;; +FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;; +FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;; +FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;; +FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; +FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; +FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; +FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; +FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;; +FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;; +FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;; +FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;; +FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;; +FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;; +FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;; +FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;; +FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;; +FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;; +FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;; +FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;; +FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;; +FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;; +FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;; +FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;; +FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;; +FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;; +FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;; +FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;; +FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;; +FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;; +FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;; +FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;; +FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;; +FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;; +FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;; +FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;; +FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;; +FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;; +FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;; +FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;; +FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;; +FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;; +FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;; +FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;; +FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;; +FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;; +FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;; +FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;; +FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;; +FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;; +FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;; +FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;; +FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;; +FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;; +FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;; +FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;; +FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;; +FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;; +FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;; +FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;; +FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;; +FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;; +FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;; +FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;; +FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;; +FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;; +FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;; +FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;; +FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;; +FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;; +FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; +FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; +FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; +FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; +FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;; +FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;; +FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; +FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;; +FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;; +FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;; +FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;; +FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;; +FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;; +FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;; +FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; +FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; +FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;; +FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;; +FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;; +FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;; +FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;; +FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;; +FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;; +FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;; +FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;; +FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;; +FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;; +FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;; +FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;; +FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;; +FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;; +FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;; +FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;; +FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;; +FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;; +FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;; +FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;; +FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;; +FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;; +FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41; +FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42; +FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43; +FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44; +FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45; +FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46; +FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47; +FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48; +FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49; +FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A; +FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B; +FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C; +FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D; +FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E; +FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F; +FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50; +FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51; +FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52; +FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53; +FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54; +FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55; +FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56; +FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57; +FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58; +FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59; +FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A; +FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; +FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;; +FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; +FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; +FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; +FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; +FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21 +FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22 +FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23 +FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24 +FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25 +FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26 +FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27 +FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28 +FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29 +FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A +FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B +FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C +FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D +FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E +FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F +FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30 +FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31 +FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32 +FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33 +FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34 +FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35 +FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36 +FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37 +FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38 +FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39 +FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A +FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; +FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; +FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; +FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;; +FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;; +FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;; +FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; +FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; +FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; +FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;; +FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON;<narrow> 30FB;;;;N;;;;; +FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;; +FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;; +FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;; +FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;; +FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;; +FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;; +FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;; +FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;; +FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;; +FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;; +FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;; +FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;; +FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;; +FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;; +FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;; +FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;; +FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;; +FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;; +FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;; +FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;; +FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;; +FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;; +FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;; +FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;; +FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;; +FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;; +FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;; +FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;; +FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;; +FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;; +FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;; +FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;; +FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;; +FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;; +FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;; +FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;; +FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;; +FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;; +FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;; +FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;; +FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;; +FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;; +FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;; +FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;; +FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;; +FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;; +FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;; +FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;; +FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;; +FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;; +FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;; +FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;; +FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;; +FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;; +FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;; +FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;; +FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;; +FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;; +FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;; +FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;; +FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;; +FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; +FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;; +FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;; +FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;; +FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;; +FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;; +FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;; +FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;; +FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;; +FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;; +FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;; +FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;; +FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;; +FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;; +FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;; +FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;; +FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;; +FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;; +FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;; +FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;; +FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;; +FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;; +FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;; +FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;; +FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;; +FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;; +FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;; +FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;; +FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;; +FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;; +FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;; +FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;; +FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;; +FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;; +FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;; +FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;; +FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;; +FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;; +FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;; +FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;; +FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;; +FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;; +FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;; +FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;; +FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;; +FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;; +FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;; +FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;; +FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;; +FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;; +FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;; +FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;; +FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;; +FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;; +FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;; +FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;; +FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;; +FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;; +FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;; +FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;; +FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;; +FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;; +FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;; +FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;; +FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;; +FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;; +FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; +FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; +10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;; +10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;; +10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;; +10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;; +10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;; +10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;; +10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;; +10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;; +10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;; +10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;; +1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;; +1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;; +1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;; +1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;; +1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;; +10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;; +10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;; +10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;; +10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;; +10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;; +10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;; +10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;; +10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;; +10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;; +10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;; +1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;; +1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;; +1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;; +1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;; +1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;; +1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;; +10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;; +10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;; +10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;; +10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;; +10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;; +10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;; +10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;; +10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;; +10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;; +1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;; +1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;; +1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;; +1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;; +1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;; +1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;; +10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;; +10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;; +10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;; +10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;; +10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;; +10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;; +10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;; +10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;; +10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;; +10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;; +1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;; +1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;; +1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;; +1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;; +10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;; +10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;; +10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;; +10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;; +10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;; +10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;; +10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;; +10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;; +10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;; +10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;; +1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;; +1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;; +1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;; +1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;; +10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;; +10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;; +10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;; +10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;; +10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;; +10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;; +10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;; +10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;; +10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;; +10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;; +1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;; +1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;; +1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;; +1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;; +10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;; +10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;; +10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;; +10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;; +10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;; +10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;; +10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;; +10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;; +10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;; +10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;; +1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;; +1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;; +1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;; +1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;; +1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;; +1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;; +10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;; +10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;; +10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;; +10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;; +10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;; +10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;; +10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;; +10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;; +10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;; +10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;; +1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;; +1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;; +1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;; +1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;; +1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;; +1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;; +100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;; +100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;; +100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;; +100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;; +100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;; +100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;; +100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;; +100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;; +100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;; +100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;; +100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;; +100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;; +100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;; +100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;; +100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;; +100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;; +100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;; +100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;; +100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;; +100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;; +100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;; +100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;; +100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;; +100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;; +100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;; +100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;; +100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;; +100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;; +100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;; +100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;; +100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;; +100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;; +100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;; +100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;; +100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;; +100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;; +100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;; +100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;; +100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;; +100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;; +100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;; +100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;; +100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;; +100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;; +100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;; +100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;; +100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;; +100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;; +100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;; +100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;; +100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;; +100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;; +100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;; +100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;; +100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;; +100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;; +100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;; +100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;; +100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;; +100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;; +100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;; +100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;; +100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;; +100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;; +100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;; +100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;; +100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;; +100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;; +100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;; +100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;; +100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;; +100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;; +100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;; +100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;; +100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;; +100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;; +100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;; +100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;; +100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;; +100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;; +100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;; +100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;; +100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;; +100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;; +100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;; +100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;; +100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;; +100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;; +100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;; +100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;; +100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;; +10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;; +10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;; +10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;; +10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;; +10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;; +10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;; +1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;; +1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;; +1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;; +1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;; +1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;; +1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;; +10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;; +10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;; +10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;; +10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;; +10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;; +10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;; +10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;; +10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;; +10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;; +10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; +1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;; +1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;; +1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;; +1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;; +1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;; +1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;; +10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;; +10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;; +10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; +10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;; +10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;; +10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;; +10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;; +10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;; +10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;; +10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;; +1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;; +1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; +1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;; +1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;; +1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;; +1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;; +10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;; +10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;; +10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;; +10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;; +10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;; +10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;; +10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;; +1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;; +1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;; +1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; +1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; +1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;; +1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;; +10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;; +10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;; +10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;; +10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;; +10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;; +10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; +10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;; +10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;; +10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;; +1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;; +1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;; +1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;; +1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;; +1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;; +1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;; +10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;; +10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;; +10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;; +10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;; +10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;; +10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;; +10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;; +10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;; +10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;; +10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;; +1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;; +1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;; +1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;; +1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; +1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; +1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;; +10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;; +10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;; +10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;; +10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;; +10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;; +10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;; +10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;; +10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;; +10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;; +10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;; +1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;; +1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;; +1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; +10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;; +10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; +10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;; +10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;; +10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;; +10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;; +10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;; +10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;; +10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;; +1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;; +1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;; +1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;; +1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;; +1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;; +1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;; +10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;; +10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;; +10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;; +10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;; +10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;; +10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;; +10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;; +10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;; +10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;; +10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;; +1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;; +10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;; +10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;; +10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;; +10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;; +10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;; +10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;; +10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;; +10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;; +10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;; +10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;; +1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;; +1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;; +101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;; +101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;; +101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;; +101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;; +101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;; +101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;; +101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;; +101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;; +101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;; +101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;; +101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;; +101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;; +101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;; +101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;; +101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;; +101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;; +101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;; +101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;; +101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;; +101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;; +101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;; +101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;; +101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;; +101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;; +101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;; +101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;; +101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;; +101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;; +101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;; +101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;; +101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;; +101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;; +101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;; +101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;; +101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;; +101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;; +101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;; +101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;; +101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;; +101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;; +101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;; +101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;; +101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;; +101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;; +101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;; +101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;; +10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;; +10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;; +10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;; +10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;; +10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;; +10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;; +10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;; +10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;; +10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;; +10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;; +1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;; +1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;; +1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;; +1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;; +1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;; +1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;; +10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;; +10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;; +10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;; +10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;; +10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;; +10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;; +10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;; +10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;; +10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;; +10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;; +1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;; +1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;; +1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;; +102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;; +102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;; +102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;; +102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;; +102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;; +102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;; +102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;; +102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;; +102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;; +102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;; +102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;; +102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;; +102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;; +102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;; +102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;; +102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;; +102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;; +102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;; +102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;; +102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;; +102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;; +102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;; +102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;; +102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;; +102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;; +102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;; +102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;; +102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;; +102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;; +102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;; +102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;; +102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;; +102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;; +102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;; +102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;; +102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;; +102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;; +102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;; +102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;; +102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;; +102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;; +102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;; +102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;; +102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;; +102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;; +102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;; +102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;; +102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;; +102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;N;;;;; +10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;; +10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;; +10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;; +10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;; +10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;; +10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;; +10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;; +10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;; +10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;; +10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;; +1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;; +1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;; +1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;; +1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;; +1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;; +1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;; +10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;; +10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;; +10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;; +10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;; +10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;; +10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;; +10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;; +10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;; +10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;; +10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;; +1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;; +1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;; +1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;; +1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;; +1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;; +10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;; +10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;; +10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;; +10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;; +10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;; +10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;; +10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;; +10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;; +10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;; +10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;; +10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;; +10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;; +10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;; +10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;; +1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;; +1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;; +1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;; +1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;; +1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;; +1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;; +10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;; +10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;; +10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;; +10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;; +10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;; +10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;; +10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;; +10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;; +10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;; +10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;; +1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;; +10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;; +10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;; +10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;; +10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;; +10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;; +10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;; +10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;; +10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;; +10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;; +10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;; +1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;; +1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;; +1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;; +1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;; +1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;; +1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;; +10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;; +10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;; +10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;; +10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;; +10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;; +10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;; +10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;; +10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;; +10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;; +10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;; +1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;; +1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;; +1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;; +1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;; +1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;; +103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;; +103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;; +103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;; +103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;; +103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;; +103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;; +103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;; +103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;; +103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;; +103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;; +103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;; +103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;; +103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;; +103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;; +103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;; +103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;; +103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;; +103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;; +103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;; +103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;; +103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;; +103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;; +103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;; +103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;; +103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;; +103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;; +103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;; +103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;; +103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;; +103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;; +103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;; +103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;; +103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;; +103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;; +103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;; +103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;; +103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;; +103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;; +103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;; +103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;; +103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;; +103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;; +103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;; +103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;; +103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; +103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;; +103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;; +103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;; +103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;; +103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;; +10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428; +10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429; +10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A; +10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B; +10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C; +10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D; +10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E; +10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F; +10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430; +10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431; +1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432; +1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433; +1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434; +1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435; +1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436; +1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437; +10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438; +10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439; +10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A; +10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B; +10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C; +10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D; +10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E; +10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F; +10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440; +10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441; +1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442; +1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443; +1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444; +1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445; +1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446; +1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447; +10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448; +10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449; +10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A; +10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B; +10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C; +10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D; +10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E; +10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F; +10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400 +10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401 +1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402 +1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403 +1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404 +1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405 +1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406 +1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407 +10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408 +10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409 +10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A +10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B +10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C +10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D +10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E +10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F +10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410 +10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411 +1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412 +1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413 +1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414 +1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415 +1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416 +1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417 +10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418 +10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419 +10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A +10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B +10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C +10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D +10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E +10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F +10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420 +10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421 +1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422 +1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423 +1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424 +1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425 +1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426 +1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427 +10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;; +10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;; +10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;; +10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;; +10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;; +10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;; +10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;; +10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;; +10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;; +10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;; +1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;; +1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;; +1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;; +1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;; +1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;; +1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;; +10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;; +10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;; +10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;; +10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;; +10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;; +10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;; +10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;; +10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;; +10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;; +10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;; +1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;; +1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;; +1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;; +1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;; +1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;; +1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;; +10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;; +10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;; +10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;; +10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;; +10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;; +10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;; +10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;; +10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;; +10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;; +10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;; +1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;; +1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;; +1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;; +1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;; +1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;; +1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;; +10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;; +10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;; +10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;; +10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;; +10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;; +10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;; +10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;; +10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;; +10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;; +10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;; +1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;; +1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;; +1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;; +1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;; +1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;; +1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;; +10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;; +10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;; +10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;; +10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;; +10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;; +10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;; +10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;; +10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;; +10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;; +10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;; +1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;; +1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;; +1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;; +1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;; +104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; +10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; +10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; +10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;; +10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;; +10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;; +10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;; +1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;; +1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;; +1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;; +1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;; +1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;; +1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;; +10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;; +10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;; +10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;; +10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;; +10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;; +10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;; +10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;; +10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;; +10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;; +10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;; +1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;; +1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;; +1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;; +1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;; +1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;; +1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;; +10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;; +10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;; +10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;; +10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;; +10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;; +10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;; +10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;; +10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;; +10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;; +10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;; +1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;; +1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;; +1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;; +1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;; +1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;; +1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;; +10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;; +10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;; +10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;; +10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;; +10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;; +10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;; +10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;; +10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;; +1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;; +1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;; +10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;; +10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;; +10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;; +10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;; +10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;; +10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;; +10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;; +10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;; +10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;; +10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;; +1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;; +1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;; +1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;; +1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;; +1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;; +1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;; +10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;; +10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;; +10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;; +10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;; +10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; +10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;; +10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;; +10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;; +10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; +10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;; +10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;; +10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;; +10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;; +10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;; +10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;; +10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;; +10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;; +10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;; +10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;; +10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;; +1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;; +1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;; +1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;; +1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;; +1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;; +1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;; +10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;; +10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;; +10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;; +10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;; +10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;; +10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;; +10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;; +10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;; +10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;; +10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;; +1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;; +10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; +10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;; +10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; +10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;; +10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;; +10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;; +10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;; +10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;; +10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;; +10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;; +10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;; +10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;; +10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;; +10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;; +10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;; +10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;; +10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;; +10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;; +10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;; +10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;; +10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;; +10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;; +10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;; +10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;; +10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;; +10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;; +10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;; +10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;; +10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;; +10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;; +10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;; +10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;; +10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;; +10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;; +10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;; +10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;; +10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;; +10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;; +10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;; +10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;; +10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; +10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;; +10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;; +10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;; +10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;; +10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;; +10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;; +10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;; +10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; +10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;; +10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;; +10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;; +10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;; +10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;; +10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;; +10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;; +10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;; +10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;; +12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;; +12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;; +12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;; +12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;; +12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;; +12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;; +12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;; +12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;; +12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;; +1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;; +1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;; +1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; +1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;; +1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;; +12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;; +12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;; +12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;; +12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; +12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;; +12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;; +12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;; +12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; +1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;; +1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;; +1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;; +1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;; +1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;; +1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;; +12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;; +12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;; +12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;; +12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;; +12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;; +12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;; +12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;; +12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;; +12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;; +12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;; +1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;; +1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;; +1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;; +1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;; +1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;; +1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;; +12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;; +12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;; +12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;; +12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;; +12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;; +12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;; +12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;; +12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;; +12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;; +12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; +1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;; +1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;; +1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; +1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; +1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;; +1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;; +12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;; +12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;; +12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;; +12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;; +12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;; +12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;; +12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;; +12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;; +12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;; +12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;; +1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;; +1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;; +1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;; +1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;; +1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;; +12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;; +12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;; +12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;; +12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;; +12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;; +12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;; +12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;; +12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;; +12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;; +12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;; +1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; +1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;; +1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;; +1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;; +1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;; +1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;; +12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;; +12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;; +12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;; +12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;; +12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;; +12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;; +12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;; +12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;; +12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;; +12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;; +1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;; +1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;; +1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;; +1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;; +1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;; +1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;; +12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;; +12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;; +12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;; +12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;; +12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;; +12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;; +12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;; +12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;; +12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;; +12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;; +1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;; +1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;; +1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;; +1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;; +1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;; +1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;; +12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;; +12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;; +12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;; +12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;; +12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;; +12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;; +12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;; +12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; +12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;; +12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;; +1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;; +1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;; +1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;; +1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;; +1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;; +1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;; +12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;; +12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;; +12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;; +12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;; +12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;; +12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;; +12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;; +12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;; +12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;; +12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;; +1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;; +1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;; +1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;; +1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;; +1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;; +120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;; +120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;; +120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;; +120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; +120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;; +120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;; +120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;; +120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; +120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; +120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;; +120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;; +120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;; +120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;; +120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;; +120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;; +120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;; +120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;; +120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;; +120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;; +120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;; +120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;; +120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;; +120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;; +120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; +120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; +120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; +120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;; +120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;; +120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;; +120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;; +120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;; +120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;; +120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;; +120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;; +120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;; +120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;; +120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;; +120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;; +120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;; +120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;; +120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;; +120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;; +120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;; +120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;; +120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;; +120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;; +120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;; +120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;; +120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;; +120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;; +120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;; +120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;; +120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;; +120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; +120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;; +120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;; +120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;; +120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;; +120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; +120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;; +120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;; +120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;; +120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;; +120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;; +120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;; +120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;; +120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;; +120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;; +120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;; +120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;; +120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;; +120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;; +120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;; +120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;; +120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;; +120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;; +120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;; +120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; +120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;; +120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; +120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;; +120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;; +120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;; +120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;; +120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;; +120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;; +120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;; +120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;; +120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;; +120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;; +120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;; +120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;; +12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;; +12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;; +12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;; +12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;; +12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;; +12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;; +12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;; +12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;; +12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;; +12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;; +1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;; +1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; +1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;; +1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;; +1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;; +12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;; +12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;; +12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; +12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;; +12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;; +12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;; +12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;; +12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;; +12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;; +12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;; +1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;; +1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;; +1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;; +1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;; +1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;; +12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;; +12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;; +12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;; +12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;; +12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;; +12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;; +12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;; +12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;; +12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;; +12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;; +1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;; +1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;; +1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;; +1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;; +1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;; +1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;; +12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;; +12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;; +12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;; +12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;; +12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;; +12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;; +12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;; +12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;; +12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;; +12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;; +1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;; +1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; +1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;; +1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;; +1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;; +1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;; +12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;; +12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;; +12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;; +12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;; +12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;; +12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;; +12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;; +12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;; +12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;; +12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;; +1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;; +1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;; +1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;; +1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;; +1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;; +12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;; +12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;; +12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;; +12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;; +12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;; +12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;; +12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;; +12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;; +12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;; +12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;; +1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;; +1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;; +1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;; +1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;; +1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;; +1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;; +12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;; +12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;; +12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;; +12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;; +12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;; +12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;; +12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;; +12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;; +12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;; +1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; +1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;; +1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;; +1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;; +1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;; +1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;; +12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;; +12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;; +12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;; +12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;; +12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;; +12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;; +12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;; +12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;; +12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;; +12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;; +1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;; +1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;; +1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;; +1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;; +1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;; +1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;; +12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;; +12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;; +12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;; +12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;; +12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;; +12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;; +12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;; +12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;; +12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;; +12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;; +1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;; +1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;; +1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;; +1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;; +1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;; +1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;; +12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;; +12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;; +12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;; +12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;; +12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;; +12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;; +12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;; +12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;; +12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;; +1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;; +1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;; +1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;; +1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; +1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; +1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;; +121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;; +121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;; +121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;; +121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;; +121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;; +121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;; +121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;; +121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;; +121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;; +121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;; +121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;; +121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;; +121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;; +121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;; +121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;; +121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;; +121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;; +121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;; +121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;; +121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;; +121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;; +121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;; +121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;; +121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;; +121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;; +121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;; +121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; +121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;; +121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; +121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;; +121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;; +121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; +121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;; +121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;; +121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;; +121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;; +121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;; +121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;; +121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;; +121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;; +121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;; +121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;; +121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;; +121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;; +121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;; +121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;; +121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;; +121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;; +121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;; +121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;; +121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;; +121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;; +121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;; +121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;; +121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;; +121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;; +121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; +121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;; +121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;; +121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; +121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;; +121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;; +121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;; +121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;; +121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;; +121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;; +121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;; +121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;; +121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;; +121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;; +121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; +121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; +121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;; +121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;; +121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;; +121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;; +121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;; +121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; +121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;; +121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;; +121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;; +121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;; +121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;; +121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;; +121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;; +121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;; +121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;; +121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;; +121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;; +121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;; +121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;; +121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;; +121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;; +121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;; +121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;; +12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;; +12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;; +12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;; +12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;; +12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;; +12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;; +12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;; +12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;; +12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;; +1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;; +1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; +1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;; +1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;; +1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;; +1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;; +12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;; +12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;; +12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;; +12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;; +12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;; +12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;; +12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;; +12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;; +12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;; +12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;; +1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;; +1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;; +1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;; +1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;; +1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;; +1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;; +12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;; +12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;; +12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;; +12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;; +12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;; +12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;; +12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;; +12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;; +12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;; +12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;; +1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;; +1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;; +1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;; +1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;; +1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;; +1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;; +12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;; +12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;; +12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;; +12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;; +12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;; +12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;; +12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;; +12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; +12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;; +12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;; +1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;; +1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;; +1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;; +1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;; +1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;; +1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;; +12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;; +12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;; +12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;; +12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;; +12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;; +12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;; +12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;; +12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;; +12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;; +12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;; +1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;; +1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;; +1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;; +1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;; +1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;; +1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;; +12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; +12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;; +12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;; +12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;; +12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;; +12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;; +12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; +12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;; +12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;; +1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;; +1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;; +1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;; +1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;; +1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; +1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;; +12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;; +12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;; +12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;; +12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;; +12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;; +12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;; +12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; +12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; +12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;; +12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;; +1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;; +1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;; +1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;; +1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;; +1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;; +1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;; +12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;; +12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;; +12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;; +12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;; +12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;; +12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;; +12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;; +12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; +12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;; +1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;; +1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;; +1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;; +1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;; +1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;; +1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;; +12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;; +12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;; +12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;; +12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;; +12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;; +12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;; +12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;; +12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;; +12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;; +12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;; +1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;; +1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;; +1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;; +1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;; +1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;; +1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;; +12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;; +12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;; +12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;; +12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;; +12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;; +12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;; +12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;; +12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;; +12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;; +12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;; +1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;; +1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;; +1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;; +1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;; +1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;; +1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;; +122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;; +122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;; +122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;; +122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;; +122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;; +122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;; +122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;; +122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;; +122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;; +122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;; +122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;; +122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;; +122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;; +122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;; +122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;; +122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;; +122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;; +122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;; +122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;; +122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;; +122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;; +122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;; +122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;; +122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;; +122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;; +122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;; +122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;; +122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;; +122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; +122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;; +122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;; +122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;; +122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;; +122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;; +122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;; +122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;; +122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;; +122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;; +122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;; +122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;; +122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;; +122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;; +122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;; +122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;; +122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;; +122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;; +122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;; +122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;; +122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;; +122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;; +122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;; +122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;; +122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;; +122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;; +122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;; +122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;; +122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;; +122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;; +122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;; +122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;; +122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;; +122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;; +122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;; +122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;; +122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;; +122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;; +122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;; +122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;; +122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;; +122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;; +122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;; +122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;; +122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;; +122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;; +122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;; +122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;; +122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;; +122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;; +122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;; +122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;; +122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;; +122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;; +122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;; +122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;; +122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;; +122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;; +122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;; +122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;; +122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;; +122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;; +122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;; +122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;; +122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;; +122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;; +122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;; +12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;; +12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;; +12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;; +12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;; +12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; +12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;; +12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;; +12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;; +12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;; +12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;; +1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;; +1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;; +1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;; +1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;; +1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;; +1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;; +12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;; +12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;; +12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;; +12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;; +12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;; +12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;; +12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;; +12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; +12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;; +12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;; +1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;; +1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;; +1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;; +1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;; +1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;; +1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;; +12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;; +12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;; +12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;; +12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;; +12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;; +12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;; +12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;; +12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;; +12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;; +12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;; +1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;; +1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;; +1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; +1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; +1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;; +1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;; +12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;; +12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;; +12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; +12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;; +12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;; +12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;; +12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;; +12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;; +12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;; +12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;; +1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;; +1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;; +1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;; +1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;; +1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;; +12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;; +12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;; +12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;; +12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;; +12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;; +12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;; +12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;; +12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;; +12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;; +12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;; +1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;; +1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;; +1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;; +1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;; +1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;; +1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;; +12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;; +12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;; +12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;; +12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;; +12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;; +12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;; +12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;; +12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;; +12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;; +12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;; +1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;; +1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;; +1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;; +1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;; +1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;; +1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;; +12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;; +12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;; +12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;; +12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;; +12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;; +12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;; +12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;; +12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;; +12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;; +12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;; +1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;; +1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;; +1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;; +1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;; +1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;; +12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;; +12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;; +12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;; +12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;; +12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;; +12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;; +12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;; +12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;; +12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;; +12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;; +1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;; +1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;; +1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;; +1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;; +1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;; +1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;; +12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;; +12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;; +12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;; +12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;; +12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;; +12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;; +12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;; +12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;; +12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;; +12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;; +1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;; +1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;; +1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;; +1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;; +1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;; +1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;; +12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;; +12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;; +12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;; +12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;; +12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;; +12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;; +12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;; +12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;; +12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;; +12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;; +1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;; +1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;; +1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;; +1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;; +1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;; +1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;; +12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;; +12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;; +12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;; +12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;; +12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;; +12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;; +12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;; +12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;; +12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;; +12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;; +1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;; +1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;; +1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;; +1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;; +1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;; +1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;; +12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;; +12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;; +12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;; +12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;; +12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;; +12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;; +12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;; +12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;; +12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;; +12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;; +1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;; +1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;; +1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;; +1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;; +1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;; +1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;; +12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;; +12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;; +12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;; +12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;; +12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;; +12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;; +12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;; +12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;; +12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;; +12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;; +1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;; +1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;; +1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;; +1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;; +1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;; +1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;; +12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;; +12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;; +12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;; +12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; +12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;; +12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;; +12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;; +1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; +1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; +1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; +1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;; +1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;; +1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;; +1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;; +1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;; +1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;; +1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;; +1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;; +1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;; +1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;; +1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;; +1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;; +1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;; +1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;; +1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;; +1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;; +1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;; +1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;; +1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;; +1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;; +1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;; +1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;; +1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;; +1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;; +1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;; +1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;; +1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;; +1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;; +1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;; +1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;; +1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;; +1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;; +1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;; +1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;; +1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;; +1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;; +1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;; +1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;; +1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;; +1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;; +1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;; +1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;; +1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;; +1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;; +1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;; +1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;; +1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;; +1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;; +1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;; +1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;; +1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;; +1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;; +1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;; +1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;; +1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;; +1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;; +1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;; +1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;; +1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;; +1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;; +1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;; +1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;; +1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;; +1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;; +1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;; +1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;; +1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;; +1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;; +1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;; +1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;; +1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;; +1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;; +1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;; +1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;; +1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;; +1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;; +1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;; +1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;; +1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;; +1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;; +1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;; +1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;; +1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;; +1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;; +1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;; +1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;; +1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;; +1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;; +1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;; +1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;; +1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;; +1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;; +1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;; +1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;; +1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;; +1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;; +1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;; +1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;; +1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;; +1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;; +1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;; +1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;; +1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;; +1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;; +1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;; +1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;; +1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;; +1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;; +1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;; +1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;; +1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;; +1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;; +1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;; +1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;; +1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;; +1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;; +1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;; +1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;; +1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;; +1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;; +1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;; +1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;; +1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;; +1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;; +1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;; +1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;; +1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;; +1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;; +1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;; +1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;; +1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;; +1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;; +1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;; +1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;; +1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;; +1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;; +1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;; +1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;; +1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;; +1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;; +1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;; +1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;; +1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; +1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;; +1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;; +1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;; +1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; +1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;; +1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;; +1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;; +1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;; +1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;; +1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;; +1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;; +1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;; +1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;; +1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;; +1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;; +1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;; +1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;; +1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;; +1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;; +1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;; +1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;; +1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;; +1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;; +1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;; +1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; +1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; +1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;; +1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;; +1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;; +1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;; +1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;; +1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;; +1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;; +1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;; +1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;; +1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;; +1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;; +1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;; +1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;; +1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;; +1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;; +1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;; +1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;; +1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;; +1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;; +1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;; +1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;; +1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;; +1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;; +1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;; +1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;; +1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;; +1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;; +1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;; +1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;; +1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;; +1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;; +1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;; +1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;; +1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;; +1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; +1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; +1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; +1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; +1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; +1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; +1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; +1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; +1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;; +1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;; +1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;; +1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;; +1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;; +1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;; +1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;; +1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;; +1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;; +1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;; +1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;; +1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;; +1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;; +1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;; +1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;; +1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;; +1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;; +1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;; +1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;; +1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;; +1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;; +1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;; +1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;; +1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;; +1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;; +1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;; +1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;; +1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;; +1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;; +1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;; +1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;; +1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;; +1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;; +1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;; +1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;; +1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;; +1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;; +1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;; +1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;; +1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;; +1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;; +1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;; +1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;; +1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;; +1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;; +1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;; +1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;; +1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;; +1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;; +1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;; +1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;; +1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;; +1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;; +1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;; +1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;; +1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;; +1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;; +1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;; +1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;; +1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;; +1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;; +1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;; +1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;; +1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;; +1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;; +1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;So;0;L;;;;;N;;;;; +1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;; +1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;; +1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;; +1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;; +1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;; +1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;; +1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;; +1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;; +1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;; +1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;; +1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;; +1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;; +1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;; +1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;; +1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;; +1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;; +1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;; +1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;; +1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;; +1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;; +1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;; +1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;; +1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;; +1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;; +1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;; +1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;; +1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;; +1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;; +1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;; +1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;; +1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;; +1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;; +1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;; +1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;; +1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; +1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; +1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;; +1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;; +1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; +1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; +1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;; +1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;; +1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;; +1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;; +1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;; +1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;; +1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;; +1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;; +1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;; +1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;; +1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;; +1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;; +1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;; +1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;; +1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;; +1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;; +1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;; +1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;; +1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;; +1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;; +1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;; +1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;; +1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;; +1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;; +1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;; +1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;; +1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;; +1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;; +1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;; +1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;; +1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;; +1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;; +1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;; +1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;; +1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;; +1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;; +1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;; +1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;; +1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;; +1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;; +1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;; +1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;; +1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;; +1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;; +1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;; +1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;; +1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;; +1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;; +1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; +1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;; +1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;; +1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;; +1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;; +1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;; +1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;; +1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;; +1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;; +1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;; +1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;; +1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;; +1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;; +1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;; +1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;; +1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;; +1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;; +1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;; +1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;; +1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;; +1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;; +1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;; +1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;; +1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;; +1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;; +1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;; +1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;; +1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;; +1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;; +1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;; +1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;; +1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;; +1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;; +1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;; +1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;; +1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;; +1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;; +1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;; +1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;; +1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;; +1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;; +1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;; +1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;; +1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;; +1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;; +1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;; +1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;; +1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;; +1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;; +1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;; +1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;; +1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;; +1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;; +1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;; +1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;; +1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;; +1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;; +1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;; +1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;; +1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;; +1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;; +1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;; +1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;; +1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;; +1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; +1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; +1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; +1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; +1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; +1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; +1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;; +1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;; +1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;; +1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;; +1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;; +1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;; +1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;; +1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;; +1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;; +1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;; +1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;; +1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;; +1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;; +1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;; +1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; +1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; +1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; +1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; +1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; +1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; +1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; +1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; +1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;; +1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; +1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; +1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;; +1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;; +1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; +1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; +1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; +1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; +1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;; +1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;; +1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; +1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; +1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; +1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;; +1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;; +1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;; +1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; +1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; +1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; +1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; +1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; +1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; +1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; +1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; +1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; +1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; +1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; +1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; +1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; +1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; +1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; +1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; +1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; +1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; +1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; +1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; +1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; +1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; +1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;; +1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;; +1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;; +1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;; +1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;; +1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;; +1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;; +1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;; +1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;; +1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;; +1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;; +1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;; +1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;; +1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;; +1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;; +1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;; +1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;; +1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; +1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; +1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; +1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; +1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; +1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;; +1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;; +1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;; +1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;; +1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;ren *;;; +1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;tian ren *;;; +1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;di ren *;;; +1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;ren tian *;;; +1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;ren di *;;; +1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;ren ren *;;; +1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;; +1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;; +1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;; +1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;; +1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;; +1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;; +1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;; +1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; +1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;; +1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;; +1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;; +1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;; +1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; +1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;; +1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;; +1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;; +1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;; +1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; +1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; +1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;; +1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;; +1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;; +1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;; +1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;; +1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;; +1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;; +1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;; +1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;; +1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;; +1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;; +1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;; +1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;; +1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;; +1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;; +1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;; +1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;; +1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;; +1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;; +1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;; +1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;; +1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;; +1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;; +1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;; +1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;; +1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;; +1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;; +1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;; +1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;; +1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;; +1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;; +1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;; +1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;; +1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;; +1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;; +1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;; +1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;; +1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;; +1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;; +1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;; +1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;; +1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;; +1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;; +1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;; +1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;; +1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;; +1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;; +1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;; +1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;; +1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;; +1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;; +1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;; +1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;; +1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;; +1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;; +1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;; +1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;; +1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;; +1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;; +1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;; +1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;; +1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;; +1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;; +1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;; +1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;; +1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;; +1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;; +1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;; +1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;; +1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;; +1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;; +1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;; +1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;; +1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;; +1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;; +1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;; +1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;; +1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;; +1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;; +1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;; +1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; +1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; +1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; +1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; +1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; +1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; +1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; +1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; +1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; +1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; +1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; +1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; +1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; +1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; +1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; +1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; +1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; +1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; +1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; +1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; +1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; +1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; +1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; +1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; +1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; +1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; +1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; +1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; +1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; +1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; +1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; +1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; +1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; +1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; +1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; +1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; +1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; +1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; +1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; +1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; +1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; +1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; +1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; +1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; +1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; +1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; +1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; +1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; +1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; +1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; +1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; +1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; +1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;; +1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;; +1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; +1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; +1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; +1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; +1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; +1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; +1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; +1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; +1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; +1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; +1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; +1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; +1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; +1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; +1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; +1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; +1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; +1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; +1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; +1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; +1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; +1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; +1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; +1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;; +1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; +1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; +1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; +1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; +1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; +1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; +1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; +1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; +1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; +1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; +1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; +1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; +1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; +1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; +1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; +1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; +1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; +1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; +1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; +1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; +1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; +1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; +1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; +1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;; +1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; +1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; +1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; +1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; +1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; +1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; +1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; +1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; +1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; +1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; +1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; +1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; +1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; +1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; +1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; +1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; +1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; +1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; +1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; +1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; +1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; +1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; +1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; +1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; +1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; +1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; +1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; +1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; +1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; +1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; +1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; +1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; +1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; +1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; +1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; +1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; +1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; +1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; +1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; +1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; +1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; +1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; +1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; +1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; +1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; +1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; +1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; +1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; +1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; +1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; +1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; +1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; +1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; +1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;; +1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; +1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; +1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; +1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; +1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; +1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; +1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; +1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; +1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; +1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; +1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; +1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; +1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; +1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; +1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; +1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; +1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; +1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; +1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; +1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; +1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; +1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; +1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; +1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; +1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; +1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; +1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; +1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; +1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; +1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; +1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; +1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; +1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; +1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; +1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; +1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; +1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; +1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; +1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; +1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; +1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; +1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; +1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; +1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; +1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; +1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; +1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; +1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; +1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; +1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; +1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; +1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; +1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; +1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;; +1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; +1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; +1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; +1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; +1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; +1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; +1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; +1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; +1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; +1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; +1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; +1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; +1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; +1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; +1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; +1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; +1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; +1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; +1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; +1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; +1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; +1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; +1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; +1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; +1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; +1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; +1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; +1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; +1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; +1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;; +1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; +1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; +1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; +1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; +1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; +1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; +1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; +1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; +1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; +1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; +1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; +1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; +1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; +1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; +1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; +1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; +1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; +1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; +1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; +1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; +1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; +1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; +1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; +1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;; +1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; +1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; +1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; +1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; +1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; +1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; +1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; +1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; +1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; +1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; +1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; +1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; +1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; +1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; +1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; +1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; +1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; +1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; +1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; +1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; +1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; +1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; +1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; +1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; +1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; +1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; +1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; +1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; +1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; +1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; +1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; +1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; +1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; +1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; +1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; +1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; +1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; +1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; +1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; +1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; +1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; +1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; +1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; +1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; +1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; +1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; +1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; +1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; +1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; +1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; +1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; +1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; +1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; +1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; +1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; +1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; +1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; +1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;; +1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; +1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; +1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; +1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; +1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; +1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; +1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;; +1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;N;;;;; +1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; +1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; +1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; +1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; +1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; +1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; +1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; +1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; +1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; +1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; +1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; +1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; +1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; +1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; +1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; +1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; +1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; +1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; +1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; +1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; +1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; +1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; +1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; +1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; +1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; +1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; +1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; +1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; +1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; +1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; +1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; +1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; +1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; +1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; +1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; +1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; +1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; +1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; +1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; +1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; +1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; +1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; +1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; +1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; +1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; +1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; +1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; +1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; +1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; +1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; +1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;; +1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;; +1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;; +1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;; +1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;; +1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;; +1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;; +1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;; +1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;; +1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;; +1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;; +1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;; +1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;; +1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;; +1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;; +1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;; +1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;; +1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;; +1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;; +1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;; +1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;; +1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;; +1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;; +1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;; +1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;; +1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;; +1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;; +1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;; +1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;; +1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;; +1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;; +1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;; +1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;; +1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;; +1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;; +1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;; +1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;; +1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;; +1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;; +1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;; +1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;; +1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;; +1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;; +1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;; +1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;; +1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;; +1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;; +1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;; +1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;; +1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;; +1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;; +1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;; +1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;; +1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;; +1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;; +1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;; +1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;; +1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;; +1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;; +1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;; +1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;; +1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;; +1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;; +1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;; +1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;; +1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;; +1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;; +1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;; +1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;; +1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;; +1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;; +1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;; +1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;; +1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;; +1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;; +1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;; +1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;; +1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;; +1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;; +1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;; +1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;; +1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;; +1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;; +1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;; +1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;; +1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;; +1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;; +1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;; +1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;; +1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;; +1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;; +1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;; +1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;; +1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;; +1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;; +1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;; +1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;; +1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;; +1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;; +1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;; +1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;; +1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;; +1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;; +1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;; +1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;; +1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;; +1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;; +1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;; +1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;; +1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;; +1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;; +1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;; +1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;; +1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;; +1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;; +1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;; +1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;; +1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;; +1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;; +1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;; +1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;; +1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;; +1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;; +2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; +2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; +2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; +2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;; +2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;; +2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;; +2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;; +2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;; +2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;; +2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;; +2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;; +2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;; +2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;; +2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;; +2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;; +2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;; +2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;; +2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;; +2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;; +2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;; +2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;; +2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;; +2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;; +2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;; +2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;; +2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;; +2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;; +2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;; +2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;; +2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;; +2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;; +2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;; +2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;; +2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;; +2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;; +2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;; +2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;; +2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;; +2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;; +2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;; +2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;; +2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;; +2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;; +2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;; +2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;; +2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;; +2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;; +2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;; +2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;; +2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;; +2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;; +2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;; +2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;; +2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;; +2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;; +2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;; +2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;; +2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;; +2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;; +2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;; +2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;; +2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;; +2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;; +2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;; +2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;; +2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;; +2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;; +2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;; +2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;; +2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;; +2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;; +2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;; +2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;; +2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;; +2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;; +2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;; +2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;; +2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;; +2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;; +2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;; +2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;; +2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;; +2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;; +2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;; +2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;; +2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;; +2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;; +2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;; +2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;; +2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;; +2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;; +2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;; +2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;; +2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;; +2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;; +2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;; +2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;; +2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;; +2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;; +2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;; +2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;; +2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;; +2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;; +2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;; +2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;; +2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;; +2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;; +2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;; +2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;; +2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;; +2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;; +2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;; +2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;; +2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;; +2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;; +2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;; +2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;; +2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;; +2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;; +2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;; +2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;; +2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;; +2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;; +2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;; +2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;; +2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;; +2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;; +2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;; +2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;; +2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;; +2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;; +2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;; +2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;; +2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;; +2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;; +2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;; +2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;; +2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;; +2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;; +2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;; +2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;; +2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;; +2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;; +2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;; +2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;9;N;;;;; +2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;; +2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;; +2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;; +2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;; +2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;; +2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;; +2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;; +2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;; +2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;; +2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;; +2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;; +2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;; +2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;; +2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;; +2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;; +2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;; +2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;; +2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;; +2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;; +2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;; +2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;; +2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;; +2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;; +2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;; +2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;; +2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;; +2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;; +2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;; +2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;; +2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;; +2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;; +2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;; +2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;; +2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;; +2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;; +2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;; +2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;; +2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;; +2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;; +2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;; +2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;; +2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;; +2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;; +2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;; +2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;; +2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;; +2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;; +2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;; +2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;; +2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;; +2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;; +2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;; +2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;; +2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;; +2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;; +2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;; +2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;; +2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;; +2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;; +2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;; +2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;; +2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;; +2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;; +2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;; +2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;; +2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;; +2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;; +2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;; +2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;; +2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;; +2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;; +2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;; +2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;; +2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;; +2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;; +2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;; +2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;; +2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;; +2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;; +2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;; +2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;; +2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;; +2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;; +2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;; +2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;; +2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;; +2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;; +2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;; +2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;; +2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;; +2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;; +2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;; +2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;; +2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;; +2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;; +2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;; +2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;; +2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;; +2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;; +2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;; +2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;; +2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;; +2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;; +2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;; +2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;; +2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;; +2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;; +2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;; +2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;; +2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;; +2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;; +2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;; +2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;; +2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;; +2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;; +2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;; +2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;; +2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;; +2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;; +2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;; +2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;; +2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;; +2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;; +2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;; +2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;; +2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;; +2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;; +2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;; +2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;; +2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;; +2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;; +2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;; +2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;; +2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;; +2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;; +2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;; +2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;; +2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;; +2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;; +2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;; +2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;; +2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;; +2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;; +2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;; +2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;; +2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;; +2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;; +2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;; +2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;; +2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;; +2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;; +2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;; +2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;; +2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;; +2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;; +2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;; +2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;; +2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;; +2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;; +2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;; +2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;; +2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;; +2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;; +2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;; +2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;; +2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;; +2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;; +2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;; +2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;; +2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;; +2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;; +2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;; +2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;; +2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;; +2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;; +2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;; +2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;; +2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;; +2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;; +2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;; +2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;; +2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;; +2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;; +2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;; +2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;; +2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;; +2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;; +2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;; +2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;; +2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;; +2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;; +2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;; +2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;; +2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;; +2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;; +2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;; +2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;; +2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;; +2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;; +2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;; +2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;; +2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;; +2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;; +2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;; +2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;; +2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;; +2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;; +2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;; +2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;; +2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;; +2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;; +2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;; +2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;; +2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;; +2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;; +2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;; +2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;; +2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;; +2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;; +2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;; +2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;; +2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;; +2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;; +2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;; +2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;; +2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;; +2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;; +2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;; +2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;; +2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;; +2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;; +2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;; +2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;; +2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;; +2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;; +2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;; +2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;; +2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;; +2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;; +2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;; +2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;; +2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;; +2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;; +2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;; +2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;; +2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;; +2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;; +2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;; +2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;; +2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;; +2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;; +2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;; +2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;; +2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;; +2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;; +2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;; +2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;; +2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;; +2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;; +2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;; +2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;; +2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;; +2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;; +2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;; +2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;; +2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;; +2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;; +2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;; +2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;; +2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;; +2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;; +2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;; +2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;; +2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;; +2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;; +2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;; +2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;; +2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;; +2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;; +2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;; +2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;; +2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;; +2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;; +2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;; +2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;; +2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;; +2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;; +2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;; +2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;; +2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;; +2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;; +2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;; +2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;; +2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;; +2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;; +2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;; +2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;; +2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;; +2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;; +2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;; +2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;; +2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;; +2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;; +2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;; +2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;; +2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;; +2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;; +2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;; +2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;; +2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;; +2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;; +2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;; +2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;; +2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;; +2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;; +2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;; +2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;; +2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;; +2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;; +2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;; +2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;; +2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;; +2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;; +2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;; +2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;; +2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;; +2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;; +2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;; +2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;; +2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;; +2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;; +2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;; +2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;; +2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;; +2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;; +2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;; +2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;; +2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;; +2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;; +2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;; +2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;; +2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;; +2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;; +2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;; +2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;; +2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;; +2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;; +2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;; +2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;; +2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;; +2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;; +2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;; +2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;; +2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;; +2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;; +2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;; +2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;; +2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;; +2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;; +2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;; +2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;; +2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;; +2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;; +2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;; +2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;; +2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;; +2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;; +2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;; +2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;; +2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;; +2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;; +2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;; +2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;; +2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;; +2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;; +2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;; +2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;; +2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;; +2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;; +2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;; +2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;; +2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;; +2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;; +2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;; +2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;; +2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;; +2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;; +2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;; +2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;; +2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;; +2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;; +2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;; +2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;; +2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;; +2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; +2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; +2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; +E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; +E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; +E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; +E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;; +E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;; +E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;; +E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;; +E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;; +E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;; +E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;; +E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;; +E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;; +E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;; +E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;; +E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;; +E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;; +E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;; +E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;; +E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;; +E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;; +E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;; +E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;; +E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;; +E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;; +E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;; +E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;; +E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;; +E003A;TAG COLON;Cf;0;BN;;;;;N;;;;; +E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;; +E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;; +E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;; +E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;; +E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;; +E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;; +E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;; +E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;; +E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;; +E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;; +E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;; +E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;; +E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;; +E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;; +E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;; +E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;; +E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;; +E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;; +E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;; +E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;; +E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;; +E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;; +E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;; +E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;; +E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;; +E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;; +E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;; +E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;; +E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;; +E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;; +E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;; +E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;; +E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; +E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;; +E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; +E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;; +E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;; +E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;; +E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;; +E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;; +E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;; +E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;; +E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;; +E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;; +E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;; +E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;; +E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;; +E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;; +E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;; +E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;; +E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;; +E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;; +E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;; +E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;; +E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;; +E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;; +E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;; +E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;; +E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;; +E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;; +E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;; +E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;; +E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;; +E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;; +E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; +E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;; +E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; +E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;; +E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;; +E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;; +E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;; +E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;; +E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;; +E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;; +E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;; +E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;; +E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;; +E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;; +E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;; +E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;; +E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;; +E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;; +E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;; +E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;; +E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;; +E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;; +E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;; +E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;; +E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;; +E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;; +E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;; +E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;; +E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;; +E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;; +E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;; +E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;; +E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;; +E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;; +E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;; +E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;; +E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;; +E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;; +E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;; +E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;; +E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;; +E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;; +E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;; +E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;; +E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;; +E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;; +E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;; +E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;; +E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;; +E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;; +E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;; +E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;; +E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;; +E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;; +E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;; +E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;; +E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;; +E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;; +E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;; +E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;; +E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;; +E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;; +E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;; +E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;; +E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;; +E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;; +E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;; +E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;; +E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;; +E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;; +E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;; +E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;; +E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;; +E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;; +E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;; +E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;; +E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;; +E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;; +E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;; +E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;; +E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;; +E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;; +E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;; +E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;; +E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;; +E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;; +E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;; +E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;; +E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;; +E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;; +E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;; +E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;; +E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;; +E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;; +E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;; +E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;; +E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;; +E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;; +E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;; +E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;; +E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;; +E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;; +E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;; +E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;; +E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;; +E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;; +E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;; +E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;; +E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;; +E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;; +E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;; +E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;; +E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;; +E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;; +E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;; +E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;; +E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;; +E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;; +E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;; +E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;; +E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;; +E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;; +E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;; +E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;; +E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;; +E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;; +E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;; +E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;; +E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;; +E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;; +E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;; +E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;; +E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;; +E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;; +E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;; +E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;; +E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;; +E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;; +E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;; +E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;; +E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;; +E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;; +E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;; +E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;; +E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;; +E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;; +E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;; +E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;; +E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;; +E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;; +E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;; +E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;; +E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;; +E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;; +E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;; +E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;; +E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;; +E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;; +E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;; +E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;; +E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;; +E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;; +E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;; +E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;; +E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;; +E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;; +E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;; +E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;; +E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;; +E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;; +E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;; +E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;; +E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;; +E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;; +E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;; +E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;; +E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;; +E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;; +E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;; +E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;; +E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;; +E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;; +E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;; +E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;; +E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;; +E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;; +E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;; +E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;; +E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;; +E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;; +E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;; +E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;; +E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;; +E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;; +E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;; +E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;; +E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;; +E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;; +E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;; +E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;; +E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;; +E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;; +E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;; +E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;; +E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;; +E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;; +E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;; +E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;; +E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;; +E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;; +E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;; +E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;; +E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;; +E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;; +E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;; +E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;; +E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;; +E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;; +E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;; +E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;; +E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;; +E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;; +E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;; +E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;; +E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;; +E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;; +E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;; +E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;; +E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;; +E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;; +E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;; +E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;; +E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;; +E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;; +E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;; +E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;; +E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;; +E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;; +E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;; +E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;; +E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;; +E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;; +E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;; +E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;; +E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;; diff --git a/gettext-tools/gnulib-tests/uniname/test-uninames.c b/gettext-tools/gnulib-tests/uniname/test-uninames.c new file mode 100644 index 0000000..a11e82b --- /dev/null +++ b/gettext-tools/gnulib-tests/uniname/test-uninames.c @@ -0,0 +1,262 @@ +/* Test the Unicode character name functions. + Copyright (C) 2000-2003, 2005, 2007, 2009-2014 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "xalloc.h" +#include "uniname.h" +#include "progname.h" + +/* The names according to the UnicodeData.txt file, modified to contain the + Hangul syllable names, as described in the Unicode 3.0 book. */ +const char * unicode_names [0x110000]; + +/* Maximum length of a field in the UnicodeData.txt file. */ +#define FIELDLEN 120 + +/* Reads the next field from STREAM. The buffer BUFFER has size FIELDLEN. + Reads up to (but excluding) DELIM. + Returns 1 when a field was successfully read, otherwise 0. */ +static int +getfield (FILE *stream, char *buffer, int delim) +{ + int count = 0; + int c; + + for (; (c = getc (stream)), (c != EOF && c != delim); ) + { + /* Put c into the buffer. */ + if (++count >= FIELDLEN - 1) + { + fprintf (stderr, "field too long\n"); + exit (EXIT_FAILURE); + } + *buffer++ = c; + } + + if (c == EOF) + return 0; + + *buffer = '\0'; + return 1; +} + +/* Stores in unicode_names[] the relevant contents of the UnicodeData.txt + file. */ +static void +fill_names (const char *unicodedata_filename) +{ + unsigned int i; + FILE *stream; + char field0[FIELDLEN]; + char field1[FIELDLEN]; + int lineno = 0; + + for (i = 0; i < 0x110000; i++) + unicode_names[i] = NULL; + + stream = fopen (unicodedata_filename, "r"); + if (stream == NULL) + { + fprintf (stderr, "error during fopen of '%s'\n", unicodedata_filename); + exit (EXIT_FAILURE); + } + + for (;;) + { + int n; + int c; + + lineno++; + n = getfield (stream, field0, ';'); + n += getfield (stream, field1, ';'); + if (n == 0) + break; + if (n != 2) + { + fprintf (stderr, "short line in '%s':%d\n", + unicodedata_filename, lineno); + exit (EXIT_FAILURE); + } + for (; (c = getc (stream)), (c != EOF && c != '\n'); ) + ; + i = strtoul (field0, NULL, 16); + if (i >= 0x110000) + { + fprintf (stderr, "index too large\n"); + exit (EXIT_FAILURE); + } + unicode_names[i] = xstrdup (field1); + } + if (ferror (stream) || fclose (stream)) + { + fprintf (stderr, "error reading from '%s'\n", unicodedata_filename); + exit (1); + } +} + +/* Perform an exhaustive test of the unicode_character_name function. */ +static int +test_name_lookup () +{ + int error = 0; + unsigned int i; + char buf[UNINAME_MAX]; + + for (i = 0; i < 0x11000; i++) + { + char *result = unicode_character_name (i, buf); + + if (unicode_names[i] != NULL) + { + if (result == NULL) + { + fprintf (stderr, "\\u%04X name lookup failed!\n", i); + error = 1; + } + else if (strcmp (result, unicode_names[i]) != 0) + { + fprintf (stderr, "\\u%04X name lookup returned wrong name: %s\n", + i, result); + error = 1; + } + } + else + { + if (result != NULL) + { + fprintf (stderr, "\\u%04X name lookup returned wrong name: %s\n", + i, result); + error = 1; + } + } + } + + for (i = 0x110000; i < 0x1000000; i++) + { + char *result = unicode_character_name (i, buf); + + if (result != NULL) + { + fprintf (stderr, "\\u%04X name lookup returned wrong name: %s\n", + i, result); + error = 1; + } + } + + return error; +} + +/* Perform a test of the unicode_name_character function. */ +static int +test_inverse_lookup () +{ + int error = 0; + unsigned int i; + + /* First, verify all valid character names are recognized. */ + for (i = 0; i < 0x110000; i++) + if (unicode_names[i] != NULL) + { + unsigned int result = unicode_name_character (unicode_names[i]); + if (result != i) + { + if (result == UNINAME_INVALID) + fprintf (stderr, "inverse name lookup of \"%s\" failed\n", + unicode_names[i]); + else + fprintf (stderr, + "inverse name lookup of \"%s\" returned 0x%04X\n", + unicode_names[i], result); + error = 1; + } + } + + /* Second, generate random but likely names and verify they are not + recognized unless really valid. */ + for (i = 0; i < 10000; i++) + { + unsigned int i1, i2; + const char *s1; + const char *s2; + unsigned int l1, l2, j1, j2; + char buf[2*UNINAME_MAX]; + unsigned int result; + + do i1 = ((rand () % 0x11) << 16) + + ((rand () & 0xff) << 8) + + (rand () & 0xff); + while (unicode_names[i1] == NULL); + + do i2 = ((rand () % 0x11) << 16) + + ((rand () & 0xff) << 8) + + (rand () & 0xff); + while (unicode_names[i2] == NULL); + + s1 = unicode_names[i1]; + l1 = strlen (s1); + s2 = unicode_names[i2]; + l2 = strlen (s2); + + /* Concatenate a starting piece of s1 with an ending piece of s2. */ + for (j1 = 1; j1 <= l1; j1++) + if (j1 == l1 || s1[j1] == ' ') + for (j2 = 0; j2 < l2; j2++) + if (j2 == 0 || s2[j2-1] == ' ') + { + memcpy (buf, s1, j1); + buf[j1] = ' '; + memcpy (buf + j1 + 1, s2 + j2, l2 - j2 + 1); + + result = unicode_name_character (buf); + if (result != UNINAME_INVALID + && !(unicode_names[result] != NULL + && strcmp (unicode_names[result], buf) == 0)) + { + fprintf (stderr, + "inverse name lookup of \"%s\" returned 0x%04X\n", + unicode_names[i], result); + error = 1; + } + } + } + + /* Third, some extreme case that used to loop. */ + if (unicode_name_character ("A A") != UNINAME_INVALID) + error = 1; + + return error; +} + +int +main (int argc, char *argv[]) +{ + int error = 0; + + set_program_name (argv[0]); + + fill_names (argv[1]); + + error |= test_name_lookup (); + error |= test_inverse_lookup (); + + return error; +} diff --git a/gettext-tools/gnulib-tests/uniname/test-uninames.sh b/gettext-tools/gnulib-tests/uniname/test-uninames.sh new file mode 100755 index 0000000..f26c275 --- /dev/null +++ b/gettext-tools/gnulib-tests/uniname/test-uninames.sh @@ -0,0 +1,2 @@ +#!/bin/sh +exec ./test-uninames${EXEEXT} "$srcdir/uniname/UnicodeDataNames.txt" diff --git a/gettext-tools/gnulib-tests/unistr/test-cmp.h b/gettext-tools/gnulib-tests/unistr/test-cmp.h new file mode 100644 index 0000000..cb06729 --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/test-cmp.h @@ -0,0 +1,97 @@ +/* Test of uN_cmp() functions. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Simon Josefsson and Bruno Haible <bruno@clisp.org>, 2010. */ + +static void +test_cmp (void) +{ + /* Test equal / not equal distinction. */ + ASSERT (U_CMP (zerosize_ptr (), zerosize_ptr (), 0) == 0); + { + static const UNIT input1[] = { 'f', 'o', 'o', 0 }; + static const UNIT input2[] = { 'f', 'o', 'o', 'b', 'a', 'r', 0 }; + ASSERT (U_CMP (input1, input2, 2) == 0); + ASSERT (U_CMP (input1, input2, 3) == 0); + ASSERT (U_CMP (input1, input2, 4) != 0); + } + { + static const UNIT input1[] = { 'f', 'o', 'o', 0 }; + static const UNIT input2[] = { 'b', 'a', 'r', 0 }; + ASSERT (U_CMP (input1, input2, 1) != 0); + ASSERT (U_CMP (input1, input2, 3) != 0); + } + + /* Test less / equal / greater distinction. */ + { + static const UNIT input1[] = { 'f', 'o', 'o', 0 }; + static const UNIT input2[] = { 'm', 'o', 'o', 0 }; + ASSERT (U_CMP (input1, input2, 4) < 0); + ASSERT (U_CMP (input2, input1, 4) > 0); + } + { + static const UNIT input1[] = { 'o', 'o', 'm', 'p', 'h', 0 }; + static const UNIT input2[] = { 'o', 'o', 'p', 's', 0 }; + ASSERT (U_CMP (input1, input2, 3) < 0); + ASSERT (U_CMP (input2, input1, 3) > 0); + } + { + static const UNIT input1[] = { 'f', 'o', 'o', 0 }; + static const UNIT input2[] = { 'f', 'o', 'o', 'b', 'a', 'r', 0 }; + ASSERT (U_CMP (input1, input2, 4) < 0); + ASSERT (U_CMP (input2, input1, 4) > 0); + } + + /* Some old versions of memcmp were not 8-bit clean. */ + { + static const UNIT input1[] = { 0x40 }; + static const UNIT input2[] = { 0xC2 }; + ASSERT (U_CMP (input1, input2, 1) < 0); + ASSERT (U_CMP (input2, input1, 1) > 0); + } + { + static const UNIT input1[] = { 0xC2 }; + static const UNIT input2[] = { 0xC3 }; + ASSERT (U_CMP (input1, input2, 1) < 0); + ASSERT (U_CMP (input2, input1, 1) > 0); + } + + /* The Next x86 OpenStep bug shows up only when comparing 16 bytes + or more and with at least one buffer not starting on a 4-byte boundary. + William Lewis provided this test program. */ + { + UNIT foo[21]; + UNIT bar[21]; + int i; + for (i = 0; i < 4; i++) + { + UNIT *a = foo + i; + UNIT *b = bar + i; + int j; + for (j = 0; j < 8; j++) + a[j] = '-'; + a[8] = '0'; + for (j = 9; j < 16; j++) + a[j] = '1'; + for (j = 0; j < 8; j++) + b[j] = '-'; + b[8] = '1'; + for (j = 9; j < 16; j++) + b[j] = '0'; + ASSERT (U_CMP (a, b, 16) < 0); + } + } +} diff --git a/gettext-tools/gnulib-tests/unistr/test-u16-mbtouc.c b/gettext-tools/gnulib-tests/unistr/test-u16-mbtouc.c new file mode 100644 index 0000000..2c21f06 --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/test-u16-mbtouc.c @@ -0,0 +1,33 @@ +/* Test of u16_mbtouc() function. + Copyright (C) 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2010. */ + +#include <config.h> + +#include "unistr.h" + +#include "macros.h" + +#include "test-u16-mbtouc.h" + +int +main () +{ + test_function (u16_mbtouc); + + return 0; +} diff --git a/gettext-tools/gnulib-tests/unistr/test-u16-mbtouc.h b/gettext-tools/gnulib-tests/unistr/test-u16-mbtouc.h new file mode 100644 index 0000000..29ba51c --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/test-u16-mbtouc.h @@ -0,0 +1,82 @@ +/* Test of u16_mbtouc() and u16_mbtouc_unsafe() functions. + Copyright (C) 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2010. */ + +static void +test_function (int (*my_u16_mbtouc) (ucs4_t *, const uint16_t *, size_t)) +{ + ucs4_t uc; + int ret; + + /* Test NUL unit input. */ + { + static const uint16_t input[] = { 0 }; + uc = 0xBADFACE; + ret = my_u16_mbtouc (&uc, input, 1); + ASSERT (ret == 1); + ASSERT (uc == 0); + } + + /* Test ISO 646 unit input. */ + { + ucs4_t c; + uint16_t buf[1]; + + for (c = 0; c < 0x80; c++) + { + buf[0] = c; + uc = 0xBADFACE; + ret = my_u16_mbtouc (&uc, buf, 1); + ASSERT (ret == 1); + ASSERT (uc == c); + } + } + + /* Test BMP unit input. */ + { + static const uint16_t input[] = { 0x20AC }; + uc = 0xBADFACE; + ret = my_u16_mbtouc (&uc, input, 1); + ASSERT (ret == 1); + ASSERT (uc == 0x20AC); + } + + /* Test 2-units character input. */ + { + static const uint16_t input[] = { 0xD835, 0xDD1F }; + uc = 0xBADFACE; + ret = my_u16_mbtouc (&uc, input, 2); + ASSERT (ret == 2); + ASSERT (uc == 0x1D51F); + } + + /* Test incomplete/invalid 1-unit input. */ + { + static const uint16_t input[] = { 0xD835 }; + uc = 0xBADFACE; + ret = my_u16_mbtouc (&uc, input, 1); + ASSERT (ret == 1 || ret == 2); + ASSERT (uc == 0xFFFD); + } + { + static const uint16_t input[] = { 0xDD1F }; + uc = 0xBADFACE; + ret = my_u16_mbtouc (&uc, input, 1); + ASSERT (ret == 1); + ASSERT (uc == 0xFFFD); + } +} diff --git a/gettext-tools/gnulib-tests/unistr/test-u8-check.c b/gettext-tools/gnulib-tests/unistr/test-u8-check.c new file mode 100644 index 0000000..60fc684 --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/test-u8-check.c @@ -0,0 +1,188 @@ +/* Test of u8_check() function. + Copyright (C) 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2010. */ + +#include <config.h> + +#include "unistr.h" + +#include "macros.h" + +int +main () +{ + /* Test empty string. */ + { + static const uint8_t input[] = ""; + ASSERT (u8_check (input, 0) == NULL); + } + + /* Test valid non-empty string. */ + { + static const uint8_t input[] = /* "Данило Шеган" */ + "\320\224\320\260\320\275\320\270\320\273\320\276 \320\250\320\265\320\263\320\260\320\275"; + ASSERT (u8_check (input, sizeof (input) - 1) == NULL); + } + + /* Test out-of-range character with 4 bytes: U+110000. */ + { + static const uint8_t input[] = "\320\224\320\260\364\220\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test out-of-range character with 5 bytes: U+200000. */ + { + static const uint8_t input[] = "\320\224\320\260\370\210\200\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test out-of-range character with 6 bytes: U+4000000. */ + { + static const uint8_t input[] = "\320\224\320\260\374\204\200\200\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test invalid lead byte. */ + { + static const uint8_t input[] = "\320\224\320\260\376\200\200\200\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\377\200\200\200\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test overlong 2-byte character. */ + { + static const uint8_t input[] = "\320\224\320\260\301\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test overlong 3-byte character. */ + { + static const uint8_t input[] = "\320\224\320\260\340\200\277"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test overlong 4-byte character. */ + { + static const uint8_t input[] = "\320\224\320\260\360\200\277\277"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test invalid bytes in 2-byte character. */ + { + static const uint8_t input[] = "\320\224\320\260\302\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == NULL); + } + { + static const uint8_t input[] = "\320\224\320\260\302\100"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\302\300"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test invalid bytes in 3-byte character. */ + { + static const uint8_t input[] = "\320\224\320\260\342\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == NULL); + } + { + static const uint8_t input[] = "\320\224\320\260\342\100\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\342\300\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\342\200\100"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\342\200\300"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test invalid bytes in 4-byte character. */ + { + static const uint8_t input[] = "\320\224\320\260\362\200\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == NULL); + } + { + static const uint8_t input[] = "\320\224\320\260\362\100\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\362\300\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\362\200\100\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\362\200\300\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\362\200\200\100"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\362\200\200\300"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test truncated/incomplete 2-byte character. */ + { + static const uint8_t input[] = "\320\224\320\260\302"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test truncated/incomplete 3-byte character. */ + { + static const uint8_t input[] = "\320\224\320\260\342\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test truncated/incomplete 4-byte character. */ + { + static const uint8_t input[] = "\320\224\320\260\362\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test missing lead byte. */ + { + static const uint8_t input[] = "\320\224\320\260\200\200\200\200\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + /* Test surrogate codepoints. */ + { + static const uint8_t input[] = "\320\224\320\260\355\240\200\355\260\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + { + static const uint8_t input[] = "\320\224\320\260\355\260\200"; + ASSERT (u8_check (input, sizeof (input) - 1) == input + 4); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/unistr/test-u8-cmp.c b/gettext-tools/gnulib-tests/unistr/test-u8-cmp.c new file mode 100644 index 0000000..536695b --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/test-u8-cmp.c @@ -0,0 +1,45 @@ +/* Test of u8_cmp() function. + Copyright (C) 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2010. */ + +#include <config.h> + +#include "unistr.h" + +#include "zerosize-ptr.h" +#include "macros.h" + +#define UNIT uint8_t +#define U_CMP u8_cmp +#define MAGIC 0xBA +#include "test-cmp.h" + +int +main () +{ + test_cmp (); + + /* Test comparison with non-BMP characters. */ + { + static const UNIT input1[] = { 0xF0, 0x9D, 0x94, 0x9E }; + static const UNIT input2[] = { 0xEF, 0xBB, 0xBF, 0x00 }; + ASSERT (U_CMP (input1, input2, 4) > 0); + ASSERT (U_CMP (input2, input1, 4) < 0); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/unistr/test-u8-mblen.c b/gettext-tools/gnulib-tests/unistr/test-u8-mblen.c new file mode 100644 index 0000000..d50431e --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/test-u8-mblen.c @@ -0,0 +1,155 @@ +/* Test of u8_mblen() function. + Copyright (C) 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2010. */ + +#include <config.h> + +#include "unistr.h" + +#include "macros.h" + +int +main () +{ + int ret; + + /* Test zero-length input. */ + { + static const uint8_t input[] = ""; + ret = u8_mblen (input, 0); + ASSERT (ret == -1); + } + + /* Test NUL unit input. */ + { + static const uint8_t input[] = ""; + ret = u8_mblen (input, 1); + ASSERT (ret == 0); + } + + /* Test ISO 646 unit input. */ + { + ucs4_t c; + uint8_t buf[1]; + + for (c = 1; c < 0x80; c++) + { + buf[0] = c; + ret = u8_mblen (buf, 1); + ASSERT (ret == 1); + } + } + + /* Test 2-byte character input. */ + { + static const uint8_t input[] = { 0xC3, 0x97 }; + ret = u8_mblen (input, 2); + ASSERT (ret == 2); + } + + /* Test 3-byte character input. */ + { + static const uint8_t input[] = { 0xE2, 0x82, 0xAC }; + ret = u8_mblen (input, 3); + ASSERT (ret == 3); + } + + /* Test 4-byte character input. */ + { + static const uint8_t input[] = { 0xF4, 0x8F, 0xBF, 0xBD }; + ret = u8_mblen (input, 4); + ASSERT (ret == 4); + } + + /* Test incomplete/invalid 1-byte input. */ + { + static const uint8_t input[] = { 0xC1 }; + ret = u8_mblen (input, 1); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xC3 }; + ret = u8_mblen (input, 1); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xE2 }; + ret = u8_mblen (input, 1); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xF4 }; + ret = u8_mblen (input, 1); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xFE }; + ret = u8_mblen (input, 1); + ASSERT (ret == -1); + } + + /* Test incomplete/invalid 2-byte input. */ + { + static const uint8_t input[] = { 0xE0, 0x9F }; + ret = u8_mblen (input, 2); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xE2, 0x82 }; + ret = u8_mblen (input, 2); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xE2, 0xD0 }; + ret = u8_mblen (input, 2); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xF0, 0x8F }; + ret = u8_mblen (input, 2); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xF3, 0x8F }; + ret = u8_mblen (input, 2); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xF3, 0xD0 }; + ret = u8_mblen (input, 2); + ASSERT (ret == -1); + } + + /* Test incomplete/invalid 3-byte input. */ + { + static const uint8_t input[] = { 0xF3, 0x8F, 0xBF }; + ret = u8_mblen (input, 3); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xF3, 0xD0, 0xBF }; + ret = u8_mblen (input, 3); + ASSERT (ret == -1); + } + { + static const uint8_t input[] = { 0xF3, 0x8F, 0xD0 }; + ret = u8_mblen (input, 3); + ASSERT (ret == -1); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/unistr/test-u8-mbtoucr.c b/gettext-tools/gnulib-tests/unistr/test-u8-mbtoucr.c new file mode 100644 index 0000000..a551130 --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/test-u8-mbtoucr.c @@ -0,0 +1,187 @@ +/* Test of u8_mbtoucr() function. + Copyright (C) 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2010. */ + +#include <config.h> + +#include "unistr.h" + +#include "macros.h" + +int +main () +{ + ucs4_t uc; + int ret; + + /* Test NUL unit input. */ + { + static const uint8_t input[] = ""; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 1); + ASSERT (ret == 1); + ASSERT (uc == 0); + } + + /* Test ISO 646 unit input. */ + { + ucs4_t c; + uint8_t buf[1]; + + for (c = 0; c < 0x80; c++) + { + buf[0] = c; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, buf, 1); + ASSERT (ret == 1); + ASSERT (uc == c); + } + } + + /* Test 2-byte character input. */ + { + static const uint8_t input[] = { 0xC3, 0x97 }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 2); + ASSERT (ret == 2); + ASSERT (uc == 0x00D7); + } + + /* Test 3-byte character input. */ + { + static const uint8_t input[] = { 0xE2, 0x82, 0xAC }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 3); + ASSERT (ret == 3); + ASSERT (uc == 0x20AC); + } + + /* Test 4-byte character input. */ + { + static const uint8_t input[] = { 0xF4, 0x8F, 0xBF, 0xBD }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 4); + ASSERT (ret == 4); + ASSERT (uc == 0x10FFFD); + } + + /* Test incomplete/invalid 1-byte input. */ + { + static const uint8_t input[] = { 0xC1 }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 1); + ASSERT (ret == -1); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xC3 }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 1); + ASSERT (ret == -2); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xE2 }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 1); + ASSERT (ret == -2); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xF4 }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 1); + ASSERT (ret == -2); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xFE }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 1); + ASSERT (ret == -1); + ASSERT (uc == 0xFFFD); + } + + /* Test incomplete/invalid 2-byte input. */ + { + static const uint8_t input[] = { 0xE0, 0x9F }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 2); + ASSERT (ret == -1); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xE2, 0x82 }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 2); + ASSERT (ret == -2); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xE2, 0xD0 }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 2); + ASSERT (ret == -1); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xF0, 0x8F }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 2); + ASSERT (ret == -1); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xF3, 0x8F }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 2); + ASSERT (ret == -2); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xF3, 0xD0 }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 2); + ASSERT (ret == -1); + ASSERT (uc == 0xFFFD); + } + + /* Test incomplete/invalid 3-byte input. */ + { + static const uint8_t input[] = { 0xF3, 0x8F, 0xBF }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 3); + ASSERT (ret == -2); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xF3, 0xD0, 0xBF }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 3); + ASSERT (ret == -1); + ASSERT (uc == 0xFFFD); + } + { + static const uint8_t input[] = { 0xF3, 0x8F, 0xD0 }; + uc = 0xBADFACE; + ret = u8_mbtoucr (&uc, input, 3); + ASSERT (ret == -1); + ASSERT (uc == 0xFFFD); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/unistr/test-u8-prev.c b/gettext-tools/gnulib-tests/unistr/test-u8-prev.c new file mode 100644 index 0000000..34f94e1 --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/test-u8-prev.c @@ -0,0 +1,315 @@ +/* Test of u8_prev() function. + Copyright (C) 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2010. */ + +#include <config.h> + +#include "unistr.h" + +#include "macros.h" + +static int +check (const uint8_t *input, size_t input_length, ucs4_t *puc) +{ + ucs4_t uc; + + /* Test recognition when at the beginning of the string. */ + if (u8_prev (&uc, input + input_length, input) != input) + return 1; + + /* Test recognition when preceded by a 1-unit character. */ + { + uint8_t buf[100]; + uint8_t *ptr; + size_t i; + ucs4_t uc1; + + ptr = buf; + *ptr++ = 'x'; + for (i = 0; i < input_length; i++) + ptr[i] = input[i]; + + if (u8_prev (&uc1, ptr + input_length, buf) != ptr) + return 2; + if (uc1 != uc) + return 3; + } + + /* Test recognition when preceded by a 2-unit character. */ + { + uint8_t buf[100]; + uint8_t *ptr; + size_t i; + ucs4_t uc1; + + ptr = buf; + *ptr++ = 0xC3; + *ptr++ = 0x97; + for (i = 0; i < input_length; i++) + ptr[i] = input[i]; + + if (u8_prev (&uc1, ptr + input_length, buf) != ptr) + return 4; + if (uc1 != uc) + return 5; + } + + /* Test recognition when preceded by a 3-unit character. */ + { + uint8_t buf[100]; + uint8_t *ptr; + size_t i; + ucs4_t uc1; + + ptr = buf; + *ptr++ = 0xE2; + *ptr++ = 0x84; + *ptr++ = 0x82; + for (i = 0; i < input_length; i++) + ptr[i] = input[i]; + + if (u8_prev (&uc1, ptr + input_length, buf) != ptr) + return 6; + if (uc1 != uc) + return 7; + } + + /* Test recognition when preceded by a 4-unit character. */ + { + uint8_t buf[100]; + uint8_t *ptr; + size_t i; + ucs4_t uc1; + + ptr = buf; + *ptr++ = 0xF0; + *ptr++ = 0x9D; + *ptr++ = 0x94; + *ptr++ = 0x9E; + for (i = 0; i < input_length; i++) + ptr[i] = input[i]; + + if (u8_prev (&uc1, ptr + input_length, buf) != ptr) + return 8; + if (uc1 != uc) + return 9; + } + + *puc = uc; + return 0; +} + +static int +check_invalid (const uint8_t *input, size_t input_length) +{ + ucs4_t uc; + + /* Test recognition when at the beginning of the string. */ + uc = 0xBADFACE; + if (u8_prev (&uc, input + input_length, input) != NULL) + return 1; + if (uc != 0xBADFACE) + return 2; + + /* Test recognition when preceded by a 1-unit character. */ + { + uint8_t buf[100]; + uint8_t *ptr; + size_t i; + + ptr = buf; + *ptr++ = 'x'; + for (i = 0; i < input_length; i++) + ptr[i] = input[i]; + + uc = 0xBADFACE; + if (u8_prev (&uc, ptr + input_length, buf) != NULL) + return 3; + if (uc != 0xBADFACE) + return 4; + } + + /* Test recognition when preceded by a 2-unit character. */ + { + uint8_t buf[100]; + uint8_t *ptr; + size_t i; + + ptr = buf; + *ptr++ = 0xC3; + *ptr++ = 0x97; + for (i = 0; i < input_length; i++) + ptr[i] = input[i]; + + uc = 0xBADFACE; + if (u8_prev (&uc, ptr + input_length, buf) != NULL) + return 5; + if (uc != 0xBADFACE) + return 6; + } + + /* Test recognition when preceded by a 3-unit character. */ + { + uint8_t buf[100]; + uint8_t *ptr; + size_t i; + + ptr = buf; + *ptr++ = 0xE2; + *ptr++ = 0x84; + *ptr++ = 0x82; + for (i = 0; i < input_length; i++) + ptr[i] = input[i]; + + uc = 0xBADFACE; + if (u8_prev (&uc, ptr + input_length, buf) != NULL) + return 7; + if (uc != 0xBADFACE) + return 8; + } + + /* Test recognition when preceded by a 4-unit character. */ + { + uint8_t buf[100]; + uint8_t *ptr; + size_t i; + + ptr = buf; + *ptr++ = 0xF0; + *ptr++ = 0x9D; + *ptr++ = 0x94; + *ptr++ = 0x9E; + for (i = 0; i < input_length; i++) + ptr[i] = input[i]; + + uc = 0xBADFACE; + if (u8_prev (&uc, ptr + input_length, buf) != NULL) + return 9; + if (uc != 0xBADFACE) + return 10; + } + + return 0; +} + +int +main () +{ + ucs4_t uc; + + /* Test ISO 646 unit input. */ + { + ucs4_t c; + uint8_t buf[1]; + + for (c = 0; c < 0x80; c++) + { + buf[0] = c; + uc = 0xBADFACE; + ASSERT (check (buf, 1, &uc) == 0); + ASSERT (uc == c); + } + } + + /* Test 2-byte character input. */ + { + static const uint8_t input[] = { 0xC3, 0x97 }; + uc = 0xBADFACE; + ASSERT (check (input, SIZEOF (input), &uc) == 0); + ASSERT (uc == 0x00D7); + } + + /* Test 3-byte character input. */ + { + static const uint8_t input[] = { 0xE2, 0x82, 0xAC }; + uc = 0xBADFACE; + ASSERT (check (input, SIZEOF (input), &uc) == 0); + ASSERT (uc == 0x20AC); + } + + /* Test 4-byte character input. */ + { + static const uint8_t input[] = { 0xF4, 0x8F, 0xBF, 0xBD }; + uc = 0xBADFACE; + ASSERT (check (input, SIZEOF (input), &uc) == 0); + ASSERT (uc == 0x10FFFD); + } + + /* Test incomplete/invalid 1-byte input. */ + { + static const uint8_t input[] = { 0xC1 }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xC3 }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xE2 }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xF4 }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xFE }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + + /* Test incomplete/invalid 2-byte input. */ + { + static const uint8_t input[] = { 0xE0, 0x9F }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xE2, 0x82 }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xE2, 0xD0 }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xF0, 0x8F }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xF3, 0x8F }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xF3, 0xD0 }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + + /* Test incomplete/invalid 3-byte input. */ + { + static const uint8_t input[] = { 0xF3, 0x8F, 0xBF }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xF3, 0xE4, 0xBF }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + { + static const uint8_t input[] = { 0xF3, 0x8F, 0xD0 }; + ASSERT (check_invalid (input, SIZEOF (input)) == 0); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/unistr/test-u8-strlen.c b/gettext-tools/gnulib-tests/unistr/test-u8-strlen.c new file mode 100644 index 0000000..74e5fb0 --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/test-u8-strlen.c @@ -0,0 +1,50 @@ +/* Test of u8_strlen() function. + Copyright (C) 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2010. */ + +#include <config.h> + +#include "unistr.h" + +#include "macros.h" + +int +main () +{ + /* Empty string. */ + { + static const uint8_t input[] = { 0 }; + ASSERT (u8_strlen (input) == 0); + } + + /* Simple string. */ + { /* "Grüß Gott. Здравствуйте! x=(-b±sqrt(b²-4ac))/(2a) 日本語,中文,한글" */ + static const uint8_t input[] = + { 'G', 'r', 0xC3, 0xBC, 0xC3, 0x9F, ' ', 'G', 'o', 't', 't', '.', ' ', + 0xD0, 0x97, 0xD0, 0xB4, 0xD1, 0x80, 0xD0, 0xB0, 0xD0, 0xB2, 0xD1, 0x81, + 0xD1, 0x82, 0xD0, 0xB2, 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5, + '!', ' ', 'x', '=', '(', '-', 'b', 0xC2, 0xB1, 's', 'q', 'r', 't', '(', + 'b', 0xC2, 0xB2, '-', '4', 'a', 'c', ')', ')', '/', '(', '2', 'a', ')', + ' ', ' ', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, 0xAC, 0xE8, 0xAA, 0x9E, ',', + 0xE4, 0xB8, 0xAD, 0xE6, 0x96, 0x87, ',', + 0xED, 0x95, 0x9C, 0xEA, 0xB8, 0x80, '\0' + }; + ASSERT (u8_strlen (input) == SIZEOF (input) - 1); + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/unistr/test-u8-uctomb.c b/gettext-tools/gnulib-tests/unistr/test-u8-uctomb.c new file mode 100644 index 0000000..cec9216 --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/test-u8-uctomb.c @@ -0,0 +1,157 @@ +/* Test of u8_uctomb() function. + Copyright (C) 2010-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2010. */ + +#include <config.h> + +#include "unistr.h" + +#include "macros.h" + +#define MAGIC 0xBA + +int +main () +{ + /* Test ISO 646 character, in particular the NUL character. */ + { + ucs4_t uc; + + for (uc = 0; uc < 0x80; uc++) + { + uint8_t buf[5] = { MAGIC, MAGIC, MAGIC, MAGIC, MAGIC }; + int ret; + + ret = u8_uctomb (buf, uc, 0); + ASSERT (ret == -2); + ASSERT (buf[0] == MAGIC); + + ret = u8_uctomb (buf, uc, 1); + ASSERT (ret == 1); + ASSERT (buf[0] == uc); + ASSERT (buf[1] == MAGIC); + } + } + + /* Test 2-byte character. */ + { + ucs4_t uc = 0x00D7; + uint8_t buf[5] = { MAGIC, MAGIC, MAGIC, MAGIC, MAGIC }; + int ret; + + ret = u8_uctomb (buf, uc, 0); + ASSERT (ret == -2); + ASSERT (buf[0] == MAGIC); + + ret = u8_uctomb (buf, uc, 1); + ASSERT (ret == -2); + ASSERT (buf[0] == MAGIC); + + ret = u8_uctomb (buf, uc, 2); + ASSERT (ret == 2); + ASSERT (buf[0] == 0xC3); + ASSERT (buf[1] == 0x97); + ASSERT (buf[2] == MAGIC); + } + + /* Test 3-byte character. */ + { + ucs4_t uc = 0x20AC; + uint8_t buf[5] = { MAGIC, MAGIC, MAGIC, MAGIC, MAGIC }; + int ret; + + ret = u8_uctomb (buf, uc, 0); + ASSERT (ret == -2); + ASSERT (buf[0] == MAGIC); + + ret = u8_uctomb (buf, uc, 1); + ASSERT (ret == -2); + ASSERT (buf[0] == MAGIC); + + ret = u8_uctomb (buf, uc, 2); + ASSERT (ret == -2); + ASSERT (buf[0] == MAGIC); + ASSERT (buf[1] == MAGIC); + + ret = u8_uctomb (buf, uc, 3); + ASSERT (ret == 3); + ASSERT (buf[0] == 0xE2); + ASSERT (buf[1] == 0x82); + ASSERT (buf[2] == 0xAC); + ASSERT (buf[3] == MAGIC); + } + + /* Test 4-byte character. */ + { + ucs4_t uc = 0x10FFFD; + uint8_t buf[5] = { MAGIC, MAGIC, MAGIC, MAGIC, MAGIC }; + int ret; + + ret = u8_uctomb (buf, uc, 0); + ASSERT (ret == -2); + ASSERT (buf[0] == MAGIC); + + ret = u8_uctomb (buf, uc, 1); + ASSERT (ret == -2); + ASSERT (buf[0] == MAGIC); + + ret = u8_uctomb (buf, uc, 2); + ASSERT (ret == -2); + ASSERT (buf[0] == MAGIC); + ASSERT (buf[1] == MAGIC); + + ret = u8_uctomb (buf, uc, 3); + ASSERT (ret == -2); + ASSERT (buf[0] == MAGIC); + ASSERT (buf[1] == MAGIC); + ASSERT (buf[2] == MAGIC); + + ret = u8_uctomb (buf, uc, 4); + ASSERT (ret == 4); + ASSERT (buf[0] == 0xF4); + ASSERT (buf[1] == 0x8F); + ASSERT (buf[2] == 0xBF); + ASSERT (buf[3] == 0xBD); + ASSERT (buf[4] == MAGIC); + } + + /* Test invalid characters. */ + { + ucs4_t invalid[] = { 0x110000, 0xD800, 0xDBFF, 0xDC00, 0xDFFF }; + uint8_t buf[5] = { MAGIC, MAGIC, MAGIC, MAGIC, MAGIC }; + size_t i; + + for (i = 0; i < SIZEOF (invalid); i++) + { + ucs4_t uc = invalid[i]; + int n; + + for (n = 0; n <= 4; n++) + { + int ret = u8_uctomb (buf, uc, n); + ASSERT (ret == -1); + ASSERT (buf[0] == MAGIC); + ASSERT (buf[1] == MAGIC); + ASSERT (buf[2] == MAGIC); + ASSERT (buf[3] == MAGIC); + ASSERT (buf[4] == MAGIC); + } + } + } + + return 0; +} diff --git a/gettext-tools/gnulib-tests/unistr/u8-cmp.c b/gettext-tools/gnulib-tests/unistr/u8-cmp.c new file mode 100644 index 0000000..a342c98 --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/u8-cmp.c @@ -0,0 +1,30 @@ +/* Compare pieces of UTF-8 strings. + Copyright (C) 2002, 2006, 2009-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2002. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include "unistr.h" + +#include <string.h> + +int +u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n) +{ + /* Use the fact that the UTF-8 encoding preserves lexicographic order. */ + return memcmp ((const char *) s1, (const char *) s2, n); +} diff --git a/gettext-tools/gnulib-tests/unistr/u8-strlen.c b/gettext-tools/gnulib-tests/unistr/u8-strlen.c new file mode 100644 index 0000000..e450a15 --- /dev/null +++ b/gettext-tools/gnulib-tests/unistr/u8-strlen.c @@ -0,0 +1,29 @@ +/* Determine length of UTF-8 string. + Copyright (C) 2002, 2006, 2009-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2002. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include "unistr.h" + +#include <string.h> + +size_t +u8_strlen (const uint8_t *s) +{ + return strlen ((const char *) s); +} diff --git a/gettext-tools/gnulib-tests/wcrtomb.c b/gettext-tools/gnulib-tests/wcrtomb.c new file mode 100644 index 0000000..1d340cd --- /dev/null +++ b/gettext-tools/gnulib-tests/wcrtomb.c @@ -0,0 +1,53 @@ +/* Convert wide character to multibyte character. + Copyright (C) 2008-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2008. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <wchar.h> + +#include <errno.h> +#include <stdlib.h> + + +size_t +wcrtomb (char *s, wchar_t wc, mbstate_t *ps) +{ + /* This implementation of wcrtomb on top of wctomb() supports only + stateless encodings. ps must be in the initial state. */ + if (ps != NULL && !mbsinit (ps)) + { + errno = EINVAL; + return (size_t)(-1); + } + + if (s == NULL) + /* We know the NUL wide character corresponds to the NUL character. */ + return 1; + else + { + int ret = wctomb (s, wc); + + if (ret >= 0) + return ret; + else + { + errno = EILSEQ; + return (size_t)(-1); + } + } +} diff --git a/gettext-tools/gnulib-tests/wctob.c b/gettext-tools/gnulib-tests/wctob.c new file mode 100644 index 0000000..d87d180 --- /dev/null +++ b/gettext-tools/gnulib-tests/wctob.c @@ -0,0 +1,38 @@ +/* Convert wide character to unibyte character. + Copyright (C) 2008, 2010-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2008. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +/* Specification. */ +#include <wchar.h> + +#include <stdio.h> +#include <stdlib.h> + +int +wctob (wint_t wc) +{ + char buf[64]; + + if (!(MB_CUR_MAX <= sizeof (buf))) + abort (); + /* Handle the case where WEOF is a value that does not fit in a wchar_t. */ + if (wc == (wchar_t)wc) + if (wctomb (buf, (wchar_t)wc) == 1) + return (unsigned char) buf[0]; + return EOF; +} diff --git a/gettext-tools/gnulib-tests/wctomb-impl.h b/gettext-tools/gnulib-tests/wctomb-impl.h new file mode 100644 index 0000000..0fa170e --- /dev/null +++ b/gettext-tools/gnulib-tests/wctomb-impl.h @@ -0,0 +1,34 @@ +/* Convert wide character to multibyte character. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2011. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +int +wctomb (char *s, wchar_t wc) +{ + if (s == NULL) + return 0; + else + { + mbstate_t state; + size_t result; + + memset (&state, 0, sizeof (mbstate_t)); + result = wcrtomb (s, wc, &state); + if (result == (size_t)-1) + return -1; + return result; + } +} diff --git a/gettext-tools/gnulib-tests/wctomb.c b/gettext-tools/gnulib-tests/wctomb.c new file mode 100644 index 0000000..b3595a4 --- /dev/null +++ b/gettext-tools/gnulib-tests/wctomb.c @@ -0,0 +1,25 @@ +/* Convert wide character to multibyte character. + Copyright (C) 2011-2014 Free Software Foundation, Inc. + Written by Bruno Haible <bruno@clisp.org>, 2011. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include <stdlib.h> + +#include <string.h> +#include <wchar.h> + +#include "wctomb-impl.h" diff --git a/gettext-tools/gnulib-tests/zerosize-ptr.h b/gettext-tools/gnulib-tests/zerosize-ptr.h new file mode 100644 index 0000000..db30f4b --- /dev/null +++ b/gettext-tools/gnulib-tests/zerosize-ptr.h @@ -0,0 +1,68 @@ +/* Return a pointer to a zero-size object in memory. + Copyright (C) 2009-2014 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* ISO C 99 does not allow memcmp(), memchr() etc. to be invoked with a NULL + argument. Therefore this file produces a non-NULL pointer which cannot + be dereferenced, if possible. */ + +#include <stdlib.h> + +/* Test whether mmap() and mprotect() are available. + We don't use HAVE_MMAP, because AC_FUNC_MMAP would not define it on HP-UX. + HAVE_MPROTECT is not enough, because mingw does not have mmap() but has an + mprotect() function in libgcc.a. */ +#if HAVE_SYS_MMAN_H && HAVE_MPROTECT +# include <fcntl.h> +# include <unistd.h> +# include <sys/types.h> +# include <sys/mman.h> +/* Define MAP_FILE when it isn't otherwise. */ +# ifndef MAP_FILE +# define MAP_FILE 0 +# endif +#endif + +/* Return a pointer to a zero-size object in memory (that is, actually, a + pointer to a page boundary where the previous page is readable and writable + and the next page is neither readable not writable), if possible. + Return NULL otherwise. */ + +static void * +zerosize_ptr (void) +{ +/* Use mmap and mprotect when they exist. Don't test HAVE_MMAP, because it is + not defined on HP-UX 11 (since it does not support MAP_FIXED). */ +#if HAVE_SYS_MMAN_H && HAVE_MPROTECT +# if HAVE_MAP_ANONYMOUS + const int flags = MAP_ANONYMOUS | MAP_PRIVATE; + const int fd = -1; +# else /* !HAVE_MAP_ANONYMOUS */ + const int flags = MAP_FILE | MAP_PRIVATE; + int fd = open ("/dev/zero", O_RDONLY, 0666); + if (fd >= 0) +# endif + { + int pagesize = getpagesize (); + char *two_pages = + (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE, + flags, fd, 0); + if (two_pages != (char *)(-1) + && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0) + return two_pages + pagesize; + } +#endif + return NULL; +} |