Skip to content

[browser][HybridGlobalization] Improve speed performance of IndexOf and LastIndexOf text APIs with HybridGlobalization mode - #95583

Merged
matouskozak merged 23 commits into
dotnet:mainfrom
matouskozak:wasm-hg-indexOf
Jan 16, 2024
Merged

[browser][HybridGlobalization] Improve speed performance of IndexOf and LastIndexOf text APIs with HybridGlobalization mode#95583
matouskozak merged 23 commits into
dotnet:mainfrom
matouskozak:wasm-hg-indexOf

Conversation

@matouskozak

@matouskozakmatouskozak commented Dec 4, 2023

Copy link
Copy Markdown
Member

Description

In this PR, we improve the time performance of IndexOf and LastIndexOf text APIs when running in HybridGlobalization (HG) mode.

This is done by picking up necessary parts from the previously used Intl.Segmenter class. By picking up only essential parts for grapheme segmentation, we could reduce the overhead and improve performance from ~2362ms down to ~38ms (measured using browser-bench)

APItime ICU4C [ms]time HG before [ms]time HG this PR [ms]
String, String IndexOf4.7236238

This improvement introduces a regression in raw size of ~21kB due to grapheme segmentation rules presented in src/mono/browser/runtime/hybrid-globalization/segmentation-rules.json. These rules are loaded separately as static JSON asset when HG is enabled.

Ideas

By introducing grapheme segmentation algorithm on the TypeScript side, we are duplicating code already present in .NET under the name TextSegmentationUtility.GetLengthOfFirstUtf16ExtendedGraphemeCluster. I have several propositions for how we could leverage this:

  1. The core part of the IndexOf algorithm could be done on the C# side, and we would interop only for string comparison (JsCompareString). By core part, I mean grapheme segmentation of source and target strings and iteration over strings to find a match. With this approach, we wouldn't introduce any additional rule files and use the already present and tested grapheme segmentation algorithm. However, doing interop for every string comparison introduces additional overhead, which would slow the APIs. I tried a basic version of this approach locally and measured ~200ms for IndexOf and LastIndexOf APIs (slower than this PR, but still significantly faster than using Intl.Segmenter). We could choose this approach if we consider the size increase by this PR undesirable.
  2. We could perform grapheme segmentation on the C# side before interop call and iteration over strings to find a match, and string comparison would be done on the TypeScript side. We would still use TextSegmentationUtility for grapheme segmentation, but we would have to segment the entire source/target string in advance. This could significantly hinder performance for cases when the target string can be found in the first parts of the source string. Additionally, we would have to pass an array of grapheme breaks to the interop call.
  3. Instead of using regex rules (src/mono/browser/runtime/hybrid-globalization/segmentation-rules.json), we could pass the necessary data from CharUnicodeInfoData.cs to the interop call and use them on TypeScript side. Information for grapheme segmentation is already present in .NET runtime:
    // 11:5:4 index table of the Unicode numeric & text segmentation data.
    privatestaticReadOnlySpan<byte>NumericGraphemeLevel1Index=>// 2176
    [
    0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0a,
    0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x0a,0x16,0x17,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x1b,0x1c,0x1d,
    0x1e,0x1f,0x20,0x21,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x23,0x24,0x0a,0x25,
    0x26,0x27,0x28,0x0a,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,
    0x0a,0x0a,0x35,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x36,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x37,0x0a,0x38,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x39,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x3a,0x3b,0x3c,0x0a,0x3d,0x0a,0x3e,0x0a,0x0a,
    0x3f,0x40,0x41,0x0a,0x42,0x0a,0x43,0x0a,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x4c,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
    ];
    privatestaticReadOnlySpan<byte>NumericGraphemeLevel2Index=>// 5056
    [
    0x00,0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,
    0x01,0x00,0x01,0x00,0x05,0x00,0x06,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x08,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x09,0x00,0x07,0x00,0x0a,0x00,0x0b,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x0c,0x00,0x0d,0x00,0x02,0x00,0x02,0x00,0x0e,0x00,0x07,0x00,0x03,0x00,0x0f,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x10,0x00,0x11,0x00,0x03,0x00,
    0x12,0x00,0x13,0x00,0x02,0x00,0x07,0x00,0x14,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x15,0x00,0x0f,0x00,0x03,0x00,0x02,0x00,0x0e,0x00,0x16,0x00,
    0x02,0x00,0x17,0x00,0x18,0x00,0x02,0x00,0x02,0x00,0x19,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x1a,0x00,0x02,0x00,0x02,0x00,0x1b,0x00,0x07,0x00,0x1c,0x00,0x07,0x00,
    0x1d,0x00,0x02,0x00,0x02,0x00,0x1e,0x00,0x1f,0x00,0x20,0x00,0x21,0x00,0x02,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x23,0x00,0x24,0x00,0x25,0x00,0x21,0x00,0x26,0x00,
    0x27,0x00,0x02,0x00,0x02,0x00,0x28,0x00,0x29,0x00,0x13,0x00,0x2a,0x00,0x2b,0x00,
    0x27,0x00,0x02,0x00,0x02,0x00,0x28,0x00,0x2c,0x00,0x02,0x00,0x21,0x00,0x1b,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x2d,0x00,0x24,0x00,0x2e,0x00,0x21,0x00,0x2f,0x00,
    0x30,0x00,0x02,0x00,0x02,0x00,0x31,0x00,0x32,0x00,0x25,0x00,0x2a,0x00,0x33,0x00,
    0x34,0x00,0x02,0x00,0x02,0x00,0x2d,0x00,0x35,0x00,0x36,0x00,0x21,0x00,0x37,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x38,0x00,0x39,0x00,0x36,0x00,0x21,0x00,0x3a,0x00,
    0x3b,0x00,0x02,0x00,0x02,0x00,0x3c,0x00,0x3d,0x00,0x3e,0x00,0x21,0x00,0x3f,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x40,0x00,0x41,0x00,0x2a,0x00,0x42,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x43,0x00,0x44,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x45,0x00,0x46,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x47,0x00,0x48,0x00,0x49,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x4a,0x00,
    0x4b,0x00,0x4c,0x00,0x07,0x00,0x4d,0x00,0x4e,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x4f,0x00,0x50,0x00,0x03,0x00,0x51,0x00,0x0f,0x00,0x52,0x00,
    0x53,0x00,0x54,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x55,0x00,0x55,0x00,0x55,0x00,0x55,0x00,0x55,0x00,0x55,0x00,0x56,0x00,0x56,0x00,
    0x56,0x00,0x56,0x00,0x57,0x00,0x58,0x00,0x58,0x00,0x58,0x00,0x58,0x00,0x58,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x4f,0x00,0x59,0x00,0x5a,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x5b,0x00,0x5c,0x00,
    0x02,0x00,0x5d,0x00,0x02,0x00,0x5e,0x00,0x02,0x00,0x5f,0x00,0x02,0x00,0x5f,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x60,0x00,0x61,0x00,0x16,0x00,0x03,0x00,0x62,0x00,
    0x63,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x36,0x00,0x02,0x00,0x64,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x65,0x00,0x66,0x00,0x2a,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x67,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x68,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x69,0x00,0x6a,0x00,0x6b,0x00,
    0x03,0x00,0x03,0x00,0x02,0x00,0x07,0x00,0x6c,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x6d,0x00,0x02,0x00,0x02,0x00,0x6e,0x00,0x6f,0x00,0x03,0x00,0x0e,0x00,0x70,0x00,
    0x71,0x00,0x02,0x00,0x72,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x73,0x00,0x3b,0x00,
    0x02,0x00,0x02,0x00,0x74,0x00,0x75,0x00,0x03,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x76,0x00,0x77,0x00,0x78,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
    0x79,0x00,0x02,0x00,0x7a,0x00,0x7b,0x00,0x7c,0x00,0x02,0x00,0x01,0x00,0x7d,0x00,
    0x7e,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x07,0x00,0x0f,0x00,
    0x02,0x00,0x02,0x00,0x7f,0x00,0x7c,0x00,0x02,0x00,0x80,0x00,0x81,0x00,0x81,0x00,
    0x82,0x00,0x83,0x00,0x84,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x85,0x00,0x86,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x86,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x87,0x00,0x02,0x00,0x88,0x00,0x89,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x8a,0x00,0x8b,0x00,
    0x8c,0x00,0x8d,0x00,0x02,0x00,0x02,0x00,0x7f,0x00,0x02,0x00,0x8e,0x00,0x8f,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x85,0x00,0x90,0x00,0x91,0x00,0x02,0x00,0x02,0x00,0x92,0x00,
    0x93,0x00,0x94,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x96,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x97,0x00,0x98,0x00,0x99,0x00,0x9a,0x00,0x9b,0x00,0x9c,0x00,0x9d,0x00,0x9e,0x00,
    0x9f,0x00,0xa0,0x00,0xa1,0x00,0xa2,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xa3,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xa4,0x00,0xa5,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa6,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0xa8,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x07,0x00,
    0xa9,0x00,0x02,0x00,0xaa,0x00,0xab,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xac,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xad,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0xae,0x00,0x02,0x00,0xaf,0x00,0xb0,0x00,0x02,0x00,0x02,0x00,
    0xae,0x00,0xb1,0x00,0x02,0x00,0xb2,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0xb3,0x00,
    0x02,0x00,0xb4,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xb5,0x00,0xb6,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xb7,0x00,0x02,0x00,0xb8,0x00,0xb9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xba,0x00,0x02,0x00,0x02,0x00,0xbb,0x00,0xbc,0x00,0x03,0x00,0x07,0x00,0xbd,0x00,
    0x03,0x00,0x02,0x00,0xbe,0x00,0x02,0x00,0xbf,0x00,0x3b,0x00,0x55,0x00,0xc0,0x00,
    0x1d,0x00,0x02,0x00,0x02,0x00,0xc1,0x00,0xc2,0x00,0x03,0x00,0xc3,0x00,0x03,0x00,
    0x02,0x00,0x02,0x00,0xc4,0x00,0xc5,0x00,0xc6,0x00,0x03,0x00,0x02,0x00,0xc7,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xc8,0x00,0x13,0x00,0x02,0x00,0xc9,0x00,0xca,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xcb,0x00,0x03,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd1,0x00,0x56,0x00,0xd2,0x00,0x58,0x00,0x58,0x00,0xd3,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xd4,0x00,0xd5,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xd6,0x00,0x02,0x00,0xd7,0x00,0x02,0x00,0xd8,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xd9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x00,0x02,0x00,0x07,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,
    0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xb4,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xda,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xdb,0x00,0xdc,0x00,0xdd,0x00,0xde,0x00,0xdf,0x00,0xe0,0x00,0xe1,0x00,0xe2,0x00,
    0xe3,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xe4,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xe5,0x00,0xe6,0x00,
    0x02,0x00,0x02,0x00,0xe7,0x00,0x02,0x00,0xe8,0x00,0x02,0x00,0x02,0x00,0xe9,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xea,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xeb,0x00,0x02,0x00,0xec,0x00,
    0x02,0x00,0x02,0x00,0xed,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xee,0x00,
    0x02,0x00,0xef,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xf0,0x00,0xf1,0x00,0xf2,0x00,0xf3,0x00,0xf4,0x00,
    0xf5,0x00,0x02,0x00,0x02,0x00,0xf6,0x00,0xf7,0x00,0x02,0x00,0x02,0x00,0xf8,0x00,
    0x02,0x00,0xf9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xfa,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xfb,0x00,0x02,0x00,0xfb,0x00,
    0x02,0x00,0x02,0x00,0xfc,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xfd,0x00,
    0x02,0x00,0x02,0x00,0xfe,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xff,0x00,0x00,0x01,
    0x02,0x00,0x02,0x00,0x01,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x4f,0x00,
    0x02,0x00,0x02,0x01,0x03,0x01,0x02,0x00,0x15,0x00,0x04,0x01,0x02,0x00,0x02,0x00,
    0x05,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x06,0x01,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x01,0x02,0x00,0x02,0x00,0x08,0x01,0x09,0x01,0x0a,0x01,0x0b,0x01,0x0c,0x01,
    0x71,0x00,0x02,0x00,0x02,0x00,0x0d,0x01,0x0e,0x01,0x02,0x00,0x02,0x00,0x03,0x00,
    0x0f,0x01,0x02,0x00,0x10,0x01,0x11,0x01,0x12,0x01,0x02,0x00,0x02,0x00,0x13,0x01,
    0x71,0x00,0x02,0x00,0x02,0x00,0x14,0x01,0x15,0x01,0x03,0x00,0x16,0x01,0x17,0x01,
    0x02,0x00,0x02,0x00,0x18,0x01,0x19,0x01,0x13,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0x1a,0x01,0x03,0x00,
    0x3b,0x00,0x02,0x00,0x02,0x00,0x3c,0x00,0x1b,0x01,0x25,0x00,0x1c,0x01,0x1d,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x1e,0x01,0x1f,0x01,0x20,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x21,0x01,0x22,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0xa7,0x00,0x23,0x01,0x0f,0x00,0x24,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x25,0x01,0x0f,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x26,0x01,0x27,0x01,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x4f,0x00,0x28,0x01,0x29,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x18,0x01,0x2a,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x2b,0x01,0x2c,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x2d,0x01,0x2e,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x2f,0x01,0x30,0x01,0x02,0x00,
    0x31,0x01,0x02,0x00,0x02,0x00,0x32,0x01,0x25,0x00,0x33,0x01,0x02,0x00,0x02,0x00,
    0x34,0x01,0x35,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x36,0x01,0x37,0x01,0x02,0x00,0x38,0x01,0x39,0x01,0x02,0x00,
    0x02,0x00,0x3a,0x01,0x3b,0x01,0x3c,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x3d,0x01,0x3e,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x3f,0x01,0x40,0x01,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x41,0x01,
    0x42,0x01,0x02,0x00,0x02,0x00,0x43,0x01,0x44,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x45,0x01,0x46,0x01,0x02,0x00,0x02,0x00,
    0x47,0x01,0x48,0x01,0x49,0x01,0x4a,0x01,0x4b,0x01,0x4c,0x01,0x4d,0x01,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x4e,0x01,0x4f,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x1d,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x09,0x01,0x02,0x00,0x50,0x01,0x51,0x01,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x52,0x01,0x53,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0x54,0x01,0x55,0x01,0x55,0x01,
    0x56,0x01,0x0f,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x57,0x01,0xba,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x58,0x01,0x59,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x00,0x07,0x00,0x5a,0x01,0x07,0x00,0x09,0x01,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x5b,0x01,0x5c,0x01,
    0x5d,0x01,0x02,0x00,0x5e,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x5f,0x01,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x52,0x01,0x60,0x01,0x52,0x01,0x60,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xf1,0x00,0x61,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x62,0x01,0x63,0x01,0x64,0x01,0x65,0x01,
    0x07,0x00,0x07,0x00,0x07,0x00,0x66,0x01,0x07,0x00,0x07,0x00,0x4d,0x00,0xc3,0x00,
    0x57,0x01,0x0e,0x00,0x09,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x67,0x01,0x68,0x01,0x69,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xa7,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x09,0x01,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0xd9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x6a,0x01,0x03,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x6a,0x01,0x03,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xdb,0x00,0x09,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x6b,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x16,0x01,
    0x6c,0x01,0x6d,0x01,0x6e,0x01,0x6f,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x16,0x01,0x6c,0x01,0x70,0x01,0x71,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x72,0x01,0x02,0x00,0x87,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x73,0x01,0x74,0x01,
    0x75,0x01,0x76,0x01,0x77,0x01,0x95,0x00,0x95,0x00,0x95,0x00,0x78,0x01,0x79,0x01,
    0x7a,0x01,0x7b,0x01,0x87,0x00,0x7c,0x01,0x88,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x7d,0x01,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x7e,0x01,0x7f,0x01,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x80,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x81,0x01,0x95,0x00,0x95,0x00,
    0x73,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x82,0x01,0x83,0x01,0x02,0x00,0x02,0x00,
    0x82,0x01,0x02,0x00,0x84,0x01,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x73,0x01,0x95,0x00,0x95,0x00,0x85,0x01,0x93,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x7e,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x86,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x01,0x00,0x01,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
    0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00
    ];
    privatestaticReadOnlySpan<byte>NumericGraphemeLevel3Index=>// 6256
    [
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x00,0x0e,0x03,
    0x03,0x03,0x0f,0x10,0x03,0x03,0x03,0x03,0x03,0x11,0x03,0x03,0x12,0x13,0x14,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,
    0x03,0x15,0x15,0x03,0x15,0x15,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x16,0x16,0x16,0x16,0x16,0x16,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x00,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x03,0x15,
    0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x16,
    0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x16,0x16,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x03,0x17,0x17,
    0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x17,0x17,0x15,0x17,0x17,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x03,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x15,0x17,
    0x17,0x15,0x15,0x15,0x15,0x03,0x03,0x17,0x17,0x03,0x03,0x17,0x17,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x18,0x19,0x1a,0x12,0x14,0x1b,0x03,0x03,0x03,0x03,0x15,0x03,
    0x03,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x17,0x17,
    0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x15,0x15,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x17,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x17,0x03,0x17,0x17,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x12,0x13,0x14,0x18,0x19,0x1a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,
    0x15,0x17,0x17,0x03,0x03,0x03,0x17,0x17,0x17,0x03,0x17,0x17,0x17,0x15,0x03,0x03,
    0x1c,0x1d,0x1e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x17,0x03,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1f,0x20,0x21,0x22,0x20,0x21,0x22,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x17,0x15,
    0x17,0x17,0x15,0x17,0x17,0x03,0x15,0x17,0x17,0x03,0x17,0x17,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x15,0x17,
    0x17,0x15,0x15,0x15,0x15,0x03,0x17,0x17,0x17,0x03,0x17,0x17,0x17,0x15,0x16,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x03,
    0x1c,0x1d,0x1e,0x12,0x13,0x14,0x18,0x19,0x1a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x15,
    0x17,0x17,0x15,0x15,0x15,0x03,0x15,0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,
    0x03,0x03,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x03,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x03,0x15,0x03,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x13,0x2a,0x2b,0x2c,0x2d,0x2e,
    0x2f,0x30,0x31,0x32,0x03,0x15,0x03,0x15,0x03,0x15,0x03,0x03,0x03,0x03,0x17,0x17,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,
    0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,
    0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x17,0x17,0x15,0x15,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x15,
    0x03,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x03,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x03,0x03,0x15,0x03,0x03,
    0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
    0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
    0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
    0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,
    0x3a,0x3b,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x1d,0x44,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x45,0x46,
    0x47,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x15,0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,
    0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x1f,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x00,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x17,0x17,0x17,0x17,0x15,0x15,0x17,0x17,0x17,0x03,0x03,0x03,0x03,
    0x17,0x17,0x15,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x11,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x17,0x17,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x17,0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x15,0x03,0x15,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x17,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x15,0x15,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x17,0x17,0x17,
    0x17,0x17,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x17,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x17,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x15,0x17,0x17,0x17,0x15,0x17,0x15,
    0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x15,0x4e,0x00,0x00,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,
    0x4f,0x03,0x03,0x03,0x36,0x37,0x38,0x39,0x3a,0x3b,0x03,0x03,0x03,0x03,0x03,0x03,
    0x4f,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x50,0x51,0x27,0x52,0x53,0x29,0x54,0x55,0x56,0x57,0x58,0x19,0x59,0x5a,0x5b,0x20,
    0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x5c,0x5d,0x3f,0x1d,0x5e,0x1e,
    0x1e,0x5f,0x44,0x03,0x03,0x4a,0x3f,0x60,0x61,0x1f,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x5c,0x5d,0x62,0x63,0x64,0x1b,
    0x45,0x46,0x47,0x3c,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x5c,0x5d,
    0x62,0x63,0x64,0x1b,0x45,0x46,0x47,0x3c,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,
    0x3b,0x1c,0x5c,0x5d,0x62,0x63,0x64,0x1b,0x45,0x46,0x47,0x3c,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x4f,0x5c,0x5d,0x62,0x63,0x64,
    0x1b,0x45,0x46,0x47,0x3c,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x4f,
    0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x03,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x03,0x0e,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,
    0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x0e,0x03,0x0e,0x03,
    0x03,0x03,0x03,0x0e,0x0e,0x0e,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,
    0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x11,0x0f,0x10,0x36,0x37,0x38,
    0x39,0x3a,0x3b,0x1c,0x03,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,
    0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,
    0x0e,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x13,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x15,0x15,0x15,0x15,0x15,0x15,
    0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1c,0x3c,0x3d,0x03,0x03,0x0e,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x20,0x21,0x22,0x48,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,
    0x03,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x3d,0x6e,0x6f,0x70,0x71,0x72,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x73,0x74,0x75,0x76,0x3e,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,0x3f,
    0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1f,
    0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x17,0x17,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,
    0x12,0x13,0x14,0x18,0x19,0x1a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
    0x17,0x17,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x17,0x17,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x17,0x17,
    0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,
    0x17,0x15,0x15,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,
    0x15,0x03,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x15,0x15,0x17,0x17,
    0x03,0x03,0x03,0x03,0x03,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x17,0x17,0x15,0x17,0x17,0x15,0x17,0x17,0x03,0x17,0x15,0x03,0x03,
    0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x03,0x03,0x03,0x03,0x35,0x35,0x35,0x35,0x35,
    0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x22,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x1c,0x03,0x03,0x03,0x03,0x21,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x1f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x4a,0x03,0x4a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1c,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,
    0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,
    0x87,0x88,0x1e,0x89,0x8a,0x8b,0x5f,0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,
    0x93,0x94,0x95,0x96,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x12,0x13,0x20,0x49,0x3f,0x5e,0x5f,0x60,0x49,0x1c,0x3f,0x1d,0x5e,0x1e,0x5f,0x49,
    0x1c,0x3f,0x1d,0x5e,0x1e,0x44,0x60,0x1c,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x49,
    0x1c,0x1c,0x1c,0x1c,0x1c,0x3d,0x3f,0x3f,0x3f,0x3f,0x1d,0x83,0x5e,0x5e,0x5e,0x5e,
    0x5e,0x1e,0x5f,0x49,0x3f,0x13,0x13,0x53,0x14,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1f,0x12,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x15,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,
    0x41,0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x03,0x03,0x03,0x03,
    0x20,0x49,0x1c,0x3f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x43,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x88,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x20,0x21,0x1c,0x3c,0x1d,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x1c,0x3c,0x1d,0x1e,0x44,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x49,0x1c,0x3c,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x48,0x49,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x49,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x1c,0x3c,0x1d,0x21,0x22,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x97,0x13,0x03,0x03,
    0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
    0x03,0x03,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x1e,0x89,0x8a,0x8b,0x5f,
    0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,0x93,0x94,0x95,0x96,0x61,0x98,0x99,
    0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,0xa0,0x57,0x12,0x52,0xa1,0x13,0xa2,0x53,0x14,0x58,
    0x03,0x15,0x15,0x15,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x15,
    0x11,0x0f,0x10,0x36,0x1c,0x3c,0x1d,0x1e,0x13,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x3f,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x1c,0x3c,
    0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x20,0x49,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x1c,0x3c,0x1d,0x1e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x49,0x1c,0x3f,0x1d,0x1e,
    0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
    0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x13,0x12,0x52,0x53,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,
    0x48,0x49,0x1c,0x3c,0x3d,0x1d,0x13,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x20,0x1c,0x3c,0x1d,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x1c,0x3c,0x1d,0x03,0x03,0x03,0x03,
    0x17,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x3c,0x3d,0x3e,0x3f,
    0x40,0x41,0x42,0x43,0x1d,0x1e,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x15,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x03,0x03,0x16,0x03,0x03,
    0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x16,0x03,0x03,
    0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,
    0x17,0x03,0x16,0x16,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x17,0x15,
    0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,
    0x41,0x42,0x43,0x1d,0x1e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x15,
    0x15,0x15,0x17,0x17,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x17,0x03,0x03,0x17,0x17,0x03,0x03,0x17,0x17,0x17,0x03,0x03,
    0x03,0x03,0x17,0x17,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x17,0x17,0x15,0x15,0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x03,0x03,0x03,0x15,0x03,
    0x15,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x17,0x17,0x15,0x17,0x15,
    0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x17,0x17,0x15,0x15,0x15,0x15,0x03,0x03,0x17,0x17,0x17,0x17,0x15,0x15,0x17,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x17,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x17,0x17,
    0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x1c,0x3c,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,
    0x41,0x42,0x43,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x17,0x17,0x03,0x17,0x17,0x03,0x03,0x15,0x15,0x17,0x15,0x16,
    0x17,0x16,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x17,0x17,0x17,0x17,
    0x15,0x03,0x03,0x03,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x16,0x15,0x15,0x15,0x15,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x20,0x21,0x22,0x48,0x49,0x4a,
    0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x1d,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x17,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x17,0x15,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x15,0x03,0x15,0x15,0x03,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x17,0x17,0x03,
    0x15,0x15,0x03,0x17,0x17,0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x16,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x17,0x17,
    0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0xa3,0x23,0xa4,0xa5,0x24,0xa6,0x25,0xa7,0x26,0x18,0x18,0x27,0x19,0x28,0x1a,0x29,
    0x12,0x13,0x13,0x14,0xa3,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x48,
    0x49,0x4a,0x4b,0x4c,0x4d,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x20,0x21,
    0x22,0x48,0x49,0x21,0x22,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x20,0x21,0x22,0x22,
    0x48,0x49,0xa8,0xa9,0x20,0x21,0x22,0x22,0x48,0x49,0x22,0x22,0x48,0x48,0x48,0x48,
    0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x21,0x22,0x48,0x49,0x4a,0x20,
    0x21,0x22,0x48,0x48,0x49,0x49,0x21,0x22,0x20,0x21,0x52,0x53,0x58,0x52,0x53,0x19,
    0x12,0x57,0x12,0x12,0x13,0x52,0x53,0x3e,0x3f,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x03,
    0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x1c,0x1d,0x44,0xaa,0xab,
    0xac,0xad,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x1f,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x5c,0x5d,0x62,0x63,0x64,
    0x1b,0x45,0x46,0x47,0x20,0x21,0x22,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,
    0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x15,0x15,0x03,0x03,0x03,0x17,0x15,0x15,
    0x15,0x15,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x1b,0x45,0x46,0x47,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x42,0x43,0x20,0x21,0x22,0x48,0x49,0x20,0x49,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x05,
    0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
    0x0c,0x0d,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x04,0x05,0x06,0x07,
    0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x03,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x41,0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x1e,0x89,0x8a,0x8b,
    0x5f,0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,0x93,0x94,0x95,0x96,0x61,0x98,
    0x61,0xae,0xaf,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x03,0x12,0x13,0x14,
    0x03,0x20,0x21,0x44,0x61,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x5f,0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,0x93,0x94,0x95,0x96,0x03,0x21,
    0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x84,0x85,0x89,0x44,0x13,0x57,0x03,0x03,
    0x4f,0x4f,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1f,0x1f,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,
    0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
    0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
    0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,
    0x4d,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
    ];
    By this approach, we would reduce the increased raw size by this PR. However, reading large amounts of data on the TypeScript side might be too time-consuming, and we would still have to implement grapheme segmentation instead of using C# implementation. Additionally, it would require reimplementing C# GetNumericGraphemeTableOffsetNoBoundsChecks function in Typescript. Edit based on @pavelsavara comment: Ideally, we would preprocess data from CharUnicodeInfoData.cs only once and used them in subsequent calls.

cc: @ilonatommy

Contributes to: #94473

Note: I don't have much experience with TypeScript and WASM in general, so feel free to change any parts that don't obey style conventions.

@ghost

ghost commented Dec 4, 2023

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/area-system-globalization
See info in area-owners.md if you want to be subscribed.

Issue Details

Description

In this PR, we improve the time performance of IndexOf and LastIndexOf text APIs when running in HybridGlobalization (HG) mode.

This is done by picking up necessary parts from the previously used Intl.Segmenter class. By picking up only essential parts for grapheme segmentation, we could reduce the overhead and improve performance from ~2362ms down to ~38ms (measured using browser-bench)

This improvement introduces a regression in raw size of ~21kB due to grapheme segmentation rules presented in src/mono/wasm/runtime/hybrid-globalization/segmentation-rules.ts.

Ideas

By introducing our grapheme segmentation on the TypeScript side, we are duplicating code already present in .NET under the name TextSegmentationUtility.GetLengthOfFirstUtf16ExtendedGraphemeCluster. I have several propositions for how we could leverage this:

  1. The core part of the IndexOf algorithm could be done on the C# side, and we would interop only for string comparison (JsCompareString). By core part, I mean grapheme segmentation of source and target strings and iteration over strings to find a match. With this approach, we wouldn't introduce any additional rule files and use the already present and tested grapheme segmentation algorithm. However, doing interop for every string comparison introduces additional overhead, which would slow the APIs. I tried a basic version of this approach locally and measured ~200ms for IndexOf and LastIndexOf APIs (slower than this PR, but still significantly faster than using Intl.Segmenter). We could choose this approach if we consider the size increase by this PR undesirable.
  2. We could perform grapheme segmentation on the C# side before interop call and iteration over strings to find a match, and string comparison would be done on the TypeScript side. We would still use TextSegmentationUtility for grapheme segmentation, but we would have to segment the entire source/target string in advance. This could significantly hinder performance for cases when the target string can be found in the first parts of the source string. Additionally, we would have to pass an array of grapheme breaks to the interop call.
  3. Instead of using regex rules (src/mono/wasm/runtime/hybrid-globalization/segmentation-rules.ts), we could pass the necessary data from CharUnicodeInfoData.cs to the interop call and use them on TypeScript side. Information for grapheme segmentation is already present in .NET runtime:
    // 11:5:4 index table of the Unicode numeric & text segmentation data.
    privatestaticReadOnlySpan<byte>NumericGraphemeLevel1Index=>// 2176
    [
    0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0a,
    0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x0a,0x16,0x17,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x1b,0x1c,0x1d,
    0x1e,0x1f,0x20,0x21,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x23,0x24,0x0a,0x25,
    0x26,0x27,0x28,0x0a,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,
    0x0a,0x0a,0x35,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x36,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x37,0x0a,0x38,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x39,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x3a,0x3b,0x3c,0x0a,0x3d,0x0a,0x3e,0x0a,0x0a,
    0x3f,0x40,0x41,0x0a,0x42,0x0a,0x43,0x0a,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x4c,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
    ];
    privatestaticReadOnlySpan<byte>NumericGraphemeLevel2Index=>// 5056
    [
    0x00,0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,
    0x01,0x00,0x01,0x00,0x05,0x00,0x06,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x08,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x09,0x00,0x07,0x00,0x0a,0x00,0x0b,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x0c,0x00,0x0d,0x00,0x02,0x00,0x02,0x00,0x0e,0x00,0x07,0x00,0x03,0x00,0x0f,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x10,0x00,0x11,0x00,0x03,0x00,
    0x12,0x00,0x13,0x00,0x02,0x00,0x07,0x00,0x14,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x15,0x00,0x0f,0x00,0x03,0x00,0x02,0x00,0x0e,0x00,0x16,0x00,
    0x02,0x00,0x17,0x00,0x18,0x00,0x02,0x00,0x02,0x00,0x19,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x1a,0x00,0x02,0x00,0x02,0x00,0x1b,0x00,0x07,0x00,0x1c,0x00,0x07,0x00,
    0x1d,0x00,0x02,0x00,0x02,0x00,0x1e,0x00,0x1f,0x00,0x20,0x00,0x21,0x00,0x02,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x23,0x00,0x24,0x00,0x25,0x00,0x21,0x00,0x26,0x00,
    0x27,0x00,0x02,0x00,0x02,0x00,0x28,0x00,0x29,0x00,0x13,0x00,0x2a,0x00,0x2b,0x00,
    0x27,0x00,0x02,0x00,0x02,0x00,0x28,0x00,0x2c,0x00,0x02,0x00,0x21,0x00,0x1b,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x2d,0x00,0x24,0x00,0x2e,0x00,0x21,0x00,0x2f,0x00,
    0x30,0x00,0x02,0x00,0x02,0x00,0x31,0x00,0x32,0x00,0x25,0x00,0x2a,0x00,0x33,0x00,
    0x34,0x00,0x02,0x00,0x02,0x00,0x2d,0x00,0x35,0x00,0x36,0x00,0x21,0x00,0x37,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x38,0x00,0x39,0x00,0x36,0x00,0x21,0x00,0x3a,0x00,
    0x3b,0x00,0x02,0x00,0x02,0x00,0x3c,0x00,0x3d,0x00,0x3e,0x00,0x21,0x00,0x3f,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x40,0x00,0x41,0x00,0x2a,0x00,0x42,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x43,0x00,0x44,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x45,0x00,0x46,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x47,0x00,0x48,0x00,0x49,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x4a,0x00,
    0x4b,0x00,0x4c,0x00,0x07,0x00,0x4d,0x00,0x4e,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x4f,0x00,0x50,0x00,0x03,0x00,0x51,0x00,0x0f,0x00,0x52,0x00,
    0x53,0x00,0x54,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x55,0x00,0x55,0x00,0x55,0x00,0x55,0x00,0x55,0x00,0x55,0x00,0x56,0x00,0x56,0x00,
    0x56,0x00,0x56,0x00,0x57,0x00,0x58,0x00,0x58,0x00,0x58,0x00,0x58,0x00,0x58,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x4f,0x00,0x59,0x00,0x5a,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x5b,0x00,0x5c,0x00,
    0x02,0x00,0x5d,0x00,0x02,0x00,0x5e,0x00,0x02,0x00,0x5f,0x00,0x02,0x00,0x5f,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x60,0x00,0x61,0x00,0x16,0x00,0x03,0x00,0x62,0x00,
    0x63,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x36,0x00,0x02,0x00,0x64,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x65,0x00,0x66,0x00,0x2a,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x67,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x68,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x69,0x00,0x6a,0x00,0x6b,0x00,
    0x03,0x00,0x03,0x00,0x02,0x00,0x07,0x00,0x6c,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x6d,0x00,0x02,0x00,0x02,0x00,0x6e,0x00,0x6f,0x00,0x03,0x00,0x0e,0x00,0x70,0x00,
    0x71,0x00,0x02,0x00,0x72,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x73,0x00,0x3b,0x00,
    0x02,0x00,0x02,0x00,0x74,0x00,0x75,0x00,0x03,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x76,0x00,0x77,0x00,0x78,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
    0x79,0x00,0x02,0x00,0x7a,0x00,0x7b,0x00,0x7c,0x00,0x02,0x00,0x01,0x00,0x7d,0x00,
    0x7e,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x07,0x00,0x0f,0x00,
    0x02,0x00,0x02,0x00,0x7f,0x00,0x7c,0x00,0x02,0x00,0x80,0x00,0x81,0x00,0x81,0x00,
    0x82,0x00,0x83,0x00,0x84,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x85,0x00,0x86,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x86,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x87,0x00,0x02,0x00,0x88,0x00,0x89,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x8a,0x00,0x8b,0x00,
    0x8c,0x00,0x8d,0x00,0x02,0x00,0x02,0x00,0x7f,0x00,0x02,0x00,0x8e,0x00,0x8f,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x85,0x00,0x90,0x00,0x91,0x00,0x02,0x00,0x02,0x00,0x92,0x00,
    0x93,0x00,0x94,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x96,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x97,0x00,0x98,0x00,0x99,0x00,0x9a,0x00,0x9b,0x00,0x9c,0x00,0x9d,0x00,0x9e,0x00,
    0x9f,0x00,0xa0,0x00,0xa1,0x00,0xa2,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xa3,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xa4,0x00,0xa5,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa6,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0xa8,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x07,0x00,
    0xa9,0x00,0x02,0x00,0xaa,0x00,0xab,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xac,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xad,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0xae,0x00,0x02,0x00,0xaf,0x00,0xb0,0x00,0x02,0x00,0x02,0x00,
    0xae,0x00,0xb1,0x00,0x02,0x00,0xb2,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0xb3,0x00,
    0x02,0x00,0xb4,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xb5,0x00,0xb6,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xb7,0x00,0x02,0x00,0xb8,0x00,0xb9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xba,0x00,0x02,0x00,0x02,0x00,0xbb,0x00,0xbc,0x00,0x03,0x00,0x07,0x00,0xbd,0x00,
    0x03,0x00,0x02,0x00,0xbe,0x00,0x02,0x00,0xbf,0x00,0x3b,0x00,0x55,0x00,0xc0,0x00,
    0x1d,0x00,0x02,0x00,0x02,0x00,0xc1,0x00,0xc2,0x00,0x03,0x00,0xc3,0x00,0x03,0x00,
    0x02,0x00,0x02,0x00,0xc4,0x00,0xc5,0x00,0xc6,0x00,0x03,0x00,0x02,0x00,0xc7,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xc8,0x00,0x13,0x00,0x02,0x00,0xc9,0x00,0xca,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xcb,0x00,0x03,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd1,0x00,0x56,0x00,0xd2,0x00,0x58,0x00,0x58,0x00,0xd3,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xd4,0x00,0xd5,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xd6,0x00,0x02,0x00,0xd7,0x00,0x02,0x00,0xd8,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xd9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x00,0x02,0x00,0x07,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,
    0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xb4,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xda,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xdb,0x00,0xdc,0x00,0xdd,0x00,0xde,0x00,0xdf,0x00,0xe0,0x00,0xe1,0x00,0xe2,0x00,
    0xe3,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xe4,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xe5,0x00,0xe6,0x00,
    0x02,0x00,0x02,0x00,0xe7,0x00,0x02,0x00,0xe8,0x00,0x02,0x00,0x02,0x00,0xe9,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xea,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xeb,0x00,0x02,0x00,0xec,0x00,
    0x02,0x00,0x02,0x00,0xed,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xee,0x00,
    0x02,0x00,0xef,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xf0,0x00,0xf1,0x00,0xf2,0x00,0xf3,0x00,0xf4,0x00,
    0xf5,0x00,0x02,0x00,0x02,0x00,0xf6,0x00,0xf7,0x00,0x02,0x00,0x02,0x00,0xf8,0x00,
    0x02,0x00,0xf9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xfa,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xfb,0x00,0x02,0x00,0xfb,0x00,
    0x02,0x00,0x02,0x00,0xfc,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xfd,0x00,
    0x02,0x00,0x02,0x00,0xfe,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xff,0x00,0x00,0x01,
    0x02,0x00,0x02,0x00,0x01,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x4f,0x00,
    0x02,0x00,0x02,0x01,0x03,0x01,0x02,0x00,0x15,0x00,0x04,0x01,0x02,0x00,0x02,0x00,
    0x05,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x06,0x01,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x01,0x02,0x00,0x02,0x00,0x08,0x01,0x09,0x01,0x0a,0x01,0x0b,0x01,0x0c,0x01,
    0x71,0x00,0x02,0x00,0x02,0x00,0x0d,0x01,0x0e,0x01,0x02,0x00,0x02,0x00,0x03,0x00,
    0x0f,0x01,0x02,0x00,0x10,0x01,0x11,0x01,0x12,0x01,0x02,0x00,0x02,0x00,0x13,0x01,
    0x71,0x00,0x02,0x00,0x02,0x00,0x14,0x01,0x15,0x01,0x03,0x00,0x16,0x01,0x17,0x01,
    0x02,0x00,0x02,0x00,0x18,0x01,0x19,0x01,0x13,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0x1a,0x01,0x03,0x00,
    0x3b,0x00,0x02,0x00,0x02,0x00,0x3c,0x00,0x1b,0x01,0x25,0x00,0x1c,0x01,0x1d,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x1e,0x01,0x1f,0x01,0x20,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x21,0x01,0x22,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0xa7,0x00,0x23,0x01,0x0f,0x00,0x24,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x25,0x01,0x0f,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x26,0x01,0x27,0x01,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x4f,0x00,0x28,0x01,0x29,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x18,0x01,0x2a,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x2b,0x01,0x2c,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x2d,0x01,0x2e,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x2f,0x01,0x30,0x01,0x02,0x00,
    0x31,0x01,0x02,0x00,0x02,0x00,0x32,0x01,0x25,0x00,0x33,0x01,0x02,0x00,0x02,0x00,
    0x34,0x01,0x35,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x36,0x01,0x37,0x01,0x02,0x00,0x38,0x01,0x39,0x01,0x02,0x00,
    0x02,0x00,0x3a,0x01,0x3b,0x01,0x3c,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x3d,0x01,0x3e,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x3f,0x01,0x40,0x01,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x41,0x01,
    0x42,0x01,0x02,0x00,0x02,0x00,0x43,0x01,0x44,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x45,0x01,0x46,0x01,0x02,0x00,0x02,0x00,
    0x47,0x01,0x48,0x01,0x49,0x01,0x4a,0x01,0x4b,0x01,0x4c,0x01,0x4d,0x01,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x4e,0x01,0x4f,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x1d,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x09,0x01,0x02,0x00,0x50,0x01,0x51,0x01,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x52,0x01,0x53,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0x54,0x01,0x55,0x01,0x55,0x01,
    0x56,0x01,0x0f,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x57,0x01,0xba,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x58,0x01,0x59,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x00,0x07,0x00,0x5a,0x01,0x07,0x00,0x09,0x01,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x5b,0x01,0x5c,0x01,
    0x5d,0x01,0x02,0x00,0x5e,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x5f,0x01,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x52,0x01,0x60,0x01,0x52,0x01,0x60,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xf1,0x00,0x61,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x62,0x01,0x63,0x01,0x64,0x01,0x65,0x01,
    0x07,0x00,0x07,0x00,0x07,0x00,0x66,0x01,0x07,0x00,0x07,0x00,0x4d,0x00,0xc3,0x00,
    0x57,0x01,0x0e,0x00,0x09,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x67,0x01,0x68,0x01,0x69,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xa7,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x09,0x01,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0xd9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x6a,0x01,0x03,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x6a,0x01,0x03,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xdb,0x00,0x09,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x6b,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x16,0x01,
    0x6c,0x01,0x6d,0x01,0x6e,0x01,0x6f,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x16,0x01,0x6c,0x01,0x70,0x01,0x71,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x72,0x01,0x02,0x00,0x87,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x73,0x01,0x74,0x01,
    0x75,0x01,0x76,0x01,0x77,0x01,0x95,0x00,0x95,0x00,0x95,0x00,0x78,0x01,0x79,0x01,
    0x7a,0x01,0x7b,0x01,0x87,0x00,0x7c,0x01,0x88,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x7d,0x01,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x7e,0x01,0x7f,0x01,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x80,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x81,0x01,0x95,0x00,0x95,0x00,
    0x73,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x82,0x01,0x83,0x01,0x02,0x00,0x02,0x00,
    0x82,0x01,0x02,0x00,0x84,0x01,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x73,0x01,0x95,0x00,0x95,0x00,0x85,0x01,0x93,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x7e,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x86,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x01,0x00,0x01,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
    0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00
    ];
    privatestaticReadOnlySpan<byte>NumericGraphemeLevel3Index=>// 6256
    [
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x00,0x0e,0x03,
    0x03,0x03,0x0f,0x10,0x03,0x03,0x03,0x03,0x03,0x11,0x03,0x03,0x12,0x13,0x14,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,
    0x03,0x15,0x15,0x03,0x15,0x15,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x16,0x16,0x16,0x16,0x16,0x16,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x00,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x03,0x15,
    0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x16,
    0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x16,0x16,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x03,0x17,0x17,
    0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x17,0x17,0x15,0x17,0x17,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x03,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x15,0x17,
    0x17,0x15,0x15,0x15,0x15,0x03,0x03,0x17,0x17,0x03,0x03,0x17,0x17,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x18,0x19,0x1a,0x12,0x14,0x1b,0x03,0x03,0x03,0x03,0x15,0x03,
    0x03,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x17,0x17,
    0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x15,0x15,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x17,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x17,0x03,0x17,0x17,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x12,0x13,0x14,0x18,0x19,0x1a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,
    0x15,0x17,0x17,0x03,0x03,0x03,0x17,0x17,0x17,0x03,0x17,0x17,0x17,0x15,0x03,0x03,
    0x1c,0x1d,0x1e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x17,0x03,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1f,0x20,0x21,0x22,0x20,0x21,0x22,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x17,0x15,
    0x17,0x17,0x15,0x17,0x17,0x03,0x15,0x17,0x17,0x03,0x17,0x17,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x15,0x17,
    0x17,0x15,0x15,0x15,0x15,0x03,0x17,0x17,0x17,0x03,0x17,0x17,0x17,0x15,0x16,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x03,
    0x1c,0x1d,0x1e,0x12,0x13,0x14,0x18,0x19,0x1a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x15,
    0x17,0x17,0x15,0x15,0x15,0x03,0x15,0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,
    0x03,0x03,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x03,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x03,0x15,0x03,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x13,0x2a,0x2b,0x2c,0x2d,0x2e,
    0x2f,0x30,0x31,0x32,0x03,0x15,0x03,0x15,0x03,0x15,0x03,0x03,0x03,0x03,0x17,0x17,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,
    0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,
    0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x17,0x17,0x15,0x15,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x15,
    0x03,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x03,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x03,0x03,0x15,0x03,0x03,
    0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
    0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
    0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
    0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,
    0x3a,0x3b,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x1d,0x44,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x45,0x46,
    0x47,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x15,0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,
    0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x1f,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x00,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x17,0x17,0x17,0x17,0x15,0x15,0x17,0x17,0x17,0x03,0x03,0x03,0x03,
    0x17,0x17,0x15,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x11,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x17,0x17,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x17,0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x15,0x03,0x15,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x17,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x15,0x15,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x17,0x17,0x17,
    0x17,0x17,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x17,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x17,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x15,0x17,0x17,0x17,0x15,0x17,0x15,
    0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x15,0x4e,0x00,0x00,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,
    0x4f,0x03,0x03,0x03,0x36,0x37,0x38,0x39,0x3a,0x3b,0x03,0x03,0x03,0x03,0x03,0x03,
    0x4f,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x50,0x51,0x27,0x52,0x53,0x29,0x54,0x55,0x56,0x57,0x58,0x19,0x59,0x5a,0x5b,0x20,
    0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x5c,0x5d,0x3f,0x1d,0x5e,0x1e,
    0x1e,0x5f,0x44,0x03,0x03,0x4a,0x3f,0x60,0x61,0x1f,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x5c,0x5d,0x62,0x63,0x64,0x1b,
    0x45,0x46,0x47,0x3c,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x5c,0x5d,
    0x62,0x63,0x64,0x1b,0x45,0x46,0x47,0x3c,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,
    0x3b,0x1c,0x5c,0x5d,0x62,0x63,0x64,0x1b,0x45,0x46,0x47,0x3c,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x4f,0x5c,0x5d,0x62,0x63,0x64,
    0x1b,0x45,0x46,0x47,0x3c,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x4f,
    0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x03,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x03,0x0e,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,
    0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x0e,0x03,0x0e,0x03,
    0x03,0x03,0x03,0x0e,0x0e,0x0e,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,
    0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x11,0x0f,0x10,0x36,0x37,0x38,
    0x39,0x3a,0x3b,0x1c,0x03,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,
    0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,
    0x0e,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x13,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x15,0x15,0x15,0x15,0x15,0x15,
    0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1c,0x3c,0x3d,0x03,0x03,0x0e,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x20,0x21,0x22,0x48,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,
    0x03,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x3d,0x6e,0x6f,0x70,0x71,0x72,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x73,0x74,0x75,0x76,0x3e,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,0x3f,
    0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1f,
    0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x17,0x17,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,
    0x12,0x13,0x14,0x18,0x19,0x1a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
    0x17,0x17,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x17,0x17,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x17,0x17,
    0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,
    0x17,0x15,0x15,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,
    0x15,0x03,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x15,0x15,0x17,0x17,
    0x03,0x03,0x03,0x03,0x03,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x17,0x17,0x15,0x17,0x17,0x15,0x17,0x17,0x03,0x17,0x15,0x03,0x03,
    0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x03,0x03,0x03,0x03,0x35,0x35,0x35,0x35,0x35,
    0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x22,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x1c,0x03,0x03,0x03,0x03,0x21,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x1f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x4a,0x03,0x4a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1c,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,
    0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,
    0x87,0x88,0x1e,0x89,0x8a,0x8b,0x5f,0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,
    0x93,0x94,0x95,0x96,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x12,0x13,0x20,0x49,0x3f,0x5e,0x5f,0x60,0x49,0x1c,0x3f,0x1d,0x5e,0x1e,0x5f,0x49,
    0x1c,0x3f,0x1d,0x5e,0x1e,0x44,0x60,0x1c,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x49,
    0x1c,0x1c,0x1c,0x1c,0x1c,0x3d,0x3f,0x3f,0x3f,0x3f,0x1d,0x83,0x5e,0x5e,0x5e,0x5e,
    0x5e,0x1e,0x5f,0x49,0x3f,0x13,0x13,0x53,0x14,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1f,0x12,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x15,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,
    0x41,0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x03,0x03,0x03,0x03,
    0x20,0x49,0x1c,0x3f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x43,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x88,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x20,0x21,0x1c,0x3c,0x1d,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x1c,0x3c,0x1d,0x1e,0x44,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x49,0x1c,0x3c,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x48,0x49,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x49,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x1c,0x3c,0x1d,0x21,0x22,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x97,0x13,0x03,0x03,
    0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
    0x03,0x03,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x1e,0x89,0x8a,0x8b,0x5f,
    0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,0x93,0x94,0x95,0x96,0x61,0x98,0x99,
    0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,0xa0,0x57,0x12,0x52,0xa1,0x13,0xa2,0x53,0x14,0x58,
    0x03,0x15,0x15,0x15,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x15,
    0x11,0x0f,0x10,0x36,0x1c,0x3c,0x1d,0x1e,0x13,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x3f,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x1c,0x3c,
    0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x20,0x49,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x1c,0x3c,0x1d,0x1e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x49,0x1c,0x3f,0x1d,0x1e,
    0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
    0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x13,0x12,0x52,0x53,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,
    0x48,0x49,0x1c,0x3c,0x3d,0x1d,0x13,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x20,0x1c,0x3c,0x1d,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x1c,0x3c,0x1d,0x03,0x03,0x03,0x03,
    0x17,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x3c,0x3d,0x3e,0x3f,
    0x40,0x41,0x42,0x43,0x1d,0x1e,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x15,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x03,0x03,0x16,0x03,0x03,
    0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x16,0x03,0x03,
    0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,
    0x17,0x03,0x16,0x16,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x17,0x15,
    0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,
    0x41,0x42,0x43,0x1d,0x1e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x15,
    0x15,0x15,0x17,0x17,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x17,0x03,0x03,0x17,0x17,0x03,0x03,0x17,0x17,0x17,0x03,0x03,
    0x03,0x03,0x17,0x17,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x17,0x17,0x15,0x15,0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x03,0x03,0x03,0x15,0x03,
    0x15,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x17,0x17,0x15,0x17,0x15,
    0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x17,0x17,0x15,0x15,0x15,0x15,0x03,0x03,0x17,0x17,0x17,0x17,0x15,0x15,0x17,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x17,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x17,0x17,
    0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x1c,0x3c,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,
    0x41,0x42,0x43,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x17,0x17,0x03,0x17,0x17,0x03,0x03,0x15,0x15,0x17,0x15,0x16,
    0x17,0x16,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x17,0x17,0x17,0x17,
    0x15,0x03,0x03,0x03,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x16,0x15,0x15,0x15,0x15,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x20,0x21,0x22,0x48,0x49,0x4a,
    0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x1d,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x17,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x17,0x15,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x15,0x03,0x15,0x15,0x03,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x17,0x17,0x03,
    0x15,0x15,0x03,0x17,0x17,0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x16,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x17,0x17,
    0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0xa3,0x23,0xa4,0xa5,0x24,0xa6,0x25,0xa7,0x26,0x18,0x18,0x27,0x19,0x28,0x1a,0x29,
    0x12,0x13,0x13,0x14,0xa3,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x48,
    0x49,0x4a,0x4b,0x4c,0x4d,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x20,0x21,
    0x22,0x48,0x49,0x21,0x22,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x20,0x21,0x22,0x22,
    0x48,0x49,0xa8,0xa9,0x20,0x21,0x22,0x22,0x48,0x49,0x22,0x22,0x48,0x48,0x48,0x48,
    0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x21,0x22,0x48,0x49,0x4a,0x20,
    0x21,0x22,0x48,0x48,0x49,0x49,0x21,0x22,0x20,0x21,0x52,0x53,0x58,0x52,0x53,0x19,
    0x12,0x57,0x12,0x12,0x13,0x52,0x53,0x3e,0x3f,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x03,
    0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x1c,0x1d,0x44,0xaa,0xab,
    0xac,0xad,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x1f,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x5c,0x5d,0x62,0x63,0x64,
    0x1b,0x45,0x46,0x47,0x20,0x21,0x22,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,
    0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x15,0x15,0x03,0x03,0x03,0x17,0x15,0x15,
    0x15,0x15,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x1b,0x45,0x46,0x47,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x42,0x43,0x20,0x21,0x22,0x48,0x49,0x20,0x49,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x05,
    0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
    0x0c,0x0d,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x04,0x05,0x06,0x07,
    0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x03,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x41,0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x1e,0x89,0x8a,0x8b,
    0x5f,0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,0x93,0x94,0x95,0x96,0x61,0x98,
    0x61,0xae,0xaf,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x03,0x12,0x13,0x14,
    0x03,0x20,0x21,0x44,0x61,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x5f,0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,0x93,0x94,0x95,0x96,0x03,0x21,
    0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x84,0x85,0x89,0x44,0x13,0x57,0x03,0x03,
    0x4f,0x4f,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1f,0x1f,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,
    0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
    0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
    0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,
    0x4d,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
    ];
    By this approach, we would reduce the increased raw size by this PR. However, reading large amounts of data on the TypeScript side might be too time-consuming, and we would still have to implement grapheme segmentation instead of using C# implementation.

Contributes to: #94473

Note: I don't have much experience with TypeScript, so feel free to change any parts that don't obey style conventions.

Author:matouskozak
Assignees:-
Labels:

area-System.Globalization

Milestone:-

@matouskozakmatouskozak added the arch-wasm WebAssembly architecture label Dec 4, 2023
@ghost

ghost commented Dec 4, 2023

Copy link
Copy Markdown

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

Description

In this PR, we improve the time performance of IndexOf and LastIndexOf text APIs when running in HybridGlobalization (HG) mode.

This is done by picking up necessary parts from the previously used Intl.Segmenter class. By picking up only essential parts for grapheme segmentation, we could reduce the overhead and improve performance from ~2362ms down to ~38ms (measured using browser-bench)

This improvement introduces a regression in raw size of ~21kB due to grapheme segmentation rules presented in src/mono/wasm/runtime/hybrid-globalization/segmentation-rules.ts.

Ideas

By introducing our grapheme segmentation on the TypeScript side, we are duplicating code already present in .NET under the name TextSegmentationUtility.GetLengthOfFirstUtf16ExtendedGraphemeCluster. I have several propositions for how we could leverage this:

  1. The core part of the IndexOf algorithm could be done on the C# side, and we would interop only for string comparison (JsCompareString). By core part, I mean grapheme segmentation of source and target strings and iteration over strings to find a match. With this approach, we wouldn't introduce any additional rule files and use the already present and tested grapheme segmentation algorithm. However, doing interop for every string comparison introduces additional overhead, which would slow the APIs. I tried a basic version of this approach locally and measured ~200ms for IndexOf and LastIndexOf APIs (slower than this PR, but still significantly faster than using Intl.Segmenter). We could choose this approach if we consider the size increase by this PR undesirable.
  2. We could perform grapheme segmentation on the C# side before interop call and iteration over strings to find a match, and string comparison would be done on the TypeScript side. We would still use TextSegmentationUtility for grapheme segmentation, but we would have to segment the entire source/target string in advance. This could significantly hinder performance for cases when the target string can be found in the first parts of the source string. Additionally, we would have to pass an array of grapheme breaks to the interop call.
  3. Instead of using regex rules (src/mono/wasm/runtime/hybrid-globalization/segmentation-rules.ts), we could pass the necessary data from CharUnicodeInfoData.cs to the interop call and use them on TypeScript side. Information for grapheme segmentation is already present in .NET runtime:
    // 11:5:4 index table of the Unicode numeric & text segmentation data.
    privatestaticReadOnlySpan<byte>NumericGraphemeLevel1Index=>// 2176
    [
    0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0a,
    0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x0a,0x16,0x17,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x1b,0x1c,0x1d,
    0x1e,0x1f,0x20,0x21,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x23,0x24,0x0a,0x25,
    0x26,0x27,0x28,0x0a,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,
    0x0a,0x0a,0x35,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x36,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x37,0x0a,0x38,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x39,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x3a,0x3b,0x3c,0x0a,0x3d,0x0a,0x3e,0x0a,0x0a,
    0x3f,0x40,0x41,0x0a,0x42,0x0a,0x43,0x0a,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x4c,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
    0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
    ];
    privatestaticReadOnlySpan<byte>NumericGraphemeLevel2Index=>// 5056
    [
    0x00,0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,
    0x01,0x00,0x01,0x00,0x05,0x00,0x06,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x08,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x09,0x00,0x07,0x00,0x0a,0x00,0x0b,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x0c,0x00,0x0d,0x00,0x02,0x00,0x02,0x00,0x0e,0x00,0x07,0x00,0x03,0x00,0x0f,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x10,0x00,0x11,0x00,0x03,0x00,
    0x12,0x00,0x13,0x00,0x02,0x00,0x07,0x00,0x14,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x15,0x00,0x0f,0x00,0x03,0x00,0x02,0x00,0x0e,0x00,0x16,0x00,
    0x02,0x00,0x17,0x00,0x18,0x00,0x02,0x00,0x02,0x00,0x19,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x1a,0x00,0x02,0x00,0x02,0x00,0x1b,0x00,0x07,0x00,0x1c,0x00,0x07,0x00,
    0x1d,0x00,0x02,0x00,0x02,0x00,0x1e,0x00,0x1f,0x00,0x20,0x00,0x21,0x00,0x02,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x23,0x00,0x24,0x00,0x25,0x00,0x21,0x00,0x26,0x00,
    0x27,0x00,0x02,0x00,0x02,0x00,0x28,0x00,0x29,0x00,0x13,0x00,0x2a,0x00,0x2b,0x00,
    0x27,0x00,0x02,0x00,0x02,0x00,0x28,0x00,0x2c,0x00,0x02,0x00,0x21,0x00,0x1b,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x2d,0x00,0x24,0x00,0x2e,0x00,0x21,0x00,0x2f,0x00,
    0x30,0x00,0x02,0x00,0x02,0x00,0x31,0x00,0x32,0x00,0x25,0x00,0x2a,0x00,0x33,0x00,
    0x34,0x00,0x02,0x00,0x02,0x00,0x2d,0x00,0x35,0x00,0x36,0x00,0x21,0x00,0x37,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x38,0x00,0x39,0x00,0x36,0x00,0x21,0x00,0x3a,0x00,
    0x3b,0x00,0x02,0x00,0x02,0x00,0x3c,0x00,0x3d,0x00,0x3e,0x00,0x21,0x00,0x3f,0x00,
    0x22,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x40,0x00,0x41,0x00,0x2a,0x00,0x42,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x43,0x00,0x44,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x45,0x00,0x46,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x47,0x00,0x48,0x00,0x49,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x4a,0x00,
    0x4b,0x00,0x4c,0x00,0x07,0x00,0x4d,0x00,0x4e,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x4f,0x00,0x50,0x00,0x03,0x00,0x51,0x00,0x0f,0x00,0x52,0x00,
    0x53,0x00,0x54,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x55,0x00,0x55,0x00,0x55,0x00,0x55,0x00,0x55,0x00,0x55,0x00,0x56,0x00,0x56,0x00,
    0x56,0x00,0x56,0x00,0x57,0x00,0x58,0x00,0x58,0x00,0x58,0x00,0x58,0x00,0x58,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x4f,0x00,0x59,0x00,0x5a,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x5b,0x00,0x5c,0x00,
    0x02,0x00,0x5d,0x00,0x02,0x00,0x5e,0x00,0x02,0x00,0x5f,0x00,0x02,0x00,0x5f,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x60,0x00,0x61,0x00,0x16,0x00,0x03,0x00,0x62,0x00,
    0x63,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x36,0x00,0x02,0x00,0x64,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x65,0x00,0x66,0x00,0x2a,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x67,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x68,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x69,0x00,0x6a,0x00,0x6b,0x00,
    0x03,0x00,0x03,0x00,0x02,0x00,0x07,0x00,0x6c,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x6d,0x00,0x02,0x00,0x02,0x00,0x6e,0x00,0x6f,0x00,0x03,0x00,0x0e,0x00,0x70,0x00,
    0x71,0x00,0x02,0x00,0x72,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x73,0x00,0x3b,0x00,
    0x02,0x00,0x02,0x00,0x74,0x00,0x75,0x00,0x03,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x76,0x00,0x77,0x00,0x78,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
    0x79,0x00,0x02,0x00,0x7a,0x00,0x7b,0x00,0x7c,0x00,0x02,0x00,0x01,0x00,0x7d,0x00,
    0x7e,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x07,0x00,0x0f,0x00,
    0x02,0x00,0x02,0x00,0x7f,0x00,0x7c,0x00,0x02,0x00,0x80,0x00,0x81,0x00,0x81,0x00,
    0x82,0x00,0x83,0x00,0x84,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x85,0x00,0x86,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x86,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x87,0x00,0x02,0x00,0x88,0x00,0x89,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x8a,0x00,0x8b,0x00,
    0x8c,0x00,0x8d,0x00,0x02,0x00,0x02,0x00,0x7f,0x00,0x02,0x00,0x8e,0x00,0x8f,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x85,0x00,0x90,0x00,0x91,0x00,0x02,0x00,0x02,0x00,0x92,0x00,
    0x93,0x00,0x94,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x96,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x97,0x00,0x98,0x00,0x99,0x00,0x9a,0x00,0x9b,0x00,0x9c,0x00,0x9d,0x00,0x9e,0x00,
    0x9f,0x00,0xa0,0x00,0xa1,0x00,0xa2,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xa3,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xa4,0x00,0xa5,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa6,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0xa8,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x07,0x00,
    0xa9,0x00,0x02,0x00,0xaa,0x00,0xab,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xac,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xad,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0xae,0x00,0x02,0x00,0xaf,0x00,0xb0,0x00,0x02,0x00,0x02,0x00,
    0xae,0x00,0xb1,0x00,0x02,0x00,0xb2,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0xb3,0x00,
    0x02,0x00,0xb4,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xb5,0x00,0xb6,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xb7,0x00,0x02,0x00,0xb8,0x00,0xb9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xba,0x00,0x02,0x00,0x02,0x00,0xbb,0x00,0xbc,0x00,0x03,0x00,0x07,0x00,0xbd,0x00,
    0x03,0x00,0x02,0x00,0xbe,0x00,0x02,0x00,0xbf,0x00,0x3b,0x00,0x55,0x00,0xc0,0x00,
    0x1d,0x00,0x02,0x00,0x02,0x00,0xc1,0x00,0xc2,0x00,0x03,0x00,0xc3,0x00,0x03,0x00,
    0x02,0x00,0x02,0x00,0xc4,0x00,0xc5,0x00,0xc6,0x00,0x03,0x00,0x02,0x00,0xc7,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xc8,0x00,0x13,0x00,0x02,0x00,0xc9,0x00,0xca,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xcb,0x00,0x03,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,
    0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,
    0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,
    0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,
    0xcc,0x00,0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,
    0xcd,0x00,0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,
    0xce,0x00,0xcf,0x00,0xce,0x00,0xd0,0x00,0xce,0x00,0xcc,0x00,0xcd,0x00,0xce,0x00,
    0xcf,0x00,0xce,0x00,0xd1,0x00,0x56,0x00,0xd2,0x00,0x58,0x00,0x58,0x00,0xd3,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xd4,0x00,0xd5,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xd6,0x00,0x02,0x00,0xd7,0x00,0x02,0x00,0xd8,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xd9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x00,0x02,0x00,0x07,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,
    0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0xb4,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xda,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xdb,0x00,0xdc,0x00,0xdd,0x00,0xde,0x00,0xdf,0x00,0xe0,0x00,0xe1,0x00,0xe2,0x00,
    0xe3,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xe4,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xe5,0x00,0xe6,0x00,
    0x02,0x00,0x02,0x00,0xe7,0x00,0x02,0x00,0xe8,0x00,0x02,0x00,0x02,0x00,0xe9,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xea,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xeb,0x00,0x02,0x00,0xec,0x00,
    0x02,0x00,0x02,0x00,0xed,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xee,0x00,
    0x02,0x00,0xef,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0xf0,0x00,0xf1,0x00,0xf2,0x00,0xf3,0x00,0xf4,0x00,
    0xf5,0x00,0x02,0x00,0x02,0x00,0xf6,0x00,0xf7,0x00,0x02,0x00,0x02,0x00,0xf8,0x00,
    0x02,0x00,0xf9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xfa,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xfb,0x00,0x02,0x00,0xfb,0x00,
    0x02,0x00,0x02,0x00,0xfc,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xfd,0x00,
    0x02,0x00,0x02,0x00,0xfe,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xff,0x00,0x00,0x01,
    0x02,0x00,0x02,0x00,0x01,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x4f,0x00,
    0x02,0x00,0x02,0x01,0x03,0x01,0x02,0x00,0x15,0x00,0x04,0x01,0x02,0x00,0x02,0x00,
    0x05,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x06,0x01,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x01,0x02,0x00,0x02,0x00,0x08,0x01,0x09,0x01,0x0a,0x01,0x0b,0x01,0x0c,0x01,
    0x71,0x00,0x02,0x00,0x02,0x00,0x0d,0x01,0x0e,0x01,0x02,0x00,0x02,0x00,0x03,0x00,
    0x0f,0x01,0x02,0x00,0x10,0x01,0x11,0x01,0x12,0x01,0x02,0x00,0x02,0x00,0x13,0x01,
    0x71,0x00,0x02,0x00,0x02,0x00,0x14,0x01,0x15,0x01,0x03,0x00,0x16,0x01,0x17,0x01,
    0x02,0x00,0x02,0x00,0x18,0x01,0x19,0x01,0x13,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0x1a,0x01,0x03,0x00,
    0x3b,0x00,0x02,0x00,0x02,0x00,0x3c,0x00,0x1b,0x01,0x25,0x00,0x1c,0x01,0x1d,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x1e,0x01,0x1f,0x01,0x20,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x21,0x01,0x22,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0xa7,0x00,0x23,0x01,0x0f,0x00,0x24,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x25,0x01,0x0f,0x00,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x26,0x01,0x27,0x01,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x4f,0x00,0x28,0x01,0x29,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x18,0x01,0x2a,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x2b,0x01,0x2c,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x2d,0x01,0x2e,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x2f,0x01,0x30,0x01,0x02,0x00,
    0x31,0x01,0x02,0x00,0x02,0x00,0x32,0x01,0x25,0x00,0x33,0x01,0x02,0x00,0x02,0x00,
    0x34,0x01,0x35,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x36,0x01,0x37,0x01,0x02,0x00,0x38,0x01,0x39,0x01,0x02,0x00,
    0x02,0x00,0x3a,0x01,0x3b,0x01,0x3c,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x3d,0x01,0x3e,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x3f,0x01,0x40,0x01,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x41,0x01,
    0x42,0x01,0x02,0x00,0x02,0x00,0x43,0x01,0x44,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x45,0x01,0x46,0x01,0x02,0x00,0x02,0x00,
    0x47,0x01,0x48,0x01,0x49,0x01,0x4a,0x01,0x4b,0x01,0x4c,0x01,0x4d,0x01,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x4e,0x01,0x4f,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x1d,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x09,0x01,0x02,0x00,0x50,0x01,0x51,0x01,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x52,0x01,0x53,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xa7,0x00,0x54,0x01,0x55,0x01,0x55,0x01,
    0x56,0x01,0x0f,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x57,0x01,0xba,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x58,0x01,0x59,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x07,0x00,0x07,0x00,0x5a,0x01,0x07,0x00,0x09,0x01,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x5b,0x01,0x5c,0x01,
    0x5d,0x01,0x02,0x00,0x5e,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x5f,0x01,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x52,0x01,0x60,0x01,0x52,0x01,0x60,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xf1,0x00,0x61,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x62,0x01,0x63,0x01,0x64,0x01,0x65,0x01,
    0x07,0x00,0x07,0x00,0x07,0x00,0x66,0x01,0x07,0x00,0x07,0x00,0x4d,0x00,0xc3,0x00,
    0x57,0x01,0x0e,0x00,0x09,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x67,0x01,0x68,0x01,0x69,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0xa7,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x09,0x01,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0xd9,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x6a,0x01,0x03,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x6a,0x01,0x03,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xdb,0x00,0x09,0x01,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x6b,0x01,0x03,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x16,0x01,
    0x6c,0x01,0x6d,0x01,0x6e,0x01,0x6f,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x16,0x01,0x6c,0x01,0x70,0x01,0x71,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x72,0x01,0x02,0x00,0x87,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x73,0x01,0x74,0x01,
    0x75,0x01,0x76,0x01,0x77,0x01,0x95,0x00,0x95,0x00,0x95,0x00,0x78,0x01,0x79,0x01,
    0x7a,0x01,0x7b,0x01,0x87,0x00,0x7c,0x01,0x88,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x7d,0x01,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x7e,0x01,0x7f,0x01,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x80,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x81,0x01,0x95,0x00,0x95,0x00,
    0x73,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x82,0x01,0x83,0x01,0x02,0x00,0x02,0x00,
    0x82,0x01,0x02,0x00,0x84,0x01,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x73,0x01,0x95,0x00,0x95,0x00,0x85,0x01,0x93,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,
    0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x95,0x00,0x7e,0x01,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x86,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,
    0x01,0x00,0x01,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,
    0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
    0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00
    ];
    privatestaticReadOnlySpan<byte>NumericGraphemeLevel3Index=>// 6256
    [
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x00,0x0e,0x03,
    0x03,0x03,0x0f,0x10,0x03,0x03,0x03,0x03,0x03,0x11,0x03,0x03,0x12,0x13,0x14,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,
    0x03,0x15,0x15,0x03,0x15,0x15,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x16,0x16,0x16,0x16,0x16,0x16,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x00,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x03,0x15,
    0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x16,
    0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x16,0x16,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x03,0x17,0x17,
    0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x17,0x17,0x15,0x17,0x17,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x03,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x15,0x17,
    0x17,0x15,0x15,0x15,0x15,0x03,0x03,0x17,0x17,0x03,0x03,0x17,0x17,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x18,0x19,0x1a,0x12,0x14,0x1b,0x03,0x03,0x03,0x03,0x15,0x03,
    0x03,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x17,0x17,
    0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x15,0x15,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x17,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x17,0x03,0x17,0x17,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x12,0x13,0x14,0x18,0x19,0x1a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,
    0x15,0x17,0x17,0x03,0x03,0x03,0x17,0x17,0x17,0x03,0x17,0x17,0x17,0x15,0x03,0x03,
    0x1c,0x1d,0x1e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x17,0x03,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1f,0x20,0x21,0x22,0x20,0x21,0x22,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x17,0x15,
    0x17,0x17,0x15,0x17,0x17,0x03,0x15,0x17,0x17,0x03,0x17,0x17,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x15,0x17,
    0x17,0x15,0x15,0x15,0x15,0x03,0x17,0x17,0x17,0x03,0x17,0x17,0x17,0x15,0x16,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x03,
    0x1c,0x1d,0x1e,0x12,0x13,0x14,0x18,0x19,0x1a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x15,
    0x17,0x17,0x15,0x15,0x15,0x03,0x15,0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,
    0x03,0x03,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x03,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x03,0x15,0x03,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x13,0x2a,0x2b,0x2c,0x2d,0x2e,
    0x2f,0x30,0x31,0x32,0x03,0x15,0x03,0x15,0x03,0x15,0x03,0x03,0x03,0x03,0x17,0x17,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,
    0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,
    0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x17,0x17,0x15,0x15,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x15,
    0x03,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x03,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x03,0x03,0x15,0x03,0x03,
    0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
    0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
    0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
    0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,
    0x3a,0x3b,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x1d,0x44,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x45,0x46,
    0x47,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x15,0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,
    0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x1f,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x00,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x17,0x17,0x17,0x17,0x15,0x15,0x17,0x17,0x17,0x03,0x03,0x03,0x03,
    0x17,0x17,0x15,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x11,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x17,0x17,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x17,0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x15,0x03,0x15,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x17,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,
    0x15,0x15,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x17,0x17,0x17,
    0x17,0x17,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x17,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x17,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x15,0x17,0x17,0x17,0x15,0x17,0x15,
    0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x15,0x4e,0x00,0x00,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,
    0x4f,0x03,0x03,0x03,0x36,0x37,0x38,0x39,0x3a,0x3b,0x03,0x03,0x03,0x03,0x03,0x03,
    0x4f,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x50,0x51,0x27,0x52,0x53,0x29,0x54,0x55,0x56,0x57,0x58,0x19,0x59,0x5a,0x5b,0x20,
    0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x5c,0x5d,0x3f,0x1d,0x5e,0x1e,
    0x1e,0x5f,0x44,0x03,0x03,0x4a,0x3f,0x60,0x61,0x1f,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x5c,0x5d,0x62,0x63,0x64,0x1b,
    0x45,0x46,0x47,0x3c,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x5c,0x5d,
    0x62,0x63,0x64,0x1b,0x45,0x46,0x47,0x3c,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,
    0x3b,0x1c,0x5c,0x5d,0x62,0x63,0x64,0x1b,0x45,0x46,0x47,0x3c,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x4f,0x5c,0x5d,0x62,0x63,0x64,
    0x1b,0x45,0x46,0x47,0x3c,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x4f,
    0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x03,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x03,0x0e,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,
    0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x0e,0x03,0x0e,0x03,
    0x03,0x03,0x03,0x0e,0x0e,0x0e,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,
    0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x11,0x0f,0x10,0x36,0x37,0x38,
    0x39,0x3a,0x3b,0x1c,0x03,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,
    0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x03,0x03,0x03,
    0x0e,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x13,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x15,0x15,0x15,0x15,0x15,0x15,
    0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1c,0x3c,0x3d,0x03,0x03,0x0e,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x20,0x21,0x22,0x48,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,
    0x03,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x3d,0x6e,0x6f,0x70,0x71,0x72,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x73,0x74,0x75,0x76,0x3e,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,0x3f,
    0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1f,
    0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x17,0x17,0x15,0x15,0x17,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,
    0x12,0x13,0x14,0x18,0x19,0x1a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
    0x17,0x17,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x17,0x17,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x17,0x17,
    0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,
    0x17,0x15,0x15,0x17,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,
    0x15,0x03,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x15,0x15,0x17,0x17,
    0x03,0x03,0x03,0x03,0x03,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x17,0x17,0x15,0x17,0x17,0x15,0x17,0x17,0x03,0x17,0x15,0x03,0x03,
    0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
    0x81,0x81,0x81,0x81,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x03,0x03,0x03,0x03,0x35,0x35,0x35,0x35,0x35,
    0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x22,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x1c,0x03,0x03,0x03,0x03,0x21,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x1f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x4a,0x03,0x4a,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1c,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,
    0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,
    0x87,0x88,0x1e,0x89,0x8a,0x8b,0x5f,0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,
    0x93,0x94,0x95,0x96,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x12,0x13,0x20,0x49,0x3f,0x5e,0x5f,0x60,0x49,0x1c,0x3f,0x1d,0x5e,0x1e,0x5f,0x49,
    0x1c,0x3f,0x1d,0x5e,0x1e,0x44,0x60,0x1c,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x49,
    0x1c,0x1c,0x1c,0x1c,0x1c,0x3d,0x3f,0x3f,0x3f,0x3f,0x1d,0x83,0x5e,0x5e,0x5e,0x5e,
    0x5e,0x1e,0x5f,0x49,0x3f,0x13,0x13,0x53,0x14,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x1f,0x12,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,0x03,
    0x15,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,
    0x41,0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x03,0x03,0x03,0x03,
    0x20,0x49,0x1c,0x3f,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x43,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x88,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x20,0x21,0x1c,0x3c,0x1d,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x1c,0x3c,0x1d,0x1e,0x44,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x49,0x1c,0x3c,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x48,0x49,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x49,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x1c,0x3c,0x1d,0x21,0x22,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x97,0x13,0x03,0x03,
    0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
    0x03,0x03,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x1e,0x89,0x8a,0x8b,0x5f,
    0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,0x93,0x94,0x95,0x96,0x61,0x98,0x99,
    0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,0xa0,0x57,0x12,0x52,0xa1,0x13,0xa2,0x53,0x14,0x58,
    0x03,0x15,0x15,0x15,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x15,
    0x11,0x0f,0x10,0x36,0x1c,0x3c,0x1d,0x1e,0x13,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x3f,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x1c,0x3c,
    0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x20,0x49,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x1c,0x3c,0x1d,0x1e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x1c,0x3c,0x1d,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x49,0x1c,0x3f,0x1d,0x1e,
    0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
    0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x13,0x12,0x52,0x53,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,
    0x48,0x49,0x1c,0x3c,0x3d,0x1d,0x13,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x20,0x1c,0x3c,0x1d,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x20,0x21,0x22,0x48,0x1c,0x3c,0x1d,0x03,0x03,0x03,0x03,
    0x17,0x15,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1c,0x3c,0x3d,0x3e,0x3f,
    0x40,0x41,0x42,0x43,0x1d,0x1e,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x15,0x03,0x03,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x03,0x03,0x16,0x03,0x03,
    0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x16,0x03,0x03,
    0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,
    0x17,0x03,0x16,0x16,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x17,0x15,
    0x03,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,
    0x41,0x42,0x43,0x1d,0x1e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x15,
    0x15,0x15,0x17,0x17,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x03,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x17,0x03,0x03,0x17,0x17,0x03,0x03,0x17,0x17,0x17,0x03,0x03,
    0x03,0x03,0x17,0x17,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x17,0x17,0x15,0x15,0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x03,0x03,0x03,0x15,0x03,
    0x15,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x17,0x17,0x15,0x17,0x15,
    0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x17,0x17,0x15,0x15,0x15,0x15,0x03,0x03,0x17,0x17,0x17,0x17,0x15,0x15,0x17,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,0x03,
    0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x17,0x15,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x17,0x17,
    0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x1c,0x3c,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,
    0x41,0x42,0x43,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x17,0x17,0x17,0x17,0x17,0x03,0x17,0x17,0x03,0x03,0x15,0x15,0x17,0x15,0x16,
    0x17,0x16,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x17,0x17,0x17,0x17,
    0x15,0x03,0x03,0x03,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x16,0x15,0x15,0x15,0x15,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x15,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x20,0x21,0x22,0x48,0x49,0x4a,
    0x4b,0x4c,0x4d,0x1c,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x1d,0x03,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x17,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x17,0x15,0x15,0x17,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x15,0x03,0x15,0x15,0x03,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x17,0x17,0x17,0x17,0x17,0x03,
    0x15,0x15,0x03,0x17,0x17,0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x15,0x15,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x16,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x17,0x17,
    0x15,0x17,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0xa3,0x23,0xa4,0xa5,0x24,0xa6,0x25,0xa7,0x26,0x18,0x18,0x27,0x19,0x28,0x1a,0x29,
    0x12,0x13,0x13,0x14,0xa3,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x48,
    0x49,0x4a,0x4b,0x4c,0x4d,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x20,0x21,
    0x22,0x48,0x49,0x21,0x22,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x20,0x21,0x22,0x22,
    0x48,0x49,0xa8,0xa9,0x20,0x21,0x22,0x22,0x48,0x49,0x22,0x22,0x48,0x48,0x48,0x48,
    0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x21,0x22,0x48,0x49,0x4a,0x20,
    0x21,0x22,0x48,0x48,0x49,0x49,0x21,0x22,0x20,0x21,0x52,0x53,0x58,0x52,0x53,0x19,
    0x12,0x57,0x12,0x12,0x13,0x52,0x53,0x3e,0x3f,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x03,
    0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x03,0x1c,0x1d,0x44,0xaa,0xab,
    0xac,0xad,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x1f,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x5c,0x5d,0x62,0x63,0x64,
    0x1b,0x45,0x46,0x47,0x20,0x21,0x22,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,
    0x03,0x03,0x03,0x03,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x03,
    0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x15,0x17,0x15,0x15,0x15,0x03,0x03,0x03,0x17,0x15,0x15,
    0x15,0x15,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x03,0x03,
    0x03,0x03,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x1b,0x45,0x46,0x47,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x42,0x43,0x20,0x21,0x22,0x48,0x49,0x20,0x49,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x04,0x05,
    0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
    0x0c,0x0d,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x04,0x05,0x06,0x07,
    0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x15,0x15,0x15,0x15,0x15,
    0x15,0x15,0x03,0x15,0x15,0x03,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,
    0x03,0x03,0x03,0x03,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x03,0x03,0x03,0x03,0x03,
    0x41,0x42,0x43,0x1d,0x82,0x83,0x84,0x5e,0x85,0x86,0x87,0x88,0x1e,0x89,0x8a,0x8b,
    0x5f,0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,0x93,0x94,0x95,0x96,0x61,0x98,
    0x61,0xae,0xaf,0x20,0x21,0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x03,0x12,0x13,0x14,
    0x03,0x20,0x21,0x44,0x61,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
    0x5f,0x8c,0x8d,0x8e,0x8f,0x44,0x90,0x91,0x92,0x60,0x93,0x94,0x95,0x96,0x03,0x21,
    0x22,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x1c,0x84,0x85,0x89,0x44,0x13,0x57,0x03,0x03,
    0x4f,0x4f,0x11,0x0f,0x10,0x36,0x37,0x38,0x39,0x3a,0x3b,0x1f,0x1f,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,
    0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
    0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
    0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x03,0x03,0x03,0x03,0x03,
    0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x15,0x15,0x15,0x15,0x15,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x03,
    0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
    0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x0e,0x0e,
    0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x03,0x0e,0x0e,0x0e,0x0e,
    0x4d,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03
    ];
    By this approach, we would reduce the increased raw size by this PR. However, reading large amounts of data on the TypeScript side might be too time-consuming, and we would still have to implement grapheme segmentation instead of using C# implementation.

Contributes to: #94473

Note: I don't have much experience with TypeScript, so feel free to change any parts that don't obey style conventions.

Author:matouskozak
Assignees:matouskozak
Labels:

arch-wasm, area-System.Globalization

Milestone:-

@pavelsavara

Copy link
Copy Markdown
Member

2 more ideas:

  1. Could we pass the C# data to JS just once and build new RegExp() and have it compiled on first use ?
  2. Could trim out the C# data and just keep JS data ?

@ilonatommy

ilonatommy commented Dec 4, 2023

Copy link
Copy Markdown
Member

This improvement introduces a regression in raw size of ~21kB due to grapheme segmentation rules presented in src/mono/wasm/runtime/hybrid-globalization/segmentation-rules.ts.

Update: 21kB before brotli compression. After compression, 5kB (that is ~1.5% of the original icudt.dat.br compressed size and ~4% of the icudt_hybrid.dat.br).

@matouskozak

Copy link
Copy Markdown
MemberAuthor

2 more ideas:

  1. Could we pass the C# data to JS just once and build new RegExp() and have it compiled on first use ?
  2. Could trim out the C# data and just keep JS data ?

That sounds good:
4. This sounds better than the proposed 3. idea in the PR description. Preprocessing data only once would make more sense than doing it on each call since the grapheme segmentation rules remain the same. At the moment, I'm not sure how well would the C# data map to the used regular expressions but we could explore this further.
5. I think it should be possible to eliminate it when HG enabled. However, this approach would require triggering interop calls for tasks that perform just grapheme segmentation (without string comparison). This could lead to slow down of some other APIs that are not HybridGlobalization related.

@matouskozak
matouskozak marked this pull request as ready for review December 5, 2023 09:14
Comment threadsrc/mono/wasm/runtime/hybrid-globalization/collations.ts Outdated
Comment threadsrc/mono/wasm/runtime/hybrid-globalization/grapheme-segmenter.ts Outdated
@matouskozak

Copy link
Copy Markdown
MemberAuthor

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

}

IEnumerable<string> actual = Directory.EnumerateFiles(assertOptions.BinFrameworkDir, "icudt*dat");
if (assertOptions.GlobalizationMode == GlobalizationMode.Hybrid)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just curious, why actual is not all files ? Like *.* ? @radical

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

because are only looking for the icu related files here, and we do throw if the number of expected!=actual .

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But now that we have a differently named file too, it would indeed make sense to enumerate all the files ignoring subdirectories, and AssertFilesOnDisk can skip the number of files check.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@radical@pavelsavara Should I make the change as part of this PR? If I understand @radical comment correctly, it would require removing the number of files check and replacing Assert.Equal(expected, actualFileNames) with Assert.Contains(expected, actualFileNames) in the AssertFilesOnDisk function.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Follow up PR would be fine.

@pavelsavara

Copy link
Copy Markdown
Member

/azp run runtime-wasm

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@pavelsavarapavelsavara left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, @ilonatommy please approve for graphemes

@ilonatommy

Copy link
Copy Markdown
Member

/azp run runtime-wasm-libtests

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@matouskozak

Copy link
Copy Markdown
MemberAuthor

Failures are unrelated and tracked. Merging.

@matouskozak
matouskozak merged commit a08d3fc into dotnet:mainJan 16, 2024
tmds pushed a commit to tmds/runtime that referenced this pull request Jan 23, 2024
…nd LastIndexOf text APIs with HybridGlobalization mode (dotnet#95583)
* Re-implement the grapheme segmenter from Intl.
* Load segmentation rules as static json asset
@pavelsavara

Copy link
Copy Markdown
Member

I realized that in order to make this MT friendly, we need to load the JSON on all web-workers, not just in the UI thread.

@matouskozak

Copy link
Copy Markdown
MemberAuthor

I realized that in order to make this MT friendly, we need to load the JSON on all web-workers, not just in the UI thread.

What changes would be necessary to accommodate this?

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 3, 2024
@matouskozak
matouskozak deleted the wasm-hg-indexOf branch October 3, 2024 13:14
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-wasmWebAssembly architecturearea-System.Globalization

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@matouskozak@pavelsavara@ilonatommy@radical@kg@maraf