Repository: microsoft/terminal (language: cpp)

Issue:
ZWSP (\U200B) is rendered as a space when in 'grapheme clusters' mode
> Testing with latest canary.
> 
> For ZWSP (\U200B) there appears to be no way to have it non-printing while using the 'Grapheme clusters' mode.
> You have to use wcswidth to fix the behaviour this issue describes and then forgo grapheme clusters.
> 
> If grapheme clusters is intended to be (as described) the 'modern' way - then this bug would still seem to be present.
> 
> It's unclear to me how
> 
> /dup https://github.com/microsoft/terminal/issues/1472
> /dup https://github.com/microsoft/terminal/issues/8000
> 
> address this specific issue.
>  

 _Originally posted by @juliannoble in [#11850](https://github.com/microsoft/terminal/issues/11850#issuecomment-2508816313)_


Discussion / hints:
Repro steps:

- Set WT's text measurement mode to `Grapheme clusters`.
- Restart WT if the mode has changed.
- Run the following in powershell:
  ```pwsh
  "test`u{200B}test"  
  ```
Output:
- Actual:
  ```
  test test
  ```
- Expected:
  ```
  testtest
  ```

<details> 
  <summary>Example of using ZWSP</summary>

https://en.wikipedia.org/wiki/Thai_script#Orthography

> Thai letters do not have [upper- and lower-case](https://en.wikipedia.org/wiki/Letter_case) forms like [Latin letters](https://en.wikipedia.org/wiki/Latin_script) do. Spaces between words [are not used](https://en.wikipedia.org/wiki/Scriptio_continua), except in certain linguistically motivated cases.

> ... Because of the absence of space, in computer typography, the line-break have to be inserted manually, otherwise a long sentence will not break into new lines. Some computer input methods have put [zero-width space](https://en.wikipedia.org/wiki/Zero-width_space) instead for word break, which would then break the long sentences into multiple lanes, ...

Thai text with tokenized words using ZWSP:
- powershell:
  ```pwsh
  "มวยไทย​เป็น​กีฬา​ประจำ​ชาติ​ไทย​ นัก​มวยไทย​มัก​จะ​เป็น​แช​ม​เปีย​นระ​ดับ​ไลท์เวท​ของ​สมาคม​มวย​โลก​เสมอ ​ปลาย​คริสต์​ศตวรรษ​ที่​ 19​ ประเทศไทย​รับ​เอา​กีฬา​จาก​ชาติ​ตะวัน​ตก​เข้า​มา​หลาย​ชนิด​ โดย​เริ่ม​มี​การ​แข่งขัน​ใน​โรงเรียน​ใน​ต้น​คริสต์​ศตวรรษ​ที่​ 20​ ตาม​มา​ด้วย​ใน​ระบบ​การ​ศึกษา​สมัย​ใหม่"
  ```

Expected WT output (`wcswidth` text measurement mode):
![Image](https://github.com/user-attachments/assets/8d49c073-f36d-43a9-9f95-342eac329052)

Actual WT output in `Grapheme clusters` mode:
![Image](https://github.com/user-attachments/assets/3f898fbb-f055-4136-bd2a-806cd119ac93)

</details>
Your example of Thai script makes me believe that we should indeed treat the ZWSP like any other extender. We can't treat it as a standalone zero-width cell, since those cannot exist in a terminal. And we can't leave it as-is, because it's clearly quite important for languages like Thai.
> we should indeed treat the ZWSP like any other extender.

FYI, I haven't encountered any inconsistencies yet while leaving ZWSP as part of the preceding grapheme cluster. It seems that DirectWrite rasterization is not affected by the presence of ZWSP at the end of the cluster, although there may be some edge cases that I'm not aware of.
> leaving ZWSP as part of the preceding grapheme cluster.

> we should indeed treat the ZWSP like any other extender.

You two are saying the same thing. :)

Fix patch:
diff --git a/src/tools/GraphemeTableGen/Program.cs b/src/tools/GraphemeTableGen/Program.cs
index 4bd2228af94..fe2af0b0ece 100644
--- a/src/tools/GraphemeTableGen/Program.cs
+++ b/src/tools/GraphemeTableGen/Program.cs
@@ -1,9 +1,14 @@
 using System.Text;
 using System.Runtime.InteropServices;
-using System.Numerics;
 using System.Xml.Linq;
+
 using TrieType = uint;
 
+// Used as an indicator in joinRules for ÷ ("does not join").
+// Underscore is one of the few characters that are permitted as an identifier,
+// are monospace in most fonts and also visually distinct from the digits.
+const byte _ = 3;
+
 // JoinRules doesn't quite follow UAX #29, as it states:
 // > Note: Testing two adjacent characters is insufficient for determining a boundary.
 //
@@ -25,6 +30,11 @@
 //     ZWJ × \p{Extended_Pictographic}
 //   In other words, it doesn't check whether the ZWJ is led by another \p{InCB=Extended_Pictographic}.
 //   Again, I suspect that a trailing, standalone ZWJ is a rare occurrence and joining it with any Emoji is fine.
+//   GB11 could be implemented properly quite easily for forward iteration by forbidding "ZWJ × \p{Extended_Pictographic}"
+//   in the base table and switching to a second joinRules table when encountering any valid "\p{Extended_Pictographic} ×".
+//   Only in that secondary table "ZWJ × \p{Extended_Pictographic}" would be permitted. This then properly implements
+//   "\p{Extended_Pictographic} × ZWJ × \p{Extended_Pictographic}". However, this makes backward iteration difficult,
+//   because knowing whether to transition to the secondary table requires looking ahead, which we want to avoid.
 // * GB12: sot (RI RI)* RI × RI
 //   GB13: [^RI] (RI RI)* RI × RI
 //   "Do not break within emoji flag sequences. That is, do not break between regional indicator
@@ -44,43 +54,43 @@
 [
     // Base table
     [
-        /* | leading       -> trailing codepoint                                                                                                                                                            */
-        /* v               |  cbOther | cbControl | cbExtend |   cbRI   | cbPrepend | cbHangulL | cbHangulV | cbHangulT | cbHangulLV | cbHangulLVT | cbInCBLinker | cbInCBConsonant | cbExtPic |   cbZWJ  | */
-        /* cbOther         | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbControl       | */ [3 /* | */, 3 /*  | */, 3 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 3 /*   |    */, 3 /*     | */, 3 /* | */, 3 /* | */],
-        /* cbExtend        | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbRI            | */ [3 /* | */, 3 /*  | */, 0 /* | */, 1 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbPrepend       | */ [0 /* | */, 3 /*  | */, 0 /* | */, 0 /* | */, 0 /*  | */, 0 /*  | */, 0 /*  | */, 0 /*  |  */, 0 /*  |  */, 0 /*   |   */, 0 /*   |    */, 0 /*     | */, 0 /* | */, 0 /* | */],
-        /* cbHangulL       | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 0 /*  | */, 0 /*  | */, 3 /*  |  */, 0 /*  |  */, 0 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbHangulV       | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 0 /*  | */, 0 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbHangulT       | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 0 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbHangulLV      | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 0 /*  | */, 0 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbHangulLVT     | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 0 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbInCBLinker    | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 0 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbInCBConsonant | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbExtPic        | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbZWJ           | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 0 /* | */, 0 /* | */],
+        /* | leading       -> trailing codepoint                                                                                                                                             */
+        /* v             |   Other  |  Control |  Extend  |    RI    |  Prepend |  HangulL |  HangulV |  HangulT | HangulLV | HangulLVT | InCBLinker | InCBConsonant |  ExtPic  |    ZWJ   | */
+        /* Other         | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* Control       | */ [_ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, _ /*  |   */, _ /*    | */, _ /* | */, _ /* | */],
+        /* Extend        | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* RI            | */ [_ /* | */, _ /* | */, 0 /* | */, 1 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* Prepend       | */ [0 /* | */, _ /* | */, 0 /* | */, 0 /* | */, 0 /* | */, 0 /* | */, 0 /* | */, 0 /* | */, 0 /* | */, 0 /*  |  */, 0 /*  |   */, 0 /*    | */, 0 /* | */, 0 /* | */],
+        /* HangulL       | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, 0 /* | */, 0 /* | */, _ /* | */, 0 /* | */, 0 /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* HangulV       | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, 0 /* | */, 0 /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* HangulT       | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* HangulLV      | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, 0 /* | */, 0 /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* HangulLVT     | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* InCBLinker    | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, 0 /*    | */, _ /* | */, 0 /* | */],
+        /* InCBConsonant | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* ExtPic        | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* ZWJ           | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, 0 /* | */, 0 /* | */],
     ],
     // Once we have encountered a Regional Indicator pair we'll enter this table.
-    // It's a copy of the base table, but further Regional Indicator joins are forbidden.
+    // It's a copy of the base table, but instead of RI × RI, we're RI ÷ RI.
     [
-        /* | leading       -> trailing codepoint                                                                                                                                                            */
-        /* v               |  cbOther | cbControl | cbExtend |   cbRI   | cbPrepend | cbHangulL | cbHangulV | cbHangulT | cbHangulLV | cbHangulLVT | cbInCBLinker | cbInCBConsonant | cbExtPic |   cbZWJ  | */
-        /* cbOther         | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbControl       | */ [3 /* | */, 3 /*  | */, 3 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 3 /*   |    */, 3 /*     | */, 3 /* | */, 3 /* | */],
-        /* cbExtend        | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbRI            | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbPrepend       | */ [0 /* | */, 3 /*  | */, 0 /* | */, 0 /* | */, 0 /*  | */, 0 /*  | */, 0 /*  | */, 0 /*  |  */, 0 /*  |  */, 0 /*   |   */, 0 /*   |    */, 0 /*     | */, 0 /* | */, 0 /* | */],
-        /* cbHangulL       | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 0 /*  | */, 0 /*  | */, 3 /*  |  */, 0 /*  |  */, 0 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbHangulV       | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 0 /*  | */, 0 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbHangulT       | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 0 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbHangulLV      | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 0 /*  | */, 0 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbHangulLVT     | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 0 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbInCBLinker    | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 0 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbInCBConsonant | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbExtPic        | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 3 /* | */, 0 /* | */],
-        /* cbZWJ           | */ [3 /* | */, 3 /*  | */, 0 /* | */, 3 /* | */, 3 /*  | */, 3 /*  | */, 3 /*  | */, 3 /*  |  */, 3 /*  |  */, 3 /*   |   */, 0 /*   |    */, 3 /*     | */, 0 /* | */, 0 /* | */],
-    ]
+        /* | leading       -> trailing codepoint                                                                                                                                             */
+        /* v             |   Other  |  Control |  Extend  |    RI    |  Prepend |  HangulL |  HangulV |  HangulT | HangulLV | HangulLVT | InCBLinker | InCBConsonant |  ExtPic  |    ZWJ   | */
+        /* Other         | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* Control       | */ [_ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, _ /*  |   */, _ /*    | */, _ /* | */, _ /* | */],
+        /* Extend        | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* RI            | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* Prepend       | */ [0 /* | */, _ /* | */, 0 /* | */, 0 /* | */, 0 /* | */, 0 /* | */, 0 /* | */, 0 /* | */, 0 /* | */, 0 /*  |  */, 0 /*  |   */, 0 /*    | */, 0 /* | */, 0 /* | */],
+        /* HangulL       | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, 0 /* | */, 0 /* | */, _ /* | */, 0 /* | */, 0 /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* HangulV       | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, 0 /* | */, 0 /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* HangulT       | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* HangulLV      | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, 0 /* | */, 0 /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* HangulLVT     | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* InCBLinker    | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, 0 /*    | */, _ /* | */, 0 /* | */],
+        /* InCBConsonant | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* ExtPic        | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, _ /* | */, 0 /* | */],
+        /* ZWJ           | */ [_ /* | */, _ /* | */, 0 /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /* | */, _ /*  |  */, 0 /*  |   */, _ /*    | */, 0 /* | */, 0 /* | */],
+    ],
 ];
 
 if (args.Length != 1)
@@ -197,6 +207,7 @@
 buf.Append("// clang-format on\n");
 
 Console.Write(buf);
+return;
 
 // This reads the given ucd.nounihan.grouped.xml file and extracts the
 // CharacterWidth and ClusterBreak properties for all codepoints.
@@ -256,7 +267,7 @@ static Ucd ExtractValuesFromUcd(string path)
                 "T" => ClusterBreak.HangulT, // Hangul Syllable Type T
                 "LV" => ClusterBreak.HangulLV, // Hangul Syllable Type LV
                 "LVT" => ClusterBreak.HangulLVT, // Hangul Syllable Type LVT
-                _ => throw new Exception($"Unrecognized GCB {graphemeClusterBreak} for {firstCp} to {lastCp}")
+                _ => throw new Exception($"Unrecognized GCB {graphemeClusterBreak} for U+{firstCp:X4} to U+{lastCp:X4}")
             };
 
             if (extendedPictographic == "Y")
@@ -267,7 +278,7 @@ static Ucd ExtractValuesFromUcd(string path)
                 if (cb != ClusterBreak.Other)
                 {
                     throw new Exception(
-                        $"Unexpected GCB {graphemeClusterBreak} with ExtPict=Y for {firstCp} to {lastCp}");
+                        $"Unexpected GCB {graphemeClusterBreak} with ExtPict=Y for U+{firstCp:X4} to U+{lastCp:X4}");
                 }
 
                 cb = ClusterBreak.ExtPic;
@@ -278,7 +289,7 @@ static Ucd ExtractValuesFromUcd(string path)
                 "None" or "Extend" => cb,
                 "Linker" => ClusterBreak.InCBLinker,
                 "Consonant" => ClusterBreak.InCBConsonant,
-                _ => throw new Exception($"Unrecognized InCB {indicConjunctBreak} for {firstCp} to {lastCp}")
+                _ => throw new Exception($"Unrecognized InCB {indicConjunctBreak} for U+{firstCp:X4} to U+{lastCp:X4}")
             };
 
             var width = eastAsian switch
@@ -286,24 +297,43 @@ static Ucd ExtractValuesFromUcd(string path)
                 "N" or "Na" or "H" => CharacterWidth.Narrow, // Half-width, Narrow, Neutral
                 "F" or "W" => CharacterWidth.Wide, // Wide, Full-width
                 "A" => CharacterWidth.Ambiguous, // Ambiguous
-                _ => throw new Exception($"Unrecognized ea {eastAsian} for {firstCp} to {lastCp}")
+                _ => throw new Exception($"Unrecognized ea {eastAsian} for U+{firstCp:X4} to U+{lastCp:X4}")
             };
 
             // There's no "ea" attribute for "zero width" so we need to do that ourselves. This matches:
             //   Me: Mark, enclosing
             //   Mn: Mark, non-spacing
             //   Cf: Control, format
-            if (generalCategory == "Me" || generalCategory == "Mn" || generalCategory == "Cf")
+            switch (generalCategory)
             {
-                width = CharacterWidth.ZeroWidth;
+                case "Cf" when cb == ClusterBreak.Control:
+                    // A significant portion of Cf characters are not just gc=Cf (= commonly considered zero-width),
+                    // but also GCB=CN (= does not join). This is a bit of a problem for terminals,
+                    // because they don't support zero-width graphemes, as zero-width columns can't exist.
+                    // So, we turn all of them into Extend, which is roughly how wcswidth() would treat them.
+                    cb = ClusterBreak.Extend;
+                    width = CharacterWidth.ZeroWidth;
+                    break;
+                case "Me" or "Mn" or "Cf":
+                    width = CharacterWidth.ZeroWidth;
+                    break;
             }
 
             Fill(firstCp, lastCp, TrieValue(cb, width));
         }
     }
 
-    // Box-drawing and block elements are ambiguous according to their EastAsian attribute,
-    // but by convention terminals always consider them to be narrow.
+    // U+00AD: Soft Hyphen
+    // A soft hyphen is a hint that a word break is allowed at that position.
+    // By default, the glyph is supposed to be invisible, and only if
+    // a word break occurs, the text renderer should display a hyphen.
+    // A terminal does not support computerized typesetting, but unlike the other
+    // gc=Cf cases we give it a Narrow width, because that matches wcswidth().
+    Fill(0x00AD, 0x00AD, TrieValue(ClusterBreak.Control, CharacterWidth.Narrow));
+
+    // U+2500 to U+257F: Box Drawing block
+    // U+2580 to U+259F: Block Elements block
+    // By default, CharacterWidth.Ambiguous, but by convention .Narrow in terminals.
     Fill(0x2500, 0x259F, TrieValue(ClusterBreak.Other, CharacterWidth.Narrow));
 
     return new Ucd
@@ -312,18 +342,18 @@ static Ucd ExtractValuesFromUcd(string path)
         Values = values.ToList(),
     };
 
+    // Packs the arguments into a single integer that's stored as-is in the final trie stage.
+    TrieType TrieValue(ClusterBreak cb, CharacterWidth width)
+    {
+        return (TrieType)cb | (TrieType)width << 6;
+    }
+
     void Fill(int first, int last, TrieType value)
     {
         Array.Fill(values, value, first, last - first + 1);
     }
 }
 
-// Packs the arguments into a single integer that's stored as-is in the final trie stage.
-static TrieType TrieValue(ClusterBreak cb, CharacterWidth width)
-{
-    return (TrieType)((byte)(cb) | (byte)(width) << 6);
-}
-
 // Because each item in the list of 2D rule tables only uses 2 bits and not all 8 in each byte,
 // this function packs them into chunks of 32-bit integers to save space.
 static uint[][] PrepareRulesTable(byte[][][] rules)
@@ -404,7 +434,7 @@ static Trie BuildTrie(List<TrieType> uncompressed, Span<int> shifts)
     var cumulativeShift = 0;
     var stages = new List<Stage>();
 
-    for (int i = 0; i < shifts.Length; i++)
+    for (var i = 0; i < shifts.Length; i++)
     {
         var shift = shifts[i];
         var chunkSize = 1 << shift;
@@ -426,18 +456,19 @@ static Trie BuildTrie(List<TrieType> uncompressed, Span<int> shifts)
                 var haystack = CollectionsMarshal.AsSpan(compressed);
                 var needle = key.AsSpan();
                 var existing = FindExisting(haystack, needle);
+
                 if (existing >= 0)
                 {
                     offset = (TrieType)existing;
-                    cache[key] = offset;
                 }
                 else
                 {
                     var overlap = MeasureOverlap(CollectionsMarshal.AsSpan(compressed), needle);
                     compressed.AddRange(needle[overlap..]);
                     offset = (TrieType)(compressed.Count - needle.Length);
-                    cache[key] = offset;
                 }
+
+                cache[key] = offset;
             }
 
             offsets.Add(offset);
@@ -507,7 +538,7 @@ static int MeasureOverlap(ReadOnlySpan<TrieType> prev, ReadOnlySpan<TrieType> ne
     return 0;
 }
 
-enum CharacterWidth
+internal enum CharacterWidth
 {
     ZeroWidth,
     Narrow,
@@ -515,7 +546,7 @@ enum CharacterWidth
     Ambiguous
 }
 
-enum ClusterBreak
+internal enum ClusterBreak
 {
     Other,         // GB999
     Control,       // GB3, GB4, GB5 -- includes CR, LF
@@ -533,13 +564,13 @@ enum ClusterBreak
     ZWJ,           // GB9, GB11
 }
 
-class Ucd
+internal class Ucd
 {
     public required string Description;
     public required List<TrieType> Values;
 }
 
-class Stage
+internal class Stage
 {
     public required List<TrieType> Values;
     public required int Index;
@@ -548,7 +579,7 @@ class Stage
     public required int Bits;
 }
 
-class Trie
+internal class Trie
 {
     public required List<Stage> Stages;
     public required int TotalSize;
@@ -556,7 +587,7 @@ class Trie
 
 // Because you can't put a Span<TrieType> into a Dictionary.
 // This works around that by simply keeping a reference to the List<TrieType> around.
-struct ReadOnlyTrieTypeSpan(List<TrieType> list, int start, int length)
+internal readonly struct ReadOnlyTrieTypeSpan(List<TrieType> list, int start, int length)
 {
     public ReadOnlySpan<TrieType> AsSpan() => CollectionsMarshal.AsSpan(list).Slice(start, length);
 
diff --git a/src/types/CodepointWidthDetector.cpp b/src/types/CodepointWidthDetector.cpp
index 8a1d5c30165..2fd856a62ed 100644
--- a/src/types/CodepointWidthDetector.cpp
+++ b/src/types/CodepointWidthDetector.cpp
@@ -43,43 +43,43 @@
 //   https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html
 
 // Generated by GraphemeTableGen
-// on 2024-08-29T16:50:58Z, from Unicode 15.1.0, 9109 bytes
+// on 2024-12-04T15:47:45Z, from Unicode 16.0.0, 9224 bytes
 // clang-format off
 static constexpr uint16_t s_stage0[] = {
-    0x0000, 0x0020, 0x0040, 0x0060, 0x0080, 0x009f, 0x00bf, 0x00ca, 0x00ca, 0x00d3, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca,
-    0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00eb, 0x010b, 0x011d, 0x0121, 0x011e, 0x011b, 0x0126, 0x0146, 0x0166, 0x0166, 0x0166, 0x0182,
-    0x01a2, 0x01ba, 0x01da, 0x01fa, 0x0146, 0x0146, 0x0218, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x022d, 0x00ca, 0x00ca,
-    0x024d, 0x026d, 0x0146, 0x0146, 0x0146, 0x0282, 0x02a2, 0x02b0, 0x0146, 0x02c3, 0x02e1, 0x02f9, 0x0319, 0x0336, 0x0356, 0x0376,
+    0x0000, 0x0020, 0x0040, 0x0060, 0x0080, 0x009f, 0x00bf, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca,
+    0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00d8, 0x00f8, 0x010a, 0x010e, 0x010b, 0x0108, 0x0113, 0x0133, 0x0153, 0x0153, 0x0153, 0x016f,
+    0x018f, 0x01a7, 0x01c7, 0x01e7, 0x0133, 0x0133, 0x0205, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0221, 0x0236, 0x00ca, 0x00ca,
+    0x0256, 0x0276, 0x0133, 0x0133, 0x0133, 0x028b, 0x02ab, 0x02b9, 0x0133, 0x02cc, 0x02ea, 0x0302, 0x0322, 0x033f, 0x035f, 0x037f,
     0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca,
-    0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x0396,
+    0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x039f,
     0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca,
-    0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x0396,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x03b6, 0x03be, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
-    0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166,
-    0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x03de,
-    0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166,
-    0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x03de,
+    0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x039f,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x03bf, 0x03c7, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+    0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153,
+    0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x03e7,
+    0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153,
+    0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x03e7,
 };
 static constexpr uint16_t s_stage1[] = {
     0x0000, 0x0004, 0x000c, 0x0014, 0x001c, 0x0024, 0x002a, 0x0031, 0x002a, 0x0037, 0x002a, 0x003f, 0x0047, 0x0049, 0x004f, 0x0057, 0x005f, 0x0065, 0x006d, 0x002a, 0x002a, 0x002a, 0x0073, 0x007b, 0x0083, 0x008a, 0x002a, 0x0091, 0x0098, 0x009f, 0x00a3, 0x00aa,
@@ -89,31 +89,32 @@ static constexpr uint16_t s_stage1[] = {
     0x024c, 0x0254, 0x025c, 0x0262, 0x026a, 0x0272, 0x027a, 0x0282, 0x028a, 0x0292, 0x029a, 0x002a, 0x02a2, 0x002a, 0x02a9, 0x02b0, 0x002a, 0x02b8, 0x02bc, 0x02c4, 0x002a, 0x002a, 0x02cc, 0x02d4, 0x02dc, 0x02e4, 0x02ec, 0x02f4, 0x02fc, 0x0304, 0x030c, 0x002a,
     0x002a, 0x002a, 0x002a, 0x0314, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x031c, 0x0322, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0326, 0x002a, 0x032d, 0x002a, 0x0043, 0x002a, 0x002a, 0x0335, 0x0339, 0x0341, 0x0341, 0x0341, 0x0347, 0x034d,
     0x0355, 0x035b, 0x0341, 0x0363, 0x0341, 0x036a, 0x036e, 0x0374, 0x037b, 0x0381, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341,
-    0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x002a, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0388, 0x0390, 0x002a,
-    0x002a, 0x002a, 0x002a, 0x002a, 0x0393, 0x039b, 0x017f, 0x002a, 0x002a, 0x002a, 0x002a, 0x03a3, 0x002a, 0x03ab, 0x03b3, 0x03bb, 0x03c3, 0x03cb, 0x03d3, 0x03d8, 0x03e0, 0x03e8, 0x03f0, 0x002a, 0x002a, 0x002a, 0x03f7, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403,
-    0x0404, 0x0405, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x03ff, 0x0400,
-    0x0401, 0x0402, 0x0403, 0x0404, 0x040c, 0x0414, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
-    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc,
-    0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x041c, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0424, 0x042a, 0x002a, 0x0430, 0x0355, 0x0438,
-    0x043d, 0x0441, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0449, 0x002a, 0x002a, 0x002a, 0x0451, 0x002a, 0x0456, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
-    0x002a, 0x002a, 0x045e, 0x002a, 0x002a, 0x01f1, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0466, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x046b, 0x019b, 0x002a, 0x00a7, 0x0473, 0x002a, 0x047b, 0x0483, 0x048b, 0x0493, 0x049b, 0x04a3,
-    0x04ab, 0x04b3, 0x04b6, 0x04be, 0x002a, 0x04c3, 0x04cb, 0x04d3, 0x002a, 0x002a, 0x04da, 0x04e2, 0x04e6, 0x04ee, 0x002a, 0x002a, 0x04f1, 0x04f9, 0x04fd, 0x0505, 0x0508, 0x002a, 0x050f, 0x002a, 0x002a, 0x002a, 0x0515, 0x002a, 0x002a, 0x002a, 0x051d, 0x0525,
-    0x002a, 0x052b, 0x0533, 0x053b, 0x0543, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0547, 0x002a, 0x054f, 0x002a, 0x0556, 0x055e, 0x0565, 0x002a, 0x002a, 0x002a, 0x002a, 0x0568, 0x0570, 0x0578, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
-    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x057a, 0x0582, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0585, 0x058c, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
-    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0593, 0x059a, 0x059e, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341,
-    0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x05a6, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341,
-    0x05ae, 0x05b6, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
-    0x002a, 0x05b8, 0x0341, 0x0341, 0x0341, 0x0341, 0x05c0, 0x05c7, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x05cd, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
-    0x002a, 0x002a, 0x05d5, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x05dd,
-    0x05e5, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x05e9, 0x05f1, 0x002a, 0x002a, 0x05f9, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
-    0x002a, 0x0601, 0x0609, 0x0611, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0619, 0x002a, 0x0620, 0x002a, 0x058c, 0x002a, 0x002a,
-    0x002a, 0x002a, 0x002a, 0x0623, 0x0629, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0629, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x062f, 0x002a, 0x0637, 0x002a, 0x002a, 0x002a, 0x002a,
-    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x063f, 0x0640, 0x0640, 0x0647, 0x064f, 0x0655, 0x065d, 0x0663, 0x066b, 0x0673,
-    0x0640, 0x0640, 0x067b, 0x0682, 0x068a, 0x0691, 0x0699, 0x06a1, 0x06a2, 0x06a3, 0x06ab, 0x06b3, 0x06bb, 0x06c0, 0x06a2, 0x06c8, 0x06a2, 0x06d0, 0x002a, 0x06d8, 0x002a, 0x06e0, 0x06e8, 0x06ef, 0x06f6, 0x0640, 0x06fe, 0x0706, 0x06a2, 0x06a2, 0x0640, 0x070e,
-    0x0716, 0x071e, 0x002a, 0x002a, 0x002a, 0x002a, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, 0x0726, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341,
-    0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0342, 0x072e, 0x0047, 0x0736, 0x0736, 0x0047, 0x0047, 0x0047, 0x073e, 0x0736, 0x0736,
-    0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x02bc, 0x02bc,
-    0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x0746,
+    0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0388, 0x0390, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0393, 0x039b, 0x017f, 0x002a, 0x002a, 0x002a, 0x002a, 0x03a3, 0x002a, 0x03ab, 0x03b3, 0x03bb, 0x03c3, 0x03cb, 0x03d3,
+    0x03d8, 0x03e0, 0x03e8, 0x03f0, 0x002a, 0x002a, 0x002a, 0x03f7, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x03ff, 0x0400, 0x0401,
+    0x0402, 0x0403, 0x0404, 0x0405, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x03ff, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x040c, 0x0414, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc,
+    0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x041c, 0x002a, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0424, 0x042a, 0x002a, 0x032d, 0x0355, 0x0432, 0x0437, 0x043b, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0443, 0x002a, 0x002a, 0x002a, 0x044b, 0x002a, 0x0450, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0458, 0x002a, 0x002a, 0x01f1, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0460, 0x0465, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x046b, 0x0471, 0x002a, 0x00a7, 0x0479, 0x002a, 0x0481, 0x0489, 0x0491, 0x0499, 0x04a1, 0x04a9, 0x04b1, 0x04b9, 0x04bc, 0x04c4, 0x002a, 0x04c9, 0x04d1, 0x04d9, 0x04e0, 0x04e8, 0x04ed, 0x04f5, 0x04f9, 0x0501, 0x002a, 0x002a, 0x0504, 0x050c, 0x0510,
+    0x0518, 0x051b, 0x002a, 0x0522, 0x002a, 0x002a, 0x002a, 0x0528, 0x002a, 0x002a, 0x002a, 0x0530, 0x0538, 0x002a, 0x053e, 0x0546, 0x054e, 0x0556, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x055a, 0x002a, 0x0562, 0x002a, 0x0569, 0x0571, 0x0578, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x057b, 0x0583, 0x058b, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0211, 0x0593, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0598, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x059e, 0x05a5, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x05ac, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x05b3, 0x05ba, 0x05be, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341,
+    0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x05c6, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341,
+    0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x05ce, 0x05d6, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x05d8, 0x0341, 0x0341, 0x0341, 0x0341, 0x05e0, 0x05e7, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x05ed, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x05f5, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x05fd, 0x0605, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0609, 0x0611, 0x002a, 0x002a, 0x0619, 0x002a, 0x002a, 0x0341, 0x0621, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0629, 0x0631, 0x0639, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x0641, 0x002a, 0x0648, 0x002a, 0x05a5, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x064b, 0x0651, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0651, 0x002a, 0x002a, 0x002a, 0x0657, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+    0x002a, 0x002a, 0x065d, 0x002a, 0x0665, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x066d,
+    0x066e, 0x066e, 0x0675, 0x067d, 0x0683, 0x068b, 0x0691, 0x0699, 0x06a1, 0x066e, 0x066e, 0x06a9, 0x06b0, 0x06b8, 0x06bf, 0x06c7, 0x06cf, 0x06d0, 0x06d1, 0x06d9, 0x06e1, 0x06e9, 0x06ee, 0x06d0, 0x06f6, 0x06d0, 0x06fe, 0x002a, 0x0706, 0x002a, 0x070e, 0x0716,
+    0x071d, 0x0724, 0x066e, 0x072c, 0x0734, 0x06d0, 0x06d0, 0x066e, 0x073c, 0x0744, 0x074c, 0x002a, 0x002a, 0x002a, 0x002a, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x066e, 0x0754, 0x0341,
+    0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0341, 0x0342, 0x075c,
+    0x0047, 0x0764, 0x0764, 0x0047, 0x0047, 0x0047, 0x076c, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764,
+    0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x0764, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc,
+    0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x0774,
 };
 static constexpr uint16_t s_stage2[] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008,
@@ -134,228 +135,234 @@ static constexpr uint16_t s_stage2[] = {
     0x0089, 0x0089, 0x00af, 0x00b5, 0x0008, 0x0008, 0x0008, 0x0008,
     0x0008, 0x0008, 0x0008, 0x00bd, 0x0008, 0x0089, 0x00c5, 0x0008,
     0x0008, 0x0008, 0x0008, 0x00a0, 0x0089, 0x0089, 0x0008, 0x0008,
-    0x00cd, 0x0008, 0x0008, 0x00a8, 0x00d5, 0x00dc, 0x00e3, 0x0008,
-    0x0008, 0x00e9, 0x00cc, 0x0008, 0x0008, 0x0008, 0x0089, 0x0089,
+    0x00c9, 0x0008, 0x0008, 0x00a8, 0x00d1, 0x00d8, 0x00df, 0x0008,
+    0x0008, 0x00e5, 0x00c8, 0x0008, 0x0008, 0x0008, 0x0089, 0x0089,
     0x00a5, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x00a8,
-    0x0089, 0x00cd, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x00a0,
-    0x00a4, 0x00f1, 0x0008, 0x0008, 0x00a8, 0x00f9, 0x00fd, 0x00a2,
-    0x0008, 0x0008, 0x0008, 0x0101, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0109, 0x0089, 0x0008, 0x0008, 0x0008, 0x0008, 0x00ac, 0x0089,
-    0x0089, 0x0111, 0x0089, 0x0089, 0x0089, 0x0116, 0x0008, 0x011a,
-    0x011f, 0x011f, 0x011f, 0x011f, 0x0125, 0x012c, 0x0133, 0x00ad,
-    0x011f, 0x013b, 0x0008, 0x0008, 0x011f, 0x0142, 0x0008, 0x011a,
-    0x011f, 0x011f, 0x014a, 0x0151, 0x0157, 0x015e, 0x0165, 0x016b,
-    0x0173, 0x013b, 0x0008, 0x017a, 0x017c, 0x0183, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0187, 0x018e, 0x0195, 0x00cc,
-    0x0008, 0x0008, 0x0008, 0x0199, 0x0008, 0x0183, 0x0008, 0x011a,
-    0x011f, 0x011f, 0x014a, 0x01a1, 0x0157, 0x01a9, 0x01b0, 0x0008,
-    0x0008, 0x013b, 0x0008, 0x0008, 0x01b7, 0x0142, 0x0008, 0x011a,
-    0x011f, 0x011f, 0x014a, 0x01a1, 0x01bf, 0x015e, 0x0165, 0x01c7,
-    0x0173, 0x013b, 0x0008, 0x01cf, 0x0008, 0x00cb, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x01d1, 0x01d9, 0x01e0, 0x016b,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x01e8, 0x0008, 0x011a,
-    0x011f, 0x011f, 0x014a, 0x011f, 0x01f0, 0x01f7, 0x01fe, 0x0204,
-    0x020c, 0x013b, 0x0008, 0x0008, 0x0008, 0x0142, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0210, 0x0218, 0x021f, 0x0225,
-    0x0008, 0x013b, 0x0008, 0x016f, 0x0008, 0x022d, 0x0008, 0x011a,
-    0x011f, 0x011f, 0x011f, 0x011f, 0x0235, 0x023c, 0x0243, 0x016b,
-    0x0008, 0x013b, 0x0008, 0x0008, 0x0008, 0x0142, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x024a, 0x0251, 0x0259,
-    0x0008, 0x0008, 0x0261, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0268, 0x00a5, 0x00ce, 0x008a, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0268, 0x00a3, 0x0008, 0x008a, 0x0008,
+    0x0089, 0x00c9, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x00a0,
+    0x00a4, 0x00ed, 0x0008, 0x0008, 0x00a8, 0x00f5, 0x00f9, 0x00a2,
+    0x0008, 0x0008, 0x0008, 0x00fd, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0105, 0x0089, 0x0008, 0x0008, 0x0008, 0x0008, 0x00ac, 0x0089,
+    0x0089, 0x010c, 0x0089, 0x0089, 0x0089, 0x0111, 0x0008, 0x0115,
+    0x011a, 0x011a, 0x011a, 0x011a, 0x0120, 0x0127, 0x012e, 0x00ad,
+    0x011a, 0x0136, 0x0008, 0x0008, 0x011a, 0x013d, 0x0008, 0x0115,
+    0x011a, 0x011a, 0x0145, 0x014c, 0x0152, 0x0159, 0x0160, 0x0166,
+    0x016e, 0x0136, 0x0008, 0x0175, 0x0177, 0x017e, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0182, 0x0189, 0x0190, 0x00c8,
+    0x0008, 0x0008, 0x0008, 0x0194, 0x0008, 0x017e, 0x0008, 0x0115,
+    0x011a, 0x011a, 0x0145, 0x019c, 0x0152, 0x01a4, 0x01ab, 0x0008,
+    0x0008, 0x0136, 0x0008, 0x0008, 0x01b2, 0x013d, 0x0008, 0x0115,
+    0x011a, 0x011a, 0x0145, 0x019c, 0x01ba, 0x0159, 0x0160, 0x01c2,
+    0x016e, 0x0136, 0x0008, 0x01ca, 0x0008, 0x01d0, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x01d3, 0x01db, 0x01e2, 0x0166,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x01ea, 0x0008, 0x0115,
+    0x011a, 0x011a, 0x0145, 0x011a, 0x01f2, 0x01f9, 0x0200, 0x0206,
+    0x020e, 0x0136, 0x0008, 0x0008, 0x0008, 0x013d, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0212, 0x021a, 0x0221, 0x0227,
+    0x0008, 0x0136, 0x0008, 0x016a, 0x0008, 0x022f, 0x0008, 0x0115,
+    0x011a, 0x011a, 0x011a, 0x011a, 0x0237, 0x023e, 0x0245, 0x0166,
+    0x0008, 0x0136, 0x0008, 0x0008, 0x0008, 0x013d, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x024c, 0x0253, 0x025b,
+    0x0008, 0x0008, 0x0263, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x026a, 0x00a5, 0x00ca, 0x008a, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x026a, 0x00a3, 0x0008, 0x008a, 0x0008,
     0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x00a6, 0x0008, 0x0008,
-    0x017d, 0x024b, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x00ad, 0x012d, 0x00b0, 0x00a9, 0x0089, 0x00ad, 0x0089, 0x0089,
-    0x0089, 0x00a3, 0x017c, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x00a9, 0x026f, 0x0277, 0x0008, 0x0008, 0x01d1,
-    0x027c, 0x00cd, 0x0008, 0x00e4, 0x0008, 0x0284, 0x00f1, 0x0008,
-    0x00f1, 0x0008, 0x0008, 0x0008, 0x0008, 0x028c, 0x028c, 0x028c,
-    0x028c, 0x028c, 0x028c, 0x028c, 0x028c, 0x0294, 0x0294, 0x0294,
-    0x0294, 0x0294, 0x029c, 0x029c, 0x029c, 0x029c, 0x029c, 0x029c,
-    0x029c, 0x029c, 0x0008, 0x0008, 0x0008, 0x00a9, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x02a4, 0x0008, 0x0008, 0x0008, 0x02aa, 0x0008,
-    0x0008, 0x013b, 0x0008, 0x0008, 0x0008, 0x013b, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x02af, 0x012e, 0x02b7, 0x012c,
-    0x00a4, 0x00f1, 0x0008, 0x0008, 0x0008, 0x0008, 0x02bf, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0204, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x00cc, 0x0008, 0x0008, 0x0008, 0x0008, 0x02c6,
-    0x02cd, 0x02d5, 0x02dc, 0x0008, 0x0008, 0x00ce, 0x02e4, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x02e8, 0x008a, 0x02f0, 0x012f, 0x02f8,
-    0x00dc, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0089,
+    0x0178, 0x024d, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x00ad, 0x0128, 0x00b0, 0x00a9, 0x0089, 0x00ad, 0x0089, 0x0089,
+    0x0089, 0x00a3, 0x0177, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x00a9, 0x0271, 0x0279, 0x0008, 0x0008, 0x01d3,
+    0x027e, 0x00c9, 0x0008, 0x00e0, 0x0008, 0x0286, 0x00ed, 0x0008,
+    0x00ed, 0x0008, 0x0008, 0x0008, 0x0008, 0x028e, 0x028e, 0x028e,
+    0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x0296, 0x0296, 0x0296,
+    0x0296, 0x0296, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e,
+    0x029e, 0x029e, 0x0008, 0x0008, 0x0008, 0x00a9, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x02a6, 0x0008, 0x0008, 0x0008, 0x02ac, 0x0008,
+    0x0008, 0x0136, 0x0008, 0x0008, 0x0008, 0x0136, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x02b1, 0x0129, 0x02b9, 0x0127,
+    0x00a4, 0x00ed, 0x0008, 0x0008, 0x0008, 0x0008, 0x00a0, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0206, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x00c8, 0x0008, 0x0008, 0x0008, 0x0008, 0x02c1,
+    0x02c8, 0x02d0, 0x02d7, 0x0008, 0x0008, 0x00ca, 0x02df, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x02e3, 0x008a, 0x02eb, 0x012a, 0x02f3,
+    0x00d8, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0089,
     0x0089, 0x008a, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0115, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0300, 0x0306,
-    0x01d7, 0x0008, 0x0008, 0x0008, 0x0008, 0x00a0, 0x00a4, 0x0008,
-    0x0117, 0x0008, 0x0008, 0x0008, 0x030e, 0x0316, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x031c, 0x0324, 0x022d, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x032c, 0x0330, 0x0310, 0x0008, 0x0008, 0x0335, 0x0089,
-    0x026f, 0x0190, 0x033d, 0x00a6, 0x0008, 0x0345, 0x034d, 0x0352,
-    0x0022, 0x035a, 0x0362, 0x0368, 0x0008, 0x036f, 0x0008, 0x0008,
-    0x0377, 0x037d, 0x002c, 0x007a, 0x0025, 0x0008, 0x0008, 0x0008,
+    0x0110, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x02fb, 0x0301,
+    0x01d9, 0x0008, 0x0008, 0x0008, 0x0008, 0x00a0, 0x00a4, 0x0008,
+    0x0112, 0x0008, 0x0008, 0x0008, 0x0309, 0x0311, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0317, 0x031f, 0x022f, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0327, 0x032b, 0x030b, 0x0008, 0x0008, 0x0330, 0x0089,
+    0x0271, 0x018b, 0x0338, 0x00a6, 0x0008, 0x0340, 0x0348, 0x034d,
+    0x0022, 0x0355, 0x035d, 0x0363, 0x0008, 0x036a, 0x0008, 0x0008,
+    0x0372, 0x0089, 0x002c, 0x007a, 0x0025, 0x0008, 0x0008, 0x0008,
     0x0008, 0x002c, 0x0008, 0x0008, 0x0089, 0x0089, 0x0089, 0x0089,
-    0x00cd, 0x0008, 0x0385, 0x004c, 0x0073, 0x0008, 0x038c, 0x002d,
-    0x0008, 0x036f, 0x0008, 0x0008, 0x0033, 0x0060, 0x0092, 0x0026,
-    0x0092, 0x0028, 0x0008, 0x004c, 0x0394, 0x039a, 0x0008, 0x03a1,
-    0x0008, 0x0028, 0x0008, 0x0008, 0x03a7, 0x0008, 0x007a, 0x0008,
-    0x0008, 0x0008, 0x0040, 0x03af, 0x03aa, 0x03b4, 0x0068, 0x03b9,
-    0x007d, 0x0032, 0x0008, 0x03bf, 0x002e, 0x0008, 0x03c7, 0x03c5,
-    0x0008, 0x0008, 0x03c5, 0x0008, 0x002b, 0x004c, 0x002b, 0x0008,
-    0x0008, 0x007a, 0x0008, 0x0008, 0x002e, 0x03cf, 0x0008, 0x03d7,
-    0x0008, 0x0008, 0x03df, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x03e0, 0x0008, 0x0008, 0x0008, 0x03e8, 0x03f0, 0x03f8,
+    0x00c9, 0x0008, 0x037a, 0x004c, 0x0073, 0x0008, 0x0381, 0x002d,
+    0x0008, 0x036a, 0x0008, 0x0008, 0x0033, 0x0060, 0x0092, 0x0026,
+    0x0092, 0x0028, 0x0008, 0x004c, 0x0389, 0x038f, 0x0008, 0x0396,
+    0x0008, 0x0028, 0x0008, 0x0008, 0x039c, 0x0008, 0x007a, 0x0008,
+    0x0008, 0x0008, 0x0040, 0x03a4, 0x039f, 0x03a9, 0x0068, 0x03ae,
+    0x007d, 0x0032, 0x0008, 0x03b4, 0x002e, 0x0008, 0x03bc, 0x03ba,
+    0x0008, 0x0008, 0x03ba, 0x0008, 0x002b, 0x004c, 0x002b, 0x0008,
+    0x0008, 0x007a, 0x0008, 0x0008, 0x002e, 0x03c4, 0x0008, 0x03cc,
+    0x0008, 0x0008, 0x03d4, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x03d5, 0x0008, 0x0008, 0x0008, 0x03dd, 0x03e5, 0x03ed,
     0x0008, 0x0008, 0x0008, 0x0008, 0x0092, 0x0092, 0x0092, 0x0092,
-    0x0092, 0x0092, 0x0092, 0x0092, 0x0400, 0x0092, 0x0092, 0x0092,
+    0x0092, 0x0092, 0x0092, 0x0092, 0x03f5, 0x0092, 0x0092, 0x0092,
     0x0092, 0x0098, 0x0092, 0x0092, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0098, 0x0406, 0x040c, 0x0032, 0x0412, 0x0419, 0x0028, 0x0008,
-    0x034e, 0x007a, 0x0008, 0x0421, 0x0429, 0x0430, 0x0438, 0x043e,
-    0x0445, 0x0445, 0x0445, 0x0445, 0x0442, 0x044d, 0x0451, 0x0445,
-    0x0459, 0x045c, 0x0445, 0x0446, 0x0464, 0x0008, 0x046c, 0x0470,
-    0x046e, 0x0478, 0x0445, 0x047c, 0x047d, 0x0483, 0x0485, 0x048a,
-    0x0460, 0x0487, 0x0490, 0x0496, 0x049e, 0x0478, 0x04a6, 0x03da,
-    0x036f, 0x04ae, 0x039f, 0x002b, 0x04b2, 0x04ba, 0x04c1, 0x0008,
-    0x04c9, 0x0008, 0x004e, 0x0092, 0x0008, 0x0008, 0x04d1, 0x0008,
-    0x036f, 0x0008, 0x04ae, 0x04d9, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x039e, 0x0008, 0x04e1, 0x0008, 0x0008, 0x04e9,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x04ed, 0x0028, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x00ce, 0x00a6, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x00ce, 0x04f5, 0x04f5, 0x04f5,
-    0x04fb, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04ff,
-    0x0008, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04f5,
-    0x04f5, 0x0507, 0x0008, 0x0008, 0x0008, 0x04f5, 0x04f5, 0x04f5,
-    0x04f5, 0x04f5, 0x050f, 0x0517, 0x051a, 0x0521, 0x04f5, 0x04f5,
-    0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04f6, 0x0529, 0x04f5,
-    0x04f5, 0x04f5, 0x04f5, 0x0531, 0x04f5, 0x04f5, 0x04f5, 0x04f5,
-    0x04f5, 0x0521, 0x04f5, 0x04f6, 0x04f5, 0x04f5, 0x04f5, 0x04f5,
-    0x04f5, 0x04f5, 0x04ff, 0x0539, 0x04f5, 0x04f5, 0x04f5, 0x04f6,
-    0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x0092, 0x04f5, 0x04f5, 0x04f5,
-    0x04f5, 0x04f5, 0x04f5, 0x0518, 0x0540, 0x04f5, 0x04f5, 0x04f5,
-    0x04f5, 0x04fe, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04f5,
-    0x04f6, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x00ce, 0x0335, 0x0548, 0x0008, 0x0008, 0x0008, 0x00a8, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x054e, 0x00ca, 0x0008, 0x0008, 0x0555,
-    0x055d, 0x0008, 0x0008, 0x0565, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x032c, 0x0259, 0x056d, 0x0008, 0x0008, 0x0008, 0x0089,
-    0x0089, 0x00a6, 0x00ce, 0x0008, 0x0008, 0x0008, 0x0008, 0x00a8,
-    0x0548, 0x0008, 0x0008, 0x00ce, 0x0089, 0x022d, 0x0008, 0x028c,
-    0x028c, 0x028c, 0x0575, 0x0116, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x057a, 0x0580, 0x0587, 0x0008, 0x0008, 0x0008, 0x00f1,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x058e, 0x0595, 0x0008,
-    0x00ca, 0x059c, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x055d,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x05a4, 0x01c6,
-    0x00cc, 0x0008, 0x0008, 0x0008, 0x0008, 0x05ac, 0x05b4, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x01d4, 0x05bc, 0x0008, 0x0008, 0x05c4,
-    0x05c5, 0x05c5, 0x05c9, 0x05c5, 0x05c5, 0x05c5, 0x05c4, 0x05c5,
-    0x05c5, 0x05c9, 0x05c5, 0x05c5, 0x05c5, 0x05c4, 0x05c5, 0x05c5,
-    0x05ce, 0x0008, 0x0294, 0x0294, 0x05d6, 0x05dd, 0x029c, 0x029c,
-    0x029c, 0x029c, 0x029c, 0x05e1, 0x0008, 0x0008, 0x0008, 0x017c,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0089, 0x0089, 0x04f5, 0x0537,
-    0x0089, 0x0089, 0x04f5, 0x04f5, 0x04fa, 0x04f5, 0x04f6, 0x04ff,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x05e5,
-    0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x0538, 0x0008, 0x0008, 0x0008,
-    0x01d1, 0x0008, 0x0008, 0x0008, 0x0008, 0x04f6, 0x0008, 0x0000,
-    0x05ed, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x00f1, 0x0008, 0x0008, 0x0008, 0x0008, 0x00cd, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x00a8, 0x00a5, 0x05f4, 0x00aa,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x02dd, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x00aa, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x05fb, 0x0008, 0x0008, 0x0601, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0609, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0089, 0x008a, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0611, 0x00ce, 0x0117, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0619, 0x0620, 0x00cb, 0x00eb, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x00a5, 0x0008, 0x0008, 0x0008, 0x00ce,
-    0x026c, 0x00a3, 0x0008, 0x0225, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x00ca, 0x0008, 0x0117, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0616, 0x012d, 0x0628, 0x062f, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0637, 0x063e, 0x017c, 0x00cc, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x00ce, 0x02f8,
-    0x00a5, 0x0008, 0x0008, 0x022d, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0646, 0x064e, 0x0652, 0x016b, 0x0008, 0x0658,
-    0x00a3, 0x00a3, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0568, 0x0089, 0x0660, 0x0008, 0x0008, 0x017c, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x02f8, 0x0668, 0x066f, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x016b, 0x015d,
-    0x0677, 0x00cd, 0x0008, 0x0008, 0x027e, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x02f8, 0x067e, 0x00cd, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0686, 0x058f, 0x0008,
-    0x0008, 0x0008, 0x00a9, 0x068e, 0x00a4, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0637, 0x0089, 0x0222, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0696, 0x069d, 0x06a5, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0618, 0x06ab, 0x06b3,
-    0x0008, 0x0008, 0x0008, 0x00ad, 0x00a5, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x00a0, 0x06bb, 0x00ce, 0x0008, 0x058e, 0x02dc, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x06c2, 0x06c8, 0x012d, 0x00a6, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x016b, 0x008a, 0x058f, 0x0008,
-    0x0008, 0x00ac, 0x0089, 0x0089, 0x06d0, 0x06d7, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x06de, 0x06e5, 0x06ec, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x06f4, 0x06fc,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0704, 0x0008,
-    0x070c, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x024d, 0x0714,
-    0x071c, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x037d, 0x037d, 0x00a7, 0x0089, 0x0548, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x00a3, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x008a, 0x0008, 0x00ce, 0x0258, 0x0259, 0x0259,
-    0x0259, 0x0259, 0x0259, 0x00ce, 0x00a5, 0x0008, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0724, 0x0008, 0x072c, 0x0008, 0x04f5, 0x04f5,
-    0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x0008, 0x04f5, 0x04f5,
-    0x0507, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x04f5, 0x0538,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x04f9, 0x0734,
-    0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x052e, 0x0008, 0x073b, 0x0008,
-    0x0008, 0x0743, 0x0008, 0x0503, 0x0008, 0x04f5, 0x04f5, 0x04f5,
-    0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04ff, 0x0008, 0x0008, 0x0008,
-    0x0204, 0x074b, 0x0008, 0x0008, 0x0008, 0x0089, 0x0089, 0x0089,
-    0x0089, 0x0089, 0x0548, 0x0089, 0x0089, 0x008a, 0x0008, 0x0008,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x01d2, 0x0614, 0x0753,
-    0x0758, 0x075d, 0x00a4, 0x0008, 0x0008, 0x0008, 0x0601, 0x0008,
-    0x0008, 0x0196, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0098, 0x03fb, 0x0401, 0x0032, 0x0407, 0x040e, 0x0028, 0x0008,
+    0x0349, 0x007a, 0x0008, 0x0416, 0x041e, 0x0425, 0x042d, 0x0433,
+    0x043a, 0x043a, 0x0442, 0x043a, 0x0437, 0x0442, 0x0446, 0x043a,
+    0x044e, 0x0451, 0x043a, 0x043b, 0x0459, 0x045f, 0x0467, 0x046b,
+    0x0469, 0x0473, 0x043a, 0x0477, 0x0478, 0x047e, 0x0480, 0x0485,
+    0x0455, 0x0482, 0x048b, 0x0491, 0x0499, 0x0473, 0x04a1, 0x03cf,
+    0x036a, 0x04a9, 0x0394, 0x002b, 0x04ad, 0x04b5, 0x04bc, 0x0008,
+    0x04c4, 0x0008, 0x004e, 0x0092, 0x0008, 0x0008, 0x04cc, 0x0008,
+    0x036a, 0x0008, 0x04a9, 0x04d4, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0393, 0x0008, 0x04dc, 0x0008, 0x0008, 0x04e4,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x04e8, 0x0028, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x00ca, 0x00a6, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x00ca, 0x04f0, 0x04f0, 0x04f0,
+    0x04f6, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04fa,
+    0x0008, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04f0,
+    0x04f0, 0x0502, 0x0008, 0x0008, 0x0008, 0x04f0, 0x04f0, 0x04f0,
+    0x04f0, 0x04f0, 0x050a, 0x0512, 0x0515, 0x051c, 0x04f0, 0x04f0,
+    0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04f1, 0x0524, 0x04f0,
+    0x04f0, 0x04f0, 0x04f0, 0x052c, 0x04f0, 0x04f0, 0x04f0, 0x04f0,
+    0x04f0, 0x051c, 0x04f0, 0x04f1, 0x04f0, 0x04f0, 0x04f0, 0x04f0,
+    0x04f0, 0x04f0, 0x0502, 0x0534, 0x04f0, 0x04f0, 0x04f0, 0x04f1,
+    0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x0092, 0x04f0, 0x04f0, 0x04f0,
+    0x04f0, 0x04f0, 0x04f0, 0x0513, 0x053b, 0x04f0, 0x04f0, 0x04f0,
+    0x04f0, 0x04f9, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04f0,
+    0x04f1, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x00ca, 0x0330, 0x0543, 0x0008, 0x0008, 0x0008, 0x00a8, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0549, 0x01cf, 0x0008, 0x0008, 0x0550,
+    0x01ce, 0x0008, 0x0008, 0x0557, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0327, 0x025b, 0x055f, 0x0008, 0x0008, 0x0008, 0x0089,
+    0x0089, 0x00a6, 0x00ca, 0x0008, 0x0008, 0x0008, 0x0008, 0x00a8,
+    0x0543, 0x0008, 0x0008, 0x00ca, 0x0089, 0x022f, 0x0008, 0x028e,
+    0x028e, 0x028e, 0x0567, 0x0111, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x056c, 0x0572, 0x0579, 0x0008, 0x0008, 0x0008, 0x00ed,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0580, 0x0587, 0x0008,
+    0x01cf, 0x058e, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x01ce,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0596, 0x01c1,
+    0x00c8, 0x0008, 0x0008, 0x0008, 0x0008, 0x059e, 0x05a6, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x01d6, 0x05ae, 0x0008, 0x0008, 0x05b6,
+    0x05b7, 0x05b7, 0x05bb, 0x05b7, 0x05b7, 0x05b7, 0x05b6, 0x05b7,
+    0x05b7, 0x05bb, 0x05b7, 0x05b7, 0x05b7, 0x05b6, 0x05b7, 0x05b7,
+    0x05c0, 0x0008, 0x0296, 0x0296, 0x05c8, 0x05cf, 0x029e, 0x029e,
+    0x029e, 0x029e, 0x029e, 0x05d3, 0x0008, 0x0008, 0x0008, 0x0177,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0089, 0x0089, 0x04f0, 0x0532,
+    0x0089, 0x0089, 0x04f0, 0x04f0, 0x04f5, 0x04f0, 0x04f1, 0x04fa,
+    0x0008, 0x0008, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x0533, 0x0008,
+    0x0008, 0x0008, 0x01d3, 0x0008, 0x0008, 0x0008, 0x0008, 0x04f1,
+    0x0008, 0x0000, 0x05db, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x00ed, 0x0008, 0x0008, 0x0008, 0x0008, 0x00c9,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x00a8, 0x00a5,
+    0x05e2, 0x00aa, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x02d8,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x00aa, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x00a2, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x05e9, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x00aa, 0x05ef, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x05f7, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0089, 0x008a, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x05ff,
+    0x00ca, 0x0112, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0607,
+    0x060e, 0x01d0, 0x00e7, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x00a5, 0x0008, 0x0008, 0x0008, 0x00ca, 0x026e, 0x00a3,
+    0x0008, 0x0227, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x01cf,
+    0x0008, 0x0112, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0604,
+    0x0128, 0x0616, 0x061d, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0625, 0x062c, 0x0177, 0x00c8, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x00ca, 0x02f3, 0x00a5, 0x0008,
+    0x0008, 0x022f, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0634, 0x063c, 0x0640, 0x0166, 0x0008, 0x0646, 0x00a3, 0x00a3,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x02f3,
+    0x064d, 0x0654, 0x065c, 0x0008, 0x0663, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x055a, 0x0089, 0x066b, 0x0008, 0x0008,
+    0x0177, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x02f3,
+    0x0673, 0x067a, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0166, 0x0158, 0x0682, 0x00c9, 0x0008, 0x0008, 0x0280,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x02f3, 0x0689,
+    0x00c9, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0691, 0x0581, 0x0008, 0x0008, 0x0008, 0x0318, 0x0699, 0x00a4,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0625, 0x0089, 0x0224,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x06a1, 0x06a8,
+    0x06b0, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0606, 0x06b6, 0x06be, 0x0008, 0x0008, 0x0008, 0x00ad, 0x00a5,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x00a0, 0x06c6, 0x00ca, 0x0008,
+    0x0580, 0x02d7, 0x0008, 0x0008, 0x0008, 0x0008, 0x06cd, 0x06d3,
+    0x0128, 0x00a6, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0166,
+    0x008a, 0x0581, 0x0008, 0x0008, 0x00ac, 0x0089, 0x0089, 0x06db,
+    0x06e2, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x06e9,
+    0x06f0, 0x06f7, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x06ff, 0x0707, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x070f, 0x0008, 0x0717, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x024f, 0x071f, 0x0727, 0x0008, 0x0008, 0x01d0, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x00a7, 0x0089, 0x0543, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x00a8, 0x0089, 0x02f1, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x00a3, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x008a, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x072c, 0x0733, 0x0008, 0x0008, 0x00ca, 0x025a, 0x025b, 0x025b,
+    0x025b, 0x025b, 0x025b, 0x00ca, 0x00a5, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x073b, 0x0008, 0x0743, 0x0008, 0x04f0, 0x04f0,
+    0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x0008, 0x04f0, 0x04f0,
+    0x0502, 0x0008, 0x0008, 0x0008, 0x0008, 0x0534, 0x04f0, 0x0533,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x04f4, 0x074b,
+    0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x0529, 0x0008, 0x0752, 0x0008,
+    0x0008, 0x075a, 0x0008, 0x04fe, 0x0008, 0x04f0, 0x04f0, 0x04f0,
+    0x04f0, 0x04f0, 0x04f0, 0x04f0, 0x04fa, 0x0008, 0x0008, 0x0008,
+    0x0206, 0x00a4, 0x0008, 0x0008, 0x0008, 0x0089, 0x0089, 0x0089,
+    0x0089, 0x0089, 0x0543, 0x0089, 0x0089, 0x008a, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x01d4, 0x0602, 0x02f3,
+    0x0089, 0x0762, 0x00a4, 0x0008, 0x0008, 0x0008, 0x05ef, 0x0008,
+    0x0008, 0x0191, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0008, 0x04f0, 0x04f0, 0x04f1, 0x0008, 0x04f0, 0x04f0, 0x04f1,
     0x0008, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x008a,
-    0x00a0, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x00a3, 0x00f1,
-    0x0008, 0x055d, 0x0008, 0x0008, 0x00a0, 0x00ad, 0x0089, 0x0008,
-    0x0008, 0x008a, 0x0089, 0x0089, 0x075f, 0x00b3, 0x00a5, 0x0008,
-    0x0008, 0x00ce, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x017c, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x00aa, 0x0008,
-    0x0008, 0x008a, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x00aa,
-    0x00a5, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0767,
-    0x0445, 0x0445, 0x0445, 0x0445, 0x0445, 0x0445, 0x0445, 0x0445,
-    0x0446, 0x0445, 0x0445, 0x0445, 0x0445, 0x0445, 0x0445, 0x0092,
-    0x076f, 0x0092, 0x0092, 0x0092, 0x0777, 0x0092, 0x0092, 0x0092,
-    0x0092, 0x0092, 0x077f, 0x0787, 0x0789, 0x0092, 0x0791, 0x0798,
-    0x079d, 0x0092, 0x07a0, 0x0445, 0x0445, 0x0445, 0x0445, 0x07a5,
-    0x07ab, 0x07ab, 0x07ab, 0x07b3, 0x0445, 0x04f5, 0x07bb, 0x04f5,
-    0x0518, 0x07c1, 0x07c6, 0x04f5, 0x07c9, 0x07d1, 0x0445, 0x044f,
-    0x0445, 0x0445, 0x0445, 0x044d, 0x044d, 0x044d, 0x044d, 0x07d2,
-    0x0448, 0x07da, 0x044d, 0x044d, 0x044d, 0x044d, 0x044d, 0x044d,
-    0x044d, 0x07db, 0x044d, 0x044d, 0x0451, 0x0445, 0x044d, 0x044d,
-    0x044d, 0x044d, 0x07e1, 0x0451, 0x0445, 0x044d, 0x044d, 0x07e8,
-    0x07f0, 0x044d, 0x044d, 0x044d, 0x044d, 0x044d, 0x044d, 0x044d,
-    0x044e, 0x07f8, 0x044d, 0x044d, 0x044d, 0x044d, 0x044d, 0x044d,
-    0x044d, 0x044d, 0x07fb, 0x044d, 0x044d, 0x044d, 0x044d, 0x044d,
-    0x044d, 0x044d, 0x0802, 0x039c, 0x080a, 0x044d, 0x044d, 0x044d,
-    0x0445, 0x0445, 0x046d, 0x0445, 0x0445, 0x07cc, 0x0445, 0x0767,
-    0x0445, 0x0445, 0x0445, 0x0445, 0x0445, 0x0445, 0x0445, 0x044a,
-    0x044d, 0x044d, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x044f, 0x0767, 0x07fd, 0x0449, 0x0445, 0x07ce, 0x0449, 0x0450,
-    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0812, 0x0445,
-    0x0008, 0x0008, 0x04e1, 0x0445, 0x044d, 0x0451, 0x07d2, 0x0445,
-    0x0008, 0x0812, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
-    0x0445, 0x0008, 0x0814, 0x0008, 0x0008, 0x0008, 0x0008, 0x0445,
-    0x0008, 0x0008, 0x0008, 0x039c, 0x0445, 0x0445, 0x0008, 0x081c,
-    0x044d, 0x044d, 0x044d, 0x044d, 0x044d, 0x0821, 0x0825, 0x044d,
-    0x044d, 0x044d, 0x044d, 0x044d, 0x044d, 0x044d, 0x0445, 0x0445,
-    0x0445, 0x0445, 0x0445, 0x0445, 0x044d, 0x0450, 0x044d, 0x07d2,
-    0x044d, 0x044d, 0x044d, 0x044d, 0x044d, 0x07da, 0x044f, 0x0447,
-    0x044d, 0x0451, 0x044d, 0x07d2, 0x044d, 0x07d2, 0x0445, 0x0445,
-    0x0445, 0x0445, 0x0445, 0x0445, 0x0445, 0x0464, 0x082d, 0x0000,
-    0x0000, 0x0000, 0x0089, 0x0089, 0x0089, 0x0089, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0089, 0x0089,
-    0x0089, 0x0089, 0x0089, 0x0089, 0x0000, 0x0000, 0x0092, 0x0092,
-    0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0835,
+    0x00a0, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x00a3, 0x00ed,
+    0x0008, 0x01ce, 0x0008, 0x0008, 0x00a0, 0x00ad, 0x0089, 0x0008,
+    0x0008, 0x008a, 0x0089, 0x0089, 0x0764, 0x00b3, 0x00a5, 0x0008,
+    0x0008, 0x00ca, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+    0x0177, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x00aa, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x00a8, 0x0008, 0x0008, 0x008a,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x00aa, 0x00a5, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x076c, 0x043a, 0x043a,
+    0x043a, 0x043a, 0x043a, 0x043a, 0x043a, 0x043a, 0x043b, 0x043a,
+    0x043a, 0x043a, 0x043a, 0x043a, 0x043a, 0x0092, 0x0774, 0x0092,
+    0x0092, 0x0092, 0x077c, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092,
+    0x0784, 0x078c, 0x078e, 0x0092, 0x0796, 0x079d, 0x07a2, 0x0092,
+    0x07a5, 0x043a, 0x043a, 0x043a, 0x043a, 0x07aa, 0x07b0, 0x07b0,
+    0x07b0, 0x07b8, 0x043a, 0x04f0, 0x07c0, 0x04f0, 0x0513, 0x07c6,
+    0x07cb, 0x04f0, 0x07ce, 0x07d6, 0x043a, 0x0444, 0x043a, 0x043a,
+    0x043a, 0x0442, 0x0442, 0x0442, 0x0442, 0x07d7, 0x043d, 0x07df,
+    0x0442, 0x0442, 0x0442, 0x0442, 0x0442, 0x0442, 0x0442, 0x07e0,
+    0x0442, 0x0442, 0x0446, 0x043a, 0x0442, 0x0442, 0x0442, 0x0442,
+    0x07e6, 0x0446, 0x043a, 0x0442, 0x0442, 0x07ed, 0x07f5, 0x0442,
+    0x0442, 0x0442, 0x0442, 0x0442, 0x0442, 0x0442, 0x0443, 0x07fd,
+    0x0442, 0x0442, 0x0442, 0x0442, 0x0442, 0x0442, 0x0442, 0x0442,
+    0x0800, 0x0442, 0x0442, 0x0442, 0x0442, 0x0442, 0x0442, 0x0442,
+    0x0807, 0x0391, 0x080f, 0x0442, 0x0442, 0x0442, 0x043a, 0x043a,
+    0x0468, 0x043a, 0x043a, 0x07d1, 0x043a, 0x076c, 0x043a, 0x043a,
+    0x043a, 0x043a, 0x043a, 0x043a, 0x043a, 0x043f, 0x0442, 0x0442,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0444, 0x076c,
+    0x0802, 0x043e, 0x043a, 0x07d3, 0x043e, 0x0445, 0x0008, 0x0008,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0817, 0x043a, 0x0008, 0x0008,
+    0x04dc, 0x043a, 0x0442, 0x0446, 0x07d7, 0x043a, 0x0008, 0x0817,
+    0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x043a, 0x0008,
+    0x0819, 0x0008, 0x0008, 0x0008, 0x0008, 0x043a, 0x0008, 0x0008,
+    0x0008, 0x0391, 0x043a, 0x043a, 0x0008, 0x0821, 0x0442, 0x0442,
+    0x0442, 0x0442, 0x0442, 0x0826, 0x082a, 0x0442, 0x0442, 0x0442,
+    0x0442, 0x0442, 0x0442, 0x0442, 0x043a, 0x043a, 0x043a, 0x043a,
+    0x043a, 0x043a, 0x0442, 0x0445, 0x0442, 0x0475, 0x0442, 0x0442,
+    0x0442, 0x0442, 0x0442, 0x0442, 0x0443, 0x043c, 0x0442, 0x0800,
+    0x0442, 0x07d6, 0x0442, 0x07d7, 0x043a, 0x043a, 0x043a, 0x043a,
+    0x043a, 0x043a, 0x043a, 0x0459, 0x0832, 0x0000, 0x0000, 0x0000,
+    0x0089, 0x0089, 0x0089, 0x0089, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0089, 0x0089, 0x0089, 0x0089,
+    0x0089, 0x0089, 0x0000, 0x0000, 0x0092, 0x0092, 0x0092, 0x0092,
+    0x0092, 0x0092, 0x0092, 0x083a,
 };
 static constexpr uint8_t s_stage3[] = {
     0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
     0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
     0x41, 0x40, 0xc0, 0x40, 0x40, 0xc0, 0x40, 0x40,
-    0xc0, 0x4c, 0xc0, 0x40, 0x40, 0x01, 0xcc, 0x40,
+    0xc0, 0x4c, 0xc0, 0x40, 0x40, 0x41, 0xcc, 0x40,
     0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x40, 0xc0, 0xc0,
     0xc0, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
     0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xc0,
@@ -377,245 +384,246 @@ static constexpr uint8_t s_stage3[] = {
     0x02, 0x02, 0x02, 0x02, 0x02, 0x40, 0x02, 0x02,
     0x40, 0x02, 0x02, 0x40, 0x02, 0x04, 0x04, 0x04,
     0x04, 0x04, 0x04, 0x40, 0x40, 0x02, 0x02, 0x02,
-    0x40, 0x01, 0x40, 0x40, 0x40, 0x02, 0x40, 0x40,
-    0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x02,
-    0x02, 0x02, 0x04, 0x40, 0x02, 0x02, 0x02, 0x02,
-    0x02, 0x40, 0x40, 0x02, 0x40, 0x02, 0x02, 0x02,
-    0x02, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-    0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x40,
-    0x40, 0x02, 0x02, 0x40, 0x02, 0x02, 0x02, 0x02,
-    0x02, 0x40, 0x02, 0x02, 0x02, 0x40, 0x40, 0x40,
-    0x40, 0x04, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40,
-    0x40, 0x02, 0x02, 0x04, 0x02, 0x02, 0x02, 0x02,
-    0x02, 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4b,
-    0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x02,
-    0x42, 0x02, 0x40, 0x42, 0x42, 0x02, 0x02, 0x02,
-    0x02, 0x02, 0x02, 0x02, 0x42, 0x42, 0x42, 0x42,
-    0x0a, 0x42, 0x42, 0x40, 0x40, 0x02, 0x02, 0x40,
-    0x40, 0x40, 0x40, 0x02, 0x42, 0x42, 0x40, 0x40,
-    0x40, 0x40, 0x4b, 0x40, 0x4b, 0x4b, 0x4b, 0x4b,
-    0x4b, 0x4b, 0x40, 0x4b, 0x40, 0x40, 0x40, 0x4b,
-    0x4b, 0x40, 0x40, 0x02, 0x40, 0x42, 0x42, 0x02,
-    0x02, 0x02, 0x02, 0x40, 0x40, 0x42, 0x40, 0x40,
-    0x42, 0x42, 0x0a, 0x40, 0x40, 0x40, 0x40, 0x40,
-    0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x40, 0x4b,
-    0x4b, 0x40, 0x4b, 0x4b, 0x40, 0x40, 0x40, 0x40,
-    0x40, 0x40, 0x02, 0x40, 0x02, 0x02, 0x42, 0x40,
-    0x40, 0x40, 0x40, 0x02, 0x40, 0x42, 0x42, 0x02,
-    0x02, 0x40, 0x40, 0x40, 0x40, 0x02, 0x40, 0x40,
-    0x02, 0x02, 0x02, 0x40, 0x40, 0x40, 0x02, 0x40,
-    0x40, 0x4b, 0x40, 0x4b, 0x4b, 0x40, 0x4b, 0x4b,
-    0x4b, 0x42, 0x02, 0x02, 0x02, 0x02, 0x02, 0x40,
-    0x02, 0x42, 0x40, 0x42, 0x42, 0x0a, 0x40, 0x40,
-    0x4b, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x4b,
-    0x4b, 0x40, 0x40, 0x02, 0x40, 0x42, 0x02, 0x40,
-    0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x42, 0x40,
-    0x4b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42,
-    0x42, 0x02, 0x42, 0x42, 0x40, 0x40, 0x40, 0x42,
-    0x42, 0x40, 0x42, 0x42, 0x42, 0x02, 0x40, 0x40,
-    0x02, 0x42, 0x42, 0x42, 0x02, 0x40, 0x40, 0x40,
-    0x4b, 0x4b, 0x40, 0x40, 0x02, 0x40, 0x02, 0x02,
-    0x42, 0x42, 0x42, 0x42, 0x40, 0x02, 0x02, 0x40,
-    0x02, 0x02, 0x02, 0x0a, 0x40, 0x40, 0x40, 0x40,
-    0x40, 0x02, 0x02, 0x40, 0x4b, 0x4b, 0x4b, 0x40,
-    0x40, 0x40, 0x40, 0x40, 0x02, 0x40, 0x42, 0x02,
-    0x42, 0x42, 0x42, 0x42, 0x42, 0x40, 0x02, 0x42,
-    0x40, 0x42, 0x42, 0x02, 0x02, 0x40, 0x40, 0x40,
-    0x40, 0x40, 0x42, 0x42, 0x40, 0x02, 0x02, 0x42,
-    0x42, 0x40, 0x40, 0x40, 0x40, 0x4b, 0x4b, 0x4b,
-    0x02, 0x02, 0x40, 0x42, 0x42, 0x02, 0x02, 0x02,
-    0x02, 0x40, 0x42, 0x42, 0x40, 0x42, 0x42, 0x42,
-    0x0a, 0x44, 0x40, 0x40, 0x02, 0x40, 0x40, 0x40,
-    0x40, 0x42, 0x42, 0x02, 0x02, 0x02, 0x40, 0x02,
-    0x40, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
-    0x42, 0x40, 0x40, 0x42, 0x42, 0x40, 0x40, 0x40,
-    0x40, 0x02, 0x40, 0x42, 0x02, 0x02, 0x02, 0x02,
-    0x42, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x40,
-    0x02, 0x02, 0x42, 0x42, 0x02, 0x02, 0x40, 0x40,
-    0x40, 0x40, 0x02, 0x02, 0x40, 0x40, 0x02, 0x40,
-    0x42, 0x02, 0x02, 0x40, 0x85, 0x85, 0x85, 0x85,
-    0x85, 0x85, 0x85, 0x85, 0x46, 0x46, 0x46, 0x46,
-    0x46, 0x46, 0x46, 0x46, 0x47, 0x47, 0x47, 0x47,
-    0x47, 0x47, 0x47, 0x47, 0x40, 0x40, 0x02, 0x02,
-    0x02, 0x42, 0x40, 0x40, 0x02, 0x02, 0x42, 0x40,
-    0x40, 0x40, 0x40, 0x02, 0x02, 0x42, 0x02, 0x42,
-    0x42, 0x42, 0x42, 0x42, 0x42, 0x02, 0x42, 0x40,
-    0x40, 0x40, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02,
-    0x02, 0x42, 0x42, 0x42, 0x42, 0x02, 0x42, 0x42,
-    0x42, 0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x02,
-    0x42, 0x42, 0x42, 0x42, 0x42, 0x02, 0x02, 0x02,
-    0x40, 0x40, 0x40, 0x40, 0x02, 0x42, 0x42, 0x02,
-    0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x02, 0x42,
-    0x02, 0x40, 0x02, 0x40, 0x40, 0x02, 0x02, 0x02,
-    0x42, 0x42, 0x42, 0x02, 0x02, 0x02, 0x02, 0x02,
-    0x40, 0x40, 0x40, 0x40, 0x02, 0x42, 0x02, 0x02,
-    0x02, 0x42, 0x02, 0x42, 0x42, 0x42, 0x40, 0x42,
-    0x02, 0x02, 0x02, 0x02, 0x42, 0x42, 0x02, 0x02,
-    0x42, 0x02, 0x02, 0x02, 0x40, 0x40, 0x40, 0x40,
-    0x40, 0x40, 0x02, 0x42, 0x02, 0x02, 0x42, 0x42,
-    0x42, 0x02, 0x42, 0x02, 0x40, 0x40, 0x40, 0x40,
-    0x42, 0x42, 0x42, 0x42, 0x02, 0x02, 0x02, 0x02,
+    0x40, 0x02, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x40,
+    0x02, 0x02, 0x02, 0x02, 0x02, 0x40, 0x40, 0x02,
     0x40, 0x02, 0x02, 0x02, 0x02, 0x40, 0x40, 0x40,
-    0x40, 0x02, 0x40, 0x40, 0x42, 0x40, 0x40, 0x40,
-    0x01, 0x02, 0x0d, 0x01, 0x01, 0xc0, 0x40, 0x40,
-    0xc0, 0xc0, 0xc0, 0xc0, 0x40, 0x40, 0xc0, 0xc0,
-    0x40, 0x40, 0x41, 0x41, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x40, 0xc0, 0x40, 0xc0, 0xc0, 0x40, 0xc0,
-    0x40, 0x40, 0x40, 0xc0, 0x4c, 0x40, 0xc0, 0x40,
-    0x4c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x01,
-    0x01, 0x01, 0x01, 0x01, 0x41, 0x01, 0x01, 0x01,
-    0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x40, 0x40,
-    0xc0, 0x40, 0xc0, 0x40, 0x40, 0xc0, 0xcc, 0x40,
-    0x40, 0x40, 0xc0, 0x40, 0xc0, 0xc0, 0xc0, 0xc0,
-    0xcc, 0xcc, 0xcc, 0xcc, 0x40, 0x40, 0x40, 0x40,
-    0x40, 0x40, 0x4c, 0x4c, 0x40, 0x40, 0x40, 0x40,
-    0x40, 0xc0, 0x40, 0xc0, 0x40, 0x40, 0x40, 0xc0,
-    0x40, 0x40, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0x40,
-    0x40, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x40, 0xc0,
-    0x40, 0x40, 0x40, 0xc0, 0x40, 0x40, 0x40, 0xc0,
-    0xc0, 0x40, 0x40, 0xc0, 0xc0, 0xc0, 0xc0, 0x40,
-    0x40, 0x8c, 0x8c, 0x40, 0x40, 0x40, 0x40, 0x4c,
-    0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4c,
-    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4c,
-    0x40, 0x8c, 0x8c, 0x8c, 0x8c, 0x4c, 0x4c, 0x4c,
-    0x8c, 0x4c, 0x4c, 0x8c, 0x40, 0x40, 0x40, 0x40,
-    0x4c, 0x4c, 0x4c, 0x40, 0x40, 0x40, 0x40, 0x40,
-    0xc0, 0xc0, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
-    0x4c, 0x4c, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xc0,
-    0x40, 0x40, 0xcc, 0xc0, 0x40, 0x40, 0x40, 0x40,
-    0xc0, 0xc0, 0x40, 0x40, 0xc0, 0x40, 0x40, 0xc0,
-    0xc0, 0x40, 0x40, 0x40, 0x4c, 0x4c, 0x8c, 0x8c,
-    0x40, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0xcc, 0xc0,
-    0x4c, 0xcc, 0x4c, 0x4c, 0x4c, 0x4c, 0xcc, 0xcc,
-    0x4c, 0x4c, 0x4c, 0x40, 0x8c, 0x8c, 0x4c, 0x4c,
-    0x4c, 0x4c, 0xcc, 0x4c, 0xcc, 0x4c, 0x4c, 0x4c,
-    0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x8c, 0x8c, 0x8c,
-    0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x4c, 0x4c, 0x4c,
-    0x4c, 0xcc, 0xcc, 0x4c, 0xcc, 0xcc, 0xcc, 0x4c,
-    0xcc, 0xcc, 0x4c, 0xcc, 0x4c, 0x4c, 0x4c, 0x4c,
-    0x4c, 0x4c, 0x40, 0x40, 0x4c, 0x4c, 0x4c, 0x8c,
-    0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0xcc, 0xcc,
-    0x4c, 0x4c, 0x8c, 0x8c, 0x4c, 0x4c, 0x4c, 0x4c,
-    0x4c, 0x8c, 0x8c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
-    0xcc, 0x8c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
-    0xcc, 0xcc, 0x8c, 0x8c, 0xcc, 0x8c, 0xcc, 0xcc,
-    0x8c, 0xcc, 0xcc, 0x8c, 0xcc, 0xcc, 0x4c, 0x4c,
-    0x4c, 0x4c, 0x4c, 0x8c, 0x40, 0x40, 0x4c, 0x4c,
-    0x4c, 0x40, 0x4c, 0x40, 0x4c, 0x40, 0x8c, 0x40,
-    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4c, 0x40,
-    0x40, 0x4c, 0x40, 0x40, 0x40, 0x40, 0x8c, 0x40,
-    0x8c, 0x40, 0x40, 0x40, 0x8c, 0x8c, 0x8c, 0x40,
-    0x8c, 0x40, 0x40, 0x40, 0x4c, 0x4c, 0x4c, 0x4c,
-    0x4c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x8c, 0x8c,
-    0x8c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-    0x8c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4c, 0x4c,
-    0x4c, 0x40, 0x40, 0x40, 0x8c, 0x8c, 0x40, 0x40,
-    0x40, 0x40, 0x8c, 0xc0, 0xc0, 0x80, 0x80, 0x80,
-    0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x80, 0x80,
-    0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80,
-    0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x80,
-    0x80, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x8c,
-    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8c,
-    0x80, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-    0x80, 0x40, 0x02, 0x02, 0x80, 0x80, 0x80, 0x80,
-    0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80,
-    0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-    0x80, 0x8c, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
-    0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x40, 0x40,
-    0x02, 0x40, 0x40, 0x40, 0x02, 0x40, 0x40, 0x40,
-    0x42, 0x42, 0x02, 0x02, 0x42, 0x40, 0x40, 0x40,
-    0x40, 0x02, 0x40, 0x40, 0x40, 0x42, 0x42, 0x40,
-    0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x42,
-    0x42, 0x02, 0x02, 0x40, 0x40, 0x85, 0x85, 0x85,
-    0x85, 0x85, 0x40, 0x40, 0x40, 0x02, 0x42, 0x42,
-    0x02, 0x02, 0x42, 0x42, 0x02, 0x02, 0x42, 0x42,
-    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02,
-    0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x02, 0x02,
+    0x40, 0x40, 0x40, 0x40, 0x04, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x02, 0x40, 0x40, 0x02, 0x02, 0x40,
+    0x02, 0x02, 0x02, 0x02, 0x02, 0x40, 0x02, 0x02,
+    0x02, 0x40, 0x40, 0x40, 0x40, 0x04, 0x04, 0x40,
+    0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x04, 0x02,
+    0x02, 0x02, 0x02, 0x02, 0x42, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b,
+    0x4b, 0x4b, 0x02, 0x42, 0x02, 0x40, 0x42, 0x42,
+    0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42,
+    0x42, 0x42, 0x42, 0x0a, 0x42, 0x42, 0x40, 0x40,
+    0x02, 0x02, 0x40, 0x40, 0x40, 0x40, 0x02, 0x42,
+    0x42, 0x40, 0x40, 0x40, 0x40, 0x4b, 0x40, 0x4b,
+    0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x40, 0x4b, 0x40,
+    0x40, 0x40, 0x4b, 0x4b, 0x40, 0x40, 0x02, 0x40,
+    0x42, 0x42, 0x02, 0x02, 0x02, 0x02, 0x40, 0x40,
+    0x42, 0x40, 0x40, 0x42, 0x42, 0x0a, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x40, 0x40,
+    0x40, 0x40, 0x4b, 0x4b, 0x40, 0x4b, 0x4b, 0x40,
+    0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x40, 0x02,
+    0x02, 0x42, 0x40, 0x40, 0x40, 0x40, 0x02, 0x40,
     0x42, 0x42, 0x02, 0x02, 0x40, 0x40, 0x40, 0x40,
-    0x02, 0x42, 0x40, 0x40, 0x02, 0x40, 0x02, 0x02,
-    0x02, 0x40, 0x40, 0x02, 0x40, 0x40, 0x40, 0x42,
-    0x02, 0x02, 0x42, 0x42, 0x40, 0x40, 0x40, 0x40,
-    0x40, 0x42, 0x02, 0x40, 0x02, 0x42, 0x42, 0x40,
-    0x42, 0x02, 0x40, 0x40, 0x88, 0x89, 0x89, 0x89,
-    0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x89, 0x89,
-    0x89, 0x89, 0x40, 0x40, 0x40, 0x40, 0x46, 0x46,
-    0x46, 0x46, 0x46, 0x46, 0x46, 0x40, 0x40, 0x40,
-    0x47, 0x47, 0x47, 0x47, 0x47, 0x40, 0x40, 0x40,
-    0x40, 0x40, 0x40, 0x40, 0x01, 0x41, 0x01, 0x01,
-    0x01, 0x40, 0xc0, 0x40, 0x40, 0x02, 0x02, 0x02,
-    0x40, 0x02, 0x02, 0x40, 0x40, 0x40, 0x02, 0x02,
-    0x40, 0x40, 0x40, 0x02, 0x02, 0x02, 0x02, 0x40,
-    0x40, 0x42, 0x02, 0x42, 0x40, 0x40, 0x40, 0x40,
-    0x40, 0x02, 0x40, 0x40, 0x02, 0x02, 0x40, 0x40,
-    0x40, 0x42, 0x42, 0x42, 0x02, 0x02, 0x02, 0x02,
-    0x42, 0x02, 0x02, 0x40, 0x40, 0x04, 0x40, 0x40,
-    0x42, 0x40, 0x44, 0x44, 0x40, 0x40, 0x40, 0x40,
-    0x02, 0x02, 0x02, 0x02, 0x40, 0x42, 0x02, 0x40,
-    0x40, 0x40, 0x40, 0x42, 0x42, 0x42, 0x02, 0x02,
-    0x42, 0x42, 0x02, 0x42, 0x02, 0x02, 0x40, 0x40,
-    0x40, 0x02, 0x02, 0x40, 0x42, 0x42, 0x02, 0x42,
-    0x42, 0x42, 0x42, 0x40, 0x40, 0x42, 0x42, 0x42,
-    0x40, 0x40, 0x42, 0x42, 0x40, 0x40, 0x02, 0x02,
-    0x42, 0x42, 0x02, 0x02, 0x02, 0x42, 0x02, 0x40,
-    0x02, 0x42, 0x02, 0x42, 0x42, 0x42, 0x42, 0x02,
-    0x42, 0x02, 0x02, 0x40, 0x40, 0x40, 0x40, 0x42,
-    0x42, 0x42, 0x42, 0x02, 0x02, 0x42, 0x02, 0x02,
-    0x02, 0x42, 0x42, 0x02, 0x42, 0x02, 0x40, 0x40,
-    0x40, 0x02, 0x42, 0x02, 0x42, 0x42, 0x40, 0x40,
-    0x02, 0x02, 0x02, 0x02, 0x42, 0x02, 0x42, 0x42,
-    0x42, 0x42, 0x42, 0x42, 0x40, 0x42, 0x40, 0x40,
-    0x02, 0x02, 0x42, 0x02, 0x44, 0x42, 0x44, 0x42,
-    0x02, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x42,
-    0x42, 0x42, 0x42, 0x02, 0x40, 0x40, 0x40, 0x42,
-    0x40, 0x40, 0x40, 0x02, 0x42, 0x44, 0x02, 0x02,
-    0x02, 0x02, 0x40, 0x40, 0x40, 0x40, 0x44, 0x44,
-    0x44, 0x44, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-    0x40, 0x42, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
-    0x42, 0x02, 0x02, 0x42, 0x02, 0x02, 0x40, 0x02,
-    0x02, 0x02, 0x02, 0x02, 0x02, 0x40, 0x40, 0x02,
-    0x40, 0x02, 0x02, 0x40, 0x02, 0x02, 0x02, 0x02,
-    0x02, 0x02, 0x44, 0x02, 0x40, 0x40, 0x42, 0x42,
-    0x42, 0x42, 0x42, 0x40, 0x02, 0x02, 0x40, 0x42,
-    0x42, 0x02, 0x42, 0x02, 0x40, 0x40, 0x40, 0x02,
-    0x02, 0x42, 0x42, 0x40, 0x02, 0x02, 0x44, 0x42,
-    0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x02, 0x40,
-    0x40, 0x40, 0x42, 0x42, 0x02, 0x42, 0x02, 0x40,
-    0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
-    0x02, 0x40, 0x40, 0x40, 0x82, 0x82, 0x40, 0x40,
-    0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
-    0x40, 0x80, 0x80, 0x40, 0x40, 0x80, 0x40, 0x40,
-    0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40,
-    0x80, 0x40, 0x40, 0x01, 0x01, 0x01, 0x01, 0x40,
-    0x40, 0x40, 0x40, 0x42, 0x42, 0x42, 0x01, 0x01,
-    0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02,
-    0x40, 0x40, 0x02, 0x02, 0x02, 0x02, 0x02, 0x4c,
-    0x4c, 0x4c, 0x4c, 0x8c, 0x4c, 0x4c, 0x4c, 0xc0,
-    0xc0, 0xc0, 0x40, 0x40, 0x4c, 0x4c, 0x4c, 0xc0,
-    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x40, 0x4c, 0xc0,
-    0xc0, 0x40, 0x40, 0x4c, 0x4c, 0x4c, 0x4c, 0xcc,
-    0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcc,
-    0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x8c,
-    0xc0, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
-    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x4c, 0x4c, 0x4c,
-    0x4c, 0x4c, 0x4c, 0x43, 0x43, 0x43, 0x43, 0x43,
-    0x43, 0x43, 0x43, 0x80, 0x8c, 0x8c, 0x4c, 0x4c,
-    0x4c, 0x4c, 0x4c, 0x80, 0x80, 0x8c, 0x80, 0x80,
-    0x80, 0x80, 0x80, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
-    0x8c, 0x80, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
-    0x4c, 0x8c, 0x8c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
-    0x4c, 0x4c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
-    0x4c, 0x8c, 0x8c, 0x8c, 0x4c, 0x4c, 0x4c, 0x4c,
-    0x8c, 0x4c, 0x4c, 0x4c, 0x8c, 0x4c, 0x4c, 0x4c,
-    0x8c, 0x8c, 0x8c, 0x82, 0x82, 0x82, 0x82, 0x82,
-    0x8c, 0x4c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
+    0x02, 0x40, 0x40, 0x02, 0x02, 0x02, 0x40, 0x40,
+    0x40, 0x02, 0x40, 0x40, 0x4b, 0x40, 0x4b, 0x4b,
+    0x40, 0x4b, 0x4b, 0x4b, 0x42, 0x02, 0x02, 0x02,
+    0x02, 0x02, 0x40, 0x02, 0x42, 0x40, 0x42, 0x42,
+    0x0a, 0x40, 0x40, 0x4b, 0x02, 0x02, 0x02, 0x02,
+    0x02, 0x02, 0x4b, 0x4b, 0x40, 0x40, 0x02, 0x40,
+    0x42, 0x02, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02,
+    0x02, 0x42, 0x40, 0x4b, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x02, 0x40, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x42, 0x42, 0x02, 0x42, 0x42, 0x40, 0x40,
+    0x40, 0x42, 0x42, 0x40, 0x42, 0x42, 0x42, 0x02,
+    0x40, 0x40, 0x02, 0x42, 0x42, 0x42, 0x02, 0x40,
+    0x40, 0x40, 0x4b, 0x4b, 0x40, 0x40, 0x02, 0x40,
+    0x02, 0x02, 0x42, 0x42, 0x42, 0x42, 0x40, 0x02,
+    0x02, 0x40, 0x02, 0x02, 0x02, 0x0a, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x02, 0x02, 0x40, 0x4b, 0x4b,
+    0x4b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x40,
+    0x42, 0x02, 0x42, 0x42, 0x42, 0x42, 0x42, 0x40,
+    0x02, 0x42, 0x40, 0x42, 0x42, 0x02, 0x02, 0x40,
+    0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x40, 0x02,
+    0x02, 0x42, 0x42, 0x40, 0x40, 0x40, 0x40, 0x4b,
+    0x4b, 0x4b, 0x02, 0x02, 0x40, 0x42, 0x42, 0x02,
+    0x02, 0x02, 0x02, 0x40, 0x42, 0x42, 0x40, 0x42,
+    0x42, 0x42, 0x0a, 0x44, 0x40, 0x40, 0x02, 0x40,
+    0x40, 0x40, 0x40, 0x42, 0x42, 0x02, 0x02, 0x02,
+    0x40, 0x02, 0x40, 0x42, 0x42, 0x42, 0x42, 0x42,
+    0x42, 0x42, 0x42, 0x40, 0x40, 0x42, 0x42, 0x40,
+    0x40, 0x40, 0x40, 0x02, 0x40, 0x42, 0x02, 0x02,
+    0x02, 0x02, 0x42, 0x02, 0x02, 0x02, 0x02, 0x02,
+    0x02, 0x40, 0x02, 0x02, 0x42, 0x42, 0x02, 0x02,
+    0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x40, 0x40,
+    0x02, 0x40, 0x42, 0x02, 0x02, 0x40, 0x85, 0x85,
+    0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x46, 0x46,
+    0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x47, 0x47,
+    0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x40, 0x40,
+    0x02, 0x02, 0x02, 0x42, 0x40, 0x40, 0x02, 0x02,
+    0x42, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x42,
+    0x02, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x02,
+    0x42, 0x02, 0x02, 0x02, 0x42, 0x42, 0x42, 0x42,
+    0x02, 0x42, 0x42, 0x42, 0x40, 0x40, 0x40, 0x40,
+    0x42, 0x42, 0x02, 0x42, 0x42, 0x42, 0x42, 0x42,
+    0x02, 0x02, 0x02, 0x40, 0x40, 0x40, 0x40, 0x02,
+    0x42, 0x42, 0x02, 0x40, 0x40, 0x40, 0x40, 0x40,
+    0x42, 0x02, 0x42, 0x02, 0x40, 0x02, 0x40, 0x40,
+    0x02, 0x02, 0x02, 0x42, 0x42, 0x42, 0x02, 0x02,
+    0x02, 0x02, 0x02, 0x40, 0x40, 0x40, 0x40, 0x02,
+    0x42, 0x02, 0x02, 0x02, 0x42, 0x02, 0x42, 0x42,
+    0x42, 0x40, 0x42, 0x02, 0x02, 0x02, 0x02, 0x42,
+    0x42, 0x02, 0x02, 0x42, 0x02, 0x02, 0x02, 0x40,
+    0x40, 0x40, 0x40, 0x40, 0x40, 0x02, 0x42, 0x02,
+    0x02, 0x42, 0x42, 0x42, 0x02, 0x42, 0x02, 0x40,
+    0x40, 0x40, 0x40, 0x42, 0x42, 0x42, 0x42, 0x02,
+    0x02, 0x02, 0x02, 0x40, 0x02, 0x02, 0x02, 0x02,
+    0x40, 0x40, 0x40, 0x40, 0x02, 0x40, 0x40, 0x42,
+    0x40, 0x40, 0x40, 0x02, 0x02, 0x0d, 0x02, 0x02,
+    0xc0, 0x40, 0x40, 0xc0, 0xc0, 0xc0, 0xc0, 0x40,
+    0x40, 0xc0, 0xc0, 0x40, 0x40, 0x41, 0x41, 0x02,
+    0x02, 0x02, 0x02, 0x02, 0x40, 0xc0, 0x40, 0xc0,
+    0xc0, 0x40, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0x4c,
+    0x40, 0xc0, 0x40, 0x4c, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x02, 0x02, 0x02, 0x02, 0x02, 0x41,
+    0x02, 0x02, 0x40, 0x40, 0x40, 0xc0, 0x40, 0xc0,
+    0x40, 0x40, 0xc0, 0xcc, 0x40, 0x40, 0x40, 0xc0,
+    0x40, 0xc0, 0xc0, 0xc0, 0xc0, 0xcc, 0xcc, 0xcc,
+    0xcc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x4c,
+    0x4c, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x40,
+    0xc0, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x40, 0xc0,
+    0x40, 0x40, 0x40, 0xc0, 0x40, 0x40, 0xc0, 0xc0,
+    0xc0, 0xc0, 0xc0, 0x40, 0xc0, 0x40, 0x40, 0x40,
+    0xc0, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0x40, 0x40,
+    0xc0, 0xc0, 0xc0, 0xc0, 0x40, 0x40, 0x8c, 0x8c,
+    0x40, 0x40, 0x40, 0x40, 0x4c, 0x80, 0x80, 0x40,
+    0x40, 0x40, 0x40, 0x40, 0x4c, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x40, 0x4c, 0x40, 0x8c, 0x8c,
+    0x8c, 0x8c, 0x4c, 0x4c, 0x4c, 0x8c, 0x4c, 0x4c,
+    0x8c, 0x40, 0x40, 0x40, 0x40, 0x4c, 0x4c, 0x4c,
+    0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0xcc,
+    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x4c, 0x4c, 0x40,
+    0x40, 0x40, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xcc,
+    0xc0, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0x40,
+    0x40, 0xc0, 0x40, 0x40, 0xc0, 0xc0, 0x40, 0x40,
+    0x40, 0x4c, 0x4c, 0x8c, 0x8c, 0x40, 0x4c, 0x4c,
+    0x4c, 0x4c, 0x4c, 0xcc, 0xc0, 0x4c, 0xcc, 0x4c,
+    0x4c, 0x4c, 0x4c, 0xcc, 0xcc, 0x4c, 0x4c, 0x4c,
+    0x40, 0x8c, 0x8c, 0x4c, 0x4c, 0x4c, 0x4c, 0xcc,
+    0x4c, 0xcc, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
     0x4c, 0x4c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
-    0x40, 0x40, 0x4c, 0x4c, 0x4c, 0x8c, 0x8c, 0x8c,
-    0x8c, 0x4c, 0x40, 0x40, 0x40, 0x40, 0x4c, 0x4c,
+    0x8c, 0x8c, 0x4c, 0x4c, 0x4c, 0x4c, 0xcc, 0xcc,
+    0x4c, 0xcc, 0xcc, 0xcc, 0x4c, 0xcc, 0xcc, 0x4c,
+    0xcc, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x40,
+    0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x4c,
+    0x4c, 0x4c, 0x8c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x4c, 0xcc, 0xcc, 0x4c, 0x4c, 0x8c, 0x8c, 0x4c,
+    0x4c, 0x4c, 0x4c, 0x4c, 0x8c, 0x8c, 0xcc, 0xcc,
+    0xcc, 0xcc, 0xcc, 0xcc, 0x8c, 0xcc, 0xcc, 0xcc,
+    0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x8c, 0x8c, 0xcc,
+    0x8c, 0xcc, 0xcc, 0x8c, 0xcc, 0xcc, 0x8c, 0xcc,
+    0xcc, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x8c, 0x40,
+    0x40, 0x4c, 0x4c, 0x4c, 0x40, 0x4c, 0x40, 0x4c,
+    0x40, 0x8c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x4c, 0x40, 0x40, 0x4c, 0x40, 0x40, 0x40,
+    0x40, 0x8c, 0x40, 0x8c, 0x40, 0x40, 0x40, 0x8c,
+    0x8c, 0x8c, 0x40, 0x8c, 0x40, 0x40, 0x40, 0x4c,
     0x4c, 0x4c, 0x4c, 0x4c, 0x40, 0x40, 0x40, 0x40,
-    0x8c, 0x8c, 0x8c, 0x8c, 0x40, 0x8c, 0x8c, 0x8c,
-    0x8c, 0x8c, 0x8c, 0x40, 0x8c, 0x41, 0x01, 0x41,
-    0x41, 0x41, 0x41, 0x41, 0x41, 0xc0, 0xc0, 0xc0,
-    0xc0, 0xc0, 0xc0, 0x40, 0x40,
+    0x40, 0x8c, 0x8c, 0x8c, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x8c, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x4c, 0x4c, 0x4c, 0x40, 0x40, 0x40, 0x8c,
+    0x8c, 0x40, 0x40, 0x40, 0x40, 0x8c, 0xc0, 0xc0,
+    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+    0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40,
+    0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+    0x40, 0x40, 0x80, 0x80, 0x02, 0x02, 0x02, 0x02,
+    0x82, 0x82, 0x8c, 0x80, 0x80, 0x80, 0x80, 0x80,
+    0x80, 0x80, 0x8c, 0x80, 0x40, 0x80, 0x80, 0x80,
+    0x80, 0x80, 0x80, 0x80, 0x40, 0x02, 0x02, 0x80,
+    0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x80, 0x8c, 0x80, 0x80, 0x80,
+    0x80, 0x80, 0x80, 0x02, 0x02, 0x02, 0x02, 0x02,
+    0x02, 0x40, 0x40, 0x02, 0x40, 0x40, 0x40, 0x02,
+    0x40, 0x40, 0x40, 0x42, 0x42, 0x02, 0x02, 0x42,
+    0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42,
+    0x42, 0x42, 0x42, 0x02, 0x02, 0x40, 0x40, 0x85,
+    0x85, 0x85, 0x85, 0x85, 0x40, 0x40, 0x40, 0x02,
+    0x42, 0x42, 0x02, 0x02, 0x42, 0x42, 0x02, 0x02,
+    0x42, 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+    0x40, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42,
+    0x02, 0x02, 0x42, 0x42, 0x02, 0x02, 0x40, 0x40,
+    0x40, 0x40, 0x02, 0x42, 0x40, 0x40, 0x02, 0x40,
+    0x02, 0x02, 0x02, 0x40, 0x40, 0x02, 0x40, 0x40,
+    0x40, 0x42, 0x02, 0x02, 0x42, 0x42, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x42, 0x02, 0x40, 0x02, 0x42,
+    0x42, 0x40, 0x42, 0x02, 0x40, 0x40, 0x88, 0x89,
+    0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88,
+    0x89, 0x89, 0x89, 0x89, 0x40, 0x40, 0x40, 0x40,
+    0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x40,
+    0x40, 0x40, 0x47, 0x47, 0x47, 0x47, 0x47, 0x40,
+    0x40, 0x40, 0x40, 0x41, 0x02, 0x02, 0x02, 0x40,
+    0xc0, 0x40, 0x40, 0x02, 0x02, 0x02, 0x40, 0x02,
+    0x02, 0x40, 0x40, 0x40, 0x02, 0x02, 0x40, 0x40,
+    0x40, 0x02, 0x02, 0x02, 0x02, 0x40, 0x40, 0x42,
+    0x02, 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x02,
+    0x40, 0x40, 0x02, 0x02, 0x40, 0x40, 0x40, 0x42,
+    0x42, 0x42, 0x02, 0x02, 0x02, 0x02, 0x42, 0x02,
+    0x02, 0x40, 0x40, 0x04, 0x40, 0x40, 0x42, 0x40,
+    0x44, 0x44, 0x40, 0x40, 0x40, 0x40, 0x02, 0x02,
+    0x02, 0x02, 0x40, 0x42, 0x02, 0x40, 0x40, 0x40,
+    0x40, 0x42, 0x42, 0x42, 0x02, 0x02, 0x42, 0x42,
+    0x02, 0x42, 0x02, 0x02, 0x40, 0x40, 0x40, 0x02,
+    0x02, 0x40, 0x42, 0x42, 0x02, 0x42, 0x42, 0x42,
+    0x42, 0x40, 0x40, 0x42, 0x42, 0x42, 0x40, 0x40,
+    0x42, 0x42, 0x40, 0x40, 0x02, 0x02, 0x40, 0x42,
+    0x40, 0x40, 0x42, 0x40, 0x42, 0x42, 0x42, 0x40,
+    0x42, 0x42, 0x02, 0x42, 0x02, 0x44, 0x02, 0x40,
+    0x40, 0x40, 0x40, 0x40, 0x02, 0x02, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x42, 0x42, 0x02, 0x02, 0x02,
+    0x42, 0x02, 0x40, 0x02, 0x42, 0x02, 0x42, 0x42,
+    0x42, 0x42, 0x02, 0x42, 0x02, 0x02, 0x40, 0x40,
+    0x40, 0x40, 0x42, 0x42, 0x42, 0x42, 0x02, 0x02,
+    0x42, 0x02, 0x02, 0x02, 0x42, 0x42, 0x02, 0x42,
+    0x02, 0x40, 0x40, 0x40, 0x02, 0x42, 0x02, 0x42,
+    0x42, 0x40, 0x40, 0x02, 0x02, 0x02, 0x02, 0x42,
+    0x02, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x40,
+    0x42, 0x40, 0x40, 0x02, 0x02, 0x42, 0x02, 0x44,
+    0x42, 0x44, 0x42, 0x02, 0x40, 0x40, 0x40, 0x40,
+    0x02, 0x02, 0x42, 0x42, 0x42, 0x42, 0x02, 0x40,
+    0x40, 0x40, 0x42, 0x40, 0x40, 0x40, 0x02, 0x42,
+    0x44, 0x02, 0x02, 0x02, 0x02, 0x40, 0x40, 0x40,
+    0x40, 0x44, 0x44, 0x44, 0x44, 0x02, 0x02, 0x02,
+    0x02, 0x02, 0x02, 0x40, 0x42, 0x02, 0x02, 0x02,
+    0x02, 0x02, 0x02, 0x42, 0x02, 0x02, 0x42, 0x02,
+    0x02, 0x40, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+    0x40, 0x40, 0x02, 0x40, 0x02, 0x02, 0x40, 0x02,
+    0x02, 0x02, 0x02, 0x02, 0x02, 0x44, 0x02, 0x40,
+    0x40, 0x42, 0x42, 0x42, 0x42, 0x42, 0x40, 0x02,
+    0x02, 0x40, 0x42, 0x42, 0x02, 0x42, 0x02, 0x40,
+    0x40, 0x40, 0x02, 0x02, 0x42, 0x42, 0x40, 0x02,
+    0x02, 0x44, 0x42, 0x40, 0x40, 0x40, 0x40, 0x02,
+    0x02, 0x02, 0x40, 0x40, 0x40, 0x42, 0x42, 0x02,
+    0x42, 0x02, 0x40, 0x40, 0x40, 0x40, 0x40, 0x46,
+    0x40, 0x40, 0x40, 0x46, 0x46, 0x46, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x02,
+    0x40, 0x40, 0x40, 0x82, 0x82, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40,
+    0x80, 0x80, 0x40, 0x40, 0x80, 0x40, 0x40, 0x40,
+    0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x80,
+    0x40, 0x40, 0x02, 0x02, 0x02, 0x40, 0x40, 0x02,
+    0x02, 0x02, 0x02, 0x02, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x8c, 0x4c, 0x4c, 0x4c, 0xc0, 0xc0, 0xc0, 0x40,
+    0x40, 0x4c, 0x4c, 0x4c, 0xc0, 0xc0, 0xc0, 0xc0,
+    0xc0, 0xc0, 0x40, 0x4c, 0xc0, 0xc0, 0x40, 0x40,
+    0x4c, 0x4c, 0x4c, 0x4c, 0xcc, 0xcc, 0xc0, 0xc0,
+    0xc0, 0xc0, 0xc0, 0xc0, 0xcc, 0xcc, 0xc0, 0xc0,
+    0xc0, 0xc0, 0xc0, 0xc0, 0x8c, 0xc0, 0x8c, 0x8c,
+    0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0xc0, 0xc0, 0xc0,
+    0xc0, 0xc0, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
+    0x80, 0x8c, 0x8c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x80, 0x80, 0x8c, 0x80, 0x80, 0x80, 0x80, 0x80,
+    0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x80, 0x4c,
+    0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x8c, 0x8c,
+    0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x8c,
+    0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x4c, 0x8c, 0x8c,
+    0x8c, 0x4c, 0x4c, 0x4c, 0x4c, 0x8c, 0x4c, 0x4c,
+    0x4c, 0x8c, 0x4c, 0x4c, 0x4c, 0x8c, 0x8c, 0x8c,
+    0x82, 0x82, 0x82, 0x82, 0x82, 0x8c, 0x4c, 0x8c,
+    0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x4c, 0x4c, 0x8c,
+    0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x40, 0x40, 0x4c,
+    0x4c, 0x4c, 0x8c, 0x8c, 0x8c, 0x8c, 0x4c, 0x40,
+    0x40, 0x40, 0x40, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
+    0x4c, 0x40, 0x40, 0x40, 0x40, 0x8c, 0x8c, 0x8c,
+    0x8c, 0x40, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c,
+    0x40, 0x8c, 0x41, 0x02, 0x41, 0x41, 0x41, 0x41,
+    0x41, 0x41, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
+    0x40, 0x40,
 };
 static constexpr uint32_t s_joinRules[2][16] = {
     {
diff --git a/src/types/ut_types/CodepointWidthDetectorTests.cpp b/src/types/ut_types/CodepointWidthDetectorTests.cpp
index cd849611517..2a112f87c7c 100644
--- a/src/types/ut_types/CodepointWidthDetectorTests.cpp
+++ b/src/types/ut_types/CodepointWidthDetectorTests.cpp
@@ -26,7 +26,7 @@
 //   Same thing here. Any RI joins with any preceding RI.
 
 // Generated by GraphemeTestTableGen
-// on 2024-05-27T21:06:21Z, from Unicode 15.1.0
+// on 2024-12-04T14:29:59Z, from Unicode 16.0.0
 struct GraphemeBreakTest
 {
     const wchar_t* comment;
@@ -41,8 +41,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L" \x0308", L"\n" },
     { L"÷ [0.2] SPACE (Other) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L" ", L"\x01" },
     { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L" \x0308", L"\x01" },
-    { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L" \x034F" },
-    { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L" \x0308\x034F" },
+    { L"÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L" \x200C" },
+    { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L" \x0308\x200C" },
     { L"÷ [0.2] SPACE (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L" ", L"\U0001F1E6" },
     { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L" \x0308", L"\U0001F1E6" },
     { L"÷ [0.2] SPACE (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L" ", L"\x0600" },
@@ -59,8 +59,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L" \x0308", L"\xAC00" },
     { L"÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L" ", L"\xAC01" },
     { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L" \x0308", L"\xAC01" },
-    { L"÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L" \x0900" },
-    { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L" \x0308\x0900" },
     { L"÷ [0.2] SPACE (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L" \x0903" },
     { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L" \x0308\x0903" },
     { L"÷ [0.2] SPACE (Other) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L" ", L"\x0904" },
@@ -73,8 +71,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L" \x0308", L"\x231A" },
     { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L" \x0300" },
     { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L" \x0308\x0300" },
-    { L"÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L" \x093C" },
-    { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L" \x0308\x093C" },
+    { L"÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L" \x0900" },
+    { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L" \x0308\x0900" },
     { L"÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L" \x094D" },
     { L"÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L" \x0308\x094D" },
     { L"÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L" \x200D" },
@@ -89,8 +87,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\r", L"\x0308", L"\n" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3]", L"\r", L"\x01" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\r", L"\x0308", L"\x01" },
-    { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\r", L"\x034F" },
-    { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\r", L"\x0308\x034F" },
+    { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\r", L"\x200C" },
+    { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\r", L"\x0308\x200C" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\r", L"\U0001F1E6" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\r", L"\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\r", L"\x0600" },
@@ -107,8 +105,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\r", L"\x0308", L"\xAC00" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\r", L"\xAC01" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\r", L"\x0308", L"\xAC01" },
-    { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\r", L"\x0900" },
-    { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\r", L"\x0308\x0900" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\r", L"\x0903" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\r", L"\x0308\x0903" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\r", L"\x0904" },
@@ -121,8 +117,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\r", L"\x0308", L"\x231A" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\r", L"\x0300" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\r", L"\x0308\x0300" },
-    { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\r", L"\x093C" },
-    { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\r", L"\x0308\x093C" },
+    { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\r", L"\x0900" },
+    { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\r", L"\x0308\x0900" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\r", L"\x094D" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\r", L"\x0308\x094D" },
     { L"÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\r", L"\x200D" },
@@ -137,8 +133,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\n", L"\x0308", L"\n" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3]", L"\n", L"\x01" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\n", L"\x0308", L"\x01" },
-    { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\n", L"\x034F" },
-    { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\n", L"\x0308\x034F" },
+    { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\n", L"\x200C" },
+    { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\n", L"\x0308\x200C" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\n", L"\U0001F1E6" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\n", L"\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\n", L"\x0600" },
@@ -155,8 +151,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\n", L"\x0308", L"\xAC00" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\n", L"\xAC01" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\n", L"\x0308", L"\xAC01" },
-    { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\n", L"\x0900" },
-    { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\n", L"\x0308\x0900" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\n", L"\x0903" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\n", L"\x0308\x0903" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\n", L"\x0904" },
@@ -169,8 +163,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\n", L"\x0308", L"\x231A" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\n", L"\x0300" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\n", L"\x0308\x0300" },
-    { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\n", L"\x093C" },
-    { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\n", L"\x0308\x093C" },
+    { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\n", L"\x0900" },
+    { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\n", L"\x0308\x0900" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\n", L"\x094D" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\n", L"\x0308\x094D" },
     { L"÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\n", L"\x200D" },
@@ -185,8 +179,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x01", L"\x0308", L"\n" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x01", L"\x01" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x01", L"\x0308", L"\x01" },
-    { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x01", L"\x034F" },
-    { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x01", L"\x0308\x034F" },
+    { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x01", L"\x200C" },
+    { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x01", L"\x0308\x200C" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x01", L"\U0001F1E6" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x01", L"\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x01", L"\x0600" },
@@ -203,8 +197,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x01", L"\x0308", L"\xAC00" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x01", L"\xAC01" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x01", L"\x0308", L"\xAC01" },
-    { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x01", L"\x0900" },
-    { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x01", L"\x0308\x0900" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x01", L"\x0903" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x01", L"\x0308\x0903" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x01", L"\x0904" },
@@ -217,62 +209,60 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x01", L"\x0308", L"\x231A" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x01", L"\x0300" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x01", L"\x0308\x0300" },
-    { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x01", L"\x093C" },
-    { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x01", L"\x0308\x093C" },
+    { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x01", L"\x0900" },
+    { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x01", L"\x0308\x0900" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x01", L"\x094D" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x01", L"\x0308\x094D" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x01", L"\x200D" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x01", L"\x0308\x200D" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]", L"\x01", L"\x0378" },
     { L"÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x01", L"\x0308", L"\x0378" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x034F", L" " },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x034F\x0308", L" " },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x034F", L"\r" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x034F\x0308", L"\r" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x034F", L"\n" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x034F\x0308", L"\n" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x034F", L"\x01" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x034F\x0308", L"\x01" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x034F\x034F" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x034F\x0308\x034F" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x034F", L"\U0001F1E6" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x034F\x0308", L"\U0001F1E6" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x034F", L"\x0600" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x034F\x0308", L"\x0600" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]", L"\x034F\x0A03" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]", L"\x034F\x0308\x0A03" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]", L"\x034F", L"\x1100" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]", L"\x034F\x0308", L"\x1100" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]", L"\x034F", L"\x1160" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]", L"\x034F\x0308", L"\x1160" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]", L"\x034F", L"\x11A8" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]", L"\x034F\x0308", L"\x11A8" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x034F", L"\xAC00" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x034F\x0308", L"\xAC00" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x034F", L"\xAC01" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x034F\x0308", L"\xAC01" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x034F\x0900" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x034F\x0308\x0900" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x034F\x0903" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x034F\x0308\x0903" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x034F", L"\x0904" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x034F\x0308", L"\x0904" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]", L"\x034F", L"\x0D4E" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]", L"\x034F\x0308", L"\x0D4E" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x034F", L"\x0915" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x034F\x0308", L"\x0915" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x034F", L"\x231A" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x034F\x0308", L"\x231A" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x034F\x0300" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x034F\x0308\x0300" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x034F\x093C" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x034F\x0308\x093C" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x034F\x094D" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x034F\x0308\x094D" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x034F\x200D" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x034F\x0308\x200D" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x034F", L"\x0378" },
-    { L"÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x034F\x0308", L"\x0378" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x200C", L" " },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x200C\x0308", L" " },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x200C", L"\r" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x200C\x0308", L"\r" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x200C", L"\n" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x200C\x0308", L"\n" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x200C", L"\x01" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x200C\x0308", L"\x01" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x200C\x200C" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x200C\x0308\x200C" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x200C", L"\U0001F1E6" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x200C\x0308", L"\U0001F1E6" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x200C", L"\x0600" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x200C\x0308", L"\x0600" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]", L"\x200C\x0A03" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]", L"\x200C\x0308\x0A03" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]", L"\x200C", L"\x1100" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]", L"\x200C\x0308", L"\x1100" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]", L"\x200C", L"\x1160" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]", L"\x200C\x0308", L"\x1160" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]", L"\x200C", L"\x11A8" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]", L"\x200C\x0308", L"\x11A8" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x200C", L"\xAC00" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x200C\x0308", L"\xAC00" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x200C", L"\xAC01" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x200C\x0308", L"\xAC01" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x200C\x0903" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x200C\x0308\x0903" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x200C", L"\x0904" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x200C\x0308", L"\x0904" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]", L"\x200C", L"\x0D4E" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]", L"\x200C\x0308", L"\x0D4E" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x200C", L"\x0915" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x200C\x0308", L"\x0915" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x200C", L"\x231A" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x200C\x0308", L"\x231A" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x200C\x0300" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x200C\x0308\x0300" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x200C\x0900" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x200C\x0308\x0900" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x200C\x094D" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x200C\x0308\x094D" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x200C\x200D" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x200C\x0308\x200D" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x200C", L"\x0378" },
+    { L"÷ [0.2] ZERO WIDTH NON-JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x200C\x0308", L"\x0378" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\U0001F1E6", L" " },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\U0001F1E6\x0308", L" " },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\U0001F1E6", L"\r" },
@@ -281,8 +271,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\U0001F1E6\x0308", L"\n" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\U0001F1E6", L"\x01" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\U0001F1E6\x0308", L"\x01" },
-    { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\U0001F1E6\x034F" },
-    { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\U0001F1E6\x0308\x034F" },
+    { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\U0001F1E6\x200C" },
+    { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\U0001F1E6\x0308\x200C" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\U0001F1E6\U0001F1E6" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\U0001F1E6\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\U0001F1E6", L"\x0600" },
@@ -299,8 +289,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\U0001F1E6\x0308", L"\xAC00" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\U0001F1E6", L"\xAC01" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\U0001F1E6\x0308", L"\xAC01" },
-    { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\U0001F1E6\x0900" },
-    { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\U0001F1E6\x0308\x0900" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\U0001F1E6\x0903" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\U0001F1E6\x0308\x0903" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\U0001F1E6", L"\x0904" },
@@ -313,8 +301,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\U0001F1E6\x0308", L"\x231A" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\U0001F1E6\x0300" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\U0001F1E6\x0308\x0300" },
-    { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\U0001F1E6\x093C" },
-    { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\U0001F1E6\x0308\x093C" },
+    { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\U0001F1E6\x0900" },
+    { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\U0001F1E6\x0308\x0900" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\U0001F1E6\x094D" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\U0001F1E6\x0308\x094D" },
     { L"÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\U0001F1E6\x200D" },
@@ -329,8 +317,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0600\x0308", L"\n" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0600", L"\x01" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0600\x0308", L"\x01" },
-    { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0600\x034F" },
-    { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0600\x0308\x034F" },
+    { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0600\x200C" },
+    { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0600\x0308\x200C" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0600\U0001F1E6" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0600\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0600\x0600" },
@@ -347,8 +335,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0600\x0308", L"\xAC00" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0600\xAC01" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0600\x0308", L"\xAC01" },
-    { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0600\x0900" },
-    { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0600\x0308\x0900" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0600\x0903" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0600\x0308\x0903" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0600\x0904" },
@@ -361,8 +347,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0600\x0308", L"\x231A" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0600\x0300" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0600\x0308\x0300" },
-    { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0600\x093C" },
-    { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0600\x0308\x093C" },
+    { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0600\x0900" },
+    { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0600\x0308\x0900" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0600\x094D" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0600\x0308\x094D" },
     { L"÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0600\x200D" },
@@ -377,8 +363,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0A03\x0308", L"\n" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0A03", L"\x01" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0A03\x0308", L"\x01" },
-    { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0A03\x034F" },
-    { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0A03\x0308\x034F" },
+    { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0A03\x200C" },
+    { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0A03\x0308\x200C" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0A03", L"\U0001F1E6" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0A03\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0A03", L"\x0600" },
@@ -395,8 +381,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0A03\x0308", L"\xAC00" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0A03", L"\xAC01" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0A03\x0308", L"\xAC01" },
-    { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0A03\x0900" },
-    { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0A03\x0308\x0900" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0A03\x0903" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0A03\x0308\x0903" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0A03", L"\x0904" },
@@ -409,8 +393,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0A03\x0308", L"\x231A" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0A03\x0300" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0A03\x0308\x0300" },
-    { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0A03\x093C" },
-    { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0A03\x0308\x093C" },
+    { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0A03\x0900" },
+    { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0A03\x0308\x0900" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0A03\x094D" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0A03\x0308\x094D" },
     { L"÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0A03\x200D" },
@@ -425,8 +409,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x1100\x0308", L"\n" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x1100", L"\x01" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x1100\x0308", L"\x01" },
-    { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x1100\x034F" },
-    { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x1100\x0308\x034F" },
+    { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x1100\x200C" },
+    { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x1100\x0308\x200C" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x1100", L"\U0001F1E6" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x1100\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x1100", L"\x0600" },
@@ -443,8 +427,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x1100\x0308", L"\xAC00" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x1100\xAC01" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x1100\x0308", L"\xAC01" },
-    { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x1100\x0900" },
-    { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x1100\x0308\x0900" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x1100\x0903" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x1100\x0308\x0903" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x1100", L"\x0904" },
@@ -457,8 +439,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x1100\x0308", L"\x231A" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x1100\x0300" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x1100\x0308\x0300" },
-    { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x1100\x093C" },
-    { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x1100\x0308\x093C" },
+    { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x1100\x0900" },
+    { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x1100\x0308\x0900" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x1100\x094D" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x1100\x0308\x094D" },
     { L"÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x1100\x200D" },
@@ -473,8 +455,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x1160\x0308", L"\n" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x1160", L"\x01" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x1160\x0308", L"\x01" },
-    { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x1160\x034F" },
-    { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x1160\x0308\x034F" },
+    { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x1160\x200C" },
+    { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x1160\x0308\x200C" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x1160", L"\U0001F1E6" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x1160\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x1160", L"\x0600" },
@@ -491,8 +473,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x1160\x0308", L"\xAC00" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x1160", L"\xAC01" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x1160\x0308", L"\xAC01" },
-    { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x1160\x0900" },
-    { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x1160\x0308\x0900" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x1160\x0903" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x1160\x0308\x0903" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x1160", L"\x0904" },
@@ -505,8 +485,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x1160\x0308", L"\x231A" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x1160\x0300" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x1160\x0308\x0300" },
-    { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x1160\x093C" },
-    { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x1160\x0308\x093C" },
+    { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x1160\x0900" },
+    { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x1160\x0308\x0900" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x1160\x094D" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x1160\x0308\x094D" },
     { L"÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x1160\x200D" },
@@ -521,8 +501,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x11A8\x0308", L"\n" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x11A8", L"\x01" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x11A8\x0308", L"\x01" },
-    { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x11A8\x034F" },
-    { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x11A8\x0308\x034F" },
+    { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x11A8\x200C" },
+    { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x11A8\x0308\x200C" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x11A8", L"\U0001F1E6" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x11A8\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x11A8", L"\x0600" },
@@ -539,8 +519,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x11A8\x0308", L"\xAC00" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x11A8", L"\xAC01" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x11A8\x0308", L"\xAC01" },
-    { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x11A8\x0900" },
-    { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x11A8\x0308\x0900" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x11A8\x0903" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x11A8\x0308\x0903" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x11A8", L"\x0904" },
@@ -553,8 +531,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x11A8\x0308", L"\x231A" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x11A8\x0300" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x11A8\x0308\x0300" },
-    { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x11A8\x093C" },
-    { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x11A8\x0308\x093C" },
+    { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x11A8\x0900" },
+    { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x11A8\x0308\x0900" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x11A8\x094D" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x11A8\x0308\x094D" },
     { L"÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x11A8\x200D" },
@@ -569,8 +547,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\xAC00\x0308", L"\n" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\xAC00", L"\x01" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\xAC00\x0308", L"\x01" },
-    { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\xAC00\x034F" },
-    { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\xAC00\x0308\x034F" },
+    { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\xAC00\x200C" },
+    { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\xAC00\x0308\x200C" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\xAC00", L"\U0001F1E6" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\xAC00\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\xAC00", L"\x0600" },
@@ -587,8 +565,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\xAC00\x0308", L"\xAC00" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\xAC00", L"\xAC01" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\xAC00\x0308", L"\xAC01" },
-    { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\xAC00\x0900" },
-    { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\xAC00\x0308\x0900" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\xAC00\x0903" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\xAC00\x0308\x0903" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\xAC00", L"\x0904" },
@@ -601,8 +577,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\xAC00\x0308", L"\x231A" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\xAC00\x0300" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\xAC00\x0308\x0300" },
-    { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\xAC00\x093C" },
-    { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\xAC00\x0308\x093C" },
+    { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\xAC00\x0900" },
+    { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\xAC00\x0308\x0900" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\xAC00\x094D" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\xAC00\x0308\x094D" },
     { L"÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\xAC00\x200D" },
@@ -617,8 +593,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\xAC01\x0308", L"\n" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\xAC01", L"\x01" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\xAC01\x0308", L"\x01" },
-    { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\xAC01\x034F" },
-    { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\xAC01\x0308\x034F" },
+    { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\xAC01\x200C" },
+    { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\xAC01\x0308\x200C" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\xAC01", L"\U0001F1E6" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\xAC01\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\xAC01", L"\x0600" },
@@ -635,8 +611,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\xAC01\x0308", L"\xAC00" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\xAC01", L"\xAC01" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\xAC01\x0308", L"\xAC01" },
-    { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\xAC01\x0900" },
-    { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\xAC01\x0308\x0900" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\xAC01\x0903" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\xAC01\x0308\x0903" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\xAC01", L"\x0904" },
@@ -649,62 +623,14 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\xAC01\x0308", L"\x231A" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\xAC01\x0300" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\xAC01\x0308\x0300" },
-    { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\xAC01\x093C" },
-    { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\xAC01\x0308\x093C" },
+    { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\xAC01\x0900" },
+    { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\xAC01\x0308\x0900" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\xAC01\x094D" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\xAC01\x0308\x094D" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\xAC01\x200D" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\xAC01\x0308\x200D" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\xAC01", L"\x0378" },
     { L"÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\xAC01\x0308", L"\x0378" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x0900", L" " },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x0900\x0308", L" " },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x0900", L"\r" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x0900\x0308", L"\r" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0900", L"\n" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0900\x0308", L"\n" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0900", L"\x01" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0900\x0308", L"\x01" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0900\x034F" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0900\x0308\x034F" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0900", L"\U0001F1E6" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0900\x0308", L"\U0001F1E6" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0900", L"\x0600" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0900\x0308", L"\x0600" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]", L"\x0900\x0A03" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]", L"\x0900\x0308\x0A03" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]", L"\x0900", L"\x1100" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]", L"\x0900\x0308", L"\x1100" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]", L"\x0900", L"\x1160" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]", L"\x0900\x0308", L"\x1160" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]", L"\x0900", L"\x11A8" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]", L"\x0900\x0308", L"\x11A8" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0900", L"\xAC00" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0900\x0308", L"\xAC00" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0900", L"\xAC01" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0900\x0308", L"\xAC01" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0900\x0900" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0900\x0308\x0900" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0900\x0903" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0900\x0308\x0903" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0900", L"\x0904" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0900\x0308", L"\x0904" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0900", L"\x0D4E" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0900\x0308", L"\x0D4E" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x0900", L"\x0915" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x0900\x0308", L"\x0915" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0900", L"\x231A" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0900\x0308", L"\x231A" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0900\x0300" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0900\x0308\x0300" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0900\x093C" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0900\x0308\x093C" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0900\x094D" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0900\x0308\x094D" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0900\x200D" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0900\x0308\x200D" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x0900", L"\x0378" },
-    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x0900\x0308", L"\x0378" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x0903", L" " },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x0903\x0308", L" " },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x0903", L"\r" },
@@ -713,8 +639,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0903\x0308", L"\n" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0903", L"\x01" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0903\x0308", L"\x01" },
-    { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0903\x034F" },
-    { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0903\x0308\x034F" },
+    { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0903\x200C" },
+    { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0903\x0308\x200C" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0903", L"\U0001F1E6" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0903\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0903", L"\x0600" },
@@ -731,8 +657,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0903\x0308", L"\xAC00" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0903", L"\xAC01" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0903\x0308", L"\xAC01" },
-    { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0903\x0900" },
-    { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0903\x0308\x0900" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0903\x0903" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0903\x0308\x0903" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0903", L"\x0904" },
@@ -745,8 +669,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0903\x0308", L"\x231A" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0903\x0300" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0903\x0308\x0300" },
-    { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0903\x093C" },
-    { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0903\x0308\x093C" },
+    { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0903\x0900" },
+    { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0903\x0308\x0900" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0903\x094D" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0903\x0308\x094D" },
     { L"÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0903\x200D" },
@@ -761,8 +685,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0904\x0308", L"\n" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0904", L"\x01" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0904\x0308", L"\x01" },
-    { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0904\x034F" },
-    { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0904\x0308\x034F" },
+    { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0904\x200C" },
+    { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0904\x0308\x200C" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0904", L"\U0001F1E6" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0904\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0904", L"\x0600" },
@@ -779,8 +703,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0904\x0308", L"\xAC00" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0904", L"\xAC01" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0904\x0308", L"\xAC01" },
-    { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0904\x0900" },
-    { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0904\x0308\x0900" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0904\x0903" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0904\x0308\x0903" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0904", L"\x0904" },
@@ -793,8 +715,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0904\x0308", L"\x231A" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0904\x0300" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0904\x0308\x0300" },
-    { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0904\x093C" },
-    { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0904\x0308\x093C" },
+    { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0904\x0900" },
+    { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0904\x0308\x0900" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0904\x094D" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0904\x0308\x094D" },
     { L"÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0904\x200D" },
@@ -809,8 +731,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0D4E\x0308", L"\n" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0D4E", L"\x01" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0D4E\x0308", L"\x01" },
-    { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0D4E\x034F" },
-    { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0D4E\x0308\x034F" },
+    { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0D4E\x200C" },
+    { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0D4E\x0308\x200C" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0D4E\U0001F1E6" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0D4E\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0D4E\x0600" },
@@ -827,8 +749,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0D4E\x0308", L"\xAC00" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0D4E\xAC01" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0D4E\x0308", L"\xAC01" },
-    { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0D4E\x0900" },
-    { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0D4E\x0308\x0900" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0D4E\x0903" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0D4E\x0308\x0903" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0D4E\x0904" },
@@ -841,8 +761,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0D4E\x0308", L"\x231A" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0D4E\x0300" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0D4E\x0308\x0300" },
-    { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0D4E\x093C" },
-    { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0D4E\x0308\x093C" },
+    { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0D4E\x0900" },
+    { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0D4E\x0308\x0900" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0D4E\x094D" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0D4E\x0308\x094D" },
     { L"÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0D4E\x200D" },
@@ -857,8 +777,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0915\x0308", L"\n" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0915", L"\x01" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0915\x0308", L"\x01" },
-    { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0915\x034F" },
-    { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0915\x0308\x034F" },
+    { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0915\x200C" },
+    { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0915\x0308\x200C" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0915", L"\U0001F1E6" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0915\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0915", L"\x0600" },
@@ -875,8 +795,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0915\x0308", L"\xAC00" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0915", L"\xAC01" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0915\x0308", L"\xAC01" },
-    { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0915\x0900" },
-    { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0915\x0308\x0900" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0915\x0903" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0915\x0308\x0903" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0915", L"\x0904" },
@@ -889,8 +807,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0915\x0308", L"\x231A" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0915\x0300" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0915\x0308\x0300" },
-    { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0915\x093C" },
-    { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0915\x0308\x093C" },
+    { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0915\x0900" },
+    { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0915\x0308\x0900" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0915\x094D" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0915\x0308\x094D" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0915\x200D" },
@@ -905,8 +823,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x231A\x0308", L"\n" },
     { L"÷ [0.2] WATCH (ExtPict) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x231A", L"\x01" },
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x231A\x0308", L"\x01" },
-    { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x231A\x034F" },
-    { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x231A\x0308\x034F" },
+    { L"÷ [0.2] WATCH (ExtPict) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x231A\x200C" },
+    { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x231A\x0308\x200C" },
     { L"÷ [0.2] WATCH (ExtPict) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x231A", L"\U0001F1E6" },
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x231A\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] WATCH (ExtPict) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x231A", L"\x0600" },
@@ -923,8 +841,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x231A\x0308", L"\xAC00" },
     { L"÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x231A", L"\xAC01" },
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x231A\x0308", L"\xAC01" },
-    { L"÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x231A\x0900" },
-    { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x231A\x0308\x0900" },
     { L"÷ [0.2] WATCH (ExtPict) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x231A\x0903" },
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x231A\x0308\x0903" },
     { L"÷ [0.2] WATCH (ExtPict) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x231A", L"\x0904" },
@@ -937,8 +853,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x231A\x0308", L"\x231A" },
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x231A\x0300" },
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x231A\x0308\x0300" },
-    { L"÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x231A\x093C" },
-    { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x231A\x0308\x093C" },
+    { L"÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x231A\x0900" },
+    { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x231A\x0308\x0900" },
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x231A\x094D" },
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x231A\x0308\x094D" },
     { L"÷ [0.2] WATCH (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x231A\x200D" },
@@ -953,8 +869,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0300\x0308", L"\n" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0300", L"\x01" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0300\x0308", L"\x01" },
-    { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0300\x034F" },
-    { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0300\x0308\x034F" },
+    { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0300\x200C" },
+    { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0300\x0308\x200C" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0300", L"\U0001F1E6" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0300\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0300", L"\x0600" },
@@ -971,8 +887,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0300\x0308", L"\xAC00" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0300", L"\xAC01" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0300\x0308", L"\xAC01" },
-    { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0300\x0900" },
-    { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0300\x0308\x0900" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0300\x0903" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0300\x0308\x0903" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0300", L"\x0904" },
@@ -985,62 +899,60 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0300\x0308", L"\x231A" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0300\x0300" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0300\x0308\x0300" },
-    { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0300\x093C" },
-    { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0300\x0308\x093C" },
+    { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0300\x0900" },
+    { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0300\x0308\x0900" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0300\x094D" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0300\x0308\x094D" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0300\x200D" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0300\x0308\x200D" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x0300", L"\x0378" },
     { L"÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x0300\x0308", L"\x0378" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x093C", L" " },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x093C\x0308", L" " },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x093C", L"\r" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x093C\x0308", L"\r" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x093C", L"\n" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x093C\x0308", L"\n" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x093C", L"\x01" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x093C\x0308", L"\x01" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x093C\x034F" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x093C\x0308\x034F" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x093C", L"\U0001F1E6" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x093C\x0308", L"\U0001F1E6" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x093C", L"\x0600" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x093C\x0308", L"\x0600" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]", L"\x093C\x0A03" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]", L"\x093C\x0308\x0A03" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]", L"\x093C", L"\x1100" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]", L"\x093C\x0308", L"\x1100" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]", L"\x093C", L"\x1160" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]", L"\x093C\x0308", L"\x1160" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]", L"\x093C", L"\x11A8" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]", L"\x093C\x0308", L"\x11A8" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x093C", L"\xAC00" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x093C\x0308", L"\xAC00" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x093C", L"\xAC01" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x093C\x0308", L"\xAC01" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x093C\x0900" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x093C\x0308\x0900" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x093C\x0903" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x093C\x0308\x0903" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x093C", L"\x0904" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x093C\x0308", L"\x0904" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]", L"\x093C", L"\x0D4E" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]", L"\x093C\x0308", L"\x0D4E" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x093C", L"\x0915" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x093C\x0308", L"\x0915" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x093C", L"\x231A" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x093C\x0308", L"\x231A" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x093C\x0300" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x093C\x0308\x0300" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x093C\x093C" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x093C\x0308\x093C" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x093C\x094D" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x093C\x0308\x094D" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x093C\x200D" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x093C\x0308\x200D" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x093C", L"\x0378" },
-    { L"÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x093C\x0308", L"\x0378" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x0900", L" " },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x0900\x0308", L" " },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x0900", L"\r" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x0900\x0308", L"\r" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0900", L"\n" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0900\x0308", L"\n" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0900", L"\x01" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0900\x0308", L"\x01" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0900\x200C" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0900\x0308\x200C" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0900", L"\U0001F1E6" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0900\x0308", L"\U0001F1E6" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0900", L"\x0600" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0900\x0308", L"\x0600" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]", L"\x0900\x0A03" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]", L"\x0900\x0308\x0A03" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]", L"\x0900", L"\x1100" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]", L"\x0900\x0308", L"\x1100" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]", L"\x0900", L"\x1160" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]", L"\x0900\x0308", L"\x1160" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]", L"\x0900", L"\x11A8" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]", L"\x0900\x0308", L"\x11A8" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0900", L"\xAC00" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0900\x0308", L"\xAC00" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0900", L"\xAC01" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0900\x0308", L"\xAC01" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0900\x0903" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0900\x0308\x0903" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0900", L"\x0904" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0900\x0308", L"\x0904" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0900", L"\x0D4E" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0900\x0308", L"\x0D4E" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x0900", L"\x0915" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x0900\x0308", L"\x0915" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0900", L"\x231A" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0900\x0308", L"\x231A" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0900\x0300" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0900\x0308\x0300" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0900\x0900" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0900\x0308\x0900" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0900\x094D" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0900\x0308\x094D" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0900\x200D" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0900\x0308\x200D" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x0900", L"\x0378" },
+    { L"÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]", L"\x0900\x0308", L"\x0378" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x094D", L" " },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]", L"\x094D\x0308", L" " },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]", L"\x094D", L"\r" },
@@ -1049,8 +961,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x094D\x0308", L"\n" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x094D", L"\x01" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x094D\x0308", L"\x01" },
-    { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x094D\x034F" },
-    { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x094D\x0308\x034F" },
+    { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x094D\x200C" },
+    { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x094D\x0308\x200C" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x094D", L"\U0001F1E6" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x094D\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x094D", L"\x0600" },
@@ -1067,8 +979,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x094D\x0308", L"\xAC00" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x094D", L"\xAC01" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x094D\x0308", L"\xAC01" },
-    { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x094D\x0900" },
-    { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x094D\x0308\x0900" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x094D\x0903" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x094D\x0308\x0903" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x094D", L"\x0904" },
@@ -1081,8 +991,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x094D\x0308", L"\x231A" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x094D\x0300" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x094D\x0308\x0300" },
-    { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x094D\x093C" },
-    { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x094D\x0308\x093C" },
+    { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x094D\x0900" },
+    { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x094D\x0308\x0900" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x094D\x094D" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x094D\x0308\x094D" },
     { L"÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x094D\x200D" },
@@ -1097,8 +1007,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x200D\x0308", L"\n" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x200D", L"\x01" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x200D\x0308", L"\x01" },
-    { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x200D\x034F" },
-    { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x200D\x0308\x034F" },
+    { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x200D\x200C" },
+    { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x200D\x0308\x200C" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x200D", L"\U0001F1E6" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x200D\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x200D", L"\x0600" },
@@ -1115,8 +1025,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x200D\x0308", L"\xAC00" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x200D", L"\xAC01" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x200D\x0308", L"\xAC01" },
-    { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x200D\x0900" },
-    { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x200D\x0308\x0900" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x200D\x0903" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x200D\x0308\x0903" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x200D", L"\x0904" },
@@ -1129,8 +1037,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x200D\x0308", L"\x231A" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x200D\x0300" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x200D\x0308\x0300" },
-    { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x200D\x093C" },
-    { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x200D\x0308\x093C" },
+    { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x200D\x0900" },
+    { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x200D\x0308\x0900" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x200D\x094D" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x200D\x0308\x094D" },
     { L"÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x200D\x200D" },
@@ -1145,8 +1053,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]", L"\x0378\x0308", L"\n" },
     { L"÷ [0.2] <reserved-0378> (Other) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0378", L"\x01" },
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]", L"\x0378\x0308", L"\x01" },
-    { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0378\x034F" },
-    { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]", L"\x0378\x0308\x034F" },
+    { L"÷ [0.2] <reserved-0378> (Other) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0378\x200C" },
+    { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH NON-JOINER (Extend) ÷ [0.3]", L"\x0378\x0308\x200C" },
     { L"÷ [0.2] <reserved-0378> (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0378", L"\U0001F1E6" },
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]", L"\x0378\x0308", L"\U0001F1E6" },
     { L"÷ [0.2] <reserved-0378> (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]", L"\x0378", L"\x0600" },
@@ -1163,8 +1071,6 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]", L"\x0378\x0308", L"\xAC00" },
     { L"÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0378", L"\xAC01" },
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]", L"\x0378\x0308", L"\xAC01" },
-    { L"÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0378\x0900" },
-    { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]", L"\x0378\x0308\x0900" },
     { L"÷ [0.2] <reserved-0378> (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0378\x0903" },
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]", L"\x0378\x0308\x0903" },
     { L"÷ [0.2] <reserved-0378> (Other) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]", L"\x0378", L"\x0904" },
@@ -1177,8 +1083,8 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]", L"\x0378\x0308", L"\x231A" },
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0378\x0300" },
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]", L"\x0378\x0308\x0300" },
-    { L"÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0378\x093C" },
-    { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0378\x0308\x093C" },
+    { L"÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0378\x0900" },
+    { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]", L"\x0378\x0308\x0900" },
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0378\x094D" },
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]", L"\x0378\x0308\x094D" },
     { L"÷ [0.2] <reserved-0378> (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]", L"\x0378\x200D" },
@@ -1201,10 +1107,10 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     { L"÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]", L"a\x0308", L"b" },
     { L"÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]", L"a\x0903", L"b" },
     { L"÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3]", L"a", L"\x0600b" },
-    { L"÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3]", L"\U0001F476\U0001F3FF", L"\U0001F476" },
-    { L"÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3]", L"a\U0001F3FF", L"\U0001F476" },
-    { L"÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3]", L"a\U0001F3FF", L"\U0001F476\x200D\U0001F6D1" },
-    { L"÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [0.3]", L"\U0001F476\U0001F3FF\x0308\x200D\U0001F476\U0001F3FF" },
+    { L"÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_ExtCccZwj) ÷ [999.0] BABY (ExtPict) ÷ [0.3]", L"\U0001F476\U0001F3FF", L"\U0001F476" },
+    { L"÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_ExtCccZwj) ÷ [999.0] BABY (ExtPict) ÷ [0.3]", L"a\U0001F3FF", L"\U0001F476" },
+    { L"÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_ExtCccZwj) ÷ [999.0] BABY (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3]", L"a\U0001F3FF", L"\U0001F476\x200D\U0001F6D1" },
+    { L"÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend_ExtCccZwj) ÷ [0.3]", L"\U0001F476\U0001F3FF\x0308\x200D\U0001F476\U0001F3FF" },
     { L"÷ [0.2] OCTAGONAL SIGN (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3]", L"\U0001F6D1\x200D\U0001F6D1" },
     //{ L"÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3]", L"a\x200D", L"\U0001F6D1" },
     { L"÷ [0.2] UPPER BLADE SCISSORS (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] UPPER BLADE SCISSORS (Other) ÷ [0.3]", L"\x2701\x200D\x2701" },
@@ -1220,12 +1126,19 @@ static constexpr GraphemeBreakTest s_graphemeBreakTests[] = {
     //{ L"÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"a\x094D", L"\x0924" },
     //{ L"÷ [0.2] QUESTION MARK (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"?\x094D", L"\x0924" },
     { L"÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]", L"\x0915\x094D\x094D\x0924" },
+};
 
-    // These are additional cases which the official break tests don't cover:
+// These are additional cases which the official break tests don't cover:
+static constexpr GraphemeBreakTest s_graphemeBreakTestsExtra[] = {
     { L"multiple combining marks", L"a\u0363", L"e\u0364\u0364", L"i\u0365" },
     { L"multiple US flag regional indicators", L"\U0001F1FA\U0001F1F8", L"\U0001F1FA\U0001F1F8" },
 };
 
+static constexpr std::span<const GraphemeBreakTest> s_graphemeBreakTestsAll[] = {
+    s_graphemeBreakTests,
+    s_graphemeBreakTestsExtra,
+};
+
 class CodepointWidthDetectorTests
 {
     TEST_CLASS(CodepointWidthDetectorTests);
@@ -1240,48 +1153,51 @@ class CodepointWidthDetectorTests
         std::vector<std::wstring_view> actual;
         std::wstring text;
 
-        for (const auto& test : s_graphemeBreakTests)
+        for (const auto& tests : s_graphemeBreakTestsAll)
         {
-            expected.clear();
-            for (const auto g : test.graphemes)
+            for (const auto& test : tests)
             {
-                if (!g)
+                expected.clear();
+                for (const auto g : test.graphemes)
                 {
-                    break;
+                    if (!g)
+                    {
+                        break;
+                    }
+                    expected.emplace_back(g);
                 }
-                expected.emplace_back(g);
-            }
 
-            text.clear();
-            for (const auto& g : expected)
-            {
-                text.append(g);
-            }
+                text.clear();
+                for (const auto& g : expected)
+                {
+                    text.append(g);
+                }
 
-            actual.clear();
-            for (GraphemeState state;;)
-            {
-                const auto ok = cwd.GraphemeNext(state, text);
-                actual.emplace_back(state.beg, state.len);
-                if (!ok)
+                actual.clear();
+                for (GraphemeState state;;)
                 {
-                    break;
+                    const auto ok = cwd.GraphemeNext(state, text);
+                    actual.emplace_back(state.beg, state.len);
+                    if (!ok)
+                    {
+                        break;
+                    }
                 }
-            }
-            VERIFY_ARE_EQUAL(expected, actual, test.comment);
+                VERIFY_ARE_EQUAL(expected, actual, test.comment);
 
-            actual.clear();
-            for (GraphemeState state;;)
-            {
-                const auto ok = cwd.GraphemePrev(state, text);
-                actual.emplace_back(state.beg, state.len);
-                if (!ok)
+                actual.clear();
+                for (GraphemeState state;;)
                 {
-                    break;
+                    const auto ok = cwd.GraphemePrev(state, text);
+                    actual.emplace_back(state.beg, state.len);
+                    if (!ok)
+                    {
+                        break;
+                    }
                 }
+                std::reverse(actual.begin(), actual.end());
+                VERIFY_ARE_EQUAL(expected, actual, test.comment);
             }
-            std::reverse(actual.begin(), actual.end());
-            VERIFY_ARE_EQUAL(expected, actual, test.comment);
         }
     }
 


Test patch: