diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1fbbe51..3309daf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,7 +15,7 @@ on: env: BUILD_TYPE: Release - NDK_VER: 21.3.6528147 + NDK_VER: 27.2.12479018 NDK_ARCH: x86_64 NDK_API: 29 @@ -26,33 +26,18 @@ jobs: fail-fast: false matrix: include: - - os: macos-latest + - {os: macos-15, version: 16 } + - {os: macos-14, version: "15.4" } + - os: windows-latest - - os: ubuntu-latest - compiler: gcc - version: 11 - - os: ubuntu-latest - compiler: gcc - version: 12 - - os: ubuntu-latest - compiler: gcc - version: 13 - # See https://github.com/actions/runner-images/issues/8659 - # - os: ubuntu-latest - # compiler: clang - # version: 13 - # - os: ubuntu-latest - # compiler: clang - # version: 14 - - os: ubuntu-latest - compiler: clang - version: 15 - - os: ubuntu-latest - compiler: clang - version: 16 - - os: ubuntu-latest - compiler: clang - version: 17 + + - {os: ubuntu-latest, compiler: gcc, version: 12 } + - {os: ubuntu-latest, compiler: gcc, version: 13 } + - {os: ubuntu-24.04, compiler: gcc, version: 14 } + + - {os: ubuntu-latest, compiler: clang, version: 16 } + - {os: ubuntu-latest, compiler: clang, version: 17 } + - {os: ubuntu-latest, compiler: clang, version: 18 } steps: - name: Checkout @@ -61,22 +46,27 @@ jobs: - name: System Setup shell: bash run: | - if [[ '${{ matrix.os }}' == 'ubuntu-latest' ]]; then + if [[ '${{ matrix.os }}' == ubuntu-* ]]; then if [[ '${{ matrix.compiler }}' == 'clang' ]]; then wget https://apt.llvm.org/llvm.sh chmod u+x llvm.sh - sudo ./llvm.sh ${{ matrix.version }} + sudo ./llvm.sh ${{ matrix.version }} + sudo apt-get install -y clang-tools-${{ matrix.version }} echo "CC=clang-${{ matrix.version }}" >> $GITHUB_ENV echo "CXX=clang++-${{ matrix.version }}" >> $GITHUB_ENV fi if [[ '${{ matrix.compiler }}' == 'gcc' ]]; then + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install -y gcc-${{ matrix.version }} g++-${{ matrix.version }} echo "CC=gcc-${{ matrix.version }}" >> $GITHUB_ENV echo "CXX=g++-${{ matrix.version }}" >> $GITHUB_ENV fi fi + if [[ '${{ matrix.os }}' == macos-* ]]; then + echo "DEVELOPER_DIR=/Applications/Xcode_${{ matrix.version }}.app" >> $GITHUB_ENV + fi - name: Configure shell: bash @@ -149,7 +139,7 @@ jobs: - name: Set Up Emscripten uses: mymindstorm/setup-emsdk@v14 with: - version: 3.1.26 + version: 3.1.70 actions-cache-folder: 'emsdk-cache' - name: Configure diff --git a/.gitignore b/.gitignore index 22eefad..ace875d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,5 +8,5 @@ out/ *.pyc - +CMakeSettings.json test/android diff --git a/CHANGELOG.md b/CHANGELOG.md index 1960187..c130e86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,56 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased +This is a major release with some breaking changes + +### Changed + +- C++20 or higher is now required for compilation. In particular, the following C++20 features must be available: + - Ranges support in standard library (`__cpp_lib_ranges >= 201911`) + - Three-way comparison (spaceship operator) + - `char8_t` type + - `std::endian` support in standard library (`__cpp_lib_endian >= 201907`) + - Minimal compilers known to work include: GCC 12, Clang 16, Apple Clang 15.4 and MSVC 17.6. +- The library has been _range_-ified. + - All methods that used to accept iterator pairs now take iterator/sentinel pairs. + - All these methods now also have overloads that accept ranges + - Existing informal ranges (`sys_string::char_access`, `sys_string::utf_view`, etc.) are now + formal ranges or views. + - As part of the above `sys_string::utfX_view` classes has been renamed to `sys_string::utfX_access` (because they are + not formally views as defined by standard library). The old names have been retained for compatibility but annotated + as deprecated. Note that `sys_string_builder::utf_view` remains under the same name since it *is* a view. + - Breaking change: as part of the above change the `sys_string::utf_access` and `sys_string_builder::utf_view` now + return distinct iterators and sentinels (that is they no longer satisfy `std::ranges::common_range` concept). + You will need to use ranges algorithms with their iterators (e.g. `std::ranges::for_each` rather than `std::for_each`). + - The global `utf_view` template has been split into two: `utf_ref_view` that takes underlying range by reference (similar + to `std::ref_view`) and `utf_owning_view` that owns a movable underlying range (similar to `std::owning_view`). These + are automatically produced by `as_utf` range adapter closures (see below in Added section) + - Breaking change: the non-standard `Cursor` classes has been removed. +- The library has been _concept_-ified. + - Most templated library calls now have concepts checks that validate their argument types. + - Primitive `std::enable_if` used before have been subsumed by these and removed. +- Unicode data used for case folding and whitespace detection has been updated to version 16.0.0 + +### Added +- `sys_string_t` can now be `+`-ed with any forward range of any type of character (including C strings and std::string). + This results in a the same optimized addition as when adding `sys_string_t` objects. +- `sys_string_t` objects can now be formatted via `std::format` (if available in your library). On platforms + where `wchar_t` is UTF-16 or UTF-32 you can also use wide character formatting. +- `sys_string_t::std_format` method. This formats a new `sys_string_t` (similar to the existing `sys_string_t::format`) + but uses `std::format` machinery and formatting string syntax. +- Range adapter closures: `as_utf8`, `as_utf18`, `as_utf32` and generic `as_utf` . + - These can be used to create `utf_ref_view`/`utf_owning_view` from any range/view. For example `as_utf16(std::string("abc"))` + - If you library supports custom adapter closures (usually `__cpp_lib_ranges >= 202202L`) they can be used in + view pipelines like `std::string("abc") | as_utf16 | std::views::take(2)` etc. + +### Fixed +- Printing `sys_string_t` objects into `std::ostream` (and `std::wostream` if available) now functions correctly in presence + of stream formatting flags. Flags are currently ignored. This might change in a future version. +- Printing/formatting `sys_string_t` objects that use `char` storage type now does not perform sanitizing transcoding. The content + of the string is printed as-is. This allows faithful round-tripping and support for invalid Unicode for those scenarios. Similar + behavior applies to `wchar_t` on platform where it is UTF-16 or UTF-32. +- `operator<<` no longer pollutes global namespace + ## [2.14] - 2024-05-02 ### Fixed diff --git a/README.md b/README.md index 562f69c..c7b2992 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ ## SysString [![Language](https://img.shields.io/badge/language-C++-blue.svg)](https://isocpp.org/) -[![Standard](https://img.shields.io/badge/C%2B%2B-17-blue.svg)](https://en.wikipedia.org/wiki/C%2B%2B#Standardization) +[![Standard](https://img.shields.io/badge/C%2B%2B-20-blue.svg)](https://en.wikipedia.org/wiki/C%2B%2B#Standardization) [![License](https://img.shields.io/badge/license-BSD-brightgreen.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Tests](https://github.com/gershnik/sys_string/actions/workflows/test.yml/badge.svg)](https://github.com/gershnik/sys_string/actions/workflows/test.yml) This library provides a C++ string class template `sys_string_t` that is optimized for **interoperability with external native string type**. It is **immutable**, **Unicode-first** and exposes convenient **operations similar to Python or ECMAScript strings**. It uses a separate `sys_string_builder_t` class template to construct strings. It provides fast concatenation via `+` operator that **does not allocate temporary strings**. -The library exposes bidirectional UTF-8/UTF-16/UTF-32 views of `sys_string_t` as well as of any random access containers +The library exposes bidirectional UTF-8/UTF-16/UTF-32 views of `sys_string_t` as well as of any C++ input ranges of chracters. of characters. ## What does it mean? @@ -24,10 +24,10 @@ of characters. For example the storage for Apple's platforms uses `NSString *` internally, allowing zero cost conversions between C++ and native sides. - On Android and Emscripten/WebAssembly no-op conversions from C++ to native strings are impossible for technical reasons. - The storage for these platforms' strings still makes conversions as cheap as possible (avoiding UTF conversions for example). + On Android and Emscripten/WebAssembly no-op conversions from C++ to native strings are technically impossible. + The storage implementations for these platforms still makes conversions as cheap as possible (avoiding UTF conversions for example). - The library also provides typedefs `sys_string`/`sys_string_builder` that use the "default" storage type on each platform (you can change which one it is via compilation options). Regardless of which storage is the default you can always directly use other specializations in your code if necessary. + The library also provides `sys_string`/`sys_string_builder` typedefs that use the "default" storage type on each platform (you can change which one it is via compilation options). Regardless of which storage is the default you can always directly use other specializations in your code if necessary. * **Immutability.** String instances cannot be modified. To do modifications you use a separate "builder" class. This is similar to how many other languages do it and results in improved performance and elimination of whole class of errors. @@ -36,7 +36,7 @@ of characters. * **Operations similar to Python or ECMAScript strings.** You can do things like `rtrim`, `split`, `join`, `starts_with` etc. on `sys_string_t` in a way proven to be natural and productive in those languages. -* **Concatenation does not allocate temporaries.** You can safely do things like `result = s1 + s2 + s3`. It will result in **one** memory allocation and one `memcpy` of `s1`, `s2` and `s3` content into the final result. Not 2 allocations and 5 copies like in other languages or with `std::string`. +* **Concatenation does not allocate temporaries.** You can safely do things like `result = s1 + s2 + s3`. It will result in **one** memory allocation and 3 calls to `memcpy` to copy each of `s1`, `s2` and `s3` content into the final result. Not 2 allocations and 5 copies like in other languages or with `std::string`. * **Bidirectional UTF-8/UTF-16/UTF-32 views**. You can view `sys_string_t` as a sequence of UTF-8/16/32 characters and iterate forward or __backward__ equally efficiently. Consider trying to find last instance of Unicode whitespace in UTF-8 data. Doing it as fast as finding the first instance is non-trivial. The views also work on any random access containers (C array, `std::array`, `std::vector`, `std::string`) of characters. Thus you can iterate in UTF-8 over `std::vector` etc. @@ -49,18 +49,18 @@ Specifically, `std::basic_string` is an STL container of a character type that o * They foreclose any ability to efficiently interchange data with some other string type. It becomes problematic if your code needs to frequently ping-pong data between C++ and your OS string abstraction. Consider Apple's platforms (macOS, iOS). Applications written for these platforms often have to extensively interoperate with code that requires usage of `NSString *` native string type. If you have to ping-pong string data a lot and/or store the same string data on both sides, using `std::string` will mean a large performance and memory penalty. -* They make `std::basic_string` Unicode hostile. By being oblivious to difference between "storage unit" and a "character", `std::basic_string` cannot really handle encodings such as `UTF-8` or `UTF-16` where the two differ. Yes you can store data in these encodings in it but you need to be extremely careful how you use it. What will `erase(it)` do if the iterator points in the middle of 4-byte UTF-8 sequence? +* They make `std::basic_string` Unicode hostile. By being oblivious to difference between a "storage unit" and a "character", `std::basic_string` cannot really handle encodings such as `UTF-8` or `UTF-16` where the two differ. Yes you can store data in these encodings in it but you need to be extremely careful how you use it. What will `erase(it)` do if the iterator points in the middle of 4-byte UTF-8 sequence? -Finally, and unrelatedly to the above, `std::string` lacks some simple things that are taken for granted these days by users of pretty much all other languages. There is case insensitive comparisons, no "trim" or "split" etc. It is possible to write those yourself of course but here the Unicode-unfriendliness raises its ugly head. To do any of these correctly you need to be able to handle a string as a sequence of Unicode characters and doing so with `std::string` is cumbersome. +Finally, and unrelatedly to the above, `std::string` lacks some simple things that are taken for granted these days by users of pretty much all other languages. There is no case insensitive comparisons, no "trim" or "split" etc. It is possible to write those yourself of course but here the Unicode-unfriendliness raises its ugly head. To do any of these correctly you need to be able to handle a string as a sequence of Unicode characters and doing so with `std::string` is cumbersome. ## Non-goals The following requirements which other string classes often have are specifically non-goals of this library. -* Support C++ allocators. Since `sys_string_t` is meant to interoperate with system string class/types, it necessarily has to use the same allocation mechanisms as those. +* Support C++ allocators mechanism. Since `sys_string_t` is meant to interoperate with other string class/types, it necessarily has to use the same allocation mechanisms as those. Different allocation behavior can be accomplished via a custom `Storage` class. -* Have an efficient `const char * c_str()` method on all platforms. The goal of the library is to provide an efficient conversion to the native string types rather than specifically `const char *`. While ability to obtain `const char *` *is* provided everywhere, it might involve additional memory allocations and other overhead. Note that on Linux `char *` is the system type so it can be obtained with 0 cost. +* Have an efficient `const char * c_str()` method on all platforms. The goal of the library is to provide an efficient conversion to the native string types rather than specifically `const char *`. While ability to obtain `const char *` *is* provided everywhere, it might involve additional memory allocations and other overhead. Of course, when the storage of `sys_string_t` is `char` it can be obtained with 0 cost. * Make `sys_string_t` an STL container. Conceptually a string is not a container. You can **view** contents of a string as a sequence of UTF-8 or UTF-16 or UTF-32 codepoints and the library provides such views which function as STL ranges. @@ -78,11 +78,25 @@ Another way to look at it is that `sys_string_t` sometimes trades micro-benchmar ## Compatibility -This library has been tested with -* Xcode 13 - 14 on x86_64 and arm64 -* MSVC 16.9 - 17.4 on x86_64 -* Clang 12.0.5 under Android NDK, ANDROID_PLATFORM=19 on x86, x86_64, `armeabi-v7a` and `arm64-v8a` architectures -* GCC 9.3 - 11.3 on x86_64 Ubuntu 20.04 - 22.04 +Starting from version 3 this library requires C++20 compiler. In particular, the following C++20 features must be available: + - Ranges support in standard library (`__cpp_lib_ranges >= 201911`) + - Three-way comparison (spaceship operator) + - `char8_t` type + - `std::endian` support in standard library (`__cpp_lib_endian >= 201907`) + +The library is known to work with at least: +* Xcode 15.4 +* MSVC 17.6 +* Clang 16 +* GCC 12 +* Emscripten 3.1.70 + +Version 2 of this library was the last version supporting C++17. It is known to work at least with: + +* Xcode 13 +* MSVC 16.9 +* Clang 12.0.5 +* GCC 9.3 * Emscripten 3.1.21 ## Usage diff --git a/doc/Usage.md b/doc/Usage.md index 66dd787..7f710bb 100644 --- a/doc/Usage.md +++ b/doc/Usage.md @@ -14,6 +14,7 @@ - [Iterating over string content](#iterating-over-string-content) - [Storage iteration](#storage-iteration) - [UTF iteration](#utf-iteration) + - [Helper: UTF iteration over any C++ character range](#helper-utf-iteration-over-any-c-character-range) - [Substrings](#substrings) - [Accessing C strings](#accessing-c-strings) - [Accessing storage as C array](#accessing-storage-as-c-array) @@ -21,8 +22,11 @@ - [Utility methods](#utility-methods) - [Check if the string is empty](#check-if-the-string-is-empty) - [Printf-style construction of a string](#printf-style-construction-of-a-string) + - [std::format-style construction of a string](#stdformat-style-construction-of-a-string) - [Printing into std::ostream](#printing-into-stdostream) + - [Formatting with std::format](#formatting-with-stdformat) - [Trimming](#trimming) + - [Digression: sys_string_or_char concept](#digression-sys_string_or_char-concept) - [Splitting](#splitting) - [Joining](#joining) - [Prefix, suffix and infix handling](#prefix-suffix-and-infix-handling) @@ -44,7 +48,7 @@ A `using namespace sysstr` directive is assumed in all the examples. ## Error handling -Most methods in this library are `noexcept`. Methods that aren't `noeexcept` involve memory allocation or creation of system string types that can fail (usually also due to memory allocation failure). In such cases errors are reported via exceptions. All thrown exceptions derive from `std::exception`. When it is certain that the failure is due to memory allocation `std::bad_alloc` is raised. Otherwise, the library throws a more generic `std::runtime_error` +Most methods in this library are `noexcept`. Methods that aren't, usually involve memory allocation or creation of system string types that can fail (usually also due to memory allocation failure). In such cases errors are reported via exceptions. All thrown exceptions derive from `std::exception`. When it is certain that the failure is due to memory allocation `std::bad_alloc` is raised. Otherwise, the library throws a more generic `std::runtime_error` ## Basics @@ -52,7 +56,7 @@ Most methods in this library are `noexcept`. Methods that aren't `noeexcept` inv The two main classes provided by this library are `sys_string` and `sys_string_builder`. These are actually aliases (typedefs) to instantiations of `template class sys_string_t` and `template class sys_string_builder_t` with a `Storage` chosen based on platform and compilation options. A `Storage` is a policy class that defines what kind of system string type is stored inside a `sys_string`. -On every supported platform there is 1 or more storage types available. +On every supported platform there is one or more storage types available. ## Construction @@ -67,9 +71,9 @@ const sys_string & str = S("Hello!"); const sys_string & str = SYS_STRING_STATIC("Hello!"); ``` -You can also create a string by converting it from a single character, C string, C string + length, `std::basic_tring`, `std::basic_string_view`, `std::vector` or `std::range` of characters. +You can also create a string by converting it from a single character, C string, C string + length, `std::basic_tring`, `std::basic_string_view`, `std::vector`, `std::span` or any other `std::ranges::contiguous_range` of characters. The type of character can be one of: -* `char`, `signed char`, `unsigned char` (always assumed to be UTF-8) +* `char`, `signed char`, `unsigned char` (these are always assumed to be UTF-8) * `char8_t` * `char16_t` * `char32_t`. @@ -97,9 +101,10 @@ For the constructor taking a character pointer, `nullptr` is a valid value and r ### Conversions from invalid Unicode -A `sys_string` internally stores data in one of: UTF-8 (`char`), UTF-16 (`char16_t`) or UTF-32 (`char32_t`) encodings, depending on configuration. The specific type used is represented by `sys_string::storage_type` typedef. What happens when you create a `sys_string` from external data that contains invalid Unicode? It depends on whether the external data is in the same encoding as the storage type. -* If the type is the same then the data is copied into `sys_string` verbatim. This allows you to store and manipulate invalid Unicode in platform specific way. For example Windows filenames, while ostensibly in UTF-16, can contain unpaired surrogates. `sys_string` allows you to handle these but you need to make sure you pass them in as the OS gives them - in `wchar_t *` or `char16_t *` -* If the type is not the same then the result is **unspecified but valid** Unicode. In practice invalid content will be replaced by one or more "Unicode replacement character" - `U+FFFD` - similar to how text editor or a browser would deal with it. The exact number of characters and the replacement algorithm in general are deliberately left unspecified. Thus portable code (that is code that is agnostic to the type of `sys_string` storage) cannot rely on invalid Unicode having specific representation - this is by design. +A `sys_string_t` internally stores data in one of: UTF-8 (`char`), UTF-16 (`char16_t`) or UTF-32 (`char32_t`) encodings, depending on configuration. The specific type used is represented by `sys_string_t::storage_type` typedef. What happens when you create a `sys_string_t` from external data that contains invalid Unicode? It depends on whether the external data is in the same encoding as the storage type. +* If the type is the same then the data is copied into `sys_string_t` verbatim. This allows you to store and manipulate invalid Unicode in platform specific way. For example Windows filenames, while ostensibly in UTF-16, can contain unpaired surrogates. `sys_string_t` allows you to handle these but you need to make sure you pass them in as the OS gives them - in `wchar_t *` or `char16_t *` +* If the type is not the same then the result is **unspecified but valid** Unicode. In practice invalid content will be replaced by one or more +['REPLACEMENT CHARACTER' (U+FFFD)](https://www.fileformat.info/info/unicode/char/fffd/index.htm) - similar to how a text editor or a browser would deal with it. The exact number of characters and the replacement algorithm in general are deliberately left unspecified. Thus portable code (that is code that is agnostic to the type of `sys_string_t` storage) cannot rely on invalid Unicode having a specific representation - this is by design. ## Platform-specific conversions @@ -124,20 +129,32 @@ sys_string str = str1 + str2 + str3; assert(str == S("abc")); ``` -Unlike with `std::string` this uses [expression templates](https://en.wikipedia.org/wiki/Expression_templates) to avoid creation of temporaries. This means that addition is cheap and you have no reason to avoid it. +Unlike `std::string` addition of `sys_string_t` uses [expression templates](https://en.wikipedia.org/wiki/Expression_templates) to avoid creation of temporaries. This means that addition is cheap and you have no reason to avoid it. -However, you need to avoid using `auto` for the result. The result of addition is a special temporary that only performs actual concatenation when converted to `sys_string`. Using auto makes a variable of that temporary type which at beast won't work and at worst result in dangling pointers. +You can add `sys_string_t`, single `char32_t` characters and any range of any characters this way. + +For example: ```cpp -auto res = S("a") + S("b"); -std::cout << res; //error, res is not something that can be output -auto res1 = sys_string("abc") + sys_string("xyz"); +using namespace std::literals; + +sys_string result = S("a") + U'b' + "cd" + "ef"s + u"gh"sv + U"ij" + std::vector{'k', 'l'}; +assert(result == S("abcdefghijkl")); +``` + +> [!WARNING] +> You must not use `auto` to declare the addition result. The result of an addition is a special temporary that only performs actual concatenation when converted to `sys_string_t`. Using `auto` declares a variable of that temporary type which will result in dangling pointers. + +```cpp +auto res = sys_string("abc") + sys_string("xyz"); //Bad! //using res1 here is undefined behavior - it refers to already destroyed temporaries +if (res == S("abcxyz")) + ... ``` ## Comparing Strings -`sys_string` supports the normal inventory of comparison operators: `==`, `!=`, `<=>` (under C++20), `<`, `<=` etc. Comparison strings is always performed as binary comparison of internal representations, **not** Unicode codepoints and **not** normalizing Unicode. That is: +`sys_string_t` supports the normal inventory of comparison operators: `==`, `!=` and `<=>` (from which `<`, `<=` etc. are auto-generated). Comparison of strings is always performed as a binary comparison of internal representations, **not** Unicode codepoints and **not** normalizing Unicode. That is: ```cpp //these strings are canonically equivalent but not the same @@ -145,41 +162,58 @@ assert(S("Cafe\u0301") != S("Café")); ``` The comparisons are defined this way for performance. If you do need canonical equivalence you will need to normalize strings yourself. -What this implies is that while identical strings will compare equal and all strings are strongly ordered, the specific order might differ from the one a human would expect. If you do require human-oriented ordering, the correct thing to do is to use a full-fledged collator from another library such as ICU or Windows NLS. -There is also a free function `compare` that behaves identically to `<=>` operator but is available on both C++17 and C++20. +This implies that while identical strings will compare equal and all strings are strongly ordered, the specific order might differ from the one a human would expect. If you do require human-oriented ordering, the correct thing to do is to use a full-fledged collator from another library such as ICU or Windows NLS. + +There is also a free function `compare` that behaves identically to `<=>` operator. ### Case insensitive comparison -Unlike `std::string`, `sys_string` also supports case insensitive comparisons. +Unlike `std::string`, `sys_string_t` also supports case insensitive comparisons. This is done by binary comparing result of Unicode case folding. ```cpp -assert(compare_no_case(S("maße"), S("MASSE")) == sys_string::ordering_equal); +assert(compare_no_case(S("maße"), S("MASSE")) == std::ordering::equal); ``` -Both `compare` and `compare_no_case` return `sys_string::ordering_equal`, `sys_string::ordering_less` and `sys_string::ordering_greater`. -These are defined in terms of either `std::strong_ordering::equal` etc. on C++20 or `0`, `-1`, `1` on C++17. +Both `compare` and `compare_no_case` return `std::strong_ordering`. ## Iterating over string content You can iterate over `sys_string` in 4 possible ways: -* Over a sequence of UTF-32, `char32_t` codepoints. This iteration is unidirectional, forward or reverse and 'sanitizing'. -* Over a sequence of UTF-16, `char16_t` units. This iteration is unidirectional, forward or reverse and 'sanitizing'. -* Over a sequence of UTF-8, `char` units. This iteration is unidirectional, forward or reverse and 'sanitizing'. +* Over a sequence of UTF-32, `char32_t` codepoints. This iteration is unidirectional, either forward or reverse and 'sanitizing'. +* Over a sequence of UTF-16, `char16_t` units. This iteration is unidirectional, either forward or reverse and 'sanitizing'. +* Over a sequence of UTF-8, `char` units. This iteration is unidirectional, either forward or reverse and 'sanitizing'. * Over a sequence of "storage units". This iteration is random-access and NOT sanitizing. -A "storage unit" is a platform dependent type (one of `char`, `char16_t` or `char32_t`) that is used to actually store the data in `sys_string`. It is represented by type `sys_string::storage_type`. Iterating over storage units is the fastest way to iterate and the only way to get access to "invalid Unicode" that might be stored in `sys_string`. +A "storage unit" is a platform dependent type (either `char`, `char16_t` or `char32_t`) that is used to actually store the data in `sys_string`. +It is represented by type `sys_string::storage_type`. Iterating over storage units is the fastest way to iterate and the only way to get access +to "invalid Unicode" that might be stored in `sys_string`. -All other types of iteration are "sanitizing". It is possible for a string to contain invalid Unicode - see (#Conversions_from_invalid_Unicode). When this happens a 'sanitizing' iteration will replace invalid units with one or more replacement characters `U+FFFD` in an unspecified manner. Note that it is not even guaranteed that forward and reverse iteration will produce the same replacements. Thus, when dealing with invalid Unicode, all you can expect is that sanitizing iteration will always produce valid Unicode but you cannot specifically guarantee what it would be. If you do need to predictably handle invalid Unicode content you need to iterate over storage units. +All other types of iteration are "sanitizing". It is possible for a string to contain invalid Unicode - see [Conversions from invalid Unicode](#conversions-from-invalid-unicode). When this happens a 'sanitizing' iteration will replace invalid units with one or more replacement characters `U+FFFD` in an unspecified manner. Note that it is not even guaranteed that forward and reverse iteration will produce the same replacements. Thus, when dealing with invalid Unicode, all you can expect is that sanitizing iteration will always produce valid Unicode but you cannot specifically guarantee what it would be. If you do need to predictably handle invalid Unicode content you need to iterate over storage units. ### Storage iteration -To iterate over string storage units you first need to create a `sys_string::char_access` object. This object is cheap to create and acts as a "reference" to the actual `sys_string`. It is **only valid while the original string exists**. It is meant to be used on stack, during computation and then discarded rather than stashed away for subsequent use. +To iterate over string storage units you first need to create a `sys_string::char_access` object. This object is cheap to create and acts as a "reference" to the actual `sys_string`. It is a "reference object" and is **only valid while the original string exists**. It is meant to be used on stack, during computation and then discarded rather than stashed away for subsequent use. + +`sys_string::char_access` is a [random_access_range](https://en.cppreference.com/w/cpp/ranges/random_access_range) but not a [view](https://en.cppreference.com/w/cpp/ranges/view) and not even a [viewable_range](https://en.cppreference.com/w/cpp/ranges/viewable_range). + +Thus in order to use this range in view pipelines you need to have it as an lvalue and access it via `std::ranges::views::all` or `std::ranges::ref_view`. For example + +```cpp +using namespace std::ranges; +using namespace std::views; + +sys_string str = S("abc"); +sys_string::char_access access(str); +assert(equal(all(access) | take(1), std::array{sys_string::storage_type('a')})) +``` + +`sys_string::char_access` is a read-only range and is the fastest way to go over the `sys_string` content. +The size of the range is given by `size()` member (it is a [sized_range](https://en.cppreference.com/w/cpp/ranges/random_access_range)). -It is a read-only STL container with the usual methods: `begin()`, `end()`, `rbegin()` etc. Those produce random access iterators which are the fastest way to go over the `sys_string` content. -The size of the sequence is given by `size()` member. There is also `operator[]` that allows direct indexing access to the sequence. +There is also an `operator[]` that allows direct indexing access to the sequence. ```cpp sys_string str("Hello"); @@ -195,96 +229,171 @@ On some platforms `sys_string::char_access` has a `data()` member that returns a ### UTF iteration -To perform UTF iteration you need to construct one of: `utf32_view`, `utf16_view` or `utf8_view` from `sys_string`. These are read-only STL sequences that expose forward (not random or bidirectional!) iterators. Note that despite the iterators being forward, reverse iterators that move backwards in the sequence are available via `rbegin`/`rend`. +To perform UTF iteration you need to construct one of: `utf32_access`, `utf16_access` or `utf8_access` from `sys_string`. +These are read-only [forward_ranges](https://en.cppreference.com/w/cpp/ranges/forward_range) but not [views](https://en.cppreference.com/w/cpp/ranges/view) and not even [viewable_ranges](https://en.cppreference.com/w/cpp/ranges/viewable_range). + +```cpp +sys_string str("Hello"); +for(char32_t c: sys_string::utf32_access(str)) { + ... +} +for(char16_t c: sys_string::utf16_access(str)) { + ... +} +for(char c: sys_string::utf8_access(str)) { + ... +} +``` + +Note that all these ranges have sentinel types (results of `end()`, `cend()` etc.) _different_ from their iterator types. Thus they are not +[common_ranges](https://en.cppreference.com/w/cpp/ranges/common_range) and generally require +[new range algorithms](https://en.cppreference.com/w/cpp/algorithm/ranges) from `std::ranges` namespace rather than traditional ones. +For example: + +```cpp + +sys_string str = S("abc"); +sys_string::utf32_access view(str); +std::vector dest; + +//This won't compile +//std::copy(view.begin(), view.end(), std::back_inserter(dest)); + +//But this will +std::ranges::copy(view.begin(), view.end(), std::back_inserter(dest)); + +//Or simply +std::ranges::copy(view, std::back_inserter(dest)); + +``` Similar to `sys_string::char_access` (which they actually store inside) or `std::string_view` these views are reference types. Their instances are **only valid as long as the original string exists**. -The reason the iterators are forward-only even though you can iterate backwards via reverse iterators is due ti the 'sanitizing' iteration. Code using bidirectional iterators usually assumes that +Despite being `forward_range` as far as standard library is concerned these ranges also allow reverse iteration. That is, they +have reverse_iterator type and `rbegin`/`rend` methods. There is currently no standard concept that describes such a range so this library provides +`sysstr::reverse_traversable_range`. + +The fact these ranges are reversible rather than bidirectional is due to the two issues. + +The first is efficiency. Allowing a decoding iterator to move in the opposite direction will increase its size and won't be as efficient as forward move. + +The second is the 'sanitizing' iteration. Code using bidirectional iterators usually assumes that: + ```cpp iterator it1 = ...; iterator it2 = it1; it2 = ++(--it2); assert(it2 == it1); ``` + +However, with sanitizing iteration this might not necessarily be the case. If a substitution is made for illegal characters the amount of movement and returned values may differ for forward and reverse iteration. Thus to avoid subtle issues UTF range iterators disallow `--`. If you want to iterate in reverse simply use returned by `rbegin()`/`rend()`. You can also use convert forward to reverse iterators and vice versa as follows: `sysstr::ranges::make_reverse_iterator(view, it)` to obtain a reverse iterator from a forward one and vice-versa. + +```cpp +utf32_access access(...); +utf32_access::iterator it = ...; -However, with sanitizing iteration this might not necessarily be the case. If a substitution is made for illegal characters the amount of movement and returned values may differ for forward and reverse iteration. Thus to avoid subtle issues UTF iterators disallow `--`. If you want to iterate in reverse simply use `reverse_iterator`s returned by `rbegin()`/`rend()`. +utf32_access::reverse_iterator rit = access.reverse(it); +//or +//utf32_access::reverse_iterator rit = ranges::make_reverse_iterator(access, it); +utf32_access::iterator it1 = access.reverse(rit); +//or +//utf32_access::iterator it1 = ranges::make_reverse_iterator(access, rit); +assert(it1 == it2); + +//you can also do reverse on sentinels +utf32_access::reverse_iterator rfirst = access.reverse(access.end()); +utf32_access::iterator first = access.reverse(access.rend()); + +``` + +### Helper: UTF iteration over any C++ character range + +Since the internal facility to perform UTF iteration is quite generic this library exposes it to allow you to perform UTF iteration over any C++ input range of compatible characters (`char`, `char8_t`, `char16_t`, `char32_t`, and possibly `wchar_t` on platforms where it is encoded in UTF-16 or UTF-32). At the time of this writing there is a work on including something similar to C++ standard library but, even if eventually approved, it will be a long time before it will become available. + +You access UTF sequences by using view adapters. For example: ```cpp -sys_string str("Hello"); -for(char32_t c: utf32_view(str)) { +std::string str = "😀😜"; +for (char16_t c: as_utf16(str)) { ... } -for(char16_t c: utf16_view(str)) { +for (char32_t c: as_utf32(str)) { ... } -for(char c: utf8_view(str)) { + +for (char c: as_utf8(u"😀😜")) { ... } ``` -The three UTF views are not limited to operating on `sys_string`. You can also use them to iterate on any random-access ranges of characters including `std::vector`, `std::string` or arrays. If you only require this functionality and not full `sys_string` you can include `sys_string/utf_view.h` header. + +The `as_utf8`, `as_utf16` and `as_utf32` adapters produce view objects (e.g. fulfilling [std::ranges::view](https://en.cppreference.com/w/cpp/ranges/view) concept) that can be used like any standard view. You can iterate over them in a for-each loop, pass their iterators or themselves to range algorithms etc. + +If your standard library supports user-supplied [range adapter closures](https://en.cppreference.com/w/cpp/ranges/range_adaptor_closure) these views can also be used in view pipelines: ```cpp -std::u16_string u16str = u"Hello"; -for(char c: utf8_view(u16str)) { - //UTF-8 iteration over UTF-16 encoded string -} -std::string str = "Hello"; -for(char c: utf32_view(str)) { - //UTF-32 iteration over UTF-8 encoded string -} -//etc. all 9 combinations are possible +as_utf8(u"😀😜") | std::views::take(1) | ... ``` ## Substrings You can obtain a substring of a `sys_string` in two ways: -* From a pair of `sys_string::utf32_view::iterator`s. This will "cut" the string at Unicode codepoint boundary ensuring that the output is well formed. This is the preferred way to slice strings. +* From a pair of `sys_string::utf32_access::iterator`s (or a range that provides them). This will "cut" the string at Unicode codepoint boundary ensuring that the output is well formed. This is the preferred way to slice strings. ```cpp const sys_string & str = S("🤢abc"); -sys_string::utf32_view view(str); +sys_string::utf32_access view(str); auto first = view.begin(); auto last = std::advance(first, 1); sys_string substring(first, last); assert(substring == S("🤢")); ``` -What if you are iterating over the string using `utf16_view` or `utf8_view` and want to slice it using those views' iterators? This is also possible since all of the `utf_view` iterators provide `char_start()` method that returns a `utf32_view::iterator` that **points to the start of the Unicode codepoint** in which the current iterator is in. - -```cpp -const sys_string & str = S("🤢abc"); -sys_string::utf8_view view(str); -auto first = view.begin(); -//The 🤢 character takes 4 UTF-8 bytes -assert(sys_string(first.char_start(), std::advance(first, 1).char_start()) == S("")); -assert(sys_string(first.char_start(), std::advance(first, 2).char_start()) == S("")); -assert(sys_string(first.char_start(), std::advance(first, 3).char_start()) == S("")); -assert(sys_string(first.char_start(), std::advance(first, 4).char_start()) == S("🤢")); -``` - - -* From a pair of `sys_string::char_access::iterator`s. Since `char_access` iterates over the actual storage units this allows you to "cut" the string anywhere. This way of slicing is **dangerous**, since you can end up slicing the string in a middle of a Unicode character. Unless this is exactly what you want to do for some reason, this would likely result in bugs in your code. Remember that sanitizing UTF iteration over such string will produce substitution characters. +* From a pair of `sys_string::char_access::iterator`s (or a range that provides them). Since `char_access` iterates over the actual storage units this allows you to "cut" the string anywhere. This way of slicing is **dangerous**, since you can end up slicing the string in a middle of a Unicode character. Unless this is exactly what you want to do for some reason, this would likely result in bugs in your code. Remember that sanitizing UTF iteration over such string will produce substitution characters. ```cpp const sys_string & str1 = S("abc"); sys_string::char_access access1(str1); -sys_string substring1(access1.begin(), access1.begin() + 1); +auto first = access1.begin(); +auto last = first; +++last; +sys_string substring1(first, last); //This works because 'a' is a single character in any UTF encoding assert(substring1 == S("a")); const sys_string & str2 = S("🤢bc"); sys_string::char_access access2(str2); -sys_string substring2(access2.begin(), access2.begin() + 1); -//Unless the interal storage is UTF-32 (which is currently not the case on any platform) the +first = access2.begin(); +last = first; +++last +sys_string substring2(first, last); +//Unless the interal storage is UTF-32 (which is currently not the case with any storage) the //substring will NOT be equal to the first character assert(substring2 != S("🤢")); ``` +What if you are iterating over the string using `utf16_access` or `utf8_access` and want to slice it using those views' iterators? This is also possible since all of the `utf_access` iterators provide `storage_start()` method that returns a `char_access::iterator` that **points to the start of the Unicode codepoint** in which the current utf8/utf16 iterator is in. + +There is also `storage_next()` which points to the **points to the end of the Unicode codepoint** in which the current utf8/utf16 iterator is in. Finally there is `storage_last()` which return the sentinel at the end of storage sequence. These can be used to slice the string too (see also the second method below) + +```cpp +const sys_string & str = S("🤢abc"); +sys_string::utf8_access view(str); +auto first = view.begin(); +//The 🤢 character takes 4 UTF-8 bytes +assert(sys_string(first.storage_start(), std::advance(first, 1).storage_start()) == S("")); +assert(sys_string(first.storage_start(), std::advance(first, 2).storage_start()) == S("")); +assert(sys_string(first.storage_start(), std::advance(first, 3).storage_start()) == S("")); +assert(sys_string(first.storage_start(), std::advance(first, 4).storage_start()) == S("🤢")); +``` + +[!TIP] +Note that for all the slicing methods you can also use reverse iterators in a similar fashion, if needed. + ## Accessing C strings -Ok, all this is great but what if you *do* need to get simple C `const char *` out of `sys_string` in a portable fashion? Perhaps you need to call a C API or one that expects `std::string_view` on all platforms. To support this scenario `sys_string::char_access` exposes `c_str()` method: +Ok, all this is great, but what if you *do* need to get simple C `const char *` out of `sys_string` in a portable fashion? Perhaps you need to call a C API or one that expects `std::string_view` on all platforms. To support this scenario `sys_string::char_access` exposes `c_str()` method: ```cpp const sys_string & str = S("abc"); @@ -295,7 +404,7 @@ assert(strcmp(cstr, "abc") == 0); The returned pointer is valid as long as `char_access` object is alive. The returned string is **always** in UTF-8, **not** in your locale's "narrow" encoding. All calls to `c_str()` on the same `char_access` object return the same pointer - that is the result is memoized. -Note that (except on Linux) the first call to `c_str()` will result in memory allocation and conversion of `sys_string` data to UTF-8. If you end up doing the above a lot and it becomes a performance issue this is a sign that `sys_string` is not a right class for your problem domain and `std::string` might be a better choice. +Note that if the underlying string storage is not made of `char`s the first call to `c_str()` will result in memory allocation and conversion of `sys_string` data to UTF-8. If you end up doing the above a lot and it becomes a performance issue this is a sign that `sys_string` is not a right class for your problem domain and `std::string` might be a better choice. ## Accessing storage as C array @@ -316,8 +425,9 @@ else use_data(buffer.data(), size); } ``` -Note that the content returned by `data()` is generally not null-terminated. -The `copy_data()` method is more general allowing you to copy starting from any index (first argument) and any valid size (third argument). +Note that the content returned by `data()` may be not null-terminated. + +The `copy_data()` method also allows you to copy starting from any index (first argument) and any valid size (third argument). ## Building and modifications @@ -330,14 +440,15 @@ sys_string result = sys_string(str1) + sys_string(str2) ``` This might perform 2 allocation for addends to store the conversion results and then add them and discard the temporaries. -* Use `format()` method. This method works like `printf` except it returns the formatted result in a `sys_string`. This works well for formatting but it is very slow and inefficient. +* Use `format()` or `std_format` methods. The first method works like `printf` except it returns the formatted result in a `sys_string`. +The second does the same using `std::format` facility (if available) and uses its syntax. This works well for formatting but it is very slow and inefficient. * Use `sys_string_builder` class. This is the most general, performant and flexible way. To use `sys_string_builder` you create an instance of it, perform various methods that populate its content and then call the `build()` method to produce a `sys_string`. The `build()` method is `noexcept` and is very low or 0 cost - there are no allocations happening in it. Everything that needed to be allocated is already done by the time you call it. -Generally, `sys_string_builder` can be used in 2 ways. First it exposes the conventional "builder" idiom where you can do things like: +Generally, `sys_string_builder` can be used in two ways. First it exposes the conventional "builder" idiom where you can do things like: ```cpp std::string cppstr = ...; @@ -349,17 +460,26 @@ sys_string str = sys_string_builder() .build(); ``` -This is more efficient that concatenating `sys_string`s because conversions happen only once and re-allocations follow the same amortized pattern used by `std::vector` or `std::string`. +This is more efficient than concatenating `sys_string`s because conversions happen only once and re-allocations follow the amortized cost algorithm pattern used by `std::vector` or `std::string`. Second, `sys_string_builder` exposes interface similar to the one of `std::vector`. You can do things like `push_back(char32_t)`, `pop_back()`, `insert(iterator, char32_t)`, `erase(iterator)`, `erase(iterator, iterator)` or `clear()`. -The iterators used in these methods are returned by the regular `begin()`, `end()` etc. methods. +The iterators used in these methods are returned by the regular `begin()`, `end()` etc. methods. -However, note that `sys_string_builder` isn't really a container of `char32_t`s. Its internal storage unit is the same as `sys_string` and is platform dependent. The interface deliberately forces you to use `char32_t`s to prevent constructing invalid Unicode. +For example you can do things like: + +```cpp +sys_string_builder builder; +builder.insert(builder.end(), U'a'); +builder.erase(builder..begin()); +std::ranges::copy(U"bc"sv, std::back_inserter(builder)); -The iterators are bi-directional rather than random-access ones and they return non-modifiable values rather than references. +assert(builder.build() == S("bc")); +``` + +However, note that `sys_string_builder` isn't really a container of `char32_t`s. Its internal storage unit is the same as `sys_string` and is platform dependent. The interface deliberately forces you to use `char32_t`s to prevent constructing invalid Unicode. -Thus, because the iterators do not return references to the actual underlying storage, you cannot make modifications via iterators' `operator*`. That is the following won't work +The iterators do not return references to the actual underlying storage and you cannot make modifications via iterators' `operator*`. That is the following won't work ```cpp sys_string_builder builder; builder.append("abc"); @@ -368,7 +488,7 @@ builder.append("abc"); Another difference from `std::vector` is that there is no `size()`, `resize()` etc. methods - the internal storage size is not the same as size in `char32_t`s. Instead there are `storage_size()`, `resize_storage()` and `reserve_storage()` methods. -Finally, just like `sys_string` class, `sys_string_builder` exposes `utf8_view`, `utf16_view` and `utf32_view` types allowing you to iterate over its contents in any of these ways. The iterators exposed by `utf32_view` are exactly the same as `sys_string_builder` iterators. +In addition, `sys_string_builder` supports `as_utf8`, `as_utf16` and `as_utf32` adapters allowing you to iterate over its contents in any of these ways. The iterators exposed by `as_utf32` are exactly the same as `sys_string_builder` iterators. ## Utility methods @@ -379,53 +499,99 @@ auto empty() const noexcept -> bool ``` ### Printf-style construction of a string + ```cpp static auto format(const char * spec, ...) -> sys_string; static auto formatv(const char * spec, va_list vl) -> sys_string; ``` +The allowed format syntax is the exactly the same as for `printf` on your platform. + +### std::format-style construction of a string + +```cpp +template +static auto std_format(std::format_string fmt, Args &&... args) -> sys_string_t; +static auto std_vformat(std::string_view fmt, std::format_args args) -> sys_string_t; +``` + +This uses `std::format` format string syntax and provides modern and type-safe alternative to `format`. +However, these methods are only available if your standard library supports `std::format` facility. + ### Printing into `std::ostream` ```cpp friend auto operator<<(std::ostream & str, const sys_string & val) -> std::ostream &; ``` -Prints the string content **as UTF-8** into `std::ostream`. Note that if your output goes somewhere that doesn't use UTF-8 encoding (Windows console or Unix terminal with non UTF-8 locale, for example) the output will not be garbled. +Prints the string content **as UTF-8** into `std::ostream`. If the storage type of `sys_string` is `char` its content is printed verbatim. +Otherwise it is first converted to UTF-8. + +> [!WARNING] +> If the output is converted to UTF-8 and goes somewhere that doesn't use UTF-8 encoding (Windows console or Unix terminal with non UTF-8 locale, for example) the output will be garbled. -On Windows and any platform that defines `__STDC_ISO_10646__` macro there is also +On Windows or on any platform that defines `__STDC_ISO_10646__` macro there is also ```cpp friend auto operator<<(std::wostream & str, const sys_string & val) -> std::wostream &; ``` -That prints out UTF-16 or UTF-32 views of the string. +that behaves similarly for `wchar_t`. + +> [!NOTE] +> The `operator<<` currently completely ignores width, precision and fill settings of the stream - the entire string +> is printed out as is. This might change in future versions. + +### Formatting with `std::format` + +You can use `sys_string` instances in `std::format`. Currently there are no allowed format flags. As with `operator<<` the output is produced in UTF-8. + +```cpp +std::string str = std::format("Hello {}", S("abc")); +assert(str = "Hello abc"); +``` ### Trimming -The following methods trim the string on both ends, left or right. By default space characters are removed. You can pass a predicate functor to change that. The space characters are those having Unicode property [White_Space](https://en.wikipedia.org/wiki/Whitespace_character#Unicode). +The following methods trim the string on both ends, left or right. By default space characters are removed. You can pass a predicate functor to change that. + +The default `sysstr::isspace` predicate detects as space characters those having Unicode property [White_Space](https://en.wikipedia.org/wiki/Whitespace_character#Unicode). + ```cpp -template +template Pred = sysstr::isspace> auto trim(Pred pred = Pred()) const -> sys_string; -template + +template Pred = sysstr::isspace> auto ltrim(Pred pred = Pred()) const -> sys_string; -template + +template Pred = sysstr::isspace> auto rtrim(Pred pred = Pred()) const -> sys_string; ``` +### Digression: sys_string_or_char concept + +Many `sys_string_t` method described below can take either a `sys_string_t` as an argument or a single `char32_t`. +The concept that describes such argument is named `sys_string_or_char` in this text. + ### Splitting The following methods split the string into a sequence of strings on a given separator + ```cpp -template +template OutIt> auto split(OutIt dest, const StringOrChar & sep, size_t max_split = std::numeric_limits::max()) const -> OutIt; -template + +template Search, + std::output_iterator OutIt> auto split(OutIt dest, Search pred) const -> OutIt; ``` + The `dest` argument is an output iterator to the destination. Each split part will be written into it as `sys_string`. + The second argument can be -* A `char32_t` or a `sys_string` in which case it is the separator to split on. In this case the optional 3rd argument specifies maximum number of splits to make. -* A searcher functor that is given a pair `(begin ,end)` of `utf32_view` iterators. It is responsible to locate the first occurrence of a separator in this sequence and return a pair of iterators (`std::pair`, `std::tuple` or anything that can be destructured) to beginning and end of the separator. To finish splitting it must return an empty range. +* A `char32_t` or a `sys_string` in which case it is the separator to split on. The optional 3rd argument specifies maximum number of splits to make. +* A searcher functor that is given a pair `(begin, end)` of `utf32_view` iterators. It is responsible to locate the first occurrence of a separator in this sequence and return a pair of iterators (`std::pair`, `std::tuple` or anything that can be destructured) to beginning and end of the separator. To finish splitting it must return an empty range. -The rules for splitting are as follows: +The rules for splitting on `char32_t` or a `sys_string` are as follows: * If the string is empty the output is a single empty string * If the separator is not found the output is a single string equal to source * An empty separator is never found. @@ -435,15 +601,20 @@ The rules for splitting are as follows: ### Joining This is the reverse of splitting. The following method joins a sequence of `sys_strings` using the source ```cpp -template -auto join(FwdIt first, FwdIt last) const -> sys_string; -``` +template EndIt> +auto join(It first, EndIt last) const -> sys_string; + +template +auto join(const Range & range) const -> sys_string; +``` + +The passed iterators/range should produces something that can be appended (via one of the `.append()` methods) to a `sys_string_builder`. You use it like this ```cpp std::vector parts = {S("a"), S("b")}; -sys_string joined = S(',').join(parts.begin(), parts.end()); +sys_string joined = S(',').join(parts); assert(joined == S("a,b")); ``` @@ -456,41 +627,73 @@ The rules for joining are as follows You can check whether a string starts with/ends with/contains another string or a single `char32_t` using ```cpp -template +template auto starts_with(const StringOrChar & prefix) const -> bool; -template +template auto ends_with(const StringOrChar & suffix) const -> bool; -template +template auto contains(const StringOrChar & inner) const -> bool; ``` If you have multiple prefixes/suffixes/infixes to test you can use the following which is more efficient than calling the above in a loop ```cpp -template -auto find_prefix(InIt first, InIt last) const -> InIt; -template -auto find_suffix(InIt first, InIt last) const -> InIt; -template -auto find_contained(InIt first, InIt last) const -> InIt; +template EndIt> +auto find_prefix(It first, EndIt last) const -> It; +template +auto find_prefix(Range && range) const -> It; + +template EndIt> +auto find_suffix(It first, EndIt last) const -> It; +template +auto find_suffix(Range && range) const -> It; + +template EndIt> +auto find_contained(It first, EndIt last) const -> It; +template +auto find_contained(Range && range) const -> It; ``` -The iterators should return the sequence of `sys_string` or `char32_t` to attempt to match. The return value is the iterator to the first found item or `last`. +The iterators should return the sequence of `sys_string` or `char32_t` to attempt to match. The return value is the iterator to the first found item or end of the sequence. + +Sometimes, it is convenient to find whether a given substring is present and get the parts before, after or both in one step. The following methods enable this functionality: + +```cpp +template +auto suffix_after_first(const StringOrChar & divider) const -> std::optional; +template +auto prefix_before_first(const StringOrChar & divider) const -> std::optional; + +template +auto suffix_after_last(const StringOrChar & divider) const -> std::optional; +template +auto prefix_before_last(const StringOrChar & divider) const -> std::optional; + +template +auto partition_at_first(const StringOrChar & divider) const -> std::optional>; +template +auto partition_at_last(const StringOrChar & divider) const -> std::optional>; +``` + +All these methods return an `std::optional` result which is not set if the divider isn't present. If it is present the +result contains the looked for part: suffix, prefix or an `std::pair` of both. You can find and remove prefix or suffix in one call using ```cpp -template +template auto remove_prefix(const StringOrChar & prefix) const -> sys_string; -template +template auto remove_suffix(const StringOrChar & prefix) const -> sys_string; ``` -For all of these method an empty string is always "found". +Sometimes it is + +For all of these method an empty string argument is always "found". ### Replacing content You can replace content of the string using ```cpp -template +template auto replace(const StringOrChar1 & old, const StringOrChar2 & new_, size_t max_count = std::numeric_limits::max()) const -> sys_string>; ``` diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index bb33203..99e8244 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -32,7 +32,7 @@ set_target_properties(${LIBNAME} PROPERTIES target_compile_features(${LIBNAME} PUBLIC - cxx_std_17 + cxx_std_20 ) target_compile_options(${LIBNAME} @@ -71,6 +71,7 @@ set(MAIN_CODE ${SRCDIR}/inc/sys_string/impl/builder.h ${SRCDIR}/inc/sys_string/impl/misc.h ${SRCDIR}/inc/sys_string/impl/format.h + ${SRCDIR}/inc/sys_string/impl/print.h ${SRCDIR}/inc/sys_string/impl/platform.h ) source_group("Main Code" FILES ${MAIN_CODE}) @@ -103,9 +104,9 @@ source_group("Unicode" FILES ${UNICODE_FILES} ${SOURCES}) set(UTIL_FILES ${SRCDIR}/inc/sys_string/impl/util/util.h - ${SRCDIR}/inc/sys_string/impl/util/char_buffer.h - ${SRCDIR}/inc/sys_string/impl/util/generic_buffer.h - ${SRCDIR}/inc/sys_string/impl/util/cursor.h + ${SRCDIR}/inc/sys_string/impl/util/char_vector.h + ${SRCDIR}/inc/sys_string/impl/util/generic_impl.h + ${SRCDIR}/inc/sys_string/impl/util/iter_util.h ) source_group("Utils" FILES ${UTIL_FILES}) diff --git a/lib/inc/sys_string/config.h b/lib/inc/sys_string/config.h index c854ef2..510143b 100644 --- a/lib/inc/sys_string/config.h +++ b/lib/inc/sys_string/config.h @@ -8,8 +8,18 @@ #ifndef HEADER_SYS_STRING_CONFIG_H_INCLUDED #define HEADER_SYS_STRING_CONFIG_H_INCLUDED -#define SYS_STRING_USE_SPACESHIP_OPERATOR (__cpp_impl_three_way_comparison >= 201907) -#define SYS_STRING_USE_CHAR8 (__cpp_char8_t >= 201811) +#if __cplusplus < 202002L && _MSVC_LANG < 202002L + #error This library requires C++20 or above +#endif + +#if __cpp_impl_three_way_comparison < 201907 + #error This library requires your compiler to support three-way comparison +#endif + +#if __cpp_char8_t < 201811 + #error This library requires your compiler to support char8_t +#endif + #if (defined(__APPLE__) && defined(__MACH__)) @@ -61,6 +71,11 @@ #error Please define pointer size for your platform #endif +#if defined(__STDC_ISO_10646__) && !SYS_STRING_WCHAR_T_IS_UTF16 + #define SYS_STRING_WCHAR_T_IS_UTF32 1 +#endif + + #if defined(_MSC_VER) #define SYS_STRING_FORCE_INLINE __forceinline #elif defined(__GNUC__) @@ -80,45 +95,20 @@ #include #endif -#define SYS_STRING_USE_SPAN (__cpp_lib_span >= 202002) -#define SYS_STRING_USE_STD_ENDIAN (__cpp_lib_endian >= 201907) -#define SYS_STRING_USE_RANGES (__cpp_lib_ranges >= 201911) - -#if __cpp_lib_constexpr_algorithms >= 201806 - #define SYS_STRING_CONSTEXPR_ALGO constexpr -#else - #define SYS_STRING_CONSTEXPR_ALGO +#if __cpp_lib_endian < 201907 + #error Your standard library does not support std::endian #endif -#if SYS_STRING_USE_STD_ENDIAN - - #include - namespace sysstr - { - using endian = std::endian; - } +#if __cpp_lib_ranges < 201911 + #error Your standard library does not support ranges +#endif -#else +//See https://github.com/llvm/llvm-project/issues/77773 for the sad story of how feature test +//macros are useless with libc++ +#if __cpp_lib_format >= 201907L || (defined(_LIBCPP_VERSION) && __has_include()) - namespace sysstr - { - enum class endian - { - #ifdef _MSC_VER - little = 0, - big = 1, - native = little - #elif defined(__BYTE_ORDER__) - little = __ORDER_LITTLE_ENDIAN__, - big = __ORDER_BIG_ENDIAN__, - native = __BYTE_ORDER__ - #else - #error Please define byte order values for your compiler - #endif - }; - } + #define SYS_STRING_SUPPORTS_STD_FORMAT 1 #endif - #endif diff --git a/lib/inc/sys_string/impl/addition.h b/lib/inc/sys_string/impl/addition.h index 303f675..45b46da 100644 --- a/lib/inc/sys_string/impl/addition.h +++ b/lib/inc/sys_string/impl/addition.h @@ -19,17 +19,17 @@ namespace sysstr::util class addend> { public: - addend(sys_string_t && str) noexcept: - m_val(std::move(str)) + addend(const sys_string_t & str) noexcept: + m_val(str) {} auto storage_size() const noexcept -> typename sys_string_t::size_type - { return m_val.storage_size(); } + { return this->m_val.storage_size(); } auto append_to(sys_string_builder_t & builder) const -> void - { builder.append(m_val); } + { builder.append(this->m_val); } private: - sys_string_t m_val; + const sys_string_t & m_val; }; template @@ -43,53 +43,131 @@ namespace sysstr::util } auto storage_size() const noexcept -> typename sys_string_t::size_type - { return typename sys_string_t::size_type(m_encoded.end() - m_encoded.begin()); } + { return typename sys_string_t::size_type(this->m_encoded.end() - this->m_encoded.begin()); } auto append_to(sys_string_builder_t & builder) const -> void - { builder.chars().append(m_encoded.begin(), storage_size()); } + { builder.chars().append(this->m_encoded.begin(), storage_size()); } private: utf_codepoint_encoder::storage_type>, true> m_encoded; }; + template + requires( + std::is_pointer_v> && + has_utf_encoding>>> + ) + class addend + { + private: + using Char = std::remove_const_t>>; + public: + addend(const Char * ptr) noexcept: + m_view(ptr) + {} + + auto storage_size() const -> typename sys_string_t::size_type + { + size_t count = m_view.size(); + if (count > size_t(Storage::max_size)) + throw std::bad_alloc(); + return static_cast::size_type>(count); + } + + auto append_to(sys_string_builder_t & builder) const -> void + { builder.append(m_view); } + private: + std::basic_string_view m_view; + }; + + template + requires( + !std::is_pointer_v> && + has_utf_encoding>) + class addend + { + public: + addend(const Range & range) noexcept: + m_range(range) + {} + + auto storage_size() const -> typename sys_string_t::size_type + { + size_t count; + if constexpr (std::is_same_v, typename sys_string_t::storage_type>) + { + if constexpr (std::ranges::sized_range) + { + count = std::ranges::size(this->m_range); + } + else + { + count = 0; + for(auto & x: this->m_range) + ++count; + } + } + else + { + using converter = utf_converter>, + utf_encoding_of::storage_type>>; + count = converter::converted_length(this->m_range); + } + if (count > size_t(Storage::max_size)) + throw std::bad_alloc(); + return static_cast::size_type>(count); + } + + auto append_to(sys_string_builder_t & builder) const -> void + { builder.append(this->m_range); } + private: + const Range & m_range; + }; + template class addend> { public: - addend(addition && val) noexcept: - m_val(std::move(val)) + addend(const addition & val) noexcept: + m_val(val) {} - auto storage_size() const noexcept -> typename sys_string_t::size_type - { return m_val.storage_size(); } + auto storage_size() const -> typename sys_string_t::size_type + { return this->m_val.storage_size(); } auto append_to(sys_string_builder_t & builder) const -> void - { m_val.append_to(builder); } + { this->m_val.append_to(builder); } private: - addition m_val; + const addition & m_val; }; template class addition { public: - addition(First left, Second right) noexcept: - m_first{std::move(left)}, - m_second{std::move(right)} + addition(const First & left, const Second & right) noexcept: + m_first{left}, + m_second{right} {} - friend auto operator+(addition lhs, sys_string_t rhs) noexcept - { return addition>(std::move(lhs), std::move(rhs)); } - friend auto operator+(addition lhs, char32_t rhs) noexcept - { return addition(std::move(lhs), rhs); } + friend auto operator+(const addition & lhs, const sys_string_t & rhs) noexcept + { return addition>(lhs, rhs); } + friend auto operator+(const addition & lhs, char32_t rhs) noexcept + { return addition(lhs, rhs); } + template + friend auto operator+(const addition & lhs, const Range & rhs) noexcept + { return addition(lhs, rhs); } - friend auto operator+(sys_string_t lhs, addition rhs) noexcept - { return addition, addition>(std::move(lhs), std::move(rhs)); } - friend auto operator+(char32_t lhs, addition rhs) noexcept - { return addition(lhs, std::move(rhs)); } + friend auto operator+(const sys_string_t & lhs, const addition & rhs) noexcept + { return addition, addition>(lhs, rhs); } + friend auto operator+(char32_t lhs, const addition & rhs) noexcept + { return addition(lhs, rhs); } + template + friend auto operator+(const Range & lhs, const addition & rhs) noexcept + { return addition(lhs, rhs); } template - friend auto operator+(addition lhs, addition rhs) noexcept - { return addition>(std::move(lhs), std::move(rhs)); } + friend auto operator+(const addition & lhs, const addition & rhs) noexcept + { return addition>(lhs, rhs); } operator sys_string_t() const { @@ -99,8 +177,14 @@ namespace sysstr::util return builder.build(); } - auto storage_size() const noexcept -> typename sys_string_t::size_type - { return this->m_first.storage_size() + this->m_second.storage_size(); } + auto storage_size() const -> typename sys_string_t::size_type + { + auto s1 = this->m_first.storage_size(); + auto s2 = this->m_second.storage_size(); + if (Storage::max_size - s1 < s2) + throw std::bad_alloc(); + return s1 + s2; + } void append_to(sys_string_builder_t & builder) const { diff --git a/lib/inc/sys_string/impl/builder.h b/lib/inc/sys_string/impl/builder.h index 88a76fb..e8959ce 100644 --- a/lib/inc/sys_string/impl/builder.h +++ b/lib/inc/sys_string/impl/builder.h @@ -12,177 +12,6 @@ namespace sysstr { - template - class sys_string_builder_t - { - private: - using impl_type = typename Storage::builder_impl; - - struct view_traits - { - using char_access = const impl_type &; - - static constexpr const impl_type & adapt(const sys_string_builder_t & builder) noexcept - { return builder.m_impl; } - }; - public: - using size_type = typename impl_type::size_type; - using storage_type = typename impl_type::value_type; - - template - using utf_view = utf_view; - - using utf8_view = utf_view; - using utf16_view = utf_view; - using utf32_view = utf_view; - - using iterator = typename utf32_view::iterator; - using const_iterator = typename utf32_view::const_iterator; - using reverse_iterator = typename utf32_view::reverse_iterator; - using const_reverse_iterator = typename utf32_view::const_reverse_iterator; - - private: - template - using const_storage_cursor = decltype(util::cursor_begin(std::declval())); - - template - using storage_cursor = decltype(util::cursor_begin(std::declval())); - - public: - - void clear() noexcept - { m_impl.clear(); } - - bool empty() const noexcept - { return m_impl.empty(); } - - size_type storage_size() const noexcept - { return m_impl.size(); } - - void reserve_storage(size_type size) - { m_impl.reserve(size); } - - void resize_storage(size_type new_size) - { m_impl.resize(new_size); } - - iterator begin() const noexcept - { return storage_begin(); } - iterator end() const noexcept - { return storage_end(); } - const_iterator cbegin() const noexcept - { return begin(); } - const_iterator cend() const noexcept - { return end(); } - reverse_iterator rbegin() const noexcept - { return storage_begin(); } - reverse_iterator rend() const noexcept - { return storage_end(); } - const_reverse_iterator crbegin() const noexcept - { return rbegin(); } - const_reverse_iterator crend() const noexcept - { return rend(); } - - - void push_back(char32_t c) - { append_one(m_impl, c); } - void pop_back() noexcept - { - auto it = ++rbegin(); - m_impl.erase(m_impl.begin() + it.storage_pos(), m_impl.end()); - } - - iterator insert(iterator where, char32_t c) - { - using util::cursor_at; - - auto pos = where.storage_pos(); - insert_one(m_impl, m_impl.begin() + pos, c); - return storage_at(pos); - } - - template - iterator insert(iterator where, const Char * str, size_t len) - { - using util::cursor_at; - - auto pos = where.storage_pos(); - insert_many(m_impl, m_impl.begin() + pos, str, len); - return storage_at(pos); - } - - iterator erase(iterator where) noexcept - { - using util::cursor_at; - - auto pos = where.storage_pos(); - auto where_it = m_impl.begin() + pos; - m_impl.erase(where_it, where_it + where.storage_size()); - return storage_at(pos); - } - iterator erase(iterator first, iterator last) noexcept - { - using util::cursor_at; - - auto first_pos = first.storage_pos(); - auto last_pos = last.storage_pos(); - m_impl.erase(m_impl.begin() + first_pos, m_impl.begin() + last_pos); - return storage_at(first_pos); - } - - sys_string_builder_t & append(char32_t c) - { append_one(m_impl, c); return *this; } - - template - sys_string_builder_t & append(const Char * str, size_t len) - { append_many(m_impl, str, len); return *this; } - template - sys_string_builder_t & append(const Char * str) - { append_many(m_impl, str, std::char_traits::length(str)); return *this; } - - sys_string_builder_t & append(const sys_string_t & str) - { append_access(typename sys_string_t::char_access(str)); return *this; } - - sys_string_t build() noexcept - { return util::build(m_impl); } - - const impl_type & chars() const - { return m_impl; } - impl_type & chars() - { return m_impl; } - - private: - static size_type limit_size(size_t len) - { - if (len > Storage::max_size) - throw std::bad_alloc(); - return size_type(len); - } - static void append_one(impl_type & impl, char32_t c); - - static void insert_one(impl_type & impl, typename impl_type::iterator where, char32_t c); - - template - static void append_many(impl_type & impl, const Char * str, size_t len); - - template - static void insert_many(impl_type & impl, typename impl_type::iterator pos, const Char * str, size_t len); - - template - void append_access(const Access & access); - - template - auto storage_begin() const -> const_storage_cursor - { return util::cursor_begin(m_impl); } - template - auto storage_end() const -> const_storage_cursor - { return util::cursor_end(m_impl); } - template - auto storage_at(size_type pos) const -> const_storage_cursor - { return util::cursor_at(m_impl, pos); } - private: - impl_type m_impl; - }; - template void sys_string_builder_t::append_one(impl_type & impl, char32_t c) { @@ -198,67 +27,76 @@ namespace sysstr } template - void sys_string_builder_t::insert_one(impl_type & impl, typename impl_type::iterator where, char32_t c) + auto sys_string_builder_t::insert_one(impl_type & impl, typename impl_type::iterator where, char32_t c) -> + typename impl_type::iterator { if constexpr (std::is_same_v) { - impl.insert(where, c); + return impl.insert(where, c); } else { using converter = utf_converter>; + auto pos = where - std::ranges::begin(impl); converter::convert(&c, &c + 1, std::inserter(impl, where)); + return std::ranges::begin(impl) + pos; } } template - template - void sys_string_builder_t::append_many(impl_type & impl, const Char * str, size_t len) + template + requires(has_utf_encoding>) + inline void sys_string_builder_t::append_many(impl_type & impl, const Range & range) { - if constexpr (std::is_same_v) + if constexpr(std::is_same_v, storage_type>) { - impl.append(str, limit_size(len)); + if constexpr (std::ranges::contiguous_range) + { + impl.append(std::ranges::data(range), limit_size(std::ranges::size(range))); + } + else + { + for(storage_type c: range) + impl.push_back(c); + } } else { - using converter = utf_converter, utf_encoding_of>; - converter::convert(str, str + len, std::back_inserter(impl)); + using converter = utf_converter>, utf_encoding_of>; + converter::convert(range, std::back_inserter(impl)); } } template - template - void sys_string_builder_t::insert_many(impl_type & impl, typename impl_type::iterator where, const Char * str, size_t len) + template + requires(has_utf_encoding>) + auto sys_string_builder_t::insert_many(impl_type & impl, typename impl_type::iterator where, const Range & range) -> + typename impl_type::iterator { - if constexpr (std::is_same_v) + if constexpr (std::is_same_v>) { - impl.insert(where, str, limit_size(len)); + if constexpr (std::ranges::contiguous_range) + { + return impl.insert(where, std::ranges::data(range), limit_size(std::ranges::size(range))); + } + else + { + auto pos = where - std::ranges::begin(impl); + for(storage_type c: range) + impl.push_back(c); + return std::ranges::begin(impl) + pos; + } } else { - auto inserter = std::inserter(impl, where); - using converter = utf_converter, utf_encoding_of>; - converter::convert(str, str + len, inserter); + using converter = utf_converter>, utf_encoding_of>; + auto pos = where - std::ranges::begin(impl); + converter::convert(range, std::inserter(impl, where)); + return std::ranges::begin(impl) + pos; } } - template - template - inline void sys_string_builder_t::append_access(const Access & access) - { - if constexpr (util::has_contiguous_data) - { - m_impl.append(access.data(), access.size()); - } - else - { - for(typename Access::size_type i = 0, count = access.size(); i < count; ++i) - { - auto c = access[i]; - m_impl.push_back(c); - } - } - } + } diff --git a/lib/inc/sys_string/impl/compare.h b/lib/inc/sys_string/impl/compare.h index 29513d0..9c2918d 100644 --- a/lib/inc/sys_string/impl/compare.h +++ b/lib/inc/sys_string/impl/compare.h @@ -15,20 +15,20 @@ namespace sysstr #if (defined(__APPLE__) && defined(__MACH__)) template<> - inline auto sys_string_cfstr::compare(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> compare_result + inline auto sys_string_cfstr::compare(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> std::strong_ordering { auto lhs_ptr = lhs.cf_str(); auto rhs_ptr = rhs.cf_str(); if (lhs_ptr == rhs_ptr) - return ordering_equal; + return std::strong_ordering::equal; if (!lhs_ptr) - return CFStringGetLength(rhs_ptr) == 0 ? ordering_equal : ordering_less; + return CFStringGetLength(rhs_ptr) == 0 ? std::strong_ordering::equal : std::strong_ordering::less; if (!rhs_ptr) - return CFStringGetLength(lhs_ptr) == 0 ? ordering_equal : ordering_greater; + return CFStringGetLength(lhs_ptr) == 0 ? std::strong_ordering::equal : std::strong_ordering::greater; CFComparisonResult res = CFStringCompare(lhs_ptr, rhs_ptr, 0); - return util::make_compare_result(int(res)); + return res <=> 0; } #endif @@ -36,41 +36,46 @@ namespace sysstr #if SYS_STRING_ENABLE_PYTHON template<> - inline auto sys_string_pystr::compare(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> compare_result + inline auto sys_string_pystr::compare(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> std::strong_ordering { auto lhs_ptr = lhs.py_str(); auto rhs_ptr = rhs.py_str(); if (lhs_ptr == rhs_ptr) - return ordering_equal; + return std::strong_ordering::equal; if (!lhs_ptr) - return PyUnicode_GetLength(rhs_ptr) == 0 ? ordering_equal : ordering_less; + return PyUnicode_GetLength(rhs_ptr) == 0 ? std::strong_ordering::equal : std::strong_ordering::less; if (!rhs_ptr) - return PyUnicode_GetLength(lhs_ptr) == 0 ? ordering_equal : ordering_greater; + return PyUnicode_GetLength(lhs_ptr) == 0 ? std::strong_ordering::equal : std::strong_ordering::greater; int res = PyUnicode_Compare(lhs_ptr, rhs_ptr); - return util::make_compare_result(res); + return res <=> 0; } #endif template - inline auto sys_string_t::compare(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> compare_result + inline auto sys_string_t::compare(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> std::strong_ordering { + static_assert(std::ranges::contiguous_range); + char_access lhs_access(lhs); char_access rhs_access(rhs); - return util::compare_3way(lhs_access.data(), lhs_access.size(), rhs_access.data(), rhs_access.size()); + using sv = std::basic_string_view; + return sv(lhs_access.data(), lhs_access.size()) <=> sv(rhs_access.data(), rhs_access.size()); } template - auto sys_string_t::compare_no_case(const sys_string_t lhs, const sys_string_t & rhs) noexcept -> compare_result + auto sys_string_t::compare_no_case(const sys_string_t lhs, const sys_string_t & rhs) noexcept -> std::strong_ordering { - utf32_view lhs_view(lhs); - utf32_view rhs_view(rhs); + utf32_access lhs_view(lhs); + utf32_access rhs_view(rhs); - auto lhs_first = lhs_view.begin(), lhs_last = lhs_view.end(); - auto rhs_first = rhs_view.begin(), rhs_last = rhs_view.end(); + auto lhs_first = lhs_view.begin(); + auto lhs_last = lhs_view.end(); + auto rhs_first = rhs_view.begin(); + auto rhs_last = rhs_view.end(); casefold folder; @@ -94,20 +99,16 @@ namespace sysstr if (shortest_length == 0) break; if (int res = std::char_traits::compare(lhs_buf, rhs_buf, shortest_length)) - return util::make_compare_result(res); + return res <=> 0; std::copy(lhs_buf + shortest_length, lhs_buf_end, lhs_buf); lhs_buf_end = lhs_buf_end - shortest_length; std::copy(rhs_buf + shortest_length, rhs_buf_end, rhs_buf); rhs_buf_end = rhs_buf_end - shortest_length; } - if (auto res = util::compare_3way(lhs_buf_end - lhs_buf, rhs_buf_end - rhs_buf); res != 0) + if (auto res = (lhs_buf_end - lhs_buf) <=> (rhs_buf_end - rhs_buf); res != 0) return res; -#if SYS_STRING_USE_SPACESHIP_OPERATOR return (rhs_first == rhs_last) <=> (lhs_first == lhs_last); -#else - return (rhs_first == rhs_last) - (lhs_first == lhs_last); -#endif } } diff --git a/lib/inc/sys_string/impl/format.h b/lib/inc/sys_string/impl/format.h index 0c9ba4b..007cf23 100644 --- a/lib/inc/sys_string/impl/format.h +++ b/lib/inc/sys_string/impl/format.h @@ -23,19 +23,59 @@ namespace sysstr template auto sys_string_t::formatv(const char * format, va_list vl) -> sys_string_t { - std::vector buf; - va_list try_vl; - va_copy(try_vl, vl); - const int size = vsnprintf(0, 0, format, try_vl); - va_end(try_vl); - if (size == -1) - return sys_string_t(); - buf.resize(size + 1); - const int ret = vsnprintf(&buf[0], buf.size(), format, vl); - va_end(vl); - if (ret <= 0) - return sys_string_t(); - buf.resize(ret); - return sys_string_t(&buf[0], buf.size()); + if constexpr (std::is_same_v::storage_type, char>) + { + sys_string_builder_t builder; + if (util::vprintf_to(builder.chars(), format, vl) <= 0) + return sys_string_t(); + return builder.build(); + } + else + { + std::vector buf; + if (util::vprintf_to(buf, format, vl) <= 0) + return sys_string_t(); + return sys_string_t(buf); + } } -} \ No newline at end of file + + #if SYS_STRING_SUPPORTS_STD_FORMAT + + template + template + inline + auto sys_string_t::std_format(std::format_string fmt, Args &&... args) -> sys_string_t + { + sys_string_builder_t builder; + if constexpr (std::is_same_v::storage_type, char>) + { + std::format_to(std::back_inserter(builder.chars()), fmt, std::forward(args)...); + } + else + { + auto decoder = make_utf_output_decoder(std::back_inserter(builder)); + std::format_to(decoder.begin(), fmt, std::forward(args)...); + decoder.flush(); + } + return builder.build(); + } + + template + inline + auto sys_string_t::std_vformat(std::string_view fmt, std::format_args args) -> sys_string_t + { + sys_string_builder_t builder; + if constexpr (std::is_same_v::storage_type, char>) + { + std::vformat_to(std::back_inserter(builder.chars()), fmt, args); + } + else + { + auto decoder = make_utf_output_decoder(std::back_inserter(builder)); + std::vformat_to(decoder.begin(), fmt, args); + decoder.flush(); + } + return builder.build(); + } + #endif +} diff --git a/lib/inc/sys_string/impl/misc.h b/lib/inc/sys_string/impl/misc.h index bb60dbd..208abfa 100644 --- a/lib/inc/sys_string/impl/misc.h +++ b/lib/inc/sys_string/impl/misc.h @@ -9,495 +9,451 @@ #error This header must not be included directly. Please include sys_string.h #endif -#include - -namespace sysstr::util +namespace sysstr { - template - class string_or_char32_char_access; + namespace util + { + template + class string_or_char32_char_access; - template - class string_or_char32_char_access> - { - public: - string_or_char32_char_access(const sys_string_t & str) noexcept: - m_access(str) - {} - auto begin() const noexcept - { return m_access.begin(); } - auto end() const noexcept - { return m_access.end(); } - auto rbegin() const noexcept - { return m_access.rbegin(); } - auto rend() const noexcept - { return m_access.rend(); } - auto size() const noexcept - { return m_access.size(); } + template + class string_or_char32_char_access> + { + public: + string_or_char32_char_access(const sys_string_t & str) noexcept: + m_access(str) + {} + auto begin() const noexcept + { return m_access.begin(); } + auto end() const noexcept + { return m_access.end(); } + auto rbegin() const noexcept + { return m_access.rbegin(); } + auto rend() const noexcept + { return m_access.rend(); } + auto size() const noexcept + { return m_access.size(); } - constexpr auto is_valid() const noexcept -> bool - { return true; } - private: - typename sys_string_t::char_access m_access; - }; - - template - class string_or_char32_char_access - { - public: - string_or_char32_char_access(char32_t c) noexcept: - m_valid(m_encoded.put(c)) - {} + constexpr auto is_valid() const noexcept -> bool + { return true; } + private: + typename sys_string_t::char_access m_access; + }; + + template + class string_or_char32_char_access + { + public: + string_or_char32_char_access(char32_t c) noexcept: + m_valid(m_encoded.put(c)) + {} - auto begin() const noexcept - { return m_encoded.begin(); } - auto end() const noexcept - { return m_encoded.end(); } - auto rbegin() const noexcept - { return std::reverse_iterator(m_encoded.end()); } - auto rend() const noexcept - { return std::reverse_iterator(m_encoded.begin()); } - auto size() const noexcept - { return typename sys_string_t::size_type(m_encoded.end() - m_encoded.begin()); } + auto begin() const noexcept + { return m_encoded.begin(); } + auto end() const noexcept + { return m_encoded.end(); } + auto rbegin() const noexcept + { return std::reverse_iterator(m_encoded.end()); } + auto rend() const noexcept + { return std::reverse_iterator(m_encoded.begin()); } + auto size() const noexcept + { return typename sys_string_t::size_type(m_encoded.end() - m_encoded.begin()); } - auto is_valid() const noexcept -> bool - { return m_valid; } - private: - utf_codepoint_encoder::storage_type>, true> m_encoded; - bool m_valid; - }; - - template - inline auto has_prefix(const CharAccess & access, const Cont & test) noexcept -> bool - { - if (!test.is_valid()) - return false; + auto is_valid() const noexcept -> bool + { return m_valid; } + private: + utf_codepoint_encoder::storage_type>, true> m_encoded; + bool m_valid; + }; + + template + inline auto has_prefix(const CharAccess & access, const Cont & test) noexcept -> bool + { + if (!test.is_valid()) + return false; - const auto test_size = test.size(); - if (test_size > access.size()) - return false; + const auto test_size = test.size(); + if (test_size > access.size()) + return false; - return std::equal(test.begin(), test.end(), access.begin()); + return std::ranges::equal(test.begin(), test.end(), access.begin(), access.begin() + test_size); + } } -} - -namespace sysstr -{ template inline - auto operator<<(std::ostream & str, const sys_string_t & val) -> std::ostream & + auto sys_string_t::to_lower() const -> sys_string_t { - for(char c: typename sys_string_t::utf8_view(val)) - str << c; - return str; + sys_string_t::utf32_access access(*this); + sys_string_builder_t builder; + tolower>()(access, std::back_inserter(builder.chars())); + return builder.build(); } -#if defined(_WIN32) - template inline - auto operator<<(std::wostream & str, const sys_string_t & val) -> std::wostream & + auto sys_string_t::to_upper() const -> sys_string_t { - for(char16_t c: typename sys_string_t::utf16_view(val)) - str << wchar_t(c); - return str; + sys_string_t::utf32_access access(*this); + sys_string_builder_t builder; + toupper>()(access, std::back_inserter(builder.chars())); + return builder.build(); } -#elif defined(__STDC_ISO_10646__) template - inline - auto operator<<(std::wostream & str, const sys_string_t & val) -> std::wostream & + template Pred> + auto sys_string_t::trim(Pred pred) const -> sys_string_t { - for(char32_t c: typename sys_string_t::utf32_view(val)) - str << wchar_t(c); - return str; - } - -#endif - -} - - - -template -inline -auto sysstr::sys_string_t::to_lower() const -> sys_string_t -{ - sys_string_t::utf32_view view(*this); - sys_string_builder_t builder; - tolower>()(view.cursor_begin(), std::back_inserter(builder.chars())); - return builder.build(); -} - -template -inline -auto sysstr::sys_string_t::to_upper() const -> sys_string_t -{ - sys_string_t::utf32_view view(*this); - sys_string_builder_t builder; - toupper>()(view.cursor_begin(), std::back_inserter(builder.chars())); - return builder.build(); -} - + sys_string_t::utf32_access access(*this); + auto trimmed_start = access.begin(); + for( ; ; ++trimmed_start) + { + if (trimmed_start == access.end()) + return sys_string_t(); -template -template -auto sysstr::sys_string_t::trim(Pred pred) const -> sys_string_t -{ - sys_string_t::utf32_view view(*this); - auto trimmed_start = view.cursor_begin(); - for( ; ; ++trimmed_start) - { - if (!trimmed_start) - return sys_string_t(); + char32_t c = *trimmed_start; + if (!pred(c)) + break; + } - char32_t c = *trimmed_start; - if (!pred(c)) - break; + auto trimmed_end = access.rbegin(); + for( ; ; ++trimmed_end) + { + char32_t c = *trimmed_end; + if (!pred(c)) + break; + } + + return sys_string_t(trimmed_start.storage_current(), trimmed_end.storage_current().base()); } - auto trimmed_end = view.template cursor_begin(); - for( ; ; ++trimmed_end) + template + template Pred> + auto sys_string_t::ltrim(Pred pred) const -> sys_string_t { - char32_t c = *trimmed_end; - if (!pred(c)) - break; - } - - return sys_string_t(trimmed_start.storage_cursor(), trimmed_end.storage_pos() - trimmed_start.storage_pos()); -} + sys_string_t::utf32_access access(*this); + auto trimmed_start = access.begin(); + auto last = access.end(); + for( ; ; ++trimmed_start) + { + if (trimmed_start == last) + return sys_string_t(); -template -template -auto sysstr::sys_string_t::ltrim(Pred pred) const -> sys_string_t -{ - sys_string_t::utf32_view view(*this); - auto trimmed_start = view.cursor_begin(); - for( ; ; ++trimmed_start) - { - if (!trimmed_start) - return sys_string_t(); + char32_t c = *trimmed_start; + if (!pred(c)) + break; + } - char32_t c = *trimmed_start; - if (!pred(c)) - break; + return sys_string_t(trimmed_start.storage_current(), trimmed_start.storage_last()); } - return sys_string_t(trimmed_start.storage_cursor(), this->storage_size() - trimmed_start.storage_pos()); -} - -template -template -inline -auto sysstr::sys_string_t::rtrim(Pred pred) const -> sys_string_t -{ - sys_string_t::utf32_view view(*this); - auto trimmed_end = view.template cursor_begin(); - for( ; ; ++trimmed_end) + template + template Pred> + inline + auto sys_string_t::rtrim(Pred pred) const -> sys_string_t { - if (!trimmed_end) - return sys_string_t(); + sys_string_t::utf32_access access(*this); + auto trimmed_end = access.rbegin(); + auto last = access.rend(); + for( ; ; ++trimmed_end) + { + if (trimmed_end == last) + return sys_string_t(); - char32_t c = *trimmed_end; - if (!pred(c)) - break; - } + char32_t c = *trimmed_end; + if (!pred(c)) + break; + } - return sys_string_t(trimmed_end.storage_cursor(), trimmed_end.storage_pos()); -} - -template -template -auto sysstr::sys_string_t::split(OutIt dest, Search search) const -> - std::enable_if_t, OutIt> -{ - utf32_view view(*this); - return util::split>(view.begin(), view.end(), dest, search); -} + return sys_string_t(trimmed_end.storage_current(), trimmed_end.storage_last()); + } -template -template -auto sysstr::sys_string_t::split(OutIt dest, const StringOrChar & sep, size_t max_split) const -> - std::enable_if_t, OutIt> -{ - util::string_or_char32_char_access sep_access(sep); - if (!sep_access.is_valid() || sep_access.size() == 0) + template + template + auto sys_string_t::split(OutIt dest, Search search) const -> OutIt + requires(std::output_iterator && + std::is_invocable_v) { - *dest++ = *this; - return dest; + utf32_access access(*this); + return util::split>(access.begin(), access.end(), dest, search); } + + template + template StringOrChar, class OutIt> + auto sys_string_t::split(OutIt dest, const StringOrChar & sep, size_t max_split) const -> OutIt + requires(std::output_iterator) + { + util::string_or_char32_char_access sep_access(sep); + if (!sep_access.is_valid() || sep_access.size() == 0) + { + *dest++ = *this; + return dest; + } - sys_string_t::char_access access(*this); + sys_string_t::char_access access(*this); - auto sep_begin = sep_access.begin(); - auto sep_end = sep_access.end(); - auto sep_size = sep_access.size(); + auto sep_begin = sep_access.begin(); + auto sep_end = sep_access.end(); - return util::split>(access.begin(), access.end(), dest, - [sep_begin, sep_end, sep_size, max_split] (auto str_start, auto str_end) mutable noexcept { + return util::split>(access.begin(), access.end(), dest, + [sep_begin, sep_end, max_split] (auto str_start, auto str_end) mutable noexcept { - if (max_split == 0) - return std::pair(str_end, str_end); - --max_split; + if (max_split == 0) + { + std::ranges::advance(str_start, str_end); + return std::pair(str_start, str_start); + } - auto found_it = std::search(str_start, str_end, sep_begin, sep_end); - if (found_it == str_end) - return std::pair(str_end, str_end); - return std::pair(found_it, found_it + sep_size); - }); -} + --max_split; + + auto result = std::ranges::search(str_start, str_end, sep_begin, sep_end); + return std::pair(result.begin(), result.end()); + }); + } -template -template -auto sysstr::sys_string_t::join(FwdIt first, FwdIt last) const -> sys_string_t -{ - sys_string_builder_t builder; - bool has_one = false; - for( ; first != last; ++first) + template + template EndIt> + requires(builder_appendable, Storage>) + auto sys_string_t::join(It first, EndIt last) const -> sys_string_t { - if (has_one) - builder.append(*this); - else - has_one = true; - builder.append(*first); + sys_string_builder_t builder; + bool has_one = false; + for( ; first != last; ++first) + { + if (has_one) + builder.append(*this); + else + has_one = true; + builder.append(*first); + } + return builder.build(); } - return builder.build(); -} -namespace sysstr::util -{ - template - inline auto has_suffix(const CharAccess & access, const Cont & test) noexcept -> bool + namespace util { - if (!test.is_valid()) - return false; + template + inline auto has_suffix(const CharAccess & access, const Cont & test) noexcept -> bool + { + if (!test.is_valid()) + return false; - const auto test_size = test.size(); - if (test_size > access.size()) - return false; + const auto test_size = test.size(); + const auto access_size = access.size(); + if (test_size > access_size) + return false; - return std::equal(test.begin(), test.end(), access.end() - test_size); - } + return std::ranges::equal(test.begin(), test.end(), access.begin() + access_size - test_size, access.end()); + } - template - inline auto has_infix(const CharAccess & access, const Cont & test) noexcept -> bool - { - if (!test.is_valid()) - return false; - - const auto test_size = test.size(); - const auto access_size = access.size(); - if (test_size > access.size()) - return false; + template + inline auto has_infix(const CharAccess & access, const Cont & test) noexcept -> bool + { + if (!test.is_valid()) + return false; - if (access_size == 0) - return true; + const auto test_size = test.size(); + const auto access_size = access.size(); + if (test_size > access_size) + return false; + if (access_size == 0) + return true; - auto access_end = access.end(); - return std::search(access.begin(), access_end, test.begin(), test.end()) != access_end; + return std::ranges::search(access, test).begin() != access.end(); + } } -} -template -template -auto sysstr::sys_string_t::starts_with(const StringOrChar & prefix) const -> std::enable_if_t, bool> -{ - return util::has_prefix(sys_string_t::char_access(*this), util::string_or_char32_char_access(prefix)); -} + template + template StringOrChar> + auto sys_string_t::starts_with(const StringOrChar & prefix) const -> bool + { + return util::has_prefix(sys_string_t::char_access(*this), util::string_or_char32_char_access(prefix)); + } -template -template -auto sysstr::sys_string_t::find_prefix(InIt first, InIt last) const -> InIt -{ - using item_type = typename std::iterator_traits::value_type; + template + template EndIt> + requires(sys_string_or_char, Storage>) + auto sys_string_t::find_prefix(It first, EndIt last) const -> It + { + using item_type = std::iter_value_t; - sys_string_t::char_access str_access(*this); - return std::find_if(first, last, [&str_access] (auto & item) { - return util::has_prefix(str_access, util::string_or_char32_char_access(item)); - }); -} + sys_string_t::char_access str_access(*this); + return std::ranges::find_if(first, last, [&str_access] (auto & item) { + return util::has_prefix(str_access, util::string_or_char32_char_access(item)); + }); + } -template -template -auto sysstr::sys_string_t::remove_prefix(const StringOrChar & prefix) const - -> std::enable_if_t, sys_string_t> -{ - sys_string_t::char_access access(*this); - util::string_or_char32_char_access prefix_access(prefix); - if (!has_prefix(access, prefix_access)) - return *this; - return sys_string_t(access.begin() + prefix_access.size(), access.end()); -} + template + template StringOrChar> + auto sys_string_t::remove_prefix(const StringOrChar & prefix) const -> sys_string_t + { + sys_string_t::char_access access(*this); + util::string_or_char32_char_access prefix_access(prefix); + if (!has_prefix(access, prefix_access)) + return *this; + return sys_string_t(access.begin() + prefix_access.size(), access.end()); + } -template -template -auto sysstr::sys_string_t::ends_with(const StringOrChar & suffix) const - -> std::enable_if_t, bool> -{ - return util::has_suffix(sys_string_t::char_access(*this), util::string_or_char32_char_access(suffix)); -} + template + template StringOrChar> + auto sys_string_t::ends_with(const StringOrChar & suffix) const -> bool + { + return util::has_suffix(sys_string_t::char_access(*this), util::string_or_char32_char_access(suffix)); + } -template -template -auto sysstr::sys_string_t::remove_suffix(const StringOrChar & suffix) const - -> std::enable_if_t, sys_string_t> -{ - sys_string_t::char_access access(*this); - util::string_or_char32_char_access suffix_access(suffix); - if (!has_suffix(access, suffix_access)) - return *this; - return sys_string_t(access.begin(), access.end() - suffix_access.size()); -} + template + template StringOrChar> + auto sys_string_t::remove_suffix(const StringOrChar & suffix) const -> sys_string_t + { + sys_string_t::char_access access(*this); + util::string_or_char32_char_access suffix_access(suffix); + if (!has_suffix(access, suffix_access)) + return *this; + return sys_string_t(access.begin(), access.size() - suffix_access.size()); + } -template -template -auto sysstr::sys_string_t::find_suffix(InIt first, InIt last) const -> InIt -{ - using item_type = typename std::iterator_traits::value_type; + template + template EndIt> + requires(sys_string_or_char, Storage>) + auto sys_string_t::find_suffix(It first, EndIt last) const -> It + { + using item_type = std::iter_value_t; - sys_string_t::char_access str_access(*this); - return std::find_if(first, last, [&str_access] (auto & item) { - return util::has_suffix(str_access, util::string_or_char32_char_access(item)); - }); -} + sys_string_t::char_access str_access(*this); + return std::find_if(first, last, [&str_access] (auto & item) { + return util::has_suffix(str_access, util::string_or_char32_char_access(item)); + }); + } -template -template -auto sysstr::sys_string_t::contains(const StringOrChar & inner) const -> std::enable_if_t, bool> -{ - return util::has_infix(sys_string_t::char_access(*this), util::string_or_char32_char_access(inner)); -} + template + template StringOrChar> + auto sys_string_t::contains(const StringOrChar & inner) const -> bool + { + return util::has_infix(sys_string_t::char_access(*this), util::string_or_char32_char_access(inner)); + } -template -template -auto sysstr::sys_string_t::find_contained(InIt first, InIt last) const -> InIt -{ - using item_type = typename std::iterator_traits::value_type; + template + template EndIt> + requires(sys_string_or_char, Storage>) + auto sys_string_t::find_contained(It first, EndIt last) const -> It + { + using item_type = std::iter_value_t; - sys_string_t::char_access str_access(*this); - return std::find_if(first, last, [&str_access] (auto & item) { - return util::has_infix(str_access, util::string_or_char32_char_access(item)); - }); -} + sys_string_t::char_access str_access(*this); + return std::find_if(first, last, [&str_access] (auto & item) { + return util::has_infix(str_access, util::string_or_char32_char_access(item)); + }); + } -template -template -auto sysstr::sys_string_t::replace(const StringOrChar1 & old, const StringOrChar2 & new_, size_t max_count) const -> - std::enable_if_t && is_string_or_char, sys_string_t> -{ - if (max_count == 0) - return *this; + template + template StringOrChar1, sys_string_or_char StringOrChar2> + auto sys_string_t::replace(const StringOrChar1 & old, const StringOrChar2 & new_, size_t max_count) const -> sys_string_t + { + if (max_count == 0) + return *this; - util::string_or_char32_char_access old_access(old); - if (!old_access.is_valid() || old_access.size() == 0) - return *this; + util::string_or_char32_char_access old_access(old); + if (!old_access.is_valid() || old_access.size() == 0) + return *this; - sys_string_t::char_access str_access(*this); - auto first = str_access.begin(); - const auto last = str_access.end(); + sys_string_t::char_access str_access(*this); + auto first = str_access.begin(); + const auto last = str_access.end(); - sys_string_builder_t builder; + sys_string_builder_t builder; - for( ; ; ) - { - auto found = std::search(first, last, old_access.begin(), old_access.end()); - std::copy(first, found, std::back_inserter(builder.chars())); - if (found == last) - break; - builder.append(new_); - first = found + old_access.size(); - if (--max_count == 0) + for( ; ; ) { - std::copy(first, last, std::back_inserter(builder.chars())); - break; + auto found_range = std::ranges::search(first, last, old_access.begin(), old_access.end()); + std::ranges::copy(first, found_range.begin(), std::back_inserter(builder.chars())); + if (found_range.begin() == last) + break; + builder.append(new_); + first = found_range.end(); + if (--max_count == 0) + { + std::ranges::copy(first, last, std::back_inserter(builder.chars())); + break; + } } - } - return builder.build(); -} + return builder.build(); + } -template -template -auto sysstr::sys_string_t::suffix_after_first(const StringOrChar & divider) const -> - std::enable_if_t, std::optional> -{ - sys_string_t::char_access my_access(*this); - util::string_or_char32_char_access divider_access(divider); - auto it = std::search(my_access.begin(), my_access.end(), divider_access.begin(), divider_access.end()); - if (it == my_access.end() && divider_access.size() != 0) - return std::nullopt; - it += divider_access.size(); - return sys_string_t(it, my_access.end()); -} + template + template StringOrChar> + auto sys_string_t::suffix_after_first(const StringOrChar & divider) const -> std::optional + { + sys_string_t::char_access my_access(*this); + util::string_or_char32_char_access divider_access(divider); + auto found_range = std::ranges::search(my_access, divider_access); + if (found_range.begin() == my_access.end() && divider_access.size() != 0) + return std::nullopt; + return sys_string_t(found_range.end(), my_access.end()); + } -template -template -auto sysstr::sys_string_t::prefix_before_first(const StringOrChar & divider) const -> - std::enable_if_t, std::optional> -{ - sys_string_t::char_access my_access(*this); - util::string_or_char32_char_access divider_access(divider); - auto it = std::search(my_access.begin(), my_access.end(), divider_access.begin(), divider_access.end()); - if (it == my_access.end() && divider_access.size() != 0) - return std::nullopt; - return sys_string_t(my_access.begin(), it); -} + template + template StringOrChar> + auto sys_string_t::prefix_before_first(const StringOrChar & divider) const -> std::optional + { + sys_string_t::char_access my_access(*this); + util::string_or_char32_char_access divider_access(divider); + auto found_range = std::ranges::search(my_access, divider_access); + if (found_range.begin() == my_access.end() && divider_access.size() != 0) + return std::nullopt; + return sys_string_t(my_access.begin(), found_range.begin()); + } -template -template -auto sysstr::sys_string_t::suffix_after_last(const StringOrChar & divider) const -> - std::enable_if_t, std::optional> -{ - sys_string_t::char_access my_access(*this); - util::string_or_char32_char_access divider_access(divider); - auto it = std::search(my_access.rbegin(), my_access.rend(), divider_access.rbegin(), divider_access.rend()); - if (it == my_access.rend() && divider_access.size() != 0) - return std::nullopt; - return sys_string_t(my_access.begin() + (my_access.rend() - it), my_access.end()); -} + template + template StringOrChar> + auto sys_string_t::suffix_after_last(const StringOrChar & divider) const -> std::optional + { + sys_string_t::char_access my_access(*this); + util::string_or_char32_char_access divider_access(divider); + auto found_range = std::ranges::search(my_access.rbegin(), my_access.rend(), divider_access.rbegin(), divider_access.rend()); + if (found_range.begin() == my_access.rend() && divider_access.size() != 0) + return std::nullopt; + return sys_string_t(found_range.begin().base(), my_access.end()); + } -template -template -auto sysstr::sys_string_t::prefix_before_last(const StringOrChar & divider) const -> - std::enable_if_t, std::optional> -{ - sys_string_t::char_access my_access(*this); - util::string_or_char32_char_access divider_access(divider); - auto it = std::search(my_access.rbegin(), my_access.rend(), divider_access.rbegin(), divider_access.rend()); - if (it == my_access.rend() && divider_access.size() != 0) - return std::nullopt; - it += divider_access.size(); - return sys_string_t(my_access.begin(), my_access.begin() + (my_access.rend() - it)); -} + template + template StringOrChar> + auto sys_string_t::prefix_before_last(const StringOrChar & divider) const -> std::optional + { + sys_string_t::char_access my_access(*this); + util::string_or_char32_char_access divider_access(divider); + auto found_range = std::ranges::search(my_access.rbegin(), my_access.rend(), divider_access.rbegin(), divider_access.rend()); + if (found_range.begin() == my_access.rend() && divider_access.size() != 0) + return std::nullopt; + return sys_string_t(my_access.begin(), found_range.end().base()); + } -template -template -auto sysstr::sys_string_t::partition_at_first(const StringOrChar & divider) const -> - std::enable_if_t, std::optional>> -{ - sys_string_t::char_access my_access(*this); - util::string_or_char32_char_access divider_access(divider); - auto it = std::search(my_access.begin(), my_access.end(), divider_access.begin(), divider_access.end()); - if (it == my_access.end() && divider_access.size() != 0) - return std::nullopt; - return std::pair(sys_string_t(my_access.begin(), it), sys_string_t(it + divider_access.size(), my_access.end())); -} + template + template StringOrChar> + auto sys_string_t::partition_at_first(const StringOrChar & divider) const -> + std::optional> + { + sys_string_t::char_access my_access(*this); + util::string_or_char32_char_access divider_access(divider); + auto found_range = std::ranges::search(my_access, divider_access); + if (found_range.begin() == my_access.end() && divider_access.size() != 0) + return std::nullopt; + return std::pair(sys_string_t(my_access.begin(), found_range.begin()), sys_string_t(found_range.end(), my_access.end())); + } -template -template -auto sysstr::sys_string_t::partition_at_last(const StringOrChar & divider) const -> - std::enable_if_t, std::optional>> -{ - sys_string_t::char_access my_access(*this); - util::string_or_char32_char_access divider_access(divider); - auto it = std::search(my_access.rbegin(), my_access.rend(), divider_access.rbegin(), divider_access.rend()); - if (it == my_access.rend() && divider_access.size() != 0) - return std::nullopt; - return std::pair(sys_string_t(my_access.begin(), my_access.begin() + (my_access.rend() - it - divider_access.size())), - sys_string_t(my_access.begin() + (my_access.rend() - it), my_access.end())); + template + template StringOrChar> + auto sys_string_t::partition_at_last(const StringOrChar & divider) const -> + std::optional> + { + sys_string_t::char_access my_access(*this); + util::string_or_char32_char_access divider_access(divider); + auto found_range = std::ranges::search(my_access.rbegin(), my_access.rend(), divider_access.rbegin(), divider_access.rend()); + if (found_range.begin() == my_access.rend() && divider_access.size() != 0) + return std::nullopt; + return std::pair(sys_string_t(my_access.begin(), found_range.end().base()), + sys_string_t(found_range.begin().base(), my_access.end())); + } } diff --git a/lib/inc/sys_string/impl/platforms/android_java.h b/lib/inc/sys_string/impl/platforms/android_java.h index 893cb11..34aca1d 100644 --- a/lib/inc/sys_string/impl/platforms/android_java.h +++ b/lib/inc/sys_string/impl/platforms/android_java.h @@ -10,7 +10,7 @@ #endif -#include +#include namespace sysstr::util { @@ -25,14 +25,14 @@ namespace sysstr::util }; template - using static_buffer = generic::static_buffer; - using dynamic_buffer = generic::dynamic_buffer; + using android_static_string = generic::static_string; + using android_dynamic_string = generic::dynamic_string; - using buffer = generic::buffer; + using android_any_string = generic::any_string; - using builder_impl = generic::buffer_builder; + using android_builder_impl = generic::builder_impl; - using char_access = generic::char_access; + using android_char_access = generic::char_access; } @@ -40,7 +40,7 @@ namespace sysstr { class android_storage : private util::generic::storage { - friend util::char_access; + friend util::android_char_access; private: using super = util::generic::storage; public: @@ -49,8 +49,8 @@ namespace sysstr using native_handle_type = util::android_traits::native_handle_type; using hash_type = util::android_traits::hash_type; - using char_access = util::char_access; - using builder_impl = util::builder_impl; + using char_access = util::android_char_access; + using builder_impl = util::android_builder_impl; static constexpr auto max_size = util::android_traits::max_size; @@ -124,12 +124,12 @@ namespace sysstr::util { template<> template<> - inline char_access::char_access(const sys_string_t & src) noexcept: + inline android_char_access::char_access(const sys_string_t & src) noexcept: char_access(src.get_buffer()) {} template<> - inline sys_string_t build(builder_impl & builder) noexcept + inline sys_string_t build(android_builder_impl & builder) noexcept { return sys_string_t(convert_to_string(builder)); } @@ -137,31 +137,23 @@ namespace sysstr::util namespace sysstr { - template<> - inline sys_string_t::sys_string_t(const char_access::cursor & src, size_type length): - sys_string_t(src.iterator(), length) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::reverse_cursor & src, size_type length): - sys_string_t(src.iterator() - length, length) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::iterator & first, const char_access::iterator & last): - sys_string_t(first, last - first) - {} - using sys_string_android = sys_string_t; using sys_string_android_builder = sys_string_builder_t; } -#define SYS_STRING_STATIC_ANDROID(x) ([] () noexcept -> ::sysstr::sys_string_android { \ - constexpr ::size_t size = sizeof(u##x) / sizeof(char16_t); \ - static const ::sysstr::util::static_buffer sbuf{0, true, u##x}; \ - ::sysstr::util::buffer buf((::sysstr::util::dynamic_buffer *)&sbuf, size - 1, 0); \ - return *reinterpret_cast<::sysstr::sys_string_android *>(&buf); \ - }()) +namespace sysstr::util +{ + template + inline auto make_static_sys_string_android() noexcept -> sys_string_android + { + constexpr ::size_t size = Str.size(); + static const android_static_string sbuf{0, true, Str}; + android_any_string buf((android_dynamic_string *)&sbuf, size - 1, 0); + return *reinterpret_cast(&buf); + } +} + +#define SYS_STRING_STATIC_ANDROID(x) ::sysstr::util::make_static_sys_string_android() diff --git a/lib/inc/sys_string/impl/platforms/apple_cfstr.h b/lib/inc/sys_string/impl/platforms/apple_cfstr.h index 767ea50..3a17339 100644 --- a/lib/inc/sys_string/impl/platforms/apple_cfstr.h +++ b/lib/inc/sys_string/impl/platforms/apple_cfstr.h @@ -9,8 +9,8 @@ #error This header must not be included directly. Please include sys_string.h #endif -#include -#include +#include +#include #include @@ -126,7 +126,7 @@ namespace sysstr::util public: constexpr size_type capacity() const noexcept { return m_capacity; } - constexpr value_type * buffer() const noexcept + constexpr value_type * data() const noexcept { return std::visit([](const auto & val) { return const_cast(val.data()); @@ -176,7 +176,7 @@ namespace sysstr::util size_type m_capacity = minimum_capacity; }; - using cf_builder_impl = char_buffer; + using cf_builder_impl = char_vector; inline CFStringRef convert_to_string(cf_builder_impl & builder) noexcept { @@ -216,12 +216,9 @@ namespace sysstr::util using reference = value_type; using pointer = void; - using cursor = index_cursor; - using reverse_cursor = index_cursor; - - using iterator = cursor; + using iterator = index_iterator; using const_iterator = iterator; - using reverse_iterator = reverse_cursor; + using reverse_iterator = index_iterator; using const_reverse_iterator = reverse_iterator; public: cf_char_access(const sys_string_t & src) noexcept; @@ -254,29 +251,21 @@ namespace sysstr::util size_type size() const noexcept { return m_size; } - template - auto cursor_begin() const noexcept -> index_cursor - { return index_cursor(*this, bool(Direction) ? 0 : m_size); } - - template - auto cursor_end() const noexcept -> index_cursor - { return index_cursor(*this, bool(Direction) ? m_size : 0); } - iterator begin() const noexcept - { return cursor_begin(); } - iterator end() const noexcept - { return cursor_end(); } + { return iterator(*this, 0); } + std::default_sentinel_t end() const noexcept + { return std::default_sentinel; } const_iterator cbegin() const noexcept { return begin(); } - const_iterator cend() const noexcept + std::default_sentinel_t cend() const noexcept { return end(); } reverse_iterator rbegin() const noexcept - { return cursor_begin(); } - reverse_iterator rend() const noexcept - { return cursor_end(); } + { return reverse_iterator(*this, m_size); } + std::default_sentinel_t rend() const noexcept + { return std::default_sentinel; } const_reverse_iterator crbegin() const noexcept { return rbegin(); } - const_reverse_iterator crend() const noexcept + std::default_sentinel_t crend() const noexcept { return rend(); } const char * c_str() const noexcept @@ -362,13 +351,11 @@ namespace sysstr cf_storage(buffer_from(str, len), handle_retain::no) {} - #if SYS_STRING_USE_CHAR8 - template<> - cf_storage(const char8_t * str, size_t len): - cf_storage(buffer_from((const char *)str, len), handle_retain::no) - {} - #endif - + template<> + cf_storage(const char8_t * str, size_t len): + cf_storage(buffer_from((const char *)str, len), handle_retain::no) + {} + template<> cf_storage(const char16_t * str, size_t len) : m_str(util::check_create( @@ -379,6 +366,10 @@ namespace sysstr cf_storage(const char32_t * str, size_t len): cf_storage(buffer_from(str, len), handle_retain::no) {} + + cf_storage(const char_access::iterator & first, size_type length): + cf_storage(first.container() ? first.container()->get_string() : nullptr, first.index(), first.index() + length) + {} ~cf_storage() noexcept { release(m_str); } @@ -505,26 +496,20 @@ namespace sysstr::util namespace sysstr { - template<> - inline sys_string_t::sys_string_t(const char_access::cursor & src, size_type length): - sys_string_t(src.container() ? src.container()->get_string() : nullptr, src.position(), src.position() + length) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::reverse_cursor & src, size_type length): - sys_string_t(src.container() ? src.container()->get_string() : nullptr, src.position() - length, src.position()) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::iterator & first, const char_access::iterator & last): - sys_string_t(first, last.position() - first.position()) - {} using sys_string_cfstr = sys_string_t; using sys_string_cfstr_builder = sys_string_builder_t; } -#define SYS_STRING_STATIC_CFSTR(x) ::sysstr::sys_string_cfstr(CFSTR(x), ::sysstr::handle_retain::no) +namespace sysstr::util +{ + inline auto make_static_sys_string_cfstr(CFStringRef str) noexcept -> sys_string_cfstr + { + return sys_string_cfstr(str, handle_retain::no); + } +} + +#define SYS_STRING_STATIC_CFSTR(x) ::sysstr::util::make_static_sys_string_cfstr(CFSTR(x)) diff --git a/lib/inc/sys_string/impl/platforms/emscripten_javascript.h b/lib/inc/sys_string/impl/platforms/emscripten_javascript.h index 9dabe8b..c5661e2 100644 --- a/lib/inc/sys_string/impl/platforms/emscripten_javascript.h +++ b/lib/inc/sys_string/impl/platforms/emscripten_javascript.h @@ -10,7 +10,7 @@ #endif -#include +#include namespace sysstr::util { @@ -20,16 +20,16 @@ namespace sysstr::util using size_type = size_t; using hash_type = unsigned; - static constexpr size_type max_size = std::numeric_limits::max() / sizeof(char16_t); + static constexpr size_type max_size = std::numeric_limits::max() / sizeof(char16_t); }; template - using emscripten_static_buffer = generic::static_buffer; - using emscripten_dynamic_buffer = generic::dynamic_buffer; + using emscripten_static_string = generic::static_string; + using emscripten_dynamic_string = generic::dynamic_string; - using emscripten_buffer = generic::buffer; + using emscripten_any_string = generic::any_string; - using emscripten_builder_impl = generic::buffer_builder; + using emscripten_builder_impl = generic::builder_impl; using emscripten_char_access = generic::char_access; @@ -60,8 +60,8 @@ namespace sysstr {} #ifdef _MSC_VER - template - emscripten_storage(const Char * str, size_t len, std::enable_if_t> * = nullptr): + template + emscripten_storage(const Char * str, size_t len): super(str, len) {} #endif @@ -161,31 +161,23 @@ namespace sysstr::util namespace sysstr { - template<> - inline sys_string_t::sys_string_t(const char_access::cursor & src, size_type length): - sys_string_t(src.iterator(), length) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::reverse_cursor & src, size_type length): - sys_string_t(src.iterator() - length, length) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::iterator & first, const char_access::iterator & last): - sys_string_t(first, last - first) - {} - using sys_string_emscripten = sys_string_t; using sys_string_emscripten_builder = sys_string_builder_t; } -#define SYS_STRING_STATIC_EMSCRIPTEN(x) ([] () noexcept -> ::sysstr::sys_string_emscripten { \ - constexpr ::size_t size = sizeof(u##x) / sizeof(char16_t); \ - static const ::sysstr::util::emscripten_static_buffer sbuf{0, true, u##x}; \ - ::sysstr::util::emscripten_buffer buf((::sysstr::util::emscripten_dynamic_buffer *)&sbuf, size - 1, 0); \ - return *reinterpret_cast<::sysstr::sys_string_emscripten *>(&buf); \ - }()) +namespace sysstr::util +{ + template + inline auto make_static_sys_string_emscripten() noexcept -> sys_string_emscripten + { + constexpr ::size_t size = Str.size(); + static const emscripten_static_string sbuf{0, true, Str}; + emscripten_any_string buf((emscripten_dynamic_string *)&sbuf, size - 1, 0); + return *reinterpret_cast(&buf); + } +} + +#define SYS_STRING_STATIC_EMSCRIPTEN(x) ::sysstr::util::make_static_sys_string_emscripten() diff --git a/lib/inc/sys_string/impl/platforms/python_any.h b/lib/inc/sys_string/impl/platforms/python_any.h index a944f72..79962e0 100644 --- a/lib/inc/sys_string/impl/platforms/python_any.h +++ b/lib/inc/sys_string/impl/platforms/python_any.h @@ -9,7 +9,7 @@ #error This header must not be included directly. Please include sys_string.h #endif -#include +#include #include @@ -119,7 +119,7 @@ namespace sysstr::util public: constexpr size_type capacity() const noexcept { return m_capacity; } - constexpr value_type * buffer() const noexcept + constexpr value_type * data() const noexcept { return std::visit([](const auto & val) { return const_cast(val.data()); @@ -169,13 +169,13 @@ namespace sysstr::util size_type m_capacity = minimum_capacity; }; - using py_builder_impl = char_buffer; + using py_builder_impl = char_vector; inline PyObject * convert_to_string(py_builder_impl & builder) noexcept { auto size = builder.size(); return std::visit([&](auto && buf) { - int dumbPyPy = (endian::native != endian::little) - (endian::native == endian::little); + int dumbPyPy = (std::endian::native != std::endian::little) - (std::endian::native == std::endian::little); return size ? check_create(PyUnicode_DecodeUTF32((const char *)buf.data(), size * sizeof(char32_t), "replace", &dumbPyPy)) : nullptr; }, builder.release()); @@ -189,12 +189,9 @@ namespace sysstr::util using reference = value_type; using pointer = void; - using cursor = index_cursor; - using reverse_cursor = index_cursor; - - using iterator = cursor; + using iterator = index_iterator; using const_iterator = iterator; - using reverse_iterator = reverse_cursor; + using reverse_iterator = index_iterator; using const_reverse_iterator = reverse_iterator; public: @@ -218,29 +215,21 @@ namespace sysstr::util size_type size() const noexcept { return m_size; } - template - auto cursor_begin() const noexcept -> index_cursor - { return index_cursor(*this, bool(Direction) ? 0 : m_size); } - - template - auto cursor_end() const noexcept -> index_cursor - { return index_cursor(*this, bool(Direction) ? m_size : 0); } - iterator begin() const noexcept - { return cursor_begin(); } - iterator end() const noexcept - { return cursor_end(); } + { return iterator(*this, 0); } + std::default_sentinel_t end() const noexcept + { return std::default_sentinel; } const_iterator cbegin() const noexcept { return begin(); } - const_iterator cend() const noexcept + std::default_sentinel_t cend() const noexcept { return end(); } reverse_iterator rbegin() const noexcept - { return cursor_begin(); } - reverse_iterator rend() const noexcept - { return cursor_end(); } + { return reverse_iterator(*this, m_size); } + std::default_sentinel_t rend() const noexcept + { return std::default_sentinel; } const_reverse_iterator crbegin() const noexcept { return rbegin(); } - const_reverse_iterator crend() const noexcept + std::default_sentinel_t crend() const noexcept { return rend(); } const char * c_str() const noexcept @@ -299,6 +288,10 @@ namespace sysstr py_storage(const Char * str, size_t len): py_storage(create_from(str, len), handle_retain::no) {} + + py_storage(const char_access::iterator & first, size_type length): + py_storage(first.container() ? first.container()->get_string() : nullptr, first.index(), first.index() + length) + {} ~py_storage() noexcept @@ -394,10 +387,10 @@ namespace sysstr if constexpr (utf_encoding_of == utf_encoding::utf8) { return util::check_create(PyUnicode_DecodeUTF8((const char *)str, len, "replace")); } else if constexpr (utf_encoding_of == utf_encoding::utf16) { - int dumbPyPy = (endian::native != endian::little) - (endian::native == endian::little); + int dumbPyPy = (std::endian::native != std::endian::little) - (std::endian::native == std::endian::little); return util::check_create(PyUnicode_DecodeUTF16((const char *)str, len * sizeof(char16_t), "replace", &dumbPyPy)); } else if constexpr (utf_encoding_of == utf_encoding::utf32) { - int dumbPyPy = (endian::native != endian::little) - (endian::native == endian::little); + int dumbPyPy = (std::endian::native != std::endian::little) - (std::endian::native == std::endian::little); return util::check_create(PyUnicode_DecodeUTF32((const char *)str, len * sizeof(char32_t), "replace", &dumbPyPy)); } } @@ -503,37 +496,30 @@ namespace sysstr::util namespace sysstr { - template<> - inline sys_string_t::sys_string_t(const char_access::cursor & src, size_type length): - sys_string_t(src.container() ? src.container()->get_string() : nullptr, src.position(), src.position() + length) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::reverse_cursor & src, size_type length): - sys_string_t(src.container() ? src.container()->get_string() : nullptr, src.position() - length, src.position()) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::iterator & first, const char_access::iterator & last): - sys_string_t(first, last.position() - first.position()) - {} - using sys_string_pystr = sys_string_t; using sys_string_pystr_builder = sys_string_builder_t; } +namespace sysstr::util +{ + template + inline auto make_static_sys_string_pystr() noexcept -> sys_string_pystr + { + constexpr ::size_t size = U32Str.size(); + constexpr auto maxChar = find_max_codepoint(U32Str.chars); + if constexpr (maxChar <= 0x7fu) { + static PyUnicodeObject_wrapper str(size - 1, U8Str.chars); + return str.as_string(); + } else if constexpr (maxChar <= 0xffffu) { + static PyUnicodeObject_wrapper str(size - 1, U16Str.chars); + return str.as_string(); + } else { + static PyUnicodeObject_wrapper str(size - 1, U32Str.chars); + return str.as_string(); + } + } +} + + +#define SYS_STRING_STATIC_PYSTR(x) ::sysstr::util::make_static_sys_string_pystr() -#define SYS_STRING_STATIC_PYSTR(x) ([] () noexcept -> ::sysstr::sys_string_pystr { \ - constexpr auto size = ::std::size(U##x); \ - constexpr auto maxChar = ::sysstr::util::find_max_codepoint(U##x); \ - if constexpr (maxChar <= 0x7fu) { \ - static ::sysstr::util::PyUnicodeObject_wrapper str(size - 1, u8##x); \ - return str.as_string(); \ - } else if constexpr (maxChar <= 0xffffu) { \ - static ::sysstr::util::PyUnicodeObject_wrapper str(size - 1, u##x); \ - return str.as_string(); \ - } else { \ - static ::sysstr::util::PyUnicodeObject_wrapper str(size - 1, U##x); \ - return str.as_string(); \ - } \ - }()) diff --git a/lib/inc/sys_string/impl/platforms/unix_generic.h b/lib/inc/sys_string/impl/platforms/unix_generic.h index a22b66e..9ba6149 100644 --- a/lib/inc/sys_string/impl/platforms/unix_generic.h +++ b/lib/inc/sys_string/impl/platforms/unix_generic.h @@ -10,29 +10,28 @@ #endif -#include +#include #include namespace sysstr::util { - struct generic_traits { using storage_type = char; using size_type = size_t; using hash_type = unsigned; - static constexpr size_type max_size = std::numeric_limits::max() / sizeof(char); + static constexpr size_type max_size = std::numeric_limits::max() / sizeof(char); }; template - using generic_static_buffer = generic::static_buffer; - using generic_dynamic_buffer = generic::dynamic_buffer; + using generic_static_string = generic::static_string; + using generic_dynamic_string = generic::dynamic_string; - using generic_buffer = generic::buffer; + using generic_any_string = generic::any_string; - using generic_builder_impl = generic::buffer_builder; + using generic_builder_impl = generic::builder_impl; using generic_char_access = generic::char_access; @@ -59,8 +58,8 @@ namespace sysstr using super::super; #ifdef _MSC_VER - template - generic_storage(const Char * str, size_t len, std::enable_if_t> * = nullptr): + template + generic_storage(const Char * str, size_t len): super(str, len) {} #endif @@ -111,34 +110,25 @@ namespace sysstr::util namespace sysstr { - template<> - inline - sys_string_t::sys_string_t(const char_access::cursor & src, size_type length): - sys_string_t(src.iterator(), length) - {} - - template<> - inline - sys_string_t::sys_string_t(const char_access::reverse_cursor & src, size_type length): - sys_string_t(src.iterator() - length, length) - {} - - template<> - inline - sys_string_t::sys_string_t(const char_access::iterator & first, const char_access::iterator & last): - sys_string_t(first, last - first) - {} - using sys_string_generic = sys_string_t; using sys_string_generic_builder = sys_string_builder_t; + + +} + +namespace sysstr::util +{ + template + inline auto make_static_sys_string_generic() noexcept -> sys_string_generic + { + constexpr ::size_t size = Str.size(); + static const generic_static_string sbuf{0, true, Str}; + generic_any_string buf((generic_dynamic_string *)&sbuf, size - 1, 0); + return *reinterpret_cast(&buf); + } } -#define SYS_STRING_STATIC_GENERIC(x) ([] () noexcept -> ::sysstr::sys_string_generic { \ - constexpr ::size_t size = sizeof(x) / sizeof(char); \ - static const ::sysstr::util::generic_static_buffer sbuf{0, true, x}; \ - ::sysstr::util::generic_buffer buf((::sysstr::util::generic_dynamic_buffer *)&sbuf, size - 1, 0); \ - return *reinterpret_cast<::sysstr::sys_string_generic *>(&buf); \ - }()) +#define SYS_STRING_STATIC_GENERIC(x) ::sysstr::util::make_static_sys_string_generic() diff --git a/lib/inc/sys_string/impl/platforms/windows_bstr.h b/lib/inc/sys_string/impl/platforms/windows_bstr.h index 17abc01..5e88fd3 100644 --- a/lib/inc/sys_string/impl/platforms/windows_bstr.h +++ b/lib/inc/sys_string/impl/platforms/windows_bstr.h @@ -9,8 +9,8 @@ #error This header must not be included directly. Please include sys_string.h #endif -#include -#include +#include +#include namespace sysstr { @@ -102,7 +102,7 @@ namespace sysstr::util struct static_bstr { UINT m_size; - char16_t m_buf[N + 1]; + ct_string m_buf; }; class bstr_buffer @@ -400,8 +400,6 @@ namespace sysstr::util using reverse_iterator = std::reverse_iterator; using const_reverse_iterator = reverse_iterator; - using cursor = iter_cursor; - using reverse_cursor = iter_cursor; public: bstr_char_access(const bstr_buffer & buffer) noexcept : m_chars(buffer.chars()), @@ -482,7 +480,7 @@ namespace sysstr::util constexpr size_type capacity() const noexcept { return m_capacity; } - value_type * buffer() const noexcept + value_type * data() const noexcept { return m_buf.chars(); } static constexpr size_type max_size() noexcept { return bstr_traits::max_size; } @@ -504,7 +502,7 @@ namespace sysstr::util UINT m_capacity{bstr_buffer::minimum_capacity()}; }; - using bstr_builder_impl = char_buffer; + using bstr_builder_impl = char_vector; } @@ -535,8 +533,8 @@ namespace sysstr::util protected: - template - bstr_storage(const Char * str, size_t len, std::enable_if_t> * = nullptr): + template + bstr_storage(const Char * str, size_t len): m_buffer(str, len) {} @@ -611,29 +609,20 @@ namespace sysstr::util namespace sysstr { - template<> - inline sys_string_t::sys_string_t(const char_access::cursor & src, size_type length) : - sys_string_t(src.iterator(), length) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::reverse_cursor & src, size_type length) : - sys_string_t(src.iterator() - length, length) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::iterator & first, const char_access::iterator & last) : - sys_string_t(first, size_type(last - first)) - {} - using sys_string_bstr = sys_string_t; using sys_string_bstr_builder = sys_string_builder_t; } -#define SYS_STRING_STATIC_BSTR(x) ([] () noexcept -> ::sysstr::sys_string_bstr { \ - constexpr ::UINT size = sizeof(u##x); \ - static const ::sysstr::util::static_bstr sbuf{size - sizeof(char16_t), u##x}; \ - ::sysstr::util::bstr_buffer buf((::sysstr::util::dynamic_bstr *)&sbuf, 0); \ - return *reinterpret_cast<::sysstr::sys_string_bstr *>(&buf); \ - }()) +namespace sysstr::util +{ + template + inline auto make_static_sys_string_bstr() noexcept -> sys_string_bstr + { + constexpr size_t size = Str.size(); + static const static_bstr sbuf{(size - 1) * sizeof(char16_t), Str}; + bstr_buffer buf((dynamic_bstr *)&sbuf, 0); + return *reinterpret_cast(&buf); + } +} +#define SYS_STRING_STATIC_BSTR(x) ::sysstr::util::make_static_sys_string_bstr() diff --git a/lib/inc/sys_string/impl/platforms/windows_generic.h b/lib/inc/sys_string/impl/platforms/windows_generic.h index 33444e7..54a5cda 100644 --- a/lib/inc/sys_string/impl/platforms/windows_generic.h +++ b/lib/inc/sys_string/impl/platforms/windows_generic.h @@ -10,7 +10,7 @@ #endif -#include +#include namespace sysstr::util { @@ -21,16 +21,16 @@ namespace sysstr::util using size_type = size_t; using hash_type = unsigned; - static constexpr size_type max_size = std::numeric_limits::max() / sizeof(char16_t); + static constexpr size_type max_size = std::numeric_limits::max() / sizeof(char16_t); }; template - using win_generic_static_buffer = generic::static_buffer; - using win_generic_dynamic_buffer = generic::dynamic_buffer; + using win_generic_static_string = generic::static_string; + using win_generic_dynamic_string = generic::dynamic_string; - using win_generic_buffer = generic::buffer; + using win_generic_any_string = generic::any_string; - using win_generic_builder_impl = generic::buffer_builder; + using win_generic_builder_impl = generic::builder_impl; using win_generic_char_access = generic::char_access; @@ -56,8 +56,8 @@ namespace sysstr public: using super::super; - template - win_generic_storage(const Char * str, size_t len, std::enable_if_t> * = nullptr): + template + win_generic_storage(const Char * str, size_t len): super(str, len) {} @@ -106,35 +106,23 @@ namespace sysstr::util namespace sysstr { - template<> - inline - sys_string_t::sys_string_t(const char_access::cursor & src, size_type length): - sys_string_t(src.iterator(), length) - {} - - template<> - inline - sys_string_t::sys_string_t(const char_access::reverse_cursor & src, size_type length): - sys_string_t(src.iterator() - length, length) - {} - - template<> - inline - sys_string_t::sys_string_t(const char_access::iterator & first, const char_access::iterator & last): - sys_string_t(first, last - first) - {} - using sys_string_win_generic = sys_string_t; using sys_string_win_generic_builder = sys_string_builder_t; } -#define SYS_STRING_STATIC_WIN_GENERIC(x) ([] () noexcept -> ::sysstr::sys_string_win_generic { \ - constexpr ::size_t size = sizeof(u##x) / sizeof(char16_t); \ - static const ::sysstr::util::win_generic_static_buffer sbuf{0, true, u##x}; \ - ::sysstr::util::win_generic_buffer buf((::sysstr::util::win_generic_dynamic_buffer *)&sbuf, size - 1, 0); \ - return *reinterpret_cast<::sysstr::sys_string_win_generic *>(&buf); \ - }()) +namespace sysstr::util +{ + template + inline auto make_static_sys_string_win_generic() noexcept -> sys_string_win_generic + { + constexpr ::size_t size = Str.size(); + static const win_generic_static_string sbuf{0, true, Str}; + win_generic_any_string buf((win_generic_dynamic_string *)&sbuf, size - 1, 0); + return *reinterpret_cast(&buf); + } +} +#define SYS_STRING_STATIC_WIN_GENERIC(x) ::sysstr::util::make_static_sys_string_win_generic() diff --git a/lib/inc/sys_string/impl/platforms/windows_hstring.h b/lib/inc/sys_string/impl/platforms/windows_hstring.h index f27e243..4e294e0 100644 --- a/lib/inc/sys_string/impl/platforms/windows_hstring.h +++ b/lib/inc/sys_string/impl/platforms/windows_hstring.h @@ -9,7 +9,7 @@ #error This header must not be included directly. Please include sys_string.h #endif -#include +#include namespace sysstr { @@ -93,7 +93,7 @@ namespace sysstr::util constexpr size_type capacity() const noexcept { return m_capacity; } - constexpr value_type * buffer() const noexcept + constexpr value_type * data() const noexcept { return m_buffer; } static constexpr size_type max_size() noexcept { return hstring_traits::max_size; } @@ -132,7 +132,7 @@ namespace sysstr::util size_type m_capacity = 0; }; - using hstring_builder_impl = char_buffer; + using hstring_builder_impl = char_vector; inline HSTRING convert_to_string(hstring_builder_impl & builder) noexcept { @@ -167,8 +167,6 @@ namespace sysstr::util using reverse_iterator = std::reverse_iterator; using const_reverse_iterator = reverse_iterator; - using cursor = iter_cursor; - using reverse_cursor = iter_cursor; public: hstring_char_access(const sys_string_t & src) noexcept; ~hstring_char_access() noexcept @@ -264,12 +262,10 @@ namespace sysstr hstring_storage(buffer_from(str, len), handle_retain::no) {} -#if SYS_STRING_USE_CHAR8 template<> hstring_storage(const char8_t * str, size_t len): hstring_storage(buffer_from((const char *)str, len), handle_retain::no) {} -#endif template<> hstring_storage(const char16_t * str, size_t len) : @@ -434,37 +430,19 @@ namespace sysstr namespace sysstr { - template<> - inline sys_string_t::sys_string_t(const char_access::cursor & src, size_type length): - sys_string_t(src.iterator(), length) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::reverse_cursor & src, size_type length): - sys_string_t(src.iterator() - length, length) - {} - - template<> - inline sys_string_t::sys_string_t(const char_access::iterator & first, - const char_access::iterator & last): - sys_string_t(first, size_type(last - first)) - {} - using sys_string_hstring = sys_string_t; using sys_string_hstring_builder = sys_string_builder_t; } -//#define SYS_STRING_STATIC_HSTRING(x) ([] () noexcept -> ::systr::sys_string_hstring { \ -// constexpr ::size_t size = sizeof(u##x) / sizeof(char16_t); \ -// using header_type = ::sysstr::util::hstring_header; \ -// static const header_type header{1, size - 1, 0, 0, u##x}; \ -// return ::sysstr::sys_string_hstring(HSTRING(uintptr_t(&header) | ::sysstr::util::hstring_static_allocation_bit) , handle_retain::no); \ -// }()) - -#define SYS_STRING_STATIC_HSTRING(x) ([] () noexcept -> ::sysstr::sys_string_hstring { \ - constexpr ::size_t size = sizeof(u##x) / sizeof(char16_t); \ - using header_type = ::sysstr::util::hstring_header; \ - static struct bug_workaround { const header_type header{1, size - 1, 0, 0, u##x}; } b; \ - return ::sysstr::sys_string_hstring(HSTRING(uintptr_t(&b.header) | ::sysstr::util::hstring_static_allocation_bit) , ::sysstr::handle_retain::no); \ - }()) +namespace sysstr::util +{ + template + inline auto make_static_sys_string_hstring() noexcept -> sys_string_hstring + { + constexpr size_t size = Str.size(); + static struct bug_workaround { const hstring_header header{1, size - 1, 0, 0, Str.chars}; } b; + return sys_string_hstring(HSTRING(uintptr_t(&b.header) | hstring_static_allocation_bit) , handle_retain::no); + } +} +#define SYS_STRING_STATIC_HSTRING(x) ::sysstr::util::make_static_sys_string_hstring() diff --git a/lib/inc/sys_string/impl/print.h b/lib/inc/sys_string/impl/print.h new file mode 100644 index 0000000..662d278 --- /dev/null +++ b/lib/inc/sys_string/impl/print.h @@ -0,0 +1,116 @@ +// +// Copyright 2020 Eugene Gershnik +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://github.com/gershnik/sys_string/blob/master/LICENSE +// +#ifndef HEADER_SYS_STRING_H_INSIDE +#error This header must not be included directly. Please include sys_string.h +#endif + +namespace sysstr +{ + template + template Func> + inline + auto sys_string_t::print_with(Func func) const -> decltype(func(std::string_view{})) + { + if constexpr (std::ranges::contiguous_range::char_access> && + std::is_same_v::storage_type, char>) + { + typename sysstr::sys_string_t::char_access access(*this); + return func(std::string_view(access.data(), access.size())); + } + else + { + return func(sysstr::sys_string_t::utf8_access(*this)); + } + } + + #if SYS_STRING_WCHAR_T_IS_UTF16 + template + template Func> + inline + auto sys_string_t::wprint_with(Func func) const -> decltype(func(std::wstring_view{})) + { + if constexpr (std::ranges::contiguous_range::char_access> && + std::is_same_v::storage_type, char16_t>) + { + typename sysstr::sys_string_t::char_access access(*this); + return func(std::wstring_view((const wchar_t *)access.data(), access.size())); + } + else + { + return func(sysstr::sys_string_t::utf16_access(*this)); + } + } + #elif SYS_STRING_WCHAR_T_IS_UTF32 + template + template Func> + inline + auto sys_string_t::wprint_with(Func func) const -> decltype(func(std::wstring_view{})) + { + if constexpr (std::ranges::contiguous_range::char_access> && + std::is_same_v::storage_type, char32_t>) + { + typename sysstr::sys_string_t::char_access access(*this); + return func(std::wstring_view((const wchar_t *)access.data(), access.size())); + } + else + { + return func(sysstr::sys_string_t::utf32_access(*this)); + } + } + #endif +} + +#if SYS_STRING_SUPPORTS_STD_FORMAT + +template struct std::formatter> +{ + template + constexpr auto parse(ParseContext & ctx) -> ParseContext::iterator + { + auto it = ctx.begin(); + if (it != ctx.end() && *it != '}') + throw std::format_error("Invalid format args"); + + return it; + } + + template + auto format(const sysstr::sys_string_t & str, FormatContext & ctx) const -> decltype(ctx.out()) + { + return str.print_with([&](const auto & view) -> decltype(ctx.out()) { + return std::ranges::copy(view, ctx.out()).out; + }); + } +}; + +#if SYS_STRING_WCHAR_T_IS_UTF16 || SYS_STRING_WCHAR_T_IS_UTF32 + +template struct std::formatter, wchar_t> +{ + template + constexpr auto parse(ParseContext & ctx) -> ParseContext::iterator + { + auto it = ctx.begin(); + if (it != ctx.end() && *it != L'}') + throw std::format_error("Invalid format args"); + + return it; + } + + template + auto format(const sysstr::sys_string_t & str, FormatContext & ctx) const -> decltype(ctx.out()) + { + return str.wprint_with([&](const auto & view) -> decltype(ctx.out()) { + return std::ranges::copy(view, ctx.out()).out; + }); + } +}; + +#endif + +#endif diff --git a/lib/inc/sys_string/impl/unicode/algorithms.h b/lib/inc/sys_string/impl/unicode/algorithms.h index 61f466c..ec697b4 100644 --- a/lib/inc/sys_string/impl/unicode/algorithms.h +++ b/lib/inc/sys_string/impl/unicode/algorithms.h @@ -10,6 +10,9 @@ #include +#include +#include + namespace sysstr { struct isspace @@ -25,7 +28,7 @@ namespace sysstr { static constexpr auto max_output_length = util::unicode::mapper::max_mapped_length; - template + template> OutIt> auto operator()(char32_t c, OutIt dest) const noexcept(noexcept(*dest++ = utf_char_of())) -> OutIt { return util::unicode::mapper::case_fold.map_char(c, dest); @@ -37,13 +40,15 @@ namespace sysstr class sigma_tolower { public: - template - auto operator()(Cursor cursor) const noexcept -> char32_t + template + auto operator()(const Range & range, + std::ranges::iterator_t where) const noexcept -> char32_t { - if (any_non_cased_then_cased(cursor.reverse())) + auto reversed = ranges::make_reverse_iterator(range, where); + if (any_non_cased_then_cased(reversed, std::ranges::rend(range))) { - ++cursor; - if (!any_non_cased_then_cased(cursor)) + ++where; + if (!any_non_cased_then_cased(where, std::ranges::end(range))) { return U'\u03C2'; //replace with ς } @@ -51,12 +56,12 @@ namespace sysstr return U'\u03C3'; // replace with σ } private: - template - auto any_non_cased_then_cased(Cursor cursor) const noexcept -> bool + template Sentinel> + auto any_non_cased_then_cased(It first, Sentinel last) const noexcept -> bool { - for( ; cursor; ++cursor) + for( ; first != last; ++first) { - auto c = *cursor; + auto c = *first; auto props = unicode::get_char_prop(c); if (uint8_t(props & unicode::char_prop::case_ignorable)) continue; @@ -70,22 +75,25 @@ namespace sysstr template struct tolower { - template - inline auto operator()(Cursor cursor, OutIt dest) noexcept(noexcept(*dest++ = utf_char_of())) -> OutIt + template> OutIt> + inline auto operator()(const Range & range, OutIt dest) noexcept(noexcept(*dest++ = utf_char_of())) -> OutIt { using namespace util::unicode; + + auto first = std::ranges::begin(range); + auto last = std::ranges::end(range); - for( ; cursor; ++cursor) + for( ; first != last; ++first) { - auto c = *cursor; + auto c = *first; if (c != U'\u03A3') // not Σ { dest = mapper::to_lower_case.map_char(c, dest); } else { - char32_t lc = util::sigma_tolower()(cursor); - auto writer = utf32_output::make_writer([&](auto value) { + char32_t lc = util::sigma_tolower()(range, first); + auto writer = make_utf32_encoder([&](auto value) { *dest++ = value; }); writer(lc); @@ -98,14 +106,16 @@ namespace sysstr template struct toupper { - template - inline auto operator()(Cursor cursor, OutIt dest) noexcept(noexcept(*dest++ = utf_char_of())) -> OutIt + template> OutIt> + inline auto operator()(const Range & range, OutIt dest) noexcept(noexcept(*dest++ = utf_char_of())) -> OutIt { using namespace util::unicode; - for( ; cursor; ++cursor) + auto first = std::ranges::begin(range); + auto last = std::ranges::end(range); + for( ; first != last; ++first) { - auto c = *cursor; + auto c = *first; dest = mapper::to_upper_case.map_char(c, dest); } diff --git a/lib/inc/sys_string/impl/unicode/utf_encoding.h b/lib/inc/sys_string/impl/unicode/utf_encoding.h index cfe2ea7..d932c9e 100644 --- a/lib/inc/sys_string/impl/unicode/utf_encoding.h +++ b/lib/inc/sys_string/impl/unicode/utf_encoding.h @@ -57,32 +57,22 @@ namespace sysstr template<> struct utf_encoding_value { static constexpr utf_encoding value = utf8; }; template<> struct utf_encoding_value { static constexpr utf_encoding value = utf8; }; template<> struct utf_encoding_value { static constexpr utf_encoding value = utf8; }; - #if SYS_STRING_USE_CHAR8 template<> struct utf_encoding_value { static constexpr utf_encoding value = utf8; }; - #endif template<> struct utf_encoding_value { static constexpr utf_encoding value = utf16; }; template<> struct utf_encoding_value { static constexpr utf_encoding value = utf32; }; #if SYS_STRING_WCHAR_T_IS_UTF16 template<> struct utf_encoding_value { static constexpr utf_encoding value = utf16; }; + #elif SYS_STRING_WCHAR_T_IS_UTF32 + template<> struct utf_encoding_value { static constexpr utf_encoding value = utf32; }; #endif - template constexpr utf_encoding utf_encoding_of = utf_encoding_value>::value; - - template struct has_utf_encoding_type : public std::false_type {}; - template<> struct has_utf_encoding_type : public std::true_type {}; - template<> struct has_utf_encoding_type : public std::true_type {}; - template<> struct has_utf_encoding_type : public std::true_type {}; - #if SYS_STRING_USE_CHAR8 - template<> struct has_utf_encoding_type : public std::true_type {}; - #endif - template<> struct has_utf_encoding_type : public std::true_type {}; - template<> struct has_utf_encoding_type : public std::true_type {}; - #if SYS_STRING_WCHAR_T_IS_UTF16 - template<> struct has_utf_encoding_type : public std::true_type {}; - #endif - - template constexpr bool has_utf_encoding = has_utf_encoding_type>::value; + template concept has_utf_encoding = requires { + utf_encoding_value>::value; + }; + template constexpr utf_encoding utf_encoding_of = utf_encoding_value>::value; + + template struct utf_encoding_max_length; template<> struct utf_encoding_max_length { static constexpr size_t value = 4; }; template<> struct utf_encoding_max_length { static constexpr size_t value = 2; }; diff --git a/lib/inc/sys_string/impl/unicode/utf_util.h b/lib/inc/sys_string/impl/unicode/utf_util.h index e3ff184..e6cd193 100644 --- a/lib/inc/sys_string/impl/unicode/utf_util.h +++ b/lib/inc/sys_string/impl/unicode/utf_util.h @@ -9,7 +9,6 @@ #define HEADER_SYS_STRING_UNICODE_UTF_UTIL_INCLUDED #include -#include #include namespace sysstr @@ -19,55 +18,55 @@ namespace sysstr class utf_converter { private: - template - static void reading(InCursor & cursor) noexcept(noexcept(*cursor) && noexcept(++cursor) && noexcept(bool(cursor))); - template - static void reading(InIt first, EndIt last) noexcept(noexcept(*first++) && noexcept(first != last)); - template + template EndIt> + static void reading(It first, EndIt last) noexcept(noexcept(*first++) && noexcept(first != last)); + template + static void reading(Range && range) noexcept(noexcept(reading(std::ranges::begin(range), std::ranges::end(range)))); + template> OutIt> static void writing(OutIt dest) noexcept(noexcept(*dest++ = utf_char_of())); template static void applying(Func func) noexcept(noexcept(func(utf_char_of()))); public: - template - static Func for_each_converted(InCursor & cursor, Func func) noexcept(noexcept(reading(cursor)) && noexcept(applying(func))); - - template + template + static Func for_each_converted(Range && range, Func func) noexcept(noexcept(reading(std::forward(range))) && noexcept(applying(func))); + + template> OutIt> SYS_STRING_FORCE_INLINE - static OutIt convert(InCursor & cursor, OutIt dest) noexcept(noexcept(reading(cursor)) && noexcept(writing(dest))) + static OutIt convert(Range && range, OutIt dest) noexcept(noexcept(reading(std::forward(range))) && noexcept(writing(dest))) { - for_each_converted(cursor, [&](auto c) { *dest++ = c; }); + for_each_converted(std::forward(range), [&](auto c) { *dest++ = c; }); return dest; } - - template + + template SYS_STRING_FORCE_INLINE - static size_t converted_length(InCursor & cursor) noexcept(noexcept(reading(cursor))) + static size_t converted_length(Range && range) noexcept(noexcept(reading(std::forward(range)))) { size_t ret = 0; - for_each_converted(cursor, [&](auto) { ++ret; }); + for_each_converted(std::forward(range), [&](auto) { ++ret; }); return ret; } - template + template EndIt, class Func> SYS_STRING_FORCE_INLINE - static Func for_each_converted(InIt first, EndIt last, Func func) noexcept(noexcept(reading(first, last)) && noexcept(applying(func))) + static Func for_each_converted(It first, EndIt last, Func func) noexcept(noexcept(reading(first, last)) && noexcept(applying(func))) { - util::iter_cursor cursor(first, last, first); - return for_each_converted(cursor, func); + using range_t = std::ranges::subrange; + return for_each_converted(range_t(first, last), func); } - template + template EndIt, std::output_iterator> OutIt> SYS_STRING_FORCE_INLINE - static OutIt convert(InIt first, EndIt last, OutIt dest) noexcept(noexcept(reading(first, last)) && noexcept(writing(dest))) + static OutIt convert(It first, EndIt last, OutIt dest) noexcept(noexcept(reading(first, last)) && noexcept(writing(dest))) { for_each_converted(first, last, [&](auto c) { *dest++ = c; }); return dest; } - template + template EndIt> SYS_STRING_FORCE_INLINE - static size_t converted_length(InIt first, EndIt last) noexcept(noexcept(reading(first, last))) + static size_t converted_length(It first, EndIt last) noexcept(noexcept(reading(first, last))) { size_t ret = 0; for_each_converted(first, last, [&](auto) { ++ret; }); @@ -80,234 +79,323 @@ namespace sysstr class utf32_input { private: - template - static void reading(InCursor & cursor) noexcept(noexcept(*cursor) && noexcept(++cursor) && noexcept(bool(cursor))); - template - static void reading(InIt first, EndIt last) noexcept(noexcept(*first++) && noexcept(first != last)); + template EndIt> + static void reading(It first, EndIt last) noexcept(noexcept(*first++) && noexcept(first != last)); + template + static void reading(Range && range) noexcept(noexcept(reading(std::ranges::begin(range), std::ranges::end(range)))); public: - template - static char32_t read(InCursor & cursor) noexcept(noexcept(reading(cursor))); + template EndIt> + static char32_t read(It & first, EndIt last) noexcept(noexcept(reading(first,last))); - template - static char32_t read_reversed(InCursor & cursor) noexcept(noexcept(reading(cursor))); + template EndIt> + static char32_t read_reversed(It & first, EndIt last) noexcept(noexcept(reading(first,last))); - template + template SYS_STRING_FORCE_INLINE - static Sink read(InCursor & cursor, Sink sink) noexcept(noexcept(reading(cursor)) && noexcept(sink(char32_t()))) + static Sink read(Range && range, Sink sink) noexcept(noexcept(reading(std::forward(range))) && noexcept(sink(char32_t()))) { - while(cursor) - sink(read(cursor)); - return sink; + return read(std::ranges::begin(std::forward(range)), std::ranges::end(std::forward(range)), sink); } - template + template EndIt, class Sink> SYS_STRING_FORCE_INLINE - static Sink read(InIt first, EndIt last, Sink sink) noexcept(noexcept(reading(first,last)) && noexcept(sink(char32_t()))) + static Sink read(It first, EndIt last, Sink sink) noexcept(noexcept(reading(first,last)) && noexcept(sink(char32_t()))) { - util::iter_cursor cursor(first, last, first); - return read(cursor, sink); + while(first != last) + sink(read(first, last)); + return sink; } }; - template - struct utf32_output + template> Sink> + struct utf32_encoder { - template - struct writer - { - Sink sink; + Sink sink; - writer(Sink s) : sink(s) {} - - SYS_STRING_FORCE_INLINE - constexpr void operator()(char32_t value) noexcept(noexcept(sink(utf_char_of()))) + utf32_encoder(const Sink & s) : sink(s) {} + utf32_encoder(Sink && s) : sink(std::move(s)) {} + + SYS_STRING_FORCE_INLINE + constexpr void operator()(char32_t value) noexcept(noexcept(sink(utf_char_of()))) + { + if constexpr (To != utf32) { utf_codepoint_encoder encoder; encoder.put(value); - for(auto first = encoder.begin(), last = encoder.end(); first != last; ++first) - sink(*first); + for(auto c: encoder) + sink(c); } - }; - //Moronic GCC refuses to accept deduction guide not on namespace level - //https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79501 - //template writer(Sink sink) -> writer; - - template static auto make_writer(Sink sink) -> writer - { return writer(sink); } + else + { + sink(value); + } + } }; + + template> Sink> + auto make_utf32_encoder(Sink sink) -> utf32_encoder + { return utf32_encoder(sink); } - template<> - struct utf32_output + + template Sink> + class utf32_decoder { - template - struct writer - { - Sink sink; + public: + utf32_decoder(const Sink & sink) noexcept(std::is_nothrow_copy_constructible_v): + m_sink(sink) + {} + + utf32_decoder(Sink && sink) noexcept(std::is_nothrow_move_constructible_v): + m_sink(std::move(sink)) + {} + + utf32_decoder(const utf32_decoder &) = delete; + utf32_decoder & operator=(const utf32_decoder &) = delete; + utf32_decoder(utf32_decoder && src) = delete; + utf32_decoder & operator=(utf32_decoder && src) = delete; - writer(Sink s) : sink(s) {} + ~utf32_decoder() noexcept = default; + + + template + requires(utf_encoding_of == From) + SYS_STRING_FORCE_INLINE + void put(Char c) noexcept(noexcept(output(char32_t{}))) requires(From == utf8) + { + uint8_t byte = uint8_t(c); + if (m_char_start) + { + restart: + if (byte <= 0x7f) + { + output(char32_t{byte}); + return; + } + } - constexpr void operator()(char32_t value) noexcept(noexcept(sink(value))) + m_decoder.put(byte); + if (m_decoder.done()) { - sink(value); + output(char32_t{m_decoder.value()}); + return; } - }; - //Moronic GCC refuses to accept deduction guide not on namespace level - //https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79501 - //template writer(Sink sink) -> writer; - template static auto make_writer(Sink sink) -> writer - { return writer(sink); } - }; + if (m_decoder.error()) + { + bool was_char_start = m_char_start; + output(char32_t{U'\uFFFD'}); + if (was_char_start) + return; + goto restart; + } + m_char_start = false; + } + + template + requires(utf_encoding_of == From) + SYS_STRING_FORCE_INLINE + void put(Char c) noexcept(noexcept(output(char32_t{}))) requires(From == utf16) + { + restart: + m_decoder.put(uint16_t(c)); + if (m_decoder.done()) + { + output(char32_t{m_decoder.value()}); + return; + } + if (m_decoder.error()) + { + bool was_char_start = m_char_start; + output(char32_t{U'\uFFFD'}); + if (was_char_start) + return; + goto restart; + } + m_char_start = false; + } + + template + requires(utf_encoding_of == From) + SYS_STRING_FORCE_INLINE + void put(Char c) noexcept(noexcept(output(char32_t{}))) requires(From == utf32) + { + if (m_decoder.put(uint32_t(c))) + output(char32_t{m_decoder.value()}); + else + output(char32_t{U'\uFFFD'}); + } + SYS_STRING_FORCE_INLINE + void flush() noexcept(From == utf32 || noexcept(output(char32_t{}))) + { + if constexpr (From != utf32) + { + if (!m_char_start) + output(char32_t{U'\uFFFD'}); + } + } + private: + SYS_STRING_FORCE_INLINE + void output(char32_t c) noexcept(noexcept(m_sink(c))) + { + m_sink(c); + m_char_start = true; + } + private: + Sink m_sink; + utf_codepoint_decoder m_decoder; + bool m_char_start = true; + }; + template - template + template SYS_STRING_FORCE_INLINE - Func utf_converter::for_each_converted(InCursor & cursor, Func func) noexcept(noexcept(reading(cursor)) && noexcept(applying(func))) + Func utf_converter::for_each_converted(Range && range, Func func) + noexcept(noexcept(reading(std::forward(range))) && noexcept(applying(func))) { - return utf32_input::read(cursor, utf32_output::make_writer(func)).sink; + return utf32_input::read(std::forward(range), make_utf32_encoder(func)).sink; } - //MARK:- UTF-16 - - #ifndef __INTELLISENSE__ - template<> - template + template + template EndIt> SYS_STRING_FORCE_INLINE - char32_t utf32_input::read(InCursor & cursor) noexcept(noexcept(reading(cursor))) + char32_t utf32_input::read(It & first, EndIt last) noexcept(noexcept(reading(first,last))) { - utf_codepoint_decoder decoder; + if constexpr (From == utf8) + { + uint8_t byte = uint8_t(*first); + ++first; + if (byte <= 0x7f) + return char32_t{byte}; - decoder.put(uint16_t(*cursor)); - ++cursor; - if (decoder.done()) - return char32_t{decoder.value()}; + utf_codepoint_decoder decoder; + decoder.put(byte); + if (decoder.error() || first == last) + return char32_t{U'\uFFFD'}; - if (decoder.error() || !cursor) - return char32_t{U'\uFFFD'}; + for ( ; ; ) + { + byte = uint8_t(*first); + decoder.put(byte); + if (decoder.error()) + return char32_t{U'\uFFFD'}; + ++first; + if (decoder.done()) + return char32_t{decoder.value()}; + if (first == last) + return char32_t{U'\uFFFD'}; + } + } + else if constexpr (From == utf16) + { + utf_codepoint_decoder decoder; - decoder.put(uint16_t(*cursor)); - if (!decoder.done()) - return char32_t{U'\uFFFD'}; - ++cursor; + decoder.put(uint16_t(*first)); + ++first; + if (decoder.done()) + return char32_t{decoder.value()}; - return char32_t{decoder.value()}; - } + if (decoder.error() || first == last) + return char32_t{U'\uFFFD'}; - template<> - template - SYS_STRING_FORCE_INLINE - char32_t utf32_input::read_reversed(InCursor & cursor) noexcept(noexcept(reading(cursor))) - { - utf_reverse_codepoint_decoder decoder; + decoder.put(uint16_t(*first)); + if (!decoder.done()) + return char32_t{U'\uFFFD'}; + ++first; - decoder.put(uint16_t(*cursor)); - ++cursor; - if (decoder.done()) return char32_t{decoder.value()}; + } + else if constexpr (From == utf32) + { + utf_codepoint_decoder decoder; + bool res = decoder.put(uint32_t(*first)); + ++first; + return res ? char32_t{decoder.value()} : U'\uFFFD'; + } - if (decoder.error() || !cursor) - return char32_t{U'\uFFFD'}; - - decoder.put(uint16_t(*cursor)); - if (!decoder.done()) - return char32_t{U'\uFFFD'}; - ++cursor; - return char32_t{decoder.value()}; } - #endif - - //MARK:- UTF-8 - #ifndef __INTELLISENSE__ - template<> - template + template + template EndIt> SYS_STRING_FORCE_INLINE - char32_t utf32_input::read(InCursor & cursor) noexcept(noexcept(reading(cursor))) + char32_t utf32_input::read_reversed(It & first, EndIt last) noexcept(noexcept(reading(first, last))) { - uint8_t byte = uint8_t(*cursor); - ++cursor; - if (byte <= 0x7f) - return char32_t{byte}; - - utf_codepoint_decoder decoder; - decoder.put(byte); - if (decoder.error() || !cursor) - return char32_t{U'\uFFFD'}; - - for ( ; ; ) + if constexpr (From == utf8) { - byte = uint8_t(*cursor); + uint8_t byte = uint8_t(*first); + ++first; + if (byte <= 0x7f) + return char32_t{byte}; + + utf_reverse_codepoint_decoder decoder; decoder.put(byte); - if (decoder.error()) - return char32_t{U'\uFFFD'}; - ++cursor; - if (decoder.done()) - return char32_t{decoder.value()}; - if (!cursor) + if (decoder.error() || first == last) return char32_t{U'\uFFFD'}; - } - } - template<> - template - SYS_STRING_FORCE_INLINE - char32_t utf32_input::read_reversed(InCursor & cursor) noexcept(noexcept(reading(cursor))) - { - uint8_t byte = uint8_t(*cursor); - ++cursor; - if (byte <= 0x7f) - return char32_t{byte}; - - utf_reverse_codepoint_decoder decoder; - decoder.put(byte); - if (decoder.error() || !cursor) - return char32_t{U'\uFFFD'}; - - for (uint8_t rewind_count = 1; ; ++rewind_count) + if constexpr (std::forward_iterator) + { + It rewind_point = first; + for ( ; ; ) + { + byte = uint8_t(*first); + ++first; + decoder.put(byte); + + if (decoder.done()) + return char32_t{decoder.value()}; + + if (decoder.error()) + { + first = std::move(rewind_point); + return char32_t{U'\uFFFD'}; + } + + if (first == last) + return char32_t{u'\uFFFD'}; + } + } + else + { + for ( ; ; ) + { + byte = uint8_t(*first); + decoder.put(byte); + if (decoder.error()) + return char32_t{U'\uFFFD'}; + ++first; + if (decoder.done()) + return char32_t{decoder.value()}; + if (first == last) + return char32_t{U'\uFFFD'}; + } + } + } + else if constexpr (From == utf16) { - byte = uint8_t(*cursor); - ++cursor; - decoder.put(byte); + utf_reverse_codepoint_decoder decoder; + decoder.put(uint16_t(*first)); + ++first; if (decoder.done()) return char32_t{decoder.value()}; - - if (decoder.error()) - { - cursor -= rewind_count; - return char32_t{U'\uFFFD'}; - } - - if (!cursor) - return char32_t{u'\uFFFD'}; - } - } - #endif - //MARK:- UTF-32 + if (decoder.error() || first == last) + return char32_t{U'\uFFFD'}; - - #ifndef __INTELLISENSE__ - template<> - template - SYS_STRING_FORCE_INLINE - char32_t utf32_input::read(InCursor & cursor) noexcept(noexcept(reading(cursor))) - { - utf_codepoint_decoder decoder; - bool res = decoder.put(uint32_t(*cursor)); - ++cursor; - return res ? char32_t{decoder.value()} : U'\uFFFD'; - } + decoder.put(uint16_t(*first)); + if (!decoder.done()) + return char32_t{U'\uFFFD'}; + ++first; - template<> - template - char32_t utf32_input::read_reversed(InCursor & cursor) noexcept(noexcept(reading(cursor))) - { - return utf32_input::read(cursor); + return char32_t{decoder.value()}; + } + else if constexpr (From == utf32) + { + return utf32_input::read(first, last); + } } - #endif } #endif diff --git a/lib/inc/sys_string/impl/util/char_buffer.h b/lib/inc/sys_string/impl/util/char_vector.h similarity index 92% rename from lib/inc/sys_string/impl/util/char_buffer.h rename to lib/inc/sys_string/impl/util/char_vector.h index f667eed..f6e3c77 100644 --- a/lib/inc/sys_string/impl/util/char_buffer.h +++ b/lib/inc/sys_string/impl/util/char_vector.h @@ -5,8 +5,8 @@ // license that can be found in the LICENSE file or at // https://github.com/gershnik/sys_string/blob/master/LICENSE // -#ifndef HEADER_SYS_STRING_CHAR_BUFFER_H_INCLUDED -#define HEADER_SYS_STRING_CHAR_BUFFER_H_INCLUDED +#ifndef HEADER_SYS_STRING_CHAR_VECTOR_H_INCLUDED +#define HEADER_SYS_STRING_CHAR_VECTOR_H_INCLUDED #include @@ -17,7 +17,7 @@ namespace sysstr::util { template - class char_buffer + class char_vector { private: static_assert(std::is_trivially_copyable_v, "Storage::value_type must be trivially copyable"); @@ -41,17 +41,17 @@ namespace sysstr::util static constexpr size_type growth_increment = size_type(std::max(size_t(2), std::max(size_t(16), sizeof(value_type)) / sizeof(value_type))); public: - constexpr char_buffer() noexcept = default; - ~char_buffer() noexcept = default; - char_buffer(const char_buffer & src) = delete; - char_buffer & operator=(const char_buffer & src) = delete; - constexpr char_buffer(char_buffer && src) noexcept: + constexpr char_vector() noexcept = default; + ~char_vector() noexcept = default; + char_vector(const char_vector & src) = delete; + char_vector & operator=(const char_vector & src) = delete; + constexpr char_vector(char_vector && src) noexcept: m_storage(std::move(src.m_storage)), m_size(src.m_size) { src.m_size = 0; } - constexpr char_buffer & operator=(char_buffer && src) noexcept + constexpr char_vector & operator=(char_vector && src) noexcept { if (this != &src) { @@ -124,13 +124,13 @@ namespace sysstr::util { return this->begin()[idx]; } iterator begin() const noexcept - { return this->m_storage.buffer(); } + { return this->m_storage.data(); } iterator end() const noexcept - { return this->m_storage.buffer() + this->m_size; } + { return this->m_storage.data() + this->m_size; } const_iterator cbegin() const noexcept - { return this->m_storage.buffer(); } + { return this->m_storage.data(); } const_iterator cend() const noexcept - { return this->m_storage.buffer() + this->m_size; } + { return this->m_storage.data() + this->m_size; } reverse_iterator rbegin() const noexcept { return reverse_iterator(end()); } reverse_iterator rend() const noexcept diff --git a/lib/inc/sys_string/impl/util/cursor.h b/lib/inc/sys_string/impl/util/cursor.h deleted file mode 100644 index 51221d3..0000000 --- a/lib/inc/sys_string/impl/util/cursor.h +++ /dev/null @@ -1,492 +0,0 @@ -// -// Copyright 2020 Eugene Gershnik -// -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file or at -// https://github.com/gershnik/sys_string/blob/master/LICENSE -// -#ifndef HEADER_SYS_STRING_CURSOR_H_INCLUDED -#define HEADER_SYS_STRING_CURSOR_H_INCLUDED - -#include - -#include -#include -#include - -namespace sysstr::util -{ - enum class cursor_direction : bool - { - backward = false, - forward = true - }; - constexpr cursor_direction reverse(cursor_direction dir) noexcept - { return cursor_direction(!bool(dir)); } - - template - class index_cursor - { - friend index_cursor; - - private: - using container_ptr = Container *; - - public: - using size_type = decltype(std::size(std::declval())); - using reference = decltype(std::declval()[0]); - - using difference_type = std::make_signed_t; - using value_type = std::remove_cv_t>; - using pointer = std::conditional_t, std::add_pointer_t>, void>; - - using iterator_category = std::random_access_iterator_tag; - - using reverse_type = index_cursor; - - static constexpr bool is_forward = (Direction == cursor_direction::forward); - static constexpr bool is_reverse = !is_forward; - public: - constexpr index_cursor() noexcept = default; - - constexpr index_cursor(Container & cont, size_type idx) noexcept : - m_cont(&cont), - m_idx(idx) - {} - - template - constexpr index_cursor(const index_cursor & src) noexcept : - m_cont(src.m_cont), - m_idx(src.m_idx) - {} - - template - constexpr index_cursor(const index_cursor & src, size_type idx) noexcept : - m_cont(src.m_cont), - m_idx(idx) - {} - - constexpr reference operator*() const - { return (*this->m_cont)[this->m_idx - !index_cursor::is_forward]; } - - index_cursor & operator++() noexcept - { - (*this) += 1; - return *this; - } - index_cursor operator++(int) noexcept - { - index_cursor ret = *this; - (*this) += 1; - return ret; - } - index_cursor & operator+=(difference_type diff) noexcept - { - if constexpr (index_cursor::is_forward) - this->m_idx += diff; - else - this->m_idx -= diff; - return *this; - } - index_cursor & operator--() noexcept - { - (*this) += -1; - return *this; - } - index_cursor operator--(int) noexcept - { - index_cursor ret = *this; - (*this) += -1; - return ret; - } - index_cursor & operator-=(difference_type diff) noexcept - { - (*this) += -diff; - return *this; - } - - friend constexpr index_cursor operator+(const index_cursor & lhs, difference_type rhs) noexcept - { - index_cursor ret(lhs); - ret += rhs; - return ret; - } - - friend constexpr index_cursor operator+(difference_type lhs, const index_cursor & rhs) noexcept - { - index_cursor ret(rhs); - ret += lhs; - return ret; - } - - friend constexpr index_cursor operator-(const index_cursor & lhs, difference_type rhs) noexcept - { - index_cursor ret(lhs); - ret -= rhs; - return ret; - } - - friend constexpr difference_type operator-(const index_cursor & lhs, const index_cursor & rhs) noexcept - { return index_cursor::is_forward ? (lhs.m_idx - rhs.m_idx) : (rhs.m_idx - lhs.m_idx); } - - explicit constexpr operator bool() const - { return this->m_idx != (index_cursor::is_forward ? std::size(*this->m_cont) : 0); } - - - friend constexpr bool operator==(const index_cursor & lhs, const index_cursor & rhs) noexcept - { return lhs.m_idx == rhs.m_idx; } - friend constexpr bool operator!=(const index_cursor & lhs, const index_cursor & rhs) noexcept - { return !(lhs == rhs); } - - friend constexpr bool operator==(const index_cursor & lhs, std::nullptr_t) noexcept - { return !lhs; } - friend constexpr bool operator==(std::nullptr_t, const index_cursor & rhs) noexcept - { return !rhs; } - friend constexpr bool operator!=(const index_cursor & lhs, std::nullptr_t rhs) noexcept - { return !(lhs == rhs); } - friend constexpr bool operator!=(std::nullptr_t lhs, const index_cursor & rhs) noexcept - { return !(lhs == rhs); } - - #if SYS_STRING_USE_SPACESHIP_OPERATOR - - friend std::strong_ordering operator<=>(const index_cursor & lhs, const index_cursor & rhs) noexcept - { return is_forward ? lhs.m_idx <=> rhs.m_idx : rhs.m_idx <=> lhs.m_idx; } - #else - friend bool operator<(const index_cursor & lhs, const index_cursor & rhs) noexcept - { return index_cursor::is_forward ? lhs.m_idx < rhs.m_idx : rhs.m_idx < lhs.m_idx; } - friend bool operator<=(const index_cursor & lhs, const index_cursor & rhs) noexcept - { return index_cursor::is_forward ? lhs.m_idx <= rhs.m_idx : rhs.m_idx <= lhs.m_idx;; } - friend bool operator>(const index_cursor & lhs, const index_cursor & rhs) noexcept - { return index_cursor::is_forward ? lhs.m_idx > rhs.m_idx : rhs.m_idx > lhs.m_idx;; } - friend bool operator>=(const index_cursor & lhs, const index_cursor & rhs) noexcept - { return index_cursor::is_forward ? lhs.m_idx >= rhs.m_idx : rhs.m_idx >= lhs.m_idx;; } - #endif - - - constexpr reverse_type reverse() const noexcept - { return reverse_type(*this); } - - constexpr size_type position() const noexcept - { return this->m_idx; } - - container_ptr container() const noexcept - { return m_cont; } - - friend auto operator<<(std::ostream & str, const index_cursor & c) -> std::ostream & - { return str << c.m_idx; } - - private: - container_ptr m_cont = nullptr; - size_type m_idx = 0; - }; - - template - using iterator_of = decltype(std::begin(std::declval>())); - template - using end_iterator_of = decltype(std::end(std::declval>())); - - - template::difference_type>> - class iter_cursor - { - friend iter_cursor; - public: - static constexpr bool is_forward = Direction == cursor_direction::forward; - static constexpr bool is_reverse = !is_forward; - private: - static constexpr bool is_bidi = std::is_convertible_v::iterator_category, std::bidirectional_iterator_tag>; - static constexpr bool is_random = std::is_convertible_v::iterator_category, std::random_access_iterator_tag>; - - static_assert(is_bidi || is_forward, "Iterator must be at least bidirectional to support reverse cursor"); - - public: - using size_type = SizeT; - using reference = typename std::iterator_traits::reference; - using value_type = typename std::iterator_traits::value_type; - using pointer = typename std::iterator_traits::pointer; - - using difference_type = std::make_signed_t; - - using iterator_category = typename std::iterator_traits::iterator_category; - - using reverse_type = iter_cursor; - - public: - constexpr iter_cursor() = default; - - constexpr iter_cursor(It begin, EndIt end, It current) : - m_begin(std::move(begin)), - m_end(std::move(end)), - m_current(std::move(current)) - {} - - template - constexpr iter_cursor(Container & cont, - std::enable_if_t, It> && std::is_same_v, EndIt>, - It> current) : - m_begin(std::begin(cont)), - m_end(std::end(cont)), - m_current(std::move(current)) - {} - - template - constexpr iter_cursor(const iter_cursor & src) : - m_begin(src.m_begin), - m_end(src.m_end), - m_current(src.m_current) - {} - - constexpr reference operator*() const - { - if constexpr (iter_cursor::is_forward) - { - return *this->m_current; - } - else - { - It temp(this->m_current); - --temp; - return *temp; - } - } - - - iter_cursor & operator++() - { - if constexpr (iter_cursor::is_forward) - ++this->m_current; - else - --this->m_current; - return *this; - } - - iter_cursor operator++(int) - { - iter_cursor ret = *this; - ++(*this); - return ret; - } - - template - std::enable_if_t & operator--() - { - if constexpr (iter_cursor::is_forward) - --this->m_current; - else - ++this->m_current; - return *this; - } - - template - std::enable_if_t operator--(int) - { - iter_cursor ret = *this; - --(*this); - return ret; - } - - template - std::enable_if_t & operator+=(difference_type diff) - { - constexpr difference_type diff_sign = -2 * !iter_cursor::is_forward + 1; - this->m_current += diff_sign * diff; - return *this; - } - - template - std::enable_if_t & operator-=(difference_type diff) - { - *this += -diff; - return *this; - } - - template - friend std::enable_if_t operator+(const iter_cursor & lhs, difference_type rhs) - { - iter_cursor ret(lhs); - ret += rhs; - return ret; - } - - template - friend std::enable_if_t operator+(difference_type lhs, const iter_cursor & rhs) - { - iter_cursor ret(rhs); - ret += lhs; - return ret; - } - - template - friend std::enable_if_t operator-(const iter_cursor & lhs, difference_type rhs) - { - iter_cursor ret(lhs); - ret -= rhs; - return ret; - } - - template - friend std::enable_if_t operator-(const iter_cursor & lhs, const iter_cursor & rhs) - { - if constexpr (iter_cursor::is_forward) - return difference_type(lhs.m_current - rhs.m_current); - else - return difference_type(rhs.m_current - lhs.m_current); - } - - explicit constexpr operator bool() const - { return this->m_current != (iter_cursor::is_forward ? this->m_end : this->m_begin); } - - - friend constexpr bool operator==(const iter_cursor & lhs, const iter_cursor & rhs) - { return lhs.m_current == rhs.m_current; } - friend constexpr bool operator!=(const iter_cursor & lhs, const iter_cursor & rhs) - { return !(lhs == rhs); } - - friend constexpr bool operator==(const iter_cursor & lhs, std::nullptr_t) - { return !lhs; } - friend constexpr bool operator==(std::nullptr_t, const iter_cursor & rhs) - { return !rhs; } - friend constexpr bool operator!=(const iter_cursor & lhs, std::nullptr_t rhs) - { return !(lhs == rhs); } - friend constexpr bool operator!=(std::nullptr_t lhs, const iter_cursor & rhs) - { return !(lhs == rhs); } - - #if SYS_STRING_USE_SPACESHIP_OPERATOR - - template - friend std::enable_if_t operator<=>(const iter_cursor & lhs, const iter_cursor & rhs) - { return (lhs - rhs) <=> 0; } - #else - template - friend std::enable_if_t operator<(const iter_cursor & lhs, const iter_cursor & rhs) - { return (lhs - rhs) < 0; } - template - friend std::enable_if_t operator<=(const iter_cursor & lhs, const iter_cursor & rhs) - { return (lhs - rhs) <= 0; } - template - friend std::enable_if_t operator>(const iter_cursor & lhs, const iter_cursor & rhs) - { return (lhs - rhs) > 0; } - template - friend std::enable_if_t operator>=(const iter_cursor & lhs, const iter_cursor & rhs) - { return (lhs - rhs) >= 0; } - #endif - - template - constexpr std::enable_if_t reverse() const - { return reverse_type(*this); } - - - template - constexpr std::enable_if_t position() const - { return size_type(this->m_current - this->m_begin); } - - It iterator() const - { return m_current; } - - friend auto operator<<(std::ostream & str, const iter_cursor & c) -> std::ostream & - { - if constexpr (is_random) - return str << c.position(); - else - return str << "non random iter_cursor"; - } - private: - It m_begin {}; - EndIt m_end {}; - It m_current {}; - }; - - - template - struct call_member_cursor_begin - { - template - auto operator()(T && obj) const -> decltype(std::forward(obj).template cursor_begin()); - }; - template - struct call_member_cursor_end - { - template - auto operator()(T && obj) const -> decltype(std::forward(obj).template cursor_end()); - }; - - - template - constexpr bool has_member_cursor_begin = std::is_invocable_v, std::remove_reference_t>; - template - constexpr bool has_member_cursor_end = std::is_invocable_v, std::remove_reference_t>; - - template - SYS_STRING_FORCE_INLINE - auto cursor_begin(T && cont) -> decltype(cont.template cursor_begin()) - { - static_assert(noexcept(cont.template cursor_begin()), "member cursor_begin must be noexcept"); - return cont.template cursor_begin(); - } - - template - SYS_STRING_FORCE_INLINE - auto cursor_end(T && cont) -> decltype(cont.template cursor_end()) - { - return cont.template cursor_end(); - } - - template - SYS_STRING_FORCE_INLINE - auto cursor_at(T && cont, typename T::size_type size) -> decltype(cont.template cursor_at(size)) - { - return cont.template cursor_at(size); - } - - template - SYS_STRING_FORCE_INLINE - auto cursor_begin(T && cont) -> std::enable_if_t, - iter_cursor, end_iterator_of, Direction, decltype(std::size(cont))>> - { - if constexpr (Direction == cursor_direction::forward) - return iter_cursor, end_iterator_of, Direction, decltype(std::size(cont))>(cont, std::begin(cont)); - else - return iter_cursor, end_iterator_of, Direction, decltype(std::size(cont))>(cont, std::end(cont)); - } - - template - SYS_STRING_FORCE_INLINE - auto cursor_end(T && cont) -> std::enable_if_t, - iter_cursor, end_iterator_of, Direction, decltype(std::size(cont))>> - { - if constexpr (Direction == cursor_direction::forward) - return iter_cursor, end_iterator_of, Direction, decltype(std::size(cont))>(cont, std::end(cont)); - else - return iter_cursor, end_iterator_of, Direction, decltype(std::size(cont))>(cont, std::begin(cont)); - } - - template - SYS_STRING_FORCE_INLINE - auto cursor_at(T && cont, decltype(std::size(cont)) pos) -> std::enable_if_t< - !has_member_cursor_begin && - std::is_convertible_v>::iterator_category, std::random_access_iterator_tag>, - iter_cursor, end_iterator_of, Direction, decltype(std::size(cont))>> - { - if constexpr (Direction == cursor_direction::forward) - return iter_cursor, end_iterator_of, Direction, decltype(std::size(cont))>(cont, std::begin(cont) + pos); - else - return iter_cursor, end_iterator_of, Direction, decltype(std::size(cont))>(cont, std::end(cont) - pos); - } -} - -#endif diff --git a/lib/inc/sys_string/impl/util/generic_buffer.h b/lib/inc/sys_string/impl/util/generic_impl.h similarity index 81% rename from lib/inc/sys_string/impl/util/generic_buffer.h rename to lib/inc/sys_string/impl/util/generic_impl.h index 2450a9a..0b0dff4 100644 --- a/lib/inc/sys_string/impl/util/generic_buffer.h +++ b/lib/inc/sys_string/impl/util/generic_impl.h @@ -6,36 +6,37 @@ // license that can be found in the LICENSE file or at // https://github.com/gershnik/sys_string/blob/master/LICENSE // -#ifndef HEADER_SYS_STRING_GENERIC_BUFFER_H_INCLUDED -#define HEADER_SYS_STRING_GENERIC_BUFFER_H_INCLUDED +#ifndef HEADER_SYS_STRING_GENERIC_IMPL_H_INCLUDED +#define HEADER_SYS_STRING_GENERIC_IMPL_H_INCLUDED #include -#include +#include #include #include #include #include +#include namespace sysstr::util::generic { template - class dynamic_buffer + class dynamic_string { public: using size_type = SizeT; using value_type = CharT; public: - static dynamic_buffer * create(SizeT len) - { return new (len) dynamic_buffer(); } + static dynamic_string * create(SizeT len) + { return new (len) dynamic_string(); } - static dynamic_buffer * reallocate(dynamic_buffer * original, SizeT len) + static dynamic_string * reallocate(dynamic_string * original, SizeT len) { - dynamic_buffer * new_ptr = (dynamic_buffer *)realloc(original, sizeof(dynamic_buffer) + len * sizeof(CharT)); + dynamic_string * new_ptr = (dynamic_string *)realloc(original, sizeof(dynamic_string) + len * sizeof(CharT)); if (!new_ptr) throw std::bad_alloc(); if (!original) - new (new_ptr) dynamic_buffer(); + new (new_ptr) dynamic_string(); return new_ptr; } @@ -63,10 +64,10 @@ namespace sysstr::util::generic { return this->m_chars; } private: - dynamic_buffer() noexcept = default; - dynamic_buffer(const dynamic_buffer &) = delete; - dynamic_buffer & operator=(const dynamic_buffer &) = delete; - ~dynamic_buffer() = default; + dynamic_string() noexcept = default; + dynamic_string(const dynamic_string &) = delete; + dynamic_string & operator=(const dynamic_string &) = delete; + ~dynamic_string() = default; static void * operator new(size_t length, SizeT str_length) { @@ -90,37 +91,37 @@ namespace sysstr::util::generic CharT m_chars[1]; //this accounts for null terminator }; - //this needs to be layout compatible with dynamic_buffer + //this needs to be layout compatible with dynamic_string template - struct static_buffer + struct static_string { int32_t not_a_ref_count; bool is_static; - CharT chars[N + 1]; + ct_string chars; }; template - class buffer + class any_string { private: static constexpr uintptr_t dynamic_flag = 0b01; - using dynamic_type = dynamic_buffer; + using dynamic_type = dynamic_string; public: - static constexpr SizeT max_size = SizeT(std::numeric_limits::max() - sizeof(dynamic_type)) / sizeof(CharT); + static constexpr SizeT max_size = SizeT(std::numeric_limits>::max() - sizeof(dynamic_type)) / sizeof(CharT); public: - buffer() noexcept + any_string() noexcept { this->set_empty(); } - buffer(std::nullptr_t) noexcept + any_string(std::nullptr_t) noexcept { this->set_dynamic(nullptr, 0); } - buffer(dynamic_type * buf, SizeT size, int) noexcept + any_string(dynamic_type * buf, SizeT size, int) noexcept { this->set_dynamic(buf, size); } - buffer(SizeT length) + any_string(SizeT length) { if (length <= max_small_length) { @@ -134,11 +135,11 @@ namespace sysstr::util::generic } template - buffer(const Char * str, size_t length) + any_string(const Char * str, size_t length) { if constexpr (utf_encoding_of == utf_encoding_of) { - SizeT our_size = buffer::ensure_valid_size(length); + SizeT our_size = any_string::ensure_valid_size(length); CharT * data; if (our_size <= max_small_length) { @@ -157,7 +158,7 @@ namespace sysstr::util::generic else { using converter = utf_converter, utf_encoding_of>; - SizeT our_size = buffer::ensure_valid_size(converter::converted_length(str, str + length)); + SizeT our_size = any_string::ensure_valid_size(converter::converted_length(str, str + length)); CharT * data; if (our_size <= max_small_length) { @@ -207,18 +208,18 @@ namespace sysstr::util::generic } - ~buffer() noexcept + ~any_string() noexcept { if (auto buf = (this->is_dynamic() ? this->get_dynamic() : nullptr)) buf->sub_ref(); } - buffer(const buffer & src) noexcept + any_string(const any_string & src) noexcept { memcpy(&m_data, &src.m_data, sizeof(m_data)); if (auto buf = (this->is_dynamic() ? this->get_dynamic() : nullptr)) buf->add_ref(); } - buffer(buffer && src) noexcept + any_string(any_string && src) noexcept { //Good boy GCC 12! src.m_data is indeed not necessarily fully initialized #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 12 @@ -231,19 +232,19 @@ namespace sysstr::util::generic #endif src.set_empty(); } - buffer & operator=(const buffer & rhs) noexcept + any_string & operator=(const any_string & rhs) noexcept { - buffer temp(rhs); + any_string temp(rhs); return *this = std::move(temp); } - buffer & operator=(buffer && rhs) noexcept + any_string & operator=(any_string && rhs) noexcept { - this->~buffer(); - new (this) buffer(std::move(rhs)); + this->~any_string(); + new (this) any_string(std::move(rhs)); return *this; } - void swap(buffer & other) noexcept + void swap(any_string & other) noexcept { decltype(m_data) temp; memcpy(&temp, &other.m_data, sizeof(m_data)); @@ -264,7 +265,7 @@ namespace sysstr::util::generic } CharT * data() noexcept - { return const_cast(const_cast(this)->data()); } + { return const_cast(const_cast(this)->data()); } SizeT size() const noexcept { return this->is_dynamic() ? this->get_dynamic_size() : this->get_static_size(); } @@ -291,15 +292,15 @@ namespace sysstr::util::generic { this->marker_byte() = std::byte(0); } - void set_dynamic(dynamic_type * buffer, SizeT size) noexcept + void set_dynamic(dynamic_type * any_string, SizeT size) noexcept { - this->dynamic_ptr_value() = (uintptr_t(buffer) | buffer::dynamic_flag); + this->dynamic_ptr_value() = (uintptr_t(any_string) | any_string::dynamic_flag); this->dynamic_size_value() = size; } bool is_dynamic() const noexcept - { return this->dynamic_ptr_value() & buffer::dynamic_flag; } + { return this->dynamic_ptr_value() & any_string::dynamic_flag; } dynamic_type * get_dynamic() const noexcept - { return reinterpret_cast(this->dynamic_ptr_value() & ~buffer::dynamic_flag); } + { return reinterpret_cast(this->dynamic_ptr_value() & ~any_string::dynamic_flag); } SizeT get_dynamic_size() const noexcept { return this->dynamic_size_value(); } void set_dynamic_size(SizeT size) noexcept @@ -313,12 +314,12 @@ namespace sysstr::util::generic static SizeT ensure_valid_size(size_t len) { - if (len > buffer::max_size) + if (len > any_string::max_size) throw std::bad_alloc(); return SizeT(len); } private: - static_assert(endian::native == endian::little || endian::native == endian::big, + static_assert(std::endian::native == std::endian::little || std::endian::native == std::endian::big, "Only little or big endian architectures are currently supported"); static constexpr size_t data_size = 4 * sizeof(void *); @@ -330,43 +331,43 @@ namespace sysstr::util::generic const uintptr_t & dynamic_ptr_value() const noexcept { - if constexpr (endian::native == endian::little) + if constexpr (std::endian::native == std::endian::little) return *reinterpret_cast(&this->m_data[0]); else return *(reinterpret_cast(&this->m_data[data_size]) - 1); } uintptr_t & dynamic_ptr_value() noexcept - { return const_cast(const_cast(this)->dynamic_ptr_value()); } + { return const_cast(const_cast(this)->dynamic_ptr_value()); } const uintptr_t & dynamic_size_value() const noexcept { - if constexpr (endian::native == endian::little) + if constexpr (std::endian::native == std::endian::little) return *(reinterpret_cast(&this->m_data[0]) + 1); else return *(reinterpret_cast(&this->m_data[data_size]) - 2); } uintptr_t & dynamic_size_value() noexcept - { return const_cast(const_cast(this)->dynamic_size_value()); } + { return const_cast(const_cast(this)->dynamic_size_value()); } const CharT * get_static_data() const noexcept { - if constexpr (endian::native == endian::little) + if constexpr (std::endian::native == std::endian::little) return reinterpret_cast(&this->m_data[0]) + 1; else return reinterpret_cast(&this->m_data[0]); } CharT * get_static_data() noexcept - { return const_cast(const_cast(this)->get_static_data()); } + { return const_cast(const_cast(this)->get_static_data()); } const std::byte & marker_byte() const noexcept { - if constexpr (endian::native == endian::little) + if constexpr (std::endian::native == std::endian::little) return this->m_data[0]; else return this->m_data[data_size - 1]; } std::byte & marker_byte() noexcept - { return const_cast(const_cast(this)->marker_byte()); } + { return const_cast(const_cast(this)->marker_byte()); } }; @@ -393,12 +394,10 @@ namespace sysstr::util::generic using reverse_iterator = std::reverse_iterator; using const_reverse_iterator = reverse_iterator; - using cursor = iter_cursor; - using reverse_cursor = iter_cursor; public: - char_access(const buffer & buffer) noexcept: - m_chars(buffer.data()), - m_size(buffer.size()) + char_access(const any_string & storage) noexcept: + m_chars(storage.data()), + m_size(storage.size()) { } template @@ -462,7 +461,7 @@ namespace sysstr::util::generic class builder_storage { private: - using buffer_t = generic::buffer; + using buffer_t = generic::any_string; public: using value_type = CharT; using size_type = SizeT; @@ -487,7 +486,7 @@ namespace sysstr::util::generic constexpr size_type capacity() const noexcept { return this->m_capacity; } - constexpr value_type * buffer() const noexcept + constexpr value_type * data() const noexcept { return this->m_buf.data(); } static constexpr size_type max_size() noexcept { return buffer_t::max_size; } @@ -510,10 +509,10 @@ namespace sysstr::util::generic }; template - using buffer_builder= char_buffer>; + using builder_impl= char_vector>; template - inline buffer convert_to_string(buffer_builder & builder) noexcept + inline any_string convert_to_string(builder_impl & builder) noexcept { auto size = builder.size(); auto buf = builder.release(); @@ -526,7 +525,7 @@ namespace sysstr::util::generic { friend generic::char_access; protected: - using buffer = generic::buffer; + using buffer = generic::any_string; using char_access = generic::char_access; public: using size_type = SizeT; @@ -545,8 +544,8 @@ namespace sysstr::util::generic storage & operator=(const storage & rhs) noexcept = default; storage & operator=(storage && rhs) noexcept = default; - template - storage(const Char * str, size_t len, std::enable_if_t> * = nullptr) : + template + storage(const Char * str, size_t len) : m_buffer(str, len) {} @@ -572,7 +571,7 @@ namespace sysstr::util::generic { return m_buffer.size(); } auto operator[](SizeT idx) const noexcept -> CharT - { return m_buffer.buffer()[idx]; } + { return m_buffer.data()[idx]; } auto swap(storage & other) noexcept -> void { m_buffer.swap(other.m_buffer); } diff --git a/lib/inc/sys_string/impl/util/iter_util.h b/lib/inc/sys_string/impl/util/iter_util.h new file mode 100644 index 0000000..a6b2e17 --- /dev/null +++ b/lib/inc/sys_string/impl/util/iter_util.h @@ -0,0 +1,252 @@ +// +// Copyright 2020 Eugene Gershnik +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://github.com/gershnik/sys_string/blob/master/LICENSE +// +#ifndef HEADER_SYS_STRING_ITER_UTIL_H_INCLUDED +#define HEADER_SYS_STRING_ITER_UTIL_H_INCLUDED + +#include + +#include +#include + +namespace sysstr::ranges //non-standard extensions to std::ranges +{ + template + concept reverse_iterator_for = + std::input_iterator && + std::input_iterator && + std::is_constructible_v && + requires(T t) { + + { t.base() } -> std::same_as; + }; + + template + using reverse_iterator_t = decltype(std::ranges::rbegin(std::declval())); + template + using const_reverse_iterator_t = decltype(std::ranges::crbegin(std::declval())); + template + using reverse_sentinel_t = decltype(std::ranges::rend(std::declval())); + template + using const_reverse_sentinel_t = decltype(std::ranges::crend(std::declval())); + + template + concept reverse_traversable_range = std::ranges::range && requires(R & r) { + std::ranges::rbegin(r); + std::ranges::rend(r); + std::ranges::crbegin(r); + std::ranges::crend(r); + }; + + template + concept common_reverse_traversable_range = reverse_traversable_range && + std::ranges::common_range && + std::same_as, reverse_sentinel_t>; + + template + concept standard_reverse_traversable_range = reverse_traversable_range && + reverse_iterator_for, std::ranges::iterator_t>; + + + template + concept custom_reverse_traversable_range = reverse_traversable_range && requires(R & r) + { + { r.reverse(std::declval>()) } -> std::same_as>; + { r.reverse(std::declval>()) } -> std::same_as>; + }; + + + template + decltype(auto) make_reverse_iterator(R && /*range*/, std::ranges::iterator_t> it) + { return reverse_iterator_t(it); } + + template + decltype(auto) make_reverse_iterator(R && /*range*/, reverse_iterator_t> it) + { return it.base(); } + + template + decltype(auto) make_reverse_iterator(R && range, std::ranges::iterator_t> it) + { return range.reverse(it); } + + template + decltype(auto) make_reverse_iterator(R && range, reverse_iterator_t> it) + { return range.reverse(it); } + + template + concept reversible_range = reverse_traversable_range && requires(R & r) { + make_reverse_iterator(r, std::declval>>()); + make_reverse_iterator(r, std::declval>>()); + }; +} + +namespace sysstr::util +{ + enum class iter_direction : bool + { + backward = false, + forward = true + }; + constexpr iter_direction reverse(iter_direction dir) noexcept + { return iter_direction(!bool(dir)); } + + + template + concept indexable = requires(T & t) + { + t.size(); + t[decltype(t.size()){}]; + }; + + template + class index_iterator + { + //We cannot declare ourselves as template becuase iterators are often declared as nested + //types and within a type the Container is incomplete. Sigh. + static_assert(indexable); + + friend index_iterator; + private: + using container_ptr = Container *; + + public: + using size_type = decltype(std::declval().size()); + using reference = decltype(std::declval()[std::declval()]); + using difference_type = std::make_signed_t; + using value_type = std::remove_cvref_t; + + static constexpr bool is_forward = (Direction == iter_direction::forward); + static constexpr bool is_reverse = !is_forward; + public: + constexpr index_iterator() noexcept = default; + + constexpr index_iterator(Container & cont, size_type idx) noexcept : + m_cont(&cont), + m_idx(idx) + {} + + template + constexpr index_iterator(const index_iterator & src) noexcept : + m_cont(src.m_cont), + m_idx(src.m_idx) + {} + + template + constexpr index_iterator(const index_iterator & src, size_type idx) noexcept : + m_cont(src.m_cont), + m_idx(idx) + {} + + constexpr reference operator*() const + { return (*this->m_cont)[this->m_idx - !index_iterator::is_forward]; } + + constexpr reference operator[](difference_type idx) const + { + if constexpr (index_iterator::is_forward) + return (*this->m_cont)[this->m_idx + idx]; + else + return (*this->m_cont)[this->m_idx - 1 - idx]; + } + + constexpr index_iterator & operator++() noexcept + { + (*this) += 1; + return *this; + } + constexpr index_iterator operator++(int) noexcept + { + index_iterator ret = *this; + (*this) += 1; + return ret; + } + constexpr index_iterator & operator+=(difference_type diff) noexcept + { + if constexpr (index_iterator::is_forward) + this->m_idx += diff; + else + this->m_idx -= diff; + return *this; + } + index_iterator & operator--() noexcept + { + (*this) += -1; + return *this; + } + index_iterator operator--(int) noexcept + { + index_iterator ret = *this; + (*this) += -1; + return ret; + } + index_iterator & operator-=(difference_type diff) noexcept + { + (*this) += -diff; + return *this; + } + friend constexpr index_iterator operator+(const index_iterator & lhs, difference_type rhs) noexcept + { + index_iterator ret(lhs); + ret += rhs; + return ret; + } + + friend constexpr index_iterator operator+(difference_type lhs, const index_iterator & rhs) noexcept + { + index_iterator ret(rhs); + ret += lhs; + return ret; + } + + friend constexpr difference_type operator-(const index_iterator & lhs, const index_iterator & rhs) noexcept + { return index_iterator::is_forward ? (lhs.m_idx - rhs.m_idx) : (rhs.m_idx - lhs.m_idx); } + + friend constexpr difference_type operator-(const index_iterator & lhs, std::default_sentinel_t) noexcept + { return index_iterator::is_forward ? (lhs.m_idx - lhs.m_cont->size()) : -lhs.m_idx; } + + friend constexpr difference_type operator-(std::default_sentinel_t, const index_iterator & rhs) noexcept + { return index_iterator::is_forward ? (rhs.m_cont->size() - rhs.m_idx) : rhs.m_idx; } + + friend constexpr index_iterator operator-(const index_iterator & lhs, difference_type rhs) noexcept + { + index_iterator ret(lhs); + ret -= rhs; + return ret; + } + + friend constexpr bool operator==(const index_iterator & lhs, const index_iterator & rhs) noexcept + { return lhs.m_idx == rhs.m_idx; } + friend constexpr bool operator!=(const index_iterator & lhs, const index_iterator & rhs) noexcept + { return !(lhs == rhs); } + + friend constexpr bool operator==(const index_iterator & lhs, std::default_sentinel_t) noexcept + { return lhs.m_idx == (index_iterator::is_forward ? lhs.m_cont->size() : 0); } + friend constexpr bool operator==(std::default_sentinel_t, const index_iterator & rhs) noexcept + { return rhs == std::default_sentinel; } + friend constexpr bool operator!=(const index_iterator & lhs, std::default_sentinel_t) noexcept + { return !(lhs == std::default_sentinel); } + friend constexpr bool operator!=(std::default_sentinel_t, const index_iterator & rhs) noexcept + { return !(rhs == std::default_sentinel); } + + friend constexpr std::strong_ordering operator<=>(const index_iterator & lhs, const index_iterator & rhs) noexcept + { return is_forward ? lhs.m_idx <=> rhs.m_idx : rhs.m_idx <=> lhs.m_idx; } + + + constexpr size_type index() const noexcept + { return this->m_idx; } + + container_ptr container() const noexcept + { return m_cont; } + + index_iterator base() const requires(is_reverse) + { return index_iterator(*this); } + + private: + container_ptr m_cont = nullptr; + size_type m_idx = 0; + }; +} + +#endif diff --git a/lib/inc/sys_string/impl/util/util.h b/lib/inc/sys_string/impl/util/util.h index b00f329..e7fbfbd 100644 --- a/lib/inc/sys_string/impl/util/util.h +++ b/lib/inc/sys_string/impl/util/util.h @@ -11,120 +11,78 @@ #include #include +#include #include -#include -#if SYS_STRING_USE_SPACESHIP_OPERATOR - #include -#endif +#include +#include namespace sysstr::util { - class count_output_iterator - { - public: - using value_type = void; - using difference_type = void; - using pointer = void ; - using reference = void; - using iterator_category = std::output_iterator_tag; - public: - constexpr count_output_iterator(size_t & count) noexcept: - m_count(&count) - {} - - template - constexpr count_output_iterator & operator=(Value &&) noexcept - { ++(*this->m_count); return *this;} - - constexpr count_output_iterator & operator*() noexcept {return *this;} - constexpr count_output_iterator & operator++() noexcept {return *this;} - constexpr count_output_iterator & operator++(int) noexcept {return *this;} - - private: - size_t * const m_count; - }; - template static constexpr bool dependent_bool = Val; - inline constexpr auto make_compare_result(int res) - { - #if SYS_STRING_USE_SPACESHIP_OPERATOR - return res <=> 0; - #else - return res; - #endif - } - - template - inline constexpr auto compare_3way(T a, T b) - { - #if SYS_STRING_USE_SPACESHIP_OPERATOR - return a <=> b; - #else - return (a > b) - (a < b); - #endif - } + template + struct ct_string { + using char_type = Char; - template - inline constexpr auto compare_3way(const Char * lhs, size_t lhs_size, const Char * rhs, size_t rhs_size) noexcept - { - auto shortest_length = std::min(lhs_size, rhs_size); - int res = std::char_traits::compare(lhs, rhs, shortest_length); - #if SYS_STRING_USE_SPACESHIP_OPERATOR - if (res != 0) - return res <=> 0; - #else - if (res != 0) - return res; - #endif - return compare_3way(lhs_size, rhs_size); - } + Char chars[N]; - template - inline constexpr auto lexicographical_compare_3way(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2) - { - for ( ; (first1 != last1) && (first2 != last2); ++first1, (void) ++first2 ) + constexpr ct_string(const Char (&src)[N]) noexcept { - if (auto res = compare_3way(*first1, *first2)) - return res; + std::ranges::copy(src, chars); } - #if SYS_STRING_USE_SPACESHIP_OPERATOR - return (first2 == last2) <=> (first1 == last1); - #else - return (first2 == last2) - (first1 == last1); - #endif - } - template - inline constexpr auto lexicographical_compare_3way(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, Compare3Way comp) - { - for ( ; (first1 != last1) && (first2 != last2); ++first1, (void) ++first2 ) - { - if (auto res = comp(*first1, *first2); res != 0) - return res; + constexpr auto size() const -> size_t { return N; } + + constexpr auto operator[](size_t i) const -> Char { return chars[i]; } + + friend constexpr bool operator==(const ct_string & lhs, const ct_string & rhs) { + return std::ranges::equal(lhs.chars, rhs.chars); } - #if SYS_STRING_USE_SPACESHIP_OPERATOR - return (first2 == last2) <=> (first1 == last1); - #else - return (first2 == last2) - (first1 == last1); - #endif - } - template - auto split(InIt str_start, InIt str_end, OutIt dest, Pred pred) -> OutIt + constexpr auto begin() const { return chars; } + constexpr auto end() const { return chars + N; } + }; + + template + ct_string(const Char (&src)[N]) -> ct_string; + + template Sentinel, std::output_iterator OutIt, class Pred> + auto split(It str_start, Sentinel str_end, OutIt dest, Pred pred) -> OutIt + requires(std::is_constructible_v, std::tuple_element_t<1, decltype(pred(str_start, str_end))>>) { for( ; ; ) { auto [found_start, found_end] = pred(str_start, str_end); *dest++ = OutT(str_start, found_start); - if (found_start == str_end) + if (found_start == found_end) break; str_start = found_end; } return dest; } + template + requires( + std::is_same_v, char> && + requires(Range & range) { range.resize(size_t(0)); } + ) + int vprintf_to(Range & range, const char * format, va_list vl) + { + va_list try_vl; + va_copy(try_vl, vl); + const int size = vsnprintf(0, 0, format, try_vl); + va_end(try_vl); + if (size == -1) + return size; + range.resize(size + 1); + const int ret = vsnprintf(std::ranges::data(range), std::ranges::size(range), format, vl); + va_end(vl); + if (ret >= 0) + range.resize(ret); + return ret; + } + } #endif diff --git a/lib/inc/sys_string/sys_string.h b/lib/inc/sys_string/sys_string.h index 10c14f0..29cc512 100644 --- a/lib/inc/sys_string/sys_string.h +++ b/lib/inc/sys_string/sys_string.h @@ -19,15 +19,14 @@ #include #include #include -#include +#include +#include -#if SYS_STRING_USE_SPACESHIP_OPERATOR - #include -#endif -#if SYS_STRING_USE_SPAN - #include +#if __has_include() + #include #endif + #define HEADER_SYS_STRING_H_INSIDE namespace sysstr @@ -46,20 +45,25 @@ namespace sysstr copy_content, attach_pointer }; -} -namespace sysstr::util -{ - struct char_access_data_detector - { - template - auto operator()(const CharAccess * access) noexcept(noexcept(access->data())) -> decltype(access->data()); + template + concept sys_string_or_char = std::is_same_v, sys_string_t> || + std::is_same_v, char32_t>; + + template + concept builder_appendable = requires(sys_string_builder_t builder, T t) { + builder.append(t); }; - template - constexpr bool has_contiguous_data = - std::is_nothrow_invocable_r_v; + template + concept addable = sys_string_or_char || ( + std::ranges::forward_range && + has_utf_encoding> + ); +} +namespace sysstr::util +{ template class addition; @@ -72,22 +76,16 @@ namespace sysstr template class sys_string_t : public Storage { - friend std::hash; - friend typename Storage::char_access; + friend std::hash; + friend typename Storage::char_access; + #if SYS_STRING_SUPPORTS_STD_FORMAT + friend std::formatter>; + #if SYS_STRING_WCHAR_T_IS_UTF16 || SYS_STRING_WCHAR_T_IS_UTF32 + friend std::formatter, wchar_t>; + #endif + #endif private: using storage = Storage; - - struct view_traits - { - using char_access = typename Storage::char_access; - - static constexpr const sys_string_t & adapt(const sys_string_t & str) noexcept - { return str; } - }; - - template - static constexpr bool is_string_or_char = std::is_same_v>, sys_string_t> || - std::is_same_v>, char32_t>; public: using size_type = typename storage::size_type; using storage_type = typename storage::storage_type; @@ -96,25 +94,58 @@ namespace sysstr static constexpr size_type max_size = storage::max_size; using char_access = typename storage::char_access; + static_assert(std::ranges::random_access_range); + + template + class utf_access : private util::utf_view + { + private: + using super = util::utf_view; + public: + using typename super::iterator; + using typename super::const_iterator; + using typename super::reverse_iterator; + using typename super::const_reverse_iterator; + + using typename super::value_type; + using typename super::reference; + using typename super::const_reference; + using typename super::pointer; + using typename super::const_pointer; + + public: + utf_access(const sys_string_t & src) noexcept(noexcept(super(src))) : + super(src) + {} + + using super::begin; + using super::end; + using super::cbegin; + using super::cend; + using super::rbegin; + using super::rend; + using super::crbegin; + using super::crend; + + using super::reverse; + using super::each; + }; + using utf8_access = utf_access; + using utf16_access = utf_access; + using utf32_access = utf_access; template - using utf_view = utf_view; + using utf_view [[deprecated("use utf_access")]] = utf_access; - using utf8_view = utf_view; - using utf16_view = utf_view; - using utf32_view = utf_view; + using utf8_view [[deprecated("use utf8_access")]] = utf8_access; + using utf16_view [[deprecated("use utf16_access")]] = utf16_access; + using utf32_view [[deprecated("use utf32_access")]] = utf32_access; + + using compare_result [[deprecated("use std::strong_ordering")]] = std::strong_ordering; + static constexpr std::strong_ordering ordering_less [[deprecated("use std::strong_ordering::less")]] = std::strong_ordering::less; + static constexpr std::strong_ordering ordering_equal [[deprecated("use std::strong_ordering::less")]] = std::strong_ordering::equal; + static constexpr std::strong_ordering ordering_greater [[deprecated("use std::strong_ordering::less")]] = std::strong_ordering::greater; - #if SYS_STRING_USE_SPACESHIP_OPERATOR - using compare_result = std::strong_ordering; - static constexpr compare_result ordering_less = std::strong_ordering::less; - static constexpr compare_result ordering_equal = std::strong_ordering::equal; - static constexpr compare_result ordering_greater = std::strong_ordering::greater; - #else - using compare_result = int; - static constexpr compare_result ordering_less = -1; - static constexpr compare_result ordering_equal = 0; - static constexpr compare_result ordering_greater = 1; - #endif public: sys_string_t() noexcept = default; @@ -123,57 +154,96 @@ namespace sysstr sys_string_t & operator=(const sys_string_t &) noexcept = default; sys_string_t & operator=(sys_string_t &&) noexcept = default; ~sys_string_t() noexcept = default; + + //Inherit any storage specific constructors using storage::storage; + //Constructors from raw strings and character ranges - template - sys_string_t(const Char * str, size_t len, std::enable_if_t> * = nullptr) : + template + sys_string_t(const Char * str, size_t len) : storage(str, len) {} - template - sys_string_t(const Char * str, std::enable_if_t> * = nullptr) : + template + sys_string_t(const Char * str) : sys_string_t(str, str ? std::char_traits::length(str) : 0) {} - template - sys_string_t(char val, std::enable_if_t> * = nullptr) : + template + sys_string_t(Char val) : sys_string_t(&val, 1) {} - template - sys_string_t(const std::basic_string & val, std::enable_if_t> * = nullptr) : - sys_string_t(val.data(), val.size()) + template + requires(has_utf_encoding>) + sys_string_t(const Range & val) : + sys_string_t(std::ranges::data(val), std::ranges::size(val)) {} - template - sys_string_t(const std::basic_string_view & val, std::enable_if_t> * = nullptr) : - sys_string_t(val.data(), val.size()) + //Slice constructors from utf32_access::iterators + + sys_string_t(const typename utf32_access::iterator & first, const typename utf32_access::iterator & last): + sys_string_t(first.storage_current(), last.storage_current()) {} - - template - sys_string_t(const std::vector & val, std::enable_if_t> * = nullptr) : - sys_string_t(val.data(), val.size()) + + sys_string_t(const typename utf32_access::reverse_iterator & first, const typename utf32_access::reverse_iterator & last): + sys_string_t(first.storage_current(), last.storage_current()) {} - #if SYS_STRING_USE_SPAN - template - sys_string_t(const std::span & val, std::enable_if_t> * = nullptr) : - sys_string_t(val.data(), val.size()) + sys_string_t(const typename utf32_access::iterator & first, std::default_sentinel_t): + sys_string_t(first.storage_current(), first.storage_last()) {} - #endif - - - sys_string_t(const typename utf32_view::iterator & first, const typename utf32_view::iterator & last): - sys_string_t(first.storage_cursor(), last.storage_pos() - first.storage_pos()) + + sys_string_t(const typename utf32_access::reverse_iterator & first, std::default_sentinel_t): + sys_string_t(first.storage_current(), first.storage_last()) + {} + + template + requires(std::is_same_v, typename utf32_access::iterator> && + (std::is_same_v, typename utf32_access::iterator> || + std::is_same_v, std::default_sentinel_t>)) + sys_string_t(const Range & range): + sys_string_t(std::ranges::begin(range), std::ranges::end(range)) {} - - sys_string_t(const typename char_access::iterator & first, const typename char_access::iterator & last); - sys_string_t(const typename char_access::cursor & src, size_type length); + template + requires(std::is_same_v, typename utf32_access::reverse_iterator> && + (std::is_same_v, typename utf32_access::reverse_iterator> || + std::is_same_v, std::default_sentinel_t>)) + sys_string_t(const Range & range): + sys_string_t(std::ranges::begin(range), std::ranges::end(range)) + {} + + //Slice constructors from char_access::iterators - sys_string_t(const typename char_access::reverse_cursor & src, size_type length); + template EndIt> + sys_string_t(const typename char_access::iterator & first, const EndIt & last): + sys_string_t(first, last - first) + {} + + template EndIt> + sys_string_t(const typename char_access::reverse_iterator & first, const EndIt & last): + sys_string_t(first.base() - (last - first), first.base()) + {} + + template + requires(std::is_same_v, typename char_access::iterator> && + std::sized_sentinel_for, typename char_access::iterator> && + (!std::ranges::contiguous_range || !has_utf_encoding>)) + sys_string_t(const Range & range): + sys_string_t(std::ranges::begin(range), std::ranges::end(range)) + {} + + template + requires(std::is_same_v, typename char_access::reverse_iterator> && + std::sized_sentinel_for, typename char_access::reverse_iterator>) + sys_string_t(const Range & range): + sys_string_t(std::ranges::begin(range), std::ranges::end(range)) + {} + + // Construct moving from underlying storage explicit sys_string_t(storage && st) noexcept : storage(std::move(st)) {} @@ -187,14 +257,47 @@ namespace sysstr auto empty() const noexcept -> bool { return storage::size() == 0; } - static auto format(const char * spec, ...) -> sys_string_t; - static auto formatv(const char * spec, va_list vl) -> sys_string_t; + static + #ifdef __GNUC__ + __attribute__((format(printf, 1, 2))) + #endif + auto format( + #ifdef _MSC_VER + _Printf_format_string_ + #endif + const char * spec, ...) -> sys_string_t; + + static + #ifdef __GNUC__ + __attribute__((format(printf, 1, 0))) + #endif + auto formatv( + #ifdef _MSC_VER + _Printf_format_string_ + #endif + const char * spec, va_list vl) -> sys_string_t; - template - friend auto operator<<(std::ostream & str, const sys_string_t & val) -> std::ostream &; - #if defined(_WIN32) || defined(__STDC_ISO_10646__) - template - friend auto operator<<(std::wostream & str, const sys_string_t & val) -> std::wostream &; + #if SYS_STRING_SUPPORTS_STD_FORMAT + template + static auto std_format(std::format_string fmt, Args &&... args) -> sys_string_t; + static auto std_vformat(std::string_view fmt, std::format_args args) -> sys_string_t; + #endif + + friend auto operator<<(std::ostream & str, const sys_string_t & val) -> std::ostream & + { + val.print_with([&](const auto & view) { + std::ranges::copy(view, std::ostreambuf_iterator(str)); + }); + return str; + } + #if SYS_STRING_WCHAR_T_IS_UTF16 || SYS_STRING_WCHAR_T_IS_UTF32 + friend auto operator<<(std::wostream & str, const sys_string_t & val) -> std::wostream & + { + val.wprint_with([&](const auto & view) { + std::ranges::copy(view, std::ostreambuf_iterator(str)); + }); + return str; + } #endif auto swap(sys_string_t & other) noexcept -> void @@ -208,107 +311,387 @@ namespace sysstr friend auto operator!=(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> bool { return compare(lhs, rhs) != 0; } - #if SYS_STRING_USE_SPACESHIP_OPERATOR friend auto operator<=>(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> std::strong_ordering { return compare(lhs, rhs); } - #else - - friend auto operator<(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> bool - { return compare(lhs, rhs) < 0; } - friend auto operator<=(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> bool - { return compare(lhs, rhs) <= 0; } - friend auto operator>(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> bool - { return compare(lhs, rhs) > 0; } - friend auto operator>=(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> bool - { return compare(lhs, rhs) >= 0; } - #endif - - friend auto compare(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> compare_result + friend auto compare(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> std::strong_ordering { return sys_string_t::compare(lhs, rhs); } - friend auto compare_no_case(const sys_string_t lhs, const sys_string_t & rhs) noexcept -> compare_result + friend auto compare_no_case(const sys_string_t lhs, const sys_string_t & rhs) noexcept -> std::strong_ordering { return sys_string_t::compare_no_case(lhs, rhs); } - template - friend auto operator+(const StringOrChar1 lhs, const StringOrChar2 rhs) -> - std::enable_if_t::is_string_or_char && sys_string_t::is_string_or_char, - util::addition> - { return util::addition(std::move(lhs), std::move(rhs)); } + template Addend1, addable Addend2> + friend auto operator+(const Addend1 & lhs, const Addend2 & rhs) -> util::addition + { return util::addition(lhs, rhs); } auto to_lower() const -> sys_string_t; auto to_upper() const -> sys_string_t; - template + template Pred = isspace> auto trim(Pred pred = Pred()) const -> sys_string_t; - template + template Pred = isspace> auto ltrim(Pred pred = Pred()) const -> sys_string_t; - template + template Pred = isspace> auto rtrim(Pred pred = Pred()) const -> sys_string_t; template - auto split(OutIt dest, Search pred) const -> - std::enable_if_t, OutIt>; - template - auto split(OutIt dest, const StringOrChar & sep, size_t max_split = std::numeric_limits::max()) const -> - std::enable_if_t, OutIt>; + auto split(OutIt dest, Search search) const -> OutIt + requires(std::output_iterator && + std::is_invocable_v); + + template StringOrChar, class OutIt> + auto split(OutIt dest, const StringOrChar & sep, size_t max_split = std::numeric_limits::max()) const -> OutIt + requires(std::output_iterator); + + template EndIt> + requires(builder_appendable, Storage>) + auto join(It first, EndIt last) const -> sys_string_t; + + template + requires(builder_appendable, Storage>) + auto join(const Range & range) const -> sys_string_t + { return this->join(std::ranges::begin(range), std::ranges::end(range)); } - template - auto join(FwdIt first, FwdIt last) const -> sys_string_t; + template StringOrChar> + auto starts_with(const StringOrChar & prefix) const -> bool; - template - auto starts_with(const StringOrChar & prefix) const -> std::enable_if_t, bool>; - template - auto find_prefix(InIt first, InIt last) const -> InIt; + template EndIt> + requires(sys_string_or_char, Storage>) + auto find_prefix(It first, EndIt last) const -> It; - template - auto remove_prefix(const StringOrChar & prefix) const -> std::enable_if_t, sys_string_t>; + template + requires(sys_string_or_char, Storage>) + auto find_prefix(Range && range) const -> std::ranges::borrowed_iterator_t + { return this->find_prefix(std::ranges::begin(range), std::ranges::end(range)); } + + template StringOrChar> + auto remove_prefix(const StringOrChar & prefix) const -> sys_string_t; + + template StringOrChar> + auto ends_with(const StringOrChar & suffix) const -> bool; - template - auto ends_with(const StringOrChar & suffix) const -> std::enable_if_t, bool>; - template - auto find_suffix(InIt first, InIt last) const -> InIt; + template EndIt> + requires(sys_string_or_char, Storage>) + auto find_suffix(It first, EndIt last) const -> It; + + template + requires(sys_string_or_char, Storage>) + auto find_suffix(Range && range) const -> std::ranges::borrowed_iterator_t + { return this->find_suffix(std::ranges::begin(range), std::ranges::end(range)); } - template - auto remove_suffix(const StringOrChar & prefix) const -> std::enable_if_t, sys_string_t>; + template StringOrChar> + auto remove_suffix(const StringOrChar & prefix) const -> sys_string_t; - template - auto contains(const StringOrChar & inner) const -> std::enable_if_t, bool>; - template - auto find_contained(InIt first, InIt last) const -> InIt; + template StringOrChar> + auto contains(const StringOrChar & inner) const -> bool; + + template EndIt> + requires(sys_string_or_char, Storage>) + auto find_contained(It first, EndIt last) const -> It; + + template + requires(sys_string_or_char, Storage>) + auto find_contained(Range && range) const -> std::ranges::borrowed_iterator_t + { return this->find_contained(std::ranges::begin(range), std::ranges::end(range)); } - template + template StringOrChar1, sys_string_or_char StringOrChar2> auto replace(const StringOrChar1 & old, const StringOrChar2 & new_, - size_t max_count = std::numeric_limits::max()) const -> - std::enable_if_t && is_string_or_char, sys_string_t>; - - template - auto suffix_after_first(const StringOrChar & divider) const -> - std::enable_if_t, std::optional>; - template - auto prefix_before_first(const StringOrChar & divider) const -> - std::enable_if_t, std::optional>; - template - auto suffix_after_last(const StringOrChar & divider) const -> - std::enable_if_t, std::optional>; - template - auto prefix_before_last(const StringOrChar & divider) const -> - std::enable_if_t, std::optional>; - - template - auto partition_at_first(const StringOrChar & divider) const -> - std::enable_if_t, std::optional>>; - template - auto partition_at_last(const StringOrChar & divider) const -> - std::enable_if_t, std::optional>>; + size_t max_count = std::numeric_limits::max()) const -> sys_string_t; + + template StringOrChar> + auto suffix_after_first(const StringOrChar & divider) const -> std::optional; + template StringOrChar> + auto prefix_before_first(const StringOrChar & divider) const -> std::optional; + template StringOrChar> + auto suffix_after_last(const StringOrChar & divider) const -> std::optional; + template StringOrChar> + auto prefix_before_last(const StringOrChar & divider) const -> std::optional; + + template StringOrChar> + auto partition_at_first(const StringOrChar & divider) const -> std::optional>; + template StringOrChar> + auto partition_at_last(const StringOrChar & divider) const -> std::optional>; private: - static auto compare(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> compare_result; - static auto compare_no_case(const sys_string_t lhs, const sys_string_t & rhs) noexcept -> compare_result; + static auto compare(const sys_string_t & lhs, const sys_string_t & rhs) noexcept -> std::strong_ordering; + static auto compare_no_case(const sys_string_t lhs, const sys_string_t & rhs) noexcept -> std::strong_ordering; + + template Func> + auto print_with(Func func) const -> decltype(func(std::string_view{})); + + #if SYS_STRING_WCHAR_T_IS_UTF16 || SYS_STRING_WCHAR_T_IS_UTF32 + template Func> + auto wprint_with(Func func) const -> decltype(func(std::wstring_view{})); + #endif + }; + + namespace util + { + + template + class builder_utf_view : private util::utf_view + { + private: + using super = util::utf_view; + public: + using typename super::iterator; + using typename super::const_iterator; + using typename super::reverse_iterator; + using typename super::const_reverse_iterator; + + using typename super::value_type; + using typename super::reference; + using typename super::const_reference; + using typename super::pointer; + using typename super::const_pointer; + + public: + builder_utf_view(const sys_string_builder_t & src) noexcept(noexcept(super(src.chars()))) : + super(src.chars()) + {} + builder_utf_view(sys_string_builder_t && src) = delete; + + using super::begin; + using super::end; + using super::cbegin; + using super::cend; + using super::rbegin; + using super::rend; + using super::crbegin; + using super::crend; + + using super::reverse; + using super::each; + }; + } +} + +namespace std::ranges { + template + constexpr bool enable_view> = true; + + template + constexpr bool enable_borrowed_range> = true; +} + + +namespace sysstr +{ + + template + class sys_string_builder_t + { + private: + using impl_type = typename Storage::builder_impl; + static_assert(std::ranges::random_access_range); + public: + using size_type = typename impl_type::size_type; + using value_type = char32_t; + using storage_type = typename impl_type::value_type; + + template + using utf_view = util::builder_utf_view; + + using utf8_view = utf_view; + using utf16_view = utf_view; + using utf32_view = utf_view; + + using iterator = typename utf32_view::iterator; + using const_iterator = typename utf32_view::const_iterator; + using reverse_iterator = typename utf32_view::reverse_iterator; + using const_reverse_iterator = typename utf32_view::const_reverse_iterator; + + private: + using const_storage_iterator = decltype(std::ranges::begin(std::declval())); + using const_storage_sentinel = decltype(std::ranges::end(std::declval())); + using const_storage_reverse_iterator = decltype(std::ranges::rbegin(std::declval())); + using const_storage_reverse_sentinel = decltype(std::ranges::rend(std::declval())); + + public: + + void clear() noexcept + { m_impl.clear(); } + + bool empty() const noexcept + { return m_impl.empty(); } + + size_type storage_size() const noexcept + { return m_impl.size(); } + + void reserve_storage(size_type size) + { m_impl.reserve(size); } + + void resize_storage(size_type new_size) + { m_impl.resize(new_size); } + + iterator begin() const noexcept + { return iterator(std::ranges::begin(m_impl), std::ranges::end(m_impl)); } + std::default_sentinel_t end() const noexcept + { return std::default_sentinel; } + const_iterator cbegin() const noexcept + { return begin(); } + std::default_sentinel_t cend() const noexcept + { return end(); } + reverse_iterator rbegin() const noexcept + { return reverse_iterator(std::ranges::rbegin(m_impl), std::ranges::rend(m_impl)); } + std::default_sentinel_t rend() const noexcept + { return std::default_sentinel; } + const_reverse_iterator crbegin() const noexcept + { return rbegin(); } + std::default_sentinel_t crend() const noexcept + { return rend(); } + + reverse_iterator reverse(iterator it) const + { return reverse_iterator(it, std::ranges::rend(this->m_impl)); } + + iterator reverse(reverse_iterator it) const + { return iterator(it, std::ranges::end(this->m_impl)); } + + + void push_back(char32_t c) + { append_one(m_impl, c); } + void pop_back() noexcept + { + auto it = rbegin(); + m_impl.erase(it.storage_next().base(), std::ranges::end(m_impl)); + } + + iterator insert(iterator where, char32_t c) + { + auto res = insert_one(m_impl, where.storage_current(), c); + return iterator(res, std::ranges::end(m_impl)); + } + + iterator insert(std::default_sentinel_t, char32_t c) + { + auto res = insert_one(m_impl, std::ranges::end(m_impl), c); + return iterator(res, std::ranges::end(m_impl)); + } + + template + iterator insert(iterator where, const Char * str) + { + auto res = insert_many(m_impl, where.storage_current(), std::basic_string_view(str)); + return iterator(res, std::ranges::end(m_impl)); + } + + template + iterator insert(std::default_sentinel_t, const Char * str) + { + auto res = insert_many(m_impl, std::ranges::end(m_impl), std::basic_string_view(str)); + return iterator(res, std::ranges::end(m_impl)); + } + + template + iterator insert(iterator where, const Char * str, size_t len) + { + auto res = insert_many(m_impl, where.storage_current(), std::basic_string_view(str, len)); + return iterator(res, std::ranges::end(m_impl)); + } + + template + iterator insert(std::default_sentinel_t, const Char * str, size_t len) + { + auto res = insert_many(m_impl, std::ranges::end(m_impl), std::basic_string_view(str, len)); + return iterator(res, std::ranges::end(m_impl)); + } + + template + requires(has_utf_encoding>) + iterator insert(iterator where, const Range & range) + { + auto res = insert_many(m_impl, where.storage_current(), range); + return iterator(res, std::ranges::end(m_impl)); + } + + template + requires(has_utf_encoding>) + iterator insert(std::default_sentinel_t, const Range & range) + { + auto res = insert_many(m_impl, std::ranges::end(m_impl), range); + return iterator(res, std::ranges::end(m_impl)); + } + + iterator erase(iterator where) noexcept + { + auto res = m_impl.erase(where.storage_current(), where.storage_next()); + return iterator(res, std::ranges::end(m_impl)); + } + + iterator erase(iterator first, iterator last) noexcept + { + auto res = m_impl.erase(first.storage_current(), last.storage_current()); + return iterator(res, std::ranges::end(m_impl)); + } + + iterator erase(iterator first, std::default_sentinel_t) noexcept + { + auto res = m_impl.erase(first.storage_current(), std::ranges::end(m_impl)); + return iterator(res, std::ranges::end(m_impl)); + } + + sys_string_builder_t & append(char32_t c) + { append_one(m_impl, c); return *this; } + + template + sys_string_builder_t & append(const Char * str, size_t len) + { append_many(m_impl, std::basic_string_view(str, len)); return *this; } + + template + sys_string_builder_t & append(const Char * str) + { append_many(m_impl, std::basic_string_view(str)); return *this; } + + template + requires(has_utf_encoding>) + sys_string_builder_t & append(const Range & range) + { append_many(m_impl, range); return *this; } + + sys_string_builder_t & append(const sys_string_t & str) + { append_many(m_impl, typename sys_string_t::char_access(str)); return *this; } + + sys_string_t build() noexcept + { return util::build(m_impl); } + + const impl_type & chars() const + { return m_impl; } + impl_type & chars() + { return m_impl; } + + private: + static size_type limit_size(size_t len) + { + if (len > size_t(Storage::max_size)) + throw std::bad_alloc(); + return size_type(len); + } + static void append_one(impl_type & impl, char32_t c); + + static typename impl_type::iterator insert_one(impl_type & impl, typename impl_type::iterator where, char32_t c); + + template + requires(has_utf_encoding>) + static void append_many(impl_type & impl, const Range & range); + + template + requires(has_utf_encoding>) + static typename impl_type::iterator insert_many(impl_type & impl, typename impl_type::iterator where, const Range & range); + + + + private: + impl_type m_impl; }; + template + struct utf_view_traits> + { + static auto as_utf(const sys_string_builder_t & builder) -> typename sys_string_builder_t::template utf_view + { return typename sys_string_builder_t::template utf_view(builder); } + + static auto as_utf(sys_string_builder_t && builder) -> typename sys_string_builder_t::template utf_view = delete; + }; } @@ -321,6 +704,7 @@ namespace sysstr #include #include #include +#include #undef HEADER_SYS_STRING_H_INSIDE diff --git a/lib/inc/sys_string/utf_view.h b/lib/inc/sys_string/utf_view.h index 56890bf..3c226c1 100644 --- a/lib/inc/sys_string/utf_view.h +++ b/lib/inc/sys_string/utf_view.h @@ -9,63 +9,84 @@ #define HEADER_SYS_STRING_UTF_VIEW_H_INCLUDED #include -#include +#include #include +#include +#include namespace sysstr { - template - struct utf_access_traits; - - template> - class utf_view; - namespace util { - template + template EndIt> SYS_STRING_FORCE_INLINE - char32_t current_utf32(Cursor & cursor) + char32_t current_utf32(It & it, EndIt last) { - if constexpr (Cursor::is_forward) - return utf32_input>::read(cursor); + constexpr auto encoding = utf_encoding_of>; + if constexpr (Direction == iter_direction::forward) + return utf32_input::read(it, last); else - return utf32_input>::read_reversed(cursor); + return utf32_input::read_reversed(it, last); } - template - class utf_cursor + template EndIt, iter_direction Direction> + class utf_iterator { - static_assert(std::is_convertible_v, - "Underlying cursor must be random access to be wrappable in utf_cursor"); - - friend utf_cursor; + template EndX, iter_direction D> + friend class utf_iterator; public: - using size_type = typename Cursor::size_type; - using difference_type = typename Cursor::difference_type; + using difference_type = std::iter_difference_t; + using size_type = std::make_unsigned_t; using value_type = utf_char_of; using reference = const value_type; using pointer = void; using iterator_category = std::forward_iterator_tag; - using reverse_type = utf_cursor; - - static constexpr bool is_reverse = Cursor::is_reverse; - static constexpr bool is_forward = Cursor::is_forward; + static constexpr bool is_forward = (Direction == iter_direction::forward); + static constexpr bool is_reverse = !is_forward; public: - constexpr utf_cursor() noexcept(std::is_nothrow_constructible_v): - m_char_idx(0), - m_current_storage_size(0) - {} + constexpr utf_iterator() = default; SYS_STRING_FORCE_INLINE - constexpr utf_cursor(const Cursor & wrapped) noexcept(std::is_nothrow_copy_constructible_v): - m_next(wrapped) + constexpr utf_iterator(It first, EndIt last) noexcept(std::is_nothrow_move_constructible_v && + std::is_nothrow_move_constructible_v): + m_current(std::move(first)), + m_next(m_current), + m_last(std::move(last)) { this->load_next(); } - + + template OtherEndIt> + requires(Direction == iter_direction::forward && ranges::reverse_iterator_for) + utf_iterator(const utf_iterator & rev, + EndIt last): + m_current(rev.storage_next().base()), + m_next(rev.storage_current().base()), + m_last(std::move(last)), + m_encoder(rev.m_encoder), + m_char_idx(rev.m_char_idx) + { + if (m_current != m_last) + ++*this; + } + + template OtherEndIt> + requires(Direction == iter_direction::backward && ranges::reverse_iterator_for) + utf_iterator(const utf_iterator & fwd, + EndIt last): + m_current(fwd.storage_next()), + m_next(fwd.storage_current()), + m_last(std::move(last)), + m_encoder(fwd.m_encoder), + m_char_idx(fwd.m_char_idx) + { + if (m_current != m_last) + ++*this; + } + constexpr value_type operator*() const noexcept { return this->m_encoder.begin()[this->m_char_idx]; } @@ -73,7 +94,7 @@ namespace sysstr { return this->m_char_idx != this->m_encoder.size(); } SYS_STRING_FORCE_INLINE - constexpr utf_cursor & operator++() + constexpr utf_iterator & operator++() { if constexpr (is_forward) { @@ -89,319 +110,447 @@ namespace sysstr } } + this->m_current = this->m_next; this->load_next(); return *this; } - constexpr utf_cursor operator++(int) + constexpr utf_iterator operator++(int) { - utf_cursor ret = *this; + utf_iterator ret = *this; ++(*this); return ret; } - friend constexpr bool operator==(const utf_cursor & lhs, const utf_cursor & rhs) - { return lhs.m_current_storage_size == rhs.m_current_storage_size && lhs.m_char_idx == rhs.m_char_idx && lhs.m_next == rhs.m_next; } - friend constexpr bool operator!=(const utf_cursor & lhs, const utf_cursor & rhs) + friend constexpr bool operator==(const utf_iterator & lhs, const utf_iterator & rhs) + { return lhs.m_char_idx == rhs.m_char_idx && lhs.m_current == rhs.m_current; } + friend constexpr bool operator!=(const utf_iterator & lhs, const utf_iterator & rhs) { return !(lhs == rhs); } - friend constexpr bool operator==(const utf_cursor & lhs, std::nullptr_t) + friend constexpr bool operator==(const utf_iterator & lhs, std::default_sentinel_t) { return !lhs; } - friend constexpr bool operator==(std::nullptr_t, const utf_cursor & rhs) + friend constexpr bool operator==(std::default_sentinel_t, const utf_iterator & rhs) { return !rhs; } - friend constexpr bool operator!=(const utf_cursor & lhs, std::nullptr_t rhs) + friend constexpr bool operator!=(const utf_iterator & lhs, std::default_sentinel_t rhs) { return !(lhs == rhs); } - friend constexpr bool operator!=(std::nullptr_t lhs, const utf_cursor & rhs) + friend constexpr bool operator!=(std::default_sentinel_t lhs, const utf_iterator & rhs) { return !(lhs == rhs); } - reverse_type reverse() const - { - auto reverse_next = this->m_next.reverse(); - reverse_next += this->m_current_storage_size; - reverse_type ret(std::move(reverse_next), this->m_encoder, this->m_char_idx, this->m_current_storage_size); - ++ret; - return ret; - } - - utf_cursor char_start() const - { return this->storage_cursor(); } - size_type storage_pos() const - { - if constexpr (is_forward) - return this->m_next.position() - this->m_current_storage_size; - else - return this->m_next.position() + this->m_current_storage_size; - } - - size_type storage_size() const noexcept - { return this->m_current_storage_size; } - - const Cursor storage_cursor() const - { return this->m_next - this->m_current_storage_size; } + const It storage_current() const + { return this->m_current; } + const It storage_next() const + { return this->m_next; } + EndIt storage_last() const + { return this->m_last; } - friend auto operator<<(std::ostream & str, const utf_cursor & c) -> std::ostream & - { - str << c.storage_cursor() << ", char " << c.m_char_idx << " in {"; - for (uint8_t i = 0; i < c.m_encoder.size(); ++i) - { - if (i) - str << ','; - str << unsigned(c.m_encoder.begin()[i]); - } - str << "}"; - return str; - } private: - utf_cursor(Cursor && next, - const utf_codepoint_encoder & encoder, - uint8_t char_idx, - uint8_t storage_size) noexcept(std::is_nothrow_move_constructible_v): - m_next(std::move(next)), - m_encoder(encoder), - m_char_idx(char_idx), - m_current_storage_size(storage_size) - {} - SYS_STRING_FORCE_INLINE constexpr void load_next() { - if (this->m_next) + if (this->m_next != this->m_last) { - auto original_pos = this->m_next.position(); - auto c = current_utf32(this->m_next); + auto c = current_utf32(this->m_next, this->m_last); this->m_encoder.put(c); if constexpr (is_forward) { this->m_char_idx = 0; - this->m_current_storage_size = uint8_t(this->m_next.position() - original_pos); } else { this->m_char_idx = uint8_t(this->m_encoder.size() - 1); - this->m_current_storage_size = uint8_t(original_pos - this->m_next.position()); } } else { this->m_encoder.clear(); this->m_char_idx = 0; - this->m_current_storage_size = 0; } } private: - Cursor m_next; + It m_current{}; + It m_next{}; + [[no_unique_address]] EndIt m_last{}; utf_codepoint_encoder m_encoder; - uint8_t m_char_idx; - uint8_t m_current_storage_size; + uint8_t m_char_idx = 0; }; - template - class utf_cursor + template EndIt, iter_direction Direction> + class utf_iterator { - static_assert(std::is_convertible_v, - "Underlying cursor must be random access to be wrappable in utf_cursor"); public: - using size_type = typename Cursor::size_type; - using difference_type = typename Cursor::difference_type; + using difference_type = std::iter_difference_t; + using size_type = std::make_unsigned_t; using value_type = char32_t; using reference = const char32_t; using pointer = void; using iterator_category = std::forward_iterator_tag; - using reverse_type = utf_cursor; - - static constexpr bool is_reverse = Cursor::is_reverse; - static constexpr bool is_forward = Cursor::is_forward; + static constexpr bool is_forward = (Direction == iter_direction::forward); + static constexpr bool is_reverse = !is_forward; public: - constexpr utf_cursor() = default; + constexpr utf_iterator() = default; SYS_STRING_FORCE_INLINE - constexpr utf_cursor(const Cursor & wrapped) noexcept(std::is_nothrow_copy_constructible_v) : - m_current(wrapped) + constexpr utf_iterator(It first, EndIt last) noexcept(std::is_nothrow_move_constructible_v && + std::is_nothrow_move_constructible_v) : + m_current(std::move(first)), + m_next(m_current), + m_last(std::move(last)) { this->load_next(); } + + template OtherEndIt> + requires(Direction == iter_direction::forward && ranges::reverse_iterator_for) + utf_iterator(const utf_iterator & rev, + EndIt last): + utf_iterator(rev.storage_current().base(), last) + {} + + template OtherEndIt> + requires(Direction == iter_direction::backward && ranges::reverse_iterator_for) + utf_iterator(const utf_iterator & fwd, + EndIt last): + utf_iterator(It(fwd.storage_current()), last) + {} constexpr value_type operator*() const noexcept { return this->m_value; } - explicit constexpr operator bool() const - { return bool(this->m_current); } - SYS_STRING_FORCE_INLINE - constexpr utf_cursor & operator++() + constexpr utf_iterator & operator++() { - this->m_current += this->m_current_storage_size; - this->m_current_storage_size = 0; + this->m_current = this->m_next; this->load_next(); return *this; } SYS_STRING_FORCE_INLINE - constexpr utf_cursor operator++(int) + constexpr utf_iterator operator++(int) { - utf_cursor ret = *this; + utf_iterator ret = *this; ++(*this); return ret; } - friend constexpr bool operator==(const utf_cursor & lhs, const utf_cursor & rhs) + friend constexpr bool operator==(const utf_iterator & lhs, const utf_iterator & rhs) { return lhs.m_current == rhs.m_current; } - friend constexpr bool operator!=(const utf_cursor & lhs, const utf_cursor & rhs) - { return !(lhs == rhs); } - - friend constexpr bool operator==(const utf_cursor & lhs, std::nullptr_t) - { return !lhs; } - friend constexpr bool operator==(std::nullptr_t, const utf_cursor & rhs) - { return !rhs; } - friend constexpr bool operator!=(const utf_cursor & lhs, std::nullptr_t rhs) - { return !(lhs == rhs); } - friend constexpr bool operator!=(std::nullptr_t lhs, const utf_cursor & rhs) - { return !(lhs == rhs); } + friend constexpr bool operator!=(const utf_iterator & lhs, const utf_iterator & rhs) + { return lhs.m_current != rhs.m_current; } - reverse_type reverse() const - { return this->m_current.reverse(); } + friend constexpr bool operator==(const utf_iterator & lhs, std::default_sentinel_t) + { return lhs.m_current == lhs.m_last; } + friend constexpr bool operator==(std::default_sentinel_t, const utf_iterator & rhs) + { return rhs.m_current == rhs.m_last; } + friend constexpr bool operator!=(const utf_iterator & lhs, std::default_sentinel_t) + { return lhs.m_current != lhs.m_last; } + friend constexpr bool operator!=(std::default_sentinel_t, const utf_iterator & rhs) + { return rhs.m_current != rhs.m_last; } - const utf_cursor & char_start() const noexcept - { return *this; } - - size_type storage_pos() const - { return this->m_current.position(); } - - size_type storage_size() const noexcept - { return this->m_current_storage_size; } - - const Cursor storage_cursor() const + It storage_current() const { return this->m_current; } + It storage_next() const + { return this->m_next; } + EndIt storage_last() const + { return this->m_last; } - friend auto operator<<(std::ostream & str, const utf_cursor & c) -> std::ostream & - { - str << c.m_current << ", value " << uint32_t(c.m_value); - return str; - } private: SYS_STRING_FORCE_INLINE void load_next() { - if (Cursor next = this->m_current) - { - this->m_value = current_utf32(next); - if constexpr (is_forward) - this->m_current_storage_size = uint8_t(next.position() - this->m_current.position()); - else - this->m_current_storage_size = uint8_t(this->m_current.position() - next.position()); - } + if (this->m_next != this->m_last) + this->m_value = current_utf32(this->m_next, this->m_last); } private: - Cursor m_current; + It m_current{}; + It m_next{}; + [[no_unique_address]] EndIt m_last{}; value_type m_value = 0; - uint8_t m_current_storage_size = 0; }; - } + + enum utf_view_type + { + byref, + byval + }; - template - struct utf_access_traits - { - using char_access = std::add_lvalue_reference_t; - - static decltype(auto) adapt(std::add_lvalue_reference_t src) noexcept + template + class utf_view { - return src; - } - }; + private: + using range = std::remove_cvref_t; + using stored_type = std::conditional_t; + + SYS_STRING_FORCE_INLINE static auto range_ref(const range & src) -> const range & + { return src; } + SYS_STRING_FORCE_INLINE static auto range_ref(const range * src) -> const range & + { return *src; } + + static constexpr bool is_reversible = ranges::reverse_traversable_range>; + static constexpr auto source_encoding = utf_encoding_of>; + + using access_iterator = decltype(std::ranges::begin(range_ref(std::declval()))); + using access_sentinel = decltype(std::ranges::end(range_ref(std::declval()))); + using access_reverse_iterator = std::conditional_t()))), + void>; + using access_reverse_sentinel = std::conditional_t()))), + void>; + + public: + using iterator = utf_iterator; + using const_iterator = iterator; + using reverse_iterator = std::conditional_t, + void>; + using const_reverse_iterator = reverse_iterator; + + using value_type = typename iterator::value_type; + using reference = typename iterator::reference; + using const_reference = reference; + using pointer = typename iterator::pointer; + using const_pointer = pointer; + + static const bool borrowed = (ViewType == byref) || + (ViewType == byval && std::ranges::borrowed_range); + + public: + utf_view(const Range & src) noexcept requires(ViewType == byref) : + m_src(&src) + {} + + utf_view(Range && src) noexcept requires(ViewType == byref) = delete; + + utf_view(const Range & src) noexcept(noexcept(stored_type(src))) + requires(ViewType == byval && std::is_copy_constructible_v) : + m_src(src) + {} + utf_view(Range && src) noexcept(noexcept(stored_type(std::move(src)))) + requires(ViewType == byval && std::is_move_constructible_v) : + m_src(std::move(src)) + {} + + template + utf_view(Args && ...args) noexcept(noexcept(stored_type(std::forward(args)...))) + requires(ViewType == byval && std::is_constructible_v) : + m_src(std::forward(args)...) + {} - template - struct utf_access_traits + + SYS_STRING_FORCE_INLINE iterator begin() const + { return iterator(std::ranges::begin(range_ref(m_src)), std::ranges::end(range_ref(m_src))); } + SYS_STRING_FORCE_INLINE std::default_sentinel_t end() const + { return std::default_sentinel; } + SYS_STRING_FORCE_INLINE const_iterator cbegin() const + { return begin(); } + SYS_STRING_FORCE_INLINE std::default_sentinel_t cend() const + { return end(); } + SYS_STRING_FORCE_INLINE reverse_iterator rbegin() const requires(is_reversible) + { return reverse_iterator(std::ranges::rbegin(range_ref(m_src)), std::ranges::rend(range_ref(m_src))); } + SYS_STRING_FORCE_INLINE std::default_sentinel_t rend() const requires(is_reversible) + { return std::default_sentinel; } + SYS_STRING_FORCE_INLINE const_reverse_iterator crbegin() const requires(is_reversible) + { return rbegin(); } + SYS_STRING_FORCE_INLINE std::default_sentinel_t crend() const requires(is_reversible) + { return rend(); } + + reverse_iterator reverse(iterator it) const requires(is_reversible) + { return reverse_iterator(it, std::ranges::rend(range_ref(m_src))); } + + iterator reverse(reverse_iterator it) const requires(is_reversible) + { return iterator(it, std::ranges::end(range_ref(m_src))); } + + template + decltype(auto) each(Func func) const + { return utf_converter::for_each_converted(range_ref(), func); } + + private: + stored_type m_src; + }; + } + + template + using utf_ref_view = util::utf_view; + template + using utf8_ref_view = utf_ref_view; + template + using utf16_ref_view = utf_ref_view; + template + using utf32_ref_view = utf_ref_view; + + template + using utf_owning_view = util::utf_view; + template + using utf8_owning_view = utf_owning_view; + template + using utf16_owning_view = utf_owning_view; + template + using utf32_owning_view = utf_owning_view; + + template struct utf_view_traits; + + + template + struct as_utf_func + #if __cpp_lib_ranges >= 202202L + : + #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION < 190000 + //libc++ lies about __cpp_lib_ranges + public std::__range_adaptor_closure> + #else + public std::ranges::range_adaptor_closure> + #endif + #endif { - using char_access = std::basic_string_view; - - static constexpr std::basic_string_view adapt(Char (& src) [N]) noexcept - { return src; } + template + requires( + requires(X && x) { utf_view_traits>::as_utf(std::forward(x)); } + ) + [[nodiscard]] constexpr auto operator()(X && x) const + noexcept(noexcept(utf_view_traits>::as_utf(std::forward(x)))) + -> decltype(utf_view_traits>::as_utf(std::forward(x))) + { return utf_view_traits>::as_utf(std::forward(x)); } + + template + requires( + !requires(Range && range) { utf_view_traits>::as_utf(std::forward(range)); } && + std::ranges::view> + ) + [[nodiscard]] constexpr auto operator()(Range && range) const + noexcept(noexcept(util::utf_view, util::byval>(std::forward(range)))) + -> decltype(util::utf_view, util::byval>(std::forward(range))) + { return util::utf_view, util::byval>(std::forward(range)); } + + template + requires( + !requires(Range && range) { utf_view_traits>::as_utf(std::forward(range)); } && + !std::ranges::view> && + requires(Range && range) { util::utf_view, util::byref>(std::forward(range)); } + ) + [[nodiscard]] constexpr auto operator()(Range && range) const + noexcept(noexcept(util::utf_view, util::byref>(std::forward(range)))) + -> decltype(util::utf_view, util::byref>(std::forward(range))) + { return util::utf_view, util::byref>(std::forward(range)); } + + + template + requires( + !requires(Range && range) { utf_view_traits>::as_utf(std::forward(range)); } && + !std::ranges::view> && + !requires(Range && range) { util::utf_view, util::byref>(std::forward(range)); } + ) + [[nodiscard]] constexpr auto operator()(Range && range) const + noexcept(noexcept(util::utf_view, util::byval>(std::forward(range)))) + -> decltype(util::utf_view, util::byval>(std::forward(range))) + { return util::utf_view, util::byval>(std::forward(range)); } + }; - template - class utf_view + template + inline constexpr auto as_utf = as_utf_func{}; + inline constexpr auto as_utf8 = as_utf_func{}; + inline constexpr auto as_utf16 = as_utf_func{}; + inline constexpr auto as_utf32 = as_utf_func{}; +} + +namespace std::ranges { + template + constexpr bool enable_view> = true; + + template + constexpr bool enable_borrowed_range> = sysstr::util::utf_view::borrowed; +} + +namespace sysstr +{ + template Out> + class utf_output_decoder { private: - using char_access = typename Traits::char_access; - - template - static auto detect_cursor_type(std::add_pointer_t access = nullptr) noexcept + struct sink { - using util::cursor_begin; - return cursor_begin(*access); - } - using access_cursor_type = decltype(detect_cursor_type()); - using access_reverse_cursor_type = decltype(detect_cursor_type()); + Out dest; + + void operator()(char32_t c) + { + *dest = c; + ++dest; + } + }; + + struct proxy + { + utf_output_decoder * decoder; + + template + requires(utf_encoding_of == InputEnc) + SYS_STRING_FORCE_INLINE + auto operator=(Char c) const -> const proxy & + { + decoder->put(c); + return *this; + } + }; public: - using iterator = util::utf_cursor; - using const_iterator = iterator; - using reverse_iterator = util::utf_cursor; - using const_reverse_iterator = reverse_iterator; - - using value_type = typename iterator::value_type; - using reference = typename iterator::reference; - using const_reference = reference; - using pointer = typename iterator::pointer; - using const_pointer = pointer; - - using cursor_type = util::utf_cursor; - using reverse_cursor_type = util::utf_cursor; - - using cursor_direction = util::cursor_direction; - - static constexpr auto forward = cursor_direction::forward; - static constexpr auto backward = cursor_direction::backward; + class iterator + { + public: + using difference_type = ptrdiff_t; + using iterator_category = std::output_iterator_tag; + public: + iterator(utf_output_decoder & decoder): + m_decoder(&decoder) + {} + auto operator*() -> proxy + { return proxy{m_decoder}; } + auto operator++() -> iterator & + { return *this; } + auto operator++(int) -> iterator + { return *this; } + + + friend constexpr bool operator==(const iterator &, std::default_sentinel_t) + { return false; } + friend constexpr bool operator==(std::default_sentinel_t, const iterator &) + { return false; } + friend constexpr bool operator!=(const iterator &, std::default_sentinel_t) + { return true; } + friend constexpr bool operator!=(std::default_sentinel_t, const iterator &) + { return true; } + private: + utf_output_decoder * m_decoder; + }; public: - utf_view(const Container & src) noexcept(noexcept(char_access(Traits::adapt(src)))) : m_access(Traits::adapt(src)) + utf_output_decoder(Out dest): + m_impl(sink{dest}) {} - SYS_STRING_FORCE_INLINE iterator begin() const - { return this->cursor_begin(); } - SYS_STRING_FORCE_INLINE iterator end() const - { return this->cursor_end(); } - SYS_STRING_FORCE_INLINE const_iterator cbegin() const - { return begin(); } - SYS_STRING_FORCE_INLINE const_iterator cend() const - { return end(); } - SYS_STRING_FORCE_INLINE reverse_iterator rbegin() const - { return this->cursor_begin(); } - SYS_STRING_FORCE_INLINE reverse_iterator rend() const - { return this->cursor_end(); } - SYS_STRING_FORCE_INLINE const_reverse_iterator crbegin() const - { return rbegin(); } - SYS_STRING_FORCE_INLINE const_reverse_iterator crend() const - { return rend(); } - - template + + auto begin() -> iterator + { return iterator(*this); } + auto end() -> std::default_sentinel_t + { return std::default_sentinel; } + + template + requires(utf_encoding_of == InputEnc) SYS_STRING_FORCE_INLINE - decltype(auto) cursor_begin() const - { - using util::cursor_begin, util::utf_cursor; - return utf_cursor())>(cursor_begin(this->m_access)); - } - - template + void put(Char c) + { m_impl.put(c); } + SYS_STRING_FORCE_INLINE - decltype(auto) cursor_end() const - { - using util::cursor_end, util::utf_cursor; - return utf_cursor())>(cursor_end(this->m_access)); - } - - template - decltype(auto) each(Func func) const - { - using util::cursor_begin; - constexpr auto source_encoding = utf_encoding_of; - return utf_converter::for_each_converted(cursor_begin(this->m_access), func); - } - + void flush() + { m_impl.flush(); } private: - char_access m_access; + utf32_decoder m_impl; }; + + template Out> + auto make_utf_output_decoder(Out dest) + { return utf_output_decoder(dest); } } + #endif diff --git a/lib/res/CaseFolding.txt b/lib/res/CaseFolding.txt index 033788b..1b7a9c1 100644 --- a/lib/res/CaseFolding.txt +++ b/lib/res/CaseFolding.txt @@ -1,11 +1,11 @@ -# CaseFolding-13.0.0.txt -# Date: 2019-09-08, 23:30:59 GMT -# © 2019 Unicode®, Inc. +# CaseFolding-16.0.0.txt +# Date: 2024-04-30, 21:48:11 GMT +# © 2024 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use and license, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # Case Folding Properties # @@ -603,6 +603,7 @@ 1C86; C; 044A; # CYRILLIC SMALL LETTER TALL HARD SIGN 1C87; C; 0463; # CYRILLIC SMALL LETTER TALL YAT 1C88; C; A64B; # CYRILLIC SMALL LETTER UNBLENDED UK +1C89; C; 1C8A; # CYRILLIC CAPITAL LETTER TJE 1C90; C; 10D0; # GEORGIAN MTAVRULI CAPITAL LETTER AN 1C91; C; 10D1; # GEORGIAN MTAVRULI CAPITAL LETTER BAN 1C92; C; 10D2; # GEORGIAN MTAVRULI CAPITAL LETTER GAN @@ -929,6 +930,7 @@ 1FCC; S; 1FC3; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD2; F; 03B9 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA 1FD3; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD3; S; 0390; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6; F; 03B9 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI 1FD7; F; 03B9 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI 1FD8; C; 1FD0; # GREEK CAPITAL LETTER IOTA WITH VRACHY @@ -937,6 +939,7 @@ 1FDB; C; 1F77; # GREEK CAPITAL LETTER IOTA WITH OXIA 1FE2; F; 03C5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA 1FE3; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA +1FE3; S; 03B0; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA 1FE4; F; 03C1 0313; # GREEK SMALL LETTER RHO WITH PSILI 1FE6; F; 03C5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI 1FE7; F; 03C5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI @@ -1050,6 +1053,7 @@ 2C2C; C; 2C5C; # GLAGOLITIC CAPITAL LETTER SHTAPIC 2C2D; C; 2C5D; # GLAGOLITIC CAPITAL LETTER TROKUTASTI A 2C2E; C; 2C5E; # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE +2C2F; C; 2C5F; # GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI 2C60; C; 2C61; # LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C62; C; 026B; # LATIN CAPITAL LETTER L WITH MIDDLE TILDE 2C63; C; 1D7D; # LATIN CAPITAL LETTER P WITH STROKE @@ -1230,12 +1234,20 @@ A7B8; C; A7B9; # LATIN CAPITAL LETTER U WITH STROKE A7BA; C; A7BB; # LATIN CAPITAL LETTER GLOTTAL A A7BC; C; A7BD; # LATIN CAPITAL LETTER GLOTTAL I A7BE; C; A7BF; # LATIN CAPITAL LETTER GLOTTAL U +A7C0; C; A7C1; # LATIN CAPITAL LETTER OLD POLISH O A7C2; C; A7C3; # LATIN CAPITAL LETTER ANGLICANA W A7C4; C; A794; # LATIN CAPITAL LETTER C WITH PALATAL HOOK A7C5; C; 0282; # LATIN CAPITAL LETTER S WITH HOOK A7C6; C; 1D8E; # LATIN CAPITAL LETTER Z WITH PALATAL HOOK A7C7; C; A7C8; # LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY A7C9; C; A7CA; # LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY +A7CB; C; 0264; # LATIN CAPITAL LETTER RAMS HORN +A7CC; C; A7CD; # LATIN CAPITAL LETTER S WITH DIAGONAL STROKE +A7D0; C; A7D1; # LATIN CAPITAL LETTER CLOSED INSULAR G +A7D6; C; A7D7; # LATIN CAPITAL LETTER MIDDLE SCOTS S +A7D8; C; A7D9; # LATIN CAPITAL LETTER SIGMOID S +A7DA; C; A7DB; # LATIN CAPITAL LETTER LAMBDA +A7DC; C; 019B; # LATIN CAPITAL LETTER LAMBDA WITH STROKE A7F5; C; A7F6; # LATIN CAPITAL LETTER REVERSED HALF H AB70; C; 13A0; # CHEROKEE SMALL LETTER A AB71; C; 13A1; # CHEROKEE SMALL LETTER E @@ -1323,6 +1335,7 @@ FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL FB03; F; 0066 0066 0069; # LATIN SMALL LIGATURE FFI FB04; F; 0066 0066 006C; # LATIN SMALL LIGATURE FFL FB05; F; 0073 0074; # LATIN SMALL LIGATURE LONG S T +FB05; S; FB06; # LATIN SMALL LIGATURE LONG S T FB06; F; 0073 0074; # LATIN SMALL LIGATURE ST FB13; F; 0574 0576; # ARMENIAN SMALL LIGATURE MEN NOW FB14; F; 0574 0565; # ARMENIAN SMALL LIGATURE MEN ECH @@ -1431,6 +1444,41 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z 104D1; C; 104F9; # OSAGE CAPITAL LETTER GHA 104D2; C; 104FA; # OSAGE CAPITAL LETTER ZA 104D3; C; 104FB; # OSAGE CAPITAL LETTER ZHA +10570; C; 10597; # VITHKUQI CAPITAL LETTER A +10571; C; 10598; # VITHKUQI CAPITAL LETTER BBE +10572; C; 10599; # VITHKUQI CAPITAL LETTER BE +10573; C; 1059A; # VITHKUQI CAPITAL LETTER CE +10574; C; 1059B; # VITHKUQI CAPITAL LETTER CHE +10575; C; 1059C; # VITHKUQI CAPITAL LETTER DE +10576; C; 1059D; # VITHKUQI CAPITAL LETTER DHE +10577; C; 1059E; # VITHKUQI CAPITAL LETTER EI +10578; C; 1059F; # VITHKUQI CAPITAL LETTER E +10579; C; 105A0; # VITHKUQI CAPITAL LETTER FE +1057A; C; 105A1; # VITHKUQI CAPITAL LETTER GA +1057C; C; 105A3; # VITHKUQI CAPITAL LETTER HA +1057D; C; 105A4; # VITHKUQI CAPITAL LETTER HHA +1057E; C; 105A5; # VITHKUQI CAPITAL LETTER I +1057F; C; 105A6; # VITHKUQI CAPITAL LETTER IJE +10580; C; 105A7; # VITHKUQI CAPITAL LETTER JE +10581; C; 105A8; # VITHKUQI CAPITAL LETTER KA +10582; C; 105A9; # VITHKUQI CAPITAL LETTER LA +10583; C; 105AA; # VITHKUQI CAPITAL LETTER LLA +10584; C; 105AB; # VITHKUQI CAPITAL LETTER ME +10585; C; 105AC; # VITHKUQI CAPITAL LETTER NE +10586; C; 105AD; # VITHKUQI CAPITAL LETTER NJE +10587; C; 105AE; # VITHKUQI CAPITAL LETTER O +10588; C; 105AF; # VITHKUQI CAPITAL LETTER PE +10589; C; 105B0; # VITHKUQI CAPITAL LETTER QA +1058A; C; 105B1; # VITHKUQI CAPITAL LETTER RE +1058C; C; 105B3; # VITHKUQI CAPITAL LETTER SE +1058D; C; 105B4; # VITHKUQI CAPITAL LETTER SHE +1058E; C; 105B5; # VITHKUQI CAPITAL LETTER TE +1058F; C; 105B6; # VITHKUQI CAPITAL LETTER THE +10590; C; 105B7; # VITHKUQI CAPITAL LETTER U +10591; C; 105B8; # VITHKUQI CAPITAL LETTER VE +10592; C; 105B9; # VITHKUQI CAPITAL LETTER XE +10594; C; 105BB; # VITHKUQI CAPITAL LETTER Y +10595; C; 105BC; # VITHKUQI CAPITAL LETTER ZE 10C80; C; 10CC0; # OLD HUNGARIAN CAPITAL LETTER A 10C81; C; 10CC1; # OLD HUNGARIAN CAPITAL LETTER AA 10C82; C; 10CC2; # OLD HUNGARIAN CAPITAL LETTER EB @@ -1482,6 +1530,28 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z 10CB0; C; 10CF0; # OLD HUNGARIAN CAPITAL LETTER EZS 10CB1; C; 10CF1; # OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN 10CB2; C; 10CF2; # OLD HUNGARIAN CAPITAL LETTER US +10D50; C; 10D70; # GARAY CAPITAL LETTER A +10D51; C; 10D71; # GARAY CAPITAL LETTER CA +10D52; C; 10D72; # GARAY CAPITAL LETTER MA +10D53; C; 10D73; # GARAY CAPITAL LETTER KA +10D54; C; 10D74; # GARAY CAPITAL LETTER BA +10D55; C; 10D75; # GARAY CAPITAL LETTER JA +10D56; C; 10D76; # GARAY CAPITAL LETTER SA +10D57; C; 10D77; # GARAY CAPITAL LETTER WA +10D58; C; 10D78; # GARAY CAPITAL LETTER LA +10D59; C; 10D79; # GARAY CAPITAL LETTER GA +10D5A; C; 10D7A; # GARAY CAPITAL LETTER DA +10D5B; C; 10D7B; # GARAY CAPITAL LETTER XA +10D5C; C; 10D7C; # GARAY CAPITAL LETTER YA +10D5D; C; 10D7D; # GARAY CAPITAL LETTER TA +10D5E; C; 10D7E; # GARAY CAPITAL LETTER RA +10D5F; C; 10D7F; # GARAY CAPITAL LETTER NYA +10D60; C; 10D80; # GARAY CAPITAL LETTER FA +10D61; C; 10D81; # GARAY CAPITAL LETTER NA +10D62; C; 10D82; # GARAY CAPITAL LETTER PA +10D63; C; 10D83; # GARAY CAPITAL LETTER HA +10D64; C; 10D84; # GARAY CAPITAL LETTER OLD KA +10D65; C; 10D85; # GARAY CAPITAL LETTER OLD NA 118A0; C; 118C0; # WARANG CITI CAPITAL LETTER NGAA 118A1; C; 118C1; # WARANG CITI CAPITAL LETTER A 118A2; C; 118C2; # WARANG CITI CAPITAL LETTER WI diff --git a/lib/res/DerivedCoreProperties.txt b/lib/res/DerivedCoreProperties.txt index bc97e21..1075638 100644 --- a/lib/res/DerivedCoreProperties.txt +++ b/lib/res/DerivedCoreProperties.txt @@ -1,11 +1,11 @@ -# DerivedCoreProperties-13.0.0.txt -# Date: 2020-01-22, 00:07:19 GMT -# © 2020 Unicode®, Inc. +# DerivedCoreProperties-16.0.0.txt +# Date: 2024-05-31, 18:09:32 GMT +# © 2024 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use and license, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # ================================================ @@ -177,6 +177,7 @@ FF5C ; Math # Sm FULLWIDTH VERTICAL LINE FF5E ; Math # Sm FULLWIDTH TILDE FFE2 ; Math # Sm FULLWIDTH NOT SIGN FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW +10D8E..10D8F ; Math # Sm [2] GARAY PLUS SIGN..GARAY MINUS SIGN 1D400..1D454 ; Math # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; Math # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; Math # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D @@ -253,7 +254,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 1EEAB..1EEBB ; Math # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1EEF0..1EEF1 ; Math # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL -# Total code points: 2310 +# Total code points: 2312 # ================================================ @@ -280,6 +281,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 02EC ; Alphabetic # Lm MODIFIER LETTER VOICING 02EE ; Alphabetic # Lm MODIFIER LETTER DOUBLE APOSTROPHE 0345 ; Alphabetic # Mn COMBINING GREEK YPOGEGRAMMENI +0363..036F ; Alphabetic # Mn [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X 0370..0373 ; Alphabetic # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI 0374 ; Alphabetic # Lm GREEK NUMERAL SIGN 0376..0377 ; Alphabetic # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA @@ -341,8 +343,11 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 0829..082C ; Alphabetic # Mn [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN 0840..0858 ; Alphabetic # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 0860..086A ; Alphabetic # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA -08A0..08B4 ; Alphabetic # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -08B6..08C7 ; Alphabetic # Lo [18] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE +0870..0887 ; Alphabetic # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT +0889..088E ; Alphabetic # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL +0897 ; Alphabetic # Mn ARABIC PEPET +08A0..08C8 ; Alphabetic # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF +08C9 ; Alphabetic # Lm ARABIC SMALL FARSI YEH 08D4..08DF ; Alphabetic # Mn [12] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH WORD WAQFA 08E3..08E9 ; Alphabetic # Mn [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN 08F0..0902 ; Alphabetic # Mn [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA @@ -460,6 +465,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 0BD7 ; Alphabetic # Mc TAMIL AU LENGTH MARK 0C00 ; Alphabetic # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C01..0C03 ; Alphabetic # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA +0C04 ; Alphabetic # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE 0C05..0C0C ; Alphabetic # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; Alphabetic # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; Alphabetic # Lo [23] TELUGU LETTER O..TELUGU LETTER NA @@ -471,6 +477,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 0C4A..0C4C ; Alphabetic # Mn [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU 0C55..0C56 ; Alphabetic # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C58..0C5A ; Alphabetic # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA +0C5D ; Alphabetic # Lo TELUGU LETTER NAKAARA POLLU 0C60..0C61 ; Alphabetic # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; Alphabetic # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C80 ; Alphabetic # Lo KANNADA SIGN SPACING CANDRABINDU @@ -490,10 +497,11 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 0CCA..0CCB ; Alphabetic # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CCC ; Alphabetic # Mn KANNADA VOWEL SIGN AU 0CD5..0CD6 ; Alphabetic # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0CDE ; Alphabetic # Lo KANNADA LETTER FA +0CDD..0CDE ; Alphabetic # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA 0CE0..0CE1 ; Alphabetic # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE2..0CE3 ; Alphabetic # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CF1..0CF2 ; Alphabetic # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA +0CF3 ; Alphabetic # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D00..0D01 ; Alphabetic # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; Alphabetic # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D04..0D0C ; Alphabetic # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L @@ -549,7 +557,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 0F49..0F6C ; Alphabetic # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA 0F71..0F7E ; Alphabetic # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO 0F7F ; Alphabetic # Mc TIBETAN SIGN RNAM BCAD -0F80..0F81 ; Alphabetic # Mn [2] TIBETAN VOWEL SIGN REVERSED I..TIBETAN VOWEL SIGN REVERSED II +0F80..0F83 ; Alphabetic # Mn [4] TIBETAN VOWEL SIGN REVERSED I..TIBETAN SIGN SNA LDAN 0F88..0F8C ; Alphabetic # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN 0F8D..0F97 ; Alphabetic # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; Alphabetic # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA @@ -614,10 +622,9 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 16A0..16EA ; Alphabetic # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EE..16F0 ; Alphabetic # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; Alphabetic # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC -1700..170C ; Alphabetic # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711 ; Alphabetic # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA +1700..1711 ; Alphabetic # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA 1712..1713 ; Alphabetic # Mn [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U -1720..1731 ; Alphabetic # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA +171F..1731 ; Alphabetic # Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA 1732..1733 ; Alphabetic # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U 1740..1751 ; Alphabetic # Lo [18] BUHID LETTER A..BUHID LETTER HA 1752..1753 ; Alphabetic # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U @@ -670,6 +677,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 1A73..1A74 ; Alphabetic # Mn [2] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN MAI KANG 1AA7 ; Alphabetic # Lm TAI THAM SIGN MAI YAMOK 1ABF..1AC0 ; Alphabetic # Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW +1ACC..1ACE ; Alphabetic # Mn [3] COMBINING LATIN SMALL LETTER INSULAR G..COMBINING LATIN SMALL LETTER INSULAR T 1B00..1B03 ; Alphabetic # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B04 ; Alphabetic # Mc BALINESE SIGN BISAH 1B05..1B33 ; Alphabetic # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA @@ -680,7 +688,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 1B3D..1B41 ; Alphabetic # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B42 ; Alphabetic # Mn BALINESE VOWEL SIGN PEPET 1B43 ; Alphabetic # Mc BALINESE VOWEL SIGN PEPET TEDUNG -1B45..1B4B ; Alphabetic # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK +1B45..1B4C ; Alphabetic # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA 1B80..1B81 ; Alphabetic # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR 1B82 ; Alphabetic # Mc SUNDANESE SIGN PANGWISAD 1B83..1BA0 ; Alphabetic # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA @@ -705,7 +713,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 1C4D..1C4F ; Alphabetic # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA 1C5A..1C77 ; Alphabetic # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; Alphabetic # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -1C80..1C88 ; Alphabetic # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C80..1C8A ; Alphabetic # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE 1C90..1CBA ; Alphabetic # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; Alphabetic # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1CE9..1CEC ; Alphabetic # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL @@ -718,7 +726,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 1D78 ; Alphabetic # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; Alphabetic # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; Alphabetic # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA -1DE7..1DF4 ; Alphabetic # Mn [14] COMBINING LATIN SMALL LETTER ALPHA..COMBINING LATIN SMALL LETTER U WITH DIAERESIS +1DD3..1DF4 ; Alphabetic # Mn [34] COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE..COMBINING LATIN SMALL LETTER U WITH DIAERESIS 1E00..1F15 ; Alphabetic # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; Alphabetic # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; Alphabetic # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA @@ -760,9 +768,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 2183..2184 ; Alphabetic # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; Alphabetic # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND 24B6..24E9 ; Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z -2C00..2C2E ; Alphabetic # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E ; Alphabetic # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C60..2C7B ; Alphabetic # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E +2C00..2C7B ; Alphabetic # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; Alphabetic # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; Alphabetic # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; Alphabetic # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA @@ -802,8 +808,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 31A0..31BF ; Alphabetic # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH 31F0..31FF ; Alphabetic # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DBF ; Alphabetic # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF -4E00..9FFC ; Alphabetic # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC -A000..A014 ; Alphabetic # Lo [21] YI SYLLABLE IT..YI SYLLABLE E +4E00..A014 ; Alphabetic # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E A015 ; Alphabetic # Lm YI SYLLABLE WU A016..A48C ; Alphabetic # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; Alphabetic # Lo [40] LISU LETTER BA..LISU LETTER OE @@ -828,8 +833,11 @@ A771..A787 ; Alphabetic # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER A788 ; Alphabetic # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; Alphabetic # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; Alphabetic # Lo LATIN LETTER SINOLOGICAL DOT -A790..A7BF ; Alphabetic # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U -A7C2..A7CA ; Alphabetic # L& [9] LATIN CAPITAL LETTER ANGLICANA W..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A790..A7CD ; Alphabetic # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE +A7D0..A7D1 ; Alphabetic # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D3 ; Alphabetic # L& LATIN SMALL LETTER DOUBLE THORN +A7D5..A7DC ; Alphabetic # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE +A7F2..A7F4 ; Alphabetic # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F5..A7F6 ; Alphabetic # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H A7F7 ; Alphabetic # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; Alphabetic # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE @@ -985,9 +993,21 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 104D8..104FB ; Alphabetic # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; Alphabetic # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; Alphabetic # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW +10570..1057A ; Alphabetic # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; Alphabetic # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; Alphabetic # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; Alphabetic # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1 ; Alphabetic # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; Alphabetic # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; Alphabetic # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; Alphabetic # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE +105C0..105F3 ; Alphabetic # Lo [52] TODHRI LETTER A..TODHRI LETTER OO 10600..10736 ; Alphabetic # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; Alphabetic # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; Alphabetic # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 +10780..10785 ; Alphabetic # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; Alphabetic # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; Alphabetic # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10800..10805 ; Alphabetic # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; Alphabetic # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; Alphabetic # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO @@ -1022,12 +1042,22 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 10CC0..10CF2 ; Alphabetic # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 10D00..10D23 ; Alphabetic # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA 10D24..10D27 ; Alphabetic # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI +10D4A..10D4D ; Alphabetic # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE +10D4E ; Alphabetic # Lm GARAY VOWEL LENGTH MARK +10D4F ; Alphabetic # Lo GARAY SUKUN +10D50..10D65 ; Alphabetic # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA +10D69 ; Alphabetic # Mn GARAY VOWEL SIGN E +10D6F ; Alphabetic # Lm GARAY REDUPLICATION MARK +10D70..10D85 ; Alphabetic # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 10E80..10EA9 ; Alphabetic # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET 10EAB..10EAC ; Alphabetic # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK 10EB0..10EB1 ; Alphabetic # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10EC2..10EC4 ; Alphabetic # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW +10EFC ; Alphabetic # Mn ARABIC COMBINING ALEF OVERLAY 10F00..10F1C ; Alphabetic # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F27 ; Alphabetic # Lo OLD SOGDIAN LIGATURE AYIN-DALETH 10F30..10F45 ; Alphabetic # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN +10F70..10F81 ; Alphabetic # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH 10FB0..10FC4 ; Alphabetic # Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW 10FE0..10FF6 ; Alphabetic # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH 11000 ; Alphabetic # Mc BRAHMI SIGN CANDRABINDU @@ -1035,11 +1065,16 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 11002 ; Alphabetic # Mc BRAHMI SIGN VISARGA 11003..11037 ; Alphabetic # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11038..11045 ; Alphabetic # Mn [14] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN AU +11071..11072 ; Alphabetic # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O +11073..11074 ; Alphabetic # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O +11075 ; Alphabetic # Lo BRAHMI LETTER OLD TAMIL LLA +11080..11081 ; Alphabetic # Mn [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA 11082 ; Alphabetic # Mc KAITHI SIGN VISARGA 11083..110AF ; Alphabetic # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110B0..110B2 ; Alphabetic # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II 110B3..110B6 ; Alphabetic # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B7..110B8 ; Alphabetic # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU +110C2 ; Alphabetic # Mn KAITHI VOWEL SIGN VOCALIC R 110D0..110E8 ; Alphabetic # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 11100..11102 ; Alphabetic # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA 11103..11126 ; Alphabetic # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA @@ -1070,6 +1105,8 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 11234 ; Alphabetic # Mn KHOJKI SIGN ANUSVARA 11237 ; Alphabetic # Mn KHOJKI SIGN SHADDA 1123E ; Alphabetic # Mn KHOJKI SIGN SUKUN +1123F..11240 ; Alphabetic # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I +11241 ; Alphabetic # Mn KHOJKI VOWEL SIGN VOCALIC R 11280..11286 ; Alphabetic # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; Alphabetic # Lo MULTANI LETTER GHA 1128A..1128D ; Alphabetic # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -1097,6 +1134,19 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 11357 ; Alphabetic # Mc GRANTHA AU LENGTH MARK 1135D..11361 ; Alphabetic # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11362..11363 ; Alphabetic # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL +11380..11389 ; Alphabetic # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL +1138B ; Alphabetic # Lo TULU-TIGALARI LETTER EE +1138E ; Alphabetic # Lo TULU-TIGALARI LETTER AI +11390..113B5 ; Alphabetic # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA +113B7 ; Alphabetic # Lo TULU-TIGALARI SIGN AVAGRAHA +113B8..113BA ; Alphabetic # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II +113BB..113C0 ; Alphabetic # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL +113C2 ; Alphabetic # Mc TULU-TIGALARI VOWEL SIGN EE +113C5 ; Alphabetic # Mc TULU-TIGALARI VOWEL SIGN AI +113C7..113CA ; Alphabetic # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA +113CC..113CD ; Alphabetic # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA +113D1 ; Alphabetic # Lo TULU-TIGALARI REPHA +113D3 ; Alphabetic # Lo TULU-TIGALARI SIGN PLUTA 11400..11434 ; Alphabetic # Lo [53] NEWA LETTER A..NEWA LETTER HA 11435..11437 ; Alphabetic # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II 11438..1143F ; Alphabetic # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI @@ -1139,11 +1189,14 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 116B0..116B5 ; Alphabetic # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B8 ; Alphabetic # Lo TAKRI LETTER ARCHAIC KHA 11700..1171A ; Alphabetic # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA -1171D..1171F ; Alphabetic # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +1171D ; Alphabetic # Mn AHOM CONSONANT SIGN MEDIAL LA +1171E ; Alphabetic # Mc AHOM CONSONANT SIGN MEDIAL RA +1171F ; Alphabetic # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA 11720..11721 ; Alphabetic # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA 11722..11725 ; Alphabetic # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11726 ; Alphabetic # Mc AHOM VOWEL SIGN E 11727..1172A ; Alphabetic # Mn [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM +11740..11746 ; Alphabetic # Lo [7] AHOM LETTER CA..AHOM LETTER LLA 11800..1182B ; Alphabetic # Lo [44] DOGRA LETTER A..DOGRA LETTER RRA 1182C..1182E ; Alphabetic # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II 1182F..11837 ; Alphabetic # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA @@ -1185,7 +1238,8 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 11A8A..11A96 ; Alphabetic # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA 11A97 ; Alphabetic # Mc SOYOMBO SIGN VISARGA 11A9D ; Alphabetic # Lo SOYOMBO MARK PLUTA -11AC0..11AF8 ; Alphabetic # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL +11AB0..11AF8 ; Alphabetic # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL +11BC0..11BE0 ; Alphabetic # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO 11C00..11C08 ; Alphabetic # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; Alphabetic # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C2F ; Alphabetic # Mc BHAIKSUKI VOWEL SIGN AA @@ -1223,19 +1277,39 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 11EE0..11EF2 ; Alphabetic # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA 11EF3..11EF4 ; Alphabetic # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6 ; Alphabetic # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +11F00..11F01 ; Alphabetic # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F02 ; Alphabetic # Lo KAWI SIGN REPHA +11F03 ; Alphabetic # Mc KAWI SIGN VISARGA +11F04..11F10 ; Alphabetic # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33 ; Alphabetic # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA +11F34..11F35 ; Alphabetic # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F36..11F3A ; Alphabetic # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F3E..11F3F ; Alphabetic # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI +11F40 ; Alphabetic # Mn KAWI VOWEL SIGN EU 11FB0 ; Alphabetic # Lo LISU LETTER YHA 12000..12399 ; Alphabetic # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; Alphabetic # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; Alphabetic # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -13000..1342E ; Alphabetic # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +12F90..12FF0 ; Alphabetic # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 +13000..1342F ; Alphabetic # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13441..13446 ; Alphabetic # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN +13460..143FA ; Alphabetic # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA 14400..14646 ; Alphabetic # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 +16100..1611D ; Alphabetic # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA +1611E..16129 ; Alphabetic # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK +1612A..1612C ; Alphabetic # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA +1612D..1612E ; Alphabetic # Mn [2] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA CONSONANT SIGN MEDIAL RA 16800..16A38 ; Alphabetic # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; Alphabetic # Lo [31] MRO LETTER TA..MRO LETTER TEK +16A70..16ABE ; Alphabetic # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA 16AD0..16AED ; Alphabetic # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16B00..16B2F ; Alphabetic # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU 16B40..16B43 ; Alphabetic # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16B63..16B77 ; Alphabetic # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; Alphabetic # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ +16D40..16D42 ; Alphabetic # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA +16D43..16D6A ; Alphabetic # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU +16D6B..16D6C ; Alphabetic # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT 16E40..16E7F ; Alphabetic # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y 16F00..16F4A ; Alphabetic # Lo [75] MIAO LETTER PA..MIAO LETTER RTE 16F4F ; Alphabetic # Mn MIAO SIGN CONSONANT MODIFIER BAR @@ -1248,9 +1322,14 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 16FF0..16FF1 ; Alphabetic # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY 17000..187F7 ; Alphabetic # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 18800..18CD5 ; Alphabetic # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5 -18D00..18D08 ; Alphabetic # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 -1B000..1B11E ; Alphabetic # Lo [287] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER N-MU-MO-2 +18CFF..18D08 ; Alphabetic # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08 +1AFF0..1AFF3 ; Alphabetic # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB ; Alphabetic # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE ; Alphabetic # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 +1B000..1B122 ; Alphabetic # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU +1B132 ; Alphabetic # Lo HIRAGANA LETTER SMALL KO 1B150..1B152 ; Alphabetic # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155 ; Alphabetic # Lo KATAKANA LETTER SMALL KO 1B164..1B167 ; Alphabetic # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; Alphabetic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; Alphabetic # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -1288,15 +1367,30 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 1D78A..1D7A8 ; Alphabetic # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7AA..1D7C2 ; Alphabetic # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7CB ; Alphabetic # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA +1DF00..1DF09 ; Alphabetic # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0A ; Alphabetic # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK +1DF0B..1DF1E ; Alphabetic # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; Alphabetic # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK 1E000..1E006 ; Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; Alphabetic # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; Alphabetic # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; Alphabetic # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E030..1E06D ; Alphabetic # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F ; Alphabetic # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E100..1E12C ; Alphabetic # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E137..1E13D ; Alphabetic # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E14E ; Alphabetic # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ +1E290..1E2AD ; Alphabetic # Lo [30] TOTO LETTER PA..TOTO LETTER A 1E2C0..1E2EB ; Alphabetic # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH +1E4D0..1E4EA ; Alphabetic # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB ; Alphabetic # Lm NAG MUNDARI SIGN OJOD +1E5D0..1E5ED ; Alphabetic # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG +1E5F0 ; Alphabetic # Lo OL ONAL SIGN HODDOND +1E7E0..1E7E6 ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO +1E7E8..1E7EB ; Alphabetic # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE +1E7ED..1E7EE ; Alphabetic # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE +1E7F0..1E7FE ; Alphabetic # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE 1E800..1E8C4 ; Alphabetic # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E900..1E943 ; Alphabetic # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1E947 ; Alphabetic # Mn ADLAM HAMZA @@ -1337,15 +1431,17 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 1F130..1F149 ; Alphabetic # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z 1F150..1F169 ; Alphabetic # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Alphabetic # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z -20000..2A6DD ; Alphabetic # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD -2A700..2B734 ; Alphabetic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 +20000..2A6DF ; Alphabetic # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF +2A700..2B739 ; Alphabetic # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; Alphabetic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; Alphabetic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; Alphabetic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 +2EBF0..2EE5D ; Alphabetic # Lo [622] CJK UNIFIED IDEOGRAPH-2EBF0..CJK UNIFIED IDEOGRAPH-2EE5D 2F800..2FA1D ; Alphabetic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; Alphabetic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; Alphabetic # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF -# Total code points: 132875 +# Total code points: 142759 # ================================================ @@ -1630,9 +1726,11 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 052F ; Lowercase # L& CYRILLIC SMALL LETTER EL WITH DESCENDER 0560..0588 ; Lowercase # L& [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE 10D0..10FA ; Lowercase # L& [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN +10FC ; Lowercase # Lm MODIFIER LETTER GEORGIAN NAR 10FD..10FF ; Lowercase # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN 13F8..13FD ; Lowercase # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Lowercase # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C8A ; Lowercase # L& CYRILLIC SMALL LETTER TJE 1D00..1D2B ; Lowercase # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; Lowercase # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; Lowercase # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G @@ -1798,7 +1896,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 2170..217F ; Lowercase # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND 2184 ; Lowercase # L& LATIN SMALL LETTER REVERSED C 24D0..24E9 ; Lowercase # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z -2C30..2C5E ; Lowercase # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE +2C30..2C5F ; Lowercase # L& [48] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI 2C61 ; Lowercase # L& LATIN SMALL LETTER L WITH DOUBLE BAR 2C65..2C66 ; Lowercase # L& [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE 2C68 ; Lowercase # L& LATIN SMALL LETTER H WITH DESCENDER @@ -1970,22 +2068,41 @@ A7B9 ; Lowercase # L& LATIN SMALL LETTER U WITH STROKE A7BB ; Lowercase # L& LATIN SMALL LETTER GLOTTAL A A7BD ; Lowercase # L& LATIN SMALL LETTER GLOTTAL I A7BF ; Lowercase # L& LATIN SMALL LETTER GLOTTAL U +A7C1 ; Lowercase # L& LATIN SMALL LETTER OLD POLISH O A7C3 ; Lowercase # L& LATIN SMALL LETTER ANGLICANA W A7C8 ; Lowercase # L& LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY A7CA ; Lowercase # L& LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A7CD ; Lowercase # L& LATIN SMALL LETTER S WITH DIAGONAL STROKE +A7D1 ; Lowercase # L& LATIN SMALL LETTER CLOSED INSULAR G +A7D3 ; Lowercase # L& LATIN SMALL LETTER DOUBLE THORN +A7D5 ; Lowercase # L& LATIN SMALL LETTER DOUBLE WYNN +A7D7 ; Lowercase # L& LATIN SMALL LETTER MIDDLE SCOTS S +A7D9 ; Lowercase # L& LATIN SMALL LETTER SIGMOID S +A7DB ; Lowercase # L& LATIN SMALL LETTER LAMBDA +A7F2..A7F4 ; Lowercase # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F6 ; Lowercase # L& LATIN SMALL LETTER REVERSED HALF H A7F8..A7F9 ; Lowercase # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Lowercase # L& LATIN LETTER SMALL CAPITAL TURNED M AB30..AB5A ; Lowercase # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Lowercase # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB68 ; Lowercase # L& [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE +AB69 ; Lowercase # Lm MODIFIER LETTER SMALL TURNED W AB70..ABBF ; Lowercase # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Lowercase # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Lowercase # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z 10428..1044F ; Lowercase # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW 104D8..104FB ; Lowercase # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA +10597..105A1 ; Lowercase # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; Lowercase # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; Lowercase # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; Lowercase # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE +10780 ; Lowercase # Lm MODIFIER LETTER SMALL CAPITAL AA +10783..10785 ; Lowercase # Lm [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; Lowercase # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; Lowercase # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10CC0..10CF2 ; Lowercase # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10D70..10D85 ; Lowercase # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 118C0..118DF ; Lowercase # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 16E60..16E7F ; Lowercase # L& [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y 1D41A..1D433 ; Lowercase # L& [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z @@ -2016,9 +2133,13 @@ FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 1D7AA..1D7C2 ; Lowercase # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7C9 ; Lowercase # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL 1D7CB ; Lowercase # L& MATHEMATICAL BOLD SMALL DIGAMMA +1DF00..1DF09 ; Lowercase # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0B..1DF1E ; Lowercase # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; Lowercase # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK +1E030..1E06D ; Lowercase # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE 1E922..1E943 ; Lowercase # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA -# Total code points: 2344 +# Total code points: 2569 # ================================================ @@ -2301,6 +2422,7 @@ FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 10C7 ; Uppercase # L& GEORGIAN CAPITAL LETTER YN 10CD ; Uppercase # L& GEORGIAN CAPITAL LETTER AEN 13A0..13F5 ; Uppercase # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV +1C89 ; Uppercase # L& CYRILLIC CAPITAL LETTER TJE 1C90..1CBA ; Uppercase # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; Uppercase # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1E00 ; Uppercase # L& LATIN CAPITAL LETTER A WITH RING BELOW @@ -2458,7 +2580,7 @@ FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 2160..216F ; Uppercase # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND 2183 ; Uppercase # L& ROMAN NUMERAL REVERSED ONE HUNDRED 24B6..24CF ; Uppercase # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z -2C00..2C2E ; Uppercase # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE +2C00..2C2F ; Uppercase # L& [48] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI 2C60 ; Uppercase # L& LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C62..2C64 ; Uppercase # L& [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL 2C67 ; Uppercase # L& LATIN CAPITAL LETTER H WITH DESCENDER @@ -2623,14 +2745,26 @@ A7B8 ; Uppercase # L& LATIN CAPITAL LETTER U WITH STROKE A7BA ; Uppercase # L& LATIN CAPITAL LETTER GLOTTAL A A7BC ; Uppercase # L& LATIN CAPITAL LETTER GLOTTAL I A7BE ; Uppercase # L& LATIN CAPITAL LETTER GLOTTAL U +A7C0 ; Uppercase # L& LATIN CAPITAL LETTER OLD POLISH O A7C2 ; Uppercase # L& LATIN CAPITAL LETTER ANGLICANA W A7C4..A7C7 ; Uppercase # L& [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY A7C9 ; Uppercase # L& LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY +A7CB..A7CC ; Uppercase # L& [2] LATIN CAPITAL LETTER RAMS HORN..LATIN CAPITAL LETTER S WITH DIAGONAL STROKE +A7D0 ; Uppercase # L& LATIN CAPITAL LETTER CLOSED INSULAR G +A7D6 ; Uppercase # L& LATIN CAPITAL LETTER MIDDLE SCOTS S +A7D8 ; Uppercase # L& LATIN CAPITAL LETTER SIGMOID S +A7DA ; Uppercase # L& LATIN CAPITAL LETTER LAMBDA +A7DC ; Uppercase # L& LATIN CAPITAL LETTER LAMBDA WITH STROKE A7F5 ; Uppercase # L& LATIN CAPITAL LETTER REVERSED HALF H FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z 10400..10427 ; Uppercase # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW 104B0..104D3 ; Uppercase # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA +10570..1057A ; Uppercase # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; Uppercase # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; Uppercase # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; Uppercase # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE 10C80..10CB2 ; Uppercase # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US +10D50..10D65 ; Uppercase # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA 118A0..118BF ; Uppercase # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO 16E40..16E5F ; Uppercase # L& [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y 1D400..1D419 ; Uppercase # L& [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z @@ -2669,7 +2803,7 @@ FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH 1F150..1F169 ; Uppercase # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Uppercase # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z -# Total code points: 1911 +# Total code points: 1978 # ================================================ @@ -2710,10 +2844,11 @@ FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH 10C7 ; Cased # L& GEORGIAN CAPITAL LETTER YN 10CD ; Cased # L& GEORGIAN CAPITAL LETTER AEN 10D0..10FA ; Cased # L& [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN +10FC ; Cased # Lm MODIFIER LETTER GEORGIAN NAR 10FD..10FF ; Cased # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN 13A0..13F5 ; Cased # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; Cased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV -1C80..1C88 ; Cased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C80..1C8A ; Cased # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE 1C90..1CBA ; Cased # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; Cased # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1D00..1D2B ; Cased # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL @@ -2761,9 +2896,7 @@ FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH 2160..217F ; Cased # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND 2183..2184 ; Cased # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 24B6..24E9 ; Cased # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z -2C00..2C2E ; Cased # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E ; Cased # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C60..2C7B ; Cased # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E +2C00..2C7B ; Cased # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; Cased # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; Cased # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; Cased # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA @@ -2778,14 +2911,18 @@ A722..A76F ; Cased # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN A770 ; Cased # Lm MODIFIER LETTER US A771..A787 ; Cased # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A78B..A78E ; Cased # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT -A790..A7BF ; Cased # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U -A7C2..A7CA ; Cased # L& [9] LATIN CAPITAL LETTER ANGLICANA W..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A790..A7CD ; Cased # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE +A7D0..A7D1 ; Cased # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D3 ; Cased # L& LATIN SMALL LETTER DOUBLE THORN +A7D5..A7DC ; Cased # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE +A7F2..A7F4 ; Cased # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F5..A7F6 ; Cased # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H A7F8..A7F9 ; Cased # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Cased # L& LATIN LETTER SMALL CAPITAL TURNED M AB30..AB5A ; Cased # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Cased # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB68 ; Cased # L& [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE +AB69 ; Cased # Lm MODIFIER LETTER SMALL TURNED W AB70..ABBF ; Cased # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Cased # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Cased # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH @@ -2794,8 +2931,22 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 10400..1044F ; Cased # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW 104B0..104D3 ; Cased # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; Cased # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA +10570..1057A ; Cased # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; Cased # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; Cased # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; Cased # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1 ; Cased # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; Cased # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; Cased # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; Cased # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE +10780 ; Cased # Lm MODIFIER LETTER SMALL CAPITAL AA +10783..10785 ; Cased # Lm [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; Cased # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; Cased # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10C80..10CB2 ; Cased # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; Cased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10D50..10D65 ; Cased # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA +10D70..10D85 ; Cased # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 118A0..118DF ; Cased # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 16E40..16E7F ; Cased # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y 1D400..1D454 ; Cased # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G @@ -2828,12 +2979,16 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 1D78A..1D7A8 ; Cased # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7AA..1D7C2 ; Cased # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7CB ; Cased # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA +1DF00..1DF09 ; Cased # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0B..1DF1E ; Cased # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; Cased # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK +1E030..1E06D ; Cased # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE 1E900..1E943 ; Cased # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1F130..1F149 ; Cased # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z 1F150..1F169 ; Cased # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Cased # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z -# Total code points: 4286 +# Total code points: 4578 # ================================================ @@ -2908,7 +3063,11 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 0828 ; Case_Ignorable # Lm SAMARITAN MODIFIER LETTER I 0829..082D ; Case_Ignorable # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA 0859..085B ; Case_Ignorable # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK -08D3..08E1 ; Case_Ignorable # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA +0888 ; Case_Ignorable # Sk ARABIC RAISED ROUND DOT +0890..0891 ; Case_Ignorable # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE +0897..089F ; Case_Ignorable # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA +08C9 ; Case_Ignorable # Lm ARABIC SMALL FARSI YEH +08CA..08E1 ; Case_Ignorable # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA 08E2 ; Case_Ignorable # Cf ARABIC DISPUTED END OF AYAH 08E3..0902 ; Case_Ignorable # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 093A ; Case_Ignorable # Mn DEVANAGARI VOWEL SIGN OE @@ -2951,6 +3110,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 0BCD ; Case_Ignorable # Mn TAMIL SIGN VIRAMA 0C00 ; Case_Ignorable # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C04 ; Case_Ignorable # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE +0C3C ; Case_Ignorable # Mn TELUGU SIGN NUKTA 0C3E..0C40 ; Case_Ignorable # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C46..0C48 ; Case_Ignorable # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D ; Case_Ignorable # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA @@ -2978,7 +3138,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 0EB1 ; Case_Ignorable # Mn LAO VOWEL SIGN MAI KAN 0EB4..0EBC ; Case_Ignorable # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO 0EC6 ; Case_Ignorable # Lm LAO KO LA -0EC8..0ECD ; Case_Ignorable # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0EC8..0ECE ; Case_Ignorable # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN 0F18..0F19 ; Case_Ignorable # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS 0F35 ; Case_Ignorable # Mn TIBETAN MARK NGAS BZUNG NYI ZLA 0F37 ; Case_Ignorable # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS @@ -3003,7 +3163,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 10FC ; Case_Ignorable # Lm MODIFIER LETTER GEORGIAN NAR 135D..135F ; Case_Ignorable # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK 1712..1714 ; Case_Ignorable # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA -1732..1734 ; Case_Ignorable # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD +1732..1733 ; Case_Ignorable # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U 1752..1753 ; Case_Ignorable # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U 1772..1773 ; Case_Ignorable # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U 17B4..17B5 ; Case_Ignorable # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA @@ -3014,6 +3174,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 17DD ; Case_Ignorable # Mn KHMER SIGN ATTHACAN 180B..180D ; Case_Ignorable # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 180E ; Case_Ignorable # Cf MONGOLIAN VOWEL SEPARATOR +180F ; Case_Ignorable # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR 1843 ; Case_Ignorable # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN 1885..1886 ; Case_Ignorable # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA 18A9 ; Case_Ignorable # Mn MONGOLIAN LETTER ALI GALI DAGALGA @@ -3033,7 +3194,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 1AA7 ; Case_Ignorable # Lm TAI THAM SIGN MAI YAMOK 1AB0..1ABD ; Case_Ignorable # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW 1ABE ; Case_Ignorable # Me COMBINING PARENTHESES OVERLAY -1ABF..1AC0 ; Case_Ignorable # Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW +1ABF..1ACE ; Case_Ignorable # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T 1B00..1B03 ; Case_Ignorable # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B34 ; Case_Ignorable # Mn BALINESE SIGN REREKAN 1B36..1B3A ; Case_Ignorable # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA @@ -3060,8 +3221,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 1D2C..1D6A ; Case_Ignorable # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D78 ; Case_Ignorable # Lm MODIFIER LETTER CYRILLIC EN 1D9B..1DBF ; Case_Ignorable # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA -1DC0..1DF9 ; Case_Ignorable # Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW -1DFB..1DFF ; Case_Ignorable # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW +1DC0..1DFF ; Case_Ignorable # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 1FBD ; Case_Ignorable # Sk GREEK KORONIS 1FBF..1FC1 ; Case_Ignorable # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI 1FCD..1FCF ; Case_Ignorable # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI @@ -3114,6 +3274,7 @@ A720..A721 ; Case_Ignorable # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE.. A770 ; Case_Ignorable # Lm MODIFIER LETTER US A788 ; Case_Ignorable # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A789..A78A ; Case_Ignorable # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN +A7F2..A7F4 ; Case_Ignorable # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F8..A7F9 ; Case_Ignorable # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A802 ; Case_Ignorable # Mn SYLOTI NAGRI SIGN DVISVARA A806 ; Case_Ignorable # Mn SYLOTI NAGRI SIGN HASANTA @@ -3156,7 +3317,7 @@ ABE5 ; Case_Ignorable # Mn MEETEI MAYEK VOWEL SIGN ANAP ABE8 ; Case_Ignorable # Mn MEETEI MAYEK VOWEL SIGN UNAP ABED ; Case_Ignorable # Mn MEETEI MAYEK APUN IYEK FB1E ; Case_Ignorable # Mn HEBREW POINT JUDEO-SPANISH VARIKA -FBB2..FBC1 ; Case_Ignorable # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW +FBB2..FBC2 ; Case_Ignorable # Sk [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE FE00..FE0F ; Case_Ignorable # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FE13 ; Case_Ignorable # Po PRESENTATION FORM FOR VERTICAL COLON FE20..FE2F ; Case_Ignorable # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF @@ -3175,6 +3336,9 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 101FD ; Case_Ignorable # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 102E0 ; Case_Ignorable # Mn COPTIC EPACT THOUSANDS MARK 10376..1037A ; Case_Ignorable # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII +10780..10785 ; Case_Ignorable # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; Case_Ignorable # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; Case_Ignorable # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10A01..10A03 ; Case_Ignorable # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R 10A05..10A06 ; Case_Ignorable # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O 10A0C..10A0F ; Case_Ignorable # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA @@ -3182,14 +3346,22 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 10A3F ; Case_Ignorable # Mn KHAROSHTHI VIRAMA 10AE5..10AE6 ; Case_Ignorable # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW 10D24..10D27 ; Case_Ignorable # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI +10D4E ; Case_Ignorable # Lm GARAY VOWEL LENGTH MARK +10D69..10D6D ; Case_Ignorable # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK +10D6F ; Case_Ignorable # Lm GARAY REDUPLICATION MARK 10EAB..10EAC ; Case_Ignorable # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK +10EFC..10EFF ; Case_Ignorable # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA 10F46..10F50 ; Case_Ignorable # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW +10F82..10F85 ; Case_Ignorable # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW 11001 ; Case_Ignorable # Mn BRAHMI SIGN ANUSVARA 11038..11046 ; Case_Ignorable # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA +11070 ; Case_Ignorable # Mn BRAHMI SIGN OLD TAMIL VIRAMA +11073..11074 ; Case_Ignorable # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O 1107F..11081 ; Case_Ignorable # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA 110B3..110B6 ; Case_Ignorable # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B9..110BA ; Case_Ignorable # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA 110BD ; Case_Ignorable # Cf KAITHI NUMBER SIGN +110C2 ; Case_Ignorable # Mn KAITHI VOWEL SIGN VOCALIC R 110CD ; Case_Ignorable # Cf KAITHI NUMBER SIGN ABOVE 11100..11102 ; Case_Ignorable # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA 11127..1112B ; Case_Ignorable # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU @@ -3203,6 +3375,7 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 11234 ; Case_Ignorable # Mn KHOJKI SIGN ANUSVARA 11236..11237 ; Case_Ignorable # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; Case_Ignorable # Mn KHOJKI SIGN SUKUN +11241 ; Case_Ignorable # Mn KHOJKI VOWEL SIGN VOCALIC R 112DF ; Case_Ignorable # Mn KHUDAWADI SIGN ANUSVARA 112E3..112EA ; Case_Ignorable # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA 11300..11301 ; Case_Ignorable # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU @@ -3210,6 +3383,11 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 11340 ; Case_Ignorable # Mn GRANTHA VOWEL SIGN II 11366..1136C ; Case_Ignorable # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; Case_Ignorable # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA +113BB..113C0 ; Case_Ignorable # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL +113CE ; Case_Ignorable # Mn TULU-TIGALARI SIGN VIRAMA +113D0 ; Case_Ignorable # Mn TULU-TIGALARI CONJOINER +113D2 ; Case_Ignorable # Mn TULU-TIGALARI GEMINATION MARK +113E1..113E2 ; Case_Ignorable # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA 11438..1143F ; Case_Ignorable # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI 11442..11444 ; Case_Ignorable # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA 11446 ; Case_Ignorable # Mn NEWA SIGN NUKTA @@ -3229,7 +3407,8 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 116AD ; Case_Ignorable # Mn TAKRI VOWEL SIGN AA 116B0..116B5 ; Case_Ignorable # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B7 ; Case_Ignorable # Mn TAKRI SIGN NUKTA -1171D..1171F ; Case_Ignorable # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +1171D ; Case_Ignorable # Mn AHOM CONSONANT SIGN MEDIAL LA +1171F ; Case_Ignorable # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA 11722..11725 ; Case_Ignorable # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11727..1172B ; Case_Ignorable # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 1182F..11837 ; Case_Ignorable # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA @@ -3264,18 +3443,34 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 11D95 ; Case_Ignorable # Mn GUNJALA GONDI SIGN ANUSVARA 11D97 ; Case_Ignorable # Mn GUNJALA GONDI VIRAMA 11EF3..11EF4 ; Case_Ignorable # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U -13430..13438 ; Case_Ignorable # Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT +11F00..11F01 ; Case_Ignorable # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F36..11F3A ; Case_Ignorable # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F40 ; Case_Ignorable # Mn KAWI VOWEL SIGN EU +11F42 ; Case_Ignorable # Mn KAWI CONJOINER +11F5A ; Case_Ignorable # Mn KAWI SIGN NUKTA +13430..1343F ; Case_Ignorable # Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE +13440 ; Case_Ignorable # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY +13447..13455 ; Case_Ignorable # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED +1611E..16129 ; Case_Ignorable # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK +1612D..1612F ; Case_Ignorable # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA 16AF0..16AF4 ; Case_Ignorable # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B30..16B36 ; Case_Ignorable # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16B40..16B43 ; Case_Ignorable # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM +16D40..16D42 ; Case_Ignorable # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA +16D6B..16D6C ; Case_Ignorable # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT 16F4F ; Case_Ignorable # Mn MIAO SIGN CONSONANT MODIFIER BAR 16F8F..16F92 ; Case_Ignorable # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW 16F93..16F9F ; Case_Ignorable # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16FE0..16FE1 ; Case_Ignorable # Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK 16FE3 ; Case_Ignorable # Lm OLD CHINESE ITERATION MARK 16FE4 ; Case_Ignorable # Mn KHITAN SMALL SCRIPT FILLER +1AFF0..1AFF3 ; Case_Ignorable # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB ; Case_Ignorable # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE ; Case_Ignorable # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1BC9D..1BC9E ; Case_Ignorable # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK 1BCA0..1BCA3 ; Case_Ignorable # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP +1CF00..1CF2D ; Case_Ignorable # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT +1CF30..1CF46 ; Case_Ignorable # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG 1D167..1D169 ; Case_Ignorable # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 1D173..1D17A ; Case_Ignorable # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE 1D17B..1D182 ; Case_Ignorable # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE @@ -3293,9 +3488,15 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 1E01B..1E021 ; Case_Ignorable # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; Case_Ignorable # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; Case_Ignorable # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E030..1E06D ; Case_Ignorable # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F ; Case_Ignorable # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E130..1E136 ; Case_Ignorable # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E137..1E13D ; Case_Ignorable # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER +1E2AE ; Case_Ignorable # Mn TOTO SIGN RISING TONE 1E2EC..1E2EF ; Case_Ignorable # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI +1E4EB ; Case_Ignorable # Lm NAG MUNDARI SIGN OJOD +1E4EC..1E4EF ; Case_Ignorable # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH +1E5EE..1E5EF ; Case_Ignorable # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR 1E8D0..1E8D6 ; Case_Ignorable # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E944..1E94A ; Case_Ignorable # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA 1E94B ; Case_Ignorable # Lm ADLAM NASALIZATION MARK @@ -3304,7 +3505,7 @@ E0001 ; Case_Ignorable # Cf LANGUAGE TAG E0020..E007F ; Case_Ignorable # Cf [96] TAG SPACE..CANCEL TAG E0100..E01EF ; Case_Ignorable # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 2413 +# Total code points: 2749 # ================================================ @@ -3588,6 +3789,7 @@ E0100..E01EF ; Case_Ignorable # Mn [240] VARIATION SELECTOR-17..VARIATION SELEC 10C7 ; Changes_When_Lowercased # L& GEORGIAN CAPITAL LETTER YN 10CD ; Changes_When_Lowercased # L& GEORGIAN CAPITAL LETTER AEN 13A0..13F5 ; Changes_When_Lowercased # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV +1C89 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER TJE 1C90..1CBA ; Changes_When_Lowercased # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; Changes_When_Lowercased # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1E00 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH RING BELOW @@ -3738,7 +3940,7 @@ E0100..E01EF ; Case_Ignorable # Mn [240] VARIATION SELECTOR-17..VARIATION SELEC 2160..216F ; Changes_When_Lowercased # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND 2183 ; Changes_When_Lowercased # L& ROMAN NUMERAL REVERSED ONE HUNDRED 24B6..24CF ; Changes_When_Lowercased # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z -2C00..2C2E ; Changes_When_Lowercased # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE +2C00..2C2F ; Changes_When_Lowercased # L& [48] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI 2C60 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C62..2C64 ; Changes_When_Lowercased # L& [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL 2C67 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER H WITH DESCENDER @@ -3903,19 +4105,31 @@ A7B8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH S A7BA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER GLOTTAL A A7BC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER GLOTTAL I A7BE ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER GLOTTAL U +A7C0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER OLD POLISH O A7C2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER ANGLICANA W A7C4..A7C7 ; Changes_When_Lowercased # L& [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY A7C9 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY +A7CB..A7CC ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER RAMS HORN..LATIN CAPITAL LETTER S WITH DIAGONAL STROKE +A7D0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER CLOSED INSULAR G +A7D6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER MIDDLE SCOTS S +A7D8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER SIGMOID S +A7DA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER LAMBDA +A7DC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER LAMBDA WITH STROKE A7F5 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER REVERSED HALF H FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z 10400..10427 ; Changes_When_Lowercased # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW 104B0..104D3 ; Changes_When_Lowercased # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA +10570..1057A ; Changes_When_Lowercased # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; Changes_When_Lowercased # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; Changes_When_Lowercased # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; Changes_When_Lowercased # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE 10C80..10CB2 ; Changes_When_Lowercased # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US +10D50..10D65 ; Changes_When_Lowercased # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA 118A0..118BF ; Changes_When_Lowercased # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO 16E40..16E5F ; Changes_When_Lowercased # L& [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y 1E900..1E921 ; Changes_When_Lowercased # L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA -# Total code points: 1393 +# Total code points: 1460 # ================================================ @@ -3996,7 +4210,7 @@ FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTE 018C ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH TOPBAR 0192 ; Changes_When_Uppercased # L& LATIN SMALL LETTER F WITH HOOK 0195 ; Changes_When_Uppercased # L& LATIN SMALL LETTER HV -0199..019A ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER L WITH BAR +0199..019B ; Changes_When_Uppercased # L& [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE 019E ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH LONG RIGHT LEG 01A1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH HORN 01A3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER OI @@ -4072,8 +4286,7 @@ FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTE 0259 ; Changes_When_Uppercased # L& LATIN SMALL LETTER SCHWA 025B..025C ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E 0260..0261 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G -0263 ; Changes_When_Uppercased # L& LATIN SMALL LETTER GAMMA -0265..0266 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK +0263..0266 ; Changes_When_Uppercased # L& [4] LATIN SMALL LETTER GAMMA..LATIN SMALL LETTER H WITH HOOK 0268..026C ; Changes_When_Uppercased # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT 026F ; Changes_When_Uppercased # L& LATIN SMALL LETTER TURNED M 0271..0272 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK @@ -4213,6 +4426,7 @@ FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTE 10FD..10FF ; Changes_When_Uppercased # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN 13F8..13FD ; Changes_When_Uppercased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Changes_When_Uppercased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C8A ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER TJE 1D79 ; Changes_When_Uppercased # L& LATIN SMALL LETTER INSULAR G 1D7D ; Changes_When_Uppercased # L& LATIN SMALL LETTER P WITH STROKE 1D8E ; Changes_When_Uppercased # L& LATIN SMALL LETTER Z WITH PALATAL HOOK @@ -4363,7 +4577,7 @@ FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTE 2170..217F ; Changes_When_Uppercased # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND 2184 ; Changes_When_Uppercased # L& LATIN SMALL LETTER REVERSED C 24D0..24E9 ; Changes_When_Uppercased # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z -2C30..2C5E ; Changes_When_Uppercased # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE +2C30..2C5F ; Changes_When_Uppercased # L& [48] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI 2C61 ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH DOUBLE BAR 2C65..2C66 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE 2C68 ; Changes_When_Uppercased # L& LATIN SMALL LETTER H WITH DESCENDER @@ -4528,9 +4742,15 @@ A7B9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH STR A7BB ; Changes_When_Uppercased # L& LATIN SMALL LETTER GLOTTAL A A7BD ; Changes_When_Uppercased # L& LATIN SMALL LETTER GLOTTAL I A7BF ; Changes_When_Uppercased # L& LATIN SMALL LETTER GLOTTAL U +A7C1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER OLD POLISH O A7C3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER ANGLICANA W A7C8 ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY A7CA ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A7CD ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH DIAGONAL STROKE +A7D1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER CLOSED INSULAR G +A7D7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER MIDDLE SCOTS S +A7D9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER SIGMOID S +A7DB ; Changes_When_Uppercased # L& LATIN SMALL LETTER LAMBDA A7F6 ; Changes_When_Uppercased # L& LATIN SMALL LETTER REVERSED HALF H AB53 ; Changes_When_Uppercased # L& LATIN SMALL LETTER CHI AB70..ABBF ; Changes_When_Uppercased # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA @@ -4539,12 +4759,17 @@ FB13..FB17 ; Changes_When_Uppercased # L& [5] ARMENIAN SMALL LIGATURE MEN N FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z 10428..1044F ; Changes_When_Uppercased # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW 104D8..104FB ; Changes_When_Uppercased # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA +10597..105A1 ; Changes_When_Uppercased # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; Changes_When_Uppercased # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; Changes_When_Uppercased # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; Changes_When_Uppercased # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE 10CC0..10CF2 ; Changes_When_Uppercased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10D70..10D85 ; Changes_When_Uppercased # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 118C0..118DF ; Changes_When_Uppercased # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 16E60..16E7F ; Changes_When_Uppercased # L& [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y 1E922..1E943 ; Changes_When_Uppercased # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA -# Total code points: 1485 +# Total code points: 1552 # ================================================ @@ -4625,7 +4850,7 @@ FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER 018C ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH TOPBAR 0192 ; Changes_When_Titlecased # L& LATIN SMALL LETTER F WITH HOOK 0195 ; Changes_When_Titlecased # L& LATIN SMALL LETTER HV -0199..019A ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER L WITH BAR +0199..019B ; Changes_When_Titlecased # L& [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE 019E ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH LONG RIGHT LEG 01A1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH HORN 01A3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER OI @@ -4702,8 +4927,7 @@ FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER 0259 ; Changes_When_Titlecased # L& LATIN SMALL LETTER SCHWA 025B..025C ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E 0260..0261 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G -0263 ; Changes_When_Titlecased # L& LATIN SMALL LETTER GAMMA -0265..0266 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK +0263..0266 ; Changes_When_Titlecased # L& [4] LATIN SMALL LETTER GAMMA..LATIN SMALL LETTER H WITH HOOK 0268..026C ; Changes_When_Titlecased # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT 026F ; Changes_When_Titlecased # L& LATIN SMALL LETTER TURNED M 0271..0272 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK @@ -4841,6 +5065,7 @@ FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER 0561..0587 ; Changes_When_Titlecased # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 13F8..13FD ; Changes_When_Titlecased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Changes_When_Titlecased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C8A ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER TJE 1D79 ; Changes_When_Titlecased # L& LATIN SMALL LETTER INSULAR G 1D7D ; Changes_When_Titlecased # L& LATIN SMALL LETTER P WITH STROKE 1D8E ; Changes_When_Titlecased # L& LATIN SMALL LETTER Z WITH PALATAL HOOK @@ -4991,7 +5216,7 @@ FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER 2170..217F ; Changes_When_Titlecased # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND 2184 ; Changes_When_Titlecased # L& LATIN SMALL LETTER REVERSED C 24D0..24E9 ; Changes_When_Titlecased # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z -2C30..2C5E ; Changes_When_Titlecased # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE +2C30..2C5F ; Changes_When_Titlecased # L& [48] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI 2C61 ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH DOUBLE BAR 2C65..2C66 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE 2C68 ; Changes_When_Titlecased # L& LATIN SMALL LETTER H WITH DESCENDER @@ -5156,9 +5381,15 @@ A7B9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH STR A7BB ; Changes_When_Titlecased # L& LATIN SMALL LETTER GLOTTAL A A7BD ; Changes_When_Titlecased # L& LATIN SMALL LETTER GLOTTAL I A7BF ; Changes_When_Titlecased # L& LATIN SMALL LETTER GLOTTAL U +A7C1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER OLD POLISH O A7C3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER ANGLICANA W A7C8 ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY A7CA ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A7CD ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH DIAGONAL STROKE +A7D1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER CLOSED INSULAR G +A7D7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER MIDDLE SCOTS S +A7D9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER SIGMOID S +A7DB ; Changes_When_Titlecased # L& LATIN SMALL LETTER LAMBDA A7F6 ; Changes_When_Titlecased # L& LATIN SMALL LETTER REVERSED HALF H AB53 ; Changes_When_Titlecased # L& LATIN SMALL LETTER CHI AB70..ABBF ; Changes_When_Titlecased # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA @@ -5167,12 +5398,17 @@ FB13..FB17 ; Changes_When_Titlecased # L& [5] ARMENIAN SMALL LIGATURE MEN N FF41..FF5A ; Changes_When_Titlecased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z 10428..1044F ; Changes_When_Titlecased # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW 104D8..104FB ; Changes_When_Titlecased # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA +10597..105A1 ; Changes_When_Titlecased # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; Changes_When_Titlecased # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; Changes_When_Titlecased # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; Changes_When_Titlecased # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE 10CC0..10CF2 ; Changes_When_Titlecased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10D70..10D85 ; Changes_When_Titlecased # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 118C0..118DF ; Changes_When_Titlecased # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 16E60..16E7F ; Changes_When_Titlecased # L& [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y 1E922..1E943 ; Changes_When_Titlecased # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA -# Total code points: 1412 +# Total code points: 1479 # ================================================ @@ -5463,7 +5699,7 @@ FF41..FF5A ; Changes_When_Titlecased # L& [26] FULLWIDTH LATIN SMALL LETTER 10C7 ; Changes_When_Casefolded # L& GEORGIAN CAPITAL LETTER YN 10CD ; Changes_When_Casefolded # L& GEORGIAN CAPITAL LETTER AEN 13F8..13FD ; Changes_When_Casefolded # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV -1C80..1C88 ; Changes_When_Casefolded # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C80..1C89 ; Changes_When_Casefolded # L& [10] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC CAPITAL LETTER TJE 1C90..1CBA ; Changes_When_Casefolded # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; Changes_When_Casefolded # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1E00 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH RING BELOW @@ -5616,7 +5852,7 @@ FF41..FF5A ; Changes_When_Titlecased # L& [26] FULLWIDTH LATIN SMALL LETTER 2160..216F ; Changes_When_Casefolded # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND 2183 ; Changes_When_Casefolded # L& ROMAN NUMERAL REVERSED ONE HUNDRED 24B6..24CF ; Changes_When_Casefolded # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z -2C00..2C2E ; Changes_When_Casefolded # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE +2C00..2C2F ; Changes_When_Casefolded # L& [48] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI 2C60 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C62..2C64 ; Changes_When_Casefolded # L& [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL 2C67 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER H WITH DESCENDER @@ -5781,9 +6017,16 @@ A7B8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH S A7BA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER GLOTTAL A A7BC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER GLOTTAL I A7BE ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER GLOTTAL U +A7C0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER OLD POLISH O A7C2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER ANGLICANA W A7C4..A7C7 ; Changes_When_Casefolded # L& [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY A7C9 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY +A7CB..A7CC ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER RAMS HORN..LATIN CAPITAL LETTER S WITH DIAGONAL STROKE +A7D0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER CLOSED INSULAR G +A7D6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER MIDDLE SCOTS S +A7D8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER SIGMOID S +A7DA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER LAMBDA +A7DC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER LAMBDA WITH STROKE A7F5 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER REVERSED HALF H AB70..ABBF ; Changes_When_Casefolded # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Changes_When_Casefolded # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST @@ -5791,12 +6034,17 @@ FB13..FB17 ; Changes_When_Casefolded # L& [5] ARMENIAN SMALL LIGATURE MEN N FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z 10400..10427 ; Changes_When_Casefolded # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW 104B0..104D3 ; Changes_When_Casefolded # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA +10570..1057A ; Changes_When_Casefolded # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; Changes_When_Casefolded # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; Changes_When_Casefolded # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; Changes_When_Casefolded # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE 10C80..10CB2 ; Changes_When_Casefolded # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US +10D50..10D65 ; Changes_When_Casefolded # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA 118A0..118BF ; Changes_When_Casefolded # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO 16E40..16E5F ; Changes_When_Casefolded # L& [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y 1E900..1E921 ; Changes_When_Casefolded # L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA -# Total code points: 1466 +# Total code points: 1533 # ================================================ @@ -5812,8 +6060,7 @@ FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTE 00D8..00F6 ; Changes_When_Casemapped # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS 00F8..0137 ; Changes_When_Casemapped # L& [64] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER K WITH CEDILLA 0139..018C ; Changes_When_Casemapped # L& [84] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER D WITH TOPBAR -018E..019A ; Changes_When_Casemapped # L& [13] LATIN CAPITAL LETTER REVERSED E..LATIN SMALL LETTER L WITH BAR -019C..01A9 ; Changes_When_Casemapped # L& [14] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER ESH +018E..01A9 ; Changes_When_Casemapped # L& [28] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER ESH 01AC..01B9 ; Changes_When_Casemapped # L& [14] LATIN CAPITAL LETTER T WITH HOOK..LATIN SMALL LETTER EZH REVERSED 01BC..01BD ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER TONE FIVE..LATIN SMALL LETTER TONE FIVE 01BF ; Changes_When_Casemapped # L& LATIN LETTER WYNN @@ -5824,8 +6071,7 @@ FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTE 0259 ; Changes_When_Casemapped # L& LATIN SMALL LETTER SCHWA 025B..025C ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E 0260..0261 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G -0263 ; Changes_When_Casemapped # L& LATIN SMALL LETTER GAMMA -0265..0266 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK +0263..0266 ; Changes_When_Casemapped # L& [4] LATIN SMALL LETTER GAMMA..LATIN SMALL LETTER H WITH HOOK 0268..026C ; Changes_When_Casemapped # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT 026F ; Changes_When_Casemapped # L& LATIN SMALL LETTER TURNED M 0271..0272 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK @@ -5859,7 +6105,7 @@ FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTE 10FD..10FF ; Changes_When_Casemapped # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN 13A0..13F5 ; Changes_When_Casemapped # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; Changes_When_Casemapped # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV -1C80..1C88 ; Changes_When_Casemapped # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C80..1C8A ; Changes_When_Casemapped # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE 1C90..1CBA ; Changes_When_Casemapped # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; Changes_When_Casemapped # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1D79 ; Changes_When_Casemapped # L& LATIN SMALL LETTER INSULAR G @@ -5893,9 +6139,7 @@ FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTE 2160..217F ; Changes_When_Casemapped # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND 2183..2184 ; Changes_When_Casemapped # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 24B6..24E9 ; Changes_When_Casemapped # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z -2C00..2C2E ; Changes_When_Casemapped # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E ; Changes_When_Casemapped # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C60..2C70 ; Changes_When_Casemapped # L& [17] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN CAPITAL LETTER TURNED ALPHA +2C00..2C70 ; Changes_When_Casemapped # L& [113] GLAGOLITIC CAPITAL LETTER AZU..LATIN CAPITAL LETTER TURNED ALPHA 2C72..2C73 ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER W WITH HOOK..LATIN SMALL LETTER W WITH HOOK 2C75..2C76 ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER HALF H..LATIN SMALL LETTER HALF H 2C7E..2CE3 ; Changes_When_Casemapped # L& [102] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SMALL LETTER OLD NUBIAN WAU @@ -5912,8 +6156,9 @@ A779..A787 ; Changes_When_Casemapped # L& [15] LATIN CAPITAL LETTER INSULAR A78B..A78D ; Changes_When_Casemapped # L& [3] LATIN CAPITAL LETTER SALTILLO..LATIN CAPITAL LETTER TURNED H A790..A794 ; Changes_When_Casemapped # L& [5] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER C WITH PALATAL HOOK A796..A7AE ; Changes_When_Casemapped # L& [25] LATIN CAPITAL LETTER B WITH FLOURISH..LATIN CAPITAL LETTER SMALL CAPITAL I -A7B0..A7BF ; Changes_When_Casemapped # L& [16] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER GLOTTAL U -A7C2..A7CA ; Changes_When_Casemapped # L& [9] LATIN CAPITAL LETTER ANGLICANA W..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A7B0..A7CD ; Changes_When_Casemapped # L& [30] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER S WITH DIAGONAL STROKE +A7D0..A7D1 ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D6..A7DC ; Changes_When_Casemapped # L& [7] LATIN CAPITAL LETTER MIDDLE SCOTS S..LATIN CAPITAL LETTER LAMBDA WITH STROKE A7F5..A7F6 ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H AB53 ; Changes_When_Casemapped # L& LATIN SMALL LETTER CHI AB70..ABBF ; Changes_When_Casemapped # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA @@ -5924,13 +6169,23 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER 10400..1044F ; Changes_When_Casemapped # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW 104B0..104D3 ; Changes_When_Casemapped # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; Changes_When_Casemapped # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA +10570..1057A ; Changes_When_Casemapped # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; Changes_When_Casemapped # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; Changes_When_Casemapped # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; Changes_When_Casemapped # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1 ; Changes_When_Casemapped # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; Changes_When_Casemapped # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; Changes_When_Casemapped # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; Changes_When_Casemapped # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE 10C80..10CB2 ; Changes_When_Casemapped # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; Changes_When_Casemapped # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10D50..10D65 ; Changes_When_Casemapped # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA +10D70..10D85 ; Changes_When_Casemapped # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 118A0..118DF ; Changes_When_Casemapped # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 16E40..16E7F ; Changes_When_Casemapped # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y 1E900..1E943 ; Changes_When_Casemapped # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA -# Total code points: 2847 +# Total code points: 2981 # ================================================ @@ -6003,8 +6258,10 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER 0828 ; ID_Start # Lm SAMARITAN MODIFIER LETTER I 0840..0858 ; ID_Start # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 0860..086A ; ID_Start # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA -08A0..08B4 ; ID_Start # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -08B6..08C7 ; ID_Start # Lo [18] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE +0870..0887 ; ID_Start # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT +0889..088E ; ID_Start # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL +08A0..08C8 ; ID_Start # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF +08C9 ; ID_Start # Lm ARABIC SMALL FARSI YEH 0904..0939 ; ID_Start # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093D ; ID_Start # Lo DEVANAGARI SIGN AVAGRAHA 0950 ; ID_Start # Lo DEVANAGARI OM @@ -6070,6 +6327,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER 0C2A..0C39 ; ID_Start # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; ID_Start # Lo TELUGU SIGN AVAGRAHA 0C58..0C5A ; ID_Start # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA +0C5D ; ID_Start # Lo TELUGU LETTER NAKAARA POLLU 0C60..0C61 ; ID_Start # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C80 ; ID_Start # Lo KANNADA SIGN SPACING CANDRABINDU 0C85..0C8C ; ID_Start # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L @@ -6078,7 +6336,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER 0CAA..0CB3 ; ID_Start # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; ID_Start # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA 0CBD ; ID_Start # Lo KANNADA SIGN AVAGRAHA -0CDE ; ID_Start # Lo KANNADA LETTER FA +0CDD..0CDE ; ID_Start # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA 0CE0..0CE1 ; ID_Start # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CF1..0CF2 ; ID_Start # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D04..0D0C ; ID_Start # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L @@ -6153,9 +6411,8 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER 16A0..16EA ; ID_Start # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EE..16F0 ; ID_Start # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; ID_Start # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC -1700..170C ; ID_Start # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711 ; ID_Start # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA -1720..1731 ; ID_Start # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA +1700..1711 ; ID_Start # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA +171F..1731 ; ID_Start # Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA 1740..1751 ; ID_Start # Lo [18] BUHID LETTER A..BUHID LETTER HA 1760..176C ; ID_Start # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA 176E..1770 ; ID_Start # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA @@ -6179,7 +6436,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER 1A20..1A54 ; ID_Start # Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA 1AA7 ; ID_Start # Lm TAI THAM SIGN MAI YAMOK 1B05..1B33 ; ID_Start # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA -1B45..1B4B ; ID_Start # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK +1B45..1B4C ; ID_Start # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA 1B83..1BA0 ; ID_Start # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA 1BAE..1BAF ; ID_Start # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA 1BBA..1BE5 ; ID_Start # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U @@ -6187,7 +6444,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER 1C4D..1C4F ; ID_Start # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA 1C5A..1C77 ; ID_Start # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; ID_Start # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -1C80..1C88 ; ID_Start # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C80..1C8A ; ID_Start # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE 1C90..1CBA ; ID_Start # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; ID_Start # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1CE9..1CEC ; ID_Start # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL @@ -6242,9 +6499,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER 2160..2182 ; ID_Start # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2183..2184 ; ID_Start # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; ID_Start # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND -2C00..2C2E ; ID_Start # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E ; ID_Start # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C60..2C7B ; ID_Start # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E +2C00..2C7B ; ID_Start # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; ID_Start # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; ID_Start # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; ID_Start # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA @@ -6283,8 +6538,7 @@ FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER 31A0..31BF ; ID_Start # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH 31F0..31FF ; ID_Start # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DBF ; ID_Start # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF -4E00..9FFC ; ID_Start # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC -A000..A014 ; ID_Start # Lo [21] YI SYLLABLE IT..YI SYLLABLE E +4E00..A014 ; ID_Start # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E A015 ; ID_Start # Lm YI SYLLABLE WU A016..A48C ; ID_Start # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; ID_Start # Lo [40] LISU LETTER BA..LISU LETTER OE @@ -6307,8 +6561,11 @@ A771..A787 ; ID_Start # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER I A788 ; ID_Start # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; ID_Start # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; ID_Start # Lo LATIN LETTER SINOLOGICAL DOT -A790..A7BF ; ID_Start # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U -A7C2..A7CA ; ID_Start # L& [9] LATIN CAPITAL LETTER ANGLICANA W..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A790..A7CD ; ID_Start # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE +A7D0..A7D1 ; ID_Start # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D3 ; ID_Start # L& LATIN SMALL LETTER DOUBLE THORN +A7D5..A7DC ; ID_Start # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE +A7F2..A7F4 ; ID_Start # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F5..A7F6 ; ID_Start # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H A7F7 ; ID_Start # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; ID_Start # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE @@ -6418,9 +6675,21 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 104D8..104FB ; ID_Start # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; ID_Start # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; ID_Start # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW +10570..1057A ; ID_Start # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; ID_Start # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; ID_Start # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; ID_Start # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1 ; ID_Start # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; ID_Start # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; ID_Start # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; ID_Start # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE +105C0..105F3 ; ID_Start # Lo [52] TODHRI LETTER A..TODHRI LETTER OO 10600..10736 ; ID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; ID_Start # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; ID_Start # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 +10780..10785 ; ID_Start # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; ID_Start # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; ID_Start # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10800..10805 ; ID_Start # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; ID_Start # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; ID_Start # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO @@ -6451,14 +6720,24 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 10C80..10CB2 ; ID_Start # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; ID_Start # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 10D00..10D23 ; ID_Start # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA +10D4A..10D4D ; ID_Start # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE +10D4E ; ID_Start # Lm GARAY VOWEL LENGTH MARK +10D4F ; ID_Start # Lo GARAY SUKUN +10D50..10D65 ; ID_Start # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA +10D6F ; ID_Start # Lm GARAY REDUPLICATION MARK +10D70..10D85 ; ID_Start # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 10E80..10EA9 ; ID_Start # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET 10EB0..10EB1 ; ID_Start # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10EC2..10EC4 ; ID_Start # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW 10F00..10F1C ; ID_Start # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F27 ; ID_Start # Lo OLD SOGDIAN LIGATURE AYIN-DALETH 10F30..10F45 ; ID_Start # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN +10F70..10F81 ; ID_Start # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH 10FB0..10FC4 ; ID_Start # Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW 10FE0..10FF6 ; ID_Start # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH 11003..11037 ; ID_Start # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA +11071..11072 ; ID_Start # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O +11075 ; ID_Start # Lo BRAHMI LETTER OLD TAMIL LLA 11083..110AF ; ID_Start # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110D0..110E8 ; ID_Start # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 11103..11126 ; ID_Start # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA @@ -6472,6 +6751,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 111DC ; ID_Start # Lo SHARADA HEADSTROKE 11200..11211 ; ID_Start # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; ID_Start # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA +1123F..11240 ; ID_Start # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I 11280..11286 ; ID_Start # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; ID_Start # Lo MULTANI LETTER GHA 1128A..1128D ; ID_Start # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -6487,6 +6767,13 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1133D ; ID_Start # Lo GRANTHA SIGN AVAGRAHA 11350 ; ID_Start # Lo GRANTHA OM 1135D..11361 ; ID_Start # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL +11380..11389 ; ID_Start # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL +1138B ; ID_Start # Lo TULU-TIGALARI LETTER EE +1138E ; ID_Start # Lo TULU-TIGALARI LETTER AI +11390..113B5 ; ID_Start # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA +113B7 ; ID_Start # Lo TULU-TIGALARI SIGN AVAGRAHA +113D1 ; ID_Start # Lo TULU-TIGALARI REPHA +113D3 ; ID_Start # Lo TULU-TIGALARI SIGN PLUTA 11400..11434 ; ID_Start # Lo [53] NEWA LETTER A..NEWA LETTER HA 11447..1144A ; ID_Start # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 1145F..11461 ; ID_Start # Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA @@ -6500,6 +6787,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 11680..116AA ; ID_Start # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA 116B8 ; ID_Start # Lo TAKRI LETTER ARCHAIC KHA 11700..1171A ; ID_Start # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA +11740..11746 ; ID_Start # Lo [7] AHOM LETTER CA..AHOM LETTER LLA 11800..1182B ; ID_Start # Lo [44] DOGRA LETTER A..DOGRA LETTER RRA 118A0..118DF ; ID_Start # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118FF..11906 ; ID_Start # Lo [8] WARANG CITI OM..DIVES AKURU LETTER E @@ -6519,7 +6807,8 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 11A50 ; ID_Start # Lo SOYOMBO LETTER A 11A5C..11A89 ; ID_Start # Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA 11A9D ; ID_Start # Lo SOYOMBO MARK PLUTA -11AC0..11AF8 ; ID_Start # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL +11AB0..11AF8 ; ID_Start # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL +11BC0..11BE0 ; ID_Start # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO 11C00..11C08 ; ID_Start # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; ID_Start # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C40 ; ID_Start # Lo BHAIKSUKI SIGN AVAGRAHA @@ -6533,19 +6822,30 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 11D6A..11D89 ; ID_Start # Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA 11D98 ; ID_Start # Lo GUNJALA GONDI OM 11EE0..11EF2 ; ID_Start # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA +11F02 ; ID_Start # Lo KAWI SIGN REPHA +11F04..11F10 ; ID_Start # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33 ; ID_Start # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA 11FB0 ; ID_Start # Lo LISU LETTER YHA 12000..12399 ; ID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; ID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; ID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -13000..1342E ; ID_Start # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +12F90..12FF0 ; ID_Start # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 +13000..1342F ; ID_Start # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13441..13446 ; ID_Start # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN +13460..143FA ; ID_Start # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA 14400..14646 ; ID_Start # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 +16100..1611D ; ID_Start # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA 16800..16A38 ; ID_Start # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; ID_Start # Lo [31] MRO LETTER TA..MRO LETTER TEK +16A70..16ABE ; ID_Start # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA 16AD0..16AED ; ID_Start # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16B00..16B2F ; ID_Start # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU 16B40..16B43 ; ID_Start # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16B63..16B77 ; ID_Start # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; ID_Start # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ +16D40..16D42 ; ID_Start # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA +16D43..16D6A ; ID_Start # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU +16D6B..16D6C ; ID_Start # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT 16E40..16E7F ; ID_Start # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y 16F00..16F4A ; ID_Start # Lo [75] MIAO LETTER PA..MIAO LETTER RTE 16F50 ; ID_Start # Lo MIAO LETTER NASALIZATION @@ -6554,9 +6854,14 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 16FE3 ; ID_Start # Lm OLD CHINESE ITERATION MARK 17000..187F7 ; ID_Start # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 18800..18CD5 ; ID_Start # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5 -18D00..18D08 ; ID_Start # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 -1B000..1B11E ; ID_Start # Lo [287] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER N-MU-MO-2 +18CFF..18D08 ; ID_Start # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08 +1AFF0..1AFF3 ; ID_Start # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB ; ID_Start # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE ; ID_Start # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 +1B000..1B122 ; ID_Start # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU +1B132 ; ID_Start # Lo HIRAGANA LETTER SMALL KO 1B150..1B152 ; ID_Start # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155 ; ID_Start # Lo KATAKANA LETTER SMALL KO 1B164..1B167 ; ID_Start # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; ID_Start # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; ID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -6593,10 +6898,24 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1D78A..1D7A8 ; ID_Start # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7AA..1D7C2 ; ID_Start # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7CB ; ID_Start # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA +1DF00..1DF09 ; ID_Start # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0A ; ID_Start # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK +1DF0B..1DF1E ; ID_Start # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; ID_Start # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK +1E030..1E06D ; ID_Start # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE 1E100..1E12C ; ID_Start # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E137..1E13D ; ID_Start # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E14E ; ID_Start # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ +1E290..1E2AD ; ID_Start # Lo [30] TOTO LETTER PA..TOTO LETTER A 1E2C0..1E2EB ; ID_Start # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH +1E4D0..1E4EA ; ID_Start # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB ; ID_Start # Lm NAG MUNDARI SIGN OJOD +1E5D0..1E5ED ; ID_Start # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG +1E5F0 ; ID_Start # Lo OL ONAL SIGN HODDOND +1E7E0..1E7E6 ; ID_Start # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO +1E7E8..1E7EB ; ID_Start # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE +1E7ED..1E7EE ; ID_Start # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE +1E7F0..1E7FE ; ID_Start # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE 1E800..1E8C4 ; ID_Start # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E900..1E943 ; ID_Start # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1E94B ; ID_Start # Lm ADLAM NASALIZATION MARK @@ -6633,15 +6952,17 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1EEA1..1EEA3 ; ID_Start # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; ID_Start # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; ID_Start # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN -20000..2A6DD ; ID_Start # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD -2A700..2B734 ; ID_Start # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 +20000..2A6DF ; ID_Start # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF +2A700..2B739 ; ID_Start # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; ID_Start # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; ID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; ID_Start # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 +2EBF0..2EE5D ; ID_Start # Lo [622] CJK UNIFIED IDEOGRAPH-2EBF0..CJK UNIFIED IDEOGRAPH-2EE5D 2F800..2FA1D ; ID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; ID_Start # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; ID_Start # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF -# Total code points: 131482 +# Total code points: 141269 # ================================================ @@ -6746,9 +7067,12 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 0840..0858 ; ID_Continue # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 0859..085B ; ID_Continue # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK 0860..086A ; ID_Continue # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA -08A0..08B4 ; ID_Continue # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -08B6..08C7 ; ID_Continue # Lo [18] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE -08D3..08E1 ; ID_Continue # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA +0870..0887 ; ID_Continue # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT +0889..088E ; ID_Continue # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL +0897..089F ; ID_Continue # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA +08A0..08C8 ; ID_Continue # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF +08C9 ; ID_Continue # Lm ARABIC SMALL FARSI YEH +08CA..08E1 ; ID_Continue # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA 08E3..0902 ; ID_Continue # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 0903 ; ID_Continue # Mc DEVANAGARI SIGN VISARGA 0904..0939 ; ID_Continue # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA @@ -6886,6 +7210,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 0C0E..0C10 ; ID_Continue # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; ID_Continue # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; ID_Continue # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA +0C3C ; ID_Continue # Mn TELUGU SIGN NUKTA 0C3D ; ID_Continue # Lo TELUGU SIGN AVAGRAHA 0C3E..0C40 ; ID_Continue # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C41..0C44 ; ID_Continue # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR @@ -6893,6 +7218,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 0C4A..0C4D ; ID_Continue # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; ID_Continue # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C58..0C5A ; ID_Continue # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA +0C5D ; ID_Continue # Lo TELUGU LETTER NAKAARA POLLU 0C60..0C61 ; ID_Continue # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; ID_Continue # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F ; ID_Continue # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE @@ -6914,11 +7240,12 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 0CCA..0CCB ; ID_Continue # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CCC..0CCD ; ID_Continue # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0CD5..0CD6 ; ID_Continue # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0CDE ; ID_Continue # Lo KANNADA LETTER FA +0CDD..0CDE ; ID_Continue # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA 0CE0..0CE1 ; ID_Continue # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE2..0CE3 ; ID_Continue # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF ; ID_Continue # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2 ; ID_Continue # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA +0CF3 ; ID_Continue # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D00..0D01 ; ID_Continue # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; ID_Continue # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D04..0D0C ; ID_Continue # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L @@ -6972,7 +7299,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 0EBD ; ID_Continue # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; ID_Continue # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; ID_Continue # Lm LAO KO LA -0EC8..0ECD ; ID_Continue # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0EC8..0ECE ; ID_Continue # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN 0ED0..0ED9 ; ID_Continue # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE 0EDC..0EDF ; ID_Continue # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; ID_Continue # Lo TIBETAN SYLLABLE OM @@ -7058,11 +7385,12 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 16A0..16EA ; ID_Continue # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EE..16F0 ; ID_Continue # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; ID_Continue # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC -1700..170C ; ID_Continue # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711 ; ID_Continue # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA +1700..1711 ; ID_Continue # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA 1712..1714 ; ID_Continue # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA -1720..1731 ; ID_Continue # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA -1732..1734 ; ID_Continue # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD +1715 ; ID_Continue # Mc TAGALOG SIGN PAMUDPOD +171F..1731 ; ID_Continue # Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA +1732..1733 ; ID_Continue # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U +1734 ; ID_Continue # Mc HANUNOO SIGN PAMUDPOD 1740..1751 ; ID_Continue # Lo [18] BUHID LETTER A..BUHID LETTER HA 1752..1753 ; ID_Continue # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U 1760..176C ; ID_Continue # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA @@ -7081,6 +7409,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 17DD ; ID_Continue # Mn KHMER SIGN ATTHACAN 17E0..17E9 ; ID_Continue # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE 180B..180D ; ID_Continue # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE +180F ; ID_Continue # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR 1810..1819 ; ID_Continue # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1820..1842 ; ID_Continue # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; ID_Continue # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN @@ -7128,7 +7457,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1A90..1A99 ; ID_Continue # Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE 1AA7 ; ID_Continue # Lm TAI THAM SIGN MAI YAMOK 1AB0..1ABD ; ID_Continue # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW -1ABF..1AC0 ; ID_Continue # Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW +1ABF..1ACE ; ID_Continue # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T 1B00..1B03 ; ID_Continue # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B04 ; ID_Continue # Mc BALINESE SIGN BISAH 1B05..1B33 ; ID_Continue # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA @@ -7140,7 +7469,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1B3D..1B41 ; ID_Continue # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B42 ; ID_Continue # Mn BALINESE VOWEL SIGN PEPET 1B43..1B44 ; ID_Continue # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG -1B45..1B4B ; ID_Continue # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK +1B45..1B4C ; ID_Continue # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA 1B50..1B59 ; ID_Continue # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE 1B6B..1B73 ; ID_Continue # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG 1B80..1B81 ; ID_Continue # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR @@ -7173,7 +7502,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1C50..1C59 ; ID_Continue # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE 1C5A..1C77 ; ID_Continue # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; ID_Continue # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -1C80..1C88 ; ID_Continue # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C80..1C8A ; ID_Continue # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE 1C90..1CBA ; ID_Continue # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; ID_Continue # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1CD0..1CD2 ; ID_Continue # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA @@ -7194,8 +7523,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1D78 ; ID_Continue # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; ID_Continue # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; ID_Continue # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA -1DC0..1DF9 ; ID_Continue # Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW -1DFB..1DFF ; ID_Continue # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW +1DC0..1DFF ; ID_Continue # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 1E00..1F15 ; ID_Continue # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; ID_Continue # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; ID_Continue # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA @@ -7215,6 +7543,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1FE0..1FEC ; ID_Continue # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF2..1FF4 ; ID_Continue # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFC ; ID_Continue # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +200C..200D ; ID_Continue # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER 203F..2040 ; ID_Continue # Pc [2] UNDERTIE..CHARACTER TIE 2054 ; ID_Continue # Pc INVERTED UNDERTIE 2071 ; ID_Continue # Lm SUPERSCRIPT LATIN SMALL LETTER I @@ -7243,9 +7572,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 2160..2182 ; ID_Continue # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2183..2184 ; ID_Continue # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; ID_Continue # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND -2C00..2C2E ; ID_Continue # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E ; ID_Continue # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C60..2C7B ; ID_Continue # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E +2C00..2C7B ; ID_Continue # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; ID_Continue # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; ID_Continue # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; ID_Continue # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA @@ -7283,6 +7610,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 309D..309E ; ID_Continue # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 309F ; ID_Continue # Lo HIRAGANA DIGRAPH YORI 30A1..30FA ; ID_Continue # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO +30FB ; ID_Continue # Po KATAKANA MIDDLE DOT 30FC..30FE ; ID_Continue # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK 30FF ; ID_Continue # Lo KATAKANA DIGRAPH KOTO 3105..312F ; ID_Continue # Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN @@ -7290,8 +7618,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 31A0..31BF ; ID_Continue # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH 31F0..31FF ; ID_Continue # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DBF ; ID_Continue # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF -4E00..9FFC ; ID_Continue # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC -A000..A014 ; ID_Continue # Lo [21] YI SYLLABLE IT..YI SYLLABLE E +4E00..A014 ; ID_Continue # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E A015 ; ID_Continue # Lm YI SYLLABLE WU A016..A48C ; ID_Continue # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; ID_Continue # Lo [40] LISU LETTER BA..LISU LETTER OE @@ -7319,8 +7646,11 @@ A771..A787 ; ID_Continue # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTE A788 ; ID_Continue # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; ID_Continue # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; ID_Continue # Lo LATIN LETTER SINOLOGICAL DOT -A790..A7BF ; ID_Continue # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U -A7C2..A7CA ; ID_Continue # L& [9] LATIN CAPITAL LETTER ANGLICANA W..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A790..A7CD ; ID_Continue # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE +A7D0..A7D1 ; ID_Continue # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D3 ; ID_Continue # L& LATIN SMALL LETTER DOUBLE THORN +A7D5..A7DC ; ID_Continue # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE +A7F2..A7F4 ; ID_Continue # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F5..A7F6 ; ID_Continue # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H A7F7 ; ID_Continue # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; ID_Continue # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE @@ -7460,6 +7790,7 @@ FF10..FF19 ; ID_Continue # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NIN FF21..FF3A ; ID_Continue # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF3F ; ID_Continue # Pc FULLWIDTH LOW LINE FF41..FF5A ; ID_Continue # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z +FF65 ; ID_Continue # Po HALFWIDTH KATAKANA MIDDLE DOT FF66..FF6F ; ID_Continue # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU FF70 ; ID_Continue # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF71..FF9D ; ID_Continue # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N @@ -7499,9 +7830,21 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 104D8..104FB ; ID_Continue # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; ID_Continue # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; ID_Continue # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW +10570..1057A ; ID_Continue # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; ID_Continue # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; ID_Continue # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; ID_Continue # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1 ; ID_Continue # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; ID_Continue # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; ID_Continue # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; ID_Continue # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE +105C0..105F3 ; ID_Continue # Lo [52] TODHRI LETTER A..TODHRI LETTER OO 10600..10736 ; ID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; ID_Continue # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; ID_Continue # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 +10780..10785 ; ID_Continue # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; ID_Continue # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; ID_Continue # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10800..10805 ; ID_Continue # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; ID_Continue # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; ID_Continue # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO @@ -7540,13 +7883,25 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 10D00..10D23 ; ID_Continue # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA 10D24..10D27 ; ID_Continue # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI 10D30..10D39 ; ID_Continue # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE +10D40..10D49 ; ID_Continue # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE +10D4A..10D4D ; ID_Continue # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE +10D4E ; ID_Continue # Lm GARAY VOWEL LENGTH MARK +10D4F ; ID_Continue # Lo GARAY SUKUN +10D50..10D65 ; ID_Continue # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA +10D69..10D6D ; ID_Continue # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK +10D6F ; ID_Continue # Lm GARAY REDUPLICATION MARK +10D70..10D85 ; ID_Continue # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 10E80..10EA9 ; ID_Continue # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET 10EAB..10EAC ; ID_Continue # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK 10EB0..10EB1 ; ID_Continue # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10EC2..10EC4 ; ID_Continue # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW +10EFC..10EFF ; ID_Continue # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA 10F00..10F1C ; ID_Continue # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F27 ; ID_Continue # Lo OLD SOGDIAN LIGATURE AYIN-DALETH 10F30..10F45 ; ID_Continue # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN 10F46..10F50 ; ID_Continue # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW +10F70..10F81 ; ID_Continue # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH +10F82..10F85 ; ID_Continue # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW 10FB0..10FC4 ; ID_Continue # Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW 10FE0..10FF6 ; ID_Continue # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH 11000 ; ID_Continue # Mc BRAHMI SIGN CANDRABINDU @@ -7555,6 +7910,10 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 11003..11037 ; ID_Continue # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11038..11046 ; ID_Continue # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA 11066..1106F ; ID_Continue # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE +11070 ; ID_Continue # Mn BRAHMI SIGN OLD TAMIL VIRAMA +11071..11072 ; ID_Continue # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O +11073..11074 ; ID_Continue # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O +11075 ; ID_Continue # Lo BRAHMI LETTER OLD TAMIL LLA 1107F..11081 ; ID_Continue # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA 11082 ; ID_Continue # Mc KAITHI SIGN VISARGA 11083..110AF ; ID_Continue # Lo [45] KAITHI LETTER A..KAITHI LETTER HA @@ -7562,6 +7921,7 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 110B3..110B6 ; ID_Continue # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B7..110B8 ; ID_Continue # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU 110B9..110BA ; ID_Continue # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA +110C2 ; ID_Continue # Mn KAITHI VOWEL SIGN VOCALIC R 110D0..110E8 ; ID_Continue # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 110F0..110F9 ; ID_Continue # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE 11100..11102 ; ID_Continue # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA @@ -7598,6 +7958,8 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 11235 ; ID_Continue # Mc KHOJKI SIGN VIRAMA 11236..11237 ; ID_Continue # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; ID_Continue # Mn KHOJKI SIGN SUKUN +1123F..11240 ; ID_Continue # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I +11241 ; ID_Continue # Mn KHOJKI VOWEL SIGN VOCALIC R 11280..11286 ; ID_Continue # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; ID_Continue # Lo MULTANI LETTER GHA 1128A..1128D ; ID_Continue # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -7629,6 +7991,24 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 11362..11363 ; ID_Continue # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 11366..1136C ; ID_Continue # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; ID_Continue # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA +11380..11389 ; ID_Continue # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL +1138B ; ID_Continue # Lo TULU-TIGALARI LETTER EE +1138E ; ID_Continue # Lo TULU-TIGALARI LETTER AI +11390..113B5 ; ID_Continue # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA +113B7 ; ID_Continue # Lo TULU-TIGALARI SIGN AVAGRAHA +113B8..113BA ; ID_Continue # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II +113BB..113C0 ; ID_Continue # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL +113C2 ; ID_Continue # Mc TULU-TIGALARI VOWEL SIGN EE +113C5 ; ID_Continue # Mc TULU-TIGALARI VOWEL SIGN AI +113C7..113CA ; ID_Continue # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA +113CC..113CD ; ID_Continue # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA +113CE ; ID_Continue # Mn TULU-TIGALARI SIGN VIRAMA +113CF ; ID_Continue # Mc TULU-TIGALARI SIGN LOOPED VIRAMA +113D0 ; ID_Continue # Mn TULU-TIGALARI CONJOINER +113D1 ; ID_Continue # Lo TULU-TIGALARI REPHA +113D2 ; ID_Continue # Mn TULU-TIGALARI GEMINATION MARK +113D3 ; ID_Continue # Lo TULU-TIGALARI SIGN PLUTA +113E1..113E2 ; ID_Continue # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA 11400..11434 ; ID_Continue # Lo [53] NEWA LETTER A..NEWA LETTER HA 11435..11437 ; ID_Continue # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II 11438..1143F ; ID_Continue # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI @@ -7680,13 +8060,17 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 116B7 ; ID_Continue # Mn TAKRI SIGN NUKTA 116B8 ; ID_Continue # Lo TAKRI LETTER ARCHAIC KHA 116C0..116C9 ; ID_Continue # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE +116D0..116E3 ; ID_Continue # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE 11700..1171A ; ID_Continue # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA -1171D..1171F ; ID_Continue # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +1171D ; ID_Continue # Mn AHOM CONSONANT SIGN MEDIAL LA +1171E ; ID_Continue # Mc AHOM CONSONANT SIGN MEDIAL RA +1171F ; ID_Continue # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA 11720..11721 ; ID_Continue # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA 11722..11725 ; ID_Continue # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11726 ; ID_Continue # Mc AHOM VOWEL SIGN E 11727..1172B ; ID_Continue # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 11730..11739 ; ID_Continue # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE +11740..11746 ; ID_Continue # Lo [7] AHOM LETTER CA..AHOM LETTER LLA 11800..1182B ; ID_Continue # Lo [44] DOGRA LETTER A..DOGRA LETTER RRA 1182C..1182E ; ID_Continue # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II 1182F..11837 ; ID_Continue # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA @@ -7737,7 +8121,9 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 11A97 ; ID_Continue # Mc SOYOMBO SIGN VISARGA 11A98..11A99 ; ID_Continue # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER 11A9D ; ID_Continue # Lo SOYOMBO MARK PLUTA -11AC0..11AF8 ; ID_Continue # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL +11AB0..11AF8 ; ID_Continue # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL +11BC0..11BE0 ; ID_Continue # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO +11BF0..11BF9 ; ID_Continue # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE 11C00..11C08 ; ID_Continue # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; ID_Continue # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C2F ; ID_Continue # Mc BHAIKSUKI VOWEL SIGN AA @@ -7779,15 +8165,40 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 11EE0..11EF2 ; ID_Continue # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA 11EF3..11EF4 ; ID_Continue # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6 ; ID_Continue # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +11F00..11F01 ; ID_Continue # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F02 ; ID_Continue # Lo KAWI SIGN REPHA +11F03 ; ID_Continue # Mc KAWI SIGN VISARGA +11F04..11F10 ; ID_Continue # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33 ; ID_Continue # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA +11F34..11F35 ; ID_Continue # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F36..11F3A ; ID_Continue # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F3E..11F3F ; ID_Continue # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI +11F40 ; ID_Continue # Mn KAWI VOWEL SIGN EU +11F41 ; ID_Continue # Mc KAWI SIGN KILLER +11F42 ; ID_Continue # Mn KAWI CONJOINER +11F50..11F59 ; ID_Continue # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE +11F5A ; ID_Continue # Mn KAWI SIGN NUKTA 11FB0 ; ID_Continue # Lo LISU LETTER YHA 12000..12399 ; ID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; ID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; ID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -13000..1342E ; ID_Continue # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +12F90..12FF0 ; ID_Continue # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 +13000..1342F ; ID_Continue # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13440 ; ID_Continue # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY +13441..13446 ; ID_Continue # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN +13447..13455 ; ID_Continue # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED +13460..143FA ; ID_Continue # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA 14400..14646 ; ID_Continue # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 +16100..1611D ; ID_Continue # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA +1611E..16129 ; ID_Continue # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK +1612A..1612C ; ID_Continue # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA +1612D..1612F ; ID_Continue # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA +16130..16139 ; ID_Continue # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE 16800..16A38 ; ID_Continue # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; ID_Continue # Lo [31] MRO LETTER TA..MRO LETTER TEK 16A60..16A69 ; ID_Continue # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE +16A70..16ABE ; ID_Continue # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA +16AC0..16AC9 ; ID_Continue # Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE 16AD0..16AED ; ID_Continue # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16AF0..16AF4 ; ID_Continue # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B00..16B2F ; ID_Continue # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU @@ -7796,6 +8207,10 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 16B50..16B59 ; ID_Continue # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE 16B63..16B77 ; ID_Continue # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; ID_Continue # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ +16D40..16D42 ; ID_Continue # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA +16D43..16D6A ; ID_Continue # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU +16D6B..16D6C ; ID_Continue # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT +16D70..16D79 ; ID_Continue # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE 16E40..16E7F ; ID_Continue # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y 16F00..16F4A ; ID_Continue # Lo [75] MIAO LETTER PA..MIAO LETTER RTE 16F4F ; ID_Continue # Mn MIAO SIGN CONSONANT MODIFIER BAR @@ -7809,9 +8224,14 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 16FF0..16FF1 ; ID_Continue # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY 17000..187F7 ; ID_Continue # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 18800..18CD5 ; ID_Continue # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5 -18D00..18D08 ; ID_Continue # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 -1B000..1B11E ; ID_Continue # Lo [287] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER N-MU-MO-2 +18CFF..18D08 ; ID_Continue # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08 +1AFF0..1AFF3 ; ID_Continue # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB ; ID_Continue # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE ; ID_Continue # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 +1B000..1B122 ; ID_Continue # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU +1B132 ; ID_Continue # Lo HIRAGANA LETTER SMALL KO 1B150..1B152 ; ID_Continue # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155 ; ID_Continue # Lo KATAKANA LETTER SMALL KO 1B164..1B167 ; ID_Continue # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; ID_Continue # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; ID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -7819,6 +8239,9 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 1BC80..1BC88 ; ID_Continue # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; ID_Continue # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1BC9D..1BC9E ; ID_Continue # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK +1CCF0..1CCF9 ; ID_Continue # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE +1CF00..1CF2D ; ID_Continue # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT +1CF30..1CF46 ; ID_Continue # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG 1D165..1D166 ; ID_Continue # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM 1D167..1D169 ; ID_Continue # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 1D16D..1D172 ; ID_Continue # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 @@ -7863,19 +8286,39 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 1DA84 ; ID_Continue # Mn SIGNWRITING LOCATION HEAD NECK 1DA9B..1DA9F ; ID_Continue # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 1DAA1..1DAAF ; ID_Continue # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 +1DF00..1DF09 ; ID_Continue # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0A ; ID_Continue # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK +1DF0B..1DF1E ; ID_Continue # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; ID_Continue # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK 1E000..1E006 ; ID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; ID_Continue # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; ID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; ID_Continue # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; ID_Continue # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E030..1E06D ; ID_Continue # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F ; ID_Continue # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E100..1E12C ; ID_Continue # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E130..1E136 ; ID_Continue # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E137..1E13D ; ID_Continue # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E140..1E149 ; ID_Continue # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE 1E14E ; ID_Continue # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ +1E290..1E2AD ; ID_Continue # Lo [30] TOTO LETTER PA..TOTO LETTER A +1E2AE ; ID_Continue # Mn TOTO SIGN RISING TONE 1E2C0..1E2EB ; ID_Continue # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH 1E2EC..1E2EF ; ID_Continue # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI 1E2F0..1E2F9 ; ID_Continue # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE +1E4D0..1E4EA ; ID_Continue # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB ; ID_Continue # Lm NAG MUNDARI SIGN OJOD +1E4EC..1E4EF ; ID_Continue # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH +1E4F0..1E4F9 ; ID_Continue # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE +1E5D0..1E5ED ; ID_Continue # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG +1E5EE..1E5EF ; ID_Continue # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR +1E5F0 ; ID_Continue # Lo OL ONAL SIGN HODDOND +1E5F1..1E5FA ; ID_Continue # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE +1E7E0..1E7E6 ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO +1E7E8..1E7EB ; ID_Continue # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE +1E7ED..1E7EE ; ID_Continue # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE +1E7F0..1E7FE ; ID_Continue # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE 1E800..1E8C4 ; ID_Continue # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E8D0..1E8D6 ; ID_Continue # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E900..1E943 ; ID_Continue # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA @@ -7916,16 +8359,18 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 1EEA5..1EEA9 ; ID_Continue # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; ID_Continue # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1FBF0..1FBF9 ; ID_Continue # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE -20000..2A6DD ; ID_Continue # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD -2A700..2B734 ; ID_Continue # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 +20000..2A6DF ; ID_Continue # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF +2A700..2B739 ; ID_Continue # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; ID_Continue # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; ID_Continue # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; ID_Continue # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 +2EBF0..2EE5D ; ID_Continue # Lo [622] CJK UNIFIED IDEOGRAPH-2EBF0..CJK UNIFIED IDEOGRAPH-2EE5D 2F800..2FA1D ; ID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; ID_Continue # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; ID_Continue # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 134434 +# Total code points: 144541 # ================================================ @@ -7995,8 +8440,10 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR 0828 ; XID_Start # Lm SAMARITAN MODIFIER LETTER I 0840..0858 ; XID_Start # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 0860..086A ; XID_Start # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA -08A0..08B4 ; XID_Start # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -08B6..08C7 ; XID_Start # Lo [18] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE +0870..0887 ; XID_Start # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT +0889..088E ; XID_Start # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL +08A0..08C8 ; XID_Start # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF +08C9 ; XID_Start # Lm ARABIC SMALL FARSI YEH 0904..0939 ; XID_Start # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093D ; XID_Start # Lo DEVANAGARI SIGN AVAGRAHA 0950 ; XID_Start # Lo DEVANAGARI OM @@ -8062,6 +8509,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR 0C2A..0C39 ; XID_Start # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; XID_Start # Lo TELUGU SIGN AVAGRAHA 0C58..0C5A ; XID_Start # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA +0C5D ; XID_Start # Lo TELUGU LETTER NAKAARA POLLU 0C60..0C61 ; XID_Start # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C80 ; XID_Start # Lo KANNADA SIGN SPACING CANDRABINDU 0C85..0C8C ; XID_Start # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L @@ -8070,7 +8518,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR 0CAA..0CB3 ; XID_Start # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; XID_Start # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA 0CBD ; XID_Start # Lo KANNADA SIGN AVAGRAHA -0CDE ; XID_Start # Lo KANNADA LETTER FA +0CDD..0CDE ; XID_Start # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA 0CE0..0CE1 ; XID_Start # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CF1..0CF2 ; XID_Start # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D04..0D0C ; XID_Start # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L @@ -8145,9 +8593,8 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR 16A0..16EA ; XID_Start # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EE..16F0 ; XID_Start # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; XID_Start # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC -1700..170C ; XID_Start # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711 ; XID_Start # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA -1720..1731 ; XID_Start # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA +1700..1711 ; XID_Start # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA +171F..1731 ; XID_Start # Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA 1740..1751 ; XID_Start # Lo [18] BUHID LETTER A..BUHID LETTER HA 1760..176C ; XID_Start # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA 176E..1770 ; XID_Start # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA @@ -8171,7 +8618,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR 1A20..1A54 ; XID_Start # Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA 1AA7 ; XID_Start # Lm TAI THAM SIGN MAI YAMOK 1B05..1B33 ; XID_Start # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA -1B45..1B4B ; XID_Start # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK +1B45..1B4C ; XID_Start # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA 1B83..1BA0 ; XID_Start # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA 1BAE..1BAF ; XID_Start # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA 1BBA..1BE5 ; XID_Start # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U @@ -8179,7 +8626,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR 1C4D..1C4F ; XID_Start # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA 1C5A..1C77 ; XID_Start # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; XID_Start # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -1C80..1C88 ; XID_Start # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C80..1C8A ; XID_Start # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE 1C90..1CBA ; XID_Start # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; XID_Start # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1CE9..1CEC ; XID_Start # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL @@ -8234,9 +8681,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR 2160..2182 ; XID_Start # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2183..2184 ; XID_Start # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; XID_Start # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND -2C00..2C2E ; XID_Start # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E ; XID_Start # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C60..2C7B ; XID_Start # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E +2C00..2C7B ; XID_Start # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; XID_Start # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; XID_Start # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; XID_Start # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA @@ -8274,8 +8719,7 @@ E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR 31A0..31BF ; XID_Start # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH 31F0..31FF ; XID_Start # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DBF ; XID_Start # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF -4E00..9FFC ; XID_Start # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC -A000..A014 ; XID_Start # Lo [21] YI SYLLABLE IT..YI SYLLABLE E +4E00..A014 ; XID_Start # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E A015 ; XID_Start # Lm YI SYLLABLE WU A016..A48C ; XID_Start # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; XID_Start # Lo [40] LISU LETTER BA..LISU LETTER OE @@ -8298,8 +8742,11 @@ A771..A787 ; XID_Start # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER A788 ; XID_Start # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; XID_Start # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; XID_Start # Lo LATIN LETTER SINOLOGICAL DOT -A790..A7BF ; XID_Start # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U -A7C2..A7CA ; XID_Start # L& [9] LATIN CAPITAL LETTER ANGLICANA W..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A790..A7CD ; XID_Start # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE +A7D0..A7D1 ; XID_Start # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D3 ; XID_Start # L& LATIN SMALL LETTER DOUBLE THORN +A7D5..A7DC ; XID_Start # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE +A7F2..A7F4 ; XID_Start # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F5..A7F6 ; XID_Start # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H A7F7 ; XID_Start # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; XID_Start # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE @@ -8414,9 +8861,21 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 104D8..104FB ; XID_Start # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; XID_Start # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; XID_Start # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW +10570..1057A ; XID_Start # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; XID_Start # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; XID_Start # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; XID_Start # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1 ; XID_Start # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; XID_Start # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; XID_Start # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; XID_Start # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE +105C0..105F3 ; XID_Start # Lo [52] TODHRI LETTER A..TODHRI LETTER OO 10600..10736 ; XID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; XID_Start # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; XID_Start # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 +10780..10785 ; XID_Start # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; XID_Start # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; XID_Start # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10800..10805 ; XID_Start # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; XID_Start # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; XID_Start # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO @@ -8447,14 +8906,24 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 10C80..10CB2 ; XID_Start # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; XID_Start # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 10D00..10D23 ; XID_Start # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA +10D4A..10D4D ; XID_Start # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE +10D4E ; XID_Start # Lm GARAY VOWEL LENGTH MARK +10D4F ; XID_Start # Lo GARAY SUKUN +10D50..10D65 ; XID_Start # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA +10D6F ; XID_Start # Lm GARAY REDUPLICATION MARK +10D70..10D85 ; XID_Start # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 10E80..10EA9 ; XID_Start # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET 10EB0..10EB1 ; XID_Start # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10EC2..10EC4 ; XID_Start # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW 10F00..10F1C ; XID_Start # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F27 ; XID_Start # Lo OLD SOGDIAN LIGATURE AYIN-DALETH 10F30..10F45 ; XID_Start # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN +10F70..10F81 ; XID_Start # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH 10FB0..10FC4 ; XID_Start # Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW 10FE0..10FF6 ; XID_Start # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH 11003..11037 ; XID_Start # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA +11071..11072 ; XID_Start # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O +11075 ; XID_Start # Lo BRAHMI LETTER OLD TAMIL LLA 11083..110AF ; XID_Start # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110D0..110E8 ; XID_Start # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 11103..11126 ; XID_Start # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA @@ -8468,6 +8937,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 111DC ; XID_Start # Lo SHARADA HEADSTROKE 11200..11211 ; XID_Start # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; XID_Start # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA +1123F..11240 ; XID_Start # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I 11280..11286 ; XID_Start # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; XID_Start # Lo MULTANI LETTER GHA 1128A..1128D ; XID_Start # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -8483,6 +8953,13 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1133D ; XID_Start # Lo GRANTHA SIGN AVAGRAHA 11350 ; XID_Start # Lo GRANTHA OM 1135D..11361 ; XID_Start # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL +11380..11389 ; XID_Start # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL +1138B ; XID_Start # Lo TULU-TIGALARI LETTER EE +1138E ; XID_Start # Lo TULU-TIGALARI LETTER AI +11390..113B5 ; XID_Start # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA +113B7 ; XID_Start # Lo TULU-TIGALARI SIGN AVAGRAHA +113D1 ; XID_Start # Lo TULU-TIGALARI REPHA +113D3 ; XID_Start # Lo TULU-TIGALARI SIGN PLUTA 11400..11434 ; XID_Start # Lo [53] NEWA LETTER A..NEWA LETTER HA 11447..1144A ; XID_Start # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 1145F..11461 ; XID_Start # Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA @@ -8496,6 +8973,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 11680..116AA ; XID_Start # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA 116B8 ; XID_Start # Lo TAKRI LETTER ARCHAIC KHA 11700..1171A ; XID_Start # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA +11740..11746 ; XID_Start # Lo [7] AHOM LETTER CA..AHOM LETTER LLA 11800..1182B ; XID_Start # Lo [44] DOGRA LETTER A..DOGRA LETTER RRA 118A0..118DF ; XID_Start # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118FF..11906 ; XID_Start # Lo [8] WARANG CITI OM..DIVES AKURU LETTER E @@ -8515,7 +8993,8 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 11A50 ; XID_Start # Lo SOYOMBO LETTER A 11A5C..11A89 ; XID_Start # Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA 11A9D ; XID_Start # Lo SOYOMBO MARK PLUTA -11AC0..11AF8 ; XID_Start # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL +11AB0..11AF8 ; XID_Start # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL +11BC0..11BE0 ; XID_Start # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO 11C00..11C08 ; XID_Start # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; XID_Start # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C40 ; XID_Start # Lo BHAIKSUKI SIGN AVAGRAHA @@ -8529,19 +9008,30 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 11D6A..11D89 ; XID_Start # Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA 11D98 ; XID_Start # Lo GUNJALA GONDI OM 11EE0..11EF2 ; XID_Start # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA +11F02 ; XID_Start # Lo KAWI SIGN REPHA +11F04..11F10 ; XID_Start # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33 ; XID_Start # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA 11FB0 ; XID_Start # Lo LISU LETTER YHA 12000..12399 ; XID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; XID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; XID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -13000..1342E ; XID_Start # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +12F90..12FF0 ; XID_Start # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 +13000..1342F ; XID_Start # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13441..13446 ; XID_Start # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN +13460..143FA ; XID_Start # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA 14400..14646 ; XID_Start # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 +16100..1611D ; XID_Start # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA 16800..16A38 ; XID_Start # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; XID_Start # Lo [31] MRO LETTER TA..MRO LETTER TEK +16A70..16ABE ; XID_Start # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA 16AD0..16AED ; XID_Start # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16B00..16B2F ; XID_Start # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU 16B40..16B43 ; XID_Start # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16B63..16B77 ; XID_Start # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; XID_Start # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ +16D40..16D42 ; XID_Start # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA +16D43..16D6A ; XID_Start # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU +16D6B..16D6C ; XID_Start # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT 16E40..16E7F ; XID_Start # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y 16F00..16F4A ; XID_Start # Lo [75] MIAO LETTER PA..MIAO LETTER RTE 16F50 ; XID_Start # Lo MIAO LETTER NASALIZATION @@ -8550,9 +9040,14 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 16FE3 ; XID_Start # Lm OLD CHINESE ITERATION MARK 17000..187F7 ; XID_Start # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 18800..18CD5 ; XID_Start # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5 -18D00..18D08 ; XID_Start # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 -1B000..1B11E ; XID_Start # Lo [287] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER N-MU-MO-2 +18CFF..18D08 ; XID_Start # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08 +1AFF0..1AFF3 ; XID_Start # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB ; XID_Start # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE ; XID_Start # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 +1B000..1B122 ; XID_Start # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU +1B132 ; XID_Start # Lo HIRAGANA LETTER SMALL KO 1B150..1B152 ; XID_Start # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155 ; XID_Start # Lo KATAKANA LETTER SMALL KO 1B164..1B167 ; XID_Start # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; XID_Start # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; XID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -8589,10 +9084,24 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1D78A..1D7A8 ; XID_Start # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7AA..1D7C2 ; XID_Start # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7CB ; XID_Start # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA +1DF00..1DF09 ; XID_Start # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0A ; XID_Start # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK +1DF0B..1DF1E ; XID_Start # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; XID_Start # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK +1E030..1E06D ; XID_Start # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE 1E100..1E12C ; XID_Start # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E137..1E13D ; XID_Start # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E14E ; XID_Start # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ +1E290..1E2AD ; XID_Start # Lo [30] TOTO LETTER PA..TOTO LETTER A 1E2C0..1E2EB ; XID_Start # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH +1E4D0..1E4EA ; XID_Start # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB ; XID_Start # Lm NAG MUNDARI SIGN OJOD +1E5D0..1E5ED ; XID_Start # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG +1E5F0 ; XID_Start # Lo OL ONAL SIGN HODDOND +1E7E0..1E7E6 ; XID_Start # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO +1E7E8..1E7EB ; XID_Start # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE +1E7ED..1E7EE ; XID_Start # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE +1E7F0..1E7FE ; XID_Start # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE 1E800..1E8C4 ; XID_Start # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E900..1E943 ; XID_Start # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1E94B ; XID_Start # Lm ADLAM NASALIZATION MARK @@ -8629,15 +9138,17 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1EEA1..1EEA3 ; XID_Start # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; XID_Start # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; XID_Start # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN -20000..2A6DD ; XID_Start # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD -2A700..2B734 ; XID_Start # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 +20000..2A6DF ; XID_Start # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF +2A700..2B739 ; XID_Start # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; XID_Start # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; XID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; XID_Start # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 +2EBF0..2EE5D ; XID_Start # Lo [622] CJK UNIFIED IDEOGRAPH-2EBF0..CJK UNIFIED IDEOGRAPH-2EE5D 2F800..2FA1D ; XID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; XID_Start # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; XID_Start # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF -# Total code points: 131459 +# Total code points: 141246 # ================================================ @@ -8738,9 +9249,12 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 0840..0858 ; XID_Continue # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 0859..085B ; XID_Continue # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK 0860..086A ; XID_Continue # Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA -08A0..08B4 ; XID_Continue # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW -08B6..08C7 ; XID_Continue # Lo [18] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE -08D3..08E1 ; XID_Continue # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA +0870..0887 ; XID_Continue # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT +0889..088E ; XID_Continue # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL +0897..089F ; XID_Continue # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA +08A0..08C8 ; XID_Continue # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF +08C9 ; XID_Continue # Lm ARABIC SMALL FARSI YEH +08CA..08E1 ; XID_Continue # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA 08E3..0902 ; XID_Continue # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 0903 ; XID_Continue # Mc DEVANAGARI SIGN VISARGA 0904..0939 ; XID_Continue # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA @@ -8878,6 +9392,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 0C0E..0C10 ; XID_Continue # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; XID_Continue # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; XID_Continue # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA +0C3C ; XID_Continue # Mn TELUGU SIGN NUKTA 0C3D ; XID_Continue # Lo TELUGU SIGN AVAGRAHA 0C3E..0C40 ; XID_Continue # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C41..0C44 ; XID_Continue # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR @@ -8885,6 +9400,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 0C4A..0C4D ; XID_Continue # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; XID_Continue # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C58..0C5A ; XID_Continue # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA +0C5D ; XID_Continue # Lo TELUGU LETTER NAKAARA POLLU 0C60..0C61 ; XID_Continue # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; XID_Continue # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F ; XID_Continue # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE @@ -8906,11 +9422,12 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 0CCA..0CCB ; XID_Continue # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CCC..0CCD ; XID_Continue # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0CD5..0CD6 ; XID_Continue # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0CDE ; XID_Continue # Lo KANNADA LETTER FA +0CDD..0CDE ; XID_Continue # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA 0CE0..0CE1 ; XID_Continue # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE2..0CE3 ; XID_Continue # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF ; XID_Continue # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2 ; XID_Continue # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA +0CF3 ; XID_Continue # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D00..0D01 ; XID_Continue # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; XID_Continue # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D04..0D0C ; XID_Continue # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L @@ -8964,7 +9481,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 0EBD ; XID_Continue # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; XID_Continue # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; XID_Continue # Lm LAO KO LA -0EC8..0ECD ; XID_Continue # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0EC8..0ECE ; XID_Continue # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN 0ED0..0ED9 ; XID_Continue # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE 0EDC..0EDF ; XID_Continue # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; XID_Continue # Lo TIBETAN SYLLABLE OM @@ -9050,11 +9567,12 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 16A0..16EA ; XID_Continue # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EE..16F0 ; XID_Continue # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; XID_Continue # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC -1700..170C ; XID_Continue # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711 ; XID_Continue # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA +1700..1711 ; XID_Continue # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA 1712..1714 ; XID_Continue # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA -1720..1731 ; XID_Continue # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA -1732..1734 ; XID_Continue # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD +1715 ; XID_Continue # Mc TAGALOG SIGN PAMUDPOD +171F..1731 ; XID_Continue # Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA +1732..1733 ; XID_Continue # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U +1734 ; XID_Continue # Mc HANUNOO SIGN PAMUDPOD 1740..1751 ; XID_Continue # Lo [18] BUHID LETTER A..BUHID LETTER HA 1752..1753 ; XID_Continue # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U 1760..176C ; XID_Continue # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA @@ -9073,6 +9591,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 17DD ; XID_Continue # Mn KHMER SIGN ATTHACAN 17E0..17E9 ; XID_Continue # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE 180B..180D ; XID_Continue # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE +180F ; XID_Continue # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR 1810..1819 ; XID_Continue # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1820..1842 ; XID_Continue # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; XID_Continue # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN @@ -9120,7 +9639,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1A90..1A99 ; XID_Continue # Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE 1AA7 ; XID_Continue # Lm TAI THAM SIGN MAI YAMOK 1AB0..1ABD ; XID_Continue # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW -1ABF..1AC0 ; XID_Continue # Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW +1ABF..1ACE ; XID_Continue # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T 1B00..1B03 ; XID_Continue # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B04 ; XID_Continue # Mc BALINESE SIGN BISAH 1B05..1B33 ; XID_Continue # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA @@ -9132,7 +9651,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1B3D..1B41 ; XID_Continue # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B42 ; XID_Continue # Mn BALINESE VOWEL SIGN PEPET 1B43..1B44 ; XID_Continue # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG -1B45..1B4B ; XID_Continue # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK +1B45..1B4C ; XID_Continue # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA 1B50..1B59 ; XID_Continue # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE 1B6B..1B73 ; XID_Continue # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG 1B80..1B81 ; XID_Continue # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR @@ -9165,7 +9684,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1C50..1C59 ; XID_Continue # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE 1C5A..1C77 ; XID_Continue # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; XID_Continue # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD -1C80..1C88 ; XID_Continue # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK +1C80..1C8A ; XID_Continue # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE 1C90..1CBA ; XID_Continue # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN 1CBD..1CBF ; XID_Continue # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN 1CD0..1CD2 ; XID_Continue # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA @@ -9186,8 +9705,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1D78 ; XID_Continue # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; XID_Continue # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; XID_Continue # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA -1DC0..1DF9 ; XID_Continue # Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW -1DFB..1DFF ; XID_Continue # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW +1DC0..1DFF ; XID_Continue # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 1E00..1F15 ; XID_Continue # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; XID_Continue # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; XID_Continue # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA @@ -9207,6 +9725,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1FE0..1FEC ; XID_Continue # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF2..1FF4 ; XID_Continue # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFC ; XID_Continue # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +200C..200D ; XID_Continue # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER 203F..2040 ; XID_Continue # Pc [2] UNDERTIE..CHARACTER TIE 2054 ; XID_Continue # Pc INVERTED UNDERTIE 2071 ; XID_Continue # Lm SUPERSCRIPT LATIN SMALL LETTER I @@ -9235,9 +9754,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 2160..2182 ; XID_Continue # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2183..2184 ; XID_Continue # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; XID_Continue # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND -2C00..2C2E ; XID_Continue # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E ; XID_Continue # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C60..2C7B ; XID_Continue # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E +2C00..2C7B ; XID_Continue # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; XID_Continue # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; XID_Continue # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; XID_Continue # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA @@ -9274,6 +9791,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 309D..309E ; XID_Continue # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 309F ; XID_Continue # Lo HIRAGANA DIGRAPH YORI 30A1..30FA ; XID_Continue # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO +30FB ; XID_Continue # Po KATAKANA MIDDLE DOT 30FC..30FE ; XID_Continue # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK 30FF ; XID_Continue # Lo KATAKANA DIGRAPH KOTO 3105..312F ; XID_Continue # Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN @@ -9281,8 +9799,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 31A0..31BF ; XID_Continue # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH 31F0..31FF ; XID_Continue # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DBF ; XID_Continue # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF -4E00..9FFC ; XID_Continue # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC -A000..A014 ; XID_Continue # Lo [21] YI SYLLABLE IT..YI SYLLABLE E +4E00..A014 ; XID_Continue # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E A015 ; XID_Continue # Lm YI SYLLABLE WU A016..A48C ; XID_Continue # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; XID_Continue # Lo [40] LISU LETTER BA..LISU LETTER OE @@ -9310,8 +9827,11 @@ A771..A787 ; XID_Continue # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETT A788 ; XID_Continue # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; XID_Continue # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; XID_Continue # Lo LATIN LETTER SINOLOGICAL DOT -A790..A7BF ; XID_Continue # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U -A7C2..A7CA ; XID_Continue # L& [9] LATIN CAPITAL LETTER ANGLICANA W..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY +A790..A7CD ; XID_Continue # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE +A7D0..A7D1 ; XID_Continue # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G +A7D3 ; XID_Continue # L& LATIN SMALL LETTER DOUBLE THORN +A7D5..A7DC ; XID_Continue # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE +A7F2..A7F4 ; XID_Continue # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F5..A7F6 ; XID_Continue # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H A7F7 ; XID_Continue # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; XID_Continue # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE @@ -9457,6 +9977,7 @@ FF10..FF19 ; XID_Continue # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NI FF21..FF3A ; XID_Continue # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF3F ; XID_Continue # Pc FULLWIDTH LOW LINE FF41..FF5A ; XID_Continue # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z +FF65 ; XID_Continue # Po HALFWIDTH KATAKANA MIDDLE DOT FF66..FF6F ; XID_Continue # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU FF70 ; XID_Continue # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF71..FF9D ; XID_Continue # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N @@ -9496,9 +10017,21 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 104D8..104FB ; XID_Continue # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; XID_Continue # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; XID_Continue # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW +10570..1057A ; XID_Continue # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA +1057C..1058A ; XID_Continue # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE +1058C..10592 ; XID_Continue # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE +10594..10595 ; XID_Continue # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE +10597..105A1 ; XID_Continue # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA +105A3..105B1 ; XID_Continue # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE +105B3..105B9 ; XID_Continue # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE +105BB..105BC ; XID_Continue # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE +105C0..105F3 ; XID_Continue # Lo [52] TODHRI LETTER A..TODHRI LETTER OO 10600..10736 ; XID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; XID_Continue # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; XID_Continue # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 +10780..10785 ; XID_Continue # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK +10787..107B0 ; XID_Continue # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK +107B2..107BA ; XID_Continue # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL 10800..10805 ; XID_Continue # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; XID_Continue # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; XID_Continue # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO @@ -9537,13 +10070,25 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 10D00..10D23 ; XID_Continue # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA 10D24..10D27 ; XID_Continue # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI 10D30..10D39 ; XID_Continue # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE +10D40..10D49 ; XID_Continue # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE +10D4A..10D4D ; XID_Continue # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE +10D4E ; XID_Continue # Lm GARAY VOWEL LENGTH MARK +10D4F ; XID_Continue # Lo GARAY SUKUN +10D50..10D65 ; XID_Continue # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA +10D69..10D6D ; XID_Continue # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK +10D6F ; XID_Continue # Lm GARAY REDUPLICATION MARK +10D70..10D85 ; XID_Continue # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA 10E80..10EA9 ; XID_Continue # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET 10EAB..10EAC ; XID_Continue # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK 10EB0..10EB1 ; XID_Continue # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10EC2..10EC4 ; XID_Continue # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW +10EFC..10EFF ; XID_Continue # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA 10F00..10F1C ; XID_Continue # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F27 ; XID_Continue # Lo OLD SOGDIAN LIGATURE AYIN-DALETH 10F30..10F45 ; XID_Continue # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN 10F46..10F50 ; XID_Continue # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW +10F70..10F81 ; XID_Continue # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH +10F82..10F85 ; XID_Continue # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW 10FB0..10FC4 ; XID_Continue # Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW 10FE0..10FF6 ; XID_Continue # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH 11000 ; XID_Continue # Mc BRAHMI SIGN CANDRABINDU @@ -9552,6 +10097,10 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 11003..11037 ; XID_Continue # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11038..11046 ; XID_Continue # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA 11066..1106F ; XID_Continue # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE +11070 ; XID_Continue # Mn BRAHMI SIGN OLD TAMIL VIRAMA +11071..11072 ; XID_Continue # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O +11073..11074 ; XID_Continue # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O +11075 ; XID_Continue # Lo BRAHMI LETTER OLD TAMIL LLA 1107F..11081 ; XID_Continue # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA 11082 ; XID_Continue # Mc KAITHI SIGN VISARGA 11083..110AF ; XID_Continue # Lo [45] KAITHI LETTER A..KAITHI LETTER HA @@ -9559,6 +10108,7 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 110B3..110B6 ; XID_Continue # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B7..110B8 ; XID_Continue # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU 110B9..110BA ; XID_Continue # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA +110C2 ; XID_Continue # Mn KAITHI VOWEL SIGN VOCALIC R 110D0..110E8 ; XID_Continue # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 110F0..110F9 ; XID_Continue # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE 11100..11102 ; XID_Continue # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA @@ -9595,6 +10145,8 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 11235 ; XID_Continue # Mc KHOJKI SIGN VIRAMA 11236..11237 ; XID_Continue # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; XID_Continue # Mn KHOJKI SIGN SUKUN +1123F..11240 ; XID_Continue # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I +11241 ; XID_Continue # Mn KHOJKI VOWEL SIGN VOCALIC R 11280..11286 ; XID_Continue # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; XID_Continue # Lo MULTANI LETTER GHA 1128A..1128D ; XID_Continue # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -9626,6 +10178,24 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 11362..11363 ; XID_Continue # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 11366..1136C ; XID_Continue # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; XID_Continue # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA +11380..11389 ; XID_Continue # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL +1138B ; XID_Continue # Lo TULU-TIGALARI LETTER EE +1138E ; XID_Continue # Lo TULU-TIGALARI LETTER AI +11390..113B5 ; XID_Continue # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA +113B7 ; XID_Continue # Lo TULU-TIGALARI SIGN AVAGRAHA +113B8..113BA ; XID_Continue # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II +113BB..113C0 ; XID_Continue # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL +113C2 ; XID_Continue # Mc TULU-TIGALARI VOWEL SIGN EE +113C5 ; XID_Continue # Mc TULU-TIGALARI VOWEL SIGN AI +113C7..113CA ; XID_Continue # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA +113CC..113CD ; XID_Continue # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA +113CE ; XID_Continue # Mn TULU-TIGALARI SIGN VIRAMA +113CF ; XID_Continue # Mc TULU-TIGALARI SIGN LOOPED VIRAMA +113D0 ; XID_Continue # Mn TULU-TIGALARI CONJOINER +113D1 ; XID_Continue # Lo TULU-TIGALARI REPHA +113D2 ; XID_Continue # Mn TULU-TIGALARI GEMINATION MARK +113D3 ; XID_Continue # Lo TULU-TIGALARI SIGN PLUTA +113E1..113E2 ; XID_Continue # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA 11400..11434 ; XID_Continue # Lo [53] NEWA LETTER A..NEWA LETTER HA 11435..11437 ; XID_Continue # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II 11438..1143F ; XID_Continue # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI @@ -9677,13 +10247,17 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 116B7 ; XID_Continue # Mn TAKRI SIGN NUKTA 116B8 ; XID_Continue # Lo TAKRI LETTER ARCHAIC KHA 116C0..116C9 ; XID_Continue # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE +116D0..116E3 ; XID_Continue # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE 11700..1171A ; XID_Continue # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA -1171D..1171F ; XID_Continue # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +1171D ; XID_Continue # Mn AHOM CONSONANT SIGN MEDIAL LA +1171E ; XID_Continue # Mc AHOM CONSONANT SIGN MEDIAL RA +1171F ; XID_Continue # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA 11720..11721 ; XID_Continue # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA 11722..11725 ; XID_Continue # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11726 ; XID_Continue # Mc AHOM VOWEL SIGN E 11727..1172B ; XID_Continue # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 11730..11739 ; XID_Continue # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE +11740..11746 ; XID_Continue # Lo [7] AHOM LETTER CA..AHOM LETTER LLA 11800..1182B ; XID_Continue # Lo [44] DOGRA LETTER A..DOGRA LETTER RRA 1182C..1182E ; XID_Continue # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II 1182F..11837 ; XID_Continue # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA @@ -9734,7 +10308,9 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 11A97 ; XID_Continue # Mc SOYOMBO SIGN VISARGA 11A98..11A99 ; XID_Continue # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER 11A9D ; XID_Continue # Lo SOYOMBO MARK PLUTA -11AC0..11AF8 ; XID_Continue # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL +11AB0..11AF8 ; XID_Continue # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL +11BC0..11BE0 ; XID_Continue # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO +11BF0..11BF9 ; XID_Continue # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE 11C00..11C08 ; XID_Continue # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; XID_Continue # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C2F ; XID_Continue # Mc BHAIKSUKI VOWEL SIGN AA @@ -9776,15 +10352,40 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 11EE0..11EF2 ; XID_Continue # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA 11EF3..11EF4 ; XID_Continue # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6 ; XID_Continue # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +11F00..11F01 ; XID_Continue # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F02 ; XID_Continue # Lo KAWI SIGN REPHA +11F03 ; XID_Continue # Mc KAWI SIGN VISARGA +11F04..11F10 ; XID_Continue # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33 ; XID_Continue # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA +11F34..11F35 ; XID_Continue # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F36..11F3A ; XID_Continue # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F3E..11F3F ; XID_Continue # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI +11F40 ; XID_Continue # Mn KAWI VOWEL SIGN EU +11F41 ; XID_Continue # Mc KAWI SIGN KILLER +11F42 ; XID_Continue # Mn KAWI CONJOINER +11F50..11F59 ; XID_Continue # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE +11F5A ; XID_Continue # Mn KAWI SIGN NUKTA 11FB0 ; XID_Continue # Lo LISU LETTER YHA 12000..12399 ; XID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; XID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; XID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -13000..1342E ; XID_Continue # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +12F90..12FF0 ; XID_Continue # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 +13000..1342F ; XID_Continue # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13440 ; XID_Continue # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY +13441..13446 ; XID_Continue # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN +13447..13455 ; XID_Continue # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED +13460..143FA ; XID_Continue # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA 14400..14646 ; XID_Continue # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 +16100..1611D ; XID_Continue # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA +1611E..16129 ; XID_Continue # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK +1612A..1612C ; XID_Continue # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA +1612D..1612F ; XID_Continue # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA +16130..16139 ; XID_Continue # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE 16800..16A38 ; XID_Continue # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; XID_Continue # Lo [31] MRO LETTER TA..MRO LETTER TEK 16A60..16A69 ; XID_Continue # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE +16A70..16ABE ; XID_Continue # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA +16AC0..16AC9 ; XID_Continue # Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE 16AD0..16AED ; XID_Continue # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16AF0..16AF4 ; XID_Continue # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B00..16B2F ; XID_Continue # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU @@ -9793,6 +10394,10 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 16B50..16B59 ; XID_Continue # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE 16B63..16B77 ; XID_Continue # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; XID_Continue # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ +16D40..16D42 ; XID_Continue # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA +16D43..16D6A ; XID_Continue # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU +16D6B..16D6C ; XID_Continue # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT +16D70..16D79 ; XID_Continue # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE 16E40..16E7F ; XID_Continue # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y 16F00..16F4A ; XID_Continue # Lo [75] MIAO LETTER PA..MIAO LETTER RTE 16F4F ; XID_Continue # Mn MIAO SIGN CONSONANT MODIFIER BAR @@ -9806,9 +10411,14 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 16FF0..16FF1 ; XID_Continue # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY 17000..187F7 ; XID_Continue # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 18800..18CD5 ; XID_Continue # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5 -18D00..18D08 ; XID_Continue # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 -1B000..1B11E ; XID_Continue # Lo [287] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER N-MU-MO-2 +18CFF..18D08 ; XID_Continue # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08 +1AFF0..1AFF3 ; XID_Continue # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 +1AFF5..1AFFB ; XID_Continue # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 +1AFFD..1AFFE ; XID_Continue # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 +1B000..1B122 ; XID_Continue # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU +1B132 ; XID_Continue # Lo HIRAGANA LETTER SMALL KO 1B150..1B152 ; XID_Continue # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155 ; XID_Continue # Lo KATAKANA LETTER SMALL KO 1B164..1B167 ; XID_Continue # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; XID_Continue # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; XID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -9816,6 +10426,9 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 1BC80..1BC88 ; XID_Continue # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; XID_Continue # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1BC9D..1BC9E ; XID_Continue # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK +1CCF0..1CCF9 ; XID_Continue # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE +1CF00..1CF2D ; XID_Continue # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT +1CF30..1CF46 ; XID_Continue # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG 1D165..1D166 ; XID_Continue # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM 1D167..1D169 ; XID_Continue # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 1D16D..1D172 ; XID_Continue # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 @@ -9860,19 +10473,39 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 1DA84 ; XID_Continue # Mn SIGNWRITING LOCATION HEAD NECK 1DA9B..1DA9F ; XID_Continue # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 1DAA1..1DAAF ; XID_Continue # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 +1DF00..1DF09 ; XID_Continue # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK +1DF0A ; XID_Continue # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK +1DF0B..1DF1E ; XID_Continue # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; XID_Continue # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK 1E000..1E006 ; XID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; XID_Continue # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; XID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; XID_Continue # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; XID_Continue # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E030..1E06D ; XID_Continue # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F ; XID_Continue # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E100..1E12C ; XID_Continue # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E130..1E136 ; XID_Continue # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E137..1E13D ; XID_Continue # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E140..1E149 ; XID_Continue # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE 1E14E ; XID_Continue # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ +1E290..1E2AD ; XID_Continue # Lo [30] TOTO LETTER PA..TOTO LETTER A +1E2AE ; XID_Continue # Mn TOTO SIGN RISING TONE 1E2C0..1E2EB ; XID_Continue # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH 1E2EC..1E2EF ; XID_Continue # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI 1E2F0..1E2F9 ; XID_Continue # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE +1E4D0..1E4EA ; XID_Continue # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB ; XID_Continue # Lm NAG MUNDARI SIGN OJOD +1E4EC..1E4EF ; XID_Continue # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH +1E4F0..1E4F9 ; XID_Continue # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE +1E5D0..1E5ED ; XID_Continue # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG +1E5EE..1E5EF ; XID_Continue # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR +1E5F0 ; XID_Continue # Lo OL ONAL SIGN HODDOND +1E5F1..1E5FA ; XID_Continue # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE +1E7E0..1E7E6 ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO +1E7E8..1E7EB ; XID_Continue # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE +1E7ED..1E7EE ; XID_Continue # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE +1E7F0..1E7FE ; XID_Continue # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE 1E800..1E8C4 ; XID_Continue # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E8D0..1E8D6 ; XID_Continue # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E900..1E943 ; XID_Continue # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA @@ -9913,16 +10546,18 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 1EEA5..1EEA9 ; XID_Continue # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; XID_Continue # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1FBF0..1FBF9 ; XID_Continue # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE -20000..2A6DD ; XID_Continue # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD -2A700..2B734 ; XID_Continue # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 +20000..2A6DF ; XID_Continue # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF +2A700..2B739 ; XID_Continue # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; XID_Continue # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; XID_Continue # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; XID_Continue # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 +2EBF0..2EE5D ; XID_Continue # Lo [622] CJK UNIFIED IDEOGRAPH-2EBF0..CJK UNIFIED IDEOGRAPH-2EE5D 2F800..2FA1D ; XID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; XID_Continue # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; XID_Continue # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF E0100..E01EF ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 134415 +# Total code points: 144522 # ================================================ @@ -9933,8 +10568,17 @@ E0100..E01EF ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTO # + Variation_Selector # - White_Space # - FFF9..FFFB (Interlinear annotation format characters) -# - 13430..13438 (Egyptian hieroglyph format characters) +# - 13430..13440 (Egyptian hieroglyph format characters) # - Prepended_Concatenation_Mark (Exceptional format characters that should be visible) +# +# There are currently no stability guarantees for DICP. However, the +# values of DICP interact with the derivation of XID_Continue +# and NFKC_CF, for which there are stability guarantees. +# Maintainers of this property should note that in the +# unlikely case that the DICP value changes for an existing character +# which is also XID_Continue=Yes, then exceptions must be put +# in place to ensure that the NFKC_CF mapping value for that +# existing character does not change. 00AD ; Default_Ignorable_Code_Point # Cf SOFT HYPHEN 034F ; Default_Ignorable_Code_Point # Mn COMBINING GRAPHEME JOINER @@ -9943,6 +10587,7 @@ E0100..E01EF ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTO 17B4..17B5 ; Default_Ignorable_Code_Point # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA 180B..180D ; Default_Ignorable_Code_Point # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 180E ; Default_Ignorable_Code_Point # Cf MONGOLIAN VOWEL SEPARATOR +180F ; Default_Ignorable_Code_Point # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR 200B..200F ; Default_Ignorable_Code_Point # Cf [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK 202A..202E ; Default_Ignorable_Code_Point # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE 2060..2064 ; Default_Ignorable_Code_Point # Cf [5] WORD JOINER..INVISIBLE PLUS @@ -9963,7 +10608,7 @@ E0080..E00FF ; Default_Ignorable_Code_Point # Cn [128] .... -# Total code points: 4173 +# Total code points: 4174 # ================================================ @@ -9997,7 +10642,8 @@ E01F0..E0FFF ; Default_Ignorable_Code_Point # Cn [3600] .................... +23E2..2429 ; Pattern_Syntax # So [72] WHITE TRAPEZIUM..SYMBOL FOR DELETE MEDIUM SHADE FORM +242A..243F ; Pattern_Syntax # Cn [22] .. 2440..244A ; Pattern_Syntax # So [11] OCR HOOK..OCR DOUBLE BACKSLASH 244B..245F ; Pattern_Syntax # Cn [21] .. 2500..25B6 ; Pattern_Syntax # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE @@ -1644,8 +1851,17 @@ E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S 2E42 ; Pattern_Syntax # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK 2E43..2E4F ; Pattern_Syntax # Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER 2E50..2E51 ; Pattern_Syntax # So [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR -2E52 ; Pattern_Syntax # Po TIRONIAN SIGN CAPITAL ET -2E53..2E7F ; Pattern_Syntax # Cn [45] .. +2E52..2E54 ; Pattern_Syntax # Po [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK +2E55 ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH STROKE +2E56 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH STROKE +2E57 ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE +2E58 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE +2E59 ; Pattern_Syntax # Ps TOP HALF LEFT PARENTHESIS +2E5A ; Pattern_Syntax # Pe TOP HALF RIGHT PARENTHESIS +2E5B ; Pattern_Syntax # Ps BOTTOM HALF LEFT PARENTHESIS +2E5C ; Pattern_Syntax # Pe BOTTOM HALF RIGHT PARENTHESIS +2E5D ; Pattern_Syntax # Pd OBLIQUE HYPHEN +2E5E..2E7F ; Pattern_Syntax # Cn [34] .. 3001..3003 ; Pattern_Syntax # Po [3] IDEOGRAPHIC COMMA..DITTO MARK 3008 ; Pattern_Syntax # Ps LEFT ANGLE BRACKET 3009 ; Pattern_Syntax # Pe RIGHT ANGLE BRACKET @@ -1682,11 +1898,12 @@ FE45..FE46 ; Pattern_Syntax # Po [2] SESAME DOT..WHITE SESAME DOT 0600..0605 ; Prepended_Concatenation_Mark # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE 06DD ; Prepended_Concatenation_Mark # Cf ARABIC END OF AYAH 070F ; Prepended_Concatenation_Mark # Cf SYRIAC ABBREVIATION MARK +0890..0891 ; Prepended_Concatenation_Mark # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE 08E2 ; Prepended_Concatenation_Mark # Cf ARABIC DISPUTED END OF AYAH 110BD ; Prepended_Concatenation_Mark # Cf KAITHI NUMBER SIGN 110CD ; Prepended_Concatenation_Mark # Cf KAITHI NUMBER SIGN ABOVE -# Total code points: 11 +# Total code points: 13 # ================================================ @@ -1694,4 +1911,18 @@ FE45..FE46 ; Pattern_Syntax # Po [2] SESAME DOT..WHITE SESAME DOT # Total code points: 26 +# ================================================ + +0654..0655 ; Modifier_Combining_Mark # Mn [2] ARABIC HAMZA ABOVE..ARABIC HAMZA BELOW +0658 ; Modifier_Combining_Mark # Mn ARABIC MARK NOON GHUNNA +06DC ; Modifier_Combining_Mark # Mn ARABIC SMALL HIGH SEEN +06E3 ; Modifier_Combining_Mark # Mn ARABIC SMALL LOW SEEN +06E7..06E8 ; Modifier_Combining_Mark # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON +08CA..08CB ; Modifier_Combining_Mark # Mn [2] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW +08CD..08CF ; Modifier_Combining_Mark # Mn [3] ARABIC SMALL HIGH ZAH..ARABIC LARGE ROUND DOT BELOW +08D3 ; Modifier_Combining_Mark # Mn ARABIC SMALL LOW WAW +08F3 ; Modifier_Combining_Mark # Mn ARABIC SMALL HIGH WAW + +# Total code points: 14 + # EOF diff --git a/lib/res/SpecialCasing.txt b/lib/res/SpecialCasing.txt index 2a1a5a1..e83aba4 100644 --- a/lib/res/SpecialCasing.txt +++ b/lib/res/SpecialCasing.txt @@ -1,28 +1,28 @@ -# SpecialCasing-13.0.0.txt -# Date: 2019-09-08, 23:31:24 GMT -# © 2019 Unicode®, Inc. +# SpecialCasing-16.0.0.txt +# Date: 2024-05-10, 22:49:00 GMT +# © 2024 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use and license, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # Special Casing # -# This file is a supplement to the UnicodeData.txt file. It does not define any -# properties, but rather provides additional information about the casing of -# Unicode characters, for situations when casing incurs a change in string length -# or is dependent on context or locale. For compatibility, the UnicodeData.txt -# file only contains simple case mappings for characters where they are one-to-one -# and independent of context and language. The data in this file, combined with +# This file is a supplement to the UnicodeData.txt file. The data in this file, combined with # the simple case mappings in UnicodeData.txt, defines the full case mappings # Lowercase_Mapping (lc), Titlecase_Mapping (tc), and Uppercase_Mapping (uc). +# For compatibility, the UnicodeData.txt file only contains simple case mappings +# for characters where they are one-to-one (and independent of context and language). +# +# For historical reasons, this file also provides additional information about the casing +# of Unicode characters for selected situations when casing is dependent on context or locale. # # Note that the preferred mechanism for defining tailored casing operations is # the Unicode Common Locale Data Repository (CLDR). For more information, see the # discussion of case mappings and case algorithms in the Unicode Standard. # -# All code points not listed in this file that do not have a simple case mappings +# All code points not listed in this file that do not have simple case mappings # in UnicodeData.txt map to themselves. # ================================================================================ # Format diff --git a/lib/res/UnicodeData.txt b/lib/res/UnicodeData.txt index e22f967..64258a3 100644 --- a/lib/res/UnicodeData.txt +++ b/lib/res/UnicodeData.txt @@ -409,7 +409,7 @@ 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;;;; +019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;A7DC;;A7DC 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 @@ -610,7 +610,7 @@ 0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;A7AC;;A7AC 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;;;; +0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;A7CB;;A7CB 0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;A78D;;A78D 0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;A7AA;;A7AA 0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; @@ -1525,6 +1525,7 @@ 061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;; 061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; 061C;ARABIC LETTER MARK;Cf;0;AL;;;;;N;;;;; +061D;ARABIC END OF TEXT MARK;Po;0;AL;;;;;N;;;;; 061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; 061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; 0620;ARABIC LETTER KASHMIRI YEH;Lo;0;AL;;;;;N;;;;; @@ -2089,6 +2090,48 @@ 0868;SYRIAC LETTER MALAYALAM LLA;Lo;0;AL;;;;;N;;;;; 0869;SYRIAC LETTER MALAYALAM LLLA;Lo;0;AL;;;;;N;;;;; 086A;SYRIAC LETTER MALAYALAM SSA;Lo;0;AL;;;;;N;;;;; +0870;ARABIC LETTER ALEF WITH ATTACHED FATHA;Lo;0;AL;;;;;N;;;;; +0871;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA;Lo;0;AL;;;;;N;;;;; +0872;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE;Lo;0;AL;;;;;N;;;;; +0873;ARABIC LETTER ALEF WITH LEFT MIDDLE STROKE;Lo;0;AL;;;;;N;;;;; +0874;ARABIC LETTER ALEF WITH ATTACHED KASRA;Lo;0;AL;;;;;N;;;;; +0875;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA;Lo;0;AL;;;;;N;;;;; +0876;ARABIC LETTER ALEF WITH ATTACHED ROUND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0877;ARABIC LETTER ALEF WITH ATTACHED RIGHT ROUND DOT;Lo;0;AL;;;;;N;;;;; +0878;ARABIC LETTER ALEF WITH ATTACHED LEFT ROUND DOT;Lo;0;AL;;;;;N;;;;; +0879;ARABIC LETTER ALEF WITH ATTACHED ROUND DOT BELOW;Lo;0;AL;;;;;N;;;;; +087A;ARABIC LETTER ALEF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087B;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087C;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087D;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087E;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND LEFT RING;Lo;0;AL;;;;;N;;;;; +087F;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND LEFT RING;Lo;0;AL;;;;;N;;;;; +0880;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND LEFT RING;Lo;0;AL;;;;;N;;;;; +0881;ARABIC LETTER ALEF WITH ATTACHED RIGHT HAMZA;Lo;0;AL;;;;;N;;;;; +0882;ARABIC LETTER ALEF WITH ATTACHED LEFT HAMZA;Lo;0;AL;;;;;N;;;;; +0883;ARABIC TATWEEL WITH OVERSTRUCK HAMZA;Lo;0;AL;;;;;N;;;;; +0884;ARABIC TATWEEL WITH OVERSTRUCK WAW;Lo;0;AL;;;;;N;;;;; +0885;ARABIC TATWEEL WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +0886;ARABIC LETTER THIN YEH;Lo;0;AL;;;;;N;;;;; +0887;ARABIC BASELINE ROUND DOT;Lo;0;AL;;;;;N;;;;; +0888;ARABIC RAISED ROUND DOT;Sk;0;AL;;;;;N;;;;; +0889;ARABIC LETTER NOON WITH INVERTED SMALL V;Lo;0;AL;;;;;N;;;;; +088A;ARABIC LETTER HAH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; +088B;ARABIC LETTER TAH WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +088C;ARABIC LETTER TAH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +088D;ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;; +088E;ARABIC VERTICAL TAIL;Lo;0;AL;;;;;N;;;;; +0890;ARABIC POUND MARK ABOVE;Cf;0;AN;;;;;N;;;;; +0891;ARABIC PIASTRE MARK ABOVE;Cf;0;AN;;;;;N;;;;; +0897;ARABIC PEPET;Mn;230;NSM;;;;;N;;;;; +0898;ARABIC SMALL HIGH WORD AL-JUZ;Mn;230;NSM;;;;;N;;;;; +0899;ARABIC SMALL LOW WORD ISHMAAM;Mn;220;NSM;;;;;N;;;;; +089A;ARABIC SMALL LOW WORD IMAALA;Mn;220;NSM;;;;;N;;;;; +089B;ARABIC SMALL LOW WORD TASHEEL;Mn;220;NSM;;;;;N;;;;; +089C;ARABIC MADDA WAAJIB;Mn;230;NSM;;;;;N;;;;; +089D;ARABIC SUPERSCRIPT ALEF MOKHASSAS;Mn;230;NSM;;;;;N;;;;; +089E;ARABIC DOUBLED MADDA;Mn;230;NSM;;;;;N;;;;; +089F;ARABIC HALF MADDA OVER MADDA;Mn;230;NSM;;;;;N;;;;; 08A0;ARABIC LETTER BEH WITH SMALL V BELOW;Lo;0;AL;;;;;N;;;;; 08A1;ARABIC LETTER BEH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; 08A2;ARABIC LETTER JEEM WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; @@ -2110,6 +2153,7 @@ 08B2;ARABIC LETTER ZAIN WITH INVERTED V ABOVE;Lo;0;AL;;;;;N;;;;; 08B3;ARABIC LETTER AIN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; 08B4;ARABIC LETTER KAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +08B5;ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 08B6;ARABIC LETTER BEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;; 08B7;ARABIC LETTER PEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;; 08B8;ARABIC LETTER TEH WITH SMALL TEH ABOVE;Lo;0;AL;;;;;N;;;;; @@ -2128,6 +2172,17 @@ 08C5;ARABIC LETTER JEEM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 08C6;ARABIC LETTER JEEM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; 08C7;ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;; +08C8;ARABIC LETTER GRAF;Lo;0;AL;;;;;N;;;;; +08C9;ARABIC SMALL FARSI YEH;Lm;0;AL;;;;;N;;;;; +08CA;ARABIC SMALL HIGH FARSI YEH;Mn;230;NSM;;;;;N;;;;; +08CB;ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW;Mn;230;NSM;;;;;N;;;;; +08CC;ARABIC SMALL HIGH WORD SAH;Mn;230;NSM;;;;;N;;;;; +08CD;ARABIC SMALL HIGH ZAH;Mn;230;NSM;;;;;N;;;;; +08CE;ARABIC LARGE ROUND DOT ABOVE;Mn;230;NSM;;;;;N;;;;; +08CF;ARABIC LARGE ROUND DOT BELOW;Mn;220;NSM;;;;;N;;;;; +08D0;ARABIC SUKUN BELOW;Mn;220;NSM;;;;;N;;;;; +08D1;ARABIC LARGE CIRCLE BELOW;Mn;220;NSM;;;;;N;;;;; +08D2;ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW;Mn;220;NSM;;;;;N;;;;; 08D3;ARABIC SMALL LOW WAW;Mn;220;NSM;;;;;N;;;;; 08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;; 08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;; @@ -2786,6 +2841,7 @@ 0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; 0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; 0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; +0C3C;TELUGU SIGN NUKTA;Mn;7;NSM;;;;;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;;;;; @@ -2806,6 +2862,7 @@ 0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; 0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; 0C5A;TELUGU LETTER RRRA;Lo;0;L;;;;;N;;;;; +0C5D;TELUGU LETTER NAKAARA POLLU;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;;;;; @@ -2901,6 +2958,7 @@ 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;;;;; +0CDD;KANNADA LETTER NAKAARA POLLU;Lo;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;;;;; @@ -2918,6 +2976,7 @@ 0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0CF1;KANNADA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;; 0CF2;KANNADA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;; +0CF3;KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT;Mc;0;L;;;;;N;;;;; 0D00;MALAYALAM SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;; 0D01;MALAYALAM SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; @@ -3282,6 +3341,7 @@ 0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; 0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; 0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; +0ECE;LAO YAMAKKAN;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;;;;; @@ -5258,6 +5318,7 @@ 170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; 170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; 170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; +170D;TAGALOG LETTER RA;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;;;;; @@ -5265,6 +5326,8 @@ 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;;;;; +1715;TAGALOG SIGN PAMUDPOD;Mc;9;L;;;;;N;;;;; +171F;TAGALOG LETTER ARCHAIC RA;Lo;0;L;;;;;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;;;;; @@ -5285,7 +5348,7 @@ 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;;;;; +1734;HANUNOO SIGN PAMUDPOD;Mc;9;L;;;;;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;;;;; @@ -5455,6 +5518,7 @@ 180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; 180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; 180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;; +180F;MONGOLIAN FREE VARIATION SELECTOR FOUR;Mn;0;NSM;;;;;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;;;;; @@ -6059,6 +6123,20 @@ 1ABE;COMBINING PARENTHESES OVERLAY;Me;0;NSM;;;;;N;;;;; 1ABF;COMBINING LATIN SMALL LETTER W BELOW;Mn;220;NSM;;;;;N;;;;; 1AC0;COMBINING LATIN SMALL LETTER TURNED W BELOW;Mn;220;NSM;;;;;N;;;;; +1AC1;COMBINING LEFT PARENTHESIS ABOVE LEFT;Mn;230;NSM;;;;;N;;;;; +1AC2;COMBINING RIGHT PARENTHESIS ABOVE RIGHT;Mn;230;NSM;;;;;N;;;;; +1AC3;COMBINING LEFT PARENTHESIS BELOW LEFT;Mn;220;NSM;;;;;N;;;;; +1AC4;COMBINING RIGHT PARENTHESIS BELOW RIGHT;Mn;220;NSM;;;;;N;;;;; +1AC5;COMBINING SQUARE BRACKETS ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC6;COMBINING NUMBER SIGN ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC7;COMBINING INVERTED DOUBLE ARCH ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC8;COMBINING PLUS SIGN ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC9;COMBINING DOUBLE PLUS SIGN ABOVE;Mn;230;NSM;;;;;N;;;;; +1ACA;COMBINING DOUBLE PLUS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; +1ACB;COMBINING TRIPLE ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; +1ACC;COMBINING LATIN SMALL LETTER INSULAR G;Mn;230;NSM;;;;;N;;;;; +1ACD;COMBINING LATIN SMALL LETTER INSULAR R;Mn;230;NSM;;;;;N;;;;; +1ACE;COMBINING LATIN SMALL LETTER INSULAR T;Mn;230;NSM;;;;;N;;;;; 1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;; 1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;; 1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;; @@ -6135,6 +6213,9 @@ 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;;;;; +1B4C;BALINESE LETTER ARCHAIC JNYA;Lo;0;L;;;;;N;;;;; +1B4E;BALINESE INVERTED CARIK SIKI;Po;0;L;;;;;N;;;;; +1B4F;BALINESE INVERTED CARIK PAREREN;Po;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;;;;; @@ -6180,6 +6261,9 @@ 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;;;;; +1B7D;BALINESE PANTI LANTANG;Po;0;L;;;;;N;;;;; +1B7E;BALINESE PAMADA LANTANG;Po;0;L;;;;;N;;;;; +1B7F;BALINESE PANTI BAWAK;Po;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;;;;; @@ -6431,6 +6515,8 @@ 1C86;CYRILLIC SMALL LETTER TALL HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A 1C87;CYRILLIC SMALL LETTER TALL YAT;Ll;0;L;;;;;N;;;0462;;0462 1C88;CYRILLIC SMALL LETTER UNBLENDED UK;Ll;0;L;;;;;N;;;A64A;;A64A +1C89;CYRILLIC CAPITAL LETTER TJE;Lu;0;L;;;;;N;;;;1C8A; +1C8A;CYRILLIC SMALL LETTER TJE;Ll;0;L;;;;;N;;;1C89;;1C89 1C90;GEORGIAN MTAVRULI CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;10D0; 1C91;GEORGIAN MTAVRULI CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;10D1; 1C92;GEORGIAN MTAVRULI CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;10D2; @@ -6778,6 +6864,7 @@ 1DF7;COMBINING KAVYKA ABOVE LEFT;Mn;228;NSM;;;;;N;;;;; 1DF8;COMBINING DOT ABOVE LEFT;Mn;228;NSM;;;;;N;;;;; 1DF9;COMBINING WIDE INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;;;;; +1DFA;COMBINING DOT BELOW LEFT;Mn;218;NSM;;;;;N;;;;; 1DFB;COMBINING DELETION MARK;Mn;230;NSM;;;;;N;;;;; 1DFC;COMBINING DOUBLE INVERTED BREVE BELOW;Mn;233;NSM;;;;;N;;;;; 1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;; @@ -7457,6 +7544,7 @@ 20BD;RUBLE SIGN;Sc;0;ET;;;;;N;;;;; 20BE;LARI SIGN;Sc;0;ET;;;;;N;;;;; 20BF;BITCOIN SIGN;Sc;0;ET;;;;;N;;;;; +20C0;SOM 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;;;; @@ -7851,7 +7939,7 @@ 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;;;;; +226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;Y;;;;; 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;;;; @@ -8293,6 +8381,9 @@ 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;;;;; +2427;SYMBOL FOR DELETE SQUARE CHECKER BOARD FORM;So;0;ON;;;;;N;;;;; +2428;SYMBOL FOR DELETE RECTANGULAR CHECKER BOARD FORM;So;0;ON;;;;;N;;;;; +2429;SYMBOL FOR DELETE MEDIUM SHADE FORM;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;;;;; @@ -10300,6 +10391,7 @@ 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; +2C2F;GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI;Lu;0;L;;;;;N;;;;2C5F; 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 @@ -10347,6 +10439,7 @@ 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 +2C5F;GLAGOLITIC SMALL LETTER CAUDATE CHRIVI;Ll;0;L;;;;;N;;;2C2F;;2C2F 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; @@ -10795,6 +10888,17 @@ 2E50;CROSS PATTY WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;; 2E51;CROSS PATTY WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;; 2E52;TIRONIAN SIGN CAPITAL ET;Po;0;ON;;;;;N;;;;; +2E53;MEDIEVAL EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +2E54;MEDIEVAL QUESTION MARK;Po;0;ON;;;;;N;;;;; +2E55;LEFT SQUARE BRACKET WITH STROKE;Ps;0;ON;;;;;Y;;;;; +2E56;RIGHT SQUARE BRACKET WITH STROKE;Pe;0;ON;;;;;Y;;;;; +2E57;LEFT SQUARE BRACKET WITH DOUBLE STROKE;Ps;0;ON;;;;;Y;;;;; +2E58;RIGHT SQUARE BRACKET WITH DOUBLE STROKE;Pe;0;ON;;;;;Y;;;;; +2E59;TOP HALF LEFT PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2E5A;TOP HALF RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2E5B;BOTTOM HALF LEFT PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2E5C;BOTTOM HALF RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2E5D;OBLIQUE HYPHEN;Pd;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;;;;; @@ -11136,6 +11240,10 @@ 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;;;;; +2FFC;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM RIGHT;So;0;ON;;;;;N;;;;; +2FFD;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER RIGHT;So;0;ON;;;;;N;;;;; +2FFE;IDEOGRAPHIC DESCRIPTION CHARACTER HORIZONTAL REFLECTION;So;0;ON;;;;;N;;;;; +2FFF;IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION;So;0;ON;;;;;N;;;;; 3000;IDEOGRAPHIC SPACE;Zs;0;WS; 0020;;;;N;;;;; 3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; 3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; @@ -11610,6 +11718,9 @@ 31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;; 31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;; 31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;; +31E4;CJK STROKE HXG;So;0;ON;;;;;N;;;;; +31E5;CJK STROKE SZP;So;0;ON;;;;;N;;;;; +31EF;IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION;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;;;;; @@ -12204,7 +12315,7 @@ 4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; 4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; 4E00;;Lo;0;L;;;;;N;;;;; -9FFC;;Lo;0;L;;;;;N;;;;; +9FFF;;Lo;0;L;;;;;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;;;;; @@ -14149,6 +14260,8 @@ A7BC;LATIN CAPITAL LETTER GLOTTAL I;Lu;0;L;;;;;N;;;;A7BD; A7BD;LATIN SMALL LETTER GLOTTAL I;Ll;0;L;;;;;N;;;A7BC;;A7BC A7BE;LATIN CAPITAL LETTER GLOTTAL U;Lu;0;L;;;;;N;;;;A7BF; A7BF;LATIN SMALL LETTER GLOTTAL U;Ll;0;L;;;;;N;;;A7BE;;A7BE +A7C0;LATIN CAPITAL LETTER OLD POLISH O;Lu;0;L;;;;;N;;;;A7C1; +A7C1;LATIN SMALL LETTER OLD POLISH O;Ll;0;L;;;;;N;;;A7C0;;A7C0 A7C2;LATIN CAPITAL LETTER ANGLICANA W;Lu;0;L;;;;;N;;;;A7C3; A7C3;LATIN SMALL LETTER ANGLICANA W;Ll;0;L;;;;;N;;;A7C2;;A7C2 A7C4;LATIN CAPITAL LETTER C WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;A794; @@ -14158,6 +14271,23 @@ A7C7;LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7C8; A7C8;LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C7;;A7C7 A7C9;LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7CA; A7CA;LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C9;;A7C9 +A7CB;LATIN CAPITAL LETTER RAMS HORN;Lu;0;L;;;;;N;;;;0264; +A7CC;LATIN CAPITAL LETTER S WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A7CD; +A7CD;LATIN SMALL LETTER S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A7CC;;A7CC +A7D0;LATIN CAPITAL LETTER CLOSED INSULAR G;Lu;0;L;;;;;N;;;;A7D1; +A7D1;LATIN SMALL LETTER CLOSED INSULAR G;Ll;0;L;;;;;N;;;A7D0;;A7D0 +A7D3;LATIN SMALL LETTER DOUBLE THORN;Ll;0;L;;;;;N;;;;; +A7D5;LATIN SMALL LETTER DOUBLE WYNN;Ll;0;L;;;;;N;;;;; +A7D6;LATIN CAPITAL LETTER MIDDLE SCOTS S;Lu;0;L;;;;;N;;;;A7D7; +A7D7;LATIN SMALL LETTER MIDDLE SCOTS S;Ll;0;L;;;;;N;;;A7D6;;A7D6 +A7D8;LATIN CAPITAL LETTER SIGMOID S;Lu;0;L;;;;;N;;;;A7D9; +A7D9;LATIN SMALL LETTER SIGMOID S;Ll;0;L;;;;;N;;;A7D8;;A7D8 +A7DA;LATIN CAPITAL LETTER LAMBDA;Lu;0;L;;;;;N;;;;A7DB; +A7DB;LATIN SMALL LETTER LAMBDA;Ll;0;L;;;;;N;;;A7DA;;A7DA +A7DC;LATIN CAPITAL LETTER LAMBDA WITH STROKE;Lu;0;L;;;;;N;;;;019B; +A7F2;MODIFIER LETTER CAPITAL C;Lm;0;L; 0043;;;;N;;;;; +A7F3;MODIFIER LETTER CAPITAL F;Lm;0;L; 0046;;;;N;;;;; +A7F4;MODIFIER LETTER CAPITAL Q;Lm;0;L; 0051;;;;N;;;;; A7F5;LATIN CAPITAL LETTER REVERSED HALF H;Lu;0;L;;;;;N;;;;A7F6; A7F6;LATIN SMALL LETTER REVERSED HALF H;Ll;0;L;;;;;N;;;A7F5;;A7F5 A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;; @@ -15794,6 +15924,7 @@ FBBE;ARABIC SYMBOL TWO DOTS VERTICALLY BELOW;Sk;0;AL;;;;;N;;;;; FBBF;ARABIC SYMBOL RING;Sk;0;AL;;;;;N;;;;; FBC0;ARABIC SYMBOL SMALL TAH ABOVE;Sk;0;AL;;;;;N;;;;; FBC1;ARABIC SYMBOL SMALL TAH BELOW;Sk;0;AL;;;;;N;;;;; +FBC2;ARABIC SYMBOL WASLA ABOVE;Sk;0;AL;;;;;N;;;;; FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL; 06AD;;;;N;;;;; FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL; 06AD;;;;N;;;;; FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; @@ -16159,6 +16290,22 @@ FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL; 0627 064B;;;; FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL; 0627 064B;;;;N;;;;; FD3E;ORNATE LEFT PARENTHESIS;Pe;0;ON;;;;;N;;;;; FD3F;ORNATE RIGHT PARENTHESIS;Ps;0;ON;;;;;N;;;;; +FD40;ARABIC LIGATURE RAHIMAHU ALLAAH;So;0;ON;;;;;N;;;;; +FD41;ARABIC LIGATURE RADI ALLAAHU ANH;So;0;ON;;;;;N;;;;; +FD42;ARABIC LIGATURE RADI ALLAAHU ANHAA;So;0;ON;;;;;N;;;;; +FD43;ARABIC LIGATURE RADI ALLAAHU ANHUM;So;0;ON;;;;;N;;;;; +FD44;ARABIC LIGATURE RADI ALLAAHU ANHUMAA;So;0;ON;;;;;N;;;;; +FD45;ARABIC LIGATURE RADI ALLAAHU ANHUNNA;So;0;ON;;;;;N;;;;; +FD46;ARABIC LIGATURE SALLALLAAHU ALAYHI WA-AALIH;So;0;ON;;;;;N;;;;; +FD47;ARABIC LIGATURE ALAYHI AS-SALAAM;So;0;ON;;;;;N;;;;; +FD48;ARABIC LIGATURE ALAYHIM AS-SALAAM;So;0;ON;;;;;N;;;;; +FD49;ARABIC LIGATURE ALAYHIMAA AS-SALAAM;So;0;ON;;;;;N;;;;; +FD4A;ARABIC LIGATURE ALAYHI AS-SALAATU WAS-SALAAM;So;0;ON;;;;;N;;;;; +FD4B;ARABIC LIGATURE QUDDISA SIRRAH;So;0;ON;;;;;N;;;;; +FD4C;ARABIC LIGATURE SALLALLAHU ALAYHI WAAALIHEE WA-SALLAM;So;0;ON;;;;;N;;;;; +FD4D;ARABIC LIGATURE ALAYHAA AS-SALAAM;So;0;ON;;;;;N;;;;; +FD4E;ARABIC LIGATURE TABAARAKA WA-TAAALAA;So;0;ON;;;;;N;;;;; +FD4F;ARABIC LIGATURE RAHIMAHUM ALLAAH;So;0;ON;;;;;N;;;;; FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062C 0645;;;;N;;;;; FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; @@ -16277,6 +16424,7 @@ FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0633 062E 064A;;;;N;;;;; FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 062C 064A;;;;N;;;;; +FDCF;ARABIC LIGATURE SALAAMUHU ALAYNAA;So;0;ON;;;;;N;;;;; FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0635 0644 06D2;;;;N;;;;; FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0642 0644 06D2;;;;N;;;;; FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL; 0627 0644 0644 0647;;;;N;;;;; @@ -16291,6 +16439,8 @@ FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL; 0635 0644 06 FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL; 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; FDFC;RIAL SIGN;Sc;0;AL; 0631 06CC 0627 0644;;;;N;;;;; FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; +FDFE;ARABIC LIGATURE SUBHAANAHU WA TAAALAA;So;0;ON;;;;;N;;;;; +FDFF;ARABIC LIGATURE AZZA WA JALL;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;;;;; @@ -17798,6 +17948,128 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10562;CAUCASIAN ALBANIAN LETTER PIWR;Lo;0;L;;;;;N;;;;; 10563;CAUCASIAN ALBANIAN LETTER KIW;Lo;0;L;;;;;N;;;;; 1056F;CAUCASIAN ALBANIAN CITATION MARK;Po;0;L;;;;;N;;;;; +10570;VITHKUQI CAPITAL LETTER A;Lu;0;L;;;;;N;;;;10597; +10571;VITHKUQI CAPITAL LETTER BBE;Lu;0;L;;;;;N;;;;10598; +10572;VITHKUQI CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;10599; +10573;VITHKUQI CAPITAL LETTER CE;Lu;0;L;;;;;N;;;;1059A; +10574;VITHKUQI CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;1059B; +10575;VITHKUQI CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;1059C; +10576;VITHKUQI CAPITAL LETTER DHE;Lu;0;L;;;;;N;;;;1059D; +10577;VITHKUQI CAPITAL LETTER EI;Lu;0;L;;;;;N;;;;1059E; +10578;VITHKUQI CAPITAL LETTER E;Lu;0;L;;;;;N;;;;1059F; +10579;VITHKUQI CAPITAL LETTER FE;Lu;0;L;;;;;N;;;;105A0; +1057A;VITHKUQI CAPITAL LETTER GA;Lu;0;L;;;;;N;;;;105A1; +1057C;VITHKUQI CAPITAL LETTER HA;Lu;0;L;;;;;N;;;;105A3; +1057D;VITHKUQI CAPITAL LETTER HHA;Lu;0;L;;;;;N;;;;105A4; +1057E;VITHKUQI CAPITAL LETTER I;Lu;0;L;;;;;N;;;;105A5; +1057F;VITHKUQI CAPITAL LETTER IJE;Lu;0;L;;;;;N;;;;105A6; +10580;VITHKUQI CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;105A7; +10581;VITHKUQI CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;105A8; +10582;VITHKUQI CAPITAL LETTER LA;Lu;0;L;;;;;N;;;;105A9; +10583;VITHKUQI CAPITAL LETTER LLA;Lu;0;L;;;;;N;;;;105AA; +10584;VITHKUQI CAPITAL LETTER ME;Lu;0;L;;;;;N;;;;105AB; +10585;VITHKUQI CAPITAL LETTER NE;Lu;0;L;;;;;N;;;;105AC; +10586;VITHKUQI CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;105AD; +10587;VITHKUQI CAPITAL LETTER O;Lu;0;L;;;;;N;;;;105AE; +10588;VITHKUQI CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;105AF; +10589;VITHKUQI CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;105B0; +1058A;VITHKUQI CAPITAL LETTER RE;Lu;0;L;;;;;N;;;;105B1; +1058C;VITHKUQI CAPITAL LETTER SE;Lu;0;L;;;;;N;;;;105B3; +1058D;VITHKUQI CAPITAL LETTER SHE;Lu;0;L;;;;;N;;;;105B4; +1058E;VITHKUQI CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;105B5; +1058F;VITHKUQI CAPITAL LETTER THE;Lu;0;L;;;;;N;;;;105B6; +10590;VITHKUQI CAPITAL LETTER U;Lu;0;L;;;;;N;;;;105B7; +10591;VITHKUQI CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;105B8; +10592;VITHKUQI CAPITAL LETTER XE;Lu;0;L;;;;;N;;;;105B9; +10594;VITHKUQI CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;105BB; +10595;VITHKUQI CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;105BC; +10597;VITHKUQI SMALL LETTER A;Ll;0;L;;;;;N;;;10570;;10570 +10598;VITHKUQI SMALL LETTER BBE;Ll;0;L;;;;;N;;;10571;;10571 +10599;VITHKUQI SMALL LETTER BE;Ll;0;L;;;;;N;;;10572;;10572 +1059A;VITHKUQI SMALL LETTER CE;Ll;0;L;;;;;N;;;10573;;10573 +1059B;VITHKUQI SMALL LETTER CHE;Ll;0;L;;;;;N;;;10574;;10574 +1059C;VITHKUQI SMALL LETTER DE;Ll;0;L;;;;;N;;;10575;;10575 +1059D;VITHKUQI SMALL LETTER DHE;Ll;0;L;;;;;N;;;10576;;10576 +1059E;VITHKUQI SMALL LETTER EI;Ll;0;L;;;;;N;;;10577;;10577 +1059F;VITHKUQI SMALL LETTER E;Ll;0;L;;;;;N;;;10578;;10578 +105A0;VITHKUQI SMALL LETTER FE;Ll;0;L;;;;;N;;;10579;;10579 +105A1;VITHKUQI SMALL LETTER GA;Ll;0;L;;;;;N;;;1057A;;1057A +105A3;VITHKUQI SMALL LETTER HA;Ll;0;L;;;;;N;;;1057C;;1057C +105A4;VITHKUQI SMALL LETTER HHA;Ll;0;L;;;;;N;;;1057D;;1057D +105A5;VITHKUQI SMALL LETTER I;Ll;0;L;;;;;N;;;1057E;;1057E +105A6;VITHKUQI SMALL LETTER IJE;Ll;0;L;;;;;N;;;1057F;;1057F +105A7;VITHKUQI SMALL LETTER JE;Ll;0;L;;;;;N;;;10580;;10580 +105A8;VITHKUQI SMALL LETTER KA;Ll;0;L;;;;;N;;;10581;;10581 +105A9;VITHKUQI SMALL LETTER LA;Ll;0;L;;;;;N;;;10582;;10582 +105AA;VITHKUQI SMALL LETTER LLA;Ll;0;L;;;;;N;;;10583;;10583 +105AB;VITHKUQI SMALL LETTER ME;Ll;0;L;;;;;N;;;10584;;10584 +105AC;VITHKUQI SMALL LETTER NE;Ll;0;L;;;;;N;;;10585;;10585 +105AD;VITHKUQI SMALL LETTER NJE;Ll;0;L;;;;;N;;;10586;;10586 +105AE;VITHKUQI SMALL LETTER O;Ll;0;L;;;;;N;;;10587;;10587 +105AF;VITHKUQI SMALL LETTER PE;Ll;0;L;;;;;N;;;10588;;10588 +105B0;VITHKUQI SMALL LETTER QA;Ll;0;L;;;;;N;;;10589;;10589 +105B1;VITHKUQI SMALL LETTER RE;Ll;0;L;;;;;N;;;1058A;;1058A +105B3;VITHKUQI SMALL LETTER SE;Ll;0;L;;;;;N;;;1058C;;1058C +105B4;VITHKUQI SMALL LETTER SHE;Ll;0;L;;;;;N;;;1058D;;1058D +105B5;VITHKUQI SMALL LETTER TE;Ll;0;L;;;;;N;;;1058E;;1058E +105B6;VITHKUQI SMALL LETTER THE;Ll;0;L;;;;;N;;;1058F;;1058F +105B7;VITHKUQI SMALL LETTER U;Ll;0;L;;;;;N;;;10590;;10590 +105B8;VITHKUQI SMALL LETTER VE;Ll;0;L;;;;;N;;;10591;;10591 +105B9;VITHKUQI SMALL LETTER XE;Ll;0;L;;;;;N;;;10592;;10592 +105BB;VITHKUQI SMALL LETTER Y;Ll;0;L;;;;;N;;;10594;;10594 +105BC;VITHKUQI SMALL LETTER ZE;Ll;0;L;;;;;N;;;10595;;10595 +105C0;TODHRI LETTER A;Lo;0;L;;;;;N;;;;; +105C1;TODHRI LETTER AS;Lo;0;L;;;;;N;;;;; +105C2;TODHRI LETTER BA;Lo;0;L;;;;;N;;;;; +105C3;TODHRI LETTER MBA;Lo;0;L;;;;;N;;;;; +105C4;TODHRI LETTER CA;Lo;0;L;;;;;N;;;;; +105C5;TODHRI LETTER CHA;Lo;0;L;;;;;N;;;;; +105C6;TODHRI LETTER DA;Lo;0;L;;;;;N;;;;; +105C7;TODHRI LETTER NDA;Lo;0;L;;;;;N;;;;; +105C8;TODHRI LETTER DHA;Lo;0;L;;;;;N;;;;; +105C9;TODHRI LETTER EI;Lo;0;L;105D2 0307;;;;N;;;;; +105CA;TODHRI LETTER E;Lo;0;L;;;;;N;;;;; +105CB;TODHRI LETTER FA;Lo;0;L;;;;;N;;;;; +105CC;TODHRI LETTER GA;Lo;0;L;;;;;N;;;;; +105CD;TODHRI LETTER NGA;Lo;0;L;;;;;N;;;;; +105CE;TODHRI LETTER GJA;Lo;0;L;;;;;N;;;;; +105CF;TODHRI LETTER NGJA;Lo;0;L;;;;;N;;;;; +105D0;TODHRI LETTER HA;Lo;0;L;;;;;N;;;;; +105D1;TODHRI LETTER HJA;Lo;0;L;;;;;N;;;;; +105D2;TODHRI LETTER I;Lo;0;L;;;;;N;;;;; +105D3;TODHRI LETTER JA;Lo;0;L;;;;;N;;;;; +105D4;TODHRI LETTER KA;Lo;0;L;;;;;N;;;;; +105D5;TODHRI LETTER LA;Lo;0;L;;;;;N;;;;; +105D6;TODHRI LETTER LLA;Lo;0;L;;;;;N;;;;; +105D7;TODHRI LETTER MA;Lo;0;L;;;;;N;;;;; +105D8;TODHRI LETTER NA;Lo;0;L;;;;;N;;;;; +105D9;TODHRI LETTER NJAN;Lo;0;L;;;;;N;;;;; +105DA;TODHRI LETTER O;Lo;0;L;;;;;N;;;;; +105DB;TODHRI LETTER PA;Lo;0;L;;;;;N;;;;; +105DC;TODHRI LETTER QA;Lo;0;L;;;;;N;;;;; +105DD;TODHRI LETTER RA;Lo;0;L;;;;;N;;;;; +105DE;TODHRI LETTER RRA;Lo;0;L;;;;;N;;;;; +105DF;TODHRI LETTER SA;Lo;0;L;;;;;N;;;;; +105E0;TODHRI LETTER SHA;Lo;0;L;;;;;N;;;;; +105E1;TODHRI LETTER SHTA;Lo;0;L;;;;;N;;;;; +105E2;TODHRI LETTER TA;Lo;0;L;;;;;N;;;;; +105E3;TODHRI LETTER THA;Lo;0;L;;;;;N;;;;; +105E4;TODHRI LETTER U;Lo;0;L;105DA 0307;;;;N;;;;; +105E5;TODHRI LETTER VA;Lo;0;L;;;;;N;;;;; +105E6;TODHRI LETTER XA;Lo;0;L;;;;;N;;;;; +105E7;TODHRI LETTER NXA;Lo;0;L;;;;;N;;;;; +105E8;TODHRI LETTER XHA;Lo;0;L;;;;;N;;;;; +105E9;TODHRI LETTER NXHA;Lo;0;L;;;;;N;;;;; +105EA;TODHRI LETTER Y;Lo;0;L;;;;;N;;;;; +105EB;TODHRI LETTER JY;Lo;0;L;;;;;N;;;;; +105EC;TODHRI LETTER ZA;Lo;0;L;;;;;N;;;;; +105ED;TODHRI LETTER ZHA;Lo;0;L;;;;;N;;;;; +105EE;TODHRI LETTER GHA;Lo;0;L;;;;;N;;;;; +105EF;TODHRI LETTER STA;Lo;0;L;;;;;N;;;;; +105F0;TODHRI LETTER SKAN;Lo;0;L;;;;;N;;;;; +105F1;TODHRI LETTER KHA;Lo;0;L;;;;;N;;;;; +105F2;TODHRI LETTER PSA;Lo;0;L;;;;;N;;;;; +105F3;TODHRI LETTER OO;Lo;0;L;;;;;N;;;;; 10600;LINEAR A SIGN AB001;Lo;0;L;;;;;N;;;;; 10601;LINEAR A SIGN AB002;Lo;0;L;;;;;N;;;;; 10602;LINEAR A SIGN AB003;Lo;0;L;;;;;N;;;;; @@ -18139,6 +18411,63 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10765;LINEAR A SIGN A805;Lo;0;L;;;;;N;;;;; 10766;LINEAR A SIGN A806;Lo;0;L;;;;;N;;;;; 10767;LINEAR A SIGN A807;Lo;0;L;;;;;N;;;;; +10780;MODIFIER LETTER SMALL CAPITAL AA;Lm;0;L;;;;;N;;;;; +10781;MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON;Lm;0;L; 02D0;;;;N;;;;; +10782;MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON;Lm;0;L; 02D1;;;;N;;;;; +10783;MODIFIER LETTER SMALL AE;Lm;0;L; 00E6;;;;N;;;;; +10784;MODIFIER LETTER SMALL CAPITAL B;Lm;0;L; 0299;;;;N;;;;; +10785;MODIFIER LETTER SMALL B WITH HOOK;Lm;0;L; 0253;;;;N;;;;; +10787;MODIFIER LETTER SMALL DZ DIGRAPH;Lm;0;L; 02A3;;;;N;;;;; +10788;MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK;Lm;0;L; AB66;;;;N;;;;; +10789;MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL;Lm;0;L; 02A5;;;;N;;;;; +1078A;MODIFIER LETTER SMALL DEZH DIGRAPH;Lm;0;L; 02A4;;;;N;;;;; +1078B;MODIFIER LETTER SMALL D WITH TAIL;Lm;0;L; 0256;;;;N;;;;; +1078C;MODIFIER LETTER SMALL D WITH HOOK;Lm;0;L; 0257;;;;N;;;;; +1078D;MODIFIER LETTER SMALL D WITH HOOK AND TAIL;Lm;0;L; 1D91;;;;N;;;;; +1078E;MODIFIER LETTER SMALL REVERSED E;Lm;0;L; 0258;;;;N;;;;; +1078F;MODIFIER LETTER SMALL CLOSED REVERSED OPEN E;Lm;0;L; 025E;;;;N;;;;; +10790;MODIFIER LETTER SMALL FENG DIGRAPH;Lm;0;L; 02A9;;;;N;;;;; +10791;MODIFIER LETTER SMALL RAMS HORN;Lm;0;L; 0264;;;;N;;;;; +10792;MODIFIER LETTER SMALL CAPITAL G;Lm;0;L; 0262;;;;N;;;;; +10793;MODIFIER LETTER SMALL G WITH HOOK;Lm;0;L; 0260;;;;N;;;;; +10794;MODIFIER LETTER SMALL CAPITAL G WITH HOOK;Lm;0;L; 029B;;;;N;;;;; +10795;MODIFIER LETTER SMALL H WITH STROKE;Lm;0;L; 0127;;;;N;;;;; +10796;MODIFIER LETTER SMALL CAPITAL H;Lm;0;L; 029C;;;;N;;;;; +10797;MODIFIER LETTER SMALL HENG WITH HOOK;Lm;0;L; 0267;;;;N;;;;; +10798;MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK;Lm;0;L; 0284;;;;N;;;;; +10799;MODIFIER LETTER SMALL LS DIGRAPH;Lm;0;L; 02AA;;;;N;;;;; +1079A;MODIFIER LETTER SMALL LZ DIGRAPH;Lm;0;L; 02AB;;;;N;;;;; +1079B;MODIFIER LETTER SMALL L WITH BELT;Lm;0;L; 026C;;;;N;;;;; +1079C;MODIFIER LETTER SMALL CAPITAL L WITH BELT;Lm;0;L; 1DF04;;;;N;;;;; +1079D;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT;Lm;0;L; A78E;;;;N;;;;; +1079E;MODIFIER LETTER SMALL LEZH;Lm;0;L; 026E;;;;N;;;;; +1079F;MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK;Lm;0;L; 1DF05;;;;N;;;;; +107A0;MODIFIER LETTER SMALL TURNED Y;Lm;0;L; 028E;;;;N;;;;; +107A1;MODIFIER LETTER SMALL TURNED Y WITH BELT;Lm;0;L; 1DF06;;;;N;;;;; +107A2;MODIFIER LETTER SMALL O WITH STROKE;Lm;0;L; 00F8;;;;N;;;;; +107A3;MODIFIER LETTER SMALL CAPITAL OE;Lm;0;L; 0276;;;;N;;;;; +107A4;MODIFIER LETTER SMALL CLOSED OMEGA;Lm;0;L; 0277;;;;N;;;;; +107A5;MODIFIER LETTER SMALL Q;Lm;0;L; 0071;;;;N;;;;; +107A6;MODIFIER LETTER SMALL TURNED R WITH LONG LEG;Lm;0;L; 027A;;;;N;;;;; +107A7;MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK;Lm;0;L; 1DF08;;;;N;;;;; +107A8;MODIFIER LETTER SMALL R WITH TAIL;Lm;0;L; 027D;;;;N;;;;; +107A9;MODIFIER LETTER SMALL R WITH FISHHOOK;Lm;0;L; 027E;;;;N;;;;; +107AA;MODIFIER LETTER SMALL CAPITAL R;Lm;0;L; 0280;;;;N;;;;; +107AB;MODIFIER LETTER SMALL TC DIGRAPH WITH CURL;Lm;0;L; 02A8;;;;N;;;;; +107AC;MODIFIER LETTER SMALL TS DIGRAPH;Lm;0;L; 02A6;;;;N;;;;; +107AD;MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK;Lm;0;L; AB67;;;;N;;;;; +107AE;MODIFIER LETTER SMALL TESH DIGRAPH;Lm;0;L; 02A7;;;;N;;;;; +107AF;MODIFIER LETTER SMALL T WITH RETROFLEX HOOK;Lm;0;L; 0288;;;;N;;;;; +107B0;MODIFIER LETTER SMALL V WITH RIGHT HOOK;Lm;0;L; 2C71;;;;N;;;;; +107B2;MODIFIER LETTER SMALL CAPITAL Y;Lm;0;L; 028F;;;;N;;;;; +107B3;MODIFIER LETTER GLOTTAL STOP WITH STROKE;Lm;0;L; 02A1;;;;N;;;;; +107B4;MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE;Lm;0;L; 02A2;;;;N;;;;; +107B5;MODIFIER LETTER BILABIAL CLICK;Lm;0;L; 0298;;;;N;;;;; +107B6;MODIFIER LETTER DENTAL CLICK;Lm;0;L; 01C0;;;;N;;;;; +107B7;MODIFIER LETTER LATERAL CLICK;Lm;0;L; 01C1;;;;N;;;;; +107B8;MODIFIER LETTER ALVEOLAR CLICK;Lm;0;L; 01C2;;;;N;;;;; +107B9;MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;Lm;0;L; 1DF0A;;;;N;;;;; +107BA;MODIFIER LETTER SMALL S WITH CURL;Lm;0;L; 1DF1E;;;;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;;;;; @@ -19062,6 +19391,75 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10D37;HANIFI ROHINGYA DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; 10D38;HANIFI ROHINGYA DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; 10D39;HANIFI ROHINGYA DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; +10D40;GARAY DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; +10D41;GARAY DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; +10D42;GARAY DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; +10D43;GARAY DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; +10D44;GARAY DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; +10D45;GARAY DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; +10D46;GARAY DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; +10D47;GARAY DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; +10D48;GARAY DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; +10D49;GARAY DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; +10D4A;GARAY VOWEL SIGN A;Lo;0;R;;;;;N;;;;; +10D4B;GARAY VOWEL SIGN I;Lo;0;R;;;;;N;;;;; +10D4C;GARAY VOWEL SIGN O;Lo;0;R;;;;;N;;;;; +10D4D;GARAY VOWEL SIGN EE;Lo;0;R;;;;;N;;;;; +10D4E;GARAY VOWEL LENGTH MARK;Lm;0;R;;;;;N;;;;; +10D4F;GARAY SUKUN;Lo;0;R;;;;;N;;;;; +10D50;GARAY CAPITAL LETTER A;Lu;0;R;;;;;N;;;;10D70; +10D51;GARAY CAPITAL LETTER CA;Lu;0;R;;;;;N;;;;10D71; +10D52;GARAY CAPITAL LETTER MA;Lu;0;R;;;;;N;;;;10D72; +10D53;GARAY CAPITAL LETTER KA;Lu;0;R;;;;;N;;;;10D73; +10D54;GARAY CAPITAL LETTER BA;Lu;0;R;;;;;N;;;;10D74; +10D55;GARAY CAPITAL LETTER JA;Lu;0;R;;;;;N;;;;10D75; +10D56;GARAY CAPITAL LETTER SA;Lu;0;R;;;;;N;;;;10D76; +10D57;GARAY CAPITAL LETTER WA;Lu;0;R;;;;;N;;;;10D77; +10D58;GARAY CAPITAL LETTER LA;Lu;0;R;;;;;N;;;;10D78; +10D59;GARAY CAPITAL LETTER GA;Lu;0;R;;;;;N;;;;10D79; +10D5A;GARAY CAPITAL LETTER DA;Lu;0;R;;;;;N;;;;10D7A; +10D5B;GARAY CAPITAL LETTER XA;Lu;0;R;;;;;N;;;;10D7B; +10D5C;GARAY CAPITAL LETTER YA;Lu;0;R;;;;;N;;;;10D7C; +10D5D;GARAY CAPITAL LETTER TA;Lu;0;R;;;;;N;;;;10D7D; +10D5E;GARAY CAPITAL LETTER RA;Lu;0;R;;;;;N;;;;10D7E; +10D5F;GARAY CAPITAL LETTER NYA;Lu;0;R;;;;;N;;;;10D7F; +10D60;GARAY CAPITAL LETTER FA;Lu;0;R;;;;;N;;;;10D80; +10D61;GARAY CAPITAL LETTER NA;Lu;0;R;;;;;N;;;;10D81; +10D62;GARAY CAPITAL LETTER PA;Lu;0;R;;;;;N;;;;10D82; +10D63;GARAY CAPITAL LETTER HA;Lu;0;R;;;;;N;;;;10D83; +10D64;GARAY CAPITAL LETTER OLD KA;Lu;0;R;;;;;N;;;;10D84; +10D65;GARAY CAPITAL LETTER OLD NA;Lu;0;R;;;;;N;;;;10D85; +10D69;GARAY VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;; +10D6A;GARAY CONSONANT GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; +10D6B;GARAY COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;; +10D6C;GARAY COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;; +10D6D;GARAY CONSONANT NASALIZATION MARK;Mn;230;NSM;;;;;N;;;;; +10D6E;GARAY HYPHEN;Pd;0;ON;;;;;N;;;;; +10D6F;GARAY REDUPLICATION MARK;Lm;0;R;;;;;N;;;;; +10D70;GARAY SMALL LETTER A;Ll;0;R;;;;;N;;;10D50;;10D50 +10D71;GARAY SMALL LETTER CA;Ll;0;R;;;;;N;;;10D51;;10D51 +10D72;GARAY SMALL LETTER MA;Ll;0;R;;;;;N;;;10D52;;10D52 +10D73;GARAY SMALL LETTER KA;Ll;0;R;;;;;N;;;10D53;;10D53 +10D74;GARAY SMALL LETTER BA;Ll;0;R;;;;;N;;;10D54;;10D54 +10D75;GARAY SMALL LETTER JA;Ll;0;R;;;;;N;;;10D55;;10D55 +10D76;GARAY SMALL LETTER SA;Ll;0;R;;;;;N;;;10D56;;10D56 +10D77;GARAY SMALL LETTER WA;Ll;0;R;;;;;N;;;10D57;;10D57 +10D78;GARAY SMALL LETTER LA;Ll;0;R;;;;;N;;;10D58;;10D58 +10D79;GARAY SMALL LETTER GA;Ll;0;R;;;;;N;;;10D59;;10D59 +10D7A;GARAY SMALL LETTER DA;Ll;0;R;;;;;N;;;10D5A;;10D5A +10D7B;GARAY SMALL LETTER XA;Ll;0;R;;;;;N;;;10D5B;;10D5B +10D7C;GARAY SMALL LETTER YA;Ll;0;R;;;;;N;;;10D5C;;10D5C +10D7D;GARAY SMALL LETTER TA;Ll;0;R;;;;;N;;;10D5D;;10D5D +10D7E;GARAY SMALL LETTER RA;Ll;0;R;;;;;N;;;10D5E;;10D5E +10D7F;GARAY SMALL LETTER NYA;Ll;0;R;;;;;N;;;10D5F;;10D5F +10D80;GARAY SMALL LETTER FA;Ll;0;R;;;;;N;;;10D60;;10D60 +10D81;GARAY SMALL LETTER NA;Ll;0;R;;;;;N;;;10D61;;10D61 +10D82;GARAY SMALL LETTER PA;Ll;0;R;;;;;N;;;10D62;;10D62 +10D83;GARAY SMALL LETTER HA;Ll;0;R;;;;;N;;;10D63;;10D63 +10D84;GARAY SMALL LETTER OLD KA;Ll;0;R;;;;;N;;;10D64;;10D64 +10D85;GARAY SMALL LETTER OLD NA;Ll;0;R;;;;;N;;;10D65;;10D65 +10D8E;GARAY PLUS SIGN;Sm;0;R;;;;;N;;;;; +10D8F;GARAY MINUS SIGN;Sm;0;R;;;;;N;;;;; 10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;; 10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;; 10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;; @@ -19140,6 +19538,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;; 10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;; 10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;; +10EC2;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;; +10EC3;ARABIC LETTER TAH WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;; +10EC4;ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;; +10EFC;ARABIC COMBINING ALEF OVERLAY;Mn;0;NSM;;;;;N;;;;; +10EFD;ARABIC SMALL LOW WORD SAKTA;Mn;220;NSM;;;;;N;;;;; +10EFE;ARABIC SMALL LOW WORD QASR;Mn;220;NSM;;;;;N;;;;; +10EFF;ARABIC SMALL LOW WORD MADDA;Mn;220;NSM;;;;;N;;;;; 10F00;OLD SOGDIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; 10F01;OLD SOGDIAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;; 10F02;OLD SOGDIAN LETTER BETH;Lo;0;R;;;;;N;;;;; @@ -19222,6 +19627,32 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10F57;SOGDIAN PUNCTUATION CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;; 10F58;SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;Po;0;AL;;;;;N;;;;; 10F59;SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;; +10F70;OLD UYGHUR LETTER ALEPH;Lo;0;R;;;;;N;;;;; +10F71;OLD UYGHUR LETTER BETH;Lo;0;R;;;;;N;;;;; +10F72;OLD UYGHUR LETTER GIMEL-HETH;Lo;0;R;;;;;N;;;;; +10F73;OLD UYGHUR LETTER WAW;Lo;0;R;;;;;N;;;;; +10F74;OLD UYGHUR LETTER ZAYIN;Lo;0;R;;;;;N;;;;; +10F75;OLD UYGHUR LETTER FINAL HETH;Lo;0;R;;;;;N;;;;; +10F76;OLD UYGHUR LETTER YODH;Lo;0;R;;;;;N;;;;; +10F77;OLD UYGHUR LETTER KAPH;Lo;0;R;;;;;N;;;;; +10F78;OLD UYGHUR LETTER LAMEDH;Lo;0;R;;;;;N;;;;; +10F79;OLD UYGHUR LETTER MEM;Lo;0;R;;;;;N;;;;; +10F7A;OLD UYGHUR LETTER NUN;Lo;0;R;;;;;N;;;;; +10F7B;OLD UYGHUR LETTER SAMEKH;Lo;0;R;;;;;N;;;;; +10F7C;OLD UYGHUR LETTER PE;Lo;0;R;;;;;N;;;;; +10F7D;OLD UYGHUR LETTER SADHE;Lo;0;R;;;;;N;;;;; +10F7E;OLD UYGHUR LETTER RESH;Lo;0;R;;;;;N;;;;; +10F7F;OLD UYGHUR LETTER SHIN;Lo;0;R;;;;;N;;;;; +10F80;OLD UYGHUR LETTER TAW;Lo;0;R;;;;;N;;;;; +10F81;OLD UYGHUR LETTER LESH;Lo;0;R;;;;;N;;;;; +10F82;OLD UYGHUR COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;; +10F83;OLD UYGHUR COMBINING DOT BELOW;Mn;220;NSM;;;;;N;;;;; +10F84;OLD UYGHUR COMBINING TWO DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +10F85;OLD UYGHUR COMBINING TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +10F86;OLD UYGHUR PUNCTUATION BAR;Po;0;R;;;;;N;;;;; +10F87;OLD UYGHUR PUNCTUATION TWO BARS;Po;0;R;;;;;N;;;;; +10F88;OLD UYGHUR PUNCTUATION TWO DOTS;Po;0;R;;;;;N;;;;; +10F89;OLD UYGHUR PUNCTUATION FOUR DOTS;Po;0;R;;;;;N;;;;; 10FB0;CHORASMIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; 10FB1;CHORASMIAN LETTER SMALL ALEPH;Lo;0;R;;;;;N;;;;; 10FB2;CHORASMIAN LETTER BETH;Lo;0;R;;;;;N;;;;; @@ -19381,6 +19812,12 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1106D;BRAHMI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 1106E;BRAHMI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 1106F;BRAHMI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +11070;BRAHMI SIGN OLD TAMIL VIRAMA;Mn;9;NSM;;;;;N;;;;; +11071;BRAHMI LETTER OLD TAMIL SHORT E;Lo;0;L;;;;;N;;;;; +11072;BRAHMI LETTER OLD TAMIL SHORT O;Lo;0;L;;;;;N;;;;; +11073;BRAHMI VOWEL SIGN OLD TAMIL SHORT E;Mn;0;NSM;;;;;N;;;;; +11074;BRAHMI VOWEL SIGN OLD TAMIL SHORT O;Mn;0;NSM;;;;;N;;;;; +11075;BRAHMI LETTER OLD TAMIL LLA;Lo;0;L;;;;;N;;;;; 1107F;BRAHMI NUMBER JOINER;Mn;9;NSM;;;;;N;;;;; 11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; @@ -19448,6 +19885,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; 110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;; 110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +110C2;KAITHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 110CD;KAITHI NUMBER SIGN ABOVE;Cf;0;L;;;;;N;;;;; 110D0;SORA SOMPENG LETTER SAH;Lo;0;L;;;;;N;;;;; 110D1;SORA SOMPENG LETTER TAH;Lo;0;L;;;;;N;;;;; @@ -19772,6 +20210,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1123C;KHOJKI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; 1123D;KHOJKI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; 1123E;KHOJKI SIGN SUKUN;Mn;0;NSM;;;;;N;;;;; +1123F;KHOJKI LETTER QA;Lo;0;L;;;;;N;;;;; +11240;KHOJKI LETTER SHORT I;Lo;0;L;;;;;N;;;;; +11241;KHOJKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 11280;MULTANI LETTER A;Lo;0;L;;;;;N;;;;; 11281;MULTANI LETTER I;Lo;0;L;;;;;N;;;;; 11282;MULTANI LETTER U;Lo;0;L;;;;;N;;;;; @@ -19965,6 +20406,86 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11372;COMBINING GRANTHA LETTER NA;Mn;230;NSM;;;;;N;;;;; 11373;COMBINING GRANTHA LETTER VI;Mn;230;NSM;;;;;N;;;;; 11374;COMBINING GRANTHA LETTER PA;Mn;230;NSM;;;;;N;;;;; +11380;TULU-TIGALARI LETTER A;Lo;0;L;;;;;N;;;;; +11381;TULU-TIGALARI LETTER AA;Lo;0;L;;;;;N;;;;; +11382;TULU-TIGALARI LETTER I;Lo;0;L;;;;;N;;;;; +11383;TULU-TIGALARI LETTER II;Lo;0;L;11382 113C9;;;;N;;;;; +11384;TULU-TIGALARI LETTER U;Lo;0;L;;;;;N;;;;; +11385;TULU-TIGALARI LETTER UU;Lo;0;L;11384 113BB;;;;N;;;;; +11386;TULU-TIGALARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +11387;TULU-TIGALARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +11388;TULU-TIGALARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +11389;TULU-TIGALARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +1138B;TULU-TIGALARI LETTER EE;Lo;0;L;;;;;N;;;;; +1138E;TULU-TIGALARI LETTER AI;Lo;0;L;1138B 113C2;;;;N;;;;; +11390;TULU-TIGALARI LETTER OO;Lo;0;L;;;;;N;;;;; +11391;TULU-TIGALARI LETTER AU;Lo;0;L;11390 113C9;;;;N;;;;; +11392;TULU-TIGALARI LETTER KA;Lo;0;L;;;;;N;;;;; +11393;TULU-TIGALARI LETTER KHA;Lo;0;L;;;;;N;;;;; +11394;TULU-TIGALARI LETTER GA;Lo;0;L;;;;;N;;;;; +11395;TULU-TIGALARI LETTER GHA;Lo;0;L;;;;;N;;;;; +11396;TULU-TIGALARI LETTER NGA;Lo;0;L;;;;;N;;;;; +11397;TULU-TIGALARI LETTER CA;Lo;0;L;;;;;N;;;;; +11398;TULU-TIGALARI LETTER CHA;Lo;0;L;;;;;N;;;;; +11399;TULU-TIGALARI LETTER JA;Lo;0;L;;;;;N;;;;; +1139A;TULU-TIGALARI LETTER JHA;Lo;0;L;;;;;N;;;;; +1139B;TULU-TIGALARI LETTER NYA;Lo;0;L;;;;;N;;;;; +1139C;TULU-TIGALARI LETTER TTA;Lo;0;L;;;;;N;;;;; +1139D;TULU-TIGALARI LETTER TTHA;Lo;0;L;;;;;N;;;;; +1139E;TULU-TIGALARI LETTER DDA;Lo;0;L;;;;;N;;;;; +1139F;TULU-TIGALARI LETTER DDHA;Lo;0;L;;;;;N;;;;; +113A0;TULU-TIGALARI LETTER NNA;Lo;0;L;;;;;N;;;;; +113A1;TULU-TIGALARI LETTER TA;Lo;0;L;;;;;N;;;;; +113A2;TULU-TIGALARI LETTER THA;Lo;0;L;;;;;N;;;;; +113A3;TULU-TIGALARI LETTER DA;Lo;0;L;;;;;N;;;;; +113A4;TULU-TIGALARI LETTER DHA;Lo;0;L;;;;;N;;;;; +113A5;TULU-TIGALARI LETTER NA;Lo;0;L;;;;;N;;;;; +113A6;TULU-TIGALARI LETTER PA;Lo;0;L;;;;;N;;;;; +113A7;TULU-TIGALARI LETTER PHA;Lo;0;L;;;;;N;;;;; +113A8;TULU-TIGALARI LETTER BA;Lo;0;L;;;;;N;;;;; +113A9;TULU-TIGALARI LETTER BHA;Lo;0;L;;;;;N;;;;; +113AA;TULU-TIGALARI LETTER MA;Lo;0;L;;;;;N;;;;; +113AB;TULU-TIGALARI LETTER YA;Lo;0;L;;;;;N;;;;; +113AC;TULU-TIGALARI LETTER RA;Lo;0;L;;;;;N;;;;; +113AD;TULU-TIGALARI LETTER LA;Lo;0;L;;;;;N;;;;; +113AE;TULU-TIGALARI LETTER VA;Lo;0;L;;;;;N;;;;; +113AF;TULU-TIGALARI LETTER SHA;Lo;0;L;;;;;N;;;;; +113B0;TULU-TIGALARI LETTER SSA;Lo;0;L;;;;;N;;;;; +113B1;TULU-TIGALARI LETTER SA;Lo;0;L;;;;;N;;;;; +113B2;TULU-TIGALARI LETTER HA;Lo;0;L;;;;;N;;;;; +113B3;TULU-TIGALARI LETTER LLA;Lo;0;L;;;;;N;;;;; +113B4;TULU-TIGALARI LETTER RRA;Lo;0;L;;;;;N;;;;; +113B5;TULU-TIGALARI LETTER LLLA;Lo;0;L;;;;;N;;;;; +113B7;TULU-TIGALARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; +113B8;TULU-TIGALARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +113B9;TULU-TIGALARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; +113BA;TULU-TIGALARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; +113BB;TULU-TIGALARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +113BC;TULU-TIGALARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +113BD;TULU-TIGALARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +113BE;TULU-TIGALARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; +113BF;TULU-TIGALARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; +113C0;TULU-TIGALARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; +113C2;TULU-TIGALARI VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; +113C5;TULU-TIGALARI VOWEL SIGN AI;Mc;0;L;113C2 113C2;;;;N;;;;; +113C7;TULU-TIGALARI VOWEL SIGN OO;Mc;0;L;113C2 113B8;;;;N;;;;; +113C8;TULU-TIGALARI VOWEL SIGN AU;Mc;0;L;113C2 113C9;;;;N;;;;; +113C9;TULU-TIGALARI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +113CA;TULU-TIGALARI SIGN CANDRA ANUNASIKA;Mc;0;L;;;;;N;;;;; +113CC;TULU-TIGALARI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; +113CD;TULU-TIGALARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +113CE;TULU-TIGALARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +113CF;TULU-TIGALARI SIGN LOOPED VIRAMA;Mc;9;L;;;;;N;;;;; +113D0;TULU-TIGALARI CONJOINER;Mn;9;NSM;;;;;N;;;;; +113D1;TULU-TIGALARI REPHA;Lo;0;L;;;;;N;;;;; +113D2;TULU-TIGALARI GEMINATION MARK;Mn;0;NSM;;;;;N;;;;; +113D3;TULU-TIGALARI SIGN PLUTA;Lo;0;L;;;;;N;;;;; +113D4;TULU-TIGALARI DANDA;Po;0;L;;;;;N;;;;; +113D5;TULU-TIGALARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +113D7;TULU-TIGALARI SIGN OM PUSHPIKA;Po;0;L;;;;;N;;;;; +113D8;TULU-TIGALARI SIGN SHRII PUSHPIKA;Po;0;L;;;;;N;;;;; +113E1;TULU-TIGALARI VEDIC TONE SVARITA;Mn;0;NSM;;;;;N;;;;; +113E2;TULU-TIGALARI VEDIC TONE ANUDATTA;Mn;0;NSM;;;;;N;;;;; 11400;NEWA LETTER A;Lo;0;L;;;;;N;;;;; 11401;NEWA LETTER AA;Lo;0;L;;;;;N;;;;; 11402;NEWA LETTER I;Lo;0;L;;;;;N;;;;; @@ -20385,6 +20906,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 116B6;TAKRI SIGN VIRAMA;Mc;9;L;;;;;N;;;;; 116B7;TAKRI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 116B8;TAKRI LETTER ARCHAIC KHA;Lo;0;L;;;;;N;;;;; +116B9;TAKRI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; 116C0;TAKRI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 116C1;TAKRI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 116C2;TAKRI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -20395,6 +20917,26 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 116C7;TAKRI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 116C8;TAKRI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 116C9;TAKRI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +116D0;MYANMAR PAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +116D1;MYANMAR PAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +116D2;MYANMAR PAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +116D3;MYANMAR PAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +116D4;MYANMAR PAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +116D5;MYANMAR PAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +116D6;MYANMAR PAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +116D7;MYANMAR PAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +116D8;MYANMAR PAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +116D9;MYANMAR PAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +116DA;MYANMAR EASTERN PWO KAREN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +116DB;MYANMAR EASTERN PWO KAREN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +116DC;MYANMAR EASTERN PWO KAREN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +116DD;MYANMAR EASTERN PWO KAREN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +116DE;MYANMAR EASTERN PWO KAREN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +116DF;MYANMAR EASTERN PWO KAREN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +116E0;MYANMAR EASTERN PWO KAREN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +116E1;MYANMAR EASTERN PWO KAREN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +116E2;MYANMAR EASTERN PWO KAREN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +116E3;MYANMAR EASTERN PWO KAREN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 11700;AHOM LETTER KA;Lo;0;L;;;;;N;;;;; 11701;AHOM LETTER KHA;Lo;0;L;;;;;N;;;;; 11702;AHOM LETTER NGA;Lo;0;L;;;;;N;;;;; @@ -20423,7 +20965,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11719;AHOM LETTER JHA;Lo;0;L;;;;;N;;;;; 1171A;AHOM LETTER ALTERNATE BA;Lo;0;L;;;;;N;;;;; 1171D;AHOM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;; -1171E;AHOM CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;; +1171E;AHOM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;; 1171F;AHOM CONSONANT SIGN MEDIAL LIGATING RA;Mn;0;NSM;;;;;N;;;;; 11720;AHOM VOWEL SIGN A;Mc;0;L;;;;;N;;;;; 11721;AHOM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; @@ -20453,6 +20995,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1173D;AHOM SIGN SECTION;Po;0;L;;;;;N;;;;; 1173E;AHOM SIGN RULAI;Po;0;L;;;;;N;;;;; 1173F;AHOM SYMBOL VI;So;0;L;;;;;N;;;;; +11740;AHOM LETTER CA;Lo;0;L;;;;;N;;;;; +11741;AHOM LETTER TTA;Lo;0;L;;;;;N;;;;; +11742;AHOM LETTER TTHA;Lo;0;L;;;;;N;;;;; +11743;AHOM LETTER DDA;Lo;0;L;;;;;N;;;;; +11744;AHOM LETTER DDHA;Lo;0;L;;;;;N;;;;; +11745;AHOM LETTER NNA;Lo;0;L;;;;;N;;;;; +11746;AHOM LETTER LLA;Lo;0;L;;;;;N;;;;; 11800;DOGRA LETTER A;Lo;0;L;;;;;N;;;;; 11801;DOGRA LETTER AA;Lo;0;L;;;;;N;;;;; 11802;DOGRA LETTER I;Lo;0;L;;;;;N;;;;; @@ -20889,6 +21438,22 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11AA0;SOYOMBO HEAD MARK WITH MOON AND SUN;Po;0;L;;;;;N;;;;; 11AA1;SOYOMBO TERMINAL MARK-1;Po;0;L;;;;;N;;;;; 11AA2;SOYOMBO TERMINAL MARK-2;Po;0;L;;;;;N;;;;; +11AB0;CANADIAN SYLLABICS NATTILIK HI;Lo;0;L;;;;;N;;;;; +11AB1;CANADIAN SYLLABICS NATTILIK HII;Lo;0;L;;;;;N;;;;; +11AB2;CANADIAN SYLLABICS NATTILIK HO;Lo;0;L;;;;;N;;;;; +11AB3;CANADIAN SYLLABICS NATTILIK HOO;Lo;0;L;;;;;N;;;;; +11AB4;CANADIAN SYLLABICS NATTILIK HA;Lo;0;L;;;;;N;;;;; +11AB5;CANADIAN SYLLABICS NATTILIK HAA;Lo;0;L;;;;;N;;;;; +11AB6;CANADIAN SYLLABICS NATTILIK SHRI;Lo;0;L;;;;;N;;;;; +11AB7;CANADIAN SYLLABICS NATTILIK SHRII;Lo;0;L;;;;;N;;;;; +11AB8;CANADIAN SYLLABICS NATTILIK SHRO;Lo;0;L;;;;;N;;;;; +11AB9;CANADIAN SYLLABICS NATTILIK SHROO;Lo;0;L;;;;;N;;;;; +11ABA;CANADIAN SYLLABICS NATTILIK SHRA;Lo;0;L;;;;;N;;;;; +11ABB;CANADIAN SYLLABICS NATTILIK SHRAA;Lo;0;L;;;;;N;;;;; +11ABC;CANADIAN SYLLABICS SPE;Lo;0;L;;;;;N;;;;; +11ABD;CANADIAN SYLLABICS SPI;Lo;0;L;;;;;N;;;;; +11ABE;CANADIAN SYLLABICS SPO;Lo;0;L;;;;;N;;;;; +11ABF;CANADIAN SYLLABICS SPA;Lo;0;L;;;;;N;;;;; 11AC0;PAU CIN HAU LETTER PA;Lo;0;L;;;;;N;;;;; 11AC1;PAU CIN HAU LETTER KA;Lo;0;L;;;;;N;;;;; 11AC2;PAU CIN HAU LETTER LA;Lo;0;L;;;;;N;;;;; @@ -20946,6 +21511,60 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11AF6;PAU CIN HAU LOW-FALLING TONE LONG FINAL;Lo;0;L;;;;;N;;;;; 11AF7;PAU CIN HAU LOW-FALLING TONE FINAL;Lo;0;L;;;;;N;;;;; 11AF8;PAU CIN HAU GLOTTAL STOP FINAL;Lo;0;L;;;;;N;;;;; +11B00;DEVANAGARI HEAD MARK;Po;0;L;;;;;N;;;;; +11B01;DEVANAGARI HEAD MARK WITH HEADSTROKE;Po;0;L;;;;;N;;;;; +11B02;DEVANAGARI SIGN BHALE;Po;0;L;;;;;N;;;;; +11B03;DEVANAGARI SIGN BHALE WITH HOOK;Po;0;L;;;;;N;;;;; +11B04;DEVANAGARI SIGN EXTENDED BHALE;Po;0;L;;;;;N;;;;; +11B05;DEVANAGARI SIGN EXTENDED BHALE WITH HOOK;Po;0;L;;;;;N;;;;; +11B06;DEVANAGARI SIGN WESTERN FIVE-LIKE BHALE;Po;0;L;;;;;N;;;;; +11B07;DEVANAGARI SIGN WESTERN NINE-LIKE BHALE;Po;0;L;;;;;N;;;;; +11B08;DEVANAGARI SIGN REVERSED NINE-LIKE BHALE;Po;0;L;;;;;N;;;;; +11B09;DEVANAGARI SIGN MINDU;Po;0;L;;;;;N;;;;; +11BC0;SUNUWAR LETTER DEVI;Lo;0;L;;;;;N;;;;; +11BC1;SUNUWAR LETTER TASLA;Lo;0;L;;;;;N;;;;; +11BC2;SUNUWAR LETTER EKO;Lo;0;L;;;;;N;;;;; +11BC3;SUNUWAR LETTER IMAR;Lo;0;L;;;;;N;;;;; +11BC4;SUNUWAR LETTER REU;Lo;0;L;;;;;N;;;;; +11BC5;SUNUWAR LETTER UTTHI;Lo;0;L;;;;;N;;;;; +11BC6;SUNUWAR LETTER KIK;Lo;0;L;;;;;N;;;;; +11BC7;SUNUWAR LETTER MA;Lo;0;L;;;;;N;;;;; +11BC8;SUNUWAR LETTER APPHO;Lo;0;L;;;;;N;;;;; +11BC9;SUNUWAR LETTER PIP;Lo;0;L;;;;;N;;;;; +11BCA;SUNUWAR LETTER GIL;Lo;0;L;;;;;N;;;;; +11BCB;SUNUWAR LETTER HAMSO;Lo;0;L;;;;;N;;;;; +11BCC;SUNUWAR LETTER CARMI;Lo;0;L;;;;;N;;;;; +11BCD;SUNUWAR LETTER NAH;Lo;0;L;;;;;N;;;;; +11BCE;SUNUWAR LETTER BUR;Lo;0;L;;;;;N;;;;; +11BCF;SUNUWAR LETTER JYAH;Lo;0;L;;;;;N;;;;; +11BD0;SUNUWAR LETTER LOACHA;Lo;0;L;;;;;N;;;;; +11BD1;SUNUWAR LETTER OTTHI;Lo;0;L;;;;;N;;;;; +11BD2;SUNUWAR LETTER SHYELE;Lo;0;L;;;;;N;;;;; +11BD3;SUNUWAR LETTER VARCA;Lo;0;L;;;;;N;;;;; +11BD4;SUNUWAR LETTER YAT;Lo;0;L;;;;;N;;;;; +11BD5;SUNUWAR LETTER AVA;Lo;0;L;;;;;N;;;;; +11BD6;SUNUWAR LETTER AAL;Lo;0;L;;;;;N;;;;; +11BD7;SUNUWAR LETTER DONGA;Lo;0;L;;;;;N;;;;; +11BD8;SUNUWAR LETTER THARI;Lo;0;L;;;;;N;;;;; +11BD9;SUNUWAR LETTER PHAR;Lo;0;L;;;;;N;;;;; +11BDA;SUNUWAR LETTER NGAR;Lo;0;L;;;;;N;;;;; +11BDB;SUNUWAR LETTER KHA;Lo;0;L;;;;;N;;;;; +11BDC;SUNUWAR LETTER SHYER;Lo;0;L;;;;;N;;;;; +11BDD;SUNUWAR LETTER CHELAP;Lo;0;L;;;;;N;;;;; +11BDE;SUNUWAR LETTER TENTU;Lo;0;L;;;;;N;;;;; +11BDF;SUNUWAR LETTER THELE;Lo;0;L;;;;;N;;;;; +11BE0;SUNUWAR LETTER KLOKO;Lo;0;L;;;;;N;;;;; +11BE1;SUNUWAR SIGN PVO;Po;0;L;;;;;N;;;;; +11BF0;SUNUWAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +11BF1;SUNUWAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +11BF2;SUNUWAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +11BF3;SUNUWAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +11BF4;SUNUWAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +11BF5;SUNUWAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +11BF6;SUNUWAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +11BF7;SUNUWAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +11BF8;SUNUWAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +11BF9;SUNUWAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;; 11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;; 11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;; @@ -21274,6 +21893,93 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;; 11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;; 11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;; +11F00;KAWI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +11F01;KAWI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +11F02;KAWI SIGN REPHA;Lo;0;L;;;;;N;;;;; +11F03;KAWI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +11F04;KAWI LETTER A;Lo;0;L;;;;;N;;;;; +11F05;KAWI LETTER AA;Lo;0;L;;;;;N;;;;; +11F06;KAWI LETTER I;Lo;0;L;;;;;N;;;;; +11F07;KAWI LETTER II;Lo;0;L;;;;;N;;;;; +11F08;KAWI LETTER U;Lo;0;L;;;;;N;;;;; +11F09;KAWI LETTER UU;Lo;0;L;;;;;N;;;;; +11F0A;KAWI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +11F0B;KAWI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +11F0C;KAWI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +11F0D;KAWI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +11F0E;KAWI LETTER E;Lo;0;L;;;;;N;;;;; +11F0F;KAWI LETTER AI;Lo;0;L;;;;;N;;;;; +11F10;KAWI LETTER O;Lo;0;L;;;;;N;;;;; +11F12;KAWI LETTER KA;Lo;0;L;;;;;N;;;;; +11F13;KAWI LETTER KHA;Lo;0;L;;;;;N;;;;; +11F14;KAWI LETTER GA;Lo;0;L;;;;;N;;;;; +11F15;KAWI LETTER GHA;Lo;0;L;;;;;N;;;;; +11F16;KAWI LETTER NGA;Lo;0;L;;;;;N;;;;; +11F17;KAWI LETTER CA;Lo;0;L;;;;;N;;;;; +11F18;KAWI LETTER CHA;Lo;0;L;;;;;N;;;;; +11F19;KAWI LETTER JA;Lo;0;L;;;;;N;;;;; +11F1A;KAWI LETTER JHA;Lo;0;L;;;;;N;;;;; +11F1B;KAWI LETTER NYA;Lo;0;L;;;;;N;;;;; +11F1C;KAWI LETTER TTA;Lo;0;L;;;;;N;;;;; +11F1D;KAWI LETTER TTHA;Lo;0;L;;;;;N;;;;; +11F1E;KAWI LETTER DDA;Lo;0;L;;;;;N;;;;; +11F1F;KAWI LETTER DDHA;Lo;0;L;;;;;N;;;;; +11F20;KAWI LETTER NNA;Lo;0;L;;;;;N;;;;; +11F21;KAWI LETTER TA;Lo;0;L;;;;;N;;;;; +11F22;KAWI LETTER THA;Lo;0;L;;;;;N;;;;; +11F23;KAWI LETTER DA;Lo;0;L;;;;;N;;;;; +11F24;KAWI LETTER DHA;Lo;0;L;;;;;N;;;;; +11F25;KAWI LETTER NA;Lo;0;L;;;;;N;;;;; +11F26;KAWI LETTER PA;Lo;0;L;;;;;N;;;;; +11F27;KAWI LETTER PHA;Lo;0;L;;;;;N;;;;; +11F28;KAWI LETTER BA;Lo;0;L;;;;;N;;;;; +11F29;KAWI LETTER BHA;Lo;0;L;;;;;N;;;;; +11F2A;KAWI LETTER MA;Lo;0;L;;;;;N;;;;; +11F2B;KAWI LETTER YA;Lo;0;L;;;;;N;;;;; +11F2C;KAWI LETTER RA;Lo;0;L;;;;;N;;;;; +11F2D;KAWI LETTER LA;Lo;0;L;;;;;N;;;;; +11F2E;KAWI LETTER WA;Lo;0;L;;;;;N;;;;; +11F2F;KAWI LETTER SHA;Lo;0;L;;;;;N;;;;; +11F30;KAWI LETTER SSA;Lo;0;L;;;;;N;;;;; +11F31;KAWI LETTER SA;Lo;0;L;;;;;N;;;;; +11F32;KAWI LETTER HA;Lo;0;L;;;;;N;;;;; +11F33;KAWI LETTER JNYA;Lo;0;L;;;;;N;;;;; +11F34;KAWI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +11F35;KAWI VOWEL SIGN ALTERNATE AA;Mc;0;L;;;;;N;;;;; +11F36;KAWI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +11F37;KAWI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +11F38;KAWI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +11F39;KAWI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +11F3A;KAWI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +11F3E;KAWI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +11F3F;KAWI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +11F40;KAWI VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;; +11F41;KAWI SIGN KILLER;Mc;9;L;;;;;N;;;;; +11F42;KAWI CONJOINER;Mn;9;NSM;;;;;N;;;;; +11F43;KAWI DANDA;Po;0;L;;;;;N;;;;; +11F44;KAWI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +11F45;KAWI PUNCTUATION SECTION MARKER;Po;0;L;;;;;N;;;;; +11F46;KAWI PUNCTUATION ALTERNATE SECTION MARKER;Po;0;L;;;;;N;;;;; +11F47;KAWI PUNCTUATION FLOWER;Po;0;L;;;;;N;;;;; +11F48;KAWI PUNCTUATION SPACE FILLER;Po;0;L;;;;;N;;;;; +11F49;KAWI PUNCTUATION DOT;Po;0;L;;;;;N;;;;; +11F4A;KAWI PUNCTUATION DOUBLE DOT;Po;0;L;;;;;N;;;;; +11F4B;KAWI PUNCTUATION TRIPLE DOT;Po;0;L;;;;;N;;;;; +11F4C;KAWI PUNCTUATION CIRCLE;Po;0;L;;;;;N;;;;; +11F4D;KAWI PUNCTUATION FILLED CIRCLE;Po;0;L;;;;;N;;;;; +11F4E;KAWI PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;; +11F4F;KAWI PUNCTUATION CLOSING SPIRAL;Po;0;L;;;;;N;;;;; +11F50;KAWI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +11F51;KAWI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +11F52;KAWI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +11F53;KAWI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +11F54;KAWI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +11F55;KAWI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +11F56;KAWI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +11F57;KAWI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +11F58;KAWI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +11F59;KAWI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +11F5A;KAWI SIGN NUKTA;Mn;0;NSM;;;;;N;;;;; 11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;; 11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;; 11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;; @@ -22560,6 +23266,105 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 12541;CUNEIFORM SIGN ZA7;Lo;0;L;;;;;N;;;;; 12542;CUNEIFORM SIGN ZU OVER ZU PLUS SAR;Lo;0;L;;;;;N;;;;; 12543;CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU;Lo;0;L;;;;;N;;;;; +12F90;CYPRO-MINOAN SIGN CM001;Lo;0;L;;;;;N;;;;; +12F91;CYPRO-MINOAN SIGN CM002;Lo;0;L;;;;;N;;;;; +12F92;CYPRO-MINOAN SIGN CM004;Lo;0;L;;;;;N;;;;; +12F93;CYPRO-MINOAN SIGN CM005;Lo;0;L;;;;;N;;;;; +12F94;CYPRO-MINOAN SIGN CM006;Lo;0;L;;;;;N;;;;; +12F95;CYPRO-MINOAN SIGN CM007;Lo;0;L;;;;;N;;;;; +12F96;CYPRO-MINOAN SIGN CM008;Lo;0;L;;;;;N;;;;; +12F97;CYPRO-MINOAN SIGN CM009;Lo;0;L;;;;;N;;;;; +12F98;CYPRO-MINOAN SIGN CM010;Lo;0;L;;;;;N;;;;; +12F99;CYPRO-MINOAN SIGN CM011;Lo;0;L;;;;;N;;;;; +12F9A;CYPRO-MINOAN SIGN CM012;Lo;0;L;;;;;N;;;;; +12F9B;CYPRO-MINOAN SIGN CM012B;Lo;0;L;;;;;N;;;;; +12F9C;CYPRO-MINOAN SIGN CM013;Lo;0;L;;;;;N;;;;; +12F9D;CYPRO-MINOAN SIGN CM015;Lo;0;L;;;;;N;;;;; +12F9E;CYPRO-MINOAN SIGN CM017;Lo;0;L;;;;;N;;;;; +12F9F;CYPRO-MINOAN SIGN CM019;Lo;0;L;;;;;N;;;;; +12FA0;CYPRO-MINOAN SIGN CM021;Lo;0;L;;;;;N;;;;; +12FA1;CYPRO-MINOAN SIGN CM023;Lo;0;L;;;;;N;;;;; +12FA2;CYPRO-MINOAN SIGN CM024;Lo;0;L;;;;;N;;;;; +12FA3;CYPRO-MINOAN SIGN CM025;Lo;0;L;;;;;N;;;;; +12FA4;CYPRO-MINOAN SIGN CM026;Lo;0;L;;;;;N;;;;; +12FA5;CYPRO-MINOAN SIGN CM027;Lo;0;L;;;;;N;;;;; +12FA6;CYPRO-MINOAN SIGN CM028;Lo;0;L;;;;;N;;;;; +12FA7;CYPRO-MINOAN SIGN CM029;Lo;0;L;;;;;N;;;;; +12FA8;CYPRO-MINOAN SIGN CM030;Lo;0;L;;;;;N;;;;; +12FA9;CYPRO-MINOAN SIGN CM033;Lo;0;L;;;;;N;;;;; +12FAA;CYPRO-MINOAN SIGN CM034;Lo;0;L;;;;;N;;;;; +12FAB;CYPRO-MINOAN SIGN CM035;Lo;0;L;;;;;N;;;;; +12FAC;CYPRO-MINOAN SIGN CM036;Lo;0;L;;;;;N;;;;; +12FAD;CYPRO-MINOAN SIGN CM037;Lo;0;L;;;;;N;;;;; +12FAE;CYPRO-MINOAN SIGN CM038;Lo;0;L;;;;;N;;;;; +12FAF;CYPRO-MINOAN SIGN CM039;Lo;0;L;;;;;N;;;;; +12FB0;CYPRO-MINOAN SIGN CM040;Lo;0;L;;;;;N;;;;; +12FB1;CYPRO-MINOAN SIGN CM041;Lo;0;L;;;;;N;;;;; +12FB2;CYPRO-MINOAN SIGN CM044;Lo;0;L;;;;;N;;;;; +12FB3;CYPRO-MINOAN SIGN CM046;Lo;0;L;;;;;N;;;;; +12FB4;CYPRO-MINOAN SIGN CM047;Lo;0;L;;;;;N;;;;; +12FB5;CYPRO-MINOAN SIGN CM049;Lo;0;L;;;;;N;;;;; +12FB6;CYPRO-MINOAN SIGN CM050;Lo;0;L;;;;;N;;;;; +12FB7;CYPRO-MINOAN SIGN CM051;Lo;0;L;;;;;N;;;;; +12FB8;CYPRO-MINOAN SIGN CM052;Lo;0;L;;;;;N;;;;; +12FB9;CYPRO-MINOAN SIGN CM053;Lo;0;L;;;;;N;;;;; +12FBA;CYPRO-MINOAN SIGN CM054;Lo;0;L;;;;;N;;;;; +12FBB;CYPRO-MINOAN SIGN CM055;Lo;0;L;;;;;N;;;;; +12FBC;CYPRO-MINOAN SIGN CM056;Lo;0;L;;;;;N;;;;; +12FBD;CYPRO-MINOAN SIGN CM058;Lo;0;L;;;;;N;;;;; +12FBE;CYPRO-MINOAN SIGN CM059;Lo;0;L;;;;;N;;;;; +12FBF;CYPRO-MINOAN SIGN CM060;Lo;0;L;;;;;N;;;;; +12FC0;CYPRO-MINOAN SIGN CM061;Lo;0;L;;;;;N;;;;; +12FC1;CYPRO-MINOAN SIGN CM062;Lo;0;L;;;;;N;;;;; +12FC2;CYPRO-MINOAN SIGN CM063;Lo;0;L;;;;;N;;;;; +12FC3;CYPRO-MINOAN SIGN CM064;Lo;0;L;;;;;N;;;;; +12FC4;CYPRO-MINOAN SIGN CM066;Lo;0;L;;;;;N;;;;; +12FC5;CYPRO-MINOAN SIGN CM067;Lo;0;L;;;;;N;;;;; +12FC6;CYPRO-MINOAN SIGN CM068;Lo;0;L;;;;;N;;;;; +12FC7;CYPRO-MINOAN SIGN CM069;Lo;0;L;;;;;N;;;;; +12FC8;CYPRO-MINOAN SIGN CM070;Lo;0;L;;;;;N;;;;; +12FC9;CYPRO-MINOAN SIGN CM071;Lo;0;L;;;;;N;;;;; +12FCA;CYPRO-MINOAN SIGN CM072;Lo;0;L;;;;;N;;;;; +12FCB;CYPRO-MINOAN SIGN CM073;Lo;0;L;;;;;N;;;;; +12FCC;CYPRO-MINOAN SIGN CM074;Lo;0;L;;;;;N;;;;; +12FCD;CYPRO-MINOAN SIGN CM075;Lo;0;L;;;;;N;;;;; +12FCE;CYPRO-MINOAN SIGN CM075B;Lo;0;L;;;;;N;;;;; +12FCF;CYPRO-MINOAN SIGN CM076;Lo;0;L;;;;;N;;;;; +12FD0;CYPRO-MINOAN SIGN CM078;Lo;0;L;;;;;N;;;;; +12FD1;CYPRO-MINOAN SIGN CM079;Lo;0;L;;;;;N;;;;; +12FD2;CYPRO-MINOAN SIGN CM080;Lo;0;L;;;;;N;;;;; +12FD3;CYPRO-MINOAN SIGN CM081;Lo;0;L;;;;;N;;;;; +12FD4;CYPRO-MINOAN SIGN CM082;Lo;0;L;;;;;N;;;;; +12FD5;CYPRO-MINOAN SIGN CM083;Lo;0;L;;;;;N;;;;; +12FD6;CYPRO-MINOAN SIGN CM084;Lo;0;L;;;;;N;;;;; +12FD7;CYPRO-MINOAN SIGN CM085;Lo;0;L;;;;;N;;;;; +12FD8;CYPRO-MINOAN SIGN CM086;Lo;0;L;;;;;N;;;;; +12FD9;CYPRO-MINOAN SIGN CM087;Lo;0;L;;;;;N;;;;; +12FDA;CYPRO-MINOAN SIGN CM088;Lo;0;L;;;;;N;;;;; +12FDB;CYPRO-MINOAN SIGN CM089;Lo;0;L;;;;;N;;;;; +12FDC;CYPRO-MINOAN SIGN CM090;Lo;0;L;;;;;N;;;;; +12FDD;CYPRO-MINOAN SIGN CM091;Lo;0;L;;;;;N;;;;; +12FDE;CYPRO-MINOAN SIGN CM092;Lo;0;L;;;;;N;;;;; +12FDF;CYPRO-MINOAN SIGN CM094;Lo;0;L;;;;;N;;;;; +12FE0;CYPRO-MINOAN SIGN CM095;Lo;0;L;;;;;N;;;;; +12FE1;CYPRO-MINOAN SIGN CM096;Lo;0;L;;;;;N;;;;; +12FE2;CYPRO-MINOAN SIGN CM097;Lo;0;L;;;;;N;;;;; +12FE3;CYPRO-MINOAN SIGN CM098;Lo;0;L;;;;;N;;;;; +12FE4;CYPRO-MINOAN SIGN CM099;Lo;0;L;;;;;N;;;;; +12FE5;CYPRO-MINOAN SIGN CM100;Lo;0;L;;;;;N;;;;; +12FE6;CYPRO-MINOAN SIGN CM101;Lo;0;L;;;;;N;;;;; +12FE7;CYPRO-MINOAN SIGN CM102;Lo;0;L;;;;;N;;;;; +12FE8;CYPRO-MINOAN SIGN CM103;Lo;0;L;;;;;N;;;;; +12FE9;CYPRO-MINOAN SIGN CM104;Lo;0;L;;;;;N;;;;; +12FEA;CYPRO-MINOAN SIGN CM105;Lo;0;L;;;;;N;;;;; +12FEB;CYPRO-MINOAN SIGN CM107;Lo;0;L;;;;;N;;;;; +12FEC;CYPRO-MINOAN SIGN CM108;Lo;0;L;;;;;N;;;;; +12FED;CYPRO-MINOAN SIGN CM109;Lo;0;L;;;;;N;;;;; +12FEE;CYPRO-MINOAN SIGN CM110;Lo;0;L;;;;;N;;;;; +12FEF;CYPRO-MINOAN SIGN CM112;Lo;0;L;;;;;N;;;;; +12FF0;CYPRO-MINOAN SIGN CM114;Lo;0;L;;;;;N;;;;; +12FF1;CYPRO-MINOAN SIGN CM301;Po;0;L;;;;;N;;;;; +12FF2;CYPRO-MINOAN SIGN CM302;Po;0;L;;;;;N;;;;; 13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; 13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; 13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; @@ -23631,6 +24436,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;; 1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;; 1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;; +1342F;EGYPTIAN HIEROGLYPH V011D;Lo;0;L;;;;;N;;;;; 13430;EGYPTIAN HIEROGLYPH VERTICAL JOINER;Cf;0;L;;;;;N;;;;; 13431;EGYPTIAN HIEROGLYPH HORIZONTAL JOINER;Cf;0;L;;;;;N;;;;; 13432;EGYPTIAN HIEROGLYPH INSERT AT TOP START;Cf;0;L;;;;;N;;;;; @@ -23640,6 +24446,4030 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 13436;EGYPTIAN HIEROGLYPH OVERLAY MIDDLE;Cf;0;L;;;;;N;;;;; 13437;EGYPTIAN HIEROGLYPH BEGIN SEGMENT;Cf;0;L;;;;;N;;;;; 13438;EGYPTIAN HIEROGLYPH END SEGMENT;Cf;0;L;;;;;N;;;;; +13439;EGYPTIAN HIEROGLYPH INSERT AT MIDDLE;Cf;0;L;;;;;N;;;;; +1343A;EGYPTIAN HIEROGLYPH INSERT AT TOP;Cf;0;L;;;;;N;;;;; +1343B;EGYPTIAN HIEROGLYPH INSERT AT BOTTOM;Cf;0;L;;;;;N;;;;; +1343C;EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE;Cf;0;L;;;;;N;;;;; +1343D;EGYPTIAN HIEROGLYPH END ENCLOSURE;Cf;0;L;;;;;N;;;;; +1343E;EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE;Cf;0;L;;;;;N;;;;; +1343F;EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE;Cf;0;L;;;;;N;;;;; +13440;EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY;Mn;0;NSM;;;;;N;;;;; +13441;EGYPTIAN HIEROGLYPH FULL BLANK;Lo;0;L;;;;;N;;;;; +13442;EGYPTIAN HIEROGLYPH HALF BLANK;Lo;0;L;;;;;N;;;;; +13443;EGYPTIAN HIEROGLYPH LOST SIGN;Lo;0;L;;;;;N;;;;; +13444;EGYPTIAN HIEROGLYPH HALF LOST SIGN;Lo;0;L;;;;;N;;;;; +13445;EGYPTIAN HIEROGLYPH TALL LOST SIGN;Lo;0;L;;;;;N;;;;; +13446;EGYPTIAN HIEROGLYPH WIDE LOST SIGN;Lo;0;L;;;;;N;;;;; +13447;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START;Mn;0;NSM;;;;;N;;;;; +13448;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START;Mn;0;NSM;;;;;N;;;;; +13449;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START;Mn;0;NSM;;;;;N;;;;; +1344A;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP END;Mn;0;NSM;;;;;N;;;;; +1344B;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP;Mn;0;NSM;;;;;N;;;;; +1344C;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START AND TOP END;Mn;0;NSM;;;;;N;;;;; +1344D;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND TOP;Mn;0;NSM;;;;;N;;;;; +1344E;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM END;Mn;0;NSM;;;;;N;;;;; +1344F;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START AND BOTTOM END;Mn;0;NSM;;;;;N;;;;; +13450;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM;Mn;0;NSM;;;;;N;;;;; +13451;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND BOTTOM;Mn;0;NSM;;;;;N;;;;; +13452;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT END;Mn;0;NSM;;;;;N;;;;; +13453;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END;Mn;0;NSM;;;;;N;;;;; +13454;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END;Mn;0;NSM;;;;;N;;;;; +13455;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED;Mn;0;NSM;;;;;N;;;;; +13460;EGYPTIAN HIEROGLYPH-13460;Lo;0;L;;;;;N;;;;; +13461;EGYPTIAN HIEROGLYPH-13461;Lo;0;L;;;;;N;;;;; +13462;EGYPTIAN HIEROGLYPH-13462;Lo;0;L;;;;;N;;;;; +13463;EGYPTIAN HIEROGLYPH-13463;Lo;0;L;;;;;N;;;;; +13464;EGYPTIAN HIEROGLYPH-13464;Lo;0;L;;;;;N;;;;; +13465;EGYPTIAN HIEROGLYPH-13465;Lo;0;L;;;;;N;;;;; +13466;EGYPTIAN HIEROGLYPH-13466;Lo;0;L;;;;;N;;;;; +13467;EGYPTIAN HIEROGLYPH-13467;Lo;0;L;;;;;N;;;;; +13468;EGYPTIAN HIEROGLYPH-13468;Lo;0;L;;;;;N;;;;; +13469;EGYPTIAN HIEROGLYPH-13469;Lo;0;L;;;;;N;;;;; +1346A;EGYPTIAN HIEROGLYPH-1346A;Lo;0;L;;;;;N;;;;; +1346B;EGYPTIAN HIEROGLYPH-1346B;Lo;0;L;;;;;N;;;;; +1346C;EGYPTIAN HIEROGLYPH-1346C;Lo;0;L;;;;;N;;;;; +1346D;EGYPTIAN HIEROGLYPH-1346D;Lo;0;L;;;;;N;;;;; +1346E;EGYPTIAN HIEROGLYPH-1346E;Lo;0;L;;;;;N;;;;; +1346F;EGYPTIAN HIEROGLYPH-1346F;Lo;0;L;;;;;N;;;;; +13470;EGYPTIAN HIEROGLYPH-13470;Lo;0;L;;;;;N;;;;; +13471;EGYPTIAN HIEROGLYPH-13471;Lo;0;L;;;;;N;;;;; +13472;EGYPTIAN HIEROGLYPH-13472;Lo;0;L;;;;;N;;;;; +13473;EGYPTIAN HIEROGLYPH-13473;Lo;0;L;;;;;N;;;;; +13474;EGYPTIAN HIEROGLYPH-13474;Lo;0;L;;;;;N;;;;; +13475;EGYPTIAN HIEROGLYPH-13475;Lo;0;L;;;;;N;;;;; +13476;EGYPTIAN HIEROGLYPH-13476;Lo;0;L;;;;;N;;;;; +13477;EGYPTIAN HIEROGLYPH-13477;Lo;0;L;;;;;N;;;;; +13478;EGYPTIAN HIEROGLYPH-13478;Lo;0;L;;;;;N;;;;; +13479;EGYPTIAN HIEROGLYPH-13479;Lo;0;L;;;;;N;;;;; +1347A;EGYPTIAN HIEROGLYPH-1347A;Lo;0;L;;;;;N;;;;; +1347B;EGYPTIAN HIEROGLYPH-1347B;Lo;0;L;;;;;N;;;;; +1347C;EGYPTIAN HIEROGLYPH-1347C;Lo;0;L;;;;;N;;;;; +1347D;EGYPTIAN HIEROGLYPH-1347D;Lo;0;L;;;;;N;;;;; +1347E;EGYPTIAN HIEROGLYPH-1347E;Lo;0;L;;;;;N;;;;; +1347F;EGYPTIAN HIEROGLYPH-1347F;Lo;0;L;;;;;N;;;;; +13480;EGYPTIAN HIEROGLYPH-13480;Lo;0;L;;;;;N;;;;; +13481;EGYPTIAN HIEROGLYPH-13481;Lo;0;L;;;;;N;;;;; +13482;EGYPTIAN HIEROGLYPH-13482;Lo;0;L;;;;;N;;;;; +13483;EGYPTIAN HIEROGLYPH-13483;Lo;0;L;;;;;N;;;;; +13484;EGYPTIAN HIEROGLYPH-13484;Lo;0;L;;;;;N;;;;; +13485;EGYPTIAN HIEROGLYPH-13485;Lo;0;L;;;;;N;;;;; +13486;EGYPTIAN HIEROGLYPH-13486;Lo;0;L;;;;;N;;;;; +13487;EGYPTIAN HIEROGLYPH-13487;Lo;0;L;;;;;N;;;;; +13488;EGYPTIAN HIEROGLYPH-13488;Lo;0;L;;;;;N;;;;; +13489;EGYPTIAN HIEROGLYPH-13489;Lo;0;L;;;;;N;;;;; +1348A;EGYPTIAN HIEROGLYPH-1348A;Lo;0;L;;;;;N;;;;; +1348B;EGYPTIAN HIEROGLYPH-1348B;Lo;0;L;;;;;N;;;;; +1348C;EGYPTIAN HIEROGLYPH-1348C;Lo;0;L;;;;;N;;;;; +1348D;EGYPTIAN HIEROGLYPH-1348D;Lo;0;L;;;;;N;;;;; +1348E;EGYPTIAN HIEROGLYPH-1348E;Lo;0;L;;;;;N;;;;; +1348F;EGYPTIAN HIEROGLYPH-1348F;Lo;0;L;;;;;N;;;;; +13490;EGYPTIAN HIEROGLYPH-13490;Lo;0;L;;;;;N;;;;; +13491;EGYPTIAN HIEROGLYPH-13491;Lo;0;L;;;;;N;;;;; +13492;EGYPTIAN HIEROGLYPH-13492;Lo;0;L;;;;;N;;;;; +13493;EGYPTIAN HIEROGLYPH-13493;Lo;0;L;;;;;N;;;;; +13494;EGYPTIAN HIEROGLYPH-13494;Lo;0;L;;;;;N;;;;; +13495;EGYPTIAN HIEROGLYPH-13495;Lo;0;L;;;;;N;;;;; +13496;EGYPTIAN HIEROGLYPH-13496;Lo;0;L;;;;;N;;;;; +13497;EGYPTIAN HIEROGLYPH-13497;Lo;0;L;;;;;N;;;;; +13498;EGYPTIAN HIEROGLYPH-13498;Lo;0;L;;;;;N;;;;; +13499;EGYPTIAN HIEROGLYPH-13499;Lo;0;L;;;;;N;;;;; +1349A;EGYPTIAN HIEROGLYPH-1349A;Lo;0;L;;;;;N;;;;; +1349B;EGYPTIAN HIEROGLYPH-1349B;Lo;0;L;;;;;N;;;;; +1349C;EGYPTIAN HIEROGLYPH-1349C;Lo;0;L;;;;;N;;;;; +1349D;EGYPTIAN HIEROGLYPH-1349D;Lo;0;L;;;;;N;;;;; +1349E;EGYPTIAN HIEROGLYPH-1349E;Lo;0;L;;;;;N;;;;; +1349F;EGYPTIAN HIEROGLYPH-1349F;Lo;0;L;;;;;N;;;;; +134A0;EGYPTIAN HIEROGLYPH-134A0;Lo;0;L;;;;;N;;;;; +134A1;EGYPTIAN HIEROGLYPH-134A1;Lo;0;L;;;;;N;;;;; +134A2;EGYPTIAN HIEROGLYPH-134A2;Lo;0;L;;;;;N;;;;; +134A3;EGYPTIAN HIEROGLYPH-134A3;Lo;0;L;;;;;N;;;;; +134A4;EGYPTIAN HIEROGLYPH-134A4;Lo;0;L;;;;;N;;;;; +134A5;EGYPTIAN HIEROGLYPH-134A5;Lo;0;L;;;;;N;;;;; +134A6;EGYPTIAN HIEROGLYPH-134A6;Lo;0;L;;;;;N;;;;; +134A7;EGYPTIAN HIEROGLYPH-134A7;Lo;0;L;;;;;N;;;;; +134A8;EGYPTIAN HIEROGLYPH-134A8;Lo;0;L;;;;;N;;;;; +134A9;EGYPTIAN HIEROGLYPH-134A9;Lo;0;L;;;;;N;;;;; +134AA;EGYPTIAN HIEROGLYPH-134AA;Lo;0;L;;;;;N;;;;; +134AB;EGYPTIAN HIEROGLYPH-134AB;Lo;0;L;;;;;N;;;;; +134AC;EGYPTIAN HIEROGLYPH-134AC;Lo;0;L;;;;;N;;;;; +134AD;EGYPTIAN HIEROGLYPH-134AD;Lo;0;L;;;;;N;;;;; +134AE;EGYPTIAN HIEROGLYPH-134AE;Lo;0;L;;;;;N;;;;; +134AF;EGYPTIAN HIEROGLYPH-134AF;Lo;0;L;;;;;N;;;;; +134B0;EGYPTIAN HIEROGLYPH-134B0;Lo;0;L;;;;;N;;;;; +134B1;EGYPTIAN HIEROGLYPH-134B1;Lo;0;L;;;;;N;;;;; +134B2;EGYPTIAN HIEROGLYPH-134B2;Lo;0;L;;;;;N;;;;; +134B3;EGYPTIAN HIEROGLYPH-134B3;Lo;0;L;;;;;N;;;;; +134B4;EGYPTIAN HIEROGLYPH-134B4;Lo;0;L;;;;;N;;;;; +134B5;EGYPTIAN HIEROGLYPH-134B5;Lo;0;L;;;;;N;;;;; +134B6;EGYPTIAN HIEROGLYPH-134B6;Lo;0;L;;;;;N;;;;; +134B7;EGYPTIAN HIEROGLYPH-134B7;Lo;0;L;;;;;N;;;;; +134B8;EGYPTIAN HIEROGLYPH-134B8;Lo;0;L;;;;;N;;;;; +134B9;EGYPTIAN HIEROGLYPH-134B9;Lo;0;L;;;;;N;;;;; +134BA;EGYPTIAN HIEROGLYPH-134BA;Lo;0;L;;;;;N;;;;; +134BB;EGYPTIAN HIEROGLYPH-134BB;Lo;0;L;;;;;N;;;;; +134BC;EGYPTIAN HIEROGLYPH-134BC;Lo;0;L;;;;;N;;;;; +134BD;EGYPTIAN HIEROGLYPH-134BD;Lo;0;L;;;;;N;;;;; +134BE;EGYPTIAN HIEROGLYPH-134BE;Lo;0;L;;;;;N;;;;; +134BF;EGYPTIAN HIEROGLYPH-134BF;Lo;0;L;;;;;N;;;;; +134C0;EGYPTIAN HIEROGLYPH-134C0;Lo;0;L;;;;;N;;;;; +134C1;EGYPTIAN HIEROGLYPH-134C1;Lo;0;L;;;;;N;;;;; +134C2;EGYPTIAN HIEROGLYPH-134C2;Lo;0;L;;;;;N;;;;; +134C3;EGYPTIAN HIEROGLYPH-134C3;Lo;0;L;;;;;N;;;;; +134C4;EGYPTIAN HIEROGLYPH-134C4;Lo;0;L;;;;;N;;;;; +134C5;EGYPTIAN HIEROGLYPH-134C5;Lo;0;L;;;;;N;;;;; +134C6;EGYPTIAN HIEROGLYPH-134C6;Lo;0;L;;;;;N;;;;; +134C7;EGYPTIAN HIEROGLYPH-134C7;Lo;0;L;;;;;N;;;;; +134C8;EGYPTIAN HIEROGLYPH-134C8;Lo;0;L;;;;;N;;;;; +134C9;EGYPTIAN HIEROGLYPH-134C9;Lo;0;L;;;;;N;;;;; +134CA;EGYPTIAN HIEROGLYPH-134CA;Lo;0;L;;;;;N;;;;; +134CB;EGYPTIAN HIEROGLYPH-134CB;Lo;0;L;;;;;N;;;;; +134CC;EGYPTIAN HIEROGLYPH-134CC;Lo;0;L;;;;;N;;;;; +134CD;EGYPTIAN HIEROGLYPH-134CD;Lo;0;L;;;;;N;;;;; +134CE;EGYPTIAN HIEROGLYPH-134CE;Lo;0;L;;;;;N;;;;; +134CF;EGYPTIAN HIEROGLYPH-134CF;Lo;0;L;;;;;N;;;;; +134D0;EGYPTIAN HIEROGLYPH-134D0;Lo;0;L;;;;;N;;;;; +134D1;EGYPTIAN HIEROGLYPH-134D1;Lo;0;L;;;;;N;;;;; +134D2;EGYPTIAN HIEROGLYPH-134D2;Lo;0;L;;;;;N;;;;; +134D3;EGYPTIAN HIEROGLYPH-134D3;Lo;0;L;;;;;N;;;;; +134D4;EGYPTIAN HIEROGLYPH-134D4;Lo;0;L;;;;;N;;;;; +134D5;EGYPTIAN HIEROGLYPH-134D5;Lo;0;L;;;;;N;;;;; +134D6;EGYPTIAN HIEROGLYPH-134D6;Lo;0;L;;;;;N;;;;; +134D7;EGYPTIAN HIEROGLYPH-134D7;Lo;0;L;;;;;N;;;;; +134D8;EGYPTIAN HIEROGLYPH-134D8;Lo;0;L;;;;;N;;;;; +134D9;EGYPTIAN HIEROGLYPH-134D9;Lo;0;L;;;;;N;;;;; +134DA;EGYPTIAN HIEROGLYPH-134DA;Lo;0;L;;;;;N;;;;; +134DB;EGYPTIAN HIEROGLYPH-134DB;Lo;0;L;;;;;N;;;;; +134DC;EGYPTIAN HIEROGLYPH-134DC;Lo;0;L;;;;;N;;;;; +134DD;EGYPTIAN HIEROGLYPH-134DD;Lo;0;L;;;;;N;;;;; +134DE;EGYPTIAN HIEROGLYPH-134DE;Lo;0;L;;;;;N;;;;; +134DF;EGYPTIAN HIEROGLYPH-134DF;Lo;0;L;;;;;N;;;;; +134E0;EGYPTIAN HIEROGLYPH-134E0;Lo;0;L;;;;;N;;;;; +134E1;EGYPTIAN HIEROGLYPH-134E1;Lo;0;L;;;;;N;;;;; +134E2;EGYPTIAN HIEROGLYPH-134E2;Lo;0;L;;;;;N;;;;; +134E3;EGYPTIAN HIEROGLYPH-134E3;Lo;0;L;;;;;N;;;;; +134E4;EGYPTIAN HIEROGLYPH-134E4;Lo;0;L;;;;;N;;;;; +134E5;EGYPTIAN HIEROGLYPH-134E5;Lo;0;L;;;;;N;;;;; +134E6;EGYPTIAN HIEROGLYPH-134E6;Lo;0;L;;;;;N;;;;; +134E7;EGYPTIAN HIEROGLYPH-134E7;Lo;0;L;;;;;N;;;;; +134E8;EGYPTIAN HIEROGLYPH-134E8;Lo;0;L;;;;;N;;;;; +134E9;EGYPTIAN HIEROGLYPH-134E9;Lo;0;L;;;;;N;;;;; +134EA;EGYPTIAN HIEROGLYPH-134EA;Lo;0;L;;;;;N;;;;; +134EB;EGYPTIAN HIEROGLYPH-134EB;Lo;0;L;;;;;N;;;;; +134EC;EGYPTIAN HIEROGLYPH-134EC;Lo;0;L;;;;;N;;;;; +134ED;EGYPTIAN HIEROGLYPH-134ED;Lo;0;L;;;;;N;;;;; +134EE;EGYPTIAN HIEROGLYPH-134EE;Lo;0;L;;;;;N;;;;; +134EF;EGYPTIAN HIEROGLYPH-134EF;Lo;0;L;;;;;N;;;;; +134F0;EGYPTIAN HIEROGLYPH-134F0;Lo;0;L;;;;;N;;;;; +134F1;EGYPTIAN HIEROGLYPH-134F1;Lo;0;L;;;;;N;;;;; +134F2;EGYPTIAN HIEROGLYPH-134F2;Lo;0;L;;;;;N;;;;; +134F3;EGYPTIAN HIEROGLYPH-134F3;Lo;0;L;;;;;N;;;;; +134F4;EGYPTIAN HIEROGLYPH-134F4;Lo;0;L;;;;;N;;;;; +134F5;EGYPTIAN HIEROGLYPH-134F5;Lo;0;L;;;;;N;;;;; +134F6;EGYPTIAN HIEROGLYPH-134F6;Lo;0;L;;;;;N;;;;; +134F7;EGYPTIAN HIEROGLYPH-134F7;Lo;0;L;;;;;N;;;;; +134F8;EGYPTIAN HIEROGLYPH-134F8;Lo;0;L;;;;;N;;;;; +134F9;EGYPTIAN HIEROGLYPH-134F9;Lo;0;L;;;;;N;;;;; +134FA;EGYPTIAN HIEROGLYPH-134FA;Lo;0;L;;;;;N;;;;; +134FB;EGYPTIAN HIEROGLYPH-134FB;Lo;0;L;;;;;N;;;;; +134FC;EGYPTIAN HIEROGLYPH-134FC;Lo;0;L;;;;;N;;;;; +134FD;EGYPTIAN HIEROGLYPH-134FD;Lo;0;L;;;;;N;;;;; +134FE;EGYPTIAN HIEROGLYPH-134FE;Lo;0;L;;;;;N;;;;; +134FF;EGYPTIAN HIEROGLYPH-134FF;Lo;0;L;;;;;N;;;;; +13500;EGYPTIAN HIEROGLYPH-13500;Lo;0;L;;;;;N;;;;; +13501;EGYPTIAN HIEROGLYPH-13501;Lo;0;L;;;;;N;;;;; +13502;EGYPTIAN HIEROGLYPH-13502;Lo;0;L;;;;;N;;;;; +13503;EGYPTIAN HIEROGLYPH-13503;Lo;0;L;;;;;N;;;;; +13504;EGYPTIAN HIEROGLYPH-13504;Lo;0;L;;;;;N;;;;; +13505;EGYPTIAN HIEROGLYPH-13505;Lo;0;L;;;;;N;;;;; +13506;EGYPTIAN HIEROGLYPH-13506;Lo;0;L;;;;;N;;;;; +13507;EGYPTIAN HIEROGLYPH-13507;Lo;0;L;;;;;N;;;;; +13508;EGYPTIAN HIEROGLYPH-13508;Lo;0;L;;;;;N;;;;; +13509;EGYPTIAN HIEROGLYPH-13509;Lo;0;L;;;;;N;;;;; +1350A;EGYPTIAN HIEROGLYPH-1350A;Lo;0;L;;;;;N;;;;; +1350B;EGYPTIAN HIEROGLYPH-1350B;Lo;0;L;;;;;N;;;;; +1350C;EGYPTIAN HIEROGLYPH-1350C;Lo;0;L;;;;;N;;;;; +1350D;EGYPTIAN HIEROGLYPH-1350D;Lo;0;L;;;;;N;;;;; +1350E;EGYPTIAN HIEROGLYPH-1350E;Lo;0;L;;;;;N;;;;; +1350F;EGYPTIAN HIEROGLYPH-1350F;Lo;0;L;;;;;N;;;;; +13510;EGYPTIAN HIEROGLYPH-13510;Lo;0;L;;;;;N;;;;; +13511;EGYPTIAN HIEROGLYPH-13511;Lo;0;L;;;;;N;;;;; +13512;EGYPTIAN HIEROGLYPH-13512;Lo;0;L;;;;;N;;;;; +13513;EGYPTIAN HIEROGLYPH-13513;Lo;0;L;;;;;N;;;;; +13514;EGYPTIAN HIEROGLYPH-13514;Lo;0;L;;;;;N;;;;; +13515;EGYPTIAN HIEROGLYPH-13515;Lo;0;L;;;;;N;;;;; +13516;EGYPTIAN HIEROGLYPH-13516;Lo;0;L;;;;;N;;;;; +13517;EGYPTIAN HIEROGLYPH-13517;Lo;0;L;;;;;N;;;;; +13518;EGYPTIAN HIEROGLYPH-13518;Lo;0;L;;;;;N;;;;; +13519;EGYPTIAN HIEROGLYPH-13519;Lo;0;L;;;;;N;;;;; +1351A;EGYPTIAN HIEROGLYPH-1351A;Lo;0;L;;;;;N;;;;; +1351B;EGYPTIAN HIEROGLYPH-1351B;Lo;0;L;;;;;N;;;;; +1351C;EGYPTIAN HIEROGLYPH-1351C;Lo;0;L;;;;;N;;;;; +1351D;EGYPTIAN HIEROGLYPH-1351D;Lo;0;L;;;;;N;;;;; +1351E;EGYPTIAN HIEROGLYPH-1351E;Lo;0;L;;;;;N;;;;; +1351F;EGYPTIAN HIEROGLYPH-1351F;Lo;0;L;;;;;N;;;;; +13520;EGYPTIAN HIEROGLYPH-13520;Lo;0;L;;;;;N;;;;; +13521;EGYPTIAN HIEROGLYPH-13521;Lo;0;L;;;;;N;;;;; +13522;EGYPTIAN HIEROGLYPH-13522;Lo;0;L;;;;;N;;;;; +13523;EGYPTIAN HIEROGLYPH-13523;Lo;0;L;;;;;N;;;;; +13524;EGYPTIAN HIEROGLYPH-13524;Lo;0;L;;;;;N;;;;; +13525;EGYPTIAN HIEROGLYPH-13525;Lo;0;L;;;;;N;;;;; +13526;EGYPTIAN HIEROGLYPH-13526;Lo;0;L;;;;;N;;;;; +13527;EGYPTIAN HIEROGLYPH-13527;Lo;0;L;;;;;N;;;;; +13528;EGYPTIAN HIEROGLYPH-13528;Lo;0;L;;;;;N;;;;; +13529;EGYPTIAN HIEROGLYPH-13529;Lo;0;L;;;;;N;;;;; +1352A;EGYPTIAN HIEROGLYPH-1352A;Lo;0;L;;;;;N;;;;; +1352B;EGYPTIAN HIEROGLYPH-1352B;Lo;0;L;;;;;N;;;;; +1352C;EGYPTIAN HIEROGLYPH-1352C;Lo;0;L;;;;;N;;;;; +1352D;EGYPTIAN HIEROGLYPH-1352D;Lo;0;L;;;;;N;;;;; +1352E;EGYPTIAN HIEROGLYPH-1352E;Lo;0;L;;;;;N;;;;; +1352F;EGYPTIAN HIEROGLYPH-1352F;Lo;0;L;;;;;N;;;;; +13530;EGYPTIAN HIEROGLYPH-13530;Lo;0;L;;;;;N;;;;; +13531;EGYPTIAN HIEROGLYPH-13531;Lo;0;L;;;;;N;;;;; +13532;EGYPTIAN HIEROGLYPH-13532;Lo;0;L;;;;;N;;;;; +13533;EGYPTIAN HIEROGLYPH-13533;Lo;0;L;;;;;N;;;;; +13534;EGYPTIAN HIEROGLYPH-13534;Lo;0;L;;;;;N;;;;; +13535;EGYPTIAN HIEROGLYPH-13535;Lo;0;L;;;;;N;;;;; +13536;EGYPTIAN HIEROGLYPH-13536;Lo;0;L;;;;;N;;;;; +13537;EGYPTIAN HIEROGLYPH-13537;Lo;0;L;;;;;N;;;;; +13538;EGYPTIAN HIEROGLYPH-13538;Lo;0;L;;;;;N;;;;; +13539;EGYPTIAN HIEROGLYPH-13539;Lo;0;L;;;;;N;;;;; +1353A;EGYPTIAN HIEROGLYPH-1353A;Lo;0;L;;;;;N;;;;; +1353B;EGYPTIAN HIEROGLYPH-1353B;Lo;0;L;;;;;N;;;;; +1353C;EGYPTIAN HIEROGLYPH-1353C;Lo;0;L;;;;;N;;;;; +1353D;EGYPTIAN HIEROGLYPH-1353D;Lo;0;L;;;;;N;;;;; +1353E;EGYPTIAN HIEROGLYPH-1353E;Lo;0;L;;;;;N;;;;; +1353F;EGYPTIAN HIEROGLYPH-1353F;Lo;0;L;;;;;N;;;;; +13540;EGYPTIAN HIEROGLYPH-13540;Lo;0;L;;;;;N;;;;; +13541;EGYPTIAN HIEROGLYPH-13541;Lo;0;L;;;;;N;;;;; +13542;EGYPTIAN HIEROGLYPH-13542;Lo;0;L;;;;;N;;;;; +13543;EGYPTIAN HIEROGLYPH-13543;Lo;0;L;;;;;N;;;;; +13544;EGYPTIAN HIEROGLYPH-13544;Lo;0;L;;;;;N;;;;; +13545;EGYPTIAN HIEROGLYPH-13545;Lo;0;L;;;;;N;;;;; +13546;EGYPTIAN HIEROGLYPH-13546;Lo;0;L;;;;;N;;;;; +13547;EGYPTIAN HIEROGLYPH-13547;Lo;0;L;;;;;N;;;;; +13548;EGYPTIAN HIEROGLYPH-13548;Lo;0;L;;;;;N;;;;; +13549;EGYPTIAN HIEROGLYPH-13549;Lo;0;L;;;;;N;;;;; +1354A;EGYPTIAN HIEROGLYPH-1354A;Lo;0;L;;;;;N;;;;; +1354B;EGYPTIAN HIEROGLYPH-1354B;Lo;0;L;;;;;N;;;;; +1354C;EGYPTIAN HIEROGLYPH-1354C;Lo;0;L;;;;;N;;;;; +1354D;EGYPTIAN HIEROGLYPH-1354D;Lo;0;L;;;;;N;;;;; +1354E;EGYPTIAN HIEROGLYPH-1354E;Lo;0;L;;;;;N;;;;; +1354F;EGYPTIAN HIEROGLYPH-1354F;Lo;0;L;;;;;N;;;;; +13550;EGYPTIAN HIEROGLYPH-13550;Lo;0;L;;;;;N;;;;; +13551;EGYPTIAN HIEROGLYPH-13551;Lo;0;L;;;;;N;;;;; +13552;EGYPTIAN HIEROGLYPH-13552;Lo;0;L;;;;;N;;;;; +13553;EGYPTIAN HIEROGLYPH-13553;Lo;0;L;;;;;N;;;;; +13554;EGYPTIAN HIEROGLYPH-13554;Lo;0;L;;;;;N;;;;; +13555;EGYPTIAN HIEROGLYPH-13555;Lo;0;L;;;;;N;;;;; +13556;EGYPTIAN HIEROGLYPH-13556;Lo;0;L;;;;;N;;;;; +13557;EGYPTIAN HIEROGLYPH-13557;Lo;0;L;;;;;N;;;;; +13558;EGYPTIAN HIEROGLYPH-13558;Lo;0;L;;;;;N;;;;; +13559;EGYPTIAN HIEROGLYPH-13559;Lo;0;L;;;;;N;;;;; +1355A;EGYPTIAN HIEROGLYPH-1355A;Lo;0;L;;;;;N;;;;; +1355B;EGYPTIAN HIEROGLYPH-1355B;Lo;0;L;;;;;N;;;;; +1355C;EGYPTIAN HIEROGLYPH-1355C;Lo;0;L;;;;;N;;;;; +1355D;EGYPTIAN HIEROGLYPH-1355D;Lo;0;L;;;;;N;;;;; +1355E;EGYPTIAN HIEROGLYPH-1355E;Lo;0;L;;;;;N;;;;; +1355F;EGYPTIAN HIEROGLYPH-1355F;Lo;0;L;;;;;N;;;;; +13560;EGYPTIAN HIEROGLYPH-13560;Lo;0;L;;;;;N;;;;; +13561;EGYPTIAN HIEROGLYPH-13561;Lo;0;L;;;;;N;;;;; +13562;EGYPTIAN HIEROGLYPH-13562;Lo;0;L;;;;;N;;;;; +13563;EGYPTIAN HIEROGLYPH-13563;Lo;0;L;;;;;N;;;;; +13564;EGYPTIAN HIEROGLYPH-13564;Lo;0;L;;;;;N;;;;; +13565;EGYPTIAN HIEROGLYPH-13565;Lo;0;L;;;;;N;;;;; +13566;EGYPTIAN HIEROGLYPH-13566;Lo;0;L;;;;;N;;;;; +13567;EGYPTIAN HIEROGLYPH-13567;Lo;0;L;;;;;N;;;;; +13568;EGYPTIAN HIEROGLYPH-13568;Lo;0;L;;;;;N;;;;; +13569;EGYPTIAN HIEROGLYPH-13569;Lo;0;L;;;;;N;;;;; +1356A;EGYPTIAN HIEROGLYPH-1356A;Lo;0;L;;;;;N;;;;; +1356B;EGYPTIAN HIEROGLYPH-1356B;Lo;0;L;;;;;N;;;;; +1356C;EGYPTIAN HIEROGLYPH-1356C;Lo;0;L;;;;;N;;;;; +1356D;EGYPTIAN HIEROGLYPH-1356D;Lo;0;L;;;;;N;;;;; +1356E;EGYPTIAN HIEROGLYPH-1356E;Lo;0;L;;;;;N;;;;; +1356F;EGYPTIAN HIEROGLYPH-1356F;Lo;0;L;;;;;N;;;;; +13570;EGYPTIAN HIEROGLYPH-13570;Lo;0;L;;;;;N;;;;; +13571;EGYPTIAN HIEROGLYPH-13571;Lo;0;L;;;;;N;;;;; +13572;EGYPTIAN HIEROGLYPH-13572;Lo;0;L;;;;;N;;;;; +13573;EGYPTIAN HIEROGLYPH-13573;Lo;0;L;;;;;N;;;;; +13574;EGYPTIAN HIEROGLYPH-13574;Lo;0;L;;;;;N;;;;; +13575;EGYPTIAN HIEROGLYPH-13575;Lo;0;L;;;;;N;;;;; +13576;EGYPTIAN HIEROGLYPH-13576;Lo;0;L;;;;;N;;;;; +13577;EGYPTIAN HIEROGLYPH-13577;Lo;0;L;;;;;N;;;;; +13578;EGYPTIAN HIEROGLYPH-13578;Lo;0;L;;;;;N;;;;; +13579;EGYPTIAN HIEROGLYPH-13579;Lo;0;L;;;;;N;;;;; +1357A;EGYPTIAN HIEROGLYPH-1357A;Lo;0;L;;;;;N;;;;; +1357B;EGYPTIAN HIEROGLYPH-1357B;Lo;0;L;;;;;N;;;;; +1357C;EGYPTIAN HIEROGLYPH-1357C;Lo;0;L;;;;;N;;;;; +1357D;EGYPTIAN HIEROGLYPH-1357D;Lo;0;L;;;;;N;;;;; +1357E;EGYPTIAN HIEROGLYPH-1357E;Lo;0;L;;;;;N;;;;; +1357F;EGYPTIAN HIEROGLYPH-1357F;Lo;0;L;;;;;N;;;;; +13580;EGYPTIAN HIEROGLYPH-13580;Lo;0;L;;;;;N;;;;; +13581;EGYPTIAN HIEROGLYPH-13581;Lo;0;L;;;;;N;;;;; +13582;EGYPTIAN HIEROGLYPH-13582;Lo;0;L;;;;;N;;;;; +13583;EGYPTIAN HIEROGLYPH-13583;Lo;0;L;;;;;N;;;;; +13584;EGYPTIAN HIEROGLYPH-13584;Lo;0;L;;;;;N;;;;; +13585;EGYPTIAN HIEROGLYPH-13585;Lo;0;L;;;;;N;;;;; +13586;EGYPTIAN HIEROGLYPH-13586;Lo;0;L;;;;;N;;;;; +13587;EGYPTIAN HIEROGLYPH-13587;Lo;0;L;;;;;N;;;;; +13588;EGYPTIAN HIEROGLYPH-13588;Lo;0;L;;;;;N;;;;; +13589;EGYPTIAN HIEROGLYPH-13589;Lo;0;L;;;;;N;;;;; +1358A;EGYPTIAN HIEROGLYPH-1358A;Lo;0;L;;;;;N;;;;; +1358B;EGYPTIAN HIEROGLYPH-1358B;Lo;0;L;;;;;N;;;;; +1358C;EGYPTIAN HIEROGLYPH-1358C;Lo;0;L;;;;;N;;;;; +1358D;EGYPTIAN HIEROGLYPH-1358D;Lo;0;L;;;;;N;;;;; +1358E;EGYPTIAN HIEROGLYPH-1358E;Lo;0;L;;;;;N;;;;; +1358F;EGYPTIAN HIEROGLYPH-1358F;Lo;0;L;;;;;N;;;;; +13590;EGYPTIAN HIEROGLYPH-13590;Lo;0;L;;;;;N;;;;; +13591;EGYPTIAN HIEROGLYPH-13591;Lo;0;L;;;;;N;;;;; +13592;EGYPTIAN HIEROGLYPH-13592;Lo;0;L;;;;;N;;;;; +13593;EGYPTIAN HIEROGLYPH-13593;Lo;0;L;;;;;N;;;;; +13594;EGYPTIAN HIEROGLYPH-13594;Lo;0;L;;;;;N;;;;; +13595;EGYPTIAN HIEROGLYPH-13595;Lo;0;L;;;;;N;;;;; +13596;EGYPTIAN HIEROGLYPH-13596;Lo;0;L;;;;;N;;;;; +13597;EGYPTIAN HIEROGLYPH-13597;Lo;0;L;;;;;N;;;;; +13598;EGYPTIAN HIEROGLYPH-13598;Lo;0;L;;;;;N;;;;; +13599;EGYPTIAN HIEROGLYPH-13599;Lo;0;L;;;;;N;;;;; +1359A;EGYPTIAN HIEROGLYPH-1359A;Lo;0;L;;;;;N;;;;; +1359B;EGYPTIAN HIEROGLYPH-1359B;Lo;0;L;;;;;N;;;;; +1359C;EGYPTIAN HIEROGLYPH-1359C;Lo;0;L;;;;;N;;;;; +1359D;EGYPTIAN HIEROGLYPH-1359D;Lo;0;L;;;;;N;;;;; +1359E;EGYPTIAN HIEROGLYPH-1359E;Lo;0;L;;;;;N;;;;; +1359F;EGYPTIAN HIEROGLYPH-1359F;Lo;0;L;;;;;N;;;;; +135A0;EGYPTIAN HIEROGLYPH-135A0;Lo;0;L;;;;;N;;;;; +135A1;EGYPTIAN HIEROGLYPH-135A1;Lo;0;L;;;;;N;;;;; +135A2;EGYPTIAN HIEROGLYPH-135A2;Lo;0;L;;;;;N;;;;; +135A3;EGYPTIAN HIEROGLYPH-135A3;Lo;0;L;;;;;N;;;;; +135A4;EGYPTIAN HIEROGLYPH-135A4;Lo;0;L;;;;;N;;;;; +135A5;EGYPTIAN HIEROGLYPH-135A5;Lo;0;L;;;;;N;;;;; +135A6;EGYPTIAN HIEROGLYPH-135A6;Lo;0;L;;;;;N;;;;; +135A7;EGYPTIAN HIEROGLYPH-135A7;Lo;0;L;;;;;N;;;;; +135A8;EGYPTIAN HIEROGLYPH-135A8;Lo;0;L;;;;;N;;;;; +135A9;EGYPTIAN HIEROGLYPH-135A9;Lo;0;L;;;;;N;;;;; +135AA;EGYPTIAN HIEROGLYPH-135AA;Lo;0;L;;;;;N;;;;; +135AB;EGYPTIAN HIEROGLYPH-135AB;Lo;0;L;;;;;N;;;;; +135AC;EGYPTIAN HIEROGLYPH-135AC;Lo;0;L;;;;;N;;;;; +135AD;EGYPTIAN HIEROGLYPH-135AD;Lo;0;L;;;;;N;;;;; +135AE;EGYPTIAN HIEROGLYPH-135AE;Lo;0;L;;;;;N;;;;; +135AF;EGYPTIAN HIEROGLYPH-135AF;Lo;0;L;;;;;N;;;;; +135B0;EGYPTIAN HIEROGLYPH-135B0;Lo;0;L;;;;;N;;;;; +135B1;EGYPTIAN HIEROGLYPH-135B1;Lo;0;L;;;;;N;;;;; +135B2;EGYPTIAN HIEROGLYPH-135B2;Lo;0;L;;;;;N;;;;; +135B3;EGYPTIAN HIEROGLYPH-135B3;Lo;0;L;;;;;N;;;;; +135B4;EGYPTIAN HIEROGLYPH-135B4;Lo;0;L;;;;;N;;;;; +135B5;EGYPTIAN HIEROGLYPH-135B5;Lo;0;L;;;;;N;;;;; +135B6;EGYPTIAN HIEROGLYPH-135B6;Lo;0;L;;;;;N;;;;; +135B7;EGYPTIAN HIEROGLYPH-135B7;Lo;0;L;;;;;N;;;;; +135B8;EGYPTIAN HIEROGLYPH-135B8;Lo;0;L;;;;;N;;;;; +135B9;EGYPTIAN HIEROGLYPH-135B9;Lo;0;L;;;;;N;;;;; +135BA;EGYPTIAN HIEROGLYPH-135BA;Lo;0;L;;;;;N;;;;; +135BB;EGYPTIAN HIEROGLYPH-135BB;Lo;0;L;;;;;N;;;;; +135BC;EGYPTIAN HIEROGLYPH-135BC;Lo;0;L;;;;;N;;;;; +135BD;EGYPTIAN HIEROGLYPH-135BD;Lo;0;L;;;;;N;;;;; +135BE;EGYPTIAN HIEROGLYPH-135BE;Lo;0;L;;;;;N;;;;; +135BF;EGYPTIAN HIEROGLYPH-135BF;Lo;0;L;;;;;N;;;;; +135C0;EGYPTIAN HIEROGLYPH-135C0;Lo;0;L;;;;;N;;;;; +135C1;EGYPTIAN HIEROGLYPH-135C1;Lo;0;L;;;;;N;;;;; +135C2;EGYPTIAN HIEROGLYPH-135C2;Lo;0;L;;;;;N;;;;; +135C3;EGYPTIAN HIEROGLYPH-135C3;Lo;0;L;;;;;N;;;;; +135C4;EGYPTIAN HIEROGLYPH-135C4;Lo;0;L;;;;;N;;;;; +135C5;EGYPTIAN HIEROGLYPH-135C5;Lo;0;L;;;;;N;;;;; +135C6;EGYPTIAN HIEROGLYPH-135C6;Lo;0;L;;;;;N;;;;; +135C7;EGYPTIAN HIEROGLYPH-135C7;Lo;0;L;;;;;N;;;;; +135C8;EGYPTIAN HIEROGLYPH-135C8;Lo;0;L;;;;;N;;;;; +135C9;EGYPTIAN HIEROGLYPH-135C9;Lo;0;L;;;;;N;;;;; +135CA;EGYPTIAN HIEROGLYPH-135CA;Lo;0;L;;;;;N;;;;; +135CB;EGYPTIAN HIEROGLYPH-135CB;Lo;0;L;;;;;N;;;;; +135CC;EGYPTIAN HIEROGLYPH-135CC;Lo;0;L;;;;;N;;;;; +135CD;EGYPTIAN HIEROGLYPH-135CD;Lo;0;L;;;;;N;;;;; +135CE;EGYPTIAN HIEROGLYPH-135CE;Lo;0;L;;;;;N;;;;; +135CF;EGYPTIAN HIEROGLYPH-135CF;Lo;0;L;;;;;N;;;;; +135D0;EGYPTIAN HIEROGLYPH-135D0;Lo;0;L;;;;;N;;;;; +135D1;EGYPTIAN HIEROGLYPH-135D1;Lo;0;L;;;;;N;;;;; +135D2;EGYPTIAN HIEROGLYPH-135D2;Lo;0;L;;;;;N;;;;; +135D3;EGYPTIAN HIEROGLYPH-135D3;Lo;0;L;;;;;N;;;;; +135D4;EGYPTIAN HIEROGLYPH-135D4;Lo;0;L;;;;;N;;;;; +135D5;EGYPTIAN HIEROGLYPH-135D5;Lo;0;L;;;;;N;;;;; +135D6;EGYPTIAN HIEROGLYPH-135D6;Lo;0;L;;;;;N;;;;; +135D7;EGYPTIAN HIEROGLYPH-135D7;Lo;0;L;;;;;N;;;;; +135D8;EGYPTIAN HIEROGLYPH-135D8;Lo;0;L;;;;;N;;;;; +135D9;EGYPTIAN HIEROGLYPH-135D9;Lo;0;L;;;;;N;;;;; +135DA;EGYPTIAN HIEROGLYPH-135DA;Lo;0;L;;;;;N;;;;; +135DB;EGYPTIAN HIEROGLYPH-135DB;Lo;0;L;;;;;N;;;;; +135DC;EGYPTIAN HIEROGLYPH-135DC;Lo;0;L;;;;;N;;;;; +135DD;EGYPTIAN HIEROGLYPH-135DD;Lo;0;L;;;;;N;;;;; +135DE;EGYPTIAN HIEROGLYPH-135DE;Lo;0;L;;;;;N;;;;; +135DF;EGYPTIAN HIEROGLYPH-135DF;Lo;0;L;;;;;N;;;;; +135E0;EGYPTIAN HIEROGLYPH-135E0;Lo;0;L;;;;;N;;;;; +135E1;EGYPTIAN HIEROGLYPH-135E1;Lo;0;L;;;;;N;;;;; +135E2;EGYPTIAN HIEROGLYPH-135E2;Lo;0;L;;;;;N;;;;; +135E3;EGYPTIAN HIEROGLYPH-135E3;Lo;0;L;;;;;N;;;;; +135E4;EGYPTIAN HIEROGLYPH-135E4;Lo;0;L;;;;;N;;;;; +135E5;EGYPTIAN HIEROGLYPH-135E5;Lo;0;L;;;;;N;;;;; +135E6;EGYPTIAN HIEROGLYPH-135E6;Lo;0;L;;;;;N;;;;; +135E7;EGYPTIAN HIEROGLYPH-135E7;Lo;0;L;;;;;N;;;;; +135E8;EGYPTIAN HIEROGLYPH-135E8;Lo;0;L;;;;;N;;;;; +135E9;EGYPTIAN HIEROGLYPH-135E9;Lo;0;L;;;;;N;;;;; +135EA;EGYPTIAN HIEROGLYPH-135EA;Lo;0;L;;;;;N;;;;; +135EB;EGYPTIAN HIEROGLYPH-135EB;Lo;0;L;;;;;N;;;;; +135EC;EGYPTIAN HIEROGLYPH-135EC;Lo;0;L;;;;;N;;;;; +135ED;EGYPTIAN HIEROGLYPH-135ED;Lo;0;L;;;;;N;;;;; +135EE;EGYPTIAN HIEROGLYPH-135EE;Lo;0;L;;;;;N;;;;; +135EF;EGYPTIAN HIEROGLYPH-135EF;Lo;0;L;;;;;N;;;;; +135F0;EGYPTIAN HIEROGLYPH-135F0;Lo;0;L;;;;;N;;;;; +135F1;EGYPTIAN HIEROGLYPH-135F1;Lo;0;L;;;;;N;;;;; +135F2;EGYPTIAN HIEROGLYPH-135F2;Lo;0;L;;;;;N;;;;; +135F3;EGYPTIAN HIEROGLYPH-135F3;Lo;0;L;;;;;N;;;;; +135F4;EGYPTIAN HIEROGLYPH-135F4;Lo;0;L;;;;;N;;;;; +135F5;EGYPTIAN HIEROGLYPH-135F5;Lo;0;L;;;;;N;;;;; +135F6;EGYPTIAN HIEROGLYPH-135F6;Lo;0;L;;;;;N;;;;; +135F7;EGYPTIAN HIEROGLYPH-135F7;Lo;0;L;;;;;N;;;;; +135F8;EGYPTIAN HIEROGLYPH-135F8;Lo;0;L;;;;;N;;;;; +135F9;EGYPTIAN HIEROGLYPH-135F9;Lo;0;L;;;;;N;;;;; +135FA;EGYPTIAN HIEROGLYPH-135FA;Lo;0;L;;;;;N;;;;; +135FB;EGYPTIAN HIEROGLYPH-135FB;Lo;0;L;;;;;N;;;;; +135FC;EGYPTIAN HIEROGLYPH-135FC;Lo;0;L;;;;;N;;;;; +135FD;EGYPTIAN HIEROGLYPH-135FD;Lo;0;L;;;;;N;;;;; +135FE;EGYPTIAN HIEROGLYPH-135FE;Lo;0;L;;;;;N;;;;; +135FF;EGYPTIAN HIEROGLYPH-135FF;Lo;0;L;;;;;N;;;;; +13600;EGYPTIAN HIEROGLYPH-13600;Lo;0;L;;;;;N;;;;; +13601;EGYPTIAN HIEROGLYPH-13601;Lo;0;L;;;;;N;;;;; +13602;EGYPTIAN HIEROGLYPH-13602;Lo;0;L;;;;;N;;;;; +13603;EGYPTIAN HIEROGLYPH-13603;Lo;0;L;;;;;N;;;;; +13604;EGYPTIAN HIEROGLYPH-13604;Lo;0;L;;;;;N;;;;; +13605;EGYPTIAN HIEROGLYPH-13605;Lo;0;L;;;;;N;;;;; +13606;EGYPTIAN HIEROGLYPH-13606;Lo;0;L;;;;;N;;;;; +13607;EGYPTIAN HIEROGLYPH-13607;Lo;0;L;;;;;N;;;;; +13608;EGYPTIAN HIEROGLYPH-13608;Lo;0;L;;;;;N;;;;; +13609;EGYPTIAN HIEROGLYPH-13609;Lo;0;L;;;;;N;;;;; +1360A;EGYPTIAN HIEROGLYPH-1360A;Lo;0;L;;;;;N;;;;; +1360B;EGYPTIAN HIEROGLYPH-1360B;Lo;0;L;;;;;N;;;;; +1360C;EGYPTIAN HIEROGLYPH-1360C;Lo;0;L;;;;;N;;;;; +1360D;EGYPTIAN HIEROGLYPH-1360D;Lo;0;L;;;;;N;;;;; +1360E;EGYPTIAN HIEROGLYPH-1360E;Lo;0;L;;;;;N;;;;; +1360F;EGYPTIAN HIEROGLYPH-1360F;Lo;0;L;;;;;N;;;;; +13610;EGYPTIAN HIEROGLYPH-13610;Lo;0;L;;;;;N;;;;; +13611;EGYPTIAN HIEROGLYPH-13611;Lo;0;L;;;;;N;;;;; +13612;EGYPTIAN HIEROGLYPH-13612;Lo;0;L;;;;;N;;;;; +13613;EGYPTIAN HIEROGLYPH-13613;Lo;0;L;;;;;N;;;;; +13614;EGYPTIAN HIEROGLYPH-13614;Lo;0;L;;;;;N;;;;; +13615;EGYPTIAN HIEROGLYPH-13615;Lo;0;L;;;;;N;;;;; +13616;EGYPTIAN HIEROGLYPH-13616;Lo;0;L;;;;;N;;;;; +13617;EGYPTIAN HIEROGLYPH-13617;Lo;0;L;;;;;N;;;;; +13618;EGYPTIAN HIEROGLYPH-13618;Lo;0;L;;;;;N;;;;; +13619;EGYPTIAN HIEROGLYPH-13619;Lo;0;L;;;;;N;;;;; +1361A;EGYPTIAN HIEROGLYPH-1361A;Lo;0;L;;;;;N;;;;; +1361B;EGYPTIAN HIEROGLYPH-1361B;Lo;0;L;;;;;N;;;;; +1361C;EGYPTIAN HIEROGLYPH-1361C;Lo;0;L;;;;;N;;;;; +1361D;EGYPTIAN HIEROGLYPH-1361D;Lo;0;L;;;;;N;;;;; +1361E;EGYPTIAN HIEROGLYPH-1361E;Lo;0;L;;;;;N;;;;; +1361F;EGYPTIAN HIEROGLYPH-1361F;Lo;0;L;;;;;N;;;;; +13620;EGYPTIAN HIEROGLYPH-13620;Lo;0;L;;;;;N;;;;; +13621;EGYPTIAN HIEROGLYPH-13621;Lo;0;L;;;;;N;;;;; +13622;EGYPTIAN HIEROGLYPH-13622;Lo;0;L;;;;;N;;;;; +13623;EGYPTIAN HIEROGLYPH-13623;Lo;0;L;;;;;N;;;;; +13624;EGYPTIAN HIEROGLYPH-13624;Lo;0;L;;;;;N;;;;; +13625;EGYPTIAN HIEROGLYPH-13625;Lo;0;L;;;;;N;;;;; +13626;EGYPTIAN HIEROGLYPH-13626;Lo;0;L;;;;;N;;;;; +13627;EGYPTIAN HIEROGLYPH-13627;Lo;0;L;;;;;N;;;;; +13628;EGYPTIAN HIEROGLYPH-13628;Lo;0;L;;;;;N;;;;; +13629;EGYPTIAN HIEROGLYPH-13629;Lo;0;L;;;;;N;;;;; +1362A;EGYPTIAN HIEROGLYPH-1362A;Lo;0;L;;;;;N;;;;; +1362B;EGYPTIAN HIEROGLYPH-1362B;Lo;0;L;;;;;N;;;;; +1362C;EGYPTIAN HIEROGLYPH-1362C;Lo;0;L;;;;;N;;;;; +1362D;EGYPTIAN HIEROGLYPH-1362D;Lo;0;L;;;;;N;;;;; +1362E;EGYPTIAN HIEROGLYPH-1362E;Lo;0;L;;;;;N;;;;; +1362F;EGYPTIAN HIEROGLYPH-1362F;Lo;0;L;;;;;N;;;;; +13630;EGYPTIAN HIEROGLYPH-13630;Lo;0;L;;;;;N;;;;; +13631;EGYPTIAN HIEROGLYPH-13631;Lo;0;L;;;;;N;;;;; +13632;EGYPTIAN HIEROGLYPH-13632;Lo;0;L;;;;;N;;;;; +13633;EGYPTIAN HIEROGLYPH-13633;Lo;0;L;;;;;N;;;;; +13634;EGYPTIAN HIEROGLYPH-13634;Lo;0;L;;;;;N;;;;; +13635;EGYPTIAN HIEROGLYPH-13635;Lo;0;L;;;;;N;;;;; +13636;EGYPTIAN HIEROGLYPH-13636;Lo;0;L;;;;;N;;;;; +13637;EGYPTIAN HIEROGLYPH-13637;Lo;0;L;;;;;N;;;;; +13638;EGYPTIAN HIEROGLYPH-13638;Lo;0;L;;;;;N;;;;; +13639;EGYPTIAN HIEROGLYPH-13639;Lo;0;L;;;;;N;;;;; +1363A;EGYPTIAN HIEROGLYPH-1363A;Lo;0;L;;;;;N;;;;; +1363B;EGYPTIAN HIEROGLYPH-1363B;Lo;0;L;;;;;N;;;;; +1363C;EGYPTIAN HIEROGLYPH-1363C;Lo;0;L;;;;;N;;;;; +1363D;EGYPTIAN HIEROGLYPH-1363D;Lo;0;L;;;;;N;;;;; +1363E;EGYPTIAN HIEROGLYPH-1363E;Lo;0;L;;;;;N;;;;; +1363F;EGYPTIAN HIEROGLYPH-1363F;Lo;0;L;;;;;N;;;;; +13640;EGYPTIAN HIEROGLYPH-13640;Lo;0;L;;;;;N;;;;; +13641;EGYPTIAN HIEROGLYPH-13641;Lo;0;L;;;;;N;;;;; +13642;EGYPTIAN HIEROGLYPH-13642;Lo;0;L;;;;;N;;;;; +13643;EGYPTIAN HIEROGLYPH-13643;Lo;0;L;;;;;N;;;;; +13644;EGYPTIAN HIEROGLYPH-13644;Lo;0;L;;;;;N;;;;; +13645;EGYPTIAN HIEROGLYPH-13645;Lo;0;L;;;;;N;;;;; +13646;EGYPTIAN HIEROGLYPH-13646;Lo;0;L;;;;;N;;;;; +13647;EGYPTIAN HIEROGLYPH-13647;Lo;0;L;;;;;N;;;;; +13648;EGYPTIAN HIEROGLYPH-13648;Lo;0;L;;;;;N;;;;; +13649;EGYPTIAN HIEROGLYPH-13649;Lo;0;L;;;;;N;;;;; +1364A;EGYPTIAN HIEROGLYPH-1364A;Lo;0;L;;;;;N;;;;; +1364B;EGYPTIAN HIEROGLYPH-1364B;Lo;0;L;;;;;N;;;;; +1364C;EGYPTIAN HIEROGLYPH-1364C;Lo;0;L;;;;;N;;;;; +1364D;EGYPTIAN HIEROGLYPH-1364D;Lo;0;L;;;;;N;;;;; +1364E;EGYPTIAN HIEROGLYPH-1364E;Lo;0;L;;;;;N;;;;; +1364F;EGYPTIAN HIEROGLYPH-1364F;Lo;0;L;;;;;N;;;;; +13650;EGYPTIAN HIEROGLYPH-13650;Lo;0;L;;;;;N;;;;; +13651;EGYPTIAN HIEROGLYPH-13651;Lo;0;L;;;;;N;;;;; +13652;EGYPTIAN HIEROGLYPH-13652;Lo;0;L;;;;;N;;;;; +13653;EGYPTIAN HIEROGLYPH-13653;Lo;0;L;;;;;N;;;;; +13654;EGYPTIAN HIEROGLYPH-13654;Lo;0;L;;;;;N;;;;; +13655;EGYPTIAN HIEROGLYPH-13655;Lo;0;L;;;;;N;;;;; +13656;EGYPTIAN HIEROGLYPH-13656;Lo;0;L;;;;;N;;;;; +13657;EGYPTIAN HIEROGLYPH-13657;Lo;0;L;;;;;N;;;;; +13658;EGYPTIAN HIEROGLYPH-13658;Lo;0;L;;;;;N;;;;; +13659;EGYPTIAN HIEROGLYPH-13659;Lo;0;L;;;;;N;;;;; +1365A;EGYPTIAN HIEROGLYPH-1365A;Lo;0;L;;;;;N;;;;; +1365B;EGYPTIAN HIEROGLYPH-1365B;Lo;0;L;;;;;N;;;;; +1365C;EGYPTIAN HIEROGLYPH-1365C;Lo;0;L;;;;;N;;;;; +1365D;EGYPTIAN HIEROGLYPH-1365D;Lo;0;L;;;;;N;;;;; +1365E;EGYPTIAN HIEROGLYPH-1365E;Lo;0;L;;;;;N;;;;; +1365F;EGYPTIAN HIEROGLYPH-1365F;Lo;0;L;;;;;N;;;;; +13660;EGYPTIAN HIEROGLYPH-13660;Lo;0;L;;;;;N;;;;; +13661;EGYPTIAN HIEROGLYPH-13661;Lo;0;L;;;;;N;;;;; +13662;EGYPTIAN HIEROGLYPH-13662;Lo;0;L;;;;;N;;;;; +13663;EGYPTIAN HIEROGLYPH-13663;Lo;0;L;;;;;N;;;;; +13664;EGYPTIAN HIEROGLYPH-13664;Lo;0;L;;;;;N;;;;; +13665;EGYPTIAN HIEROGLYPH-13665;Lo;0;L;;;;;N;;;;; +13666;EGYPTIAN HIEROGLYPH-13666;Lo;0;L;;;;;N;;;;; +13667;EGYPTIAN HIEROGLYPH-13667;Lo;0;L;;;;;N;;;;; +13668;EGYPTIAN HIEROGLYPH-13668;Lo;0;L;;;;;N;;;;; +13669;EGYPTIAN HIEROGLYPH-13669;Lo;0;L;;;;;N;;;;; +1366A;EGYPTIAN HIEROGLYPH-1366A;Lo;0;L;;;;;N;;;;; +1366B;EGYPTIAN HIEROGLYPH-1366B;Lo;0;L;;;;;N;;;;; +1366C;EGYPTIAN HIEROGLYPH-1366C;Lo;0;L;;;;;N;;;;; +1366D;EGYPTIAN HIEROGLYPH-1366D;Lo;0;L;;;;;N;;;;; +1366E;EGYPTIAN HIEROGLYPH-1366E;Lo;0;L;;;;;N;;;;; +1366F;EGYPTIAN HIEROGLYPH-1366F;Lo;0;L;;;;;N;;;;; +13670;EGYPTIAN HIEROGLYPH-13670;Lo;0;L;;;;;N;;;;; +13671;EGYPTIAN HIEROGLYPH-13671;Lo;0;L;;;;;N;;;;; +13672;EGYPTIAN HIEROGLYPH-13672;Lo;0;L;;;;;N;;;;; +13673;EGYPTIAN HIEROGLYPH-13673;Lo;0;L;;;;;N;;;;; +13674;EGYPTIAN HIEROGLYPH-13674;Lo;0;L;;;;;N;;;;; +13675;EGYPTIAN HIEROGLYPH-13675;Lo;0;L;;;;;N;;;;; +13676;EGYPTIAN HIEROGLYPH-13676;Lo;0;L;;;;;N;;;;; +13677;EGYPTIAN HIEROGLYPH-13677;Lo;0;L;;;;;N;;;;; +13678;EGYPTIAN HIEROGLYPH-13678;Lo;0;L;;;;;N;;;;; +13679;EGYPTIAN HIEROGLYPH-13679;Lo;0;L;;;;;N;;;;; +1367A;EGYPTIAN HIEROGLYPH-1367A;Lo;0;L;;;;;N;;;;; +1367B;EGYPTIAN HIEROGLYPH-1367B;Lo;0;L;;;;;N;;;;; +1367C;EGYPTIAN HIEROGLYPH-1367C;Lo;0;L;;;;;N;;;;; +1367D;EGYPTIAN HIEROGLYPH-1367D;Lo;0;L;;;;;N;;;;; +1367E;EGYPTIAN HIEROGLYPH-1367E;Lo;0;L;;;;;N;;;;; +1367F;EGYPTIAN HIEROGLYPH-1367F;Lo;0;L;;;;;N;;;;; +13680;EGYPTIAN HIEROGLYPH-13680;Lo;0;L;;;;;N;;;;; +13681;EGYPTIAN HIEROGLYPH-13681;Lo;0;L;;;;;N;;;;; +13682;EGYPTIAN HIEROGLYPH-13682;Lo;0;L;;;;;N;;;;; +13683;EGYPTIAN HIEROGLYPH-13683;Lo;0;L;;;;;N;;;;; +13684;EGYPTIAN HIEROGLYPH-13684;Lo;0;L;;;;;N;;;;; +13685;EGYPTIAN HIEROGLYPH-13685;Lo;0;L;;;;;N;;;;; +13686;EGYPTIAN HIEROGLYPH-13686;Lo;0;L;;;;;N;;;;; +13687;EGYPTIAN HIEROGLYPH-13687;Lo;0;L;;;;;N;;;;; +13688;EGYPTIAN HIEROGLYPH-13688;Lo;0;L;;;;;N;;;;; +13689;EGYPTIAN HIEROGLYPH-13689;Lo;0;L;;;;;N;;;;; +1368A;EGYPTIAN HIEROGLYPH-1368A;Lo;0;L;;;;;N;;;;; +1368B;EGYPTIAN HIEROGLYPH-1368B;Lo;0;L;;;;;N;;;;; +1368C;EGYPTIAN HIEROGLYPH-1368C;Lo;0;L;;;;;N;;;;; +1368D;EGYPTIAN HIEROGLYPH-1368D;Lo;0;L;;;;;N;;;;; +1368E;EGYPTIAN HIEROGLYPH-1368E;Lo;0;L;;;;;N;;;;; +1368F;EGYPTIAN HIEROGLYPH-1368F;Lo;0;L;;;;;N;;;;; +13690;EGYPTIAN HIEROGLYPH-13690;Lo;0;L;;;;;N;;;;; +13691;EGYPTIAN HIEROGLYPH-13691;Lo;0;L;;;;;N;;;;; +13692;EGYPTIAN HIEROGLYPH-13692;Lo;0;L;;;;;N;;;;; +13693;EGYPTIAN HIEROGLYPH-13693;Lo;0;L;;;;;N;;;;; +13694;EGYPTIAN HIEROGLYPH-13694;Lo;0;L;;;;;N;;;;; +13695;EGYPTIAN HIEROGLYPH-13695;Lo;0;L;;;;;N;;;;; +13696;EGYPTIAN HIEROGLYPH-13696;Lo;0;L;;;;;N;;;;; +13697;EGYPTIAN HIEROGLYPH-13697;Lo;0;L;;;;;N;;;;; +13698;EGYPTIAN HIEROGLYPH-13698;Lo;0;L;;;;;N;;;;; +13699;EGYPTIAN HIEROGLYPH-13699;Lo;0;L;;;;;N;;;;; +1369A;EGYPTIAN HIEROGLYPH-1369A;Lo;0;L;;;;;N;;;;; +1369B;EGYPTIAN HIEROGLYPH-1369B;Lo;0;L;;;;;N;;;;; +1369C;EGYPTIAN HIEROGLYPH-1369C;Lo;0;L;;;;;N;;;;; +1369D;EGYPTIAN HIEROGLYPH-1369D;Lo;0;L;;;;;N;;;;; +1369E;EGYPTIAN HIEROGLYPH-1369E;Lo;0;L;;;;;N;;;;; +1369F;EGYPTIAN HIEROGLYPH-1369F;Lo;0;L;;;;;N;;;;; +136A0;EGYPTIAN HIEROGLYPH-136A0;Lo;0;L;;;;;N;;;;; +136A1;EGYPTIAN HIEROGLYPH-136A1;Lo;0;L;;;;;N;;;;; +136A2;EGYPTIAN HIEROGLYPH-136A2;Lo;0;L;;;;;N;;;;; +136A3;EGYPTIAN HIEROGLYPH-136A3;Lo;0;L;;;;;N;;;;; +136A4;EGYPTIAN HIEROGLYPH-136A4;Lo;0;L;;;;;N;;;;; +136A5;EGYPTIAN HIEROGLYPH-136A5;Lo;0;L;;;;;N;;;;; +136A6;EGYPTIAN HIEROGLYPH-136A6;Lo;0;L;;;;;N;;;;; +136A7;EGYPTIAN HIEROGLYPH-136A7;Lo;0;L;;;;;N;;;;; +136A8;EGYPTIAN HIEROGLYPH-136A8;Lo;0;L;;;;;N;;;;; +136A9;EGYPTIAN HIEROGLYPH-136A9;Lo;0;L;;;;;N;;;;; +136AA;EGYPTIAN HIEROGLYPH-136AA;Lo;0;L;;;;;N;;;;; +136AB;EGYPTIAN HIEROGLYPH-136AB;Lo;0;L;;;;;N;;;;; +136AC;EGYPTIAN HIEROGLYPH-136AC;Lo;0;L;;;;;N;;;;; +136AD;EGYPTIAN HIEROGLYPH-136AD;Lo;0;L;;;;;N;;;;; +136AE;EGYPTIAN HIEROGLYPH-136AE;Lo;0;L;;;;;N;;;;; +136AF;EGYPTIAN HIEROGLYPH-136AF;Lo;0;L;;;;;N;;;;; +136B0;EGYPTIAN HIEROGLYPH-136B0;Lo;0;L;;;;;N;;;;; +136B1;EGYPTIAN HIEROGLYPH-136B1;Lo;0;L;;;;;N;;;;; +136B2;EGYPTIAN HIEROGLYPH-136B2;Lo;0;L;;;;;N;;;;; +136B3;EGYPTIAN HIEROGLYPH-136B3;Lo;0;L;;;;;N;;;;; +136B4;EGYPTIAN HIEROGLYPH-136B4;Lo;0;L;;;;;N;;;;; +136B5;EGYPTIAN HIEROGLYPH-136B5;Lo;0;L;;;;;N;;;;; +136B6;EGYPTIAN HIEROGLYPH-136B6;Lo;0;L;;;;;N;;;;; +136B7;EGYPTIAN HIEROGLYPH-136B7;Lo;0;L;;;;;N;;;;; +136B8;EGYPTIAN HIEROGLYPH-136B8;Lo;0;L;;;;;N;;;;; +136B9;EGYPTIAN HIEROGLYPH-136B9;Lo;0;L;;;;;N;;;;; +136BA;EGYPTIAN HIEROGLYPH-136BA;Lo;0;L;;;;;N;;;;; +136BB;EGYPTIAN HIEROGLYPH-136BB;Lo;0;L;;;;;N;;;;; +136BC;EGYPTIAN HIEROGLYPH-136BC;Lo;0;L;;;;;N;;;;; +136BD;EGYPTIAN HIEROGLYPH-136BD;Lo;0;L;;;;;N;;;;; +136BE;EGYPTIAN HIEROGLYPH-136BE;Lo;0;L;;;;;N;;;;; +136BF;EGYPTIAN HIEROGLYPH-136BF;Lo;0;L;;;;;N;;;;; +136C0;EGYPTIAN HIEROGLYPH-136C0;Lo;0;L;;;;;N;;;;; +136C1;EGYPTIAN HIEROGLYPH-136C1;Lo;0;L;;;;;N;;;;; +136C2;EGYPTIAN HIEROGLYPH-136C2;Lo;0;L;;;;;N;;;;; +136C3;EGYPTIAN HIEROGLYPH-136C3;Lo;0;L;;;;;N;;;;; +136C4;EGYPTIAN HIEROGLYPH-136C4;Lo;0;L;;;;;N;;;;; +136C5;EGYPTIAN HIEROGLYPH-136C5;Lo;0;L;;;;;N;;;;; +136C6;EGYPTIAN HIEROGLYPH-136C6;Lo;0;L;;;;;N;;;;; +136C7;EGYPTIAN HIEROGLYPH-136C7;Lo;0;L;;;;;N;;;;; +136C8;EGYPTIAN HIEROGLYPH-136C8;Lo;0;L;;;;;N;;;;; +136C9;EGYPTIAN HIEROGLYPH-136C9;Lo;0;L;;;;;N;;;;; +136CA;EGYPTIAN HIEROGLYPH-136CA;Lo;0;L;;;;;N;;;;; +136CB;EGYPTIAN HIEROGLYPH-136CB;Lo;0;L;;;;;N;;;;; +136CC;EGYPTIAN HIEROGLYPH-136CC;Lo;0;L;;;;;N;;;;; +136CD;EGYPTIAN HIEROGLYPH-136CD;Lo;0;L;;;;;N;;;;; +136CE;EGYPTIAN HIEROGLYPH-136CE;Lo;0;L;;;;;N;;;;; +136CF;EGYPTIAN HIEROGLYPH-136CF;Lo;0;L;;;;;N;;;;; +136D0;EGYPTIAN HIEROGLYPH-136D0;Lo;0;L;;;;;N;;;;; +136D1;EGYPTIAN HIEROGLYPH-136D1;Lo;0;L;;;;;N;;;;; +136D2;EGYPTIAN HIEROGLYPH-136D2;Lo;0;L;;;;;N;;;;; +136D3;EGYPTIAN HIEROGLYPH-136D3;Lo;0;L;;;;;N;;;;; +136D4;EGYPTIAN HIEROGLYPH-136D4;Lo;0;L;;;;;N;;;;; +136D5;EGYPTIAN HIEROGLYPH-136D5;Lo;0;L;;;;;N;;;;; +136D6;EGYPTIAN HIEROGLYPH-136D6;Lo;0;L;;;;;N;;;;; +136D7;EGYPTIAN HIEROGLYPH-136D7;Lo;0;L;;;;;N;;;;; +136D8;EGYPTIAN HIEROGLYPH-136D8;Lo;0;L;;;;;N;;;;; +136D9;EGYPTIAN HIEROGLYPH-136D9;Lo;0;L;;;;;N;;;;; +136DA;EGYPTIAN HIEROGLYPH-136DA;Lo;0;L;;;;;N;;;;; +136DB;EGYPTIAN HIEROGLYPH-136DB;Lo;0;L;;;;;N;;;;; +136DC;EGYPTIAN HIEROGLYPH-136DC;Lo;0;L;;;;;N;;;;; +136DD;EGYPTIAN HIEROGLYPH-136DD;Lo;0;L;;;;;N;;;;; +136DE;EGYPTIAN HIEROGLYPH-136DE;Lo;0;L;;;;;N;;;;; +136DF;EGYPTIAN HIEROGLYPH-136DF;Lo;0;L;;;;;N;;;;; +136E0;EGYPTIAN HIEROGLYPH-136E0;Lo;0;L;;;;;N;;;;; +136E1;EGYPTIAN HIEROGLYPH-136E1;Lo;0;L;;;;;N;;;;; +136E2;EGYPTIAN HIEROGLYPH-136E2;Lo;0;L;;;;;N;;;;; +136E3;EGYPTIAN HIEROGLYPH-136E3;Lo;0;L;;;;;N;;;;; +136E4;EGYPTIAN HIEROGLYPH-136E4;Lo;0;L;;;;;N;;;;; +136E5;EGYPTIAN HIEROGLYPH-136E5;Lo;0;L;;;;;N;;;;; +136E6;EGYPTIAN HIEROGLYPH-136E6;Lo;0;L;;;;;N;;;;; +136E7;EGYPTIAN HIEROGLYPH-136E7;Lo;0;L;;;;;N;;;;; +136E8;EGYPTIAN HIEROGLYPH-136E8;Lo;0;L;;;;;N;;;;; +136E9;EGYPTIAN HIEROGLYPH-136E9;Lo;0;L;;;;;N;;;;; +136EA;EGYPTIAN HIEROGLYPH-136EA;Lo;0;L;;;;;N;;;;; +136EB;EGYPTIAN HIEROGLYPH-136EB;Lo;0;L;;;;;N;;;;; +136EC;EGYPTIAN HIEROGLYPH-136EC;Lo;0;L;;;;;N;;;;; +136ED;EGYPTIAN HIEROGLYPH-136ED;Lo;0;L;;;;;N;;;;; +136EE;EGYPTIAN HIEROGLYPH-136EE;Lo;0;L;;;;;N;;;;; +136EF;EGYPTIAN HIEROGLYPH-136EF;Lo;0;L;;;;;N;;;;; +136F0;EGYPTIAN HIEROGLYPH-136F0;Lo;0;L;;;;;N;;;;; +136F1;EGYPTIAN HIEROGLYPH-136F1;Lo;0;L;;;;;N;;;;; +136F2;EGYPTIAN HIEROGLYPH-136F2;Lo;0;L;;;;;N;;;;; +136F3;EGYPTIAN HIEROGLYPH-136F3;Lo;0;L;;;;;N;;;;; +136F4;EGYPTIAN HIEROGLYPH-136F4;Lo;0;L;;;;;N;;;;; +136F5;EGYPTIAN HIEROGLYPH-136F5;Lo;0;L;;;;;N;;;;; +136F6;EGYPTIAN HIEROGLYPH-136F6;Lo;0;L;;;;;N;;;;; +136F7;EGYPTIAN HIEROGLYPH-136F7;Lo;0;L;;;;;N;;;;; +136F8;EGYPTIAN HIEROGLYPH-136F8;Lo;0;L;;;;;N;;;;; +136F9;EGYPTIAN HIEROGLYPH-136F9;Lo;0;L;;;;;N;;;;; +136FA;EGYPTIAN HIEROGLYPH-136FA;Lo;0;L;;;;;N;;;;; +136FB;EGYPTIAN HIEROGLYPH-136FB;Lo;0;L;;;;;N;;;;; +136FC;EGYPTIAN HIEROGLYPH-136FC;Lo;0;L;;;;;N;;;;; +136FD;EGYPTIAN HIEROGLYPH-136FD;Lo;0;L;;;;;N;;;;; +136FE;EGYPTIAN HIEROGLYPH-136FE;Lo;0;L;;;;;N;;;;; +136FF;EGYPTIAN HIEROGLYPH-136FF;Lo;0;L;;;;;N;;;;; +13700;EGYPTIAN HIEROGLYPH-13700;Lo;0;L;;;;;N;;;;; +13701;EGYPTIAN HIEROGLYPH-13701;Lo;0;L;;;;;N;;;;; +13702;EGYPTIAN HIEROGLYPH-13702;Lo;0;L;;;;;N;;;;; +13703;EGYPTIAN HIEROGLYPH-13703;Lo;0;L;;;;;N;;;;; +13704;EGYPTIAN HIEROGLYPH-13704;Lo;0;L;;;;;N;;;;; +13705;EGYPTIAN HIEROGLYPH-13705;Lo;0;L;;;;;N;;;;; +13706;EGYPTIAN HIEROGLYPH-13706;Lo;0;L;;;;;N;;;;; +13707;EGYPTIAN HIEROGLYPH-13707;Lo;0;L;;;;;N;;;;; +13708;EGYPTIAN HIEROGLYPH-13708;Lo;0;L;;;;;N;;;;; +13709;EGYPTIAN HIEROGLYPH-13709;Lo;0;L;;;;;N;;;;; +1370A;EGYPTIAN HIEROGLYPH-1370A;Lo;0;L;;;;;N;;;;; +1370B;EGYPTIAN HIEROGLYPH-1370B;Lo;0;L;;;;;N;;;;; +1370C;EGYPTIAN HIEROGLYPH-1370C;Lo;0;L;;;;;N;;;;; +1370D;EGYPTIAN HIEROGLYPH-1370D;Lo;0;L;;;;;N;;;;; +1370E;EGYPTIAN HIEROGLYPH-1370E;Lo;0;L;;;;;N;;;;; +1370F;EGYPTIAN HIEROGLYPH-1370F;Lo;0;L;;;;;N;;;;; +13710;EGYPTIAN HIEROGLYPH-13710;Lo;0;L;;;;;N;;;;; +13711;EGYPTIAN HIEROGLYPH-13711;Lo;0;L;;;;;N;;;;; +13712;EGYPTIAN HIEROGLYPH-13712;Lo;0;L;;;;;N;;;;; +13713;EGYPTIAN HIEROGLYPH-13713;Lo;0;L;;;;;N;;;;; +13714;EGYPTIAN HIEROGLYPH-13714;Lo;0;L;;;;;N;;;;; +13715;EGYPTIAN HIEROGLYPH-13715;Lo;0;L;;;;;N;;;;; +13716;EGYPTIAN HIEROGLYPH-13716;Lo;0;L;;;;;N;;;;; +13717;EGYPTIAN HIEROGLYPH-13717;Lo;0;L;;;;;N;;;;; +13718;EGYPTIAN HIEROGLYPH-13718;Lo;0;L;;;;;N;;;;; +13719;EGYPTIAN HIEROGLYPH-13719;Lo;0;L;;;;;N;;;;; +1371A;EGYPTIAN HIEROGLYPH-1371A;Lo;0;L;;;;;N;;;;; +1371B;EGYPTIAN HIEROGLYPH-1371B;Lo;0;L;;;;;N;;;;; +1371C;EGYPTIAN HIEROGLYPH-1371C;Lo;0;L;;;;;N;;;;; +1371D;EGYPTIAN HIEROGLYPH-1371D;Lo;0;L;;;;;N;;;;; +1371E;EGYPTIAN HIEROGLYPH-1371E;Lo;0;L;;;;;N;;;;; +1371F;EGYPTIAN HIEROGLYPH-1371F;Lo;0;L;;;;;N;;;;; +13720;EGYPTIAN HIEROGLYPH-13720;Lo;0;L;;;;;N;;;;; +13721;EGYPTIAN HIEROGLYPH-13721;Lo;0;L;;;;;N;;;;; +13722;EGYPTIAN HIEROGLYPH-13722;Lo;0;L;;;;;N;;;;; +13723;EGYPTIAN HIEROGLYPH-13723;Lo;0;L;;;;;N;;;;; +13724;EGYPTIAN HIEROGLYPH-13724;Lo;0;L;;;;;N;;;;; +13725;EGYPTIAN HIEROGLYPH-13725;Lo;0;L;;;;;N;;;;; +13726;EGYPTIAN HIEROGLYPH-13726;Lo;0;L;;;;;N;;;;; +13727;EGYPTIAN HIEROGLYPH-13727;Lo;0;L;;;;;N;;;;; +13728;EGYPTIAN HIEROGLYPH-13728;Lo;0;L;;;;;N;;;;; +13729;EGYPTIAN HIEROGLYPH-13729;Lo;0;L;;;;;N;;;;; +1372A;EGYPTIAN HIEROGLYPH-1372A;Lo;0;L;;;;;N;;;;; +1372B;EGYPTIAN HIEROGLYPH-1372B;Lo;0;L;;;;;N;;;;; +1372C;EGYPTIAN HIEROGLYPH-1372C;Lo;0;L;;;;;N;;;;; +1372D;EGYPTIAN HIEROGLYPH-1372D;Lo;0;L;;;;;N;;;;; +1372E;EGYPTIAN HIEROGLYPH-1372E;Lo;0;L;;;;;N;;;;; +1372F;EGYPTIAN HIEROGLYPH-1372F;Lo;0;L;;;;;N;;;;; +13730;EGYPTIAN HIEROGLYPH-13730;Lo;0;L;;;;;N;;;;; +13731;EGYPTIAN HIEROGLYPH-13731;Lo;0;L;;;;;N;;;;; +13732;EGYPTIAN HIEROGLYPH-13732;Lo;0;L;;;;;N;;;;; +13733;EGYPTIAN HIEROGLYPH-13733;Lo;0;L;;;;;N;;;;; +13734;EGYPTIAN HIEROGLYPH-13734;Lo;0;L;;;;;N;;;;; +13735;EGYPTIAN HIEROGLYPH-13735;Lo;0;L;;;;;N;;;;; +13736;EGYPTIAN HIEROGLYPH-13736;Lo;0;L;;;;;N;;;;; +13737;EGYPTIAN HIEROGLYPH-13737;Lo;0;L;;;;;N;;;;; +13738;EGYPTIAN HIEROGLYPH-13738;Lo;0;L;;;;;N;;;;; +13739;EGYPTIAN HIEROGLYPH-13739;Lo;0;L;;;;;N;;;;; +1373A;EGYPTIAN HIEROGLYPH-1373A;Lo;0;L;;;;;N;;;;; +1373B;EGYPTIAN HIEROGLYPH-1373B;Lo;0;L;;;;;N;;;;; +1373C;EGYPTIAN HIEROGLYPH-1373C;Lo;0;L;;;;;N;;;;; +1373D;EGYPTIAN HIEROGLYPH-1373D;Lo;0;L;;;;;N;;;;; +1373E;EGYPTIAN HIEROGLYPH-1373E;Lo;0;L;;;;;N;;;;; +1373F;EGYPTIAN HIEROGLYPH-1373F;Lo;0;L;;;;;N;;;;; +13740;EGYPTIAN HIEROGLYPH-13740;Lo;0;L;;;;;N;;;;; +13741;EGYPTIAN HIEROGLYPH-13741;Lo;0;L;;;;;N;;;;; +13742;EGYPTIAN HIEROGLYPH-13742;Lo;0;L;;;;;N;;;;; +13743;EGYPTIAN HIEROGLYPH-13743;Lo;0;L;;;;;N;;;;; +13744;EGYPTIAN HIEROGLYPH-13744;Lo;0;L;;;;;N;;;;; +13745;EGYPTIAN HIEROGLYPH-13745;Lo;0;L;;;;;N;;;;; +13746;EGYPTIAN HIEROGLYPH-13746;Lo;0;L;;;;;N;;;;; +13747;EGYPTIAN HIEROGLYPH-13747;Lo;0;L;;;;;N;;;;; +13748;EGYPTIAN HIEROGLYPH-13748;Lo;0;L;;;;;N;;;;; +13749;EGYPTIAN HIEROGLYPH-13749;Lo;0;L;;;;;N;;;;; +1374A;EGYPTIAN HIEROGLYPH-1374A;Lo;0;L;;;;;N;;;;; +1374B;EGYPTIAN HIEROGLYPH-1374B;Lo;0;L;;;;;N;;;;; +1374C;EGYPTIAN HIEROGLYPH-1374C;Lo;0;L;;;;;N;;;;; +1374D;EGYPTIAN HIEROGLYPH-1374D;Lo;0;L;;;;;N;;;;; +1374E;EGYPTIAN HIEROGLYPH-1374E;Lo;0;L;;;;;N;;;;; +1374F;EGYPTIAN HIEROGLYPH-1374F;Lo;0;L;;;;;N;;;;; +13750;EGYPTIAN HIEROGLYPH-13750;Lo;0;L;;;;;N;;;;; +13751;EGYPTIAN HIEROGLYPH-13751;Lo;0;L;;;;;N;;;;; +13752;EGYPTIAN HIEROGLYPH-13752;Lo;0;L;;;;;N;;;;; +13753;EGYPTIAN HIEROGLYPH-13753;Lo;0;L;;;;;N;;;;; +13754;EGYPTIAN HIEROGLYPH-13754;Lo;0;L;;;;;N;;;;; +13755;EGYPTIAN HIEROGLYPH-13755;Lo;0;L;;;;;N;;;;; +13756;EGYPTIAN HIEROGLYPH-13756;Lo;0;L;;;;;N;;;;; +13757;EGYPTIAN HIEROGLYPH-13757;Lo;0;L;;;;;N;;;;; +13758;EGYPTIAN HIEROGLYPH-13758;Lo;0;L;;;;;N;;;;; +13759;EGYPTIAN HIEROGLYPH-13759;Lo;0;L;;;;;N;;;;; +1375A;EGYPTIAN HIEROGLYPH-1375A;Lo;0;L;;;;;N;;;;; +1375B;EGYPTIAN HIEROGLYPH-1375B;Lo;0;L;;;;;N;;;;; +1375C;EGYPTIAN HIEROGLYPH-1375C;Lo;0;L;;;;;N;;;;; +1375D;EGYPTIAN HIEROGLYPH-1375D;Lo;0;L;;;;;N;;;;; +1375E;EGYPTIAN HIEROGLYPH-1375E;Lo;0;L;;;;;N;;;;; +1375F;EGYPTIAN HIEROGLYPH-1375F;Lo;0;L;;;;;N;;;;; +13760;EGYPTIAN HIEROGLYPH-13760;Lo;0;L;;;;;N;;;;; +13761;EGYPTIAN HIEROGLYPH-13761;Lo;0;L;;;;;N;;;;; +13762;EGYPTIAN HIEROGLYPH-13762;Lo;0;L;;;;;N;;;;; +13763;EGYPTIAN HIEROGLYPH-13763;Lo;0;L;;;;;N;;;;; +13764;EGYPTIAN HIEROGLYPH-13764;Lo;0;L;;;;;N;;;;; +13765;EGYPTIAN HIEROGLYPH-13765;Lo;0;L;;;;;N;;;;; +13766;EGYPTIAN HIEROGLYPH-13766;Lo;0;L;;;;;N;;;;; +13767;EGYPTIAN HIEROGLYPH-13767;Lo;0;L;;;;;N;;;;; +13768;EGYPTIAN HIEROGLYPH-13768;Lo;0;L;;;;;N;;;;; +13769;EGYPTIAN HIEROGLYPH-13769;Lo;0;L;;;;;N;;;;; +1376A;EGYPTIAN HIEROGLYPH-1376A;Lo;0;L;;;;;N;;;;; +1376B;EGYPTIAN HIEROGLYPH-1376B;Lo;0;L;;;;;N;;;;; +1376C;EGYPTIAN HIEROGLYPH-1376C;Lo;0;L;;;;;N;;;;; +1376D;EGYPTIAN HIEROGLYPH-1376D;Lo;0;L;;;;;N;;;;; +1376E;EGYPTIAN HIEROGLYPH-1376E;Lo;0;L;;;;;N;;;;; +1376F;EGYPTIAN HIEROGLYPH-1376F;Lo;0;L;;;;;N;;;;; +13770;EGYPTIAN HIEROGLYPH-13770;Lo;0;L;;;;;N;;;;; +13771;EGYPTIAN HIEROGLYPH-13771;Lo;0;L;;;;;N;;;;; +13772;EGYPTIAN HIEROGLYPH-13772;Lo;0;L;;;;;N;;;;; +13773;EGYPTIAN HIEROGLYPH-13773;Lo;0;L;;;;;N;;;;; +13774;EGYPTIAN HIEROGLYPH-13774;Lo;0;L;;;;;N;;;;; +13775;EGYPTIAN HIEROGLYPH-13775;Lo;0;L;;;;;N;;;;; +13776;EGYPTIAN HIEROGLYPH-13776;Lo;0;L;;;;;N;;;;; +13777;EGYPTIAN HIEROGLYPH-13777;Lo;0;L;;;;;N;;;;; +13778;EGYPTIAN HIEROGLYPH-13778;Lo;0;L;;;;;N;;;;; +13779;EGYPTIAN HIEROGLYPH-13779;Lo;0;L;;;;;N;;;;; +1377A;EGYPTIAN HIEROGLYPH-1377A;Lo;0;L;;;;;N;;;;; +1377B;EGYPTIAN HIEROGLYPH-1377B;Lo;0;L;;;;;N;;;;; +1377C;EGYPTIAN HIEROGLYPH-1377C;Lo;0;L;;;;;N;;;;; +1377D;EGYPTIAN HIEROGLYPH-1377D;Lo;0;L;;;;;N;;;;; +1377E;EGYPTIAN HIEROGLYPH-1377E;Lo;0;L;;;;;N;;;;; +1377F;EGYPTIAN HIEROGLYPH-1377F;Lo;0;L;;;;;N;;;;; +13780;EGYPTIAN HIEROGLYPH-13780;Lo;0;L;;;;;N;;;;; +13781;EGYPTIAN HIEROGLYPH-13781;Lo;0;L;;;;;N;;;;; +13782;EGYPTIAN HIEROGLYPH-13782;Lo;0;L;;;;;N;;;;; +13783;EGYPTIAN HIEROGLYPH-13783;Lo;0;L;;;;;N;;;;; +13784;EGYPTIAN HIEROGLYPH-13784;Lo;0;L;;;;;N;;;;; +13785;EGYPTIAN HIEROGLYPH-13785;Lo;0;L;;;;;N;;;;; +13786;EGYPTIAN HIEROGLYPH-13786;Lo;0;L;;;;;N;;;;; +13787;EGYPTIAN HIEROGLYPH-13787;Lo;0;L;;;;;N;;;;; +13788;EGYPTIAN HIEROGLYPH-13788;Lo;0;L;;;;;N;;;;; +13789;EGYPTIAN HIEROGLYPH-13789;Lo;0;L;;;;;N;;;;; +1378A;EGYPTIAN HIEROGLYPH-1378A;Lo;0;L;;;;;N;;;;; +1378B;EGYPTIAN HIEROGLYPH-1378B;Lo;0;L;;;;;N;;;;; +1378C;EGYPTIAN HIEROGLYPH-1378C;Lo;0;L;;;;;N;;;;; +1378D;EGYPTIAN HIEROGLYPH-1378D;Lo;0;L;;;;;N;;;;; +1378E;EGYPTIAN HIEROGLYPH-1378E;Lo;0;L;;;;;N;;;;; +1378F;EGYPTIAN HIEROGLYPH-1378F;Lo;0;L;;;;;N;;;;; +13790;EGYPTIAN HIEROGLYPH-13790;Lo;0;L;;;;;N;;;;; +13791;EGYPTIAN HIEROGLYPH-13791;Lo;0;L;;;;;N;;;;; +13792;EGYPTIAN HIEROGLYPH-13792;Lo;0;L;;;;;N;;;;; +13793;EGYPTIAN HIEROGLYPH-13793;Lo;0;L;;;;;N;;;;; +13794;EGYPTIAN HIEROGLYPH-13794;Lo;0;L;;;;;N;;;;; +13795;EGYPTIAN HIEROGLYPH-13795;Lo;0;L;;;;;N;;;;; +13796;EGYPTIAN HIEROGLYPH-13796;Lo;0;L;;;;;N;;;;; +13797;EGYPTIAN HIEROGLYPH-13797;Lo;0;L;;;;;N;;;;; +13798;EGYPTIAN HIEROGLYPH-13798;Lo;0;L;;;;;N;;;;; +13799;EGYPTIAN HIEROGLYPH-13799;Lo;0;L;;;;;N;;;;; +1379A;EGYPTIAN HIEROGLYPH-1379A;Lo;0;L;;;;;N;;;;; +1379B;EGYPTIAN HIEROGLYPH-1379B;Lo;0;L;;;;;N;;;;; +1379C;EGYPTIAN HIEROGLYPH-1379C;Lo;0;L;;;;;N;;;;; +1379D;EGYPTIAN HIEROGLYPH-1379D;Lo;0;L;;;;;N;;;;; +1379E;EGYPTIAN HIEROGLYPH-1379E;Lo;0;L;;;;;N;;;;; +1379F;EGYPTIAN HIEROGLYPH-1379F;Lo;0;L;;;;;N;;;;; +137A0;EGYPTIAN HIEROGLYPH-137A0;Lo;0;L;;;;;N;;;;; +137A1;EGYPTIAN HIEROGLYPH-137A1;Lo;0;L;;;;;N;;;;; +137A2;EGYPTIAN HIEROGLYPH-137A2;Lo;0;L;;;;;N;;;;; +137A3;EGYPTIAN HIEROGLYPH-137A3;Lo;0;L;;;;;N;;;;; +137A4;EGYPTIAN HIEROGLYPH-137A4;Lo;0;L;;;;;N;;;;; +137A5;EGYPTIAN HIEROGLYPH-137A5;Lo;0;L;;;;;N;;;;; +137A6;EGYPTIAN HIEROGLYPH-137A6;Lo;0;L;;;;;N;;;;; +137A7;EGYPTIAN HIEROGLYPH-137A7;Lo;0;L;;;;;N;;;;; +137A8;EGYPTIAN HIEROGLYPH-137A8;Lo;0;L;;;;;N;;;;; +137A9;EGYPTIAN HIEROGLYPH-137A9;Lo;0;L;;;;;N;;;;; +137AA;EGYPTIAN HIEROGLYPH-137AA;Lo;0;L;;;;;N;;;;; +137AB;EGYPTIAN HIEROGLYPH-137AB;Lo;0;L;;;;;N;;;;; +137AC;EGYPTIAN HIEROGLYPH-137AC;Lo;0;L;;;;;N;;;;; +137AD;EGYPTIAN HIEROGLYPH-137AD;Lo;0;L;;;;;N;;;;; +137AE;EGYPTIAN HIEROGLYPH-137AE;Lo;0;L;;;;;N;;;;; +137AF;EGYPTIAN HIEROGLYPH-137AF;Lo;0;L;;;;;N;;;;; +137B0;EGYPTIAN HIEROGLYPH-137B0;Lo;0;L;;;;;N;;;;; +137B1;EGYPTIAN HIEROGLYPH-137B1;Lo;0;L;;;;;N;;;;; +137B2;EGYPTIAN HIEROGLYPH-137B2;Lo;0;L;;;;;N;;;;; +137B3;EGYPTIAN HIEROGLYPH-137B3;Lo;0;L;;;;;N;;;;; +137B4;EGYPTIAN HIEROGLYPH-137B4;Lo;0;L;;;;;N;;;;; +137B5;EGYPTIAN HIEROGLYPH-137B5;Lo;0;L;;;;;N;;;;; +137B6;EGYPTIAN HIEROGLYPH-137B6;Lo;0;L;;;;;N;;;;; +137B7;EGYPTIAN HIEROGLYPH-137B7;Lo;0;L;;;;;N;;;;; +137B8;EGYPTIAN HIEROGLYPH-137B8;Lo;0;L;;;;;N;;;;; +137B9;EGYPTIAN HIEROGLYPH-137B9;Lo;0;L;;;;;N;;;;; +137BA;EGYPTIAN HIEROGLYPH-137BA;Lo;0;L;;;;;N;;;;; +137BB;EGYPTIAN HIEROGLYPH-137BB;Lo;0;L;;;;;N;;;;; +137BC;EGYPTIAN HIEROGLYPH-137BC;Lo;0;L;;;;;N;;;;; +137BD;EGYPTIAN HIEROGLYPH-137BD;Lo;0;L;;;;;N;;;;; +137BE;EGYPTIAN HIEROGLYPH-137BE;Lo;0;L;;;;;N;;;;; +137BF;EGYPTIAN HIEROGLYPH-137BF;Lo;0;L;;;;;N;;;;; +137C0;EGYPTIAN HIEROGLYPH-137C0;Lo;0;L;;;;;N;;;;; +137C1;EGYPTIAN HIEROGLYPH-137C1;Lo;0;L;;;;;N;;;;; +137C2;EGYPTIAN HIEROGLYPH-137C2;Lo;0;L;;;;;N;;;;; +137C3;EGYPTIAN HIEROGLYPH-137C3;Lo;0;L;;;;;N;;;;; +137C4;EGYPTIAN HIEROGLYPH-137C4;Lo;0;L;;;;;N;;;;; +137C5;EGYPTIAN HIEROGLYPH-137C5;Lo;0;L;;;;;N;;;;; +137C6;EGYPTIAN HIEROGLYPH-137C6;Lo;0;L;;;;;N;;;;; +137C7;EGYPTIAN HIEROGLYPH-137C7;Lo;0;L;;;;;N;;;;; +137C8;EGYPTIAN HIEROGLYPH-137C8;Lo;0;L;;;;;N;;;;; +137C9;EGYPTIAN HIEROGLYPH-137C9;Lo;0;L;;;;;N;;;;; +137CA;EGYPTIAN HIEROGLYPH-137CA;Lo;0;L;;;;;N;;;;; +137CB;EGYPTIAN HIEROGLYPH-137CB;Lo;0;L;;;;;N;;;;; +137CC;EGYPTIAN HIEROGLYPH-137CC;Lo;0;L;;;;;N;;;;; +137CD;EGYPTIAN HIEROGLYPH-137CD;Lo;0;L;;;;;N;;;;; +137CE;EGYPTIAN HIEROGLYPH-137CE;Lo;0;L;;;;;N;;;;; +137CF;EGYPTIAN HIEROGLYPH-137CF;Lo;0;L;;;;;N;;;;; +137D0;EGYPTIAN HIEROGLYPH-137D0;Lo;0;L;;;;;N;;;;; +137D1;EGYPTIAN HIEROGLYPH-137D1;Lo;0;L;;;;;N;;;;; +137D2;EGYPTIAN HIEROGLYPH-137D2;Lo;0;L;;;;;N;;;;; +137D3;EGYPTIAN HIEROGLYPH-137D3;Lo;0;L;;;;;N;;;;; +137D4;EGYPTIAN HIEROGLYPH-137D4;Lo;0;L;;;;;N;;;;; +137D5;EGYPTIAN HIEROGLYPH-137D5;Lo;0;L;;;;;N;;;;; +137D6;EGYPTIAN HIEROGLYPH-137D6;Lo;0;L;;;;;N;;;;; +137D7;EGYPTIAN HIEROGLYPH-137D7;Lo;0;L;;;;;N;;;;; +137D8;EGYPTIAN HIEROGLYPH-137D8;Lo;0;L;;;;;N;;;;; +137D9;EGYPTIAN HIEROGLYPH-137D9;Lo;0;L;;;;;N;;;;; +137DA;EGYPTIAN HIEROGLYPH-137DA;Lo;0;L;;;;;N;;;;; +137DB;EGYPTIAN HIEROGLYPH-137DB;Lo;0;L;;;;;N;;;;; +137DC;EGYPTIAN HIEROGLYPH-137DC;Lo;0;L;;;;;N;;;;; +137DD;EGYPTIAN HIEROGLYPH-137DD;Lo;0;L;;;;;N;;;;; +137DE;EGYPTIAN HIEROGLYPH-137DE;Lo;0;L;;;;;N;;;;; +137DF;EGYPTIAN HIEROGLYPH-137DF;Lo;0;L;;;;;N;;;;; +137E0;EGYPTIAN HIEROGLYPH-137E0;Lo;0;L;;;;;N;;;;; +137E1;EGYPTIAN HIEROGLYPH-137E1;Lo;0;L;;;;;N;;;;; +137E2;EGYPTIAN HIEROGLYPH-137E2;Lo;0;L;;;;;N;;;;; +137E3;EGYPTIAN HIEROGLYPH-137E3;Lo;0;L;;;;;N;;;;; +137E4;EGYPTIAN HIEROGLYPH-137E4;Lo;0;L;;;;;N;;;;; +137E5;EGYPTIAN HIEROGLYPH-137E5;Lo;0;L;;;;;N;;;;; +137E6;EGYPTIAN HIEROGLYPH-137E6;Lo;0;L;;;;;N;;;;; +137E7;EGYPTIAN HIEROGLYPH-137E7;Lo;0;L;;;;;N;;;;; +137E8;EGYPTIAN HIEROGLYPH-137E8;Lo;0;L;;;;;N;;;;; +137E9;EGYPTIAN HIEROGLYPH-137E9;Lo;0;L;;;;;N;;;;; +137EA;EGYPTIAN HIEROGLYPH-137EA;Lo;0;L;;;;;N;;;;; +137EB;EGYPTIAN HIEROGLYPH-137EB;Lo;0;L;;;;;N;;;;; +137EC;EGYPTIAN HIEROGLYPH-137EC;Lo;0;L;;;;;N;;;;; +137ED;EGYPTIAN HIEROGLYPH-137ED;Lo;0;L;;;;;N;;;;; +137EE;EGYPTIAN HIEROGLYPH-137EE;Lo;0;L;;;;;N;;;;; +137EF;EGYPTIAN HIEROGLYPH-137EF;Lo;0;L;;;;;N;;;;; +137F0;EGYPTIAN HIEROGLYPH-137F0;Lo;0;L;;;;;N;;;;; +137F1;EGYPTIAN HIEROGLYPH-137F1;Lo;0;L;;;;;N;;;;; +137F2;EGYPTIAN HIEROGLYPH-137F2;Lo;0;L;;;;;N;;;;; +137F3;EGYPTIAN HIEROGLYPH-137F3;Lo;0;L;;;;;N;;;;; +137F4;EGYPTIAN HIEROGLYPH-137F4;Lo;0;L;;;;;N;;;;; +137F5;EGYPTIAN HIEROGLYPH-137F5;Lo;0;L;;;;;N;;;;; +137F6;EGYPTIAN HIEROGLYPH-137F6;Lo;0;L;;;;;N;;;;; +137F7;EGYPTIAN HIEROGLYPH-137F7;Lo;0;L;;;;;N;;;;; +137F8;EGYPTIAN HIEROGLYPH-137F8;Lo;0;L;;;;;N;;;;; +137F9;EGYPTIAN HIEROGLYPH-137F9;Lo;0;L;;;;;N;;;;; +137FA;EGYPTIAN HIEROGLYPH-137FA;Lo;0;L;;;;;N;;;;; +137FB;EGYPTIAN HIEROGLYPH-137FB;Lo;0;L;;;;;N;;;;; +137FC;EGYPTIAN HIEROGLYPH-137FC;Lo;0;L;;;;;N;;;;; +137FD;EGYPTIAN HIEROGLYPH-137FD;Lo;0;L;;;;;N;;;;; +137FE;EGYPTIAN HIEROGLYPH-137FE;Lo;0;L;;;;;N;;;;; +137FF;EGYPTIAN HIEROGLYPH-137FF;Lo;0;L;;;;;N;;;;; +13800;EGYPTIAN HIEROGLYPH-13800;Lo;0;L;;;;;N;;;;; +13801;EGYPTIAN HIEROGLYPH-13801;Lo;0;L;;;;;N;;;;; +13802;EGYPTIAN HIEROGLYPH-13802;Lo;0;L;;;;;N;;;;; +13803;EGYPTIAN HIEROGLYPH-13803;Lo;0;L;;;;;N;;;;; +13804;EGYPTIAN HIEROGLYPH-13804;Lo;0;L;;;;;N;;;;; +13805;EGYPTIAN HIEROGLYPH-13805;Lo;0;L;;;;;N;;;;; +13806;EGYPTIAN HIEROGLYPH-13806;Lo;0;L;;;;;N;;;;; +13807;EGYPTIAN HIEROGLYPH-13807;Lo;0;L;;;;;N;;;;; +13808;EGYPTIAN HIEROGLYPH-13808;Lo;0;L;;;;;N;;;;; +13809;EGYPTIAN HIEROGLYPH-13809;Lo;0;L;;;;;N;;;;; +1380A;EGYPTIAN HIEROGLYPH-1380A;Lo;0;L;;;;;N;;;;; +1380B;EGYPTIAN HIEROGLYPH-1380B;Lo;0;L;;;;;N;;;;; +1380C;EGYPTIAN HIEROGLYPH-1380C;Lo;0;L;;;;;N;;;;; +1380D;EGYPTIAN HIEROGLYPH-1380D;Lo;0;L;;;;;N;;;;; +1380E;EGYPTIAN HIEROGLYPH-1380E;Lo;0;L;;;;;N;;;;; +1380F;EGYPTIAN HIEROGLYPH-1380F;Lo;0;L;;;;;N;;;;; +13810;EGYPTIAN HIEROGLYPH-13810;Lo;0;L;;;;;N;;;;; +13811;EGYPTIAN HIEROGLYPH-13811;Lo;0;L;;;;;N;;;;; +13812;EGYPTIAN HIEROGLYPH-13812;Lo;0;L;;;;;N;;;;; +13813;EGYPTIAN HIEROGLYPH-13813;Lo;0;L;;;;;N;;;;; +13814;EGYPTIAN HIEROGLYPH-13814;Lo;0;L;;;;;N;;;;; +13815;EGYPTIAN HIEROGLYPH-13815;Lo;0;L;;;;;N;;;;; +13816;EGYPTIAN HIEROGLYPH-13816;Lo;0;L;;;;;N;;;;; +13817;EGYPTIAN HIEROGLYPH-13817;Lo;0;L;;;;;N;;;;; +13818;EGYPTIAN HIEROGLYPH-13818;Lo;0;L;;;;;N;;;;; +13819;EGYPTIAN HIEROGLYPH-13819;Lo;0;L;;;;;N;;;;; +1381A;EGYPTIAN HIEROGLYPH-1381A;Lo;0;L;;;;;N;;;;; +1381B;EGYPTIAN HIEROGLYPH-1381B;Lo;0;L;;;;;N;;;;; +1381C;EGYPTIAN HIEROGLYPH-1381C;Lo;0;L;;;;;N;;;;; +1381D;EGYPTIAN HIEROGLYPH-1381D;Lo;0;L;;;;;N;;;;; +1381E;EGYPTIAN HIEROGLYPH-1381E;Lo;0;L;;;;;N;;;;; +1381F;EGYPTIAN HIEROGLYPH-1381F;Lo;0;L;;;;;N;;;;; +13820;EGYPTIAN HIEROGLYPH-13820;Lo;0;L;;;;;N;;;;; +13821;EGYPTIAN HIEROGLYPH-13821;Lo;0;L;;;;;N;;;;; +13822;EGYPTIAN HIEROGLYPH-13822;Lo;0;L;;;;;N;;;;; +13823;EGYPTIAN HIEROGLYPH-13823;Lo;0;L;;;;;N;;;;; +13824;EGYPTIAN HIEROGLYPH-13824;Lo;0;L;;;;;N;;;;; +13825;EGYPTIAN HIEROGLYPH-13825;Lo;0;L;;;;;N;;;;; +13826;EGYPTIAN HIEROGLYPH-13826;Lo;0;L;;;;;N;;;;; +13827;EGYPTIAN HIEROGLYPH-13827;Lo;0;L;;;;;N;;;;; +13828;EGYPTIAN HIEROGLYPH-13828;Lo;0;L;;;;;N;;;;; +13829;EGYPTIAN HIEROGLYPH-13829;Lo;0;L;;;;;N;;;;; +1382A;EGYPTIAN HIEROGLYPH-1382A;Lo;0;L;;;;;N;;;;; +1382B;EGYPTIAN HIEROGLYPH-1382B;Lo;0;L;;;;;N;;;;; +1382C;EGYPTIAN HIEROGLYPH-1382C;Lo;0;L;;;;;N;;;;; +1382D;EGYPTIAN HIEROGLYPH-1382D;Lo;0;L;;;;;N;;;;; +1382E;EGYPTIAN HIEROGLYPH-1382E;Lo;0;L;;;;;N;;;;; +1382F;EGYPTIAN HIEROGLYPH-1382F;Lo;0;L;;;;;N;;;;; +13830;EGYPTIAN HIEROGLYPH-13830;Lo;0;L;;;;;N;;;;; +13831;EGYPTIAN HIEROGLYPH-13831;Lo;0;L;;;;;N;;;;; +13832;EGYPTIAN HIEROGLYPH-13832;Lo;0;L;;;;;N;;;;; +13833;EGYPTIAN HIEROGLYPH-13833;Lo;0;L;;;;;N;;;;; +13834;EGYPTIAN HIEROGLYPH-13834;Lo;0;L;;;;;N;;;;; +13835;EGYPTIAN HIEROGLYPH-13835;Lo;0;L;;;;;N;;;;; +13836;EGYPTIAN HIEROGLYPH-13836;Lo;0;L;;;;;N;;;;; +13837;EGYPTIAN HIEROGLYPH-13837;Lo;0;L;;;;;N;;;;; +13838;EGYPTIAN HIEROGLYPH-13838;Lo;0;L;;;;;N;;;;; +13839;EGYPTIAN HIEROGLYPH-13839;Lo;0;L;;;;;N;;;;; +1383A;EGYPTIAN HIEROGLYPH-1383A;Lo;0;L;;;;;N;;;;; +1383B;EGYPTIAN HIEROGLYPH-1383B;Lo;0;L;;;;;N;;;;; +1383C;EGYPTIAN HIEROGLYPH-1383C;Lo;0;L;;;;;N;;;;; +1383D;EGYPTIAN HIEROGLYPH-1383D;Lo;0;L;;;;;N;;;;; +1383E;EGYPTIAN HIEROGLYPH-1383E;Lo;0;L;;;;;N;;;;; +1383F;EGYPTIAN HIEROGLYPH-1383F;Lo;0;L;;;;;N;;;;; +13840;EGYPTIAN HIEROGLYPH-13840;Lo;0;L;;;;;N;;;;; +13841;EGYPTIAN HIEROGLYPH-13841;Lo;0;L;;;;;N;;;;; +13842;EGYPTIAN HIEROGLYPH-13842;Lo;0;L;;;;;N;;;;; +13843;EGYPTIAN HIEROGLYPH-13843;Lo;0;L;;;;;N;;;;; +13844;EGYPTIAN HIEROGLYPH-13844;Lo;0;L;;;;;N;;;;; +13845;EGYPTIAN HIEROGLYPH-13845;Lo;0;L;;;;;N;;;;; +13846;EGYPTIAN HIEROGLYPH-13846;Lo;0;L;;;;;N;;;;; +13847;EGYPTIAN HIEROGLYPH-13847;Lo;0;L;;;;;N;;;;; +13848;EGYPTIAN HIEROGLYPH-13848;Lo;0;L;;;;;N;;;;; +13849;EGYPTIAN HIEROGLYPH-13849;Lo;0;L;;;;;N;;;;; +1384A;EGYPTIAN HIEROGLYPH-1384A;Lo;0;L;;;;;N;;;;; +1384B;EGYPTIAN HIEROGLYPH-1384B;Lo;0;L;;;;;N;;;;; +1384C;EGYPTIAN HIEROGLYPH-1384C;Lo;0;L;;;;;N;;;;; +1384D;EGYPTIAN HIEROGLYPH-1384D;Lo;0;L;;;;;N;;;;; +1384E;EGYPTIAN HIEROGLYPH-1384E;Lo;0;L;;;;;N;;;;; +1384F;EGYPTIAN HIEROGLYPH-1384F;Lo;0;L;;;;;N;;;;; +13850;EGYPTIAN HIEROGLYPH-13850;Lo;0;L;;;;;N;;;;; +13851;EGYPTIAN HIEROGLYPH-13851;Lo;0;L;;;;;N;;;;; +13852;EGYPTIAN HIEROGLYPH-13852;Lo;0;L;;;;;N;;;;; +13853;EGYPTIAN HIEROGLYPH-13853;Lo;0;L;;;;;N;;;;; +13854;EGYPTIAN HIEROGLYPH-13854;Lo;0;L;;;;;N;;;;; +13855;EGYPTIAN HIEROGLYPH-13855;Lo;0;L;;;;;N;;;;; +13856;EGYPTIAN HIEROGLYPH-13856;Lo;0;L;;;;;N;;;;; +13857;EGYPTIAN HIEROGLYPH-13857;Lo;0;L;;;;;N;;;;; +13858;EGYPTIAN HIEROGLYPH-13858;Lo;0;L;;;;;N;;;;; +13859;EGYPTIAN HIEROGLYPH-13859;Lo;0;L;;;;;N;;;;; +1385A;EGYPTIAN HIEROGLYPH-1385A;Lo;0;L;;;;;N;;;;; +1385B;EGYPTIAN HIEROGLYPH-1385B;Lo;0;L;;;;;N;;;;; +1385C;EGYPTIAN HIEROGLYPH-1385C;Lo;0;L;;;;;N;;;;; +1385D;EGYPTIAN HIEROGLYPH-1385D;Lo;0;L;;;;;N;;;;; +1385E;EGYPTIAN HIEROGLYPH-1385E;Lo;0;L;;;;;N;;;;; +1385F;EGYPTIAN HIEROGLYPH-1385F;Lo;0;L;;;;;N;;;;; +13860;EGYPTIAN HIEROGLYPH-13860;Lo;0;L;;;;;N;;;;; +13861;EGYPTIAN HIEROGLYPH-13861;Lo;0;L;;;;;N;;;;; +13862;EGYPTIAN HIEROGLYPH-13862;Lo;0;L;;;;;N;;;;; +13863;EGYPTIAN HIEROGLYPH-13863;Lo;0;L;;;;;N;;;;; +13864;EGYPTIAN HIEROGLYPH-13864;Lo;0;L;;;;;N;;;;; +13865;EGYPTIAN HIEROGLYPH-13865;Lo;0;L;;;;;N;;;;; +13866;EGYPTIAN HIEROGLYPH-13866;Lo;0;L;;;;;N;;;;; +13867;EGYPTIAN HIEROGLYPH-13867;Lo;0;L;;;;;N;;;;; +13868;EGYPTIAN HIEROGLYPH-13868;Lo;0;L;;;;;N;;;;; +13869;EGYPTIAN HIEROGLYPH-13869;Lo;0;L;;;;;N;;;;; +1386A;EGYPTIAN HIEROGLYPH-1386A;Lo;0;L;;;;;N;;;;; +1386B;EGYPTIAN HIEROGLYPH-1386B;Lo;0;L;;;;;N;;;;; +1386C;EGYPTIAN HIEROGLYPH-1386C;Lo;0;L;;;;;N;;;;; +1386D;EGYPTIAN HIEROGLYPH-1386D;Lo;0;L;;;;;N;;;;; +1386E;EGYPTIAN HIEROGLYPH-1386E;Lo;0;L;;;;;N;;;;; +1386F;EGYPTIAN HIEROGLYPH-1386F;Lo;0;L;;;;;N;;;;; +13870;EGYPTIAN HIEROGLYPH-13870;Lo;0;L;;;;;N;;;;; +13871;EGYPTIAN HIEROGLYPH-13871;Lo;0;L;;;;;N;;;;; +13872;EGYPTIAN HIEROGLYPH-13872;Lo;0;L;;;;;N;;;;; +13873;EGYPTIAN HIEROGLYPH-13873;Lo;0;L;;;;;N;;;;; +13874;EGYPTIAN HIEROGLYPH-13874;Lo;0;L;;;;;N;;;;; +13875;EGYPTIAN HIEROGLYPH-13875;Lo;0;L;;;;;N;;;;; +13876;EGYPTIAN HIEROGLYPH-13876;Lo;0;L;;;;;N;;;;; +13877;EGYPTIAN HIEROGLYPH-13877;Lo;0;L;;;;;N;;;;; +13878;EGYPTIAN HIEROGLYPH-13878;Lo;0;L;;;;;N;;;;; +13879;EGYPTIAN HIEROGLYPH-13879;Lo;0;L;;;;;N;;;;; +1387A;EGYPTIAN HIEROGLYPH-1387A;Lo;0;L;;;;;N;;;;; +1387B;EGYPTIAN HIEROGLYPH-1387B;Lo;0;L;;;;;N;;;;; +1387C;EGYPTIAN HIEROGLYPH-1387C;Lo;0;L;;;;;N;;;;; +1387D;EGYPTIAN HIEROGLYPH-1387D;Lo;0;L;;;;;N;;;;; +1387E;EGYPTIAN HIEROGLYPH-1387E;Lo;0;L;;;;;N;;;;; +1387F;EGYPTIAN HIEROGLYPH-1387F;Lo;0;L;;;;;N;;;;; +13880;EGYPTIAN HIEROGLYPH-13880;Lo;0;L;;;;;N;;;;; +13881;EGYPTIAN HIEROGLYPH-13881;Lo;0;L;;;;;N;;;;; +13882;EGYPTIAN HIEROGLYPH-13882;Lo;0;L;;;;;N;;;;; +13883;EGYPTIAN HIEROGLYPH-13883;Lo;0;L;;;;;N;;;;; +13884;EGYPTIAN HIEROGLYPH-13884;Lo;0;L;;;;;N;;;;; +13885;EGYPTIAN HIEROGLYPH-13885;Lo;0;L;;;;;N;;;;; +13886;EGYPTIAN HIEROGLYPH-13886;Lo;0;L;;;;;N;;;;; +13887;EGYPTIAN HIEROGLYPH-13887;Lo;0;L;;;;;N;;;;; +13888;EGYPTIAN HIEROGLYPH-13888;Lo;0;L;;;;;N;;;;; +13889;EGYPTIAN HIEROGLYPH-13889;Lo;0;L;;;;;N;;;;; +1388A;EGYPTIAN HIEROGLYPH-1388A;Lo;0;L;;;;;N;;;;; +1388B;EGYPTIAN HIEROGLYPH-1388B;Lo;0;L;;;;;N;;;;; +1388C;EGYPTIAN HIEROGLYPH-1388C;Lo;0;L;;;;;N;;;;; +1388D;EGYPTIAN HIEROGLYPH-1388D;Lo;0;L;;;;;N;;;;; +1388E;EGYPTIAN HIEROGLYPH-1388E;Lo;0;L;;;;;N;;;;; +1388F;EGYPTIAN HIEROGLYPH-1388F;Lo;0;L;;;;;N;;;;; +13890;EGYPTIAN HIEROGLYPH-13890;Lo;0;L;;;;;N;;;;; +13891;EGYPTIAN HIEROGLYPH-13891;Lo;0;L;;;;;N;;;;; +13892;EGYPTIAN HIEROGLYPH-13892;Lo;0;L;;;;;N;;;;; +13893;EGYPTIAN HIEROGLYPH-13893;Lo;0;L;;;;;N;;;;; +13894;EGYPTIAN HIEROGLYPH-13894;Lo;0;L;;;;;N;;;;; +13895;EGYPTIAN HIEROGLYPH-13895;Lo;0;L;;;;;N;;;;; +13896;EGYPTIAN HIEROGLYPH-13896;Lo;0;L;;;;;N;;;;; +13897;EGYPTIAN HIEROGLYPH-13897;Lo;0;L;;;;;N;;;;; +13898;EGYPTIAN HIEROGLYPH-13898;Lo;0;L;;;;;N;;;;; +13899;EGYPTIAN HIEROGLYPH-13899;Lo;0;L;;;;;N;;;;; +1389A;EGYPTIAN HIEROGLYPH-1389A;Lo;0;L;;;;;N;;;;; +1389B;EGYPTIAN HIEROGLYPH-1389B;Lo;0;L;;;;;N;;;;; +1389C;EGYPTIAN HIEROGLYPH-1389C;Lo;0;L;;;;;N;;;;; +1389D;EGYPTIAN HIEROGLYPH-1389D;Lo;0;L;;;;;N;;;;; +1389E;EGYPTIAN HIEROGLYPH-1389E;Lo;0;L;;;;;N;;;;; +1389F;EGYPTIAN HIEROGLYPH-1389F;Lo;0;L;;;;;N;;;;; +138A0;EGYPTIAN HIEROGLYPH-138A0;Lo;0;L;;;;;N;;;;; +138A1;EGYPTIAN HIEROGLYPH-138A1;Lo;0;L;;;;;N;;;;; +138A2;EGYPTIAN HIEROGLYPH-138A2;Lo;0;L;;;;;N;;;;; +138A3;EGYPTIAN HIEROGLYPH-138A3;Lo;0;L;;;;;N;;;;; +138A4;EGYPTIAN HIEROGLYPH-138A4;Lo;0;L;;;;;N;;;;; +138A5;EGYPTIAN HIEROGLYPH-138A5;Lo;0;L;;;;;N;;;;; +138A6;EGYPTIAN HIEROGLYPH-138A6;Lo;0;L;;;;;N;;;;; +138A7;EGYPTIAN HIEROGLYPH-138A7;Lo;0;L;;;;;N;;;;; +138A8;EGYPTIAN HIEROGLYPH-138A8;Lo;0;L;;;;;N;;;;; +138A9;EGYPTIAN HIEROGLYPH-138A9;Lo;0;L;;;;;N;;;;; +138AA;EGYPTIAN HIEROGLYPH-138AA;Lo;0;L;;;;;N;;;;; +138AB;EGYPTIAN HIEROGLYPH-138AB;Lo;0;L;;;;;N;;;;; +138AC;EGYPTIAN HIEROGLYPH-138AC;Lo;0;L;;;;;N;;;;; +138AD;EGYPTIAN HIEROGLYPH-138AD;Lo;0;L;;;;;N;;;;; +138AE;EGYPTIAN HIEROGLYPH-138AE;Lo;0;L;;;;;N;;;;; +138AF;EGYPTIAN HIEROGLYPH-138AF;Lo;0;L;;;;;N;;;;; +138B0;EGYPTIAN HIEROGLYPH-138B0;Lo;0;L;;;;;N;;;;; +138B1;EGYPTIAN HIEROGLYPH-138B1;Lo;0;L;;;;;N;;;;; +138B2;EGYPTIAN HIEROGLYPH-138B2;Lo;0;L;;;;;N;;;;; +138B3;EGYPTIAN HIEROGLYPH-138B3;Lo;0;L;;;;;N;;;;; +138B4;EGYPTIAN HIEROGLYPH-138B4;Lo;0;L;;;;;N;;;;; +138B5;EGYPTIAN HIEROGLYPH-138B5;Lo;0;L;;;;;N;;;;; +138B6;EGYPTIAN HIEROGLYPH-138B6;Lo;0;L;;;;;N;;;;; +138B7;EGYPTIAN HIEROGLYPH-138B7;Lo;0;L;;;;;N;;;;; +138B8;EGYPTIAN HIEROGLYPH-138B8;Lo;0;L;;;;;N;;;;; +138B9;EGYPTIAN HIEROGLYPH-138B9;Lo;0;L;;;;;N;;;;; +138BA;EGYPTIAN HIEROGLYPH-138BA;Lo;0;L;;;;;N;;;;; +138BB;EGYPTIAN HIEROGLYPH-138BB;Lo;0;L;;;;;N;;;;; +138BC;EGYPTIAN HIEROGLYPH-138BC;Lo;0;L;;;;;N;;;;; +138BD;EGYPTIAN HIEROGLYPH-138BD;Lo;0;L;;;;;N;;;;; +138BE;EGYPTIAN HIEROGLYPH-138BE;Lo;0;L;;;;;N;;;;; +138BF;EGYPTIAN HIEROGLYPH-138BF;Lo;0;L;;;;;N;;;;; +138C0;EGYPTIAN HIEROGLYPH-138C0;Lo;0;L;;;;;N;;;;; +138C1;EGYPTIAN HIEROGLYPH-138C1;Lo;0;L;;;;;N;;;;; +138C2;EGYPTIAN HIEROGLYPH-138C2;Lo;0;L;;;;;N;;;;; +138C3;EGYPTIAN HIEROGLYPH-138C3;Lo;0;L;;;;;N;;;;; +138C4;EGYPTIAN HIEROGLYPH-138C4;Lo;0;L;;;;;N;;;;; +138C5;EGYPTIAN HIEROGLYPH-138C5;Lo;0;L;;;;;N;;;;; +138C6;EGYPTIAN HIEROGLYPH-138C6;Lo;0;L;;;;;N;;;;; +138C7;EGYPTIAN HIEROGLYPH-138C7;Lo;0;L;;;;;N;;;;; +138C8;EGYPTIAN HIEROGLYPH-138C8;Lo;0;L;;;;;N;;;;; +138C9;EGYPTIAN HIEROGLYPH-138C9;Lo;0;L;;;;;N;;;;; +138CA;EGYPTIAN HIEROGLYPH-138CA;Lo;0;L;;;;;N;;;;; +138CB;EGYPTIAN HIEROGLYPH-138CB;Lo;0;L;;;;;N;;;;; +138CC;EGYPTIAN HIEROGLYPH-138CC;Lo;0;L;;;;;N;;;;; +138CD;EGYPTIAN HIEROGLYPH-138CD;Lo;0;L;;;;;N;;;;; +138CE;EGYPTIAN HIEROGLYPH-138CE;Lo;0;L;;;;;N;;;;; +138CF;EGYPTIAN HIEROGLYPH-138CF;Lo;0;L;;;;;N;;;;; +138D0;EGYPTIAN HIEROGLYPH-138D0;Lo;0;L;;;;;N;;;;; +138D1;EGYPTIAN HIEROGLYPH-138D1;Lo;0;L;;;;;N;;;;; +138D2;EGYPTIAN HIEROGLYPH-138D2;Lo;0;L;;;;;N;;;;; +138D3;EGYPTIAN HIEROGLYPH-138D3;Lo;0;L;;;;;N;;;;; +138D4;EGYPTIAN HIEROGLYPH-138D4;Lo;0;L;;;;;N;;;;; +138D5;EGYPTIAN HIEROGLYPH-138D5;Lo;0;L;;;;;N;;;;; +138D6;EGYPTIAN HIEROGLYPH-138D6;Lo;0;L;;;;;N;;;;; +138D7;EGYPTIAN HIEROGLYPH-138D7;Lo;0;L;;;;;N;;;;; +138D8;EGYPTIAN HIEROGLYPH-138D8;Lo;0;L;;;;;N;;;;; +138D9;EGYPTIAN HIEROGLYPH-138D9;Lo;0;L;;;;;N;;;;; +138DA;EGYPTIAN HIEROGLYPH-138DA;Lo;0;L;;;;;N;;;;; +138DB;EGYPTIAN HIEROGLYPH-138DB;Lo;0;L;;;;;N;;;;; +138DC;EGYPTIAN HIEROGLYPH-138DC;Lo;0;L;;;;;N;;;;; +138DD;EGYPTIAN HIEROGLYPH-138DD;Lo;0;L;;;;;N;;;;; +138DE;EGYPTIAN HIEROGLYPH-138DE;Lo;0;L;;;;;N;;;;; +138DF;EGYPTIAN HIEROGLYPH-138DF;Lo;0;L;;;;;N;;;;; +138E0;EGYPTIAN HIEROGLYPH-138E0;Lo;0;L;;;;;N;;;;; +138E1;EGYPTIAN HIEROGLYPH-138E1;Lo;0;L;;;;;N;;;;; +138E2;EGYPTIAN HIEROGLYPH-138E2;Lo;0;L;;;;;N;;;;; +138E3;EGYPTIAN HIEROGLYPH-138E3;Lo;0;L;;;;;N;;;;; +138E4;EGYPTIAN HIEROGLYPH-138E4;Lo;0;L;;;;;N;;;;; +138E5;EGYPTIAN HIEROGLYPH-138E5;Lo;0;L;;;;;N;;;;; +138E6;EGYPTIAN HIEROGLYPH-138E6;Lo;0;L;;;;;N;;;;; +138E7;EGYPTIAN HIEROGLYPH-138E7;Lo;0;L;;;;;N;;;;; +138E8;EGYPTIAN HIEROGLYPH-138E8;Lo;0;L;;;;;N;;;;; +138E9;EGYPTIAN HIEROGLYPH-138E9;Lo;0;L;;;;;N;;;;; +138EA;EGYPTIAN HIEROGLYPH-138EA;Lo;0;L;;;;;N;;;;; +138EB;EGYPTIAN HIEROGLYPH-138EB;Lo;0;L;;;;;N;;;;; +138EC;EGYPTIAN HIEROGLYPH-138EC;Lo;0;L;;;;;N;;;;; +138ED;EGYPTIAN HIEROGLYPH-138ED;Lo;0;L;;;;;N;;;;; +138EE;EGYPTIAN HIEROGLYPH-138EE;Lo;0;L;;;;;N;;;;; +138EF;EGYPTIAN HIEROGLYPH-138EF;Lo;0;L;;;;;N;;;;; +138F0;EGYPTIAN HIEROGLYPH-138F0;Lo;0;L;;;;;N;;;;; +138F1;EGYPTIAN HIEROGLYPH-138F1;Lo;0;L;;;;;N;;;;; +138F2;EGYPTIAN HIEROGLYPH-138F2;Lo;0;L;;;;;N;;;;; +138F3;EGYPTIAN HIEROGLYPH-138F3;Lo;0;L;;;;;N;;;;; +138F4;EGYPTIAN HIEROGLYPH-138F4;Lo;0;L;;;;;N;;;;; +138F5;EGYPTIAN HIEROGLYPH-138F5;Lo;0;L;;;;;N;;;;; +138F6;EGYPTIAN HIEROGLYPH-138F6;Lo;0;L;;;;;N;;;;; +138F7;EGYPTIAN HIEROGLYPH-138F7;Lo;0;L;;;;;N;;;;; +138F8;EGYPTIAN HIEROGLYPH-138F8;Lo;0;L;;;;;N;;;;; +138F9;EGYPTIAN HIEROGLYPH-138F9;Lo;0;L;;;;;N;;;;; +138FA;EGYPTIAN HIEROGLYPH-138FA;Lo;0;L;;;;;N;;;;; +138FB;EGYPTIAN HIEROGLYPH-138FB;Lo;0;L;;;;;N;;;;; +138FC;EGYPTIAN HIEROGLYPH-138FC;Lo;0;L;;;;;N;;;;; +138FD;EGYPTIAN HIEROGLYPH-138FD;Lo;0;L;;;;;N;;;;; +138FE;EGYPTIAN HIEROGLYPH-138FE;Lo;0;L;;;;;N;;;;; +138FF;EGYPTIAN HIEROGLYPH-138FF;Lo;0;L;;;;;N;;;;; +13900;EGYPTIAN HIEROGLYPH-13900;Lo;0;L;;;;;N;;;;; +13901;EGYPTIAN HIEROGLYPH-13901;Lo;0;L;;;;;N;;;;; +13902;EGYPTIAN HIEROGLYPH-13902;Lo;0;L;;;;;N;;;;; +13903;EGYPTIAN HIEROGLYPH-13903;Lo;0;L;;;;;N;;;;; +13904;EGYPTIAN HIEROGLYPH-13904;Lo;0;L;;;;;N;;;;; +13905;EGYPTIAN HIEROGLYPH-13905;Lo;0;L;;;;;N;;;;; +13906;EGYPTIAN HIEROGLYPH-13906;Lo;0;L;;;;;N;;;;; +13907;EGYPTIAN HIEROGLYPH-13907;Lo;0;L;;;;;N;;;;; +13908;EGYPTIAN HIEROGLYPH-13908;Lo;0;L;;;;;N;;;;; +13909;EGYPTIAN HIEROGLYPH-13909;Lo;0;L;;;;;N;;;;; +1390A;EGYPTIAN HIEROGLYPH-1390A;Lo;0;L;;;;;N;;;;; +1390B;EGYPTIAN HIEROGLYPH-1390B;Lo;0;L;;;;;N;;;;; +1390C;EGYPTIAN HIEROGLYPH-1390C;Lo;0;L;;;;;N;;;;; +1390D;EGYPTIAN HIEROGLYPH-1390D;Lo;0;L;;;;;N;;;;; +1390E;EGYPTIAN HIEROGLYPH-1390E;Lo;0;L;;;;;N;;;;; +1390F;EGYPTIAN HIEROGLYPH-1390F;Lo;0;L;;;;;N;;;;; +13910;EGYPTIAN HIEROGLYPH-13910;Lo;0;L;;;;;N;;;;; +13911;EGYPTIAN HIEROGLYPH-13911;Lo;0;L;;;;;N;;;;; +13912;EGYPTIAN HIEROGLYPH-13912;Lo;0;L;;;;;N;;;;; +13913;EGYPTIAN HIEROGLYPH-13913;Lo;0;L;;;;;N;;;;; +13914;EGYPTIAN HIEROGLYPH-13914;Lo;0;L;;;;;N;;;;; +13915;EGYPTIAN HIEROGLYPH-13915;Lo;0;L;;;;;N;;;;; +13916;EGYPTIAN HIEROGLYPH-13916;Lo;0;L;;;;;N;;;;; +13917;EGYPTIAN HIEROGLYPH-13917;Lo;0;L;;;;;N;;;;; +13918;EGYPTIAN HIEROGLYPH-13918;Lo;0;L;;;;;N;;;;; +13919;EGYPTIAN HIEROGLYPH-13919;Lo;0;L;;;;;N;;;;; +1391A;EGYPTIAN HIEROGLYPH-1391A;Lo;0;L;;;;;N;;;;; +1391B;EGYPTIAN HIEROGLYPH-1391B;Lo;0;L;;;;;N;;;;; +1391C;EGYPTIAN HIEROGLYPH-1391C;Lo;0;L;;;;;N;;;;; +1391D;EGYPTIAN HIEROGLYPH-1391D;Lo;0;L;;;;;N;;;;; +1391E;EGYPTIAN HIEROGLYPH-1391E;Lo;0;L;;;;;N;;;;; +1391F;EGYPTIAN HIEROGLYPH-1391F;Lo;0;L;;;;;N;;;;; +13920;EGYPTIAN HIEROGLYPH-13920;Lo;0;L;;;;;N;;;;; +13921;EGYPTIAN HIEROGLYPH-13921;Lo;0;L;;;;;N;;;;; +13922;EGYPTIAN HIEROGLYPH-13922;Lo;0;L;;;;;N;;;;; +13923;EGYPTIAN HIEROGLYPH-13923;Lo;0;L;;;;;N;;;;; +13924;EGYPTIAN HIEROGLYPH-13924;Lo;0;L;;;;;N;;;;; +13925;EGYPTIAN HIEROGLYPH-13925;Lo;0;L;;;;;N;;;;; +13926;EGYPTIAN HIEROGLYPH-13926;Lo;0;L;;;;;N;;;;; +13927;EGYPTIAN HIEROGLYPH-13927;Lo;0;L;;;;;N;;;;; +13928;EGYPTIAN HIEROGLYPH-13928;Lo;0;L;;;;;N;;;;; +13929;EGYPTIAN HIEROGLYPH-13929;Lo;0;L;;;;;N;;;;; +1392A;EGYPTIAN HIEROGLYPH-1392A;Lo;0;L;;;;;N;;;;; +1392B;EGYPTIAN HIEROGLYPH-1392B;Lo;0;L;;;;;N;;;;; +1392C;EGYPTIAN HIEROGLYPH-1392C;Lo;0;L;;;;;N;;;;; +1392D;EGYPTIAN HIEROGLYPH-1392D;Lo;0;L;;;;;N;;;;; +1392E;EGYPTIAN HIEROGLYPH-1392E;Lo;0;L;;;;;N;;;;; +1392F;EGYPTIAN HIEROGLYPH-1392F;Lo;0;L;;;;;N;;;;; +13930;EGYPTIAN HIEROGLYPH-13930;Lo;0;L;;;;;N;;;;; +13931;EGYPTIAN HIEROGLYPH-13931;Lo;0;L;;;;;N;;;;; +13932;EGYPTIAN HIEROGLYPH-13932;Lo;0;L;;;;;N;;;;; +13933;EGYPTIAN HIEROGLYPH-13933;Lo;0;L;;;;;N;;;;; +13934;EGYPTIAN HIEROGLYPH-13934;Lo;0;L;;;;;N;;;;; +13935;EGYPTIAN HIEROGLYPH-13935;Lo;0;L;;;;;N;;;;; +13936;EGYPTIAN HIEROGLYPH-13936;Lo;0;L;;;;;N;;;;; +13937;EGYPTIAN HIEROGLYPH-13937;Lo;0;L;;;;;N;;;;; +13938;EGYPTIAN HIEROGLYPH-13938;Lo;0;L;;;;;N;;;;; +13939;EGYPTIAN HIEROGLYPH-13939;Lo;0;L;;;;;N;;;;; +1393A;EGYPTIAN HIEROGLYPH-1393A;Lo;0;L;;;;;N;;;;; +1393B;EGYPTIAN HIEROGLYPH-1393B;Lo;0;L;;;;;N;;;;; +1393C;EGYPTIAN HIEROGLYPH-1393C;Lo;0;L;;;;;N;;;;; +1393D;EGYPTIAN HIEROGLYPH-1393D;Lo;0;L;;;;;N;;;;; +1393E;EGYPTIAN HIEROGLYPH-1393E;Lo;0;L;;;;;N;;;;; +1393F;EGYPTIAN HIEROGLYPH-1393F;Lo;0;L;;;;;N;;;;; +13940;EGYPTIAN HIEROGLYPH-13940;Lo;0;L;;;;;N;;;;; +13941;EGYPTIAN HIEROGLYPH-13941;Lo;0;L;;;;;N;;;;; +13942;EGYPTIAN HIEROGLYPH-13942;Lo;0;L;;;;;N;;;;; +13943;EGYPTIAN HIEROGLYPH-13943;Lo;0;L;;;;;N;;;;; +13944;EGYPTIAN HIEROGLYPH-13944;Lo;0;L;;;;;N;;;;; +13945;EGYPTIAN HIEROGLYPH-13945;Lo;0;L;;;;;N;;;;; +13946;EGYPTIAN HIEROGLYPH-13946;Lo;0;L;;;;;N;;;;; +13947;EGYPTIAN HIEROGLYPH-13947;Lo;0;L;;;;;N;;;;; +13948;EGYPTIAN HIEROGLYPH-13948;Lo;0;L;;;;;N;;;;; +13949;EGYPTIAN HIEROGLYPH-13949;Lo;0;L;;;;;N;;;;; +1394A;EGYPTIAN HIEROGLYPH-1394A;Lo;0;L;;;;;N;;;;; +1394B;EGYPTIAN HIEROGLYPH-1394B;Lo;0;L;;;;;N;;;;; +1394C;EGYPTIAN HIEROGLYPH-1394C;Lo;0;L;;;;;N;;;;; +1394D;EGYPTIAN HIEROGLYPH-1394D;Lo;0;L;;;;;N;;;;; +1394E;EGYPTIAN HIEROGLYPH-1394E;Lo;0;L;;;;;N;;;;; +1394F;EGYPTIAN HIEROGLYPH-1394F;Lo;0;L;;;;;N;;;;; +13950;EGYPTIAN HIEROGLYPH-13950;Lo;0;L;;;;;N;;;;; +13951;EGYPTIAN HIEROGLYPH-13951;Lo;0;L;;;;;N;;;;; +13952;EGYPTIAN HIEROGLYPH-13952;Lo;0;L;;;;;N;;;;; +13953;EGYPTIAN HIEROGLYPH-13953;Lo;0;L;;;;;N;;;;; +13954;EGYPTIAN HIEROGLYPH-13954;Lo;0;L;;;;;N;;;;; +13955;EGYPTIAN HIEROGLYPH-13955;Lo;0;L;;;;;N;;;;; +13956;EGYPTIAN HIEROGLYPH-13956;Lo;0;L;;;;;N;;;;; +13957;EGYPTIAN HIEROGLYPH-13957;Lo;0;L;;;;;N;;;;; +13958;EGYPTIAN HIEROGLYPH-13958;Lo;0;L;;;;;N;;;;; +13959;EGYPTIAN HIEROGLYPH-13959;Lo;0;L;;;;;N;;;;; +1395A;EGYPTIAN HIEROGLYPH-1395A;Lo;0;L;;;;;N;;;;; +1395B;EGYPTIAN HIEROGLYPH-1395B;Lo;0;L;;;;;N;;;;; +1395C;EGYPTIAN HIEROGLYPH-1395C;Lo;0;L;;;;;N;;;;; +1395D;EGYPTIAN HIEROGLYPH-1395D;Lo;0;L;;;;;N;;;;; +1395E;EGYPTIAN HIEROGLYPH-1395E;Lo;0;L;;;;;N;;;;; +1395F;EGYPTIAN HIEROGLYPH-1395F;Lo;0;L;;;;;N;;;;; +13960;EGYPTIAN HIEROGLYPH-13960;Lo;0;L;;;;;N;;;;; +13961;EGYPTIAN HIEROGLYPH-13961;Lo;0;L;;;;;N;;;;; +13962;EGYPTIAN HIEROGLYPH-13962;Lo;0;L;;;;;N;;;;; +13963;EGYPTIAN HIEROGLYPH-13963;Lo;0;L;;;;;N;;;;; +13964;EGYPTIAN HIEROGLYPH-13964;Lo;0;L;;;;;N;;;;; +13965;EGYPTIAN HIEROGLYPH-13965;Lo;0;L;;;;;N;;;;; +13966;EGYPTIAN HIEROGLYPH-13966;Lo;0;L;;;;;N;;;;; +13967;EGYPTIAN HIEROGLYPH-13967;Lo;0;L;;;;;N;;;;; +13968;EGYPTIAN HIEROGLYPH-13968;Lo;0;L;;;;;N;;;;; +13969;EGYPTIAN HIEROGLYPH-13969;Lo;0;L;;;;;N;;;;; +1396A;EGYPTIAN HIEROGLYPH-1396A;Lo;0;L;;;;;N;;;;; +1396B;EGYPTIAN HIEROGLYPH-1396B;Lo;0;L;;;;;N;;;;; +1396C;EGYPTIAN HIEROGLYPH-1396C;Lo;0;L;;;;;N;;;;; +1396D;EGYPTIAN HIEROGLYPH-1396D;Lo;0;L;;;;;N;;;;; +1396E;EGYPTIAN HIEROGLYPH-1396E;Lo;0;L;;;;;N;;;;; +1396F;EGYPTIAN HIEROGLYPH-1396F;Lo;0;L;;;;;N;;;;; +13970;EGYPTIAN HIEROGLYPH-13970;Lo;0;L;;;;;N;;;;; +13971;EGYPTIAN HIEROGLYPH-13971;Lo;0;L;;;;;N;;;;; +13972;EGYPTIAN HIEROGLYPH-13972;Lo;0;L;;;;;N;;;;; +13973;EGYPTIAN HIEROGLYPH-13973;Lo;0;L;;;;;N;;;;; +13974;EGYPTIAN HIEROGLYPH-13974;Lo;0;L;;;;;N;;;;; +13975;EGYPTIAN HIEROGLYPH-13975;Lo;0;L;;;;;N;;;;; +13976;EGYPTIAN HIEROGLYPH-13976;Lo;0;L;;;;;N;;;;; +13977;EGYPTIAN HIEROGLYPH-13977;Lo;0;L;;;;;N;;;;; +13978;EGYPTIAN HIEROGLYPH-13978;Lo;0;L;;;;;N;;;;; +13979;EGYPTIAN HIEROGLYPH-13979;Lo;0;L;;;;;N;;;;; +1397A;EGYPTIAN HIEROGLYPH-1397A;Lo;0;L;;;;;N;;;;; +1397B;EGYPTIAN HIEROGLYPH-1397B;Lo;0;L;;;;;N;;;;; +1397C;EGYPTIAN HIEROGLYPH-1397C;Lo;0;L;;;;;N;;;;; +1397D;EGYPTIAN HIEROGLYPH-1397D;Lo;0;L;;;;;N;;;;; +1397E;EGYPTIAN HIEROGLYPH-1397E;Lo;0;L;;;;;N;;;;; +1397F;EGYPTIAN HIEROGLYPH-1397F;Lo;0;L;;;;;N;;;;; +13980;EGYPTIAN HIEROGLYPH-13980;Lo;0;L;;;;;N;;;;; +13981;EGYPTIAN HIEROGLYPH-13981;Lo;0;L;;;;;N;;;;; +13982;EGYPTIAN HIEROGLYPH-13982;Lo;0;L;;;;;N;;;;; +13983;EGYPTIAN HIEROGLYPH-13983;Lo;0;L;;;;;N;;;;; +13984;EGYPTIAN HIEROGLYPH-13984;Lo;0;L;;;;;N;;;;; +13985;EGYPTIAN HIEROGLYPH-13985;Lo;0;L;;;;;N;;;;; +13986;EGYPTIAN HIEROGLYPH-13986;Lo;0;L;;;;;N;;;;; +13987;EGYPTIAN HIEROGLYPH-13987;Lo;0;L;;;;;N;;;;; +13988;EGYPTIAN HIEROGLYPH-13988;Lo;0;L;;;;;N;;;;; +13989;EGYPTIAN HIEROGLYPH-13989;Lo;0;L;;;;;N;;;;; +1398A;EGYPTIAN HIEROGLYPH-1398A;Lo;0;L;;;;;N;;;;; +1398B;EGYPTIAN HIEROGLYPH-1398B;Lo;0;L;;;;;N;;;;; +1398C;EGYPTIAN HIEROGLYPH-1398C;Lo;0;L;;;;;N;;;;; +1398D;EGYPTIAN HIEROGLYPH-1398D;Lo;0;L;;;;;N;;;;; +1398E;EGYPTIAN HIEROGLYPH-1398E;Lo;0;L;;;;;N;;;;; +1398F;EGYPTIAN HIEROGLYPH-1398F;Lo;0;L;;;;;N;;;;; +13990;EGYPTIAN HIEROGLYPH-13990;Lo;0;L;;;;;N;;;;; +13991;EGYPTIAN HIEROGLYPH-13991;Lo;0;L;;;;;N;;;;; +13992;EGYPTIAN HIEROGLYPH-13992;Lo;0;L;;;;;N;;;;; +13993;EGYPTIAN HIEROGLYPH-13993;Lo;0;L;;;;;N;;;;; +13994;EGYPTIAN HIEROGLYPH-13994;Lo;0;L;;;;;N;;;;; +13995;EGYPTIAN HIEROGLYPH-13995;Lo;0;L;;;;;N;;;;; +13996;EGYPTIAN HIEROGLYPH-13996;Lo;0;L;;;;;N;;;;; +13997;EGYPTIAN HIEROGLYPH-13997;Lo;0;L;;;;;N;;;;; +13998;EGYPTIAN HIEROGLYPH-13998;Lo;0;L;;;;;N;;;;; +13999;EGYPTIAN HIEROGLYPH-13999;Lo;0;L;;;;;N;;;;; +1399A;EGYPTIAN HIEROGLYPH-1399A;Lo;0;L;;;;;N;;;;; +1399B;EGYPTIAN HIEROGLYPH-1399B;Lo;0;L;;;;;N;;;;; +1399C;EGYPTIAN HIEROGLYPH-1399C;Lo;0;L;;;;;N;;;;; +1399D;EGYPTIAN HIEROGLYPH-1399D;Lo;0;L;;;;;N;;;;; +1399E;EGYPTIAN HIEROGLYPH-1399E;Lo;0;L;;;;;N;;;;; +1399F;EGYPTIAN HIEROGLYPH-1399F;Lo;0;L;;;;;N;;;;; +139A0;EGYPTIAN HIEROGLYPH-139A0;Lo;0;L;;;;;N;;;;; +139A1;EGYPTIAN HIEROGLYPH-139A1;Lo;0;L;;;;;N;;;;; +139A2;EGYPTIAN HIEROGLYPH-139A2;Lo;0;L;;;;;N;;;;; +139A3;EGYPTIAN HIEROGLYPH-139A3;Lo;0;L;;;;;N;;;;; +139A4;EGYPTIAN HIEROGLYPH-139A4;Lo;0;L;;;;;N;;;;; +139A5;EGYPTIAN HIEROGLYPH-139A5;Lo;0;L;;;;;N;;;;; +139A6;EGYPTIAN HIEROGLYPH-139A6;Lo;0;L;;;;;N;;;;; +139A7;EGYPTIAN HIEROGLYPH-139A7;Lo;0;L;;;;;N;;;;; +139A8;EGYPTIAN HIEROGLYPH-139A8;Lo;0;L;;;;;N;;;;; +139A9;EGYPTIAN HIEROGLYPH-139A9;Lo;0;L;;;;;N;;;;; +139AA;EGYPTIAN HIEROGLYPH-139AA;Lo;0;L;;;;;N;;;;; +139AB;EGYPTIAN HIEROGLYPH-139AB;Lo;0;L;;;;;N;;;;; +139AC;EGYPTIAN HIEROGLYPH-139AC;Lo;0;L;;;;;N;;;;; +139AD;EGYPTIAN HIEROGLYPH-139AD;Lo;0;L;;;;;N;;;;; +139AE;EGYPTIAN HIEROGLYPH-139AE;Lo;0;L;;;;;N;;;;; +139AF;EGYPTIAN HIEROGLYPH-139AF;Lo;0;L;;;;;N;;;;; +139B0;EGYPTIAN HIEROGLYPH-139B0;Lo;0;L;;;;;N;;;;; +139B1;EGYPTIAN HIEROGLYPH-139B1;Lo;0;L;;;;;N;;;;; +139B2;EGYPTIAN HIEROGLYPH-139B2;Lo;0;L;;;;;N;;;;; +139B3;EGYPTIAN HIEROGLYPH-139B3;Lo;0;L;;;;;N;;;;; +139B4;EGYPTIAN HIEROGLYPH-139B4;Lo;0;L;;;;;N;;;;; +139B5;EGYPTIAN HIEROGLYPH-139B5;Lo;0;L;;;;;N;;;;; +139B6;EGYPTIAN HIEROGLYPH-139B6;Lo;0;L;;;;;N;;;;; +139B7;EGYPTIAN HIEROGLYPH-139B7;Lo;0;L;;;;;N;;;;; +139B8;EGYPTIAN HIEROGLYPH-139B8;Lo;0;L;;;;;N;;;;; +139B9;EGYPTIAN HIEROGLYPH-139B9;Lo;0;L;;;;;N;;;;; +139BA;EGYPTIAN HIEROGLYPH-139BA;Lo;0;L;;;;;N;;;;; +139BB;EGYPTIAN HIEROGLYPH-139BB;Lo;0;L;;;;;N;;;;; +139BC;EGYPTIAN HIEROGLYPH-139BC;Lo;0;L;;;;;N;;;;; +139BD;EGYPTIAN HIEROGLYPH-139BD;Lo;0;L;;;;;N;;;;; +139BE;EGYPTIAN HIEROGLYPH-139BE;Lo;0;L;;;;;N;;;;; +139BF;EGYPTIAN HIEROGLYPH-139BF;Lo;0;L;;;;;N;;;;; +139C0;EGYPTIAN HIEROGLYPH-139C0;Lo;0;L;;;;;N;;;;; +139C1;EGYPTIAN HIEROGLYPH-139C1;Lo;0;L;;;;;N;;;;; +139C2;EGYPTIAN HIEROGLYPH-139C2;Lo;0;L;;;;;N;;;;; +139C3;EGYPTIAN HIEROGLYPH-139C3;Lo;0;L;;;;;N;;;;; +139C4;EGYPTIAN HIEROGLYPH-139C4;Lo;0;L;;;;;N;;;;; +139C5;EGYPTIAN HIEROGLYPH-139C5;Lo;0;L;;;;;N;;;;; +139C6;EGYPTIAN HIEROGLYPH-139C6;Lo;0;L;;;;;N;;;;; +139C7;EGYPTIAN HIEROGLYPH-139C7;Lo;0;L;;;;;N;;;;; +139C8;EGYPTIAN HIEROGLYPH-139C8;Lo;0;L;;;;;N;;;;; +139C9;EGYPTIAN HIEROGLYPH-139C9;Lo;0;L;;;;;N;;;;; +139CA;EGYPTIAN HIEROGLYPH-139CA;Lo;0;L;;;;;N;;;;; +139CB;EGYPTIAN HIEROGLYPH-139CB;Lo;0;L;;;;;N;;;;; +139CC;EGYPTIAN HIEROGLYPH-139CC;Lo;0;L;;;;;N;;;;; +139CD;EGYPTIAN HIEROGLYPH-139CD;Lo;0;L;;;;;N;;;;; +139CE;EGYPTIAN HIEROGLYPH-139CE;Lo;0;L;;;;;N;;;;; +139CF;EGYPTIAN HIEROGLYPH-139CF;Lo;0;L;;;;;N;;;;; +139D0;EGYPTIAN HIEROGLYPH-139D0;Lo;0;L;;;;;N;;;;; +139D1;EGYPTIAN HIEROGLYPH-139D1;Lo;0;L;;;;;N;;;;; +139D2;EGYPTIAN HIEROGLYPH-139D2;Lo;0;L;;;;;N;;;;; +139D3;EGYPTIAN HIEROGLYPH-139D3;Lo;0;L;;;;;N;;;;; +139D4;EGYPTIAN HIEROGLYPH-139D4;Lo;0;L;;;;;N;;;;; +139D5;EGYPTIAN HIEROGLYPH-139D5;Lo;0;L;;;;;N;;;;; +139D6;EGYPTIAN HIEROGLYPH-139D6;Lo;0;L;;;;;N;;;;; +139D7;EGYPTIAN HIEROGLYPH-139D7;Lo;0;L;;;;;N;;;;; +139D8;EGYPTIAN HIEROGLYPH-139D8;Lo;0;L;;;;;N;;;;; +139D9;EGYPTIAN HIEROGLYPH-139D9;Lo;0;L;;;;;N;;;;; +139DA;EGYPTIAN HIEROGLYPH-139DA;Lo;0;L;;;;;N;;;;; +139DB;EGYPTIAN HIEROGLYPH-139DB;Lo;0;L;;;;;N;;;;; +139DC;EGYPTIAN HIEROGLYPH-139DC;Lo;0;L;;;;;N;;;;; +139DD;EGYPTIAN HIEROGLYPH-139DD;Lo;0;L;;;;;N;;;;; +139DE;EGYPTIAN HIEROGLYPH-139DE;Lo;0;L;;;;;N;;;;; +139DF;EGYPTIAN HIEROGLYPH-139DF;Lo;0;L;;;;;N;;;;; +139E0;EGYPTIAN HIEROGLYPH-139E0;Lo;0;L;;;;;N;;;;; +139E1;EGYPTIAN HIEROGLYPH-139E1;Lo;0;L;;;;;N;;;;; +139E2;EGYPTIAN HIEROGLYPH-139E2;Lo;0;L;;;;;N;;;;; +139E3;EGYPTIAN HIEROGLYPH-139E3;Lo;0;L;;;;;N;;;;; +139E4;EGYPTIAN HIEROGLYPH-139E4;Lo;0;L;;;;;N;;;;; +139E5;EGYPTIAN HIEROGLYPH-139E5;Lo;0;L;;;;;N;;;;; +139E6;EGYPTIAN HIEROGLYPH-139E6;Lo;0;L;;;;;N;;;;; +139E7;EGYPTIAN HIEROGLYPH-139E7;Lo;0;L;;;;;N;;;;; +139E8;EGYPTIAN HIEROGLYPH-139E8;Lo;0;L;;;;;N;;;;; +139E9;EGYPTIAN HIEROGLYPH-139E9;Lo;0;L;;;;;N;;;;; +139EA;EGYPTIAN HIEROGLYPH-139EA;Lo;0;L;;;;;N;;;;; +139EB;EGYPTIAN HIEROGLYPH-139EB;Lo;0;L;;;;;N;;;;; +139EC;EGYPTIAN HIEROGLYPH-139EC;Lo;0;L;;;;;N;;;;; +139ED;EGYPTIAN HIEROGLYPH-139ED;Lo;0;L;;;;;N;;;;; +139EE;EGYPTIAN HIEROGLYPH-139EE;Lo;0;L;;;;;N;;;;; +139EF;EGYPTIAN HIEROGLYPH-139EF;Lo;0;L;;;;;N;;;;; +139F0;EGYPTIAN HIEROGLYPH-139F0;Lo;0;L;;;;;N;;;;; +139F1;EGYPTIAN HIEROGLYPH-139F1;Lo;0;L;;;;;N;;;;; +139F2;EGYPTIAN HIEROGLYPH-139F2;Lo;0;L;;;;;N;;;;; +139F3;EGYPTIAN HIEROGLYPH-139F3;Lo;0;L;;;;;N;;;;; +139F4;EGYPTIAN HIEROGLYPH-139F4;Lo;0;L;;;;;N;;;;; +139F5;EGYPTIAN HIEROGLYPH-139F5;Lo;0;L;;;;;N;;;;; +139F6;EGYPTIAN HIEROGLYPH-139F6;Lo;0;L;;;;;N;;;;; +139F7;EGYPTIAN HIEROGLYPH-139F7;Lo;0;L;;;;;N;;;;; +139F8;EGYPTIAN HIEROGLYPH-139F8;Lo;0;L;;;;;N;;;;; +139F9;EGYPTIAN HIEROGLYPH-139F9;Lo;0;L;;;;;N;;;;; +139FA;EGYPTIAN HIEROGLYPH-139FA;Lo;0;L;;;;;N;;;;; +139FB;EGYPTIAN HIEROGLYPH-139FB;Lo;0;L;;;;;N;;;;; +139FC;EGYPTIAN HIEROGLYPH-139FC;Lo;0;L;;;;;N;;;;; +139FD;EGYPTIAN HIEROGLYPH-139FD;Lo;0;L;;;;;N;;;;; +139FE;EGYPTIAN HIEROGLYPH-139FE;Lo;0;L;;;;;N;;;;; +139FF;EGYPTIAN HIEROGLYPH-139FF;Lo;0;L;;;;;N;;;;; +13A00;EGYPTIAN HIEROGLYPH-13A00;Lo;0;L;;;;;N;;;;; +13A01;EGYPTIAN HIEROGLYPH-13A01;Lo;0;L;;;;;N;;;;; +13A02;EGYPTIAN HIEROGLYPH-13A02;Lo;0;L;;;;;N;;;;; +13A03;EGYPTIAN HIEROGLYPH-13A03;Lo;0;L;;;;;N;;;;; +13A04;EGYPTIAN HIEROGLYPH-13A04;Lo;0;L;;;;;N;;;;; +13A05;EGYPTIAN HIEROGLYPH-13A05;Lo;0;L;;;;;N;;;;; +13A06;EGYPTIAN HIEROGLYPH-13A06;Lo;0;L;;;;;N;;;;; +13A07;EGYPTIAN HIEROGLYPH-13A07;Lo;0;L;;;;;N;;;;; +13A08;EGYPTIAN HIEROGLYPH-13A08;Lo;0;L;;;;;N;;;;; +13A09;EGYPTIAN HIEROGLYPH-13A09;Lo;0;L;;;;;N;;;;; +13A0A;EGYPTIAN HIEROGLYPH-13A0A;Lo;0;L;;;;;N;;;;; +13A0B;EGYPTIAN HIEROGLYPH-13A0B;Lo;0;L;;;;;N;;;;; +13A0C;EGYPTIAN HIEROGLYPH-13A0C;Lo;0;L;;;;;N;;;;; +13A0D;EGYPTIAN HIEROGLYPH-13A0D;Lo;0;L;;;;;N;;;;; +13A0E;EGYPTIAN HIEROGLYPH-13A0E;Lo;0;L;;;;;N;;;;; +13A0F;EGYPTIAN HIEROGLYPH-13A0F;Lo;0;L;;;;;N;;;;; +13A10;EGYPTIAN HIEROGLYPH-13A10;Lo;0;L;;;;;N;;;;; +13A11;EGYPTIAN HIEROGLYPH-13A11;Lo;0;L;;;;;N;;;;; +13A12;EGYPTIAN HIEROGLYPH-13A12;Lo;0;L;;;;;N;;;;; +13A13;EGYPTIAN HIEROGLYPH-13A13;Lo;0;L;;;;;N;;;;; +13A14;EGYPTIAN HIEROGLYPH-13A14;Lo;0;L;;;;;N;;;;; +13A15;EGYPTIAN HIEROGLYPH-13A15;Lo;0;L;;;;;N;;;;; +13A16;EGYPTIAN HIEROGLYPH-13A16;Lo;0;L;;;;;N;;;;; +13A17;EGYPTIAN HIEROGLYPH-13A17;Lo;0;L;;;;;N;;;;; +13A18;EGYPTIAN HIEROGLYPH-13A18;Lo;0;L;;;;;N;;;;; +13A19;EGYPTIAN HIEROGLYPH-13A19;Lo;0;L;;;;;N;;;;; +13A1A;EGYPTIAN HIEROGLYPH-13A1A;Lo;0;L;;;;;N;;;;; +13A1B;EGYPTIAN HIEROGLYPH-13A1B;Lo;0;L;;;;;N;;;;; +13A1C;EGYPTIAN HIEROGLYPH-13A1C;Lo;0;L;;;;;N;;;;; +13A1D;EGYPTIAN HIEROGLYPH-13A1D;Lo;0;L;;;;;N;;;;; +13A1E;EGYPTIAN HIEROGLYPH-13A1E;Lo;0;L;;;;;N;;;;; +13A1F;EGYPTIAN HIEROGLYPH-13A1F;Lo;0;L;;;;;N;;;;; +13A20;EGYPTIAN HIEROGLYPH-13A20;Lo;0;L;;;;;N;;;;; +13A21;EGYPTIAN HIEROGLYPH-13A21;Lo;0;L;;;;;N;;;;; +13A22;EGYPTIAN HIEROGLYPH-13A22;Lo;0;L;;;;;N;;;;; +13A23;EGYPTIAN HIEROGLYPH-13A23;Lo;0;L;;;;;N;;;;; +13A24;EGYPTIAN HIEROGLYPH-13A24;Lo;0;L;;;;;N;;;;; +13A25;EGYPTIAN HIEROGLYPH-13A25;Lo;0;L;;;;;N;;;;; +13A26;EGYPTIAN HIEROGLYPH-13A26;Lo;0;L;;;;;N;;;;; +13A27;EGYPTIAN HIEROGLYPH-13A27;Lo;0;L;;;;;N;;;;; +13A28;EGYPTIAN HIEROGLYPH-13A28;Lo;0;L;;;;;N;;;;; +13A29;EGYPTIAN HIEROGLYPH-13A29;Lo;0;L;;;;;N;;;;; +13A2A;EGYPTIAN HIEROGLYPH-13A2A;Lo;0;L;;;;;N;;;;; +13A2B;EGYPTIAN HIEROGLYPH-13A2B;Lo;0;L;;;;;N;;;;; +13A2C;EGYPTIAN HIEROGLYPH-13A2C;Lo;0;L;;;;;N;;;;; +13A2D;EGYPTIAN HIEROGLYPH-13A2D;Lo;0;L;;;;;N;;;;; +13A2E;EGYPTIAN HIEROGLYPH-13A2E;Lo;0;L;;;;;N;;;;; +13A2F;EGYPTIAN HIEROGLYPH-13A2F;Lo;0;L;;;;;N;;;;; +13A30;EGYPTIAN HIEROGLYPH-13A30;Lo;0;L;;;;;N;;;;; +13A31;EGYPTIAN HIEROGLYPH-13A31;Lo;0;L;;;;;N;;;;; +13A32;EGYPTIAN HIEROGLYPH-13A32;Lo;0;L;;;;;N;;;;; +13A33;EGYPTIAN HIEROGLYPH-13A33;Lo;0;L;;;;;N;;;;; +13A34;EGYPTIAN HIEROGLYPH-13A34;Lo;0;L;;;;;N;;;;; +13A35;EGYPTIAN HIEROGLYPH-13A35;Lo;0;L;;;;;N;;;;; +13A36;EGYPTIAN HIEROGLYPH-13A36;Lo;0;L;;;;;N;;;;; +13A37;EGYPTIAN HIEROGLYPH-13A37;Lo;0;L;;;;;N;;;;; +13A38;EGYPTIAN HIEROGLYPH-13A38;Lo;0;L;;;;;N;;;;; +13A39;EGYPTIAN HIEROGLYPH-13A39;Lo;0;L;;;;;N;;;;; +13A3A;EGYPTIAN HIEROGLYPH-13A3A;Lo;0;L;;;;;N;;;;; +13A3B;EGYPTIAN HIEROGLYPH-13A3B;Lo;0;L;;;;;N;;;;; +13A3C;EGYPTIAN HIEROGLYPH-13A3C;Lo;0;L;;;;;N;;;;; +13A3D;EGYPTIAN HIEROGLYPH-13A3D;Lo;0;L;;;;;N;;;;; +13A3E;EGYPTIAN HIEROGLYPH-13A3E;Lo;0;L;;;;;N;;;;; +13A3F;EGYPTIAN HIEROGLYPH-13A3F;Lo;0;L;;;;;N;;;;; +13A40;EGYPTIAN HIEROGLYPH-13A40;Lo;0;L;;;;;N;;;;; +13A41;EGYPTIAN HIEROGLYPH-13A41;Lo;0;L;;;;;N;;;;; +13A42;EGYPTIAN HIEROGLYPH-13A42;Lo;0;L;;;;;N;;;;; +13A43;EGYPTIAN HIEROGLYPH-13A43;Lo;0;L;;;;;N;;;;; +13A44;EGYPTIAN HIEROGLYPH-13A44;Lo;0;L;;;;;N;;;;; +13A45;EGYPTIAN HIEROGLYPH-13A45;Lo;0;L;;;;;N;;;;; +13A46;EGYPTIAN HIEROGLYPH-13A46;Lo;0;L;;;;;N;;;;; +13A47;EGYPTIAN HIEROGLYPH-13A47;Lo;0;L;;;;;N;;;;; +13A48;EGYPTIAN HIEROGLYPH-13A48;Lo;0;L;;;;;N;;;;; +13A49;EGYPTIAN HIEROGLYPH-13A49;Lo;0;L;;;;;N;;;;; +13A4A;EGYPTIAN HIEROGLYPH-13A4A;Lo;0;L;;;;;N;;;;; +13A4B;EGYPTIAN HIEROGLYPH-13A4B;Lo;0;L;;;;;N;;;;; +13A4C;EGYPTIAN HIEROGLYPH-13A4C;Lo;0;L;;;;;N;;;;; +13A4D;EGYPTIAN HIEROGLYPH-13A4D;Lo;0;L;;;;;N;;;;; +13A4E;EGYPTIAN HIEROGLYPH-13A4E;Lo;0;L;;;;;N;;;;; +13A4F;EGYPTIAN HIEROGLYPH-13A4F;Lo;0;L;;;;;N;;;;; +13A50;EGYPTIAN HIEROGLYPH-13A50;Lo;0;L;;;;;N;;;;; +13A51;EGYPTIAN HIEROGLYPH-13A51;Lo;0;L;;;;;N;;;;; +13A52;EGYPTIAN HIEROGLYPH-13A52;Lo;0;L;;;;;N;;;;; +13A53;EGYPTIAN HIEROGLYPH-13A53;Lo;0;L;;;;;N;;;;; +13A54;EGYPTIAN HIEROGLYPH-13A54;Lo;0;L;;;;;N;;;;; +13A55;EGYPTIAN HIEROGLYPH-13A55;Lo;0;L;;;;;N;;;;; +13A56;EGYPTIAN HIEROGLYPH-13A56;Lo;0;L;;;;;N;;;;; +13A57;EGYPTIAN HIEROGLYPH-13A57;Lo;0;L;;;;;N;;;;; +13A58;EGYPTIAN HIEROGLYPH-13A58;Lo;0;L;;;;;N;;;;; +13A59;EGYPTIAN HIEROGLYPH-13A59;Lo;0;L;;;;;N;;;;; +13A5A;EGYPTIAN HIEROGLYPH-13A5A;Lo;0;L;;;;;N;;;;; +13A5B;EGYPTIAN HIEROGLYPH-13A5B;Lo;0;L;;;;;N;;;;; +13A5C;EGYPTIAN HIEROGLYPH-13A5C;Lo;0;L;;;;;N;;;;; +13A5D;EGYPTIAN HIEROGLYPH-13A5D;Lo;0;L;;;;;N;;;;; +13A5E;EGYPTIAN HIEROGLYPH-13A5E;Lo;0;L;;;;;N;;;;; +13A5F;EGYPTIAN HIEROGLYPH-13A5F;Lo;0;L;;;;;N;;;;; +13A60;EGYPTIAN HIEROGLYPH-13A60;Lo;0;L;;;;;N;;;;; +13A61;EGYPTIAN HIEROGLYPH-13A61;Lo;0;L;;;;;N;;;;; +13A62;EGYPTIAN HIEROGLYPH-13A62;Lo;0;L;;;;;N;;;;; +13A63;EGYPTIAN HIEROGLYPH-13A63;Lo;0;L;;;;;N;;;;; +13A64;EGYPTIAN HIEROGLYPH-13A64;Lo;0;L;;;;;N;;;;; +13A65;EGYPTIAN HIEROGLYPH-13A65;Lo;0;L;;;;;N;;;;; +13A66;EGYPTIAN HIEROGLYPH-13A66;Lo;0;L;;;;;N;;;;; +13A67;EGYPTIAN HIEROGLYPH-13A67;Lo;0;L;;;;;N;;;;; +13A68;EGYPTIAN HIEROGLYPH-13A68;Lo;0;L;;;;;N;;;;; +13A69;EGYPTIAN HIEROGLYPH-13A69;Lo;0;L;;;;;N;;;;; +13A6A;EGYPTIAN HIEROGLYPH-13A6A;Lo;0;L;;;;;N;;;;; +13A6B;EGYPTIAN HIEROGLYPH-13A6B;Lo;0;L;;;;;N;;;;; +13A6C;EGYPTIAN HIEROGLYPH-13A6C;Lo;0;L;;;;;N;;;;; +13A6D;EGYPTIAN HIEROGLYPH-13A6D;Lo;0;L;;;;;N;;;;; +13A6E;EGYPTIAN HIEROGLYPH-13A6E;Lo;0;L;;;;;N;;;;; +13A6F;EGYPTIAN HIEROGLYPH-13A6F;Lo;0;L;;;;;N;;;;; +13A70;EGYPTIAN HIEROGLYPH-13A70;Lo;0;L;;;;;N;;;;; +13A71;EGYPTIAN HIEROGLYPH-13A71;Lo;0;L;;;;;N;;;;; +13A72;EGYPTIAN HIEROGLYPH-13A72;Lo;0;L;;;;;N;;;;; +13A73;EGYPTIAN HIEROGLYPH-13A73;Lo;0;L;;;;;N;;;;; +13A74;EGYPTIAN HIEROGLYPH-13A74;Lo;0;L;;;;;N;;;;; +13A75;EGYPTIAN HIEROGLYPH-13A75;Lo;0;L;;;;;N;;;;; +13A76;EGYPTIAN HIEROGLYPH-13A76;Lo;0;L;;;;;N;;;;; +13A77;EGYPTIAN HIEROGLYPH-13A77;Lo;0;L;;;;;N;;;;; +13A78;EGYPTIAN HIEROGLYPH-13A78;Lo;0;L;;;;;N;;;;; +13A79;EGYPTIAN HIEROGLYPH-13A79;Lo;0;L;;;;;N;;;;; +13A7A;EGYPTIAN HIEROGLYPH-13A7A;Lo;0;L;;;;;N;;;;; +13A7B;EGYPTIAN HIEROGLYPH-13A7B;Lo;0;L;;;;;N;;;;; +13A7C;EGYPTIAN HIEROGLYPH-13A7C;Lo;0;L;;;;;N;;;;; +13A7D;EGYPTIAN HIEROGLYPH-13A7D;Lo;0;L;;;;;N;;;;; +13A7E;EGYPTIAN HIEROGLYPH-13A7E;Lo;0;L;;;;;N;;;;; +13A7F;EGYPTIAN HIEROGLYPH-13A7F;Lo;0;L;;;;;N;;;;; +13A80;EGYPTIAN HIEROGLYPH-13A80;Lo;0;L;;;;;N;;;;; +13A81;EGYPTIAN HIEROGLYPH-13A81;Lo;0;L;;;;;N;;;;; +13A82;EGYPTIAN HIEROGLYPH-13A82;Lo;0;L;;;;;N;;;;; +13A83;EGYPTIAN HIEROGLYPH-13A83;Lo;0;L;;;;;N;;;;; +13A84;EGYPTIAN HIEROGLYPH-13A84;Lo;0;L;;;;;N;;;;; +13A85;EGYPTIAN HIEROGLYPH-13A85;Lo;0;L;;;;;N;;;;; +13A86;EGYPTIAN HIEROGLYPH-13A86;Lo;0;L;;;;;N;;;;; +13A87;EGYPTIAN HIEROGLYPH-13A87;Lo;0;L;;;;;N;;;;; +13A88;EGYPTIAN HIEROGLYPH-13A88;Lo;0;L;;;;;N;;;;; +13A89;EGYPTIAN HIEROGLYPH-13A89;Lo;0;L;;;;;N;;;;; +13A8A;EGYPTIAN HIEROGLYPH-13A8A;Lo;0;L;;;;;N;;;;; +13A8B;EGYPTIAN HIEROGLYPH-13A8B;Lo;0;L;;;;;N;;;;; +13A8C;EGYPTIAN HIEROGLYPH-13A8C;Lo;0;L;;;;;N;;;;; +13A8D;EGYPTIAN HIEROGLYPH-13A8D;Lo;0;L;;;;;N;;;;; +13A8E;EGYPTIAN HIEROGLYPH-13A8E;Lo;0;L;;;;;N;;;;; +13A8F;EGYPTIAN HIEROGLYPH-13A8F;Lo;0;L;;;;;N;;;;; +13A90;EGYPTIAN HIEROGLYPH-13A90;Lo;0;L;;;;;N;;;;; +13A91;EGYPTIAN HIEROGLYPH-13A91;Lo;0;L;;;;;N;;;;; +13A92;EGYPTIAN HIEROGLYPH-13A92;Lo;0;L;;;;;N;;;;; +13A93;EGYPTIAN HIEROGLYPH-13A93;Lo;0;L;;;;;N;;;;; +13A94;EGYPTIAN HIEROGLYPH-13A94;Lo;0;L;;;;;N;;;;; +13A95;EGYPTIAN HIEROGLYPH-13A95;Lo;0;L;;;;;N;;;;; +13A96;EGYPTIAN HIEROGLYPH-13A96;Lo;0;L;;;;;N;;;;; +13A97;EGYPTIAN HIEROGLYPH-13A97;Lo;0;L;;;;;N;;;;; +13A98;EGYPTIAN HIEROGLYPH-13A98;Lo;0;L;;;;;N;;;;; +13A99;EGYPTIAN HIEROGLYPH-13A99;Lo;0;L;;;;;N;;;;; +13A9A;EGYPTIAN HIEROGLYPH-13A9A;Lo;0;L;;;;;N;;;;; +13A9B;EGYPTIAN HIEROGLYPH-13A9B;Lo;0;L;;;;;N;;;;; +13A9C;EGYPTIAN HIEROGLYPH-13A9C;Lo;0;L;;;;;N;;;;; +13A9D;EGYPTIAN HIEROGLYPH-13A9D;Lo;0;L;;;;;N;;;;; +13A9E;EGYPTIAN HIEROGLYPH-13A9E;Lo;0;L;;;;;N;;;;; +13A9F;EGYPTIAN HIEROGLYPH-13A9F;Lo;0;L;;;;;N;;;;; +13AA0;EGYPTIAN HIEROGLYPH-13AA0;Lo;0;L;;;;;N;;;;; +13AA1;EGYPTIAN HIEROGLYPH-13AA1;Lo;0;L;;;;;N;;;;; +13AA2;EGYPTIAN HIEROGLYPH-13AA2;Lo;0;L;;;;;N;;;;; +13AA3;EGYPTIAN HIEROGLYPH-13AA3;Lo;0;L;;;;;N;;;;; +13AA4;EGYPTIAN HIEROGLYPH-13AA4;Lo;0;L;;;;;N;;;;; +13AA5;EGYPTIAN HIEROGLYPH-13AA5;Lo;0;L;;;;;N;;;;; +13AA6;EGYPTIAN HIEROGLYPH-13AA6;Lo;0;L;;;;;N;;;;; +13AA7;EGYPTIAN HIEROGLYPH-13AA7;Lo;0;L;;;;;N;;;;; +13AA8;EGYPTIAN HIEROGLYPH-13AA8;Lo;0;L;;;;;N;;;;; +13AA9;EGYPTIAN HIEROGLYPH-13AA9;Lo;0;L;;;;;N;;;;; +13AAA;EGYPTIAN HIEROGLYPH-13AAA;Lo;0;L;;;;;N;;;;; +13AAB;EGYPTIAN HIEROGLYPH-13AAB;Lo;0;L;;;;;N;;;;; +13AAC;EGYPTIAN HIEROGLYPH-13AAC;Lo;0;L;;;;;N;;;;; +13AAD;EGYPTIAN HIEROGLYPH-13AAD;Lo;0;L;;;;;N;;;;; +13AAE;EGYPTIAN HIEROGLYPH-13AAE;Lo;0;L;;;;;N;;;;; +13AAF;EGYPTIAN HIEROGLYPH-13AAF;Lo;0;L;;;;;N;;;;; +13AB0;EGYPTIAN HIEROGLYPH-13AB0;Lo;0;L;;;;;N;;;;; +13AB1;EGYPTIAN HIEROGLYPH-13AB1;Lo;0;L;;;;;N;;;;; +13AB2;EGYPTIAN HIEROGLYPH-13AB2;Lo;0;L;;;;;N;;;;; +13AB3;EGYPTIAN HIEROGLYPH-13AB3;Lo;0;L;;;;;N;;;;; +13AB4;EGYPTIAN HIEROGLYPH-13AB4;Lo;0;L;;;;;N;;;;; +13AB5;EGYPTIAN HIEROGLYPH-13AB5;Lo;0;L;;;;;N;;;;; +13AB6;EGYPTIAN HIEROGLYPH-13AB6;Lo;0;L;;;;;N;;;;; +13AB7;EGYPTIAN HIEROGLYPH-13AB7;Lo;0;L;;;;;N;;;;; +13AB8;EGYPTIAN HIEROGLYPH-13AB8;Lo;0;L;;;;;N;;;;; +13AB9;EGYPTIAN HIEROGLYPH-13AB9;Lo;0;L;;;;;N;;;;; +13ABA;EGYPTIAN HIEROGLYPH-13ABA;Lo;0;L;;;;;N;;;;; +13ABB;EGYPTIAN HIEROGLYPH-13ABB;Lo;0;L;;;;;N;;;;; +13ABC;EGYPTIAN HIEROGLYPH-13ABC;Lo;0;L;;;;;N;;;;; +13ABD;EGYPTIAN HIEROGLYPH-13ABD;Lo;0;L;;;;;N;;;;; +13ABE;EGYPTIAN HIEROGLYPH-13ABE;Lo;0;L;;;;;N;;;;; +13ABF;EGYPTIAN HIEROGLYPH-13ABF;Lo;0;L;;;;;N;;;;; +13AC0;EGYPTIAN HIEROGLYPH-13AC0;Lo;0;L;;;;;N;;;;; +13AC1;EGYPTIAN HIEROGLYPH-13AC1;Lo;0;L;;;;;N;;;;; +13AC2;EGYPTIAN HIEROGLYPH-13AC2;Lo;0;L;;;;;N;;;;; +13AC3;EGYPTIAN HIEROGLYPH-13AC3;Lo;0;L;;;;;N;;;;; +13AC4;EGYPTIAN HIEROGLYPH-13AC4;Lo;0;L;;;;;N;;;;; +13AC5;EGYPTIAN HIEROGLYPH-13AC5;Lo;0;L;;;;;N;;;;; +13AC6;EGYPTIAN HIEROGLYPH-13AC6;Lo;0;L;;;;;N;;;;; +13AC7;EGYPTIAN HIEROGLYPH-13AC7;Lo;0;L;;;;;N;;;;; +13AC8;EGYPTIAN HIEROGLYPH-13AC8;Lo;0;L;;;;;N;;;;; +13AC9;EGYPTIAN HIEROGLYPH-13AC9;Lo;0;L;;;;;N;;;;; +13ACA;EGYPTIAN HIEROGLYPH-13ACA;Lo;0;L;;;;;N;;;;; +13ACB;EGYPTIAN HIEROGLYPH-13ACB;Lo;0;L;;;;;N;;;;; +13ACC;EGYPTIAN HIEROGLYPH-13ACC;Lo;0;L;;;;;N;;;;; +13ACD;EGYPTIAN HIEROGLYPH-13ACD;Lo;0;L;;;;;N;;;;; +13ACE;EGYPTIAN HIEROGLYPH-13ACE;Lo;0;L;;;;;N;;;;; +13ACF;EGYPTIAN HIEROGLYPH-13ACF;Lo;0;L;;;;;N;;;;; +13AD0;EGYPTIAN HIEROGLYPH-13AD0;Lo;0;L;;;;;N;;;;; +13AD1;EGYPTIAN HIEROGLYPH-13AD1;Lo;0;L;;;;;N;;;;; +13AD2;EGYPTIAN HIEROGLYPH-13AD2;Lo;0;L;;;;;N;;;;; +13AD3;EGYPTIAN HIEROGLYPH-13AD3;Lo;0;L;;;;;N;;;;; +13AD4;EGYPTIAN HIEROGLYPH-13AD4;Lo;0;L;;;;;N;;;;; +13AD5;EGYPTIAN HIEROGLYPH-13AD5;Lo;0;L;;;;;N;;;;; +13AD6;EGYPTIAN HIEROGLYPH-13AD6;Lo;0;L;;;;;N;;;;; +13AD7;EGYPTIAN HIEROGLYPH-13AD7;Lo;0;L;;;;;N;;;;; +13AD8;EGYPTIAN HIEROGLYPH-13AD8;Lo;0;L;;;;;N;;;;; +13AD9;EGYPTIAN HIEROGLYPH-13AD9;Lo;0;L;;;;;N;;;;; +13ADA;EGYPTIAN HIEROGLYPH-13ADA;Lo;0;L;;;;;N;;;;; +13ADB;EGYPTIAN HIEROGLYPH-13ADB;Lo;0;L;;;;;N;;;;; +13ADC;EGYPTIAN HIEROGLYPH-13ADC;Lo;0;L;;;;;N;;;;; +13ADD;EGYPTIAN HIEROGLYPH-13ADD;Lo;0;L;;;;;N;;;;; +13ADE;EGYPTIAN HIEROGLYPH-13ADE;Lo;0;L;;;;;N;;;;; +13ADF;EGYPTIAN HIEROGLYPH-13ADF;Lo;0;L;;;;;N;;;;; +13AE0;EGYPTIAN HIEROGLYPH-13AE0;Lo;0;L;;;;;N;;;;; +13AE1;EGYPTIAN HIEROGLYPH-13AE1;Lo;0;L;;;;;N;;;;; +13AE2;EGYPTIAN HIEROGLYPH-13AE2;Lo;0;L;;;;;N;;;;; +13AE3;EGYPTIAN HIEROGLYPH-13AE3;Lo;0;L;;;;;N;;;;; +13AE4;EGYPTIAN HIEROGLYPH-13AE4;Lo;0;L;;;;;N;;;;; +13AE5;EGYPTIAN HIEROGLYPH-13AE5;Lo;0;L;;;;;N;;;;; +13AE6;EGYPTIAN HIEROGLYPH-13AE6;Lo;0;L;;;;;N;;;;; +13AE7;EGYPTIAN HIEROGLYPH-13AE7;Lo;0;L;;;;;N;;;;; +13AE8;EGYPTIAN HIEROGLYPH-13AE8;Lo;0;L;;;;;N;;;;; +13AE9;EGYPTIAN HIEROGLYPH-13AE9;Lo;0;L;;;;;N;;;;; +13AEA;EGYPTIAN HIEROGLYPH-13AEA;Lo;0;L;;;;;N;;;;; +13AEB;EGYPTIAN HIEROGLYPH-13AEB;Lo;0;L;;;;;N;;;;; +13AEC;EGYPTIAN HIEROGLYPH-13AEC;Lo;0;L;;;;;N;;;;; +13AED;EGYPTIAN HIEROGLYPH-13AED;Lo;0;L;;;;;N;;;;; +13AEE;EGYPTIAN HIEROGLYPH-13AEE;Lo;0;L;;;;;N;;;;; +13AEF;EGYPTIAN HIEROGLYPH-13AEF;Lo;0;L;;;;;N;;;;; +13AF0;EGYPTIAN HIEROGLYPH-13AF0;Lo;0;L;;;;;N;;;;; +13AF1;EGYPTIAN HIEROGLYPH-13AF1;Lo;0;L;;;;;N;;;;; +13AF2;EGYPTIAN HIEROGLYPH-13AF2;Lo;0;L;;;;;N;;;;; +13AF3;EGYPTIAN HIEROGLYPH-13AF3;Lo;0;L;;;;;N;;;;; +13AF4;EGYPTIAN HIEROGLYPH-13AF4;Lo;0;L;;;;;N;;;;; +13AF5;EGYPTIAN HIEROGLYPH-13AF5;Lo;0;L;;;;;N;;;;; +13AF6;EGYPTIAN HIEROGLYPH-13AF6;Lo;0;L;;;;;N;;;;; +13AF7;EGYPTIAN HIEROGLYPH-13AF7;Lo;0;L;;;;;N;;;;; +13AF8;EGYPTIAN HIEROGLYPH-13AF8;Lo;0;L;;;;;N;;;;; +13AF9;EGYPTIAN HIEROGLYPH-13AF9;Lo;0;L;;;;;N;;;;; +13AFA;EGYPTIAN HIEROGLYPH-13AFA;Lo;0;L;;;;;N;;;;; +13AFB;EGYPTIAN HIEROGLYPH-13AFB;Lo;0;L;;;;;N;;;;; +13AFC;EGYPTIAN HIEROGLYPH-13AFC;Lo;0;L;;;;;N;;;;; +13AFD;EGYPTIAN HIEROGLYPH-13AFD;Lo;0;L;;;;;N;;;;; +13AFE;EGYPTIAN HIEROGLYPH-13AFE;Lo;0;L;;;;;N;;;;; +13AFF;EGYPTIAN HIEROGLYPH-13AFF;Lo;0;L;;;;;N;;;;; +13B00;EGYPTIAN HIEROGLYPH-13B00;Lo;0;L;;;;;N;;;;; +13B01;EGYPTIAN HIEROGLYPH-13B01;Lo;0;L;;;;;N;;;;; +13B02;EGYPTIAN HIEROGLYPH-13B02;Lo;0;L;;;;;N;;;;; +13B03;EGYPTIAN HIEROGLYPH-13B03;Lo;0;L;;;;;N;;;;; +13B04;EGYPTIAN HIEROGLYPH-13B04;Lo;0;L;;;;;N;;;;; +13B05;EGYPTIAN HIEROGLYPH-13B05;Lo;0;L;;;;;N;;;;; +13B06;EGYPTIAN HIEROGLYPH-13B06;Lo;0;L;;;;;N;;;;; +13B07;EGYPTIAN HIEROGLYPH-13B07;Lo;0;L;;;;;N;;;;; +13B08;EGYPTIAN HIEROGLYPH-13B08;Lo;0;L;;;;;N;;;;; +13B09;EGYPTIAN HIEROGLYPH-13B09;Lo;0;L;;;;;N;;;;; +13B0A;EGYPTIAN HIEROGLYPH-13B0A;Lo;0;L;;;;;N;;;;; +13B0B;EGYPTIAN HIEROGLYPH-13B0B;Lo;0;L;;;;;N;;;;; +13B0C;EGYPTIAN HIEROGLYPH-13B0C;Lo;0;L;;;;;N;;;;; +13B0D;EGYPTIAN HIEROGLYPH-13B0D;Lo;0;L;;;;;N;;;;; +13B0E;EGYPTIAN HIEROGLYPH-13B0E;Lo;0;L;;;;;N;;;;; +13B0F;EGYPTIAN HIEROGLYPH-13B0F;Lo;0;L;;;;;N;;;;; +13B10;EGYPTIAN HIEROGLYPH-13B10;Lo;0;L;;;;;N;;;;; +13B11;EGYPTIAN HIEROGLYPH-13B11;Lo;0;L;;;;;N;;;;; +13B12;EGYPTIAN HIEROGLYPH-13B12;Lo;0;L;;;;;N;;;;; +13B13;EGYPTIAN HIEROGLYPH-13B13;Lo;0;L;;;;;N;;;;; +13B14;EGYPTIAN HIEROGLYPH-13B14;Lo;0;L;;;;;N;;;;; +13B15;EGYPTIAN HIEROGLYPH-13B15;Lo;0;L;;;;;N;;;;; +13B16;EGYPTIAN HIEROGLYPH-13B16;Lo;0;L;;;;;N;;;;; +13B17;EGYPTIAN HIEROGLYPH-13B17;Lo;0;L;;;;;N;;;;; +13B18;EGYPTIAN HIEROGLYPH-13B18;Lo;0;L;;;;;N;;;;; +13B19;EGYPTIAN HIEROGLYPH-13B19;Lo;0;L;;;;;N;;;;; +13B1A;EGYPTIAN HIEROGLYPH-13B1A;Lo;0;L;;;;;N;;;;; +13B1B;EGYPTIAN HIEROGLYPH-13B1B;Lo;0;L;;;;;N;;;;; +13B1C;EGYPTIAN HIEROGLYPH-13B1C;Lo;0;L;;;;;N;;;;; +13B1D;EGYPTIAN HIEROGLYPH-13B1D;Lo;0;L;;;;;N;;;;; +13B1E;EGYPTIAN HIEROGLYPH-13B1E;Lo;0;L;;;;;N;;;;; +13B1F;EGYPTIAN HIEROGLYPH-13B1F;Lo;0;L;;;;;N;;;;; +13B20;EGYPTIAN HIEROGLYPH-13B20;Lo;0;L;;;;;N;;;;; +13B21;EGYPTIAN HIEROGLYPH-13B21;Lo;0;L;;;;;N;;;;; +13B22;EGYPTIAN HIEROGLYPH-13B22;Lo;0;L;;;;;N;;;;; +13B23;EGYPTIAN HIEROGLYPH-13B23;Lo;0;L;;;;;N;;;;; +13B24;EGYPTIAN HIEROGLYPH-13B24;Lo;0;L;;;;;N;;;;; +13B25;EGYPTIAN HIEROGLYPH-13B25;Lo;0;L;;;;;N;;;;; +13B26;EGYPTIAN HIEROGLYPH-13B26;Lo;0;L;;;;;N;;;;; +13B27;EGYPTIAN HIEROGLYPH-13B27;Lo;0;L;;;;;N;;;;; +13B28;EGYPTIAN HIEROGLYPH-13B28;Lo;0;L;;;;;N;;;;; +13B29;EGYPTIAN HIEROGLYPH-13B29;Lo;0;L;;;;;N;;;;; +13B2A;EGYPTIAN HIEROGLYPH-13B2A;Lo;0;L;;;;;N;;;;; +13B2B;EGYPTIAN HIEROGLYPH-13B2B;Lo;0;L;;;;;N;;;;; +13B2C;EGYPTIAN HIEROGLYPH-13B2C;Lo;0;L;;;;;N;;;;; +13B2D;EGYPTIAN HIEROGLYPH-13B2D;Lo;0;L;;;;;N;;;;; +13B2E;EGYPTIAN HIEROGLYPH-13B2E;Lo;0;L;;;;;N;;;;; +13B2F;EGYPTIAN HIEROGLYPH-13B2F;Lo;0;L;;;;;N;;;;; +13B30;EGYPTIAN HIEROGLYPH-13B30;Lo;0;L;;;;;N;;;;; +13B31;EGYPTIAN HIEROGLYPH-13B31;Lo;0;L;;;;;N;;;;; +13B32;EGYPTIAN HIEROGLYPH-13B32;Lo;0;L;;;;;N;;;;; +13B33;EGYPTIAN HIEROGLYPH-13B33;Lo;0;L;;;;;N;;;;; +13B34;EGYPTIAN HIEROGLYPH-13B34;Lo;0;L;;;;;N;;;;; +13B35;EGYPTIAN HIEROGLYPH-13B35;Lo;0;L;;;;;N;;;;; +13B36;EGYPTIAN HIEROGLYPH-13B36;Lo;0;L;;;;;N;;;;; +13B37;EGYPTIAN HIEROGLYPH-13B37;Lo;0;L;;;;;N;;;;; +13B38;EGYPTIAN HIEROGLYPH-13B38;Lo;0;L;;;;;N;;;;; +13B39;EGYPTIAN HIEROGLYPH-13B39;Lo;0;L;;;;;N;;;;; +13B3A;EGYPTIAN HIEROGLYPH-13B3A;Lo;0;L;;;;;N;;;;; +13B3B;EGYPTIAN HIEROGLYPH-13B3B;Lo;0;L;;;;;N;;;;; +13B3C;EGYPTIAN HIEROGLYPH-13B3C;Lo;0;L;;;;;N;;;;; +13B3D;EGYPTIAN HIEROGLYPH-13B3D;Lo;0;L;;;;;N;;;;; +13B3E;EGYPTIAN HIEROGLYPH-13B3E;Lo;0;L;;;;;N;;;;; +13B3F;EGYPTIAN HIEROGLYPH-13B3F;Lo;0;L;;;;;N;;;;; +13B40;EGYPTIAN HIEROGLYPH-13B40;Lo;0;L;;;;;N;;;;; +13B41;EGYPTIAN HIEROGLYPH-13B41;Lo;0;L;;;;;N;;;;; +13B42;EGYPTIAN HIEROGLYPH-13B42;Lo;0;L;;;;;N;;;;; +13B43;EGYPTIAN HIEROGLYPH-13B43;Lo;0;L;;;;;N;;;;; +13B44;EGYPTIAN HIEROGLYPH-13B44;Lo;0;L;;;;;N;;;;; +13B45;EGYPTIAN HIEROGLYPH-13B45;Lo;0;L;;;;;N;;;;; +13B46;EGYPTIAN HIEROGLYPH-13B46;Lo;0;L;;;;;N;;;;; +13B47;EGYPTIAN HIEROGLYPH-13B47;Lo;0;L;;;;;N;;;;; +13B48;EGYPTIAN HIEROGLYPH-13B48;Lo;0;L;;;;;N;;;;; +13B49;EGYPTIAN HIEROGLYPH-13B49;Lo;0;L;;;;;N;;;;; +13B4A;EGYPTIAN HIEROGLYPH-13B4A;Lo;0;L;;;;;N;;;;; +13B4B;EGYPTIAN HIEROGLYPH-13B4B;Lo;0;L;;;;;N;;;;; +13B4C;EGYPTIAN HIEROGLYPH-13B4C;Lo;0;L;;;;;N;;;;; +13B4D;EGYPTIAN HIEROGLYPH-13B4D;Lo;0;L;;;;;N;;;;; +13B4E;EGYPTIAN HIEROGLYPH-13B4E;Lo;0;L;;;;;N;;;;; +13B4F;EGYPTIAN HIEROGLYPH-13B4F;Lo;0;L;;;;;N;;;;; +13B50;EGYPTIAN HIEROGLYPH-13B50;Lo;0;L;;;;;N;;;;; +13B51;EGYPTIAN HIEROGLYPH-13B51;Lo;0;L;;;;;N;;;;; +13B52;EGYPTIAN HIEROGLYPH-13B52;Lo;0;L;;;;;N;;;;; +13B53;EGYPTIAN HIEROGLYPH-13B53;Lo;0;L;;;;;N;;;;; +13B54;EGYPTIAN HIEROGLYPH-13B54;Lo;0;L;;;;;N;;;;; +13B55;EGYPTIAN HIEROGLYPH-13B55;Lo;0;L;;;;;N;;;;; +13B56;EGYPTIAN HIEROGLYPH-13B56;Lo;0;L;;;;;N;;;;; +13B57;EGYPTIAN HIEROGLYPH-13B57;Lo;0;L;;;;;N;;;;; +13B58;EGYPTIAN HIEROGLYPH-13B58;Lo;0;L;;;;;N;;;;; +13B59;EGYPTIAN HIEROGLYPH-13B59;Lo;0;L;;;;;N;;;;; +13B5A;EGYPTIAN HIEROGLYPH-13B5A;Lo;0;L;;;;;N;;;;; +13B5B;EGYPTIAN HIEROGLYPH-13B5B;Lo;0;L;;;;;N;;;;; +13B5C;EGYPTIAN HIEROGLYPH-13B5C;Lo;0;L;;;;;N;;;;; +13B5D;EGYPTIAN HIEROGLYPH-13B5D;Lo;0;L;;;;;N;;;;; +13B5E;EGYPTIAN HIEROGLYPH-13B5E;Lo;0;L;;;;;N;;;;; +13B5F;EGYPTIAN HIEROGLYPH-13B5F;Lo;0;L;;;;;N;;;;; +13B60;EGYPTIAN HIEROGLYPH-13B60;Lo;0;L;;;;;N;;;;; +13B61;EGYPTIAN HIEROGLYPH-13B61;Lo;0;L;;;;;N;;;;; +13B62;EGYPTIAN HIEROGLYPH-13B62;Lo;0;L;;;;;N;;;;; +13B63;EGYPTIAN HIEROGLYPH-13B63;Lo;0;L;;;;;N;;;;; +13B64;EGYPTIAN HIEROGLYPH-13B64;Lo;0;L;;;;;N;;;;; +13B65;EGYPTIAN HIEROGLYPH-13B65;Lo;0;L;;;;;N;;;;; +13B66;EGYPTIAN HIEROGLYPH-13B66;Lo;0;L;;;;;N;;;;; +13B67;EGYPTIAN HIEROGLYPH-13B67;Lo;0;L;;;;;N;;;;; +13B68;EGYPTIAN HIEROGLYPH-13B68;Lo;0;L;;;;;N;;;;; +13B69;EGYPTIAN HIEROGLYPH-13B69;Lo;0;L;;;;;N;;;;; +13B6A;EGYPTIAN HIEROGLYPH-13B6A;Lo;0;L;;;;;N;;;;; +13B6B;EGYPTIAN HIEROGLYPH-13B6B;Lo;0;L;;;;;N;;;;; +13B6C;EGYPTIAN HIEROGLYPH-13B6C;Lo;0;L;;;;;N;;;;; +13B6D;EGYPTIAN HIEROGLYPH-13B6D;Lo;0;L;;;;;N;;;;; +13B6E;EGYPTIAN HIEROGLYPH-13B6E;Lo;0;L;;;;;N;;;;; +13B6F;EGYPTIAN HIEROGLYPH-13B6F;Lo;0;L;;;;;N;;;;; +13B70;EGYPTIAN HIEROGLYPH-13B70;Lo;0;L;;;;;N;;;;; +13B71;EGYPTIAN HIEROGLYPH-13B71;Lo;0;L;;;;;N;;;;; +13B72;EGYPTIAN HIEROGLYPH-13B72;Lo;0;L;;;;;N;;;;; +13B73;EGYPTIAN HIEROGLYPH-13B73;Lo;0;L;;;;;N;;;;; +13B74;EGYPTIAN HIEROGLYPH-13B74;Lo;0;L;;;;;N;;;;; +13B75;EGYPTIAN HIEROGLYPH-13B75;Lo;0;L;;;;;N;;;;; +13B76;EGYPTIAN HIEROGLYPH-13B76;Lo;0;L;;;;;N;;;;; +13B77;EGYPTIAN HIEROGLYPH-13B77;Lo;0;L;;;;;N;;;;; +13B78;EGYPTIAN HIEROGLYPH-13B78;Lo;0;L;;;;;N;;;;; +13B79;EGYPTIAN HIEROGLYPH-13B79;Lo;0;L;;;;;N;;;;; +13B7A;EGYPTIAN HIEROGLYPH-13B7A;Lo;0;L;;;;;N;;;;; +13B7B;EGYPTIAN HIEROGLYPH-13B7B;Lo;0;L;;;;;N;;;;; +13B7C;EGYPTIAN HIEROGLYPH-13B7C;Lo;0;L;;;;;N;;;;; +13B7D;EGYPTIAN HIEROGLYPH-13B7D;Lo;0;L;;;;;N;;;;; +13B7E;EGYPTIAN HIEROGLYPH-13B7E;Lo;0;L;;;;;N;;;;; +13B7F;EGYPTIAN HIEROGLYPH-13B7F;Lo;0;L;;;;;N;;;;; +13B80;EGYPTIAN HIEROGLYPH-13B80;Lo;0;L;;;;;N;;;;; +13B81;EGYPTIAN HIEROGLYPH-13B81;Lo;0;L;;;;;N;;;;; +13B82;EGYPTIAN HIEROGLYPH-13B82;Lo;0;L;;;;;N;;;;; +13B83;EGYPTIAN HIEROGLYPH-13B83;Lo;0;L;;;;;N;;;;; +13B84;EGYPTIAN HIEROGLYPH-13B84;Lo;0;L;;;;;N;;;;; +13B85;EGYPTIAN HIEROGLYPH-13B85;Lo;0;L;;;;;N;;;;; +13B86;EGYPTIAN HIEROGLYPH-13B86;Lo;0;L;;;;;N;;;;; +13B87;EGYPTIAN HIEROGLYPH-13B87;Lo;0;L;;;;;N;;;;; +13B88;EGYPTIAN HIEROGLYPH-13B88;Lo;0;L;;;;;N;;;;; +13B89;EGYPTIAN HIEROGLYPH-13B89;Lo;0;L;;;;;N;;;;; +13B8A;EGYPTIAN HIEROGLYPH-13B8A;Lo;0;L;;;;;N;;;;; +13B8B;EGYPTIAN HIEROGLYPH-13B8B;Lo;0;L;;;;;N;;;;; +13B8C;EGYPTIAN HIEROGLYPH-13B8C;Lo;0;L;;;;;N;;;;; +13B8D;EGYPTIAN HIEROGLYPH-13B8D;Lo;0;L;;;;;N;;;;; +13B8E;EGYPTIAN HIEROGLYPH-13B8E;Lo;0;L;;;;;N;;;;; +13B8F;EGYPTIAN HIEROGLYPH-13B8F;Lo;0;L;;;;;N;;;;; +13B90;EGYPTIAN HIEROGLYPH-13B90;Lo;0;L;;;;;N;;;;; +13B91;EGYPTIAN HIEROGLYPH-13B91;Lo;0;L;;;;;N;;;;; +13B92;EGYPTIAN HIEROGLYPH-13B92;Lo;0;L;;;;;N;;;;; +13B93;EGYPTIAN HIEROGLYPH-13B93;Lo;0;L;;;;;N;;;;; +13B94;EGYPTIAN HIEROGLYPH-13B94;Lo;0;L;;;;;N;;;;; +13B95;EGYPTIAN HIEROGLYPH-13B95;Lo;0;L;;;;;N;;;;; +13B96;EGYPTIAN HIEROGLYPH-13B96;Lo;0;L;;;;;N;;;;; +13B97;EGYPTIAN HIEROGLYPH-13B97;Lo;0;L;;;;;N;;;;; +13B98;EGYPTIAN HIEROGLYPH-13B98;Lo;0;L;;;;;N;;;;; +13B99;EGYPTIAN HIEROGLYPH-13B99;Lo;0;L;;;;;N;;;;; +13B9A;EGYPTIAN HIEROGLYPH-13B9A;Lo;0;L;;;;;N;;;;; +13B9B;EGYPTIAN HIEROGLYPH-13B9B;Lo;0;L;;;;;N;;;;; +13B9C;EGYPTIAN HIEROGLYPH-13B9C;Lo;0;L;;;;;N;;;;; +13B9D;EGYPTIAN HIEROGLYPH-13B9D;Lo;0;L;;;;;N;;;;; +13B9E;EGYPTIAN HIEROGLYPH-13B9E;Lo;0;L;;;;;N;;;;; +13B9F;EGYPTIAN HIEROGLYPH-13B9F;Lo;0;L;;;;;N;;;;; +13BA0;EGYPTIAN HIEROGLYPH-13BA0;Lo;0;L;;;;;N;;;;; +13BA1;EGYPTIAN HIEROGLYPH-13BA1;Lo;0;L;;;;;N;;;;; +13BA2;EGYPTIAN HIEROGLYPH-13BA2;Lo;0;L;;;;;N;;;;; +13BA3;EGYPTIAN HIEROGLYPH-13BA3;Lo;0;L;;;;;N;;;;; +13BA4;EGYPTIAN HIEROGLYPH-13BA4;Lo;0;L;;;;;N;;;;; +13BA5;EGYPTIAN HIEROGLYPH-13BA5;Lo;0;L;;;;;N;;;;; +13BA6;EGYPTIAN HIEROGLYPH-13BA6;Lo;0;L;;;;;N;;;;; +13BA7;EGYPTIAN HIEROGLYPH-13BA7;Lo;0;L;;;;;N;;;;; +13BA8;EGYPTIAN HIEROGLYPH-13BA8;Lo;0;L;;;;;N;;;;; +13BA9;EGYPTIAN HIEROGLYPH-13BA9;Lo;0;L;;;;;N;;;;; +13BAA;EGYPTIAN HIEROGLYPH-13BAA;Lo;0;L;;;;;N;;;;; +13BAB;EGYPTIAN HIEROGLYPH-13BAB;Lo;0;L;;;;;N;;;;; +13BAC;EGYPTIAN HIEROGLYPH-13BAC;Lo;0;L;;;;;N;;;;; +13BAD;EGYPTIAN HIEROGLYPH-13BAD;Lo;0;L;;;;;N;;;;; +13BAE;EGYPTIAN HIEROGLYPH-13BAE;Lo;0;L;;;;;N;;;;; +13BAF;EGYPTIAN HIEROGLYPH-13BAF;Lo;0;L;;;;;N;;;;; +13BB0;EGYPTIAN HIEROGLYPH-13BB0;Lo;0;L;;;;;N;;;;; +13BB1;EGYPTIAN HIEROGLYPH-13BB1;Lo;0;L;;;;;N;;;;; +13BB2;EGYPTIAN HIEROGLYPH-13BB2;Lo;0;L;;;;;N;;;;; +13BB3;EGYPTIAN HIEROGLYPH-13BB3;Lo;0;L;;;;;N;;;;; +13BB4;EGYPTIAN HIEROGLYPH-13BB4;Lo;0;L;;;;;N;;;;; +13BB5;EGYPTIAN HIEROGLYPH-13BB5;Lo;0;L;;;;;N;;;;; +13BB6;EGYPTIAN HIEROGLYPH-13BB6;Lo;0;L;;;;;N;;;;; +13BB7;EGYPTIAN HIEROGLYPH-13BB7;Lo;0;L;;;;;N;;;;; +13BB8;EGYPTIAN HIEROGLYPH-13BB8;Lo;0;L;;;;;N;;;;; +13BB9;EGYPTIAN HIEROGLYPH-13BB9;Lo;0;L;;;;;N;;;;; +13BBA;EGYPTIAN HIEROGLYPH-13BBA;Lo;0;L;;;;;N;;;;; +13BBB;EGYPTIAN HIEROGLYPH-13BBB;Lo;0;L;;;;;N;;;;; +13BBC;EGYPTIAN HIEROGLYPH-13BBC;Lo;0;L;;;;;N;;;;; +13BBD;EGYPTIAN HIEROGLYPH-13BBD;Lo;0;L;;;;;N;;;;; +13BBE;EGYPTIAN HIEROGLYPH-13BBE;Lo;0;L;;;;;N;;;;; +13BBF;EGYPTIAN HIEROGLYPH-13BBF;Lo;0;L;;;;;N;;;;; +13BC0;EGYPTIAN HIEROGLYPH-13BC0;Lo;0;L;;;;;N;;;;; +13BC1;EGYPTIAN HIEROGLYPH-13BC1;Lo;0;L;;;;;N;;;;; +13BC2;EGYPTIAN HIEROGLYPH-13BC2;Lo;0;L;;;;;N;;;;; +13BC3;EGYPTIAN HIEROGLYPH-13BC3;Lo;0;L;;;;;N;;;;; +13BC4;EGYPTIAN HIEROGLYPH-13BC4;Lo;0;L;;;;;N;;;;; +13BC5;EGYPTIAN HIEROGLYPH-13BC5;Lo;0;L;;;;;N;;;;; +13BC6;EGYPTIAN HIEROGLYPH-13BC6;Lo;0;L;;;;;N;;;;; +13BC7;EGYPTIAN HIEROGLYPH-13BC7;Lo;0;L;;;;;N;;;;; +13BC8;EGYPTIAN HIEROGLYPH-13BC8;Lo;0;L;;;;;N;;;;; +13BC9;EGYPTIAN HIEROGLYPH-13BC9;Lo;0;L;;;;;N;;;;; +13BCA;EGYPTIAN HIEROGLYPH-13BCA;Lo;0;L;;;;;N;;;;; +13BCB;EGYPTIAN HIEROGLYPH-13BCB;Lo;0;L;;;;;N;;;;; +13BCC;EGYPTIAN HIEROGLYPH-13BCC;Lo;0;L;;;;;N;;;;; +13BCD;EGYPTIAN HIEROGLYPH-13BCD;Lo;0;L;;;;;N;;;;; +13BCE;EGYPTIAN HIEROGLYPH-13BCE;Lo;0;L;;;;;N;;;;; +13BCF;EGYPTIAN HIEROGLYPH-13BCF;Lo;0;L;;;;;N;;;;; +13BD0;EGYPTIAN HIEROGLYPH-13BD0;Lo;0;L;;;;;N;;;;; +13BD1;EGYPTIAN HIEROGLYPH-13BD1;Lo;0;L;;;;;N;;;;; +13BD2;EGYPTIAN HIEROGLYPH-13BD2;Lo;0;L;;;;;N;;;;; +13BD3;EGYPTIAN HIEROGLYPH-13BD3;Lo;0;L;;;;;N;;;;; +13BD4;EGYPTIAN HIEROGLYPH-13BD4;Lo;0;L;;;;;N;;;;; +13BD5;EGYPTIAN HIEROGLYPH-13BD5;Lo;0;L;;;;;N;;;;; +13BD6;EGYPTIAN HIEROGLYPH-13BD6;Lo;0;L;;;;;N;;;;; +13BD7;EGYPTIAN HIEROGLYPH-13BD7;Lo;0;L;;;;;N;;;;; +13BD8;EGYPTIAN HIEROGLYPH-13BD8;Lo;0;L;;;;;N;;;;; +13BD9;EGYPTIAN HIEROGLYPH-13BD9;Lo;0;L;;;;;N;;;;; +13BDA;EGYPTIAN HIEROGLYPH-13BDA;Lo;0;L;;;;;N;;;;; +13BDB;EGYPTIAN HIEROGLYPH-13BDB;Lo;0;L;;;;;N;;;;; +13BDC;EGYPTIAN HIEROGLYPH-13BDC;Lo;0;L;;;;;N;;;;; +13BDD;EGYPTIAN HIEROGLYPH-13BDD;Lo;0;L;;;;;N;;;;; +13BDE;EGYPTIAN HIEROGLYPH-13BDE;Lo;0;L;;;;;N;;;;; +13BDF;EGYPTIAN HIEROGLYPH-13BDF;Lo;0;L;;;;;N;;;;; +13BE0;EGYPTIAN HIEROGLYPH-13BE0;Lo;0;L;;;;;N;;;;; +13BE1;EGYPTIAN HIEROGLYPH-13BE1;Lo;0;L;;;;;N;;;;; +13BE2;EGYPTIAN HIEROGLYPH-13BE2;Lo;0;L;;;;;N;;;;; +13BE3;EGYPTIAN HIEROGLYPH-13BE3;Lo;0;L;;;;;N;;;;; +13BE4;EGYPTIAN HIEROGLYPH-13BE4;Lo;0;L;;;;;N;;;;; +13BE5;EGYPTIAN HIEROGLYPH-13BE5;Lo;0;L;;;;;N;;;;; +13BE6;EGYPTIAN HIEROGLYPH-13BE6;Lo;0;L;;;;;N;;;;; +13BE7;EGYPTIAN HIEROGLYPH-13BE7;Lo;0;L;;;;;N;;;;; +13BE8;EGYPTIAN HIEROGLYPH-13BE8;Lo;0;L;;;;;N;;;;; +13BE9;EGYPTIAN HIEROGLYPH-13BE9;Lo;0;L;;;;;N;;;;; +13BEA;EGYPTIAN HIEROGLYPH-13BEA;Lo;0;L;;;;;N;;;;; +13BEB;EGYPTIAN HIEROGLYPH-13BEB;Lo;0;L;;;;;N;;;;; +13BEC;EGYPTIAN HIEROGLYPH-13BEC;Lo;0;L;;;;;N;;;;; +13BED;EGYPTIAN HIEROGLYPH-13BED;Lo;0;L;;;;;N;;;;; +13BEE;EGYPTIAN HIEROGLYPH-13BEE;Lo;0;L;;;;;N;;;;; +13BEF;EGYPTIAN HIEROGLYPH-13BEF;Lo;0;L;;;;;N;;;;; +13BF0;EGYPTIAN HIEROGLYPH-13BF0;Lo;0;L;;;;;N;;;;; +13BF1;EGYPTIAN HIEROGLYPH-13BF1;Lo;0;L;;;;;N;;;;; +13BF2;EGYPTIAN HIEROGLYPH-13BF2;Lo;0;L;;;;;N;;;;; +13BF3;EGYPTIAN HIEROGLYPH-13BF3;Lo;0;L;;;;;N;;;;; +13BF4;EGYPTIAN HIEROGLYPH-13BF4;Lo;0;L;;;;;N;;;;; +13BF5;EGYPTIAN HIEROGLYPH-13BF5;Lo;0;L;;;;;N;;;;; +13BF6;EGYPTIAN HIEROGLYPH-13BF6;Lo;0;L;;;;;N;;;;; +13BF7;EGYPTIAN HIEROGLYPH-13BF7;Lo;0;L;;;;;N;;;;; +13BF8;EGYPTIAN HIEROGLYPH-13BF8;Lo;0;L;;;;;N;;;;; +13BF9;EGYPTIAN HIEROGLYPH-13BF9;Lo;0;L;;;;;N;;;;; +13BFA;EGYPTIAN HIEROGLYPH-13BFA;Lo;0;L;;;;;N;;;;; +13BFB;EGYPTIAN HIEROGLYPH-13BFB;Lo;0;L;;;;;N;;;;; +13BFC;EGYPTIAN HIEROGLYPH-13BFC;Lo;0;L;;;;;N;;;;; +13BFD;EGYPTIAN HIEROGLYPH-13BFD;Lo;0;L;;;;;N;;;;; +13BFE;EGYPTIAN HIEROGLYPH-13BFE;Lo;0;L;;;;;N;;;;; +13BFF;EGYPTIAN HIEROGLYPH-13BFF;Lo;0;L;;;;;N;;;;; +13C00;EGYPTIAN HIEROGLYPH-13C00;Lo;0;L;;;;;N;;;;; +13C01;EGYPTIAN HIEROGLYPH-13C01;Lo;0;L;;;;;N;;;;; +13C02;EGYPTIAN HIEROGLYPH-13C02;Lo;0;L;;;;;N;;;;; +13C03;EGYPTIAN HIEROGLYPH-13C03;Lo;0;L;;;;;N;;;;; +13C04;EGYPTIAN HIEROGLYPH-13C04;Lo;0;L;;;;;N;;;;; +13C05;EGYPTIAN HIEROGLYPH-13C05;Lo;0;L;;;;;N;;;;; +13C06;EGYPTIAN HIEROGLYPH-13C06;Lo;0;L;;;;;N;;;;; +13C07;EGYPTIAN HIEROGLYPH-13C07;Lo;0;L;;;;;N;;;;; +13C08;EGYPTIAN HIEROGLYPH-13C08;Lo;0;L;;;;;N;;;;; +13C09;EGYPTIAN HIEROGLYPH-13C09;Lo;0;L;;;;;N;;;;; +13C0A;EGYPTIAN HIEROGLYPH-13C0A;Lo;0;L;;;;;N;;;;; +13C0B;EGYPTIAN HIEROGLYPH-13C0B;Lo;0;L;;;;;N;;;;; +13C0C;EGYPTIAN HIEROGLYPH-13C0C;Lo;0;L;;;;;N;;;;; +13C0D;EGYPTIAN HIEROGLYPH-13C0D;Lo;0;L;;;;;N;;;;; +13C0E;EGYPTIAN HIEROGLYPH-13C0E;Lo;0;L;;;;;N;;;;; +13C0F;EGYPTIAN HIEROGLYPH-13C0F;Lo;0;L;;;;;N;;;;; +13C10;EGYPTIAN HIEROGLYPH-13C10;Lo;0;L;;;;;N;;;;; +13C11;EGYPTIAN HIEROGLYPH-13C11;Lo;0;L;;;;;N;;;;; +13C12;EGYPTIAN HIEROGLYPH-13C12;Lo;0;L;;;;;N;;;;; +13C13;EGYPTIAN HIEROGLYPH-13C13;Lo;0;L;;;;;N;;;;; +13C14;EGYPTIAN HIEROGLYPH-13C14;Lo;0;L;;;;;N;;;;; +13C15;EGYPTIAN HIEROGLYPH-13C15;Lo;0;L;;;;;N;;;;; +13C16;EGYPTIAN HIEROGLYPH-13C16;Lo;0;L;;;;;N;;;;; +13C17;EGYPTIAN HIEROGLYPH-13C17;Lo;0;L;;;;;N;;;;; +13C18;EGYPTIAN HIEROGLYPH-13C18;Lo;0;L;;;;;N;;;;; +13C19;EGYPTIAN HIEROGLYPH-13C19;Lo;0;L;;;;;N;;;;; +13C1A;EGYPTIAN HIEROGLYPH-13C1A;Lo;0;L;;;;;N;;;;; +13C1B;EGYPTIAN HIEROGLYPH-13C1B;Lo;0;L;;;;;N;;;;; +13C1C;EGYPTIAN HIEROGLYPH-13C1C;Lo;0;L;;;;;N;;;;; +13C1D;EGYPTIAN HIEROGLYPH-13C1D;Lo;0;L;;;;;N;;;;; +13C1E;EGYPTIAN HIEROGLYPH-13C1E;Lo;0;L;;;;;N;;;;; +13C1F;EGYPTIAN HIEROGLYPH-13C1F;Lo;0;L;;;;;N;;;;; +13C20;EGYPTIAN HIEROGLYPH-13C20;Lo;0;L;;;;;N;;;;; +13C21;EGYPTIAN HIEROGLYPH-13C21;Lo;0;L;;;;;N;;;;; +13C22;EGYPTIAN HIEROGLYPH-13C22;Lo;0;L;;;;;N;;;;; +13C23;EGYPTIAN HIEROGLYPH-13C23;Lo;0;L;;;;;N;;;;; +13C24;EGYPTIAN HIEROGLYPH-13C24;Lo;0;L;;;;;N;;;;; +13C25;EGYPTIAN HIEROGLYPH-13C25;Lo;0;L;;;;;N;;;;; +13C26;EGYPTIAN HIEROGLYPH-13C26;Lo;0;L;;;;;N;;;;; +13C27;EGYPTIAN HIEROGLYPH-13C27;Lo;0;L;;;;;N;;;;; +13C28;EGYPTIAN HIEROGLYPH-13C28;Lo;0;L;;;;;N;;;;; +13C29;EGYPTIAN HIEROGLYPH-13C29;Lo;0;L;;;;;N;;;;; +13C2A;EGYPTIAN HIEROGLYPH-13C2A;Lo;0;L;;;;;N;;;;; +13C2B;EGYPTIAN HIEROGLYPH-13C2B;Lo;0;L;;;;;N;;;;; +13C2C;EGYPTIAN HIEROGLYPH-13C2C;Lo;0;L;;;;;N;;;;; +13C2D;EGYPTIAN HIEROGLYPH-13C2D;Lo;0;L;;;;;N;;;;; +13C2E;EGYPTIAN HIEROGLYPH-13C2E;Lo;0;L;;;;;N;;;;; +13C2F;EGYPTIAN HIEROGLYPH-13C2F;Lo;0;L;;;;;N;;;;; +13C30;EGYPTIAN HIEROGLYPH-13C30;Lo;0;L;;;;;N;;;;; +13C31;EGYPTIAN HIEROGLYPH-13C31;Lo;0;L;;;;;N;;;;; +13C32;EGYPTIAN HIEROGLYPH-13C32;Lo;0;L;;;;;N;;;;; +13C33;EGYPTIAN HIEROGLYPH-13C33;Lo;0;L;;;;;N;;;;; +13C34;EGYPTIAN HIEROGLYPH-13C34;Lo;0;L;;;;;N;;;;; +13C35;EGYPTIAN HIEROGLYPH-13C35;Lo;0;L;;;;;N;;;;; +13C36;EGYPTIAN HIEROGLYPH-13C36;Lo;0;L;;;;;N;;;;; +13C37;EGYPTIAN HIEROGLYPH-13C37;Lo;0;L;;;;;N;;;;; +13C38;EGYPTIAN HIEROGLYPH-13C38;Lo;0;L;;;;;N;;;;; +13C39;EGYPTIAN HIEROGLYPH-13C39;Lo;0;L;;;;;N;;;;; +13C3A;EGYPTIAN HIEROGLYPH-13C3A;Lo;0;L;;;;;N;;;;; +13C3B;EGYPTIAN HIEROGLYPH-13C3B;Lo;0;L;;;;;N;;;;; +13C3C;EGYPTIAN HIEROGLYPH-13C3C;Lo;0;L;;;;;N;;;;; +13C3D;EGYPTIAN HIEROGLYPH-13C3D;Lo;0;L;;;;;N;;;;; +13C3E;EGYPTIAN HIEROGLYPH-13C3E;Lo;0;L;;;;;N;;;;; +13C3F;EGYPTIAN HIEROGLYPH-13C3F;Lo;0;L;;;;;N;;;;; +13C40;EGYPTIAN HIEROGLYPH-13C40;Lo;0;L;;;;;N;;;;; +13C41;EGYPTIAN HIEROGLYPH-13C41;Lo;0;L;;;;;N;;;;; +13C42;EGYPTIAN HIEROGLYPH-13C42;Lo;0;L;;;;;N;;;;; +13C43;EGYPTIAN HIEROGLYPH-13C43;Lo;0;L;;;;;N;;;;; +13C44;EGYPTIAN HIEROGLYPH-13C44;Lo;0;L;;;;;N;;;;; +13C45;EGYPTIAN HIEROGLYPH-13C45;Lo;0;L;;;;;N;;;;; +13C46;EGYPTIAN HIEROGLYPH-13C46;Lo;0;L;;;;;N;;;;; +13C47;EGYPTIAN HIEROGLYPH-13C47;Lo;0;L;;;;;N;;;;; +13C48;EGYPTIAN HIEROGLYPH-13C48;Lo;0;L;;;;;N;;;;; +13C49;EGYPTIAN HIEROGLYPH-13C49;Lo;0;L;;;;;N;;;;; +13C4A;EGYPTIAN HIEROGLYPH-13C4A;Lo;0;L;;;;;N;;;;; +13C4B;EGYPTIAN HIEROGLYPH-13C4B;Lo;0;L;;;;;N;;;;; +13C4C;EGYPTIAN HIEROGLYPH-13C4C;Lo;0;L;;;;;N;;;;; +13C4D;EGYPTIAN HIEROGLYPH-13C4D;Lo;0;L;;;;;N;;;;; +13C4E;EGYPTIAN HIEROGLYPH-13C4E;Lo;0;L;;;;;N;;;;; +13C4F;EGYPTIAN HIEROGLYPH-13C4F;Lo;0;L;;;;;N;;;;; +13C50;EGYPTIAN HIEROGLYPH-13C50;Lo;0;L;;;;;N;;;;; +13C51;EGYPTIAN HIEROGLYPH-13C51;Lo;0;L;;;;;N;;;;; +13C52;EGYPTIAN HIEROGLYPH-13C52;Lo;0;L;;;;;N;;;;; +13C53;EGYPTIAN HIEROGLYPH-13C53;Lo;0;L;;;;;N;;;;; +13C54;EGYPTIAN HIEROGLYPH-13C54;Lo;0;L;;;;;N;;;;; +13C55;EGYPTIAN HIEROGLYPH-13C55;Lo;0;L;;;;;N;;;;; +13C56;EGYPTIAN HIEROGLYPH-13C56;Lo;0;L;;;;;N;;;;; +13C57;EGYPTIAN HIEROGLYPH-13C57;Lo;0;L;;;;;N;;;;; +13C58;EGYPTIAN HIEROGLYPH-13C58;Lo;0;L;;;;;N;;;;; +13C59;EGYPTIAN HIEROGLYPH-13C59;Lo;0;L;;;;;N;;;;; +13C5A;EGYPTIAN HIEROGLYPH-13C5A;Lo;0;L;;;;;N;;;;; +13C5B;EGYPTIAN HIEROGLYPH-13C5B;Lo;0;L;;;;;N;;;;; +13C5C;EGYPTIAN HIEROGLYPH-13C5C;Lo;0;L;;;;;N;;;;; +13C5D;EGYPTIAN HIEROGLYPH-13C5D;Lo;0;L;;;;;N;;;;; +13C5E;EGYPTIAN HIEROGLYPH-13C5E;Lo;0;L;;;;;N;;;;; +13C5F;EGYPTIAN HIEROGLYPH-13C5F;Lo;0;L;;;;;N;;;;; +13C60;EGYPTIAN HIEROGLYPH-13C60;Lo;0;L;;;;;N;;;;; +13C61;EGYPTIAN HIEROGLYPH-13C61;Lo;0;L;;;;;N;;;;; +13C62;EGYPTIAN HIEROGLYPH-13C62;Lo;0;L;;;;;N;;;;; +13C63;EGYPTIAN HIEROGLYPH-13C63;Lo;0;L;;;;;N;;;;; +13C64;EGYPTIAN HIEROGLYPH-13C64;Lo;0;L;;;;;N;;;;; +13C65;EGYPTIAN HIEROGLYPH-13C65;Lo;0;L;;;;;N;;;;; +13C66;EGYPTIAN HIEROGLYPH-13C66;Lo;0;L;;;;;N;;;;; +13C67;EGYPTIAN HIEROGLYPH-13C67;Lo;0;L;;;;;N;;;;; +13C68;EGYPTIAN HIEROGLYPH-13C68;Lo;0;L;;;;;N;;;;; +13C69;EGYPTIAN HIEROGLYPH-13C69;Lo;0;L;;;;;N;;;;; +13C6A;EGYPTIAN HIEROGLYPH-13C6A;Lo;0;L;;;;;N;;;;; +13C6B;EGYPTIAN HIEROGLYPH-13C6B;Lo;0;L;;;;;N;;;;; +13C6C;EGYPTIAN HIEROGLYPH-13C6C;Lo;0;L;;;;;N;;;;; +13C6D;EGYPTIAN HIEROGLYPH-13C6D;Lo;0;L;;;;;N;;;;; +13C6E;EGYPTIAN HIEROGLYPH-13C6E;Lo;0;L;;;;;N;;;;; +13C6F;EGYPTIAN HIEROGLYPH-13C6F;Lo;0;L;;;;;N;;;;; +13C70;EGYPTIAN HIEROGLYPH-13C70;Lo;0;L;;;;;N;;;;; +13C71;EGYPTIAN HIEROGLYPH-13C71;Lo;0;L;;;;;N;;;;; +13C72;EGYPTIAN HIEROGLYPH-13C72;Lo;0;L;;;;;N;;;;; +13C73;EGYPTIAN HIEROGLYPH-13C73;Lo;0;L;;;;;N;;;;; +13C74;EGYPTIAN HIEROGLYPH-13C74;Lo;0;L;;;;;N;;;;; +13C75;EGYPTIAN HIEROGLYPH-13C75;Lo;0;L;;;;;N;;;;; +13C76;EGYPTIAN HIEROGLYPH-13C76;Lo;0;L;;;;;N;;;;; +13C77;EGYPTIAN HIEROGLYPH-13C77;Lo;0;L;;;;;N;;;;; +13C78;EGYPTIAN HIEROGLYPH-13C78;Lo;0;L;;;;;N;;;;; +13C79;EGYPTIAN HIEROGLYPH-13C79;Lo;0;L;;;;;N;;;;; +13C7A;EGYPTIAN HIEROGLYPH-13C7A;Lo;0;L;;;;;N;;;;; +13C7B;EGYPTIAN HIEROGLYPH-13C7B;Lo;0;L;;;;;N;;;;; +13C7C;EGYPTIAN HIEROGLYPH-13C7C;Lo;0;L;;;;;N;;;;; +13C7D;EGYPTIAN HIEROGLYPH-13C7D;Lo;0;L;;;;;N;;;;; +13C7E;EGYPTIAN HIEROGLYPH-13C7E;Lo;0;L;;;;;N;;;;; +13C7F;EGYPTIAN HIEROGLYPH-13C7F;Lo;0;L;;;;;N;;;;; +13C80;EGYPTIAN HIEROGLYPH-13C80;Lo;0;L;;;;;N;;;;; +13C81;EGYPTIAN HIEROGLYPH-13C81;Lo;0;L;;;;;N;;;;; +13C82;EGYPTIAN HIEROGLYPH-13C82;Lo;0;L;;;;;N;;;;; +13C83;EGYPTIAN HIEROGLYPH-13C83;Lo;0;L;;;;;N;;;;; +13C84;EGYPTIAN HIEROGLYPH-13C84;Lo;0;L;;;;;N;;;;; +13C85;EGYPTIAN HIEROGLYPH-13C85;Lo;0;L;;;;;N;;;;; +13C86;EGYPTIAN HIEROGLYPH-13C86;Lo;0;L;;;;;N;;;;; +13C87;EGYPTIAN HIEROGLYPH-13C87;Lo;0;L;;;;;N;;;;; +13C88;EGYPTIAN HIEROGLYPH-13C88;Lo;0;L;;;;;N;;;;; +13C89;EGYPTIAN HIEROGLYPH-13C89;Lo;0;L;;;;;N;;;;; +13C8A;EGYPTIAN HIEROGLYPH-13C8A;Lo;0;L;;;;;N;;;;; +13C8B;EGYPTIAN HIEROGLYPH-13C8B;Lo;0;L;;;;;N;;;;; +13C8C;EGYPTIAN HIEROGLYPH-13C8C;Lo;0;L;;;;;N;;;;; +13C8D;EGYPTIAN HIEROGLYPH-13C8D;Lo;0;L;;;;;N;;;;; +13C8E;EGYPTIAN HIEROGLYPH-13C8E;Lo;0;L;;;;;N;;;;; +13C8F;EGYPTIAN HIEROGLYPH-13C8F;Lo;0;L;;;;;N;;;;; +13C90;EGYPTIAN HIEROGLYPH-13C90;Lo;0;L;;;;;N;;;;; +13C91;EGYPTIAN HIEROGLYPH-13C91;Lo;0;L;;;;;N;;;;; +13C92;EGYPTIAN HIEROGLYPH-13C92;Lo;0;L;;;;;N;;;;; +13C93;EGYPTIAN HIEROGLYPH-13C93;Lo;0;L;;;;;N;;;;; +13C94;EGYPTIAN HIEROGLYPH-13C94;Lo;0;L;;;;;N;;;;; +13C95;EGYPTIAN HIEROGLYPH-13C95;Lo;0;L;;;;;N;;;;; +13C96;EGYPTIAN HIEROGLYPH-13C96;Lo;0;L;;;;;N;;;;; +13C97;EGYPTIAN HIEROGLYPH-13C97;Lo;0;L;;;;;N;;;;; +13C98;EGYPTIAN HIEROGLYPH-13C98;Lo;0;L;;;;;N;;;;; +13C99;EGYPTIAN HIEROGLYPH-13C99;Lo;0;L;;;;;N;;;;; +13C9A;EGYPTIAN HIEROGLYPH-13C9A;Lo;0;L;;;;;N;;;;; +13C9B;EGYPTIAN HIEROGLYPH-13C9B;Lo;0;L;;;;;N;;;;; +13C9C;EGYPTIAN HIEROGLYPH-13C9C;Lo;0;L;;;;;N;;;;; +13C9D;EGYPTIAN HIEROGLYPH-13C9D;Lo;0;L;;;;;N;;;;; +13C9E;EGYPTIAN HIEROGLYPH-13C9E;Lo;0;L;;;;;N;;;;; +13C9F;EGYPTIAN HIEROGLYPH-13C9F;Lo;0;L;;;;;N;;;;; +13CA0;EGYPTIAN HIEROGLYPH-13CA0;Lo;0;L;;;;;N;;;;; +13CA1;EGYPTIAN HIEROGLYPH-13CA1;Lo;0;L;;;;;N;;;;; +13CA2;EGYPTIAN HIEROGLYPH-13CA2;Lo;0;L;;;;;N;;;;; +13CA3;EGYPTIAN HIEROGLYPH-13CA3;Lo;0;L;;;;;N;;;;; +13CA4;EGYPTIAN HIEROGLYPH-13CA4;Lo;0;L;;;;;N;;;;; +13CA5;EGYPTIAN HIEROGLYPH-13CA5;Lo;0;L;;;;;N;;;;; +13CA6;EGYPTIAN HIEROGLYPH-13CA6;Lo;0;L;;;;;N;;;;; +13CA7;EGYPTIAN HIEROGLYPH-13CA7;Lo;0;L;;;;;N;;;;; +13CA8;EGYPTIAN HIEROGLYPH-13CA8;Lo;0;L;;;;;N;;;;; +13CA9;EGYPTIAN HIEROGLYPH-13CA9;Lo;0;L;;;;;N;;;;; +13CAA;EGYPTIAN HIEROGLYPH-13CAA;Lo;0;L;;;;;N;;;;; +13CAB;EGYPTIAN HIEROGLYPH-13CAB;Lo;0;L;;;;;N;;;;; +13CAC;EGYPTIAN HIEROGLYPH-13CAC;Lo;0;L;;;;;N;;;;; +13CAD;EGYPTIAN HIEROGLYPH-13CAD;Lo;0;L;;;;;N;;;;; +13CAE;EGYPTIAN HIEROGLYPH-13CAE;Lo;0;L;;;;;N;;;;; +13CAF;EGYPTIAN HIEROGLYPH-13CAF;Lo;0;L;;;;;N;;;;; +13CB0;EGYPTIAN HIEROGLYPH-13CB0;Lo;0;L;;;;;N;;;;; +13CB1;EGYPTIAN HIEROGLYPH-13CB1;Lo;0;L;;;;;N;;;;; +13CB2;EGYPTIAN HIEROGLYPH-13CB2;Lo;0;L;;;;;N;;;;; +13CB3;EGYPTIAN HIEROGLYPH-13CB3;Lo;0;L;;;;;N;;;;; +13CB4;EGYPTIAN HIEROGLYPH-13CB4;Lo;0;L;;;;;N;;;;; +13CB5;EGYPTIAN HIEROGLYPH-13CB5;Lo;0;L;;;;;N;;;;; +13CB6;EGYPTIAN HIEROGLYPH-13CB6;Lo;0;L;;;;;N;;;;; +13CB7;EGYPTIAN HIEROGLYPH-13CB7;Lo;0;L;;;;;N;;;;; +13CB8;EGYPTIAN HIEROGLYPH-13CB8;Lo;0;L;;;;;N;;;;; +13CB9;EGYPTIAN HIEROGLYPH-13CB9;Lo;0;L;;;;;N;;;;; +13CBA;EGYPTIAN HIEROGLYPH-13CBA;Lo;0;L;;;;;N;;;;; +13CBB;EGYPTIAN HIEROGLYPH-13CBB;Lo;0;L;;;;;N;;;;; +13CBC;EGYPTIAN HIEROGLYPH-13CBC;Lo;0;L;;;;;N;;;;; +13CBD;EGYPTIAN HIEROGLYPH-13CBD;Lo;0;L;;;;;N;;;;; +13CBE;EGYPTIAN HIEROGLYPH-13CBE;Lo;0;L;;;;;N;;;;; +13CBF;EGYPTIAN HIEROGLYPH-13CBF;Lo;0;L;;;;;N;;;;; +13CC0;EGYPTIAN HIEROGLYPH-13CC0;Lo;0;L;;;;;N;;;;; +13CC1;EGYPTIAN HIEROGLYPH-13CC1;Lo;0;L;;;;;N;;;;; +13CC2;EGYPTIAN HIEROGLYPH-13CC2;Lo;0;L;;;;;N;;;;; +13CC3;EGYPTIAN HIEROGLYPH-13CC3;Lo;0;L;;;;;N;;;;; +13CC4;EGYPTIAN HIEROGLYPH-13CC4;Lo;0;L;;;;;N;;;;; +13CC5;EGYPTIAN HIEROGLYPH-13CC5;Lo;0;L;;;;;N;;;;; +13CC6;EGYPTIAN HIEROGLYPH-13CC6;Lo;0;L;;;;;N;;;;; +13CC7;EGYPTIAN HIEROGLYPH-13CC7;Lo;0;L;;;;;N;;;;; +13CC8;EGYPTIAN HIEROGLYPH-13CC8;Lo;0;L;;;;;N;;;;; +13CC9;EGYPTIAN HIEROGLYPH-13CC9;Lo;0;L;;;;;N;;;;; +13CCA;EGYPTIAN HIEROGLYPH-13CCA;Lo;0;L;;;;;N;;;;; +13CCB;EGYPTIAN HIEROGLYPH-13CCB;Lo;0;L;;;;;N;;;;; +13CCC;EGYPTIAN HIEROGLYPH-13CCC;Lo;0;L;;;;;N;;;;; +13CCD;EGYPTIAN HIEROGLYPH-13CCD;Lo;0;L;;;;;N;;;;; +13CCE;EGYPTIAN HIEROGLYPH-13CCE;Lo;0;L;;;;;N;;;;; +13CCF;EGYPTIAN HIEROGLYPH-13CCF;Lo;0;L;;;;;N;;;;; +13CD0;EGYPTIAN HIEROGLYPH-13CD0;Lo;0;L;;;;;N;;;;; +13CD1;EGYPTIAN HIEROGLYPH-13CD1;Lo;0;L;;;;;N;;;;; +13CD2;EGYPTIAN HIEROGLYPH-13CD2;Lo;0;L;;;;;N;;;;; +13CD3;EGYPTIAN HIEROGLYPH-13CD3;Lo;0;L;;;;;N;;;;; +13CD4;EGYPTIAN HIEROGLYPH-13CD4;Lo;0;L;;;;;N;;;;; +13CD5;EGYPTIAN HIEROGLYPH-13CD5;Lo;0;L;;;;;N;;;;; +13CD6;EGYPTIAN HIEROGLYPH-13CD6;Lo;0;L;;;;;N;;;;; +13CD7;EGYPTIAN HIEROGLYPH-13CD7;Lo;0;L;;;;;N;;;;; +13CD8;EGYPTIAN HIEROGLYPH-13CD8;Lo;0;L;;;;;N;;;;; +13CD9;EGYPTIAN HIEROGLYPH-13CD9;Lo;0;L;;;;;N;;;;; +13CDA;EGYPTIAN HIEROGLYPH-13CDA;Lo;0;L;;;;;N;;;;; +13CDB;EGYPTIAN HIEROGLYPH-13CDB;Lo;0;L;;;;;N;;;;; +13CDC;EGYPTIAN HIEROGLYPH-13CDC;Lo;0;L;;;;;N;;;;; +13CDD;EGYPTIAN HIEROGLYPH-13CDD;Lo;0;L;;;;;N;;;;; +13CDE;EGYPTIAN HIEROGLYPH-13CDE;Lo;0;L;;;;;N;;;;; +13CDF;EGYPTIAN HIEROGLYPH-13CDF;Lo;0;L;;;;;N;;;;; +13CE0;EGYPTIAN HIEROGLYPH-13CE0;Lo;0;L;;;;;N;;;;; +13CE1;EGYPTIAN HIEROGLYPH-13CE1;Lo;0;L;;;;;N;;;;; +13CE2;EGYPTIAN HIEROGLYPH-13CE2;Lo;0;L;;;;;N;;;;; +13CE3;EGYPTIAN HIEROGLYPH-13CE3;Lo;0;L;;;;;N;;;;; +13CE4;EGYPTIAN HIEROGLYPH-13CE4;Lo;0;L;;;;;N;;;;; +13CE5;EGYPTIAN HIEROGLYPH-13CE5;Lo;0;L;;;;;N;;;;; +13CE6;EGYPTIAN HIEROGLYPH-13CE6;Lo;0;L;;;;;N;;;;; +13CE7;EGYPTIAN HIEROGLYPH-13CE7;Lo;0;L;;;;;N;;;;; +13CE8;EGYPTIAN HIEROGLYPH-13CE8;Lo;0;L;;;;;N;;;;; +13CE9;EGYPTIAN HIEROGLYPH-13CE9;Lo;0;L;;;;;N;;;;; +13CEA;EGYPTIAN HIEROGLYPH-13CEA;Lo;0;L;;;;;N;;;;; +13CEB;EGYPTIAN HIEROGLYPH-13CEB;Lo;0;L;;;;;N;;;;; +13CEC;EGYPTIAN HIEROGLYPH-13CEC;Lo;0;L;;;;;N;;;;; +13CED;EGYPTIAN HIEROGLYPH-13CED;Lo;0;L;;;;;N;;;;; +13CEE;EGYPTIAN HIEROGLYPH-13CEE;Lo;0;L;;;;;N;;;;; +13CEF;EGYPTIAN HIEROGLYPH-13CEF;Lo;0;L;;;;;N;;;;; +13CF0;EGYPTIAN HIEROGLYPH-13CF0;Lo;0;L;;;;;N;;;;; +13CF1;EGYPTIAN HIEROGLYPH-13CF1;Lo;0;L;;;;;N;;;;; +13CF2;EGYPTIAN HIEROGLYPH-13CF2;Lo;0;L;;;;;N;;;;; +13CF3;EGYPTIAN HIEROGLYPH-13CF3;Lo;0;L;;;;;N;;;;; +13CF4;EGYPTIAN HIEROGLYPH-13CF4;Lo;0;L;;;;;N;;;;; +13CF5;EGYPTIAN HIEROGLYPH-13CF5;Lo;0;L;;;;;N;;;;; +13CF6;EGYPTIAN HIEROGLYPH-13CF6;Lo;0;L;;;;;N;;;;; +13CF7;EGYPTIAN HIEROGLYPH-13CF7;Lo;0;L;;;;;N;;;;; +13CF8;EGYPTIAN HIEROGLYPH-13CF8;Lo;0;L;;;;;N;;;;; +13CF9;EGYPTIAN HIEROGLYPH-13CF9;Lo;0;L;;;;;N;;;;; +13CFA;EGYPTIAN HIEROGLYPH-13CFA;Lo;0;L;;;;;N;;;;; +13CFB;EGYPTIAN HIEROGLYPH-13CFB;Lo;0;L;;;;;N;;;;; +13CFC;EGYPTIAN HIEROGLYPH-13CFC;Lo;0;L;;;;;N;;;;; +13CFD;EGYPTIAN HIEROGLYPH-13CFD;Lo;0;L;;;;;N;;;;; +13CFE;EGYPTIAN HIEROGLYPH-13CFE;Lo;0;L;;;;;N;;;;; +13CFF;EGYPTIAN HIEROGLYPH-13CFF;Lo;0;L;;;;;N;;;;; +13D00;EGYPTIAN HIEROGLYPH-13D00;Lo;0;L;;;;;N;;;;; +13D01;EGYPTIAN HIEROGLYPH-13D01;Lo;0;L;;;;;N;;;;; +13D02;EGYPTIAN HIEROGLYPH-13D02;Lo;0;L;;;;;N;;;;; +13D03;EGYPTIAN HIEROGLYPH-13D03;Lo;0;L;;;;;N;;;;; +13D04;EGYPTIAN HIEROGLYPH-13D04;Lo;0;L;;;;;N;;;;; +13D05;EGYPTIAN HIEROGLYPH-13D05;Lo;0;L;;;;;N;;;;; +13D06;EGYPTIAN HIEROGLYPH-13D06;Lo;0;L;;;;;N;;;;; +13D07;EGYPTIAN HIEROGLYPH-13D07;Lo;0;L;;;;;N;;;;; +13D08;EGYPTIAN HIEROGLYPH-13D08;Lo;0;L;;;;;N;;;;; +13D09;EGYPTIAN HIEROGLYPH-13D09;Lo;0;L;;;;;N;;;;; +13D0A;EGYPTIAN HIEROGLYPH-13D0A;Lo;0;L;;;;;N;;;;; +13D0B;EGYPTIAN HIEROGLYPH-13D0B;Lo;0;L;;;;;N;;;;; +13D0C;EGYPTIAN HIEROGLYPH-13D0C;Lo;0;L;;;;;N;;;;; +13D0D;EGYPTIAN HIEROGLYPH-13D0D;Lo;0;L;;;;;N;;;;; +13D0E;EGYPTIAN HIEROGLYPH-13D0E;Lo;0;L;;;;;N;;;;; +13D0F;EGYPTIAN HIEROGLYPH-13D0F;Lo;0;L;;;;;N;;;;; +13D10;EGYPTIAN HIEROGLYPH-13D10;Lo;0;L;;;;;N;;;;; +13D11;EGYPTIAN HIEROGLYPH-13D11;Lo;0;L;;;;;N;;;;; +13D12;EGYPTIAN HIEROGLYPH-13D12;Lo;0;L;;;;;N;;;;; +13D13;EGYPTIAN HIEROGLYPH-13D13;Lo;0;L;;;;;N;;;;; +13D14;EGYPTIAN HIEROGLYPH-13D14;Lo;0;L;;;;;N;;;;; +13D15;EGYPTIAN HIEROGLYPH-13D15;Lo;0;L;;;;;N;;;;; +13D16;EGYPTIAN HIEROGLYPH-13D16;Lo;0;L;;;;;N;;;;; +13D17;EGYPTIAN HIEROGLYPH-13D17;Lo;0;L;;;;;N;;;;; +13D18;EGYPTIAN HIEROGLYPH-13D18;Lo;0;L;;;;;N;;;;; +13D19;EGYPTIAN HIEROGLYPH-13D19;Lo;0;L;;;;;N;;;;; +13D1A;EGYPTIAN HIEROGLYPH-13D1A;Lo;0;L;;;;;N;;;;; +13D1B;EGYPTIAN HIEROGLYPH-13D1B;Lo;0;L;;;;;N;;;;; +13D1C;EGYPTIAN HIEROGLYPH-13D1C;Lo;0;L;;;;;N;;;;; +13D1D;EGYPTIAN HIEROGLYPH-13D1D;Lo;0;L;;;;;N;;;;; +13D1E;EGYPTIAN HIEROGLYPH-13D1E;Lo;0;L;;;;;N;;;;; +13D1F;EGYPTIAN HIEROGLYPH-13D1F;Lo;0;L;;;;;N;;;;; +13D20;EGYPTIAN HIEROGLYPH-13D20;Lo;0;L;;;;;N;;;;; +13D21;EGYPTIAN HIEROGLYPH-13D21;Lo;0;L;;;;;N;;;;; +13D22;EGYPTIAN HIEROGLYPH-13D22;Lo;0;L;;;;;N;;;;; +13D23;EGYPTIAN HIEROGLYPH-13D23;Lo;0;L;;;;;N;;;;; +13D24;EGYPTIAN HIEROGLYPH-13D24;Lo;0;L;;;;;N;;;;; +13D25;EGYPTIAN HIEROGLYPH-13D25;Lo;0;L;;;;;N;;;;; +13D26;EGYPTIAN HIEROGLYPH-13D26;Lo;0;L;;;;;N;;;;; +13D27;EGYPTIAN HIEROGLYPH-13D27;Lo;0;L;;;;;N;;;;; +13D28;EGYPTIAN HIEROGLYPH-13D28;Lo;0;L;;;;;N;;;;; +13D29;EGYPTIAN HIEROGLYPH-13D29;Lo;0;L;;;;;N;;;;; +13D2A;EGYPTIAN HIEROGLYPH-13D2A;Lo;0;L;;;;;N;;;;; +13D2B;EGYPTIAN HIEROGLYPH-13D2B;Lo;0;L;;;;;N;;;;; +13D2C;EGYPTIAN HIEROGLYPH-13D2C;Lo;0;L;;;;;N;;;;; +13D2D;EGYPTIAN HIEROGLYPH-13D2D;Lo;0;L;;;;;N;;;;; +13D2E;EGYPTIAN HIEROGLYPH-13D2E;Lo;0;L;;;;;N;;;;; +13D2F;EGYPTIAN HIEROGLYPH-13D2F;Lo;0;L;;;;;N;;;;; +13D30;EGYPTIAN HIEROGLYPH-13D30;Lo;0;L;;;;;N;;;;; +13D31;EGYPTIAN HIEROGLYPH-13D31;Lo;0;L;;;;;N;;;;; +13D32;EGYPTIAN HIEROGLYPH-13D32;Lo;0;L;;;;;N;;;;; +13D33;EGYPTIAN HIEROGLYPH-13D33;Lo;0;L;;;;;N;;;;; +13D34;EGYPTIAN HIEROGLYPH-13D34;Lo;0;L;;;;;N;;;;; +13D35;EGYPTIAN HIEROGLYPH-13D35;Lo;0;L;;;;;N;;;;; +13D36;EGYPTIAN HIEROGLYPH-13D36;Lo;0;L;;;;;N;;;;; +13D37;EGYPTIAN HIEROGLYPH-13D37;Lo;0;L;;;;;N;;;;; +13D38;EGYPTIAN HIEROGLYPH-13D38;Lo;0;L;;;;;N;;;;; +13D39;EGYPTIAN HIEROGLYPH-13D39;Lo;0;L;;;;;N;;;;; +13D3A;EGYPTIAN HIEROGLYPH-13D3A;Lo;0;L;;;;;N;;;;; +13D3B;EGYPTIAN HIEROGLYPH-13D3B;Lo;0;L;;;;;N;;;;; +13D3C;EGYPTIAN HIEROGLYPH-13D3C;Lo;0;L;;;;;N;;;;; +13D3D;EGYPTIAN HIEROGLYPH-13D3D;Lo;0;L;;;;;N;;;;; +13D3E;EGYPTIAN HIEROGLYPH-13D3E;Lo;0;L;;;;;N;;;;; +13D3F;EGYPTIAN HIEROGLYPH-13D3F;Lo;0;L;;;;;N;;;;; +13D40;EGYPTIAN HIEROGLYPH-13D40;Lo;0;L;;;;;N;;;;; +13D41;EGYPTIAN HIEROGLYPH-13D41;Lo;0;L;;;;;N;;;;; +13D42;EGYPTIAN HIEROGLYPH-13D42;Lo;0;L;;;;;N;;;;; +13D43;EGYPTIAN HIEROGLYPH-13D43;Lo;0;L;;;;;N;;;;; +13D44;EGYPTIAN HIEROGLYPH-13D44;Lo;0;L;;;;;N;;;;; +13D45;EGYPTIAN HIEROGLYPH-13D45;Lo;0;L;;;;;N;;;;; +13D46;EGYPTIAN HIEROGLYPH-13D46;Lo;0;L;;;;;N;;;;; +13D47;EGYPTIAN HIEROGLYPH-13D47;Lo;0;L;;;;;N;;;;; +13D48;EGYPTIAN HIEROGLYPH-13D48;Lo;0;L;;;;;N;;;;; +13D49;EGYPTIAN HIEROGLYPH-13D49;Lo;0;L;;;;;N;;;;; +13D4A;EGYPTIAN HIEROGLYPH-13D4A;Lo;0;L;;;;;N;;;;; +13D4B;EGYPTIAN HIEROGLYPH-13D4B;Lo;0;L;;;;;N;;;;; +13D4C;EGYPTIAN HIEROGLYPH-13D4C;Lo;0;L;;;;;N;;;;; +13D4D;EGYPTIAN HIEROGLYPH-13D4D;Lo;0;L;;;;;N;;;;; +13D4E;EGYPTIAN HIEROGLYPH-13D4E;Lo;0;L;;;;;N;;;;; +13D4F;EGYPTIAN HIEROGLYPH-13D4F;Lo;0;L;;;;;N;;;;; +13D50;EGYPTIAN HIEROGLYPH-13D50;Lo;0;L;;;;;N;;;;; +13D51;EGYPTIAN HIEROGLYPH-13D51;Lo;0;L;;;;;N;;;;; +13D52;EGYPTIAN HIEROGLYPH-13D52;Lo;0;L;;;;;N;;;;; +13D53;EGYPTIAN HIEROGLYPH-13D53;Lo;0;L;;;;;N;;;;; +13D54;EGYPTIAN HIEROGLYPH-13D54;Lo;0;L;;;;;N;;;;; +13D55;EGYPTIAN HIEROGLYPH-13D55;Lo;0;L;;;;;N;;;;; +13D56;EGYPTIAN HIEROGLYPH-13D56;Lo;0;L;;;;;N;;;;; +13D57;EGYPTIAN HIEROGLYPH-13D57;Lo;0;L;;;;;N;;;;; +13D58;EGYPTIAN HIEROGLYPH-13D58;Lo;0;L;;;;;N;;;;; +13D59;EGYPTIAN HIEROGLYPH-13D59;Lo;0;L;;;;;N;;;;; +13D5A;EGYPTIAN HIEROGLYPH-13D5A;Lo;0;L;;;;;N;;;;; +13D5B;EGYPTIAN HIEROGLYPH-13D5B;Lo;0;L;;;;;N;;;;; +13D5C;EGYPTIAN HIEROGLYPH-13D5C;Lo;0;L;;;;;N;;;;; +13D5D;EGYPTIAN HIEROGLYPH-13D5D;Lo;0;L;;;;;N;;;;; +13D5E;EGYPTIAN HIEROGLYPH-13D5E;Lo;0;L;;;;;N;;;;; +13D5F;EGYPTIAN HIEROGLYPH-13D5F;Lo;0;L;;;;;N;;;;; +13D60;EGYPTIAN HIEROGLYPH-13D60;Lo;0;L;;;;;N;;;;; +13D61;EGYPTIAN HIEROGLYPH-13D61;Lo;0;L;;;;;N;;;;; +13D62;EGYPTIAN HIEROGLYPH-13D62;Lo;0;L;;;;;N;;;;; +13D63;EGYPTIAN HIEROGLYPH-13D63;Lo;0;L;;;;;N;;;;; +13D64;EGYPTIAN HIEROGLYPH-13D64;Lo;0;L;;;;;N;;;;; +13D65;EGYPTIAN HIEROGLYPH-13D65;Lo;0;L;;;;;N;;;;; +13D66;EGYPTIAN HIEROGLYPH-13D66;Lo;0;L;;;;;N;;;;; +13D67;EGYPTIAN HIEROGLYPH-13D67;Lo;0;L;;;;;N;;;;; +13D68;EGYPTIAN HIEROGLYPH-13D68;Lo;0;L;;;;;N;;;;; +13D69;EGYPTIAN HIEROGLYPH-13D69;Lo;0;L;;;;;N;;;;; +13D6A;EGYPTIAN HIEROGLYPH-13D6A;Lo;0;L;;;;;N;;;;; +13D6B;EGYPTIAN HIEROGLYPH-13D6B;Lo;0;L;;;;;N;;;;; +13D6C;EGYPTIAN HIEROGLYPH-13D6C;Lo;0;L;;;;;N;;;;; +13D6D;EGYPTIAN HIEROGLYPH-13D6D;Lo;0;L;;;;;N;;;;; +13D6E;EGYPTIAN HIEROGLYPH-13D6E;Lo;0;L;;;;;N;;;;; +13D6F;EGYPTIAN HIEROGLYPH-13D6F;Lo;0;L;;;;;N;;;;; +13D70;EGYPTIAN HIEROGLYPH-13D70;Lo;0;L;;;;;N;;;;; +13D71;EGYPTIAN HIEROGLYPH-13D71;Lo;0;L;;;;;N;;;;; +13D72;EGYPTIAN HIEROGLYPH-13D72;Lo;0;L;;;;;N;;;;; +13D73;EGYPTIAN HIEROGLYPH-13D73;Lo;0;L;;;;;N;;;;; +13D74;EGYPTIAN HIEROGLYPH-13D74;Lo;0;L;;;;;N;;;;; +13D75;EGYPTIAN HIEROGLYPH-13D75;Lo;0;L;;;;;N;;;;; +13D76;EGYPTIAN HIEROGLYPH-13D76;Lo;0;L;;;;;N;;;;; +13D77;EGYPTIAN HIEROGLYPH-13D77;Lo;0;L;;;;;N;;;;; +13D78;EGYPTIAN HIEROGLYPH-13D78;Lo;0;L;;;;;N;;;;; +13D79;EGYPTIAN HIEROGLYPH-13D79;Lo;0;L;;;;;N;;;;; +13D7A;EGYPTIAN HIEROGLYPH-13D7A;Lo;0;L;;;;;N;;;;; +13D7B;EGYPTIAN HIEROGLYPH-13D7B;Lo;0;L;;;;;N;;;;; +13D7C;EGYPTIAN HIEROGLYPH-13D7C;Lo;0;L;;;;;N;;;;; +13D7D;EGYPTIAN HIEROGLYPH-13D7D;Lo;0;L;;;;;N;;;;; +13D7E;EGYPTIAN HIEROGLYPH-13D7E;Lo;0;L;;;;;N;;;;; +13D7F;EGYPTIAN HIEROGLYPH-13D7F;Lo;0;L;;;;;N;;;;; +13D80;EGYPTIAN HIEROGLYPH-13D80;Lo;0;L;;;;;N;;;;; +13D81;EGYPTIAN HIEROGLYPH-13D81;Lo;0;L;;;;;N;;;;; +13D82;EGYPTIAN HIEROGLYPH-13D82;Lo;0;L;;;;;N;;;;; +13D83;EGYPTIAN HIEROGLYPH-13D83;Lo;0;L;;;;;N;;;;; +13D84;EGYPTIAN HIEROGLYPH-13D84;Lo;0;L;;;;;N;;;;; +13D85;EGYPTIAN HIEROGLYPH-13D85;Lo;0;L;;;;;N;;;;; +13D86;EGYPTIAN HIEROGLYPH-13D86;Lo;0;L;;;;;N;;;;; +13D87;EGYPTIAN HIEROGLYPH-13D87;Lo;0;L;;;;;N;;;;; +13D88;EGYPTIAN HIEROGLYPH-13D88;Lo;0;L;;;;;N;;;;; +13D89;EGYPTIAN HIEROGLYPH-13D89;Lo;0;L;;;;;N;;;;; +13D8A;EGYPTIAN HIEROGLYPH-13D8A;Lo;0;L;;;;;N;;;;; +13D8B;EGYPTIAN HIEROGLYPH-13D8B;Lo;0;L;;;;;N;;;;; +13D8C;EGYPTIAN HIEROGLYPH-13D8C;Lo;0;L;;;;;N;;;;; +13D8D;EGYPTIAN HIEROGLYPH-13D8D;Lo;0;L;;;;;N;;;;; +13D8E;EGYPTIAN HIEROGLYPH-13D8E;Lo;0;L;;;;;N;;;;; +13D8F;EGYPTIAN HIEROGLYPH-13D8F;Lo;0;L;;;;;N;;;;; +13D90;EGYPTIAN HIEROGLYPH-13D90;Lo;0;L;;;;;N;;;;; +13D91;EGYPTIAN HIEROGLYPH-13D91;Lo;0;L;;;;;N;;;;; +13D92;EGYPTIAN HIEROGLYPH-13D92;Lo;0;L;;;;;N;;;;; +13D93;EGYPTIAN HIEROGLYPH-13D93;Lo;0;L;;;;;N;;;;; +13D94;EGYPTIAN HIEROGLYPH-13D94;Lo;0;L;;;;;N;;;;; +13D95;EGYPTIAN HIEROGLYPH-13D95;Lo;0;L;;;;;N;;;;; +13D96;EGYPTIAN HIEROGLYPH-13D96;Lo;0;L;;;;;N;;;;; +13D97;EGYPTIAN HIEROGLYPH-13D97;Lo;0;L;;;;;N;;;;; +13D98;EGYPTIAN HIEROGLYPH-13D98;Lo;0;L;;;;;N;;;;; +13D99;EGYPTIAN HIEROGLYPH-13D99;Lo;0;L;;;;;N;;;;; +13D9A;EGYPTIAN HIEROGLYPH-13D9A;Lo;0;L;;;;;N;;;;; +13D9B;EGYPTIAN HIEROGLYPH-13D9B;Lo;0;L;;;;;N;;;;; +13D9C;EGYPTIAN HIEROGLYPH-13D9C;Lo;0;L;;;;;N;;;;; +13D9D;EGYPTIAN HIEROGLYPH-13D9D;Lo;0;L;;;;;N;;;;; +13D9E;EGYPTIAN HIEROGLYPH-13D9E;Lo;0;L;;;;;N;;;;; +13D9F;EGYPTIAN HIEROGLYPH-13D9F;Lo;0;L;;;;;N;;;;; +13DA0;EGYPTIAN HIEROGLYPH-13DA0;Lo;0;L;;;;;N;;;;; +13DA1;EGYPTIAN HIEROGLYPH-13DA1;Lo;0;L;;;;;N;;;;; +13DA2;EGYPTIAN HIEROGLYPH-13DA2;Lo;0;L;;;;;N;;;;; +13DA3;EGYPTIAN HIEROGLYPH-13DA3;Lo;0;L;;;;;N;;;;; +13DA4;EGYPTIAN HIEROGLYPH-13DA4;Lo;0;L;;;;;N;;;;; +13DA5;EGYPTIAN HIEROGLYPH-13DA5;Lo;0;L;;;;;N;;;;; +13DA6;EGYPTIAN HIEROGLYPH-13DA6;Lo;0;L;;;;;N;;;;; +13DA7;EGYPTIAN HIEROGLYPH-13DA7;Lo;0;L;;;;;N;;;;; +13DA8;EGYPTIAN HIEROGLYPH-13DA8;Lo;0;L;;;;;N;;;;; +13DA9;EGYPTIAN HIEROGLYPH-13DA9;Lo;0;L;;;;;N;;;;; +13DAA;EGYPTIAN HIEROGLYPH-13DAA;Lo;0;L;;;;;N;;;;; +13DAB;EGYPTIAN HIEROGLYPH-13DAB;Lo;0;L;;;;;N;;;;; +13DAC;EGYPTIAN HIEROGLYPH-13DAC;Lo;0;L;;;;;N;;;;; +13DAD;EGYPTIAN HIEROGLYPH-13DAD;Lo;0;L;;;;;N;;;;; +13DAE;EGYPTIAN HIEROGLYPH-13DAE;Lo;0;L;;;;;N;;;;; +13DAF;EGYPTIAN HIEROGLYPH-13DAF;Lo;0;L;;;;;N;;;;; +13DB0;EGYPTIAN HIEROGLYPH-13DB0;Lo;0;L;;;;;N;;;;; +13DB1;EGYPTIAN HIEROGLYPH-13DB1;Lo;0;L;;;;;N;;;;; +13DB2;EGYPTIAN HIEROGLYPH-13DB2;Lo;0;L;;;;;N;;;;; +13DB3;EGYPTIAN HIEROGLYPH-13DB3;Lo;0;L;;;;;N;;;;; +13DB4;EGYPTIAN HIEROGLYPH-13DB4;Lo;0;L;;;;;N;;;;; +13DB5;EGYPTIAN HIEROGLYPH-13DB5;Lo;0;L;;;;;N;;;;; +13DB6;EGYPTIAN HIEROGLYPH-13DB6;Lo;0;L;;;;;N;;;;; +13DB7;EGYPTIAN HIEROGLYPH-13DB7;Lo;0;L;;;;;N;;;;; +13DB8;EGYPTIAN HIEROGLYPH-13DB8;Lo;0;L;;;;;N;;;;; +13DB9;EGYPTIAN HIEROGLYPH-13DB9;Lo;0;L;;;;;N;;;;; +13DBA;EGYPTIAN HIEROGLYPH-13DBA;Lo;0;L;;;;;N;;;;; +13DBB;EGYPTIAN HIEROGLYPH-13DBB;Lo;0;L;;;;;N;;;;; +13DBC;EGYPTIAN HIEROGLYPH-13DBC;Lo;0;L;;;;;N;;;;; +13DBD;EGYPTIAN HIEROGLYPH-13DBD;Lo;0;L;;;;;N;;;;; +13DBE;EGYPTIAN HIEROGLYPH-13DBE;Lo;0;L;;;;;N;;;;; +13DBF;EGYPTIAN HIEROGLYPH-13DBF;Lo;0;L;;;;;N;;;;; +13DC0;EGYPTIAN HIEROGLYPH-13DC0;Lo;0;L;;;;;N;;;;; +13DC1;EGYPTIAN HIEROGLYPH-13DC1;Lo;0;L;;;;;N;;;;; +13DC2;EGYPTIAN HIEROGLYPH-13DC2;Lo;0;L;;;;;N;;;;; +13DC3;EGYPTIAN HIEROGLYPH-13DC3;Lo;0;L;;;;;N;;;;; +13DC4;EGYPTIAN HIEROGLYPH-13DC4;Lo;0;L;;;;;N;;;;; +13DC5;EGYPTIAN HIEROGLYPH-13DC5;Lo;0;L;;;;;N;;;;; +13DC6;EGYPTIAN HIEROGLYPH-13DC6;Lo;0;L;;;;;N;;;;; +13DC7;EGYPTIAN HIEROGLYPH-13DC7;Lo;0;L;;;;;N;;;;; +13DC8;EGYPTIAN HIEROGLYPH-13DC8;Lo;0;L;;;;;N;;;;; +13DC9;EGYPTIAN HIEROGLYPH-13DC9;Lo;0;L;;;;;N;;;;; +13DCA;EGYPTIAN HIEROGLYPH-13DCA;Lo;0;L;;;;;N;;;;; +13DCB;EGYPTIAN HIEROGLYPH-13DCB;Lo;0;L;;;;;N;;;;; +13DCC;EGYPTIAN HIEROGLYPH-13DCC;Lo;0;L;;;;;N;;;;; +13DCD;EGYPTIAN HIEROGLYPH-13DCD;Lo;0;L;;;;;N;;;;; +13DCE;EGYPTIAN HIEROGLYPH-13DCE;Lo;0;L;;;;;N;;;;; +13DCF;EGYPTIAN HIEROGLYPH-13DCF;Lo;0;L;;;;;N;;;;; +13DD0;EGYPTIAN HIEROGLYPH-13DD0;Lo;0;L;;;;;N;;;;; +13DD1;EGYPTIAN HIEROGLYPH-13DD1;Lo;0;L;;;;;N;;;;; +13DD2;EGYPTIAN HIEROGLYPH-13DD2;Lo;0;L;;;;;N;;;;; +13DD3;EGYPTIAN HIEROGLYPH-13DD3;Lo;0;L;;;;;N;;;;; +13DD4;EGYPTIAN HIEROGLYPH-13DD4;Lo;0;L;;;;;N;;;;; +13DD5;EGYPTIAN HIEROGLYPH-13DD5;Lo;0;L;;;;;N;;;;; +13DD6;EGYPTIAN HIEROGLYPH-13DD6;Lo;0;L;;;;;N;;;;; +13DD7;EGYPTIAN HIEROGLYPH-13DD7;Lo;0;L;;;;;N;;;;; +13DD8;EGYPTIAN HIEROGLYPH-13DD8;Lo;0;L;;;;;N;;;;; +13DD9;EGYPTIAN HIEROGLYPH-13DD9;Lo;0;L;;;;;N;;;;; +13DDA;EGYPTIAN HIEROGLYPH-13DDA;Lo;0;L;;;;;N;;;;; +13DDB;EGYPTIAN HIEROGLYPH-13DDB;Lo;0;L;;;;;N;;;;; +13DDC;EGYPTIAN HIEROGLYPH-13DDC;Lo;0;L;;;;;N;;;;; +13DDD;EGYPTIAN HIEROGLYPH-13DDD;Lo;0;L;;;;;N;;;;; +13DDE;EGYPTIAN HIEROGLYPH-13DDE;Lo;0;L;;;;;N;;;;; +13DDF;EGYPTIAN HIEROGLYPH-13DDF;Lo;0;L;;;;;N;;;;; +13DE0;EGYPTIAN HIEROGLYPH-13DE0;Lo;0;L;;;;;N;;;;; +13DE1;EGYPTIAN HIEROGLYPH-13DE1;Lo;0;L;;;;;N;;;;; +13DE2;EGYPTIAN HIEROGLYPH-13DE2;Lo;0;L;;;;;N;;;;; +13DE3;EGYPTIAN HIEROGLYPH-13DE3;Lo;0;L;;;;;N;;;;; +13DE4;EGYPTIAN HIEROGLYPH-13DE4;Lo;0;L;;;;;N;;;;; +13DE5;EGYPTIAN HIEROGLYPH-13DE5;Lo;0;L;;;;;N;;;;; +13DE6;EGYPTIAN HIEROGLYPH-13DE6;Lo;0;L;;;;;N;;;;; +13DE7;EGYPTIAN HIEROGLYPH-13DE7;Lo;0;L;;;;;N;;;;; +13DE8;EGYPTIAN HIEROGLYPH-13DE8;Lo;0;L;;;;;N;;;;; +13DE9;EGYPTIAN HIEROGLYPH-13DE9;Lo;0;L;;;;;N;;;;; +13DEA;EGYPTIAN HIEROGLYPH-13DEA;Lo;0;L;;;;;N;;;;; +13DEB;EGYPTIAN HIEROGLYPH-13DEB;Lo;0;L;;;;;N;;;;; +13DEC;EGYPTIAN HIEROGLYPH-13DEC;Lo;0;L;;;;;N;;;;; +13DED;EGYPTIAN HIEROGLYPH-13DED;Lo;0;L;;;;;N;;;;; +13DEE;EGYPTIAN HIEROGLYPH-13DEE;Lo;0;L;;;;;N;;;;; +13DEF;EGYPTIAN HIEROGLYPH-13DEF;Lo;0;L;;;;;N;;;;; +13DF0;EGYPTIAN HIEROGLYPH-13DF0;Lo;0;L;;;;;N;;;;; +13DF1;EGYPTIAN HIEROGLYPH-13DF1;Lo;0;L;;;;;N;;;;; +13DF2;EGYPTIAN HIEROGLYPH-13DF2;Lo;0;L;;;;;N;;;;; +13DF3;EGYPTIAN HIEROGLYPH-13DF3;Lo;0;L;;;;;N;;;;; +13DF4;EGYPTIAN HIEROGLYPH-13DF4;Lo;0;L;;;;;N;;;;; +13DF5;EGYPTIAN HIEROGLYPH-13DF5;Lo;0;L;;;;;N;;;;; +13DF6;EGYPTIAN HIEROGLYPH-13DF6;Lo;0;L;;;;;N;;;;; +13DF7;EGYPTIAN HIEROGLYPH-13DF7;Lo;0;L;;;;;N;;;;; +13DF8;EGYPTIAN HIEROGLYPH-13DF8;Lo;0;L;;;;;N;;;;; +13DF9;EGYPTIAN HIEROGLYPH-13DF9;Lo;0;L;;;;;N;;;;; +13DFA;EGYPTIAN HIEROGLYPH-13DFA;Lo;0;L;;;;;N;;;;; +13DFB;EGYPTIAN HIEROGLYPH-13DFB;Lo;0;L;;;;;N;;;;; +13DFC;EGYPTIAN HIEROGLYPH-13DFC;Lo;0;L;;;;;N;;;;; +13DFD;EGYPTIAN HIEROGLYPH-13DFD;Lo;0;L;;;;;N;;;;; +13DFE;EGYPTIAN HIEROGLYPH-13DFE;Lo;0;L;;;;;N;;;;; +13DFF;EGYPTIAN HIEROGLYPH-13DFF;Lo;0;L;;;;;N;;;;; +13E00;EGYPTIAN HIEROGLYPH-13E00;Lo;0;L;;;;;N;;;;; +13E01;EGYPTIAN HIEROGLYPH-13E01;Lo;0;L;;;;;N;;;;; +13E02;EGYPTIAN HIEROGLYPH-13E02;Lo;0;L;;;;;N;;;;; +13E03;EGYPTIAN HIEROGLYPH-13E03;Lo;0;L;;;;;N;;;;; +13E04;EGYPTIAN HIEROGLYPH-13E04;Lo;0;L;;;;;N;;;;; +13E05;EGYPTIAN HIEROGLYPH-13E05;Lo;0;L;;;;;N;;;;; +13E06;EGYPTIAN HIEROGLYPH-13E06;Lo;0;L;;;;;N;;;;; +13E07;EGYPTIAN HIEROGLYPH-13E07;Lo;0;L;;;;;N;;;;; +13E08;EGYPTIAN HIEROGLYPH-13E08;Lo;0;L;;;;;N;;;;; +13E09;EGYPTIAN HIEROGLYPH-13E09;Lo;0;L;;;;;N;;;;; +13E0A;EGYPTIAN HIEROGLYPH-13E0A;Lo;0;L;;;;;N;;;;; +13E0B;EGYPTIAN HIEROGLYPH-13E0B;Lo;0;L;;;;;N;;;;; +13E0C;EGYPTIAN HIEROGLYPH-13E0C;Lo;0;L;;;;;N;;;;; +13E0D;EGYPTIAN HIEROGLYPH-13E0D;Lo;0;L;;;;;N;;;;; +13E0E;EGYPTIAN HIEROGLYPH-13E0E;Lo;0;L;;;;;N;;;;; +13E0F;EGYPTIAN HIEROGLYPH-13E0F;Lo;0;L;;;;;N;;;;; +13E10;EGYPTIAN HIEROGLYPH-13E10;Lo;0;L;;;;;N;;;;; +13E11;EGYPTIAN HIEROGLYPH-13E11;Lo;0;L;;;;;N;;;;; +13E12;EGYPTIAN HIEROGLYPH-13E12;Lo;0;L;;;;;N;;;;; +13E13;EGYPTIAN HIEROGLYPH-13E13;Lo;0;L;;;;;N;;;;; +13E14;EGYPTIAN HIEROGLYPH-13E14;Lo;0;L;;;;;N;;;;; +13E15;EGYPTIAN HIEROGLYPH-13E15;Lo;0;L;;;;;N;;;;; +13E16;EGYPTIAN HIEROGLYPH-13E16;Lo;0;L;;;;;N;;;;; +13E17;EGYPTIAN HIEROGLYPH-13E17;Lo;0;L;;;;;N;;;;; +13E18;EGYPTIAN HIEROGLYPH-13E18;Lo;0;L;;;;;N;;;;; +13E19;EGYPTIAN HIEROGLYPH-13E19;Lo;0;L;;;;;N;;;;; +13E1A;EGYPTIAN HIEROGLYPH-13E1A;Lo;0;L;;;;;N;;;;; +13E1B;EGYPTIAN HIEROGLYPH-13E1B;Lo;0;L;;;;;N;;;;; +13E1C;EGYPTIAN HIEROGLYPH-13E1C;Lo;0;L;;;;;N;;;;; +13E1D;EGYPTIAN HIEROGLYPH-13E1D;Lo;0;L;;;;;N;;;;; +13E1E;EGYPTIAN HIEROGLYPH-13E1E;Lo;0;L;;;;;N;;;;; +13E1F;EGYPTIAN HIEROGLYPH-13E1F;Lo;0;L;;;;;N;;;;; +13E20;EGYPTIAN HIEROGLYPH-13E20;Lo;0;L;;;;;N;;;;; +13E21;EGYPTIAN HIEROGLYPH-13E21;Lo;0;L;;;;;N;;;;; +13E22;EGYPTIAN HIEROGLYPH-13E22;Lo;0;L;;;;;N;;;;; +13E23;EGYPTIAN HIEROGLYPH-13E23;Lo;0;L;;;;;N;;;;; +13E24;EGYPTIAN HIEROGLYPH-13E24;Lo;0;L;;;;;N;;;;; +13E25;EGYPTIAN HIEROGLYPH-13E25;Lo;0;L;;;;;N;;;;; +13E26;EGYPTIAN HIEROGLYPH-13E26;Lo;0;L;;;;;N;;;;; +13E27;EGYPTIAN HIEROGLYPH-13E27;Lo;0;L;;;;;N;;;;; +13E28;EGYPTIAN HIEROGLYPH-13E28;Lo;0;L;;;;;N;;;;; +13E29;EGYPTIAN HIEROGLYPH-13E29;Lo;0;L;;;;;N;;;;; +13E2A;EGYPTIAN HIEROGLYPH-13E2A;Lo;0;L;;;;;N;;;;; +13E2B;EGYPTIAN HIEROGLYPH-13E2B;Lo;0;L;;;;;N;;;;; +13E2C;EGYPTIAN HIEROGLYPH-13E2C;Lo;0;L;;;;;N;;;;; +13E2D;EGYPTIAN HIEROGLYPH-13E2D;Lo;0;L;;;;;N;;;;; +13E2E;EGYPTIAN HIEROGLYPH-13E2E;Lo;0;L;;;;;N;;;;; +13E2F;EGYPTIAN HIEROGLYPH-13E2F;Lo;0;L;;;;;N;;;;; +13E30;EGYPTIAN HIEROGLYPH-13E30;Lo;0;L;;;;;N;;;;; +13E31;EGYPTIAN HIEROGLYPH-13E31;Lo;0;L;;;;;N;;;;; +13E32;EGYPTIAN HIEROGLYPH-13E32;Lo;0;L;;;;;N;;;;; +13E33;EGYPTIAN HIEROGLYPH-13E33;Lo;0;L;;;;;N;;;;; +13E34;EGYPTIAN HIEROGLYPH-13E34;Lo;0;L;;;;;N;;;;; +13E35;EGYPTIAN HIEROGLYPH-13E35;Lo;0;L;;;;;N;;;;; +13E36;EGYPTIAN HIEROGLYPH-13E36;Lo;0;L;;;;;N;;;;; +13E37;EGYPTIAN HIEROGLYPH-13E37;Lo;0;L;;;;;N;;;;; +13E38;EGYPTIAN HIEROGLYPH-13E38;Lo;0;L;;;;;N;;;;; +13E39;EGYPTIAN HIEROGLYPH-13E39;Lo;0;L;;;;;N;;;;; +13E3A;EGYPTIAN HIEROGLYPH-13E3A;Lo;0;L;;;;;N;;;;; +13E3B;EGYPTIAN HIEROGLYPH-13E3B;Lo;0;L;;;;;N;;;;; +13E3C;EGYPTIAN HIEROGLYPH-13E3C;Lo;0;L;;;;;N;;;;; +13E3D;EGYPTIAN HIEROGLYPH-13E3D;Lo;0;L;;;;;N;;;;; +13E3E;EGYPTIAN HIEROGLYPH-13E3E;Lo;0;L;;;;;N;;;;; +13E3F;EGYPTIAN HIEROGLYPH-13E3F;Lo;0;L;;;;;N;;;;; +13E40;EGYPTIAN HIEROGLYPH-13E40;Lo;0;L;;;;;N;;;;; +13E41;EGYPTIAN HIEROGLYPH-13E41;Lo;0;L;;;;;N;;;;; +13E42;EGYPTIAN HIEROGLYPH-13E42;Lo;0;L;;;;;N;;;;; +13E43;EGYPTIAN HIEROGLYPH-13E43;Lo;0;L;;;;;N;;;;; +13E44;EGYPTIAN HIEROGLYPH-13E44;Lo;0;L;;;;;N;;;;; +13E45;EGYPTIAN HIEROGLYPH-13E45;Lo;0;L;;;;;N;;;;; +13E46;EGYPTIAN HIEROGLYPH-13E46;Lo;0;L;;;;;N;;;;; +13E47;EGYPTIAN HIEROGLYPH-13E47;Lo;0;L;;;;;N;;;;; +13E48;EGYPTIAN HIEROGLYPH-13E48;Lo;0;L;;;;;N;;;;; +13E49;EGYPTIAN HIEROGLYPH-13E49;Lo;0;L;;;;;N;;;;; +13E4A;EGYPTIAN HIEROGLYPH-13E4A;Lo;0;L;;;;;N;;;;; +13E4B;EGYPTIAN HIEROGLYPH-13E4B;Lo;0;L;;;;;N;;;;; +13E4C;EGYPTIAN HIEROGLYPH-13E4C;Lo;0;L;;;;;N;;;;; +13E4D;EGYPTIAN HIEROGLYPH-13E4D;Lo;0;L;;;;;N;;;;; +13E4E;EGYPTIAN HIEROGLYPH-13E4E;Lo;0;L;;;;;N;;;;; +13E4F;EGYPTIAN HIEROGLYPH-13E4F;Lo;0;L;;;;;N;;;;; +13E50;EGYPTIAN HIEROGLYPH-13E50;Lo;0;L;;;;;N;;;;; +13E51;EGYPTIAN HIEROGLYPH-13E51;Lo;0;L;;;;;N;;;;; +13E52;EGYPTIAN HIEROGLYPH-13E52;Lo;0;L;;;;;N;;;;; +13E53;EGYPTIAN HIEROGLYPH-13E53;Lo;0;L;;;;;N;;;;; +13E54;EGYPTIAN HIEROGLYPH-13E54;Lo;0;L;;;;;N;;;;; +13E55;EGYPTIAN HIEROGLYPH-13E55;Lo;0;L;;;;;N;;;;; +13E56;EGYPTIAN HIEROGLYPH-13E56;Lo;0;L;;;;;N;;;;; +13E57;EGYPTIAN HIEROGLYPH-13E57;Lo;0;L;;;;;N;;;;; +13E58;EGYPTIAN HIEROGLYPH-13E58;Lo;0;L;;;;;N;;;;; +13E59;EGYPTIAN HIEROGLYPH-13E59;Lo;0;L;;;;;N;;;;; +13E5A;EGYPTIAN HIEROGLYPH-13E5A;Lo;0;L;;;;;N;;;;; +13E5B;EGYPTIAN HIEROGLYPH-13E5B;Lo;0;L;;;;;N;;;;; +13E5C;EGYPTIAN HIEROGLYPH-13E5C;Lo;0;L;;;;;N;;;;; +13E5D;EGYPTIAN HIEROGLYPH-13E5D;Lo;0;L;;;;;N;;;;; +13E5E;EGYPTIAN HIEROGLYPH-13E5E;Lo;0;L;;;;;N;;;;; +13E5F;EGYPTIAN HIEROGLYPH-13E5F;Lo;0;L;;;;;N;;;;; +13E60;EGYPTIAN HIEROGLYPH-13E60;Lo;0;L;;;;;N;;;;; +13E61;EGYPTIAN HIEROGLYPH-13E61;Lo;0;L;;;;;N;;;;; +13E62;EGYPTIAN HIEROGLYPH-13E62;Lo;0;L;;;;;N;;;;; +13E63;EGYPTIAN HIEROGLYPH-13E63;Lo;0;L;;;;;N;;;;; +13E64;EGYPTIAN HIEROGLYPH-13E64;Lo;0;L;;;;;N;;;;; +13E65;EGYPTIAN HIEROGLYPH-13E65;Lo;0;L;;;;;N;;;;; +13E66;EGYPTIAN HIEROGLYPH-13E66;Lo;0;L;;;;;N;;;;; +13E67;EGYPTIAN HIEROGLYPH-13E67;Lo;0;L;;;;;N;;;;; +13E68;EGYPTIAN HIEROGLYPH-13E68;Lo;0;L;;;;;N;;;;; +13E69;EGYPTIAN HIEROGLYPH-13E69;Lo;0;L;;;;;N;;;;; +13E6A;EGYPTIAN HIEROGLYPH-13E6A;Lo;0;L;;;;;N;;;;; +13E6B;EGYPTIAN HIEROGLYPH-13E6B;Lo;0;L;;;;;N;;;;; +13E6C;EGYPTIAN HIEROGLYPH-13E6C;Lo;0;L;;;;;N;;;;; +13E6D;EGYPTIAN HIEROGLYPH-13E6D;Lo;0;L;;;;;N;;;;; +13E6E;EGYPTIAN HIEROGLYPH-13E6E;Lo;0;L;;;;;N;;;;; +13E6F;EGYPTIAN HIEROGLYPH-13E6F;Lo;0;L;;;;;N;;;;; +13E70;EGYPTIAN HIEROGLYPH-13E70;Lo;0;L;;;;;N;;;;; +13E71;EGYPTIAN HIEROGLYPH-13E71;Lo;0;L;;;;;N;;;;; +13E72;EGYPTIAN HIEROGLYPH-13E72;Lo;0;L;;;;;N;;;;; +13E73;EGYPTIAN HIEROGLYPH-13E73;Lo;0;L;;;;;N;;;;; +13E74;EGYPTIAN HIEROGLYPH-13E74;Lo;0;L;;;;;N;;;;; +13E75;EGYPTIAN HIEROGLYPH-13E75;Lo;0;L;;;;;N;;;;; +13E76;EGYPTIAN HIEROGLYPH-13E76;Lo;0;L;;;;;N;;;;; +13E77;EGYPTIAN HIEROGLYPH-13E77;Lo;0;L;;;;;N;;;;; +13E78;EGYPTIAN HIEROGLYPH-13E78;Lo;0;L;;;;;N;;;;; +13E79;EGYPTIAN HIEROGLYPH-13E79;Lo;0;L;;;;;N;;;;; +13E7A;EGYPTIAN HIEROGLYPH-13E7A;Lo;0;L;;;;;N;;;;; +13E7B;EGYPTIAN HIEROGLYPH-13E7B;Lo;0;L;;;;;N;;;;; +13E7C;EGYPTIAN HIEROGLYPH-13E7C;Lo;0;L;;;;;N;;;;; +13E7D;EGYPTIAN HIEROGLYPH-13E7D;Lo;0;L;;;;;N;;;;; +13E7E;EGYPTIAN HIEROGLYPH-13E7E;Lo;0;L;;;;;N;;;;; +13E7F;EGYPTIAN HIEROGLYPH-13E7F;Lo;0;L;;;;;N;;;;; +13E80;EGYPTIAN HIEROGLYPH-13E80;Lo;0;L;;;;;N;;;;; +13E81;EGYPTIAN HIEROGLYPH-13E81;Lo;0;L;;;;;N;;;;; +13E82;EGYPTIAN HIEROGLYPH-13E82;Lo;0;L;;;;;N;;;;; +13E83;EGYPTIAN HIEROGLYPH-13E83;Lo;0;L;;;;;N;;;;; +13E84;EGYPTIAN HIEROGLYPH-13E84;Lo;0;L;;;;;N;;;;; +13E85;EGYPTIAN HIEROGLYPH-13E85;Lo;0;L;;;;;N;;;;; +13E86;EGYPTIAN HIEROGLYPH-13E86;Lo;0;L;;;;;N;;;;; +13E87;EGYPTIAN HIEROGLYPH-13E87;Lo;0;L;;;;;N;;;;; +13E88;EGYPTIAN HIEROGLYPH-13E88;Lo;0;L;;;;;N;;;;; +13E89;EGYPTIAN HIEROGLYPH-13E89;Lo;0;L;;;;;N;;;;; +13E8A;EGYPTIAN HIEROGLYPH-13E8A;Lo;0;L;;;;;N;;;;; +13E8B;EGYPTIAN HIEROGLYPH-13E8B;Lo;0;L;;;;;N;;;;; +13E8C;EGYPTIAN HIEROGLYPH-13E8C;Lo;0;L;;;;;N;;;;; +13E8D;EGYPTIAN HIEROGLYPH-13E8D;Lo;0;L;;;;;N;;;;; +13E8E;EGYPTIAN HIEROGLYPH-13E8E;Lo;0;L;;;;;N;;;;; +13E8F;EGYPTIAN HIEROGLYPH-13E8F;Lo;0;L;;;;;N;;;;; +13E90;EGYPTIAN HIEROGLYPH-13E90;Lo;0;L;;;;;N;;;;; +13E91;EGYPTIAN HIEROGLYPH-13E91;Lo;0;L;;;;;N;;;;; +13E92;EGYPTIAN HIEROGLYPH-13E92;Lo;0;L;;;;;N;;;;; +13E93;EGYPTIAN HIEROGLYPH-13E93;Lo;0;L;;;;;N;;;;; +13E94;EGYPTIAN HIEROGLYPH-13E94;Lo;0;L;;;;;N;;;;; +13E95;EGYPTIAN HIEROGLYPH-13E95;Lo;0;L;;;;;N;;;;; +13E96;EGYPTIAN HIEROGLYPH-13E96;Lo;0;L;;;;;N;;;;; +13E97;EGYPTIAN HIEROGLYPH-13E97;Lo;0;L;;;;;N;;;;; +13E98;EGYPTIAN HIEROGLYPH-13E98;Lo;0;L;;;;;N;;;;; +13E99;EGYPTIAN HIEROGLYPH-13E99;Lo;0;L;;;;;N;;;;; +13E9A;EGYPTIAN HIEROGLYPH-13E9A;Lo;0;L;;;;;N;;;;; +13E9B;EGYPTIAN HIEROGLYPH-13E9B;Lo;0;L;;;;;N;;;;; +13E9C;EGYPTIAN HIEROGLYPH-13E9C;Lo;0;L;;;;;N;;;;; +13E9D;EGYPTIAN HIEROGLYPH-13E9D;Lo;0;L;;;;;N;;;;; +13E9E;EGYPTIAN HIEROGLYPH-13E9E;Lo;0;L;;;;;N;;;;; +13E9F;EGYPTIAN HIEROGLYPH-13E9F;Lo;0;L;;;;;N;;;;; +13EA0;EGYPTIAN HIEROGLYPH-13EA0;Lo;0;L;;;;;N;;;;; +13EA1;EGYPTIAN HIEROGLYPH-13EA1;Lo;0;L;;;;;N;;;;; +13EA2;EGYPTIAN HIEROGLYPH-13EA2;Lo;0;L;;;;;N;;;;; +13EA3;EGYPTIAN HIEROGLYPH-13EA3;Lo;0;L;;;;;N;;;;; +13EA4;EGYPTIAN HIEROGLYPH-13EA4;Lo;0;L;;;;;N;;;;; +13EA5;EGYPTIAN HIEROGLYPH-13EA5;Lo;0;L;;;;;N;;;;; +13EA6;EGYPTIAN HIEROGLYPH-13EA6;Lo;0;L;;;;;N;;;;; +13EA7;EGYPTIAN HIEROGLYPH-13EA7;Lo;0;L;;;;;N;;;;; +13EA8;EGYPTIAN HIEROGLYPH-13EA8;Lo;0;L;;;;;N;;;;; +13EA9;EGYPTIAN HIEROGLYPH-13EA9;Lo;0;L;;;;;N;;;;; +13EAA;EGYPTIAN HIEROGLYPH-13EAA;Lo;0;L;;;;;N;;;;; +13EAB;EGYPTIAN HIEROGLYPH-13EAB;Lo;0;L;;;;;N;;;;; +13EAC;EGYPTIAN HIEROGLYPH-13EAC;Lo;0;L;;;;;N;;;;; +13EAD;EGYPTIAN HIEROGLYPH-13EAD;Lo;0;L;;;;;N;;;;; +13EAE;EGYPTIAN HIEROGLYPH-13EAE;Lo;0;L;;;;;N;;;;; +13EAF;EGYPTIAN HIEROGLYPH-13EAF;Lo;0;L;;;;;N;;;;; +13EB0;EGYPTIAN HIEROGLYPH-13EB0;Lo;0;L;;;;;N;;;;; +13EB1;EGYPTIAN HIEROGLYPH-13EB1;Lo;0;L;;;;;N;;;;; +13EB2;EGYPTIAN HIEROGLYPH-13EB2;Lo;0;L;;;;;N;;;;; +13EB3;EGYPTIAN HIEROGLYPH-13EB3;Lo;0;L;;;;;N;;;;; +13EB4;EGYPTIAN HIEROGLYPH-13EB4;Lo;0;L;;;;;N;;;;; +13EB5;EGYPTIAN HIEROGLYPH-13EB5;Lo;0;L;;;;;N;;;;; +13EB6;EGYPTIAN HIEROGLYPH-13EB6;Lo;0;L;;;;;N;;;;; +13EB7;EGYPTIAN HIEROGLYPH-13EB7;Lo;0;L;;;;;N;;;;; +13EB8;EGYPTIAN HIEROGLYPH-13EB8;Lo;0;L;;;;;N;;;;; +13EB9;EGYPTIAN HIEROGLYPH-13EB9;Lo;0;L;;;;;N;;;;; +13EBA;EGYPTIAN HIEROGLYPH-13EBA;Lo;0;L;;;;;N;;;;; +13EBB;EGYPTIAN HIEROGLYPH-13EBB;Lo;0;L;;;;;N;;;;; +13EBC;EGYPTIAN HIEROGLYPH-13EBC;Lo;0;L;;;;;N;;;;; +13EBD;EGYPTIAN HIEROGLYPH-13EBD;Lo;0;L;;;;;N;;;;; +13EBE;EGYPTIAN HIEROGLYPH-13EBE;Lo;0;L;;;;;N;;;;; +13EBF;EGYPTIAN HIEROGLYPH-13EBF;Lo;0;L;;;;;N;;;;; +13EC0;EGYPTIAN HIEROGLYPH-13EC0;Lo;0;L;;;;;N;;;;; +13EC1;EGYPTIAN HIEROGLYPH-13EC1;Lo;0;L;;;;;N;;;;; +13EC2;EGYPTIAN HIEROGLYPH-13EC2;Lo;0;L;;;;;N;;;;; +13EC3;EGYPTIAN HIEROGLYPH-13EC3;Lo;0;L;;;;;N;;;;; +13EC4;EGYPTIAN HIEROGLYPH-13EC4;Lo;0;L;;;;;N;;;;; +13EC5;EGYPTIAN HIEROGLYPH-13EC5;Lo;0;L;;;;;N;;;;; +13EC6;EGYPTIAN HIEROGLYPH-13EC6;Lo;0;L;;;;;N;;;;; +13EC7;EGYPTIAN HIEROGLYPH-13EC7;Lo;0;L;;;;;N;;;;; +13EC8;EGYPTIAN HIEROGLYPH-13EC8;Lo;0;L;;;;;N;;;;; +13EC9;EGYPTIAN HIEROGLYPH-13EC9;Lo;0;L;;;;;N;;;;; +13ECA;EGYPTIAN HIEROGLYPH-13ECA;Lo;0;L;;;;;N;;;;; +13ECB;EGYPTIAN HIEROGLYPH-13ECB;Lo;0;L;;;;;N;;;;; +13ECC;EGYPTIAN HIEROGLYPH-13ECC;Lo;0;L;;;;;N;;;;; +13ECD;EGYPTIAN HIEROGLYPH-13ECD;Lo;0;L;;;;;N;;;;; +13ECE;EGYPTIAN HIEROGLYPH-13ECE;Lo;0;L;;;;;N;;;;; +13ECF;EGYPTIAN HIEROGLYPH-13ECF;Lo;0;L;;;;;N;;;;; +13ED0;EGYPTIAN HIEROGLYPH-13ED0;Lo;0;L;;;;;N;;;;; +13ED1;EGYPTIAN HIEROGLYPH-13ED1;Lo;0;L;;;;;N;;;;; +13ED2;EGYPTIAN HIEROGLYPH-13ED2;Lo;0;L;;;;;N;;;;; +13ED3;EGYPTIAN HIEROGLYPH-13ED3;Lo;0;L;;;;;N;;;;; +13ED4;EGYPTIAN HIEROGLYPH-13ED4;Lo;0;L;;;;;N;;;;; +13ED5;EGYPTIAN HIEROGLYPH-13ED5;Lo;0;L;;;;;N;;;;; +13ED6;EGYPTIAN HIEROGLYPH-13ED6;Lo;0;L;;;;;N;;;;; +13ED7;EGYPTIAN HIEROGLYPH-13ED7;Lo;0;L;;;;;N;;;;; +13ED8;EGYPTIAN HIEROGLYPH-13ED8;Lo;0;L;;;;;N;;;;; +13ED9;EGYPTIAN HIEROGLYPH-13ED9;Lo;0;L;;;;;N;;;;; +13EDA;EGYPTIAN HIEROGLYPH-13EDA;Lo;0;L;;;;;N;;;;; +13EDB;EGYPTIAN HIEROGLYPH-13EDB;Lo;0;L;;;;;N;;;;; +13EDC;EGYPTIAN HIEROGLYPH-13EDC;Lo;0;L;;;;;N;;;;; +13EDD;EGYPTIAN HIEROGLYPH-13EDD;Lo;0;L;;;;;N;;;;; +13EDE;EGYPTIAN HIEROGLYPH-13EDE;Lo;0;L;;;;;N;;;;; +13EDF;EGYPTIAN HIEROGLYPH-13EDF;Lo;0;L;;;;;N;;;;; +13EE0;EGYPTIAN HIEROGLYPH-13EE0;Lo;0;L;;;;;N;;;;; +13EE1;EGYPTIAN HIEROGLYPH-13EE1;Lo;0;L;;;;;N;;;;; +13EE2;EGYPTIAN HIEROGLYPH-13EE2;Lo;0;L;;;;;N;;;;; +13EE3;EGYPTIAN HIEROGLYPH-13EE3;Lo;0;L;;;;;N;;;;; +13EE4;EGYPTIAN HIEROGLYPH-13EE4;Lo;0;L;;;;;N;;;;; +13EE5;EGYPTIAN HIEROGLYPH-13EE5;Lo;0;L;;;;;N;;;;; +13EE6;EGYPTIAN HIEROGLYPH-13EE6;Lo;0;L;;;;;N;;;;; +13EE7;EGYPTIAN HIEROGLYPH-13EE7;Lo;0;L;;;;;N;;;;; +13EE8;EGYPTIAN HIEROGLYPH-13EE8;Lo;0;L;;;;;N;;;;; +13EE9;EGYPTIAN HIEROGLYPH-13EE9;Lo;0;L;;;;;N;;;;; +13EEA;EGYPTIAN HIEROGLYPH-13EEA;Lo;0;L;;;;;N;;;;; +13EEB;EGYPTIAN HIEROGLYPH-13EEB;Lo;0;L;;;;;N;;;;; +13EEC;EGYPTIAN HIEROGLYPH-13EEC;Lo;0;L;;;;;N;;;;; +13EED;EGYPTIAN HIEROGLYPH-13EED;Lo;0;L;;;;;N;;;;; +13EEE;EGYPTIAN HIEROGLYPH-13EEE;Lo;0;L;;;;;N;;;;; +13EEF;EGYPTIAN HIEROGLYPH-13EEF;Lo;0;L;;;;;N;;;;; +13EF0;EGYPTIAN HIEROGLYPH-13EF0;Lo;0;L;;;;;N;;;;; +13EF1;EGYPTIAN HIEROGLYPH-13EF1;Lo;0;L;;;;;N;;;;; +13EF2;EGYPTIAN HIEROGLYPH-13EF2;Lo;0;L;;;;;N;;;;; +13EF3;EGYPTIAN HIEROGLYPH-13EF3;Lo;0;L;;;;;N;;;;; +13EF4;EGYPTIAN HIEROGLYPH-13EF4;Lo;0;L;;;;;N;;;;; +13EF5;EGYPTIAN HIEROGLYPH-13EF5;Lo;0;L;;;;;N;;;;; +13EF6;EGYPTIAN HIEROGLYPH-13EF6;Lo;0;L;;;;;N;;;;; +13EF7;EGYPTIAN HIEROGLYPH-13EF7;Lo;0;L;;;;;N;;;;; +13EF8;EGYPTIAN HIEROGLYPH-13EF8;Lo;0;L;;;;;N;;;;; +13EF9;EGYPTIAN HIEROGLYPH-13EF9;Lo;0;L;;;;;N;;;;; +13EFA;EGYPTIAN HIEROGLYPH-13EFA;Lo;0;L;;;;;N;;;;; +13EFB;EGYPTIAN HIEROGLYPH-13EFB;Lo;0;L;;;;;N;;;;; +13EFC;EGYPTIAN HIEROGLYPH-13EFC;Lo;0;L;;;;;N;;;;; +13EFD;EGYPTIAN HIEROGLYPH-13EFD;Lo;0;L;;;;;N;;;;; +13EFE;EGYPTIAN HIEROGLYPH-13EFE;Lo;0;L;;;;;N;;;;; +13EFF;EGYPTIAN HIEROGLYPH-13EFF;Lo;0;L;;;;;N;;;;; +13F00;EGYPTIAN HIEROGLYPH-13F00;Lo;0;L;;;;;N;;;;; +13F01;EGYPTIAN HIEROGLYPH-13F01;Lo;0;L;;;;;N;;;;; +13F02;EGYPTIAN HIEROGLYPH-13F02;Lo;0;L;;;;;N;;;;; +13F03;EGYPTIAN HIEROGLYPH-13F03;Lo;0;L;;;;;N;;;;; +13F04;EGYPTIAN HIEROGLYPH-13F04;Lo;0;L;;;;;N;;;;; +13F05;EGYPTIAN HIEROGLYPH-13F05;Lo;0;L;;;;;N;;;;; +13F06;EGYPTIAN HIEROGLYPH-13F06;Lo;0;L;;;;;N;;;;; +13F07;EGYPTIAN HIEROGLYPH-13F07;Lo;0;L;;;;;N;;;;; +13F08;EGYPTIAN HIEROGLYPH-13F08;Lo;0;L;;;;;N;;;;; +13F09;EGYPTIAN HIEROGLYPH-13F09;Lo;0;L;;;;;N;;;;; +13F0A;EGYPTIAN HIEROGLYPH-13F0A;Lo;0;L;;;;;N;;;;; +13F0B;EGYPTIAN HIEROGLYPH-13F0B;Lo;0;L;;;;;N;;;;; +13F0C;EGYPTIAN HIEROGLYPH-13F0C;Lo;0;L;;;;;N;;;;; +13F0D;EGYPTIAN HIEROGLYPH-13F0D;Lo;0;L;;;;;N;;;;; +13F0E;EGYPTIAN HIEROGLYPH-13F0E;Lo;0;L;;;;;N;;;;; +13F0F;EGYPTIAN HIEROGLYPH-13F0F;Lo;0;L;;;;;N;;;;; +13F10;EGYPTIAN HIEROGLYPH-13F10;Lo;0;L;;;;;N;;;;; +13F11;EGYPTIAN HIEROGLYPH-13F11;Lo;0;L;;;;;N;;;;; +13F12;EGYPTIAN HIEROGLYPH-13F12;Lo;0;L;;;;;N;;;;; +13F13;EGYPTIAN HIEROGLYPH-13F13;Lo;0;L;;;;;N;;;;; +13F14;EGYPTIAN HIEROGLYPH-13F14;Lo;0;L;;;;;N;;;;; +13F15;EGYPTIAN HIEROGLYPH-13F15;Lo;0;L;;;;;N;;;;; +13F16;EGYPTIAN HIEROGLYPH-13F16;Lo;0;L;;;;;N;;;;; +13F17;EGYPTIAN HIEROGLYPH-13F17;Lo;0;L;;;;;N;;;;; +13F18;EGYPTIAN HIEROGLYPH-13F18;Lo;0;L;;;;;N;;;;; +13F19;EGYPTIAN HIEROGLYPH-13F19;Lo;0;L;;;;;N;;;;; +13F1A;EGYPTIAN HIEROGLYPH-13F1A;Lo;0;L;;;;;N;;;;; +13F1B;EGYPTIAN HIEROGLYPH-13F1B;Lo;0;L;;;;;N;;;;; +13F1C;EGYPTIAN HIEROGLYPH-13F1C;Lo;0;L;;;;;N;;;;; +13F1D;EGYPTIAN HIEROGLYPH-13F1D;Lo;0;L;;;;;N;;;;; +13F1E;EGYPTIAN HIEROGLYPH-13F1E;Lo;0;L;;;;;N;;;;; +13F1F;EGYPTIAN HIEROGLYPH-13F1F;Lo;0;L;;;;;N;;;;; +13F20;EGYPTIAN HIEROGLYPH-13F20;Lo;0;L;;;;;N;;;;; +13F21;EGYPTIAN HIEROGLYPH-13F21;Lo;0;L;;;;;N;;;;; +13F22;EGYPTIAN HIEROGLYPH-13F22;Lo;0;L;;;;;N;;;;; +13F23;EGYPTIAN HIEROGLYPH-13F23;Lo;0;L;;;;;N;;;;; +13F24;EGYPTIAN HIEROGLYPH-13F24;Lo;0;L;;;;;N;;;;; +13F25;EGYPTIAN HIEROGLYPH-13F25;Lo;0;L;;;;;N;;;;; +13F26;EGYPTIAN HIEROGLYPH-13F26;Lo;0;L;;;;;N;;;;; +13F27;EGYPTIAN HIEROGLYPH-13F27;Lo;0;L;;;;;N;;;;; +13F28;EGYPTIAN HIEROGLYPH-13F28;Lo;0;L;;;;;N;;;;; +13F29;EGYPTIAN HIEROGLYPH-13F29;Lo;0;L;;;;;N;;;;; +13F2A;EGYPTIAN HIEROGLYPH-13F2A;Lo;0;L;;;;;N;;;;; +13F2B;EGYPTIAN HIEROGLYPH-13F2B;Lo;0;L;;;;;N;;;;; +13F2C;EGYPTIAN HIEROGLYPH-13F2C;Lo;0;L;;;;;N;;;;; +13F2D;EGYPTIAN HIEROGLYPH-13F2D;Lo;0;L;;;;;N;;;;; +13F2E;EGYPTIAN HIEROGLYPH-13F2E;Lo;0;L;;;;;N;;;;; +13F2F;EGYPTIAN HIEROGLYPH-13F2F;Lo;0;L;;;;;N;;;;; +13F30;EGYPTIAN HIEROGLYPH-13F30;Lo;0;L;;;;;N;;;;; +13F31;EGYPTIAN HIEROGLYPH-13F31;Lo;0;L;;;;;N;;;;; +13F32;EGYPTIAN HIEROGLYPH-13F32;Lo;0;L;;;;;N;;;;; +13F33;EGYPTIAN HIEROGLYPH-13F33;Lo;0;L;;;;;N;;;;; +13F34;EGYPTIAN HIEROGLYPH-13F34;Lo;0;L;;;;;N;;;;; +13F35;EGYPTIAN HIEROGLYPH-13F35;Lo;0;L;;;;;N;;;;; +13F36;EGYPTIAN HIEROGLYPH-13F36;Lo;0;L;;;;;N;;;;; +13F37;EGYPTIAN HIEROGLYPH-13F37;Lo;0;L;;;;;N;;;;; +13F38;EGYPTIAN HIEROGLYPH-13F38;Lo;0;L;;;;;N;;;;; +13F39;EGYPTIAN HIEROGLYPH-13F39;Lo;0;L;;;;;N;;;;; +13F3A;EGYPTIAN HIEROGLYPH-13F3A;Lo;0;L;;;;;N;;;;; +13F3B;EGYPTIAN HIEROGLYPH-13F3B;Lo;0;L;;;;;N;;;;; +13F3C;EGYPTIAN HIEROGLYPH-13F3C;Lo;0;L;;;;;N;;;;; +13F3D;EGYPTIAN HIEROGLYPH-13F3D;Lo;0;L;;;;;N;;;;; +13F3E;EGYPTIAN HIEROGLYPH-13F3E;Lo;0;L;;;;;N;;;;; +13F3F;EGYPTIAN HIEROGLYPH-13F3F;Lo;0;L;;;;;N;;;;; +13F40;EGYPTIAN HIEROGLYPH-13F40;Lo;0;L;;;;;N;;;;; +13F41;EGYPTIAN HIEROGLYPH-13F41;Lo;0;L;;;;;N;;;;; +13F42;EGYPTIAN HIEROGLYPH-13F42;Lo;0;L;;;;;N;;;;; +13F43;EGYPTIAN HIEROGLYPH-13F43;Lo;0;L;;;;;N;;;;; +13F44;EGYPTIAN HIEROGLYPH-13F44;Lo;0;L;;;;;N;;;;; +13F45;EGYPTIAN HIEROGLYPH-13F45;Lo;0;L;;;;;N;;;;; +13F46;EGYPTIAN HIEROGLYPH-13F46;Lo;0;L;;;;;N;;;;; +13F47;EGYPTIAN HIEROGLYPH-13F47;Lo;0;L;;;;;N;;;;; +13F48;EGYPTIAN HIEROGLYPH-13F48;Lo;0;L;;;;;N;;;;; +13F49;EGYPTIAN HIEROGLYPH-13F49;Lo;0;L;;;;;N;;;;; +13F4A;EGYPTIAN HIEROGLYPH-13F4A;Lo;0;L;;;;;N;;;;; +13F4B;EGYPTIAN HIEROGLYPH-13F4B;Lo;0;L;;;;;N;;;;; +13F4C;EGYPTIAN HIEROGLYPH-13F4C;Lo;0;L;;;;;N;;;;; +13F4D;EGYPTIAN HIEROGLYPH-13F4D;Lo;0;L;;;;;N;;;;; +13F4E;EGYPTIAN HIEROGLYPH-13F4E;Lo;0;L;;;;;N;;;;; +13F4F;EGYPTIAN HIEROGLYPH-13F4F;Lo;0;L;;;;;N;;;;; +13F50;EGYPTIAN HIEROGLYPH-13F50;Lo;0;L;;;;;N;;;;; +13F51;EGYPTIAN HIEROGLYPH-13F51;Lo;0;L;;;;;N;;;;; +13F52;EGYPTIAN HIEROGLYPH-13F52;Lo;0;L;;;;;N;;;;; +13F53;EGYPTIAN HIEROGLYPH-13F53;Lo;0;L;;;;;N;;;;; +13F54;EGYPTIAN HIEROGLYPH-13F54;Lo;0;L;;;;;N;;;;; +13F55;EGYPTIAN HIEROGLYPH-13F55;Lo;0;L;;;;;N;;;;; +13F56;EGYPTIAN HIEROGLYPH-13F56;Lo;0;L;;;;;N;;;;; +13F57;EGYPTIAN HIEROGLYPH-13F57;Lo;0;L;;;;;N;;;;; +13F58;EGYPTIAN HIEROGLYPH-13F58;Lo;0;L;;;;;N;;;;; +13F59;EGYPTIAN HIEROGLYPH-13F59;Lo;0;L;;;;;N;;;;; +13F5A;EGYPTIAN HIEROGLYPH-13F5A;Lo;0;L;;;;;N;;;;; +13F5B;EGYPTIAN HIEROGLYPH-13F5B;Lo;0;L;;;;;N;;;;; +13F5C;EGYPTIAN HIEROGLYPH-13F5C;Lo;0;L;;;;;N;;;;; +13F5D;EGYPTIAN HIEROGLYPH-13F5D;Lo;0;L;;;;;N;;;;; +13F5E;EGYPTIAN HIEROGLYPH-13F5E;Lo;0;L;;;;;N;;;;; +13F5F;EGYPTIAN HIEROGLYPH-13F5F;Lo;0;L;;;;;N;;;;; +13F60;EGYPTIAN HIEROGLYPH-13F60;Lo;0;L;;;;;N;;;;; +13F61;EGYPTIAN HIEROGLYPH-13F61;Lo;0;L;;;;;N;;;;; +13F62;EGYPTIAN HIEROGLYPH-13F62;Lo;0;L;;;;;N;;;;; +13F63;EGYPTIAN HIEROGLYPH-13F63;Lo;0;L;;;;;N;;;;; +13F64;EGYPTIAN HIEROGLYPH-13F64;Lo;0;L;;;;;N;;;;; +13F65;EGYPTIAN HIEROGLYPH-13F65;Lo;0;L;;;;;N;;;;; +13F66;EGYPTIAN HIEROGLYPH-13F66;Lo;0;L;;;;;N;;;;; +13F67;EGYPTIAN HIEROGLYPH-13F67;Lo;0;L;;;;;N;;;;; +13F68;EGYPTIAN HIEROGLYPH-13F68;Lo;0;L;;;;;N;;;;; +13F69;EGYPTIAN HIEROGLYPH-13F69;Lo;0;L;;;;;N;;;;; +13F6A;EGYPTIAN HIEROGLYPH-13F6A;Lo;0;L;;;;;N;;;;; +13F6B;EGYPTIAN HIEROGLYPH-13F6B;Lo;0;L;;;;;N;;;;; +13F6C;EGYPTIAN HIEROGLYPH-13F6C;Lo;0;L;;;;;N;;;;; +13F6D;EGYPTIAN HIEROGLYPH-13F6D;Lo;0;L;;;;;N;;;;; +13F6E;EGYPTIAN HIEROGLYPH-13F6E;Lo;0;L;;;;;N;;;;; +13F6F;EGYPTIAN HIEROGLYPH-13F6F;Lo;0;L;;;;;N;;;;; +13F70;EGYPTIAN HIEROGLYPH-13F70;Lo;0;L;;;;;N;;;;; +13F71;EGYPTIAN HIEROGLYPH-13F71;Lo;0;L;;;;;N;;;;; +13F72;EGYPTIAN HIEROGLYPH-13F72;Lo;0;L;;;;;N;;;;; +13F73;EGYPTIAN HIEROGLYPH-13F73;Lo;0;L;;;;;N;;;;; +13F74;EGYPTIAN HIEROGLYPH-13F74;Lo;0;L;;;;;N;;;;; +13F75;EGYPTIAN HIEROGLYPH-13F75;Lo;0;L;;;;;N;;;;; +13F76;EGYPTIAN HIEROGLYPH-13F76;Lo;0;L;;;;;N;;;;; +13F77;EGYPTIAN HIEROGLYPH-13F77;Lo;0;L;;;;;N;;;;; +13F78;EGYPTIAN HIEROGLYPH-13F78;Lo;0;L;;;;;N;;;;; +13F79;EGYPTIAN HIEROGLYPH-13F79;Lo;0;L;;;;;N;;;;; +13F7A;EGYPTIAN HIEROGLYPH-13F7A;Lo;0;L;;;;;N;;;;; +13F7B;EGYPTIAN HIEROGLYPH-13F7B;Lo;0;L;;;;;N;;;;; +13F7C;EGYPTIAN HIEROGLYPH-13F7C;Lo;0;L;;;;;N;;;;; +13F7D;EGYPTIAN HIEROGLYPH-13F7D;Lo;0;L;;;;;N;;;;; +13F7E;EGYPTIAN HIEROGLYPH-13F7E;Lo;0;L;;;;;N;;;;; +13F7F;EGYPTIAN HIEROGLYPH-13F7F;Lo;0;L;;;;;N;;;;; +13F80;EGYPTIAN HIEROGLYPH-13F80;Lo;0;L;;;;;N;;;;; +13F81;EGYPTIAN HIEROGLYPH-13F81;Lo;0;L;;;;;N;;;;; +13F82;EGYPTIAN HIEROGLYPH-13F82;Lo;0;L;;;;;N;;;;; +13F83;EGYPTIAN HIEROGLYPH-13F83;Lo;0;L;;;;;N;;;;; +13F84;EGYPTIAN HIEROGLYPH-13F84;Lo;0;L;;;;;N;;;;; +13F85;EGYPTIAN HIEROGLYPH-13F85;Lo;0;L;;;;;N;;;;; +13F86;EGYPTIAN HIEROGLYPH-13F86;Lo;0;L;;;;;N;;;;; +13F87;EGYPTIAN HIEROGLYPH-13F87;Lo;0;L;;;;;N;;;;; +13F88;EGYPTIAN HIEROGLYPH-13F88;Lo;0;L;;;;;N;;;;; +13F89;EGYPTIAN HIEROGLYPH-13F89;Lo;0;L;;;;;N;;;;; +13F8A;EGYPTIAN HIEROGLYPH-13F8A;Lo;0;L;;;;;N;;;;; +13F8B;EGYPTIAN HIEROGLYPH-13F8B;Lo;0;L;;;;;N;;;;; +13F8C;EGYPTIAN HIEROGLYPH-13F8C;Lo;0;L;;;;;N;;;;; +13F8D;EGYPTIAN HIEROGLYPH-13F8D;Lo;0;L;;;;;N;;;;; +13F8E;EGYPTIAN HIEROGLYPH-13F8E;Lo;0;L;;;;;N;;;;; +13F8F;EGYPTIAN HIEROGLYPH-13F8F;Lo;0;L;;;;;N;;;;; +13F90;EGYPTIAN HIEROGLYPH-13F90;Lo;0;L;;;;;N;;;;; +13F91;EGYPTIAN HIEROGLYPH-13F91;Lo;0;L;;;;;N;;;;; +13F92;EGYPTIAN HIEROGLYPH-13F92;Lo;0;L;;;;;N;;;;; +13F93;EGYPTIAN HIEROGLYPH-13F93;Lo;0;L;;;;;N;;;;; +13F94;EGYPTIAN HIEROGLYPH-13F94;Lo;0;L;;;;;N;;;;; +13F95;EGYPTIAN HIEROGLYPH-13F95;Lo;0;L;;;;;N;;;;; +13F96;EGYPTIAN HIEROGLYPH-13F96;Lo;0;L;;;;;N;;;;; +13F97;EGYPTIAN HIEROGLYPH-13F97;Lo;0;L;;;;;N;;;;; +13F98;EGYPTIAN HIEROGLYPH-13F98;Lo;0;L;;;;;N;;;;; +13F99;EGYPTIAN HIEROGLYPH-13F99;Lo;0;L;;;;;N;;;;; +13F9A;EGYPTIAN HIEROGLYPH-13F9A;Lo;0;L;;;;;N;;;;; +13F9B;EGYPTIAN HIEROGLYPH-13F9B;Lo;0;L;;;;;N;;;;; +13F9C;EGYPTIAN HIEROGLYPH-13F9C;Lo;0;L;;;;;N;;;;; +13F9D;EGYPTIAN HIEROGLYPH-13F9D;Lo;0;L;;;;;N;;;;; +13F9E;EGYPTIAN HIEROGLYPH-13F9E;Lo;0;L;;;;;N;;;;; +13F9F;EGYPTIAN HIEROGLYPH-13F9F;Lo;0;L;;;;;N;;;;; +13FA0;EGYPTIAN HIEROGLYPH-13FA0;Lo;0;L;;;;;N;;;;; +13FA1;EGYPTIAN HIEROGLYPH-13FA1;Lo;0;L;;;;;N;;;;; +13FA2;EGYPTIAN HIEROGLYPH-13FA2;Lo;0;L;;;;;N;;;;; +13FA3;EGYPTIAN HIEROGLYPH-13FA3;Lo;0;L;;;;;N;;;;; +13FA4;EGYPTIAN HIEROGLYPH-13FA4;Lo;0;L;;;;;N;;;;; +13FA5;EGYPTIAN HIEROGLYPH-13FA5;Lo;0;L;;;;;N;;;;; +13FA6;EGYPTIAN HIEROGLYPH-13FA6;Lo;0;L;;;;;N;;;;; +13FA7;EGYPTIAN HIEROGLYPH-13FA7;Lo;0;L;;;;;N;;;;; +13FA8;EGYPTIAN HIEROGLYPH-13FA8;Lo;0;L;;;;;N;;;;; +13FA9;EGYPTIAN HIEROGLYPH-13FA9;Lo;0;L;;;;;N;;;;; +13FAA;EGYPTIAN HIEROGLYPH-13FAA;Lo;0;L;;;;;N;;;;; +13FAB;EGYPTIAN HIEROGLYPH-13FAB;Lo;0;L;;;;;N;;;;; +13FAC;EGYPTIAN HIEROGLYPH-13FAC;Lo;0;L;;;;;N;;;;; +13FAD;EGYPTIAN HIEROGLYPH-13FAD;Lo;0;L;;;;;N;;;;; +13FAE;EGYPTIAN HIEROGLYPH-13FAE;Lo;0;L;;;;;N;;;;; +13FAF;EGYPTIAN HIEROGLYPH-13FAF;Lo;0;L;;;;;N;;;;; +13FB0;EGYPTIAN HIEROGLYPH-13FB0;Lo;0;L;;;;;N;;;;; +13FB1;EGYPTIAN HIEROGLYPH-13FB1;Lo;0;L;;;;;N;;;;; +13FB2;EGYPTIAN HIEROGLYPH-13FB2;Lo;0;L;;;;;N;;;;; +13FB3;EGYPTIAN HIEROGLYPH-13FB3;Lo;0;L;;;;;N;;;;; +13FB4;EGYPTIAN HIEROGLYPH-13FB4;Lo;0;L;;;;;N;;;;; +13FB5;EGYPTIAN HIEROGLYPH-13FB5;Lo;0;L;;;;;N;;;;; +13FB6;EGYPTIAN HIEROGLYPH-13FB6;Lo;0;L;;;;;N;;;;; +13FB7;EGYPTIAN HIEROGLYPH-13FB7;Lo;0;L;;;;;N;;;;; +13FB8;EGYPTIAN HIEROGLYPH-13FB8;Lo;0;L;;;;;N;;;;; +13FB9;EGYPTIAN HIEROGLYPH-13FB9;Lo;0;L;;;;;N;;;;; +13FBA;EGYPTIAN HIEROGLYPH-13FBA;Lo;0;L;;;;;N;;;;; +13FBB;EGYPTIAN HIEROGLYPH-13FBB;Lo;0;L;;;;;N;;;;; +13FBC;EGYPTIAN HIEROGLYPH-13FBC;Lo;0;L;;;;;N;;;;; +13FBD;EGYPTIAN HIEROGLYPH-13FBD;Lo;0;L;;;;;N;;;;; +13FBE;EGYPTIAN HIEROGLYPH-13FBE;Lo;0;L;;;;;N;;;;; +13FBF;EGYPTIAN HIEROGLYPH-13FBF;Lo;0;L;;;;;N;;;;; +13FC0;EGYPTIAN HIEROGLYPH-13FC0;Lo;0;L;;;;;N;;;;; +13FC1;EGYPTIAN HIEROGLYPH-13FC1;Lo;0;L;;;;;N;;;;; +13FC2;EGYPTIAN HIEROGLYPH-13FC2;Lo;0;L;;;;;N;;;;; +13FC3;EGYPTIAN HIEROGLYPH-13FC3;Lo;0;L;;;;;N;;;;; +13FC4;EGYPTIAN HIEROGLYPH-13FC4;Lo;0;L;;;;;N;;;;; +13FC5;EGYPTIAN HIEROGLYPH-13FC5;Lo;0;L;;;;;N;;;;; +13FC6;EGYPTIAN HIEROGLYPH-13FC6;Lo;0;L;;;;;N;;;;; +13FC7;EGYPTIAN HIEROGLYPH-13FC7;Lo;0;L;;;;;N;;;;; +13FC8;EGYPTIAN HIEROGLYPH-13FC8;Lo;0;L;;;;;N;;;;; +13FC9;EGYPTIAN HIEROGLYPH-13FC9;Lo;0;L;;;;;N;;;;; +13FCA;EGYPTIAN HIEROGLYPH-13FCA;Lo;0;L;;;;;N;;;;; +13FCB;EGYPTIAN HIEROGLYPH-13FCB;Lo;0;L;;;;;N;;;;; +13FCC;EGYPTIAN HIEROGLYPH-13FCC;Lo;0;L;;;;;N;;;;; +13FCD;EGYPTIAN HIEROGLYPH-13FCD;Lo;0;L;;;;;N;;;;; +13FCE;EGYPTIAN HIEROGLYPH-13FCE;Lo;0;L;;;;;N;;;;; +13FCF;EGYPTIAN HIEROGLYPH-13FCF;Lo;0;L;;;;;N;;;;; +13FD0;EGYPTIAN HIEROGLYPH-13FD0;Lo;0;L;;;;;N;;;;; +13FD1;EGYPTIAN HIEROGLYPH-13FD1;Lo;0;L;;;;;N;;;;; +13FD2;EGYPTIAN HIEROGLYPH-13FD2;Lo;0;L;;;;;N;;;;; +13FD3;EGYPTIAN HIEROGLYPH-13FD3;Lo;0;L;;;;;N;;;;; +13FD4;EGYPTIAN HIEROGLYPH-13FD4;Lo;0;L;;;;;N;;;;; +13FD5;EGYPTIAN HIEROGLYPH-13FD5;Lo;0;L;;;;;N;;;;; +13FD6;EGYPTIAN HIEROGLYPH-13FD6;Lo;0;L;;;;;N;;;;; +13FD7;EGYPTIAN HIEROGLYPH-13FD7;Lo;0;L;;;;;N;;;;; +13FD8;EGYPTIAN HIEROGLYPH-13FD8;Lo;0;L;;;;;N;;;;; +13FD9;EGYPTIAN HIEROGLYPH-13FD9;Lo;0;L;;;;;N;;;;; +13FDA;EGYPTIAN HIEROGLYPH-13FDA;Lo;0;L;;;;;N;;;;; +13FDB;EGYPTIAN HIEROGLYPH-13FDB;Lo;0;L;;;;;N;;;;; +13FDC;EGYPTIAN HIEROGLYPH-13FDC;Lo;0;L;;;;;N;;;;; +13FDD;EGYPTIAN HIEROGLYPH-13FDD;Lo;0;L;;;;;N;;;;; +13FDE;EGYPTIAN HIEROGLYPH-13FDE;Lo;0;L;;;;;N;;;;; +13FDF;EGYPTIAN HIEROGLYPH-13FDF;Lo;0;L;;;;;N;;;;; +13FE0;EGYPTIAN HIEROGLYPH-13FE0;Lo;0;L;;;;;N;;;;; +13FE1;EGYPTIAN HIEROGLYPH-13FE1;Lo;0;L;;;;;N;;;;; +13FE2;EGYPTIAN HIEROGLYPH-13FE2;Lo;0;L;;;;;N;;;;; +13FE3;EGYPTIAN HIEROGLYPH-13FE3;Lo;0;L;;;;;N;;;;; +13FE4;EGYPTIAN HIEROGLYPH-13FE4;Lo;0;L;;;;;N;;;;; +13FE5;EGYPTIAN HIEROGLYPH-13FE5;Lo;0;L;;;;;N;;;;; +13FE6;EGYPTIAN HIEROGLYPH-13FE6;Lo;0;L;;;;;N;;;;; +13FE7;EGYPTIAN HIEROGLYPH-13FE7;Lo;0;L;;;;;N;;;;; +13FE8;EGYPTIAN HIEROGLYPH-13FE8;Lo;0;L;;;;;N;;;;; +13FE9;EGYPTIAN HIEROGLYPH-13FE9;Lo;0;L;;;;;N;;;;; +13FEA;EGYPTIAN HIEROGLYPH-13FEA;Lo;0;L;;;;;N;;;;; +13FEB;EGYPTIAN HIEROGLYPH-13FEB;Lo;0;L;;;;;N;;;;; +13FEC;EGYPTIAN HIEROGLYPH-13FEC;Lo;0;L;;;;;N;;;;; +13FED;EGYPTIAN HIEROGLYPH-13FED;Lo;0;L;;;;;N;;;;; +13FEE;EGYPTIAN HIEROGLYPH-13FEE;Lo;0;L;;;;;N;;;;; +13FEF;EGYPTIAN HIEROGLYPH-13FEF;Lo;0;L;;;;;N;;;;; +13FF0;EGYPTIAN HIEROGLYPH-13FF0;Lo;0;L;;;;;N;;;;; +13FF1;EGYPTIAN HIEROGLYPH-13FF1;Lo;0;L;;;;;N;;;;; +13FF2;EGYPTIAN HIEROGLYPH-13FF2;Lo;0;L;;;;;N;;;;; +13FF3;EGYPTIAN HIEROGLYPH-13FF3;Lo;0;L;;;;;N;;;;; +13FF4;EGYPTIAN HIEROGLYPH-13FF4;Lo;0;L;;;;;N;;;;; +13FF5;EGYPTIAN HIEROGLYPH-13FF5;Lo;0;L;;;;;N;;;;; +13FF6;EGYPTIAN HIEROGLYPH-13FF6;Lo;0;L;;;;;N;;;;; +13FF7;EGYPTIAN HIEROGLYPH-13FF7;Lo;0;L;;;;;N;;;;; +13FF8;EGYPTIAN HIEROGLYPH-13FF8;Lo;0;L;;;;;N;;;;; +13FF9;EGYPTIAN HIEROGLYPH-13FF9;Lo;0;L;;;;;N;;;;; +13FFA;EGYPTIAN HIEROGLYPH-13FFA;Lo;0;L;;;;;N;;;;; +13FFB;EGYPTIAN HIEROGLYPH-13FFB;Lo;0;L;;;;;N;;;;; +13FFC;EGYPTIAN HIEROGLYPH-13FFC;Lo;0;L;;;;;N;;;;; +13FFD;EGYPTIAN HIEROGLYPH-13FFD;Lo;0;L;;;;;N;;;;; +13FFE;EGYPTIAN HIEROGLYPH-13FFE;Lo;0;L;;;;;N;;;;; +13FFF;EGYPTIAN HIEROGLYPH-13FFF;Lo;0;L;;;;;N;;;;; +14000;EGYPTIAN HIEROGLYPH-14000;Lo;0;L;;;;;N;;;;; +14001;EGYPTIAN HIEROGLYPH-14001;Lo;0;L;;;;;N;;;;; +14002;EGYPTIAN HIEROGLYPH-14002;Lo;0;L;;;;;N;;;;; +14003;EGYPTIAN HIEROGLYPH-14003;Lo;0;L;;;;;N;;;;; +14004;EGYPTIAN HIEROGLYPH-14004;Lo;0;L;;;;;N;;;;; +14005;EGYPTIAN HIEROGLYPH-14005;Lo;0;L;;;;;N;;;;; +14006;EGYPTIAN HIEROGLYPH-14006;Lo;0;L;;;;;N;;;;; +14007;EGYPTIAN HIEROGLYPH-14007;Lo;0;L;;;;;N;;;;; +14008;EGYPTIAN HIEROGLYPH-14008;Lo;0;L;;;;;N;;;;; +14009;EGYPTIAN HIEROGLYPH-14009;Lo;0;L;;;;;N;;;;; +1400A;EGYPTIAN HIEROGLYPH-1400A;Lo;0;L;;;;;N;;;;; +1400B;EGYPTIAN HIEROGLYPH-1400B;Lo;0;L;;;;;N;;;;; +1400C;EGYPTIAN HIEROGLYPH-1400C;Lo;0;L;;;;;N;;;;; +1400D;EGYPTIAN HIEROGLYPH-1400D;Lo;0;L;;;;;N;;;;; +1400E;EGYPTIAN HIEROGLYPH-1400E;Lo;0;L;;;;;N;;;;; +1400F;EGYPTIAN HIEROGLYPH-1400F;Lo;0;L;;;;;N;;;;; +14010;EGYPTIAN HIEROGLYPH-14010;Lo;0;L;;;;;N;;;;; +14011;EGYPTIAN HIEROGLYPH-14011;Lo;0;L;;;;;N;;;;; +14012;EGYPTIAN HIEROGLYPH-14012;Lo;0;L;;;;;N;;;;; +14013;EGYPTIAN HIEROGLYPH-14013;Lo;0;L;;;;;N;;;;; +14014;EGYPTIAN HIEROGLYPH-14014;Lo;0;L;;;;;N;;;;; +14015;EGYPTIAN HIEROGLYPH-14015;Lo;0;L;;;;;N;;;;; +14016;EGYPTIAN HIEROGLYPH-14016;Lo;0;L;;;;;N;;;;; +14017;EGYPTIAN HIEROGLYPH-14017;Lo;0;L;;;;;N;;;;; +14018;EGYPTIAN HIEROGLYPH-14018;Lo;0;L;;;;;N;;;;; +14019;EGYPTIAN HIEROGLYPH-14019;Lo;0;L;;;;;N;;;;; +1401A;EGYPTIAN HIEROGLYPH-1401A;Lo;0;L;;;;;N;;;;; +1401B;EGYPTIAN HIEROGLYPH-1401B;Lo;0;L;;;;;N;;;;; +1401C;EGYPTIAN HIEROGLYPH-1401C;Lo;0;L;;;;;N;;;;; +1401D;EGYPTIAN HIEROGLYPH-1401D;Lo;0;L;;;;;N;;;;; +1401E;EGYPTIAN HIEROGLYPH-1401E;Lo;0;L;;;;;N;;;;; +1401F;EGYPTIAN HIEROGLYPH-1401F;Lo;0;L;;;;;N;;;;; +14020;EGYPTIAN HIEROGLYPH-14020;Lo;0;L;;;;;N;;;;; +14021;EGYPTIAN HIEROGLYPH-14021;Lo;0;L;;;;;N;;;;; +14022;EGYPTIAN HIEROGLYPH-14022;Lo;0;L;;;;;N;;;;; +14023;EGYPTIAN HIEROGLYPH-14023;Lo;0;L;;;;;N;;;;; +14024;EGYPTIAN HIEROGLYPH-14024;Lo;0;L;;;;;N;;;;; +14025;EGYPTIAN HIEROGLYPH-14025;Lo;0;L;;;;;N;;;;; +14026;EGYPTIAN HIEROGLYPH-14026;Lo;0;L;;;;;N;;;;; +14027;EGYPTIAN HIEROGLYPH-14027;Lo;0;L;;;;;N;;;;; +14028;EGYPTIAN HIEROGLYPH-14028;Lo;0;L;;;;;N;;;;; +14029;EGYPTIAN HIEROGLYPH-14029;Lo;0;L;;;;;N;;;;; +1402A;EGYPTIAN HIEROGLYPH-1402A;Lo;0;L;;;;;N;;;;; +1402B;EGYPTIAN HIEROGLYPH-1402B;Lo;0;L;;;;;N;;;;; +1402C;EGYPTIAN HIEROGLYPH-1402C;Lo;0;L;;;;;N;;;;; +1402D;EGYPTIAN HIEROGLYPH-1402D;Lo;0;L;;;;;N;;;;; +1402E;EGYPTIAN HIEROGLYPH-1402E;Lo;0;L;;;;;N;;;;; +1402F;EGYPTIAN HIEROGLYPH-1402F;Lo;0;L;;;;;N;;;;; +14030;EGYPTIAN HIEROGLYPH-14030;Lo;0;L;;;;;N;;;;; +14031;EGYPTIAN HIEROGLYPH-14031;Lo;0;L;;;;;N;;;;; +14032;EGYPTIAN HIEROGLYPH-14032;Lo;0;L;;;;;N;;;;; +14033;EGYPTIAN HIEROGLYPH-14033;Lo;0;L;;;;;N;;;;; +14034;EGYPTIAN HIEROGLYPH-14034;Lo;0;L;;;;;N;;;;; +14035;EGYPTIAN HIEROGLYPH-14035;Lo;0;L;;;;;N;;;;; +14036;EGYPTIAN HIEROGLYPH-14036;Lo;0;L;;;;;N;;;;; +14037;EGYPTIAN HIEROGLYPH-14037;Lo;0;L;;;;;N;;;;; +14038;EGYPTIAN HIEROGLYPH-14038;Lo;0;L;;;;;N;;;;; +14039;EGYPTIAN HIEROGLYPH-14039;Lo;0;L;;;;;N;;;;; +1403A;EGYPTIAN HIEROGLYPH-1403A;Lo;0;L;;;;;N;;;;; +1403B;EGYPTIAN HIEROGLYPH-1403B;Lo;0;L;;;;;N;;;;; +1403C;EGYPTIAN HIEROGLYPH-1403C;Lo;0;L;;;;;N;;;;; +1403D;EGYPTIAN HIEROGLYPH-1403D;Lo;0;L;;;;;N;;;;; +1403E;EGYPTIAN HIEROGLYPH-1403E;Lo;0;L;;;;;N;;;;; +1403F;EGYPTIAN HIEROGLYPH-1403F;Lo;0;L;;;;;N;;;;; +14040;EGYPTIAN HIEROGLYPH-14040;Lo;0;L;;;;;N;;;;; +14041;EGYPTIAN HIEROGLYPH-14041;Lo;0;L;;;;;N;;;;; +14042;EGYPTIAN HIEROGLYPH-14042;Lo;0;L;;;;;N;;;;; +14043;EGYPTIAN HIEROGLYPH-14043;Lo;0;L;;;;;N;;;;; +14044;EGYPTIAN HIEROGLYPH-14044;Lo;0;L;;;;;N;;;;; +14045;EGYPTIAN HIEROGLYPH-14045;Lo;0;L;;;;;N;;;;; +14046;EGYPTIAN HIEROGLYPH-14046;Lo;0;L;;;;;N;;;;; +14047;EGYPTIAN HIEROGLYPH-14047;Lo;0;L;;;;;N;;;;; +14048;EGYPTIAN HIEROGLYPH-14048;Lo;0;L;;;;;N;;;;; +14049;EGYPTIAN HIEROGLYPH-14049;Lo;0;L;;;;;N;;;;; +1404A;EGYPTIAN HIEROGLYPH-1404A;Lo;0;L;;;;;N;;;;; +1404B;EGYPTIAN HIEROGLYPH-1404B;Lo;0;L;;;;;N;;;;; +1404C;EGYPTIAN HIEROGLYPH-1404C;Lo;0;L;;;;;N;;;;; +1404D;EGYPTIAN HIEROGLYPH-1404D;Lo;0;L;;;;;N;;;;; +1404E;EGYPTIAN HIEROGLYPH-1404E;Lo;0;L;;;;;N;;;;; +1404F;EGYPTIAN HIEROGLYPH-1404F;Lo;0;L;;;;;N;;;;; +14050;EGYPTIAN HIEROGLYPH-14050;Lo;0;L;;;;;N;;;;; +14051;EGYPTIAN HIEROGLYPH-14051;Lo;0;L;;;;;N;;;;; +14052;EGYPTIAN HIEROGLYPH-14052;Lo;0;L;;;;;N;;;;; +14053;EGYPTIAN HIEROGLYPH-14053;Lo;0;L;;;;;N;;;;; +14054;EGYPTIAN HIEROGLYPH-14054;Lo;0;L;;;;;N;;;;; +14055;EGYPTIAN HIEROGLYPH-14055;Lo;0;L;;;;;N;;;;; +14056;EGYPTIAN HIEROGLYPH-14056;Lo;0;L;;;;;N;;;;; +14057;EGYPTIAN HIEROGLYPH-14057;Lo;0;L;;;;;N;;;;; +14058;EGYPTIAN HIEROGLYPH-14058;Lo;0;L;;;;;N;;;;; +14059;EGYPTIAN HIEROGLYPH-14059;Lo;0;L;;;;;N;;;;; +1405A;EGYPTIAN HIEROGLYPH-1405A;Lo;0;L;;;;;N;;;;; +1405B;EGYPTIAN HIEROGLYPH-1405B;Lo;0;L;;;;;N;;;;; +1405C;EGYPTIAN HIEROGLYPH-1405C;Lo;0;L;;;;;N;;;;; +1405D;EGYPTIAN HIEROGLYPH-1405D;Lo;0;L;;;;;N;;;;; +1405E;EGYPTIAN HIEROGLYPH-1405E;Lo;0;L;;;;;N;;;;; +1405F;EGYPTIAN HIEROGLYPH-1405F;Lo;0;L;;;;;N;;;;; +14060;EGYPTIAN HIEROGLYPH-14060;Lo;0;L;;;;;N;;;;; +14061;EGYPTIAN HIEROGLYPH-14061;Lo;0;L;;;;;N;;;;; +14062;EGYPTIAN HIEROGLYPH-14062;Lo;0;L;;;;;N;;;;; +14063;EGYPTIAN HIEROGLYPH-14063;Lo;0;L;;;;;N;;;;; +14064;EGYPTIAN HIEROGLYPH-14064;Lo;0;L;;;;;N;;;;; +14065;EGYPTIAN HIEROGLYPH-14065;Lo;0;L;;;;;N;;;;; +14066;EGYPTIAN HIEROGLYPH-14066;Lo;0;L;;;;;N;;;;; +14067;EGYPTIAN HIEROGLYPH-14067;Lo;0;L;;;;;N;;;;; +14068;EGYPTIAN HIEROGLYPH-14068;Lo;0;L;;;;;N;;;;; +14069;EGYPTIAN HIEROGLYPH-14069;Lo;0;L;;;;;N;;;;; +1406A;EGYPTIAN HIEROGLYPH-1406A;Lo;0;L;;;;;N;;;;; +1406B;EGYPTIAN HIEROGLYPH-1406B;Lo;0;L;;;;;N;;;;; +1406C;EGYPTIAN HIEROGLYPH-1406C;Lo;0;L;;;;;N;;;;; +1406D;EGYPTIAN HIEROGLYPH-1406D;Lo;0;L;;;;;N;;;;; +1406E;EGYPTIAN HIEROGLYPH-1406E;Lo;0;L;;;;;N;;;;; +1406F;EGYPTIAN HIEROGLYPH-1406F;Lo;0;L;;;;;N;;;;; +14070;EGYPTIAN HIEROGLYPH-14070;Lo;0;L;;;;;N;;;;; +14071;EGYPTIAN HIEROGLYPH-14071;Lo;0;L;;;;;N;;;;; +14072;EGYPTIAN HIEROGLYPH-14072;Lo;0;L;;;;;N;;;;; +14073;EGYPTIAN HIEROGLYPH-14073;Lo;0;L;;;;;N;;;;; +14074;EGYPTIAN HIEROGLYPH-14074;Lo;0;L;;;;;N;;;;; +14075;EGYPTIAN HIEROGLYPH-14075;Lo;0;L;;;;;N;;;;; +14076;EGYPTIAN HIEROGLYPH-14076;Lo;0;L;;;;;N;;;;; +14077;EGYPTIAN HIEROGLYPH-14077;Lo;0;L;;;;;N;;;;; +14078;EGYPTIAN HIEROGLYPH-14078;Lo;0;L;;;;;N;;;;; +14079;EGYPTIAN HIEROGLYPH-14079;Lo;0;L;;;;;N;;;;; +1407A;EGYPTIAN HIEROGLYPH-1407A;Lo;0;L;;;;;N;;;;; +1407B;EGYPTIAN HIEROGLYPH-1407B;Lo;0;L;;;;;N;;;;; +1407C;EGYPTIAN HIEROGLYPH-1407C;Lo;0;L;;;;;N;;;;; +1407D;EGYPTIAN HIEROGLYPH-1407D;Lo;0;L;;;;;N;;;;; +1407E;EGYPTIAN HIEROGLYPH-1407E;Lo;0;L;;;;;N;;;;; +1407F;EGYPTIAN HIEROGLYPH-1407F;Lo;0;L;;;;;N;;;;; +14080;EGYPTIAN HIEROGLYPH-14080;Lo;0;L;;;;;N;;;;; +14081;EGYPTIAN HIEROGLYPH-14081;Lo;0;L;;;;;N;;;;; +14082;EGYPTIAN HIEROGLYPH-14082;Lo;0;L;;;;;N;;;;; +14083;EGYPTIAN HIEROGLYPH-14083;Lo;0;L;;;;;N;;;;; +14084;EGYPTIAN HIEROGLYPH-14084;Lo;0;L;;;;;N;;;;; +14085;EGYPTIAN HIEROGLYPH-14085;Lo;0;L;;;;;N;;;;; +14086;EGYPTIAN HIEROGLYPH-14086;Lo;0;L;;;;;N;;;;; +14087;EGYPTIAN HIEROGLYPH-14087;Lo;0;L;;;;;N;;;;; +14088;EGYPTIAN HIEROGLYPH-14088;Lo;0;L;;;;;N;;;;; +14089;EGYPTIAN HIEROGLYPH-14089;Lo;0;L;;;;;N;;;;; +1408A;EGYPTIAN HIEROGLYPH-1408A;Lo;0;L;;;;;N;;;;; +1408B;EGYPTIAN HIEROGLYPH-1408B;Lo;0;L;;;;;N;;;;; +1408C;EGYPTIAN HIEROGLYPH-1408C;Lo;0;L;;;;;N;;;;; +1408D;EGYPTIAN HIEROGLYPH-1408D;Lo;0;L;;;;;N;;;;; +1408E;EGYPTIAN HIEROGLYPH-1408E;Lo;0;L;;;;;N;;;;; +1408F;EGYPTIAN HIEROGLYPH-1408F;Lo;0;L;;;;;N;;;;; +14090;EGYPTIAN HIEROGLYPH-14090;Lo;0;L;;;;;N;;;;; +14091;EGYPTIAN HIEROGLYPH-14091;Lo;0;L;;;;;N;;;;; +14092;EGYPTIAN HIEROGLYPH-14092;Lo;0;L;;;;;N;;;;; +14093;EGYPTIAN HIEROGLYPH-14093;Lo;0;L;;;;;N;;;;; +14094;EGYPTIAN HIEROGLYPH-14094;Lo;0;L;;;;;N;;;;; +14095;EGYPTIAN HIEROGLYPH-14095;Lo;0;L;;;;;N;;;;; +14096;EGYPTIAN HIEROGLYPH-14096;Lo;0;L;;;;;N;;;;; +14097;EGYPTIAN HIEROGLYPH-14097;Lo;0;L;;;;;N;;;;; +14098;EGYPTIAN HIEROGLYPH-14098;Lo;0;L;;;;;N;;;;; +14099;EGYPTIAN HIEROGLYPH-14099;Lo;0;L;;;;;N;;;;; +1409A;EGYPTIAN HIEROGLYPH-1409A;Lo;0;L;;;;;N;;;;; +1409B;EGYPTIAN HIEROGLYPH-1409B;Lo;0;L;;;;;N;;;;; +1409C;EGYPTIAN HIEROGLYPH-1409C;Lo;0;L;;;;;N;;;;; +1409D;EGYPTIAN HIEROGLYPH-1409D;Lo;0;L;;;;;N;;;;; +1409E;EGYPTIAN HIEROGLYPH-1409E;Lo;0;L;;;;;N;;;;; +1409F;EGYPTIAN HIEROGLYPH-1409F;Lo;0;L;;;;;N;;;;; +140A0;EGYPTIAN HIEROGLYPH-140A0;Lo;0;L;;;;;N;;;;; +140A1;EGYPTIAN HIEROGLYPH-140A1;Lo;0;L;;;;;N;;;;; +140A2;EGYPTIAN HIEROGLYPH-140A2;Lo;0;L;;;;;N;;;;; +140A3;EGYPTIAN HIEROGLYPH-140A3;Lo;0;L;;;;;N;;;;; +140A4;EGYPTIAN HIEROGLYPH-140A4;Lo;0;L;;;;;N;;;;; +140A5;EGYPTIAN HIEROGLYPH-140A5;Lo;0;L;;;;;N;;;;; +140A6;EGYPTIAN HIEROGLYPH-140A6;Lo;0;L;;;;;N;;;;; +140A7;EGYPTIAN HIEROGLYPH-140A7;Lo;0;L;;;;;N;;;;; +140A8;EGYPTIAN HIEROGLYPH-140A8;Lo;0;L;;;;;N;;;;; +140A9;EGYPTIAN HIEROGLYPH-140A9;Lo;0;L;;;;;N;;;;; +140AA;EGYPTIAN HIEROGLYPH-140AA;Lo;0;L;;;;;N;;;;; +140AB;EGYPTIAN HIEROGLYPH-140AB;Lo;0;L;;;;;N;;;;; +140AC;EGYPTIAN HIEROGLYPH-140AC;Lo;0;L;;;;;N;;;;; +140AD;EGYPTIAN HIEROGLYPH-140AD;Lo;0;L;;;;;N;;;;; +140AE;EGYPTIAN HIEROGLYPH-140AE;Lo;0;L;;;;;N;;;;; +140AF;EGYPTIAN HIEROGLYPH-140AF;Lo;0;L;;;;;N;;;;; +140B0;EGYPTIAN HIEROGLYPH-140B0;Lo;0;L;;;;;N;;;;; +140B1;EGYPTIAN HIEROGLYPH-140B1;Lo;0;L;;;;;N;;;;; +140B2;EGYPTIAN HIEROGLYPH-140B2;Lo;0;L;;;;;N;;;;; +140B3;EGYPTIAN HIEROGLYPH-140B3;Lo;0;L;;;;;N;;;;; +140B4;EGYPTIAN HIEROGLYPH-140B4;Lo;0;L;;;;;N;;;;; +140B5;EGYPTIAN HIEROGLYPH-140B5;Lo;0;L;;;;;N;;;;; +140B6;EGYPTIAN HIEROGLYPH-140B6;Lo;0;L;;;;;N;;;;; +140B7;EGYPTIAN HIEROGLYPH-140B7;Lo;0;L;;;;;N;;;;; +140B8;EGYPTIAN HIEROGLYPH-140B8;Lo;0;L;;;;;N;;;;; +140B9;EGYPTIAN HIEROGLYPH-140B9;Lo;0;L;;;;;N;;;;; +140BA;EGYPTIAN HIEROGLYPH-140BA;Lo;0;L;;;;;N;;;;; +140BB;EGYPTIAN HIEROGLYPH-140BB;Lo;0;L;;;;;N;;;;; +140BC;EGYPTIAN HIEROGLYPH-140BC;Lo;0;L;;;;;N;;;;; +140BD;EGYPTIAN HIEROGLYPH-140BD;Lo;0;L;;;;;N;;;;; +140BE;EGYPTIAN HIEROGLYPH-140BE;Lo;0;L;;;;;N;;;;; +140BF;EGYPTIAN HIEROGLYPH-140BF;Lo;0;L;;;;;N;;;;; +140C0;EGYPTIAN HIEROGLYPH-140C0;Lo;0;L;;;;;N;;;;; +140C1;EGYPTIAN HIEROGLYPH-140C1;Lo;0;L;;;;;N;;;;; +140C2;EGYPTIAN HIEROGLYPH-140C2;Lo;0;L;;;;;N;;;;; +140C3;EGYPTIAN HIEROGLYPH-140C3;Lo;0;L;;;;;N;;;;; +140C4;EGYPTIAN HIEROGLYPH-140C4;Lo;0;L;;;;;N;;;;; +140C5;EGYPTIAN HIEROGLYPH-140C5;Lo;0;L;;;;;N;;;;; +140C6;EGYPTIAN HIEROGLYPH-140C6;Lo;0;L;;;;;N;;;;; +140C7;EGYPTIAN HIEROGLYPH-140C7;Lo;0;L;;;;;N;;;;; +140C8;EGYPTIAN HIEROGLYPH-140C8;Lo;0;L;;;;;N;;;;; +140C9;EGYPTIAN HIEROGLYPH-140C9;Lo;0;L;;;;;N;;;;; +140CA;EGYPTIAN HIEROGLYPH-140CA;Lo;0;L;;;;;N;;;;; +140CB;EGYPTIAN HIEROGLYPH-140CB;Lo;0;L;;;;;N;;;;; +140CC;EGYPTIAN HIEROGLYPH-140CC;Lo;0;L;;;;;N;;;;; +140CD;EGYPTIAN HIEROGLYPH-140CD;Lo;0;L;;;;;N;;;;; +140CE;EGYPTIAN HIEROGLYPH-140CE;Lo;0;L;;;;;N;;;;; +140CF;EGYPTIAN HIEROGLYPH-140CF;Lo;0;L;;;;;N;;;;; +140D0;EGYPTIAN HIEROGLYPH-140D0;Lo;0;L;;;;;N;;;;; +140D1;EGYPTIAN HIEROGLYPH-140D1;Lo;0;L;;;;;N;;;;; +140D2;EGYPTIAN HIEROGLYPH-140D2;Lo;0;L;;;;;N;;;;; +140D3;EGYPTIAN HIEROGLYPH-140D3;Lo;0;L;;;;;N;;;;; +140D4;EGYPTIAN HIEROGLYPH-140D4;Lo;0;L;;;;;N;;;;; +140D5;EGYPTIAN HIEROGLYPH-140D5;Lo;0;L;;;;;N;;;;; +140D6;EGYPTIAN HIEROGLYPH-140D6;Lo;0;L;;;;;N;;;;; +140D7;EGYPTIAN HIEROGLYPH-140D7;Lo;0;L;;;;;N;;;;; +140D8;EGYPTIAN HIEROGLYPH-140D8;Lo;0;L;;;;;N;;;;; +140D9;EGYPTIAN HIEROGLYPH-140D9;Lo;0;L;;;;;N;;;;; +140DA;EGYPTIAN HIEROGLYPH-140DA;Lo;0;L;;;;;N;;;;; +140DB;EGYPTIAN HIEROGLYPH-140DB;Lo;0;L;;;;;N;;;;; +140DC;EGYPTIAN HIEROGLYPH-140DC;Lo;0;L;;;;;N;;;;; +140DD;EGYPTIAN HIEROGLYPH-140DD;Lo;0;L;;;;;N;;;;; +140DE;EGYPTIAN HIEROGLYPH-140DE;Lo;0;L;;;;;N;;;;; +140DF;EGYPTIAN HIEROGLYPH-140DF;Lo;0;L;;;;;N;;;;; +140E0;EGYPTIAN HIEROGLYPH-140E0;Lo;0;L;;;;;N;;;;; +140E1;EGYPTIAN HIEROGLYPH-140E1;Lo;0;L;;;;;N;;;;; +140E2;EGYPTIAN HIEROGLYPH-140E2;Lo;0;L;;;;;N;;;;; +140E3;EGYPTIAN HIEROGLYPH-140E3;Lo;0;L;;;;;N;;;;; +140E4;EGYPTIAN HIEROGLYPH-140E4;Lo;0;L;;;;;N;;;;; +140E5;EGYPTIAN HIEROGLYPH-140E5;Lo;0;L;;;;;N;;;;; +140E6;EGYPTIAN HIEROGLYPH-140E6;Lo;0;L;;;;;N;;;;; +140E7;EGYPTIAN HIEROGLYPH-140E7;Lo;0;L;;;;;N;;;;; +140E8;EGYPTIAN HIEROGLYPH-140E8;Lo;0;L;;;;;N;;;;; +140E9;EGYPTIAN HIEROGLYPH-140E9;Lo;0;L;;;;;N;;;;; +140EA;EGYPTIAN HIEROGLYPH-140EA;Lo;0;L;;;;;N;;;;; +140EB;EGYPTIAN HIEROGLYPH-140EB;Lo;0;L;;;;;N;;;;; +140EC;EGYPTIAN HIEROGLYPH-140EC;Lo;0;L;;;;;N;;;;; +140ED;EGYPTIAN HIEROGLYPH-140ED;Lo;0;L;;;;;N;;;;; +140EE;EGYPTIAN HIEROGLYPH-140EE;Lo;0;L;;;;;N;;;;; +140EF;EGYPTIAN HIEROGLYPH-140EF;Lo;0;L;;;;;N;;;;; +140F0;EGYPTIAN HIEROGLYPH-140F0;Lo;0;L;;;;;N;;;;; +140F1;EGYPTIAN HIEROGLYPH-140F1;Lo;0;L;;;;;N;;;;; +140F2;EGYPTIAN HIEROGLYPH-140F2;Lo;0;L;;;;;N;;;;; +140F3;EGYPTIAN HIEROGLYPH-140F3;Lo;0;L;;;;;N;;;;; +140F4;EGYPTIAN HIEROGLYPH-140F4;Lo;0;L;;;;;N;;;;; +140F5;EGYPTIAN HIEROGLYPH-140F5;Lo;0;L;;;;;N;;;;; +140F6;EGYPTIAN HIEROGLYPH-140F6;Lo;0;L;;;;;N;;;;; +140F7;EGYPTIAN HIEROGLYPH-140F7;Lo;0;L;;;;;N;;;;; +140F8;EGYPTIAN HIEROGLYPH-140F8;Lo;0;L;;;;;N;;;;; +140F9;EGYPTIAN HIEROGLYPH-140F9;Lo;0;L;;;;;N;;;;; +140FA;EGYPTIAN HIEROGLYPH-140FA;Lo;0;L;;;;;N;;;;; +140FB;EGYPTIAN HIEROGLYPH-140FB;Lo;0;L;;;;;N;;;;; +140FC;EGYPTIAN HIEROGLYPH-140FC;Lo;0;L;;;;;N;;;;; +140FD;EGYPTIAN HIEROGLYPH-140FD;Lo;0;L;;;;;N;;;;; +140FE;EGYPTIAN HIEROGLYPH-140FE;Lo;0;L;;;;;N;;;;; +140FF;EGYPTIAN HIEROGLYPH-140FF;Lo;0;L;;;;;N;;;;; +14100;EGYPTIAN HIEROGLYPH-14100;Lo;0;L;;;;;N;;;;; +14101;EGYPTIAN HIEROGLYPH-14101;Lo;0;L;;;;;N;;;;; +14102;EGYPTIAN HIEROGLYPH-14102;Lo;0;L;;;;;N;;;;; +14103;EGYPTIAN HIEROGLYPH-14103;Lo;0;L;;;;;N;;;;; +14104;EGYPTIAN HIEROGLYPH-14104;Lo;0;L;;;;;N;;;;; +14105;EGYPTIAN HIEROGLYPH-14105;Lo;0;L;;;;;N;;;;; +14106;EGYPTIAN HIEROGLYPH-14106;Lo;0;L;;;;;N;;;;; +14107;EGYPTIAN HIEROGLYPH-14107;Lo;0;L;;;;;N;;;;; +14108;EGYPTIAN HIEROGLYPH-14108;Lo;0;L;;;;;N;;;;; +14109;EGYPTIAN HIEROGLYPH-14109;Lo;0;L;;;;;N;;;;; +1410A;EGYPTIAN HIEROGLYPH-1410A;Lo;0;L;;;;;N;;;;; +1410B;EGYPTIAN HIEROGLYPH-1410B;Lo;0;L;;;;;N;;;;; +1410C;EGYPTIAN HIEROGLYPH-1410C;Lo;0;L;;;;;N;;;;; +1410D;EGYPTIAN HIEROGLYPH-1410D;Lo;0;L;;;;;N;;;;; +1410E;EGYPTIAN HIEROGLYPH-1410E;Lo;0;L;;;;;N;;;;; +1410F;EGYPTIAN HIEROGLYPH-1410F;Lo;0;L;;;;;N;;;;; +14110;EGYPTIAN HIEROGLYPH-14110;Lo;0;L;;;;;N;;;;; +14111;EGYPTIAN HIEROGLYPH-14111;Lo;0;L;;;;;N;;;;; +14112;EGYPTIAN HIEROGLYPH-14112;Lo;0;L;;;;;N;;;;; +14113;EGYPTIAN HIEROGLYPH-14113;Lo;0;L;;;;;N;;;;; +14114;EGYPTIAN HIEROGLYPH-14114;Lo;0;L;;;;;N;;;;; +14115;EGYPTIAN HIEROGLYPH-14115;Lo;0;L;;;;;N;;;;; +14116;EGYPTIAN HIEROGLYPH-14116;Lo;0;L;;;;;N;;;;; +14117;EGYPTIAN HIEROGLYPH-14117;Lo;0;L;;;;;N;;;;; +14118;EGYPTIAN HIEROGLYPH-14118;Lo;0;L;;;;;N;;;;; +14119;EGYPTIAN HIEROGLYPH-14119;Lo;0;L;;;;;N;;;;; +1411A;EGYPTIAN HIEROGLYPH-1411A;Lo;0;L;;;;;N;;;;; +1411B;EGYPTIAN HIEROGLYPH-1411B;Lo;0;L;;;;;N;;;;; +1411C;EGYPTIAN HIEROGLYPH-1411C;Lo;0;L;;;;;N;;;;; +1411D;EGYPTIAN HIEROGLYPH-1411D;Lo;0;L;;;;;N;;;;; +1411E;EGYPTIAN HIEROGLYPH-1411E;Lo;0;L;;;;;N;;;;; +1411F;EGYPTIAN HIEROGLYPH-1411F;Lo;0;L;;;;;N;;;;; +14120;EGYPTIAN HIEROGLYPH-14120;Lo;0;L;;;;;N;;;;; +14121;EGYPTIAN HIEROGLYPH-14121;Lo;0;L;;;;;N;;;;; +14122;EGYPTIAN HIEROGLYPH-14122;Lo;0;L;;;;;N;;;;; +14123;EGYPTIAN HIEROGLYPH-14123;Lo;0;L;;;;;N;;;;; +14124;EGYPTIAN HIEROGLYPH-14124;Lo;0;L;;;;;N;;;;; +14125;EGYPTIAN HIEROGLYPH-14125;Lo;0;L;;;;;N;;;;; +14126;EGYPTIAN HIEROGLYPH-14126;Lo;0;L;;;;;N;;;;; +14127;EGYPTIAN HIEROGLYPH-14127;Lo;0;L;;;;;N;;;;; +14128;EGYPTIAN HIEROGLYPH-14128;Lo;0;L;;;;;N;;;;; +14129;EGYPTIAN HIEROGLYPH-14129;Lo;0;L;;;;;N;;;;; +1412A;EGYPTIAN HIEROGLYPH-1412A;Lo;0;L;;;;;N;;;;; +1412B;EGYPTIAN HIEROGLYPH-1412B;Lo;0;L;;;;;N;;;;; +1412C;EGYPTIAN HIEROGLYPH-1412C;Lo;0;L;;;;;N;;;;; +1412D;EGYPTIAN HIEROGLYPH-1412D;Lo;0;L;;;;;N;;;;; +1412E;EGYPTIAN HIEROGLYPH-1412E;Lo;0;L;;;;;N;;;;; +1412F;EGYPTIAN HIEROGLYPH-1412F;Lo;0;L;;;;;N;;;;; +14130;EGYPTIAN HIEROGLYPH-14130;Lo;0;L;;;;;N;;;;; +14131;EGYPTIAN HIEROGLYPH-14131;Lo;0;L;;;;;N;;;;; +14132;EGYPTIAN HIEROGLYPH-14132;Lo;0;L;;;;;N;;;;; +14133;EGYPTIAN HIEROGLYPH-14133;Lo;0;L;;;;;N;;;;; +14134;EGYPTIAN HIEROGLYPH-14134;Lo;0;L;;;;;N;;;;; +14135;EGYPTIAN HIEROGLYPH-14135;Lo;0;L;;;;;N;;;;; +14136;EGYPTIAN HIEROGLYPH-14136;Lo;0;L;;;;;N;;;;; +14137;EGYPTIAN HIEROGLYPH-14137;Lo;0;L;;;;;N;;;;; +14138;EGYPTIAN HIEROGLYPH-14138;Lo;0;L;;;;;N;;;;; +14139;EGYPTIAN HIEROGLYPH-14139;Lo;0;L;;;;;N;;;;; +1413A;EGYPTIAN HIEROGLYPH-1413A;Lo;0;L;;;;;N;;;;; +1413B;EGYPTIAN HIEROGLYPH-1413B;Lo;0;L;;;;;N;;;;; +1413C;EGYPTIAN HIEROGLYPH-1413C;Lo;0;L;;;;;N;;;;; +1413D;EGYPTIAN HIEROGLYPH-1413D;Lo;0;L;;;;;N;;;;; +1413E;EGYPTIAN HIEROGLYPH-1413E;Lo;0;L;;;;;N;;;;; +1413F;EGYPTIAN HIEROGLYPH-1413F;Lo;0;L;;;;;N;;;;; +14140;EGYPTIAN HIEROGLYPH-14140;Lo;0;L;;;;;N;;;;; +14141;EGYPTIAN HIEROGLYPH-14141;Lo;0;L;;;;;N;;;;; +14142;EGYPTIAN HIEROGLYPH-14142;Lo;0;L;;;;;N;;;;; +14143;EGYPTIAN HIEROGLYPH-14143;Lo;0;L;;;;;N;;;;; +14144;EGYPTIAN HIEROGLYPH-14144;Lo;0;L;;;;;N;;;;; +14145;EGYPTIAN HIEROGLYPH-14145;Lo;0;L;;;;;N;;;;; +14146;EGYPTIAN HIEROGLYPH-14146;Lo;0;L;;;;;N;;;;; +14147;EGYPTIAN HIEROGLYPH-14147;Lo;0;L;;;;;N;;;;; +14148;EGYPTIAN HIEROGLYPH-14148;Lo;0;L;;;;;N;;;;; +14149;EGYPTIAN HIEROGLYPH-14149;Lo;0;L;;;;;N;;;;; +1414A;EGYPTIAN HIEROGLYPH-1414A;Lo;0;L;;;;;N;;;;; +1414B;EGYPTIAN HIEROGLYPH-1414B;Lo;0;L;;;;;N;;;;; +1414C;EGYPTIAN HIEROGLYPH-1414C;Lo;0;L;;;;;N;;;;; +1414D;EGYPTIAN HIEROGLYPH-1414D;Lo;0;L;;;;;N;;;;; +1414E;EGYPTIAN HIEROGLYPH-1414E;Lo;0;L;;;;;N;;;;; +1414F;EGYPTIAN HIEROGLYPH-1414F;Lo;0;L;;;;;N;;;;; +14150;EGYPTIAN HIEROGLYPH-14150;Lo;0;L;;;;;N;;;;; +14151;EGYPTIAN HIEROGLYPH-14151;Lo;0;L;;;;;N;;;;; +14152;EGYPTIAN HIEROGLYPH-14152;Lo;0;L;;;;;N;;;;; +14153;EGYPTIAN HIEROGLYPH-14153;Lo;0;L;;;;;N;;;;; +14154;EGYPTIAN HIEROGLYPH-14154;Lo;0;L;;;;;N;;;;; +14155;EGYPTIAN HIEROGLYPH-14155;Lo;0;L;;;;;N;;;;; +14156;EGYPTIAN HIEROGLYPH-14156;Lo;0;L;;;;;N;;;;; +14157;EGYPTIAN HIEROGLYPH-14157;Lo;0;L;;;;;N;;;;; +14158;EGYPTIAN HIEROGLYPH-14158;Lo;0;L;;;;;N;;;;; +14159;EGYPTIAN HIEROGLYPH-14159;Lo;0;L;;;;;N;;;;; +1415A;EGYPTIAN HIEROGLYPH-1415A;Lo;0;L;;;;;N;;;;; +1415B;EGYPTIAN HIEROGLYPH-1415B;Lo;0;L;;;;;N;;;;; +1415C;EGYPTIAN HIEROGLYPH-1415C;Lo;0;L;;;;;N;;;;; +1415D;EGYPTIAN HIEROGLYPH-1415D;Lo;0;L;;;;;N;;;;; +1415E;EGYPTIAN HIEROGLYPH-1415E;Lo;0;L;;;;;N;;;;; +1415F;EGYPTIAN HIEROGLYPH-1415F;Lo;0;L;;;;;N;;;;; +14160;EGYPTIAN HIEROGLYPH-14160;Lo;0;L;;;;;N;;;;; +14161;EGYPTIAN HIEROGLYPH-14161;Lo;0;L;;;;;N;;;;; +14162;EGYPTIAN HIEROGLYPH-14162;Lo;0;L;;;;;N;;;;; +14163;EGYPTIAN HIEROGLYPH-14163;Lo;0;L;;;;;N;;;;; +14164;EGYPTIAN HIEROGLYPH-14164;Lo;0;L;;;;;N;;;;; +14165;EGYPTIAN HIEROGLYPH-14165;Lo;0;L;;;;;N;;;;; +14166;EGYPTIAN HIEROGLYPH-14166;Lo;0;L;;;;;N;;;;; +14167;EGYPTIAN HIEROGLYPH-14167;Lo;0;L;;;;;N;;;;; +14168;EGYPTIAN HIEROGLYPH-14168;Lo;0;L;;;;;N;;;;; +14169;EGYPTIAN HIEROGLYPH-14169;Lo;0;L;;;;;N;;;;; +1416A;EGYPTIAN HIEROGLYPH-1416A;Lo;0;L;;;;;N;;;;; +1416B;EGYPTIAN HIEROGLYPH-1416B;Lo;0;L;;;;;N;;;;; +1416C;EGYPTIAN HIEROGLYPH-1416C;Lo;0;L;;;;;N;;;;; +1416D;EGYPTIAN HIEROGLYPH-1416D;Lo;0;L;;;;;N;;;;; +1416E;EGYPTIAN HIEROGLYPH-1416E;Lo;0;L;;;;;N;;;;; +1416F;EGYPTIAN HIEROGLYPH-1416F;Lo;0;L;;;;;N;;;;; +14170;EGYPTIAN HIEROGLYPH-14170;Lo;0;L;;;;;N;;;;; +14171;EGYPTIAN HIEROGLYPH-14171;Lo;0;L;;;;;N;;;;; +14172;EGYPTIAN HIEROGLYPH-14172;Lo;0;L;;;;;N;;;;; +14173;EGYPTIAN HIEROGLYPH-14173;Lo;0;L;;;;;N;;;;; +14174;EGYPTIAN HIEROGLYPH-14174;Lo;0;L;;;;;N;;;;; +14175;EGYPTIAN HIEROGLYPH-14175;Lo;0;L;;;;;N;;;;; +14176;EGYPTIAN HIEROGLYPH-14176;Lo;0;L;;;;;N;;;;; +14177;EGYPTIAN HIEROGLYPH-14177;Lo;0;L;;;;;N;;;;; +14178;EGYPTIAN HIEROGLYPH-14178;Lo;0;L;;;;;N;;;;; +14179;EGYPTIAN HIEROGLYPH-14179;Lo;0;L;;;;;N;;;;; +1417A;EGYPTIAN HIEROGLYPH-1417A;Lo;0;L;;;;;N;;;;; +1417B;EGYPTIAN HIEROGLYPH-1417B;Lo;0;L;;;;;N;;;;; +1417C;EGYPTIAN HIEROGLYPH-1417C;Lo;0;L;;;;;N;;;;; +1417D;EGYPTIAN HIEROGLYPH-1417D;Lo;0;L;;;;;N;;;;; +1417E;EGYPTIAN HIEROGLYPH-1417E;Lo;0;L;;;;;N;;;;; +1417F;EGYPTIAN HIEROGLYPH-1417F;Lo;0;L;;;;;N;;;;; +14180;EGYPTIAN HIEROGLYPH-14180;Lo;0;L;;;;;N;;;;; +14181;EGYPTIAN HIEROGLYPH-14181;Lo;0;L;;;;;N;;;;; +14182;EGYPTIAN HIEROGLYPH-14182;Lo;0;L;;;;;N;;;;; +14183;EGYPTIAN HIEROGLYPH-14183;Lo;0;L;;;;;N;;;;; +14184;EGYPTIAN HIEROGLYPH-14184;Lo;0;L;;;;;N;;;;; +14185;EGYPTIAN HIEROGLYPH-14185;Lo;0;L;;;;;N;;;;; +14186;EGYPTIAN HIEROGLYPH-14186;Lo;0;L;;;;;N;;;;; +14187;EGYPTIAN HIEROGLYPH-14187;Lo;0;L;;;;;N;;;;; +14188;EGYPTIAN HIEROGLYPH-14188;Lo;0;L;;;;;N;;;;; +14189;EGYPTIAN HIEROGLYPH-14189;Lo;0;L;;;;;N;;;;; +1418A;EGYPTIAN HIEROGLYPH-1418A;Lo;0;L;;;;;N;;;;; +1418B;EGYPTIAN HIEROGLYPH-1418B;Lo;0;L;;;;;N;;;;; +1418C;EGYPTIAN HIEROGLYPH-1418C;Lo;0;L;;;;;N;;;;; +1418D;EGYPTIAN HIEROGLYPH-1418D;Lo;0;L;;;;;N;;;;; +1418E;EGYPTIAN HIEROGLYPH-1418E;Lo;0;L;;;;;N;;;;; +1418F;EGYPTIAN HIEROGLYPH-1418F;Lo;0;L;;;;;N;;;;; +14190;EGYPTIAN HIEROGLYPH-14190;Lo;0;L;;;;;N;;;;; +14191;EGYPTIAN HIEROGLYPH-14191;Lo;0;L;;;;;N;;;;; +14192;EGYPTIAN HIEROGLYPH-14192;Lo;0;L;;;;;N;;;;; +14193;EGYPTIAN HIEROGLYPH-14193;Lo;0;L;;;;;N;;;;; +14194;EGYPTIAN HIEROGLYPH-14194;Lo;0;L;;;;;N;;;;; +14195;EGYPTIAN HIEROGLYPH-14195;Lo;0;L;;;;;N;;;;; +14196;EGYPTIAN HIEROGLYPH-14196;Lo;0;L;;;;;N;;;;; +14197;EGYPTIAN HIEROGLYPH-14197;Lo;0;L;;;;;N;;;;; +14198;EGYPTIAN HIEROGLYPH-14198;Lo;0;L;;;;;N;;;;; +14199;EGYPTIAN HIEROGLYPH-14199;Lo;0;L;;;;;N;;;;; +1419A;EGYPTIAN HIEROGLYPH-1419A;Lo;0;L;;;;;N;;;;; +1419B;EGYPTIAN HIEROGLYPH-1419B;Lo;0;L;;;;;N;;;;; +1419C;EGYPTIAN HIEROGLYPH-1419C;Lo;0;L;;;;;N;;;;; +1419D;EGYPTIAN HIEROGLYPH-1419D;Lo;0;L;;;;;N;;;;; +1419E;EGYPTIAN HIEROGLYPH-1419E;Lo;0;L;;;;;N;;;;; +1419F;EGYPTIAN HIEROGLYPH-1419F;Lo;0;L;;;;;N;;;;; +141A0;EGYPTIAN HIEROGLYPH-141A0;Lo;0;L;;;;;N;;;;; +141A1;EGYPTIAN HIEROGLYPH-141A1;Lo;0;L;;;;;N;;;;; +141A2;EGYPTIAN HIEROGLYPH-141A2;Lo;0;L;;;;;N;;;;; +141A3;EGYPTIAN HIEROGLYPH-141A3;Lo;0;L;;;;;N;;;;; +141A4;EGYPTIAN HIEROGLYPH-141A4;Lo;0;L;;;;;N;;;;; +141A5;EGYPTIAN HIEROGLYPH-141A5;Lo;0;L;;;;;N;;;;; +141A6;EGYPTIAN HIEROGLYPH-141A6;Lo;0;L;;;;;N;;;;; +141A7;EGYPTIAN HIEROGLYPH-141A7;Lo;0;L;;;;;N;;;;; +141A8;EGYPTIAN HIEROGLYPH-141A8;Lo;0;L;;;;;N;;;;; +141A9;EGYPTIAN HIEROGLYPH-141A9;Lo;0;L;;;;;N;;;;; +141AA;EGYPTIAN HIEROGLYPH-141AA;Lo;0;L;;;;;N;;;;; +141AB;EGYPTIAN HIEROGLYPH-141AB;Lo;0;L;;;;;N;;;;; +141AC;EGYPTIAN HIEROGLYPH-141AC;Lo;0;L;;;;;N;;;;; +141AD;EGYPTIAN HIEROGLYPH-141AD;Lo;0;L;;;;;N;;;;; +141AE;EGYPTIAN HIEROGLYPH-141AE;Lo;0;L;;;;;N;;;;; +141AF;EGYPTIAN HIEROGLYPH-141AF;Lo;0;L;;;;;N;;;;; +141B0;EGYPTIAN HIEROGLYPH-141B0;Lo;0;L;;;;;N;;;;; +141B1;EGYPTIAN HIEROGLYPH-141B1;Lo;0;L;;;;;N;;;;; +141B2;EGYPTIAN HIEROGLYPH-141B2;Lo;0;L;;;;;N;;;;; +141B3;EGYPTIAN HIEROGLYPH-141B3;Lo;0;L;;;;;N;;;;; +141B4;EGYPTIAN HIEROGLYPH-141B4;Lo;0;L;;;;;N;;;;; +141B5;EGYPTIAN HIEROGLYPH-141B5;Lo;0;L;;;;;N;;;;; +141B6;EGYPTIAN HIEROGLYPH-141B6;Lo;0;L;;;;;N;;;;; +141B7;EGYPTIAN HIEROGLYPH-141B7;Lo;0;L;;;;;N;;;;; +141B8;EGYPTIAN HIEROGLYPH-141B8;Lo;0;L;;;;;N;;;;; +141B9;EGYPTIAN HIEROGLYPH-141B9;Lo;0;L;;;;;N;;;;; +141BA;EGYPTIAN HIEROGLYPH-141BA;Lo;0;L;;;;;N;;;;; +141BB;EGYPTIAN HIEROGLYPH-141BB;Lo;0;L;;;;;N;;;;; +141BC;EGYPTIAN HIEROGLYPH-141BC;Lo;0;L;;;;;N;;;;; +141BD;EGYPTIAN HIEROGLYPH-141BD;Lo;0;L;;;;;N;;;;; +141BE;EGYPTIAN HIEROGLYPH-141BE;Lo;0;L;;;;;N;;;;; +141BF;EGYPTIAN HIEROGLYPH-141BF;Lo;0;L;;;;;N;;;;; +141C0;EGYPTIAN HIEROGLYPH-141C0;Lo;0;L;;;;;N;;;;; +141C1;EGYPTIAN HIEROGLYPH-141C1;Lo;0;L;;;;;N;;;;; +141C2;EGYPTIAN HIEROGLYPH-141C2;Lo;0;L;;;;;N;;;;; +141C3;EGYPTIAN HIEROGLYPH-141C3;Lo;0;L;;;;;N;;;;; +141C4;EGYPTIAN HIEROGLYPH-141C4;Lo;0;L;;;;;N;;;;; +141C5;EGYPTIAN HIEROGLYPH-141C5;Lo;0;L;;;;;N;;;;; +141C6;EGYPTIAN HIEROGLYPH-141C6;Lo;0;L;;;;;N;;;;; +141C7;EGYPTIAN HIEROGLYPH-141C7;Lo;0;L;;;;;N;;;;; +141C8;EGYPTIAN HIEROGLYPH-141C8;Lo;0;L;;;;;N;;;;; +141C9;EGYPTIAN HIEROGLYPH-141C9;Lo;0;L;;;;;N;;;;; +141CA;EGYPTIAN HIEROGLYPH-141CA;Lo;0;L;;;;;N;;;;; +141CB;EGYPTIAN HIEROGLYPH-141CB;Lo;0;L;;;;;N;;;;; +141CC;EGYPTIAN HIEROGLYPH-141CC;Lo;0;L;;;;;N;;;;; +141CD;EGYPTIAN HIEROGLYPH-141CD;Lo;0;L;;;;;N;;;;; +141CE;EGYPTIAN HIEROGLYPH-141CE;Lo;0;L;;;;;N;;;;; +141CF;EGYPTIAN HIEROGLYPH-141CF;Lo;0;L;;;;;N;;;;; +141D0;EGYPTIAN HIEROGLYPH-141D0;Lo;0;L;;;;;N;;;;; +141D1;EGYPTIAN HIEROGLYPH-141D1;Lo;0;L;;;;;N;;;;; +141D2;EGYPTIAN HIEROGLYPH-141D2;Lo;0;L;;;;;N;;;;; +141D3;EGYPTIAN HIEROGLYPH-141D3;Lo;0;L;;;;;N;;;;; +141D4;EGYPTIAN HIEROGLYPH-141D4;Lo;0;L;;;;;N;;;;; +141D5;EGYPTIAN HIEROGLYPH-141D5;Lo;0;L;;;;;N;;;;; +141D6;EGYPTIAN HIEROGLYPH-141D6;Lo;0;L;;;;;N;;;;; +141D7;EGYPTIAN HIEROGLYPH-141D7;Lo;0;L;;;;;N;;;;; +141D8;EGYPTIAN HIEROGLYPH-141D8;Lo;0;L;;;;;N;;;;; +141D9;EGYPTIAN HIEROGLYPH-141D9;Lo;0;L;;;;;N;;;;; +141DA;EGYPTIAN HIEROGLYPH-141DA;Lo;0;L;;;;;N;;;;; +141DB;EGYPTIAN HIEROGLYPH-141DB;Lo;0;L;;;;;N;;;;; +141DC;EGYPTIAN HIEROGLYPH-141DC;Lo;0;L;;;;;N;;;;; +141DD;EGYPTIAN HIEROGLYPH-141DD;Lo;0;L;;;;;N;;;;; +141DE;EGYPTIAN HIEROGLYPH-141DE;Lo;0;L;;;;;N;;;;; +141DF;EGYPTIAN HIEROGLYPH-141DF;Lo;0;L;;;;;N;;;;; +141E0;EGYPTIAN HIEROGLYPH-141E0;Lo;0;L;;;;;N;;;;; +141E1;EGYPTIAN HIEROGLYPH-141E1;Lo;0;L;;;;;N;;;;; +141E2;EGYPTIAN HIEROGLYPH-141E2;Lo;0;L;;;;;N;;;;; +141E3;EGYPTIAN HIEROGLYPH-141E3;Lo;0;L;;;;;N;;;;; +141E4;EGYPTIAN HIEROGLYPH-141E4;Lo;0;L;;;;;N;;;;; +141E5;EGYPTIAN HIEROGLYPH-141E5;Lo;0;L;;;;;N;;;;; +141E6;EGYPTIAN HIEROGLYPH-141E6;Lo;0;L;;;;;N;;;;; +141E7;EGYPTIAN HIEROGLYPH-141E7;Lo;0;L;;;;;N;;;;; +141E8;EGYPTIAN HIEROGLYPH-141E8;Lo;0;L;;;;;N;;;;; +141E9;EGYPTIAN HIEROGLYPH-141E9;Lo;0;L;;;;;N;;;;; +141EA;EGYPTIAN HIEROGLYPH-141EA;Lo;0;L;;;;;N;;;;; +141EB;EGYPTIAN HIEROGLYPH-141EB;Lo;0;L;;;;;N;;;;; +141EC;EGYPTIAN HIEROGLYPH-141EC;Lo;0;L;;;;;N;;;;; +141ED;EGYPTIAN HIEROGLYPH-141ED;Lo;0;L;;;;;N;;;;; +141EE;EGYPTIAN HIEROGLYPH-141EE;Lo;0;L;;;;;N;;;;; +141EF;EGYPTIAN HIEROGLYPH-141EF;Lo;0;L;;;;;N;;;;; +141F0;EGYPTIAN HIEROGLYPH-141F0;Lo;0;L;;;;;N;;;;; +141F1;EGYPTIAN HIEROGLYPH-141F1;Lo;0;L;;;;;N;;;;; +141F2;EGYPTIAN HIEROGLYPH-141F2;Lo;0;L;;;;;N;;;;; +141F3;EGYPTIAN HIEROGLYPH-141F3;Lo;0;L;;;;;N;;;;; +141F4;EGYPTIAN HIEROGLYPH-141F4;Lo;0;L;;;;;N;;;;; +141F5;EGYPTIAN HIEROGLYPH-141F5;Lo;0;L;;;;;N;;;;; +141F6;EGYPTIAN HIEROGLYPH-141F6;Lo;0;L;;;;;N;;;;; +141F7;EGYPTIAN HIEROGLYPH-141F7;Lo;0;L;;;;;N;;;;; +141F8;EGYPTIAN HIEROGLYPH-141F8;Lo;0;L;;;;;N;;;;; +141F9;EGYPTIAN HIEROGLYPH-141F9;Lo;0;L;;;;;N;;;;; +141FA;EGYPTIAN HIEROGLYPH-141FA;Lo;0;L;;;;;N;;;;; +141FB;EGYPTIAN HIEROGLYPH-141FB;Lo;0;L;;;;;N;;;;; +141FC;EGYPTIAN HIEROGLYPH-141FC;Lo;0;L;;;;;N;;;;; +141FD;EGYPTIAN HIEROGLYPH-141FD;Lo;0;L;;;;;N;;;;; +141FE;EGYPTIAN HIEROGLYPH-141FE;Lo;0;L;;;;;N;;;;; +141FF;EGYPTIAN HIEROGLYPH-141FF;Lo;0;L;;;;;N;;;;; +14200;EGYPTIAN HIEROGLYPH-14200;Lo;0;L;;;;;N;;;;; +14201;EGYPTIAN HIEROGLYPH-14201;Lo;0;L;;;;;N;;;;; +14202;EGYPTIAN HIEROGLYPH-14202;Lo;0;L;;;;;N;;;;; +14203;EGYPTIAN HIEROGLYPH-14203;Lo;0;L;;;;;N;;;;; +14204;EGYPTIAN HIEROGLYPH-14204;Lo;0;L;;;;;N;;;;; +14205;EGYPTIAN HIEROGLYPH-14205;Lo;0;L;;;;;N;;;;; +14206;EGYPTIAN HIEROGLYPH-14206;Lo;0;L;;;;;N;;;;; +14207;EGYPTIAN HIEROGLYPH-14207;Lo;0;L;;;;;N;;;;; +14208;EGYPTIAN HIEROGLYPH-14208;Lo;0;L;;;;;N;;;;; +14209;EGYPTIAN HIEROGLYPH-14209;Lo;0;L;;;;;N;;;;; +1420A;EGYPTIAN HIEROGLYPH-1420A;Lo;0;L;;;;;N;;;;; +1420B;EGYPTIAN HIEROGLYPH-1420B;Lo;0;L;;;;;N;;;;; +1420C;EGYPTIAN HIEROGLYPH-1420C;Lo;0;L;;;;;N;;;;; +1420D;EGYPTIAN HIEROGLYPH-1420D;Lo;0;L;;;;;N;;;;; +1420E;EGYPTIAN HIEROGLYPH-1420E;Lo;0;L;;;;;N;;;;; +1420F;EGYPTIAN HIEROGLYPH-1420F;Lo;0;L;;;;;N;;;;; +14210;EGYPTIAN HIEROGLYPH-14210;Lo;0;L;;;;;N;;;;; +14211;EGYPTIAN HIEROGLYPH-14211;Lo;0;L;;;;;N;;;;; +14212;EGYPTIAN HIEROGLYPH-14212;Lo;0;L;;;;;N;;;;; +14213;EGYPTIAN HIEROGLYPH-14213;Lo;0;L;;;;;N;;;;; +14214;EGYPTIAN HIEROGLYPH-14214;Lo;0;L;;;;;N;;;;; +14215;EGYPTIAN HIEROGLYPH-14215;Lo;0;L;;;;;N;;;;; +14216;EGYPTIAN HIEROGLYPH-14216;Lo;0;L;;;;;N;;;;; +14217;EGYPTIAN HIEROGLYPH-14217;Lo;0;L;;;;;N;;;;; +14218;EGYPTIAN HIEROGLYPH-14218;Lo;0;L;;;;;N;;;;; +14219;EGYPTIAN HIEROGLYPH-14219;Lo;0;L;;;;;N;;;;; +1421A;EGYPTIAN HIEROGLYPH-1421A;Lo;0;L;;;;;N;;;;; +1421B;EGYPTIAN HIEROGLYPH-1421B;Lo;0;L;;;;;N;;;;; +1421C;EGYPTIAN HIEROGLYPH-1421C;Lo;0;L;;;;;N;;;;; +1421D;EGYPTIAN HIEROGLYPH-1421D;Lo;0;L;;;;;N;;;;; +1421E;EGYPTIAN HIEROGLYPH-1421E;Lo;0;L;;;;;N;;;;; +1421F;EGYPTIAN HIEROGLYPH-1421F;Lo;0;L;;;;;N;;;;; +14220;EGYPTIAN HIEROGLYPH-14220;Lo;0;L;;;;;N;;;;; +14221;EGYPTIAN HIEROGLYPH-14221;Lo;0;L;;;;;N;;;;; +14222;EGYPTIAN HIEROGLYPH-14222;Lo;0;L;;;;;N;;;;; +14223;EGYPTIAN HIEROGLYPH-14223;Lo;0;L;;;;;N;;;;; +14224;EGYPTIAN HIEROGLYPH-14224;Lo;0;L;;;;;N;;;;; +14225;EGYPTIAN HIEROGLYPH-14225;Lo;0;L;;;;;N;;;;; +14226;EGYPTIAN HIEROGLYPH-14226;Lo;0;L;;;;;N;;;;; +14227;EGYPTIAN HIEROGLYPH-14227;Lo;0;L;;;;;N;;;;; +14228;EGYPTIAN HIEROGLYPH-14228;Lo;0;L;;;;;N;;;;; +14229;EGYPTIAN HIEROGLYPH-14229;Lo;0;L;;;;;N;;;;; +1422A;EGYPTIAN HIEROGLYPH-1422A;Lo;0;L;;;;;N;;;;; +1422B;EGYPTIAN HIEROGLYPH-1422B;Lo;0;L;;;;;N;;;;; +1422C;EGYPTIAN HIEROGLYPH-1422C;Lo;0;L;;;;;N;;;;; +1422D;EGYPTIAN HIEROGLYPH-1422D;Lo;0;L;;;;;N;;;;; +1422E;EGYPTIAN HIEROGLYPH-1422E;Lo;0;L;;;;;N;;;;; +1422F;EGYPTIAN HIEROGLYPH-1422F;Lo;0;L;;;;;N;;;;; +14230;EGYPTIAN HIEROGLYPH-14230;Lo;0;L;;;;;N;;;;; +14231;EGYPTIAN HIEROGLYPH-14231;Lo;0;L;;;;;N;;;;; +14232;EGYPTIAN HIEROGLYPH-14232;Lo;0;L;;;;;N;;;;; +14233;EGYPTIAN HIEROGLYPH-14233;Lo;0;L;;;;;N;;;;; +14234;EGYPTIAN HIEROGLYPH-14234;Lo;0;L;;;;;N;;;;; +14235;EGYPTIAN HIEROGLYPH-14235;Lo;0;L;;;;;N;;;;; +14236;EGYPTIAN HIEROGLYPH-14236;Lo;0;L;;;;;N;;;;; +14237;EGYPTIAN HIEROGLYPH-14237;Lo;0;L;;;;;N;;;;; +14238;EGYPTIAN HIEROGLYPH-14238;Lo;0;L;;;;;N;;;;; +14239;EGYPTIAN HIEROGLYPH-14239;Lo;0;L;;;;;N;;;;; +1423A;EGYPTIAN HIEROGLYPH-1423A;Lo;0;L;;;;;N;;;;; +1423B;EGYPTIAN HIEROGLYPH-1423B;Lo;0;L;;;;;N;;;;; +1423C;EGYPTIAN HIEROGLYPH-1423C;Lo;0;L;;;;;N;;;;; +1423D;EGYPTIAN HIEROGLYPH-1423D;Lo;0;L;;;;;N;;;;; +1423E;EGYPTIAN HIEROGLYPH-1423E;Lo;0;L;;;;;N;;;;; +1423F;EGYPTIAN HIEROGLYPH-1423F;Lo;0;L;;;;;N;;;;; +14240;EGYPTIAN HIEROGLYPH-14240;Lo;0;L;;;;;N;;;;; +14241;EGYPTIAN HIEROGLYPH-14241;Lo;0;L;;;;;N;;;;; +14242;EGYPTIAN HIEROGLYPH-14242;Lo;0;L;;;;;N;;;;; +14243;EGYPTIAN HIEROGLYPH-14243;Lo;0;L;;;;;N;;;;; +14244;EGYPTIAN HIEROGLYPH-14244;Lo;0;L;;;;;N;;;;; +14245;EGYPTIAN HIEROGLYPH-14245;Lo;0;L;;;;;N;;;;; +14246;EGYPTIAN HIEROGLYPH-14246;Lo;0;L;;;;;N;;;;; +14247;EGYPTIAN HIEROGLYPH-14247;Lo;0;L;;;;;N;;;;; +14248;EGYPTIAN HIEROGLYPH-14248;Lo;0;L;;;;;N;;;;; +14249;EGYPTIAN HIEROGLYPH-14249;Lo;0;L;;;;;N;;;;; +1424A;EGYPTIAN HIEROGLYPH-1424A;Lo;0;L;;;;;N;;;;; +1424B;EGYPTIAN HIEROGLYPH-1424B;Lo;0;L;;;;;N;;;;; +1424C;EGYPTIAN HIEROGLYPH-1424C;Lo;0;L;;;;;N;;;;; +1424D;EGYPTIAN HIEROGLYPH-1424D;Lo;0;L;;;;;N;;;;; +1424E;EGYPTIAN HIEROGLYPH-1424E;Lo;0;L;;;;;N;;;;; +1424F;EGYPTIAN HIEROGLYPH-1424F;Lo;0;L;;;;;N;;;;; +14250;EGYPTIAN HIEROGLYPH-14250;Lo;0;L;;;;;N;;;;; +14251;EGYPTIAN HIEROGLYPH-14251;Lo;0;L;;;;;N;;;;; +14252;EGYPTIAN HIEROGLYPH-14252;Lo;0;L;;;;;N;;;;; +14253;EGYPTIAN HIEROGLYPH-14253;Lo;0;L;;;;;N;;;;; +14254;EGYPTIAN HIEROGLYPH-14254;Lo;0;L;;;;;N;;;;; +14255;EGYPTIAN HIEROGLYPH-14255;Lo;0;L;;;;;N;;;;; +14256;EGYPTIAN HIEROGLYPH-14256;Lo;0;L;;;;;N;;;;; +14257;EGYPTIAN HIEROGLYPH-14257;Lo;0;L;;;;;N;;;;; +14258;EGYPTIAN HIEROGLYPH-14258;Lo;0;L;;;;;N;;;;; +14259;EGYPTIAN HIEROGLYPH-14259;Lo;0;L;;;;;N;;;;; +1425A;EGYPTIAN HIEROGLYPH-1425A;Lo;0;L;;;;;N;;;;; +1425B;EGYPTIAN HIEROGLYPH-1425B;Lo;0;L;;;;;N;;;;; +1425C;EGYPTIAN HIEROGLYPH-1425C;Lo;0;L;;;;;N;;;;; +1425D;EGYPTIAN HIEROGLYPH-1425D;Lo;0;L;;;;;N;;;;; +1425E;EGYPTIAN HIEROGLYPH-1425E;Lo;0;L;;;;;N;;;;; +1425F;EGYPTIAN HIEROGLYPH-1425F;Lo;0;L;;;;;N;;;;; +14260;EGYPTIAN HIEROGLYPH-14260;Lo;0;L;;;;;N;;;;; +14261;EGYPTIAN HIEROGLYPH-14261;Lo;0;L;;;;;N;;;;; +14262;EGYPTIAN HIEROGLYPH-14262;Lo;0;L;;;;;N;;;;; +14263;EGYPTIAN HIEROGLYPH-14263;Lo;0;L;;;;;N;;;;; +14264;EGYPTIAN HIEROGLYPH-14264;Lo;0;L;;;;;N;;;;; +14265;EGYPTIAN HIEROGLYPH-14265;Lo;0;L;;;;;N;;;;; +14266;EGYPTIAN HIEROGLYPH-14266;Lo;0;L;;;;;N;;;;; +14267;EGYPTIAN HIEROGLYPH-14267;Lo;0;L;;;;;N;;;;; +14268;EGYPTIAN HIEROGLYPH-14268;Lo;0;L;;;;;N;;;;; +14269;EGYPTIAN HIEROGLYPH-14269;Lo;0;L;;;;;N;;;;; +1426A;EGYPTIAN HIEROGLYPH-1426A;Lo;0;L;;;;;N;;;;; +1426B;EGYPTIAN HIEROGLYPH-1426B;Lo;0;L;;;;;N;;;;; +1426C;EGYPTIAN HIEROGLYPH-1426C;Lo;0;L;;;;;N;;;;; +1426D;EGYPTIAN HIEROGLYPH-1426D;Lo;0;L;;;;;N;;;;; +1426E;EGYPTIAN HIEROGLYPH-1426E;Lo;0;L;;;;;N;;;;; +1426F;EGYPTIAN HIEROGLYPH-1426F;Lo;0;L;;;;;N;;;;; +14270;EGYPTIAN HIEROGLYPH-14270;Lo;0;L;;;;;N;;;;; +14271;EGYPTIAN HIEROGLYPH-14271;Lo;0;L;;;;;N;;;;; +14272;EGYPTIAN HIEROGLYPH-14272;Lo;0;L;;;;;N;;;;; +14273;EGYPTIAN HIEROGLYPH-14273;Lo;0;L;;;;;N;;;;; +14274;EGYPTIAN HIEROGLYPH-14274;Lo;0;L;;;;;N;;;;; +14275;EGYPTIAN HIEROGLYPH-14275;Lo;0;L;;;;;N;;;;; +14276;EGYPTIAN HIEROGLYPH-14276;Lo;0;L;;;;;N;;;;; +14277;EGYPTIAN HIEROGLYPH-14277;Lo;0;L;;;;;N;;;;; +14278;EGYPTIAN HIEROGLYPH-14278;Lo;0;L;;;;;N;;;;; +14279;EGYPTIAN HIEROGLYPH-14279;Lo;0;L;;;;;N;;;;; +1427A;EGYPTIAN HIEROGLYPH-1427A;Lo;0;L;;;;;N;;;;; +1427B;EGYPTIAN HIEROGLYPH-1427B;Lo;0;L;;;;;N;;;;; +1427C;EGYPTIAN HIEROGLYPH-1427C;Lo;0;L;;;;;N;;;;; +1427D;EGYPTIAN HIEROGLYPH-1427D;Lo;0;L;;;;;N;;;;; +1427E;EGYPTIAN HIEROGLYPH-1427E;Lo;0;L;;;;;N;;;;; +1427F;EGYPTIAN HIEROGLYPH-1427F;Lo;0;L;;;;;N;;;;; +14280;EGYPTIAN HIEROGLYPH-14280;Lo;0;L;;;;;N;;;;; +14281;EGYPTIAN HIEROGLYPH-14281;Lo;0;L;;;;;N;;;;; +14282;EGYPTIAN HIEROGLYPH-14282;Lo;0;L;;;;;N;;;;; +14283;EGYPTIAN HIEROGLYPH-14283;Lo;0;L;;;;;N;;;;; +14284;EGYPTIAN HIEROGLYPH-14284;Lo;0;L;;;;;N;;;;; +14285;EGYPTIAN HIEROGLYPH-14285;Lo;0;L;;;;;N;;;;; +14286;EGYPTIAN HIEROGLYPH-14286;Lo;0;L;;;;;N;;;;; +14287;EGYPTIAN HIEROGLYPH-14287;Lo;0;L;;;;;N;;;;; +14288;EGYPTIAN HIEROGLYPH-14288;Lo;0;L;;;;;N;;;;; +14289;EGYPTIAN HIEROGLYPH-14289;Lo;0;L;;;;;N;;;;; +1428A;EGYPTIAN HIEROGLYPH-1428A;Lo;0;L;;;;;N;;;;; +1428B;EGYPTIAN HIEROGLYPH-1428B;Lo;0;L;;;;;N;;;;; +1428C;EGYPTIAN HIEROGLYPH-1428C;Lo;0;L;;;;;N;;;;; +1428D;EGYPTIAN HIEROGLYPH-1428D;Lo;0;L;;;;;N;;;;; +1428E;EGYPTIAN HIEROGLYPH-1428E;Lo;0;L;;;;;N;;;;; +1428F;EGYPTIAN HIEROGLYPH-1428F;Lo;0;L;;;;;N;;;;; +14290;EGYPTIAN HIEROGLYPH-14290;Lo;0;L;;;;;N;;;;; +14291;EGYPTIAN HIEROGLYPH-14291;Lo;0;L;;;;;N;;;;; +14292;EGYPTIAN HIEROGLYPH-14292;Lo;0;L;;;;;N;;;;; +14293;EGYPTIAN HIEROGLYPH-14293;Lo;0;L;;;;;N;;;;; +14294;EGYPTIAN HIEROGLYPH-14294;Lo;0;L;;;;;N;;;;; +14295;EGYPTIAN HIEROGLYPH-14295;Lo;0;L;;;;;N;;;;; +14296;EGYPTIAN HIEROGLYPH-14296;Lo;0;L;;;;;N;;;;; +14297;EGYPTIAN HIEROGLYPH-14297;Lo;0;L;;;;;N;;;;; +14298;EGYPTIAN HIEROGLYPH-14298;Lo;0;L;;;;;N;;;;; +14299;EGYPTIAN HIEROGLYPH-14299;Lo;0;L;;;;;N;;;;; +1429A;EGYPTIAN HIEROGLYPH-1429A;Lo;0;L;;;;;N;;;;; +1429B;EGYPTIAN HIEROGLYPH-1429B;Lo;0;L;;;;;N;;;;; +1429C;EGYPTIAN HIEROGLYPH-1429C;Lo;0;L;;;;;N;;;;; +1429D;EGYPTIAN HIEROGLYPH-1429D;Lo;0;L;;;;;N;;;;; +1429E;EGYPTIAN HIEROGLYPH-1429E;Lo;0;L;;;;;N;;;;; +1429F;EGYPTIAN HIEROGLYPH-1429F;Lo;0;L;;;;;N;;;;; +142A0;EGYPTIAN HIEROGLYPH-142A0;Lo;0;L;;;;;N;;;;; +142A1;EGYPTIAN HIEROGLYPH-142A1;Lo;0;L;;;;;N;;;;; +142A2;EGYPTIAN HIEROGLYPH-142A2;Lo;0;L;;;;;N;;;;; +142A3;EGYPTIAN HIEROGLYPH-142A3;Lo;0;L;;;;;N;;;;; +142A4;EGYPTIAN HIEROGLYPH-142A4;Lo;0;L;;;;;N;;;;; +142A5;EGYPTIAN HIEROGLYPH-142A5;Lo;0;L;;;;;N;;;;; +142A6;EGYPTIAN HIEROGLYPH-142A6;Lo;0;L;;;;;N;;;;; +142A7;EGYPTIAN HIEROGLYPH-142A7;Lo;0;L;;;;;N;;;;; +142A8;EGYPTIAN HIEROGLYPH-142A8;Lo;0;L;;;;;N;;;;; +142A9;EGYPTIAN HIEROGLYPH-142A9;Lo;0;L;;;;;N;;;;; +142AA;EGYPTIAN HIEROGLYPH-142AA;Lo;0;L;;;;;N;;;;; +142AB;EGYPTIAN HIEROGLYPH-142AB;Lo;0;L;;;;;N;;;;; +142AC;EGYPTIAN HIEROGLYPH-142AC;Lo;0;L;;;;;N;;;;; +142AD;EGYPTIAN HIEROGLYPH-142AD;Lo;0;L;;;;;N;;;;; +142AE;EGYPTIAN HIEROGLYPH-142AE;Lo;0;L;;;;;N;;;;; +142AF;EGYPTIAN HIEROGLYPH-142AF;Lo;0;L;;;;;N;;;;; +142B0;EGYPTIAN HIEROGLYPH-142B0;Lo;0;L;;;;;N;;;;; +142B1;EGYPTIAN HIEROGLYPH-142B1;Lo;0;L;;;;;N;;;;; +142B2;EGYPTIAN HIEROGLYPH-142B2;Lo;0;L;;;;;N;;;;; +142B3;EGYPTIAN HIEROGLYPH-142B3;Lo;0;L;;;;;N;;;;; +142B4;EGYPTIAN HIEROGLYPH-142B4;Lo;0;L;;;;;N;;;;; +142B5;EGYPTIAN HIEROGLYPH-142B5;Lo;0;L;;;;;N;;;;; +142B6;EGYPTIAN HIEROGLYPH-142B6;Lo;0;L;;;;;N;;;;; +142B7;EGYPTIAN HIEROGLYPH-142B7;Lo;0;L;;;;;N;;;;; +142B8;EGYPTIAN HIEROGLYPH-142B8;Lo;0;L;;;;;N;;;;; +142B9;EGYPTIAN HIEROGLYPH-142B9;Lo;0;L;;;;;N;;;;; +142BA;EGYPTIAN HIEROGLYPH-142BA;Lo;0;L;;;;;N;;;;; +142BB;EGYPTIAN HIEROGLYPH-142BB;Lo;0;L;;;;;N;;;;; +142BC;EGYPTIAN HIEROGLYPH-142BC;Lo;0;L;;;;;N;;;;; +142BD;EGYPTIAN HIEROGLYPH-142BD;Lo;0;L;;;;;N;;;;; +142BE;EGYPTIAN HIEROGLYPH-142BE;Lo;0;L;;;;;N;;;;; +142BF;EGYPTIAN HIEROGLYPH-142BF;Lo;0;L;;;;;N;;;;; +142C0;EGYPTIAN HIEROGLYPH-142C0;Lo;0;L;;;;;N;;;;; +142C1;EGYPTIAN HIEROGLYPH-142C1;Lo;0;L;;;;;N;;;;; +142C2;EGYPTIAN HIEROGLYPH-142C2;Lo;0;L;;;;;N;;;;; +142C3;EGYPTIAN HIEROGLYPH-142C3;Lo;0;L;;;;;N;;;;; +142C4;EGYPTIAN HIEROGLYPH-142C4;Lo;0;L;;;;;N;;;;; +142C5;EGYPTIAN HIEROGLYPH-142C5;Lo;0;L;;;;;N;;;;; +142C6;EGYPTIAN HIEROGLYPH-142C6;Lo;0;L;;;;;N;;;;; +142C7;EGYPTIAN HIEROGLYPH-142C7;Lo;0;L;;;;;N;;;;; +142C8;EGYPTIAN HIEROGLYPH-142C8;Lo;0;L;;;;;N;;;;; +142C9;EGYPTIAN HIEROGLYPH-142C9;Lo;0;L;;;;;N;;;;; +142CA;EGYPTIAN HIEROGLYPH-142CA;Lo;0;L;;;;;N;;;;; +142CB;EGYPTIAN HIEROGLYPH-142CB;Lo;0;L;;;;;N;;;;; +142CC;EGYPTIAN HIEROGLYPH-142CC;Lo;0;L;;;;;N;;;;; +142CD;EGYPTIAN HIEROGLYPH-142CD;Lo;0;L;;;;;N;;;;; +142CE;EGYPTIAN HIEROGLYPH-142CE;Lo;0;L;;;;;N;;;;; +142CF;EGYPTIAN HIEROGLYPH-142CF;Lo;0;L;;;;;N;;;;; +142D0;EGYPTIAN HIEROGLYPH-142D0;Lo;0;L;;;;;N;;;;; +142D1;EGYPTIAN HIEROGLYPH-142D1;Lo;0;L;;;;;N;;;;; +142D2;EGYPTIAN HIEROGLYPH-142D2;Lo;0;L;;;;;N;;;;; +142D3;EGYPTIAN HIEROGLYPH-142D3;Lo;0;L;;;;;N;;;;; +142D4;EGYPTIAN HIEROGLYPH-142D4;Lo;0;L;;;;;N;;;;; +142D5;EGYPTIAN HIEROGLYPH-142D5;Lo;0;L;;;;;N;;;;; +142D6;EGYPTIAN HIEROGLYPH-142D6;Lo;0;L;;;;;N;;;;; +142D7;EGYPTIAN HIEROGLYPH-142D7;Lo;0;L;;;;;N;;;;; +142D8;EGYPTIAN HIEROGLYPH-142D8;Lo;0;L;;;;;N;;;;; +142D9;EGYPTIAN HIEROGLYPH-142D9;Lo;0;L;;;;;N;;;;; +142DA;EGYPTIAN HIEROGLYPH-142DA;Lo;0;L;;;;;N;;;;; +142DB;EGYPTIAN HIEROGLYPH-142DB;Lo;0;L;;;;;N;;;;; +142DC;EGYPTIAN HIEROGLYPH-142DC;Lo;0;L;;;;;N;;;;; +142DD;EGYPTIAN HIEROGLYPH-142DD;Lo;0;L;;;;;N;;;;; +142DE;EGYPTIAN HIEROGLYPH-142DE;Lo;0;L;;;;;N;;;;; +142DF;EGYPTIAN HIEROGLYPH-142DF;Lo;0;L;;;;;N;;;;; +142E0;EGYPTIAN HIEROGLYPH-142E0;Lo;0;L;;;;;N;;;;; +142E1;EGYPTIAN HIEROGLYPH-142E1;Lo;0;L;;;;;N;;;;; +142E2;EGYPTIAN HIEROGLYPH-142E2;Lo;0;L;;;;;N;;;;; +142E3;EGYPTIAN HIEROGLYPH-142E3;Lo;0;L;;;;;N;;;;; +142E4;EGYPTIAN HIEROGLYPH-142E4;Lo;0;L;;;;;N;;;;; +142E5;EGYPTIAN HIEROGLYPH-142E5;Lo;0;L;;;;;N;;;;; +142E6;EGYPTIAN HIEROGLYPH-142E6;Lo;0;L;;;;;N;;;;; +142E7;EGYPTIAN HIEROGLYPH-142E7;Lo;0;L;;;;;N;;;;; +142E8;EGYPTIAN HIEROGLYPH-142E8;Lo;0;L;;;;;N;;;;; +142E9;EGYPTIAN HIEROGLYPH-142E9;Lo;0;L;;;;;N;;;;; +142EA;EGYPTIAN HIEROGLYPH-142EA;Lo;0;L;;;;;N;;;;; +142EB;EGYPTIAN HIEROGLYPH-142EB;Lo;0;L;;;;;N;;;;; +142EC;EGYPTIAN HIEROGLYPH-142EC;Lo;0;L;;;;;N;;;;; +142ED;EGYPTIAN HIEROGLYPH-142ED;Lo;0;L;;;;;N;;;;; +142EE;EGYPTIAN HIEROGLYPH-142EE;Lo;0;L;;;;;N;;;;; +142EF;EGYPTIAN HIEROGLYPH-142EF;Lo;0;L;;;;;N;;;;; +142F0;EGYPTIAN HIEROGLYPH-142F0;Lo;0;L;;;;;N;;;;; +142F1;EGYPTIAN HIEROGLYPH-142F1;Lo;0;L;;;;;N;;;;; +142F2;EGYPTIAN HIEROGLYPH-142F2;Lo;0;L;;;;;N;;;;; +142F3;EGYPTIAN HIEROGLYPH-142F3;Lo;0;L;;;;;N;;;;; +142F4;EGYPTIAN HIEROGLYPH-142F4;Lo;0;L;;;;;N;;;;; +142F5;EGYPTIAN HIEROGLYPH-142F5;Lo;0;L;;;;;N;;;;; +142F6;EGYPTIAN HIEROGLYPH-142F6;Lo;0;L;;;;;N;;;;; +142F7;EGYPTIAN HIEROGLYPH-142F7;Lo;0;L;;;;;N;;;;; +142F8;EGYPTIAN HIEROGLYPH-142F8;Lo;0;L;;;;;N;;;;; +142F9;EGYPTIAN HIEROGLYPH-142F9;Lo;0;L;;;;;N;;;;; +142FA;EGYPTIAN HIEROGLYPH-142FA;Lo;0;L;;;;;N;;;;; +142FB;EGYPTIAN HIEROGLYPH-142FB;Lo;0;L;;;;;N;;;;; +142FC;EGYPTIAN HIEROGLYPH-142FC;Lo;0;L;;;;;N;;;;; +142FD;EGYPTIAN HIEROGLYPH-142FD;Lo;0;L;;;;;N;;;;; +142FE;EGYPTIAN HIEROGLYPH-142FE;Lo;0;L;;;;;N;;;;; +142FF;EGYPTIAN HIEROGLYPH-142FF;Lo;0;L;;;;;N;;;;; +14300;EGYPTIAN HIEROGLYPH-14300;Lo;0;L;;;;;N;;;;; +14301;EGYPTIAN HIEROGLYPH-14301;Lo;0;L;;;;;N;;;;; +14302;EGYPTIAN HIEROGLYPH-14302;Lo;0;L;;;;;N;;;;; +14303;EGYPTIAN HIEROGLYPH-14303;Lo;0;L;;;;;N;;;;; +14304;EGYPTIAN HIEROGLYPH-14304;Lo;0;L;;;;;N;;;;; +14305;EGYPTIAN HIEROGLYPH-14305;Lo;0;L;;;;;N;;;;; +14306;EGYPTIAN HIEROGLYPH-14306;Lo;0;L;;;;;N;;;;; +14307;EGYPTIAN HIEROGLYPH-14307;Lo;0;L;;;;;N;;;;; +14308;EGYPTIAN HIEROGLYPH-14308;Lo;0;L;;;;;N;;;;; +14309;EGYPTIAN HIEROGLYPH-14309;Lo;0;L;;;;;N;;;;; +1430A;EGYPTIAN HIEROGLYPH-1430A;Lo;0;L;;;;;N;;;;; +1430B;EGYPTIAN HIEROGLYPH-1430B;Lo;0;L;;;;;N;;;;; +1430C;EGYPTIAN HIEROGLYPH-1430C;Lo;0;L;;;;;N;;;;; +1430D;EGYPTIAN HIEROGLYPH-1430D;Lo;0;L;;;;;N;;;;; +1430E;EGYPTIAN HIEROGLYPH-1430E;Lo;0;L;;;;;N;;;;; +1430F;EGYPTIAN HIEROGLYPH-1430F;Lo;0;L;;;;;N;;;;; +14310;EGYPTIAN HIEROGLYPH-14310;Lo;0;L;;;;;N;;;;; +14311;EGYPTIAN HIEROGLYPH-14311;Lo;0;L;;;;;N;;;;; +14312;EGYPTIAN HIEROGLYPH-14312;Lo;0;L;;;;;N;;;;; +14313;EGYPTIAN HIEROGLYPH-14313;Lo;0;L;;;;;N;;;;; +14314;EGYPTIAN HIEROGLYPH-14314;Lo;0;L;;;;;N;;;;; +14315;EGYPTIAN HIEROGLYPH-14315;Lo;0;L;;;;;N;;;;; +14316;EGYPTIAN HIEROGLYPH-14316;Lo;0;L;;;;;N;;;;; +14317;EGYPTIAN HIEROGLYPH-14317;Lo;0;L;;;;;N;;;;; +14318;EGYPTIAN HIEROGLYPH-14318;Lo;0;L;;;;;N;;;;; +14319;EGYPTIAN HIEROGLYPH-14319;Lo;0;L;;;;;N;;;;; +1431A;EGYPTIAN HIEROGLYPH-1431A;Lo;0;L;;;;;N;;;;; +1431B;EGYPTIAN HIEROGLYPH-1431B;Lo;0;L;;;;;N;;;;; +1431C;EGYPTIAN HIEROGLYPH-1431C;Lo;0;L;;;;;N;;;;; +1431D;EGYPTIAN HIEROGLYPH-1431D;Lo;0;L;;;;;N;;;;; +1431E;EGYPTIAN HIEROGLYPH-1431E;Lo;0;L;;;;;N;;;;; +1431F;EGYPTIAN HIEROGLYPH-1431F;Lo;0;L;;;;;N;;;;; +14320;EGYPTIAN HIEROGLYPH-14320;Lo;0;L;;;;;N;;;;; +14321;EGYPTIAN HIEROGLYPH-14321;Lo;0;L;;;;;N;;;;; +14322;EGYPTIAN HIEROGLYPH-14322;Lo;0;L;;;;;N;;;;; +14323;EGYPTIAN HIEROGLYPH-14323;Lo;0;L;;;;;N;;;;; +14324;EGYPTIAN HIEROGLYPH-14324;Lo;0;L;;;;;N;;;;; +14325;EGYPTIAN HIEROGLYPH-14325;Lo;0;L;;;;;N;;;;; +14326;EGYPTIAN HIEROGLYPH-14326;Lo;0;L;;;;;N;;;;; +14327;EGYPTIAN HIEROGLYPH-14327;Lo;0;L;;;;;N;;;;; +14328;EGYPTIAN HIEROGLYPH-14328;Lo;0;L;;;;;N;;;;; +14329;EGYPTIAN HIEROGLYPH-14329;Lo;0;L;;;;;N;;;;; +1432A;EGYPTIAN HIEROGLYPH-1432A;Lo;0;L;;;;;N;;;;; +1432B;EGYPTIAN HIEROGLYPH-1432B;Lo;0;L;;;;;N;;;;; +1432C;EGYPTIAN HIEROGLYPH-1432C;Lo;0;L;;;;;N;;;;; +1432D;EGYPTIAN HIEROGLYPH-1432D;Lo;0;L;;;;;N;;;;; +1432E;EGYPTIAN HIEROGLYPH-1432E;Lo;0;L;;;;;N;;;;; +1432F;EGYPTIAN HIEROGLYPH-1432F;Lo;0;L;;;;;N;;;;; +14330;EGYPTIAN HIEROGLYPH-14330;Lo;0;L;;;;;N;;;;; +14331;EGYPTIAN HIEROGLYPH-14331;Lo;0;L;;;;;N;;;;; +14332;EGYPTIAN HIEROGLYPH-14332;Lo;0;L;;;;;N;;;;; +14333;EGYPTIAN HIEROGLYPH-14333;Lo;0;L;;;;;N;;;;; +14334;EGYPTIAN HIEROGLYPH-14334;Lo;0;L;;;;;N;;;;; +14335;EGYPTIAN HIEROGLYPH-14335;Lo;0;L;;;;;N;;;;; +14336;EGYPTIAN HIEROGLYPH-14336;Lo;0;L;;;;;N;;;;; +14337;EGYPTIAN HIEROGLYPH-14337;Lo;0;L;;;;;N;;;;; +14338;EGYPTIAN HIEROGLYPH-14338;Lo;0;L;;;;;N;;;;; +14339;EGYPTIAN HIEROGLYPH-14339;Lo;0;L;;;;;N;;;;; +1433A;EGYPTIAN HIEROGLYPH-1433A;Lo;0;L;;;;;N;;;;; +1433B;EGYPTIAN HIEROGLYPH-1433B;Lo;0;L;;;;;N;;;;; +1433C;EGYPTIAN HIEROGLYPH-1433C;Lo;0;L;;;;;N;;;;; +1433D;EGYPTIAN HIEROGLYPH-1433D;Lo;0;L;;;;;N;;;;; +1433E;EGYPTIAN HIEROGLYPH-1433E;Lo;0;L;;;;;N;;;;; +1433F;EGYPTIAN HIEROGLYPH-1433F;Lo;0;L;;;;;N;;;;; +14340;EGYPTIAN HIEROGLYPH-14340;Lo;0;L;;;;;N;;;;; +14341;EGYPTIAN HIEROGLYPH-14341;Lo;0;L;;;;;N;;;;; +14342;EGYPTIAN HIEROGLYPH-14342;Lo;0;L;;;;;N;;;;; +14343;EGYPTIAN HIEROGLYPH-14343;Lo;0;L;;;;;N;;;;; +14344;EGYPTIAN HIEROGLYPH-14344;Lo;0;L;;;;;N;;;;; +14345;EGYPTIAN HIEROGLYPH-14345;Lo;0;L;;;;;N;;;;; +14346;EGYPTIAN HIEROGLYPH-14346;Lo;0;L;;;;;N;;;;; +14347;EGYPTIAN HIEROGLYPH-14347;Lo;0;L;;;;;N;;;;; +14348;EGYPTIAN HIEROGLYPH-14348;Lo;0;L;;;;;N;;;;; +14349;EGYPTIAN HIEROGLYPH-14349;Lo;0;L;;;;;N;;;;; +1434A;EGYPTIAN HIEROGLYPH-1434A;Lo;0;L;;;;;N;;;;; +1434B;EGYPTIAN HIEROGLYPH-1434B;Lo;0;L;;;;;N;;;;; +1434C;EGYPTIAN HIEROGLYPH-1434C;Lo;0;L;;;;;N;;;;; +1434D;EGYPTIAN HIEROGLYPH-1434D;Lo;0;L;;;;;N;;;;; +1434E;EGYPTIAN HIEROGLYPH-1434E;Lo;0;L;;;;;N;;;;; +1434F;EGYPTIAN HIEROGLYPH-1434F;Lo;0;L;;;;;N;;;;; +14350;EGYPTIAN HIEROGLYPH-14350;Lo;0;L;;;;;N;;;;; +14351;EGYPTIAN HIEROGLYPH-14351;Lo;0;L;;;;;N;;;;; +14352;EGYPTIAN HIEROGLYPH-14352;Lo;0;L;;;;;N;;;;; +14353;EGYPTIAN HIEROGLYPH-14353;Lo;0;L;;;;;N;;;;; +14354;EGYPTIAN HIEROGLYPH-14354;Lo;0;L;;;;;N;;;;; +14355;EGYPTIAN HIEROGLYPH-14355;Lo;0;L;;;;;N;;;;; +14356;EGYPTIAN HIEROGLYPH-14356;Lo;0;L;;;;;N;;;;; +14357;EGYPTIAN HIEROGLYPH-14357;Lo;0;L;;;;;N;;;;; +14358;EGYPTIAN HIEROGLYPH-14358;Lo;0;L;;;;;N;;;;; +14359;EGYPTIAN HIEROGLYPH-14359;Lo;0;L;;;;;N;;;;; +1435A;EGYPTIAN HIEROGLYPH-1435A;Lo;0;L;;;;;N;;;;; +1435B;EGYPTIAN HIEROGLYPH-1435B;Lo;0;L;;;;;N;;;;; +1435C;EGYPTIAN HIEROGLYPH-1435C;Lo;0;L;;;;;N;;;;; +1435D;EGYPTIAN HIEROGLYPH-1435D;Lo;0;L;;;;;N;;;;; +1435E;EGYPTIAN HIEROGLYPH-1435E;Lo;0;L;;;;;N;;;;; +1435F;EGYPTIAN HIEROGLYPH-1435F;Lo;0;L;;;;;N;;;;; +14360;EGYPTIAN HIEROGLYPH-14360;Lo;0;L;;;;;N;;;;; +14361;EGYPTIAN HIEROGLYPH-14361;Lo;0;L;;;;;N;;;;; +14362;EGYPTIAN HIEROGLYPH-14362;Lo;0;L;;;;;N;;;;; +14363;EGYPTIAN HIEROGLYPH-14363;Lo;0;L;;;;;N;;;;; +14364;EGYPTIAN HIEROGLYPH-14364;Lo;0;L;;;;;N;;;;; +14365;EGYPTIAN HIEROGLYPH-14365;Lo;0;L;;;;;N;;;;; +14366;EGYPTIAN HIEROGLYPH-14366;Lo;0;L;;;;;N;;;;; +14367;EGYPTIAN HIEROGLYPH-14367;Lo;0;L;;;;;N;;;;; +14368;EGYPTIAN HIEROGLYPH-14368;Lo;0;L;;;;;N;;;;; +14369;EGYPTIAN HIEROGLYPH-14369;Lo;0;L;;;;;N;;;;; +1436A;EGYPTIAN HIEROGLYPH-1436A;Lo;0;L;;;;;N;;;;; +1436B;EGYPTIAN HIEROGLYPH-1436B;Lo;0;L;;;;;N;;;;; +1436C;EGYPTIAN HIEROGLYPH-1436C;Lo;0;L;;;;;N;;;;; +1436D;EGYPTIAN HIEROGLYPH-1436D;Lo;0;L;;;;;N;;;;; +1436E;EGYPTIAN HIEROGLYPH-1436E;Lo;0;L;;;;;N;;;;; +1436F;EGYPTIAN HIEROGLYPH-1436F;Lo;0;L;;;;;N;;;;; +14370;EGYPTIAN HIEROGLYPH-14370;Lo;0;L;;;;;N;;;;; +14371;EGYPTIAN HIEROGLYPH-14371;Lo;0;L;;;;;N;;;;; +14372;EGYPTIAN HIEROGLYPH-14372;Lo;0;L;;;;;N;;;;; +14373;EGYPTIAN HIEROGLYPH-14373;Lo;0;L;;;;;N;;;;; +14374;EGYPTIAN HIEROGLYPH-14374;Lo;0;L;;;;;N;;;;; +14375;EGYPTIAN HIEROGLYPH-14375;Lo;0;L;;;;;N;;;;; +14376;EGYPTIAN HIEROGLYPH-14376;Lo;0;L;;;;;N;;;;; +14377;EGYPTIAN HIEROGLYPH-14377;Lo;0;L;;;;;N;;;;; +14378;EGYPTIAN HIEROGLYPH-14378;Lo;0;L;;;;;N;;;;; +14379;EGYPTIAN HIEROGLYPH-14379;Lo;0;L;;;;;N;;;;; +1437A;EGYPTIAN HIEROGLYPH-1437A;Lo;0;L;;;;;N;;;;; +1437B;EGYPTIAN HIEROGLYPH-1437B;Lo;0;L;;;;;N;;;;; +1437C;EGYPTIAN HIEROGLYPH-1437C;Lo;0;L;;;;;N;;;;; +1437D;EGYPTIAN HIEROGLYPH-1437D;Lo;0;L;;;;;N;;;;; +1437E;EGYPTIAN HIEROGLYPH-1437E;Lo;0;L;;;;;N;;;;; +1437F;EGYPTIAN HIEROGLYPH-1437F;Lo;0;L;;;;;N;;;;; +14380;EGYPTIAN HIEROGLYPH-14380;Lo;0;L;;;;;N;;;;; +14381;EGYPTIAN HIEROGLYPH-14381;Lo;0;L;;;;;N;;;;; +14382;EGYPTIAN HIEROGLYPH-14382;Lo;0;L;;;;;N;;;;; +14383;EGYPTIAN HIEROGLYPH-14383;Lo;0;L;;;;;N;;;;; +14384;EGYPTIAN HIEROGLYPH-14384;Lo;0;L;;;;;N;;;;; +14385;EGYPTIAN HIEROGLYPH-14385;Lo;0;L;;;;;N;;;;; +14386;EGYPTIAN HIEROGLYPH-14386;Lo;0;L;;;;;N;;;;; +14387;EGYPTIAN HIEROGLYPH-14387;Lo;0;L;;;;;N;;;;; +14388;EGYPTIAN HIEROGLYPH-14388;Lo;0;L;;;;;N;;;;; +14389;EGYPTIAN HIEROGLYPH-14389;Lo;0;L;;;;;N;;;;; +1438A;EGYPTIAN HIEROGLYPH-1438A;Lo;0;L;;;;;N;;;;; +1438B;EGYPTIAN HIEROGLYPH-1438B;Lo;0;L;;;;;N;;;;; +1438C;EGYPTIAN HIEROGLYPH-1438C;Lo;0;L;;;;;N;;;;; +1438D;EGYPTIAN HIEROGLYPH-1438D;Lo;0;L;;;;;N;;;;; +1438E;EGYPTIAN HIEROGLYPH-1438E;Lo;0;L;;;;;N;;;;; +1438F;EGYPTIAN HIEROGLYPH-1438F;Lo;0;L;;;;;N;;;;; +14390;EGYPTIAN HIEROGLYPH-14390;Lo;0;L;;;;;N;;;;; +14391;EGYPTIAN HIEROGLYPH-14391;Lo;0;L;;;;;N;;;;; +14392;EGYPTIAN HIEROGLYPH-14392;Lo;0;L;;;;;N;;;;; +14393;EGYPTIAN HIEROGLYPH-14393;Lo;0;L;;;;;N;;;;; +14394;EGYPTIAN HIEROGLYPH-14394;Lo;0;L;;;;;N;;;;; +14395;EGYPTIAN HIEROGLYPH-14395;Lo;0;L;;;;;N;;;;; +14396;EGYPTIAN HIEROGLYPH-14396;Lo;0;L;;;;;N;;;;; +14397;EGYPTIAN HIEROGLYPH-14397;Lo;0;L;;;;;N;;;;; +14398;EGYPTIAN HIEROGLYPH-14398;Lo;0;L;;;;;N;;;;; +14399;EGYPTIAN HIEROGLYPH-14399;Lo;0;L;;;;;N;;;;; +1439A;EGYPTIAN HIEROGLYPH-1439A;Lo;0;L;;;;;N;;;;; +1439B;EGYPTIAN HIEROGLYPH-1439B;Lo;0;L;;;;;N;;;;; +1439C;EGYPTIAN HIEROGLYPH-1439C;Lo;0;L;;;;;N;;;;; +1439D;EGYPTIAN HIEROGLYPH-1439D;Lo;0;L;;;;;N;;;;; +1439E;EGYPTIAN HIEROGLYPH-1439E;Lo;0;L;;;;;N;;;;; +1439F;EGYPTIAN HIEROGLYPH-1439F;Lo;0;L;;;;;N;;;;; +143A0;EGYPTIAN HIEROGLYPH-143A0;Lo;0;L;;;;;N;;;;; +143A1;EGYPTIAN HIEROGLYPH-143A1;Lo;0;L;;;;;N;;;;; +143A2;EGYPTIAN HIEROGLYPH-143A2;Lo;0;L;;;;;N;;;;; +143A3;EGYPTIAN HIEROGLYPH-143A3;Lo;0;L;;;;;N;;;;; +143A4;EGYPTIAN HIEROGLYPH-143A4;Lo;0;L;;;;;N;;;;; +143A5;EGYPTIAN HIEROGLYPH-143A5;Lo;0;L;;;;;N;;;;; +143A6;EGYPTIAN HIEROGLYPH-143A6;Lo;0;L;;;;;N;;;;; +143A7;EGYPTIAN HIEROGLYPH-143A7;Lo;0;L;;;;;N;;;;; +143A8;EGYPTIAN HIEROGLYPH-143A8;Lo;0;L;;;;;N;;;;; +143A9;EGYPTIAN HIEROGLYPH-143A9;Lo;0;L;;;;;N;;;;; +143AA;EGYPTIAN HIEROGLYPH-143AA;Lo;0;L;;;;;N;;;;; +143AB;EGYPTIAN HIEROGLYPH-143AB;Lo;0;L;;;;;N;;;;; +143AC;EGYPTIAN HIEROGLYPH-143AC;Lo;0;L;;;;;N;;;;; +143AD;EGYPTIAN HIEROGLYPH-143AD;Lo;0;L;;;;;N;;;;; +143AE;EGYPTIAN HIEROGLYPH-143AE;Lo;0;L;;;;;N;;;;; +143AF;EGYPTIAN HIEROGLYPH-143AF;Lo;0;L;;;;;N;;;;; +143B0;EGYPTIAN HIEROGLYPH-143B0;Lo;0;L;;;;;N;;;;; +143B1;EGYPTIAN HIEROGLYPH-143B1;Lo;0;L;;;;;N;;;;; +143B2;EGYPTIAN HIEROGLYPH-143B2;Lo;0;L;;;;;N;;;;; +143B3;EGYPTIAN HIEROGLYPH-143B3;Lo;0;L;;;;;N;;;;; +143B4;EGYPTIAN HIEROGLYPH-143B4;Lo;0;L;;;;;N;;;;; +143B5;EGYPTIAN HIEROGLYPH-143B5;Lo;0;L;;;;;N;;;;; +143B6;EGYPTIAN HIEROGLYPH-143B6;Lo;0;L;;;;;N;;;;; +143B7;EGYPTIAN HIEROGLYPH-143B7;Lo;0;L;;;;;N;;;;; +143B8;EGYPTIAN HIEROGLYPH-143B8;Lo;0;L;;;;;N;;;;; +143B9;EGYPTIAN HIEROGLYPH-143B9;Lo;0;L;;;;;N;;;;; +143BA;EGYPTIAN HIEROGLYPH-143BA;Lo;0;L;;;;;N;;;;; +143BB;EGYPTIAN HIEROGLYPH-143BB;Lo;0;L;;;;;N;;;;; +143BC;EGYPTIAN HIEROGLYPH-143BC;Lo;0;L;;;;;N;;;;; +143BD;EGYPTIAN HIEROGLYPH-143BD;Lo;0;L;;;;;N;;;;; +143BE;EGYPTIAN HIEROGLYPH-143BE;Lo;0;L;;;;;N;;;;; +143BF;EGYPTIAN HIEROGLYPH-143BF;Lo;0;L;;;;;N;;;;; +143C0;EGYPTIAN HIEROGLYPH-143C0;Lo;0;L;;;;;N;;;;; +143C1;EGYPTIAN HIEROGLYPH-143C1;Lo;0;L;;;;;N;;;;; +143C2;EGYPTIAN HIEROGLYPH-143C2;Lo;0;L;;;;;N;;;;; +143C3;EGYPTIAN HIEROGLYPH-143C3;Lo;0;L;;;;;N;;;;; +143C4;EGYPTIAN HIEROGLYPH-143C4;Lo;0;L;;;;;N;;;;; +143C5;EGYPTIAN HIEROGLYPH-143C5;Lo;0;L;;;;;N;;;;; +143C6;EGYPTIAN HIEROGLYPH-143C6;Lo;0;L;;;;;N;;;;; +143C7;EGYPTIAN HIEROGLYPH-143C7;Lo;0;L;;;;;N;;;;; +143C8;EGYPTIAN HIEROGLYPH-143C8;Lo;0;L;;;;;N;;;;; +143C9;EGYPTIAN HIEROGLYPH-143C9;Lo;0;L;;;;;N;;;;; +143CA;EGYPTIAN HIEROGLYPH-143CA;Lo;0;L;;;;;N;;;;; +143CB;EGYPTIAN HIEROGLYPH-143CB;Lo;0;L;;;;;N;;;;; +143CC;EGYPTIAN HIEROGLYPH-143CC;Lo;0;L;;;;;N;;;;; +143CD;EGYPTIAN HIEROGLYPH-143CD;Lo;0;L;;;;;N;;;;; +143CE;EGYPTIAN HIEROGLYPH-143CE;Lo;0;L;;;;;N;;;;; +143CF;EGYPTIAN HIEROGLYPH-143CF;Lo;0;L;;;;;N;;;;; +143D0;EGYPTIAN HIEROGLYPH-143D0;Lo;0;L;;;;;N;;;;; +143D1;EGYPTIAN HIEROGLYPH-143D1;Lo;0;L;;;;;N;;;;; +143D2;EGYPTIAN HIEROGLYPH-143D2;Lo;0;L;;;;;N;;;;; +143D3;EGYPTIAN HIEROGLYPH-143D3;Lo;0;L;;;;;N;;;;; +143D4;EGYPTIAN HIEROGLYPH-143D4;Lo;0;L;;;;;N;;;;; +143D5;EGYPTIAN HIEROGLYPH-143D5;Lo;0;L;;;;;N;;;;; +143D6;EGYPTIAN HIEROGLYPH-143D6;Lo;0;L;;;;;N;;;;; +143D7;EGYPTIAN HIEROGLYPH-143D7;Lo;0;L;;;;;N;;;;; +143D8;EGYPTIAN HIEROGLYPH-143D8;Lo;0;L;;;;;N;;;;; +143D9;EGYPTIAN HIEROGLYPH-143D9;Lo;0;L;;;;;N;;;;; +143DA;EGYPTIAN HIEROGLYPH-143DA;Lo;0;L;;;;;N;;;;; +143DB;EGYPTIAN HIEROGLYPH-143DB;Lo;0;L;;;;;N;;;;; +143DC;EGYPTIAN HIEROGLYPH-143DC;Lo;0;L;;;;;N;;;;; +143DD;EGYPTIAN HIEROGLYPH-143DD;Lo;0;L;;;;;N;;;;; +143DE;EGYPTIAN HIEROGLYPH-143DE;Lo;0;L;;;;;N;;;;; +143DF;EGYPTIAN HIEROGLYPH-143DF;Lo;0;L;;;;;N;;;;; +143E0;EGYPTIAN HIEROGLYPH-143E0;Lo;0;L;;;;;N;;;;; +143E1;EGYPTIAN HIEROGLYPH-143E1;Lo;0;L;;;;;N;;;;; +143E2;EGYPTIAN HIEROGLYPH-143E2;Lo;0;L;;;;;N;;;;; +143E3;EGYPTIAN HIEROGLYPH-143E3;Lo;0;L;;;;;N;;;;; +143E4;EGYPTIAN HIEROGLYPH-143E4;Lo;0;L;;;;;N;;;;; +143E5;EGYPTIAN HIEROGLYPH-143E5;Lo;0;L;;;;;N;;;;; +143E6;EGYPTIAN HIEROGLYPH-143E6;Lo;0;L;;;;;N;;;;; +143E7;EGYPTIAN HIEROGLYPH-143E7;Lo;0;L;;;;;N;;;;; +143E8;EGYPTIAN HIEROGLYPH-143E8;Lo;0;L;;;;;N;;;;; +143E9;EGYPTIAN HIEROGLYPH-143E9;Lo;0;L;;;;;N;;;;; +143EA;EGYPTIAN HIEROGLYPH-143EA;Lo;0;L;;;;;N;;;;; +143EB;EGYPTIAN HIEROGLYPH-143EB;Lo;0;L;;;;;N;;;;; +143EC;EGYPTIAN HIEROGLYPH-143EC;Lo;0;L;;;;;N;;;;; +143ED;EGYPTIAN HIEROGLYPH-143ED;Lo;0;L;;;;;N;;;;; +143EE;EGYPTIAN HIEROGLYPH-143EE;Lo;0;L;;;;;N;;;;; +143EF;EGYPTIAN HIEROGLYPH-143EF;Lo;0;L;;;;;N;;;;; +143F0;EGYPTIAN HIEROGLYPH-143F0;Lo;0;L;;;;;N;;;;; +143F1;EGYPTIAN HIEROGLYPH-143F1;Lo;0;L;;;;;N;;;;; +143F2;EGYPTIAN HIEROGLYPH-143F2;Lo;0;L;;;;;N;;;;; +143F3;EGYPTIAN HIEROGLYPH-143F3;Lo;0;L;;;;;N;;;;; +143F4;EGYPTIAN HIEROGLYPH-143F4;Lo;0;L;;;;;N;;;;; +143F5;EGYPTIAN HIEROGLYPH-143F5;Lo;0;L;;;;;N;;;;; +143F6;EGYPTIAN HIEROGLYPH-143F6;Lo;0;L;;;;;N;;;;; +143F7;EGYPTIAN HIEROGLYPH-143F7;Lo;0;L;;;;;N;;;;; +143F8;EGYPTIAN HIEROGLYPH-143F8;Lo;0;L;;;;;N;;;;; +143F9;EGYPTIAN HIEROGLYPH-143F9;Lo;0;L;;;;;N;;;;; +143FA;EGYPTIAN HIEROGLYPH-143FA;Lo;0;L;;;;;N;;;;; 14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; 14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; 14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; @@ -24223,6 +29053,64 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 14644;ANATOLIAN HIEROGLYPH A528;Lo;0;L;;;;;N;;;;; 14645;ANATOLIAN HIEROGLYPH A529;Lo;0;L;;;;;N;;;;; 14646;ANATOLIAN HIEROGLYPH A530;Lo;0;L;;;;;N;;;;; +16100;GURUNG KHEMA LETTER A;Lo;0;L;;;;;N;;;;; +16101;GURUNG KHEMA LETTER KA;Lo;0;L;;;;;N;;;;; +16102;GURUNG KHEMA LETTER KHA;Lo;0;L;;;;;N;;;;; +16103;GURUNG KHEMA LETTER GA;Lo;0;L;;;;;N;;;;; +16104;GURUNG KHEMA LETTER GHA;Lo;0;L;;;;;N;;;;; +16105;GURUNG KHEMA LETTER NGA;Lo;0;L;;;;;N;;;;; +16106;GURUNG KHEMA LETTER CA;Lo;0;L;;;;;N;;;;; +16107;GURUNG KHEMA LETTER CHA;Lo;0;L;;;;;N;;;;; +16108;GURUNG KHEMA LETTER JA;Lo;0;L;;;;;N;;;;; +16109;GURUNG KHEMA LETTER JHA;Lo;0;L;;;;;N;;;;; +1610A;GURUNG KHEMA LETTER HA;Lo;0;L;;;;;N;;;;; +1610B;GURUNG KHEMA LETTER TTA;Lo;0;L;;;;;N;;;;; +1610C;GURUNG KHEMA LETTER TTHA;Lo;0;L;;;;;N;;;;; +1610D;GURUNG KHEMA LETTER DDA;Lo;0;L;;;;;N;;;;; +1610E;GURUNG KHEMA LETTER DDHA;Lo;0;L;;;;;N;;;;; +1610F;GURUNG KHEMA LETTER VA;Lo;0;L;;;;;N;;;;; +16110;GURUNG KHEMA LETTER TA;Lo;0;L;;;;;N;;;;; +16111;GURUNG KHEMA LETTER THA;Lo;0;L;;;;;N;;;;; +16112;GURUNG KHEMA LETTER DA;Lo;0;L;;;;;N;;;;; +16113;GURUNG KHEMA LETTER DHA;Lo;0;L;;;;;N;;;;; +16114;GURUNG KHEMA LETTER NA;Lo;0;L;;;;;N;;;;; +16115;GURUNG KHEMA LETTER PA;Lo;0;L;;;;;N;;;;; +16116;GURUNG KHEMA LETTER PHA;Lo;0;L;;;;;N;;;;; +16117;GURUNG KHEMA LETTER BA;Lo;0;L;;;;;N;;;;; +16118;GURUNG KHEMA LETTER BHA;Lo;0;L;;;;;N;;;;; +16119;GURUNG KHEMA LETTER MA;Lo;0;L;;;;;N;;;;; +1611A;GURUNG KHEMA LETTER YA;Lo;0;L;;;;;N;;;;; +1611B;GURUNG KHEMA LETTER RA;Lo;0;L;;;;;N;;;;; +1611C;GURUNG KHEMA LETTER LA;Lo;0;L;;;;;N;;;;; +1611D;GURUNG KHEMA LETTER SA;Lo;0;L;;;;;N;;;;; +1611E;GURUNG KHEMA VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; +1611F;GURUNG KHEMA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +16120;GURUNG KHEMA VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +16121;GURUNG KHEMA VOWEL SIGN U;Mn;0;NSM;1611E 1611E;;;;N;;;;; +16122;GURUNG KHEMA VOWEL SIGN UU;Mn;0;NSM;1611E 16129;;;;N;;;;; +16123;GURUNG KHEMA VOWEL SIGN E;Mn;0;NSM;1611E 1611F;;;;N;;;;; +16124;GURUNG KHEMA VOWEL SIGN EE;Mn;0;NSM;16129 1611F;;;;N;;;;; +16125;GURUNG KHEMA VOWEL SIGN AI;Mn;0;NSM;1611E 16120;;;;N;;;;; +16126;GURUNG KHEMA VOWEL SIGN O;Mn;0;NSM;16121 1611F;;;;N;;;;; +16127;GURUNG KHEMA VOWEL SIGN OO;Mn;0;NSM;16122 1611F;;;;N;;;;; +16128;GURUNG KHEMA VOWEL SIGN AU;Mn;0;NSM;16121 16120;;;;N;;;;; +16129;GURUNG KHEMA VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;; +1612A;GURUNG KHEMA CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;; +1612B;GURUNG KHEMA CONSONANT SIGN MEDIAL VA;Mc;0;L;;;;;N;;;;; +1612C;GURUNG KHEMA CONSONANT SIGN MEDIAL HA;Mc;0;L;;;;;N;;;;; +1612D;GURUNG KHEMA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +1612E;GURUNG KHEMA CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;; +1612F;GURUNG KHEMA SIGN THOLHOMA;Mn;9;NSM;;;;;N;;;;; +16130;GURUNG KHEMA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +16131;GURUNG KHEMA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +16132;GURUNG KHEMA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +16133;GURUNG KHEMA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +16134;GURUNG KHEMA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +16135;GURUNG KHEMA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +16136;GURUNG KHEMA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +16137;GURUNG KHEMA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +16138;GURUNG KHEMA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +16139;GURUNG KHEMA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 16800;BAMUM LETTER PHASE-A NGKUE MFON;Lo;0;L;;;;;N;;;;; 16801;BAMUM LETTER PHASE-A GBIEE FON;Lo;0;L;;;;;N;;;;; 16802;BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE;Lo;0;L;;;;;N;;;;; @@ -24835,6 +29723,95 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 16A69;MRO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 16A6E;MRO DANDA;Po;0;L;;;;;N;;;;; 16A6F;MRO DOUBLE DANDA;Po;0;L;;;;;N;;;;; +16A70;TANGSA LETTER OZ;Lo;0;L;;;;;N;;;;; +16A71;TANGSA LETTER OC;Lo;0;L;;;;;N;;;;; +16A72;TANGSA LETTER OQ;Lo;0;L;;;;;N;;;;; +16A73;TANGSA LETTER OX;Lo;0;L;;;;;N;;;;; +16A74;TANGSA LETTER AZ;Lo;0;L;;;;;N;;;;; +16A75;TANGSA LETTER AC;Lo;0;L;;;;;N;;;;; +16A76;TANGSA LETTER AQ;Lo;0;L;;;;;N;;;;; +16A77;TANGSA LETTER AX;Lo;0;L;;;;;N;;;;; +16A78;TANGSA LETTER VZ;Lo;0;L;;;;;N;;;;; +16A79;TANGSA LETTER VC;Lo;0;L;;;;;N;;;;; +16A7A;TANGSA LETTER VQ;Lo;0;L;;;;;N;;;;; +16A7B;TANGSA LETTER VX;Lo;0;L;;;;;N;;;;; +16A7C;TANGSA LETTER EZ;Lo;0;L;;;;;N;;;;; +16A7D;TANGSA LETTER EC;Lo;0;L;;;;;N;;;;; +16A7E;TANGSA LETTER EQ;Lo;0;L;;;;;N;;;;; +16A7F;TANGSA LETTER EX;Lo;0;L;;;;;N;;;;; +16A80;TANGSA LETTER IZ;Lo;0;L;;;;;N;;;;; +16A81;TANGSA LETTER IC;Lo;0;L;;;;;N;;;;; +16A82;TANGSA LETTER IQ;Lo;0;L;;;;;N;;;;; +16A83;TANGSA LETTER IX;Lo;0;L;;;;;N;;;;; +16A84;TANGSA LETTER UZ;Lo;0;L;;;;;N;;;;; +16A85;TANGSA LETTER UC;Lo;0;L;;;;;N;;;;; +16A86;TANGSA LETTER UQ;Lo;0;L;;;;;N;;;;; +16A87;TANGSA LETTER UX;Lo;0;L;;;;;N;;;;; +16A88;TANGSA LETTER AWZ;Lo;0;L;;;;;N;;;;; +16A89;TANGSA LETTER AWC;Lo;0;L;;;;;N;;;;; +16A8A;TANGSA LETTER AWQ;Lo;0;L;;;;;N;;;;; +16A8B;TANGSA LETTER AWX;Lo;0;L;;;;;N;;;;; +16A8C;TANGSA LETTER UIZ;Lo;0;L;;;;;N;;;;; +16A8D;TANGSA LETTER UIC;Lo;0;L;;;;;N;;;;; +16A8E;TANGSA LETTER UIQ;Lo;0;L;;;;;N;;;;; +16A8F;TANGSA LETTER UIX;Lo;0;L;;;;;N;;;;; +16A90;TANGSA LETTER FINAL NG;Lo;0;L;;;;;N;;;;; +16A91;TANGSA LETTER LONG UEX;Lo;0;L;;;;;N;;;;; +16A92;TANGSA LETTER SHORT UEZ;Lo;0;L;;;;;N;;;;; +16A93;TANGSA LETTER SHORT AWX;Lo;0;L;;;;;N;;;;; +16A94;TANGSA LETTER UEC;Lo;0;L;;;;;N;;;;; +16A95;TANGSA LETTER UEZ;Lo;0;L;;;;;N;;;;; +16A96;TANGSA LETTER UEQ;Lo;0;L;;;;;N;;;;; +16A97;TANGSA LETTER UEX;Lo;0;L;;;;;N;;;;; +16A98;TANGSA LETTER UIUZ;Lo;0;L;;;;;N;;;;; +16A99;TANGSA LETTER UIUC;Lo;0;L;;;;;N;;;;; +16A9A;TANGSA LETTER UIUQ;Lo;0;L;;;;;N;;;;; +16A9B;TANGSA LETTER UIUX;Lo;0;L;;;;;N;;;;; +16A9C;TANGSA LETTER MZ;Lo;0;L;;;;;N;;;;; +16A9D;TANGSA LETTER MC;Lo;0;L;;;;;N;;;;; +16A9E;TANGSA LETTER MQ;Lo;0;L;;;;;N;;;;; +16A9F;TANGSA LETTER MX;Lo;0;L;;;;;N;;;;; +16AA0;TANGSA LETTER KA;Lo;0;L;;;;;N;;;;; +16AA1;TANGSA LETTER KHA;Lo;0;L;;;;;N;;;;; +16AA2;TANGSA LETTER GA;Lo;0;L;;;;;N;;;;; +16AA3;TANGSA LETTER NGA;Lo;0;L;;;;;N;;;;; +16AA4;TANGSA LETTER SA;Lo;0;L;;;;;N;;;;; +16AA5;TANGSA LETTER YA;Lo;0;L;;;;;N;;;;; +16AA6;TANGSA LETTER WA;Lo;0;L;;;;;N;;;;; +16AA7;TANGSA LETTER PA;Lo;0;L;;;;;N;;;;; +16AA8;TANGSA LETTER NYA;Lo;0;L;;;;;N;;;;; +16AA9;TANGSA LETTER PHA;Lo;0;L;;;;;N;;;;; +16AAA;TANGSA LETTER BA;Lo;0;L;;;;;N;;;;; +16AAB;TANGSA LETTER MA;Lo;0;L;;;;;N;;;;; +16AAC;TANGSA LETTER NA;Lo;0;L;;;;;N;;;;; +16AAD;TANGSA LETTER HA;Lo;0;L;;;;;N;;;;; +16AAE;TANGSA LETTER LA;Lo;0;L;;;;;N;;;;; +16AAF;TANGSA LETTER HTA;Lo;0;L;;;;;N;;;;; +16AB0;TANGSA LETTER TA;Lo;0;L;;;;;N;;;;; +16AB1;TANGSA LETTER DA;Lo;0;L;;;;;N;;;;; +16AB2;TANGSA LETTER RA;Lo;0;L;;;;;N;;;;; +16AB3;TANGSA LETTER NHA;Lo;0;L;;;;;N;;;;; +16AB4;TANGSA LETTER SHA;Lo;0;L;;;;;N;;;;; +16AB5;TANGSA LETTER CA;Lo;0;L;;;;;N;;;;; +16AB6;TANGSA LETTER TSA;Lo;0;L;;;;;N;;;;; +16AB7;TANGSA LETTER GHA;Lo;0;L;;;;;N;;;;; +16AB8;TANGSA LETTER HTTA;Lo;0;L;;;;;N;;;;; +16AB9;TANGSA LETTER THA;Lo;0;L;;;;;N;;;;; +16ABA;TANGSA LETTER XA;Lo;0;L;;;;;N;;;;; +16ABB;TANGSA LETTER FA;Lo;0;L;;;;;N;;;;; +16ABC;TANGSA LETTER DHA;Lo;0;L;;;;;N;;;;; +16ABD;TANGSA LETTER CHA;Lo;0;L;;;;;N;;;;; +16ABE;TANGSA LETTER ZA;Lo;0;L;;;;;N;;;;; +16AC0;TANGSA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +16AC1;TANGSA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +16AC2;TANGSA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +16AC3;TANGSA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +16AC4;TANGSA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +16AC5;TANGSA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +16AC6;TANGSA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +16AC7;TANGSA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +16AC8;TANGSA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +16AC9;TANGSA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 16AD0;BASSA VAH LETTER ENNI;Lo;0;L;;;;;N;;;;; 16AD1;BASSA VAH LETTER KA;Lo;0;L;;;;;N;;;;; 16AD2;BASSA VAH LETTER SE;Lo;0;L;;;;;N;;;;; @@ -24998,6 +29975,64 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 16B8D;PAHAWH HMONG CLAN SIGN TSWB;Lo;0;L;;;;;N;;;;; 16B8E;PAHAWH HMONG CLAN SIGN KWM;Lo;0;L;;;;;N;;;;; 16B8F;PAHAWH HMONG CLAN SIGN VWJ;Lo;0;L;;;;;N;;;;; +16D40;KIRAT RAI SIGN ANUSVARA;Lm;0;L;;;;;N;;;;; +16D41;KIRAT RAI SIGN TONPI;Lm;0;L;;;;;N;;;;; +16D42;KIRAT RAI SIGN VISARGA;Lm;0;L;;;;;N;;;;; +16D43;KIRAT RAI LETTER A;Lo;0;L;;;;;N;;;;; +16D44;KIRAT RAI LETTER KA;Lo;0;L;;;;;N;;;;; +16D45;KIRAT RAI LETTER KHA;Lo;0;L;;;;;N;;;;; +16D46;KIRAT RAI LETTER GA;Lo;0;L;;;;;N;;;;; +16D47;KIRAT RAI LETTER GHA;Lo;0;L;;;;;N;;;;; +16D48;KIRAT RAI LETTER NGA;Lo;0;L;;;;;N;;;;; +16D49;KIRAT RAI LETTER CA;Lo;0;L;;;;;N;;;;; +16D4A;KIRAT RAI LETTER CHA;Lo;0;L;;;;;N;;;;; +16D4B;KIRAT RAI LETTER JA;Lo;0;L;;;;;N;;;;; +16D4C;KIRAT RAI LETTER JHA;Lo;0;L;;;;;N;;;;; +16D4D;KIRAT RAI LETTER NYA;Lo;0;L;;;;;N;;;;; +16D4E;KIRAT RAI LETTER TTA;Lo;0;L;;;;;N;;;;; +16D4F;KIRAT RAI LETTER TTHA;Lo;0;L;;;;;N;;;;; +16D50;KIRAT RAI LETTER DDA;Lo;0;L;;;;;N;;;;; +16D51;KIRAT RAI LETTER DDHA;Lo;0;L;;;;;N;;;;; +16D52;KIRAT RAI LETTER TA;Lo;0;L;;;;;N;;;;; +16D53;KIRAT RAI LETTER THA;Lo;0;L;;;;;N;;;;; +16D54;KIRAT RAI LETTER DA;Lo;0;L;;;;;N;;;;; +16D55;KIRAT RAI LETTER DHA;Lo;0;L;;;;;N;;;;; +16D56;KIRAT RAI LETTER NA;Lo;0;L;;;;;N;;;;; +16D57;KIRAT RAI LETTER PA;Lo;0;L;;;;;N;;;;; +16D58;KIRAT RAI LETTER PHA;Lo;0;L;;;;;N;;;;; +16D59;KIRAT RAI LETTER BA;Lo;0;L;;;;;N;;;;; +16D5A;KIRAT RAI LETTER BHA;Lo;0;L;;;;;N;;;;; +16D5B;KIRAT RAI LETTER MA;Lo;0;L;;;;;N;;;;; +16D5C;KIRAT RAI LETTER YA;Lo;0;L;;;;;N;;;;; +16D5D;KIRAT RAI LETTER RA;Lo;0;L;;;;;N;;;;; +16D5E;KIRAT RAI LETTER LA;Lo;0;L;;;;;N;;;;; +16D5F;KIRAT RAI LETTER VA;Lo;0;L;;;;;N;;;;; +16D60;KIRAT RAI LETTER SA;Lo;0;L;;;;;N;;;;; +16D61;KIRAT RAI LETTER SHA;Lo;0;L;;;;;N;;;;; +16D62;KIRAT RAI LETTER HA;Lo;0;L;;;;;N;;;;; +16D63;KIRAT RAI VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; +16D64;KIRAT RAI VOWEL SIGN I;Lo;0;L;;;;;N;;;;; +16D65;KIRAT RAI VOWEL SIGN U;Lo;0;L;;;;;N;;;;; +16D66;KIRAT RAI VOWEL SIGN UE;Lo;0;L;;;;;N;;;;; +16D67;KIRAT RAI VOWEL SIGN E;Lo;0;L;;;;;N;;;;; +16D68;KIRAT RAI VOWEL SIGN AI;Lo;0;L;16D67 16D67;;;;N;;;;; +16D69;KIRAT RAI VOWEL SIGN O;Lo;0;L;16D63 16D67;;;;N;;;;; +16D6A;KIRAT RAI VOWEL SIGN AU;Lo;0;L;16D69 16D67;;;;N;;;;; +16D6B;KIRAT RAI SIGN VIRAMA;Lm;0;L;;;;;N;;;;; +16D6C;KIRAT RAI SIGN SAAT;Lm;0;L;;;;;N;;;;; +16D6D;KIRAT RAI SIGN YUPI;Po;0;L;;;;;N;;;;; +16D6E;KIRAT RAI DANDA;Po;0;L;;;;;N;;;;; +16D6F;KIRAT RAI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +16D70;KIRAT RAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +16D71;KIRAT RAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +16D72;KIRAT RAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +16D73;KIRAT RAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +16D74;KIRAT RAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +16D75;KIRAT RAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +16D76;KIRAT RAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +16D77;KIRAT RAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +16D78;KIRAT RAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +16D79;KIRAT RAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 16E40;MEDEFAIDRIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;16E60; 16E41;MEDEFAIDRIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;16E61; 16E42;MEDEFAIDRIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;16E62; @@ -26485,8 +31520,22 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 18CD3;KHITAN SMALL SCRIPT CHARACTER-18CD3;Lo;0;L;;;;;N;;;;; 18CD4;KHITAN SMALL SCRIPT CHARACTER-18CD4;Lo;0;L;;;;;N;;;;; 18CD5;KHITAN SMALL SCRIPT CHARACTER-18CD5;Lo;0;L;;;;;N;;;;; +18CFF;KHITAN SMALL SCRIPT CHARACTER-18CFF;Lo;0;L;;;;;N;;;;; 18D00;;Lo;0;L;;;;;N;;;;; 18D08;;Lo;0;L;;;;;N;;;;; +1AFF0;KATAKANA LETTER MINNAN TONE-2;Lm;0;L;;;;;N;;;;; +1AFF1;KATAKANA LETTER MINNAN TONE-3;Lm;0;L;;;;;N;;;;; +1AFF2;KATAKANA LETTER MINNAN TONE-4;Lm;0;L;;;;;N;;;;; +1AFF3;KATAKANA LETTER MINNAN TONE-5;Lm;0;L;;;;;N;;;;; +1AFF5;KATAKANA LETTER MINNAN TONE-7;Lm;0;L;;;;;N;;;;; +1AFF6;KATAKANA LETTER MINNAN TONE-8;Lm;0;L;;;;;N;;;;; +1AFF7;KATAKANA LETTER MINNAN NASALIZED TONE-1;Lm;0;L;;;;;N;;;;; +1AFF8;KATAKANA LETTER MINNAN NASALIZED TONE-2;Lm;0;L;;;;;N;;;;; +1AFF9;KATAKANA LETTER MINNAN NASALIZED TONE-3;Lm;0;L;;;;;N;;;;; +1AFFA;KATAKANA LETTER MINNAN NASALIZED TONE-4;Lm;0;L;;;;;N;;;;; +1AFFB;KATAKANA LETTER MINNAN NASALIZED TONE-5;Lm;0;L;;;;;N;;;;; +1AFFD;KATAKANA LETTER MINNAN NASALIZED TONE-7;Lm;0;L;;;;;N;;;;; +1AFFE;KATAKANA LETTER MINNAN NASALIZED TONE-8;Lm;0;L;;;;;N;;;;; 1B000;KATAKANA LETTER ARCHAIC E;Lo;0;L;;;;;N;;;;; 1B001;HIRAGANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;; 1B002;HENTAIGANA LETTER A-1;Lo;0;L;;;;;N;;;;; @@ -26774,9 +31823,15 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1B11C;HENTAIGANA LETTER WO-7;Lo;0;L;;;;;N;;;;; 1B11D;HENTAIGANA LETTER N-MU-MO-1;Lo;0;L;;;;;N;;;;; 1B11E;HENTAIGANA LETTER N-MU-MO-2;Lo;0;L;;;;;N;;;;; +1B11F;HIRAGANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;; +1B120;KATAKANA LETTER ARCHAIC YI;Lo;0;L;;;;;N;;;;; +1B121;KATAKANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;; +1B122;KATAKANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;; +1B132;HIRAGANA LETTER SMALL KO;Lo;0;L;;;;;N;;;;; 1B150;HIRAGANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;; 1B151;HIRAGANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;; 1B152;HIRAGANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;; +1B155;KATAKANA LETTER SMALL KO;Lo;0;L;;;;;N;;;;; 1B164;KATAKANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;; 1B165;KATAKANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;; 1B166;KATAKANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;; @@ -27324,6 +32379,877 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1BCA1;SHORTHAND FORMAT CONTINUING OVERLAP;Cf;0;BN;;;;;N;;;;; 1BCA2;SHORTHAND FORMAT DOWN STEP;Cf;0;BN;;;;;N;;;;; 1BCA3;SHORTHAND FORMAT UP STEP;Cf;0;BN;;;;;N;;;;; +1CC00;UP-POINTING GO-KART;So;0;ON;;;;;N;;;;; +1CC01;RIGHT-POINTING GO-KART;So;0;ON;;;;;N;;;;; +1CC02;LEFT-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;; +1CC03;RIGHT-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;; +1CC04;DOWN-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;; +1CC05;LOWER HORIZONTAL RULER SEGMENT;So;0;ON;;;;;N;;;;; +1CC06;RIGHT VERTICAL RULER SEGMENT;So;0;ON;;;;;N;;;;; +1CC07;LOWER RIGHT RULER SEGMENT;So;0;ON;;;;;N;;;;; +1CC08;ANTENNA;So;0;ON;;;;;N;;;;; +1CC09;HORIZONTAL RESISTOR SEGMENT;So;0;ON;;;;;N;;;;; +1CC0A;VERTICAL RESISTOR SEGMENT;So;0;ON;;;;;N;;;;; +1CC0B;LEFT THIRD INDUCTOR;So;0;ON;;;;;N;;;;; +1CC0C;MIDDLE THIRD INDUCTOR;So;0;ON;;;;;N;;;;; +1CC0D;RIGHT THIRD INDUCTOR;So;0;ON;;;;;N;;;;; +1CC0E;LEFT-POINTING DIODE;So;0;ON;;;;;N;;;;; +1CC0F;RIGHT-POINTING DIODE;So;0;ON;;;;;N;;;;; +1CC10;NPN TRANSISTOR;So;0;ON;;;;;N;;;;; +1CC11;PNP TRANSISTOR;So;0;ON;;;;;N;;;;; +1CC12;RECEPTACLE;So;0;ON;;;;;N;;;;; +1CC13;HORIZONTAL CAPACITOR;So;0;ON;;;;;N;;;;; +1CC14;VERTICAL CAPACITOR;So;0;ON;;;;;N;;;;; +1CC15;LOGIC GATE OR;So;0;ON;;;;;N;;;;; +1CC16;LOGIC GATE AND;So;0;ON;;;;;N;;;;; +1CC17;LOGIC GATE INVERTED INPUTS;So;0;ON;;;;;N;;;;; +1CC18;LOGIC GATE INVERTED OUTPUT;So;0;ON;;;;;N;;;;; +1CC19;LOGIC GATE BUFFER;So;0;ON;;;;;N;;;;; +1CC1A;LOGIC GATE BUFFER WITH INVERTED INPUT;So;0;ON;;;;;N;;;;; +1CC1B;BOX DRAWINGS LIGHT HORIZONTAL AND UPPER RIGHT;So;0;ON;;;;;N;;;;; +1CC1C;BOX DRAWINGS LIGHT HORIZONTAL AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +1CC1D;BOX DRAWINGS LIGHT TOP AND UPPER LEFT;So;0;ON;;;;;N;;;;; +1CC1E;BOX DRAWINGS LIGHT BOTTOM AND LOWER LEFT;So;0;ON;;;;;N;;;;; +1CC1F;BOX DRAWINGS DOUBLE DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;; +1CC20;BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1CC21;SEPARATED BLOCK QUADRANT-1;So;0;ON;;;;;N;;;;; +1CC22;SEPARATED BLOCK QUADRANT-2;So;0;ON;;;;;N;;;;; +1CC23;SEPARATED BLOCK QUADRANT-12;So;0;ON;;;;;N;;;;; +1CC24;SEPARATED BLOCK QUADRANT-3;So;0;ON;;;;;N;;;;; +1CC25;SEPARATED BLOCK QUADRANT-13;So;0;ON;;;;;N;;;;; +1CC26;SEPARATED BLOCK QUADRANT-23;So;0;ON;;;;;N;;;;; +1CC27;SEPARATED BLOCK QUADRANT-123;So;0;ON;;;;;N;;;;; +1CC28;SEPARATED BLOCK QUADRANT-4;So;0;ON;;;;;N;;;;; +1CC29;SEPARATED BLOCK QUADRANT-14;So;0;ON;;;;;N;;;;; +1CC2A;SEPARATED BLOCK QUADRANT-24;So;0;ON;;;;;N;;;;; +1CC2B;SEPARATED BLOCK QUADRANT-124;So;0;ON;;;;;N;;;;; +1CC2C;SEPARATED BLOCK QUADRANT-34;So;0;ON;;;;;N;;;;; +1CC2D;SEPARATED BLOCK QUADRANT-134;So;0;ON;;;;;N;;;;; +1CC2E;SEPARATED BLOCK QUADRANT-234;So;0;ON;;;;;N;;;;; +1CC2F;SEPARATED BLOCK QUADRANT-1234;So;0;ON;;;;;N;;;;; +1CC30;UPPER LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC31;UPPER CENTRE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC32;UPPER CENTRE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC33;UPPER RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC34;UPPER MIDDLE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC35;UPPER LEFT QUARTER CIRCLE;So;0;ON;;;;;N;;;;; +1CC36;UPPER RIGHT QUARTER CIRCLE;So;0;ON;;;;;N;;;;; +1CC37;UPPER MIDDLE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC38;LOWER MIDDLE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC39;LOWER LEFT QUARTER CIRCLE;So;0;ON;;;;;N;;;;; +1CC3A;LOWER RIGHT QUARTER CIRCLE;So;0;ON;;;;;N;;;;; +1CC3B;LOWER MIDDLE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC3C;LOWER LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC3D;LOWER CENTRE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC3E;LOWER CENTRE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC3F;LOWER RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;; +1CC40;SPARSE HORIZONTAL FILL;So;0;ON;;;;;N;;;;; +1CC41;SPARSE VERTICAL FILL;So;0;ON;;;;;N;;;;; +1CC42;ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; +1CC43;DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; +1CC44;DENSE VERTICAL FILL;So;0;ON;;;;;N;;;;; +1CC45;DENSE HORIZONTAL FILL;So;0;ON;;;;;N;;;;; +1CC46;SPECKLE FILL FRAME-1;So;0;ON;;;;;N;;;;; +1CC47;SPECKLE FILL FRAME-2;So;0;ON;;;;;N;;;;; +1CC48;LEFT-FACING BASSINET;So;0;ON;;;;;N;;;;; +1CC49;RIGHT-FACING BASSINET;So;0;ON;;;;;N;;;;; +1CC4A;FLYING SAUCER WITH BEAMS;So;0;ON;;;;;N;;;;; +1CC4B;FLYING SAUCER WITHOUT BEAMS;So;0;ON;;;;;N;;;;; +1CC4C;ALIEN MONSTER OPEN JAWS;So;0;ON;;;;;N;;;;; +1CC4D;ALIEN MONSTER CLOSED JAWS;So;0;ON;;;;;N;;;;; +1CC4E;ALIEN SQUID OPEN TENTACLES;So;0;ON;;;;;N;;;;; +1CC4F;ALIEN SQUID CLOSED TENTACLES;So;0;ON;;;;;N;;;;; +1CC50;ALIEN CRAB STEPPING RIGHT;So;0;ON;;;;;N;;;;; +1CC51;ALIEN CRAB STEPPING LEFT;So;0;ON;;;;;N;;;;; +1CC52;ALIEN SPIDER CROUCHING;So;0;ON;;;;;N;;;;; +1CC53;ALIEN SPIDER SPREAD;So;0;ON;;;;;N;;;;; +1CC54;ALIEN MONSTER STEP-1;So;0;ON;;;;;N;;;;; +1CC55;ALIEN MONSTER STEP-2;So;0;ON;;;;;N;;;;; +1CC56;LEFT-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;; +1CC57;UP-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;; +1CC58;RIGHT-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;; +1CC59;DOWN-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;; +1CC5A;TOP HALF LEFT-FACING ROBOT;So;0;ON;;;;;N;;;;; +1CC5B;TOP HALF FORWARD-FACING ROBOT;So;0;ON;;;;;N;;;;; +1CC5C;TOP HALF RIGHT-FACING ROBOT;So;0;ON;;;;;N;;;;; +1CC5D;BOTTOM HALF LEFT-FACING ROBOT;So;0;ON;;;;;N;;;;; +1CC5E;BOTTOM HALF FORWARD-FACING ROBOT;So;0;ON;;;;;N;;;;; +1CC5F;BOTTOM HALF RIGHT-FACING ROBOT;So;0;ON;;;;;N;;;;; +1CC60;LEFT-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;; +1CC61;UP-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;; +1CC62;RIGHT-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;; +1CC63;DOWN-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;; +1CC64;MUSHROOM CLOUD;So;0;ON;;;;;N;;;;; +1CC65;LEFT-POINTING RIFLE;So;0;ON;;;;;N;;;;; +1CC66;UP-POINTING RIFLE;So;0;ON;;;;;N;;;;; +1CC67;RIGHT-POINTING RIFLE;So;0;ON;;;;;N;;;;; +1CC68;DOWN-POINTING RIFLE;So;0;ON;;;;;N;;;;; +1CC69;EIGHT RAYS INWARD;So;0;ON;;;;;N;;;;; +1CC6A;EIGHT RAYS OUTWARD;So;0;ON;;;;;N;;;;; +1CC6B;BLACK LARGE CIRCLE MINUS LEFT QUARTER SECTION;So;0;ON;;;;;N;;;;; +1CC6C;BLACK LARGE CIRCLE MINUS UPPER QUARTER SECTION;So;0;ON;;;;;N;;;;; +1CC6D;BLACK LARGE CIRCLE MINUS RIGHT QUARTER SECTION;So;0;ON;;;;;N;;;;; +1CC6E;BLACK LARGE CIRCLE MINUS LOWER QUARTER SECTION;So;0;ON;;;;;N;;;;; +1CC6F;BLACK NEUTRAL FACE;So;0;ON;;;;;N;;;;; +1CC70;LEFT-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; +1CC71;UP-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; +1CC72;RIGHT-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; +1CC73;DOWN-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; +1CC74;LEFT-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;; +1CC75;UP-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;; +1CC76;RIGHT-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;; +1CC77;DOWN-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;; +1CC78;LEFT-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;; +1CC79;UP-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;; +1CC7A;RIGHT-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;; +1CC7B;DOWN-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;; +1CC7C;SQUARE SPIRAL FROM TOP LEFT;So;0;ON;;;;;N;;;;; +1CC7D;SQUARE SPIRAL FROM TOP RIGHT;So;0;ON;;;;;N;;;;; +1CC7E;SQUARE SPIRAL FROM BOTTOM RIGHT;So;0;ON;;;;;N;;;;; +1CC7F;SQUARE SPIRAL FROM BOTTOM LEFT;So;0;ON;;;;;N;;;;; +1CC80;STRIPED LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;;;;; +1CC81;STRIPED UP-POINTING TRIANGLE;So;0;ON;;;;;N;;;;; +1CC82;STRIPED RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;;;;; +1CC83;STRIPED DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;; +1CC84;VERTICAL LADDER;So;0;ON;;;;;N;;;;; +1CC85;HORIZONTAL LADDER;So;0;ON;;;;;N;;;;; +1CC86;WHITE LOWER LEFT POINTER;So;0;ON;;;;;N;;;;; +1CC87;WHITE LOWER RIGHT POINTER;So;0;ON;;;;;N;;;;; +1CC88;TWO RINGS ALIGNED HORIZONTALLY;So;0;ON;;;;;N;;;;; +1CC89;SQUARE FOUR CORNER SALTIRES;So;0;ON;;;;;N;;;;; +1CC8A;SQUARE FOUR CORNER DIAGONALS;So;0;ON;;;;;N;;;;; +1CC8B;SQUARE FOUR CORNER BLACK TRIANGLES;So;0;ON;;;;;N;;;;; +1CC8C;SQUARE APERTURE;So;0;ON;;;;;N;;;;; +1CC8D;INVERSE BLACK DIAMOND;So;0;ON;;;;;N;;;;; +1CC8E;LEFT AND UPPER ONE EIGHTH BLOCK CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; +1CC8F;INVERSE BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; +1CC90;VERTICAL LINE WITH FOUR TICK MARKS;So;0;ON;;;;;N;;;;; +1CC91;HORIZONTAL LINE WITH FOUR TICK MARKS;So;0;ON;;;;;N;;;;; +1CC92;LEFT-FACING FISH;So;0;ON;;;;;N;;;;; +1CC93;RIGHT-FACING FISH;So;0;ON;;;;;N;;;;; +1CC94;LEFT-FACING FISH WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; +1CC95;RIGHT-FACING FISH WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; +1CC96;FLAPPING BIRD;So;0;ON;;;;;N;;;;; +1CC97;LEFT-POINTING RACING CAR;So;0;ON;;;;;N;;;;; +1CC98;UP-POINTING RACING CAR;So;0;ON;;;;;N;;;;; +1CC99;RIGHT-POINTING RACING CAR;So;0;ON;;;;;N;;;;; +1CC9A;DOWN-POINTING RACING CAR;So;0;ON;;;;;N;;;;; +1CC9B;HORIZONTAL RACING CAR;So;0;ON;;;;;N;;;;; +1CC9C;VERTICAL RACING CAR;So;0;ON;;;;;N;;;;; +1CC9D;VERTICAL GO-KART;So;0;ON;;;;;N;;;;; +1CC9E;LEFT-POINTING TANK;So;0;ON;;;;;N;;;;; +1CC9F;RIGHT-POINTING TANK;So;0;ON;;;;;N;;;;; +1CCA0;LEFT-POINTING ROCKET BOOSTER;So;0;ON;;;;;N;;;;; +1CCA1;RIGHT-POINTING ROCKET BOOSTER;So;0;ON;;;;;N;;;;; +1CCA2;LEFT-POINTING ROLLER COASTER CAR;So;0;ON;;;;;N;;;;; +1CCA3;RIGHT-POINTING ROLLER COASTER CAR;So;0;ON;;;;;N;;;;; +1CCA4;LEFT HALF FLYING SAUCER;So;0;ON;;;;;N;;;;; +1CCA5;RIGHT HALF FLYING SAUCER;So;0;ON;;;;;N;;;;; +1CCA6;UPPER LEFT QUADRANT FACE WITH OPEN EYES;So;0;ON;;;;;N;;;;; +1CCA7;UPPER RIGHT QUADRANT FACE WITH OPEN EYES;So;0;ON;;;;;N;;;;; +1CCA8;UPPER LEFT QUADRANT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;; +1CCA9;UPPER RIGHT QUADRANT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;; +1CCAA;LOWER LEFT QUADRANT SMILING FACE;So;0;ON;;;;;N;;;;; +1CCAB;LOWER RIGHT QUADRANT SMILING FACE;So;0;ON;;;;;N;;;;; +1CCAC;LOWER LEFT QUADRANT NEUTRAL FACE;So;0;ON;;;;;N;;;;; +1CCAD;LOWER RIGHT QUADRANT NEUTRAL FACE;So;0;ON;;;;;N;;;;; +1CCAE;LOWER LEFT QUADRANT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; +1CCAF;LOWER RIGHT QUADRANT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;; +1CCB0;LOWER LEFT QUADRANT FROWNING FACE;So;0;ON;;;;;N;;;;; +1CCB1;LOWER RIGHT QUADRANT FROWNING FACE;So;0;ON;;;;;N;;;;; +1CCB2;UPPER LEFT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;; +1CCB3;UPPER RIGHT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;; +1CCB4;LOWER LEFT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;; +1CCB5;LOWER RIGHT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;; +1CCB6;UPPER LEFT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;; +1CCB7;UPPER RIGHT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;; +1CCB8;LOWER LEFT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;; +1CCB9;LOWER RIGHT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;; +1CCBA;UPPER LEFT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;; +1CCBB;UPPER RIGHT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;; +1CCBC;LOWER LEFT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;; +1CCBD;LOWER RIGHT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;; +1CCBE;UPPER LEFT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;; +1CCBF;UPPER RIGHT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;; +1CCC0;LOWER LEFT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;; +1CCC1;LOWER RIGHT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;; +1CCC2;UPPER LEFT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;; +1CCC3;UPPER RIGHT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;; +1CCC4;LOWER LEFT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;; +1CCC5;LOWER RIGHT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;; +1CCC6;UPPER LEFT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;; +1CCC7;UPPER RIGHT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;; +1CCC8;LOWER LEFT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;; +1CCC9;LOWER RIGHT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;; +1CCCA;UPPER LEFT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;; +1CCCB;UPPER RIGHT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;; +1CCCC;LOWER LEFT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;; +1CCCD;LOWER RIGHT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;; +1CCCE;UPPER LEFT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;; +1CCCF;UPPER RIGHT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;; +1CCD0;LOWER LEFT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;; +1CCD1;LOWER RIGHT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;; +1CCD2;UPPER LEFT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;; +1CCD3;UPPER RIGHT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;; +1CCD4;LOWER LEFT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;; +1CCD5;LOWER RIGHT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;; +1CCD6;OUTLINED LATIN CAPITAL LETTER A;So;0;L; 0041;;;;N;;;;; +1CCD7;OUTLINED LATIN CAPITAL LETTER B;So;0;L; 0042;;;;N;;;;; +1CCD8;OUTLINED LATIN CAPITAL LETTER C;So;0;L; 0043;;;;N;;;;; +1CCD9;OUTLINED LATIN CAPITAL LETTER D;So;0;L; 0044;;;;N;;;;; +1CCDA;OUTLINED LATIN CAPITAL LETTER E;So;0;L; 0045;;;;N;;;;; +1CCDB;OUTLINED LATIN CAPITAL LETTER F;So;0;L; 0046;;;;N;;;;; +1CCDC;OUTLINED LATIN CAPITAL LETTER G;So;0;L; 0047;;;;N;;;;; +1CCDD;OUTLINED LATIN CAPITAL LETTER H;So;0;L; 0048;;;;N;;;;; +1CCDE;OUTLINED LATIN CAPITAL LETTER I;So;0;L; 0049;;;;N;;;;; +1CCDF;OUTLINED LATIN CAPITAL LETTER J;So;0;L; 004A;;;;N;;;;; +1CCE0;OUTLINED LATIN CAPITAL LETTER K;So;0;L; 004B;;;;N;;;;; +1CCE1;OUTLINED LATIN CAPITAL LETTER L;So;0;L; 004C;;;;N;;;;; +1CCE2;OUTLINED LATIN CAPITAL LETTER M;So;0;L; 004D;;;;N;;;;; +1CCE3;OUTLINED LATIN CAPITAL LETTER N;So;0;L; 004E;;;;N;;;;; +1CCE4;OUTLINED LATIN CAPITAL LETTER O;So;0;L; 004F;;;;N;;;;; +1CCE5;OUTLINED LATIN CAPITAL LETTER P;So;0;L; 0050;;;;N;;;;; +1CCE6;OUTLINED LATIN CAPITAL LETTER Q;So;0;L; 0051;;;;N;;;;; +1CCE7;OUTLINED LATIN CAPITAL LETTER R;So;0;L; 0052;;;;N;;;;; +1CCE8;OUTLINED LATIN CAPITAL LETTER S;So;0;L; 0053;;;;N;;;;; +1CCE9;OUTLINED LATIN CAPITAL LETTER T;So;0;L; 0054;;;;N;;;;; +1CCEA;OUTLINED LATIN CAPITAL LETTER U;So;0;L; 0055;;;;N;;;;; +1CCEB;OUTLINED LATIN CAPITAL LETTER V;So;0;L; 0056;;;;N;;;;; +1CCEC;OUTLINED LATIN CAPITAL LETTER W;So;0;L; 0057;;;;N;;;;; +1CCED;OUTLINED LATIN CAPITAL LETTER X;So;0;L; 0058;;;;N;;;;; +1CCEE;OUTLINED LATIN CAPITAL LETTER Y;So;0;L; 0059;;;;N;;;;; +1CCEF;OUTLINED LATIN CAPITAL LETTER Z;So;0;L; 005A;;;;N;;;;; +1CCF0;OUTLINED DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; +1CCF1;OUTLINED DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; +1CCF2;OUTLINED DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; +1CCF3;OUTLINED DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; +1CCF4;OUTLINED DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; +1CCF5;OUTLINED DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; +1CCF6;OUTLINED DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; +1CCF7;OUTLINED DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; +1CCF8;OUTLINED DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; +1CCF9;OUTLINED DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1CD00;BLOCK OCTANT-3;So;0;ON;;;;;N;;;;; +1CD01;BLOCK OCTANT-23;So;0;ON;;;;;N;;;;; +1CD02;BLOCK OCTANT-123;So;0;ON;;;;;N;;;;; +1CD03;BLOCK OCTANT-4;So;0;ON;;;;;N;;;;; +1CD04;BLOCK OCTANT-14;So;0;ON;;;;;N;;;;; +1CD05;BLOCK OCTANT-124;So;0;ON;;;;;N;;;;; +1CD06;BLOCK OCTANT-34;So;0;ON;;;;;N;;;;; +1CD07;BLOCK OCTANT-134;So;0;ON;;;;;N;;;;; +1CD08;BLOCK OCTANT-234;So;0;ON;;;;;N;;;;; +1CD09;BLOCK OCTANT-5;So;0;ON;;;;;N;;;;; +1CD0A;BLOCK OCTANT-15;So;0;ON;;;;;N;;;;; +1CD0B;BLOCK OCTANT-25;So;0;ON;;;;;N;;;;; +1CD0C;BLOCK OCTANT-125;So;0;ON;;;;;N;;;;; +1CD0D;BLOCK OCTANT-135;So;0;ON;;;;;N;;;;; +1CD0E;BLOCK OCTANT-235;So;0;ON;;;;;N;;;;; +1CD0F;BLOCK OCTANT-1235;So;0;ON;;;;;N;;;;; +1CD10;BLOCK OCTANT-45;So;0;ON;;;;;N;;;;; +1CD11;BLOCK OCTANT-145;So;0;ON;;;;;N;;;;; +1CD12;BLOCK OCTANT-245;So;0;ON;;;;;N;;;;; +1CD13;BLOCK OCTANT-1245;So;0;ON;;;;;N;;;;; +1CD14;BLOCK OCTANT-345;So;0;ON;;;;;N;;;;; +1CD15;BLOCK OCTANT-1345;So;0;ON;;;;;N;;;;; +1CD16;BLOCK OCTANT-2345;So;0;ON;;;;;N;;;;; +1CD17;BLOCK OCTANT-12345;So;0;ON;;;;;N;;;;; +1CD18;BLOCK OCTANT-6;So;0;ON;;;;;N;;;;; +1CD19;BLOCK OCTANT-16;So;0;ON;;;;;N;;;;; +1CD1A;BLOCK OCTANT-26;So;0;ON;;;;;N;;;;; +1CD1B;BLOCK OCTANT-126;So;0;ON;;;;;N;;;;; +1CD1C;BLOCK OCTANT-36;So;0;ON;;;;;N;;;;; +1CD1D;BLOCK OCTANT-136;So;0;ON;;;;;N;;;;; +1CD1E;BLOCK OCTANT-236;So;0;ON;;;;;N;;;;; +1CD1F;BLOCK OCTANT-1236;So;0;ON;;;;;N;;;;; +1CD20;BLOCK OCTANT-146;So;0;ON;;;;;N;;;;; +1CD21;BLOCK OCTANT-246;So;0;ON;;;;;N;;;;; +1CD22;BLOCK OCTANT-1246;So;0;ON;;;;;N;;;;; +1CD23;BLOCK OCTANT-346;So;0;ON;;;;;N;;;;; +1CD24;BLOCK OCTANT-1346;So;0;ON;;;;;N;;;;; +1CD25;BLOCK OCTANT-2346;So;0;ON;;;;;N;;;;; +1CD26;BLOCK OCTANT-12346;So;0;ON;;;;;N;;;;; +1CD27;BLOCK OCTANT-56;So;0;ON;;;;;N;;;;; +1CD28;BLOCK OCTANT-156;So;0;ON;;;;;N;;;;; +1CD29;BLOCK OCTANT-256;So;0;ON;;;;;N;;;;; +1CD2A;BLOCK OCTANT-1256;So;0;ON;;;;;N;;;;; +1CD2B;BLOCK OCTANT-356;So;0;ON;;;;;N;;;;; +1CD2C;BLOCK OCTANT-1356;So;0;ON;;;;;N;;;;; +1CD2D;BLOCK OCTANT-2356;So;0;ON;;;;;N;;;;; +1CD2E;BLOCK OCTANT-12356;So;0;ON;;;;;N;;;;; +1CD2F;BLOCK OCTANT-456;So;0;ON;;;;;N;;;;; +1CD30;BLOCK OCTANT-1456;So;0;ON;;;;;N;;;;; +1CD31;BLOCK OCTANT-2456;So;0;ON;;;;;N;;;;; +1CD32;BLOCK OCTANT-12456;So;0;ON;;;;;N;;;;; +1CD33;BLOCK OCTANT-3456;So;0;ON;;;;;N;;;;; +1CD34;BLOCK OCTANT-13456;So;0;ON;;;;;N;;;;; +1CD35;BLOCK OCTANT-23456;So;0;ON;;;;;N;;;;; +1CD36;BLOCK OCTANT-17;So;0;ON;;;;;N;;;;; +1CD37;BLOCK OCTANT-27;So;0;ON;;;;;N;;;;; +1CD38;BLOCK OCTANT-127;So;0;ON;;;;;N;;;;; +1CD39;BLOCK OCTANT-37;So;0;ON;;;;;N;;;;; +1CD3A;BLOCK OCTANT-137;So;0;ON;;;;;N;;;;; +1CD3B;BLOCK OCTANT-237;So;0;ON;;;;;N;;;;; +1CD3C;BLOCK OCTANT-1237;So;0;ON;;;;;N;;;;; +1CD3D;BLOCK OCTANT-47;So;0;ON;;;;;N;;;;; +1CD3E;BLOCK OCTANT-147;So;0;ON;;;;;N;;;;; +1CD3F;BLOCK OCTANT-247;So;0;ON;;;;;N;;;;; +1CD40;BLOCK OCTANT-1247;So;0;ON;;;;;N;;;;; +1CD41;BLOCK OCTANT-347;So;0;ON;;;;;N;;;;; +1CD42;BLOCK OCTANT-1347;So;0;ON;;;;;N;;;;; +1CD43;BLOCK OCTANT-2347;So;0;ON;;;;;N;;;;; +1CD44;BLOCK OCTANT-12347;So;0;ON;;;;;N;;;;; +1CD45;BLOCK OCTANT-157;So;0;ON;;;;;N;;;;; +1CD46;BLOCK OCTANT-257;So;0;ON;;;;;N;;;;; +1CD47;BLOCK OCTANT-1257;So;0;ON;;;;;N;;;;; +1CD48;BLOCK OCTANT-357;So;0;ON;;;;;N;;;;; +1CD49;BLOCK OCTANT-2357;So;0;ON;;;;;N;;;;; +1CD4A;BLOCK OCTANT-12357;So;0;ON;;;;;N;;;;; +1CD4B;BLOCK OCTANT-457;So;0;ON;;;;;N;;;;; +1CD4C;BLOCK OCTANT-1457;So;0;ON;;;;;N;;;;; +1CD4D;BLOCK OCTANT-12457;So;0;ON;;;;;N;;;;; +1CD4E;BLOCK OCTANT-3457;So;0;ON;;;;;N;;;;; +1CD4F;BLOCK OCTANT-13457;So;0;ON;;;;;N;;;;; +1CD50;BLOCK OCTANT-23457;So;0;ON;;;;;N;;;;; +1CD51;BLOCK OCTANT-67;So;0;ON;;;;;N;;;;; +1CD52;BLOCK OCTANT-167;So;0;ON;;;;;N;;;;; +1CD53;BLOCK OCTANT-267;So;0;ON;;;;;N;;;;; +1CD54;BLOCK OCTANT-1267;So;0;ON;;;;;N;;;;; +1CD55;BLOCK OCTANT-367;So;0;ON;;;;;N;;;;; +1CD56;BLOCK OCTANT-1367;So;0;ON;;;;;N;;;;; +1CD57;BLOCK OCTANT-2367;So;0;ON;;;;;N;;;;; +1CD58;BLOCK OCTANT-12367;So;0;ON;;;;;N;;;;; +1CD59;BLOCK OCTANT-467;So;0;ON;;;;;N;;;;; +1CD5A;BLOCK OCTANT-1467;So;0;ON;;;;;N;;;;; +1CD5B;BLOCK OCTANT-2467;So;0;ON;;;;;N;;;;; +1CD5C;BLOCK OCTANT-12467;So;0;ON;;;;;N;;;;; +1CD5D;BLOCK OCTANT-3467;So;0;ON;;;;;N;;;;; +1CD5E;BLOCK OCTANT-13467;So;0;ON;;;;;N;;;;; +1CD5F;BLOCK OCTANT-23467;So;0;ON;;;;;N;;;;; +1CD60;BLOCK OCTANT-123467;So;0;ON;;;;;N;;;;; +1CD61;BLOCK OCTANT-567;So;0;ON;;;;;N;;;;; +1CD62;BLOCK OCTANT-1567;So;0;ON;;;;;N;;;;; +1CD63;BLOCK OCTANT-2567;So;0;ON;;;;;N;;;;; +1CD64;BLOCK OCTANT-12567;So;0;ON;;;;;N;;;;; +1CD65;BLOCK OCTANT-3567;So;0;ON;;;;;N;;;;; +1CD66;BLOCK OCTANT-13567;So;0;ON;;;;;N;;;;; +1CD67;BLOCK OCTANT-23567;So;0;ON;;;;;N;;;;; +1CD68;BLOCK OCTANT-123567;So;0;ON;;;;;N;;;;; +1CD69;BLOCK OCTANT-4567;So;0;ON;;;;;N;;;;; +1CD6A;BLOCK OCTANT-14567;So;0;ON;;;;;N;;;;; +1CD6B;BLOCK OCTANT-24567;So;0;ON;;;;;N;;;;; +1CD6C;BLOCK OCTANT-124567;So;0;ON;;;;;N;;;;; +1CD6D;BLOCK OCTANT-34567;So;0;ON;;;;;N;;;;; +1CD6E;BLOCK OCTANT-134567;So;0;ON;;;;;N;;;;; +1CD6F;BLOCK OCTANT-234567;So;0;ON;;;;;N;;;;; +1CD70;BLOCK OCTANT-1234567;So;0;ON;;;;;N;;;;; +1CD71;BLOCK OCTANT-18;So;0;ON;;;;;N;;;;; +1CD72;BLOCK OCTANT-28;So;0;ON;;;;;N;;;;; +1CD73;BLOCK OCTANT-128;So;0;ON;;;;;N;;;;; +1CD74;BLOCK OCTANT-38;So;0;ON;;;;;N;;;;; +1CD75;BLOCK OCTANT-138;So;0;ON;;;;;N;;;;; +1CD76;BLOCK OCTANT-238;So;0;ON;;;;;N;;;;; +1CD77;BLOCK OCTANT-1238;So;0;ON;;;;;N;;;;; +1CD78;BLOCK OCTANT-48;So;0;ON;;;;;N;;;;; +1CD79;BLOCK OCTANT-148;So;0;ON;;;;;N;;;;; +1CD7A;BLOCK OCTANT-248;So;0;ON;;;;;N;;;;; +1CD7B;BLOCK OCTANT-1248;So;0;ON;;;;;N;;;;; +1CD7C;BLOCK OCTANT-348;So;0;ON;;;;;N;;;;; +1CD7D;BLOCK OCTANT-1348;So;0;ON;;;;;N;;;;; +1CD7E;BLOCK OCTANT-2348;So;0;ON;;;;;N;;;;; +1CD7F;BLOCK OCTANT-12348;So;0;ON;;;;;N;;;;; +1CD80;BLOCK OCTANT-58;So;0;ON;;;;;N;;;;; +1CD81;BLOCK OCTANT-158;So;0;ON;;;;;N;;;;; +1CD82;BLOCK OCTANT-258;So;0;ON;;;;;N;;;;; +1CD83;BLOCK OCTANT-1258;So;0;ON;;;;;N;;;;; +1CD84;BLOCK OCTANT-358;So;0;ON;;;;;N;;;;; +1CD85;BLOCK OCTANT-1358;So;0;ON;;;;;N;;;;; +1CD86;BLOCK OCTANT-2358;So;0;ON;;;;;N;;;;; +1CD87;BLOCK OCTANT-12358;So;0;ON;;;;;N;;;;; +1CD88;BLOCK OCTANT-458;So;0;ON;;;;;N;;;;; +1CD89;BLOCK OCTANT-1458;So;0;ON;;;;;N;;;;; +1CD8A;BLOCK OCTANT-2458;So;0;ON;;;;;N;;;;; +1CD8B;BLOCK OCTANT-12458;So;0;ON;;;;;N;;;;; +1CD8C;BLOCK OCTANT-3458;So;0;ON;;;;;N;;;;; +1CD8D;BLOCK OCTANT-13458;So;0;ON;;;;;N;;;;; +1CD8E;BLOCK OCTANT-23458;So;0;ON;;;;;N;;;;; +1CD8F;BLOCK OCTANT-123458;So;0;ON;;;;;N;;;;; +1CD90;BLOCK OCTANT-168;So;0;ON;;;;;N;;;;; +1CD91;BLOCK OCTANT-268;So;0;ON;;;;;N;;;;; +1CD92;BLOCK OCTANT-1268;So;0;ON;;;;;N;;;;; +1CD93;BLOCK OCTANT-368;So;0;ON;;;;;N;;;;; +1CD94;BLOCK OCTANT-2368;So;0;ON;;;;;N;;;;; +1CD95;BLOCK OCTANT-12368;So;0;ON;;;;;N;;;;; +1CD96;BLOCK OCTANT-468;So;0;ON;;;;;N;;;;; +1CD97;BLOCK OCTANT-1468;So;0;ON;;;;;N;;;;; +1CD98;BLOCK OCTANT-12468;So;0;ON;;;;;N;;;;; +1CD99;BLOCK OCTANT-3468;So;0;ON;;;;;N;;;;; +1CD9A;BLOCK OCTANT-13468;So;0;ON;;;;;N;;;;; +1CD9B;BLOCK OCTANT-23468;So;0;ON;;;;;N;;;;; +1CD9C;BLOCK OCTANT-568;So;0;ON;;;;;N;;;;; +1CD9D;BLOCK OCTANT-1568;So;0;ON;;;;;N;;;;; +1CD9E;BLOCK OCTANT-2568;So;0;ON;;;;;N;;;;; +1CD9F;BLOCK OCTANT-12568;So;0;ON;;;;;N;;;;; +1CDA0;BLOCK OCTANT-3568;So;0;ON;;;;;N;;;;; +1CDA1;BLOCK OCTANT-13568;So;0;ON;;;;;N;;;;; +1CDA2;BLOCK OCTANT-23568;So;0;ON;;;;;N;;;;; +1CDA3;BLOCK OCTANT-123568;So;0;ON;;;;;N;;;;; +1CDA4;BLOCK OCTANT-4568;So;0;ON;;;;;N;;;;; +1CDA5;BLOCK OCTANT-14568;So;0;ON;;;;;N;;;;; +1CDA6;BLOCK OCTANT-24568;So;0;ON;;;;;N;;;;; +1CDA7;BLOCK OCTANT-124568;So;0;ON;;;;;N;;;;; +1CDA8;BLOCK OCTANT-34568;So;0;ON;;;;;N;;;;; +1CDA9;BLOCK OCTANT-134568;So;0;ON;;;;;N;;;;; +1CDAA;BLOCK OCTANT-234568;So;0;ON;;;;;N;;;;; +1CDAB;BLOCK OCTANT-1234568;So;0;ON;;;;;N;;;;; +1CDAC;BLOCK OCTANT-178;So;0;ON;;;;;N;;;;; +1CDAD;BLOCK OCTANT-278;So;0;ON;;;;;N;;;;; +1CDAE;BLOCK OCTANT-1278;So;0;ON;;;;;N;;;;; +1CDAF;BLOCK OCTANT-378;So;0;ON;;;;;N;;;;; +1CDB0;BLOCK OCTANT-1378;So;0;ON;;;;;N;;;;; +1CDB1;BLOCK OCTANT-2378;So;0;ON;;;;;N;;;;; +1CDB2;BLOCK OCTANT-12378;So;0;ON;;;;;N;;;;; +1CDB3;BLOCK OCTANT-478;So;0;ON;;;;;N;;;;; +1CDB4;BLOCK OCTANT-1478;So;0;ON;;;;;N;;;;; +1CDB5;BLOCK OCTANT-2478;So;0;ON;;;;;N;;;;; +1CDB6;BLOCK OCTANT-12478;So;0;ON;;;;;N;;;;; +1CDB7;BLOCK OCTANT-3478;So;0;ON;;;;;N;;;;; +1CDB8;BLOCK OCTANT-13478;So;0;ON;;;;;N;;;;; +1CDB9;BLOCK OCTANT-23478;So;0;ON;;;;;N;;;;; +1CDBA;BLOCK OCTANT-123478;So;0;ON;;;;;N;;;;; +1CDBB;BLOCK OCTANT-578;So;0;ON;;;;;N;;;;; +1CDBC;BLOCK OCTANT-1578;So;0;ON;;;;;N;;;;; +1CDBD;BLOCK OCTANT-2578;So;0;ON;;;;;N;;;;; +1CDBE;BLOCK OCTANT-12578;So;0;ON;;;;;N;;;;; +1CDBF;BLOCK OCTANT-3578;So;0;ON;;;;;N;;;;; +1CDC0;BLOCK OCTANT-13578;So;0;ON;;;;;N;;;;; +1CDC1;BLOCK OCTANT-23578;So;0;ON;;;;;N;;;;; +1CDC2;BLOCK OCTANT-123578;So;0;ON;;;;;N;;;;; +1CDC3;BLOCK OCTANT-4578;So;0;ON;;;;;N;;;;; +1CDC4;BLOCK OCTANT-14578;So;0;ON;;;;;N;;;;; +1CDC5;BLOCK OCTANT-24578;So;0;ON;;;;;N;;;;; +1CDC6;BLOCK OCTANT-124578;So;0;ON;;;;;N;;;;; +1CDC7;BLOCK OCTANT-34578;So;0;ON;;;;;N;;;;; +1CDC8;BLOCK OCTANT-134578;So;0;ON;;;;;N;;;;; +1CDC9;BLOCK OCTANT-234578;So;0;ON;;;;;N;;;;; +1CDCA;BLOCK OCTANT-1234578;So;0;ON;;;;;N;;;;; +1CDCB;BLOCK OCTANT-678;So;0;ON;;;;;N;;;;; +1CDCC;BLOCK OCTANT-1678;So;0;ON;;;;;N;;;;; +1CDCD;BLOCK OCTANT-2678;So;0;ON;;;;;N;;;;; +1CDCE;BLOCK OCTANT-12678;So;0;ON;;;;;N;;;;; +1CDCF;BLOCK OCTANT-3678;So;0;ON;;;;;N;;;;; +1CDD0;BLOCK OCTANT-13678;So;0;ON;;;;;N;;;;; +1CDD1;BLOCK OCTANT-23678;So;0;ON;;;;;N;;;;; +1CDD2;BLOCK OCTANT-123678;So;0;ON;;;;;N;;;;; +1CDD3;BLOCK OCTANT-4678;So;0;ON;;;;;N;;;;; +1CDD4;BLOCK OCTANT-14678;So;0;ON;;;;;N;;;;; +1CDD5;BLOCK OCTANT-24678;So;0;ON;;;;;N;;;;; +1CDD6;BLOCK OCTANT-124678;So;0;ON;;;;;N;;;;; +1CDD7;BLOCK OCTANT-34678;So;0;ON;;;;;N;;;;; +1CDD8;BLOCK OCTANT-134678;So;0;ON;;;;;N;;;;; +1CDD9;BLOCK OCTANT-234678;So;0;ON;;;;;N;;;;; +1CDDA;BLOCK OCTANT-1234678;So;0;ON;;;;;N;;;;; +1CDDB;BLOCK OCTANT-15678;So;0;ON;;;;;N;;;;; +1CDDC;BLOCK OCTANT-25678;So;0;ON;;;;;N;;;;; +1CDDD;BLOCK OCTANT-125678;So;0;ON;;;;;N;;;;; +1CDDE;BLOCK OCTANT-35678;So;0;ON;;;;;N;;;;; +1CDDF;BLOCK OCTANT-235678;So;0;ON;;;;;N;;;;; +1CDE0;BLOCK OCTANT-1235678;So;0;ON;;;;;N;;;;; +1CDE1;BLOCK OCTANT-45678;So;0;ON;;;;;N;;;;; +1CDE2;BLOCK OCTANT-145678;So;0;ON;;;;;N;;;;; +1CDE3;BLOCK OCTANT-1245678;So;0;ON;;;;;N;;;;; +1CDE4;BLOCK OCTANT-1345678;So;0;ON;;;;;N;;;;; +1CDE5;BLOCK OCTANT-2345678;So;0;ON;;;;;N;;;;; +1CDE6;TOP HALF STANDING PERSON;So;0;ON;;;;;N;;;;; +1CDE7;BOTTOM HALF STANDING PERSON;So;0;ON;;;;;N;;;;; +1CDE8;TOP HALF RIGHT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;; +1CDE9;BOTTOM HALF RIGHT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;; +1CDEA;TOP HALF RIGHT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;; +1CDEB;BOTTOM HALF RIGHT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;; +1CDEC;TOP HALF LEFT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;; +1CDED;BOTTOM HALF LEFT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;; +1CDEE;TOP HALF LEFT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;; +1CDEF;BOTTOM HALF LEFT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;; +1CDF0;TOP HALF FORWARD-FACING RUNNER;So;0;ON;;;;;N;;;;; +1CDF1;BOTTOM HALF FORWARD-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;; +1CDF2;BOTTOM HALF FORWARD-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;; +1CDF3;BOTTOM HALF FORWARD-FACING RUNNER FRAME-3;So;0;ON;;;;;N;;;;; +1CDF4;BOTTOM HALF FORWARD-FACING RUNNER FRAME-4;So;0;ON;;;;;N;;;;; +1CDF5;MOON LANDER;So;0;ON;;;;;N;;;;; +1CDF6;TOP HALF FLAILING ROBOT FRAME-1;So;0;ON;;;;;N;;;;; +1CDF7;TOP HALF FLAILING ROBOT FRAME-2;So;0;ON;;;;;N;;;;; +1CDF8;DOWN-POINTING AIRPLANE;So;0;ON;;;;;N;;;;; +1CDF9;LEFT-POINTING AIRPLANE;So;0;ON;;;;;N;;;;; +1CDFA;SMALL UP-POINTING AIRPLANE;So;0;ON;;;;;N;;;;; +1CDFB;UP-POINTING FROG;So;0;ON;;;;;N;;;;; +1CDFC;DOWN-POINTING FROG;So;0;ON;;;;;N;;;;; +1CDFD;EXPLOSION FRAME-1;So;0;ON;;;;;N;;;;; +1CDFE;EXPLOSION FRAME-2;So;0;ON;;;;;N;;;;; +1CDFF;EXPLOSION FRAME-3;So;0;ON;;;;;N;;;;; +1CE00;RIGHT HALF AND LEFT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;; +1CE01;LOWER HALF AND UPPER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;; +1CE02;EXPLOSION AT HORIZON;So;0;ON;;;;;N;;;;; +1CE03;UPPER HALF HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;; +1CE04;LOWER HALF HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;; +1CE05;HEAVY WHITE SQUARE CONTAINING BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; +1CE06;WHITE VERTICAL RECTANGLE WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; +1CE07;TOP LEFT BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;;;;; +1CE08;FUNNEL;So;0;ON;;;;;N;;;;; +1CE09;BOX DRAWINGS DOUBLE DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1CE0A;BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;; +1CE0B;LEFT HALF WHITE ELLIPSE;So;0;ON;;;;;N;;;;; +1CE0C;RIGHT HALF WHITE ELLIPSE;So;0;ON;;;;;N;;;;; +1CE0D;LEFT HALF TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;;;;; +1CE0E;RIGHT HALF TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;;;;; +1CE0F;HORIZONTAL LINE WITH TICK MARK;So;0;ON;;;;;N;;;;; +1CE10;LEFT HALF HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;; +1CE11;RIGHT HALF HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;; +1CE12;HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;; +1CE13;LOWER HALF VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;; +1CE14;UPPER HALF VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;; +1CE15;VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;; +1CE16;BOX DRAWINGS LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; +1CE17;BOX DRAWINGS LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; +1CE18;BOX DRAWINGS LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; +1CE19;BOX DRAWINGS LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; +1CE1A;LARGE TYPE PIECE UPPER LEFT ARC;So;0;ON;;;;;N;;;;; +1CE1B;LARGE TYPE PIECE UPPER LEFT CORNER;So;0;ON;;;;;N;;;;; +1CE1C;LARGE TYPE PIECE UPPER TERMINAL;So;0;ON;;;;;N;;;;; +1CE1D;LARGE TYPE PIECE UPPER LEFT CROTCH;So;0;ON;;;;;N;;;;; +1CE1E;LARGE TYPE PIECE LEFT ARM;So;0;ON;;;;;N;;;;; +1CE1F;LARGE TYPE PIECE CROSSBAR;So;0;ON;;;;;N;;;;; +1CE20;LARGE TYPE PIECE CROSSBAR WITH LOWER STEM;So;0;ON;;;;;N;;;;; +1CE21;LARGE TYPE PIECE UPPER HALF VERTEX OF M;So;0;ON;;;;;N;;;;; +1CE22;LARGE TYPE PIECE DIAGONAL LOWER LEFT;So;0;ON;;;;;N;;;;; +1CE23;LARGE TYPE PIECE SHORT UPPER TERMINAL;So;0;ON;;;;;N;;;;; +1CE24;LARGE TYPE PIECE UPPER RIGHT ARC;So;0;ON;;;;;N;;;;; +1CE25;LARGE TYPE PIECE RIGHT ARM;So;0;ON;;;;;N;;;;; +1CE26;LARGE TYPE PIECE UPPER RIGHT CROTCH;So;0;ON;;;;;N;;;;; +1CE27;LARGE TYPE PIECE UPPER RIGHT CORNER;So;0;ON;;;;;N;;;;; +1CE28;LARGE TYPE PIECE STEM WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;; +1CE29;LARGE TYPE PIECE STEM;So;0;ON;;;;;N;;;;; +1CE2A;LARGE TYPE PIECE DIAGONAL UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; +1CE2B;LARGE TYPE PIECE DIAGONAL UPPER RIGHT;So;0;ON;;;;;N;;;;; +1CE2C;LARGE TYPE PIECE DIAGONAL LOWER RIGHT;So;0;ON;;;;;N;;;;; +1CE2D;LARGE TYPE PIECE SHORT LOWER TERMINAL;So;0;ON;;;;;N;;;;; +1CE2E;LARGE TYPE PIECE LOWER LEFT AND UPPER LEFT ARC;So;0;ON;;;;;N;;;;; +1CE2F;LARGE TYPE PIECE CENTRE OF K;So;0;ON;;;;;N;;;;; +1CE30;LARGE TYPE PIECE LOWER HALF VERTEX OF M;So;0;ON;;;;;N;;;;; +1CE31;LARGE TYPE PIECE UPPER HALF VERTEX OF W;So;0;ON;;;;;N;;;;; +1CE32;LARGE TYPE PIECE CENTRE OF X;So;0;ON;;;;;N;;;;; +1CE33;LARGE TYPE PIECE CENTRE OF Y;So;0;ON;;;;;N;;;;; +1CE34;LARGE TYPE PIECE CENTRE OF Z WITH CROSSBAR;So;0;ON;;;;;N;;;;; +1CE35;LARGE TYPE PIECE RAISED UPPER LEFT ARC;So;0;ON;;;;;N;;;;; +1CE36;LARGE TYPE PIECE STEM WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;; +1CE37;LARGE TYPE PIECE LOWER RIGHT AND UPPER RIGHT ARC;So;0;ON;;;;;N;;;;; +1CE38;LARGE TYPE PIECE DIAGONAL UPPER LEFT AND LOWER LEFT;So;0;ON;;;;;N;;;;; +1CE39;LARGE TYPE PIECE STEM WITH LEFT JOINT;So;0;ON;;;;;N;;;;; +1CE3A;LARGE TYPE PIECE STEM WITH CROSSBAR;So;0;ON;;;;;N;;;;; +1CE3B;LARGE TYPE PIECE DIAGONAL UPPER LEFT;So;0;ON;;;;;N;;;;; +1CE3C;LARGE TYPE PIECE LOWER TERMINAL;So;0;ON;;;;;N;;;;; +1CE3D;LARGE TYPE PIECE LOWER LEFT CORNER;So;0;ON;;;;;N;;;;; +1CE3E;LARGE TYPE PIECE LOWER LEFT ARC;So;0;ON;;;;;N;;;;; +1CE3F;LARGE TYPE PIECE LOWER LEFT CROTCH;So;0;ON;;;;;N;;;;; +1CE40;LARGE TYPE PIECE CROSSBAR WITH UPPER STEM;So;0;ON;;;;;N;;;;; +1CE41;LARGE TYPE PIECE VERTEX OF V;So;0;ON;;;;;N;;;;; +1CE42;LARGE TYPE PIECE LOWER HALF VERTEX OF W;So;0;ON;;;;;N;;;;; +1CE43;LARGE TYPE PIECE LOWER RIGHT ARC;So;0;ON;;;;;N;;;;; +1CE44;LARGE TYPE PIECE LOWER RIGHT CORNER;So;0;ON;;;;;N;;;;; +1CE45;LARGE TYPE PIECE LOWER RIGHT ARC WITH TAIL;So;0;ON;;;;;N;;;;; +1CE46;LARGE TYPE PIECE LOWER RIGHT CROTCH;So;0;ON;;;;;N;;;;; +1CE47;LARGE TYPE PIECE STEM-45;So;0;ON;;;;;N;;;;; +1CE48;LARGE TYPE PIECE STEM-2345;So;0;ON;;;;;N;;;;; +1CE49;LARGE TYPE PIECE STEM-4;So;0;ON;;;;;N;;;;; +1CE4A;LARGE TYPE PIECE STEM-34;So;0;ON;;;;;N;;;;; +1CE4B;LARGE TYPE PIECE STEM-234;So;0;ON;;;;;N;;;;; +1CE4C;LARGE TYPE PIECE STEM-1234;So;0;ON;;;;;N;;;;; +1CE4D;LARGE TYPE PIECE STEM-3;So;0;ON;;;;;N;;;;; +1CE4E;LARGE TYPE PIECE STEM-23;So;0;ON;;;;;N;;;;; +1CE4F;LARGE TYPE PIECE STEM-2;So;0;ON;;;;;N;;;;; +1CE50;LARGE TYPE PIECE STEM-12;So;0;ON;;;;;N;;;;; +1CE51;SEPARATED BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;; +1CE52;SEPARATED BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;; +1CE53;SEPARATED BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;; +1CE54;SEPARATED BLOCK SEXTANT-3;So;0;ON;;;;;N;;;;; +1CE55;SEPARATED BLOCK SEXTANT-13;So;0;ON;;;;;N;;;;; +1CE56;SEPARATED BLOCK SEXTANT-23;So;0;ON;;;;;N;;;;; +1CE57;SEPARATED BLOCK SEXTANT-123;So;0;ON;;;;;N;;;;; +1CE58;SEPARATED BLOCK SEXTANT-4;So;0;ON;;;;;N;;;;; +1CE59;SEPARATED BLOCK SEXTANT-14;So;0;ON;;;;;N;;;;; +1CE5A;SEPARATED BLOCK SEXTANT-24;So;0;ON;;;;;N;;;;; +1CE5B;SEPARATED BLOCK SEXTANT-124;So;0;ON;;;;;N;;;;; +1CE5C;SEPARATED BLOCK SEXTANT-34;So;0;ON;;;;;N;;;;; +1CE5D;SEPARATED BLOCK SEXTANT-134;So;0;ON;;;;;N;;;;; +1CE5E;SEPARATED BLOCK SEXTANT-234;So;0;ON;;;;;N;;;;; +1CE5F;SEPARATED BLOCK SEXTANT-1234;So;0;ON;;;;;N;;;;; +1CE60;SEPARATED BLOCK SEXTANT-5;So;0;ON;;;;;N;;;;; +1CE61;SEPARATED BLOCK SEXTANT-15;So;0;ON;;;;;N;;;;; +1CE62;SEPARATED BLOCK SEXTANT-25;So;0;ON;;;;;N;;;;; +1CE63;SEPARATED BLOCK SEXTANT-125;So;0;ON;;;;;N;;;;; +1CE64;SEPARATED BLOCK SEXTANT-35;So;0;ON;;;;;N;;;;; +1CE65;SEPARATED BLOCK SEXTANT-135;So;0;ON;;;;;N;;;;; +1CE66;SEPARATED BLOCK SEXTANT-235;So;0;ON;;;;;N;;;;; +1CE67;SEPARATED BLOCK SEXTANT-1235;So;0;ON;;;;;N;;;;; +1CE68;SEPARATED BLOCK SEXTANT-45;So;0;ON;;;;;N;;;;; +1CE69;SEPARATED BLOCK SEXTANT-145;So;0;ON;;;;;N;;;;; +1CE6A;SEPARATED BLOCK SEXTANT-245;So;0;ON;;;;;N;;;;; +1CE6B;SEPARATED BLOCK SEXTANT-1245;So;0;ON;;;;;N;;;;; +1CE6C;SEPARATED BLOCK SEXTANT-345;So;0;ON;;;;;N;;;;; +1CE6D;SEPARATED BLOCK SEXTANT-1345;So;0;ON;;;;;N;;;;; +1CE6E;SEPARATED BLOCK SEXTANT-2345;So;0;ON;;;;;N;;;;; +1CE6F;SEPARATED BLOCK SEXTANT-12345;So;0;ON;;;;;N;;;;; +1CE70;SEPARATED BLOCK SEXTANT-6;So;0;ON;;;;;N;;;;; +1CE71;SEPARATED BLOCK SEXTANT-16;So;0;ON;;;;;N;;;;; +1CE72;SEPARATED BLOCK SEXTANT-26;So;0;ON;;;;;N;;;;; +1CE73;SEPARATED BLOCK SEXTANT-126;So;0;ON;;;;;N;;;;; +1CE74;SEPARATED BLOCK SEXTANT-36;So;0;ON;;;;;N;;;;; +1CE75;SEPARATED BLOCK SEXTANT-136;So;0;ON;;;;;N;;;;; +1CE76;SEPARATED BLOCK SEXTANT-236;So;0;ON;;;;;N;;;;; +1CE77;SEPARATED BLOCK SEXTANT-1236;So;0;ON;;;;;N;;;;; +1CE78;SEPARATED BLOCK SEXTANT-46;So;0;ON;;;;;N;;;;; +1CE79;SEPARATED BLOCK SEXTANT-146;So;0;ON;;;;;N;;;;; +1CE7A;SEPARATED BLOCK SEXTANT-246;So;0;ON;;;;;N;;;;; +1CE7B;SEPARATED BLOCK SEXTANT-1246;So;0;ON;;;;;N;;;;; +1CE7C;SEPARATED BLOCK SEXTANT-346;So;0;ON;;;;;N;;;;; +1CE7D;SEPARATED BLOCK SEXTANT-1346;So;0;ON;;;;;N;;;;; +1CE7E;SEPARATED BLOCK SEXTANT-2346;So;0;ON;;;;;N;;;;; +1CE7F;SEPARATED BLOCK SEXTANT-12346;So;0;ON;;;;;N;;;;; +1CE80;SEPARATED BLOCK SEXTANT-56;So;0;ON;;;;;N;;;;; +1CE81;SEPARATED BLOCK SEXTANT-156;So;0;ON;;;;;N;;;;; +1CE82;SEPARATED BLOCK SEXTANT-256;So;0;ON;;;;;N;;;;; +1CE83;SEPARATED BLOCK SEXTANT-1256;So;0;ON;;;;;N;;;;; +1CE84;SEPARATED BLOCK SEXTANT-356;So;0;ON;;;;;N;;;;; +1CE85;SEPARATED BLOCK SEXTANT-1356;So;0;ON;;;;;N;;;;; +1CE86;SEPARATED BLOCK SEXTANT-2356;So;0;ON;;;;;N;;;;; +1CE87;SEPARATED BLOCK SEXTANT-12356;So;0;ON;;;;;N;;;;; +1CE88;SEPARATED BLOCK SEXTANT-456;So;0;ON;;;;;N;;;;; +1CE89;SEPARATED BLOCK SEXTANT-1456;So;0;ON;;;;;N;;;;; +1CE8A;SEPARATED BLOCK SEXTANT-2456;So;0;ON;;;;;N;;;;; +1CE8B;SEPARATED BLOCK SEXTANT-12456;So;0;ON;;;;;N;;;;; +1CE8C;SEPARATED BLOCK SEXTANT-3456;So;0;ON;;;;;N;;;;; +1CE8D;SEPARATED BLOCK SEXTANT-13456;So;0;ON;;;;;N;;;;; +1CE8E;SEPARATED BLOCK SEXTANT-23456;So;0;ON;;;;;N;;;;; +1CE8F;SEPARATED BLOCK SEXTANT-123456;So;0;ON;;;;;N;;;;; +1CE90;UPPER LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE91;UPPER CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE92;UPPER CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE93;UPPER RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE94;UPPER MIDDLE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE95;UPPER MIDDLE CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE96;UPPER MIDDLE CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE97;UPPER MIDDLE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE98;LOWER MIDDLE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE99;LOWER MIDDLE CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE9A;LOWER MIDDLE CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE9B;LOWER MIDDLE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE9C;LOWER LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE9D;LOWER CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE9E;LOWER CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CE9F;LOWER RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;; +1CEA0;RIGHT HALF LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEA1;RIGHT THREE QUARTERS LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEA2;LEFT THREE QUARTERS LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEA3;LEFT HALF LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEA4;LOWER HALF LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEA5;LOWER THREE QUARTERS LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEA6;UPPER THREE QUARTERS LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEA7;UPPER HALF LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEA8;LEFT HALF UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEA9;LEFT THREE QUARTERS UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEAA;RIGHT THREE QUARTERS UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEAB;RIGHT HALF UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEAC;UPPER HALF RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEAD;UPPER THREE QUARTERS RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEAE;LOWER THREE QUARTERS RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEAF;LOWER HALF RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1CEB0;HORIZONTAL ZIGZAG LINE;So;0;ON;;;;;N;;;;; +1CEB1;KEYHOLE;So;0;ON;;;;;N;;;;; +1CEB2;OLD PERSONAL COMPUTER WITH MONITOR IN PORTRAIT ORIENTATION;So;0;ON;;;;;N;;;;; +1CEB3;BLACK RIGHT TRIANGLE CARET;So;0;ON;;;;;N;;;;; +1CF00;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF01;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF02;ZNAMENNY COMBINING MARK TSATA ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF03;ZNAMENNY COMBINING MARK GORAZDO NIZKO ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF04;ZNAMENNY COMBINING MARK NIZKO ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF05;ZNAMENNY COMBINING MARK SREDNE ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF06;ZNAMENNY COMBINING MARK MALO POVYSHE ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF07;ZNAMENNY COMBINING MARK POVYSHE ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF08;ZNAMENNY COMBINING MARK VYSOKO ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF09;ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF0A;ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF0B;ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF0C;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF0D;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF0E;ZNAMENNY COMBINING MARK TSATA ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF0F;ZNAMENNY COMBINING MARK GORAZDO NIZKO ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF10;ZNAMENNY COMBINING MARK NIZKO ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF11;ZNAMENNY COMBINING MARK SREDNE ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF12;ZNAMENNY COMBINING MARK MALO POVYSHE ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF13;ZNAMENNY COMBINING MARK POVYSHE ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF14;ZNAMENNY COMBINING MARK VYSOKO ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF15;ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF16;ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF17;ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF18;ZNAMENNY COMBINING MARK TSATA S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF19;ZNAMENNY COMBINING MARK MALO POVYSHE S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF1A;ZNAMENNY COMBINING MARK STRANNO MALO POVYSHE;Mn;0;NSM;;;;;N;;;;; +1CF1B;ZNAMENNY COMBINING MARK POVYSHE S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF1C;ZNAMENNY COMBINING MARK POVYSHE STRANNO;Mn;0;NSM;;;;;N;;;;; +1CF1D;ZNAMENNY COMBINING MARK VYSOKO S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF1E;ZNAMENNY COMBINING MARK MALO POVYSHE STRANNO;Mn;0;NSM;;;;;N;;;;; +1CF1F;ZNAMENNY COMBINING MARK GORAZDO VYSOKO;Mn;0;NSM;;;;;N;;;;; +1CF20;ZNAMENNY COMBINING MARK ZELO;Mn;0;NSM;;;;;N;;;;; +1CF21;ZNAMENNY COMBINING MARK ON;Mn;0;NSM;;;;;N;;;;; +1CF22;ZNAMENNY COMBINING MARK RAVNO;Mn;0;NSM;;;;;N;;;;; +1CF23;ZNAMENNY COMBINING MARK TIKHAYA;Mn;0;NSM;;;;;N;;;;; +1CF24;ZNAMENNY COMBINING MARK BORZAYA;Mn;0;NSM;;;;;N;;;;; +1CF25;ZNAMENNY COMBINING MARK UDARKA;Mn;0;NSM;;;;;N;;;;; +1CF26;ZNAMENNY COMBINING MARK PODVERTKA;Mn;0;NSM;;;;;N;;;;; +1CF27;ZNAMENNY COMBINING MARK LOMKA;Mn;0;NSM;;;;;N;;;;; +1CF28;ZNAMENNY COMBINING MARK KUPNAYA;Mn;0;NSM;;;;;N;;;;; +1CF29;ZNAMENNY COMBINING MARK KACHKA;Mn;0;NSM;;;;;N;;;;; +1CF2A;ZNAMENNY COMBINING MARK ZEVOK;Mn;0;NSM;;;;;N;;;;; +1CF2B;ZNAMENNY COMBINING MARK SKOBA;Mn;0;NSM;;;;;N;;;;; +1CF2C;ZNAMENNY COMBINING MARK RAZSEKA;Mn;0;NSM;;;;;N;;;;; +1CF2D;ZNAMENNY COMBINING MARK KRYZH ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF30;ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO;Mn;0;NSM;;;;;N;;;;; +1CF31;ZNAMENNY COMBINING TONAL RANGE MARK SVETLO;Mn;0;NSM;;;;;N;;;;; +1CF32;ZNAMENNY COMBINING TONAL RANGE MARK TRESVETLO;Mn;0;NSM;;;;;N;;;;; +1CF33;ZNAMENNY COMBINING MARK ZADERZHKA;Mn;0;NSM;;;;;N;;;;; +1CF34;ZNAMENNY COMBINING MARK DEMESTVENNY ZADERZHKA;Mn;0;NSM;;;;;N;;;;; +1CF35;ZNAMENNY COMBINING MARK OTSECHKA;Mn;0;NSM;;;;;N;;;;; +1CF36;ZNAMENNY COMBINING MARK PODCHASHIE;Mn;0;NSM;;;;;N;;;;; +1CF37;ZNAMENNY COMBINING MARK PODCHASHIE WITH VERTICAL STROKE;Mn;0;NSM;;;;;N;;;;; +1CF38;ZNAMENNY COMBINING MARK CHASHKA;Mn;0;NSM;;;;;N;;;;; +1CF39;ZNAMENNY COMBINING MARK CHASHKA POLNAYA;Mn;0;NSM;;;;;N;;;;; +1CF3A;ZNAMENNY COMBINING MARK OBLACHKO;Mn;0;NSM;;;;;N;;;;; +1CF3B;ZNAMENNY COMBINING MARK SOROCHYA NOZHKA;Mn;0;NSM;;;;;N;;;;; +1CF3C;ZNAMENNY COMBINING MARK TOCHKA;Mn;0;NSM;;;;;N;;;;; +1CF3D;ZNAMENNY COMBINING MARK DVOETOCHIE;Mn;0;NSM;;;;;N;;;;; +1CF3E;ZNAMENNY COMBINING ATTACHING VERTICAL OMET;Mn;0;NSM;;;;;N;;;;; +1CF3F;ZNAMENNY COMBINING MARK CURVED OMET;Mn;0;NSM;;;;;N;;;;; +1CF40;ZNAMENNY COMBINING MARK KRYZH;Mn;0;NSM;;;;;N;;;;; +1CF41;ZNAMENNY COMBINING LOWER TONAL RANGE INDICATOR;Mn;0;NSM;;;;;N;;;;; +1CF42;ZNAMENNY PRIZNAK MODIFIER LEVEL-2;Mn;0;NSM;;;;;N;;;;; +1CF43;ZNAMENNY PRIZNAK MODIFIER LEVEL-3;Mn;0;NSM;;;;;N;;;;; +1CF44;ZNAMENNY PRIZNAK MODIFIER DIRECTION FLIP;Mn;0;NSM;;;;;N;;;;; +1CF45;ZNAMENNY PRIZNAK MODIFIER KRYZH;Mn;0;NSM;;;;;N;;;;; +1CF46;ZNAMENNY PRIZNAK MODIFIER ROG;Mn;0;NSM;;;;;N;;;;; +1CF50;ZNAMENNY NEUME KRYUK;So;0;L;;;;;N;;;;; +1CF51;ZNAMENNY NEUME KRYUK TIKHY;So;0;L;;;;;N;;;;; +1CF52;ZNAMENNY NEUME PARAKLIT;So;0;L;;;;;N;;;;; +1CF53;ZNAMENNY NEUME DVA V CHELNU;So;0;L;;;;;N;;;;; +1CF54;ZNAMENNY NEUME KLYUCH;So;0;L;;;;;N;;;;; +1CF55;ZNAMENNY NEUME ZANOZHEK;So;0;L;;;;;N;;;;; +1CF56;ZNAMENNY NEUME STOPITSA;So;0;L;;;;;N;;;;; +1CF57;ZNAMENNY NEUME STOPITSA S OCHKOM;So;0;L;;;;;N;;;;; +1CF58;ZNAMENNY NEUME PEREVODKA;So;0;L;;;;;N;;;;; +1CF59;ZNAMENNY NEUME PEREVODKA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF5A;ZNAMENNY NEUME STOPITSA WITH SOROCHYA NOZHKA;So;0;L;;;;;N;;;;; +1CF5B;ZNAMENNY NEUME CHELYUSTKA;So;0;L;;;;;N;;;;; +1CF5C;ZNAMENNY NEUME PALKA;So;0;L;;;;;N;;;;; +1CF5D;ZNAMENNY NEUME ZAPYATAYA;So;0;L;;;;;N;;;;; +1CF5E;ZNAMENNY NEUME GOLUBCHIK BORZY;So;0;L;;;;;N;;;;; +1CF5F;ZNAMENNY NEUME GOLUBCHIK TIKHY;So;0;L;;;;;N;;;;; +1CF60;ZNAMENNY NEUME GOLUBCHIK MRACHNY;So;0;L;;;;;N;;;;; +1CF61;ZNAMENNY NEUME GOLUBCHIK SVETLY;So;0;L;;;;;N;;;;; +1CF62;ZNAMENNY NEUME GOLUBCHIK TRESVETLY;So;0;L;;;;;N;;;;; +1CF63;ZNAMENNY NEUME VRAKHIYA PROSTAYA;So;0;L;;;;;N;;;;; +1CF64;ZNAMENNY NEUME VRAKHIYA MRACHNAYA;So;0;L;;;;;N;;;;; +1CF65;ZNAMENNY NEUME VRAKHIYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF66;ZNAMENNY NEUME VRAKHIYA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CF67;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA PROSTAYA;So;0;L;;;;;N;;;;; +1CF68;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA MRACHNAYA;So;0;L;;;;;N;;;;; +1CF69;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF6A;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CF6B;ZNAMENNY NEUME DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CF6C;ZNAMENNY NEUME REVERSED CHELYUSTKA;So;0;L;;;;;N;;;;; +1CF6D;ZNAMENNY NEUME DERBITSA;So;0;L;;;;;N;;;;; +1CF6E;ZNAMENNY NEUME KHAMILO;So;0;L;;;;;N;;;;; +1CF6F;ZNAMENNY NEUME CHASHKA;So;0;L;;;;;N;;;;; +1CF70;ZNAMENNY NEUME PODCHASHIE;So;0;L;;;;;N;;;;; +1CF71;ZNAMENNY NEUME SKAMEYTSA MRACHNAYA;So;0;L;;;;;N;;;;; +1CF72;ZNAMENNY NEUME SKAMEYTSA SVETLAYA;So;0;L;;;;;N;;;;; +1CF73;ZNAMENNY NEUME SKAMEYTSA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CF74;ZNAMENNY NEUME SKAMEYTSA TIKHAYA;So;0;L;;;;;N;;;;; +1CF75;ZNAMENNY NEUME DEMESTVENNY KLYUCH;So;0;L;;;;;N;;;;; +1CF76;ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF77;ZNAMENNY NEUME SKAMEYTSA KLYUCHENEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF78;ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA TIKHAYA;So;0;L;;;;;N;;;;; +1CF79;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA PROSTAYA;So;0;L;;;;;N;;;;; +1CF7A;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF7B;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF7C;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;; +1CF7D;ZNAMENNY NEUME SLOZHITIE;So;0;L;;;;;N;;;;; +1CF7E;ZNAMENNY NEUME SLOZHITIE S ZAPYATOY;So;0;L;;;;;N;;;;; +1CF7F;ZNAMENNY NEUME SLOZHITIE ZAKRYTOE;So;0;L;;;;;N;;;;; +1CF80;ZNAMENNY NEUME SLOZHITIE S KRYZHEM;So;0;L;;;;;N;;;;; +1CF81;ZNAMENNY NEUME KRYZH;So;0;L;;;;;N;;;;; +1CF82;ZNAMENNY NEUME ROG;So;0;L;;;;;N;;;;; +1CF83;ZNAMENNY NEUME FITA;So;0;L;;;;;N;;;;; +1CF84;ZNAMENNY NEUME KOBYLA;So;0;L;;;;;N;;;;; +1CF85;ZNAMENNY NEUME ZMEYTSA;So;0;L;;;;;N;;;;; +1CF86;ZNAMENNY NEUME STATYA;So;0;L;;;;;N;;;;; +1CF87;ZNAMENNY NEUME STATYA S ZAPYATOY;So;0;L;;;;;N;;;;; +1CF88;ZNAMENNY NEUME STATYA S KRYZHEM;So;0;L;;;;;N;;;;; +1CF89;ZNAMENNY NEUME STATYA S ZAPYATOY I KRYZHEM;So;0;L;;;;;N;;;;; +1CF8A;ZNAMENNY NEUME STATYA S KRYZHEM I ZAPYATOY;So;0;L;;;;;N;;;;; +1CF8B;ZNAMENNY NEUME STATYA ZAKRYTAYA;So;0;L;;;;;N;;;;; +1CF8C;ZNAMENNY NEUME STATYA ZAKRYTAYA S ZAPYATOY;So;0;L;;;;;N;;;;; +1CF8D;ZNAMENNY NEUME STATYA S ROGOM;So;0;L;;;;;N;;;;; +1CF8E;ZNAMENNY NEUME STATYA S DVUMYA ZAPYATYMI;So;0;L;;;;;N;;;;; +1CF8F;ZNAMENNY NEUME STATYA S ZAPYATOY I PODCHASHIEM;So;0;L;;;;;N;;;;; +1CF90;ZNAMENNY NEUME POLKULIZMY;So;0;L;;;;;N;;;;; +1CF91;ZNAMENNY NEUME STATYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF92;ZNAMENNY NEUME STRELA PROSTAYA;So;0;L;;;;;N;;;;; +1CF93;ZNAMENNY NEUME STRELA MRACHNOTIKHAYA;So;0;L;;;;;N;;;;; +1CF94;ZNAMENNY NEUME STRELA KRYZHEVAYA;So;0;L;;;;;N;;;;; +1CF95;ZNAMENNY NEUME STRELA POLUPOVODNAYA;So;0;L;;;;;N;;;;; +1CF96;ZNAMENNY NEUME STRELA POVODNAYA;So;0;L;;;;;N;;;;; +1CF97;ZNAMENNY NEUME STRELA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF98;ZNAMENNY NEUME STRELA KLYUCHEPOVODNAYA;So;0;L;;;;;N;;;;; +1CF99;ZNAMENNY NEUME STRELA KLYUCHENEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF9A;ZNAMENNY NEUME STRELA TIKHAYA PUTNAYA;So;0;L;;;;;N;;;;; +1CF9B;ZNAMENNY NEUME STRELA DVOECHELNAYA;So;0;L;;;;;N;;;;; +1CF9C;ZNAMENNY NEUME STRELA DVOECHELNOKRYZHEVAYA;So;0;L;;;;;N;;;;; +1CF9D;ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA;So;0;L;;;;;N;;;;; +1CF9E;ZNAMENNY NEUME STRELA DVOECHELNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;; +1CF9F;ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;; +1CFA0;ZNAMENNY NEUME STRELA GROMNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFA1;ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFA2;ZNAMENNY NEUME STRELA GROMNAYA;So;0;L;;;;;N;;;;; +1CFA3;ZNAMENNY NEUME STRELA GROMOPOVODNAYA;So;0;L;;;;;N;;;;; +1CFA4;ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFA5;ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA;So;0;L;;;;;N;;;;; +1CFA6;ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA POVODNAYA;So;0;L;;;;;N;;;;; +1CFA7;ZNAMENNY NEUME MECHIK;So;0;L;;;;;N;;;;; +1CFA8;ZNAMENNY NEUME MECHIK POVODNY;So;0;L;;;;;N;;;;; +1CFA9;ZNAMENNY NEUME MECHIK KLYUCHEVOY;So;0;L;;;;;N;;;;; +1CFAA;ZNAMENNY NEUME MECHIK KLYUCHEPOVODNY;So;0;L;;;;;N;;;;; +1CFAB;ZNAMENNY NEUME MECHIK KLYUCHENEPOSTOYANNY;So;0;L;;;;;N;;;;; +1CFAC;ZNAMENNY NEUME STRELA TRYASOGLASNAYA;So;0;L;;;;;N;;;;; +1CFAD;ZNAMENNY NEUME STRELA TRYASOPOVODNAYA;So;0;L;;;;;N;;;;; +1CFAE;ZNAMENNY NEUME STRELA TRYASOSTRELNAYA;So;0;L;;;;;N;;;;; +1CFAF;ZNAMENNY NEUME OSOKA;So;0;L;;;;;N;;;;; +1CFB0;ZNAMENNY NEUME OSOKA SVETLAYA;So;0;L;;;;;N;;;;; +1CFB1;ZNAMENNY NEUME OSOKA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CFB2;ZNAMENNY NEUME OSOKA KRYUKOVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CFB3;ZNAMENNY NEUME OSOKA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CFB4;ZNAMENNY NEUME OSOKA KLYUCHEVAYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CFB5;ZNAMENNY NEUME STRELA KRYUKOVAYA;So;0;L;;;;;N;;;;; +1CFB6;ZNAMENNY NEUME STRELA KRYUKOVAYA POVODNAYA;So;0;L;;;;;N;;;;; +1CFB7;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFB8;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFB9;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA;So;0;L;;;;;N;;;;; +1CFBA;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA;So;0;L;;;;;N;;;;; +1CFBB;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFBC;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA;So;0;L;;;;;N;;;;; +1CFBD;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA POVODNAYA;So;0;L;;;;;N;;;;; +1CFBE;ZNAMENNY NEUME STRELA KRYUKOVAYA TRYASKA;So;0;L;;;;;N;;;;; +1CFBF;ZNAMENNY NEUME KUFISMA;So;0;L;;;;;N;;;;; +1CFC0;ZNAMENNY NEUME OBLAKO;So;0;L;;;;;N;;;;; +1CFC1;ZNAMENNY NEUME DUDA;So;0;L;;;;;N;;;;; +1CFC2;ZNAMENNY NEUME NEMKA;So;0;L;;;;;N;;;;; +1CFC3;ZNAMENNY NEUME PAUK;So;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;;;;; @@ -27801,6 +33727,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D1E6;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN;So;0;L;;;;;N;;;;; 1D1E7;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP;So;0;L;;;;;N;;;;; 1D1E8;MUSICAL SYMBOL KIEVAN FLAT SIGN;So;0;L;;;;;N;;;;; +1D1E9;MUSICAL SYMBOL SORI;So;0;ON;;;;;N;;;;; +1D1EA;MUSICAL SYMBOL KORON;So;0;ON;;;;;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;;;;; @@ -27871,6 +33799,26 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;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;;;;; +1D2C0;KAKTOVIK NUMERAL ZERO;No;0;L;;;;0;N;;;;; +1D2C1;KAKTOVIK NUMERAL ONE;No;0;L;;;;1;N;;;;; +1D2C2;KAKTOVIK NUMERAL TWO;No;0;L;;;;2;N;;;;; +1D2C3;KAKTOVIK NUMERAL THREE;No;0;L;;;;3;N;;;;; +1D2C4;KAKTOVIK NUMERAL FOUR;No;0;L;;;;4;N;;;;; +1D2C5;KAKTOVIK NUMERAL FIVE;No;0;L;;;;5;N;;;;; +1D2C6;KAKTOVIK NUMERAL SIX;No;0;L;;;;6;N;;;;; +1D2C7;KAKTOVIK NUMERAL SEVEN;No;0;L;;;;7;N;;;;; +1D2C8;KAKTOVIK NUMERAL EIGHT;No;0;L;;;;8;N;;;;; +1D2C9;KAKTOVIK NUMERAL NINE;No;0;L;;;;9;N;;;;; +1D2CA;KAKTOVIK NUMERAL TEN;No;0;L;;;;10;N;;;;; +1D2CB;KAKTOVIK NUMERAL ELEVEN;No;0;L;;;;11;N;;;;; +1D2CC;KAKTOVIK NUMERAL TWELVE;No;0;L;;;;12;N;;;;; +1D2CD;KAKTOVIK NUMERAL THIRTEEN;No;0;L;;;;13;N;;;;; +1D2CE;KAKTOVIK NUMERAL FOURTEEN;No;0;L;;;;14;N;;;;; +1D2CF;KAKTOVIK NUMERAL FIFTEEN;No;0;L;;;;15;N;;;;; +1D2D0;KAKTOVIK NUMERAL SIXTEEN;No;0;L;;;;16;N;;;;; +1D2D1;KAKTOVIK NUMERAL SEVENTEEN;No;0;L;;;;17;N;;;;; +1D2D2;KAKTOVIK NUMERAL EIGHTEEN;No;0;L;;;;18;N;;;;; +1D2D3;KAKTOVIK NUMERAL NINETEEN;No;0;L;;;;19;N;;;;; 1D2E0;MAYAN NUMERAL ZERO;No;0;L;;;;0;N;;;;; 1D2E1;MAYAN NUMERAL ONE;No;0;L;;;;1;N;;;;; 1D2E2;MAYAN NUMERAL TWO;No;0;L;;;;2;N;;;;; @@ -28682,7 +34630,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; 1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; 1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; +1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;ON; 2207;;;;N;;;;; 1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; 1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; 1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; @@ -28740,7 +34688,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; 1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; 1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; +1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;ON; 2207;;;;N;;;;; 1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; 1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; 1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; @@ -28798,7 +34746,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; 1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; 1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; +1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;ON; 2207;;;;N;;;;; 1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; 1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; 1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; @@ -28856,7 +34804,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; 1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; 1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; +1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;ON; 2207;;;;N;;;;; 1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; 1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; 1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; @@ -28914,7 +34862,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; 1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; 1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; +1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;ON; 2207;;;;N;;;;; 1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; 1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; 1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; @@ -29671,6 +35619,43 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1DAAD;SIGNWRITING ROTATION MODIFIER-14;Mn;0;NSM;;;;;N;;;;; 1DAAE;SIGNWRITING ROTATION MODIFIER-15;Mn;0;NSM;;;;;N;;;;; 1DAAF;SIGNWRITING ROTATION MODIFIER-16;Mn;0;NSM;;;;;N;;;;; +1DF00;LATIN SMALL LETTER FENG DIGRAPH WITH TRILL;Ll;0;L;;;;;N;;;;; +1DF01;LATIN SMALL LETTER REVERSED SCRIPT G;Ll;0;L;;;;;N;;;;; +1DF02;LATIN LETTER SMALL CAPITAL TURNED G;Ll;0;L;;;;;N;;;;; +1DF03;LATIN SMALL LETTER REVERSED K;Ll;0;L;;;;;N;;;;; +1DF04;LATIN LETTER SMALL CAPITAL L WITH BELT;Ll;0;L;;;;;N;;;;; +1DF05;LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF06;LATIN SMALL LETTER TURNED Y WITH BELT;Ll;0;L;;;;;N;;;;; +1DF07;LATIN SMALL LETTER REVERSED ENG;Ll;0;L;;;;;N;;;;; +1DF08;LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF09;LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF0A;LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;Lo;0;L;;;;;N;;;;; +1DF0B;LATIN SMALL LETTER ESH WITH DOUBLE BAR;Ll;0;L;;;;;N;;;;; +1DF0C;LATIN SMALL LETTER ESH WITH DOUBLE BAR AND CURL;Ll;0;L;;;;;N;;;;; +1DF0D;LATIN SMALL LETTER TURNED T WITH CURL;Ll;0;L;;;;;N;;;;; +1DF0E;LATIN LETTER INVERTED GLOTTAL STOP WITH CURL;Ll;0;L;;;;;N;;;;; +1DF0F;LATIN LETTER STRETCHED C WITH CURL;Ll;0;L;;;;;N;;;;; +1DF10;LATIN LETTER SMALL CAPITAL TURNED K;Ll;0;L;;;;;N;;;;; +1DF11;LATIN SMALL LETTER L WITH FISHHOOK;Ll;0;L;;;;;N;;;;; +1DF12;LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF13;LATIN SMALL LETTER L WITH BELT AND PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF14;LATIN SMALL LETTER ENG WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF15;LATIN SMALL LETTER TURNED R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF16;LATIN SMALL LETTER R WITH FISHHOOK AND PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF17;LATIN SMALL LETTER TESH DIGRAPH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF18;LATIN SMALL LETTER EZH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF19;LATIN SMALL LETTER DEZH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1A;LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1B;LATIN SMALL LETTER O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1C;LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1D;LATIN SMALL LETTER C WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1E;LATIN SMALL LETTER S WITH CURL;Ll;0;L;;;;;N;;;;; +1DF25;LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; +1DF26;LATIN SMALL LETTER L WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; +1DF27;LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; +1DF28;LATIN SMALL LETTER R WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; +1DF29;LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; +1DF2A;LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; 1E000;COMBINING GLAGOLITIC LETTER AZU;Mn;230;NSM;;;;;N;;;;; 1E001;COMBINING GLAGOLITIC LETTER BUKY;Mn;230;NSM;;;;;N;;;;; 1E002;COMBINING GLAGOLITIC LETTER VEDE;Mn;230;NSM;;;;;N;;;;; @@ -29709,6 +35694,69 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1E028;COMBINING GLAGOLITIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;; 1E029;COMBINING GLAGOLITIC LETTER IOTATED BIG YUS;Mn;230;NSM;;;;;N;;;;; 1E02A;COMBINING GLAGOLITIC LETTER FITA;Mn;230;NSM;;;;;N;;;;; +1E030;MODIFIER LETTER CYRILLIC SMALL A;Lm;0;L; 0430;;;;N;;;;; +1E031;MODIFIER LETTER CYRILLIC SMALL BE;Lm;0;L; 0431;;;;N;;;;; +1E032;MODIFIER LETTER CYRILLIC SMALL VE;Lm;0;L; 0432;;;;N;;;;; +1E033;MODIFIER LETTER CYRILLIC SMALL GHE;Lm;0;L; 0433;;;;N;;;;; +1E034;MODIFIER LETTER CYRILLIC SMALL DE;Lm;0;L; 0434;;;;N;;;;; +1E035;MODIFIER LETTER CYRILLIC SMALL IE;Lm;0;L; 0435;;;;N;;;;; +1E036;MODIFIER LETTER CYRILLIC SMALL ZHE;Lm;0;L; 0436;;;;N;;;;; +1E037;MODIFIER LETTER CYRILLIC SMALL ZE;Lm;0;L; 0437;;;;N;;;;; +1E038;MODIFIER LETTER CYRILLIC SMALL I;Lm;0;L; 0438;;;;N;;;;; +1E039;MODIFIER LETTER CYRILLIC SMALL KA;Lm;0;L; 043A;;;;N;;;;; +1E03A;MODIFIER LETTER CYRILLIC SMALL EL;Lm;0;L; 043B;;;;N;;;;; +1E03B;MODIFIER LETTER CYRILLIC SMALL EM;Lm;0;L; 043C;;;;N;;;;; +1E03C;MODIFIER LETTER CYRILLIC SMALL O;Lm;0;L; 043E;;;;N;;;;; +1E03D;MODIFIER LETTER CYRILLIC SMALL PE;Lm;0;L; 043F;;;;N;;;;; +1E03E;MODIFIER LETTER CYRILLIC SMALL ER;Lm;0;L; 0440;;;;N;;;;; +1E03F;MODIFIER LETTER CYRILLIC SMALL ES;Lm;0;L; 0441;;;;N;;;;; +1E040;MODIFIER LETTER CYRILLIC SMALL TE;Lm;0;L; 0442;;;;N;;;;; +1E041;MODIFIER LETTER CYRILLIC SMALL U;Lm;0;L; 0443;;;;N;;;;; +1E042;MODIFIER LETTER CYRILLIC SMALL EF;Lm;0;L; 0444;;;;N;;;;; +1E043;MODIFIER LETTER CYRILLIC SMALL HA;Lm;0;L; 0445;;;;N;;;;; +1E044;MODIFIER LETTER CYRILLIC SMALL TSE;Lm;0;L; 0446;;;;N;;;;; +1E045;MODIFIER LETTER CYRILLIC SMALL CHE;Lm;0;L; 0447;;;;N;;;;; +1E046;MODIFIER LETTER CYRILLIC SMALL SHA;Lm;0;L; 0448;;;;N;;;;; +1E047;MODIFIER LETTER CYRILLIC SMALL YERU;Lm;0;L; 044B;;;;N;;;;; +1E048;MODIFIER LETTER CYRILLIC SMALL E;Lm;0;L; 044D;;;;N;;;;; +1E049;MODIFIER LETTER CYRILLIC SMALL YU;Lm;0;L; 044E;;;;N;;;;; +1E04A;MODIFIER LETTER CYRILLIC SMALL DZZE;Lm;0;L; A689;;;;N;;;;; +1E04B;MODIFIER LETTER CYRILLIC SMALL SCHWA;Lm;0;L; 04D9;;;;N;;;;; +1E04C;MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I;Lm;0;L; 0456;;;;N;;;;; +1E04D;MODIFIER LETTER CYRILLIC SMALL JE;Lm;0;L; 0458;;;;N;;;;; +1E04E;MODIFIER LETTER CYRILLIC SMALL BARRED O;Lm;0;L; 04E9;;;;N;;;;; +1E04F;MODIFIER LETTER CYRILLIC SMALL STRAIGHT U;Lm;0;L; 04AF;;;;N;;;;; +1E050;MODIFIER LETTER CYRILLIC SMALL PALOCHKA;Lm;0;L; 04CF;;;;N;;;;; +1E051;CYRILLIC SUBSCRIPT SMALL LETTER A;Lm;0;L; 0430;;;;N;;;;; +1E052;CYRILLIC SUBSCRIPT SMALL LETTER BE;Lm;0;L; 0431;;;;N;;;;; +1E053;CYRILLIC SUBSCRIPT SMALL LETTER VE;Lm;0;L; 0432;;;;N;;;;; +1E054;CYRILLIC SUBSCRIPT SMALL LETTER GHE;Lm;0;L; 0433;;;;N;;;;; +1E055;CYRILLIC SUBSCRIPT SMALL LETTER DE;Lm;0;L; 0434;;;;N;;;;; +1E056;CYRILLIC SUBSCRIPT SMALL LETTER IE;Lm;0;L; 0435;;;;N;;;;; +1E057;CYRILLIC SUBSCRIPT SMALL LETTER ZHE;Lm;0;L; 0436;;;;N;;;;; +1E058;CYRILLIC SUBSCRIPT SMALL LETTER ZE;Lm;0;L; 0437;;;;N;;;;; +1E059;CYRILLIC SUBSCRIPT SMALL LETTER I;Lm;0;L; 0438;;;;N;;;;; +1E05A;CYRILLIC SUBSCRIPT SMALL LETTER KA;Lm;0;L; 043A;;;;N;;;;; +1E05B;CYRILLIC SUBSCRIPT SMALL LETTER EL;Lm;0;L; 043B;;;;N;;;;; +1E05C;CYRILLIC SUBSCRIPT SMALL LETTER O;Lm;0;L; 043E;;;;N;;;;; +1E05D;CYRILLIC SUBSCRIPT SMALL LETTER PE;Lm;0;L; 043F;;;;N;;;;; +1E05E;CYRILLIC SUBSCRIPT SMALL LETTER ES;Lm;0;L; 0441;;;;N;;;;; +1E05F;CYRILLIC SUBSCRIPT SMALL LETTER U;Lm;0;L; 0443;;;;N;;;;; +1E060;CYRILLIC SUBSCRIPT SMALL LETTER EF;Lm;0;L; 0444;;;;N;;;;; +1E061;CYRILLIC SUBSCRIPT SMALL LETTER HA;Lm;0;L; 0445;;;;N;;;;; +1E062;CYRILLIC SUBSCRIPT SMALL LETTER TSE;Lm;0;L; 0446;;;;N;;;;; +1E063;CYRILLIC SUBSCRIPT SMALL LETTER CHE;Lm;0;L; 0447;;;;N;;;;; +1E064;CYRILLIC SUBSCRIPT SMALL LETTER SHA;Lm;0;L; 0448;;;;N;;;;; +1E065;CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN;Lm;0;L; 044A;;;;N;;;;; +1E066;CYRILLIC SUBSCRIPT SMALL LETTER YERU;Lm;0;L; 044B;;;;N;;;;; +1E067;CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN;Lm;0;L; 0491;;;;N;;;;; +1E068;CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Lm;0;L; 0456;;;;N;;;;; +1E069;CYRILLIC SUBSCRIPT SMALL LETTER DZE;Lm;0;L; 0455;;;;N;;;;; +1E06A;CYRILLIC SUBSCRIPT SMALL LETTER DZHE;Lm;0;L; 045F;;;;N;;;;; +1E06B;MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER;Lm;0;L; 04AB;;;;N;;;;; +1E06C;MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER;Lm;0;L; A651;;;;N;;;;; +1E06D;MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE;Lm;0;L; 04B1;;;;N;;;;; +1E08F;COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Mn;230;NSM;;;;;N;;;;; 1E100;NYIAKENG PUACHUE HMONG LETTER MA;Lo;0;L;;;;;N;;;;; 1E101;NYIAKENG PUACHUE HMONG LETTER TSA;Lo;0;L;;;;;N;;;;; 1E102;NYIAKENG PUACHUE HMONG LETTER NTA;Lo;0;L;;;;;N;;;;; @@ -29780,6 +35828,37 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1E149;NYIAKENG PUACHUE HMONG DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 1E14E;NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ;Lo;0;L;;;;;N;;;;; 1E14F;NYIAKENG PUACHUE HMONG CIRCLED CA;So;0;L;;;;;N;;;;; +1E290;TOTO LETTER PA;Lo;0;L;;;;;N;;;;; +1E291;TOTO LETTER BA;Lo;0;L;;;;;N;;;;; +1E292;TOTO LETTER TA;Lo;0;L;;;;;N;;;;; +1E293;TOTO LETTER DA;Lo;0;L;;;;;N;;;;; +1E294;TOTO LETTER KA;Lo;0;L;;;;;N;;;;; +1E295;TOTO LETTER GA;Lo;0;L;;;;;N;;;;; +1E296;TOTO LETTER MA;Lo;0;L;;;;;N;;;;; +1E297;TOTO LETTER NA;Lo;0;L;;;;;N;;;;; +1E298;TOTO LETTER NGA;Lo;0;L;;;;;N;;;;; +1E299;TOTO LETTER SA;Lo;0;L;;;;;N;;;;; +1E29A;TOTO LETTER CHA;Lo;0;L;;;;;N;;;;; +1E29B;TOTO LETTER YA;Lo;0;L;;;;;N;;;;; +1E29C;TOTO LETTER WA;Lo;0;L;;;;;N;;;;; +1E29D;TOTO LETTER JA;Lo;0;L;;;;;N;;;;; +1E29E;TOTO LETTER HA;Lo;0;L;;;;;N;;;;; +1E29F;TOTO LETTER RA;Lo;0;L;;;;;N;;;;; +1E2A0;TOTO LETTER LA;Lo;0;L;;;;;N;;;;; +1E2A1;TOTO LETTER I;Lo;0;L;;;;;N;;;;; +1E2A2;TOTO LETTER BREATHY I;Lo;0;L;;;;;N;;;;; +1E2A3;TOTO LETTER IU;Lo;0;L;;;;;N;;;;; +1E2A4;TOTO LETTER BREATHY IU;Lo;0;L;;;;;N;;;;; +1E2A5;TOTO LETTER U;Lo;0;L;;;;;N;;;;; +1E2A6;TOTO LETTER E;Lo;0;L;;;;;N;;;;; +1E2A7;TOTO LETTER BREATHY E;Lo;0;L;;;;;N;;;;; +1E2A8;TOTO LETTER EO;Lo;0;L;;;;;N;;;;; +1E2A9;TOTO LETTER BREATHY EO;Lo;0;L;;;;;N;;;;; +1E2AA;TOTO LETTER O;Lo;0;L;;;;;N;;;;; +1E2AB;TOTO LETTER AE;Lo;0;L;;;;;N;;;;; +1E2AC;TOTO LETTER BREATHY AE;Lo;0;L;;;;;N;;;;; +1E2AD;TOTO LETTER A;Lo;0;L;;;;;N;;;;; +1E2AE;TOTO SIGN RISING TONE;Mn;230;NSM;;;;;N;;;;; 1E2C0;WANCHO LETTER AA;Lo;0;L;;;;;N;;;;; 1E2C1;WANCHO LETTER A;Lo;0;L;;;;;N;;;;; 1E2C2;WANCHO LETTER BA;Lo;0;L;;;;;N;;;;; @@ -29839,6 +35918,120 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1E2F8;WANCHO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 1E2F9;WANCHO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 1E2FF;WANCHO NGUN SIGN;Sc;0;ET;;;;;N;;;;; +1E4D0;NAG MUNDARI LETTER O;Lo;0;L;;;;;N;;;;; +1E4D1;NAG MUNDARI LETTER OP;Lo;0;L;;;;;N;;;;; +1E4D2;NAG MUNDARI LETTER OL;Lo;0;L;;;;;N;;;;; +1E4D3;NAG MUNDARI LETTER OY;Lo;0;L;;;;;N;;;;; +1E4D4;NAG MUNDARI LETTER ONG;Lo;0;L;;;;;N;;;;; +1E4D5;NAG MUNDARI LETTER A;Lo;0;L;;;;;N;;;;; +1E4D6;NAG MUNDARI LETTER AJ;Lo;0;L;;;;;N;;;;; +1E4D7;NAG MUNDARI LETTER AB;Lo;0;L;;;;;N;;;;; +1E4D8;NAG MUNDARI LETTER ANY;Lo;0;L;;;;;N;;;;; +1E4D9;NAG MUNDARI LETTER AH;Lo;0;L;;;;;N;;;;; +1E4DA;NAG MUNDARI LETTER I;Lo;0;L;;;;;N;;;;; +1E4DB;NAG MUNDARI LETTER IS;Lo;0;L;;;;;N;;;;; +1E4DC;NAG MUNDARI LETTER IDD;Lo;0;L;;;;;N;;;;; +1E4DD;NAG MUNDARI LETTER IT;Lo;0;L;;;;;N;;;;; +1E4DE;NAG MUNDARI LETTER IH;Lo;0;L;;;;;N;;;;; +1E4DF;NAG MUNDARI LETTER U;Lo;0;L;;;;;N;;;;; +1E4E0;NAG MUNDARI LETTER UC;Lo;0;L;;;;;N;;;;; +1E4E1;NAG MUNDARI LETTER UD;Lo;0;L;;;;;N;;;;; +1E4E2;NAG MUNDARI LETTER UK;Lo;0;L;;;;;N;;;;; +1E4E3;NAG MUNDARI LETTER UR;Lo;0;L;;;;;N;;;;; +1E4E4;NAG MUNDARI LETTER E;Lo;0;L;;;;;N;;;;; +1E4E5;NAG MUNDARI LETTER ENN;Lo;0;L;;;;;N;;;;; +1E4E6;NAG MUNDARI LETTER EG;Lo;0;L;;;;;N;;;;; +1E4E7;NAG MUNDARI LETTER EM;Lo;0;L;;;;;N;;;;; +1E4E8;NAG MUNDARI LETTER EN;Lo;0;L;;;;;N;;;;; +1E4E9;NAG MUNDARI LETTER ETT;Lo;0;L;;;;;N;;;;; +1E4EA;NAG MUNDARI LETTER ELL;Lo;0;L;;;;;N;;;;; +1E4EB;NAG MUNDARI SIGN OJOD;Lm;0;L;;;;;N;;;;; +1E4EC;NAG MUNDARI SIGN MUHOR;Mn;232;NSM;;;;;N;;;;; +1E4ED;NAG MUNDARI SIGN TOYOR;Mn;232;NSM;;;;;N;;;;; +1E4EE;NAG MUNDARI SIGN IKIR;Mn;220;NSM;;;;;N;;;;; +1E4EF;NAG MUNDARI SIGN SUTUH;Mn;230;NSM;;;;;N;;;;; +1E4F0;NAG MUNDARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1E4F1;NAG MUNDARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1E4F2;NAG MUNDARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1E4F3;NAG MUNDARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1E4F4;NAG MUNDARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1E4F5;NAG MUNDARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1E4F6;NAG MUNDARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1E4F7;NAG MUNDARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1E4F8;NAG MUNDARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1E4F9;NAG MUNDARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1E5D0;OL ONAL LETTER O;Lo;0;L;;;;;N;;;;; +1E5D1;OL ONAL LETTER OM;Lo;0;L;;;;;N;;;;; +1E5D2;OL ONAL LETTER ONG;Lo;0;L;;;;;N;;;;; +1E5D3;OL ONAL LETTER ORR;Lo;0;L;;;;;N;;;;; +1E5D4;OL ONAL LETTER OO;Lo;0;L;;;;;N;;;;; +1E5D5;OL ONAL LETTER OY;Lo;0;L;;;;;N;;;;; +1E5D6;OL ONAL LETTER A;Lo;0;L;;;;;N;;;;; +1E5D7;OL ONAL LETTER AD;Lo;0;L;;;;;N;;;;; +1E5D8;OL ONAL LETTER AB;Lo;0;L;;;;;N;;;;; +1E5D9;OL ONAL LETTER AH;Lo;0;L;;;;;N;;;;; +1E5DA;OL ONAL LETTER AL;Lo;0;L;;;;;N;;;;; +1E5DB;OL ONAL LETTER AW;Lo;0;L;;;;;N;;;;; +1E5DC;OL ONAL LETTER I;Lo;0;L;;;;;N;;;;; +1E5DD;OL ONAL LETTER IT;Lo;0;L;;;;;N;;;;; +1E5DE;OL ONAL LETTER IP;Lo;0;L;;;;;N;;;;; +1E5DF;OL ONAL LETTER ITT;Lo;0;L;;;;;N;;;;; +1E5E0;OL ONAL LETTER ID;Lo;0;L;;;;;N;;;;; +1E5E1;OL ONAL LETTER IN;Lo;0;L;;;;;N;;;;; +1E5E2;OL ONAL LETTER U;Lo;0;L;;;;;N;;;;; +1E5E3;OL ONAL LETTER UK;Lo;0;L;;;;;N;;;;; +1E5E4;OL ONAL LETTER UDD;Lo;0;L;;;;;N;;;;; +1E5E5;OL ONAL LETTER UJ;Lo;0;L;;;;;N;;;;; +1E5E6;OL ONAL LETTER UNY;Lo;0;L;;;;;N;;;;; +1E5E7;OL ONAL LETTER UR;Lo;0;L;;;;;N;;;;; +1E5E8;OL ONAL LETTER E;Lo;0;L;;;;;N;;;;; +1E5E9;OL ONAL LETTER ES;Lo;0;L;;;;;N;;;;; +1E5EA;OL ONAL LETTER EH;Lo;0;L;;;;;N;;;;; +1E5EB;OL ONAL LETTER EC;Lo;0;L;;;;;N;;;;; +1E5EC;OL ONAL LETTER ENN;Lo;0;L;;;;;N;;;;; +1E5ED;OL ONAL LETTER EG;Lo;0;L;;;;;N;;;;; +1E5EE;OL ONAL SIGN MU;Mn;230;NSM;;;;;N;;;;; +1E5EF;OL ONAL SIGN IKIR;Mn;220;NSM;;;;;N;;;;; +1E5F0;OL ONAL SIGN HODDOND;Lo;0;L;;;;;N;;;;; +1E5F1;OL ONAL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1E5F2;OL ONAL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1E5F3;OL ONAL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1E5F4;OL ONAL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1E5F5;OL ONAL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1E5F6;OL ONAL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1E5F7;OL ONAL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1E5F8;OL ONAL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1E5F9;OL ONAL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1E5FA;OL ONAL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1E5FF;OL ONAL ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; +1E7E0;ETHIOPIC SYLLABLE HHYA;Lo;0;L;;;;;N;;;;; +1E7E1;ETHIOPIC SYLLABLE HHYU;Lo;0;L;;;;;N;;;;; +1E7E2;ETHIOPIC SYLLABLE HHYI;Lo;0;L;;;;;N;;;;; +1E7E3;ETHIOPIC SYLLABLE HHYAA;Lo;0;L;;;;;N;;;;; +1E7E4;ETHIOPIC SYLLABLE HHYEE;Lo;0;L;;;;;N;;;;; +1E7E5;ETHIOPIC SYLLABLE HHYE;Lo;0;L;;;;;N;;;;; +1E7E6;ETHIOPIC SYLLABLE HHYO;Lo;0;L;;;;;N;;;;; +1E7E8;ETHIOPIC SYLLABLE GURAGE HHWA;Lo;0;L;;;;;N;;;;; +1E7E9;ETHIOPIC SYLLABLE HHWI;Lo;0;L;;;;;N;;;;; +1E7EA;ETHIOPIC SYLLABLE HHWEE;Lo;0;L;;;;;N;;;;; +1E7EB;ETHIOPIC SYLLABLE HHWE;Lo;0;L;;;;;N;;;;; +1E7ED;ETHIOPIC SYLLABLE GURAGE MWI;Lo;0;L;;;;;N;;;;; +1E7EE;ETHIOPIC SYLLABLE GURAGE MWEE;Lo;0;L;;;;;N;;;;; +1E7F0;ETHIOPIC SYLLABLE GURAGE QWI;Lo;0;L;;;;;N;;;;; +1E7F1;ETHIOPIC SYLLABLE GURAGE QWEE;Lo;0;L;;;;;N;;;;; +1E7F2;ETHIOPIC SYLLABLE GURAGE QWE;Lo;0;L;;;;;N;;;;; +1E7F3;ETHIOPIC SYLLABLE GURAGE BWI;Lo;0;L;;;;;N;;;;; +1E7F4;ETHIOPIC SYLLABLE GURAGE BWEE;Lo;0;L;;;;;N;;;;; +1E7F5;ETHIOPIC SYLLABLE GURAGE KWI;Lo;0;L;;;;;N;;;;; +1E7F6;ETHIOPIC SYLLABLE GURAGE KWEE;Lo;0;L;;;;;N;;;;; +1E7F7;ETHIOPIC SYLLABLE GURAGE KWE;Lo;0;L;;;;;N;;;;; +1E7F8;ETHIOPIC SYLLABLE GURAGE GWI;Lo;0;L;;;;;N;;;;; +1E7F9;ETHIOPIC SYLLABLE GURAGE GWEE;Lo;0;L;;;;;N;;;;; +1E7FA;ETHIOPIC SYLLABLE GURAGE GWE;Lo;0;L;;;;;N;;;;; +1E7FB;ETHIOPIC SYLLABLE GURAGE FWI;Lo;0;L;;;;;N;;;;; +1E7FC;ETHIOPIC SYLLABLE GURAGE FWEE;Lo;0;L;;;;;N;;;;; +1E7FD;ETHIOPIC SYLLABLE GURAGE PWI;Lo;0;L;;;;;N;;;;; +1E7FE;ETHIOPIC SYLLABLE GURAGE PWEE;Lo;0;L;;;;;N;;;;; 1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;; 1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;; 1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;; @@ -31886,6 +38079,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F6D5;HINDU TEMPLE;So;0;ON;;;;;N;;;;; 1F6D6;HUT;So;0;ON;;;;;N;;;;; 1F6D7;ELEVATOR;So;0;ON;;;;;N;;;;; +1F6DC;WIRELESS;So;0;ON;;;;;N;;;;; +1F6DD;PLAYGROUND SLIDE;So;0;ON;;;;;N;;;;; +1F6DE;WHEEL;So;0;ON;;;;;N;;;;; +1F6DF;RING BUOY;So;0;ON;;;;;N;;;;; 1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;; 1F6E1;SHIELD;So;0;ON;;;;;N;;;;; 1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;; @@ -32028,6 +38225,14 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F771;ALCHEMICAL SYMBOL FOR MONTH;So;0;ON;;;;;N;;;;; 1F772;ALCHEMICAL SYMBOL FOR HALF DRAM;So;0;ON;;;;;N;;;;; 1F773;ALCHEMICAL SYMBOL FOR HALF OUNCE;So;0;ON;;;;;N;;;;; +1F774;LOT OF FORTUNE;So;0;ON;;;;;N;;;;; +1F775;OCCULTATION;So;0;ON;;;;;N;;;;; +1F776;LUNAR ECLIPSE;So;0;ON;;;;;N;;;;; +1F77B;HAUMEA;So;0;ON;;;;;N;;;;; +1F77C;MAKEMAKE;So;0;ON;;;;;N;;;;; +1F77D;GONGGONG;So;0;ON;;;;;N;;;;; +1F77E;QUAOAR;So;0;ON;;;;;N;;;;; +1F77F;ORCUS;So;0;ON;;;;;N;;;;; 1F780;BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; 1F781;BLACK UP-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; 1F782;BLACK RIGHT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; @@ -32117,6 +38322,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F7D6;NEGATIVE CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;; 1F7D7;CIRCLED SQUARE;So;0;ON;;;;;N;;;;; 1F7D8;NEGATIVE CIRCLED SQUARE;So;0;ON;;;;;N;;;;; +1F7D9;NINE POINTED WHITE STAR;So;0;ON;;;;;N;;;;; 1F7E0;LARGE ORANGE CIRCLE;So;0;ON;;;;;N;;;;; 1F7E1;LARGE YELLOW CIRCLE;So;0;ON;;;;;N;;;;; 1F7E2;LARGE GREEN CIRCLE;So;0;ON;;;;;N;;;;; @@ -32129,6 +38335,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F7E9;LARGE GREEN SQUARE;So;0;ON;;;;;N;;;;; 1F7EA;LARGE PURPLE SQUARE;So;0;ON;;;;;N;;;;; 1F7EB;LARGE BROWN SQUARE;So;0;ON;;;;;N;;;;; +1F7F0;HEAVY EQUALS SIGN;So;0;ON;;;;;N;;;;; 1F800;LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;; 1F801;UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;; 1F802;RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;; @@ -32279,6 +38486,18 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F8AD;WHITE ARROW SHAFT WIDTH TWO THIRDS;So;0;ON;;;;;N;;;;; 1F8B0;ARROW POINTING UPWARDS THEN NORTH WEST;So;0;ON;;;;;N;;;;; 1F8B1;ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST;So;0;ON;;;;;N;;;;; +1F8B2;RIGHTWARDS ARROW WITH LOWER HOOK;So;0;ON;;;;;N;;;;; +1F8B3;DOWNWARDS BLACK ARROW TO BAR;So;0;ON;;;;;N;;;;; +1F8B4;NEGATIVE SQUARED LEFTWARDS ARROW;So;0;ON;;;;;N;;;;; +1F8B5;NEGATIVE SQUARED UPWARDS ARROW;So;0;ON;;;;;N;;;;; +1F8B6;NEGATIVE SQUARED RIGHTWARDS ARROW;So;0;ON;;;;;N;;;;; +1F8B7;NEGATIVE SQUARED DOWNWARDS ARROW;So;0;ON;;;;;N;;;;; +1F8B8;NORTH WEST ARROW FROM BAR;So;0;ON;;;;;N;;;;; +1F8B9;NORTH EAST ARROW FROM BAR;So;0;ON;;;;;N;;;;; +1F8BA;SOUTH EAST ARROW FROM BAR;So;0;ON;;;;;N;;;;; +1F8BB;SOUTH WEST ARROW FROM BAR;So;0;ON;;;;;N;;;;; +1F8C0;LEFTWARDS ARROW FROM DOWNWARDS ARROW;So;0;ON;;;;;N;;;;; +1F8C1;RIGHTWARDS ARROW FROM DOWNWARDS ARROW;So;0;ON;;;;;N;;;;; 1F900;CIRCLED CROSS FORMEE WITH FOUR DOTS;So;0;ON;;;;;N;;;;; 1F901;CIRCLED CROSS FORMEE WITH TWO DOTS;So;0;ON;;;;;N;;;;; 1F902;CIRCLED CROSS FORMEE;So;0;ON;;;;;N;;;;; @@ -32400,6 +38619,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F976;FREEZING FACE;So;0;ON;;;;;N;;;;; 1F977;NINJA;So;0;ON;;;;;N;;;;; 1F978;DISGUISED FACE;So;0;ON;;;;;N;;;;; +1F979;FACE HOLDING BACK TEARS;So;0;ON;;;;;N;;;;; 1F97A;FACE WITH PLEADING EYES;So;0;ON;;;;;N;;;;; 1F97B;SARI;So;0;ON;;;;;N;;;;; 1F97C;LAB COAT;So;0;ON;;;;;N;;;;; @@ -32482,6 +38702,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F9C9;MATE DRINK;So;0;ON;;;;;N;;;;; 1F9CA;ICE CUBE;So;0;ON;;;;;N;;;;; 1F9CB;BUBBLE TEA;So;0;ON;;;;;N;;;;; +1F9CC;TROLL;So;0;ON;;;;;N;;;;; 1F9CD;STANDING PERSON;So;0;ON;;;;;N;;;;; 1F9CE;KNEELING PERSON;So;0;ON;;;;;N;;;;; 1F9CF;DEAF PERSON;So;0;ON;;;;;N;;;;; @@ -32636,9 +38857,14 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FA72;BRIEFS;So;0;ON;;;;;N;;;;; 1FA73;SHORTS;So;0;ON;;;;;N;;;;; 1FA74;THONG SANDAL;So;0;ON;;;;;N;;;;; +1FA75;LIGHT BLUE HEART;So;0;ON;;;;;N;;;;; +1FA76;GREY HEART;So;0;ON;;;;;N;;;;; +1FA77;PINK HEART;So;0;ON;;;;;N;;;;; 1FA78;DROP OF BLOOD;So;0;ON;;;;;N;;;;; 1FA79;ADHESIVE BANDAGE;So;0;ON;;;;;N;;;;; 1FA7A;STETHOSCOPE;So;0;ON;;;;;N;;;;; +1FA7B;X-RAY;So;0;ON;;;;;N;;;;; +1FA7C;CRUTCH;So;0;ON;;;;;N;;;;; 1FA80;YO-YO;So;0;ON;;;;;N;;;;; 1FA81;KITE;So;0;ON;;;;;N;;;;; 1FA82;PARACHUTE;So;0;ON;;;;;N;;;;; @@ -32646,6 +38872,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FA84;MAGIC WAND;So;0;ON;;;;;N;;;;; 1FA85;PINATA;So;0;ON;;;;;N;;;;; 1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;; +1FA87;MARACAS;So;0;ON;;;;;N;;;;; +1FA88;FLUTE;So;0;ON;;;;;N;;;;; +1FA89;HARP;So;0;ON;;;;;N;;;;; +1FA8F;SHOVEL;So;0;ON;;;;;N;;;;; 1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;; 1FA91;CHAIR;So;0;ON;;;;;N;;;;; 1FA92;RAZOR;So;0;ON;;;;;N;;;;; @@ -32671,6 +38901,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FAA6;HEADSTONE;So;0;ON;;;;;N;;;;; 1FAA7;PLACARD;So;0;ON;;;;;N;;;;; 1FAA8;ROCK;So;0;ON;;;;;N;;;;; +1FAA9;MIRROR BALL;So;0;ON;;;;;N;;;;; +1FAAA;IDENTIFICATION CARD;So;0;ON;;;;;N;;;;; +1FAAB;LOW BATTERY;So;0;ON;;;;;N;;;;; +1FAAC;HAMSA;So;0;ON;;;;;N;;;;; +1FAAD;FOLDING HAND FAN;So;0;ON;;;;;N;;;;; +1FAAE;HAIR PICK;So;0;ON;;;;;N;;;;; +1FAAF;KHANDA;So;0;ON;;;;;N;;;;; 1FAB0;FLY;So;0;ON;;;;;N;;;;; 1FAB1;WORM;So;0;ON;;;;;N;;;;; 1FAB2;BEETLE;So;0;ON;;;;;N;;;;; @@ -32678,9 +38915,24 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FAB4;POTTED PLANT;So;0;ON;;;;;N;;;;; 1FAB5;WOOD;So;0;ON;;;;;N;;;;; 1FAB6;FEATHER;So;0;ON;;;;;N;;;;; +1FAB7;LOTUS;So;0;ON;;;;;N;;;;; +1FAB8;CORAL;So;0;ON;;;;;N;;;;; +1FAB9;EMPTY NEST;So;0;ON;;;;;N;;;;; +1FABA;NEST WITH EGGS;So;0;ON;;;;;N;;;;; +1FABB;HYACINTH;So;0;ON;;;;;N;;;;; +1FABC;JELLYFISH;So;0;ON;;;;;N;;;;; +1FABD;WING;So;0;ON;;;;;N;;;;; +1FABE;LEAFLESS TREE;So;0;ON;;;;;N;;;;; +1FABF;GOOSE;So;0;ON;;;;;N;;;;; 1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;; 1FAC1;LUNGS;So;0;ON;;;;;N;;;;; 1FAC2;PEOPLE HUGGING;So;0;ON;;;;;N;;;;; +1FAC3;PREGNANT MAN;So;0;ON;;;;;N;;;;; +1FAC4;PREGNANT PERSON;So;0;ON;;;;;N;;;;; +1FAC5;PERSON WITH CROWN;So;0;ON;;;;;N;;;;; +1FAC6;FINGERPRINT;So;0;ON;;;;;N;;;;; +1FACE;MOOSE;So;0;ON;;;;;N;;;;; +1FACF;DONKEY;So;0;ON;;;;;N;;;;; 1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;; 1FAD1;BELL PEPPER;So;0;ON;;;;;N;;;;; 1FAD2;OLIVE;So;0;ON;;;;;N;;;;; @@ -32688,6 +38940,32 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FAD4;TAMALE;So;0;ON;;;;;N;;;;; 1FAD5;FONDUE;So;0;ON;;;;;N;;;;; 1FAD6;TEAPOT;So;0;ON;;;;;N;;;;; +1FAD7;POURING LIQUID;So;0;ON;;;;;N;;;;; +1FAD8;BEANS;So;0;ON;;;;;N;;;;; +1FAD9;JAR;So;0;ON;;;;;N;;;;; +1FADA;GINGER ROOT;So;0;ON;;;;;N;;;;; +1FADB;PEA POD;So;0;ON;;;;;N;;;;; +1FADC;ROOT VEGETABLE;So;0;ON;;;;;N;;;;; +1FADF;SPLATTER;So;0;ON;;;;;N;;;;; +1FAE0;MELTING FACE;So;0;ON;;;;;N;;;;; +1FAE1;SALUTING FACE;So;0;ON;;;;;N;;;;; +1FAE2;FACE WITH OPEN EYES AND HAND OVER MOUTH;So;0;ON;;;;;N;;;;; +1FAE3;FACE WITH PEEKING EYE;So;0;ON;;;;;N;;;;; +1FAE4;FACE WITH DIAGONAL MOUTH;So;0;ON;;;;;N;;;;; +1FAE5;DOTTED LINE FACE;So;0;ON;;;;;N;;;;; +1FAE6;BITING LIP;So;0;ON;;;;;N;;;;; +1FAE7;BUBBLES;So;0;ON;;;;;N;;;;; +1FAE8;SHAKING FACE;So;0;ON;;;;;N;;;;; +1FAE9;FACE WITH BAGS UNDER EYES;So;0;ON;;;;;N;;;;; +1FAF0;HAND WITH INDEX FINGER AND THUMB CROSSED;So;0;ON;;;;;N;;;;; +1FAF1;RIGHTWARDS HAND;So;0;ON;;;;;N;;;;; +1FAF2;LEFTWARDS HAND;So;0;ON;;;;;N;;;;; +1FAF3;PALM DOWN HAND;So;0;ON;;;;;N;;;;; +1FAF4;PALM UP HAND;So;0;ON;;;;;N;;;;; +1FAF5;INDEX POINTING AT THE VIEWER;So;0;ON;;;;;N;;;;; +1FAF6;HEART HANDS;So;0;ON;;;;;N;;;;; +1FAF7;LEFTWARDS PUSHING HAND;So;0;ON;;;;;N;;;;; +1FAF8;RIGHTWARDS PUSHING HAND;So;0;ON;;;;;N;;;;; 1FB00;BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;; 1FB01;BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;; 1FB02;BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;; @@ -32890,6 +39168,43 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FBC8;STICK FIGURE LEANING RIGHT;So;0;ON;;;;;N;;;;; 1FBC9;STICK FIGURE WITH DRESS;So;0;ON;;;;;N;;;;; 1FBCA;WHITE UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;; +1FBCB;WHITE CROSS MARK;So;0;ON;;;;;N;;;;; +1FBCC;RAISED SMALL LEFT SQUARE BRACKET;So;0;ON;;;;;N;;;;; +1FBCD;BLACK SMALL UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;; +1FBCE;LEFT TWO THIRDS BLOCK;So;0;ON;;;;;N;;;;; +1FBCF;LEFT ONE THIRD BLOCK;So;0;ON;;;;;N;;;;; +1FBD0;BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;; +1FBD1;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE LEFT;So;0;ON;;;;;N;;;;; +1FBD2;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;; +1FBD3;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FBD4;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBD5;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FBD6;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;; +1FBD7;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO LOWER LEFT;So;0;ON;;;;;N;;;;; +1FBD8;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;; +1FBD9;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FBDA;BOX DRAWINGS LIGHT DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FBDB;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO LOWER LEFT;So;0;ON;;;;;N;;;;; +1FBDC;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;; +1FBDD;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FBDE;BOX DRAWINGS LIGHT DIAGONAL LOWER LEFT TO UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;; +1FBDF;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;; +1FBE0;TOP JUSTIFIED LOWER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;; +1FBE1;RIGHT JUSTIFIED LEFT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;; +1FBE2;BOTTOM JUSTIFIED UPPER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;; +1FBE3;LEFT JUSTIFIED RIGHT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;; +1FBE4;UPPER CENTRE ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1FBE5;LOWER CENTRE ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1FBE6;MIDDLE LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1FBE7;MIDDLE RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; +1FBE8;TOP JUSTIFIED LOWER HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +1FBE9;RIGHT JUSTIFIED LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +1FBEA;BOTTOM JUSTIFIED UPPER HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +1FBEB;LEFT JUSTIFIED RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; +1FBEC;TOP RIGHT JUSTIFIED LOWER LEFT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;; +1FBED;BOTTOM LEFT JUSTIFIED UPPER RIGHT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;; +1FBEE;BOTTOM RIGHT JUSTIFIED UPPER LEFT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;; +1FBEF;TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;; 1FBF0;SEGMENTED DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; 1FBF1;SEGMENTED DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; 1FBF2;SEGMENTED DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; @@ -32901,15 +39216,17 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FBF8;SEGMENTED DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; 1FBF9;SEGMENTED DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; 20000;;Lo;0;L;;;;;N;;;;; -2A6DD;;Lo;0;L;;;;;N;;;;; +2A6DF;;Lo;0;L;;;;;N;;;;; 2A700;;Lo;0;L;;;;;N;;;;; -2B734;;Lo;0;L;;;;;N;;;;; +2B739;;Lo;0;L;;;;;N;;;;; 2B740;;Lo;0;L;;;;;N;;;;; 2B81D;;Lo;0;L;;;;;N;;;;; 2B820;;Lo;0;L;;;;;N;;;;; 2CEA1;;Lo;0;L;;;;;N;;;;; 2CEB0;;Lo;0;L;;;;;N;;;;; 2EBE0;;Lo;0;L;;;;;N;;;;; +2EBF0;;Lo;0;L;;;;;N;;;;; +2EE5D;;Lo;0;L;;;;;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;;;;; @@ -33454,6 +39771,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; 30000;;Lo;0;L;;;;;N;;;;; 3134A;;Lo;0;L;;;;;N;;;;; +31350;;Lo;0;L;;;;;N;;;;; +323AF;;Lo;0;L;;;;;N;;;;; E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; diff --git a/lib/scripts/common.py b/lib/scripts/common.py index d140796..2ef1e9b 100644 --- a/lib/scripts/common.py +++ b/lib/scripts/common.py @@ -18,22 +18,30 @@ def parse_char_range(text): end = char_range[len(char_range) - 1] + 1 return (start, end) -def read_ucd_file(scrpath, handler): - with open(scrpath, 'r') as src: +def read_ucd_file(srcpath, handler): + with open(srcpath, 'r', encoding='utf-8') as src: + line_idx = 0 for line in src: - line = line.strip() - if len(line) == 0 or line.startswith('#'): - continue - handler(line) + line_idx += 1 + try: + line = line.strip() + if len(line) == 0 or line.startswith('#'): + continue + handler(line) + except Exception as ex: + if getattr(ex, 'add_note', None): + ex.add_note(f'in {srcpath} on line {line_idx}') + raise + raise RuntimeError(f'failed to parse {srcpath} on line {line_idx}') from ex def write_file(dstpath, content): if dstpath.exists(): - with open(dstpath, 'r') as dst: + with open(dstpath, 'r', encoding='utf-8') as dst: existing = dst.read() if content == existing: dstpath.touch() return dstpath.parent.mkdir(parents=True, exist_ok=True) - with open(dstpath, 'w') as dst: + with open(dstpath, 'w', encoding='utf-8') as dst: dst.write(content) diff --git a/lib/scripts/genmappings.py b/lib/scripts/genmappings.py index 25b2791..07fce66 100644 --- a/lib/scripts/genmappings.py +++ b/lib/scripts/genmappings.py @@ -140,13 +140,15 @@ def parse_properties(line): whitespaces.append(char) def parse_derived_properties(line): - (char_range, prop) = line[:line.index('# ')].split('; ') + (char_range, props) = line[:line.index('# ')].split('; ', 1) char_range = char_range.strip() - prop = prop.strip() - prop_val = prop_values.get(prop) - if not prop_val is None: - start, end = parse_char_range(char_range) - prop_builder.add_chars(start, end, prop_val) + props = props.split('; ') + for prop in props: + prop = prop.strip() + prop_val = prop_values.get(prop) + if not prop_val is None: + start, end = parse_char_range(char_range) + prop_builder.add_chars(start, end, prop_val) def make_source_chars(char_info): diff --git a/lib/src/unicode_mappings.cpp b/lib/src/unicode_mappings.cpp index 30899dd..8f63d90 100644 --- a/lib/src/unicode_mappings.cpp +++ b/lib/src/unicode_mappings.cpp @@ -51,70 +51,74 @@ namespace sysstr::util::unicode {488 ,U'\u0552'}, {489 ,U'\u0553'}, {490 ,U'\u0554'}, {491 ,U'\u0555'}, {492 ,U'\u0556'}, {493 ,U'\u0587'}, {495 ,U'\u10A0'}, {496 ,U'\u10A1'}, {497 ,U'\u10A2'}, {498 ,U'\u10A3'}, {499 ,U'\u10A4'}, {500 ,U'\u10A5'}, {501 ,U'\u10A6'}, {502 ,U'\u10A7'}, {503 ,U'\u10A8'}, {504 ,U'\u10A9'}, {505 ,U'\u10AA'}, {506 ,U'\u10AB'}, {507 ,U'\u10AC'}, {508 ,U'\u10AD'}, {509 ,U'\u10AE'}, {510 ,U'\u10AF'}, {511 ,U'\u10B0'}, {512 ,U'\u10B1'}, {513 ,U'\u10B2'}, {514 ,U'\u10B3'}, {515 ,U'\u10B4'}, {516 ,U'\u10B5'}, {517 ,U'\u10B6'}, {518 ,U'\u10B7'}, {519 ,U'\u10B8'}, {520 ,U'\u10B9'}, {521 ,U'\u10BA'}, {522 ,U'\u10BB'}, {523 ,U'\u10BC'}, {524 ,U'\u10BD'}, {525 ,U'\u10BE'}, {526 ,U'\u10BF'}, {527 ,U'\u10C0'}, {528 ,U'\u10C1'}, {529 ,U'\u10C2'}, {530 ,U'\u10C3'}, {531 ,U'\u10C4'}, {532 ,U'\u10C5'}, {533 ,U'\u10C7'}, {534 ,U'\u10CD'}, {535 ,U'\u13F8'}, {536 ,U'\u13F9'}, - {537 ,U'\u13FA'}, {538 ,U'\u13FB'}, {539 ,U'\u13FC'}, {540 ,U'\u13FD'}, {541 ,U'\u1C80'}, {542 ,U'\u1C81'}, {543 ,U'\u1C82'}, {544 ,U'\u1C83'}, {545 ,U'\u1C84'}, {546 ,U'\u1C85'}, {547 ,U'\u1C86'}, {548 ,U'\u1C87'}, {549 ,U'\u1C88'}, {550 ,U'\u1C90'}, {551 ,U'\u1C91'}, {552 ,U'\u1C92'}, - {553 ,U'\u1C93'}, {554 ,U'\u1C94'}, {555 ,U'\u1C95'}, {556 ,U'\u1C96'}, {557 ,U'\u1C97'}, {558 ,U'\u1C98'}, {559 ,U'\u1C99'}, {560 ,U'\u1C9A'}, {561 ,U'\u1C9B'}, {562 ,U'\u1C9C'}, {563 ,U'\u1C9D'}, {564 ,U'\u1C9E'}, {565 ,U'\u1C9F'}, {566 ,U'\u1CA0'}, {567 ,U'\u1CA1'}, {568 ,U'\u1CA2'}, - {569 ,U'\u1CA3'}, {570 ,U'\u1CA4'}, {571 ,U'\u1CA5'}, {572 ,U'\u1CA6'}, {573 ,U'\u1CA7'}, {574 ,U'\u1CA8'}, {575 ,U'\u1CA9'}, {576 ,U'\u1CAA'}, {577 ,U'\u1CAB'}, {578 ,U'\u1CAC'}, {579 ,U'\u1CAD'}, {580 ,U'\u1CAE'}, {581 ,U'\u1CAF'}, {582 ,U'\u1CB0'}, {583 ,U'\u1CB1'}, {584 ,U'\u1CB2'}, - {585 ,U'\u1CB3'}, {586 ,U'\u1CB4'}, {587 ,U'\u1CB5'}, {588 ,U'\u1CB6'}, {589 ,U'\u1CB7'}, {590 ,U'\u1CB8'}, {591 ,U'\u1CB9'}, {592 ,U'\u1CBA'}, {593 ,U'\u1CBD'}, {594 ,U'\u1CBE'}, {595 ,U'\u1CBF'}, {596 ,U'\u1E00'}, {597 ,U'\u1E02'}, {598 ,U'\u1E04'}, {599 ,U'\u1E06'}, {600 ,U'\u1E08'}, - {601 ,U'\u1E0A'}, {602 ,U'\u1E0C'}, {603 ,U'\u1E0E'}, {604 ,U'\u1E10'}, {605 ,U'\u1E12'}, {606 ,U'\u1E14'}, {607 ,U'\u1E16'}, {608 ,U'\u1E18'}, {609 ,U'\u1E1A'}, {610 ,U'\u1E1C'}, {611 ,U'\u1E1E'}, {612 ,U'\u1E20'}, {613 ,U'\u1E22'}, {614 ,U'\u1E24'}, {615 ,U'\u1E26'}, {616 ,U'\u1E28'}, - {617 ,U'\u1E2A'}, {618 ,U'\u1E2C'}, {619 ,U'\u1E2E'}, {620 ,U'\u1E30'}, {621 ,U'\u1E32'}, {622 ,U'\u1E34'}, {623 ,U'\u1E36'}, {624 ,U'\u1E38'}, {625 ,U'\u1E3A'}, {626 ,U'\u1E3C'}, {627 ,U'\u1E3E'}, {628 ,U'\u1E40'}, {629 ,U'\u1E42'}, {630 ,U'\u1E44'}, {631 ,U'\u1E46'}, {632 ,U'\u1E48'}, - {633 ,U'\u1E4A'}, {634 ,U'\u1E4C'}, {635 ,U'\u1E4E'}, {636 ,U'\u1E50'}, {637 ,U'\u1E52'}, {638 ,U'\u1E54'}, {639 ,U'\u1E56'}, {640 ,U'\u1E58'}, {641 ,U'\u1E5A'}, {642 ,U'\u1E5C'}, {643 ,U'\u1E5E'}, {644 ,U'\u1E60'}, {645 ,U'\u1E62'}, {646 ,U'\u1E64'}, {647 ,U'\u1E66'}, {648 ,U'\u1E68'}, - {649 ,U'\u1E6A'}, {650 ,U'\u1E6C'}, {651 ,U'\u1E6E'}, {652 ,U'\u1E70'}, {653 ,U'\u1E72'}, {654 ,U'\u1E74'}, {655 ,U'\u1E76'}, {656 ,U'\u1E78'}, {657 ,U'\u1E7A'}, {658 ,U'\u1E7C'}, {659 ,U'\u1E7E'}, {660 ,U'\u1E80'}, {661 ,U'\u1E82'}, {662 ,U'\u1E84'}, {663 ,U'\u1E86'}, {664 ,U'\u1E88'}, - {665 ,U'\u1E8A'}, {666 ,U'\u1E8C'}, {667 ,U'\u1E8E'}, {668 ,U'\u1E90'}, {669 ,U'\u1E92'}, {670 ,U'\u1E94'}, {671 ,U'\u1E96'}, {673 ,U'\u1E97'}, {675 ,U'\u1E98'}, {677 ,U'\u1E99'}, {679 ,U'\u1E9A'}, {681 ,U'\u1E9B'}, {682 ,U'\u1E9E'}, {684 ,U'\u1EA0'}, {685 ,U'\u1EA2'}, {686 ,U'\u1EA4'}, - {687 ,U'\u1EA6'}, {688 ,U'\u1EA8'}, {689 ,U'\u1EAA'}, {690 ,U'\u1EAC'}, {691 ,U'\u1EAE'}, {692 ,U'\u1EB0'}, {693 ,U'\u1EB2'}, {694 ,U'\u1EB4'}, {695 ,U'\u1EB6'}, {696 ,U'\u1EB8'}, {697 ,U'\u1EBA'}, {698 ,U'\u1EBC'}, {699 ,U'\u1EBE'}, {700 ,U'\u1EC0'}, {701 ,U'\u1EC2'}, {702 ,U'\u1EC4'}, - {703 ,U'\u1EC6'}, {704 ,U'\u1EC8'}, {705 ,U'\u1ECA'}, {706 ,U'\u1ECC'}, {707 ,U'\u1ECE'}, {708 ,U'\u1ED0'}, {709 ,U'\u1ED2'}, {710 ,U'\u1ED4'}, {711 ,U'\u1ED6'}, {712 ,U'\u1ED8'}, {713 ,U'\u1EDA'}, {714 ,U'\u1EDC'}, {715 ,U'\u1EDE'}, {716 ,U'\u1EE0'}, {717 ,U'\u1EE2'}, {718 ,U'\u1EE4'}, - {719 ,U'\u1EE6'}, {720 ,U'\u1EE8'}, {721 ,U'\u1EEA'}, {722 ,U'\u1EEC'}, {723 ,U'\u1EEE'}, {724 ,U'\u1EF0'}, {725 ,U'\u1EF2'}, {726 ,U'\u1EF4'}, {727 ,U'\u1EF6'}, {728 ,U'\u1EF8'}, {729 ,U'\u1EFA'}, {730 ,U'\u1EFC'}, {731 ,U'\u1EFE'}, {732 ,U'\u1F08'}, {733 ,U'\u1F09'}, {734 ,U'\u1F0A'}, - {735 ,U'\u1F0B'}, {736 ,U'\u1F0C'}, {737 ,U'\u1F0D'}, {738 ,U'\u1F0E'}, {739 ,U'\u1F0F'}, {740 ,U'\u1F18'}, {741 ,U'\u1F19'}, {742 ,U'\u1F1A'}, {743 ,U'\u1F1B'}, {744 ,U'\u1F1C'}, {745 ,U'\u1F1D'}, {746 ,U'\u1F28'}, {747 ,U'\u1F29'}, {748 ,U'\u1F2A'}, {749 ,U'\u1F2B'}, {750 ,U'\u1F2C'}, - {751 ,U'\u1F2D'}, {752 ,U'\u1F2E'}, {753 ,U'\u1F2F'}, {754 ,U'\u1F38'}, {755 ,U'\u1F39'}, {756 ,U'\u1F3A'}, {757 ,U'\u1F3B'}, {758 ,U'\u1F3C'}, {759 ,U'\u1F3D'}, {760 ,U'\u1F3E'}, {761 ,U'\u1F3F'}, {762 ,U'\u1F48'}, {763 ,U'\u1F49'}, {764 ,U'\u1F4A'}, {765 ,U'\u1F4B'}, {766 ,U'\u1F4C'}, - {767 ,U'\u1F4D'}, {768 ,U'\u1F50'}, {770 ,U'\u1F52'}, {773 ,U'\u1F54'}, {776 ,U'\u1F56'}, {779 ,U'\u1F59'}, {780 ,U'\u1F5B'}, {781 ,U'\u1F5D'}, {782 ,U'\u1F5F'}, {783 ,U'\u1F68'}, {784 ,U'\u1F69'}, {785 ,U'\u1F6A'}, {786 ,U'\u1F6B'}, {787 ,U'\u1F6C'}, {788 ,U'\u1F6D'}, {789 ,U'\u1F6E'}, - {790 ,U'\u1F6F'}, {791 ,U'\u1F80'}, {793 ,U'\u1F81'}, {795 ,U'\u1F82'}, {797 ,U'\u1F83'}, {799 ,U'\u1F84'}, {801 ,U'\u1F85'}, {803 ,U'\u1F86'}, {805 ,U'\u1F87'}, {807 ,U'\u1F88'}, {809 ,U'\u1F89'}, {811 ,U'\u1F8A'}, {813 ,U'\u1F8B'}, {815 ,U'\u1F8C'}, {817 ,U'\u1F8D'}, {819 ,U'\u1F8E'}, - {821 ,U'\u1F8F'}, {823 ,U'\u1F90'}, {825 ,U'\u1F91'}, {827 ,U'\u1F92'}, {829 ,U'\u1F93'}, {831 ,U'\u1F94'}, {833 ,U'\u1F95'}, {835 ,U'\u1F96'}, {837 ,U'\u1F97'}, {839 ,U'\u1F98'}, {841 ,U'\u1F99'}, {843 ,U'\u1F9A'}, {845 ,U'\u1F9B'}, {847 ,U'\u1F9C'}, {849 ,U'\u1F9D'}, {851 ,U'\u1F9E'}, - {853 ,U'\u1F9F'}, {855 ,U'\u1FA0'}, {857 ,U'\u1FA1'}, {859 ,U'\u1FA2'}, {861 ,U'\u1FA3'}, {863 ,U'\u1FA4'}, {865 ,U'\u1FA5'}, {867 ,U'\u1FA6'}, {869 ,U'\u1FA7'}, {871 ,U'\u1FA8'}, {873 ,U'\u1FA9'}, {875 ,U'\u1FAA'}, {877 ,U'\u1FAB'}, {879 ,U'\u1FAC'}, {881 ,U'\u1FAD'}, {883 ,U'\u1FAE'}, - {885 ,U'\u1FAF'}, {887 ,U'\u1FB2'}, {889 ,U'\u1FB3'}, {891 ,U'\u1FB4'}, {893 ,U'\u1FB6'}, {895 ,U'\u1FB7'}, {898 ,U'\u1FB8'}, {899 ,U'\u1FB9'}, {900 ,U'\u1FBA'}, {901 ,U'\u1FBB'}, {902 ,U'\u1FBC'}, {904 ,U'\u1FBE'}, {905 ,U'\u1FC2'}, {907 ,U'\u1FC3'}, {909 ,U'\u1FC4'}, {911 ,U'\u1FC6'}, - {913 ,U'\u1FC7'}, {916 ,U'\u1FC8'}, {917 ,U'\u1FC9'}, {918 ,U'\u1FCA'}, {919 ,U'\u1FCB'}, {920 ,U'\u1FCC'}, {922 ,U'\u1FD2'}, {925 ,U'\u1FD3'}, {928 ,U'\u1FD6'}, {930 ,U'\u1FD7'}, {933 ,U'\u1FD8'}, {934 ,U'\u1FD9'}, {935 ,U'\u1FDA'}, {936 ,U'\u1FDB'}, {937 ,U'\u1FE2'}, {940 ,U'\u1FE3'}, - {943 ,U'\u1FE4'}, {945 ,U'\u1FE6'}, {947 ,U'\u1FE7'}, {950 ,U'\u1FE8'}, {951 ,U'\u1FE9'}, {952 ,U'\u1FEA'}, {953 ,U'\u1FEB'}, {954 ,U'\u1FEC'}, {955 ,U'\u1FF2'}, {957 ,U'\u1FF3'}, {959 ,U'\u1FF4'}, {961 ,U'\u1FF6'}, {963 ,U'\u1FF7'}, {966 ,U'\u1FF8'}, {967 ,U'\u1FF9'}, {968 ,U'\u1FFA'}, - {969 ,U'\u1FFB'}, {970 ,U'\u1FFC'}, {972 ,U'\u2126'}, {973 ,U'\u212A'}, {974 ,U'\u212B'}, {975 ,U'\u2132'}, {976 ,U'\u2160'}, {977 ,U'\u2161'}, {978 ,U'\u2162'}, {979 ,U'\u2163'}, {980 ,U'\u2164'}, {981 ,U'\u2165'}, {982 ,U'\u2166'}, {983 ,U'\u2167'}, {984 ,U'\u2168'}, {985 ,U'\u2169'}, - {986 ,U'\u216A'}, {987 ,U'\u216B'}, {988 ,U'\u216C'}, {989 ,U'\u216D'}, {990 ,U'\u216E'}, {991 ,U'\u216F'}, {992 ,U'\u2183'}, {993 ,U'\u24B6'}, {994 ,U'\u24B7'}, {995 ,U'\u24B8'}, {996 ,U'\u24B9'}, {997 ,U'\u24BA'}, {998 ,U'\u24BB'}, {999 ,U'\u24BC'}, {1000 ,U'\u24BD'}, {1001 ,U'\u24BE'}, - {1002 ,U'\u24BF'}, {1003 ,U'\u24C0'}, {1004 ,U'\u24C1'}, {1005 ,U'\u24C2'}, {1006 ,U'\u24C3'}, {1007 ,U'\u24C4'}, {1008 ,U'\u24C5'}, {1009 ,U'\u24C6'}, {1010 ,U'\u24C7'}, {1011 ,U'\u24C8'}, {1012 ,U'\u24C9'}, {1013 ,U'\u24CA'}, {1014 ,U'\u24CB'}, {1015 ,U'\u24CC'}, {1016 ,U'\u24CD'}, {1017 ,U'\u24CE'}, - {1018 ,U'\u24CF'}, {1019 ,U'\u2C00'}, {1020 ,U'\u2C01'}, {1021 ,U'\u2C02'}, {1022 ,U'\u2C03'}, {1023 ,U'\u2C04'}, {1024 ,U'\u2C05'}, {1025 ,U'\u2C06'}, {1026 ,U'\u2C07'}, {1027 ,U'\u2C08'}, {1028 ,U'\u2C09'}, {1029 ,U'\u2C0A'}, {1030 ,U'\u2C0B'}, {1031 ,U'\u2C0C'}, {1032 ,U'\u2C0D'}, {1033 ,U'\u2C0E'}, - {1034 ,U'\u2C0F'}, {1035 ,U'\u2C10'}, {1036 ,U'\u2C11'}, {1037 ,U'\u2C12'}, {1038 ,U'\u2C13'}, {1039 ,U'\u2C14'}, {1040 ,U'\u2C15'}, {1041 ,U'\u2C16'}, {1042 ,U'\u2C17'}, {1043 ,U'\u2C18'}, {1044 ,U'\u2C19'}, {1045 ,U'\u2C1A'}, {1046 ,U'\u2C1B'}, {1047 ,U'\u2C1C'}, {1048 ,U'\u2C1D'}, {1049 ,U'\u2C1E'}, - {1050 ,U'\u2C1F'}, {1051 ,U'\u2C20'}, {1052 ,U'\u2C21'}, {1053 ,U'\u2C22'}, {1054 ,U'\u2C23'}, {1055 ,U'\u2C24'}, {1056 ,U'\u2C25'}, {1057 ,U'\u2C26'}, {1058 ,U'\u2C27'}, {1059 ,U'\u2C28'}, {1060 ,U'\u2C29'}, {1061 ,U'\u2C2A'}, {1062 ,U'\u2C2B'}, {1063 ,U'\u2C2C'}, {1064 ,U'\u2C2D'}, {1065 ,U'\u2C2E'}, - {1066 ,U'\u2C60'}, {1067 ,U'\u2C62'}, {1068 ,U'\u2C63'}, {1069 ,U'\u2C64'}, {1070 ,U'\u2C67'}, {1071 ,U'\u2C69'}, {1072 ,U'\u2C6B'}, {1073 ,U'\u2C6D'}, {1074 ,U'\u2C6E'}, {1075 ,U'\u2C6F'}, {1076 ,U'\u2C70'}, {1077 ,U'\u2C72'}, {1078 ,U'\u2C75'}, {1079 ,U'\u2C7E'}, {1080 ,U'\u2C7F'}, {1081 ,U'\u2C80'}, - {1082 ,U'\u2C82'}, {1083 ,U'\u2C84'}, {1084 ,U'\u2C86'}, {1085 ,U'\u2C88'}, {1086 ,U'\u2C8A'}, {1087 ,U'\u2C8C'}, {1088 ,U'\u2C8E'}, {1089 ,U'\u2C90'}, {1090 ,U'\u2C92'}, {1091 ,U'\u2C94'}, {1092 ,U'\u2C96'}, {1093 ,U'\u2C98'}, {1094 ,U'\u2C9A'}, {1095 ,U'\u2C9C'}, {1096 ,U'\u2C9E'}, {1097 ,U'\u2CA0'}, - {1098 ,U'\u2CA2'}, {1099 ,U'\u2CA4'}, {1100 ,U'\u2CA6'}, {1101 ,U'\u2CA8'}, {1102 ,U'\u2CAA'}, {1103 ,U'\u2CAC'}, {1104 ,U'\u2CAE'}, {1105 ,U'\u2CB0'}, {1106 ,U'\u2CB2'}, {1107 ,U'\u2CB4'}, {1108 ,U'\u2CB6'}, {1109 ,U'\u2CB8'}, {1110 ,U'\u2CBA'}, {1111 ,U'\u2CBC'}, {1112 ,U'\u2CBE'}, {1113 ,U'\u2CC0'}, - {1114 ,U'\u2CC2'}, {1115 ,U'\u2CC4'}, {1116 ,U'\u2CC6'}, {1117 ,U'\u2CC8'}, {1118 ,U'\u2CCA'}, {1119 ,U'\u2CCC'}, {1120 ,U'\u2CCE'}, {1121 ,U'\u2CD0'}, {1122 ,U'\u2CD2'}, {1123 ,U'\u2CD4'}, {1124 ,U'\u2CD6'}, {1125 ,U'\u2CD8'}, {1126 ,U'\u2CDA'}, {1127 ,U'\u2CDC'}, {1128 ,U'\u2CDE'}, {1129 ,U'\u2CE0'}, - {1130 ,U'\u2CE2'}, {1131 ,U'\u2CEB'}, {1132 ,U'\u2CED'}, {1133 ,U'\u2CF2'}, {1134 ,U'\uA640'}, {1135 ,U'\uA642'}, {1136 ,U'\uA644'}, {1137 ,U'\uA646'}, {1138 ,U'\uA648'}, {1139 ,U'\uA64A'}, {1140 ,U'\uA64C'}, {1141 ,U'\uA64E'}, {1142 ,U'\uA650'}, {1143 ,U'\uA652'}, {1144 ,U'\uA654'}, {1145 ,U'\uA656'}, - {1146 ,U'\uA658'}, {1147 ,U'\uA65A'}, {1148 ,U'\uA65C'}, {1149 ,U'\uA65E'}, {1150 ,U'\uA660'}, {1151 ,U'\uA662'}, {1152 ,U'\uA664'}, {1153 ,U'\uA666'}, {1154 ,U'\uA668'}, {1155 ,U'\uA66A'}, {1156 ,U'\uA66C'}, {1157 ,U'\uA680'}, {1158 ,U'\uA682'}, {1159 ,U'\uA684'}, {1160 ,U'\uA686'}, {1161 ,U'\uA688'}, - {1162 ,U'\uA68A'}, {1163 ,U'\uA68C'}, {1164 ,U'\uA68E'}, {1165 ,U'\uA690'}, {1166 ,U'\uA692'}, {1167 ,U'\uA694'}, {1168 ,U'\uA696'}, {1169 ,U'\uA698'}, {1170 ,U'\uA69A'}, {1171 ,U'\uA722'}, {1172 ,U'\uA724'}, {1173 ,U'\uA726'}, {1174 ,U'\uA728'}, {1175 ,U'\uA72A'}, {1176 ,U'\uA72C'}, {1177 ,U'\uA72E'}, - {1178 ,U'\uA732'}, {1179 ,U'\uA734'}, {1180 ,U'\uA736'}, {1181 ,U'\uA738'}, {1182 ,U'\uA73A'}, {1183 ,U'\uA73C'}, {1184 ,U'\uA73E'}, {1185 ,U'\uA740'}, {1186 ,U'\uA742'}, {1187 ,U'\uA744'}, {1188 ,U'\uA746'}, {1189 ,U'\uA748'}, {1190 ,U'\uA74A'}, {1191 ,U'\uA74C'}, {1192 ,U'\uA74E'}, {1193 ,U'\uA750'}, - {1194 ,U'\uA752'}, {1195 ,U'\uA754'}, {1196 ,U'\uA756'}, {1197 ,U'\uA758'}, {1198 ,U'\uA75A'}, {1199 ,U'\uA75C'}, {1200 ,U'\uA75E'}, {1201 ,U'\uA760'}, {1202 ,U'\uA762'}, {1203 ,U'\uA764'}, {1204 ,U'\uA766'}, {1205 ,U'\uA768'}, {1206 ,U'\uA76A'}, {1207 ,U'\uA76C'}, {1208 ,U'\uA76E'}, {1209 ,U'\uA779'}, - {1210 ,U'\uA77B'}, {1211 ,U'\uA77D'}, {1212 ,U'\uA77E'}, {1213 ,U'\uA780'}, {1214 ,U'\uA782'}, {1215 ,U'\uA784'}, {1216 ,U'\uA786'}, {1217 ,U'\uA78B'}, {1218 ,U'\uA78D'}, {1219 ,U'\uA790'}, {1220 ,U'\uA792'}, {1221 ,U'\uA796'}, {1222 ,U'\uA798'}, {1223 ,U'\uA79A'}, {1224 ,U'\uA79C'}, {1225 ,U'\uA79E'}, - {1226 ,U'\uA7A0'}, {1227 ,U'\uA7A2'}, {1228 ,U'\uA7A4'}, {1229 ,U'\uA7A6'}, {1230 ,U'\uA7A8'}, {1231 ,U'\uA7AA'}, {1232 ,U'\uA7AB'}, {1233 ,U'\uA7AC'}, {1234 ,U'\uA7AD'}, {1235 ,U'\uA7AE'}, {1236 ,U'\uA7B0'}, {1237 ,U'\uA7B1'}, {1238 ,U'\uA7B2'}, {1239 ,U'\uA7B3'}, {1240 ,U'\uA7B4'}, {1241 ,U'\uA7B6'}, - {1242 ,U'\uA7B8'}, {1243 ,U'\uA7BA'}, {1244 ,U'\uA7BC'}, {1245 ,U'\uA7BE'}, {1246 ,U'\uA7C2'}, {1247 ,U'\uA7C4'}, {1248 ,U'\uA7C5'}, {1249 ,U'\uA7C6'}, {1250 ,U'\uA7C7'}, {1251 ,U'\uA7C9'}, {1252 ,U'\uA7F5'}, {1253 ,U'\uAB70'}, {1254 ,U'\uAB71'}, {1255 ,U'\uAB72'}, {1256 ,U'\uAB73'}, {1257 ,U'\uAB74'}, - {1258 ,U'\uAB75'}, {1259 ,U'\uAB76'}, {1260 ,U'\uAB77'}, {1261 ,U'\uAB78'}, {1262 ,U'\uAB79'}, {1263 ,U'\uAB7A'}, {1264 ,U'\uAB7B'}, {1265 ,U'\uAB7C'}, {1266 ,U'\uAB7D'}, {1267 ,U'\uAB7E'}, {1268 ,U'\uAB7F'}, {1269 ,U'\uAB80'}, {1270 ,U'\uAB81'}, {1271 ,U'\uAB82'}, {1272 ,U'\uAB83'}, {1273 ,U'\uAB84'}, - {1274 ,U'\uAB85'}, {1275 ,U'\uAB86'}, {1276 ,U'\uAB87'}, {1277 ,U'\uAB88'}, {1278 ,U'\uAB89'}, {1279 ,U'\uAB8A'}, {1280 ,U'\uAB8B'}, {1281 ,U'\uAB8C'}, {1282 ,U'\uAB8D'}, {1283 ,U'\uAB8E'}, {1284 ,U'\uAB8F'}, {1285 ,U'\uAB90'}, {1286 ,U'\uAB91'}, {1287 ,U'\uAB92'}, {1288 ,U'\uAB93'}, {1289 ,U'\uAB94'}, - {1290 ,U'\uAB95'}, {1291 ,U'\uAB96'}, {1292 ,U'\uAB97'}, {1293 ,U'\uAB98'}, {1294 ,U'\uAB99'}, {1295 ,U'\uAB9A'}, {1296 ,U'\uAB9B'}, {1297 ,U'\uAB9C'}, {1298 ,U'\uAB9D'}, {1299 ,U'\uAB9E'}, {1300 ,U'\uAB9F'}, {1301 ,U'\uABA0'}, {1302 ,U'\uABA1'}, {1303 ,U'\uABA2'}, {1304 ,U'\uABA3'}, {1305 ,U'\uABA4'}, - {1306 ,U'\uABA5'}, {1307 ,U'\uABA6'}, {1308 ,U'\uABA7'}, {1309 ,U'\uABA8'}, {1310 ,U'\uABA9'}, {1311 ,U'\uABAA'}, {1312 ,U'\uABAB'}, {1313 ,U'\uABAC'}, {1314 ,U'\uABAD'}, {1315 ,U'\uABAE'}, {1316 ,U'\uABAF'}, {1317 ,U'\uABB0'}, {1318 ,U'\uABB1'}, {1319 ,U'\uABB2'}, {1320 ,U'\uABB3'}, {1321 ,U'\uABB4'}, - {1322 ,U'\uABB5'}, {1323 ,U'\uABB6'}, {1324 ,U'\uABB7'}, {1325 ,U'\uABB8'}, {1326 ,U'\uABB9'}, {1327 ,U'\uABBA'}, {1328 ,U'\uABBB'}, {1329 ,U'\uABBC'}, {1330 ,U'\uABBD'}, {1331 ,U'\uABBE'}, {1332 ,U'\uABBF'}, {1333 ,U'\uFB00'}, {1335 ,U'\uFB01'}, {1337 ,U'\uFB02'}, {1339 ,U'\uFB03'}, {1342 ,U'\uFB04'}, - {1345 ,U'\uFB05'}, {1347 ,U'\uFB06'}, {1349 ,U'\uFB13'}, {1351 ,U'\uFB14'}, {1353 ,U'\uFB15'}, {1355 ,U'\uFB16'}, {1357 ,U'\uFB17'}, {1359 ,U'\uFF21'}, {1360 ,U'\uFF22'}, {1361 ,U'\uFF23'}, {1362 ,U'\uFF24'}, {1363 ,U'\uFF25'}, {1364 ,U'\uFF26'}, {1365 ,U'\uFF27'}, {1366 ,U'\uFF28'}, {1367 ,U'\uFF29'}, - {1368 ,U'\uFF2A'}, {1369 ,U'\uFF2B'}, {1370 ,U'\uFF2C'}, {1371 ,U'\uFF2D'}, {1372 ,U'\uFF2E'}, {1373 ,U'\uFF2F'}, {1374 ,U'\uFF30'}, {1375 ,U'\uFF31'}, {1376 ,U'\uFF32'}, {1377 ,U'\uFF33'}, {1378 ,U'\uFF34'}, {1379 ,U'\uFF35'}, {1380 ,U'\uFF36'}, {1381 ,U'\uFF37'}, {1382 ,U'\uFF38'}, {1383 ,U'\uFF39'}, - {1384 ,U'\uFF3A'}, {1385 ,U'\U00010400'}, {1387 ,U'\U00010401'}, {1389 ,U'\U00010402'}, {1391 ,U'\U00010403'}, {1393 ,U'\U00010404'}, {1395 ,U'\U00010405'}, {1397 ,U'\U00010406'}, {1399 ,U'\U00010407'}, {1401 ,U'\U00010408'}, {1403 ,U'\U00010409'}, {1405 ,U'\U0001040A'}, {1407 ,U'\U0001040B'}, {1409 ,U'\U0001040C'}, {1411 ,U'\U0001040D'}, {1413 ,U'\U0001040E'}, - {1415 ,U'\U0001040F'}, {1417 ,U'\U00010410'}, {1419 ,U'\U00010411'}, {1421 ,U'\U00010412'}, {1423 ,U'\U00010413'}, {1425 ,U'\U00010414'}, {1427 ,U'\U00010415'}, {1429 ,U'\U00010416'}, {1431 ,U'\U00010417'}, {1433 ,U'\U00010418'}, {1435 ,U'\U00010419'}, {1437 ,U'\U0001041A'}, {1439 ,U'\U0001041B'}, {1441 ,U'\U0001041C'}, {1443 ,U'\U0001041D'}, {1445 ,U'\U0001041E'}, - {1447 ,U'\U0001041F'}, {1449 ,U'\U00010420'}, {1451 ,U'\U00010421'}, {1453 ,U'\U00010422'}, {1455 ,U'\U00010423'}, {1457 ,U'\U00010424'}, {1459 ,U'\U00010425'}, {1461 ,U'\U00010426'}, {1463 ,U'\U00010427'}, {1465 ,U'\U000104B0'}, {1467 ,U'\U000104B1'}, {1469 ,U'\U000104B2'}, {1471 ,U'\U000104B3'}, {1473 ,U'\U000104B4'}, {1475 ,U'\U000104B5'}, {1477 ,U'\U000104B6'}, - {1479 ,U'\U000104B7'}, {1481 ,U'\U000104B8'}, {1483 ,U'\U000104B9'}, {1485 ,U'\U000104BA'}, {1487 ,U'\U000104BB'}, {1489 ,U'\U000104BC'}, {1491 ,U'\U000104BD'}, {1493 ,U'\U000104BE'}, {1495 ,U'\U000104BF'}, {1497 ,U'\U000104C0'}, {1499 ,U'\U000104C1'}, {1501 ,U'\U000104C2'}, {1503 ,U'\U000104C3'}, {1505 ,U'\U000104C4'}, {1507 ,U'\U000104C5'}, {1509 ,U'\U000104C6'}, - {1511 ,U'\U000104C7'}, {1513 ,U'\U000104C8'}, {1515 ,U'\U000104C9'}, {1517 ,U'\U000104CA'}, {1519 ,U'\U000104CB'}, {1521 ,U'\U000104CC'}, {1523 ,U'\U000104CD'}, {1525 ,U'\U000104CE'}, {1527 ,U'\U000104CF'}, {1529 ,U'\U000104D0'}, {1531 ,U'\U000104D1'}, {1533 ,U'\U000104D2'}, {1535 ,U'\U000104D3'}, {1537 ,U'\U00010C80'}, {1539 ,U'\U00010C81'}, {1541 ,U'\U00010C82'}, - {1543 ,U'\U00010C83'}, {1545 ,U'\U00010C84'}, {1547 ,U'\U00010C85'}, {1549 ,U'\U00010C86'}, {1551 ,U'\U00010C87'}, {1553 ,U'\U00010C88'}, {1555 ,U'\U00010C89'}, {1557 ,U'\U00010C8A'}, {1559 ,U'\U00010C8B'}, {1561 ,U'\U00010C8C'}, {1563 ,U'\U00010C8D'}, {1565 ,U'\U00010C8E'}, {1567 ,U'\U00010C8F'}, {1569 ,U'\U00010C90'}, {1571 ,U'\U00010C91'}, {1573 ,U'\U00010C92'}, - {1575 ,U'\U00010C93'}, {1577 ,U'\U00010C94'}, {1579 ,U'\U00010C95'}, {1581 ,U'\U00010C96'}, {1583 ,U'\U00010C97'}, {1585 ,U'\U00010C98'}, {1587 ,U'\U00010C99'}, {1589 ,U'\U00010C9A'}, {1591 ,U'\U00010C9B'}, {1593 ,U'\U00010C9C'}, {1595 ,U'\U00010C9D'}, {1597 ,U'\U00010C9E'}, {1599 ,U'\U00010C9F'}, {1601 ,U'\U00010CA0'}, {1603 ,U'\U00010CA1'}, {1605 ,U'\U00010CA2'}, - {1607 ,U'\U00010CA3'}, {1609 ,U'\U00010CA4'}, {1611 ,U'\U00010CA5'}, {1613 ,U'\U00010CA6'}, {1615 ,U'\U00010CA7'}, {1617 ,U'\U00010CA8'}, {1619 ,U'\U00010CA9'}, {1621 ,U'\U00010CAA'}, {1623 ,U'\U00010CAB'}, {1625 ,U'\U00010CAC'}, {1627 ,U'\U00010CAD'}, {1629 ,U'\U00010CAE'}, {1631 ,U'\U00010CAF'}, {1633 ,U'\U00010CB0'}, {1635 ,U'\U00010CB1'}, {1637 ,U'\U00010CB2'}, - {1639 ,U'\U000118A0'}, {1641 ,U'\U000118A1'}, {1643 ,U'\U000118A2'}, {1645 ,U'\U000118A3'}, {1647 ,U'\U000118A4'}, {1649 ,U'\U000118A5'}, {1651 ,U'\U000118A6'}, {1653 ,U'\U000118A7'}, {1655 ,U'\U000118A8'}, {1657 ,U'\U000118A9'}, {1659 ,U'\U000118AA'}, {1661 ,U'\U000118AB'}, {1663 ,U'\U000118AC'}, {1665 ,U'\U000118AD'}, {1667 ,U'\U000118AE'}, {1669 ,U'\U000118AF'}, - {1671 ,U'\U000118B0'}, {1673 ,U'\U000118B1'}, {1675 ,U'\U000118B2'}, {1677 ,U'\U000118B3'}, {1679 ,U'\U000118B4'}, {1681 ,U'\U000118B5'}, {1683 ,U'\U000118B6'}, {1685 ,U'\U000118B7'}, {1687 ,U'\U000118B8'}, {1689 ,U'\U000118B9'}, {1691 ,U'\U000118BA'}, {1693 ,U'\U000118BB'}, {1695 ,U'\U000118BC'}, {1697 ,U'\U000118BD'}, {1699 ,U'\U000118BE'}, {1701 ,U'\U000118BF'}, - {1703 ,U'\U00016E40'}, {1705 ,U'\U00016E41'}, {1707 ,U'\U00016E42'}, {1709 ,U'\U00016E43'}, {1711 ,U'\U00016E44'}, {1713 ,U'\U00016E45'}, {1715 ,U'\U00016E46'}, {1717 ,U'\U00016E47'}, {1719 ,U'\U00016E48'}, {1721 ,U'\U00016E49'}, {1723 ,U'\U00016E4A'}, {1725 ,U'\U00016E4B'}, {1727 ,U'\U00016E4C'}, {1729 ,U'\U00016E4D'}, {1731 ,U'\U00016E4E'}, {1733 ,U'\U00016E4F'}, - {1735 ,U'\U00016E50'}, {1737 ,U'\U00016E51'}, {1739 ,U'\U00016E52'}, {1741 ,U'\U00016E53'}, {1743 ,U'\U00016E54'}, {1745 ,U'\U00016E55'}, {1747 ,U'\U00016E56'}, {1749 ,U'\U00016E57'}, {1751 ,U'\U00016E58'}, {1753 ,U'\U00016E59'}, {1755 ,U'\U00016E5A'}, {1757 ,U'\U00016E5B'}, {1759 ,U'\U00016E5C'}, {1761 ,U'\U00016E5D'}, {1763 ,U'\U00016E5E'}, {1765 ,U'\U00016E5F'}, - {1767 ,U'\U0001E900'}, {1769 ,U'\U0001E901'}, {1771 ,U'\U0001E902'}, {1773 ,U'\U0001E903'}, {1775 ,U'\U0001E904'}, {1777 ,U'\U0001E905'}, {1779 ,U'\U0001E906'}, {1781 ,U'\U0001E907'}, {1783 ,U'\U0001E908'}, {1785 ,U'\U0001E909'}, {1787 ,U'\U0001E90A'}, {1789 ,U'\U0001E90B'}, {1791 ,U'\U0001E90C'}, {1793 ,U'\U0001E90D'}, {1795 ,U'\U0001E90E'}, {1797 ,U'\U0001E90F'}, - {1799 ,U'\U0001E910'}, {1801 ,U'\U0001E911'}, {1803 ,U'\U0001E912'}, {1805 ,U'\U0001E913'}, {1807 ,U'\U0001E914'}, {1809 ,U'\U0001E915'}, {1811 ,U'\U0001E916'}, {1813 ,U'\U0001E917'}, {1815 ,U'\U0001E918'}, {1817 ,U'\U0001E919'}, {1819 ,U'\U0001E91A'}, {1821 ,U'\U0001E91B'}, {1823 ,U'\U0001E91C'}, {1825 ,U'\U0001E91D'}, {1827 ,U'\U0001E91E'}, {1829 ,U'\U0001E91F'}, - {1831 ,U'\U0001E920'}, {1833 ,U'\U0001E921'}, {1835 , 0} + {537 ,U'\u13FA'}, {538 ,U'\u13FB'}, {539 ,U'\u13FC'}, {540 ,U'\u13FD'}, {541 ,U'\u1C80'}, {542 ,U'\u1C81'}, {543 ,U'\u1C82'}, {544 ,U'\u1C83'}, {545 ,U'\u1C84'}, {546 ,U'\u1C85'}, {547 ,U'\u1C86'}, {548 ,U'\u1C87'}, {549 ,U'\u1C88'}, {550 ,U'\u1C89'}, {551 ,U'\u1C90'}, {552 ,U'\u1C91'}, + {553 ,U'\u1C92'}, {554 ,U'\u1C93'}, {555 ,U'\u1C94'}, {556 ,U'\u1C95'}, {557 ,U'\u1C96'}, {558 ,U'\u1C97'}, {559 ,U'\u1C98'}, {560 ,U'\u1C99'}, {561 ,U'\u1C9A'}, {562 ,U'\u1C9B'}, {563 ,U'\u1C9C'}, {564 ,U'\u1C9D'}, {565 ,U'\u1C9E'}, {566 ,U'\u1C9F'}, {567 ,U'\u1CA0'}, {568 ,U'\u1CA1'}, + {569 ,U'\u1CA2'}, {570 ,U'\u1CA3'}, {571 ,U'\u1CA4'}, {572 ,U'\u1CA5'}, {573 ,U'\u1CA6'}, {574 ,U'\u1CA7'}, {575 ,U'\u1CA8'}, {576 ,U'\u1CA9'}, {577 ,U'\u1CAA'}, {578 ,U'\u1CAB'}, {579 ,U'\u1CAC'}, {580 ,U'\u1CAD'}, {581 ,U'\u1CAE'}, {582 ,U'\u1CAF'}, {583 ,U'\u1CB0'}, {584 ,U'\u1CB1'}, + {585 ,U'\u1CB2'}, {586 ,U'\u1CB3'}, {587 ,U'\u1CB4'}, {588 ,U'\u1CB5'}, {589 ,U'\u1CB6'}, {590 ,U'\u1CB7'}, {591 ,U'\u1CB8'}, {592 ,U'\u1CB9'}, {593 ,U'\u1CBA'}, {594 ,U'\u1CBD'}, {595 ,U'\u1CBE'}, {596 ,U'\u1CBF'}, {597 ,U'\u1E00'}, {598 ,U'\u1E02'}, {599 ,U'\u1E04'}, {600 ,U'\u1E06'}, + {601 ,U'\u1E08'}, {602 ,U'\u1E0A'}, {603 ,U'\u1E0C'}, {604 ,U'\u1E0E'}, {605 ,U'\u1E10'}, {606 ,U'\u1E12'}, {607 ,U'\u1E14'}, {608 ,U'\u1E16'}, {609 ,U'\u1E18'}, {610 ,U'\u1E1A'}, {611 ,U'\u1E1C'}, {612 ,U'\u1E1E'}, {613 ,U'\u1E20'}, {614 ,U'\u1E22'}, {615 ,U'\u1E24'}, {616 ,U'\u1E26'}, + {617 ,U'\u1E28'}, {618 ,U'\u1E2A'}, {619 ,U'\u1E2C'}, {620 ,U'\u1E2E'}, {621 ,U'\u1E30'}, {622 ,U'\u1E32'}, {623 ,U'\u1E34'}, {624 ,U'\u1E36'}, {625 ,U'\u1E38'}, {626 ,U'\u1E3A'}, {627 ,U'\u1E3C'}, {628 ,U'\u1E3E'}, {629 ,U'\u1E40'}, {630 ,U'\u1E42'}, {631 ,U'\u1E44'}, {632 ,U'\u1E46'}, + {633 ,U'\u1E48'}, {634 ,U'\u1E4A'}, {635 ,U'\u1E4C'}, {636 ,U'\u1E4E'}, {637 ,U'\u1E50'}, {638 ,U'\u1E52'}, {639 ,U'\u1E54'}, {640 ,U'\u1E56'}, {641 ,U'\u1E58'}, {642 ,U'\u1E5A'}, {643 ,U'\u1E5C'}, {644 ,U'\u1E5E'}, {645 ,U'\u1E60'}, {646 ,U'\u1E62'}, {647 ,U'\u1E64'}, {648 ,U'\u1E66'}, + {649 ,U'\u1E68'}, {650 ,U'\u1E6A'}, {651 ,U'\u1E6C'}, {652 ,U'\u1E6E'}, {653 ,U'\u1E70'}, {654 ,U'\u1E72'}, {655 ,U'\u1E74'}, {656 ,U'\u1E76'}, {657 ,U'\u1E78'}, {658 ,U'\u1E7A'}, {659 ,U'\u1E7C'}, {660 ,U'\u1E7E'}, {661 ,U'\u1E80'}, {662 ,U'\u1E82'}, {663 ,U'\u1E84'}, {664 ,U'\u1E86'}, + {665 ,U'\u1E88'}, {666 ,U'\u1E8A'}, {667 ,U'\u1E8C'}, {668 ,U'\u1E8E'}, {669 ,U'\u1E90'}, {670 ,U'\u1E92'}, {671 ,U'\u1E94'}, {672 ,U'\u1E96'}, {674 ,U'\u1E97'}, {676 ,U'\u1E98'}, {678 ,U'\u1E99'}, {680 ,U'\u1E9A'}, {682 ,U'\u1E9B'}, {683 ,U'\u1E9E'}, {685 ,U'\u1EA0'}, {686 ,U'\u1EA2'}, + {687 ,U'\u1EA4'}, {688 ,U'\u1EA6'}, {689 ,U'\u1EA8'}, {690 ,U'\u1EAA'}, {691 ,U'\u1EAC'}, {692 ,U'\u1EAE'}, {693 ,U'\u1EB0'}, {694 ,U'\u1EB2'}, {695 ,U'\u1EB4'}, {696 ,U'\u1EB6'}, {697 ,U'\u1EB8'}, {698 ,U'\u1EBA'}, {699 ,U'\u1EBC'}, {700 ,U'\u1EBE'}, {701 ,U'\u1EC0'}, {702 ,U'\u1EC2'}, + {703 ,U'\u1EC4'}, {704 ,U'\u1EC6'}, {705 ,U'\u1EC8'}, {706 ,U'\u1ECA'}, {707 ,U'\u1ECC'}, {708 ,U'\u1ECE'}, {709 ,U'\u1ED0'}, {710 ,U'\u1ED2'}, {711 ,U'\u1ED4'}, {712 ,U'\u1ED6'}, {713 ,U'\u1ED8'}, {714 ,U'\u1EDA'}, {715 ,U'\u1EDC'}, {716 ,U'\u1EDE'}, {717 ,U'\u1EE0'}, {718 ,U'\u1EE2'}, + {719 ,U'\u1EE4'}, {720 ,U'\u1EE6'}, {721 ,U'\u1EE8'}, {722 ,U'\u1EEA'}, {723 ,U'\u1EEC'}, {724 ,U'\u1EEE'}, {725 ,U'\u1EF0'}, {726 ,U'\u1EF2'}, {727 ,U'\u1EF4'}, {728 ,U'\u1EF6'}, {729 ,U'\u1EF8'}, {730 ,U'\u1EFA'}, {731 ,U'\u1EFC'}, {732 ,U'\u1EFE'}, {733 ,U'\u1F08'}, {734 ,U'\u1F09'}, + {735 ,U'\u1F0A'}, {736 ,U'\u1F0B'}, {737 ,U'\u1F0C'}, {738 ,U'\u1F0D'}, {739 ,U'\u1F0E'}, {740 ,U'\u1F0F'}, {741 ,U'\u1F18'}, {742 ,U'\u1F19'}, {743 ,U'\u1F1A'}, {744 ,U'\u1F1B'}, {745 ,U'\u1F1C'}, {746 ,U'\u1F1D'}, {747 ,U'\u1F28'}, {748 ,U'\u1F29'}, {749 ,U'\u1F2A'}, {750 ,U'\u1F2B'}, + {751 ,U'\u1F2C'}, {752 ,U'\u1F2D'}, {753 ,U'\u1F2E'}, {754 ,U'\u1F2F'}, {755 ,U'\u1F38'}, {756 ,U'\u1F39'}, {757 ,U'\u1F3A'}, {758 ,U'\u1F3B'}, {759 ,U'\u1F3C'}, {760 ,U'\u1F3D'}, {761 ,U'\u1F3E'}, {762 ,U'\u1F3F'}, {763 ,U'\u1F48'}, {764 ,U'\u1F49'}, {765 ,U'\u1F4A'}, {766 ,U'\u1F4B'}, + {767 ,U'\u1F4C'}, {768 ,U'\u1F4D'}, {769 ,U'\u1F50'}, {771 ,U'\u1F52'}, {774 ,U'\u1F54'}, {777 ,U'\u1F56'}, {780 ,U'\u1F59'}, {781 ,U'\u1F5B'}, {782 ,U'\u1F5D'}, {783 ,U'\u1F5F'}, {784 ,U'\u1F68'}, {785 ,U'\u1F69'}, {786 ,U'\u1F6A'}, {787 ,U'\u1F6B'}, {788 ,U'\u1F6C'}, {789 ,U'\u1F6D'}, + {790 ,U'\u1F6E'}, {791 ,U'\u1F6F'}, {792 ,U'\u1F80'}, {794 ,U'\u1F81'}, {796 ,U'\u1F82'}, {798 ,U'\u1F83'}, {800 ,U'\u1F84'}, {802 ,U'\u1F85'}, {804 ,U'\u1F86'}, {806 ,U'\u1F87'}, {808 ,U'\u1F88'}, {810 ,U'\u1F89'}, {812 ,U'\u1F8A'}, {814 ,U'\u1F8B'}, {816 ,U'\u1F8C'}, {818 ,U'\u1F8D'}, + {820 ,U'\u1F8E'}, {822 ,U'\u1F8F'}, {824 ,U'\u1F90'}, {826 ,U'\u1F91'}, {828 ,U'\u1F92'}, {830 ,U'\u1F93'}, {832 ,U'\u1F94'}, {834 ,U'\u1F95'}, {836 ,U'\u1F96'}, {838 ,U'\u1F97'}, {840 ,U'\u1F98'}, {842 ,U'\u1F99'}, {844 ,U'\u1F9A'}, {846 ,U'\u1F9B'}, {848 ,U'\u1F9C'}, {850 ,U'\u1F9D'}, + {852 ,U'\u1F9E'}, {854 ,U'\u1F9F'}, {856 ,U'\u1FA0'}, {858 ,U'\u1FA1'}, {860 ,U'\u1FA2'}, {862 ,U'\u1FA3'}, {864 ,U'\u1FA4'}, {866 ,U'\u1FA5'}, {868 ,U'\u1FA6'}, {870 ,U'\u1FA7'}, {872 ,U'\u1FA8'}, {874 ,U'\u1FA9'}, {876 ,U'\u1FAA'}, {878 ,U'\u1FAB'}, {880 ,U'\u1FAC'}, {882 ,U'\u1FAD'}, + {884 ,U'\u1FAE'}, {886 ,U'\u1FAF'}, {888 ,U'\u1FB2'}, {890 ,U'\u1FB3'}, {892 ,U'\u1FB4'}, {894 ,U'\u1FB6'}, {896 ,U'\u1FB7'}, {899 ,U'\u1FB8'}, {900 ,U'\u1FB9'}, {901 ,U'\u1FBA'}, {902 ,U'\u1FBB'}, {903 ,U'\u1FBC'}, {905 ,U'\u1FBE'}, {906 ,U'\u1FC2'}, {908 ,U'\u1FC3'}, {910 ,U'\u1FC4'}, + {912 ,U'\u1FC6'}, {914 ,U'\u1FC7'}, {917 ,U'\u1FC8'}, {918 ,U'\u1FC9'}, {919 ,U'\u1FCA'}, {920 ,U'\u1FCB'}, {921 ,U'\u1FCC'}, {923 ,U'\u1FD2'}, {926 ,U'\u1FD3'}, {929 ,U'\u1FD6'}, {931 ,U'\u1FD7'}, {934 ,U'\u1FD8'}, {935 ,U'\u1FD9'}, {936 ,U'\u1FDA'}, {937 ,U'\u1FDB'}, {938 ,U'\u1FE2'}, + {941 ,U'\u1FE3'}, {944 ,U'\u1FE4'}, {946 ,U'\u1FE6'}, {948 ,U'\u1FE7'}, {951 ,U'\u1FE8'}, {952 ,U'\u1FE9'}, {953 ,U'\u1FEA'}, {954 ,U'\u1FEB'}, {955 ,U'\u1FEC'}, {956 ,U'\u1FF2'}, {958 ,U'\u1FF3'}, {960 ,U'\u1FF4'}, {962 ,U'\u1FF6'}, {964 ,U'\u1FF7'}, {967 ,U'\u1FF8'}, {968 ,U'\u1FF9'}, + {969 ,U'\u1FFA'}, {970 ,U'\u1FFB'}, {971 ,U'\u1FFC'}, {973 ,U'\u2126'}, {974 ,U'\u212A'}, {975 ,U'\u212B'}, {976 ,U'\u2132'}, {977 ,U'\u2160'}, {978 ,U'\u2161'}, {979 ,U'\u2162'}, {980 ,U'\u2163'}, {981 ,U'\u2164'}, {982 ,U'\u2165'}, {983 ,U'\u2166'}, {984 ,U'\u2167'}, {985 ,U'\u2168'}, + {986 ,U'\u2169'}, {987 ,U'\u216A'}, {988 ,U'\u216B'}, {989 ,U'\u216C'}, {990 ,U'\u216D'}, {991 ,U'\u216E'}, {992 ,U'\u216F'}, {993 ,U'\u2183'}, {994 ,U'\u24B6'}, {995 ,U'\u24B7'}, {996 ,U'\u24B8'}, {997 ,U'\u24B9'}, {998 ,U'\u24BA'}, {999 ,U'\u24BB'}, {1000 ,U'\u24BC'}, {1001 ,U'\u24BD'}, + {1002 ,U'\u24BE'}, {1003 ,U'\u24BF'}, {1004 ,U'\u24C0'}, {1005 ,U'\u24C1'}, {1006 ,U'\u24C2'}, {1007 ,U'\u24C3'}, {1008 ,U'\u24C4'}, {1009 ,U'\u24C5'}, {1010 ,U'\u24C6'}, {1011 ,U'\u24C7'}, {1012 ,U'\u24C8'}, {1013 ,U'\u24C9'}, {1014 ,U'\u24CA'}, {1015 ,U'\u24CB'}, {1016 ,U'\u24CC'}, {1017 ,U'\u24CD'}, + {1018 ,U'\u24CE'}, {1019 ,U'\u24CF'}, {1020 ,U'\u2C00'}, {1021 ,U'\u2C01'}, {1022 ,U'\u2C02'}, {1023 ,U'\u2C03'}, {1024 ,U'\u2C04'}, {1025 ,U'\u2C05'}, {1026 ,U'\u2C06'}, {1027 ,U'\u2C07'}, {1028 ,U'\u2C08'}, {1029 ,U'\u2C09'}, {1030 ,U'\u2C0A'}, {1031 ,U'\u2C0B'}, {1032 ,U'\u2C0C'}, {1033 ,U'\u2C0D'}, + {1034 ,U'\u2C0E'}, {1035 ,U'\u2C0F'}, {1036 ,U'\u2C10'}, {1037 ,U'\u2C11'}, {1038 ,U'\u2C12'}, {1039 ,U'\u2C13'}, {1040 ,U'\u2C14'}, {1041 ,U'\u2C15'}, {1042 ,U'\u2C16'}, {1043 ,U'\u2C17'}, {1044 ,U'\u2C18'}, {1045 ,U'\u2C19'}, {1046 ,U'\u2C1A'}, {1047 ,U'\u2C1B'}, {1048 ,U'\u2C1C'}, {1049 ,U'\u2C1D'}, + {1050 ,U'\u2C1E'}, {1051 ,U'\u2C1F'}, {1052 ,U'\u2C20'}, {1053 ,U'\u2C21'}, {1054 ,U'\u2C22'}, {1055 ,U'\u2C23'}, {1056 ,U'\u2C24'}, {1057 ,U'\u2C25'}, {1058 ,U'\u2C26'}, {1059 ,U'\u2C27'}, {1060 ,U'\u2C28'}, {1061 ,U'\u2C29'}, {1062 ,U'\u2C2A'}, {1063 ,U'\u2C2B'}, {1064 ,U'\u2C2C'}, {1065 ,U'\u2C2D'}, + {1066 ,U'\u2C2E'}, {1067 ,U'\u2C2F'}, {1068 ,U'\u2C60'}, {1069 ,U'\u2C62'}, {1070 ,U'\u2C63'}, {1071 ,U'\u2C64'}, {1072 ,U'\u2C67'}, {1073 ,U'\u2C69'}, {1074 ,U'\u2C6B'}, {1075 ,U'\u2C6D'}, {1076 ,U'\u2C6E'}, {1077 ,U'\u2C6F'}, {1078 ,U'\u2C70'}, {1079 ,U'\u2C72'}, {1080 ,U'\u2C75'}, {1081 ,U'\u2C7E'}, + {1082 ,U'\u2C7F'}, {1083 ,U'\u2C80'}, {1084 ,U'\u2C82'}, {1085 ,U'\u2C84'}, {1086 ,U'\u2C86'}, {1087 ,U'\u2C88'}, {1088 ,U'\u2C8A'}, {1089 ,U'\u2C8C'}, {1090 ,U'\u2C8E'}, {1091 ,U'\u2C90'}, {1092 ,U'\u2C92'}, {1093 ,U'\u2C94'}, {1094 ,U'\u2C96'}, {1095 ,U'\u2C98'}, {1096 ,U'\u2C9A'}, {1097 ,U'\u2C9C'}, + {1098 ,U'\u2C9E'}, {1099 ,U'\u2CA0'}, {1100 ,U'\u2CA2'}, {1101 ,U'\u2CA4'}, {1102 ,U'\u2CA6'}, {1103 ,U'\u2CA8'}, {1104 ,U'\u2CAA'}, {1105 ,U'\u2CAC'}, {1106 ,U'\u2CAE'}, {1107 ,U'\u2CB0'}, {1108 ,U'\u2CB2'}, {1109 ,U'\u2CB4'}, {1110 ,U'\u2CB6'}, {1111 ,U'\u2CB8'}, {1112 ,U'\u2CBA'}, {1113 ,U'\u2CBC'}, + {1114 ,U'\u2CBE'}, {1115 ,U'\u2CC0'}, {1116 ,U'\u2CC2'}, {1117 ,U'\u2CC4'}, {1118 ,U'\u2CC6'}, {1119 ,U'\u2CC8'}, {1120 ,U'\u2CCA'}, {1121 ,U'\u2CCC'}, {1122 ,U'\u2CCE'}, {1123 ,U'\u2CD0'}, {1124 ,U'\u2CD2'}, {1125 ,U'\u2CD4'}, {1126 ,U'\u2CD6'}, {1127 ,U'\u2CD8'}, {1128 ,U'\u2CDA'}, {1129 ,U'\u2CDC'}, + {1130 ,U'\u2CDE'}, {1131 ,U'\u2CE0'}, {1132 ,U'\u2CE2'}, {1133 ,U'\u2CEB'}, {1134 ,U'\u2CED'}, {1135 ,U'\u2CF2'}, {1136 ,U'\uA640'}, {1137 ,U'\uA642'}, {1138 ,U'\uA644'}, {1139 ,U'\uA646'}, {1140 ,U'\uA648'}, {1141 ,U'\uA64A'}, {1142 ,U'\uA64C'}, {1143 ,U'\uA64E'}, {1144 ,U'\uA650'}, {1145 ,U'\uA652'}, + {1146 ,U'\uA654'}, {1147 ,U'\uA656'}, {1148 ,U'\uA658'}, {1149 ,U'\uA65A'}, {1150 ,U'\uA65C'}, {1151 ,U'\uA65E'}, {1152 ,U'\uA660'}, {1153 ,U'\uA662'}, {1154 ,U'\uA664'}, {1155 ,U'\uA666'}, {1156 ,U'\uA668'}, {1157 ,U'\uA66A'}, {1158 ,U'\uA66C'}, {1159 ,U'\uA680'}, {1160 ,U'\uA682'}, {1161 ,U'\uA684'}, + {1162 ,U'\uA686'}, {1163 ,U'\uA688'}, {1164 ,U'\uA68A'}, {1165 ,U'\uA68C'}, {1166 ,U'\uA68E'}, {1167 ,U'\uA690'}, {1168 ,U'\uA692'}, {1169 ,U'\uA694'}, {1170 ,U'\uA696'}, {1171 ,U'\uA698'}, {1172 ,U'\uA69A'}, {1173 ,U'\uA722'}, {1174 ,U'\uA724'}, {1175 ,U'\uA726'}, {1176 ,U'\uA728'}, {1177 ,U'\uA72A'}, + {1178 ,U'\uA72C'}, {1179 ,U'\uA72E'}, {1180 ,U'\uA732'}, {1181 ,U'\uA734'}, {1182 ,U'\uA736'}, {1183 ,U'\uA738'}, {1184 ,U'\uA73A'}, {1185 ,U'\uA73C'}, {1186 ,U'\uA73E'}, {1187 ,U'\uA740'}, {1188 ,U'\uA742'}, {1189 ,U'\uA744'}, {1190 ,U'\uA746'}, {1191 ,U'\uA748'}, {1192 ,U'\uA74A'}, {1193 ,U'\uA74C'}, + {1194 ,U'\uA74E'}, {1195 ,U'\uA750'}, {1196 ,U'\uA752'}, {1197 ,U'\uA754'}, {1198 ,U'\uA756'}, {1199 ,U'\uA758'}, {1200 ,U'\uA75A'}, {1201 ,U'\uA75C'}, {1202 ,U'\uA75E'}, {1203 ,U'\uA760'}, {1204 ,U'\uA762'}, {1205 ,U'\uA764'}, {1206 ,U'\uA766'}, {1207 ,U'\uA768'}, {1208 ,U'\uA76A'}, {1209 ,U'\uA76C'}, + {1210 ,U'\uA76E'}, {1211 ,U'\uA779'}, {1212 ,U'\uA77B'}, {1213 ,U'\uA77D'}, {1214 ,U'\uA77E'}, {1215 ,U'\uA780'}, {1216 ,U'\uA782'}, {1217 ,U'\uA784'}, {1218 ,U'\uA786'}, {1219 ,U'\uA78B'}, {1220 ,U'\uA78D'}, {1221 ,U'\uA790'}, {1222 ,U'\uA792'}, {1223 ,U'\uA796'}, {1224 ,U'\uA798'}, {1225 ,U'\uA79A'}, + {1226 ,U'\uA79C'}, {1227 ,U'\uA79E'}, {1228 ,U'\uA7A0'}, {1229 ,U'\uA7A2'}, {1230 ,U'\uA7A4'}, {1231 ,U'\uA7A6'}, {1232 ,U'\uA7A8'}, {1233 ,U'\uA7AA'}, {1234 ,U'\uA7AB'}, {1235 ,U'\uA7AC'}, {1236 ,U'\uA7AD'}, {1237 ,U'\uA7AE'}, {1238 ,U'\uA7B0'}, {1239 ,U'\uA7B1'}, {1240 ,U'\uA7B2'}, {1241 ,U'\uA7B3'}, + {1242 ,U'\uA7B4'}, {1243 ,U'\uA7B6'}, {1244 ,U'\uA7B8'}, {1245 ,U'\uA7BA'}, {1246 ,U'\uA7BC'}, {1247 ,U'\uA7BE'}, {1248 ,U'\uA7C0'}, {1249 ,U'\uA7C2'}, {1250 ,U'\uA7C4'}, {1251 ,U'\uA7C5'}, {1252 ,U'\uA7C6'}, {1253 ,U'\uA7C7'}, {1254 ,U'\uA7C9'}, {1255 ,U'\uA7CB'}, {1256 ,U'\uA7CC'}, {1257 ,U'\uA7D0'}, + {1258 ,U'\uA7D6'}, {1259 ,U'\uA7D8'}, {1260 ,U'\uA7DA'}, {1261 ,U'\uA7DC'}, {1262 ,U'\uA7F5'}, {1263 ,U'\uAB70'}, {1264 ,U'\uAB71'}, {1265 ,U'\uAB72'}, {1266 ,U'\uAB73'}, {1267 ,U'\uAB74'}, {1268 ,U'\uAB75'}, {1269 ,U'\uAB76'}, {1270 ,U'\uAB77'}, {1271 ,U'\uAB78'}, {1272 ,U'\uAB79'}, {1273 ,U'\uAB7A'}, + {1274 ,U'\uAB7B'}, {1275 ,U'\uAB7C'}, {1276 ,U'\uAB7D'}, {1277 ,U'\uAB7E'}, {1278 ,U'\uAB7F'}, {1279 ,U'\uAB80'}, {1280 ,U'\uAB81'}, {1281 ,U'\uAB82'}, {1282 ,U'\uAB83'}, {1283 ,U'\uAB84'}, {1284 ,U'\uAB85'}, {1285 ,U'\uAB86'}, {1286 ,U'\uAB87'}, {1287 ,U'\uAB88'}, {1288 ,U'\uAB89'}, {1289 ,U'\uAB8A'}, + {1290 ,U'\uAB8B'}, {1291 ,U'\uAB8C'}, {1292 ,U'\uAB8D'}, {1293 ,U'\uAB8E'}, {1294 ,U'\uAB8F'}, {1295 ,U'\uAB90'}, {1296 ,U'\uAB91'}, {1297 ,U'\uAB92'}, {1298 ,U'\uAB93'}, {1299 ,U'\uAB94'}, {1300 ,U'\uAB95'}, {1301 ,U'\uAB96'}, {1302 ,U'\uAB97'}, {1303 ,U'\uAB98'}, {1304 ,U'\uAB99'}, {1305 ,U'\uAB9A'}, + {1306 ,U'\uAB9B'}, {1307 ,U'\uAB9C'}, {1308 ,U'\uAB9D'}, {1309 ,U'\uAB9E'}, {1310 ,U'\uAB9F'}, {1311 ,U'\uABA0'}, {1312 ,U'\uABA1'}, {1313 ,U'\uABA2'}, {1314 ,U'\uABA3'}, {1315 ,U'\uABA4'}, {1316 ,U'\uABA5'}, {1317 ,U'\uABA6'}, {1318 ,U'\uABA7'}, {1319 ,U'\uABA8'}, {1320 ,U'\uABA9'}, {1321 ,U'\uABAA'}, + {1322 ,U'\uABAB'}, {1323 ,U'\uABAC'}, {1324 ,U'\uABAD'}, {1325 ,U'\uABAE'}, {1326 ,U'\uABAF'}, {1327 ,U'\uABB0'}, {1328 ,U'\uABB1'}, {1329 ,U'\uABB2'}, {1330 ,U'\uABB3'}, {1331 ,U'\uABB4'}, {1332 ,U'\uABB5'}, {1333 ,U'\uABB6'}, {1334 ,U'\uABB7'}, {1335 ,U'\uABB8'}, {1336 ,U'\uABB9'}, {1337 ,U'\uABBA'}, + {1338 ,U'\uABBB'}, {1339 ,U'\uABBC'}, {1340 ,U'\uABBD'}, {1341 ,U'\uABBE'}, {1342 ,U'\uABBF'}, {1343 ,U'\uFB00'}, {1345 ,U'\uFB01'}, {1347 ,U'\uFB02'}, {1349 ,U'\uFB03'}, {1352 ,U'\uFB04'}, {1355 ,U'\uFB05'}, {1357 ,U'\uFB06'}, {1359 ,U'\uFB13'}, {1361 ,U'\uFB14'}, {1363 ,U'\uFB15'}, {1365 ,U'\uFB16'}, + {1367 ,U'\uFB17'}, {1369 ,U'\uFF21'}, {1370 ,U'\uFF22'}, {1371 ,U'\uFF23'}, {1372 ,U'\uFF24'}, {1373 ,U'\uFF25'}, {1374 ,U'\uFF26'}, {1375 ,U'\uFF27'}, {1376 ,U'\uFF28'}, {1377 ,U'\uFF29'}, {1378 ,U'\uFF2A'}, {1379 ,U'\uFF2B'}, {1380 ,U'\uFF2C'}, {1381 ,U'\uFF2D'}, {1382 ,U'\uFF2E'}, {1383 ,U'\uFF2F'}, + {1384 ,U'\uFF30'}, {1385 ,U'\uFF31'}, {1386 ,U'\uFF32'}, {1387 ,U'\uFF33'}, {1388 ,U'\uFF34'}, {1389 ,U'\uFF35'}, {1390 ,U'\uFF36'}, {1391 ,U'\uFF37'}, {1392 ,U'\uFF38'}, {1393 ,U'\uFF39'}, {1394 ,U'\uFF3A'}, {1395 ,U'\U00010400'}, {1397 ,U'\U00010401'}, {1399 ,U'\U00010402'}, {1401 ,U'\U00010403'}, {1403 ,U'\U00010404'}, + {1405 ,U'\U00010405'}, {1407 ,U'\U00010406'}, {1409 ,U'\U00010407'}, {1411 ,U'\U00010408'}, {1413 ,U'\U00010409'}, {1415 ,U'\U0001040A'}, {1417 ,U'\U0001040B'}, {1419 ,U'\U0001040C'}, {1421 ,U'\U0001040D'}, {1423 ,U'\U0001040E'}, {1425 ,U'\U0001040F'}, {1427 ,U'\U00010410'}, {1429 ,U'\U00010411'}, {1431 ,U'\U00010412'}, {1433 ,U'\U00010413'}, {1435 ,U'\U00010414'}, + {1437 ,U'\U00010415'}, {1439 ,U'\U00010416'}, {1441 ,U'\U00010417'}, {1443 ,U'\U00010418'}, {1445 ,U'\U00010419'}, {1447 ,U'\U0001041A'}, {1449 ,U'\U0001041B'}, {1451 ,U'\U0001041C'}, {1453 ,U'\U0001041D'}, {1455 ,U'\U0001041E'}, {1457 ,U'\U0001041F'}, {1459 ,U'\U00010420'}, {1461 ,U'\U00010421'}, {1463 ,U'\U00010422'}, {1465 ,U'\U00010423'}, {1467 ,U'\U00010424'}, + {1469 ,U'\U00010425'}, {1471 ,U'\U00010426'}, {1473 ,U'\U00010427'}, {1475 ,U'\U000104B0'}, {1477 ,U'\U000104B1'}, {1479 ,U'\U000104B2'}, {1481 ,U'\U000104B3'}, {1483 ,U'\U000104B4'}, {1485 ,U'\U000104B5'}, {1487 ,U'\U000104B6'}, {1489 ,U'\U000104B7'}, {1491 ,U'\U000104B8'}, {1493 ,U'\U000104B9'}, {1495 ,U'\U000104BA'}, {1497 ,U'\U000104BB'}, {1499 ,U'\U000104BC'}, + {1501 ,U'\U000104BD'}, {1503 ,U'\U000104BE'}, {1505 ,U'\U000104BF'}, {1507 ,U'\U000104C0'}, {1509 ,U'\U000104C1'}, {1511 ,U'\U000104C2'}, {1513 ,U'\U000104C3'}, {1515 ,U'\U000104C4'}, {1517 ,U'\U000104C5'}, {1519 ,U'\U000104C6'}, {1521 ,U'\U000104C7'}, {1523 ,U'\U000104C8'}, {1525 ,U'\U000104C9'}, {1527 ,U'\U000104CA'}, {1529 ,U'\U000104CB'}, {1531 ,U'\U000104CC'}, + {1533 ,U'\U000104CD'}, {1535 ,U'\U000104CE'}, {1537 ,U'\U000104CF'}, {1539 ,U'\U000104D0'}, {1541 ,U'\U000104D1'}, {1543 ,U'\U000104D2'}, {1545 ,U'\U000104D3'}, {1547 ,U'\U00010570'}, {1549 ,U'\U00010571'}, {1551 ,U'\U00010572'}, {1553 ,U'\U00010573'}, {1555 ,U'\U00010574'}, {1557 ,U'\U00010575'}, {1559 ,U'\U00010576'}, {1561 ,U'\U00010577'}, {1563 ,U'\U00010578'}, + {1565 ,U'\U00010579'}, {1567 ,U'\U0001057A'}, {1569 ,U'\U0001057C'}, {1571 ,U'\U0001057D'}, {1573 ,U'\U0001057E'}, {1575 ,U'\U0001057F'}, {1577 ,U'\U00010580'}, {1579 ,U'\U00010581'}, {1581 ,U'\U00010582'}, {1583 ,U'\U00010583'}, {1585 ,U'\U00010584'}, {1587 ,U'\U00010585'}, {1589 ,U'\U00010586'}, {1591 ,U'\U00010587'}, {1593 ,U'\U00010588'}, {1595 ,U'\U00010589'}, + {1597 ,U'\U0001058A'}, {1599 ,U'\U0001058C'}, {1601 ,U'\U0001058D'}, {1603 ,U'\U0001058E'}, {1605 ,U'\U0001058F'}, {1607 ,U'\U00010590'}, {1609 ,U'\U00010591'}, {1611 ,U'\U00010592'}, {1613 ,U'\U00010594'}, {1615 ,U'\U00010595'}, {1617 ,U'\U00010C80'}, {1619 ,U'\U00010C81'}, {1621 ,U'\U00010C82'}, {1623 ,U'\U00010C83'}, {1625 ,U'\U00010C84'}, {1627 ,U'\U00010C85'}, + {1629 ,U'\U00010C86'}, {1631 ,U'\U00010C87'}, {1633 ,U'\U00010C88'}, {1635 ,U'\U00010C89'}, {1637 ,U'\U00010C8A'}, {1639 ,U'\U00010C8B'}, {1641 ,U'\U00010C8C'}, {1643 ,U'\U00010C8D'}, {1645 ,U'\U00010C8E'}, {1647 ,U'\U00010C8F'}, {1649 ,U'\U00010C90'}, {1651 ,U'\U00010C91'}, {1653 ,U'\U00010C92'}, {1655 ,U'\U00010C93'}, {1657 ,U'\U00010C94'}, {1659 ,U'\U00010C95'}, + {1661 ,U'\U00010C96'}, {1663 ,U'\U00010C97'}, {1665 ,U'\U00010C98'}, {1667 ,U'\U00010C99'}, {1669 ,U'\U00010C9A'}, {1671 ,U'\U00010C9B'}, {1673 ,U'\U00010C9C'}, {1675 ,U'\U00010C9D'}, {1677 ,U'\U00010C9E'}, {1679 ,U'\U00010C9F'}, {1681 ,U'\U00010CA0'}, {1683 ,U'\U00010CA1'}, {1685 ,U'\U00010CA2'}, {1687 ,U'\U00010CA3'}, {1689 ,U'\U00010CA4'}, {1691 ,U'\U00010CA5'}, + {1693 ,U'\U00010CA6'}, {1695 ,U'\U00010CA7'}, {1697 ,U'\U00010CA8'}, {1699 ,U'\U00010CA9'}, {1701 ,U'\U00010CAA'}, {1703 ,U'\U00010CAB'}, {1705 ,U'\U00010CAC'}, {1707 ,U'\U00010CAD'}, {1709 ,U'\U00010CAE'}, {1711 ,U'\U00010CAF'}, {1713 ,U'\U00010CB0'}, {1715 ,U'\U00010CB1'}, {1717 ,U'\U00010CB2'}, {1719 ,U'\U00010D50'}, {1721 ,U'\U00010D51'}, {1723 ,U'\U00010D52'}, + {1725 ,U'\U00010D53'}, {1727 ,U'\U00010D54'}, {1729 ,U'\U00010D55'}, {1731 ,U'\U00010D56'}, {1733 ,U'\U00010D57'}, {1735 ,U'\U00010D58'}, {1737 ,U'\U00010D59'}, {1739 ,U'\U00010D5A'}, {1741 ,U'\U00010D5B'}, {1743 ,U'\U00010D5C'}, {1745 ,U'\U00010D5D'}, {1747 ,U'\U00010D5E'}, {1749 ,U'\U00010D5F'}, {1751 ,U'\U00010D60'}, {1753 ,U'\U00010D61'}, {1755 ,U'\U00010D62'}, + {1757 ,U'\U00010D63'}, {1759 ,U'\U00010D64'}, {1761 ,U'\U00010D65'}, {1763 ,U'\U000118A0'}, {1765 ,U'\U000118A1'}, {1767 ,U'\U000118A2'}, {1769 ,U'\U000118A3'}, {1771 ,U'\U000118A4'}, {1773 ,U'\U000118A5'}, {1775 ,U'\U000118A6'}, {1777 ,U'\U000118A7'}, {1779 ,U'\U000118A8'}, {1781 ,U'\U000118A9'}, {1783 ,U'\U000118AA'}, {1785 ,U'\U000118AB'}, {1787 ,U'\U000118AC'}, + {1789 ,U'\U000118AD'}, {1791 ,U'\U000118AE'}, {1793 ,U'\U000118AF'}, {1795 ,U'\U000118B0'}, {1797 ,U'\U000118B1'}, {1799 ,U'\U000118B2'}, {1801 ,U'\U000118B3'}, {1803 ,U'\U000118B4'}, {1805 ,U'\U000118B5'}, {1807 ,U'\U000118B6'}, {1809 ,U'\U000118B7'}, {1811 ,U'\U000118B8'}, {1813 ,U'\U000118B9'}, {1815 ,U'\U000118BA'}, {1817 ,U'\U000118BB'}, {1819 ,U'\U000118BC'}, + {1821 ,U'\U000118BD'}, {1823 ,U'\U000118BE'}, {1825 ,U'\U000118BF'}, {1827 ,U'\U00016E40'}, {1829 ,U'\U00016E41'}, {1831 ,U'\U00016E42'}, {1833 ,U'\U00016E43'}, {1835 ,U'\U00016E44'}, {1837 ,U'\U00016E45'}, {1839 ,U'\U00016E46'}, {1841 ,U'\U00016E47'}, {1843 ,U'\U00016E48'}, {1845 ,U'\U00016E49'}, {1847 ,U'\U00016E4A'}, {1849 ,U'\U00016E4B'}, {1851 ,U'\U00016E4C'}, + {1853 ,U'\U00016E4D'}, {1855 ,U'\U00016E4E'}, {1857 ,U'\U00016E4F'}, {1859 ,U'\U00016E50'}, {1861 ,U'\U00016E51'}, {1863 ,U'\U00016E52'}, {1865 ,U'\U00016E53'}, {1867 ,U'\U00016E54'}, {1869 ,U'\U00016E55'}, {1871 ,U'\U00016E56'}, {1873 ,U'\U00016E57'}, {1875 ,U'\U00016E58'}, {1877 ,U'\U00016E59'}, {1879 ,U'\U00016E5A'}, {1881 ,U'\U00016E5B'}, {1883 ,U'\U00016E5C'}, + {1885 ,U'\U00016E5D'}, {1887 ,U'\U00016E5E'}, {1889 ,U'\U00016E5F'}, {1891 ,U'\U0001E900'}, {1893 ,U'\U0001E901'}, {1895 ,U'\U0001E902'}, {1897 ,U'\U0001E903'}, {1899 ,U'\U0001E904'}, {1901 ,U'\U0001E905'}, {1903 ,U'\U0001E906'}, {1905 ,U'\U0001E907'}, {1907 ,U'\U0001E908'}, {1909 ,U'\U0001E909'}, {1911 ,U'\U0001E90A'}, {1913 ,U'\U0001E90B'}, {1915 ,U'\U0001E90C'}, + {1917 ,U'\U0001E90D'}, {1919 ,U'\U0001E90E'}, {1921 ,U'\U0001E90F'}, {1923 ,U'\U0001E910'}, {1925 ,U'\U0001E911'}, {1927 ,U'\U0001E912'}, {1929 ,U'\U0001E913'}, {1931 ,U'\U0001E914'}, {1933 ,U'\U0001E915'}, {1935 ,U'\U0001E916'}, {1937 ,U'\U0001E917'}, {1939 ,U'\U0001E918'}, {1941 ,U'\U0001E919'}, {1943 ,U'\U0001E91A'}, {1945 ,U'\U0001E91B'}, {1947 ,U'\U0001E91C'}, + {1949 ,U'\U0001E91D'}, {1951 ,U'\U0001E91E'}, {1953 ,U'\U0001E91F'}, {1955 ,U'\U0001E920'}, {1957 ,U'\U0001E921'}, {1959 , 0} }; - constexpr size_t folding_source_chars_length = 1490; + constexpr size_t folding_source_chars_length = 1557; const char16_t case_folded_chars[] = u"\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070" @@ -151,73 +155,77 @@ namespace sysstr::util::unicode u"\u2D01\u2D02\u2D03\u2D04\u2D05\u2D06\u2D07\u2D08\u2D09\u2D0A\u2D0B\u2D0C\u2D0D\u2D0E\u2D0F\u2D10" u"\u2D11\u2D12\u2D13\u2D14\u2D15\u2D16\u2D17\u2D18\u2D19\u2D1A\u2D1B\u2D1C\u2D1D\u2D1E\u2D1F\u2D20" u"\u2D21\u2D22\u2D23\u2D24\u2D25\u2D27\u2D2D\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5\u0432\u0434\u043E" - u"\u0441\u0442\u0442\u044A\u0463\uA64B\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9" - u"\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9" - u"\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9" - u"\u10FA\u10FD\u10FE\u10FF\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17" - u"\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37" - u"\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57" - u"\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77" - u"\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95\u0068" - u"\u0331\u0074\u0308\u0077\u030A\u0079\u030A\u0061\u02BE\u1E61\u0073\u0073\u1EA1\u1EA3\u1EA5\u1EA7" - u"\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7" - u"\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7" - u"\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF\u1F00\u1F01\u1F02\u1F03" - u"\u1F04\u1F05\u1F06\u1F07\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15\u1F20\u1F21\u1F22\u1F23\u1F24\u1F25" - u"\u1F26\u1F27\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35\u1F36\u1F37\u1F40\u1F41\u1F42\u1F43\u1F44\u1F45" - u"\u03C5\u0313\u03C5\u0313\u0300\u03C5\u0313\u0301\u03C5\u0313\u0342\u1F51\u1F53\u1F55\u1F57\u1F60" - u"\u1F61\u1F62\u1F63\u1F64\u1F65\u1F66\u1F67\u1F00\u03B9\u1F01\u03B9\u1F02\u03B9\u1F03\u03B9\u1F04" - u"\u03B9\u1F05\u03B9\u1F06\u03B9\u1F07\u03B9\u1F00\u03B9\u1F01\u03B9\u1F02\u03B9\u1F03\u03B9\u1F04" - u"\u03B9\u1F05\u03B9\u1F06\u03B9\u1F07\u03B9\u1F20\u03B9\u1F21\u03B9\u1F22\u03B9\u1F23\u03B9\u1F24" - u"\u03B9\u1F25\u03B9\u1F26\u03B9\u1F27\u03B9\u1F20\u03B9\u1F21\u03B9\u1F22\u03B9\u1F23\u03B9\u1F24" - u"\u03B9\u1F25\u03B9\u1F26\u03B9\u1F27\u03B9\u1F60\u03B9\u1F61\u03B9\u1F62\u03B9\u1F63\u03B9\u1F64" - u"\u03B9\u1F65\u03B9\u1F66\u03B9\u1F67\u03B9\u1F60\u03B9\u1F61\u03B9\u1F62\u03B9\u1F63\u03B9\u1F64" - u"\u03B9\u1F65\u03B9\u1F66\u03B9\u1F67\u03B9\u1F70\u03B9\u03B1\u03B9\u03AC\u03B9\u03B1\u0342\u03B1" - u"\u0342\u03B9\u1FB0\u1FB1\u1F70\u1F71\u03B1\u03B9\u03B9\u1F74\u03B9\u03B7\u03B9\u03AE\u03B9\u03B7" - u"\u0342\u03B7\u0342\u03B9\u1F72\u1F73\u1F74\u1F75\u03B7\u03B9\u03B9\u0308\u0300\u03B9\u0308\u0301" - u"\u03B9\u0342\u03B9\u0308\u0342\u1FD0\u1FD1\u1F76\u1F77\u03C5\u0308\u0300\u03C5\u0308\u0301\u03C1" - u"\u0313\u03C5\u0342\u03C5\u0308\u0342\u1FE0\u1FE1\u1F7A\u1F7B\u1FE5\u1F7C\u03B9\u03C9\u03B9\u03CE" - u"\u03B9\u03C9\u0342\u03C9\u0342\u03B9\u1F78\u1F79\u1F7C\u1F7D\u03C9\u03B9\u03C9\u006B\u00E5\u214E" - u"\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B\u217C\u217D\u217E\u217F" - u"\u2184\u24D0\u24D1\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA\u24DB\u24DC\u24DD\u24DE" - u"\u24DF\u24E0\u24E1\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u2C30\u2C31\u2C32\u2C33\u2C34" - u"\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41\u2C42\u2C43\u2C44" - u"\u2C45\u2C46\u2C47\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51\u2C52\u2C53\u2C54" - u"\u2C55\u2C56\u2C57\u2C58\u2C59\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C61\u026B\u1D7D\u027D\u2C68\u2C6A" - u"\u2C6C\u0251\u0271\u0250\u0252\u2C73\u2C76\u023F\u0240\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D" - u"\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD" - u"\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD" - u"\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CEC\u2CEE\u2CF3\uA641\uA643" - u"\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663" - u"\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695" - u"\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F\uA733\uA735\uA737\uA739\uA73B\uA73D" - u"\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D" - u"\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA77A\uA77C\u1D79\uA77F\uA781\uA783\uA785" - u"\uA787\uA78C\u0265\uA791\uA793\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\u0266" - u"\u025C\u0261\u026C\u026A\u029E\u0287\u029D\uAB53\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C3\uA794" - u"\u0282\u1D8E\uA7C8\uA7CA\uA7F6\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA" - u"\u13AB\u13AC\u13AD\u13AE\u13AF\u13B0\u13B1\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA" - u"\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0\u13C1\u13C2\u13C3\u13C4\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA" - u"\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3\u13D4\u13D5\u13D6\u13D7\u13D8\u13D9\u13DA" - u"\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6\u13E7\u13E8\u13E9\u13EA" - u"\u13EB\u13EC\u13ED\u13EE\u13EF\u0066\u0066\u0066\u0069\u0066\u006C\u0066\u0066\u0069\u0066\u0066" - u"\u006C\u0073\u0074\u0073\u0074\u0574\u0576\u0574\u0565\u0574\u056B\u057E\u0576\u0574\u056D\uFF41" - u"\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F\uFF50\uFF51" - u"\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\U00010428\U00010429\U0001042A\U0001042B\U0001042C\U0001042D\U0001042E" - u"\U0001042F\U00010430\U00010431\U00010432\U00010433\U00010434\U00010435\U00010436\U00010437\U00010438\U00010439\U0001043A\U0001043B\U0001043C\U0001043D\U0001043E" - u"\U0001043F\U00010440\U00010441\U00010442\U00010443\U00010444\U00010445\U00010446\U00010447\U00010448\U00010449\U0001044A\U0001044B\U0001044C\U0001044D\U0001044E" - u"\U0001044F\U000104D8\U000104D9\U000104DA\U000104DB\U000104DC\U000104DD\U000104DE\U000104DF\U000104E0\U000104E1\U000104E2\U000104E3\U000104E4\U000104E5\U000104E6" - u"\U000104E7\U000104E8\U000104E9\U000104EA\U000104EB\U000104EC\U000104ED\U000104EE\U000104EF\U000104F0\U000104F1\U000104F2\U000104F3\U000104F4\U000104F5\U000104F6" - u"\U000104F7\U000104F8\U000104F9\U000104FA\U000104FB\U00010CC0\U00010CC1\U00010CC2\U00010CC3\U00010CC4\U00010CC5\U00010CC6\U00010CC7\U00010CC8\U00010CC9\U00010CCA" - u"\U00010CCB\U00010CCC\U00010CCD\U00010CCE\U00010CCF\U00010CD0\U00010CD1\U00010CD2\U00010CD3\U00010CD4\U00010CD5\U00010CD6\U00010CD7\U00010CD8\U00010CD9\U00010CDA" - u"\U00010CDB\U00010CDC\U00010CDD\U00010CDE\U00010CDF\U00010CE0\U00010CE1\U00010CE2\U00010CE3\U00010CE4\U00010CE5\U00010CE6\U00010CE7\U00010CE8\U00010CE9\U00010CEA" - u"\U00010CEB\U00010CEC\U00010CED\U00010CEE\U00010CEF\U00010CF0\U00010CF1\U00010CF2\U000118C0\U000118C1\U000118C2\U000118C3\U000118C4\U000118C5\U000118C6\U000118C7" - u"\U000118C8\U000118C9\U000118CA\U000118CB\U000118CC\U000118CD\U000118CE\U000118CF\U000118D0\U000118D1\U000118D2\U000118D3\U000118D4\U000118D5\U000118D6\U000118D7" - u"\U000118D8\U000118D9\U000118DA\U000118DB\U000118DC\U000118DD\U000118DE\U000118DF\U00016E60\U00016E61\U00016E62\U00016E63\U00016E64\U00016E65\U00016E66\U00016E67" - u"\U00016E68\U00016E69\U00016E6A\U00016E6B\U00016E6C\U00016E6D\U00016E6E\U00016E6F\U00016E70\U00016E71\U00016E72\U00016E73\U00016E74\U00016E75\U00016E76\U00016E77" - u"\U00016E78\U00016E79\U00016E7A\U00016E7B\U00016E7C\U00016E7D\U00016E7E\U00016E7F\U0001E922\U0001E923\U0001E924\U0001E925\U0001E926\U0001E927\U0001E928\U0001E929" - u"\U0001E92A\U0001E92B\U0001E92C\U0001E92D\U0001E92E\U0001E92F\U0001E930\U0001E931\U0001E932\U0001E933\U0001E934\U0001E935\U0001E936\U0001E937\U0001E938\U0001E939" - u"\U0001E93A\U0001E93B\U0001E93C\U0001E93D\U0001E93E\U0001E93F\U0001E940\U0001E941\U0001E942\U0001E943"; + u"\u0441\u0442\u0442\u044A\u0463\uA64B\u1C8A\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8" + u"\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8" + u"\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8" + u"\u10F9\u10FA\u10FD\u10FE\u10FF\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15" + u"\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35" + u"\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55" + u"\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75" + u"\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95" + u"\u0068\u0331\u0074\u0308\u0077\u030A\u0079\u030A\u0061\u02BE\u1E61\u0073\u0073\u1EA1\u1EA3\u1EA5" + u"\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5" + u"\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5" + u"\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF\u1F00\u1F01\u1F02" + u"\u1F03\u1F04\u1F05\u1F06\u1F07\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15\u1F20\u1F21\u1F22\u1F23\u1F24" + u"\u1F25\u1F26\u1F27\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35\u1F36\u1F37\u1F40\u1F41\u1F42\u1F43\u1F44" + u"\u1F45\u03C5\u0313\u03C5\u0313\u0300\u03C5\u0313\u0301\u03C5\u0313\u0342\u1F51\u1F53\u1F55\u1F57" + u"\u1F60\u1F61\u1F62\u1F63\u1F64\u1F65\u1F66\u1F67\u1F00\u03B9\u1F01\u03B9\u1F02\u03B9\u1F03\u03B9" + u"\u1F04\u03B9\u1F05\u03B9\u1F06\u03B9\u1F07\u03B9\u1F00\u03B9\u1F01\u03B9\u1F02\u03B9\u1F03\u03B9" + u"\u1F04\u03B9\u1F05\u03B9\u1F06\u03B9\u1F07\u03B9\u1F20\u03B9\u1F21\u03B9\u1F22\u03B9\u1F23\u03B9" + u"\u1F24\u03B9\u1F25\u03B9\u1F26\u03B9\u1F27\u03B9\u1F20\u03B9\u1F21\u03B9\u1F22\u03B9\u1F23\u03B9" + u"\u1F24\u03B9\u1F25\u03B9\u1F26\u03B9\u1F27\u03B9\u1F60\u03B9\u1F61\u03B9\u1F62\u03B9\u1F63\u03B9" + u"\u1F64\u03B9\u1F65\u03B9\u1F66\u03B9\u1F67\u03B9\u1F60\u03B9\u1F61\u03B9\u1F62\u03B9\u1F63\u03B9" + u"\u1F64\u03B9\u1F65\u03B9\u1F66\u03B9\u1F67\u03B9\u1F70\u03B9\u03B1\u03B9\u03AC\u03B9\u03B1\u0342" + u"\u03B1\u0342\u03B9\u1FB0\u1FB1\u1F70\u1F71\u03B1\u03B9\u03B9\u1F74\u03B9\u03B7\u03B9\u03AE\u03B9" + u"\u03B7\u0342\u03B7\u0342\u03B9\u1F72\u1F73\u1F74\u1F75\u03B7\u03B9\u03B9\u0308\u0300\u03B9\u0308" + u"\u0301\u03B9\u0342\u03B9\u0308\u0342\u1FD0\u1FD1\u1F76\u1F77\u03C5\u0308\u0300\u03C5\u0308\u0301" + u"\u03C1\u0313\u03C5\u0342\u03C5\u0308\u0342\u1FE0\u1FE1\u1F7A\u1F7B\u1FE5\u1F7C\u03B9\u03C9\u03B9" + u"\u03CE\u03B9\u03C9\u0342\u03C9\u0342\u03B9\u1F78\u1F79\u1F7C\u1F7D\u03C9\u03B9\u03C9\u006B\u00E5" + u"\u214E\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B\u217C\u217D\u217E" + u"\u217F\u2184\u24D0\u24D1\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA\u24DB\u24DC\u24DD" + u"\u24DE\u24DF\u24E0\u24E1\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u2C30\u2C31\u2C32\u2C33" + u"\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41\u2C42\u2C43" + u"\u2C44\u2C45\u2C46\u2C47\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51\u2C52\u2C53" + u"\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C5F\u2C61\u026B\u1D7D\u027D" + u"\u2C68\u2C6A\u2C6C\u0251\u0271\u0250\u0252\u2C73\u2C76\u023F\u0240\u2C81\u2C83\u2C85\u2C87\u2C89" + u"\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9" + u"\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9" + u"\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CEC\u2CEE\u2CF3" + u"\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F" + u"\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691" + u"\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F\uA733\uA735\uA737\uA739" + u"\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759" + u"\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA77A\uA77C\u1D79\uA77F\uA781" + u"\uA783\uA785\uA787\uA78C\u0265\uA791\uA793\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7" + u"\uA7A9\u0266\u025C\u0261\u026C\u026A\u029E\u0287\u029D\uAB53\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF" + u"\uA7C1\uA7C3\uA794\u0282\u1D8E\uA7C8\uA7CA\u0264\uA7CD\uA7D1\uA7D7\uA7D9\uA7DB\u019B\uA7F6\u13A0" + u"\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD\u13AE\u13AF\u13B0" + u"\u13B1\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0" + u"\u13C1\u13C2\u13C3\u13C4\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0" + u"\u13D1\u13D2\u13D3\u13D4\u13D5\u13D6\u13D7\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0" + u"\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6\u13E7\u13E8\u13E9\u13EA\u13EB\u13EC\u13ED\u13EE\u13EF\u0066" + u"\u0066\u0066\u0069\u0066\u006C\u0066\u0066\u0069\u0066\u0066\u006C\u0073\u0074\u0073\u0074\u0574" + u"\u0576\u0574\u0565\u0574\u056B\u057E\u0576\u0574\u056D\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47" + u"\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57" + u"\uFF58\uFF59\uFF5A\U00010428\U00010429\U0001042A\U0001042B\U0001042C\U0001042D\U0001042E\U0001042F\U00010430\U00010431\U00010432\U00010433\U00010434" + u"\U00010435\U00010436\U00010437\U00010438\U00010439\U0001043A\U0001043B\U0001043C\U0001043D\U0001043E\U0001043F\U00010440\U00010441\U00010442\U00010443\U00010444" + u"\U00010445\U00010446\U00010447\U00010448\U00010449\U0001044A\U0001044B\U0001044C\U0001044D\U0001044E\U0001044F\U000104D8\U000104D9\U000104DA\U000104DB\U000104DC" + u"\U000104DD\U000104DE\U000104DF\U000104E0\U000104E1\U000104E2\U000104E3\U000104E4\U000104E5\U000104E6\U000104E7\U000104E8\U000104E9\U000104EA\U000104EB\U000104EC" + u"\U000104ED\U000104EE\U000104EF\U000104F0\U000104F1\U000104F2\U000104F3\U000104F4\U000104F5\U000104F6\U000104F7\U000104F8\U000104F9\U000104FA\U000104FB\U00010597" + u"\U00010598\U00010599\U0001059A\U0001059B\U0001059C\U0001059D\U0001059E\U0001059F\U000105A0\U000105A1\U000105A3\U000105A4\U000105A5\U000105A6\U000105A7\U000105A8" + u"\U000105A9\U000105AA\U000105AB\U000105AC\U000105AD\U000105AE\U000105AF\U000105B0\U000105B1\U000105B3\U000105B4\U000105B5\U000105B6\U000105B7\U000105B8\U000105B9" + u"\U000105BB\U000105BC\U00010CC0\U00010CC1\U00010CC2\U00010CC3\U00010CC4\U00010CC5\U00010CC6\U00010CC7\U00010CC8\U00010CC9\U00010CCA\U00010CCB\U00010CCC\U00010CCD" + u"\U00010CCE\U00010CCF\U00010CD0\U00010CD1\U00010CD2\U00010CD3\U00010CD4\U00010CD5\U00010CD6\U00010CD7\U00010CD8\U00010CD9\U00010CDA\U00010CDB\U00010CDC\U00010CDD" + u"\U00010CDE\U00010CDF\U00010CE0\U00010CE1\U00010CE2\U00010CE3\U00010CE4\U00010CE5\U00010CE6\U00010CE7\U00010CE8\U00010CE9\U00010CEA\U00010CEB\U00010CEC\U00010CED" + u"\U00010CEE\U00010CEF\U00010CF0\U00010CF1\U00010CF2\U00010D70\U00010D71\U00010D72\U00010D73\U00010D74\U00010D75\U00010D76\U00010D77\U00010D78\U00010D79\U00010D7A" + u"\U00010D7B\U00010D7C\U00010D7D\U00010D7E\U00010D7F\U00010D80\U00010D81\U00010D82\U00010D83\U00010D84\U00010D85\U000118C0\U000118C1\U000118C2\U000118C3\U000118C4" + u"\U000118C5\U000118C6\U000118C7\U000118C8\U000118C9\U000118CA\U000118CB\U000118CC\U000118CD\U000118CE\U000118CF\U000118D0\U000118D1\U000118D2\U000118D3\U000118D4" + u"\U000118D5\U000118D6\U000118D7\U000118D8\U000118D9\U000118DA\U000118DB\U000118DC\U000118DD\U000118DE\U000118DF\U00016E60\U00016E61\U00016E62\U00016E63\U00016E64" + u"\U00016E65\U00016E66\U00016E67\U00016E68\U00016E69\U00016E6A\U00016E6B\U00016E6C\U00016E6D\U00016E6E\U00016E6F\U00016E70\U00016E71\U00016E72\U00016E73\U00016E74" + u"\U00016E75\U00016E76\U00016E77\U00016E78\U00016E79\U00016E7A\U00016E7B\U00016E7C\U00016E7D\U00016E7E\U00016E7F\U0001E922\U0001E923\U0001E924\U0001E925\U0001E926" + u"\U0001E927\U0001E928\U0001E929\U0001E92A\U0001E92B\U0001E92C\U0001E92D\U0001E92E\U0001E92F\U0001E930\U0001E931\U0001E932\U0001E933\U0001E934\U0001E935\U0001E936" + u"\U0001E937\U0001E938\U0001E939\U0001E93A\U0001E93B\U0001E93C\U0001E93D\U0001E93E\U0001E93F\U0001E940\U0001E941\U0001E942\U0001E943"; const char_lookup uppercase_source_chars[] = { {0 ,U'\u0041'}, {1 ,U'\u0042'}, {2 ,U'\u0043'}, {3 ,U'\u0044'}, {4 ,U'\u0045'}, {5 ,U'\u0046'}, {6 ,U'\u0047'}, {7 ,U'\u0048'}, {8 ,U'\u0049'}, {9 ,U'\u004A'}, {10 ,U'\u004B'}, {11 ,U'\u004C'}, {12 ,U'\u004D'}, {13 ,U'\u004E'}, {14 ,U'\u004F'}, {15 ,U'\u0050'}, @@ -257,60 +265,64 @@ namespace sysstr::util::unicode {545 ,U'\u13C3'}, {546 ,U'\u13C4'}, {547 ,U'\u13C5'}, {548 ,U'\u13C6'}, {549 ,U'\u13C7'}, {550 ,U'\u13C8'}, {551 ,U'\u13C9'}, {552 ,U'\u13CA'}, {553 ,U'\u13CB'}, {554 ,U'\u13CC'}, {555 ,U'\u13CD'}, {556 ,U'\u13CE'}, {557 ,U'\u13CF'}, {558 ,U'\u13D0'}, {559 ,U'\u13D1'}, {560 ,U'\u13D2'}, {561 ,U'\u13D3'}, {562 ,U'\u13D4'}, {563 ,U'\u13D5'}, {564 ,U'\u13D6'}, {565 ,U'\u13D7'}, {566 ,U'\u13D8'}, {567 ,U'\u13D9'}, {568 ,U'\u13DA'}, {569 ,U'\u13DB'}, {570 ,U'\u13DC'}, {571 ,U'\u13DD'}, {572 ,U'\u13DE'}, {573 ,U'\u13DF'}, {574 ,U'\u13E0'}, {575 ,U'\u13E1'}, {576 ,U'\u13E2'}, {577 ,U'\u13E3'}, {578 ,U'\u13E4'}, {579 ,U'\u13E5'}, {580 ,U'\u13E6'}, {581 ,U'\u13E7'}, {582 ,U'\u13E8'}, {583 ,U'\u13E9'}, {584 ,U'\u13EA'}, {585 ,U'\u13EB'}, {586 ,U'\u13EC'}, {587 ,U'\u13ED'}, {588 ,U'\u13EE'}, {589 ,U'\u13EF'}, {590 ,U'\u13F0'}, {591 ,U'\u13F1'}, {592 ,U'\u13F2'}, - {593 ,U'\u13F3'}, {594 ,U'\u13F4'}, {595 ,U'\u13F5'}, {596 ,U'\u1C90'}, {597 ,U'\u1C91'}, {598 ,U'\u1C92'}, {599 ,U'\u1C93'}, {600 ,U'\u1C94'}, {601 ,U'\u1C95'}, {602 ,U'\u1C96'}, {603 ,U'\u1C97'}, {604 ,U'\u1C98'}, {605 ,U'\u1C99'}, {606 ,U'\u1C9A'}, {607 ,U'\u1C9B'}, {608 ,U'\u1C9C'}, - {609 ,U'\u1C9D'}, {610 ,U'\u1C9E'}, {611 ,U'\u1C9F'}, {612 ,U'\u1CA0'}, {613 ,U'\u1CA1'}, {614 ,U'\u1CA2'}, {615 ,U'\u1CA3'}, {616 ,U'\u1CA4'}, {617 ,U'\u1CA5'}, {618 ,U'\u1CA6'}, {619 ,U'\u1CA7'}, {620 ,U'\u1CA8'}, {621 ,U'\u1CA9'}, {622 ,U'\u1CAA'}, {623 ,U'\u1CAB'}, {624 ,U'\u1CAC'}, - {625 ,U'\u1CAD'}, {626 ,U'\u1CAE'}, {627 ,U'\u1CAF'}, {628 ,U'\u1CB0'}, {629 ,U'\u1CB1'}, {630 ,U'\u1CB2'}, {631 ,U'\u1CB3'}, {632 ,U'\u1CB4'}, {633 ,U'\u1CB5'}, {634 ,U'\u1CB6'}, {635 ,U'\u1CB7'}, {636 ,U'\u1CB8'}, {637 ,U'\u1CB9'}, {638 ,U'\u1CBA'}, {639 ,U'\u1CBD'}, {640 ,U'\u1CBE'}, - {641 ,U'\u1CBF'}, {642 ,U'\u1E00'}, {643 ,U'\u1E02'}, {644 ,U'\u1E04'}, {645 ,U'\u1E06'}, {646 ,U'\u1E08'}, {647 ,U'\u1E0A'}, {648 ,U'\u1E0C'}, {649 ,U'\u1E0E'}, {650 ,U'\u1E10'}, {651 ,U'\u1E12'}, {652 ,U'\u1E14'}, {653 ,U'\u1E16'}, {654 ,U'\u1E18'}, {655 ,U'\u1E1A'}, {656 ,U'\u1E1C'}, - {657 ,U'\u1E1E'}, {658 ,U'\u1E20'}, {659 ,U'\u1E22'}, {660 ,U'\u1E24'}, {661 ,U'\u1E26'}, {662 ,U'\u1E28'}, {663 ,U'\u1E2A'}, {664 ,U'\u1E2C'}, {665 ,U'\u1E2E'}, {666 ,U'\u1E30'}, {667 ,U'\u1E32'}, {668 ,U'\u1E34'}, {669 ,U'\u1E36'}, {670 ,U'\u1E38'}, {671 ,U'\u1E3A'}, {672 ,U'\u1E3C'}, - {673 ,U'\u1E3E'}, {674 ,U'\u1E40'}, {675 ,U'\u1E42'}, {676 ,U'\u1E44'}, {677 ,U'\u1E46'}, {678 ,U'\u1E48'}, {679 ,U'\u1E4A'}, {680 ,U'\u1E4C'}, {681 ,U'\u1E4E'}, {682 ,U'\u1E50'}, {683 ,U'\u1E52'}, {684 ,U'\u1E54'}, {685 ,U'\u1E56'}, {686 ,U'\u1E58'}, {687 ,U'\u1E5A'}, {688 ,U'\u1E5C'}, - {689 ,U'\u1E5E'}, {690 ,U'\u1E60'}, {691 ,U'\u1E62'}, {692 ,U'\u1E64'}, {693 ,U'\u1E66'}, {694 ,U'\u1E68'}, {695 ,U'\u1E6A'}, {696 ,U'\u1E6C'}, {697 ,U'\u1E6E'}, {698 ,U'\u1E70'}, {699 ,U'\u1E72'}, {700 ,U'\u1E74'}, {701 ,U'\u1E76'}, {702 ,U'\u1E78'}, {703 ,U'\u1E7A'}, {704 ,U'\u1E7C'}, - {705 ,U'\u1E7E'}, {706 ,U'\u1E80'}, {707 ,U'\u1E82'}, {708 ,U'\u1E84'}, {709 ,U'\u1E86'}, {710 ,U'\u1E88'}, {711 ,U'\u1E8A'}, {712 ,U'\u1E8C'}, {713 ,U'\u1E8E'}, {714 ,U'\u1E90'}, {715 ,U'\u1E92'}, {716 ,U'\u1E94'}, {717 ,U'\u1E9E'}, {718 ,U'\u1EA0'}, {719 ,U'\u1EA2'}, {720 ,U'\u1EA4'}, - {721 ,U'\u1EA6'}, {722 ,U'\u1EA8'}, {723 ,U'\u1EAA'}, {724 ,U'\u1EAC'}, {725 ,U'\u1EAE'}, {726 ,U'\u1EB0'}, {727 ,U'\u1EB2'}, {728 ,U'\u1EB4'}, {729 ,U'\u1EB6'}, {730 ,U'\u1EB8'}, {731 ,U'\u1EBA'}, {732 ,U'\u1EBC'}, {733 ,U'\u1EBE'}, {734 ,U'\u1EC0'}, {735 ,U'\u1EC2'}, {736 ,U'\u1EC4'}, - {737 ,U'\u1EC6'}, {738 ,U'\u1EC8'}, {739 ,U'\u1ECA'}, {740 ,U'\u1ECC'}, {741 ,U'\u1ECE'}, {742 ,U'\u1ED0'}, {743 ,U'\u1ED2'}, {744 ,U'\u1ED4'}, {745 ,U'\u1ED6'}, {746 ,U'\u1ED8'}, {747 ,U'\u1EDA'}, {748 ,U'\u1EDC'}, {749 ,U'\u1EDE'}, {750 ,U'\u1EE0'}, {751 ,U'\u1EE2'}, {752 ,U'\u1EE4'}, - {753 ,U'\u1EE6'}, {754 ,U'\u1EE8'}, {755 ,U'\u1EEA'}, {756 ,U'\u1EEC'}, {757 ,U'\u1EEE'}, {758 ,U'\u1EF0'}, {759 ,U'\u1EF2'}, {760 ,U'\u1EF4'}, {761 ,U'\u1EF6'}, {762 ,U'\u1EF8'}, {763 ,U'\u1EFA'}, {764 ,U'\u1EFC'}, {765 ,U'\u1EFE'}, {766 ,U'\u1F08'}, {767 ,U'\u1F09'}, {768 ,U'\u1F0A'}, - {769 ,U'\u1F0B'}, {770 ,U'\u1F0C'}, {771 ,U'\u1F0D'}, {772 ,U'\u1F0E'}, {773 ,U'\u1F0F'}, {774 ,U'\u1F18'}, {775 ,U'\u1F19'}, {776 ,U'\u1F1A'}, {777 ,U'\u1F1B'}, {778 ,U'\u1F1C'}, {779 ,U'\u1F1D'}, {780 ,U'\u1F28'}, {781 ,U'\u1F29'}, {782 ,U'\u1F2A'}, {783 ,U'\u1F2B'}, {784 ,U'\u1F2C'}, - {785 ,U'\u1F2D'}, {786 ,U'\u1F2E'}, {787 ,U'\u1F2F'}, {788 ,U'\u1F38'}, {789 ,U'\u1F39'}, {790 ,U'\u1F3A'}, {791 ,U'\u1F3B'}, {792 ,U'\u1F3C'}, {793 ,U'\u1F3D'}, {794 ,U'\u1F3E'}, {795 ,U'\u1F3F'}, {796 ,U'\u1F48'}, {797 ,U'\u1F49'}, {798 ,U'\u1F4A'}, {799 ,U'\u1F4B'}, {800 ,U'\u1F4C'}, - {801 ,U'\u1F4D'}, {802 ,U'\u1F59'}, {803 ,U'\u1F5B'}, {804 ,U'\u1F5D'}, {805 ,U'\u1F5F'}, {806 ,U'\u1F68'}, {807 ,U'\u1F69'}, {808 ,U'\u1F6A'}, {809 ,U'\u1F6B'}, {810 ,U'\u1F6C'}, {811 ,U'\u1F6D'}, {812 ,U'\u1F6E'}, {813 ,U'\u1F6F'}, {814 ,U'\u1F88'}, {815 ,U'\u1F89'}, {816 ,U'\u1F8A'}, - {817 ,U'\u1F8B'}, {818 ,U'\u1F8C'}, {819 ,U'\u1F8D'}, {820 ,U'\u1F8E'}, {821 ,U'\u1F8F'}, {822 ,U'\u1F98'}, {823 ,U'\u1F99'}, {824 ,U'\u1F9A'}, {825 ,U'\u1F9B'}, {826 ,U'\u1F9C'}, {827 ,U'\u1F9D'}, {828 ,U'\u1F9E'}, {829 ,U'\u1F9F'}, {830 ,U'\u1FA8'}, {831 ,U'\u1FA9'}, {832 ,U'\u1FAA'}, - {833 ,U'\u1FAB'}, {834 ,U'\u1FAC'}, {835 ,U'\u1FAD'}, {836 ,U'\u1FAE'}, {837 ,U'\u1FAF'}, {838 ,U'\u1FB8'}, {839 ,U'\u1FB9'}, {840 ,U'\u1FBA'}, {841 ,U'\u1FBB'}, {842 ,U'\u1FBC'}, {843 ,U'\u1FC8'}, {844 ,U'\u1FC9'}, {845 ,U'\u1FCA'}, {846 ,U'\u1FCB'}, {847 ,U'\u1FCC'}, {848 ,U'\u1FD8'}, - {849 ,U'\u1FD9'}, {850 ,U'\u1FDA'}, {851 ,U'\u1FDB'}, {852 ,U'\u1FE8'}, {853 ,U'\u1FE9'}, {854 ,U'\u1FEA'}, {855 ,U'\u1FEB'}, {856 ,U'\u1FEC'}, {857 ,U'\u1FF8'}, {858 ,U'\u1FF9'}, {859 ,U'\u1FFA'}, {860 ,U'\u1FFB'}, {861 ,U'\u1FFC'}, {862 ,U'\u2126'}, {863 ,U'\u212A'}, {864 ,U'\u212B'}, - {865 ,U'\u2132'}, {866 ,U'\u2160'}, {867 ,U'\u2161'}, {868 ,U'\u2162'}, {869 ,U'\u2163'}, {870 ,U'\u2164'}, {871 ,U'\u2165'}, {872 ,U'\u2166'}, {873 ,U'\u2167'}, {874 ,U'\u2168'}, {875 ,U'\u2169'}, {876 ,U'\u216A'}, {877 ,U'\u216B'}, {878 ,U'\u216C'}, {879 ,U'\u216D'}, {880 ,U'\u216E'}, - {881 ,U'\u216F'}, {882 ,U'\u2183'}, {883 ,U'\u24B6'}, {884 ,U'\u24B7'}, {885 ,U'\u24B8'}, {886 ,U'\u24B9'}, {887 ,U'\u24BA'}, {888 ,U'\u24BB'}, {889 ,U'\u24BC'}, {890 ,U'\u24BD'}, {891 ,U'\u24BE'}, {892 ,U'\u24BF'}, {893 ,U'\u24C0'}, {894 ,U'\u24C1'}, {895 ,U'\u24C2'}, {896 ,U'\u24C3'}, - {897 ,U'\u24C4'}, {898 ,U'\u24C5'}, {899 ,U'\u24C6'}, {900 ,U'\u24C7'}, {901 ,U'\u24C8'}, {902 ,U'\u24C9'}, {903 ,U'\u24CA'}, {904 ,U'\u24CB'}, {905 ,U'\u24CC'}, {906 ,U'\u24CD'}, {907 ,U'\u24CE'}, {908 ,U'\u24CF'}, {909 ,U'\u2C00'}, {910 ,U'\u2C01'}, {911 ,U'\u2C02'}, {912 ,U'\u2C03'}, - {913 ,U'\u2C04'}, {914 ,U'\u2C05'}, {915 ,U'\u2C06'}, {916 ,U'\u2C07'}, {917 ,U'\u2C08'}, {918 ,U'\u2C09'}, {919 ,U'\u2C0A'}, {920 ,U'\u2C0B'}, {921 ,U'\u2C0C'}, {922 ,U'\u2C0D'}, {923 ,U'\u2C0E'}, {924 ,U'\u2C0F'}, {925 ,U'\u2C10'}, {926 ,U'\u2C11'}, {927 ,U'\u2C12'}, {928 ,U'\u2C13'}, - {929 ,U'\u2C14'}, {930 ,U'\u2C15'}, {931 ,U'\u2C16'}, {932 ,U'\u2C17'}, {933 ,U'\u2C18'}, {934 ,U'\u2C19'}, {935 ,U'\u2C1A'}, {936 ,U'\u2C1B'}, {937 ,U'\u2C1C'}, {938 ,U'\u2C1D'}, {939 ,U'\u2C1E'}, {940 ,U'\u2C1F'}, {941 ,U'\u2C20'}, {942 ,U'\u2C21'}, {943 ,U'\u2C22'}, {944 ,U'\u2C23'}, - {945 ,U'\u2C24'}, {946 ,U'\u2C25'}, {947 ,U'\u2C26'}, {948 ,U'\u2C27'}, {949 ,U'\u2C28'}, {950 ,U'\u2C29'}, {951 ,U'\u2C2A'}, {952 ,U'\u2C2B'}, {953 ,U'\u2C2C'}, {954 ,U'\u2C2D'}, {955 ,U'\u2C2E'}, {956 ,U'\u2C60'}, {957 ,U'\u2C62'}, {958 ,U'\u2C63'}, {959 ,U'\u2C64'}, {960 ,U'\u2C67'}, - {961 ,U'\u2C69'}, {962 ,U'\u2C6B'}, {963 ,U'\u2C6D'}, {964 ,U'\u2C6E'}, {965 ,U'\u2C6F'}, {966 ,U'\u2C70'}, {967 ,U'\u2C72'}, {968 ,U'\u2C75'}, {969 ,U'\u2C7E'}, {970 ,U'\u2C7F'}, {971 ,U'\u2C80'}, {972 ,U'\u2C82'}, {973 ,U'\u2C84'}, {974 ,U'\u2C86'}, {975 ,U'\u2C88'}, {976 ,U'\u2C8A'}, - {977 ,U'\u2C8C'}, {978 ,U'\u2C8E'}, {979 ,U'\u2C90'}, {980 ,U'\u2C92'}, {981 ,U'\u2C94'}, {982 ,U'\u2C96'}, {983 ,U'\u2C98'}, {984 ,U'\u2C9A'}, {985 ,U'\u2C9C'}, {986 ,U'\u2C9E'}, {987 ,U'\u2CA0'}, {988 ,U'\u2CA2'}, {989 ,U'\u2CA4'}, {990 ,U'\u2CA6'}, {991 ,U'\u2CA8'}, {992 ,U'\u2CAA'}, - {993 ,U'\u2CAC'}, {994 ,U'\u2CAE'}, {995 ,U'\u2CB0'}, {996 ,U'\u2CB2'}, {997 ,U'\u2CB4'}, {998 ,U'\u2CB6'}, {999 ,U'\u2CB8'}, {1000 ,U'\u2CBA'}, {1001 ,U'\u2CBC'}, {1002 ,U'\u2CBE'}, {1003 ,U'\u2CC0'}, {1004 ,U'\u2CC2'}, {1005 ,U'\u2CC4'}, {1006 ,U'\u2CC6'}, {1007 ,U'\u2CC8'}, {1008 ,U'\u2CCA'}, - {1009 ,U'\u2CCC'}, {1010 ,U'\u2CCE'}, {1011 ,U'\u2CD0'}, {1012 ,U'\u2CD2'}, {1013 ,U'\u2CD4'}, {1014 ,U'\u2CD6'}, {1015 ,U'\u2CD8'}, {1016 ,U'\u2CDA'}, {1017 ,U'\u2CDC'}, {1018 ,U'\u2CDE'}, {1019 ,U'\u2CE0'}, {1020 ,U'\u2CE2'}, {1021 ,U'\u2CEB'}, {1022 ,U'\u2CED'}, {1023 ,U'\u2CF2'}, {1024 ,U'\uA640'}, - {1025 ,U'\uA642'}, {1026 ,U'\uA644'}, {1027 ,U'\uA646'}, {1028 ,U'\uA648'}, {1029 ,U'\uA64A'}, {1030 ,U'\uA64C'}, {1031 ,U'\uA64E'}, {1032 ,U'\uA650'}, {1033 ,U'\uA652'}, {1034 ,U'\uA654'}, {1035 ,U'\uA656'}, {1036 ,U'\uA658'}, {1037 ,U'\uA65A'}, {1038 ,U'\uA65C'}, {1039 ,U'\uA65E'}, {1040 ,U'\uA660'}, - {1041 ,U'\uA662'}, {1042 ,U'\uA664'}, {1043 ,U'\uA666'}, {1044 ,U'\uA668'}, {1045 ,U'\uA66A'}, {1046 ,U'\uA66C'}, {1047 ,U'\uA680'}, {1048 ,U'\uA682'}, {1049 ,U'\uA684'}, {1050 ,U'\uA686'}, {1051 ,U'\uA688'}, {1052 ,U'\uA68A'}, {1053 ,U'\uA68C'}, {1054 ,U'\uA68E'}, {1055 ,U'\uA690'}, {1056 ,U'\uA692'}, - {1057 ,U'\uA694'}, {1058 ,U'\uA696'}, {1059 ,U'\uA698'}, {1060 ,U'\uA69A'}, {1061 ,U'\uA722'}, {1062 ,U'\uA724'}, {1063 ,U'\uA726'}, {1064 ,U'\uA728'}, {1065 ,U'\uA72A'}, {1066 ,U'\uA72C'}, {1067 ,U'\uA72E'}, {1068 ,U'\uA732'}, {1069 ,U'\uA734'}, {1070 ,U'\uA736'}, {1071 ,U'\uA738'}, {1072 ,U'\uA73A'}, - {1073 ,U'\uA73C'}, {1074 ,U'\uA73E'}, {1075 ,U'\uA740'}, {1076 ,U'\uA742'}, {1077 ,U'\uA744'}, {1078 ,U'\uA746'}, {1079 ,U'\uA748'}, {1080 ,U'\uA74A'}, {1081 ,U'\uA74C'}, {1082 ,U'\uA74E'}, {1083 ,U'\uA750'}, {1084 ,U'\uA752'}, {1085 ,U'\uA754'}, {1086 ,U'\uA756'}, {1087 ,U'\uA758'}, {1088 ,U'\uA75A'}, - {1089 ,U'\uA75C'}, {1090 ,U'\uA75E'}, {1091 ,U'\uA760'}, {1092 ,U'\uA762'}, {1093 ,U'\uA764'}, {1094 ,U'\uA766'}, {1095 ,U'\uA768'}, {1096 ,U'\uA76A'}, {1097 ,U'\uA76C'}, {1098 ,U'\uA76E'}, {1099 ,U'\uA779'}, {1100 ,U'\uA77B'}, {1101 ,U'\uA77D'}, {1102 ,U'\uA77E'}, {1103 ,U'\uA780'}, {1104 ,U'\uA782'}, - {1105 ,U'\uA784'}, {1106 ,U'\uA786'}, {1107 ,U'\uA78B'}, {1108 ,U'\uA78D'}, {1109 ,U'\uA790'}, {1110 ,U'\uA792'}, {1111 ,U'\uA796'}, {1112 ,U'\uA798'}, {1113 ,U'\uA79A'}, {1114 ,U'\uA79C'}, {1115 ,U'\uA79E'}, {1116 ,U'\uA7A0'}, {1117 ,U'\uA7A2'}, {1118 ,U'\uA7A4'}, {1119 ,U'\uA7A6'}, {1120 ,U'\uA7A8'}, - {1121 ,U'\uA7AA'}, {1122 ,U'\uA7AB'}, {1123 ,U'\uA7AC'}, {1124 ,U'\uA7AD'}, {1125 ,U'\uA7AE'}, {1126 ,U'\uA7B0'}, {1127 ,U'\uA7B1'}, {1128 ,U'\uA7B2'}, {1129 ,U'\uA7B3'}, {1130 ,U'\uA7B4'}, {1131 ,U'\uA7B6'}, {1132 ,U'\uA7B8'}, {1133 ,U'\uA7BA'}, {1134 ,U'\uA7BC'}, {1135 ,U'\uA7BE'}, {1136 ,U'\uA7C2'}, - {1137 ,U'\uA7C4'}, {1138 ,U'\uA7C5'}, {1139 ,U'\uA7C6'}, {1140 ,U'\uA7C7'}, {1141 ,U'\uA7C9'}, {1142 ,U'\uA7F5'}, {1143 ,U'\uFF21'}, {1144 ,U'\uFF22'}, {1145 ,U'\uFF23'}, {1146 ,U'\uFF24'}, {1147 ,U'\uFF25'}, {1148 ,U'\uFF26'}, {1149 ,U'\uFF27'}, {1150 ,U'\uFF28'}, {1151 ,U'\uFF29'}, {1152 ,U'\uFF2A'}, - {1153 ,U'\uFF2B'}, {1154 ,U'\uFF2C'}, {1155 ,U'\uFF2D'}, {1156 ,U'\uFF2E'}, {1157 ,U'\uFF2F'}, {1158 ,U'\uFF30'}, {1159 ,U'\uFF31'}, {1160 ,U'\uFF32'}, {1161 ,U'\uFF33'}, {1162 ,U'\uFF34'}, {1163 ,U'\uFF35'}, {1164 ,U'\uFF36'}, {1165 ,U'\uFF37'}, {1166 ,U'\uFF38'}, {1167 ,U'\uFF39'}, {1168 ,U'\uFF3A'}, - {1169 ,U'\U00010400'}, {1171 ,U'\U00010401'}, {1173 ,U'\U00010402'}, {1175 ,U'\U00010403'}, {1177 ,U'\U00010404'}, {1179 ,U'\U00010405'}, {1181 ,U'\U00010406'}, {1183 ,U'\U00010407'}, {1185 ,U'\U00010408'}, {1187 ,U'\U00010409'}, {1189 ,U'\U0001040A'}, {1191 ,U'\U0001040B'}, {1193 ,U'\U0001040C'}, {1195 ,U'\U0001040D'}, {1197 ,U'\U0001040E'}, {1199 ,U'\U0001040F'}, - {1201 ,U'\U00010410'}, {1203 ,U'\U00010411'}, {1205 ,U'\U00010412'}, {1207 ,U'\U00010413'}, {1209 ,U'\U00010414'}, {1211 ,U'\U00010415'}, {1213 ,U'\U00010416'}, {1215 ,U'\U00010417'}, {1217 ,U'\U00010418'}, {1219 ,U'\U00010419'}, {1221 ,U'\U0001041A'}, {1223 ,U'\U0001041B'}, {1225 ,U'\U0001041C'}, {1227 ,U'\U0001041D'}, {1229 ,U'\U0001041E'}, {1231 ,U'\U0001041F'}, - {1233 ,U'\U00010420'}, {1235 ,U'\U00010421'}, {1237 ,U'\U00010422'}, {1239 ,U'\U00010423'}, {1241 ,U'\U00010424'}, {1243 ,U'\U00010425'}, {1245 ,U'\U00010426'}, {1247 ,U'\U00010427'}, {1249 ,U'\U000104B0'}, {1251 ,U'\U000104B1'}, {1253 ,U'\U000104B2'}, {1255 ,U'\U000104B3'}, {1257 ,U'\U000104B4'}, {1259 ,U'\U000104B5'}, {1261 ,U'\U000104B6'}, {1263 ,U'\U000104B7'}, - {1265 ,U'\U000104B8'}, {1267 ,U'\U000104B9'}, {1269 ,U'\U000104BA'}, {1271 ,U'\U000104BB'}, {1273 ,U'\U000104BC'}, {1275 ,U'\U000104BD'}, {1277 ,U'\U000104BE'}, {1279 ,U'\U000104BF'}, {1281 ,U'\U000104C0'}, {1283 ,U'\U000104C1'}, {1285 ,U'\U000104C2'}, {1287 ,U'\U000104C3'}, {1289 ,U'\U000104C4'}, {1291 ,U'\U000104C5'}, {1293 ,U'\U000104C6'}, {1295 ,U'\U000104C7'}, - {1297 ,U'\U000104C8'}, {1299 ,U'\U000104C9'}, {1301 ,U'\U000104CA'}, {1303 ,U'\U000104CB'}, {1305 ,U'\U000104CC'}, {1307 ,U'\U000104CD'}, {1309 ,U'\U000104CE'}, {1311 ,U'\U000104CF'}, {1313 ,U'\U000104D0'}, {1315 ,U'\U000104D1'}, {1317 ,U'\U000104D2'}, {1319 ,U'\U000104D3'}, {1321 ,U'\U00010C80'}, {1323 ,U'\U00010C81'}, {1325 ,U'\U00010C82'}, {1327 ,U'\U00010C83'}, - {1329 ,U'\U00010C84'}, {1331 ,U'\U00010C85'}, {1333 ,U'\U00010C86'}, {1335 ,U'\U00010C87'}, {1337 ,U'\U00010C88'}, {1339 ,U'\U00010C89'}, {1341 ,U'\U00010C8A'}, {1343 ,U'\U00010C8B'}, {1345 ,U'\U00010C8C'}, {1347 ,U'\U00010C8D'}, {1349 ,U'\U00010C8E'}, {1351 ,U'\U00010C8F'}, {1353 ,U'\U00010C90'}, {1355 ,U'\U00010C91'}, {1357 ,U'\U00010C92'}, {1359 ,U'\U00010C93'}, - {1361 ,U'\U00010C94'}, {1363 ,U'\U00010C95'}, {1365 ,U'\U00010C96'}, {1367 ,U'\U00010C97'}, {1369 ,U'\U00010C98'}, {1371 ,U'\U00010C99'}, {1373 ,U'\U00010C9A'}, {1375 ,U'\U00010C9B'}, {1377 ,U'\U00010C9C'}, {1379 ,U'\U00010C9D'}, {1381 ,U'\U00010C9E'}, {1383 ,U'\U00010C9F'}, {1385 ,U'\U00010CA0'}, {1387 ,U'\U00010CA1'}, {1389 ,U'\U00010CA2'}, {1391 ,U'\U00010CA3'}, - {1393 ,U'\U00010CA4'}, {1395 ,U'\U00010CA5'}, {1397 ,U'\U00010CA6'}, {1399 ,U'\U00010CA7'}, {1401 ,U'\U00010CA8'}, {1403 ,U'\U00010CA9'}, {1405 ,U'\U00010CAA'}, {1407 ,U'\U00010CAB'}, {1409 ,U'\U00010CAC'}, {1411 ,U'\U00010CAD'}, {1413 ,U'\U00010CAE'}, {1415 ,U'\U00010CAF'}, {1417 ,U'\U00010CB0'}, {1419 ,U'\U00010CB1'}, {1421 ,U'\U00010CB2'}, {1423 ,U'\U000118A0'}, - {1425 ,U'\U000118A1'}, {1427 ,U'\U000118A2'}, {1429 ,U'\U000118A3'}, {1431 ,U'\U000118A4'}, {1433 ,U'\U000118A5'}, {1435 ,U'\U000118A6'}, {1437 ,U'\U000118A7'}, {1439 ,U'\U000118A8'}, {1441 ,U'\U000118A9'}, {1443 ,U'\U000118AA'}, {1445 ,U'\U000118AB'}, {1447 ,U'\U000118AC'}, {1449 ,U'\U000118AD'}, {1451 ,U'\U000118AE'}, {1453 ,U'\U000118AF'}, {1455 ,U'\U000118B0'}, - {1457 ,U'\U000118B1'}, {1459 ,U'\U000118B2'}, {1461 ,U'\U000118B3'}, {1463 ,U'\U000118B4'}, {1465 ,U'\U000118B5'}, {1467 ,U'\U000118B6'}, {1469 ,U'\U000118B7'}, {1471 ,U'\U000118B8'}, {1473 ,U'\U000118B9'}, {1475 ,U'\U000118BA'}, {1477 ,U'\U000118BB'}, {1479 ,U'\U000118BC'}, {1481 ,U'\U000118BD'}, {1483 ,U'\U000118BE'}, {1485 ,U'\U000118BF'}, {1487 ,U'\U00016E40'}, - {1489 ,U'\U00016E41'}, {1491 ,U'\U00016E42'}, {1493 ,U'\U00016E43'}, {1495 ,U'\U00016E44'}, {1497 ,U'\U00016E45'}, {1499 ,U'\U00016E46'}, {1501 ,U'\U00016E47'}, {1503 ,U'\U00016E48'}, {1505 ,U'\U00016E49'}, {1507 ,U'\U00016E4A'}, {1509 ,U'\U00016E4B'}, {1511 ,U'\U00016E4C'}, {1513 ,U'\U00016E4D'}, {1515 ,U'\U00016E4E'}, {1517 ,U'\U00016E4F'}, {1519 ,U'\U00016E50'}, - {1521 ,U'\U00016E51'}, {1523 ,U'\U00016E52'}, {1525 ,U'\U00016E53'}, {1527 ,U'\U00016E54'}, {1529 ,U'\U00016E55'}, {1531 ,U'\U00016E56'}, {1533 ,U'\U00016E57'}, {1535 ,U'\U00016E58'}, {1537 ,U'\U00016E59'}, {1539 ,U'\U00016E5A'}, {1541 ,U'\U00016E5B'}, {1543 ,U'\U00016E5C'}, {1545 ,U'\U00016E5D'}, {1547 ,U'\U00016E5E'}, {1549 ,U'\U00016E5F'}, {1551 ,U'\U0001E900'}, - {1553 ,U'\U0001E901'}, {1555 ,U'\U0001E902'}, {1557 ,U'\U0001E903'}, {1559 ,U'\U0001E904'}, {1561 ,U'\U0001E905'}, {1563 ,U'\U0001E906'}, {1565 ,U'\U0001E907'}, {1567 ,U'\U0001E908'}, {1569 ,U'\U0001E909'}, {1571 ,U'\U0001E90A'}, {1573 ,U'\U0001E90B'}, {1575 ,U'\U0001E90C'}, {1577 ,U'\U0001E90D'}, {1579 ,U'\U0001E90E'}, {1581 ,U'\U0001E90F'}, {1583 ,U'\U0001E910'}, - {1585 ,U'\U0001E911'}, {1587 ,U'\U0001E912'}, {1589 ,U'\U0001E913'}, {1591 ,U'\U0001E914'}, {1593 ,U'\U0001E915'}, {1595 ,U'\U0001E916'}, {1597 ,U'\U0001E917'}, {1599 ,U'\U0001E918'}, {1601 ,U'\U0001E919'}, {1603 ,U'\U0001E91A'}, {1605 ,U'\U0001E91B'}, {1607 ,U'\U0001E91C'}, {1609 ,U'\U0001E91D'}, {1611 ,U'\U0001E91E'}, {1613 ,U'\U0001E91F'}, {1615 ,U'\U0001E920'}, - {1617 ,U'\U0001E921'}, {1619 , 0} + {593 ,U'\u13F3'}, {594 ,U'\u13F4'}, {595 ,U'\u13F5'}, {596 ,U'\u1C89'}, {597 ,U'\u1C90'}, {598 ,U'\u1C91'}, {599 ,U'\u1C92'}, {600 ,U'\u1C93'}, {601 ,U'\u1C94'}, {602 ,U'\u1C95'}, {603 ,U'\u1C96'}, {604 ,U'\u1C97'}, {605 ,U'\u1C98'}, {606 ,U'\u1C99'}, {607 ,U'\u1C9A'}, {608 ,U'\u1C9B'}, + {609 ,U'\u1C9C'}, {610 ,U'\u1C9D'}, {611 ,U'\u1C9E'}, {612 ,U'\u1C9F'}, {613 ,U'\u1CA0'}, {614 ,U'\u1CA1'}, {615 ,U'\u1CA2'}, {616 ,U'\u1CA3'}, {617 ,U'\u1CA4'}, {618 ,U'\u1CA5'}, {619 ,U'\u1CA6'}, {620 ,U'\u1CA7'}, {621 ,U'\u1CA8'}, {622 ,U'\u1CA9'}, {623 ,U'\u1CAA'}, {624 ,U'\u1CAB'}, + {625 ,U'\u1CAC'}, {626 ,U'\u1CAD'}, {627 ,U'\u1CAE'}, {628 ,U'\u1CAF'}, {629 ,U'\u1CB0'}, {630 ,U'\u1CB1'}, {631 ,U'\u1CB2'}, {632 ,U'\u1CB3'}, {633 ,U'\u1CB4'}, {634 ,U'\u1CB5'}, {635 ,U'\u1CB6'}, {636 ,U'\u1CB7'}, {637 ,U'\u1CB8'}, {638 ,U'\u1CB9'}, {639 ,U'\u1CBA'}, {640 ,U'\u1CBD'}, + {641 ,U'\u1CBE'}, {642 ,U'\u1CBF'}, {643 ,U'\u1E00'}, {644 ,U'\u1E02'}, {645 ,U'\u1E04'}, {646 ,U'\u1E06'}, {647 ,U'\u1E08'}, {648 ,U'\u1E0A'}, {649 ,U'\u1E0C'}, {650 ,U'\u1E0E'}, {651 ,U'\u1E10'}, {652 ,U'\u1E12'}, {653 ,U'\u1E14'}, {654 ,U'\u1E16'}, {655 ,U'\u1E18'}, {656 ,U'\u1E1A'}, + {657 ,U'\u1E1C'}, {658 ,U'\u1E1E'}, {659 ,U'\u1E20'}, {660 ,U'\u1E22'}, {661 ,U'\u1E24'}, {662 ,U'\u1E26'}, {663 ,U'\u1E28'}, {664 ,U'\u1E2A'}, {665 ,U'\u1E2C'}, {666 ,U'\u1E2E'}, {667 ,U'\u1E30'}, {668 ,U'\u1E32'}, {669 ,U'\u1E34'}, {670 ,U'\u1E36'}, {671 ,U'\u1E38'}, {672 ,U'\u1E3A'}, + {673 ,U'\u1E3C'}, {674 ,U'\u1E3E'}, {675 ,U'\u1E40'}, {676 ,U'\u1E42'}, {677 ,U'\u1E44'}, {678 ,U'\u1E46'}, {679 ,U'\u1E48'}, {680 ,U'\u1E4A'}, {681 ,U'\u1E4C'}, {682 ,U'\u1E4E'}, {683 ,U'\u1E50'}, {684 ,U'\u1E52'}, {685 ,U'\u1E54'}, {686 ,U'\u1E56'}, {687 ,U'\u1E58'}, {688 ,U'\u1E5A'}, + {689 ,U'\u1E5C'}, {690 ,U'\u1E5E'}, {691 ,U'\u1E60'}, {692 ,U'\u1E62'}, {693 ,U'\u1E64'}, {694 ,U'\u1E66'}, {695 ,U'\u1E68'}, {696 ,U'\u1E6A'}, {697 ,U'\u1E6C'}, {698 ,U'\u1E6E'}, {699 ,U'\u1E70'}, {700 ,U'\u1E72'}, {701 ,U'\u1E74'}, {702 ,U'\u1E76'}, {703 ,U'\u1E78'}, {704 ,U'\u1E7A'}, + {705 ,U'\u1E7C'}, {706 ,U'\u1E7E'}, {707 ,U'\u1E80'}, {708 ,U'\u1E82'}, {709 ,U'\u1E84'}, {710 ,U'\u1E86'}, {711 ,U'\u1E88'}, {712 ,U'\u1E8A'}, {713 ,U'\u1E8C'}, {714 ,U'\u1E8E'}, {715 ,U'\u1E90'}, {716 ,U'\u1E92'}, {717 ,U'\u1E94'}, {718 ,U'\u1E9E'}, {719 ,U'\u1EA0'}, {720 ,U'\u1EA2'}, + {721 ,U'\u1EA4'}, {722 ,U'\u1EA6'}, {723 ,U'\u1EA8'}, {724 ,U'\u1EAA'}, {725 ,U'\u1EAC'}, {726 ,U'\u1EAE'}, {727 ,U'\u1EB0'}, {728 ,U'\u1EB2'}, {729 ,U'\u1EB4'}, {730 ,U'\u1EB6'}, {731 ,U'\u1EB8'}, {732 ,U'\u1EBA'}, {733 ,U'\u1EBC'}, {734 ,U'\u1EBE'}, {735 ,U'\u1EC0'}, {736 ,U'\u1EC2'}, + {737 ,U'\u1EC4'}, {738 ,U'\u1EC6'}, {739 ,U'\u1EC8'}, {740 ,U'\u1ECA'}, {741 ,U'\u1ECC'}, {742 ,U'\u1ECE'}, {743 ,U'\u1ED0'}, {744 ,U'\u1ED2'}, {745 ,U'\u1ED4'}, {746 ,U'\u1ED6'}, {747 ,U'\u1ED8'}, {748 ,U'\u1EDA'}, {749 ,U'\u1EDC'}, {750 ,U'\u1EDE'}, {751 ,U'\u1EE0'}, {752 ,U'\u1EE2'}, + {753 ,U'\u1EE4'}, {754 ,U'\u1EE6'}, {755 ,U'\u1EE8'}, {756 ,U'\u1EEA'}, {757 ,U'\u1EEC'}, {758 ,U'\u1EEE'}, {759 ,U'\u1EF0'}, {760 ,U'\u1EF2'}, {761 ,U'\u1EF4'}, {762 ,U'\u1EF6'}, {763 ,U'\u1EF8'}, {764 ,U'\u1EFA'}, {765 ,U'\u1EFC'}, {766 ,U'\u1EFE'}, {767 ,U'\u1F08'}, {768 ,U'\u1F09'}, + {769 ,U'\u1F0A'}, {770 ,U'\u1F0B'}, {771 ,U'\u1F0C'}, {772 ,U'\u1F0D'}, {773 ,U'\u1F0E'}, {774 ,U'\u1F0F'}, {775 ,U'\u1F18'}, {776 ,U'\u1F19'}, {777 ,U'\u1F1A'}, {778 ,U'\u1F1B'}, {779 ,U'\u1F1C'}, {780 ,U'\u1F1D'}, {781 ,U'\u1F28'}, {782 ,U'\u1F29'}, {783 ,U'\u1F2A'}, {784 ,U'\u1F2B'}, + {785 ,U'\u1F2C'}, {786 ,U'\u1F2D'}, {787 ,U'\u1F2E'}, {788 ,U'\u1F2F'}, {789 ,U'\u1F38'}, {790 ,U'\u1F39'}, {791 ,U'\u1F3A'}, {792 ,U'\u1F3B'}, {793 ,U'\u1F3C'}, {794 ,U'\u1F3D'}, {795 ,U'\u1F3E'}, {796 ,U'\u1F3F'}, {797 ,U'\u1F48'}, {798 ,U'\u1F49'}, {799 ,U'\u1F4A'}, {800 ,U'\u1F4B'}, + {801 ,U'\u1F4C'}, {802 ,U'\u1F4D'}, {803 ,U'\u1F59'}, {804 ,U'\u1F5B'}, {805 ,U'\u1F5D'}, {806 ,U'\u1F5F'}, {807 ,U'\u1F68'}, {808 ,U'\u1F69'}, {809 ,U'\u1F6A'}, {810 ,U'\u1F6B'}, {811 ,U'\u1F6C'}, {812 ,U'\u1F6D'}, {813 ,U'\u1F6E'}, {814 ,U'\u1F6F'}, {815 ,U'\u1F88'}, {816 ,U'\u1F89'}, + {817 ,U'\u1F8A'}, {818 ,U'\u1F8B'}, {819 ,U'\u1F8C'}, {820 ,U'\u1F8D'}, {821 ,U'\u1F8E'}, {822 ,U'\u1F8F'}, {823 ,U'\u1F98'}, {824 ,U'\u1F99'}, {825 ,U'\u1F9A'}, {826 ,U'\u1F9B'}, {827 ,U'\u1F9C'}, {828 ,U'\u1F9D'}, {829 ,U'\u1F9E'}, {830 ,U'\u1F9F'}, {831 ,U'\u1FA8'}, {832 ,U'\u1FA9'}, + {833 ,U'\u1FAA'}, {834 ,U'\u1FAB'}, {835 ,U'\u1FAC'}, {836 ,U'\u1FAD'}, {837 ,U'\u1FAE'}, {838 ,U'\u1FAF'}, {839 ,U'\u1FB8'}, {840 ,U'\u1FB9'}, {841 ,U'\u1FBA'}, {842 ,U'\u1FBB'}, {843 ,U'\u1FBC'}, {844 ,U'\u1FC8'}, {845 ,U'\u1FC9'}, {846 ,U'\u1FCA'}, {847 ,U'\u1FCB'}, {848 ,U'\u1FCC'}, + {849 ,U'\u1FD8'}, {850 ,U'\u1FD9'}, {851 ,U'\u1FDA'}, {852 ,U'\u1FDB'}, {853 ,U'\u1FE8'}, {854 ,U'\u1FE9'}, {855 ,U'\u1FEA'}, {856 ,U'\u1FEB'}, {857 ,U'\u1FEC'}, {858 ,U'\u1FF8'}, {859 ,U'\u1FF9'}, {860 ,U'\u1FFA'}, {861 ,U'\u1FFB'}, {862 ,U'\u1FFC'}, {863 ,U'\u2126'}, {864 ,U'\u212A'}, + {865 ,U'\u212B'}, {866 ,U'\u2132'}, {867 ,U'\u2160'}, {868 ,U'\u2161'}, {869 ,U'\u2162'}, {870 ,U'\u2163'}, {871 ,U'\u2164'}, {872 ,U'\u2165'}, {873 ,U'\u2166'}, {874 ,U'\u2167'}, {875 ,U'\u2168'}, {876 ,U'\u2169'}, {877 ,U'\u216A'}, {878 ,U'\u216B'}, {879 ,U'\u216C'}, {880 ,U'\u216D'}, + {881 ,U'\u216E'}, {882 ,U'\u216F'}, {883 ,U'\u2183'}, {884 ,U'\u24B6'}, {885 ,U'\u24B7'}, {886 ,U'\u24B8'}, {887 ,U'\u24B9'}, {888 ,U'\u24BA'}, {889 ,U'\u24BB'}, {890 ,U'\u24BC'}, {891 ,U'\u24BD'}, {892 ,U'\u24BE'}, {893 ,U'\u24BF'}, {894 ,U'\u24C0'}, {895 ,U'\u24C1'}, {896 ,U'\u24C2'}, + {897 ,U'\u24C3'}, {898 ,U'\u24C4'}, {899 ,U'\u24C5'}, {900 ,U'\u24C6'}, {901 ,U'\u24C7'}, {902 ,U'\u24C8'}, {903 ,U'\u24C9'}, {904 ,U'\u24CA'}, {905 ,U'\u24CB'}, {906 ,U'\u24CC'}, {907 ,U'\u24CD'}, {908 ,U'\u24CE'}, {909 ,U'\u24CF'}, {910 ,U'\u2C00'}, {911 ,U'\u2C01'}, {912 ,U'\u2C02'}, + {913 ,U'\u2C03'}, {914 ,U'\u2C04'}, {915 ,U'\u2C05'}, {916 ,U'\u2C06'}, {917 ,U'\u2C07'}, {918 ,U'\u2C08'}, {919 ,U'\u2C09'}, {920 ,U'\u2C0A'}, {921 ,U'\u2C0B'}, {922 ,U'\u2C0C'}, {923 ,U'\u2C0D'}, {924 ,U'\u2C0E'}, {925 ,U'\u2C0F'}, {926 ,U'\u2C10'}, {927 ,U'\u2C11'}, {928 ,U'\u2C12'}, + {929 ,U'\u2C13'}, {930 ,U'\u2C14'}, {931 ,U'\u2C15'}, {932 ,U'\u2C16'}, {933 ,U'\u2C17'}, {934 ,U'\u2C18'}, {935 ,U'\u2C19'}, {936 ,U'\u2C1A'}, {937 ,U'\u2C1B'}, {938 ,U'\u2C1C'}, {939 ,U'\u2C1D'}, {940 ,U'\u2C1E'}, {941 ,U'\u2C1F'}, {942 ,U'\u2C20'}, {943 ,U'\u2C21'}, {944 ,U'\u2C22'}, + {945 ,U'\u2C23'}, {946 ,U'\u2C24'}, {947 ,U'\u2C25'}, {948 ,U'\u2C26'}, {949 ,U'\u2C27'}, {950 ,U'\u2C28'}, {951 ,U'\u2C29'}, {952 ,U'\u2C2A'}, {953 ,U'\u2C2B'}, {954 ,U'\u2C2C'}, {955 ,U'\u2C2D'}, {956 ,U'\u2C2E'}, {957 ,U'\u2C2F'}, {958 ,U'\u2C60'}, {959 ,U'\u2C62'}, {960 ,U'\u2C63'}, + {961 ,U'\u2C64'}, {962 ,U'\u2C67'}, {963 ,U'\u2C69'}, {964 ,U'\u2C6B'}, {965 ,U'\u2C6D'}, {966 ,U'\u2C6E'}, {967 ,U'\u2C6F'}, {968 ,U'\u2C70'}, {969 ,U'\u2C72'}, {970 ,U'\u2C75'}, {971 ,U'\u2C7E'}, {972 ,U'\u2C7F'}, {973 ,U'\u2C80'}, {974 ,U'\u2C82'}, {975 ,U'\u2C84'}, {976 ,U'\u2C86'}, + {977 ,U'\u2C88'}, {978 ,U'\u2C8A'}, {979 ,U'\u2C8C'}, {980 ,U'\u2C8E'}, {981 ,U'\u2C90'}, {982 ,U'\u2C92'}, {983 ,U'\u2C94'}, {984 ,U'\u2C96'}, {985 ,U'\u2C98'}, {986 ,U'\u2C9A'}, {987 ,U'\u2C9C'}, {988 ,U'\u2C9E'}, {989 ,U'\u2CA0'}, {990 ,U'\u2CA2'}, {991 ,U'\u2CA4'}, {992 ,U'\u2CA6'}, + {993 ,U'\u2CA8'}, {994 ,U'\u2CAA'}, {995 ,U'\u2CAC'}, {996 ,U'\u2CAE'}, {997 ,U'\u2CB0'}, {998 ,U'\u2CB2'}, {999 ,U'\u2CB4'}, {1000 ,U'\u2CB6'}, {1001 ,U'\u2CB8'}, {1002 ,U'\u2CBA'}, {1003 ,U'\u2CBC'}, {1004 ,U'\u2CBE'}, {1005 ,U'\u2CC0'}, {1006 ,U'\u2CC2'}, {1007 ,U'\u2CC4'}, {1008 ,U'\u2CC6'}, + {1009 ,U'\u2CC8'}, {1010 ,U'\u2CCA'}, {1011 ,U'\u2CCC'}, {1012 ,U'\u2CCE'}, {1013 ,U'\u2CD0'}, {1014 ,U'\u2CD2'}, {1015 ,U'\u2CD4'}, {1016 ,U'\u2CD6'}, {1017 ,U'\u2CD8'}, {1018 ,U'\u2CDA'}, {1019 ,U'\u2CDC'}, {1020 ,U'\u2CDE'}, {1021 ,U'\u2CE0'}, {1022 ,U'\u2CE2'}, {1023 ,U'\u2CEB'}, {1024 ,U'\u2CED'}, + {1025 ,U'\u2CF2'}, {1026 ,U'\uA640'}, {1027 ,U'\uA642'}, {1028 ,U'\uA644'}, {1029 ,U'\uA646'}, {1030 ,U'\uA648'}, {1031 ,U'\uA64A'}, {1032 ,U'\uA64C'}, {1033 ,U'\uA64E'}, {1034 ,U'\uA650'}, {1035 ,U'\uA652'}, {1036 ,U'\uA654'}, {1037 ,U'\uA656'}, {1038 ,U'\uA658'}, {1039 ,U'\uA65A'}, {1040 ,U'\uA65C'}, + {1041 ,U'\uA65E'}, {1042 ,U'\uA660'}, {1043 ,U'\uA662'}, {1044 ,U'\uA664'}, {1045 ,U'\uA666'}, {1046 ,U'\uA668'}, {1047 ,U'\uA66A'}, {1048 ,U'\uA66C'}, {1049 ,U'\uA680'}, {1050 ,U'\uA682'}, {1051 ,U'\uA684'}, {1052 ,U'\uA686'}, {1053 ,U'\uA688'}, {1054 ,U'\uA68A'}, {1055 ,U'\uA68C'}, {1056 ,U'\uA68E'}, + {1057 ,U'\uA690'}, {1058 ,U'\uA692'}, {1059 ,U'\uA694'}, {1060 ,U'\uA696'}, {1061 ,U'\uA698'}, {1062 ,U'\uA69A'}, {1063 ,U'\uA722'}, {1064 ,U'\uA724'}, {1065 ,U'\uA726'}, {1066 ,U'\uA728'}, {1067 ,U'\uA72A'}, {1068 ,U'\uA72C'}, {1069 ,U'\uA72E'}, {1070 ,U'\uA732'}, {1071 ,U'\uA734'}, {1072 ,U'\uA736'}, + {1073 ,U'\uA738'}, {1074 ,U'\uA73A'}, {1075 ,U'\uA73C'}, {1076 ,U'\uA73E'}, {1077 ,U'\uA740'}, {1078 ,U'\uA742'}, {1079 ,U'\uA744'}, {1080 ,U'\uA746'}, {1081 ,U'\uA748'}, {1082 ,U'\uA74A'}, {1083 ,U'\uA74C'}, {1084 ,U'\uA74E'}, {1085 ,U'\uA750'}, {1086 ,U'\uA752'}, {1087 ,U'\uA754'}, {1088 ,U'\uA756'}, + {1089 ,U'\uA758'}, {1090 ,U'\uA75A'}, {1091 ,U'\uA75C'}, {1092 ,U'\uA75E'}, {1093 ,U'\uA760'}, {1094 ,U'\uA762'}, {1095 ,U'\uA764'}, {1096 ,U'\uA766'}, {1097 ,U'\uA768'}, {1098 ,U'\uA76A'}, {1099 ,U'\uA76C'}, {1100 ,U'\uA76E'}, {1101 ,U'\uA779'}, {1102 ,U'\uA77B'}, {1103 ,U'\uA77D'}, {1104 ,U'\uA77E'}, + {1105 ,U'\uA780'}, {1106 ,U'\uA782'}, {1107 ,U'\uA784'}, {1108 ,U'\uA786'}, {1109 ,U'\uA78B'}, {1110 ,U'\uA78D'}, {1111 ,U'\uA790'}, {1112 ,U'\uA792'}, {1113 ,U'\uA796'}, {1114 ,U'\uA798'}, {1115 ,U'\uA79A'}, {1116 ,U'\uA79C'}, {1117 ,U'\uA79E'}, {1118 ,U'\uA7A0'}, {1119 ,U'\uA7A2'}, {1120 ,U'\uA7A4'}, + {1121 ,U'\uA7A6'}, {1122 ,U'\uA7A8'}, {1123 ,U'\uA7AA'}, {1124 ,U'\uA7AB'}, {1125 ,U'\uA7AC'}, {1126 ,U'\uA7AD'}, {1127 ,U'\uA7AE'}, {1128 ,U'\uA7B0'}, {1129 ,U'\uA7B1'}, {1130 ,U'\uA7B2'}, {1131 ,U'\uA7B3'}, {1132 ,U'\uA7B4'}, {1133 ,U'\uA7B6'}, {1134 ,U'\uA7B8'}, {1135 ,U'\uA7BA'}, {1136 ,U'\uA7BC'}, + {1137 ,U'\uA7BE'}, {1138 ,U'\uA7C0'}, {1139 ,U'\uA7C2'}, {1140 ,U'\uA7C4'}, {1141 ,U'\uA7C5'}, {1142 ,U'\uA7C6'}, {1143 ,U'\uA7C7'}, {1144 ,U'\uA7C9'}, {1145 ,U'\uA7CB'}, {1146 ,U'\uA7CC'}, {1147 ,U'\uA7D0'}, {1148 ,U'\uA7D6'}, {1149 ,U'\uA7D8'}, {1150 ,U'\uA7DA'}, {1151 ,U'\uA7DC'}, {1152 ,U'\uA7F5'}, + {1153 ,U'\uFF21'}, {1154 ,U'\uFF22'}, {1155 ,U'\uFF23'}, {1156 ,U'\uFF24'}, {1157 ,U'\uFF25'}, {1158 ,U'\uFF26'}, {1159 ,U'\uFF27'}, {1160 ,U'\uFF28'}, {1161 ,U'\uFF29'}, {1162 ,U'\uFF2A'}, {1163 ,U'\uFF2B'}, {1164 ,U'\uFF2C'}, {1165 ,U'\uFF2D'}, {1166 ,U'\uFF2E'}, {1167 ,U'\uFF2F'}, {1168 ,U'\uFF30'}, + {1169 ,U'\uFF31'}, {1170 ,U'\uFF32'}, {1171 ,U'\uFF33'}, {1172 ,U'\uFF34'}, {1173 ,U'\uFF35'}, {1174 ,U'\uFF36'}, {1175 ,U'\uFF37'}, {1176 ,U'\uFF38'}, {1177 ,U'\uFF39'}, {1178 ,U'\uFF3A'}, {1179 ,U'\U00010400'}, {1181 ,U'\U00010401'}, {1183 ,U'\U00010402'}, {1185 ,U'\U00010403'}, {1187 ,U'\U00010404'}, {1189 ,U'\U00010405'}, + {1191 ,U'\U00010406'}, {1193 ,U'\U00010407'}, {1195 ,U'\U00010408'}, {1197 ,U'\U00010409'}, {1199 ,U'\U0001040A'}, {1201 ,U'\U0001040B'}, {1203 ,U'\U0001040C'}, {1205 ,U'\U0001040D'}, {1207 ,U'\U0001040E'}, {1209 ,U'\U0001040F'}, {1211 ,U'\U00010410'}, {1213 ,U'\U00010411'}, {1215 ,U'\U00010412'}, {1217 ,U'\U00010413'}, {1219 ,U'\U00010414'}, {1221 ,U'\U00010415'}, + {1223 ,U'\U00010416'}, {1225 ,U'\U00010417'}, {1227 ,U'\U00010418'}, {1229 ,U'\U00010419'}, {1231 ,U'\U0001041A'}, {1233 ,U'\U0001041B'}, {1235 ,U'\U0001041C'}, {1237 ,U'\U0001041D'}, {1239 ,U'\U0001041E'}, {1241 ,U'\U0001041F'}, {1243 ,U'\U00010420'}, {1245 ,U'\U00010421'}, {1247 ,U'\U00010422'}, {1249 ,U'\U00010423'}, {1251 ,U'\U00010424'}, {1253 ,U'\U00010425'}, + {1255 ,U'\U00010426'}, {1257 ,U'\U00010427'}, {1259 ,U'\U000104B0'}, {1261 ,U'\U000104B1'}, {1263 ,U'\U000104B2'}, {1265 ,U'\U000104B3'}, {1267 ,U'\U000104B4'}, {1269 ,U'\U000104B5'}, {1271 ,U'\U000104B6'}, {1273 ,U'\U000104B7'}, {1275 ,U'\U000104B8'}, {1277 ,U'\U000104B9'}, {1279 ,U'\U000104BA'}, {1281 ,U'\U000104BB'}, {1283 ,U'\U000104BC'}, {1285 ,U'\U000104BD'}, + {1287 ,U'\U000104BE'}, {1289 ,U'\U000104BF'}, {1291 ,U'\U000104C0'}, {1293 ,U'\U000104C1'}, {1295 ,U'\U000104C2'}, {1297 ,U'\U000104C3'}, {1299 ,U'\U000104C4'}, {1301 ,U'\U000104C5'}, {1303 ,U'\U000104C6'}, {1305 ,U'\U000104C7'}, {1307 ,U'\U000104C8'}, {1309 ,U'\U000104C9'}, {1311 ,U'\U000104CA'}, {1313 ,U'\U000104CB'}, {1315 ,U'\U000104CC'}, {1317 ,U'\U000104CD'}, + {1319 ,U'\U000104CE'}, {1321 ,U'\U000104CF'}, {1323 ,U'\U000104D0'}, {1325 ,U'\U000104D1'}, {1327 ,U'\U000104D2'}, {1329 ,U'\U000104D3'}, {1331 ,U'\U00010570'}, {1333 ,U'\U00010571'}, {1335 ,U'\U00010572'}, {1337 ,U'\U00010573'}, {1339 ,U'\U00010574'}, {1341 ,U'\U00010575'}, {1343 ,U'\U00010576'}, {1345 ,U'\U00010577'}, {1347 ,U'\U00010578'}, {1349 ,U'\U00010579'}, + {1351 ,U'\U0001057A'}, {1353 ,U'\U0001057C'}, {1355 ,U'\U0001057D'}, {1357 ,U'\U0001057E'}, {1359 ,U'\U0001057F'}, {1361 ,U'\U00010580'}, {1363 ,U'\U00010581'}, {1365 ,U'\U00010582'}, {1367 ,U'\U00010583'}, {1369 ,U'\U00010584'}, {1371 ,U'\U00010585'}, {1373 ,U'\U00010586'}, {1375 ,U'\U00010587'}, {1377 ,U'\U00010588'}, {1379 ,U'\U00010589'}, {1381 ,U'\U0001058A'}, + {1383 ,U'\U0001058C'}, {1385 ,U'\U0001058D'}, {1387 ,U'\U0001058E'}, {1389 ,U'\U0001058F'}, {1391 ,U'\U00010590'}, {1393 ,U'\U00010591'}, {1395 ,U'\U00010592'}, {1397 ,U'\U00010594'}, {1399 ,U'\U00010595'}, {1401 ,U'\U00010C80'}, {1403 ,U'\U00010C81'}, {1405 ,U'\U00010C82'}, {1407 ,U'\U00010C83'}, {1409 ,U'\U00010C84'}, {1411 ,U'\U00010C85'}, {1413 ,U'\U00010C86'}, + {1415 ,U'\U00010C87'}, {1417 ,U'\U00010C88'}, {1419 ,U'\U00010C89'}, {1421 ,U'\U00010C8A'}, {1423 ,U'\U00010C8B'}, {1425 ,U'\U00010C8C'}, {1427 ,U'\U00010C8D'}, {1429 ,U'\U00010C8E'}, {1431 ,U'\U00010C8F'}, {1433 ,U'\U00010C90'}, {1435 ,U'\U00010C91'}, {1437 ,U'\U00010C92'}, {1439 ,U'\U00010C93'}, {1441 ,U'\U00010C94'}, {1443 ,U'\U00010C95'}, {1445 ,U'\U00010C96'}, + {1447 ,U'\U00010C97'}, {1449 ,U'\U00010C98'}, {1451 ,U'\U00010C99'}, {1453 ,U'\U00010C9A'}, {1455 ,U'\U00010C9B'}, {1457 ,U'\U00010C9C'}, {1459 ,U'\U00010C9D'}, {1461 ,U'\U00010C9E'}, {1463 ,U'\U00010C9F'}, {1465 ,U'\U00010CA0'}, {1467 ,U'\U00010CA1'}, {1469 ,U'\U00010CA2'}, {1471 ,U'\U00010CA3'}, {1473 ,U'\U00010CA4'}, {1475 ,U'\U00010CA5'}, {1477 ,U'\U00010CA6'}, + {1479 ,U'\U00010CA7'}, {1481 ,U'\U00010CA8'}, {1483 ,U'\U00010CA9'}, {1485 ,U'\U00010CAA'}, {1487 ,U'\U00010CAB'}, {1489 ,U'\U00010CAC'}, {1491 ,U'\U00010CAD'}, {1493 ,U'\U00010CAE'}, {1495 ,U'\U00010CAF'}, {1497 ,U'\U00010CB0'}, {1499 ,U'\U00010CB1'}, {1501 ,U'\U00010CB2'}, {1503 ,U'\U00010D50'}, {1505 ,U'\U00010D51'}, {1507 ,U'\U00010D52'}, {1509 ,U'\U00010D53'}, + {1511 ,U'\U00010D54'}, {1513 ,U'\U00010D55'}, {1515 ,U'\U00010D56'}, {1517 ,U'\U00010D57'}, {1519 ,U'\U00010D58'}, {1521 ,U'\U00010D59'}, {1523 ,U'\U00010D5A'}, {1525 ,U'\U00010D5B'}, {1527 ,U'\U00010D5C'}, {1529 ,U'\U00010D5D'}, {1531 ,U'\U00010D5E'}, {1533 ,U'\U00010D5F'}, {1535 ,U'\U00010D60'}, {1537 ,U'\U00010D61'}, {1539 ,U'\U00010D62'}, {1541 ,U'\U00010D63'}, + {1543 ,U'\U00010D64'}, {1545 ,U'\U00010D65'}, {1547 ,U'\U000118A0'}, {1549 ,U'\U000118A1'}, {1551 ,U'\U000118A2'}, {1553 ,U'\U000118A3'}, {1555 ,U'\U000118A4'}, {1557 ,U'\U000118A5'}, {1559 ,U'\U000118A6'}, {1561 ,U'\U000118A7'}, {1563 ,U'\U000118A8'}, {1565 ,U'\U000118A9'}, {1567 ,U'\U000118AA'}, {1569 ,U'\U000118AB'}, {1571 ,U'\U000118AC'}, {1573 ,U'\U000118AD'}, + {1575 ,U'\U000118AE'}, {1577 ,U'\U000118AF'}, {1579 ,U'\U000118B0'}, {1581 ,U'\U000118B1'}, {1583 ,U'\U000118B2'}, {1585 ,U'\U000118B3'}, {1587 ,U'\U000118B4'}, {1589 ,U'\U000118B5'}, {1591 ,U'\U000118B6'}, {1593 ,U'\U000118B7'}, {1595 ,U'\U000118B8'}, {1597 ,U'\U000118B9'}, {1599 ,U'\U000118BA'}, {1601 ,U'\U000118BB'}, {1603 ,U'\U000118BC'}, {1605 ,U'\U000118BD'}, + {1607 ,U'\U000118BE'}, {1609 ,U'\U000118BF'}, {1611 ,U'\U00016E40'}, {1613 ,U'\U00016E41'}, {1615 ,U'\U00016E42'}, {1617 ,U'\U00016E43'}, {1619 ,U'\U00016E44'}, {1621 ,U'\U00016E45'}, {1623 ,U'\U00016E46'}, {1625 ,U'\U00016E47'}, {1627 ,U'\U00016E48'}, {1629 ,U'\U00016E49'}, {1631 ,U'\U00016E4A'}, {1633 ,U'\U00016E4B'}, {1635 ,U'\U00016E4C'}, {1637 ,U'\U00016E4D'}, + {1639 ,U'\U00016E4E'}, {1641 ,U'\U00016E4F'}, {1643 ,U'\U00016E50'}, {1645 ,U'\U00016E51'}, {1647 ,U'\U00016E52'}, {1649 ,U'\U00016E53'}, {1651 ,U'\U00016E54'}, {1653 ,U'\U00016E55'}, {1655 ,U'\U00016E56'}, {1657 ,U'\U00016E57'}, {1659 ,U'\U00016E58'}, {1661 ,U'\U00016E59'}, {1663 ,U'\U00016E5A'}, {1665 ,U'\U00016E5B'}, {1667 ,U'\U00016E5C'}, {1669 ,U'\U00016E5D'}, + {1671 ,U'\U00016E5E'}, {1673 ,U'\U00016E5F'}, {1675 ,U'\U0001E900'}, {1677 ,U'\U0001E901'}, {1679 ,U'\U0001E902'}, {1681 ,U'\U0001E903'}, {1683 ,U'\U0001E904'}, {1685 ,U'\U0001E905'}, {1687 ,U'\U0001E906'}, {1689 ,U'\U0001E907'}, {1691 ,U'\U0001E908'}, {1693 ,U'\U0001E909'}, {1695 ,U'\U0001E90A'}, {1697 ,U'\U0001E90B'}, {1699 ,U'\U0001E90C'}, {1701 ,U'\U0001E90D'}, + {1703 ,U'\U0001E90E'}, {1705 ,U'\U0001E90F'}, {1707 ,U'\U0001E910'}, {1709 ,U'\U0001E911'}, {1711 ,U'\U0001E912'}, {1713 ,U'\U0001E913'}, {1715 ,U'\U0001E914'}, {1717 ,U'\U0001E915'}, {1719 ,U'\U0001E916'}, {1721 ,U'\U0001E917'}, {1723 ,U'\U0001E918'}, {1725 ,U'\U0001E919'}, {1727 ,U'\U0001E91A'}, {1729 ,U'\U0001E91B'}, {1731 ,U'\U0001E91C'}, {1733 ,U'\U0001E91D'}, + {1735 ,U'\U0001E91E'}, {1737 ,U'\U0001E91F'}, {1739 ,U'\U0001E920'}, {1741 ,U'\U0001E921'}, {1743 , 0} }; - constexpr size_t uppercase_source_chars_length = 1393; + constexpr size_t uppercase_source_chars_length = 1460; const char16_t lowercase_chars[] = u"\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070" @@ -350,57 +362,61 @@ namespace sysstr::util::unicode u"\uAB92\uAB93\uAB94\uAB95\uAB96\uAB97\uAB98\uAB99\uAB9A\uAB9B\uAB9C\uAB9D\uAB9E\uAB9F\uABA0\uABA1" u"\uABA2\uABA3\uABA4\uABA5\uABA6\uABA7\uABA8\uABA9\uABAA\uABAB\uABAC\uABAD\uABAE\uABAF\uABB0\uABB1" u"\uABB2\uABB3\uABB4\uABB5\uABB6\uABB7\uABB8\uABB9\uABBA\uABBB\uABBC\uABBD\uABBE\uABBF\u13F8\u13F9" - u"\u13FA\u13FB\u13FC\u13FD\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB" - u"\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB" - u"\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA\u10FD" - u"\u10FE\u10FF\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B" - u"\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B" - u"\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B" - u"\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B" - u"\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95\u00DF\u1EA1\u1EA3" - u"\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3" - u"\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3" - u"\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF\u1F00\u1F01" - u"\u1F02\u1F03\u1F04\u1F05\u1F06\u1F07\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15\u1F20\u1F21\u1F22\u1F23" - u"\u1F24\u1F25\u1F26\u1F27\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35\u1F36\u1F37\u1F40\u1F41\u1F42\u1F43" - u"\u1F44\u1F45\u1F51\u1F53\u1F55\u1F57\u1F60\u1F61\u1F62\u1F63\u1F64\u1F65\u1F66\u1F67\u1F80\u1F81" - u"\u1F82\u1F83\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0\u1FA1" - u"\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6\u1FA7\u1FB0\u1FB1\u1F70\u1F71\u1FB3\u1F72\u1F73\u1F74\u1F75\u1FC3" - u"\u1FD0\u1FD1\u1F76\u1F77\u1FE0\u1FE1\u1F7A\u1F7B\u1FE5\u1F78\u1F79\u1F7C\u1F7D\u1FF3\u03C9\u006B" - u"\u00E5\u214E\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B\u217C\u217D" - u"\u217E\u217F\u2184\u24D0\u24D1\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA\u24DB\u24DC" - u"\u24DD\u24DE\u24DF\u24E0\u24E1\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u2C30\u2C31\u2C32" - u"\u2C33\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41\u2C42" - u"\u2C43\u2C44\u2C45\u2C46\u2C47\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51\u2C52" - u"\u2C53\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C61\u026B\u1D7D\u027D" - u"\u2C68\u2C6A\u2C6C\u0251\u0271\u0250\u0252\u2C73\u2C76\u023F\u0240\u2C81\u2C83\u2C85\u2C87\u2C89" - u"\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9" - u"\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9" - u"\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CEC\u2CEE\u2CF3" - u"\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F" - u"\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691" - u"\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F\uA733\uA735\uA737\uA739" - u"\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759" - u"\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA77A\uA77C\u1D79\uA77F\uA781" - u"\uA783\uA785\uA787\uA78C\u0265\uA791\uA793\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7" - u"\uA7A9\u0266\u025C\u0261\u026C\u026A\u029E\u0287\u029D\uAB53\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF" - u"\uA7C3\uA794\u0282\u1D8E\uA7C8\uA7CA\uA7F6\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49" - u"\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59" - u"\uFF5A\U00010428\U00010429\U0001042A\U0001042B\U0001042C\U0001042D\U0001042E\U0001042F\U00010430\U00010431\U00010432\U00010433\U00010434\U00010435\U00010436" - u"\U00010437\U00010438\U00010439\U0001043A\U0001043B\U0001043C\U0001043D\U0001043E\U0001043F\U00010440\U00010441\U00010442\U00010443\U00010444\U00010445\U00010446" - u"\U00010447\U00010448\U00010449\U0001044A\U0001044B\U0001044C\U0001044D\U0001044E\U0001044F\U000104D8\U000104D9\U000104DA\U000104DB\U000104DC\U000104DD\U000104DE" - u"\U000104DF\U000104E0\U000104E1\U000104E2\U000104E3\U000104E4\U000104E5\U000104E6\U000104E7\U000104E8\U000104E9\U000104EA\U000104EB\U000104EC\U000104ED\U000104EE" - u"\U000104EF\U000104F0\U000104F1\U000104F2\U000104F3\U000104F4\U000104F5\U000104F6\U000104F7\U000104F8\U000104F9\U000104FA\U000104FB\U00010CC0\U00010CC1\U00010CC2" - u"\U00010CC3\U00010CC4\U00010CC5\U00010CC6\U00010CC7\U00010CC8\U00010CC9\U00010CCA\U00010CCB\U00010CCC\U00010CCD\U00010CCE\U00010CCF\U00010CD0\U00010CD1\U00010CD2" - u"\U00010CD3\U00010CD4\U00010CD5\U00010CD6\U00010CD7\U00010CD8\U00010CD9\U00010CDA\U00010CDB\U00010CDC\U00010CDD\U00010CDE\U00010CDF\U00010CE0\U00010CE1\U00010CE2" - u"\U00010CE3\U00010CE4\U00010CE5\U00010CE6\U00010CE7\U00010CE8\U00010CE9\U00010CEA\U00010CEB\U00010CEC\U00010CED\U00010CEE\U00010CEF\U00010CF0\U00010CF1\U00010CF2" - u"\U000118C0\U000118C1\U000118C2\U000118C3\U000118C4\U000118C5\U000118C6\U000118C7\U000118C8\U000118C9\U000118CA\U000118CB\U000118CC\U000118CD\U000118CE\U000118CF" - u"\U000118D0\U000118D1\U000118D2\U000118D3\U000118D4\U000118D5\U000118D6\U000118D7\U000118D8\U000118D9\U000118DA\U000118DB\U000118DC\U000118DD\U000118DE\U000118DF" - u"\U00016E60\U00016E61\U00016E62\U00016E63\U00016E64\U00016E65\U00016E66\U00016E67\U00016E68\U00016E69\U00016E6A\U00016E6B\U00016E6C\U00016E6D\U00016E6E\U00016E6F" - u"\U00016E70\U00016E71\U00016E72\U00016E73\U00016E74\U00016E75\U00016E76\U00016E77\U00016E78\U00016E79\U00016E7A\U00016E7B\U00016E7C\U00016E7D\U00016E7E\U00016E7F" - u"\U0001E922\U0001E923\U0001E924\U0001E925\U0001E926\U0001E927\U0001E928\U0001E929\U0001E92A\U0001E92B\U0001E92C\U0001E92D\U0001E92E\U0001E92F\U0001E930\U0001E931" - u"\U0001E932\U0001E933\U0001E934\U0001E935\U0001E936\U0001E937\U0001E938\U0001E939\U0001E93A\U0001E93B\U0001E93C\U0001E93D\U0001E93E\U0001E93F\U0001E940\U0001E941" - u"\U0001E942\U0001E943"; + u"\u13FA\u13FB\u13FC\u13FD\u1C8A\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA" + u"\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA" + u"\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA" + u"\u10FD\u10FE\u10FF\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19" + u"\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39" + u"\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59" + u"\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79" + u"\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95\u00DF\u1EA1" + u"\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1" + u"\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1" + u"\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF\u1F00" + u"\u1F01\u1F02\u1F03\u1F04\u1F05\u1F06\u1F07\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15\u1F20\u1F21\u1F22" + u"\u1F23\u1F24\u1F25\u1F26\u1F27\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35\u1F36\u1F37\u1F40\u1F41\u1F42" + u"\u1F43\u1F44\u1F45\u1F51\u1F53\u1F55\u1F57\u1F60\u1F61\u1F62\u1F63\u1F64\u1F65\u1F66\u1F67\u1F80" + u"\u1F81\u1F82\u1F83\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0" + u"\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6\u1FA7\u1FB0\u1FB1\u1F70\u1F71\u1FB3\u1F72\u1F73\u1F74\u1F75" + u"\u1FC3\u1FD0\u1FD1\u1F76\u1F77\u1FE0\u1FE1\u1F7A\u1F7B\u1FE5\u1F78\u1F79\u1F7C\u1F7D\u1FF3\u03C9" + u"\u006B\u00E5\u214E\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B\u217C" + u"\u217D\u217E\u217F\u2184\u24D0\u24D1\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA\u24DB" + u"\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u2C30\u2C31" + u"\u2C32\u2C33\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41" + u"\u2C42\u2C43\u2C44\u2C45\u2C46\u2C47\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51" + u"\u2C52\u2C53\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C5F\u2C61\u026B" + u"\u1D7D\u027D\u2C68\u2C6A\u2C6C\u0251\u0271\u0250\u0252\u2C73\u2C76\u023F\u0240\u2C81\u2C83\u2C85" + u"\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5" + u"\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5" + u"\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CEC" + u"\u2CEE\u2CF3\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B" + u"\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D" + u"\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F\uA733\uA735" + u"\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755" + u"\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA77A\uA77C\u1D79" + u"\uA77F\uA781\uA783\uA785\uA787\uA78C\u0265\uA791\uA793\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3" + u"\uA7A5\uA7A7\uA7A9\u0266\u025C\u0261\u026C\u026A\u029E\u0287\u029D\uAB53\uA7B5\uA7B7\uA7B9\uA7BB" + u"\uA7BD\uA7BF\uA7C1\uA7C3\uA794\u0282\u1D8E\uA7C8\uA7CA\u0264\uA7CD\uA7D1\uA7D7\uA7D9\uA7DB\u019B" + u"\uA7F6\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F" + u"\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\U00010428\U00010429\U0001042A\U0001042B\U0001042C" + u"\U0001042D\U0001042E\U0001042F\U00010430\U00010431\U00010432\U00010433\U00010434\U00010435\U00010436\U00010437\U00010438\U00010439\U0001043A\U0001043B\U0001043C" + u"\U0001043D\U0001043E\U0001043F\U00010440\U00010441\U00010442\U00010443\U00010444\U00010445\U00010446\U00010447\U00010448\U00010449\U0001044A\U0001044B\U0001044C" + u"\U0001044D\U0001044E\U0001044F\U000104D8\U000104D9\U000104DA\U000104DB\U000104DC\U000104DD\U000104DE\U000104DF\U000104E0\U000104E1\U000104E2\U000104E3\U000104E4" + u"\U000104E5\U000104E6\U000104E7\U000104E8\U000104E9\U000104EA\U000104EB\U000104EC\U000104ED\U000104EE\U000104EF\U000104F0\U000104F1\U000104F2\U000104F3\U000104F4" + u"\U000104F5\U000104F6\U000104F7\U000104F8\U000104F9\U000104FA\U000104FB\U00010597\U00010598\U00010599\U0001059A\U0001059B\U0001059C\U0001059D\U0001059E\U0001059F" + u"\U000105A0\U000105A1\U000105A3\U000105A4\U000105A5\U000105A6\U000105A7\U000105A8\U000105A9\U000105AA\U000105AB\U000105AC\U000105AD\U000105AE\U000105AF\U000105B0" + u"\U000105B1\U000105B3\U000105B4\U000105B5\U000105B6\U000105B7\U000105B8\U000105B9\U000105BB\U000105BC\U00010CC0\U00010CC1\U00010CC2\U00010CC3\U00010CC4\U00010CC5" + u"\U00010CC6\U00010CC7\U00010CC8\U00010CC9\U00010CCA\U00010CCB\U00010CCC\U00010CCD\U00010CCE\U00010CCF\U00010CD0\U00010CD1\U00010CD2\U00010CD3\U00010CD4\U00010CD5" + u"\U00010CD6\U00010CD7\U00010CD8\U00010CD9\U00010CDA\U00010CDB\U00010CDC\U00010CDD\U00010CDE\U00010CDF\U00010CE0\U00010CE1\U00010CE2\U00010CE3\U00010CE4\U00010CE5" + u"\U00010CE6\U00010CE7\U00010CE8\U00010CE9\U00010CEA\U00010CEB\U00010CEC\U00010CED\U00010CEE\U00010CEF\U00010CF0\U00010CF1\U00010CF2\U00010D70\U00010D71\U00010D72" + u"\U00010D73\U00010D74\U00010D75\U00010D76\U00010D77\U00010D78\U00010D79\U00010D7A\U00010D7B\U00010D7C\U00010D7D\U00010D7E\U00010D7F\U00010D80\U00010D81\U00010D82" + u"\U00010D83\U00010D84\U00010D85\U000118C0\U000118C1\U000118C2\U000118C3\U000118C4\U000118C5\U000118C6\U000118C7\U000118C8\U000118C9\U000118CA\U000118CB\U000118CC" + u"\U000118CD\U000118CE\U000118CF\U000118D0\U000118D1\U000118D2\U000118D3\U000118D4\U000118D5\U000118D6\U000118D7\U000118D8\U000118D9\U000118DA\U000118DB\U000118DC" + u"\U000118DD\U000118DE\U000118DF\U00016E60\U00016E61\U00016E62\U00016E63\U00016E64\U00016E65\U00016E66\U00016E67\U00016E68\U00016E69\U00016E6A\U00016E6B\U00016E6C" + u"\U00016E6D\U00016E6E\U00016E6F\U00016E70\U00016E71\U00016E72\U00016E73\U00016E74\U00016E75\U00016E76\U00016E77\U00016E78\U00016E79\U00016E7A\U00016E7B\U00016E7C" + u"\U00016E7D\U00016E7E\U00016E7F\U0001E922\U0001E923\U0001E924\U0001E925\U0001E926\U0001E927\U0001E928\U0001E929\U0001E92A\U0001E92B\U0001E92C\U0001E92D\U0001E92E" + u"\U0001E92F\U0001E930\U0001E931\U0001E932\U0001E933\U0001E934\U0001E935\U0001E936\U0001E937\U0001E938\U0001E939\U0001E93A\U0001E93B\U0001E93C\U0001E93D\U0001E93E" + u"\U0001E93F\U0001E940\U0001E941\U0001E942\U0001E943"; const char_lookup lowercase_source_chars[] = { {0 ,U'\u0061'}, {1 ,U'\u0062'}, {2 ,U'\u0063'}, {3 ,U'\u0064'}, {4 ,U'\u0065'}, {5 ,U'\u0066'}, {6 ,U'\u0067'}, {7 ,U'\u0068'}, {8 ,U'\u0069'}, {9 ,U'\u006A'}, {10 ,U'\u006B'}, {11 ,U'\u006C'}, {12 ,U'\u006D'}, {13 ,U'\u006E'}, {14 ,U'\u006F'}, {15 ,U'\u0070'}, @@ -411,94 +427,98 @@ namespace sysstr::util::unicode {81 ,U'\u012B'}, {82 ,U'\u012D'}, {83 ,U'\u012F'}, {84 ,U'\u0131'}, {85 ,U'\u0133'}, {86 ,U'\u0135'}, {87 ,U'\u0137'}, {88 ,U'\u013A'}, {89 ,U'\u013C'}, {90 ,U'\u013E'}, {91 ,U'\u0140'}, {92 ,U'\u0142'}, {93 ,U'\u0144'}, {94 ,U'\u0146'}, {95 ,U'\u0148'}, {96 ,U'\u0149'}, {98 ,U'\u014B'}, {99 ,U'\u014D'}, {100 ,U'\u014F'}, {101 ,U'\u0151'}, {102 ,U'\u0153'}, {103 ,U'\u0155'}, {104 ,U'\u0157'}, {105 ,U'\u0159'}, {106 ,U'\u015B'}, {107 ,U'\u015D'}, {108 ,U'\u015F'}, {109 ,U'\u0161'}, {110 ,U'\u0163'}, {111 ,U'\u0165'}, {112 ,U'\u0167'}, {113 ,U'\u0169'}, {114 ,U'\u016B'}, {115 ,U'\u016D'}, {116 ,U'\u016F'}, {117 ,U'\u0171'}, {118 ,U'\u0173'}, {119 ,U'\u0175'}, {120 ,U'\u0177'}, {121 ,U'\u017A'}, {122 ,U'\u017C'}, {123 ,U'\u017E'}, {124 ,U'\u017F'}, {125 ,U'\u0180'}, {126 ,U'\u0183'}, {127 ,U'\u0185'}, {128 ,U'\u0188'}, {129 ,U'\u018C'}, - {130 ,U'\u0192'}, {131 ,U'\u0195'}, {132 ,U'\u0199'}, {133 ,U'\u019A'}, {134 ,U'\u019E'}, {135 ,U'\u01A1'}, {136 ,U'\u01A3'}, {137 ,U'\u01A5'}, {138 ,U'\u01A8'}, {139 ,U'\u01AD'}, {140 ,U'\u01B0'}, {141 ,U'\u01B4'}, {142 ,U'\u01B6'}, {143 ,U'\u01B9'}, {144 ,U'\u01BD'}, {145 ,U'\u01BF'}, - {146 ,U'\u01C5'}, {147 ,U'\u01C6'}, {148 ,U'\u01C8'}, {149 ,U'\u01C9'}, {150 ,U'\u01CB'}, {151 ,U'\u01CC'}, {152 ,U'\u01CE'}, {153 ,U'\u01D0'}, {154 ,U'\u01D2'}, {155 ,U'\u01D4'}, {156 ,U'\u01D6'}, {157 ,U'\u01D8'}, {158 ,U'\u01DA'}, {159 ,U'\u01DC'}, {160 ,U'\u01DD'}, {161 ,U'\u01DF'}, - {162 ,U'\u01E1'}, {163 ,U'\u01E3'}, {164 ,U'\u01E5'}, {165 ,U'\u01E7'}, {166 ,U'\u01E9'}, {167 ,U'\u01EB'}, {168 ,U'\u01ED'}, {169 ,U'\u01EF'}, {170 ,U'\u01F0'}, {172 ,U'\u01F2'}, {173 ,U'\u01F3'}, {174 ,U'\u01F5'}, {175 ,U'\u01F9'}, {176 ,U'\u01FB'}, {177 ,U'\u01FD'}, {178 ,U'\u01FF'}, - {179 ,U'\u0201'}, {180 ,U'\u0203'}, {181 ,U'\u0205'}, {182 ,U'\u0207'}, {183 ,U'\u0209'}, {184 ,U'\u020B'}, {185 ,U'\u020D'}, {186 ,U'\u020F'}, {187 ,U'\u0211'}, {188 ,U'\u0213'}, {189 ,U'\u0215'}, {190 ,U'\u0217'}, {191 ,U'\u0219'}, {192 ,U'\u021B'}, {193 ,U'\u021D'}, {194 ,U'\u021F'}, - {195 ,U'\u0223'}, {196 ,U'\u0225'}, {197 ,U'\u0227'}, {198 ,U'\u0229'}, {199 ,U'\u022B'}, {200 ,U'\u022D'}, {201 ,U'\u022F'}, {202 ,U'\u0231'}, {203 ,U'\u0233'}, {204 ,U'\u023C'}, {205 ,U'\u023F'}, {206 ,U'\u0240'}, {207 ,U'\u0242'}, {208 ,U'\u0247'}, {209 ,U'\u0249'}, {210 ,U'\u024B'}, - {211 ,U'\u024D'}, {212 ,U'\u024F'}, {213 ,U'\u0250'}, {214 ,U'\u0251'}, {215 ,U'\u0252'}, {216 ,U'\u0253'}, {217 ,U'\u0254'}, {218 ,U'\u0256'}, {219 ,U'\u0257'}, {220 ,U'\u0259'}, {221 ,U'\u025B'}, {222 ,U'\u025C'}, {223 ,U'\u0260'}, {224 ,U'\u0261'}, {225 ,U'\u0263'}, {226 ,U'\u0265'}, - {227 ,U'\u0266'}, {228 ,U'\u0268'}, {229 ,U'\u0269'}, {230 ,U'\u026A'}, {231 ,U'\u026B'}, {232 ,U'\u026C'}, {233 ,U'\u026F'}, {234 ,U'\u0271'}, {235 ,U'\u0272'}, {236 ,U'\u0275'}, {237 ,U'\u027D'}, {238 ,U'\u0280'}, {239 ,U'\u0282'}, {240 ,U'\u0283'}, {241 ,U'\u0287'}, {242 ,U'\u0288'}, - {243 ,U'\u0289'}, {244 ,U'\u028A'}, {245 ,U'\u028B'}, {246 ,U'\u028C'}, {247 ,U'\u0292'}, {248 ,U'\u029D'}, {249 ,U'\u029E'}, {250 ,U'\u0345'}, {251 ,U'\u0371'}, {252 ,U'\u0373'}, {253 ,U'\u0377'}, {254 ,U'\u037B'}, {255 ,U'\u037C'}, {256 ,U'\u037D'}, {257 ,U'\u0390'}, {260 ,U'\u03AC'}, - {261 ,U'\u03AD'}, {262 ,U'\u03AE'}, {263 ,U'\u03AF'}, {264 ,U'\u03B0'}, {267 ,U'\u03B1'}, {268 ,U'\u03B2'}, {269 ,U'\u03B3'}, {270 ,U'\u03B4'}, {271 ,U'\u03B5'}, {272 ,U'\u03B6'}, {273 ,U'\u03B7'}, {274 ,U'\u03B8'}, {275 ,U'\u03B9'}, {276 ,U'\u03BA'}, {277 ,U'\u03BB'}, {278 ,U'\u03BC'}, - {279 ,U'\u03BD'}, {280 ,U'\u03BE'}, {281 ,U'\u03BF'}, {282 ,U'\u03C0'}, {283 ,U'\u03C1'}, {284 ,U'\u03C2'}, {285 ,U'\u03C3'}, {286 ,U'\u03C4'}, {287 ,U'\u03C5'}, {288 ,U'\u03C6'}, {289 ,U'\u03C7'}, {290 ,U'\u03C8'}, {291 ,U'\u03C9'}, {292 ,U'\u03CA'}, {293 ,U'\u03CB'}, {294 ,U'\u03CC'}, - {295 ,U'\u03CD'}, {296 ,U'\u03CE'}, {297 ,U'\u03D0'}, {298 ,U'\u03D1'}, {299 ,U'\u03D5'}, {300 ,U'\u03D6'}, {301 ,U'\u03D7'}, {302 ,U'\u03D9'}, {303 ,U'\u03DB'}, {304 ,U'\u03DD'}, {305 ,U'\u03DF'}, {306 ,U'\u03E1'}, {307 ,U'\u03E3'}, {308 ,U'\u03E5'}, {309 ,U'\u03E7'}, {310 ,U'\u03E9'}, - {311 ,U'\u03EB'}, {312 ,U'\u03ED'}, {313 ,U'\u03EF'}, {314 ,U'\u03F0'}, {315 ,U'\u03F1'}, {316 ,U'\u03F2'}, {317 ,U'\u03F3'}, {318 ,U'\u03F5'}, {319 ,U'\u03F8'}, {320 ,U'\u03FB'}, {321 ,U'\u0430'}, {322 ,U'\u0431'}, {323 ,U'\u0432'}, {324 ,U'\u0433'}, {325 ,U'\u0434'}, {326 ,U'\u0435'}, - {327 ,U'\u0436'}, {328 ,U'\u0437'}, {329 ,U'\u0438'}, {330 ,U'\u0439'}, {331 ,U'\u043A'}, {332 ,U'\u043B'}, {333 ,U'\u043C'}, {334 ,U'\u043D'}, {335 ,U'\u043E'}, {336 ,U'\u043F'}, {337 ,U'\u0440'}, {338 ,U'\u0441'}, {339 ,U'\u0442'}, {340 ,U'\u0443'}, {341 ,U'\u0444'}, {342 ,U'\u0445'}, - {343 ,U'\u0446'}, {344 ,U'\u0447'}, {345 ,U'\u0448'}, {346 ,U'\u0449'}, {347 ,U'\u044A'}, {348 ,U'\u044B'}, {349 ,U'\u044C'}, {350 ,U'\u044D'}, {351 ,U'\u044E'}, {352 ,U'\u044F'}, {353 ,U'\u0450'}, {354 ,U'\u0451'}, {355 ,U'\u0452'}, {356 ,U'\u0453'}, {357 ,U'\u0454'}, {358 ,U'\u0455'}, - {359 ,U'\u0456'}, {360 ,U'\u0457'}, {361 ,U'\u0458'}, {362 ,U'\u0459'}, {363 ,U'\u045A'}, {364 ,U'\u045B'}, {365 ,U'\u045C'}, {366 ,U'\u045D'}, {367 ,U'\u045E'}, {368 ,U'\u045F'}, {369 ,U'\u0461'}, {370 ,U'\u0463'}, {371 ,U'\u0465'}, {372 ,U'\u0467'}, {373 ,U'\u0469'}, {374 ,U'\u046B'}, - {375 ,U'\u046D'}, {376 ,U'\u046F'}, {377 ,U'\u0471'}, {378 ,U'\u0473'}, {379 ,U'\u0475'}, {380 ,U'\u0477'}, {381 ,U'\u0479'}, {382 ,U'\u047B'}, {383 ,U'\u047D'}, {384 ,U'\u047F'}, {385 ,U'\u0481'}, {386 ,U'\u048B'}, {387 ,U'\u048D'}, {388 ,U'\u048F'}, {389 ,U'\u0491'}, {390 ,U'\u0493'}, - {391 ,U'\u0495'}, {392 ,U'\u0497'}, {393 ,U'\u0499'}, {394 ,U'\u049B'}, {395 ,U'\u049D'}, {396 ,U'\u049F'}, {397 ,U'\u04A1'}, {398 ,U'\u04A3'}, {399 ,U'\u04A5'}, {400 ,U'\u04A7'}, {401 ,U'\u04A9'}, {402 ,U'\u04AB'}, {403 ,U'\u04AD'}, {404 ,U'\u04AF'}, {405 ,U'\u04B1'}, {406 ,U'\u04B3'}, - {407 ,U'\u04B5'}, {408 ,U'\u04B7'}, {409 ,U'\u04B9'}, {410 ,U'\u04BB'}, {411 ,U'\u04BD'}, {412 ,U'\u04BF'}, {413 ,U'\u04C2'}, {414 ,U'\u04C4'}, {415 ,U'\u04C6'}, {416 ,U'\u04C8'}, {417 ,U'\u04CA'}, {418 ,U'\u04CC'}, {419 ,U'\u04CE'}, {420 ,U'\u04CF'}, {421 ,U'\u04D1'}, {422 ,U'\u04D3'}, - {423 ,U'\u04D5'}, {424 ,U'\u04D7'}, {425 ,U'\u04D9'}, {426 ,U'\u04DB'}, {427 ,U'\u04DD'}, {428 ,U'\u04DF'}, {429 ,U'\u04E1'}, {430 ,U'\u04E3'}, {431 ,U'\u04E5'}, {432 ,U'\u04E7'}, {433 ,U'\u04E9'}, {434 ,U'\u04EB'}, {435 ,U'\u04ED'}, {436 ,U'\u04EF'}, {437 ,U'\u04F1'}, {438 ,U'\u04F3'}, - {439 ,U'\u04F5'}, {440 ,U'\u04F7'}, {441 ,U'\u04F9'}, {442 ,U'\u04FB'}, {443 ,U'\u04FD'}, {444 ,U'\u04FF'}, {445 ,U'\u0501'}, {446 ,U'\u0503'}, {447 ,U'\u0505'}, {448 ,U'\u0507'}, {449 ,U'\u0509'}, {450 ,U'\u050B'}, {451 ,U'\u050D'}, {452 ,U'\u050F'}, {453 ,U'\u0511'}, {454 ,U'\u0513'}, - {455 ,U'\u0515'}, {456 ,U'\u0517'}, {457 ,U'\u0519'}, {458 ,U'\u051B'}, {459 ,U'\u051D'}, {460 ,U'\u051F'}, {461 ,U'\u0521'}, {462 ,U'\u0523'}, {463 ,U'\u0525'}, {464 ,U'\u0527'}, {465 ,U'\u0529'}, {466 ,U'\u052B'}, {467 ,U'\u052D'}, {468 ,U'\u052F'}, {469 ,U'\u0561'}, {470 ,U'\u0562'}, - {471 ,U'\u0563'}, {472 ,U'\u0564'}, {473 ,U'\u0565'}, {474 ,U'\u0566'}, {475 ,U'\u0567'}, {476 ,U'\u0568'}, {477 ,U'\u0569'}, {478 ,U'\u056A'}, {479 ,U'\u056B'}, {480 ,U'\u056C'}, {481 ,U'\u056D'}, {482 ,U'\u056E'}, {483 ,U'\u056F'}, {484 ,U'\u0570'}, {485 ,U'\u0571'}, {486 ,U'\u0572'}, - {487 ,U'\u0573'}, {488 ,U'\u0574'}, {489 ,U'\u0575'}, {490 ,U'\u0576'}, {491 ,U'\u0577'}, {492 ,U'\u0578'}, {493 ,U'\u0579'}, {494 ,U'\u057A'}, {495 ,U'\u057B'}, {496 ,U'\u057C'}, {497 ,U'\u057D'}, {498 ,U'\u057E'}, {499 ,U'\u057F'}, {500 ,U'\u0580'}, {501 ,U'\u0581'}, {502 ,U'\u0582'}, - {503 ,U'\u0583'}, {504 ,U'\u0584'}, {505 ,U'\u0585'}, {506 ,U'\u0586'}, {507 ,U'\u0587'}, {509 ,U'\u10D0'}, {510 ,U'\u10D1'}, {511 ,U'\u10D2'}, {512 ,U'\u10D3'}, {513 ,U'\u10D4'}, {514 ,U'\u10D5'}, {515 ,U'\u10D6'}, {516 ,U'\u10D7'}, {517 ,U'\u10D8'}, {518 ,U'\u10D9'}, {519 ,U'\u10DA'}, - {520 ,U'\u10DB'}, {521 ,U'\u10DC'}, {522 ,U'\u10DD'}, {523 ,U'\u10DE'}, {524 ,U'\u10DF'}, {525 ,U'\u10E0'}, {526 ,U'\u10E1'}, {527 ,U'\u10E2'}, {528 ,U'\u10E3'}, {529 ,U'\u10E4'}, {530 ,U'\u10E5'}, {531 ,U'\u10E6'}, {532 ,U'\u10E7'}, {533 ,U'\u10E8'}, {534 ,U'\u10E9'}, {535 ,U'\u10EA'}, - {536 ,U'\u10EB'}, {537 ,U'\u10EC'}, {538 ,U'\u10ED'}, {539 ,U'\u10EE'}, {540 ,U'\u10EF'}, {541 ,U'\u10F0'}, {542 ,U'\u10F1'}, {543 ,U'\u10F2'}, {544 ,U'\u10F3'}, {545 ,U'\u10F4'}, {546 ,U'\u10F5'}, {547 ,U'\u10F6'}, {548 ,U'\u10F7'}, {549 ,U'\u10F8'}, {550 ,U'\u10F9'}, {551 ,U'\u10FA'}, - {552 ,U'\u10FD'}, {553 ,U'\u10FE'}, {554 ,U'\u10FF'}, {555 ,U'\u13F8'}, {556 ,U'\u13F9'}, {557 ,U'\u13FA'}, {558 ,U'\u13FB'}, {559 ,U'\u13FC'}, {560 ,U'\u13FD'}, {561 ,U'\u1C80'}, {562 ,U'\u1C81'}, {563 ,U'\u1C82'}, {564 ,U'\u1C83'}, {565 ,U'\u1C84'}, {566 ,U'\u1C85'}, {567 ,U'\u1C86'}, - {568 ,U'\u1C87'}, {569 ,U'\u1C88'}, {570 ,U'\u1D79'}, {571 ,U'\u1D7D'}, {572 ,U'\u1D8E'}, {573 ,U'\u1E01'}, {574 ,U'\u1E03'}, {575 ,U'\u1E05'}, {576 ,U'\u1E07'}, {577 ,U'\u1E09'}, {578 ,U'\u1E0B'}, {579 ,U'\u1E0D'}, {580 ,U'\u1E0F'}, {581 ,U'\u1E11'}, {582 ,U'\u1E13'}, {583 ,U'\u1E15'}, - {584 ,U'\u1E17'}, {585 ,U'\u1E19'}, {586 ,U'\u1E1B'}, {587 ,U'\u1E1D'}, {588 ,U'\u1E1F'}, {589 ,U'\u1E21'}, {590 ,U'\u1E23'}, {591 ,U'\u1E25'}, {592 ,U'\u1E27'}, {593 ,U'\u1E29'}, {594 ,U'\u1E2B'}, {595 ,U'\u1E2D'}, {596 ,U'\u1E2F'}, {597 ,U'\u1E31'}, {598 ,U'\u1E33'}, {599 ,U'\u1E35'}, - {600 ,U'\u1E37'}, {601 ,U'\u1E39'}, {602 ,U'\u1E3B'}, {603 ,U'\u1E3D'}, {604 ,U'\u1E3F'}, {605 ,U'\u1E41'}, {606 ,U'\u1E43'}, {607 ,U'\u1E45'}, {608 ,U'\u1E47'}, {609 ,U'\u1E49'}, {610 ,U'\u1E4B'}, {611 ,U'\u1E4D'}, {612 ,U'\u1E4F'}, {613 ,U'\u1E51'}, {614 ,U'\u1E53'}, {615 ,U'\u1E55'}, - {616 ,U'\u1E57'}, {617 ,U'\u1E59'}, {618 ,U'\u1E5B'}, {619 ,U'\u1E5D'}, {620 ,U'\u1E5F'}, {621 ,U'\u1E61'}, {622 ,U'\u1E63'}, {623 ,U'\u1E65'}, {624 ,U'\u1E67'}, {625 ,U'\u1E69'}, {626 ,U'\u1E6B'}, {627 ,U'\u1E6D'}, {628 ,U'\u1E6F'}, {629 ,U'\u1E71'}, {630 ,U'\u1E73'}, {631 ,U'\u1E75'}, - {632 ,U'\u1E77'}, {633 ,U'\u1E79'}, {634 ,U'\u1E7B'}, {635 ,U'\u1E7D'}, {636 ,U'\u1E7F'}, {637 ,U'\u1E81'}, {638 ,U'\u1E83'}, {639 ,U'\u1E85'}, {640 ,U'\u1E87'}, {641 ,U'\u1E89'}, {642 ,U'\u1E8B'}, {643 ,U'\u1E8D'}, {644 ,U'\u1E8F'}, {645 ,U'\u1E91'}, {646 ,U'\u1E93'}, {647 ,U'\u1E95'}, - {648 ,U'\u1E96'}, {650 ,U'\u1E97'}, {652 ,U'\u1E98'}, {654 ,U'\u1E99'}, {656 ,U'\u1E9A'}, {658 ,U'\u1E9B'}, {659 ,U'\u1EA1'}, {660 ,U'\u1EA3'}, {661 ,U'\u1EA5'}, {662 ,U'\u1EA7'}, {663 ,U'\u1EA9'}, {664 ,U'\u1EAB'}, {665 ,U'\u1EAD'}, {666 ,U'\u1EAF'}, {667 ,U'\u1EB1'}, {668 ,U'\u1EB3'}, - {669 ,U'\u1EB5'}, {670 ,U'\u1EB7'}, {671 ,U'\u1EB9'}, {672 ,U'\u1EBB'}, {673 ,U'\u1EBD'}, {674 ,U'\u1EBF'}, {675 ,U'\u1EC1'}, {676 ,U'\u1EC3'}, {677 ,U'\u1EC5'}, {678 ,U'\u1EC7'}, {679 ,U'\u1EC9'}, {680 ,U'\u1ECB'}, {681 ,U'\u1ECD'}, {682 ,U'\u1ECF'}, {683 ,U'\u1ED1'}, {684 ,U'\u1ED3'}, - {685 ,U'\u1ED5'}, {686 ,U'\u1ED7'}, {687 ,U'\u1ED9'}, {688 ,U'\u1EDB'}, {689 ,U'\u1EDD'}, {690 ,U'\u1EDF'}, {691 ,U'\u1EE1'}, {692 ,U'\u1EE3'}, {693 ,U'\u1EE5'}, {694 ,U'\u1EE7'}, {695 ,U'\u1EE9'}, {696 ,U'\u1EEB'}, {697 ,U'\u1EED'}, {698 ,U'\u1EEF'}, {699 ,U'\u1EF1'}, {700 ,U'\u1EF3'}, - {701 ,U'\u1EF5'}, {702 ,U'\u1EF7'}, {703 ,U'\u1EF9'}, {704 ,U'\u1EFB'}, {705 ,U'\u1EFD'}, {706 ,U'\u1EFF'}, {707 ,U'\u1F00'}, {708 ,U'\u1F01'}, {709 ,U'\u1F02'}, {710 ,U'\u1F03'}, {711 ,U'\u1F04'}, {712 ,U'\u1F05'}, {713 ,U'\u1F06'}, {714 ,U'\u1F07'}, {715 ,U'\u1F10'}, {716 ,U'\u1F11'}, - {717 ,U'\u1F12'}, {718 ,U'\u1F13'}, {719 ,U'\u1F14'}, {720 ,U'\u1F15'}, {721 ,U'\u1F20'}, {722 ,U'\u1F21'}, {723 ,U'\u1F22'}, {724 ,U'\u1F23'}, {725 ,U'\u1F24'}, {726 ,U'\u1F25'}, {727 ,U'\u1F26'}, {728 ,U'\u1F27'}, {729 ,U'\u1F30'}, {730 ,U'\u1F31'}, {731 ,U'\u1F32'}, {732 ,U'\u1F33'}, - {733 ,U'\u1F34'}, {734 ,U'\u1F35'}, {735 ,U'\u1F36'}, {736 ,U'\u1F37'}, {737 ,U'\u1F40'}, {738 ,U'\u1F41'}, {739 ,U'\u1F42'}, {740 ,U'\u1F43'}, {741 ,U'\u1F44'}, {742 ,U'\u1F45'}, {743 ,U'\u1F50'}, {745 ,U'\u1F51'}, {746 ,U'\u1F52'}, {749 ,U'\u1F53'}, {750 ,U'\u1F54'}, {753 ,U'\u1F55'}, - {754 ,U'\u1F56'}, {757 ,U'\u1F57'}, {758 ,U'\u1F60'}, {759 ,U'\u1F61'}, {760 ,U'\u1F62'}, {761 ,U'\u1F63'}, {762 ,U'\u1F64'}, {763 ,U'\u1F65'}, {764 ,U'\u1F66'}, {765 ,U'\u1F67'}, {766 ,U'\u1F70'}, {767 ,U'\u1F71'}, {768 ,U'\u1F72'}, {769 ,U'\u1F73'}, {770 ,U'\u1F74'}, {771 ,U'\u1F75'}, - {772 ,U'\u1F76'}, {773 ,U'\u1F77'}, {774 ,U'\u1F78'}, {775 ,U'\u1F79'}, {776 ,U'\u1F7A'}, {777 ,U'\u1F7B'}, {778 ,U'\u1F7C'}, {779 ,U'\u1F7D'}, {780 ,U'\u1F80'}, {782 ,U'\u1F81'}, {784 ,U'\u1F82'}, {786 ,U'\u1F83'}, {788 ,U'\u1F84'}, {790 ,U'\u1F85'}, {792 ,U'\u1F86'}, {794 ,U'\u1F87'}, - {796 ,U'\u1F88'}, {798 ,U'\u1F89'}, {800 ,U'\u1F8A'}, {802 ,U'\u1F8B'}, {804 ,U'\u1F8C'}, {806 ,U'\u1F8D'}, {808 ,U'\u1F8E'}, {810 ,U'\u1F8F'}, {812 ,U'\u1F90'}, {814 ,U'\u1F91'}, {816 ,U'\u1F92'}, {818 ,U'\u1F93'}, {820 ,U'\u1F94'}, {822 ,U'\u1F95'}, {824 ,U'\u1F96'}, {826 ,U'\u1F97'}, - {828 ,U'\u1F98'}, {830 ,U'\u1F99'}, {832 ,U'\u1F9A'}, {834 ,U'\u1F9B'}, {836 ,U'\u1F9C'}, {838 ,U'\u1F9D'}, {840 ,U'\u1F9E'}, {842 ,U'\u1F9F'}, {844 ,U'\u1FA0'}, {846 ,U'\u1FA1'}, {848 ,U'\u1FA2'}, {850 ,U'\u1FA3'}, {852 ,U'\u1FA4'}, {854 ,U'\u1FA5'}, {856 ,U'\u1FA6'}, {858 ,U'\u1FA7'}, - {860 ,U'\u1FA8'}, {862 ,U'\u1FA9'}, {864 ,U'\u1FAA'}, {866 ,U'\u1FAB'}, {868 ,U'\u1FAC'}, {870 ,U'\u1FAD'}, {872 ,U'\u1FAE'}, {874 ,U'\u1FAF'}, {876 ,U'\u1FB0'}, {877 ,U'\u1FB1'}, {878 ,U'\u1FB2'}, {880 ,U'\u1FB3'}, {882 ,U'\u1FB4'}, {884 ,U'\u1FB6'}, {886 ,U'\u1FB7'}, {889 ,U'\u1FBC'}, - {891 ,U'\u1FBE'}, {892 ,U'\u1FC2'}, {894 ,U'\u1FC3'}, {896 ,U'\u1FC4'}, {898 ,U'\u1FC6'}, {900 ,U'\u1FC7'}, {903 ,U'\u1FCC'}, {905 ,U'\u1FD0'}, {906 ,U'\u1FD1'}, {907 ,U'\u1FD2'}, {910 ,U'\u1FD3'}, {913 ,U'\u1FD6'}, {915 ,U'\u1FD7'}, {918 ,U'\u1FE0'}, {919 ,U'\u1FE1'}, {920 ,U'\u1FE2'}, - {923 ,U'\u1FE3'}, {926 ,U'\u1FE4'}, {928 ,U'\u1FE5'}, {929 ,U'\u1FE6'}, {931 ,U'\u1FE7'}, {934 ,U'\u1FF2'}, {936 ,U'\u1FF3'}, {938 ,U'\u1FF4'}, {940 ,U'\u1FF6'}, {942 ,U'\u1FF7'}, {945 ,U'\u1FFC'}, {947 ,U'\u214E'}, {948 ,U'\u2170'}, {949 ,U'\u2171'}, {950 ,U'\u2172'}, {951 ,U'\u2173'}, - {952 ,U'\u2174'}, {953 ,U'\u2175'}, {954 ,U'\u2176'}, {955 ,U'\u2177'}, {956 ,U'\u2178'}, {957 ,U'\u2179'}, {958 ,U'\u217A'}, {959 ,U'\u217B'}, {960 ,U'\u217C'}, {961 ,U'\u217D'}, {962 ,U'\u217E'}, {963 ,U'\u217F'}, {964 ,U'\u2184'}, {965 ,U'\u24D0'}, {966 ,U'\u24D1'}, {967 ,U'\u24D2'}, - {968 ,U'\u24D3'}, {969 ,U'\u24D4'}, {970 ,U'\u24D5'}, {971 ,U'\u24D6'}, {972 ,U'\u24D7'}, {973 ,U'\u24D8'}, {974 ,U'\u24D9'}, {975 ,U'\u24DA'}, {976 ,U'\u24DB'}, {977 ,U'\u24DC'}, {978 ,U'\u24DD'}, {979 ,U'\u24DE'}, {980 ,U'\u24DF'}, {981 ,U'\u24E0'}, {982 ,U'\u24E1'}, {983 ,U'\u24E2'}, - {984 ,U'\u24E3'}, {985 ,U'\u24E4'}, {986 ,U'\u24E5'}, {987 ,U'\u24E6'}, {988 ,U'\u24E7'}, {989 ,U'\u24E8'}, {990 ,U'\u24E9'}, {991 ,U'\u2C30'}, {992 ,U'\u2C31'}, {993 ,U'\u2C32'}, {994 ,U'\u2C33'}, {995 ,U'\u2C34'}, {996 ,U'\u2C35'}, {997 ,U'\u2C36'}, {998 ,U'\u2C37'}, {999 ,U'\u2C38'}, - {1000 ,U'\u2C39'}, {1001 ,U'\u2C3A'}, {1002 ,U'\u2C3B'}, {1003 ,U'\u2C3C'}, {1004 ,U'\u2C3D'}, {1005 ,U'\u2C3E'}, {1006 ,U'\u2C3F'}, {1007 ,U'\u2C40'}, {1008 ,U'\u2C41'}, {1009 ,U'\u2C42'}, {1010 ,U'\u2C43'}, {1011 ,U'\u2C44'}, {1012 ,U'\u2C45'}, {1013 ,U'\u2C46'}, {1014 ,U'\u2C47'}, {1015 ,U'\u2C48'}, - {1016 ,U'\u2C49'}, {1017 ,U'\u2C4A'}, {1018 ,U'\u2C4B'}, {1019 ,U'\u2C4C'}, {1020 ,U'\u2C4D'}, {1021 ,U'\u2C4E'}, {1022 ,U'\u2C4F'}, {1023 ,U'\u2C50'}, {1024 ,U'\u2C51'}, {1025 ,U'\u2C52'}, {1026 ,U'\u2C53'}, {1027 ,U'\u2C54'}, {1028 ,U'\u2C55'}, {1029 ,U'\u2C56'}, {1030 ,U'\u2C57'}, {1031 ,U'\u2C58'}, - {1032 ,U'\u2C59'}, {1033 ,U'\u2C5A'}, {1034 ,U'\u2C5B'}, {1035 ,U'\u2C5C'}, {1036 ,U'\u2C5D'}, {1037 ,U'\u2C5E'}, {1038 ,U'\u2C61'}, {1039 ,U'\u2C65'}, {1040 ,U'\u2C66'}, {1041 ,U'\u2C68'}, {1042 ,U'\u2C6A'}, {1043 ,U'\u2C6C'}, {1044 ,U'\u2C73'}, {1045 ,U'\u2C76'}, {1046 ,U'\u2C81'}, {1047 ,U'\u2C83'}, - {1048 ,U'\u2C85'}, {1049 ,U'\u2C87'}, {1050 ,U'\u2C89'}, {1051 ,U'\u2C8B'}, {1052 ,U'\u2C8D'}, {1053 ,U'\u2C8F'}, {1054 ,U'\u2C91'}, {1055 ,U'\u2C93'}, {1056 ,U'\u2C95'}, {1057 ,U'\u2C97'}, {1058 ,U'\u2C99'}, {1059 ,U'\u2C9B'}, {1060 ,U'\u2C9D'}, {1061 ,U'\u2C9F'}, {1062 ,U'\u2CA1'}, {1063 ,U'\u2CA3'}, - {1064 ,U'\u2CA5'}, {1065 ,U'\u2CA7'}, {1066 ,U'\u2CA9'}, {1067 ,U'\u2CAB'}, {1068 ,U'\u2CAD'}, {1069 ,U'\u2CAF'}, {1070 ,U'\u2CB1'}, {1071 ,U'\u2CB3'}, {1072 ,U'\u2CB5'}, {1073 ,U'\u2CB7'}, {1074 ,U'\u2CB9'}, {1075 ,U'\u2CBB'}, {1076 ,U'\u2CBD'}, {1077 ,U'\u2CBF'}, {1078 ,U'\u2CC1'}, {1079 ,U'\u2CC3'}, - {1080 ,U'\u2CC5'}, {1081 ,U'\u2CC7'}, {1082 ,U'\u2CC9'}, {1083 ,U'\u2CCB'}, {1084 ,U'\u2CCD'}, {1085 ,U'\u2CCF'}, {1086 ,U'\u2CD1'}, {1087 ,U'\u2CD3'}, {1088 ,U'\u2CD5'}, {1089 ,U'\u2CD7'}, {1090 ,U'\u2CD9'}, {1091 ,U'\u2CDB'}, {1092 ,U'\u2CDD'}, {1093 ,U'\u2CDF'}, {1094 ,U'\u2CE1'}, {1095 ,U'\u2CE3'}, - {1096 ,U'\u2CEC'}, {1097 ,U'\u2CEE'}, {1098 ,U'\u2CF3'}, {1099 ,U'\u2D00'}, {1100 ,U'\u2D01'}, {1101 ,U'\u2D02'}, {1102 ,U'\u2D03'}, {1103 ,U'\u2D04'}, {1104 ,U'\u2D05'}, {1105 ,U'\u2D06'}, {1106 ,U'\u2D07'}, {1107 ,U'\u2D08'}, {1108 ,U'\u2D09'}, {1109 ,U'\u2D0A'}, {1110 ,U'\u2D0B'}, {1111 ,U'\u2D0C'}, - {1112 ,U'\u2D0D'}, {1113 ,U'\u2D0E'}, {1114 ,U'\u2D0F'}, {1115 ,U'\u2D10'}, {1116 ,U'\u2D11'}, {1117 ,U'\u2D12'}, {1118 ,U'\u2D13'}, {1119 ,U'\u2D14'}, {1120 ,U'\u2D15'}, {1121 ,U'\u2D16'}, {1122 ,U'\u2D17'}, {1123 ,U'\u2D18'}, {1124 ,U'\u2D19'}, {1125 ,U'\u2D1A'}, {1126 ,U'\u2D1B'}, {1127 ,U'\u2D1C'}, - {1128 ,U'\u2D1D'}, {1129 ,U'\u2D1E'}, {1130 ,U'\u2D1F'}, {1131 ,U'\u2D20'}, {1132 ,U'\u2D21'}, {1133 ,U'\u2D22'}, {1134 ,U'\u2D23'}, {1135 ,U'\u2D24'}, {1136 ,U'\u2D25'}, {1137 ,U'\u2D27'}, {1138 ,U'\u2D2D'}, {1139 ,U'\uA641'}, {1140 ,U'\uA643'}, {1141 ,U'\uA645'}, {1142 ,U'\uA647'}, {1143 ,U'\uA649'}, - {1144 ,U'\uA64B'}, {1145 ,U'\uA64D'}, {1146 ,U'\uA64F'}, {1147 ,U'\uA651'}, {1148 ,U'\uA653'}, {1149 ,U'\uA655'}, {1150 ,U'\uA657'}, {1151 ,U'\uA659'}, {1152 ,U'\uA65B'}, {1153 ,U'\uA65D'}, {1154 ,U'\uA65F'}, {1155 ,U'\uA661'}, {1156 ,U'\uA663'}, {1157 ,U'\uA665'}, {1158 ,U'\uA667'}, {1159 ,U'\uA669'}, - {1160 ,U'\uA66B'}, {1161 ,U'\uA66D'}, {1162 ,U'\uA681'}, {1163 ,U'\uA683'}, {1164 ,U'\uA685'}, {1165 ,U'\uA687'}, {1166 ,U'\uA689'}, {1167 ,U'\uA68B'}, {1168 ,U'\uA68D'}, {1169 ,U'\uA68F'}, {1170 ,U'\uA691'}, {1171 ,U'\uA693'}, {1172 ,U'\uA695'}, {1173 ,U'\uA697'}, {1174 ,U'\uA699'}, {1175 ,U'\uA69B'}, - {1176 ,U'\uA723'}, {1177 ,U'\uA725'}, {1178 ,U'\uA727'}, {1179 ,U'\uA729'}, {1180 ,U'\uA72B'}, {1181 ,U'\uA72D'}, {1182 ,U'\uA72F'}, {1183 ,U'\uA733'}, {1184 ,U'\uA735'}, {1185 ,U'\uA737'}, {1186 ,U'\uA739'}, {1187 ,U'\uA73B'}, {1188 ,U'\uA73D'}, {1189 ,U'\uA73F'}, {1190 ,U'\uA741'}, {1191 ,U'\uA743'}, - {1192 ,U'\uA745'}, {1193 ,U'\uA747'}, {1194 ,U'\uA749'}, {1195 ,U'\uA74B'}, {1196 ,U'\uA74D'}, {1197 ,U'\uA74F'}, {1198 ,U'\uA751'}, {1199 ,U'\uA753'}, {1200 ,U'\uA755'}, {1201 ,U'\uA757'}, {1202 ,U'\uA759'}, {1203 ,U'\uA75B'}, {1204 ,U'\uA75D'}, {1205 ,U'\uA75F'}, {1206 ,U'\uA761'}, {1207 ,U'\uA763'}, - {1208 ,U'\uA765'}, {1209 ,U'\uA767'}, {1210 ,U'\uA769'}, {1211 ,U'\uA76B'}, {1212 ,U'\uA76D'}, {1213 ,U'\uA76F'}, {1214 ,U'\uA77A'}, {1215 ,U'\uA77C'}, {1216 ,U'\uA77F'}, {1217 ,U'\uA781'}, {1218 ,U'\uA783'}, {1219 ,U'\uA785'}, {1220 ,U'\uA787'}, {1221 ,U'\uA78C'}, {1222 ,U'\uA791'}, {1223 ,U'\uA793'}, - {1224 ,U'\uA794'}, {1225 ,U'\uA797'}, {1226 ,U'\uA799'}, {1227 ,U'\uA79B'}, {1228 ,U'\uA79D'}, {1229 ,U'\uA79F'}, {1230 ,U'\uA7A1'}, {1231 ,U'\uA7A3'}, {1232 ,U'\uA7A5'}, {1233 ,U'\uA7A7'}, {1234 ,U'\uA7A9'}, {1235 ,U'\uA7B5'}, {1236 ,U'\uA7B7'}, {1237 ,U'\uA7B9'}, {1238 ,U'\uA7BB'}, {1239 ,U'\uA7BD'}, - {1240 ,U'\uA7BF'}, {1241 ,U'\uA7C3'}, {1242 ,U'\uA7C8'}, {1243 ,U'\uA7CA'}, {1244 ,U'\uA7F6'}, {1245 ,U'\uAB53'}, {1246 ,U'\uAB70'}, {1247 ,U'\uAB71'}, {1248 ,U'\uAB72'}, {1249 ,U'\uAB73'}, {1250 ,U'\uAB74'}, {1251 ,U'\uAB75'}, {1252 ,U'\uAB76'}, {1253 ,U'\uAB77'}, {1254 ,U'\uAB78'}, {1255 ,U'\uAB79'}, - {1256 ,U'\uAB7A'}, {1257 ,U'\uAB7B'}, {1258 ,U'\uAB7C'}, {1259 ,U'\uAB7D'}, {1260 ,U'\uAB7E'}, {1261 ,U'\uAB7F'}, {1262 ,U'\uAB80'}, {1263 ,U'\uAB81'}, {1264 ,U'\uAB82'}, {1265 ,U'\uAB83'}, {1266 ,U'\uAB84'}, {1267 ,U'\uAB85'}, {1268 ,U'\uAB86'}, {1269 ,U'\uAB87'}, {1270 ,U'\uAB88'}, {1271 ,U'\uAB89'}, - {1272 ,U'\uAB8A'}, {1273 ,U'\uAB8B'}, {1274 ,U'\uAB8C'}, {1275 ,U'\uAB8D'}, {1276 ,U'\uAB8E'}, {1277 ,U'\uAB8F'}, {1278 ,U'\uAB90'}, {1279 ,U'\uAB91'}, {1280 ,U'\uAB92'}, {1281 ,U'\uAB93'}, {1282 ,U'\uAB94'}, {1283 ,U'\uAB95'}, {1284 ,U'\uAB96'}, {1285 ,U'\uAB97'}, {1286 ,U'\uAB98'}, {1287 ,U'\uAB99'}, - {1288 ,U'\uAB9A'}, {1289 ,U'\uAB9B'}, {1290 ,U'\uAB9C'}, {1291 ,U'\uAB9D'}, {1292 ,U'\uAB9E'}, {1293 ,U'\uAB9F'}, {1294 ,U'\uABA0'}, {1295 ,U'\uABA1'}, {1296 ,U'\uABA2'}, {1297 ,U'\uABA3'}, {1298 ,U'\uABA4'}, {1299 ,U'\uABA5'}, {1300 ,U'\uABA6'}, {1301 ,U'\uABA7'}, {1302 ,U'\uABA8'}, {1303 ,U'\uABA9'}, - {1304 ,U'\uABAA'}, {1305 ,U'\uABAB'}, {1306 ,U'\uABAC'}, {1307 ,U'\uABAD'}, {1308 ,U'\uABAE'}, {1309 ,U'\uABAF'}, {1310 ,U'\uABB0'}, {1311 ,U'\uABB1'}, {1312 ,U'\uABB2'}, {1313 ,U'\uABB3'}, {1314 ,U'\uABB4'}, {1315 ,U'\uABB5'}, {1316 ,U'\uABB6'}, {1317 ,U'\uABB7'}, {1318 ,U'\uABB8'}, {1319 ,U'\uABB9'}, - {1320 ,U'\uABBA'}, {1321 ,U'\uABBB'}, {1322 ,U'\uABBC'}, {1323 ,U'\uABBD'}, {1324 ,U'\uABBE'}, {1325 ,U'\uABBF'}, {1326 ,U'\uFB00'}, {1328 ,U'\uFB01'}, {1330 ,U'\uFB02'}, {1332 ,U'\uFB03'}, {1335 ,U'\uFB04'}, {1338 ,U'\uFB05'}, {1340 ,U'\uFB06'}, {1342 ,U'\uFB13'}, {1344 ,U'\uFB14'}, {1346 ,U'\uFB15'}, - {1348 ,U'\uFB16'}, {1350 ,U'\uFB17'}, {1352 ,U'\uFF41'}, {1353 ,U'\uFF42'}, {1354 ,U'\uFF43'}, {1355 ,U'\uFF44'}, {1356 ,U'\uFF45'}, {1357 ,U'\uFF46'}, {1358 ,U'\uFF47'}, {1359 ,U'\uFF48'}, {1360 ,U'\uFF49'}, {1361 ,U'\uFF4A'}, {1362 ,U'\uFF4B'}, {1363 ,U'\uFF4C'}, {1364 ,U'\uFF4D'}, {1365 ,U'\uFF4E'}, - {1366 ,U'\uFF4F'}, {1367 ,U'\uFF50'}, {1368 ,U'\uFF51'}, {1369 ,U'\uFF52'}, {1370 ,U'\uFF53'}, {1371 ,U'\uFF54'}, {1372 ,U'\uFF55'}, {1373 ,U'\uFF56'}, {1374 ,U'\uFF57'}, {1375 ,U'\uFF58'}, {1376 ,U'\uFF59'}, {1377 ,U'\uFF5A'}, {1378 ,U'\U00010428'}, {1380 ,U'\U00010429'}, {1382 ,U'\U0001042A'}, {1384 ,U'\U0001042B'}, - {1386 ,U'\U0001042C'}, {1388 ,U'\U0001042D'}, {1390 ,U'\U0001042E'}, {1392 ,U'\U0001042F'}, {1394 ,U'\U00010430'}, {1396 ,U'\U00010431'}, {1398 ,U'\U00010432'}, {1400 ,U'\U00010433'}, {1402 ,U'\U00010434'}, {1404 ,U'\U00010435'}, {1406 ,U'\U00010436'}, {1408 ,U'\U00010437'}, {1410 ,U'\U00010438'}, {1412 ,U'\U00010439'}, {1414 ,U'\U0001043A'}, {1416 ,U'\U0001043B'}, - {1418 ,U'\U0001043C'}, {1420 ,U'\U0001043D'}, {1422 ,U'\U0001043E'}, {1424 ,U'\U0001043F'}, {1426 ,U'\U00010440'}, {1428 ,U'\U00010441'}, {1430 ,U'\U00010442'}, {1432 ,U'\U00010443'}, {1434 ,U'\U00010444'}, {1436 ,U'\U00010445'}, {1438 ,U'\U00010446'}, {1440 ,U'\U00010447'}, {1442 ,U'\U00010448'}, {1444 ,U'\U00010449'}, {1446 ,U'\U0001044A'}, {1448 ,U'\U0001044B'}, - {1450 ,U'\U0001044C'}, {1452 ,U'\U0001044D'}, {1454 ,U'\U0001044E'}, {1456 ,U'\U0001044F'}, {1458 ,U'\U000104D8'}, {1460 ,U'\U000104D9'}, {1462 ,U'\U000104DA'}, {1464 ,U'\U000104DB'}, {1466 ,U'\U000104DC'}, {1468 ,U'\U000104DD'}, {1470 ,U'\U000104DE'}, {1472 ,U'\U000104DF'}, {1474 ,U'\U000104E0'}, {1476 ,U'\U000104E1'}, {1478 ,U'\U000104E2'}, {1480 ,U'\U000104E3'}, - {1482 ,U'\U000104E4'}, {1484 ,U'\U000104E5'}, {1486 ,U'\U000104E6'}, {1488 ,U'\U000104E7'}, {1490 ,U'\U000104E8'}, {1492 ,U'\U000104E9'}, {1494 ,U'\U000104EA'}, {1496 ,U'\U000104EB'}, {1498 ,U'\U000104EC'}, {1500 ,U'\U000104ED'}, {1502 ,U'\U000104EE'}, {1504 ,U'\U000104EF'}, {1506 ,U'\U000104F0'}, {1508 ,U'\U000104F1'}, {1510 ,U'\U000104F2'}, {1512 ,U'\U000104F3'}, - {1514 ,U'\U000104F4'}, {1516 ,U'\U000104F5'}, {1518 ,U'\U000104F6'}, {1520 ,U'\U000104F7'}, {1522 ,U'\U000104F8'}, {1524 ,U'\U000104F9'}, {1526 ,U'\U000104FA'}, {1528 ,U'\U000104FB'}, {1530 ,U'\U00010CC0'}, {1532 ,U'\U00010CC1'}, {1534 ,U'\U00010CC2'}, {1536 ,U'\U00010CC3'}, {1538 ,U'\U00010CC4'}, {1540 ,U'\U00010CC5'}, {1542 ,U'\U00010CC6'}, {1544 ,U'\U00010CC7'}, - {1546 ,U'\U00010CC8'}, {1548 ,U'\U00010CC9'}, {1550 ,U'\U00010CCA'}, {1552 ,U'\U00010CCB'}, {1554 ,U'\U00010CCC'}, {1556 ,U'\U00010CCD'}, {1558 ,U'\U00010CCE'}, {1560 ,U'\U00010CCF'}, {1562 ,U'\U00010CD0'}, {1564 ,U'\U00010CD1'}, {1566 ,U'\U00010CD2'}, {1568 ,U'\U00010CD3'}, {1570 ,U'\U00010CD4'}, {1572 ,U'\U00010CD5'}, {1574 ,U'\U00010CD6'}, {1576 ,U'\U00010CD7'}, - {1578 ,U'\U00010CD8'}, {1580 ,U'\U00010CD9'}, {1582 ,U'\U00010CDA'}, {1584 ,U'\U00010CDB'}, {1586 ,U'\U00010CDC'}, {1588 ,U'\U00010CDD'}, {1590 ,U'\U00010CDE'}, {1592 ,U'\U00010CDF'}, {1594 ,U'\U00010CE0'}, {1596 ,U'\U00010CE1'}, {1598 ,U'\U00010CE2'}, {1600 ,U'\U00010CE3'}, {1602 ,U'\U00010CE4'}, {1604 ,U'\U00010CE5'}, {1606 ,U'\U00010CE6'}, {1608 ,U'\U00010CE7'}, - {1610 ,U'\U00010CE8'}, {1612 ,U'\U00010CE9'}, {1614 ,U'\U00010CEA'}, {1616 ,U'\U00010CEB'}, {1618 ,U'\U00010CEC'}, {1620 ,U'\U00010CED'}, {1622 ,U'\U00010CEE'}, {1624 ,U'\U00010CEF'}, {1626 ,U'\U00010CF0'}, {1628 ,U'\U00010CF1'}, {1630 ,U'\U00010CF2'}, {1632 ,U'\U000118C0'}, {1634 ,U'\U000118C1'}, {1636 ,U'\U000118C2'}, {1638 ,U'\U000118C3'}, {1640 ,U'\U000118C4'}, - {1642 ,U'\U000118C5'}, {1644 ,U'\U000118C6'}, {1646 ,U'\U000118C7'}, {1648 ,U'\U000118C8'}, {1650 ,U'\U000118C9'}, {1652 ,U'\U000118CA'}, {1654 ,U'\U000118CB'}, {1656 ,U'\U000118CC'}, {1658 ,U'\U000118CD'}, {1660 ,U'\U000118CE'}, {1662 ,U'\U000118CF'}, {1664 ,U'\U000118D0'}, {1666 ,U'\U000118D1'}, {1668 ,U'\U000118D2'}, {1670 ,U'\U000118D3'}, {1672 ,U'\U000118D4'}, - {1674 ,U'\U000118D5'}, {1676 ,U'\U000118D6'}, {1678 ,U'\U000118D7'}, {1680 ,U'\U000118D8'}, {1682 ,U'\U000118D9'}, {1684 ,U'\U000118DA'}, {1686 ,U'\U000118DB'}, {1688 ,U'\U000118DC'}, {1690 ,U'\U000118DD'}, {1692 ,U'\U000118DE'}, {1694 ,U'\U000118DF'}, {1696 ,U'\U00016E60'}, {1698 ,U'\U00016E61'}, {1700 ,U'\U00016E62'}, {1702 ,U'\U00016E63'}, {1704 ,U'\U00016E64'}, - {1706 ,U'\U00016E65'}, {1708 ,U'\U00016E66'}, {1710 ,U'\U00016E67'}, {1712 ,U'\U00016E68'}, {1714 ,U'\U00016E69'}, {1716 ,U'\U00016E6A'}, {1718 ,U'\U00016E6B'}, {1720 ,U'\U00016E6C'}, {1722 ,U'\U00016E6D'}, {1724 ,U'\U00016E6E'}, {1726 ,U'\U00016E6F'}, {1728 ,U'\U00016E70'}, {1730 ,U'\U00016E71'}, {1732 ,U'\U00016E72'}, {1734 ,U'\U00016E73'}, {1736 ,U'\U00016E74'}, - {1738 ,U'\U00016E75'}, {1740 ,U'\U00016E76'}, {1742 ,U'\U00016E77'}, {1744 ,U'\U00016E78'}, {1746 ,U'\U00016E79'}, {1748 ,U'\U00016E7A'}, {1750 ,U'\U00016E7B'}, {1752 ,U'\U00016E7C'}, {1754 ,U'\U00016E7D'}, {1756 ,U'\U00016E7E'}, {1758 ,U'\U00016E7F'}, {1760 ,U'\U0001E922'}, {1762 ,U'\U0001E923'}, {1764 ,U'\U0001E924'}, {1766 ,U'\U0001E925'}, {1768 ,U'\U0001E926'}, - {1770 ,U'\U0001E927'}, {1772 ,U'\U0001E928'}, {1774 ,U'\U0001E929'}, {1776 ,U'\U0001E92A'}, {1778 ,U'\U0001E92B'}, {1780 ,U'\U0001E92C'}, {1782 ,U'\U0001E92D'}, {1784 ,U'\U0001E92E'}, {1786 ,U'\U0001E92F'}, {1788 ,U'\U0001E930'}, {1790 ,U'\U0001E931'}, {1792 ,U'\U0001E932'}, {1794 ,U'\U0001E933'}, {1796 ,U'\U0001E934'}, {1798 ,U'\U0001E935'}, {1800 ,U'\U0001E936'}, - {1802 ,U'\U0001E937'}, {1804 ,U'\U0001E938'}, {1806 ,U'\U0001E939'}, {1808 ,U'\U0001E93A'}, {1810 ,U'\U0001E93B'}, {1812 ,U'\U0001E93C'}, {1814 ,U'\U0001E93D'}, {1816 ,U'\U0001E93E'}, {1818 ,U'\U0001E93F'}, {1820 ,U'\U0001E940'}, {1822 ,U'\U0001E941'}, {1824 ,U'\U0001E942'}, {1826 ,U'\U0001E943'}, {1828 , 0} + {130 ,U'\u0192'}, {131 ,U'\u0195'}, {132 ,U'\u0199'}, {133 ,U'\u019A'}, {134 ,U'\u019B'}, {135 ,U'\u019E'}, {136 ,U'\u01A1'}, {137 ,U'\u01A3'}, {138 ,U'\u01A5'}, {139 ,U'\u01A8'}, {140 ,U'\u01AD'}, {141 ,U'\u01B0'}, {142 ,U'\u01B4'}, {143 ,U'\u01B6'}, {144 ,U'\u01B9'}, {145 ,U'\u01BD'}, + {146 ,U'\u01BF'}, {147 ,U'\u01C5'}, {148 ,U'\u01C6'}, {149 ,U'\u01C8'}, {150 ,U'\u01C9'}, {151 ,U'\u01CB'}, {152 ,U'\u01CC'}, {153 ,U'\u01CE'}, {154 ,U'\u01D0'}, {155 ,U'\u01D2'}, {156 ,U'\u01D4'}, {157 ,U'\u01D6'}, {158 ,U'\u01D8'}, {159 ,U'\u01DA'}, {160 ,U'\u01DC'}, {161 ,U'\u01DD'}, + {162 ,U'\u01DF'}, {163 ,U'\u01E1'}, {164 ,U'\u01E3'}, {165 ,U'\u01E5'}, {166 ,U'\u01E7'}, {167 ,U'\u01E9'}, {168 ,U'\u01EB'}, {169 ,U'\u01ED'}, {170 ,U'\u01EF'}, {171 ,U'\u01F0'}, {173 ,U'\u01F2'}, {174 ,U'\u01F3'}, {175 ,U'\u01F5'}, {176 ,U'\u01F9'}, {177 ,U'\u01FB'}, {178 ,U'\u01FD'}, + {179 ,U'\u01FF'}, {180 ,U'\u0201'}, {181 ,U'\u0203'}, {182 ,U'\u0205'}, {183 ,U'\u0207'}, {184 ,U'\u0209'}, {185 ,U'\u020B'}, {186 ,U'\u020D'}, {187 ,U'\u020F'}, {188 ,U'\u0211'}, {189 ,U'\u0213'}, {190 ,U'\u0215'}, {191 ,U'\u0217'}, {192 ,U'\u0219'}, {193 ,U'\u021B'}, {194 ,U'\u021D'}, + {195 ,U'\u021F'}, {196 ,U'\u0223'}, {197 ,U'\u0225'}, {198 ,U'\u0227'}, {199 ,U'\u0229'}, {200 ,U'\u022B'}, {201 ,U'\u022D'}, {202 ,U'\u022F'}, {203 ,U'\u0231'}, {204 ,U'\u0233'}, {205 ,U'\u023C'}, {206 ,U'\u023F'}, {207 ,U'\u0240'}, {208 ,U'\u0242'}, {209 ,U'\u0247'}, {210 ,U'\u0249'}, + {211 ,U'\u024B'}, {212 ,U'\u024D'}, {213 ,U'\u024F'}, {214 ,U'\u0250'}, {215 ,U'\u0251'}, {216 ,U'\u0252'}, {217 ,U'\u0253'}, {218 ,U'\u0254'}, {219 ,U'\u0256'}, {220 ,U'\u0257'}, {221 ,U'\u0259'}, {222 ,U'\u025B'}, {223 ,U'\u025C'}, {224 ,U'\u0260'}, {225 ,U'\u0261'}, {226 ,U'\u0263'}, + {227 ,U'\u0264'}, {228 ,U'\u0265'}, {229 ,U'\u0266'}, {230 ,U'\u0268'}, {231 ,U'\u0269'}, {232 ,U'\u026A'}, {233 ,U'\u026B'}, {234 ,U'\u026C'}, {235 ,U'\u026F'}, {236 ,U'\u0271'}, {237 ,U'\u0272'}, {238 ,U'\u0275'}, {239 ,U'\u027D'}, {240 ,U'\u0280'}, {241 ,U'\u0282'}, {242 ,U'\u0283'}, + {243 ,U'\u0287'}, {244 ,U'\u0288'}, {245 ,U'\u0289'}, {246 ,U'\u028A'}, {247 ,U'\u028B'}, {248 ,U'\u028C'}, {249 ,U'\u0292'}, {250 ,U'\u029D'}, {251 ,U'\u029E'}, {252 ,U'\u0345'}, {253 ,U'\u0371'}, {254 ,U'\u0373'}, {255 ,U'\u0377'}, {256 ,U'\u037B'}, {257 ,U'\u037C'}, {258 ,U'\u037D'}, + {259 ,U'\u0390'}, {262 ,U'\u03AC'}, {263 ,U'\u03AD'}, {264 ,U'\u03AE'}, {265 ,U'\u03AF'}, {266 ,U'\u03B0'}, {269 ,U'\u03B1'}, {270 ,U'\u03B2'}, {271 ,U'\u03B3'}, {272 ,U'\u03B4'}, {273 ,U'\u03B5'}, {274 ,U'\u03B6'}, {275 ,U'\u03B7'}, {276 ,U'\u03B8'}, {277 ,U'\u03B9'}, {278 ,U'\u03BA'}, + {279 ,U'\u03BB'}, {280 ,U'\u03BC'}, {281 ,U'\u03BD'}, {282 ,U'\u03BE'}, {283 ,U'\u03BF'}, {284 ,U'\u03C0'}, {285 ,U'\u03C1'}, {286 ,U'\u03C2'}, {287 ,U'\u03C3'}, {288 ,U'\u03C4'}, {289 ,U'\u03C5'}, {290 ,U'\u03C6'}, {291 ,U'\u03C7'}, {292 ,U'\u03C8'}, {293 ,U'\u03C9'}, {294 ,U'\u03CA'}, + {295 ,U'\u03CB'}, {296 ,U'\u03CC'}, {297 ,U'\u03CD'}, {298 ,U'\u03CE'}, {299 ,U'\u03D0'}, {300 ,U'\u03D1'}, {301 ,U'\u03D5'}, {302 ,U'\u03D6'}, {303 ,U'\u03D7'}, {304 ,U'\u03D9'}, {305 ,U'\u03DB'}, {306 ,U'\u03DD'}, {307 ,U'\u03DF'}, {308 ,U'\u03E1'}, {309 ,U'\u03E3'}, {310 ,U'\u03E5'}, + {311 ,U'\u03E7'}, {312 ,U'\u03E9'}, {313 ,U'\u03EB'}, {314 ,U'\u03ED'}, {315 ,U'\u03EF'}, {316 ,U'\u03F0'}, {317 ,U'\u03F1'}, {318 ,U'\u03F2'}, {319 ,U'\u03F3'}, {320 ,U'\u03F5'}, {321 ,U'\u03F8'}, {322 ,U'\u03FB'}, {323 ,U'\u0430'}, {324 ,U'\u0431'}, {325 ,U'\u0432'}, {326 ,U'\u0433'}, + {327 ,U'\u0434'}, {328 ,U'\u0435'}, {329 ,U'\u0436'}, {330 ,U'\u0437'}, {331 ,U'\u0438'}, {332 ,U'\u0439'}, {333 ,U'\u043A'}, {334 ,U'\u043B'}, {335 ,U'\u043C'}, {336 ,U'\u043D'}, {337 ,U'\u043E'}, {338 ,U'\u043F'}, {339 ,U'\u0440'}, {340 ,U'\u0441'}, {341 ,U'\u0442'}, {342 ,U'\u0443'}, + {343 ,U'\u0444'}, {344 ,U'\u0445'}, {345 ,U'\u0446'}, {346 ,U'\u0447'}, {347 ,U'\u0448'}, {348 ,U'\u0449'}, {349 ,U'\u044A'}, {350 ,U'\u044B'}, {351 ,U'\u044C'}, {352 ,U'\u044D'}, {353 ,U'\u044E'}, {354 ,U'\u044F'}, {355 ,U'\u0450'}, {356 ,U'\u0451'}, {357 ,U'\u0452'}, {358 ,U'\u0453'}, + {359 ,U'\u0454'}, {360 ,U'\u0455'}, {361 ,U'\u0456'}, {362 ,U'\u0457'}, {363 ,U'\u0458'}, {364 ,U'\u0459'}, {365 ,U'\u045A'}, {366 ,U'\u045B'}, {367 ,U'\u045C'}, {368 ,U'\u045D'}, {369 ,U'\u045E'}, {370 ,U'\u045F'}, {371 ,U'\u0461'}, {372 ,U'\u0463'}, {373 ,U'\u0465'}, {374 ,U'\u0467'}, + {375 ,U'\u0469'}, {376 ,U'\u046B'}, {377 ,U'\u046D'}, {378 ,U'\u046F'}, {379 ,U'\u0471'}, {380 ,U'\u0473'}, {381 ,U'\u0475'}, {382 ,U'\u0477'}, {383 ,U'\u0479'}, {384 ,U'\u047B'}, {385 ,U'\u047D'}, {386 ,U'\u047F'}, {387 ,U'\u0481'}, {388 ,U'\u048B'}, {389 ,U'\u048D'}, {390 ,U'\u048F'}, + {391 ,U'\u0491'}, {392 ,U'\u0493'}, {393 ,U'\u0495'}, {394 ,U'\u0497'}, {395 ,U'\u0499'}, {396 ,U'\u049B'}, {397 ,U'\u049D'}, {398 ,U'\u049F'}, {399 ,U'\u04A1'}, {400 ,U'\u04A3'}, {401 ,U'\u04A5'}, {402 ,U'\u04A7'}, {403 ,U'\u04A9'}, {404 ,U'\u04AB'}, {405 ,U'\u04AD'}, {406 ,U'\u04AF'}, + {407 ,U'\u04B1'}, {408 ,U'\u04B3'}, {409 ,U'\u04B5'}, {410 ,U'\u04B7'}, {411 ,U'\u04B9'}, {412 ,U'\u04BB'}, {413 ,U'\u04BD'}, {414 ,U'\u04BF'}, {415 ,U'\u04C2'}, {416 ,U'\u04C4'}, {417 ,U'\u04C6'}, {418 ,U'\u04C8'}, {419 ,U'\u04CA'}, {420 ,U'\u04CC'}, {421 ,U'\u04CE'}, {422 ,U'\u04CF'}, + {423 ,U'\u04D1'}, {424 ,U'\u04D3'}, {425 ,U'\u04D5'}, {426 ,U'\u04D7'}, {427 ,U'\u04D9'}, {428 ,U'\u04DB'}, {429 ,U'\u04DD'}, {430 ,U'\u04DF'}, {431 ,U'\u04E1'}, {432 ,U'\u04E3'}, {433 ,U'\u04E5'}, {434 ,U'\u04E7'}, {435 ,U'\u04E9'}, {436 ,U'\u04EB'}, {437 ,U'\u04ED'}, {438 ,U'\u04EF'}, + {439 ,U'\u04F1'}, {440 ,U'\u04F3'}, {441 ,U'\u04F5'}, {442 ,U'\u04F7'}, {443 ,U'\u04F9'}, {444 ,U'\u04FB'}, {445 ,U'\u04FD'}, {446 ,U'\u04FF'}, {447 ,U'\u0501'}, {448 ,U'\u0503'}, {449 ,U'\u0505'}, {450 ,U'\u0507'}, {451 ,U'\u0509'}, {452 ,U'\u050B'}, {453 ,U'\u050D'}, {454 ,U'\u050F'}, + {455 ,U'\u0511'}, {456 ,U'\u0513'}, {457 ,U'\u0515'}, {458 ,U'\u0517'}, {459 ,U'\u0519'}, {460 ,U'\u051B'}, {461 ,U'\u051D'}, {462 ,U'\u051F'}, {463 ,U'\u0521'}, {464 ,U'\u0523'}, {465 ,U'\u0525'}, {466 ,U'\u0527'}, {467 ,U'\u0529'}, {468 ,U'\u052B'}, {469 ,U'\u052D'}, {470 ,U'\u052F'}, + {471 ,U'\u0561'}, {472 ,U'\u0562'}, {473 ,U'\u0563'}, {474 ,U'\u0564'}, {475 ,U'\u0565'}, {476 ,U'\u0566'}, {477 ,U'\u0567'}, {478 ,U'\u0568'}, {479 ,U'\u0569'}, {480 ,U'\u056A'}, {481 ,U'\u056B'}, {482 ,U'\u056C'}, {483 ,U'\u056D'}, {484 ,U'\u056E'}, {485 ,U'\u056F'}, {486 ,U'\u0570'}, + {487 ,U'\u0571'}, {488 ,U'\u0572'}, {489 ,U'\u0573'}, {490 ,U'\u0574'}, {491 ,U'\u0575'}, {492 ,U'\u0576'}, {493 ,U'\u0577'}, {494 ,U'\u0578'}, {495 ,U'\u0579'}, {496 ,U'\u057A'}, {497 ,U'\u057B'}, {498 ,U'\u057C'}, {499 ,U'\u057D'}, {500 ,U'\u057E'}, {501 ,U'\u057F'}, {502 ,U'\u0580'}, + {503 ,U'\u0581'}, {504 ,U'\u0582'}, {505 ,U'\u0583'}, {506 ,U'\u0584'}, {507 ,U'\u0585'}, {508 ,U'\u0586'}, {509 ,U'\u0587'}, {511 ,U'\u10D0'}, {512 ,U'\u10D1'}, {513 ,U'\u10D2'}, {514 ,U'\u10D3'}, {515 ,U'\u10D4'}, {516 ,U'\u10D5'}, {517 ,U'\u10D6'}, {518 ,U'\u10D7'}, {519 ,U'\u10D8'}, + {520 ,U'\u10D9'}, {521 ,U'\u10DA'}, {522 ,U'\u10DB'}, {523 ,U'\u10DC'}, {524 ,U'\u10DD'}, {525 ,U'\u10DE'}, {526 ,U'\u10DF'}, {527 ,U'\u10E0'}, {528 ,U'\u10E1'}, {529 ,U'\u10E2'}, {530 ,U'\u10E3'}, {531 ,U'\u10E4'}, {532 ,U'\u10E5'}, {533 ,U'\u10E6'}, {534 ,U'\u10E7'}, {535 ,U'\u10E8'}, + {536 ,U'\u10E9'}, {537 ,U'\u10EA'}, {538 ,U'\u10EB'}, {539 ,U'\u10EC'}, {540 ,U'\u10ED'}, {541 ,U'\u10EE'}, {542 ,U'\u10EF'}, {543 ,U'\u10F0'}, {544 ,U'\u10F1'}, {545 ,U'\u10F2'}, {546 ,U'\u10F3'}, {547 ,U'\u10F4'}, {548 ,U'\u10F5'}, {549 ,U'\u10F6'}, {550 ,U'\u10F7'}, {551 ,U'\u10F8'}, + {552 ,U'\u10F9'}, {553 ,U'\u10FA'}, {554 ,U'\u10FD'}, {555 ,U'\u10FE'}, {556 ,U'\u10FF'}, {557 ,U'\u13F8'}, {558 ,U'\u13F9'}, {559 ,U'\u13FA'}, {560 ,U'\u13FB'}, {561 ,U'\u13FC'}, {562 ,U'\u13FD'}, {563 ,U'\u1C80'}, {564 ,U'\u1C81'}, {565 ,U'\u1C82'}, {566 ,U'\u1C83'}, {567 ,U'\u1C84'}, + {568 ,U'\u1C85'}, {569 ,U'\u1C86'}, {570 ,U'\u1C87'}, {571 ,U'\u1C88'}, {572 ,U'\u1C8A'}, {573 ,U'\u1D79'}, {574 ,U'\u1D7D'}, {575 ,U'\u1D8E'}, {576 ,U'\u1E01'}, {577 ,U'\u1E03'}, {578 ,U'\u1E05'}, {579 ,U'\u1E07'}, {580 ,U'\u1E09'}, {581 ,U'\u1E0B'}, {582 ,U'\u1E0D'}, {583 ,U'\u1E0F'}, + {584 ,U'\u1E11'}, {585 ,U'\u1E13'}, {586 ,U'\u1E15'}, {587 ,U'\u1E17'}, {588 ,U'\u1E19'}, {589 ,U'\u1E1B'}, {590 ,U'\u1E1D'}, {591 ,U'\u1E1F'}, {592 ,U'\u1E21'}, {593 ,U'\u1E23'}, {594 ,U'\u1E25'}, {595 ,U'\u1E27'}, {596 ,U'\u1E29'}, {597 ,U'\u1E2B'}, {598 ,U'\u1E2D'}, {599 ,U'\u1E2F'}, + {600 ,U'\u1E31'}, {601 ,U'\u1E33'}, {602 ,U'\u1E35'}, {603 ,U'\u1E37'}, {604 ,U'\u1E39'}, {605 ,U'\u1E3B'}, {606 ,U'\u1E3D'}, {607 ,U'\u1E3F'}, {608 ,U'\u1E41'}, {609 ,U'\u1E43'}, {610 ,U'\u1E45'}, {611 ,U'\u1E47'}, {612 ,U'\u1E49'}, {613 ,U'\u1E4B'}, {614 ,U'\u1E4D'}, {615 ,U'\u1E4F'}, + {616 ,U'\u1E51'}, {617 ,U'\u1E53'}, {618 ,U'\u1E55'}, {619 ,U'\u1E57'}, {620 ,U'\u1E59'}, {621 ,U'\u1E5B'}, {622 ,U'\u1E5D'}, {623 ,U'\u1E5F'}, {624 ,U'\u1E61'}, {625 ,U'\u1E63'}, {626 ,U'\u1E65'}, {627 ,U'\u1E67'}, {628 ,U'\u1E69'}, {629 ,U'\u1E6B'}, {630 ,U'\u1E6D'}, {631 ,U'\u1E6F'}, + {632 ,U'\u1E71'}, {633 ,U'\u1E73'}, {634 ,U'\u1E75'}, {635 ,U'\u1E77'}, {636 ,U'\u1E79'}, {637 ,U'\u1E7B'}, {638 ,U'\u1E7D'}, {639 ,U'\u1E7F'}, {640 ,U'\u1E81'}, {641 ,U'\u1E83'}, {642 ,U'\u1E85'}, {643 ,U'\u1E87'}, {644 ,U'\u1E89'}, {645 ,U'\u1E8B'}, {646 ,U'\u1E8D'}, {647 ,U'\u1E8F'}, + {648 ,U'\u1E91'}, {649 ,U'\u1E93'}, {650 ,U'\u1E95'}, {651 ,U'\u1E96'}, {653 ,U'\u1E97'}, {655 ,U'\u1E98'}, {657 ,U'\u1E99'}, {659 ,U'\u1E9A'}, {661 ,U'\u1E9B'}, {662 ,U'\u1EA1'}, {663 ,U'\u1EA3'}, {664 ,U'\u1EA5'}, {665 ,U'\u1EA7'}, {666 ,U'\u1EA9'}, {667 ,U'\u1EAB'}, {668 ,U'\u1EAD'}, + {669 ,U'\u1EAF'}, {670 ,U'\u1EB1'}, {671 ,U'\u1EB3'}, {672 ,U'\u1EB5'}, {673 ,U'\u1EB7'}, {674 ,U'\u1EB9'}, {675 ,U'\u1EBB'}, {676 ,U'\u1EBD'}, {677 ,U'\u1EBF'}, {678 ,U'\u1EC1'}, {679 ,U'\u1EC3'}, {680 ,U'\u1EC5'}, {681 ,U'\u1EC7'}, {682 ,U'\u1EC9'}, {683 ,U'\u1ECB'}, {684 ,U'\u1ECD'}, + {685 ,U'\u1ECF'}, {686 ,U'\u1ED1'}, {687 ,U'\u1ED3'}, {688 ,U'\u1ED5'}, {689 ,U'\u1ED7'}, {690 ,U'\u1ED9'}, {691 ,U'\u1EDB'}, {692 ,U'\u1EDD'}, {693 ,U'\u1EDF'}, {694 ,U'\u1EE1'}, {695 ,U'\u1EE3'}, {696 ,U'\u1EE5'}, {697 ,U'\u1EE7'}, {698 ,U'\u1EE9'}, {699 ,U'\u1EEB'}, {700 ,U'\u1EED'}, + {701 ,U'\u1EEF'}, {702 ,U'\u1EF1'}, {703 ,U'\u1EF3'}, {704 ,U'\u1EF5'}, {705 ,U'\u1EF7'}, {706 ,U'\u1EF9'}, {707 ,U'\u1EFB'}, {708 ,U'\u1EFD'}, {709 ,U'\u1EFF'}, {710 ,U'\u1F00'}, {711 ,U'\u1F01'}, {712 ,U'\u1F02'}, {713 ,U'\u1F03'}, {714 ,U'\u1F04'}, {715 ,U'\u1F05'}, {716 ,U'\u1F06'}, + {717 ,U'\u1F07'}, {718 ,U'\u1F10'}, {719 ,U'\u1F11'}, {720 ,U'\u1F12'}, {721 ,U'\u1F13'}, {722 ,U'\u1F14'}, {723 ,U'\u1F15'}, {724 ,U'\u1F20'}, {725 ,U'\u1F21'}, {726 ,U'\u1F22'}, {727 ,U'\u1F23'}, {728 ,U'\u1F24'}, {729 ,U'\u1F25'}, {730 ,U'\u1F26'}, {731 ,U'\u1F27'}, {732 ,U'\u1F30'}, + {733 ,U'\u1F31'}, {734 ,U'\u1F32'}, {735 ,U'\u1F33'}, {736 ,U'\u1F34'}, {737 ,U'\u1F35'}, {738 ,U'\u1F36'}, {739 ,U'\u1F37'}, {740 ,U'\u1F40'}, {741 ,U'\u1F41'}, {742 ,U'\u1F42'}, {743 ,U'\u1F43'}, {744 ,U'\u1F44'}, {745 ,U'\u1F45'}, {746 ,U'\u1F50'}, {748 ,U'\u1F51'}, {749 ,U'\u1F52'}, + {752 ,U'\u1F53'}, {753 ,U'\u1F54'}, {756 ,U'\u1F55'}, {757 ,U'\u1F56'}, {760 ,U'\u1F57'}, {761 ,U'\u1F60'}, {762 ,U'\u1F61'}, {763 ,U'\u1F62'}, {764 ,U'\u1F63'}, {765 ,U'\u1F64'}, {766 ,U'\u1F65'}, {767 ,U'\u1F66'}, {768 ,U'\u1F67'}, {769 ,U'\u1F70'}, {770 ,U'\u1F71'}, {771 ,U'\u1F72'}, + {772 ,U'\u1F73'}, {773 ,U'\u1F74'}, {774 ,U'\u1F75'}, {775 ,U'\u1F76'}, {776 ,U'\u1F77'}, {777 ,U'\u1F78'}, {778 ,U'\u1F79'}, {779 ,U'\u1F7A'}, {780 ,U'\u1F7B'}, {781 ,U'\u1F7C'}, {782 ,U'\u1F7D'}, {783 ,U'\u1F80'}, {785 ,U'\u1F81'}, {787 ,U'\u1F82'}, {789 ,U'\u1F83'}, {791 ,U'\u1F84'}, + {793 ,U'\u1F85'}, {795 ,U'\u1F86'}, {797 ,U'\u1F87'}, {799 ,U'\u1F88'}, {801 ,U'\u1F89'}, {803 ,U'\u1F8A'}, {805 ,U'\u1F8B'}, {807 ,U'\u1F8C'}, {809 ,U'\u1F8D'}, {811 ,U'\u1F8E'}, {813 ,U'\u1F8F'}, {815 ,U'\u1F90'}, {817 ,U'\u1F91'}, {819 ,U'\u1F92'}, {821 ,U'\u1F93'}, {823 ,U'\u1F94'}, + {825 ,U'\u1F95'}, {827 ,U'\u1F96'}, {829 ,U'\u1F97'}, {831 ,U'\u1F98'}, {833 ,U'\u1F99'}, {835 ,U'\u1F9A'}, {837 ,U'\u1F9B'}, {839 ,U'\u1F9C'}, {841 ,U'\u1F9D'}, {843 ,U'\u1F9E'}, {845 ,U'\u1F9F'}, {847 ,U'\u1FA0'}, {849 ,U'\u1FA1'}, {851 ,U'\u1FA2'}, {853 ,U'\u1FA3'}, {855 ,U'\u1FA4'}, + {857 ,U'\u1FA5'}, {859 ,U'\u1FA6'}, {861 ,U'\u1FA7'}, {863 ,U'\u1FA8'}, {865 ,U'\u1FA9'}, {867 ,U'\u1FAA'}, {869 ,U'\u1FAB'}, {871 ,U'\u1FAC'}, {873 ,U'\u1FAD'}, {875 ,U'\u1FAE'}, {877 ,U'\u1FAF'}, {879 ,U'\u1FB0'}, {880 ,U'\u1FB1'}, {881 ,U'\u1FB2'}, {883 ,U'\u1FB3'}, {885 ,U'\u1FB4'}, + {887 ,U'\u1FB6'}, {889 ,U'\u1FB7'}, {892 ,U'\u1FBC'}, {894 ,U'\u1FBE'}, {895 ,U'\u1FC2'}, {897 ,U'\u1FC3'}, {899 ,U'\u1FC4'}, {901 ,U'\u1FC6'}, {903 ,U'\u1FC7'}, {906 ,U'\u1FCC'}, {908 ,U'\u1FD0'}, {909 ,U'\u1FD1'}, {910 ,U'\u1FD2'}, {913 ,U'\u1FD3'}, {916 ,U'\u1FD6'}, {918 ,U'\u1FD7'}, + {921 ,U'\u1FE0'}, {922 ,U'\u1FE1'}, {923 ,U'\u1FE2'}, {926 ,U'\u1FE3'}, {929 ,U'\u1FE4'}, {931 ,U'\u1FE5'}, {932 ,U'\u1FE6'}, {934 ,U'\u1FE7'}, {937 ,U'\u1FF2'}, {939 ,U'\u1FF3'}, {941 ,U'\u1FF4'}, {943 ,U'\u1FF6'}, {945 ,U'\u1FF7'}, {948 ,U'\u1FFC'}, {950 ,U'\u214E'}, {951 ,U'\u2170'}, + {952 ,U'\u2171'}, {953 ,U'\u2172'}, {954 ,U'\u2173'}, {955 ,U'\u2174'}, {956 ,U'\u2175'}, {957 ,U'\u2176'}, {958 ,U'\u2177'}, {959 ,U'\u2178'}, {960 ,U'\u2179'}, {961 ,U'\u217A'}, {962 ,U'\u217B'}, {963 ,U'\u217C'}, {964 ,U'\u217D'}, {965 ,U'\u217E'}, {966 ,U'\u217F'}, {967 ,U'\u2184'}, + {968 ,U'\u24D0'}, {969 ,U'\u24D1'}, {970 ,U'\u24D2'}, {971 ,U'\u24D3'}, {972 ,U'\u24D4'}, {973 ,U'\u24D5'}, {974 ,U'\u24D6'}, {975 ,U'\u24D7'}, {976 ,U'\u24D8'}, {977 ,U'\u24D9'}, {978 ,U'\u24DA'}, {979 ,U'\u24DB'}, {980 ,U'\u24DC'}, {981 ,U'\u24DD'}, {982 ,U'\u24DE'}, {983 ,U'\u24DF'}, + {984 ,U'\u24E0'}, {985 ,U'\u24E1'}, {986 ,U'\u24E2'}, {987 ,U'\u24E3'}, {988 ,U'\u24E4'}, {989 ,U'\u24E5'}, {990 ,U'\u24E6'}, {991 ,U'\u24E7'}, {992 ,U'\u24E8'}, {993 ,U'\u24E9'}, {994 ,U'\u2C30'}, {995 ,U'\u2C31'}, {996 ,U'\u2C32'}, {997 ,U'\u2C33'}, {998 ,U'\u2C34'}, {999 ,U'\u2C35'}, + {1000 ,U'\u2C36'}, {1001 ,U'\u2C37'}, {1002 ,U'\u2C38'}, {1003 ,U'\u2C39'}, {1004 ,U'\u2C3A'}, {1005 ,U'\u2C3B'}, {1006 ,U'\u2C3C'}, {1007 ,U'\u2C3D'}, {1008 ,U'\u2C3E'}, {1009 ,U'\u2C3F'}, {1010 ,U'\u2C40'}, {1011 ,U'\u2C41'}, {1012 ,U'\u2C42'}, {1013 ,U'\u2C43'}, {1014 ,U'\u2C44'}, {1015 ,U'\u2C45'}, + {1016 ,U'\u2C46'}, {1017 ,U'\u2C47'}, {1018 ,U'\u2C48'}, {1019 ,U'\u2C49'}, {1020 ,U'\u2C4A'}, {1021 ,U'\u2C4B'}, {1022 ,U'\u2C4C'}, {1023 ,U'\u2C4D'}, {1024 ,U'\u2C4E'}, {1025 ,U'\u2C4F'}, {1026 ,U'\u2C50'}, {1027 ,U'\u2C51'}, {1028 ,U'\u2C52'}, {1029 ,U'\u2C53'}, {1030 ,U'\u2C54'}, {1031 ,U'\u2C55'}, + {1032 ,U'\u2C56'}, {1033 ,U'\u2C57'}, {1034 ,U'\u2C58'}, {1035 ,U'\u2C59'}, {1036 ,U'\u2C5A'}, {1037 ,U'\u2C5B'}, {1038 ,U'\u2C5C'}, {1039 ,U'\u2C5D'}, {1040 ,U'\u2C5E'}, {1041 ,U'\u2C5F'}, {1042 ,U'\u2C61'}, {1043 ,U'\u2C65'}, {1044 ,U'\u2C66'}, {1045 ,U'\u2C68'}, {1046 ,U'\u2C6A'}, {1047 ,U'\u2C6C'}, + {1048 ,U'\u2C73'}, {1049 ,U'\u2C76'}, {1050 ,U'\u2C81'}, {1051 ,U'\u2C83'}, {1052 ,U'\u2C85'}, {1053 ,U'\u2C87'}, {1054 ,U'\u2C89'}, {1055 ,U'\u2C8B'}, {1056 ,U'\u2C8D'}, {1057 ,U'\u2C8F'}, {1058 ,U'\u2C91'}, {1059 ,U'\u2C93'}, {1060 ,U'\u2C95'}, {1061 ,U'\u2C97'}, {1062 ,U'\u2C99'}, {1063 ,U'\u2C9B'}, + {1064 ,U'\u2C9D'}, {1065 ,U'\u2C9F'}, {1066 ,U'\u2CA1'}, {1067 ,U'\u2CA3'}, {1068 ,U'\u2CA5'}, {1069 ,U'\u2CA7'}, {1070 ,U'\u2CA9'}, {1071 ,U'\u2CAB'}, {1072 ,U'\u2CAD'}, {1073 ,U'\u2CAF'}, {1074 ,U'\u2CB1'}, {1075 ,U'\u2CB3'}, {1076 ,U'\u2CB5'}, {1077 ,U'\u2CB7'}, {1078 ,U'\u2CB9'}, {1079 ,U'\u2CBB'}, + {1080 ,U'\u2CBD'}, {1081 ,U'\u2CBF'}, {1082 ,U'\u2CC1'}, {1083 ,U'\u2CC3'}, {1084 ,U'\u2CC5'}, {1085 ,U'\u2CC7'}, {1086 ,U'\u2CC9'}, {1087 ,U'\u2CCB'}, {1088 ,U'\u2CCD'}, {1089 ,U'\u2CCF'}, {1090 ,U'\u2CD1'}, {1091 ,U'\u2CD3'}, {1092 ,U'\u2CD5'}, {1093 ,U'\u2CD7'}, {1094 ,U'\u2CD9'}, {1095 ,U'\u2CDB'}, + {1096 ,U'\u2CDD'}, {1097 ,U'\u2CDF'}, {1098 ,U'\u2CE1'}, {1099 ,U'\u2CE3'}, {1100 ,U'\u2CEC'}, {1101 ,U'\u2CEE'}, {1102 ,U'\u2CF3'}, {1103 ,U'\u2D00'}, {1104 ,U'\u2D01'}, {1105 ,U'\u2D02'}, {1106 ,U'\u2D03'}, {1107 ,U'\u2D04'}, {1108 ,U'\u2D05'}, {1109 ,U'\u2D06'}, {1110 ,U'\u2D07'}, {1111 ,U'\u2D08'}, + {1112 ,U'\u2D09'}, {1113 ,U'\u2D0A'}, {1114 ,U'\u2D0B'}, {1115 ,U'\u2D0C'}, {1116 ,U'\u2D0D'}, {1117 ,U'\u2D0E'}, {1118 ,U'\u2D0F'}, {1119 ,U'\u2D10'}, {1120 ,U'\u2D11'}, {1121 ,U'\u2D12'}, {1122 ,U'\u2D13'}, {1123 ,U'\u2D14'}, {1124 ,U'\u2D15'}, {1125 ,U'\u2D16'}, {1126 ,U'\u2D17'}, {1127 ,U'\u2D18'}, + {1128 ,U'\u2D19'}, {1129 ,U'\u2D1A'}, {1130 ,U'\u2D1B'}, {1131 ,U'\u2D1C'}, {1132 ,U'\u2D1D'}, {1133 ,U'\u2D1E'}, {1134 ,U'\u2D1F'}, {1135 ,U'\u2D20'}, {1136 ,U'\u2D21'}, {1137 ,U'\u2D22'}, {1138 ,U'\u2D23'}, {1139 ,U'\u2D24'}, {1140 ,U'\u2D25'}, {1141 ,U'\u2D27'}, {1142 ,U'\u2D2D'}, {1143 ,U'\uA641'}, + {1144 ,U'\uA643'}, {1145 ,U'\uA645'}, {1146 ,U'\uA647'}, {1147 ,U'\uA649'}, {1148 ,U'\uA64B'}, {1149 ,U'\uA64D'}, {1150 ,U'\uA64F'}, {1151 ,U'\uA651'}, {1152 ,U'\uA653'}, {1153 ,U'\uA655'}, {1154 ,U'\uA657'}, {1155 ,U'\uA659'}, {1156 ,U'\uA65B'}, {1157 ,U'\uA65D'}, {1158 ,U'\uA65F'}, {1159 ,U'\uA661'}, + {1160 ,U'\uA663'}, {1161 ,U'\uA665'}, {1162 ,U'\uA667'}, {1163 ,U'\uA669'}, {1164 ,U'\uA66B'}, {1165 ,U'\uA66D'}, {1166 ,U'\uA681'}, {1167 ,U'\uA683'}, {1168 ,U'\uA685'}, {1169 ,U'\uA687'}, {1170 ,U'\uA689'}, {1171 ,U'\uA68B'}, {1172 ,U'\uA68D'}, {1173 ,U'\uA68F'}, {1174 ,U'\uA691'}, {1175 ,U'\uA693'}, + {1176 ,U'\uA695'}, {1177 ,U'\uA697'}, {1178 ,U'\uA699'}, {1179 ,U'\uA69B'}, {1180 ,U'\uA723'}, {1181 ,U'\uA725'}, {1182 ,U'\uA727'}, {1183 ,U'\uA729'}, {1184 ,U'\uA72B'}, {1185 ,U'\uA72D'}, {1186 ,U'\uA72F'}, {1187 ,U'\uA733'}, {1188 ,U'\uA735'}, {1189 ,U'\uA737'}, {1190 ,U'\uA739'}, {1191 ,U'\uA73B'}, + {1192 ,U'\uA73D'}, {1193 ,U'\uA73F'}, {1194 ,U'\uA741'}, {1195 ,U'\uA743'}, {1196 ,U'\uA745'}, {1197 ,U'\uA747'}, {1198 ,U'\uA749'}, {1199 ,U'\uA74B'}, {1200 ,U'\uA74D'}, {1201 ,U'\uA74F'}, {1202 ,U'\uA751'}, {1203 ,U'\uA753'}, {1204 ,U'\uA755'}, {1205 ,U'\uA757'}, {1206 ,U'\uA759'}, {1207 ,U'\uA75B'}, + {1208 ,U'\uA75D'}, {1209 ,U'\uA75F'}, {1210 ,U'\uA761'}, {1211 ,U'\uA763'}, {1212 ,U'\uA765'}, {1213 ,U'\uA767'}, {1214 ,U'\uA769'}, {1215 ,U'\uA76B'}, {1216 ,U'\uA76D'}, {1217 ,U'\uA76F'}, {1218 ,U'\uA77A'}, {1219 ,U'\uA77C'}, {1220 ,U'\uA77F'}, {1221 ,U'\uA781'}, {1222 ,U'\uA783'}, {1223 ,U'\uA785'}, + {1224 ,U'\uA787'}, {1225 ,U'\uA78C'}, {1226 ,U'\uA791'}, {1227 ,U'\uA793'}, {1228 ,U'\uA794'}, {1229 ,U'\uA797'}, {1230 ,U'\uA799'}, {1231 ,U'\uA79B'}, {1232 ,U'\uA79D'}, {1233 ,U'\uA79F'}, {1234 ,U'\uA7A1'}, {1235 ,U'\uA7A3'}, {1236 ,U'\uA7A5'}, {1237 ,U'\uA7A7'}, {1238 ,U'\uA7A9'}, {1239 ,U'\uA7B5'}, + {1240 ,U'\uA7B7'}, {1241 ,U'\uA7B9'}, {1242 ,U'\uA7BB'}, {1243 ,U'\uA7BD'}, {1244 ,U'\uA7BF'}, {1245 ,U'\uA7C1'}, {1246 ,U'\uA7C3'}, {1247 ,U'\uA7C8'}, {1248 ,U'\uA7CA'}, {1249 ,U'\uA7CD'}, {1250 ,U'\uA7D1'}, {1251 ,U'\uA7D7'}, {1252 ,U'\uA7D9'}, {1253 ,U'\uA7DB'}, {1254 ,U'\uA7F6'}, {1255 ,U'\uAB53'}, + {1256 ,U'\uAB70'}, {1257 ,U'\uAB71'}, {1258 ,U'\uAB72'}, {1259 ,U'\uAB73'}, {1260 ,U'\uAB74'}, {1261 ,U'\uAB75'}, {1262 ,U'\uAB76'}, {1263 ,U'\uAB77'}, {1264 ,U'\uAB78'}, {1265 ,U'\uAB79'}, {1266 ,U'\uAB7A'}, {1267 ,U'\uAB7B'}, {1268 ,U'\uAB7C'}, {1269 ,U'\uAB7D'}, {1270 ,U'\uAB7E'}, {1271 ,U'\uAB7F'}, + {1272 ,U'\uAB80'}, {1273 ,U'\uAB81'}, {1274 ,U'\uAB82'}, {1275 ,U'\uAB83'}, {1276 ,U'\uAB84'}, {1277 ,U'\uAB85'}, {1278 ,U'\uAB86'}, {1279 ,U'\uAB87'}, {1280 ,U'\uAB88'}, {1281 ,U'\uAB89'}, {1282 ,U'\uAB8A'}, {1283 ,U'\uAB8B'}, {1284 ,U'\uAB8C'}, {1285 ,U'\uAB8D'}, {1286 ,U'\uAB8E'}, {1287 ,U'\uAB8F'}, + {1288 ,U'\uAB90'}, {1289 ,U'\uAB91'}, {1290 ,U'\uAB92'}, {1291 ,U'\uAB93'}, {1292 ,U'\uAB94'}, {1293 ,U'\uAB95'}, {1294 ,U'\uAB96'}, {1295 ,U'\uAB97'}, {1296 ,U'\uAB98'}, {1297 ,U'\uAB99'}, {1298 ,U'\uAB9A'}, {1299 ,U'\uAB9B'}, {1300 ,U'\uAB9C'}, {1301 ,U'\uAB9D'}, {1302 ,U'\uAB9E'}, {1303 ,U'\uAB9F'}, + {1304 ,U'\uABA0'}, {1305 ,U'\uABA1'}, {1306 ,U'\uABA2'}, {1307 ,U'\uABA3'}, {1308 ,U'\uABA4'}, {1309 ,U'\uABA5'}, {1310 ,U'\uABA6'}, {1311 ,U'\uABA7'}, {1312 ,U'\uABA8'}, {1313 ,U'\uABA9'}, {1314 ,U'\uABAA'}, {1315 ,U'\uABAB'}, {1316 ,U'\uABAC'}, {1317 ,U'\uABAD'}, {1318 ,U'\uABAE'}, {1319 ,U'\uABAF'}, + {1320 ,U'\uABB0'}, {1321 ,U'\uABB1'}, {1322 ,U'\uABB2'}, {1323 ,U'\uABB3'}, {1324 ,U'\uABB4'}, {1325 ,U'\uABB5'}, {1326 ,U'\uABB6'}, {1327 ,U'\uABB7'}, {1328 ,U'\uABB8'}, {1329 ,U'\uABB9'}, {1330 ,U'\uABBA'}, {1331 ,U'\uABBB'}, {1332 ,U'\uABBC'}, {1333 ,U'\uABBD'}, {1334 ,U'\uABBE'}, {1335 ,U'\uABBF'}, + {1336 ,U'\uFB00'}, {1338 ,U'\uFB01'}, {1340 ,U'\uFB02'}, {1342 ,U'\uFB03'}, {1345 ,U'\uFB04'}, {1348 ,U'\uFB05'}, {1350 ,U'\uFB06'}, {1352 ,U'\uFB13'}, {1354 ,U'\uFB14'}, {1356 ,U'\uFB15'}, {1358 ,U'\uFB16'}, {1360 ,U'\uFB17'}, {1362 ,U'\uFF41'}, {1363 ,U'\uFF42'}, {1364 ,U'\uFF43'}, {1365 ,U'\uFF44'}, + {1366 ,U'\uFF45'}, {1367 ,U'\uFF46'}, {1368 ,U'\uFF47'}, {1369 ,U'\uFF48'}, {1370 ,U'\uFF49'}, {1371 ,U'\uFF4A'}, {1372 ,U'\uFF4B'}, {1373 ,U'\uFF4C'}, {1374 ,U'\uFF4D'}, {1375 ,U'\uFF4E'}, {1376 ,U'\uFF4F'}, {1377 ,U'\uFF50'}, {1378 ,U'\uFF51'}, {1379 ,U'\uFF52'}, {1380 ,U'\uFF53'}, {1381 ,U'\uFF54'}, + {1382 ,U'\uFF55'}, {1383 ,U'\uFF56'}, {1384 ,U'\uFF57'}, {1385 ,U'\uFF58'}, {1386 ,U'\uFF59'}, {1387 ,U'\uFF5A'}, {1388 ,U'\U00010428'}, {1390 ,U'\U00010429'}, {1392 ,U'\U0001042A'}, {1394 ,U'\U0001042B'}, {1396 ,U'\U0001042C'}, {1398 ,U'\U0001042D'}, {1400 ,U'\U0001042E'}, {1402 ,U'\U0001042F'}, {1404 ,U'\U00010430'}, {1406 ,U'\U00010431'}, + {1408 ,U'\U00010432'}, {1410 ,U'\U00010433'}, {1412 ,U'\U00010434'}, {1414 ,U'\U00010435'}, {1416 ,U'\U00010436'}, {1418 ,U'\U00010437'}, {1420 ,U'\U00010438'}, {1422 ,U'\U00010439'}, {1424 ,U'\U0001043A'}, {1426 ,U'\U0001043B'}, {1428 ,U'\U0001043C'}, {1430 ,U'\U0001043D'}, {1432 ,U'\U0001043E'}, {1434 ,U'\U0001043F'}, {1436 ,U'\U00010440'}, {1438 ,U'\U00010441'}, + {1440 ,U'\U00010442'}, {1442 ,U'\U00010443'}, {1444 ,U'\U00010444'}, {1446 ,U'\U00010445'}, {1448 ,U'\U00010446'}, {1450 ,U'\U00010447'}, {1452 ,U'\U00010448'}, {1454 ,U'\U00010449'}, {1456 ,U'\U0001044A'}, {1458 ,U'\U0001044B'}, {1460 ,U'\U0001044C'}, {1462 ,U'\U0001044D'}, {1464 ,U'\U0001044E'}, {1466 ,U'\U0001044F'}, {1468 ,U'\U000104D8'}, {1470 ,U'\U000104D9'}, + {1472 ,U'\U000104DA'}, {1474 ,U'\U000104DB'}, {1476 ,U'\U000104DC'}, {1478 ,U'\U000104DD'}, {1480 ,U'\U000104DE'}, {1482 ,U'\U000104DF'}, {1484 ,U'\U000104E0'}, {1486 ,U'\U000104E1'}, {1488 ,U'\U000104E2'}, {1490 ,U'\U000104E3'}, {1492 ,U'\U000104E4'}, {1494 ,U'\U000104E5'}, {1496 ,U'\U000104E6'}, {1498 ,U'\U000104E7'}, {1500 ,U'\U000104E8'}, {1502 ,U'\U000104E9'}, + {1504 ,U'\U000104EA'}, {1506 ,U'\U000104EB'}, {1508 ,U'\U000104EC'}, {1510 ,U'\U000104ED'}, {1512 ,U'\U000104EE'}, {1514 ,U'\U000104EF'}, {1516 ,U'\U000104F0'}, {1518 ,U'\U000104F1'}, {1520 ,U'\U000104F2'}, {1522 ,U'\U000104F3'}, {1524 ,U'\U000104F4'}, {1526 ,U'\U000104F5'}, {1528 ,U'\U000104F6'}, {1530 ,U'\U000104F7'}, {1532 ,U'\U000104F8'}, {1534 ,U'\U000104F9'}, + {1536 ,U'\U000104FA'}, {1538 ,U'\U000104FB'}, {1540 ,U'\U00010597'}, {1542 ,U'\U00010598'}, {1544 ,U'\U00010599'}, {1546 ,U'\U0001059A'}, {1548 ,U'\U0001059B'}, {1550 ,U'\U0001059C'}, {1552 ,U'\U0001059D'}, {1554 ,U'\U0001059E'}, {1556 ,U'\U0001059F'}, {1558 ,U'\U000105A0'}, {1560 ,U'\U000105A1'}, {1562 ,U'\U000105A3'}, {1564 ,U'\U000105A4'}, {1566 ,U'\U000105A5'}, + {1568 ,U'\U000105A6'}, {1570 ,U'\U000105A7'}, {1572 ,U'\U000105A8'}, {1574 ,U'\U000105A9'}, {1576 ,U'\U000105AA'}, {1578 ,U'\U000105AB'}, {1580 ,U'\U000105AC'}, {1582 ,U'\U000105AD'}, {1584 ,U'\U000105AE'}, {1586 ,U'\U000105AF'}, {1588 ,U'\U000105B0'}, {1590 ,U'\U000105B1'}, {1592 ,U'\U000105B3'}, {1594 ,U'\U000105B4'}, {1596 ,U'\U000105B5'}, {1598 ,U'\U000105B6'}, + {1600 ,U'\U000105B7'}, {1602 ,U'\U000105B8'}, {1604 ,U'\U000105B9'}, {1606 ,U'\U000105BB'}, {1608 ,U'\U000105BC'}, {1610 ,U'\U00010CC0'}, {1612 ,U'\U00010CC1'}, {1614 ,U'\U00010CC2'}, {1616 ,U'\U00010CC3'}, {1618 ,U'\U00010CC4'}, {1620 ,U'\U00010CC5'}, {1622 ,U'\U00010CC6'}, {1624 ,U'\U00010CC7'}, {1626 ,U'\U00010CC8'}, {1628 ,U'\U00010CC9'}, {1630 ,U'\U00010CCA'}, + {1632 ,U'\U00010CCB'}, {1634 ,U'\U00010CCC'}, {1636 ,U'\U00010CCD'}, {1638 ,U'\U00010CCE'}, {1640 ,U'\U00010CCF'}, {1642 ,U'\U00010CD0'}, {1644 ,U'\U00010CD1'}, {1646 ,U'\U00010CD2'}, {1648 ,U'\U00010CD3'}, {1650 ,U'\U00010CD4'}, {1652 ,U'\U00010CD5'}, {1654 ,U'\U00010CD6'}, {1656 ,U'\U00010CD7'}, {1658 ,U'\U00010CD8'}, {1660 ,U'\U00010CD9'}, {1662 ,U'\U00010CDA'}, + {1664 ,U'\U00010CDB'}, {1666 ,U'\U00010CDC'}, {1668 ,U'\U00010CDD'}, {1670 ,U'\U00010CDE'}, {1672 ,U'\U00010CDF'}, {1674 ,U'\U00010CE0'}, {1676 ,U'\U00010CE1'}, {1678 ,U'\U00010CE2'}, {1680 ,U'\U00010CE3'}, {1682 ,U'\U00010CE4'}, {1684 ,U'\U00010CE5'}, {1686 ,U'\U00010CE6'}, {1688 ,U'\U00010CE7'}, {1690 ,U'\U00010CE8'}, {1692 ,U'\U00010CE9'}, {1694 ,U'\U00010CEA'}, + {1696 ,U'\U00010CEB'}, {1698 ,U'\U00010CEC'}, {1700 ,U'\U00010CED'}, {1702 ,U'\U00010CEE'}, {1704 ,U'\U00010CEF'}, {1706 ,U'\U00010CF0'}, {1708 ,U'\U00010CF1'}, {1710 ,U'\U00010CF2'}, {1712 ,U'\U00010D70'}, {1714 ,U'\U00010D71'}, {1716 ,U'\U00010D72'}, {1718 ,U'\U00010D73'}, {1720 ,U'\U00010D74'}, {1722 ,U'\U00010D75'}, {1724 ,U'\U00010D76'}, {1726 ,U'\U00010D77'}, + {1728 ,U'\U00010D78'}, {1730 ,U'\U00010D79'}, {1732 ,U'\U00010D7A'}, {1734 ,U'\U00010D7B'}, {1736 ,U'\U00010D7C'}, {1738 ,U'\U00010D7D'}, {1740 ,U'\U00010D7E'}, {1742 ,U'\U00010D7F'}, {1744 ,U'\U00010D80'}, {1746 ,U'\U00010D81'}, {1748 ,U'\U00010D82'}, {1750 ,U'\U00010D83'}, {1752 ,U'\U00010D84'}, {1754 ,U'\U00010D85'}, {1756 ,U'\U000118C0'}, {1758 ,U'\U000118C1'}, + {1760 ,U'\U000118C2'}, {1762 ,U'\U000118C3'}, {1764 ,U'\U000118C4'}, {1766 ,U'\U000118C5'}, {1768 ,U'\U000118C6'}, {1770 ,U'\U000118C7'}, {1772 ,U'\U000118C8'}, {1774 ,U'\U000118C9'}, {1776 ,U'\U000118CA'}, {1778 ,U'\U000118CB'}, {1780 ,U'\U000118CC'}, {1782 ,U'\U000118CD'}, {1784 ,U'\U000118CE'}, {1786 ,U'\U000118CF'}, {1788 ,U'\U000118D0'}, {1790 ,U'\U000118D1'}, + {1792 ,U'\U000118D2'}, {1794 ,U'\U000118D3'}, {1796 ,U'\U000118D4'}, {1798 ,U'\U000118D5'}, {1800 ,U'\U000118D6'}, {1802 ,U'\U000118D7'}, {1804 ,U'\U000118D8'}, {1806 ,U'\U000118D9'}, {1808 ,U'\U000118DA'}, {1810 ,U'\U000118DB'}, {1812 ,U'\U000118DC'}, {1814 ,U'\U000118DD'}, {1816 ,U'\U000118DE'}, {1818 ,U'\U000118DF'}, {1820 ,U'\U00016E60'}, {1822 ,U'\U00016E61'}, + {1824 ,U'\U00016E62'}, {1826 ,U'\U00016E63'}, {1828 ,U'\U00016E64'}, {1830 ,U'\U00016E65'}, {1832 ,U'\U00016E66'}, {1834 ,U'\U00016E67'}, {1836 ,U'\U00016E68'}, {1838 ,U'\U00016E69'}, {1840 ,U'\U00016E6A'}, {1842 ,U'\U00016E6B'}, {1844 ,U'\U00016E6C'}, {1846 ,U'\U00016E6D'}, {1848 ,U'\U00016E6E'}, {1850 ,U'\U00016E6F'}, {1852 ,U'\U00016E70'}, {1854 ,U'\U00016E71'}, + {1856 ,U'\U00016E72'}, {1858 ,U'\U00016E73'}, {1860 ,U'\U00016E74'}, {1862 ,U'\U00016E75'}, {1864 ,U'\U00016E76'}, {1866 ,U'\U00016E77'}, {1868 ,U'\U00016E78'}, {1870 ,U'\U00016E79'}, {1872 ,U'\U00016E7A'}, {1874 ,U'\U00016E7B'}, {1876 ,U'\U00016E7C'}, {1878 ,U'\U00016E7D'}, {1880 ,U'\U00016E7E'}, {1882 ,U'\U00016E7F'}, {1884 ,U'\U0001E922'}, {1886 ,U'\U0001E923'}, + {1888 ,U'\U0001E924'}, {1890 ,U'\U0001E925'}, {1892 ,U'\U0001E926'}, {1894 ,U'\U0001E927'}, {1896 ,U'\U0001E928'}, {1898 ,U'\U0001E929'}, {1900 ,U'\U0001E92A'}, {1902 ,U'\U0001E92B'}, {1904 ,U'\U0001E92C'}, {1906 ,U'\U0001E92D'}, {1908 ,U'\U0001E92E'}, {1910 ,U'\U0001E92F'}, {1912 ,U'\U0001E930'}, {1914 ,U'\U0001E931'}, {1916 ,U'\U0001E932'}, {1918 ,U'\U0001E933'}, + {1920 ,U'\U0001E934'}, {1922 ,U'\U0001E935'}, {1924 ,U'\U0001E936'}, {1926 ,U'\U0001E937'}, {1928 ,U'\U0001E938'}, {1930 ,U'\U0001E939'}, {1932 ,U'\U0001E93A'}, {1934 ,U'\U0001E93B'}, {1936 ,U'\U0001E93C'}, {1938 ,U'\U0001E93D'}, {1940 ,U'\U0001E93E'}, {1942 ,U'\U0001E93F'}, {1944 ,U'\U0001E940'}, {1946 ,U'\U0001E941'}, {1948 ,U'\U0001E942'}, {1950 ,U'\U0001E943'}, {1952 , 0} }; - constexpr size_t lowercase_source_chars_length = 1485; + constexpr size_t lowercase_source_chars_length = 1552; const char16_t uppercase_chars[] = u"\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050" @@ -509,99 +529,103 @@ namespace sysstr::util::unicode u"\u0128\u012A\u012C\u012E\u0049\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147" u"\u02BC\u004E\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164" u"\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0179\u017B\u017D\u0053\u0243\u0182\u0184" - u"\u0187\u018B\u0191\u01F6\u0198\u023D\u0220\u01A0\u01A2\u01A4\u01A7\u01AC\u01AF\u01B3\u01B5\u01B8" - u"\u01BC\u01F7\u01C4\u01C4\u01C7\u01C7\u01CA\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB" - u"\u018E\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u004A\u030C\u01F1\u01F1\u01F4\u01F8" - u"\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218" - u"\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023B\u2C7E\u2C7F\u0241" - u"\u0246\u0248\u024A\u024C\u024E\u2C6F\u2C6D\u2C70\u0181\u0186\u0189\u018A\u018F\u0190\uA7AB\u0193" - u"\uA7AC\u0194\uA78D\uA7AA\u0197\u0196\uA7AE\u2C62\uA7AD\u019C\u2C6E\u019D\u019F\u2C64\u01A6\uA7C5" - u"\u01A9\uA7B1\u01AE\u0244\u01B1\u01B2\u0245\u01B7\uA7B2\uA7B0\u0399\u0370\u0372\u0376\u03FD\u03FE" - u"\u03FF\u0399\u0308\u0301\u0386\u0388\u0389\u038A\u03A5\u0308\u0301\u0391\u0392\u0393\u0394\u0395" - u"\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A3\u03A4\u03A5" - u"\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u038C\u038E\u038F\u0392\u0398\u03A6\u03A0\u03CF\u03D8\u03DA" - u"\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u039A\u03A1\u03F9\u037F\u0395\u03F7" - u"\u03FA\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E" - u"\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E" - u"\u042F\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u040D\u040E" - u"\u040F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C" - u"\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4" - u"\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C5" - u"\u04C7\u04C9\u04CB\u04CD\u04C0\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4" - u"\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504" - u"\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524" - u"\u0526\u0528\u052A\u052C\u052E\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053A\u053B" - u"\u053C\u053D\u053E\u053F\u0540\u0541\u0542\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054A\u054B" - u"\u054C\u054D\u054E\u054F\u0550\u0551\u0552\u0553\u0554\u0555\u0556\u0535\u0552\u1C90\u1C91\u1C92" - u"\u1C93\u1C94\u1C95\u1C96\u1C97\u1C98\u1C99\u1C9A\u1C9B\u1C9C\u1C9D\u1C9E\u1C9F\u1CA0\u1CA1\u1CA2" - u"\u1CA3\u1CA4\u1CA5\u1CA6\u1CA7\u1CA8\u1CA9\u1CAA\u1CAB\u1CAC\u1CAD\u1CAE\u1CAF\u1CB0\u1CB1\u1CB2" - u"\u1CB3\u1CB4\u1CB5\u1CB6\u1CB7\u1CB8\u1CB9\u1CBA\u1CBD\u1CBE\u1CBF\u13F0\u13F1\u13F2\u13F3\u13F4" - u"\u13F5\u0412\u0414\u041E\u0421\u0422\u0422\u042A\u0462\uA64A\uA77D\u2C63\uA7C6\u1E00\u1E02\u1E04" - u"\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24" - u"\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44" - u"\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64" - u"\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84" - u"\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u0048\u0331\u0054\u0308\u0057\u030A\u0059\u030A" - u"\u0041\u02BE\u1E60\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8" - u"\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8" - u"\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8" - u"\u1EFA\u1EFC\u1EFE\u1F08\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19\u1F1A\u1F1B\u1F1C" - u"\u1F1D\u1F28\u1F29\u1F2A\u1F2B\u1F2C\u1F2D\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D\u1F3E" - u"\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C\u1F4D\u03A5\u0313\u1F59\u03A5\u0313\u0300\u1F5B\u03A5\u0313" - u"\u0301\u1F5D\u03A5\u0313\u0342\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E\u1F6F\u1FBA\u1FBB" - u"\u1FC8\u1FC9\u1FCA\u1FCB\u1FDA\u1FDB\u1FF8\u1FF9\u1FEA\u1FEB\u1FFA\u1FFB\u1F08\u0399\u1F09\u0399" - u"\u1F0A\u0399\u1F0B\u0399\u1F0C\u0399\u1F0D\u0399\u1F0E\u0399\u1F0F\u0399\u1F08\u0399\u1F09\u0399" - u"\u1F0A\u0399\u1F0B\u0399\u1F0C\u0399\u1F0D\u0399\u1F0E\u0399\u1F0F\u0399\u1F28\u0399\u1F29\u0399" - u"\u1F2A\u0399\u1F2B\u0399\u1F2C\u0399\u1F2D\u0399\u1F2E\u0399\u1F2F\u0399\u1F28\u0399\u1F29\u0399" - u"\u1F2A\u0399\u1F2B\u0399\u1F2C\u0399\u1F2D\u0399\u1F2E\u0399\u1F2F\u0399\u1F68\u0399\u1F69\u0399" - u"\u1F6A\u0399\u1F6B\u0399\u1F6C\u0399\u1F6D\u0399\u1F6E\u0399\u1F6F\u0399\u1F68\u0399\u1F69\u0399" - u"\u1F6A\u0399\u1F6B\u0399\u1F6C\u0399\u1F6D\u0399\u1F6E\u0399\u1F6F\u0399\u1FB8\u1FB9\u1FBA\u0399" - u"\u0391\u0399\u0386\u0399\u0391\u0342\u0391\u0342\u0399\u0391\u0399\u0399\u1FCA\u0399\u0397\u0399" - u"\u0389\u0399\u0397\u0342\u0397\u0342\u0399\u0397\u0399\u1FD8\u1FD9\u0399\u0308\u0300\u0399\u0308" - u"\u0301\u0399\u0342\u0399\u0308\u0342\u1FE8\u1FE9\u03A5\u0308\u0300\u03A5\u0308\u0301\u03A1\u0313" - u"\u1FEC\u03A5\u0342\u03A5\u0308\u0342\u1FFA\u0399\u03A9\u0399\u038F\u0399\u03A9\u0342\u03A9\u0342" - u"\u0399\u03A9\u0399\u2132\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B" - u"\u216C\u216D\u216E\u216F\u2183\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0" - u"\u24C1\u24C2\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8\u24C9\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u2C00" - u"\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09\u2C0A\u2C0B\u2C0C\u2C0D\u2C0E\u2C0F\u2C10" - u"\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A\u2C1B\u2C1C\u2C1D\u2C1E\u2C1F\u2C20" - u"\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D\u2C2E\u2C60\u023A" - u"\u023E\u2C67\u2C69\u2C6B\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92" - u"\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2" - u"\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2" - u"\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\u10A0\u10A1\u10A2\u10A3\u10A4" - u"\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC\u10AD\u10AE\u10AF\u10B0\u10B1\u10B2\u10B3\u10B4" - u"\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF\u10C0\u10C1\u10C2\u10C3\u10C4" - u"\u10C5\u10C7\u10CD\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658" - u"\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A" - u"\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732" - u"\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752" - u"\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B" - u"\uA77E\uA780\uA782\uA784\uA786\uA78B\uA790\uA792\uA7C4\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2" - u"\uA7A4\uA7A6\uA7A8\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C2\uA7C7\uA7C9\uA7F5\uA7B3\u13A0\u13A1" - u"\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD\u13AE\u13AF\u13B0\u13B1" - u"\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0\u13C1" - u"\u13C2\u13C3\u13C4\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1" - u"\u13D2\u13D3\u13D4\u13D5\u13D6\u13D7\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1" - u"\u13E2\u13E3\u13E4\u13E5\u13E6\u13E7\u13E8\u13E9\u13EA\u13EB\u13EC\u13ED\u13EE\u13EF\u0046\u0046" - u"\u0046\u0049\u0046\u004C\u0046\u0046\u0049\u0046\u0046\u004C\u0053\u0054\u0053\u0054\u0544\u0546" - u"\u0544\u0535\u0544\u053B\u054E\u0546\u0544\u053D\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28" - u"\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38" - u"\uFF39\uFF3A\U00010400\U00010401\U00010402\U00010403\U00010404\U00010405\U00010406\U00010407\U00010408\U00010409\U0001040A\U0001040B\U0001040C\U0001040D" - u"\U0001040E\U0001040F\U00010410\U00010411\U00010412\U00010413\U00010414\U00010415\U00010416\U00010417\U00010418\U00010419\U0001041A\U0001041B\U0001041C\U0001041D" - u"\U0001041E\U0001041F\U00010420\U00010421\U00010422\U00010423\U00010424\U00010425\U00010426\U00010427\U000104B0\U000104B1\U000104B2\U000104B3\U000104B4\U000104B5" - u"\U000104B6\U000104B7\U000104B8\U000104B9\U000104BA\U000104BB\U000104BC\U000104BD\U000104BE\U000104BF\U000104C0\U000104C1\U000104C2\U000104C3\U000104C4\U000104C5" - u"\U000104C6\U000104C7\U000104C8\U000104C9\U000104CA\U000104CB\U000104CC\U000104CD\U000104CE\U000104CF\U000104D0\U000104D1\U000104D2\U000104D3\U00010C80\U00010C81" - u"\U00010C82\U00010C83\U00010C84\U00010C85\U00010C86\U00010C87\U00010C88\U00010C89\U00010C8A\U00010C8B\U00010C8C\U00010C8D\U00010C8E\U00010C8F\U00010C90\U00010C91" - u"\U00010C92\U00010C93\U00010C94\U00010C95\U00010C96\U00010C97\U00010C98\U00010C99\U00010C9A\U00010C9B\U00010C9C\U00010C9D\U00010C9E\U00010C9F\U00010CA0\U00010CA1" - u"\U00010CA2\U00010CA3\U00010CA4\U00010CA5\U00010CA6\U00010CA7\U00010CA8\U00010CA9\U00010CAA\U00010CAB\U00010CAC\U00010CAD\U00010CAE\U00010CAF\U00010CB0\U00010CB1" - u"\U00010CB2\U000118A0\U000118A1\U000118A2\U000118A3\U000118A4\U000118A5\U000118A6\U000118A7\U000118A8\U000118A9\U000118AA\U000118AB\U000118AC\U000118AD\U000118AE" - u"\U000118AF\U000118B0\U000118B1\U000118B2\U000118B3\U000118B4\U000118B5\U000118B6\U000118B7\U000118B8\U000118B9\U000118BA\U000118BB\U000118BC\U000118BD\U000118BE" - u"\U000118BF\U00016E40\U00016E41\U00016E42\U00016E43\U00016E44\U00016E45\U00016E46\U00016E47\U00016E48\U00016E49\U00016E4A\U00016E4B\U00016E4C\U00016E4D\U00016E4E" - u"\U00016E4F\U00016E50\U00016E51\U00016E52\U00016E53\U00016E54\U00016E55\U00016E56\U00016E57\U00016E58\U00016E59\U00016E5A\U00016E5B\U00016E5C\U00016E5D\U00016E5E" - u"\U00016E5F\U0001E900\U0001E901\U0001E902\U0001E903\U0001E904\U0001E905\U0001E906\U0001E907\U0001E908\U0001E909\U0001E90A\U0001E90B\U0001E90C\U0001E90D\U0001E90E" - u"\U0001E90F\U0001E910\U0001E911\U0001E912\U0001E913\U0001E914\U0001E915\U0001E916\U0001E917\U0001E918\U0001E919\U0001E91A\U0001E91B\U0001E91C\U0001E91D\U0001E91E" - u"\U0001E91F\U0001E920\U0001E921"; + u"\u0187\u018B\u0191\u01F6\u0198\u023D\uA7DC\u0220\u01A0\u01A2\u01A4\u01A7\u01AC\u01AF\u01B3\u01B5" + u"\u01B8\u01BC\u01F7\u01C4\u01C4\u01C7\u01C7\u01CA\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9" + u"\u01DB\u018E\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u004A\u030C\u01F1\u01F1\u01F4" + u"\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216" + u"\u0218\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023B\u2C7E\u2C7F" + u"\u0241\u0246\u0248\u024A\u024C\u024E\u2C6F\u2C6D\u2C70\u0181\u0186\u0189\u018A\u018F\u0190\uA7AB" + u"\u0193\uA7AC\u0194\uA7CB\uA78D\uA7AA\u0197\u0196\uA7AE\u2C62\uA7AD\u019C\u2C6E\u019D\u019F\u2C64" + u"\u01A6\uA7C5\u01A9\uA7B1\u01AE\u0244\u01B1\u01B2\u0245\u01B7\uA7B2\uA7B0\u0399\u0370\u0372\u0376" + u"\u03FD\u03FE\u03FF\u0399\u0308\u0301\u0386\u0388\u0389\u038A\u03A5\u0308\u0301\u0391\u0392\u0393" + u"\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A3" + u"\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u038C\u038E\u038F\u0392\u0398\u03A6\u03A0\u03CF" + u"\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u039A\u03A1\u03F9\u037F" + u"\u0395\u03F7\u03FA\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C" + u"\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C" + u"\u042D\u042E\u042F\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C" + u"\u040D\u040E\u040F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478" + u"\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0" + u"\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1" + u"\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04C0\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0" + u"\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500" + u"\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520" + u"\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539" + u"\u053A\u053B\u053C\u053D\u053E\u053F\u0540\u0541\u0542\u0543\u0544\u0545\u0546\u0547\u0548\u0549" + u"\u054A\u054B\u054C\u054D\u054E\u054F\u0550\u0551\u0552\u0553\u0554\u0555\u0556\u0535\u0552\u1C90" + u"\u1C91\u1C92\u1C93\u1C94\u1C95\u1C96\u1C97\u1C98\u1C99\u1C9A\u1C9B\u1C9C\u1C9D\u1C9E\u1C9F\u1CA0" + u"\u1CA1\u1CA2\u1CA3\u1CA4\u1CA5\u1CA6\u1CA7\u1CA8\u1CA9\u1CAA\u1CAB\u1CAC\u1CAD\u1CAE\u1CAF\u1CB0" + u"\u1CB1\u1CB2\u1CB3\u1CB4\u1CB5\u1CB6\u1CB7\u1CB8\u1CB9\u1CBA\u1CBD\u1CBE\u1CBF\u13F0\u13F1\u13F2" + u"\u13F3\u13F4\u13F5\u0412\u0414\u041E\u0421\u0422\u0422\u042A\u0462\uA64A\u1C89\uA77D\u2C63\uA7C6" + u"\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E" + u"\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E" + u"\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E" + u"\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E" + u"\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u0048\u0331\u0054\u0308\u0057" + u"\u030A\u0059\u030A\u0041\u02BE\u1E60\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2" + u"\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2" + u"\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2" + u"\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19" + u"\u1F1A\u1F1B\u1F1C\u1F1D\u1F28\u1F29\u1F2A\u1F2B\u1F2C\u1F2D\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B" + u"\u1F3C\u1F3D\u1F3E\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C\u1F4D\u03A5\u0313\u1F59\u03A5\u0313\u0300" + u"\u1F5B\u03A5\u0313\u0301\u1F5D\u03A5\u0313\u0342\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E" + u"\u1F6F\u1FBA\u1FBB\u1FC8\u1FC9\u1FCA\u1FCB\u1FDA\u1FDB\u1FF8\u1FF9\u1FEA\u1FEB\u1FFA\u1FFB\u1F08" + u"\u0399\u1F09\u0399\u1F0A\u0399\u1F0B\u0399\u1F0C\u0399\u1F0D\u0399\u1F0E\u0399\u1F0F\u0399\u1F08" + u"\u0399\u1F09\u0399\u1F0A\u0399\u1F0B\u0399\u1F0C\u0399\u1F0D\u0399\u1F0E\u0399\u1F0F\u0399\u1F28" + u"\u0399\u1F29\u0399\u1F2A\u0399\u1F2B\u0399\u1F2C\u0399\u1F2D\u0399\u1F2E\u0399\u1F2F\u0399\u1F28" + u"\u0399\u1F29\u0399\u1F2A\u0399\u1F2B\u0399\u1F2C\u0399\u1F2D\u0399\u1F2E\u0399\u1F2F\u0399\u1F68" + u"\u0399\u1F69\u0399\u1F6A\u0399\u1F6B\u0399\u1F6C\u0399\u1F6D\u0399\u1F6E\u0399\u1F6F\u0399\u1F68" + u"\u0399\u1F69\u0399\u1F6A\u0399\u1F6B\u0399\u1F6C\u0399\u1F6D\u0399\u1F6E\u0399\u1F6F\u0399\u1FB8" + u"\u1FB9\u1FBA\u0399\u0391\u0399\u0386\u0399\u0391\u0342\u0391\u0342\u0399\u0391\u0399\u0399\u1FCA" + u"\u0399\u0397\u0399\u0389\u0399\u0397\u0342\u0397\u0342\u0399\u0397\u0399\u1FD8\u1FD9\u0399\u0308" + u"\u0300\u0399\u0308\u0301\u0399\u0342\u0399\u0308\u0342\u1FE8\u1FE9\u03A5\u0308\u0300\u03A5\u0308" + u"\u0301\u03A1\u0313\u1FEC\u03A5\u0342\u03A5\u0308\u0342\u1FFA\u0399\u03A9\u0399\u038F\u0399\u03A9" + u"\u0342\u03A9\u0342\u0399\u03A9\u0399\u2132\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168" + u"\u2169\u216A\u216B\u216C\u216D\u216E\u216F\u2183\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB\u24BC\u24BD" + u"\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8\u24C9\u24CA\u24CB\u24CC\u24CD" + u"\u24CE\u24CF\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09\u2C0A\u2C0B\u2C0C\u2C0D" + u"\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A\u2C1B\u2C1C\u2C1D" + u"\u2C1E\u2C1F\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D" + u"\u2C2E\u2C2F\u2C60\u023A\u023E\u2C67\u2C69\u2C6B\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A" + u"\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA" + u"\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA" + u"\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\u10A0" + u"\u10A1\u10A2\u10A3\u10A4\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC\u10AD\u10AE\u10AF\u10B0" + u"\u10B1\u10B2\u10B3\u10B4\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF\u10C0" + u"\u10C1\u10C2\u10C3\u10C4\u10C5\u10C7\u10CD\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650" + u"\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682" + u"\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728" + u"\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A" + u"\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A" + u"\uA76C\uA76E\uA779\uA77B\uA77E\uA780\uA782\uA784\uA786\uA78B\uA790\uA792\uA7C4\uA796\uA798\uA79A" + u"\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C7" + u"\uA7C9\uA7CC\uA7D0\uA7D6\uA7D8\uA7DA\uA7F5\uA7B3\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7" + u"\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD\u13AE\u13AF\u13B0\u13B1\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7" + u"\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0\u13C1\u13C2\u13C3\u13C4\u13C5\u13C6\u13C7" + u"\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3\u13D4\u13D5\u13D6\u13D7" + u"\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6\u13E7" + u"\u13E8\u13E9\u13EA\u13EB\u13EC\u13ED\u13EE\u13EF\u0046\u0046\u0046\u0049\u0046\u004C\u0046\u0046" + u"\u0049\u0046\u0046\u004C\u0053\u0054\u0053\u0054\u0544\u0546\u0544\u0535\u0544\u053B\u054E\u0546" + u"\u0544\u053D\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E" + u"\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\U00010400\U00010401\U00010402\U00010403" + u"\U00010404\U00010405\U00010406\U00010407\U00010408\U00010409\U0001040A\U0001040B\U0001040C\U0001040D\U0001040E\U0001040F\U00010410\U00010411\U00010412\U00010413" + u"\U00010414\U00010415\U00010416\U00010417\U00010418\U00010419\U0001041A\U0001041B\U0001041C\U0001041D\U0001041E\U0001041F\U00010420\U00010421\U00010422\U00010423" + u"\U00010424\U00010425\U00010426\U00010427\U000104B0\U000104B1\U000104B2\U000104B3\U000104B4\U000104B5\U000104B6\U000104B7\U000104B8\U000104B9\U000104BA\U000104BB" + u"\U000104BC\U000104BD\U000104BE\U000104BF\U000104C0\U000104C1\U000104C2\U000104C3\U000104C4\U000104C5\U000104C6\U000104C7\U000104C8\U000104C9\U000104CA\U000104CB" + u"\U000104CC\U000104CD\U000104CE\U000104CF\U000104D0\U000104D1\U000104D2\U000104D3\U00010570\U00010571\U00010572\U00010573\U00010574\U00010575\U00010576\U00010577" + u"\U00010578\U00010579\U0001057A\U0001057C\U0001057D\U0001057E\U0001057F\U00010580\U00010581\U00010582\U00010583\U00010584\U00010585\U00010586\U00010587\U00010588" + u"\U00010589\U0001058A\U0001058C\U0001058D\U0001058E\U0001058F\U00010590\U00010591\U00010592\U00010594\U00010595\U00010C80\U00010C81\U00010C82\U00010C83\U00010C84" + u"\U00010C85\U00010C86\U00010C87\U00010C88\U00010C89\U00010C8A\U00010C8B\U00010C8C\U00010C8D\U00010C8E\U00010C8F\U00010C90\U00010C91\U00010C92\U00010C93\U00010C94" + u"\U00010C95\U00010C96\U00010C97\U00010C98\U00010C99\U00010C9A\U00010C9B\U00010C9C\U00010C9D\U00010C9E\U00010C9F\U00010CA0\U00010CA1\U00010CA2\U00010CA3\U00010CA4" + u"\U00010CA5\U00010CA6\U00010CA7\U00010CA8\U00010CA9\U00010CAA\U00010CAB\U00010CAC\U00010CAD\U00010CAE\U00010CAF\U00010CB0\U00010CB1\U00010CB2\U00010D50\U00010D51" + u"\U00010D52\U00010D53\U00010D54\U00010D55\U00010D56\U00010D57\U00010D58\U00010D59\U00010D5A\U00010D5B\U00010D5C\U00010D5D\U00010D5E\U00010D5F\U00010D60\U00010D61" + u"\U00010D62\U00010D63\U00010D64\U00010D65\U000118A0\U000118A1\U000118A2\U000118A3\U000118A4\U000118A5\U000118A6\U000118A7\U000118A8\U000118A9\U000118AA\U000118AB" + u"\U000118AC\U000118AD\U000118AE\U000118AF\U000118B0\U000118B1\U000118B2\U000118B3\U000118B4\U000118B5\U000118B6\U000118B7\U000118B8\U000118B9\U000118BA\U000118BB" + u"\U000118BC\U000118BD\U000118BE\U000118BF\U00016E40\U00016E41\U00016E42\U00016E43\U00016E44\U00016E45\U00016E46\U00016E47\U00016E48\U00016E49\U00016E4A\U00016E4B" + u"\U00016E4C\U00016E4D\U00016E4E\U00016E4F\U00016E50\U00016E51\U00016E52\U00016E53\U00016E54\U00016E55\U00016E56\U00016E57\U00016E58\U00016E59\U00016E5A\U00016E5B" + u"\U00016E5C\U00016E5D\U00016E5E\U00016E5F\U0001E900\U0001E901\U0001E902\U0001E903\U0001E904\U0001E905\U0001E906\U0001E907\U0001E908\U0001E909\U0001E90A\U0001E90B" + u"\U0001E90C\U0001E90D\U0001E90E\U0001E90F\U0001E910\U0001E911\U0001E912\U0001E913\U0001E914\U0001E915\U0001E916\U0001E917\U0001E918\U0001E919\U0001E91A\U0001E91B" + u"\U0001E91C\U0001E91D\U0001E91E\U0001E91F\U0001E920\U0001E921"; const mapper mapper::case_fold(folding_source_chars, folding_source_chars_length, case_folded_chars); @@ -622,14 +646,14 @@ namespace sysstr::util::unicode 35, 17, 17, 17, 36, 17, 37, 38, 39, 40, 41, 42, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 43, 17, 17, 44, 45, - 17, 46, 47, 48, 49, 17, 17, 17, 17, 17, 50, 17, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 17, 66, 67, 68, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 69, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 46, 47, 48, 49, 50, 17, 51, 17, 17, 52, 17, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 17, 68, 69, 70, 71, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 72, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 70, 71, 17, 17, 72, 73, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 73, 17, 17, 17, 17, 17, 17, 17, 17, 74, 75, 17, 76, 77, 78, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 74, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 75, 76, 17, 77, 78, 79, 80, 17, 17, 81, 17, 17, 17, 17, 17, - 82, 83, 84, 17, 17, 17, 17, 17, 85, 86, 17, 17, 17, 17, 17, 17, 17, 87, 17, 88, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 79, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 80, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 81, 17, 82, 83, 17, 84, 85, 86, 87, 17, 17, 88, 17, 17, 17, 17, 89, + 90, 91, 92, 17, 93, 94, 17, 17, 95, 96, 17, 17, 17, 17, 17, 17, 17, 97, 17, 98, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, @@ -726,7 +750,7 @@ namespace sysstr::util::unicode 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 89, 90}; + 99, 100}; extern const uint8_t props_stage2[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x08, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x22, 0x00, 0x92, 0x84, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, @@ -737,73 +761,80 @@ namespace sysstr::util::unicode 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x20, 0x02, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x2A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA2, 0x28, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xAA, 0xA0, 0x00, 0x00, 0xAA, 0xAA, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xA2, 0xAA, 0xAA, 0x8A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xA0, 0x08, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xA0, 0x02, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x2A, 0xAA, 0x80, 0x20, 0x2A, 0xAA, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2A, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x28, 0x02, 0x82, 0xA0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x20, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2A, 0xA2, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x2A, 0x80, 0x00, 0x20, 0x00, 0x28, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x0A, 0x8A, 0xA0, 0x00, 0x28, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x08, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x80, 0x0A, 0x8A, 0xA0, 0x00, 0x28, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x08, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x2A, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0A, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xAA, 0xA8, 0x00, 0x00, 0x0A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xAA, 0xAA, 0x80, 0x00, 0x08, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xAA, 0xA8, 0x00, 0x00, 0x0A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xAA, 0xAA, 0x80, 0x00, 0x08, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xAA, 0xA8, 0xAA, 0x8A, 0x00, 0x2A, 0xAA, 0xAA, 0x2A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x8A, 0xAA, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x0A, 0x80, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x00, 0x00, 0x08, 0x28, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x51, 0x00, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x95, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x8A, 0xAA, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x0A, 0x80, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x00, 0x00, 0x08, 0x28, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x51, 0x00, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x50, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xAA, 0xA0, 0x00, 0x08, 0x2A, 0xAA, 0xAA, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xAA, 0xA0, 0x00, 0x08, 0x2A, 0xAA, 0xAA, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x02, 0x80, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xAA, 0xA8, 0x88, 0x2A, 0xAA, 0x80, 0x02, 0xAA, 0xAA, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xAA, 0xA8, 0x88, 0x2A, 0xAA, 0x80, 0x02, 0xAA, 0xAA, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xA8, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA0, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xA0, 0x22, 0xA0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xA0, 0x55, 0x55, 0x40, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x15, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xAA, 0xAA, 0xAA, 0x8A, 0xAA, 0x80, 0x20, 0x00, 0x80, 0xA0, 0x00, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x55, 0x55, 0x55, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA2, 0xAA, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xA0, 0x55, 0x55, 0x54, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x15, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xAA, 0xAA, 0xAA, 0x8A, 0xAA, 0x80, 0x20, 0x00, 0x80, 0xA0, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x55, 0x55, 0x55, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x50, 0x55, 0x55, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x66, 0xA5, 0x45, 0x55, 0x6A, 0x55, 0x05, 0x55, 0x2A, 0x55, 0x55, 0x55, 0x6A, 0x05, 0x45, 0x55, 0x68, 0x00, 0x00, 0x02, 0xAA, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x82, 0x0A, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x8A, 0xAA, 0xAA, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x04, 0x01, 0x05, 0x55, 0x55, 0x10, 0x15, 0x50, 0x00, 0x44, 0x45, 0x51, 0x55, 0x40, 0x10, 0x55, 0x00, 0x15, 0x50, 0x04, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xF5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x01, 0x56, 0xA5, 0x00, 0x00, 0x00, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xF5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x01, 0x56, 0xA5, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x51, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA0, 0x2A, 0xA0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x52, 0xA8, 0xAA, 0xAA, 0xA2, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, - 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0xA9, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xF4, 0x00, + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0xA9, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x51, 0x15, 0x55, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD4, 0xF4, 0x00, 0x08, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0A, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xA8, 0x28, 0x28, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x82, 0x80, 0x0A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xA0, 0x02, 0x88, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0xFF, 0x55, 0x55, 0x6A, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x55, 0x54, 0x00, 0x00, 0x01, 0x55, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0xFF, 0x55, 0x55, 0x7A, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x54, 0x00, 0x00, 0x01, 0x55, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0x02, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x08, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x54, 0x55, 0x54, 0x51, 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x51, 0x55, 0x51, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x28, 0x00, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x28, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x2A, 0xA2, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x80, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x28, 0x20, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0x2A, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xA8, 0x00, 0x00, 0x2A, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x8A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0x80, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x8A, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0x80, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0x80, 0x00, 0x00, 0x08, 0x88, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x0A, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0x88, 0x02, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA0, 0x00, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xA8, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0xAA, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x0A, 0xA2, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x0A, 0xA2, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x88, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x0A, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0x82, 0xA8, 0x00, 0x02, 0x00, 0x00, 0x2A, 0xA8, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xA8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xA8, 0xAA, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x0A, 0xAA, 0x8A, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xA8, 0x08, 0xA2, 0xAA, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA8, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x02, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0xAA, 0xA0, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xA8, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x2A, 0xAA, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA0, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x00, 0x02, 0xAA, 0xAA, 0xAA, 0xA8, 0x2A, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x04, 0x14, 0x15, 0x45, 0x55, 0x55, 0x51, 0x15, 0x55, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, @@ -811,9 +842,12 @@ namespace sysstr::util::unicode 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA8, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0x2A, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xAA, 0xA8, 0xAA, 0xAA, 0xAA, 0xAA, 0x82, 0xAA, 0xA2, 0x8A, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x54, 0x00, 0x15, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xAA, 0xA8, 0xAA, 0xAA, 0xAA, 0xAA, 0x82, 0xAA, 0xA2, 0x8A, 0xA8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -832,6 +866,6 @@ namespace sysstr::util::unicode sizeof(whitespaces) + sizeof(props_stage1) + sizeof(props_stage2); - static_assert(total_data_size == 37516); + static_assert(total_data_size == 39704); } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 86c03cf..7e2d959 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -6,8 +6,18 @@ # https://github.com/gershnik/sys_string/blob/master/LICENSE.txt # +include(FetchContent) + find_package (Python3 COMPONENTS Development) +FetchContent_Declare(doctest + URL https://raw.githubusercontent.com/doctest/doctest/v2.4.11/doctest/doctest.h + DOWNLOAD_NO_EXTRACT TRUE + SOURCE_DIR downloaded/doctest +) + +FetchContent_MakeAvailable(doctest) + if(${Python3_Development_FOUND}) include_directories( SYSTEM @@ -22,12 +32,12 @@ if(${Python3_Development_FOUND}) endif() set (CXX_STANDARDS - 17 20 + 23 ) -set(CXX_STANDARD_17 17) set(CXX_STANDARD_20 20) +set(CXX_STANDARD_23 23) if (WIN32) @@ -130,6 +140,11 @@ foreach(STORAGE_SUFFIX ${STORAGE_TYPES}) VISIBILITY_INLINES_HIDDEN ON ) + target_include_directories(test-${TEST_SUFFIX} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/downloaded + ) + target_compile_options(test-${TEST_SUFFIX} PRIVATE $<$:/utf-8;/W4;/WX> $<$:-Wall;-Wextra;-pedantic;-Wno-self-assign-overloaded;-Wno-self-move> @@ -176,17 +191,16 @@ foreach(STORAGE_SUFFIX ${STORAGE_TYPES}) "$<$:test_windows.cpp>" "$<$:test_linux.cpp>" "$<$:test_javascript.cpp>" - - catch.hpp ) + list(APPEND TEST_COMMAND COMMAND echo "Running test-${TEST_SUFFIX}") if (${CMAKE_SYSTEM_NAME} STREQUAL Android) list(APPEND TEST_COMMAND COMMAND ${ADB} push test-${TEST_SUFFIX} ${ANDROID_TEST_DIR}) - list(APPEND TEST_COMMAND COMMAND ${ADB} shell LD_LIBRARY_PATH=${ANDROID_LD_LIBRARY_PATH} ${ANDROID_TEST_DIR}/test-${TEST_SUFFIX}) + list(APPEND TEST_COMMAND COMMAND ${ADB} shell LD_LIBRARY_PATH=${ANDROID_LD_LIBRARY_PATH} ${ANDROID_TEST_DIR}/test-${TEST_SUFFIX} -ni) elseif (DEFINED EMSCRIPTEN) - list(APPEND TEST_COMMAND COMMAND node test-${TEST_SUFFIX}) + list(APPEND TEST_COMMAND COMMAND node test-${TEST_SUFFIX} -ni) else() - list(APPEND TEST_COMMAND COMMAND test-${TEST_SUFFIX}) + list(APPEND TEST_COMMAND COMMAND test-${TEST_SUFFIX} -ni) endif() list(APPEND TEST_DEPS test-${TEST_SUFFIX}) diff --git a/test/CMakeSettings.json b/test/CMakeSettings.json deleted file mode 100644 index aadfcc1..0000000 --- a/test/CMakeSettings.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "configurations": [ - { - "name": "x64-Debug (default)", - "generator": "Ninja", - "configurationType": "Debug", - "inheritEnvironments": [ "msvc_x64_x64" ], - "buildRoot": "${projectDir}\\..\\out\\win\\build\\${name}", - "installRoot": "${projectDir}\\..\\out\\win\\install\\${name}", - "cmakeCommandArgs": "", - "buildCommandArgs": "", - "ctestCommandArgs": "" - }, - { - "name": "x64-Release", - "generator": "Ninja", - "configurationType": "RelWithDebInfo", - "inheritEnvironments": [ "msvc_x64_x64" ], - "buildRoot": "${projectDir}\\..\\out\\win\\build\\${name}", - "installRoot": "${projectDir}\\..\\out\\win\\install\\${name}", - "cmakeCommandArgs": "", - "buildCommandArgs": "", - "ctestCommandArgs": "" - } - ] -} \ No newline at end of file diff --git a/test/catch.hpp b/test/catch.hpp deleted file mode 100644 index d2a1242..0000000 --- a/test/catch.hpp +++ /dev/null @@ -1,17970 +0,0 @@ -/* - * Catch v2.13.9 - * Generated: 2022-04-12 22:37:23.260201 - * ---------------------------------------------------------- - * This file has been merged from multiple headers. Please don't edit it directly - * Copyright (c) 2022 Two Blue Cubes Ltd. All rights reserved. - * - * Distributed under the Boost Software License, Version 1.0. (See accompanying - * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - */ -#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED -#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED -// start catch.hpp - - -#define CATCH_VERSION_MAJOR 2 -#define CATCH_VERSION_MINOR 13 -#define CATCH_VERSION_PATCH 9 - -#ifdef __clang__ -# pragma clang system_header -#elif defined __GNUC__ -# pragma GCC system_header -#endif - -// start catch_suppress_warnings.h - -#ifdef __clang__ -# ifdef __ICC // icpc defines the __clang__ macro -# pragma warning(push) -# pragma warning(disable: 161 1682) -# else // __ICC -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wpadded" -# pragma clang diagnostic ignored "-Wswitch-enum" -# pragma clang diagnostic ignored "-Wcovered-switch-default" -# endif -#elif defined __GNUC__ - // Because REQUIREs trigger GCC's -Wparentheses, and because still - // supported version of g++ have only buggy support for _Pragmas, - // Wparentheses have to be suppressed globally. -# pragma GCC diagnostic ignored "-Wparentheses" // See #674 for details - -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-variable" -# pragma GCC diagnostic ignored "-Wpadded" -#endif -// end catch_suppress_warnings.h -#if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER) -# define CATCH_IMPL -# define CATCH_CONFIG_ALL_PARTS -#endif - -// In the impl file, we want to have access to all parts of the headers -// Can also be used to sanely support PCHs -#if defined(CATCH_CONFIG_ALL_PARTS) -# define CATCH_CONFIG_EXTERNAL_INTERFACES -# if defined(CATCH_CONFIG_DISABLE_MATCHERS) -# undef CATCH_CONFIG_DISABLE_MATCHERS -# endif -# if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER) -# define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER -# endif -#endif - -#if !defined(CATCH_CONFIG_IMPL_ONLY) -// start catch_platform.h - -// See e.g.: -// https://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/TargetConditionals.h.auto.html -#ifdef __APPLE__ -# include -# if (defined(TARGET_OS_OSX) && TARGET_OS_OSX == 1) || \ - (defined(TARGET_OS_MAC) && TARGET_OS_MAC == 1) -# define CATCH_PLATFORM_MAC -# elif (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE == 1) -# define CATCH_PLATFORM_IPHONE -# endif - -#elif defined(linux) || defined(__linux) || defined(__linux__) -# define CATCH_PLATFORM_LINUX - -#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || defined(__MINGW32__) -# define CATCH_PLATFORM_WINDOWS -#endif - -// end catch_platform.h - -#ifdef CATCH_IMPL -# ifndef CLARA_CONFIG_MAIN -# define CLARA_CONFIG_MAIN_NOT_DEFINED -# define CLARA_CONFIG_MAIN -# endif -#endif - -// start catch_user_interfaces.h - -namespace Catch { - unsigned int rngSeed(); -} - -// end catch_user_interfaces.h -// start catch_tag_alias_autoregistrar.h - -// start catch_common.h - -// start catch_compiler_capabilities.h - -// Detect a number of compiler features - by compiler -// The following features are defined: -// -// CATCH_CONFIG_COUNTER : is the __COUNTER__ macro supported? -// CATCH_CONFIG_WINDOWS_SEH : is Windows SEH supported? -// CATCH_CONFIG_POSIX_SIGNALS : are POSIX signals supported? -// CATCH_CONFIG_DISABLE_EXCEPTIONS : Are exceptions enabled? -// **************** -// Note to maintainers: if new toggles are added please document them -// in configuration.md, too -// **************** - -// In general each macro has a _NO_ form -// (e.g. CATCH_CONFIG_NO_POSIX_SIGNALS) which disables the feature. -// Many features, at point of detection, define an _INTERNAL_ macro, so they -// can be combined, en-mass, with the _NO_ forms later. - -#ifdef __cplusplus - -# if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L) -# define CATCH_CPP14_OR_GREATER -# endif - -# if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) -# define CATCH_CPP17_OR_GREATER -# endif - -#endif - -// Only GCC compiler should be used in this block, so other compilers trying to -// mask themselves as GCC should be ignored. -#if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && !defined(__CUDACC__) && !defined(__LCC__) -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic push" ) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic pop" ) - -# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) - -#endif - -#if defined(__clang__) - -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic push" ) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic pop" ) - -// As of this writing, IBM XL's implementation of __builtin_constant_p has a bug -// which results in calls to destructors being emitted for each temporary, -// without a matching initialization. In practice, this can result in something -// like `std::string::~string` being called on an uninitialized value. -// -// For example, this code will likely segfault under IBM XL: -// ``` -// REQUIRE(std::string("12") + "34" == "1234") -// ``` -// -// Therefore, `CATCH_INTERNAL_IGNORE_BUT_WARN` is not implemented. -# if !defined(__ibmxl__) && !defined(__CUDACC__) -# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) /* NOLINT(cppcoreguidelines-pro-type-vararg, hicpp-vararg) */ -# endif - -# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \ - _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"") - -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) - -# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" ) - -# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" ) - -# define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wunused-template\"" ) - -#endif // __clang__ - -//////////////////////////////////////////////////////////////////////////////// -// Assume that non-Windows platforms support posix signals by default -#if !defined(CATCH_PLATFORM_WINDOWS) - #define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS -#endif - -//////////////////////////////////////////////////////////////////////////////// -// We know some environments not to support full POSIX signals -#if defined(__CYGWIN__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(__DJGPP__) - #define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS -#endif - -#ifdef __OS400__ -# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS -# define CATCH_CONFIG_COLOUR_NONE -#endif - -//////////////////////////////////////////////////////////////////////////////// -// Android somehow still does not support std::to_string -#if defined(__ANDROID__) -# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING -# define CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE -#endif - -//////////////////////////////////////////////////////////////////////////////// -// Not all Windows environments support SEH properly -#if defined(__MINGW32__) -# define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH -#endif - -//////////////////////////////////////////////////////////////////////////////// -// PS4 -#if defined(__ORBIS__) -# define CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE -#endif - -//////////////////////////////////////////////////////////////////////////////// -// Cygwin -#ifdef __CYGWIN__ - -// Required for some versions of Cygwin to declare gettimeofday -// see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin -# define _BSD_SOURCE -// some versions of cygwin (most) do not support std::to_string. Use the libstd check. -// https://gcc.gnu.org/onlinedocs/gcc-4.8.2/libstdc++/api/a01053_source.html line 2812-2813 -# if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ - && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) - -# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING - -# endif -#endif // __CYGWIN__ - -//////////////////////////////////////////////////////////////////////////////// -// Visual C++ -#if defined(_MSC_VER) - -// Universal Windows platform does not support SEH -// Or console colours (or console at all...) -# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) -# define CATCH_CONFIG_COLOUR_NONE -# else -# define CATCH_INTERNAL_CONFIG_WINDOWS_SEH -# endif - -# if !defined(__clang__) // Handle Clang masquerading for msvc - -// MSVC traditional preprocessor needs some workaround for __VA_ARGS__ -// _MSVC_TRADITIONAL == 0 means new conformant preprocessor -// _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor -# if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) -# define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -# endif // MSVC_TRADITIONAL - -// Only do this if we're not using clang on Windows, which uses `diagnostic push` & `diagnostic pop` -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma( warning(push) ) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION __pragma( warning(pop) ) -# endif // __clang__ - -#endif // _MSC_VER - -#if defined(_REENTRANT) || defined(_MSC_VER) -// Enable async processing, as -pthread is specified or no additional linking is required -# define CATCH_INTERNAL_CONFIG_USE_ASYNC -#endif // _MSC_VER - -//////////////////////////////////////////////////////////////////////////////// -// Check if we are compiled with -fno-exceptions or equivalent -#if defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND) -# define CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED -#endif - -//////////////////////////////////////////////////////////////////////////////// -// DJGPP -#ifdef __DJGPP__ -# define CATCH_INTERNAL_CONFIG_NO_WCHAR -#endif // __DJGPP__ - -//////////////////////////////////////////////////////////////////////////////// -// Embarcadero C++Build -#if defined(__BORLANDC__) - #define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN -#endif - -//////////////////////////////////////////////////////////////////////////////// - -// Use of __COUNTER__ is suppressed during code analysis in -// CLion/AppCode 2017.2.x and former, because __COUNTER__ is not properly -// handled by it. -// Otherwise all supported compilers support COUNTER macro, -// but user still might want to turn it off -#if ( !defined(__JETBRAINS_IDE__) || __JETBRAINS_IDE__ >= 20170300L ) - #define CATCH_INTERNAL_CONFIG_COUNTER -#endif - -//////////////////////////////////////////////////////////////////////////////// - -// RTX is a special version of Windows that is real time. -// This means that it is detected as Windows, but does not provide -// the same set of capabilities as real Windows does. -#if defined(UNDER_RTSS) || defined(RTX64_BUILD) - #define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH - #define CATCH_INTERNAL_CONFIG_NO_ASYNC - #define CATCH_CONFIG_COLOUR_NONE -#endif - -#if !defined(_GLIBCXX_USE_C99_MATH_TR1) -#define CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER -#endif - -// Various stdlib support checks that require __has_include -#if defined(__has_include) - // Check if string_view is available and usable - #if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW - #endif - - // Check if optional is available and usable - # if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL - # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) - - // Check if byte is available and usable - # if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # include - # if defined(__cpp_lib_byte) && (__cpp_lib_byte > 0) - # define CATCH_INTERNAL_CONFIG_CPP17_BYTE - # endif - # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) - - // Check if variant is available and usable - # if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # if defined(__clang__) && (__clang_major__ < 8) - // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 - // fix should be in clang 8, workaround in libstdc++ 8.2 - # include - # if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) - # define CATCH_CONFIG_NO_CPP17_VARIANT - # else - # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT - # endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) - # else - # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT - # endif // defined(__clang__) && (__clang_major__ < 8) - # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) -#endif // defined(__has_include) - -#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) -# define CATCH_CONFIG_COUNTER -#endif -#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && !defined(CATCH_CONFIG_WINDOWS_SEH) && !defined(CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH) -# define CATCH_CONFIG_WINDOWS_SEH -#endif -// This is set by default, because we assume that unix compilers are posix-signal-compatible by default. -#if defined(CATCH_INTERNAL_CONFIG_POSIX_SIGNALS) && !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_POSIX_SIGNALS) -# define CATCH_CONFIG_POSIX_SIGNALS -#endif -// This is set by default, because we assume that compilers with no wchar_t support are just rare exceptions. -#if !defined(CATCH_INTERNAL_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_WCHAR) -# define CATCH_CONFIG_WCHAR -#endif - -#if !defined(CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_CPP11_TO_STRING) -# define CATCH_CONFIG_CPP11_TO_STRING -#endif - -#if defined(CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_NO_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_CPP17_OPTIONAL) -# define CATCH_CONFIG_CPP17_OPTIONAL -#endif - -#if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW) -# define CATCH_CONFIG_CPP17_STRING_VIEW -#endif - -#if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && !defined(CATCH_CONFIG_CPP17_VARIANT) -# define CATCH_CONFIG_CPP17_VARIANT -#endif - -#if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && !defined(CATCH_CONFIG_CPP17_BYTE) -# define CATCH_CONFIG_CPP17_BYTE -#endif - -#if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT) -# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE -#endif - -#if defined(CATCH_INTERNAL_CONFIG_NEW_CAPTURE) && !defined(CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NEW_CAPTURE) -# define CATCH_CONFIG_NEW_CAPTURE -#endif - -#if !defined(CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED) && !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) -# define CATCH_CONFIG_DISABLE_EXCEPTIONS -#endif - -#if defined(CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_NO_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_POLYFILL_ISNAN) -# define CATCH_CONFIG_POLYFILL_ISNAN -#endif - -#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC) && !defined(CATCH_INTERNAL_CONFIG_NO_ASYNC) && !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC) -# define CATCH_CONFIG_USE_ASYNC -#endif - -#if defined(CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_NO_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_ANDROID_LOGWRITE) -# define CATCH_CONFIG_ANDROID_LOGWRITE -#endif - -#if defined(CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_NO_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_GLOBAL_NEXTAFTER) -# define CATCH_CONFIG_GLOBAL_NEXTAFTER -#endif - -// Even if we do not think the compiler has that warning, we still have -// to provide a macro that can be used by the code. -#if !defined(CATCH_INTERNAL_START_WARNINGS_SUPPRESSION) -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION -#endif -#if !defined(CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION -#endif -#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS -#endif -#if !defined(CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS -#endif -#if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS -#endif -#if !defined(CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS -#endif - -// The goal of this macro is to avoid evaluation of the arguments, but -// still have the compiler warn on problems inside... -#if !defined(CATCH_INTERNAL_IGNORE_BUT_WARN) -# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) -#endif - -#if defined(__APPLE__) && defined(__apple_build_version__) && (__clang_major__ < 10) -# undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS -#elif defined(__clang__) && (__clang_major__ < 5) -# undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS -#endif - -#if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS -#endif - -#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) -#define CATCH_TRY if ((true)) -#define CATCH_CATCH_ALL if ((false)) -#define CATCH_CATCH_ANON(type) if ((false)) -#else -#define CATCH_TRY try -#define CATCH_CATCH_ALL catch (...) -#define CATCH_CATCH_ANON(type) catch (type) -#endif - -#if defined(CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_NO_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) -#define CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -#endif - -// end catch_compiler_capabilities.h -#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line -#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) -#ifdef CATCH_CONFIG_COUNTER -# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ ) -#else -# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ ) -#endif - -#include -#include -#include - -// We need a dummy global operator<< so we can bring it into Catch namespace later -struct Catch_global_namespace_dummy {}; -std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy); - -namespace Catch { - - struct CaseSensitive { enum Choice { - Yes, - No - }; }; - - class NonCopyable { - NonCopyable( NonCopyable const& ) = delete; - NonCopyable( NonCopyable && ) = delete; - NonCopyable& operator = ( NonCopyable const& ) = delete; - NonCopyable& operator = ( NonCopyable && ) = delete; - - protected: - NonCopyable(); - virtual ~NonCopyable(); - }; - - struct SourceLineInfo { - - SourceLineInfo() = delete; - SourceLineInfo( char const* _file, std::size_t _line ) noexcept - : file( _file ), - line( _line ) - {} - - SourceLineInfo( SourceLineInfo const& other ) = default; - SourceLineInfo& operator = ( SourceLineInfo const& ) = default; - SourceLineInfo( SourceLineInfo&& ) noexcept = default; - SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default; - - bool empty() const noexcept { return file[0] == '\0'; } - bool operator == ( SourceLineInfo const& other ) const noexcept; - bool operator < ( SourceLineInfo const& other ) const noexcept; - - char const* file; - std::size_t line; - }; - - std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); - - // Bring in operator<< from global namespace into Catch namespace - // This is necessary because the overload of operator<< above makes - // lookup stop at namespace Catch - using ::operator<<; - - // Use this in variadic streaming macros to allow - // >> +StreamEndStop - // as well as - // >> stuff +StreamEndStop - struct StreamEndStop { - std::string operator+() const; - }; - template - T const& operator + ( T const& value, StreamEndStop ) { - return value; - } -} - -#define CATCH_INTERNAL_LINEINFO \ - ::Catch::SourceLineInfo( __FILE__, static_cast( __LINE__ ) ) - -// end catch_common.h -namespace Catch { - - struct RegistrarForTagAliases { - RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); - }; - -} // end namespace Catch - -#define CATCH_REGISTER_TAG_ALIAS( alias, spec ) \ - CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ - CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ - namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } \ - CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION - -// end catch_tag_alias_autoregistrar.h -// start catch_test_registry.h - -// start catch_interfaces_testcase.h - -#include - -namespace Catch { - - class TestSpec; - - struct ITestInvoker { - virtual void invoke () const = 0; - virtual ~ITestInvoker(); - }; - - class TestCase; - struct IConfig; - - struct ITestCaseRegistry { - virtual ~ITestCaseRegistry(); - virtual std::vector const& getAllTests() const = 0; - virtual std::vector const& getAllTestsSorted( IConfig const& config ) const = 0; - }; - - bool isThrowSafe( TestCase const& testCase, IConfig const& config ); - bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ); - std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ); - std::vector const& getAllTestCasesSorted( IConfig const& config ); - -} - -// end catch_interfaces_testcase.h -// start catch_stringref.h - -#include -#include -#include -#include - -namespace Catch { - - /// A non-owning string class (similar to the forthcoming std::string_view) - /// Note that, because a StringRef may be a substring of another string, - /// it may not be null terminated. - class StringRef { - public: - using size_type = std::size_t; - using const_iterator = const char*; - - private: - static constexpr char const* const s_empty = ""; - - char const* m_start = s_empty; - size_type m_size = 0; - - public: // construction - constexpr StringRef() noexcept = default; - - StringRef( char const* rawChars ) noexcept; - - constexpr StringRef( char const* rawChars, size_type size ) noexcept - : m_start( rawChars ), - m_size( size ) - {} - - StringRef( std::string const& stdString ) noexcept - : m_start( stdString.c_str() ), - m_size( stdString.size() ) - {} - - explicit operator std::string() const { - return std::string(m_start, m_size); - } - - public: // operators - auto operator == ( StringRef const& other ) const noexcept -> bool; - auto operator != (StringRef const& other) const noexcept -> bool { - return !(*this == other); - } - - auto operator[] ( size_type index ) const noexcept -> char { - assert(index < m_size); - return m_start[index]; - } - - public: // named queries - constexpr auto empty() const noexcept -> bool { - return m_size == 0; - } - constexpr auto size() const noexcept -> size_type { - return m_size; - } - - // Returns the current start pointer. If the StringRef is not - // null-terminated, throws std::domain_exception - auto c_str() const -> char const*; - - public: // substrings and searches - // Returns a substring of [start, start + length). - // If start + length > size(), then the substring is [start, size()). - // If start > size(), then the substring is empty. - auto substr( size_type start, size_type length ) const noexcept -> StringRef; - - // Returns the current start pointer. May not be null-terminated. - auto data() const noexcept -> char const*; - - constexpr auto isNullTerminated() const noexcept -> bool { - return m_start[m_size] == '\0'; - } - - public: // iterators - constexpr const_iterator begin() const { return m_start; } - constexpr const_iterator end() const { return m_start + m_size; } - }; - - auto operator += ( std::string& lhs, StringRef const& sr ) -> std::string&; - auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&; - - constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { - return StringRef( rawChars, size ); - } -} // namespace Catch - -constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { - return Catch::StringRef( rawChars, size ); -} - -// end catch_stringref.h -// start catch_preprocessor.hpp - - -#define CATCH_RECURSION_LEVEL0(...) __VA_ARGS__ -#define CATCH_RECURSION_LEVEL1(...) CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL2(...) CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL3(...) CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL4(...) CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL5(...) CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__))) - -#ifdef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -#define INTERNAL_CATCH_EXPAND_VARGS(...) __VA_ARGS__ -// MSVC needs more evaluations -#define CATCH_RECURSION_LEVEL6(...) CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(__VA_ARGS__))) -#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL6(CATCH_RECURSION_LEVEL6(__VA_ARGS__)) -#else -#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL5(__VA_ARGS__) -#endif - -#define CATCH_REC_END(...) -#define CATCH_REC_OUT - -#define CATCH_EMPTY() -#define CATCH_DEFER(id) id CATCH_EMPTY() - -#define CATCH_REC_GET_END2() 0, CATCH_REC_END -#define CATCH_REC_GET_END1(...) CATCH_REC_GET_END2 -#define CATCH_REC_GET_END(...) CATCH_REC_GET_END1 -#define CATCH_REC_NEXT0(test, next, ...) next CATCH_REC_OUT -#define CATCH_REC_NEXT1(test, next) CATCH_DEFER ( CATCH_REC_NEXT0 ) ( test, next, 0) -#define CATCH_REC_NEXT(test, next) CATCH_REC_NEXT1(CATCH_REC_GET_END test, next) - -#define CATCH_REC_LIST0(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST1(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0) ) ( f, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST2(f, x, peek, ...) f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) - -#define CATCH_REC_LIST0_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST1_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD) ) ( f, userdata, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST2_UD(f, userdata, x, peek, ...) f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) - -// Applies the function macro `f` to each of the remaining parameters, inserts commas between the results, -// and passes userdata as the first parameter to each invocation, -// e.g. CATCH_REC_LIST_UD(f, x, a, b, c) evaluates to f(x, a), f(x, b), f(x, c) -#define CATCH_REC_LIST_UD(f, userdata, ...) CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) - -#define CATCH_REC_LIST(f, ...) CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) - -#define INTERNAL_CATCH_EXPAND1(param) INTERNAL_CATCH_EXPAND2(param) -#define INTERNAL_CATCH_EXPAND2(...) INTERNAL_CATCH_NO## __VA_ARGS__ -#define INTERNAL_CATCH_DEF(...) INTERNAL_CATCH_DEF __VA_ARGS__ -#define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF -#define INTERNAL_CATCH_STRINGIZE(...) INTERNAL_CATCH_STRINGIZE2(__VA_ARGS__) -#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -#define INTERNAL_CATCH_STRINGIZE2(...) #__VA_ARGS__ -#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) -#else -// MSVC is adding extra space and needs another indirection to expand INTERNAL_CATCH_NOINTERNAL_CATCH_DEF -#define INTERNAL_CATCH_STRINGIZE2(...) INTERNAL_CATCH_STRINGIZE3(__VA_ARGS__) -#define INTERNAL_CATCH_STRINGIZE3(...) #__VA_ARGS__ -#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) (INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) + 1) -#endif - -#define INTERNAL_CATCH_MAKE_NAMESPACE2(...) ns_##__VA_ARGS__ -#define INTERNAL_CATCH_MAKE_NAMESPACE(name) INTERNAL_CATCH_MAKE_NAMESPACE2(name) - -#define INTERNAL_CATCH_REMOVE_PARENS(...) INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF __VA_ARGS__) - -#ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) decltype(get_wrapper()) -#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__)) -#else -#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) INTERNAL_CATCH_EXPAND_VARGS(decltype(get_wrapper())) -#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))) -#endif - -#define INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...)\ - CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST,__VA_ARGS__) - -#define INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_0) INTERNAL_CATCH_REMOVE_PARENS(_0) -#define INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0, _1) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1) -#define INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0, _1, _2) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2) -#define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3) -#define INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0, _1, _2, _3, _4) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4) -#define INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0, _1, _2, _3, _4, _5) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5) -#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _3, _4, _5, _6) -#define INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0, _1, _2, _3, _4, _5, _6, _7) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7) -#define INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8) -#define INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9) -#define INTERNAL_CATCH_REMOVE_PARENS_11_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) - -#define INTERNAL_CATCH_VA_NARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N - -#define INTERNAL_CATCH_TYPE_GEN\ - template struct TypeList {};\ - template\ - constexpr auto get_wrapper() noexcept -> TypeList { return {}; }\ - template class...> struct TemplateTypeList{};\ - template class...Cs>\ - constexpr auto get_wrapper() noexcept -> TemplateTypeList { return {}; }\ - template\ - struct append;\ - template\ - struct rewrap;\ - template class, typename...>\ - struct create;\ - template class, typename>\ - struct convert;\ - \ - template \ - struct append { using type = T; };\ - template< template class L1, typename...E1, template class L2, typename...E2, typename...Rest>\ - struct append, L2, Rest...> { using type = typename append, Rest...>::type; };\ - template< template class L1, typename...E1, typename...Rest>\ - struct append, TypeList, Rest...> { using type = L1; };\ - \ - template< template class Container, template class List, typename...elems>\ - struct rewrap, List> { using type = TypeList>; };\ - template< template class Container, template class List, class...Elems, typename...Elements>\ - struct rewrap, List, Elements...> { using type = typename append>, typename rewrap, Elements...>::type>::type; };\ - \ - template