diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 7551c76..a9d64e3 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -7,28 +7,31 @@ on: branches: [ master ] env: + CARGO_INCREMENTAL: 0 CARGO_TERM_COLOR: always + RUST_BACKTRACE: 1 + RUSTFLAGS: -D warnings + RUSTDOCFLAGS: -D warnings jobs: build: - runs-on: ubuntu-latest - steps: - uses: actions/checkout@v2 - name: Build run: cargo build --verbose - name: Run tests run: cargo test --verbose - fmt: + - name: Run clippy + run: cargo clippy --all-targets --all --verbose + fmt: runs-on: ubuntu-latest - steps: - uses: actions/checkout@v2 - name: Rustfmt - run: cargo fmt --check + run: cargo fmt --all --check - name: Verify regenerated files run: ./scripts/unicode.py && diff tables.rs src/tables.rs - name: Verify regenerated tests - run: ./scripts/unicode_gen_breaktests.py && rustfmt testdata.rs && diff testdata.rs src/testdata.rs + run: ./scripts/unicode_gen_breaktests.py && diff testdata.rs tests/testdata/mod.rs diff --git a/benches/chars.rs b/benches/chars.rs index d8dc5ea..bacffa1 100644 --- a/benches/chars.rs +++ b/benches/chars.rs @@ -6,7 +6,6 @@ //! is how much slower full unicode handling is. use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; -use unicode_segmentation; use std::fs; use unicode_segmentation::UnicodeSegmentation; @@ -24,14 +23,14 @@ const FILES: &[&str] = &[ #[inline(always)] fn grapheme(text: &str) { - for c in UnicodeSegmentation::graphemes(black_box(&*text), true) { + for c in UnicodeSegmentation::graphemes(black_box(text), true) { black_box(c); } } #[inline(always)] fn scalar(text: &str) { - for c in black_box(&*text).chars() { + for c in black_box(text).chars() { black_box(c); } } diff --git a/scripts/unicode.py b/scripts/unicode.py index db58c93..293c03c 100755 --- a/scripts/unicode.py +++ b/scripts/unicode.py @@ -155,11 +155,11 @@ def format_table_content(f, content, indent): line = " "*indent + chunk f.write(line) -def load_properties(f, interestingprops): +def load_properties(f, interestingprops: "list[str | tuple[str, str]] | None" = None): fetch(f) props = {} - re1 = re.compile(r"^ *([0-9A-F]+) *; *(\w+)") - re2 = re.compile(r"^ *([0-9A-F]+)\.\.([0-9A-F]+) *; *(\w+)") + re1 = re.compile(r"^\s*([0-9A-F]+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?") + re2 = re.compile(r"^\s*([0-9A-F]+)\.\.([0-9A-F]+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?") for line in fileinput.input(os.path.basename(f)): prop = None @@ -168,17 +168,21 @@ def load_properties(f, interestingprops): m = re1.match(line) if m: d_lo = m.group(1) - d_hi = m.group(1) + d_hi = d_lo prop = m.group(2) + value = m.group(3) else: m = re2.match(line) if m: d_lo = m.group(1) d_hi = m.group(2) prop = m.group(3) + value = m.group(4) else: continue - if interestingprops and prop not in interestingprops: + if value is not None: + prop = (prop, value) + if interestingprops is not None and prop not in interestingprops: continue d_lo = int(d_lo, 16) d_hi = int(d_hi, 16) @@ -195,7 +199,7 @@ def load_properties(f, interestingprops): def escape_char(c): return "'\\u{%x}'" % c -def emit_table(f, name, t_data, t_type = "&'static [(char, char)]", is_pub=True, +def emit_table(f, name, t_data, t_type = "&[(char, char)]", is_pub=True, pfun=lambda x: "(%s,%s)" % (escape_char(x[0]), escape_char(x[1])), is_const=True): pub_string = "const" if not is_const: @@ -217,7 +221,7 @@ def emit_util_mod(f): f.write(""" pub mod util { #[inline] - pub fn bsearch_range_table(c: char, r: &'static [(char,char)]) -> bool { + pub fn bsearch_range_table(c: char, r: &[(char,char)]) -> bool { use core::cmp::Ordering::{Equal, Less, Greater}; r.binary_search_by(|&(lo,hi)| { if lo <= c && c <= hi { Equal } @@ -252,13 +256,22 @@ def emit_util_mod(f): """) -def emit_property_module(f, mod, tbl, emit): - f.write("mod %s {\n" % mod) - for cat in sorted(emit): - emit_table(f, "%s_table" % cat, tbl[cat], is_pub=False) +def emit_property_module(f, mod, tbl, emit: "list[str | tuple[str, str]]"): + f.write("pub mod %s {\n" % mod) + + cats = [] + for cat in emit: + if type(cat) is tuple: + cats.append((f"{cat[0]}_{cat[1]}", cat)) + else: + cats.append((cat, cat)) + cats.sort(key=lambda x: x[0]) + + for cat_str, cat in cats: + emit_table(f, "%s_table" % cat_str, tbl[cat], is_pub=False) f.write(" #[inline]\n") - f.write(" pub fn %s(c: char) -> bool {\n" % cat) - f.write(" super::util::bsearch_range_table(c, %s_table)\n" % cat) + f.write(" pub fn %s(c: char) -> bool {\n" % cat_str) + f.write(" super::util::bsearch_range_table(c, %s_table)\n" % cat_str) f.write(" }\n\n") f.write("}\n\n") @@ -303,7 +316,7 @@ def emit_break_module(f, break_table, break_cats, name): f.write((" %sC_" % Name[0]) + cat + ",\n") f.write(""" } - fn bsearch_range_value_table(c: char, r: &'static [(char, char, %sCat)], default_lower: u32, default_upper: u32) -> (u32, u32, %sCat) { + fn bsearch_range_value_table(c: char, r: &[(char, char, %sCat)], default_lower: u32, default_upper: u32) -> (u32, u32, %sCat) { use core::cmp::Ordering::{Equal, Less, Greater}; match r.binary_search_by(|&(lo, hi, _)| { if lo <= c && c <= hi { Equal } @@ -355,11 +368,11 @@ def emit_break_module(f, break_table, break_cats, name): else: lookup_type = "u32" - emit_table(f, "%s_cat_lookup" % name, lookup_table, "&'static [%s]" % lookup_type, + emit_table(f, "%s_cat_lookup" % name, lookup_table, "&[%s]" % lookup_type, pfun=lambda x: "%d" % x, is_pub=False, is_const=True) - emit_table(f, "%s_cat_table" % name, break_table, "&'static [(char, char, %sCat)]" % Name, + emit_table(f, "%s_cat_table" % name, break_table, "&[(char, char, %sCat)]" % Name, pfun=lambda x: "(%s,%s,%sC_%s)" % (escape_char(x[0]), escape_char(x[1]), Name[0], x[2]), is_pub=False, is_const=True) f.write("}\n") @@ -379,17 +392,26 @@ def emit_break_module(f, break_table, break_cats, name): # download and parse all the data gencats = load_gencats("UnicodeData.txt") - derived = load_properties("DerivedCoreProperties.txt", ["Alphabetic"]) + derived = load_properties("DerivedCoreProperties.txt", ["Alphabetic", ("InCB", "Consonant"), ("InCB", "Extend"), ("InCB", "Linker")]) emit_util_mod(rf) for (name, cat, pfuns) in ("general_category", gencats, ["N"]), \ - ("derived_property", derived, ["Alphabetic"]): + ("derived_property", derived, ["Alphabetic", ("InCB", "Extend")]): emit_property_module(rf, name, cat, pfuns) + rf.write("""pub fn is_incb_linker(c: char) -> bool { + matches!(c,""") + + for (lo, hi) in derived[("InCB", "Linker")]: + rf.write(f" | '\\u{{{lo:X}}}'") + if lo != hi: + rf.write(f"..'\\u{{{lo:X}}}'") + + rf.write(")\n}\n\n") + ### grapheme cluster module # from http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Break_Property_Values - grapheme_cats = load_properties("auxiliary/GraphemeBreakProperty.txt", []) - + grapheme_cats = load_properties("auxiliary/GraphemeBreakProperty.txt") # Control # Note: # This category also includes Cs (surrogate codepoints), but Rust's `char`s are @@ -398,22 +420,22 @@ def emit_break_module(f, break_table, break_cats, name): grapheme_cats["Control"] = group_cat(list( set(ungroup_cat(grapheme_cats["Control"])) - set(ungroup_cat([surrogate_codepoints])))) - + grapheme_cats["InCB_Consonant"] = derived[("InCB", "Consonant")] + emoji_props = load_properties("emoji-data.txt", ["Extended_Pictographic"]) + grapheme_cats["Extended_Pictographic"] = emoji_props["Extended_Pictographic"] grapheme_table = [] for cat in grapheme_cats: grapheme_table.extend([(x, y, cat) for (x, y) in grapheme_cats[cat]]) - emoji_props = load_properties("emoji-data.txt", ["Extended_Pictographic"]) - grapheme_table.extend([(x, y, "Extended_Pictographic") for (x, y) in emoji_props["Extended_Pictographic"]]) grapheme_table.sort(key=lambda w: w[0]) last = -1 for chars in grapheme_table: if chars[0] <= last: raise "Grapheme tables and Extended_Pictographic values overlap; need to store these separately!" last = chars[1] - emit_break_module(rf, grapheme_table, list(grapheme_cats.keys()) + ["Extended_Pictographic"], "grapheme") + emit_break_module(rf, grapheme_table, list(grapheme_cats.keys()), "grapheme") rf.write("\n") - word_cats = load_properties("auxiliary/WordBreakProperty.txt", []) + word_cats = load_properties("auxiliary/WordBreakProperty.txt") word_table = [] for cat in word_cats: word_table.extend([(x, y, cat) for (x, y) in word_cats[cat]]) @@ -425,7 +447,7 @@ def emit_break_module(f, break_table, break_cats, name): emoji_table = [(x, y, "Extended_Pictographic") for (x, y) in emoji_props["Extended_Pictographic"]] emit_break_module(rf, emoji_table, ["Extended_Pictographic"], "emoji") - sentence_cats = load_properties("auxiliary/SentenceBreakProperty.txt", []) + sentence_cats = load_properties("auxiliary/SentenceBreakProperty.txt") sentence_table = [] for cat in sentence_cats: sentence_table.extend([(x, y, cat) for (x, y) in sentence_cats[cat]]) diff --git a/scripts/unicode_gen_breaktests.py b/scripts/unicode_gen_breaktests.py index 113afa9..8dbc42e 100755 --- a/scripts/unicode_gen_breaktests.py +++ b/scripts/unicode_gen_breaktests.py @@ -140,8 +140,8 @@ def showfun(x): return outstr def create_grapheme_data(f): - # rules 9.1 and 9.2 are for extended graphemes only - optsplits = ['9.1','9.2'] + # rules 9.1, 9.2, and 9.3 are for extended graphemes only + optsplits = ['9.1', '9.2', '9.3'] d = load_test_data("auxiliary/GraphemeBreakTest.txt", optsplits) test_same = [] @@ -169,8 +169,8 @@ def create_grapheme_data(f): else: test_diff.append((allchars, extgraphs, c)) - stype = "&'static [(&'static str, &'static [&'static str])]" - dtype = "&'static [(&'static str, &'static [&'static str], &'static [&'static str])]" + stype = "&[(&str, &[&str])]" + dtype = "&[(&str, &[&str], &[&str])]" f.write(" // official Unicode test data\n") f.write(" // http://www.unicode.org/Public/%s/ucd/auxiliary/GraphemeBreakTest.txt\n" % unicode.UNICODE_VERSION_NUMBER) unicode.emit_table(f, "TEST_SAME", test_same, stype, True, showfun, True) @@ -185,7 +185,7 @@ def create_words_data(f): allchars = [cn for s in c for cn in s] test.append((allchars, c)) - wtype = "&'static [(&'static str, &'static [&'static str])]" + wtype = "&[(&str, &[&str])]" f.write(" // official Unicode test data\n") f.write(" // http://www.unicode.org/Public/%s/ucd/auxiliary/WordBreakTest.txt\n" % unicode.UNICODE_VERSION_NUMBER) unicode.emit_table(f, "TEST_WORD", test, wtype, True, showfun, True) @@ -199,7 +199,7 @@ def create_sentence_data(f): allchars = [cn for s in c for cn in s] test.append((allchars, c)) - wtype = "&'static [(&'static str, &'static [&'static str])]" + wtype = "&[(&str, &[&str])]" f.write(" // official Unicode test data\n") f.write(" // http://www.unicode.org/Public/%s/ucd/auxiliary/SentenceBreakTest.txt\n" % unicode.UNICODE_VERSION_NUMBER) unicode.emit_table(f, "TEST_SENTENCE", test, wtype, True, showfun, True) diff --git a/src/grapheme.rs b/src/grapheme.rs index f7fbfe8..97f53a8 100644 --- a/src/grapheme.rs +++ b/src/grapheme.rs @@ -140,7 +140,7 @@ impl<'a> DoubleEndedIterator for Graphemes<'a> { } #[inline] -pub fn new_graphemes<'b>(s: &'b str, is_extended: bool) -> Graphemes<'b> { +pub fn new_graphemes(s: &str, is_extended: bool) -> Graphemes<'_> { let len = s.len(); Graphemes { string: s, @@ -150,28 +150,33 @@ pub fn new_graphemes<'b>(s: &'b str, is_extended: bool) -> Graphemes<'b> { } #[inline] -pub fn new_grapheme_indices<'b>(s: &'b str, is_extended: bool) -> GraphemeIndices<'b> { +pub fn new_grapheme_indices(s: &str, is_extended: bool) -> GraphemeIndices<'_> { GraphemeIndices { start_offset: s.as_ptr() as usize, iter: new_graphemes(s, is_extended), } } -// maybe unify with PairResult? -// An enum describing information about a potential boundary. +/// maybe unify with PairResult? +/// An enum describing information about a potential boundary. #[derive(PartialEq, Eq, Clone, Debug)] enum GraphemeState { - // No information is known. + /// No information is known. Unknown, - // It is known to not be a boundary. + /// It is known to not be a boundary. NotBreak, - // It is known to be a boundary. + /// It is known to be a boundary. Break, - // The codepoint after is a Regional Indicator Symbol, so a boundary iff - // it is preceded by an even number of RIS codepoints. (GB12, GB13) + /// The codepoint after it has Indic_Conjunct_Break=Consonant, + /// so there is a break before so a boundary if it is preceded by another + /// InCB=Consonant follwoed by a sequence consisting of one or more InCB=Linker + /// and zero or more InCB = Extend (in any order). + InCbConsonant, + /// The codepoint after is a Regional Indicator Symbol, so a boundary iff + /// it is preceded by an even number of RIS codepoints. (GB12, GB13) Regional, - // The codepoint after is Extended_Pictographic, - // so whether it's a boundary depends on pre-context according to GB11. + /// The codepoint after is Extended_Pictographic, + /// so whether it's a boundary depends on pre-context according to GB11. Emoji, } @@ -181,30 +186,33 @@ enum GraphemeState { /// fully known at initialization time. #[derive(Clone, Debug)] pub struct GraphemeCursor { - // Current cursor position. + /// Current cursor position. offset: usize, - // Total length of the string. + /// Total length of the string. len: usize, - // A config flag indicating whether this cursor computes legacy or extended - // grapheme cluster boundaries (enables GB9a and GB9b if set). + /// A config flag indicating whether this cursor computes legacy or extended + /// grapheme cluster boundaries (enables GB9a and GB9b if set). is_extended: bool, - // Information about the potential boundary at `offset` + /// Information about the potential boundary at `offset` state: GraphemeState, - // Category of codepoint immediately preceding cursor, if known. + /// Category of codepoint immediately preceding cursor, if known. cat_before: Option, - // Category of codepoint immediately after cursor, if known. + /// Category of codepoint immediately after cursor, if known. cat_after: Option, - // If set, at least one more codepoint immediately preceding this offset - // is needed to resolve whether there's a boundary at `offset`. + /// If set, at least one more codepoint immediately preceding this offset + /// is needed to resolve whether there's a boundary at `offset`. pre_context_offset: Option, - // The number of RIS codepoints preceding `offset`. If `pre_context_offset` - // is set, then counts the number of RIS between that and `offset`, otherwise - // is an accurate count relative to the string. + /// The number of `InCB=Linker` codepoints preceding `offset` + /// (potentially intermingled with `InCB=Extend`). + incb_linker_count: Option, + /// The number of RIS codepoints preceding `offset`. If `pre_context_offset` + /// is set, then counts the number of RIS between that and `offset`, otherwise + /// is an accurate count relative to the string. ris_count: Option, - // Set if a call to `prev_boundary` or `next_boundary` was suspended due - // to needing more input. + /// Set if a call to `prev_boundary` or `next_boundary` was suspended due + /// to needing more input. resuming: bool, - // Cached grapheme category and associated scalar value range. + /// Cached grapheme category and associated scalar value range. grapheme_cat_cache: (u32, u32, GraphemeCat), } @@ -235,11 +243,21 @@ pub enum GraphemeIncomplete { // An enum describing the result from lookup of a pair of categories. #[derive(PartialEq, Eq)] enum PairResult { - NotBreak, // definitely not a break - Break, // definitely a break - Extended, // a break iff not in extended mode - Regional, // a break if preceded by an even number of RIS - Emoji, // a break if preceded by emoji base and (Extend)* + /// definitely not a break + NotBreak, + /// definitely a break + Break, + /// a break iff not in extended mode + Extended, + /// a break unless in extended mode and preceded by + /// a sequence of 0 or more InCB=Extend and one or more + /// InCB = Linker (in any order), + /// preceded by another InCB=Consonant + InCbConsonant, + /// a break if preceded by an even number of RIS + Regional, + /// a break if preceded by emoji base and (Extend)* + Emoji, } #[inline] @@ -248,26 +266,15 @@ fn check_pair(before: GraphemeCat, after: GraphemeCat) -> PairResult { use crate::tables::grapheme::GraphemeCat::*; match (before, after) { (GC_CR, GC_LF) => NotBreak, // GB3 - (GC_Control, _) => Break, // GB4 - (GC_CR, _) => Break, // GB4 - (GC_LF, _) => Break, // GB4 - (_, GC_Control) => Break, // GB5 - (_, GC_CR) => Break, // GB5 - (_, GC_LF) => Break, // GB5 - (GC_L, GC_L) => NotBreak, // GB6 - (GC_L, GC_V) => NotBreak, // GB6 - (GC_L, GC_LV) => NotBreak, // GB6 - (GC_L, GC_LVT) => NotBreak, // GB6 - (GC_LV, GC_V) => NotBreak, // GB7 - (GC_LV, GC_T) => NotBreak, // GB7 - (GC_V, GC_V) => NotBreak, // GB7 - (GC_V, GC_T) => NotBreak, // GB7 - (GC_LVT, GC_T) => NotBreak, // GB8 - (GC_T, GC_T) => NotBreak, // GB8 - (_, GC_Extend) => NotBreak, // GB9 - (_, GC_ZWJ) => NotBreak, // GB9 + (GC_Control | GC_CR | GC_LF, _) => Break, // GB4 + (_, GC_Control | GC_CR | GC_LF) => Break, // GB5 + (GC_L, GC_L | GC_V | GC_LV | GC_LVT) => NotBreak, // GB6 + (GC_LV | GC_V, GC_V | GC_T) => NotBreak, // GB7 + (GC_LVT | GC_T, GC_T) => NotBreak, // GB8 + (_, GC_Extend | GC_ZWJ) => NotBreak, // GB9 (_, GC_SpacingMark) => Extended, // GB9a (GC_Prepend, _) => Extended, // GB9b + (_, GC_InCB_Consonant) => InCbConsonant, // GB9c (GC_ZWJ, GC_Extended_Pictographic) => Emoji, // GB11 (GC_Regional_Indicator, GC_Regional_Indicator) => Regional, // GB12, GB13 (_, _) => Break, // GB999 @@ -296,13 +303,14 @@ impl GraphemeCursor { GraphemeState::Unknown }; GraphemeCursor { - offset: offset, - len: len, - state: state, - is_extended: is_extended, + offset, + len, + state, + is_extended, cat_before: None, cat_after: None, pre_context_offset: None, + incb_linker_count: None, ris_count: None, resuming: false, grapheme_cat_cache: (0, 0, GraphemeCat::GC_Control), @@ -360,6 +368,7 @@ impl GraphemeCursor { // reset state derived from text around cursor self.cat_before = None; self.cat_after = None; + self.incb_linker_count = None; self.ris_count = None; } } @@ -406,18 +415,19 @@ impl GraphemeCursor { assert!(chunk_start + chunk.len() == self.pre_context_offset.unwrap()); self.pre_context_offset = None; if self.is_extended && chunk_start + chunk.len() == self.offset { - let ch = chunk.chars().rev().next().unwrap(); + let ch = chunk.chars().next_back().unwrap(); if self.grapheme_category(ch) == gr::GC_Prepend { self.decide(false); // GB9b return; } } match self.state { + GraphemeState::InCbConsonant => self.handle_incb_consonant(chunk, chunk_start), GraphemeState::Regional => self.handle_regional(chunk, chunk_start), GraphemeState::Emoji => self.handle_emoji(chunk, chunk_start), _ => { if self.cat_before.is_none() && self.offset == chunk.len() + chunk_start { - let ch = chunk.chars().rev().next().unwrap(); + let ch = chunk.chars().next_back().unwrap(); self.cat_before = Some(self.grapheme_category(ch)); } } @@ -452,6 +462,54 @@ impl GraphemeCursor { } } + /// For handling rule GB9c: + /// + /// There's an `InCB=Consonant` after this, and we need to look back + /// to verify whether there should be a break. + /// + /// Seek backward to find an `InCB=Linker` preceded by an `InCB=Consonsnt` + /// (potentially separated by some number of `InCB=Linker` or `InCB=Extend`). + /// If we find the consonant in question, then there's no break; if we find a consonant + /// with no linker, or a non-linker non-extend non-consonant, or the start of text, there's a break; + /// otherwise we need more context + #[inline] + fn handle_incb_consonant(&mut self, chunk: &str, chunk_start: usize) { + use crate::tables::{self, grapheme as gr}; + + // GB9c only applies to extended grapheme clusters + if !self.is_extended { + self.decide(true); + return; + } + + let mut incb_linker_count = self.incb_linker_count.unwrap_or(0); + + for ch in chunk.chars().rev() { + if tables::is_incb_linker(ch) { + // We found an InCB linker + incb_linker_count += 1; + self.incb_linker_count = Some(incb_linker_count); + } else if tables::derived_property::InCB_Extend(ch) { + // We ignore InCB extends, continue + } else { + // Prev character is neither linker nor extend, break suppressed iff it's InCB=Consonant + let result = !(self.incb_linker_count.unwrap_or(0) > 0 + && self.grapheme_category(ch) == gr::GC_InCB_Consonant); + self.decide(result); + return; + } + } + + if chunk_start == 0 { + // Start of text and we still haven't found a consonant, so break + self.decide(true); + } else { + // We need more context + self.pre_context_offset = Some(chunk_start); + self.state = GraphemeState::InCbConsonant; + } + } + #[inline] fn handle_regional(&mut self, chunk: &str, chunk_start: usize) { use crate::tables::grapheme as gr; @@ -467,10 +525,10 @@ impl GraphemeCursor { self.ris_count = Some(ris_count); if chunk_start == 0 { self.decide((ris_count % 2) == 0); - return; + } else { + self.pre_context_offset = Some(chunk_start); + self.state = GraphemeState::Regional; } - self.pre_context_offset = Some(chunk_start); - self.state = GraphemeState::Regional; } #[inline] @@ -498,10 +556,10 @@ impl GraphemeCursor { } if chunk_start == 0 { self.decide(true); - return; + } else { + self.pre_context_offset = Some(chunk_start); + self.state = GraphemeState::Emoji; } - self.pre_context_offset = Some(chunk_start); - self.state = GraphemeState::Emoji; } #[inline] @@ -540,10 +598,10 @@ impl GraphemeCursor { if self.state == GraphemeState::NotBreak { return Ok(false); } - if self.offset < chunk_start || self.offset >= chunk_start + chunk.len() { - if self.offset > chunk_start + chunk.len() || self.cat_after.is_none() { - return Err(GraphemeIncomplete::InvalidOffset); - } + if (self.offset < chunk_start || self.offset >= chunk_start + chunk.len()) + && (self.offset > chunk_start + chunk.len() || self.cat_after.is_none()) + { + return Err(GraphemeIncomplete::InvalidOffset); } if let Some(pre_context_offset) = self.pre_context_offset { return Err(GraphemeIncomplete::PreContext(pre_context_offset)); @@ -556,6 +614,7 @@ impl GraphemeCursor { if self.offset == chunk_start { let mut need_pre_context = true; match self.cat_after.unwrap() { + gr::GC_InCB_Consonant => self.state = GraphemeState::InCbConsonant, gr::GC_Regional_Indicator => self.state = GraphemeState::Regional, gr::GC_Extended_Pictographic => self.state = GraphemeState::Emoji, _ => need_pre_context = self.cat_before.is_none(), @@ -566,15 +625,19 @@ impl GraphemeCursor { } } if self.cat_before.is_none() { - let ch = chunk[..offset_in_chunk].chars().rev().next().unwrap(); + let ch = chunk[..offset_in_chunk].chars().next_back().unwrap(); self.cat_before = Some(self.grapheme_category(ch)); } match check_pair(self.cat_before.unwrap(), self.cat_after.unwrap()) { - PairResult::NotBreak => return self.decision(false), - PairResult::Break => return self.decision(true), + PairResult::NotBreak => self.decision(false), + PairResult::Break => self.decision(true), PairResult::Extended => { let is_extended = self.is_extended; - return self.decision(!is_extended); + self.decision(!is_extended) + } + PairResult::InCbConsonant => { + self.handle_incb_consonant(&chunk[..offset_in_chunk], chunk_start); + self.is_boundary_result() } PairResult::Regional => { if let Some(ris_count) = self.ris_count { @@ -645,6 +708,11 @@ impl GraphemeCursor { if self.cat_before.is_none() { self.cat_before = Some(self.grapheme_category(ch)); } + if crate::tables::is_incb_linker(ch) { + self.incb_linker_count = Some(self.incb_linker_count.map_or(1, |c| c + 1)); + } else if !crate::tables::derived_property::InCB_Extend(ch) { + self.incb_linker_count = Some(0); + } if self.cat_before.unwrap() == GraphemeCat::GC_Regional_Indicator { self.ris_count = self.ris_count.map(|c| c + 1); } else { @@ -726,6 +794,15 @@ impl GraphemeCursor { self.offset -= ch.len_utf8(); self.cat_after = self.cat_before.take(); self.state = GraphemeState::Unknown; + if let Some(incb_linker_count) = self.incb_linker_count { + self.ris_count = if incb_linker_count > 0 && crate::tables::is_incb_linker(ch) { + Some(incb_linker_count - 1) + } else if crate::tables::derived_property::InCB_Extend(ch) { + Some(incb_linker_count) + } else { + None + }; + } if let Some(ris_count) = self.ris_count { self.ris_count = if ris_count > 0 { Some(ris_count - 1) diff --git a/src/lib.rs b/src/lib.rs index 809c5dc..c8ec5b5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -56,14 +56,6 @@ )] #![no_std] -#[cfg(test)] -#[macro_use] -extern crate std; - -#[cfg(test)] -#[macro_use] -extern crate quickcheck; - pub use grapheme::{GraphemeCursor, GraphemeIncomplete}; pub use grapheme::{GraphemeIndices, Graphemes}; pub use sentence::{USentenceBoundIndices, USentenceBounds, UnicodeSentences}; @@ -71,16 +63,11 @@ pub use tables::UNICODE_VERSION; pub use word::{UWordBoundIndices, UWordBounds, UnicodeWordIndices, UnicodeWords}; mod grapheme; +mod sentence; #[rustfmt::skip] mod tables; -mod sentence; mod word; -#[cfg(test)] -mod test; -#[cfg(test)] -mod testdata; - /// Methods for segmenting strings according to /// [Unicode Standard Annex #29](http://www.unicode.org/reports/tr29/). pub trait UnicodeSegmentation { @@ -109,7 +96,7 @@ pub trait UnicodeSegmentation { /// /// assert_eq!(&gr2[..], b); /// ``` - fn graphemes<'a>(&'a self, is_extended: bool) -> Graphemes<'a>; + fn graphemes(&self, is_extended: bool) -> Graphemes<'_>; /// Returns an iterator over the grapheme clusters of `self` and their /// byte offsets. See `graphemes()` for more information. @@ -124,7 +111,7 @@ pub trait UnicodeSegmentation { /// /// assert_eq!(&gr_inds[..], b); /// ``` - fn grapheme_indices<'a>(&'a self, is_extended: bool) -> GraphemeIndices<'a>; + fn grapheme_indices(&self, is_extended: bool) -> GraphemeIndices<'_>; /// Returns an iterator over the words of `self`, separated on /// [UAX#29 word boundaries](http://www.unicode.org/reports/tr29/#Word_Boundaries). @@ -146,7 +133,7 @@ pub trait UnicodeSegmentation { /// /// assert_eq!(&uw1[..], b); /// ``` - fn unicode_words<'a>(&'a self) -> UnicodeWords<'a>; + fn unicode_words(&self) -> UnicodeWords<'_>; /// Returns an iterator over the words of `self`, separated on /// [UAX#29 word boundaries](http://www.unicode.org/reports/tr29/#Word_Boundaries), and their @@ -170,7 +157,7 @@ pub trait UnicodeSegmentation { /// /// assert_eq!(&uwi1[..], b); /// ``` - fn unicode_word_indices<'a>(&'a self) -> UnicodeWordIndices<'a>; + fn unicode_word_indices(&self) -> UnicodeWordIndices<'_>; /// Returns an iterator over substrings of `self` separated on /// [UAX#29 word boundaries](http://www.unicode.org/reports/tr29/#Word_Boundaries). @@ -186,7 +173,7 @@ pub trait UnicodeSegmentation { /// /// assert_eq!(&swu1[..], b); /// ``` - fn split_word_bounds<'a>(&'a self) -> UWordBounds<'a>; + fn split_word_bounds(&self) -> UWordBounds<'_>; /// Returns an iterator over substrings of `self`, split on UAX#29 word boundaries, /// and their offsets. See `split_word_bounds()` for more information. @@ -201,7 +188,7 @@ pub trait UnicodeSegmentation { /// /// assert_eq!(&swi1[..], b); /// ``` - fn split_word_bound_indices<'a>(&'a self) -> UWordBoundIndices<'a>; + fn split_word_bound_indices(&self) -> UWordBoundIndices<'_>; /// Returns an iterator over substrings of `self` separated on /// [UAX#29 sentence boundaries](http://www.unicode.org/reports/tr29/#Sentence_Boundaries). @@ -223,7 +210,7 @@ pub trait UnicodeSegmentation { /// /// assert_eq!(&us1[..], b); /// ``` - fn unicode_sentences<'a>(&'a self) -> UnicodeSentences<'a>; + fn unicode_sentences(&self) -> UnicodeSentences<'_>; /// Returns an iterator over substrings of `self` separated on /// [UAX#29 sentence boundaries](http://www.unicode.org/reports/tr29/#Sentence_Boundaries). @@ -240,7 +227,7 @@ pub trait UnicodeSegmentation { /// /// assert_eq!(&ssb1[..], b); /// ``` - fn split_sentence_bounds<'a>(&'a self) -> USentenceBounds<'a>; + fn split_sentence_bounds(&self) -> USentenceBounds<'_>; /// Returns an iterator over substrings of `self`, split on UAX#29 sentence boundaries, /// and their offsets. See `split_sentence_bounds()` for more information. @@ -256,7 +243,7 @@ pub trait UnicodeSegmentation { /// /// assert_eq!(&ssi1[..], b); /// ``` - fn split_sentence_bound_indices<'a>(&'a self) -> USentenceBoundIndices<'a>; + fn split_sentence_bound_indices(&self) -> USentenceBoundIndices<'_>; } impl UnicodeSegmentation for str { diff --git a/src/sentence.rs b/src/sentence.rs index 8539d47..551d858 100644 --- a/src/sentence.rs +++ b/src/sentence.rs @@ -264,9 +264,7 @@ mod fwd { } // SB2 https://unicode.org/reports/tr29/#SB2 - if self.state.match1(StatePart::Sot) { - None - } else if self.state.match1(StatePart::Eot) { + if self.state.match1(StatePart::Sot) || self.state.match1(StatePart::Eot) { None } else { self.state = self.state.end(); @@ -275,7 +273,7 @@ mod fwd { } } - pub fn new_sentence_breaks<'a>(source: &'a str) -> SentenceBreaks<'a> { + pub fn new_sentence_breaks(source: &str) -> SentenceBreaks<'_> { SentenceBreaks { string: source, pos: 0, @@ -329,7 +327,7 @@ pub struct USentenceBoundIndices<'a> { } #[inline] -pub fn new_sentence_bounds<'a>(source: &'a str) -> USentenceBounds<'a> { +pub fn new_sentence_bounds(source: &str) -> USentenceBounds<'_> { USentenceBounds { iter: fwd::new_sentence_breaks(source), sentence_start: None, @@ -337,7 +335,7 @@ pub fn new_sentence_bounds<'a>(source: &'a str) -> USentenceBounds<'a> { } #[inline] -pub fn new_sentence_bound_indices<'a>(source: &'a str) -> USentenceBoundIndices<'a> { +pub fn new_sentence_bound_indices(source: &str) -> USentenceBoundIndices<'_> { USentenceBoundIndices { start_offset: source.as_ptr() as usize, iter: new_sentence_bounds(source), @@ -345,12 +343,12 @@ pub fn new_sentence_bound_indices<'a>(source: &'a str) -> USentenceBoundIndices< } #[inline] -pub fn new_unicode_sentences<'b>(s: &'b str) -> UnicodeSentences<'b> { +pub fn new_unicode_sentences(s: &str) -> UnicodeSentences<'_> { use super::UnicodeSegmentation; use crate::tables::util::is_alphanumeric; fn has_alphanumeric(s: &&str) -> bool { - s.chars().any(|c| is_alphanumeric(c)) + s.chars().any(is_alphanumeric) } let has_alphanumeric: fn(&&str) -> bool = has_alphanumeric; // coerce to fn pointer @@ -384,7 +382,7 @@ impl<'a> Iterator for USentenceBounds<'a> { #[inline] fn next(&mut self) -> Option<&'a str> { - if self.sentence_start == None { + if self.sentence_start.is_none() { if let Some(start_pos) = self.iter.next() { self.sentence_start = Some(start_pos) } else { diff --git a/src/tables.rs b/src/tables.rs index 8115f33..5bb5605 100644 --- a/src/tables.rs +++ b/src/tables.rs @@ -18,7 +18,7 @@ pub const UNICODE_VERSION: (u64, u64, u64) = (15, 1, 0); pub mod util { #[inline] - pub fn bsearch_range_table(c: char, r: &'static [(char,char)]) -> bool { + pub fn bsearch_range_table(c: char, r: &[(char,char)]) -> bool { use core::cmp::Ordering::{Equal, Less, Greater}; r.binary_search_by(|&(lo,hi)| { if lo <= c && c <= hi { Equal } @@ -51,8 +51,8 @@ pub mod util { } } -mod general_category { - const N_table: &'static [(char, char)] = &[ +pub mod general_category { + const N_table: &[(char, char)] = &[ ('\u{30}', '\u{39}'), ('\u{b2}', '\u{b3}'), ('\u{b9}', '\u{b9}'), ('\u{bc}', '\u{be}'), ('\u{660}', '\u{669}'), ('\u{6f0}', '\u{6f9}'), ('\u{7c0}', '\u{7c9}'), ('\u{966}', '\u{96f}'), ('\u{9e6}', '\u{9ef}'), ('\u{9f4}', '\u{9f9}'), ('\u{a66}', '\u{a6f}'), @@ -105,8 +105,8 @@ mod general_category { } -mod derived_property { - const Alphabetic_table: &'static [(char, char)] = &[ +pub mod derived_property { + const Alphabetic_table: &[(char, char)] = &[ ('\u{41}', '\u{5a}'), ('\u{61}', '\u{7a}'), ('\u{aa}', '\u{aa}'), ('\u{b5}', '\u{b5}'), ('\u{ba}', '\u{ba}'), ('\u{c0}', '\u{d6}'), ('\u{d8}', '\u{f6}'), ('\u{f8}', '\u{2c1}'), ('\u{2c6}', '\u{2d1}'), ('\u{2e0}', '\u{2e4}'), ('\u{2ec}', '\u{2ec}'), ('\u{2ee}', @@ -339,6 +339,70 @@ mod derived_property { super::util::bsearch_range_table(c, Alphabetic_table) } + const InCB_Extend_table: &[(char, char)] = &[ + ('\u{300}', '\u{34e}'), ('\u{350}', '\u{36f}'), ('\u{483}', '\u{487}'), ('\u{591}', + '\u{5bd}'), ('\u{5bf}', '\u{5bf}'), ('\u{5c1}', '\u{5c2}'), ('\u{5c4}', '\u{5c5}'), + ('\u{5c7}', '\u{5c7}'), ('\u{610}', '\u{61a}'), ('\u{64b}', '\u{65f}'), ('\u{670}', + '\u{670}'), ('\u{6d6}', '\u{6dc}'), ('\u{6df}', '\u{6e4}'), ('\u{6e7}', '\u{6e8}'), + ('\u{6ea}', '\u{6ed}'), ('\u{711}', '\u{711}'), ('\u{730}', '\u{74a}'), ('\u{7eb}', + '\u{7f3}'), ('\u{7fd}', '\u{7fd}'), ('\u{816}', '\u{819}'), ('\u{81b}', '\u{823}'), + ('\u{825}', '\u{827}'), ('\u{829}', '\u{82d}'), ('\u{859}', '\u{85b}'), ('\u{898}', + '\u{89f}'), ('\u{8ca}', '\u{8e1}'), ('\u{8e3}', '\u{8ff}'), ('\u{93c}', '\u{93c}'), + ('\u{951}', '\u{954}'), ('\u{9bc}', '\u{9bc}'), ('\u{9fe}', '\u{9fe}'), ('\u{a3c}', + '\u{a3c}'), ('\u{abc}', '\u{abc}'), ('\u{b3c}', '\u{b3c}'), ('\u{c3c}', '\u{c3c}'), + ('\u{c55}', '\u{c56}'), ('\u{cbc}', '\u{cbc}'), ('\u{d3b}', '\u{d3c}'), ('\u{e38}', + '\u{e3a}'), ('\u{e48}', '\u{e4b}'), ('\u{eb8}', '\u{eba}'), ('\u{ec8}', '\u{ecb}'), + ('\u{f18}', '\u{f19}'), ('\u{f35}', '\u{f35}'), ('\u{f37}', '\u{f37}'), ('\u{f39}', + '\u{f39}'), ('\u{f71}', '\u{f72}'), ('\u{f74}', '\u{f74}'), ('\u{f7a}', '\u{f7d}'), + ('\u{f80}', '\u{f80}'), ('\u{f82}', '\u{f84}'), ('\u{f86}', '\u{f87}'), ('\u{fc6}', + '\u{fc6}'), ('\u{1037}', '\u{1037}'), ('\u{1039}', '\u{103a}'), ('\u{108d}', '\u{108d}'), + ('\u{135d}', '\u{135f}'), ('\u{1714}', '\u{1714}'), ('\u{17d2}', '\u{17d2}'), ('\u{17dd}', + '\u{17dd}'), ('\u{18a9}', '\u{18a9}'), ('\u{1939}', '\u{193b}'), ('\u{1a17}', '\u{1a18}'), + ('\u{1a60}', '\u{1a60}'), ('\u{1a75}', '\u{1a7c}'), ('\u{1a7f}', '\u{1a7f}'), ('\u{1ab0}', + '\u{1abd}'), ('\u{1abf}', '\u{1ace}'), ('\u{1b34}', '\u{1b34}'), ('\u{1b6b}', '\u{1b73}'), + ('\u{1bab}', '\u{1bab}'), ('\u{1be6}', '\u{1be6}'), ('\u{1c37}', '\u{1c37}'), ('\u{1cd0}', + '\u{1cd2}'), ('\u{1cd4}', '\u{1ce0}'), ('\u{1ce2}', '\u{1ce8}'), ('\u{1ced}', '\u{1ced}'), + ('\u{1cf4}', '\u{1cf4}'), ('\u{1cf8}', '\u{1cf9}'), ('\u{1dc0}', '\u{1dff}'), ('\u{200d}', + '\u{200d}'), ('\u{20d0}', '\u{20dc}'), ('\u{20e1}', '\u{20e1}'), ('\u{20e5}', '\u{20f0}'), + ('\u{2cef}', '\u{2cf1}'), ('\u{2d7f}', '\u{2d7f}'), ('\u{2de0}', '\u{2dff}'), ('\u{302a}', + '\u{302f}'), ('\u{3099}', '\u{309a}'), ('\u{a66f}', '\u{a66f}'), ('\u{a674}', '\u{a67d}'), + ('\u{a69e}', '\u{a69f}'), ('\u{a6f0}', '\u{a6f1}'), ('\u{a82c}', '\u{a82c}'), ('\u{a8e0}', + '\u{a8f1}'), ('\u{a92b}', '\u{a92d}'), ('\u{a9b3}', '\u{a9b3}'), ('\u{aab0}', '\u{aab0}'), + ('\u{aab2}', '\u{aab4}'), ('\u{aab7}', '\u{aab8}'), ('\u{aabe}', '\u{aabf}'), ('\u{aac1}', + '\u{aac1}'), ('\u{aaf6}', '\u{aaf6}'), ('\u{abed}', '\u{abed}'), ('\u{fb1e}', '\u{fb1e}'), + ('\u{fe20}', '\u{fe2f}'), ('\u{101fd}', '\u{101fd}'), ('\u{102e0}', '\u{102e0}'), + ('\u{10376}', '\u{1037a}'), ('\u{10a0d}', '\u{10a0d}'), ('\u{10a0f}', '\u{10a0f}'), + ('\u{10a38}', '\u{10a3a}'), ('\u{10a3f}', '\u{10a3f}'), ('\u{10ae5}', '\u{10ae6}'), + ('\u{10d24}', '\u{10d27}'), ('\u{10eab}', '\u{10eac}'), ('\u{10efd}', '\u{10eff}'), + ('\u{10f46}', '\u{10f50}'), ('\u{10f82}', '\u{10f85}'), ('\u{11070}', '\u{11070}'), + ('\u{1107f}', '\u{1107f}'), ('\u{110ba}', '\u{110ba}'), ('\u{11100}', '\u{11102}'), + ('\u{11133}', '\u{11134}'), ('\u{11173}', '\u{11173}'), ('\u{111ca}', '\u{111ca}'), + ('\u{11236}', '\u{11236}'), ('\u{112e9}', '\u{112ea}'), ('\u{1133b}', '\u{1133c}'), + ('\u{11366}', '\u{1136c}'), ('\u{11370}', '\u{11374}'), ('\u{11446}', '\u{11446}'), + ('\u{1145e}', '\u{1145e}'), ('\u{114c3}', '\u{114c3}'), ('\u{115c0}', '\u{115c0}'), + ('\u{116b7}', '\u{116b7}'), ('\u{1172b}', '\u{1172b}'), ('\u{1183a}', '\u{1183a}'), + ('\u{1193e}', '\u{1193e}'), ('\u{11943}', '\u{11943}'), ('\u{11a34}', '\u{11a34}'), + ('\u{11a47}', '\u{11a47}'), ('\u{11a99}', '\u{11a99}'), ('\u{11d42}', '\u{11d42}'), + ('\u{11d44}', '\u{11d45}'), ('\u{11d97}', '\u{11d97}'), ('\u{11f42}', '\u{11f42}'), + ('\u{16af0}', '\u{16af4}'), ('\u{16b30}', '\u{16b36}'), ('\u{1bc9e}', '\u{1bc9e}'), + ('\u{1d165}', '\u{1d165}'), ('\u{1d167}', '\u{1d169}'), ('\u{1d16e}', '\u{1d172}'), + ('\u{1d17b}', '\u{1d182}'), ('\u{1d185}', '\u{1d18b}'), ('\u{1d1aa}', '\u{1d1ad}'), + ('\u{1d242}', '\u{1d244}'), ('\u{1e000}', '\u{1e006}'), ('\u{1e008}', '\u{1e018}'), + ('\u{1e01b}', '\u{1e021}'), ('\u{1e023}', '\u{1e024}'), ('\u{1e026}', '\u{1e02a}'), + ('\u{1e08f}', '\u{1e08f}'), ('\u{1e130}', '\u{1e136}'), ('\u{1e2ae}', '\u{1e2ae}'), + ('\u{1e2ec}', '\u{1e2ef}'), ('\u{1e4ec}', '\u{1e4ef}'), ('\u{1e8d0}', '\u{1e8d6}'), + ('\u{1e944}', '\u{1e94a}') + ]; + + #[inline] + pub fn InCB_Extend(c: char) -> bool { + super::util::bsearch_range_table(c, InCB_Extend_table) + } + +} + +pub fn is_incb_linker(c: char) -> bool { + matches!(c, | '\u{94D}' | '\u{9CD}' | '\u{ACD}' | '\u{B4D}' | '\u{C4D}' | '\u{D4D}') } pub mod grapheme { @@ -354,6 +418,7 @@ pub mod grapheme { GC_Control, GC_Extend, GC_Extended_Pictographic, + GC_InCB_Consonant, GC_L, GC_LF, GC_LV, @@ -366,7 +431,7 @@ pub mod grapheme { GC_ZWJ, } - fn bsearch_range_value_table(c: char, r: &'static [(char, char, GraphemeCat)], default_lower: u32, default_upper: u32) -> (u32, u32, GraphemeCat) { + fn bsearch_range_value_table(c: char, r: &[(char, char, GraphemeCat)], default_lower: u32, default_upper: u32) -> (u32, u32, GraphemeCat) { use core::cmp::Ordering::{Equal, Less, Greater}; match r.binary_search_by(|&(lo, hi, _)| { if lo <= c && c <= hi { Equal } @@ -396,7 +461,7 @@ pub mod grapheme { // If the `idx` is outside of the precomputed table - use the slice // starting from the last covered index in the precomputed table and // ending with the length of the range table. - 1443..1449, + 1469..1475, |r| (r[0] as usize)..((r[1] + 1) as usize) ); @@ -408,74 +473,74 @@ pub mod grapheme { bsearch_range_value_table(c, &grapheme_cat_table[range], lower, upper) } - const grapheme_cat_lookup: &'static [u16] = &[ - 0, 5, 9, 9, 9, 9, 9, 10, 10, 10, 11, 11, 16, 21, 26, 29, 32, 37, 41, 53, 65, 75, 86, 97, - 106, 116, 131, 143, 153, 157, 161, 168, 173, 183, 188, 189, 191, 191, 191, 192, 192, 192, - 192, 192, 192, 192, 192, 198, 206, 209, 211, 219, 219, 232, 233, 242, 258, 262, 270, 270, - 271, 271, 271, 271, 271, 279, 280, 282, 284, 284, 284, 286, 290, 290, 291, 291, 295, 297, - 298, 313, 317, 317, 317, 318, 318, 318, 318, 322, 322, 322, 323, 324, 325, 325, 325, 325, - 325, 328, 329, 329, 329, 329, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 333, 335, 335, 335, 342, 347, 351, 360, 369, 379, 379, 386, 395, 405, 413, - 423, 431, 441, 450, 459, 469, 477, 487, 495, 505, 514, 523, 533, 541, 551, 559, 569, 578, - 587, 597, 605, 615, 623, 633, 642, 651, 661, 669, 679, 687, 697, 706, 715, 725, 733, 743, - 751, 761, 770, 779, 789, 797, 807, 815, 825, 834, 843, 853, 861, 871, 879, 889, 898, 907, - 917, 925, 935, 943, 953, 962, 971, 981, 989, 999, 1007, 1017, 1026, 1035, 1045, 1053, 1063, - 1071, 1081, 1090, 1099, 1109, 1117, 1127, 1135, 1145, 1154, 1163, 1173, 1181, 1186, 1186, - 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, - 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, - 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, - 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, - 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187, - 1189, 1190, 1190, 1192, 1192, 1192, 1192, 1193, 1193, 1194, 1195, 1195, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1200, 1201, 1201, 1201, 1201, 1201, - 1202, 1202, 1202, 1204, 1205, 1206, 1212, 1221, 1227, 1236, 1244, 1247, 1260, 1260, 1267, - 1278, 1278, 1286, 1292, 1299, 1303, 1303, 1307, 1307, 1318, 1324, 1333, 1337, 1337, 1337, - 1342, 1349, 1355, 1361, 1361, 1363, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1376, 1377, 1377, 1377, 1377, 1377, 1377, 1377, - 1377, 1378, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, - 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, - 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1386, 1386, - 1386, 1386, 1392, 1395, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, - 1396, 1396, 1396, 1396, 1396, 1399, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, - 1402, 1402, 1407, 1408, 1409, 1409, 1409, 1411, 1411, 1411, 1411, 1412, 1412, 1412, 1412, - 1412, 1412, 1412, 1412, 1413, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, - 1414, 1414, 1414, 1414, 1414, 1415, 1419, 1423, 1428, 1428, 1428, 1430, 1430, 1430, 1431, - 1431, 1432, 1433, 1434, 1435, 1438, 1440, 1442, 1442, 1442, 1443, 1443, 1443, 1443, 1443, - 1443, 1443, 1443, 1443, 1443 + const grapheme_cat_lookup: &[u16] = &[ + 0, 5, 9, 9, 9, 9, 9, 10, 10, 10, 11, 11, 16, 21, 26, 29, 32, 37, 41, 56, 75, 85, 101, 119, + 128, 141, 156, 169, 179, 183, 187, 194, 199, 209, 214, 215, 217, 217, 217, 218, 218, 218, + 218, 218, 218, 218, 218, 224, 232, 235, 237, 245, 245, 258, 259, 268, 284, 288, 296, 296, + 297, 297, 297, 297, 297, 305, 306, 308, 310, 310, 310, 312, 316, 316, 317, 317, 321, 323, + 324, 339, 343, 343, 343, 344, 344, 344, 344, 348, 348, 348, 349, 350, 351, 351, 351, 351, + 351, 354, 355, 355, 355, 355, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 359, 361, 361, 361, 368, 373, 377, 386, 395, 405, 405, 412, 421, 431, 439, + 449, 457, 467, 476, 485, 495, 503, 513, 521, 531, 540, 549, 559, 567, 577, 585, 595, 604, + 613, 623, 631, 641, 649, 659, 668, 677, 687, 695, 705, 713, 723, 732, 741, 751, 759, 769, + 777, 787, 796, 805, 815, 823, 833, 841, 851, 860, 869, 879, 887, 897, 905, 915, 924, 933, + 943, 951, 961, 969, 979, 988, 997, 1007, 1015, 1025, 1033, 1043, 1052, 1061, 1071, 1079, + 1089, 1097, 1107, 1116, 1125, 1135, 1143, 1153, 1161, 1171, 1180, 1189, 1199, 1207, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1213, 1213, 1213, 1213, 1213, + 1213, 1215, 1216, 1216, 1218, 1218, 1218, 1218, 1219, 1219, 1220, 1221, 1221, 1221, 1221, + 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1226, 1227, 1227, 1227, 1227, + 1227, 1228, 1228, 1228, 1230, 1231, 1232, 1238, 1247, 1253, 1262, 1270, 1273, 1286, 1286, + 1293, 1304, 1304, 1312, 1318, 1325, 1329, 1329, 1333, 1333, 1344, 1350, 1359, 1363, 1363, + 1363, 1368, 1375, 1381, 1387, 1387, 1389, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, + 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, + 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, + 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, + 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, + 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, + 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, + 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1402, 1403, 1403, 1403, 1403, 1403, 1403, + 1403, 1403, 1404, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, + 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, + 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1412, + 1412, 1412, 1412, 1418, 1421, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, + 1422, 1422, 1422, 1422, 1422, 1422, 1425, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, + 1428, 1428, 1428, 1433, 1434, 1435, 1435, 1435, 1437, 1437, 1437, 1437, 1438, 1438, 1438, + 1438, 1438, 1438, 1438, 1438, 1439, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, + 1440, 1440, 1440, 1440, 1440, 1440, 1441, 1445, 1449, 1454, 1454, 1454, 1456, 1456, 1456, + 1457, 1457, 1458, 1459, 1460, 1461, 1464, 1466, 1468, 1468, 1468, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469 ]; - const grapheme_cat_table: &'static [(char, char, GraphemeCat)] = &[ + const grapheme_cat_table: &[(char, char, GraphemeCat)] = &[ ('\u{0}', '\u{9}', GC_Control), ('\u{a}', '\u{a}', GC_LF), ('\u{b}', '\u{c}', GC_Control), ('\u{d}', '\u{d}', GC_CR), ('\u{e}', '\u{1f}', GC_Control), ('\u{7f}', '\u{9f}', GC_Control), ('\u{a9}', '\u{a9}', GC_Extended_Pictographic), ('\u{ad}', '\u{ad}', @@ -493,45 +558,58 @@ pub mod grapheme { ('\u{825}', '\u{827}', GC_Extend), ('\u{829}', '\u{82d}', GC_Extend), ('\u{859}', '\u{85b}', GC_Extend), ('\u{890}', '\u{891}', GC_Prepend), ('\u{898}', '\u{89f}', GC_Extend), ('\u{8ca}', '\u{8e1}', GC_Extend), ('\u{8e2}', '\u{8e2}', GC_Prepend), ('\u{8e3}', - '\u{902}', GC_Extend), ('\u{903}', '\u{903}', GC_SpacingMark), ('\u{93a}', '\u{93a}', - GC_Extend), ('\u{93b}', '\u{93b}', GC_SpacingMark), ('\u{93c}', '\u{93c}', GC_Extend), - ('\u{93e}', '\u{940}', GC_SpacingMark), ('\u{941}', '\u{948}', GC_Extend), ('\u{949}', - '\u{94c}', GC_SpacingMark), ('\u{94d}', '\u{94d}', GC_Extend), ('\u{94e}', '\u{94f}', - GC_SpacingMark), ('\u{951}', '\u{957}', GC_Extend), ('\u{962}', '\u{963}', GC_Extend), - ('\u{981}', '\u{981}', GC_Extend), ('\u{982}', '\u{983}', GC_SpacingMark), ('\u{9bc}', - '\u{9bc}', GC_Extend), ('\u{9be}', '\u{9be}', GC_Extend), ('\u{9bf}', '\u{9c0}', - GC_SpacingMark), ('\u{9c1}', '\u{9c4}', GC_Extend), ('\u{9c7}', '\u{9c8}', GC_SpacingMark), - ('\u{9cb}', '\u{9cc}', GC_SpacingMark), ('\u{9cd}', '\u{9cd}', GC_Extend), ('\u{9d7}', - '\u{9d7}', GC_Extend), ('\u{9e2}', '\u{9e3}', GC_Extend), ('\u{9fe}', '\u{9fe}', GC_Extend), + '\u{902}', GC_Extend), ('\u{903}', '\u{903}', GC_SpacingMark), ('\u{915}', '\u{939}', + GC_InCB_Consonant), ('\u{93a}', '\u{93a}', GC_Extend), ('\u{93b}', '\u{93b}', + GC_SpacingMark), ('\u{93c}', '\u{93c}', GC_Extend), ('\u{93e}', '\u{940}', GC_SpacingMark), + ('\u{941}', '\u{948}', GC_Extend), ('\u{949}', '\u{94c}', GC_SpacingMark), ('\u{94d}', + '\u{94d}', GC_Extend), ('\u{94e}', '\u{94f}', GC_SpacingMark), ('\u{951}', '\u{957}', + GC_Extend), ('\u{958}', '\u{95f}', GC_InCB_Consonant), ('\u{962}', '\u{963}', GC_Extend), + ('\u{978}', '\u{97f}', GC_InCB_Consonant), ('\u{981}', '\u{981}', GC_Extend), ('\u{982}', + '\u{983}', GC_SpacingMark), ('\u{995}', '\u{9a8}', GC_InCB_Consonant), ('\u{9aa}', + '\u{9b0}', GC_InCB_Consonant), ('\u{9b2}', '\u{9b2}', GC_InCB_Consonant), ('\u{9b6}', + '\u{9b9}', GC_InCB_Consonant), ('\u{9bc}', '\u{9bc}', GC_Extend), ('\u{9be}', '\u{9be}', + GC_Extend), ('\u{9bf}', '\u{9c0}', GC_SpacingMark), ('\u{9c1}', '\u{9c4}', GC_Extend), + ('\u{9c7}', '\u{9c8}', GC_SpacingMark), ('\u{9cb}', '\u{9cc}', GC_SpacingMark), ('\u{9cd}', + '\u{9cd}', GC_Extend), ('\u{9d7}', '\u{9d7}', GC_Extend), ('\u{9dc}', '\u{9dd}', + GC_InCB_Consonant), ('\u{9df}', '\u{9df}', GC_InCB_Consonant), ('\u{9e2}', '\u{9e3}', + GC_Extend), ('\u{9f0}', '\u{9f1}', GC_InCB_Consonant), ('\u{9fe}', '\u{9fe}', GC_Extend), ('\u{a01}', '\u{a02}', GC_Extend), ('\u{a03}', '\u{a03}', GC_SpacingMark), ('\u{a3c}', '\u{a3c}', GC_Extend), ('\u{a3e}', '\u{a40}', GC_SpacingMark), ('\u{a41}', '\u{a42}', GC_Extend), ('\u{a47}', '\u{a48}', GC_Extend), ('\u{a4b}', '\u{a4d}', GC_Extend), ('\u{a51}', '\u{a51}', GC_Extend), ('\u{a70}', '\u{a71}', GC_Extend), ('\u{a75}', '\u{a75}', GC_Extend), ('\u{a81}', '\u{a82}', GC_Extend), ('\u{a83}', '\u{a83}', GC_SpacingMark), + ('\u{a95}', '\u{aa8}', GC_InCB_Consonant), ('\u{aaa}', '\u{ab0}', GC_InCB_Consonant), + ('\u{ab2}', '\u{ab3}', GC_InCB_Consonant), ('\u{ab5}', '\u{ab9}', GC_InCB_Consonant), ('\u{abc}', '\u{abc}', GC_Extend), ('\u{abe}', '\u{ac0}', GC_SpacingMark), ('\u{ac1}', '\u{ac5}', GC_Extend), ('\u{ac7}', '\u{ac8}', GC_Extend), ('\u{ac9}', '\u{ac9}', GC_SpacingMark), ('\u{acb}', '\u{acc}', GC_SpacingMark), ('\u{acd}', '\u{acd}', GC_Extend), - ('\u{ae2}', '\u{ae3}', GC_Extend), ('\u{afa}', '\u{aff}', GC_Extend), ('\u{b01}', '\u{b01}', - GC_Extend), ('\u{b02}', '\u{b03}', GC_SpacingMark), ('\u{b3c}', '\u{b3c}', GC_Extend), - ('\u{b3e}', '\u{b3f}', GC_Extend), ('\u{b40}', '\u{b40}', GC_SpacingMark), ('\u{b41}', - '\u{b44}', GC_Extend), ('\u{b47}', '\u{b48}', GC_SpacingMark), ('\u{b4b}', '\u{b4c}', - GC_SpacingMark), ('\u{b4d}', '\u{b4d}', GC_Extend), ('\u{b55}', '\u{b57}', GC_Extend), - ('\u{b62}', '\u{b63}', GC_Extend), ('\u{b82}', '\u{b82}', GC_Extend), ('\u{bbe}', '\u{bbe}', + ('\u{ae2}', '\u{ae3}', GC_Extend), ('\u{af9}', '\u{af9}', GC_InCB_Consonant), ('\u{afa}', + '\u{aff}', GC_Extend), ('\u{b01}', '\u{b01}', GC_Extend), ('\u{b02}', '\u{b03}', + GC_SpacingMark), ('\u{b15}', '\u{b28}', GC_InCB_Consonant), ('\u{b2a}', '\u{b30}', + GC_InCB_Consonant), ('\u{b32}', '\u{b33}', GC_InCB_Consonant), ('\u{b35}', '\u{b39}', + GC_InCB_Consonant), ('\u{b3c}', '\u{b3c}', GC_Extend), ('\u{b3e}', '\u{b3f}', GC_Extend), + ('\u{b40}', '\u{b40}', GC_SpacingMark), ('\u{b41}', '\u{b44}', GC_Extend), ('\u{b47}', + '\u{b48}', GC_SpacingMark), ('\u{b4b}', '\u{b4c}', GC_SpacingMark), ('\u{b4d}', '\u{b4d}', + GC_Extend), ('\u{b55}', '\u{b57}', GC_Extend), ('\u{b5c}', '\u{b5d}', GC_InCB_Consonant), + ('\u{b5f}', '\u{b5f}', GC_InCB_Consonant), ('\u{b62}', '\u{b63}', GC_Extend), ('\u{b71}', + '\u{b71}', GC_InCB_Consonant), ('\u{b82}', '\u{b82}', GC_Extend), ('\u{bbe}', '\u{bbe}', GC_Extend), ('\u{bbf}', '\u{bbf}', GC_SpacingMark), ('\u{bc0}', '\u{bc0}', GC_Extend), ('\u{bc1}', '\u{bc2}', GC_SpacingMark), ('\u{bc6}', '\u{bc8}', GC_SpacingMark), ('\u{bca}', '\u{bcc}', GC_SpacingMark), ('\u{bcd}', '\u{bcd}', GC_Extend), ('\u{bd7}', '\u{bd7}', GC_Extend), ('\u{c00}', '\u{c00}', GC_Extend), ('\u{c01}', '\u{c03}', GC_SpacingMark), - ('\u{c04}', '\u{c04}', GC_Extend), ('\u{c3c}', '\u{c3c}', GC_Extend), ('\u{c3e}', '\u{c40}', + ('\u{c04}', '\u{c04}', GC_Extend), ('\u{c15}', '\u{c28}', GC_InCB_Consonant), ('\u{c2a}', + '\u{c39}', GC_InCB_Consonant), ('\u{c3c}', '\u{c3c}', GC_Extend), ('\u{c3e}', '\u{c40}', GC_Extend), ('\u{c41}', '\u{c44}', GC_SpacingMark), ('\u{c46}', '\u{c48}', GC_Extend), - ('\u{c4a}', '\u{c4d}', GC_Extend), ('\u{c55}', '\u{c56}', GC_Extend), ('\u{c62}', '\u{c63}', - GC_Extend), ('\u{c81}', '\u{c81}', GC_Extend), ('\u{c82}', '\u{c83}', GC_SpacingMark), - ('\u{cbc}', '\u{cbc}', GC_Extend), ('\u{cbe}', '\u{cbe}', GC_SpacingMark), ('\u{cbf}', - '\u{cbf}', GC_Extend), ('\u{cc0}', '\u{cc1}', GC_SpacingMark), ('\u{cc2}', '\u{cc2}', - GC_Extend), ('\u{cc3}', '\u{cc4}', GC_SpacingMark), ('\u{cc6}', '\u{cc6}', GC_Extend), - ('\u{cc7}', '\u{cc8}', GC_SpacingMark), ('\u{cca}', '\u{ccb}', GC_SpacingMark), ('\u{ccc}', - '\u{ccd}', GC_Extend), ('\u{cd5}', '\u{cd6}', GC_Extend), ('\u{ce2}', '\u{ce3}', GC_Extend), - ('\u{cf3}', '\u{cf3}', GC_SpacingMark), ('\u{d00}', '\u{d01}', GC_Extend), ('\u{d02}', - '\u{d03}', GC_SpacingMark), ('\u{d3b}', '\u{d3c}', GC_Extend), ('\u{d3e}', '\u{d3e}', + ('\u{c4a}', '\u{c4d}', GC_Extend), ('\u{c55}', '\u{c56}', GC_Extend), ('\u{c58}', '\u{c5a}', + GC_InCB_Consonant), ('\u{c62}', '\u{c63}', GC_Extend), ('\u{c81}', '\u{c81}', GC_Extend), + ('\u{c82}', '\u{c83}', GC_SpacingMark), ('\u{cbc}', '\u{cbc}', GC_Extend), ('\u{cbe}', + '\u{cbe}', GC_SpacingMark), ('\u{cbf}', '\u{cbf}', GC_Extend), ('\u{cc0}', '\u{cc1}', + GC_SpacingMark), ('\u{cc2}', '\u{cc2}', GC_Extend), ('\u{cc3}', '\u{cc4}', GC_SpacingMark), + ('\u{cc6}', '\u{cc6}', GC_Extend), ('\u{cc7}', '\u{cc8}', GC_SpacingMark), ('\u{cca}', + '\u{ccb}', GC_SpacingMark), ('\u{ccc}', '\u{ccd}', GC_Extend), ('\u{cd5}', '\u{cd6}', + GC_Extend), ('\u{ce2}', '\u{ce3}', GC_Extend), ('\u{cf3}', '\u{cf3}', GC_SpacingMark), + ('\u{d00}', '\u{d01}', GC_Extend), ('\u{d02}', '\u{d03}', GC_SpacingMark), ('\u{d15}', + '\u{d3a}', GC_InCB_Consonant), ('\u{d3b}', '\u{d3c}', GC_Extend), ('\u{d3e}', '\u{d3e}', GC_Extend), ('\u{d3f}', '\u{d40}', GC_SpacingMark), ('\u{d41}', '\u{d44}', GC_Extend), ('\u{d46}', '\u{d48}', GC_SpacingMark), ('\u{d4a}', '\u{d4c}', GC_SpacingMark), ('\u{d4d}', '\u{d4d}', GC_Extend), ('\u{d4e}', '\u{d4e}', GC_Prepend), ('\u{d57}', '\u{d57}', @@ -1113,7 +1191,7 @@ pub mod word { WC_ZWJ, } - fn bsearch_range_value_table(c: char, r: &'static [(char, char, WordCat)], default_lower: u32, default_upper: u32) -> (u32, u32, WordCat) { + fn bsearch_range_value_table(c: char, r: &[(char, char, WordCat)], default_lower: u32, default_upper: u32) -> (u32, u32, WordCat) { use core::cmp::Ordering::{Equal, Less, Greater}; match r.binary_search_by(|&(lo, hi, _)| { if lo <= c && c <= hi { Equal } @@ -1155,7 +1233,7 @@ pub mod word { bsearch_range_value_table(c, &word_cat_table[range], lower, upper) } - const word_cat_lookup: &'static [u16] = &[ + const word_cat_lookup: &[u16] = &[ 0, 14, 22, 22, 22, 22, 24, 30, 36, 36, 38, 43, 55, 66, 78, 82, 92, 103, 110, 120, 142, 161, 179, 197, 214, 230, 249, 265, 277, 281, 285, 294, 300, 307, 315, 315, 315, 320, 328, 332, 335, 335, 335, 335, 335, 337, 341, 350, 353, 358, 364, 368, 369, 374, 377, 383, 390, 396, @@ -1216,7 +1294,7 @@ pub mod word { 1049, 1049, 1049, 1049 ]; - const word_cat_table: &'static [(char, char, WordCat)] = &[ + const word_cat_table: &[(char, char, WordCat)] = &[ ('\u{a}', '\u{a}', WC_LF), ('\u{b}', '\u{c}', WC_Newline), ('\u{d}', '\u{d}', WC_CR), ('\u{20}', '\u{20}', WC_WSegSpace), ('\u{22}', '\u{22}', WC_Double_Quote), ('\u{27}', '\u{27}', WC_Single_Quote), ('\u{2c}', '\u{2c}', WC_MidNum), ('\u{2e}', '\u{2e}', @@ -1693,7 +1771,7 @@ pub mod emoji { EC_Extended_Pictographic, } - fn bsearch_range_value_table(c: char, r: &'static [(char, char, EmojiCat)], default_lower: u32, default_upper: u32) -> (u32, u32, EmojiCat) { + fn bsearch_range_value_table(c: char, r: &[(char, char, EmojiCat)], default_lower: u32, default_upper: u32) -> (u32, u32, EmojiCat) { use core::cmp::Ordering::{Equal, Less, Greater}; match r.binary_search_by(|&(lo, hi, _)| { if lo <= c && c <= hi { Equal } @@ -1735,7 +1813,7 @@ pub mod emoji { bsearch_range_value_table(c, &emoji_cat_table[range], lower, upper) } - const emoji_cat_lookup: &'static [u8] = &[ + const emoji_cat_lookup: &[u8] = &[ 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 8, 8, 8, 10, 14, 14, 15, 15, 19, 21, 22, 37, 41, 41, 41, 42, 42, 42, 42, @@ -1782,7 +1860,7 @@ pub mod emoji { 68, 69, 72, 74, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77 ]; - const emoji_cat_table: &'static [(char, char, EmojiCat)] = &[ + const emoji_cat_table: &[(char, char, EmojiCat)] = &[ ('\u{a9}', '\u{a9}', EC_Extended_Pictographic), ('\u{ae}', '\u{ae}', EC_Extended_Pictographic), ('\u{203c}', '\u{203c}', EC_Extended_Pictographic), ('\u{2049}', '\u{2049}', EC_Extended_Pictographic), ('\u{2122}', '\u{2122}', EC_Extended_Pictographic), @@ -1860,7 +1938,7 @@ pub mod sentence { SC_Upper, } - fn bsearch_range_value_table(c: char, r: &'static [(char, char, SentenceCat)], default_lower: u32, default_upper: u32) -> (u32, u32, SentenceCat) { + fn bsearch_range_value_table(c: char, r: &[(char, char, SentenceCat)], default_lower: u32, default_upper: u32) -> (u32, u32, SentenceCat) { use core::cmp::Ordering::{Equal, Less, Greater}; match r.binary_search_by(|&(lo, hi, _)| { if lo <= c && c <= hi { Equal } @@ -1902,7 +1980,7 @@ pub mod sentence { bsearch_range_value_table(c, &sentence_cat_table[range], lower, upper) } - const sentence_cat_lookup: &'static [u16] = &[ + const sentence_cat_lookup: &[u16] = &[ 0, 19, 31, 154, 247, 314, 323, 333, 375, 409, 528, 579, 588, 599, 612, 618, 629, 643, 650, 661, 683, 702, 720, 738, 755, 771, 790, 806, 818, 825, 840, 850, 856, 871, 882, 882, 882, 887, 895, 901, 904, 904, 904, 904, 904, 907, 912, 922, 929, 938, 944, 951, 954, 960, 965, @@ -1973,7 +2051,7 @@ pub mod sentence { 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411 ]; - const sentence_cat_table: &'static [(char, char, SentenceCat)] = &[ + const sentence_cat_table: &[(char, char, SentenceCat)] = &[ ('\u{9}', '\u{9}', SC_Sp), ('\u{a}', '\u{a}', SC_LF), ('\u{b}', '\u{c}', SC_Sp), ('\u{d}', '\u{d}', SC_CR), ('\u{20}', '\u{20}', SC_Sp), ('\u{21}', '\u{21}', SC_STerm), ('\u{22}', '\u{22}', SC_Close), ('\u{27}', '\u{29}', SC_Close), ('\u{2c}', '\u{2d}', SC_SContinue), diff --git a/src/word.rs b/src/word.rs index b7828ed..b2a85ae 100644 --- a/src/word.rs +++ b/src/word.rs @@ -65,6 +65,7 @@ impl<'a> DoubleEndedIterator for UnicodeWords<'a> { /// [`UnicodeSegmentation`]: trait.UnicodeSegmentation.html #[derive(Debug)] pub struct UnicodeWordIndices<'a> { + #[allow(clippy::type_complexity)] inner: Filter, fn(&(usize, &str)) -> bool>, } @@ -212,7 +213,7 @@ impl<'a> Iterator for UWordBounds<'a> { use self::FormatExtendType::*; use self::UWordBoundsState::*; use crate::tables::word as wd; - if self.string.len() == 0 { + if self.string.is_empty() { return None; } @@ -268,17 +269,15 @@ impl<'a> Iterator for UWordBounds<'a> { // state enum; the state enum represents the last non-zwj state encountered. // When prev_zwj is true, for the purposes of WB3c, we are in the Zwj state, // however we are in the previous state for the purposes of all other rules. - if prev_zwj { - if is_emoji(ch) { - state = Emoji; - continue; - } + if prev_zwj && is_emoji(ch) { + state = Emoji; + continue; } // Don't use `continue` in this match without updating `cat` state = match state { Start if cat == wd::WC_CR => { idx += match self.get_next_cat(idx) { - Some(ncat) if ncat == wd::WC_LF => 1, // rule WB3 + Some(wd::WC_LF) => 1, // rule WB3 _ => 0, }; break; // rule WB3a @@ -443,7 +442,7 @@ impl<'a> DoubleEndedIterator for UWordBounds<'a> { use self::FormatExtendType::*; use self::UWordBoundsState::*; use crate::tables::word as wd; - if self.string.len() == 0 { + if self.string.is_empty() { return None; } @@ -479,10 +478,7 @@ impl<'a> DoubleEndedIterator for UWordBounds<'a> { if cat == wd::WC_Extend || cat == wd::WC_Format || (cat == wd::WC_ZWJ && state != Zwj) { // WB3c has more priority so we should not // fold in that case - if match state { - FormatExtend(_) | Start => false, - _ => true, - } { + if !matches!(state, FormatExtend(_) | Start) { saveidx = previdx; savestate = state; state = FormatExtend(AcceptNone); @@ -520,7 +516,7 @@ impl<'a> DoubleEndedIterator for UWordBounds<'a> { if state == Start { if cat == wd::WC_LF { idx -= match self.get_prev_cat(idx) { - Some(pcat) if pcat == wd::WC_CR => 1, // rule WB3 + Some(wd::WC_CR) => 1, // rule WB3 _ => 0, }; } @@ -722,7 +718,7 @@ impl<'a> UWordBounds<'a> { } #[inline] -pub fn new_word_bounds<'b>(s: &'b str) -> UWordBounds<'b> { +pub fn new_word_bounds(s: &str) -> UWordBounds<'_> { UWordBounds { string: s, cat: None, @@ -731,7 +727,7 @@ pub fn new_word_bounds<'b>(s: &'b str) -> UWordBounds<'b> { } #[inline] -pub fn new_word_bound_indices<'b>(s: &'b str) -> UWordBoundIndices<'b> { +pub fn new_word_bound_indices(s: &str) -> UWordBoundIndices<'_> { UWordBoundIndices { start_offset: s.as_ptr() as usize, iter: new_word_bounds(s), @@ -742,11 +738,11 @@ pub fn new_word_bound_indices<'b>(s: &'b str) -> UWordBoundIndices<'b> { fn has_alphanumeric(s: &&str) -> bool { use crate::tables::util::is_alphanumeric; - s.chars().any(|c| is_alphanumeric(c)) + s.chars().any(is_alphanumeric) } #[inline] -pub fn new_unicode_words<'b>(s: &'b str) -> UnicodeWords<'b> { +pub fn new_unicode_words(s: &str) -> UnicodeWords<'_> { use super::UnicodeSegmentation; UnicodeWords { @@ -755,7 +751,7 @@ pub fn new_unicode_words<'b>(s: &'b str) -> UnicodeWords<'b> { } #[inline] -pub fn new_unicode_word_indices<'b>(s: &'b str) -> UnicodeWordIndices<'b> { +pub fn new_unicode_word_indices(s: &str) -> UnicodeWordIndices<'_> { use super::UnicodeSegmentation; UnicodeWordIndices { @@ -764,3 +760,20 @@ pub fn new_unicode_word_indices<'b>(s: &'b str) -> UnicodeWordIndices<'b> { .filter(|(_, c)| has_alphanumeric(c)), } } + +#[cfg(test)] +mod tests { + #[test] + fn test_syriac_abbr_mark() { + use crate::tables::word as wd; + let (_, _, cat) = wd::word_category('\u{70f}'); + assert_eq!(cat, wd::WC_ALetter); + } + + #[test] + fn test_end_of_ayah_cat() { + use crate::tables::word as wd; + let (_, _, cat) = wd::word_category('\u{6dd}'); + assert_eq!(cat, wd::WC_Numeric); + } +} diff --git a/src/test.rs b/tests/test.rs similarity index 89% rename from src/test.rs rename to tests/test.rs index 07644ba..5a89234 100644 --- a/src/test.rs +++ b/tests/test.rs @@ -8,19 +8,17 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use super::UnicodeSegmentation; +use quickcheck::quickcheck; +use unicode_segmentation::UnicodeSegmentation; -use std::prelude::v1::*; +#[rustfmt::skip] +mod testdata; #[test] fn test_graphemes() { use crate::testdata::{TEST_DIFF, TEST_SAME}; - pub const EXTRA_DIFF: &'static [( - &'static str, - &'static [&'static str], - &'static [&'static str], - )] = &[ + pub const EXTRA_DIFF: &[(&str, &[&str], &[&str])] = &[ // Official test suite doesn't include two Prepend chars between two other chars. ( "\u{20}\u{600}\u{600}\u{20}", @@ -35,7 +33,7 @@ fn test_graphemes() { ), ]; - pub const EXTRA_SAME: &'static [(&'static str, &'static [&'static str])] = &[ + pub const EXTRA_SAME: &[(&str, &[&str])] = &[ // family emoji (more than two emoji joined by ZWJ) ( "\u{1f468}\u{200d}\u{1f467}\u{200d}\u{1f466}", @@ -50,12 +48,11 @@ fn test_graphemes() { ]; for &(s, g) in TEST_SAME.iter().chain(EXTRA_SAME) { - if s.starts_with("क\u{94d}") || s.starts_with("क\u{93c}") { - continue; // TODO: fix these - } // test forward iterator - assert!(UnicodeSegmentation::graphemes(s, true).eq(g.iter().cloned())); - assert!(UnicodeSegmentation::graphemes(s, false).eq(g.iter().cloned())); + let our_extended: Vec<_> = UnicodeSegmentation::graphemes(s, true).collect(); + let our_legacy: Vec<_> = UnicodeSegmentation::graphemes(s, false).collect(); + assert_eq!(our_extended, g, "{s:?} extended"); + assert_eq!(our_legacy, g, "{s:?} legacy"); // test reverse iterator assert!(UnicodeSegmentation::graphemes(s, true) @@ -116,7 +113,7 @@ fn test_words() { // Unicode's official tests don't really test longer chains of flag emoji // TODO This could be improved with more tests like flag emoji with interspersed Extend chars and ZWJ - const EXTRA_TESTS: &'static [(&'static str, &'static [&'static str])] = &[ + const EXTRA_TESTS: &[(&str, &[&str])] = &[ ( "🇦🇫🇦🇽🇦🇱🇩🇿🇦🇸🇦🇩🇦🇴", &["🇦🇫", "🇦🇽", "🇦🇱", "🇩🇿", "🇦🇸", "🇦🇩", "🇦🇴"], @@ -215,20 +212,6 @@ fn test_sentences() { } } -#[test] -fn test_syriac_abbr_mark() { - use crate::tables::word as wd; - let (_, _, cat) = wd::word_category('\u{70f}'); - assert_eq!(cat, wd::WC_ALetter); -} - -#[test] -fn test_end_of_ayah_cat() { - use crate::tables::word as wd; - let (_, _, cat) = wd::word_category('\u{6dd}'); - assert_eq!(cat, wd::WC_Numeric); -} - quickcheck! { fn quickcheck_forward_reverse_graphemes_extended(s: String) -> bool { let a = s.graphemes(true).collect::>(); diff --git a/src/testdata.rs b/tests/testdata/mod.rs similarity index 68% rename from src/testdata.rs rename to tests/testdata/mod.rs index 73bcc00..6790664 100644 --- a/src/testdata.rs +++ b/tests/testdata/mod.rs @@ -11,1778 +11,819 @@ // NOTE: The following code was generated by "scripts/unicode.py", do not edit directly #![allow(missing_docs, non_upper_case_globals, non_snake_case)] -// official Unicode test data -// http://www.unicode.org/Public/15.1.0/ucd/auxiliary/GraphemeBreakTest.txt -pub const TEST_SAME: &'static [(&'static str, &'static [&'static str])] = &[ - ("\u{20}\u{20}", &["\u{20}", "\u{20}"]), - ("\u{20}\u{308}\u{20}", &["\u{20}\u{308}", "\u{20}"]), - ("\u{20}\u{d}", &["\u{20}", "\u{d}"]), - ("\u{20}\u{308}\u{d}", &["\u{20}\u{308}", "\u{d}"]), - ("\u{20}\u{a}", &["\u{20}", "\u{a}"]), - ("\u{20}\u{308}\u{a}", &["\u{20}\u{308}", "\u{a}"]), - ("\u{20}\u{1}", &["\u{20}", "\u{1}"]), - ("\u{20}\u{308}\u{1}", &["\u{20}\u{308}", "\u{1}"]), - ("\u{20}\u{34f}", &["\u{20}\u{34f}"]), - ("\u{20}\u{308}\u{34f}", &["\u{20}\u{308}\u{34f}"]), - ("\u{20}\u{1f1e6}", &["\u{20}", "\u{1f1e6}"]), - ("\u{20}\u{308}\u{1f1e6}", &["\u{20}\u{308}", "\u{1f1e6}"]), - ("\u{20}\u{600}", &["\u{20}", "\u{600}"]), - ("\u{20}\u{308}\u{600}", &["\u{20}\u{308}", "\u{600}"]), - ("\u{20}\u{1100}", &["\u{20}", "\u{1100}"]), - ("\u{20}\u{308}\u{1100}", &["\u{20}\u{308}", "\u{1100}"]), - ("\u{20}\u{1160}", &["\u{20}", "\u{1160}"]), - ("\u{20}\u{308}\u{1160}", &["\u{20}\u{308}", "\u{1160}"]), - ("\u{20}\u{11a8}", &["\u{20}", "\u{11a8}"]), - ("\u{20}\u{308}\u{11a8}", &["\u{20}\u{308}", "\u{11a8}"]), - ("\u{20}\u{ac00}", &["\u{20}", "\u{ac00}"]), - ("\u{20}\u{308}\u{ac00}", &["\u{20}\u{308}", "\u{ac00}"]), - ("\u{20}\u{ac01}", &["\u{20}", "\u{ac01}"]), - ("\u{20}\u{308}\u{ac01}", &["\u{20}\u{308}", "\u{ac01}"]), - ("\u{20}\u{900}", &["\u{20}\u{900}"]), - ("\u{20}\u{308}\u{900}", &["\u{20}\u{308}\u{900}"]), - ("\u{20}\u{904}", &["\u{20}", "\u{904}"]), - ("\u{20}\u{308}\u{904}", &["\u{20}\u{308}", "\u{904}"]), - ("\u{20}\u{d4e}", &["\u{20}", "\u{d4e}"]), - ("\u{20}\u{308}\u{d4e}", &["\u{20}\u{308}", "\u{d4e}"]), - ("\u{20}\u{915}", &["\u{20}", "\u{915}"]), - ("\u{20}\u{308}\u{915}", &["\u{20}\u{308}", "\u{915}"]), - ("\u{20}\u{231a}", &["\u{20}", "\u{231a}"]), - ("\u{20}\u{308}\u{231a}", &["\u{20}\u{308}", "\u{231a}"]), - ("\u{20}\u{300}", &["\u{20}\u{300}"]), - ("\u{20}\u{308}\u{300}", &["\u{20}\u{308}\u{300}"]), - ("\u{20}\u{93c}", &["\u{20}\u{93c}"]), - ("\u{20}\u{308}\u{93c}", &["\u{20}\u{308}\u{93c}"]), - ("\u{20}\u{94d}", &["\u{20}\u{94d}"]), - ("\u{20}\u{308}\u{94d}", &["\u{20}\u{308}\u{94d}"]), - ("\u{20}\u{200d}", &["\u{20}\u{200d}"]), - ("\u{20}\u{308}\u{200d}", &["\u{20}\u{308}\u{200d}"]), - ("\u{20}\u{378}", &["\u{20}", "\u{378}"]), - ("\u{20}\u{308}\u{378}", &["\u{20}\u{308}", "\u{378}"]), - ("\u{d}\u{20}", &["\u{d}", "\u{20}"]), - ("\u{d}\u{308}\u{20}", &["\u{d}", "\u{308}", "\u{20}"]), - ("\u{d}\u{d}", &["\u{d}", "\u{d}"]), - ("\u{d}\u{308}\u{d}", &["\u{d}", "\u{308}", "\u{d}"]), - ("\u{d}\u{a}", &["\u{d}\u{a}"]), - ("\u{d}\u{308}\u{a}", &["\u{d}", "\u{308}", "\u{a}"]), - ("\u{d}\u{1}", &["\u{d}", "\u{1}"]), - ("\u{d}\u{308}\u{1}", &["\u{d}", "\u{308}", "\u{1}"]), - ("\u{d}\u{34f}", &["\u{d}", "\u{34f}"]), - ("\u{d}\u{308}\u{34f}", &["\u{d}", "\u{308}\u{34f}"]), - ("\u{d}\u{1f1e6}", &["\u{d}", "\u{1f1e6}"]), - ("\u{d}\u{308}\u{1f1e6}", &["\u{d}", "\u{308}", "\u{1f1e6}"]), - ("\u{d}\u{600}", &["\u{d}", "\u{600}"]), - ("\u{d}\u{308}\u{600}", &["\u{d}", "\u{308}", "\u{600}"]), - ("\u{d}\u{a03}", &["\u{d}", "\u{a03}"]), - ("\u{d}\u{1100}", &["\u{d}", "\u{1100}"]), - ("\u{d}\u{308}\u{1100}", &["\u{d}", "\u{308}", "\u{1100}"]), - ("\u{d}\u{1160}", &["\u{d}", "\u{1160}"]), - ("\u{d}\u{308}\u{1160}", &["\u{d}", "\u{308}", "\u{1160}"]), - ("\u{d}\u{11a8}", &["\u{d}", "\u{11a8}"]), - ("\u{d}\u{308}\u{11a8}", &["\u{d}", "\u{308}", "\u{11a8}"]), - ("\u{d}\u{ac00}", &["\u{d}", "\u{ac00}"]), - ("\u{d}\u{308}\u{ac00}", &["\u{d}", "\u{308}", "\u{ac00}"]), - ("\u{d}\u{ac01}", &["\u{d}", "\u{ac01}"]), - ("\u{d}\u{308}\u{ac01}", &["\u{d}", "\u{308}", "\u{ac01}"]), - ("\u{d}\u{900}", &["\u{d}", "\u{900}"]), - ("\u{d}\u{308}\u{900}", &["\u{d}", "\u{308}\u{900}"]), - ("\u{d}\u{903}", &["\u{d}", "\u{903}"]), - ("\u{d}\u{904}", &["\u{d}", "\u{904}"]), - ("\u{d}\u{308}\u{904}", &["\u{d}", "\u{308}", "\u{904}"]), - ("\u{d}\u{d4e}", &["\u{d}", "\u{d4e}"]), - ("\u{d}\u{308}\u{d4e}", &["\u{d}", "\u{308}", "\u{d4e}"]), - ("\u{d}\u{915}", &["\u{d}", "\u{915}"]), - ("\u{d}\u{308}\u{915}", &["\u{d}", "\u{308}", "\u{915}"]), - ("\u{d}\u{231a}", &["\u{d}", "\u{231a}"]), - ("\u{d}\u{308}\u{231a}", &["\u{d}", "\u{308}", "\u{231a}"]), - ("\u{d}\u{300}", &["\u{d}", "\u{300}"]), - ("\u{d}\u{308}\u{300}", &["\u{d}", "\u{308}\u{300}"]), - ("\u{d}\u{93c}", &["\u{d}", "\u{93c}"]), - ("\u{d}\u{308}\u{93c}", &["\u{d}", "\u{308}\u{93c}"]), - ("\u{d}\u{94d}", &["\u{d}", "\u{94d}"]), - ("\u{d}\u{308}\u{94d}", &["\u{d}", "\u{308}\u{94d}"]), - ("\u{d}\u{200d}", &["\u{d}", "\u{200d}"]), - ("\u{d}\u{308}\u{200d}", &["\u{d}", "\u{308}\u{200d}"]), - ("\u{d}\u{378}", &["\u{d}", "\u{378}"]), - ("\u{d}\u{308}\u{378}", &["\u{d}", "\u{308}", "\u{378}"]), - ("\u{a}\u{20}", &["\u{a}", "\u{20}"]), - ("\u{a}\u{308}\u{20}", &["\u{a}", "\u{308}", "\u{20}"]), - ("\u{a}\u{d}", &["\u{a}", "\u{d}"]), - ("\u{a}\u{308}\u{d}", &["\u{a}", "\u{308}", "\u{d}"]), - ("\u{a}\u{a}", &["\u{a}", "\u{a}"]), - ("\u{a}\u{308}\u{a}", &["\u{a}", "\u{308}", "\u{a}"]), - ("\u{a}\u{1}", &["\u{a}", "\u{1}"]), - ("\u{a}\u{308}\u{1}", &["\u{a}", "\u{308}", "\u{1}"]), - ("\u{a}\u{34f}", &["\u{a}", "\u{34f}"]), - ("\u{a}\u{308}\u{34f}", &["\u{a}", "\u{308}\u{34f}"]), - ("\u{a}\u{1f1e6}", &["\u{a}", "\u{1f1e6}"]), - ("\u{a}\u{308}\u{1f1e6}", &["\u{a}", "\u{308}", "\u{1f1e6}"]), - ("\u{a}\u{600}", &["\u{a}", "\u{600}"]), - ("\u{a}\u{308}\u{600}", &["\u{a}", "\u{308}", "\u{600}"]), - ("\u{a}\u{a03}", &["\u{a}", "\u{a03}"]), - ("\u{a}\u{1100}", &["\u{a}", "\u{1100}"]), - ("\u{a}\u{308}\u{1100}", &["\u{a}", "\u{308}", "\u{1100}"]), - ("\u{a}\u{1160}", &["\u{a}", "\u{1160}"]), - ("\u{a}\u{308}\u{1160}", &["\u{a}", "\u{308}", "\u{1160}"]), - ("\u{a}\u{11a8}", &["\u{a}", "\u{11a8}"]), - ("\u{a}\u{308}\u{11a8}", &["\u{a}", "\u{308}", "\u{11a8}"]), - ("\u{a}\u{ac00}", &["\u{a}", "\u{ac00}"]), - ("\u{a}\u{308}\u{ac00}", &["\u{a}", "\u{308}", "\u{ac00}"]), - ("\u{a}\u{ac01}", &["\u{a}", "\u{ac01}"]), - ("\u{a}\u{308}\u{ac01}", &["\u{a}", "\u{308}", "\u{ac01}"]), - ("\u{a}\u{900}", &["\u{a}", "\u{900}"]), - ("\u{a}\u{308}\u{900}", &["\u{a}", "\u{308}\u{900}"]), - ("\u{a}\u{903}", &["\u{a}", "\u{903}"]), - ("\u{a}\u{904}", &["\u{a}", "\u{904}"]), - ("\u{a}\u{308}\u{904}", &["\u{a}", "\u{308}", "\u{904}"]), - ("\u{a}\u{d4e}", &["\u{a}", "\u{d4e}"]), - ("\u{a}\u{308}\u{d4e}", &["\u{a}", "\u{308}", "\u{d4e}"]), - ("\u{a}\u{915}", &["\u{a}", "\u{915}"]), - ("\u{a}\u{308}\u{915}", &["\u{a}", "\u{308}", "\u{915}"]), - ("\u{a}\u{231a}", &["\u{a}", "\u{231a}"]), - ("\u{a}\u{308}\u{231a}", &["\u{a}", "\u{308}", "\u{231a}"]), - ("\u{a}\u{300}", &["\u{a}", "\u{300}"]), - ("\u{a}\u{308}\u{300}", &["\u{a}", "\u{308}\u{300}"]), - ("\u{a}\u{93c}", &["\u{a}", "\u{93c}"]), - ("\u{a}\u{308}\u{93c}", &["\u{a}", "\u{308}\u{93c}"]), - ("\u{a}\u{94d}", &["\u{a}", "\u{94d}"]), - ("\u{a}\u{308}\u{94d}", &["\u{a}", "\u{308}\u{94d}"]), - ("\u{a}\u{200d}", &["\u{a}", "\u{200d}"]), - ("\u{a}\u{308}\u{200d}", &["\u{a}", "\u{308}\u{200d}"]), - ("\u{a}\u{378}", &["\u{a}", "\u{378}"]), - ("\u{a}\u{308}\u{378}", &["\u{a}", "\u{308}", "\u{378}"]), - ("\u{1}\u{20}", &["\u{1}", "\u{20}"]), - ("\u{1}\u{308}\u{20}", &["\u{1}", "\u{308}", "\u{20}"]), - ("\u{1}\u{d}", &["\u{1}", "\u{d}"]), - ("\u{1}\u{308}\u{d}", &["\u{1}", "\u{308}", "\u{d}"]), - ("\u{1}\u{a}", &["\u{1}", "\u{a}"]), - ("\u{1}\u{308}\u{a}", &["\u{1}", "\u{308}", "\u{a}"]), - ("\u{1}\u{1}", &["\u{1}", "\u{1}"]), - ("\u{1}\u{308}\u{1}", &["\u{1}", "\u{308}", "\u{1}"]), - ("\u{1}\u{34f}", &["\u{1}", "\u{34f}"]), - ("\u{1}\u{308}\u{34f}", &["\u{1}", "\u{308}\u{34f}"]), - ("\u{1}\u{1f1e6}", &["\u{1}", "\u{1f1e6}"]), - ("\u{1}\u{308}\u{1f1e6}", &["\u{1}", "\u{308}", "\u{1f1e6}"]), - ("\u{1}\u{600}", &["\u{1}", "\u{600}"]), - ("\u{1}\u{308}\u{600}", &["\u{1}", "\u{308}", "\u{600}"]), - ("\u{1}\u{a03}", &["\u{1}", "\u{a03}"]), - ("\u{1}\u{1100}", &["\u{1}", "\u{1100}"]), - ("\u{1}\u{308}\u{1100}", &["\u{1}", "\u{308}", "\u{1100}"]), - ("\u{1}\u{1160}", &["\u{1}", "\u{1160}"]), - ("\u{1}\u{308}\u{1160}", &["\u{1}", "\u{308}", "\u{1160}"]), - ("\u{1}\u{11a8}", &["\u{1}", "\u{11a8}"]), - ("\u{1}\u{308}\u{11a8}", &["\u{1}", "\u{308}", "\u{11a8}"]), - ("\u{1}\u{ac00}", &["\u{1}", "\u{ac00}"]), - ("\u{1}\u{308}\u{ac00}", &["\u{1}", "\u{308}", "\u{ac00}"]), - ("\u{1}\u{ac01}", &["\u{1}", "\u{ac01}"]), - ("\u{1}\u{308}\u{ac01}", &["\u{1}", "\u{308}", "\u{ac01}"]), - ("\u{1}\u{900}", &["\u{1}", "\u{900}"]), - ("\u{1}\u{308}\u{900}", &["\u{1}", "\u{308}\u{900}"]), - ("\u{1}\u{903}", &["\u{1}", "\u{903}"]), - ("\u{1}\u{904}", &["\u{1}", "\u{904}"]), - ("\u{1}\u{308}\u{904}", &["\u{1}", "\u{308}", "\u{904}"]), - ("\u{1}\u{d4e}", &["\u{1}", "\u{d4e}"]), - ("\u{1}\u{308}\u{d4e}", &["\u{1}", "\u{308}", "\u{d4e}"]), - ("\u{1}\u{915}", &["\u{1}", "\u{915}"]), - ("\u{1}\u{308}\u{915}", &["\u{1}", "\u{308}", "\u{915}"]), - ("\u{1}\u{231a}", &["\u{1}", "\u{231a}"]), - ("\u{1}\u{308}\u{231a}", &["\u{1}", "\u{308}", "\u{231a}"]), - ("\u{1}\u{300}", &["\u{1}", "\u{300}"]), - ("\u{1}\u{308}\u{300}", &["\u{1}", "\u{308}\u{300}"]), - ("\u{1}\u{93c}", &["\u{1}", "\u{93c}"]), - ("\u{1}\u{308}\u{93c}", &["\u{1}", "\u{308}\u{93c}"]), - ("\u{1}\u{94d}", &["\u{1}", "\u{94d}"]), - ("\u{1}\u{308}\u{94d}", &["\u{1}", "\u{308}\u{94d}"]), - ("\u{1}\u{200d}", &["\u{1}", "\u{200d}"]), - ("\u{1}\u{308}\u{200d}", &["\u{1}", "\u{308}\u{200d}"]), - ("\u{1}\u{378}", &["\u{1}", "\u{378}"]), - ("\u{1}\u{308}\u{378}", &["\u{1}", "\u{308}", "\u{378}"]), - ("\u{34f}\u{20}", &["\u{34f}", "\u{20}"]), - ("\u{34f}\u{308}\u{20}", &["\u{34f}\u{308}", "\u{20}"]), - ("\u{34f}\u{d}", &["\u{34f}", "\u{d}"]), - ("\u{34f}\u{308}\u{d}", &["\u{34f}\u{308}", "\u{d}"]), - ("\u{34f}\u{a}", &["\u{34f}", "\u{a}"]), - ("\u{34f}\u{308}\u{a}", &["\u{34f}\u{308}", "\u{a}"]), - ("\u{34f}\u{1}", &["\u{34f}", "\u{1}"]), - ("\u{34f}\u{308}\u{1}", &["\u{34f}\u{308}", "\u{1}"]), - ("\u{34f}\u{34f}", &["\u{34f}\u{34f}"]), - ("\u{34f}\u{308}\u{34f}", &["\u{34f}\u{308}\u{34f}"]), - ("\u{34f}\u{1f1e6}", &["\u{34f}", "\u{1f1e6}"]), - ("\u{34f}\u{308}\u{1f1e6}", &["\u{34f}\u{308}", "\u{1f1e6}"]), - ("\u{34f}\u{600}", &["\u{34f}", "\u{600}"]), - ("\u{34f}\u{308}\u{600}", &["\u{34f}\u{308}", "\u{600}"]), - ("\u{34f}\u{1100}", &["\u{34f}", "\u{1100}"]), - ("\u{34f}\u{308}\u{1100}", &["\u{34f}\u{308}", "\u{1100}"]), - ("\u{34f}\u{1160}", &["\u{34f}", "\u{1160}"]), - ("\u{34f}\u{308}\u{1160}", &["\u{34f}\u{308}", "\u{1160}"]), - ("\u{34f}\u{11a8}", &["\u{34f}", "\u{11a8}"]), - ("\u{34f}\u{308}\u{11a8}", &["\u{34f}\u{308}", "\u{11a8}"]), - ("\u{34f}\u{ac00}", &["\u{34f}", "\u{ac00}"]), - ("\u{34f}\u{308}\u{ac00}", &["\u{34f}\u{308}", "\u{ac00}"]), - ("\u{34f}\u{ac01}", &["\u{34f}", "\u{ac01}"]), - ("\u{34f}\u{308}\u{ac01}", &["\u{34f}\u{308}", "\u{ac01}"]), - ("\u{34f}\u{900}", &["\u{34f}\u{900}"]), - ("\u{34f}\u{308}\u{900}", &["\u{34f}\u{308}\u{900}"]), - ("\u{34f}\u{904}", &["\u{34f}", "\u{904}"]), - ("\u{34f}\u{308}\u{904}", &["\u{34f}\u{308}", "\u{904}"]), - ("\u{34f}\u{d4e}", &["\u{34f}", "\u{d4e}"]), - ("\u{34f}\u{308}\u{d4e}", &["\u{34f}\u{308}", "\u{d4e}"]), - ("\u{34f}\u{915}", &["\u{34f}", "\u{915}"]), - ("\u{34f}\u{308}\u{915}", &["\u{34f}\u{308}", "\u{915}"]), - ("\u{34f}\u{231a}", &["\u{34f}", "\u{231a}"]), - ("\u{34f}\u{308}\u{231a}", &["\u{34f}\u{308}", "\u{231a}"]), - ("\u{34f}\u{300}", &["\u{34f}\u{300}"]), - ("\u{34f}\u{308}\u{300}", &["\u{34f}\u{308}\u{300}"]), - ("\u{34f}\u{93c}", &["\u{34f}\u{93c}"]), - ("\u{34f}\u{308}\u{93c}", &["\u{34f}\u{308}\u{93c}"]), - ("\u{34f}\u{94d}", &["\u{34f}\u{94d}"]), - ("\u{34f}\u{308}\u{94d}", &["\u{34f}\u{308}\u{94d}"]), - ("\u{34f}\u{200d}", &["\u{34f}\u{200d}"]), - ("\u{34f}\u{308}\u{200d}", &["\u{34f}\u{308}\u{200d}"]), - ("\u{34f}\u{378}", &["\u{34f}", "\u{378}"]), - ("\u{34f}\u{308}\u{378}", &["\u{34f}\u{308}", "\u{378}"]), - ("\u{1f1e6}\u{20}", &["\u{1f1e6}", "\u{20}"]), - ("\u{1f1e6}\u{308}\u{20}", &["\u{1f1e6}\u{308}", "\u{20}"]), - ("\u{1f1e6}\u{d}", &["\u{1f1e6}", "\u{d}"]), - ("\u{1f1e6}\u{308}\u{d}", &["\u{1f1e6}\u{308}", "\u{d}"]), - ("\u{1f1e6}\u{a}", &["\u{1f1e6}", "\u{a}"]), - ("\u{1f1e6}\u{308}\u{a}", &["\u{1f1e6}\u{308}", "\u{a}"]), - ("\u{1f1e6}\u{1}", &["\u{1f1e6}", "\u{1}"]), - ("\u{1f1e6}\u{308}\u{1}", &["\u{1f1e6}\u{308}", "\u{1}"]), - ("\u{1f1e6}\u{34f}", &["\u{1f1e6}\u{34f}"]), - ("\u{1f1e6}\u{308}\u{34f}", &["\u{1f1e6}\u{308}\u{34f}"]), - ("\u{1f1e6}\u{1f1e6}", &["\u{1f1e6}\u{1f1e6}"]), - ( - "\u{1f1e6}\u{308}\u{1f1e6}", - &["\u{1f1e6}\u{308}", "\u{1f1e6}"], - ), - ("\u{1f1e6}\u{600}", &["\u{1f1e6}", "\u{600}"]), - ("\u{1f1e6}\u{308}\u{600}", &["\u{1f1e6}\u{308}", "\u{600}"]), - ("\u{1f1e6}\u{1100}", &["\u{1f1e6}", "\u{1100}"]), - ( - "\u{1f1e6}\u{308}\u{1100}", - &["\u{1f1e6}\u{308}", "\u{1100}"], - ), - ("\u{1f1e6}\u{1160}", &["\u{1f1e6}", "\u{1160}"]), - ( - "\u{1f1e6}\u{308}\u{1160}", - &["\u{1f1e6}\u{308}", "\u{1160}"], - ), - ("\u{1f1e6}\u{11a8}", &["\u{1f1e6}", "\u{11a8}"]), - ( - "\u{1f1e6}\u{308}\u{11a8}", - &["\u{1f1e6}\u{308}", "\u{11a8}"], - ), - ("\u{1f1e6}\u{ac00}", &["\u{1f1e6}", "\u{ac00}"]), - ( - "\u{1f1e6}\u{308}\u{ac00}", - &["\u{1f1e6}\u{308}", "\u{ac00}"], - ), - ("\u{1f1e6}\u{ac01}", &["\u{1f1e6}", "\u{ac01}"]), - ( - "\u{1f1e6}\u{308}\u{ac01}", - &["\u{1f1e6}\u{308}", "\u{ac01}"], - ), - ("\u{1f1e6}\u{900}", &["\u{1f1e6}\u{900}"]), - ("\u{1f1e6}\u{308}\u{900}", &["\u{1f1e6}\u{308}\u{900}"]), - ("\u{1f1e6}\u{904}", &["\u{1f1e6}", "\u{904}"]), - ("\u{1f1e6}\u{308}\u{904}", &["\u{1f1e6}\u{308}", "\u{904}"]), - ("\u{1f1e6}\u{d4e}", &["\u{1f1e6}", "\u{d4e}"]), - ("\u{1f1e6}\u{308}\u{d4e}", &["\u{1f1e6}\u{308}", "\u{d4e}"]), - ("\u{1f1e6}\u{915}", &["\u{1f1e6}", "\u{915}"]), - ("\u{1f1e6}\u{308}\u{915}", &["\u{1f1e6}\u{308}", "\u{915}"]), - ("\u{1f1e6}\u{231a}", &["\u{1f1e6}", "\u{231a}"]), - ( - "\u{1f1e6}\u{308}\u{231a}", - &["\u{1f1e6}\u{308}", "\u{231a}"], - ), - ("\u{1f1e6}\u{300}", &["\u{1f1e6}\u{300}"]), - ("\u{1f1e6}\u{308}\u{300}", &["\u{1f1e6}\u{308}\u{300}"]), - ("\u{1f1e6}\u{93c}", &["\u{1f1e6}\u{93c}"]), - ("\u{1f1e6}\u{308}\u{93c}", &["\u{1f1e6}\u{308}\u{93c}"]), - ("\u{1f1e6}\u{94d}", &["\u{1f1e6}\u{94d}"]), - ("\u{1f1e6}\u{308}\u{94d}", &["\u{1f1e6}\u{308}\u{94d}"]), - ("\u{1f1e6}\u{200d}", &["\u{1f1e6}\u{200d}"]), - ("\u{1f1e6}\u{308}\u{200d}", &["\u{1f1e6}\u{308}\u{200d}"]), - ("\u{1f1e6}\u{378}", &["\u{1f1e6}", "\u{378}"]), - ("\u{1f1e6}\u{308}\u{378}", &["\u{1f1e6}\u{308}", "\u{378}"]), - ("\u{600}\u{308}\u{20}", &["\u{600}\u{308}", "\u{20}"]), - ("\u{600}\u{d}", &["\u{600}", "\u{d}"]), - ("\u{600}\u{308}\u{d}", &["\u{600}\u{308}", "\u{d}"]), - ("\u{600}\u{a}", &["\u{600}", "\u{a}"]), - ("\u{600}\u{308}\u{a}", &["\u{600}\u{308}", "\u{a}"]), - ("\u{600}\u{1}", &["\u{600}", "\u{1}"]), - ("\u{600}\u{308}\u{1}", &["\u{600}\u{308}", "\u{1}"]), - ("\u{600}\u{34f}", &["\u{600}\u{34f}"]), - ("\u{600}\u{308}\u{34f}", &["\u{600}\u{308}\u{34f}"]), - ("\u{600}\u{308}\u{1f1e6}", &["\u{600}\u{308}", "\u{1f1e6}"]), - ("\u{600}\u{308}\u{600}", &["\u{600}\u{308}", "\u{600}"]), - ("\u{600}\u{308}\u{1100}", &["\u{600}\u{308}", "\u{1100}"]), - ("\u{600}\u{308}\u{1160}", &["\u{600}\u{308}", "\u{1160}"]), - ("\u{600}\u{308}\u{11a8}", &["\u{600}\u{308}", "\u{11a8}"]), - ("\u{600}\u{308}\u{ac00}", &["\u{600}\u{308}", "\u{ac00}"]), - ("\u{600}\u{308}\u{ac01}", &["\u{600}\u{308}", "\u{ac01}"]), - ("\u{600}\u{900}", &["\u{600}\u{900}"]), - ("\u{600}\u{308}\u{900}", &["\u{600}\u{308}\u{900}"]), - ("\u{600}\u{308}\u{904}", &["\u{600}\u{308}", "\u{904}"]), - ("\u{600}\u{308}\u{d4e}", &["\u{600}\u{308}", "\u{d4e}"]), - ("\u{600}\u{308}\u{915}", &["\u{600}\u{308}", "\u{915}"]), - ("\u{600}\u{308}\u{231a}", &["\u{600}\u{308}", "\u{231a}"]), - ("\u{600}\u{300}", &["\u{600}\u{300}"]), - ("\u{600}\u{308}\u{300}", &["\u{600}\u{308}\u{300}"]), - ("\u{600}\u{93c}", &["\u{600}\u{93c}"]), - ("\u{600}\u{308}\u{93c}", &["\u{600}\u{308}\u{93c}"]), - ("\u{600}\u{94d}", &["\u{600}\u{94d}"]), - ("\u{600}\u{308}\u{94d}", &["\u{600}\u{308}\u{94d}"]), - ("\u{600}\u{200d}", &["\u{600}\u{200d}"]), - ("\u{600}\u{308}\u{200d}", &["\u{600}\u{308}\u{200d}"]), - ("\u{600}\u{308}\u{378}", &["\u{600}\u{308}", "\u{378}"]), - ("\u{a03}\u{20}", &["\u{a03}", "\u{20}"]), - ("\u{a03}\u{308}\u{20}", &["\u{a03}\u{308}", "\u{20}"]), - ("\u{a03}\u{d}", &["\u{a03}", "\u{d}"]), - ("\u{a03}\u{308}\u{d}", &["\u{a03}\u{308}", "\u{d}"]), - ("\u{a03}\u{a}", &["\u{a03}", "\u{a}"]), - ("\u{a03}\u{308}\u{a}", &["\u{a03}\u{308}", "\u{a}"]), - ("\u{a03}\u{1}", &["\u{a03}", "\u{1}"]), - ("\u{a03}\u{308}\u{1}", &["\u{a03}\u{308}", "\u{1}"]), - ("\u{a03}\u{34f}", &["\u{a03}\u{34f}"]), - ("\u{a03}\u{308}\u{34f}", &["\u{a03}\u{308}\u{34f}"]), - ("\u{a03}\u{1f1e6}", &["\u{a03}", "\u{1f1e6}"]), - ("\u{a03}\u{308}\u{1f1e6}", &["\u{a03}\u{308}", "\u{1f1e6}"]), - ("\u{a03}\u{600}", &["\u{a03}", "\u{600}"]), - ("\u{a03}\u{308}\u{600}", &["\u{a03}\u{308}", "\u{600}"]), - ("\u{a03}\u{1100}", &["\u{a03}", "\u{1100}"]), - ("\u{a03}\u{308}\u{1100}", &["\u{a03}\u{308}", "\u{1100}"]), - ("\u{a03}\u{1160}", &["\u{a03}", "\u{1160}"]), - ("\u{a03}\u{308}\u{1160}", &["\u{a03}\u{308}", "\u{1160}"]), - ("\u{a03}\u{11a8}", &["\u{a03}", "\u{11a8}"]), - ("\u{a03}\u{308}\u{11a8}", &["\u{a03}\u{308}", "\u{11a8}"]), - ("\u{a03}\u{ac00}", &["\u{a03}", "\u{ac00}"]), - ("\u{a03}\u{308}\u{ac00}", &["\u{a03}\u{308}", "\u{ac00}"]), - ("\u{a03}\u{ac01}", &["\u{a03}", "\u{ac01}"]), - ("\u{a03}\u{308}\u{ac01}", &["\u{a03}\u{308}", "\u{ac01}"]), - ("\u{a03}\u{900}", &["\u{a03}\u{900}"]), - ("\u{a03}\u{308}\u{900}", &["\u{a03}\u{308}\u{900}"]), - ("\u{a03}\u{904}", &["\u{a03}", "\u{904}"]), - ("\u{a03}\u{308}\u{904}", &["\u{a03}\u{308}", "\u{904}"]), - ("\u{a03}\u{d4e}", &["\u{a03}", "\u{d4e}"]), - ("\u{a03}\u{308}\u{d4e}", &["\u{a03}\u{308}", "\u{d4e}"]), - ("\u{a03}\u{915}", &["\u{a03}", "\u{915}"]), - ("\u{a03}\u{308}\u{915}", &["\u{a03}\u{308}", "\u{915}"]), - ("\u{a03}\u{231a}", &["\u{a03}", "\u{231a}"]), - ("\u{a03}\u{308}\u{231a}", &["\u{a03}\u{308}", "\u{231a}"]), - ("\u{a03}\u{300}", &["\u{a03}\u{300}"]), - ("\u{a03}\u{308}\u{300}", &["\u{a03}\u{308}\u{300}"]), - ("\u{a03}\u{93c}", &["\u{a03}\u{93c}"]), - ("\u{a03}\u{308}\u{93c}", &["\u{a03}\u{308}\u{93c}"]), - ("\u{a03}\u{94d}", &["\u{a03}\u{94d}"]), - ("\u{a03}\u{308}\u{94d}", &["\u{a03}\u{308}\u{94d}"]), - ("\u{a03}\u{200d}", &["\u{a03}\u{200d}"]), - ("\u{a03}\u{308}\u{200d}", &["\u{a03}\u{308}\u{200d}"]), - ("\u{a03}\u{378}", &["\u{a03}", "\u{378}"]), - ("\u{a03}\u{308}\u{378}", &["\u{a03}\u{308}", "\u{378}"]), - ("\u{1100}\u{20}", &["\u{1100}", "\u{20}"]), - ("\u{1100}\u{308}\u{20}", &["\u{1100}\u{308}", "\u{20}"]), - ("\u{1100}\u{d}", &["\u{1100}", "\u{d}"]), - ("\u{1100}\u{308}\u{d}", &["\u{1100}\u{308}", "\u{d}"]), - ("\u{1100}\u{a}", &["\u{1100}", "\u{a}"]), - ("\u{1100}\u{308}\u{a}", &["\u{1100}\u{308}", "\u{a}"]), - ("\u{1100}\u{1}", &["\u{1100}", "\u{1}"]), - ("\u{1100}\u{308}\u{1}", &["\u{1100}\u{308}", "\u{1}"]), - ("\u{1100}\u{34f}", &["\u{1100}\u{34f}"]), - ("\u{1100}\u{308}\u{34f}", &["\u{1100}\u{308}\u{34f}"]), - ("\u{1100}\u{1f1e6}", &["\u{1100}", "\u{1f1e6}"]), - ( - "\u{1100}\u{308}\u{1f1e6}", - &["\u{1100}\u{308}", "\u{1f1e6}"], - ), - ("\u{1100}\u{600}", &["\u{1100}", "\u{600}"]), - ("\u{1100}\u{308}\u{600}", &["\u{1100}\u{308}", "\u{600}"]), - ("\u{1100}\u{1100}", &["\u{1100}\u{1100}"]), - ("\u{1100}\u{308}\u{1100}", &["\u{1100}\u{308}", "\u{1100}"]), - ("\u{1100}\u{1160}", &["\u{1100}\u{1160}"]), - ("\u{1100}\u{308}\u{1160}", &["\u{1100}\u{308}", "\u{1160}"]), - ("\u{1100}\u{11a8}", &["\u{1100}", "\u{11a8}"]), - ("\u{1100}\u{308}\u{11a8}", &["\u{1100}\u{308}", "\u{11a8}"]), - ("\u{1100}\u{ac00}", &["\u{1100}\u{ac00}"]), - ("\u{1100}\u{308}\u{ac00}", &["\u{1100}\u{308}", "\u{ac00}"]), - ("\u{1100}\u{ac01}", &["\u{1100}\u{ac01}"]), - ("\u{1100}\u{308}\u{ac01}", &["\u{1100}\u{308}", "\u{ac01}"]), - ("\u{1100}\u{900}", &["\u{1100}\u{900}"]), - ("\u{1100}\u{308}\u{900}", &["\u{1100}\u{308}\u{900}"]), - ("\u{1100}\u{904}", &["\u{1100}", "\u{904}"]), - ("\u{1100}\u{308}\u{904}", &["\u{1100}\u{308}", "\u{904}"]), - ("\u{1100}\u{d4e}", &["\u{1100}", "\u{d4e}"]), - ("\u{1100}\u{308}\u{d4e}", &["\u{1100}\u{308}", "\u{d4e}"]), - ("\u{1100}\u{915}", &["\u{1100}", "\u{915}"]), - ("\u{1100}\u{308}\u{915}", &["\u{1100}\u{308}", "\u{915}"]), - ("\u{1100}\u{231a}", &["\u{1100}", "\u{231a}"]), - ("\u{1100}\u{308}\u{231a}", &["\u{1100}\u{308}", "\u{231a}"]), - ("\u{1100}\u{300}", &["\u{1100}\u{300}"]), - ("\u{1100}\u{308}\u{300}", &["\u{1100}\u{308}\u{300}"]), - ("\u{1100}\u{93c}", &["\u{1100}\u{93c}"]), - ("\u{1100}\u{308}\u{93c}", &["\u{1100}\u{308}\u{93c}"]), - ("\u{1100}\u{94d}", &["\u{1100}\u{94d}"]), - ("\u{1100}\u{308}\u{94d}", &["\u{1100}\u{308}\u{94d}"]), - ("\u{1100}\u{200d}", &["\u{1100}\u{200d}"]), - ("\u{1100}\u{308}\u{200d}", &["\u{1100}\u{308}\u{200d}"]), - ("\u{1100}\u{378}", &["\u{1100}", "\u{378}"]), - ("\u{1100}\u{308}\u{378}", &["\u{1100}\u{308}", "\u{378}"]), - ("\u{1160}\u{20}", &["\u{1160}", "\u{20}"]), - ("\u{1160}\u{308}\u{20}", &["\u{1160}\u{308}", "\u{20}"]), - ("\u{1160}\u{d}", &["\u{1160}", "\u{d}"]), - ("\u{1160}\u{308}\u{d}", &["\u{1160}\u{308}", "\u{d}"]), - ("\u{1160}\u{a}", &["\u{1160}", "\u{a}"]), - ("\u{1160}\u{308}\u{a}", &["\u{1160}\u{308}", "\u{a}"]), - ("\u{1160}\u{1}", &["\u{1160}", "\u{1}"]), - ("\u{1160}\u{308}\u{1}", &["\u{1160}\u{308}", "\u{1}"]), - ("\u{1160}\u{34f}", &["\u{1160}\u{34f}"]), - ("\u{1160}\u{308}\u{34f}", &["\u{1160}\u{308}\u{34f}"]), - ("\u{1160}\u{1f1e6}", &["\u{1160}", "\u{1f1e6}"]), - ( - "\u{1160}\u{308}\u{1f1e6}", - &["\u{1160}\u{308}", "\u{1f1e6}"], - ), - ("\u{1160}\u{600}", &["\u{1160}", "\u{600}"]), - ("\u{1160}\u{308}\u{600}", &["\u{1160}\u{308}", "\u{600}"]), - ("\u{1160}\u{1100}", &["\u{1160}", "\u{1100}"]), - ("\u{1160}\u{308}\u{1100}", &["\u{1160}\u{308}", "\u{1100}"]), - ("\u{1160}\u{1160}", &["\u{1160}\u{1160}"]), - ("\u{1160}\u{308}\u{1160}", &["\u{1160}\u{308}", "\u{1160}"]), - ("\u{1160}\u{11a8}", &["\u{1160}\u{11a8}"]), - ("\u{1160}\u{308}\u{11a8}", &["\u{1160}\u{308}", "\u{11a8}"]), - ("\u{1160}\u{ac00}", &["\u{1160}", "\u{ac00}"]), - ("\u{1160}\u{308}\u{ac00}", &["\u{1160}\u{308}", "\u{ac00}"]), - ("\u{1160}\u{ac01}", &["\u{1160}", "\u{ac01}"]), - ("\u{1160}\u{308}\u{ac01}", &["\u{1160}\u{308}", "\u{ac01}"]), - ("\u{1160}\u{900}", &["\u{1160}\u{900}"]), - ("\u{1160}\u{308}\u{900}", &["\u{1160}\u{308}\u{900}"]), - ("\u{1160}\u{904}", &["\u{1160}", "\u{904}"]), - ("\u{1160}\u{308}\u{904}", &["\u{1160}\u{308}", "\u{904}"]), - ("\u{1160}\u{d4e}", &["\u{1160}", "\u{d4e}"]), - ("\u{1160}\u{308}\u{d4e}", &["\u{1160}\u{308}", "\u{d4e}"]), - ("\u{1160}\u{915}", &["\u{1160}", "\u{915}"]), - ("\u{1160}\u{308}\u{915}", &["\u{1160}\u{308}", "\u{915}"]), - ("\u{1160}\u{231a}", &["\u{1160}", "\u{231a}"]), - ("\u{1160}\u{308}\u{231a}", &["\u{1160}\u{308}", "\u{231a}"]), - ("\u{1160}\u{300}", &["\u{1160}\u{300}"]), - ("\u{1160}\u{308}\u{300}", &["\u{1160}\u{308}\u{300}"]), - ("\u{1160}\u{93c}", &["\u{1160}\u{93c}"]), - ("\u{1160}\u{308}\u{93c}", &["\u{1160}\u{308}\u{93c}"]), - ("\u{1160}\u{94d}", &["\u{1160}\u{94d}"]), - ("\u{1160}\u{308}\u{94d}", &["\u{1160}\u{308}\u{94d}"]), - ("\u{1160}\u{200d}", &["\u{1160}\u{200d}"]), - ("\u{1160}\u{308}\u{200d}", &["\u{1160}\u{308}\u{200d}"]), - ("\u{1160}\u{378}", &["\u{1160}", "\u{378}"]), - ("\u{1160}\u{308}\u{378}", &["\u{1160}\u{308}", "\u{378}"]), - ("\u{11a8}\u{20}", &["\u{11a8}", "\u{20}"]), - ("\u{11a8}\u{308}\u{20}", &["\u{11a8}\u{308}", "\u{20}"]), - ("\u{11a8}\u{d}", &["\u{11a8}", "\u{d}"]), - ("\u{11a8}\u{308}\u{d}", &["\u{11a8}\u{308}", "\u{d}"]), - ("\u{11a8}\u{a}", &["\u{11a8}", "\u{a}"]), - ("\u{11a8}\u{308}\u{a}", &["\u{11a8}\u{308}", "\u{a}"]), - ("\u{11a8}\u{1}", &["\u{11a8}", "\u{1}"]), - ("\u{11a8}\u{308}\u{1}", &["\u{11a8}\u{308}", "\u{1}"]), - ("\u{11a8}\u{34f}", &["\u{11a8}\u{34f}"]), - ("\u{11a8}\u{308}\u{34f}", &["\u{11a8}\u{308}\u{34f}"]), - ("\u{11a8}\u{1f1e6}", &["\u{11a8}", "\u{1f1e6}"]), - ( - "\u{11a8}\u{308}\u{1f1e6}", - &["\u{11a8}\u{308}", "\u{1f1e6}"], - ), - ("\u{11a8}\u{600}", &["\u{11a8}", "\u{600}"]), - ("\u{11a8}\u{308}\u{600}", &["\u{11a8}\u{308}", "\u{600}"]), - ("\u{11a8}\u{1100}", &["\u{11a8}", "\u{1100}"]), - ("\u{11a8}\u{308}\u{1100}", &["\u{11a8}\u{308}", "\u{1100}"]), - ("\u{11a8}\u{1160}", &["\u{11a8}", "\u{1160}"]), - ("\u{11a8}\u{308}\u{1160}", &["\u{11a8}\u{308}", "\u{1160}"]), - ("\u{11a8}\u{11a8}", &["\u{11a8}\u{11a8}"]), - ("\u{11a8}\u{308}\u{11a8}", &["\u{11a8}\u{308}", "\u{11a8}"]), - ("\u{11a8}\u{ac00}", &["\u{11a8}", "\u{ac00}"]), - ("\u{11a8}\u{308}\u{ac00}", &["\u{11a8}\u{308}", "\u{ac00}"]), - ("\u{11a8}\u{ac01}", &["\u{11a8}", "\u{ac01}"]), - ("\u{11a8}\u{308}\u{ac01}", &["\u{11a8}\u{308}", "\u{ac01}"]), - ("\u{11a8}\u{900}", &["\u{11a8}\u{900}"]), - ("\u{11a8}\u{308}\u{900}", &["\u{11a8}\u{308}\u{900}"]), - ("\u{11a8}\u{904}", &["\u{11a8}", "\u{904}"]), - ("\u{11a8}\u{308}\u{904}", &["\u{11a8}\u{308}", "\u{904}"]), - ("\u{11a8}\u{d4e}", &["\u{11a8}", "\u{d4e}"]), - ("\u{11a8}\u{308}\u{d4e}", &["\u{11a8}\u{308}", "\u{d4e}"]), - ("\u{11a8}\u{915}", &["\u{11a8}", "\u{915}"]), - ("\u{11a8}\u{308}\u{915}", &["\u{11a8}\u{308}", "\u{915}"]), - ("\u{11a8}\u{231a}", &["\u{11a8}", "\u{231a}"]), - ("\u{11a8}\u{308}\u{231a}", &["\u{11a8}\u{308}", "\u{231a}"]), - ("\u{11a8}\u{300}", &["\u{11a8}\u{300}"]), - ("\u{11a8}\u{308}\u{300}", &["\u{11a8}\u{308}\u{300}"]), - ("\u{11a8}\u{93c}", &["\u{11a8}\u{93c}"]), - ("\u{11a8}\u{308}\u{93c}", &["\u{11a8}\u{308}\u{93c}"]), - ("\u{11a8}\u{94d}", &["\u{11a8}\u{94d}"]), - ("\u{11a8}\u{308}\u{94d}", &["\u{11a8}\u{308}\u{94d}"]), - ("\u{11a8}\u{200d}", &["\u{11a8}\u{200d}"]), - ("\u{11a8}\u{308}\u{200d}", &["\u{11a8}\u{308}\u{200d}"]), - ("\u{11a8}\u{378}", &["\u{11a8}", "\u{378}"]), - ("\u{11a8}\u{308}\u{378}", &["\u{11a8}\u{308}", "\u{378}"]), - ("\u{ac00}\u{20}", &["\u{ac00}", "\u{20}"]), - ("\u{ac00}\u{308}\u{20}", &["\u{ac00}\u{308}", "\u{20}"]), - ("\u{ac00}\u{d}", &["\u{ac00}", "\u{d}"]), - ("\u{ac00}\u{308}\u{d}", &["\u{ac00}\u{308}", "\u{d}"]), - ("\u{ac00}\u{a}", &["\u{ac00}", "\u{a}"]), - ("\u{ac00}\u{308}\u{a}", &["\u{ac00}\u{308}", "\u{a}"]), - ("\u{ac00}\u{1}", &["\u{ac00}", "\u{1}"]), - ("\u{ac00}\u{308}\u{1}", &["\u{ac00}\u{308}", "\u{1}"]), - ("\u{ac00}\u{34f}", &["\u{ac00}\u{34f}"]), - ("\u{ac00}\u{308}\u{34f}", &["\u{ac00}\u{308}\u{34f}"]), - ("\u{ac00}\u{1f1e6}", &["\u{ac00}", "\u{1f1e6}"]), - ( - "\u{ac00}\u{308}\u{1f1e6}", - &["\u{ac00}\u{308}", "\u{1f1e6}"], - ), - ("\u{ac00}\u{600}", &["\u{ac00}", "\u{600}"]), - ("\u{ac00}\u{308}\u{600}", &["\u{ac00}\u{308}", "\u{600}"]), - ("\u{ac00}\u{1100}", &["\u{ac00}", "\u{1100}"]), - ("\u{ac00}\u{308}\u{1100}", &["\u{ac00}\u{308}", "\u{1100}"]), - ("\u{ac00}\u{1160}", &["\u{ac00}\u{1160}"]), - ("\u{ac00}\u{308}\u{1160}", &["\u{ac00}\u{308}", "\u{1160}"]), - ("\u{ac00}\u{11a8}", &["\u{ac00}\u{11a8}"]), - ("\u{ac00}\u{308}\u{11a8}", &["\u{ac00}\u{308}", "\u{11a8}"]), - ("\u{ac00}\u{ac00}", &["\u{ac00}", "\u{ac00}"]), - ("\u{ac00}\u{308}\u{ac00}", &["\u{ac00}\u{308}", "\u{ac00}"]), - ("\u{ac00}\u{ac01}", &["\u{ac00}", "\u{ac01}"]), - ("\u{ac00}\u{308}\u{ac01}", &["\u{ac00}\u{308}", "\u{ac01}"]), - ("\u{ac00}\u{900}", &["\u{ac00}\u{900}"]), - ("\u{ac00}\u{308}\u{900}", &["\u{ac00}\u{308}\u{900}"]), - ("\u{ac00}\u{904}", &["\u{ac00}", "\u{904}"]), - ("\u{ac00}\u{308}\u{904}", &["\u{ac00}\u{308}", "\u{904}"]), - ("\u{ac00}\u{d4e}", &["\u{ac00}", "\u{d4e}"]), - ("\u{ac00}\u{308}\u{d4e}", &["\u{ac00}\u{308}", "\u{d4e}"]), - ("\u{ac00}\u{915}", &["\u{ac00}", "\u{915}"]), - ("\u{ac00}\u{308}\u{915}", &["\u{ac00}\u{308}", "\u{915}"]), - ("\u{ac00}\u{231a}", &["\u{ac00}", "\u{231a}"]), - ("\u{ac00}\u{308}\u{231a}", &["\u{ac00}\u{308}", "\u{231a}"]), - ("\u{ac00}\u{300}", &["\u{ac00}\u{300}"]), - ("\u{ac00}\u{308}\u{300}", &["\u{ac00}\u{308}\u{300}"]), - ("\u{ac00}\u{93c}", &["\u{ac00}\u{93c}"]), - ("\u{ac00}\u{308}\u{93c}", &["\u{ac00}\u{308}\u{93c}"]), - ("\u{ac00}\u{94d}", &["\u{ac00}\u{94d}"]), - ("\u{ac00}\u{308}\u{94d}", &["\u{ac00}\u{308}\u{94d}"]), - ("\u{ac00}\u{200d}", &["\u{ac00}\u{200d}"]), - ("\u{ac00}\u{308}\u{200d}", &["\u{ac00}\u{308}\u{200d}"]), - ("\u{ac00}\u{378}", &["\u{ac00}", "\u{378}"]), - ("\u{ac00}\u{308}\u{378}", &["\u{ac00}\u{308}", "\u{378}"]), - ("\u{ac01}\u{20}", &["\u{ac01}", "\u{20}"]), - ("\u{ac01}\u{308}\u{20}", &["\u{ac01}\u{308}", "\u{20}"]), - ("\u{ac01}\u{d}", &["\u{ac01}", "\u{d}"]), - ("\u{ac01}\u{308}\u{d}", &["\u{ac01}\u{308}", "\u{d}"]), - ("\u{ac01}\u{a}", &["\u{ac01}", "\u{a}"]), - ("\u{ac01}\u{308}\u{a}", &["\u{ac01}\u{308}", "\u{a}"]), - ("\u{ac01}\u{1}", &["\u{ac01}", "\u{1}"]), - ("\u{ac01}\u{308}\u{1}", &["\u{ac01}\u{308}", "\u{1}"]), - ("\u{ac01}\u{34f}", &["\u{ac01}\u{34f}"]), - ("\u{ac01}\u{308}\u{34f}", &["\u{ac01}\u{308}\u{34f}"]), - ("\u{ac01}\u{1f1e6}", &["\u{ac01}", "\u{1f1e6}"]), - ( - "\u{ac01}\u{308}\u{1f1e6}", - &["\u{ac01}\u{308}", "\u{1f1e6}"], - ), - ("\u{ac01}\u{600}", &["\u{ac01}", "\u{600}"]), - ("\u{ac01}\u{308}\u{600}", &["\u{ac01}\u{308}", "\u{600}"]), - ("\u{ac01}\u{1100}", &["\u{ac01}", "\u{1100}"]), - ("\u{ac01}\u{308}\u{1100}", &["\u{ac01}\u{308}", "\u{1100}"]), - ("\u{ac01}\u{1160}", &["\u{ac01}", "\u{1160}"]), - ("\u{ac01}\u{308}\u{1160}", &["\u{ac01}\u{308}", "\u{1160}"]), - ("\u{ac01}\u{11a8}", &["\u{ac01}\u{11a8}"]), - ("\u{ac01}\u{308}\u{11a8}", &["\u{ac01}\u{308}", "\u{11a8}"]), - ("\u{ac01}\u{ac00}", &["\u{ac01}", "\u{ac00}"]), - ("\u{ac01}\u{308}\u{ac00}", &["\u{ac01}\u{308}", "\u{ac00}"]), - ("\u{ac01}\u{ac01}", &["\u{ac01}", "\u{ac01}"]), - ("\u{ac01}\u{308}\u{ac01}", &["\u{ac01}\u{308}", "\u{ac01}"]), - ("\u{ac01}\u{900}", &["\u{ac01}\u{900}"]), - ("\u{ac01}\u{308}\u{900}", &["\u{ac01}\u{308}\u{900}"]), - ("\u{ac01}\u{904}", &["\u{ac01}", "\u{904}"]), - ("\u{ac01}\u{308}\u{904}", &["\u{ac01}\u{308}", "\u{904}"]), - ("\u{ac01}\u{d4e}", &["\u{ac01}", "\u{d4e}"]), - ("\u{ac01}\u{308}\u{d4e}", &["\u{ac01}\u{308}", "\u{d4e}"]), - ("\u{ac01}\u{915}", &["\u{ac01}", "\u{915}"]), - ("\u{ac01}\u{308}\u{915}", &["\u{ac01}\u{308}", "\u{915}"]), - ("\u{ac01}\u{231a}", &["\u{ac01}", "\u{231a}"]), - ("\u{ac01}\u{308}\u{231a}", &["\u{ac01}\u{308}", "\u{231a}"]), - ("\u{ac01}\u{300}", &["\u{ac01}\u{300}"]), - ("\u{ac01}\u{308}\u{300}", &["\u{ac01}\u{308}\u{300}"]), - ("\u{ac01}\u{93c}", &["\u{ac01}\u{93c}"]), - ("\u{ac01}\u{308}\u{93c}", &["\u{ac01}\u{308}\u{93c}"]), - ("\u{ac01}\u{94d}", &["\u{ac01}\u{94d}"]), - ("\u{ac01}\u{308}\u{94d}", &["\u{ac01}\u{308}\u{94d}"]), - ("\u{ac01}\u{200d}", &["\u{ac01}\u{200d}"]), - ("\u{ac01}\u{308}\u{200d}", &["\u{ac01}\u{308}\u{200d}"]), - ("\u{ac01}\u{378}", &["\u{ac01}", "\u{378}"]), - ("\u{ac01}\u{308}\u{378}", &["\u{ac01}\u{308}", "\u{378}"]), - ("\u{900}\u{20}", &["\u{900}", "\u{20}"]), - ("\u{900}\u{308}\u{20}", &["\u{900}\u{308}", "\u{20}"]), - ("\u{900}\u{d}", &["\u{900}", "\u{d}"]), - ("\u{900}\u{308}\u{d}", &["\u{900}\u{308}", "\u{d}"]), - ("\u{900}\u{a}", &["\u{900}", "\u{a}"]), - ("\u{900}\u{308}\u{a}", &["\u{900}\u{308}", "\u{a}"]), - ("\u{900}\u{1}", &["\u{900}", "\u{1}"]), - ("\u{900}\u{308}\u{1}", &["\u{900}\u{308}", "\u{1}"]), - ("\u{900}\u{34f}", &["\u{900}\u{34f}"]), - ("\u{900}\u{308}\u{34f}", &["\u{900}\u{308}\u{34f}"]), - ("\u{900}\u{1f1e6}", &["\u{900}", "\u{1f1e6}"]), - ("\u{900}\u{308}\u{1f1e6}", &["\u{900}\u{308}", "\u{1f1e6}"]), - ("\u{900}\u{600}", &["\u{900}", "\u{600}"]), - ("\u{900}\u{308}\u{600}", &["\u{900}\u{308}", "\u{600}"]), - ("\u{900}\u{1100}", &["\u{900}", "\u{1100}"]), - ("\u{900}\u{308}\u{1100}", &["\u{900}\u{308}", "\u{1100}"]), - ("\u{900}\u{1160}", &["\u{900}", "\u{1160}"]), - ("\u{900}\u{308}\u{1160}", &["\u{900}\u{308}", "\u{1160}"]), - ("\u{900}\u{11a8}", &["\u{900}", "\u{11a8}"]), - ("\u{900}\u{308}\u{11a8}", &["\u{900}\u{308}", "\u{11a8}"]), - ("\u{900}\u{ac00}", &["\u{900}", "\u{ac00}"]), - ("\u{900}\u{308}\u{ac00}", &["\u{900}\u{308}", "\u{ac00}"]), - ("\u{900}\u{ac01}", &["\u{900}", "\u{ac01}"]), - ("\u{900}\u{308}\u{ac01}", &["\u{900}\u{308}", "\u{ac01}"]), - ("\u{900}\u{900}", &["\u{900}\u{900}"]), - ("\u{900}\u{308}\u{900}", &["\u{900}\u{308}\u{900}"]), - ("\u{900}\u{904}", &["\u{900}", "\u{904}"]), - ("\u{900}\u{308}\u{904}", &["\u{900}\u{308}", "\u{904}"]), - ("\u{900}\u{d4e}", &["\u{900}", "\u{d4e}"]), - ("\u{900}\u{308}\u{d4e}", &["\u{900}\u{308}", "\u{d4e}"]), - ("\u{900}\u{915}", &["\u{900}", "\u{915}"]), - ("\u{900}\u{308}\u{915}", &["\u{900}\u{308}", "\u{915}"]), - ("\u{900}\u{231a}", &["\u{900}", "\u{231a}"]), - ("\u{900}\u{308}\u{231a}", &["\u{900}\u{308}", "\u{231a}"]), - ("\u{900}\u{300}", &["\u{900}\u{300}"]), - ("\u{900}\u{308}\u{300}", &["\u{900}\u{308}\u{300}"]), - ("\u{900}\u{93c}", &["\u{900}\u{93c}"]), - ("\u{900}\u{308}\u{93c}", &["\u{900}\u{308}\u{93c}"]), - ("\u{900}\u{94d}", &["\u{900}\u{94d}"]), - ("\u{900}\u{308}\u{94d}", &["\u{900}\u{308}\u{94d}"]), - ("\u{900}\u{200d}", &["\u{900}\u{200d}"]), - ("\u{900}\u{308}\u{200d}", &["\u{900}\u{308}\u{200d}"]), - ("\u{900}\u{378}", &["\u{900}", "\u{378}"]), - ("\u{900}\u{308}\u{378}", &["\u{900}\u{308}", "\u{378}"]), - ("\u{903}\u{20}", &["\u{903}", "\u{20}"]), - ("\u{903}\u{308}\u{20}", &["\u{903}\u{308}", "\u{20}"]), - ("\u{903}\u{d}", &["\u{903}", "\u{d}"]), - ("\u{903}\u{308}\u{d}", &["\u{903}\u{308}", "\u{d}"]), - ("\u{903}\u{a}", &["\u{903}", "\u{a}"]), - ("\u{903}\u{308}\u{a}", &["\u{903}\u{308}", "\u{a}"]), - ("\u{903}\u{1}", &["\u{903}", "\u{1}"]), - ("\u{903}\u{308}\u{1}", &["\u{903}\u{308}", "\u{1}"]), - ("\u{903}\u{34f}", &["\u{903}\u{34f}"]), - ("\u{903}\u{308}\u{34f}", &["\u{903}\u{308}\u{34f}"]), - ("\u{903}\u{1f1e6}", &["\u{903}", "\u{1f1e6}"]), - ("\u{903}\u{308}\u{1f1e6}", &["\u{903}\u{308}", "\u{1f1e6}"]), - ("\u{903}\u{600}", &["\u{903}", "\u{600}"]), - ("\u{903}\u{308}\u{600}", &["\u{903}\u{308}", "\u{600}"]), - ("\u{903}\u{1100}", &["\u{903}", "\u{1100}"]), - ("\u{903}\u{308}\u{1100}", &["\u{903}\u{308}", "\u{1100}"]), - ("\u{903}\u{1160}", &["\u{903}", "\u{1160}"]), - ("\u{903}\u{308}\u{1160}", &["\u{903}\u{308}", "\u{1160}"]), - ("\u{903}\u{11a8}", &["\u{903}", "\u{11a8}"]), - ("\u{903}\u{308}\u{11a8}", &["\u{903}\u{308}", "\u{11a8}"]), - ("\u{903}\u{ac00}", &["\u{903}", "\u{ac00}"]), - ("\u{903}\u{308}\u{ac00}", &["\u{903}\u{308}", "\u{ac00}"]), - ("\u{903}\u{ac01}", &["\u{903}", "\u{ac01}"]), - ("\u{903}\u{308}\u{ac01}", &["\u{903}\u{308}", "\u{ac01}"]), - ("\u{903}\u{900}", &["\u{903}\u{900}"]), - ("\u{903}\u{308}\u{900}", &["\u{903}\u{308}\u{900}"]), - ("\u{903}\u{904}", &["\u{903}", "\u{904}"]), - ("\u{903}\u{308}\u{904}", &["\u{903}\u{308}", "\u{904}"]), - ("\u{903}\u{d4e}", &["\u{903}", "\u{d4e}"]), - ("\u{903}\u{308}\u{d4e}", &["\u{903}\u{308}", "\u{d4e}"]), - ("\u{903}\u{915}", &["\u{903}", "\u{915}"]), - ("\u{903}\u{308}\u{915}", &["\u{903}\u{308}", "\u{915}"]), - ("\u{903}\u{231a}", &["\u{903}", "\u{231a}"]), - ("\u{903}\u{308}\u{231a}", &["\u{903}\u{308}", "\u{231a}"]), - ("\u{903}\u{300}", &["\u{903}\u{300}"]), - ("\u{903}\u{308}\u{300}", &["\u{903}\u{308}\u{300}"]), - ("\u{903}\u{93c}", &["\u{903}\u{93c}"]), - ("\u{903}\u{308}\u{93c}", &["\u{903}\u{308}\u{93c}"]), - ("\u{903}\u{94d}", &["\u{903}\u{94d}"]), - ("\u{903}\u{308}\u{94d}", &["\u{903}\u{308}\u{94d}"]), - ("\u{903}\u{200d}", &["\u{903}\u{200d}"]), - ("\u{903}\u{308}\u{200d}", &["\u{903}\u{308}\u{200d}"]), - ("\u{903}\u{378}", &["\u{903}", "\u{378}"]), - ("\u{903}\u{308}\u{378}", &["\u{903}\u{308}", "\u{378}"]), - ("\u{904}\u{20}", &["\u{904}", "\u{20}"]), - ("\u{904}\u{308}\u{20}", &["\u{904}\u{308}", "\u{20}"]), - ("\u{904}\u{d}", &["\u{904}", "\u{d}"]), - ("\u{904}\u{308}\u{d}", &["\u{904}\u{308}", "\u{d}"]), - ("\u{904}\u{a}", &["\u{904}", "\u{a}"]), - ("\u{904}\u{308}\u{a}", &["\u{904}\u{308}", "\u{a}"]), - ("\u{904}\u{1}", &["\u{904}", "\u{1}"]), - ("\u{904}\u{308}\u{1}", &["\u{904}\u{308}", "\u{1}"]), - ("\u{904}\u{34f}", &["\u{904}\u{34f}"]), - ("\u{904}\u{308}\u{34f}", &["\u{904}\u{308}\u{34f}"]), - ("\u{904}\u{1f1e6}", &["\u{904}", "\u{1f1e6}"]), - ("\u{904}\u{308}\u{1f1e6}", &["\u{904}\u{308}", "\u{1f1e6}"]), - ("\u{904}\u{600}", &["\u{904}", "\u{600}"]), - ("\u{904}\u{308}\u{600}", &["\u{904}\u{308}", "\u{600}"]), - ("\u{904}\u{1100}", &["\u{904}", "\u{1100}"]), - ("\u{904}\u{308}\u{1100}", &["\u{904}\u{308}", "\u{1100}"]), - ("\u{904}\u{1160}", &["\u{904}", "\u{1160}"]), - ("\u{904}\u{308}\u{1160}", &["\u{904}\u{308}", "\u{1160}"]), - ("\u{904}\u{11a8}", &["\u{904}", "\u{11a8}"]), - ("\u{904}\u{308}\u{11a8}", &["\u{904}\u{308}", "\u{11a8}"]), - ("\u{904}\u{ac00}", &["\u{904}", "\u{ac00}"]), - ("\u{904}\u{308}\u{ac00}", &["\u{904}\u{308}", "\u{ac00}"]), - ("\u{904}\u{ac01}", &["\u{904}", "\u{ac01}"]), - ("\u{904}\u{308}\u{ac01}", &["\u{904}\u{308}", "\u{ac01}"]), - ("\u{904}\u{900}", &["\u{904}\u{900}"]), - ("\u{904}\u{308}\u{900}", &["\u{904}\u{308}\u{900}"]), - ("\u{904}\u{904}", &["\u{904}", "\u{904}"]), - ("\u{904}\u{308}\u{904}", &["\u{904}\u{308}", "\u{904}"]), - ("\u{904}\u{d4e}", &["\u{904}", "\u{d4e}"]), - ("\u{904}\u{308}\u{d4e}", &["\u{904}\u{308}", "\u{d4e}"]), - ("\u{904}\u{915}", &["\u{904}", "\u{915}"]), - ("\u{904}\u{308}\u{915}", &["\u{904}\u{308}", "\u{915}"]), - ("\u{904}\u{231a}", &["\u{904}", "\u{231a}"]), - ("\u{904}\u{308}\u{231a}", &["\u{904}\u{308}", "\u{231a}"]), - ("\u{904}\u{300}", &["\u{904}\u{300}"]), - ("\u{904}\u{308}\u{300}", &["\u{904}\u{308}\u{300}"]), - ("\u{904}\u{93c}", &["\u{904}\u{93c}"]), - ("\u{904}\u{308}\u{93c}", &["\u{904}\u{308}\u{93c}"]), - ("\u{904}\u{94d}", &["\u{904}\u{94d}"]), - ("\u{904}\u{308}\u{94d}", &["\u{904}\u{308}\u{94d}"]), - ("\u{904}\u{200d}", &["\u{904}\u{200d}"]), - ("\u{904}\u{308}\u{200d}", &["\u{904}\u{308}\u{200d}"]), - ("\u{904}\u{378}", &["\u{904}", "\u{378}"]), - ("\u{904}\u{308}\u{378}", &["\u{904}\u{308}", "\u{378}"]), - ("\u{d4e}\u{308}\u{20}", &["\u{d4e}\u{308}", "\u{20}"]), - ("\u{d4e}\u{d}", &["\u{d4e}", "\u{d}"]), - ("\u{d4e}\u{308}\u{d}", &["\u{d4e}\u{308}", "\u{d}"]), - ("\u{d4e}\u{a}", &["\u{d4e}", "\u{a}"]), - ("\u{d4e}\u{308}\u{a}", &["\u{d4e}\u{308}", "\u{a}"]), - ("\u{d4e}\u{1}", &["\u{d4e}", "\u{1}"]), - ("\u{d4e}\u{308}\u{1}", &["\u{d4e}\u{308}", "\u{1}"]), - ("\u{d4e}\u{34f}", &["\u{d4e}\u{34f}"]), - ("\u{d4e}\u{308}\u{34f}", &["\u{d4e}\u{308}\u{34f}"]), - ("\u{d4e}\u{308}\u{1f1e6}", &["\u{d4e}\u{308}", "\u{1f1e6}"]), - ("\u{d4e}\u{308}\u{600}", &["\u{d4e}\u{308}", "\u{600}"]), - ("\u{d4e}\u{308}\u{1100}", &["\u{d4e}\u{308}", "\u{1100}"]), - ("\u{d4e}\u{308}\u{1160}", &["\u{d4e}\u{308}", "\u{1160}"]), - ("\u{d4e}\u{308}\u{11a8}", &["\u{d4e}\u{308}", "\u{11a8}"]), - ("\u{d4e}\u{308}\u{ac00}", &["\u{d4e}\u{308}", "\u{ac00}"]), - ("\u{d4e}\u{308}\u{ac01}", &["\u{d4e}\u{308}", "\u{ac01}"]), - ("\u{d4e}\u{900}", &["\u{d4e}\u{900}"]), - ("\u{d4e}\u{308}\u{900}", &["\u{d4e}\u{308}\u{900}"]), - ("\u{d4e}\u{308}\u{904}", &["\u{d4e}\u{308}", "\u{904}"]), - ("\u{d4e}\u{308}\u{d4e}", &["\u{d4e}\u{308}", "\u{d4e}"]), - ("\u{d4e}\u{308}\u{915}", &["\u{d4e}\u{308}", "\u{915}"]), - ("\u{d4e}\u{308}\u{231a}", &["\u{d4e}\u{308}", "\u{231a}"]), - ("\u{d4e}\u{300}", &["\u{d4e}\u{300}"]), - ("\u{d4e}\u{308}\u{300}", &["\u{d4e}\u{308}\u{300}"]), - ("\u{d4e}\u{93c}", &["\u{d4e}\u{93c}"]), - ("\u{d4e}\u{308}\u{93c}", &["\u{d4e}\u{308}\u{93c}"]), - ("\u{d4e}\u{94d}", &["\u{d4e}\u{94d}"]), - ("\u{d4e}\u{308}\u{94d}", &["\u{d4e}\u{308}\u{94d}"]), - ("\u{d4e}\u{200d}", &["\u{d4e}\u{200d}"]), - ("\u{d4e}\u{308}\u{200d}", &["\u{d4e}\u{308}\u{200d}"]), - ("\u{d4e}\u{308}\u{378}", &["\u{d4e}\u{308}", "\u{378}"]), - ("\u{915}\u{20}", &["\u{915}", "\u{20}"]), - ("\u{915}\u{308}\u{20}", &["\u{915}\u{308}", "\u{20}"]), - ("\u{915}\u{d}", &["\u{915}", "\u{d}"]), - ("\u{915}\u{308}\u{d}", &["\u{915}\u{308}", "\u{d}"]), - ("\u{915}\u{a}", &["\u{915}", "\u{a}"]), - ("\u{915}\u{308}\u{a}", &["\u{915}\u{308}", "\u{a}"]), - ("\u{915}\u{1}", &["\u{915}", "\u{1}"]), - ("\u{915}\u{308}\u{1}", &["\u{915}\u{308}", "\u{1}"]), - ("\u{915}\u{34f}", &["\u{915}\u{34f}"]), - ("\u{915}\u{308}\u{34f}", &["\u{915}\u{308}\u{34f}"]), - ("\u{915}\u{1f1e6}", &["\u{915}", "\u{1f1e6}"]), - ("\u{915}\u{308}\u{1f1e6}", &["\u{915}\u{308}", "\u{1f1e6}"]), - ("\u{915}\u{600}", &["\u{915}", "\u{600}"]), - ("\u{915}\u{308}\u{600}", &["\u{915}\u{308}", "\u{600}"]), - ("\u{915}\u{1100}", &["\u{915}", "\u{1100}"]), - ("\u{915}\u{308}\u{1100}", &["\u{915}\u{308}", "\u{1100}"]), - ("\u{915}\u{1160}", &["\u{915}", "\u{1160}"]), - ("\u{915}\u{308}\u{1160}", &["\u{915}\u{308}", "\u{1160}"]), - ("\u{915}\u{11a8}", &["\u{915}", "\u{11a8}"]), - ("\u{915}\u{308}\u{11a8}", &["\u{915}\u{308}", "\u{11a8}"]), - ("\u{915}\u{ac00}", &["\u{915}", "\u{ac00}"]), - ("\u{915}\u{308}\u{ac00}", &["\u{915}\u{308}", "\u{ac00}"]), - ("\u{915}\u{ac01}", &["\u{915}", "\u{ac01}"]), - ("\u{915}\u{308}\u{ac01}", &["\u{915}\u{308}", "\u{ac01}"]), - ("\u{915}\u{900}", &["\u{915}\u{900}"]), - ("\u{915}\u{308}\u{900}", &["\u{915}\u{308}\u{900}"]), - ("\u{915}\u{904}", &["\u{915}", "\u{904}"]), - ("\u{915}\u{308}\u{904}", &["\u{915}\u{308}", "\u{904}"]), - ("\u{915}\u{d4e}", &["\u{915}", "\u{d4e}"]), - ("\u{915}\u{308}\u{d4e}", &["\u{915}\u{308}", "\u{d4e}"]), - ("\u{915}\u{915}", &["\u{915}", "\u{915}"]), - ("\u{915}\u{308}\u{915}", &["\u{915}\u{308}", "\u{915}"]), - ("\u{915}\u{231a}", &["\u{915}", "\u{231a}"]), - ("\u{915}\u{308}\u{231a}", &["\u{915}\u{308}", "\u{231a}"]), - ("\u{915}\u{300}", &["\u{915}\u{300}"]), - ("\u{915}\u{308}\u{300}", &["\u{915}\u{308}\u{300}"]), - ("\u{915}\u{93c}", &["\u{915}\u{93c}"]), - ("\u{915}\u{308}\u{93c}", &["\u{915}\u{308}\u{93c}"]), - ("\u{915}\u{94d}", &["\u{915}\u{94d}"]), - ("\u{915}\u{308}\u{94d}", &["\u{915}\u{308}\u{94d}"]), - ("\u{915}\u{200d}", &["\u{915}\u{200d}"]), - ("\u{915}\u{308}\u{200d}", &["\u{915}\u{308}\u{200d}"]), - ("\u{915}\u{378}", &["\u{915}", "\u{378}"]), - ("\u{915}\u{308}\u{378}", &["\u{915}\u{308}", "\u{378}"]), - ("\u{231a}\u{20}", &["\u{231a}", "\u{20}"]), - ("\u{231a}\u{308}\u{20}", &["\u{231a}\u{308}", "\u{20}"]), - ("\u{231a}\u{d}", &["\u{231a}", "\u{d}"]), - ("\u{231a}\u{308}\u{d}", &["\u{231a}\u{308}", "\u{d}"]), - ("\u{231a}\u{a}", &["\u{231a}", "\u{a}"]), - ("\u{231a}\u{308}\u{a}", &["\u{231a}\u{308}", "\u{a}"]), - ("\u{231a}\u{1}", &["\u{231a}", "\u{1}"]), - ("\u{231a}\u{308}\u{1}", &["\u{231a}\u{308}", "\u{1}"]), - ("\u{231a}\u{34f}", &["\u{231a}\u{34f}"]), - ("\u{231a}\u{308}\u{34f}", &["\u{231a}\u{308}\u{34f}"]), - ("\u{231a}\u{1f1e6}", &["\u{231a}", "\u{1f1e6}"]), - ( - "\u{231a}\u{308}\u{1f1e6}", - &["\u{231a}\u{308}", "\u{1f1e6}"], - ), - ("\u{231a}\u{600}", &["\u{231a}", "\u{600}"]), - ("\u{231a}\u{308}\u{600}", &["\u{231a}\u{308}", "\u{600}"]), - ("\u{231a}\u{1100}", &["\u{231a}", "\u{1100}"]), - ("\u{231a}\u{308}\u{1100}", &["\u{231a}\u{308}", "\u{1100}"]), - ("\u{231a}\u{1160}", &["\u{231a}", "\u{1160}"]), - ("\u{231a}\u{308}\u{1160}", &["\u{231a}\u{308}", "\u{1160}"]), - ("\u{231a}\u{11a8}", &["\u{231a}", "\u{11a8}"]), - ("\u{231a}\u{308}\u{11a8}", &["\u{231a}\u{308}", "\u{11a8}"]), - ("\u{231a}\u{ac00}", &["\u{231a}", "\u{ac00}"]), - ("\u{231a}\u{308}\u{ac00}", &["\u{231a}\u{308}", "\u{ac00}"]), - ("\u{231a}\u{ac01}", &["\u{231a}", "\u{ac01}"]), - ("\u{231a}\u{308}\u{ac01}", &["\u{231a}\u{308}", "\u{ac01}"]), - ("\u{231a}\u{900}", &["\u{231a}\u{900}"]), - ("\u{231a}\u{308}\u{900}", &["\u{231a}\u{308}\u{900}"]), - ("\u{231a}\u{904}", &["\u{231a}", "\u{904}"]), - ("\u{231a}\u{308}\u{904}", &["\u{231a}\u{308}", "\u{904}"]), - ("\u{231a}\u{d4e}", &["\u{231a}", "\u{d4e}"]), - ("\u{231a}\u{308}\u{d4e}", &["\u{231a}\u{308}", "\u{d4e}"]), - ("\u{231a}\u{915}", &["\u{231a}", "\u{915}"]), - ("\u{231a}\u{308}\u{915}", &["\u{231a}\u{308}", "\u{915}"]), - ("\u{231a}\u{231a}", &["\u{231a}", "\u{231a}"]), - ("\u{231a}\u{308}\u{231a}", &["\u{231a}\u{308}", "\u{231a}"]), - ("\u{231a}\u{300}", &["\u{231a}\u{300}"]), - ("\u{231a}\u{308}\u{300}", &["\u{231a}\u{308}\u{300}"]), - ("\u{231a}\u{93c}", &["\u{231a}\u{93c}"]), - ("\u{231a}\u{308}\u{93c}", &["\u{231a}\u{308}\u{93c}"]), - ("\u{231a}\u{94d}", &["\u{231a}\u{94d}"]), - ("\u{231a}\u{308}\u{94d}", &["\u{231a}\u{308}\u{94d}"]), - ("\u{231a}\u{200d}", &["\u{231a}\u{200d}"]), - ("\u{231a}\u{308}\u{200d}", &["\u{231a}\u{308}\u{200d}"]), - ("\u{231a}\u{378}", &["\u{231a}", "\u{378}"]), - ("\u{231a}\u{308}\u{378}", &["\u{231a}\u{308}", "\u{378}"]), - ("\u{300}\u{20}", &["\u{300}", "\u{20}"]), - ("\u{300}\u{308}\u{20}", &["\u{300}\u{308}", "\u{20}"]), - ("\u{300}\u{d}", &["\u{300}", "\u{d}"]), - ("\u{300}\u{308}\u{d}", &["\u{300}\u{308}", "\u{d}"]), - ("\u{300}\u{a}", &["\u{300}", "\u{a}"]), - ("\u{300}\u{308}\u{a}", &["\u{300}\u{308}", "\u{a}"]), - ("\u{300}\u{1}", &["\u{300}", "\u{1}"]), - ("\u{300}\u{308}\u{1}", &["\u{300}\u{308}", "\u{1}"]), - ("\u{300}\u{34f}", &["\u{300}\u{34f}"]), - ("\u{300}\u{308}\u{34f}", &["\u{300}\u{308}\u{34f}"]), - ("\u{300}\u{1f1e6}", &["\u{300}", "\u{1f1e6}"]), - ("\u{300}\u{308}\u{1f1e6}", &["\u{300}\u{308}", "\u{1f1e6}"]), - ("\u{300}\u{600}", &["\u{300}", "\u{600}"]), - ("\u{300}\u{308}\u{600}", &["\u{300}\u{308}", "\u{600}"]), - ("\u{300}\u{1100}", &["\u{300}", "\u{1100}"]), - ("\u{300}\u{308}\u{1100}", &["\u{300}\u{308}", "\u{1100}"]), - ("\u{300}\u{1160}", &["\u{300}", "\u{1160}"]), - ("\u{300}\u{308}\u{1160}", &["\u{300}\u{308}", "\u{1160}"]), - ("\u{300}\u{11a8}", &["\u{300}", "\u{11a8}"]), - ("\u{300}\u{308}\u{11a8}", &["\u{300}\u{308}", "\u{11a8}"]), - ("\u{300}\u{ac00}", &["\u{300}", "\u{ac00}"]), - ("\u{300}\u{308}\u{ac00}", &["\u{300}\u{308}", "\u{ac00}"]), - ("\u{300}\u{ac01}", &["\u{300}", "\u{ac01}"]), - ("\u{300}\u{308}\u{ac01}", &["\u{300}\u{308}", "\u{ac01}"]), - ("\u{300}\u{900}", &["\u{300}\u{900}"]), - ("\u{300}\u{308}\u{900}", &["\u{300}\u{308}\u{900}"]), - ("\u{300}\u{904}", &["\u{300}", "\u{904}"]), - ("\u{300}\u{308}\u{904}", &["\u{300}\u{308}", "\u{904}"]), - ("\u{300}\u{d4e}", &["\u{300}", "\u{d4e}"]), - ("\u{300}\u{308}\u{d4e}", &["\u{300}\u{308}", "\u{d4e}"]), - ("\u{300}\u{915}", &["\u{300}", "\u{915}"]), - ("\u{300}\u{308}\u{915}", &["\u{300}\u{308}", "\u{915}"]), - ("\u{300}\u{231a}", &["\u{300}", "\u{231a}"]), - ("\u{300}\u{308}\u{231a}", &["\u{300}\u{308}", "\u{231a}"]), - ("\u{300}\u{300}", &["\u{300}\u{300}"]), - ("\u{300}\u{308}\u{300}", &["\u{300}\u{308}\u{300}"]), - ("\u{300}\u{93c}", &["\u{300}\u{93c}"]), - ("\u{300}\u{308}\u{93c}", &["\u{300}\u{308}\u{93c}"]), - ("\u{300}\u{94d}", &["\u{300}\u{94d}"]), - ("\u{300}\u{308}\u{94d}", &["\u{300}\u{308}\u{94d}"]), - ("\u{300}\u{200d}", &["\u{300}\u{200d}"]), - ("\u{300}\u{308}\u{200d}", &["\u{300}\u{308}\u{200d}"]), - ("\u{300}\u{378}", &["\u{300}", "\u{378}"]), - ("\u{300}\u{308}\u{378}", &["\u{300}\u{308}", "\u{378}"]), - ("\u{93c}\u{20}", &["\u{93c}", "\u{20}"]), - ("\u{93c}\u{308}\u{20}", &["\u{93c}\u{308}", "\u{20}"]), - ("\u{93c}\u{d}", &["\u{93c}", "\u{d}"]), - ("\u{93c}\u{308}\u{d}", &["\u{93c}\u{308}", "\u{d}"]), - ("\u{93c}\u{a}", &["\u{93c}", "\u{a}"]), - ("\u{93c}\u{308}\u{a}", &["\u{93c}\u{308}", "\u{a}"]), - ("\u{93c}\u{1}", &["\u{93c}", "\u{1}"]), - ("\u{93c}\u{308}\u{1}", &["\u{93c}\u{308}", "\u{1}"]), - ("\u{93c}\u{34f}", &["\u{93c}\u{34f}"]), - ("\u{93c}\u{308}\u{34f}", &["\u{93c}\u{308}\u{34f}"]), - ("\u{93c}\u{1f1e6}", &["\u{93c}", "\u{1f1e6}"]), - ("\u{93c}\u{308}\u{1f1e6}", &["\u{93c}\u{308}", "\u{1f1e6}"]), - ("\u{93c}\u{600}", &["\u{93c}", "\u{600}"]), - ("\u{93c}\u{308}\u{600}", &["\u{93c}\u{308}", "\u{600}"]), - ("\u{93c}\u{1100}", &["\u{93c}", "\u{1100}"]), - ("\u{93c}\u{308}\u{1100}", &["\u{93c}\u{308}", "\u{1100}"]), - ("\u{93c}\u{1160}", &["\u{93c}", "\u{1160}"]), - ("\u{93c}\u{308}\u{1160}", &["\u{93c}\u{308}", "\u{1160}"]), - ("\u{93c}\u{11a8}", &["\u{93c}", "\u{11a8}"]), - ("\u{93c}\u{308}\u{11a8}", &["\u{93c}\u{308}", "\u{11a8}"]), - ("\u{93c}\u{ac00}", &["\u{93c}", "\u{ac00}"]), - ("\u{93c}\u{308}\u{ac00}", &["\u{93c}\u{308}", "\u{ac00}"]), - ("\u{93c}\u{ac01}", &["\u{93c}", "\u{ac01}"]), - ("\u{93c}\u{308}\u{ac01}", &["\u{93c}\u{308}", "\u{ac01}"]), - ("\u{93c}\u{900}", &["\u{93c}\u{900}"]), - ("\u{93c}\u{308}\u{900}", &["\u{93c}\u{308}\u{900}"]), - ("\u{93c}\u{904}", &["\u{93c}", "\u{904}"]), - ("\u{93c}\u{308}\u{904}", &["\u{93c}\u{308}", "\u{904}"]), - ("\u{93c}\u{d4e}", &["\u{93c}", "\u{d4e}"]), - ("\u{93c}\u{308}\u{d4e}", &["\u{93c}\u{308}", "\u{d4e}"]), - ("\u{93c}\u{915}", &["\u{93c}", "\u{915}"]), - ("\u{93c}\u{308}\u{915}", &["\u{93c}\u{308}", "\u{915}"]), - ("\u{93c}\u{231a}", &["\u{93c}", "\u{231a}"]), - ("\u{93c}\u{308}\u{231a}", &["\u{93c}\u{308}", "\u{231a}"]), - ("\u{93c}\u{300}", &["\u{93c}\u{300}"]), - ("\u{93c}\u{308}\u{300}", &["\u{93c}\u{308}\u{300}"]), - ("\u{93c}\u{93c}", &["\u{93c}\u{93c}"]), - ("\u{93c}\u{308}\u{93c}", &["\u{93c}\u{308}\u{93c}"]), - ("\u{93c}\u{94d}", &["\u{93c}\u{94d}"]), - ("\u{93c}\u{308}\u{94d}", &["\u{93c}\u{308}\u{94d}"]), - ("\u{93c}\u{200d}", &["\u{93c}\u{200d}"]), - ("\u{93c}\u{308}\u{200d}", &["\u{93c}\u{308}\u{200d}"]), - ("\u{93c}\u{378}", &["\u{93c}", "\u{378}"]), - ("\u{93c}\u{308}\u{378}", &["\u{93c}\u{308}", "\u{378}"]), - ("\u{94d}\u{20}", &["\u{94d}", "\u{20}"]), - ("\u{94d}\u{308}\u{20}", &["\u{94d}\u{308}", "\u{20}"]), - ("\u{94d}\u{d}", &["\u{94d}", "\u{d}"]), - ("\u{94d}\u{308}\u{d}", &["\u{94d}\u{308}", "\u{d}"]), - ("\u{94d}\u{a}", &["\u{94d}", "\u{a}"]), - ("\u{94d}\u{308}\u{a}", &["\u{94d}\u{308}", "\u{a}"]), - ("\u{94d}\u{1}", &["\u{94d}", "\u{1}"]), - ("\u{94d}\u{308}\u{1}", &["\u{94d}\u{308}", "\u{1}"]), - ("\u{94d}\u{34f}", &["\u{94d}\u{34f}"]), - ("\u{94d}\u{308}\u{34f}", &["\u{94d}\u{308}\u{34f}"]), - ("\u{94d}\u{1f1e6}", &["\u{94d}", "\u{1f1e6}"]), - ("\u{94d}\u{308}\u{1f1e6}", &["\u{94d}\u{308}", "\u{1f1e6}"]), - ("\u{94d}\u{600}", &["\u{94d}", "\u{600}"]), - ("\u{94d}\u{308}\u{600}", &["\u{94d}\u{308}", "\u{600}"]), - ("\u{94d}\u{1100}", &["\u{94d}", "\u{1100}"]), - ("\u{94d}\u{308}\u{1100}", &["\u{94d}\u{308}", "\u{1100}"]), - ("\u{94d}\u{1160}", &["\u{94d}", "\u{1160}"]), - ("\u{94d}\u{308}\u{1160}", &["\u{94d}\u{308}", "\u{1160}"]), - ("\u{94d}\u{11a8}", &["\u{94d}", "\u{11a8}"]), - ("\u{94d}\u{308}\u{11a8}", &["\u{94d}\u{308}", "\u{11a8}"]), - ("\u{94d}\u{ac00}", &["\u{94d}", "\u{ac00}"]), - ("\u{94d}\u{308}\u{ac00}", &["\u{94d}\u{308}", "\u{ac00}"]), - ("\u{94d}\u{ac01}", &["\u{94d}", "\u{ac01}"]), - ("\u{94d}\u{308}\u{ac01}", &["\u{94d}\u{308}", "\u{ac01}"]), - ("\u{94d}\u{900}", &["\u{94d}\u{900}"]), - ("\u{94d}\u{308}\u{900}", &["\u{94d}\u{308}\u{900}"]), - ("\u{94d}\u{904}", &["\u{94d}", "\u{904}"]), - ("\u{94d}\u{308}\u{904}", &["\u{94d}\u{308}", "\u{904}"]), - ("\u{94d}\u{d4e}", &["\u{94d}", "\u{d4e}"]), - ("\u{94d}\u{308}\u{d4e}", &["\u{94d}\u{308}", "\u{d4e}"]), - ("\u{94d}\u{915}", &["\u{94d}", "\u{915}"]), - ("\u{94d}\u{308}\u{915}", &["\u{94d}\u{308}", "\u{915}"]), - ("\u{94d}\u{231a}", &["\u{94d}", "\u{231a}"]), - ("\u{94d}\u{308}\u{231a}", &["\u{94d}\u{308}", "\u{231a}"]), - ("\u{94d}\u{300}", &["\u{94d}\u{300}"]), - ("\u{94d}\u{308}\u{300}", &["\u{94d}\u{308}\u{300}"]), - ("\u{94d}\u{93c}", &["\u{94d}\u{93c}"]), - ("\u{94d}\u{308}\u{93c}", &["\u{94d}\u{308}\u{93c}"]), - ("\u{94d}\u{94d}", &["\u{94d}\u{94d}"]), - ("\u{94d}\u{308}\u{94d}", &["\u{94d}\u{308}\u{94d}"]), - ("\u{94d}\u{200d}", &["\u{94d}\u{200d}"]), - ("\u{94d}\u{308}\u{200d}", &["\u{94d}\u{308}\u{200d}"]), - ("\u{94d}\u{378}", &["\u{94d}", "\u{378}"]), - ("\u{94d}\u{308}\u{378}", &["\u{94d}\u{308}", "\u{378}"]), - ("\u{200d}\u{20}", &["\u{200d}", "\u{20}"]), - ("\u{200d}\u{308}\u{20}", &["\u{200d}\u{308}", "\u{20}"]), - ("\u{200d}\u{d}", &["\u{200d}", "\u{d}"]), - ("\u{200d}\u{308}\u{d}", &["\u{200d}\u{308}", "\u{d}"]), - ("\u{200d}\u{a}", &["\u{200d}", "\u{a}"]), - ("\u{200d}\u{308}\u{a}", &["\u{200d}\u{308}", "\u{a}"]), - ("\u{200d}\u{1}", &["\u{200d}", "\u{1}"]), - ("\u{200d}\u{308}\u{1}", &["\u{200d}\u{308}", "\u{1}"]), - ("\u{200d}\u{34f}", &["\u{200d}\u{34f}"]), - ("\u{200d}\u{308}\u{34f}", &["\u{200d}\u{308}\u{34f}"]), - ("\u{200d}\u{1f1e6}", &["\u{200d}", "\u{1f1e6}"]), - ( - "\u{200d}\u{308}\u{1f1e6}", - &["\u{200d}\u{308}", "\u{1f1e6}"], - ), - ("\u{200d}\u{600}", &["\u{200d}", "\u{600}"]), - ("\u{200d}\u{308}\u{600}", &["\u{200d}\u{308}", "\u{600}"]), - ("\u{200d}\u{1100}", &["\u{200d}", "\u{1100}"]), - ("\u{200d}\u{308}\u{1100}", &["\u{200d}\u{308}", "\u{1100}"]), - ("\u{200d}\u{1160}", &["\u{200d}", "\u{1160}"]), - ("\u{200d}\u{308}\u{1160}", &["\u{200d}\u{308}", "\u{1160}"]), - ("\u{200d}\u{11a8}", &["\u{200d}", "\u{11a8}"]), - ("\u{200d}\u{308}\u{11a8}", &["\u{200d}\u{308}", "\u{11a8}"]), - ("\u{200d}\u{ac00}", &["\u{200d}", "\u{ac00}"]), - ("\u{200d}\u{308}\u{ac00}", &["\u{200d}\u{308}", "\u{ac00}"]), - ("\u{200d}\u{ac01}", &["\u{200d}", "\u{ac01}"]), - ("\u{200d}\u{308}\u{ac01}", &["\u{200d}\u{308}", "\u{ac01}"]), - ("\u{200d}\u{900}", &["\u{200d}\u{900}"]), - ("\u{200d}\u{308}\u{900}", &["\u{200d}\u{308}\u{900}"]), - ("\u{200d}\u{904}", &["\u{200d}", "\u{904}"]), - ("\u{200d}\u{308}\u{904}", &["\u{200d}\u{308}", "\u{904}"]), - ("\u{200d}\u{d4e}", &["\u{200d}", "\u{d4e}"]), - ("\u{200d}\u{308}\u{d4e}", &["\u{200d}\u{308}", "\u{d4e}"]), - ("\u{200d}\u{915}", &["\u{200d}", "\u{915}"]), - ("\u{200d}\u{308}\u{915}", &["\u{200d}\u{308}", "\u{915}"]), - ("\u{200d}\u{231a}", &["\u{200d}", "\u{231a}"]), - ("\u{200d}\u{308}\u{231a}", &["\u{200d}\u{308}", "\u{231a}"]), - ("\u{200d}\u{300}", &["\u{200d}\u{300}"]), - ("\u{200d}\u{308}\u{300}", &["\u{200d}\u{308}\u{300}"]), - ("\u{200d}\u{93c}", &["\u{200d}\u{93c}"]), - ("\u{200d}\u{308}\u{93c}", &["\u{200d}\u{308}\u{93c}"]), - ("\u{200d}\u{94d}", &["\u{200d}\u{94d}"]), - ("\u{200d}\u{308}\u{94d}", &["\u{200d}\u{308}\u{94d}"]), - ("\u{200d}\u{200d}", &["\u{200d}\u{200d}"]), - ("\u{200d}\u{308}\u{200d}", &["\u{200d}\u{308}\u{200d}"]), - ("\u{200d}\u{378}", &["\u{200d}", "\u{378}"]), - ("\u{200d}\u{308}\u{378}", &["\u{200d}\u{308}", "\u{378}"]), - ("\u{378}\u{20}", &["\u{378}", "\u{20}"]), - ("\u{378}\u{308}\u{20}", &["\u{378}\u{308}", "\u{20}"]), - ("\u{378}\u{d}", &["\u{378}", "\u{d}"]), - ("\u{378}\u{308}\u{d}", &["\u{378}\u{308}", "\u{d}"]), - ("\u{378}\u{a}", &["\u{378}", "\u{a}"]), - ("\u{378}\u{308}\u{a}", &["\u{378}\u{308}", "\u{a}"]), - ("\u{378}\u{1}", &["\u{378}", "\u{1}"]), - ("\u{378}\u{308}\u{1}", &["\u{378}\u{308}", "\u{1}"]), - ("\u{378}\u{34f}", &["\u{378}\u{34f}"]), - ("\u{378}\u{308}\u{34f}", &["\u{378}\u{308}\u{34f}"]), - ("\u{378}\u{1f1e6}", &["\u{378}", "\u{1f1e6}"]), - ("\u{378}\u{308}\u{1f1e6}", &["\u{378}\u{308}", "\u{1f1e6}"]), - ("\u{378}\u{600}", &["\u{378}", "\u{600}"]), - ("\u{378}\u{308}\u{600}", &["\u{378}\u{308}", "\u{600}"]), - ("\u{378}\u{1100}", &["\u{378}", "\u{1100}"]), - ("\u{378}\u{308}\u{1100}", &["\u{378}\u{308}", "\u{1100}"]), - ("\u{378}\u{1160}", &["\u{378}", "\u{1160}"]), - ("\u{378}\u{308}\u{1160}", &["\u{378}\u{308}", "\u{1160}"]), - ("\u{378}\u{11a8}", &["\u{378}", "\u{11a8}"]), - ("\u{378}\u{308}\u{11a8}", &["\u{378}\u{308}", "\u{11a8}"]), - ("\u{378}\u{ac00}", &["\u{378}", "\u{ac00}"]), - ("\u{378}\u{308}\u{ac00}", &["\u{378}\u{308}", "\u{ac00}"]), - ("\u{378}\u{ac01}", &["\u{378}", "\u{ac01}"]), - ("\u{378}\u{308}\u{ac01}", &["\u{378}\u{308}", "\u{ac01}"]), - ("\u{378}\u{900}", &["\u{378}\u{900}"]), - ("\u{378}\u{308}\u{900}", &["\u{378}\u{308}\u{900}"]), - ("\u{378}\u{904}", &["\u{378}", "\u{904}"]), - ("\u{378}\u{308}\u{904}", &["\u{378}\u{308}", "\u{904}"]), - ("\u{378}\u{d4e}", &["\u{378}", "\u{d4e}"]), - ("\u{378}\u{308}\u{d4e}", &["\u{378}\u{308}", "\u{d4e}"]), - ("\u{378}\u{915}", &["\u{378}", "\u{915}"]), - ("\u{378}\u{308}\u{915}", &["\u{378}\u{308}", "\u{915}"]), - ("\u{378}\u{231a}", &["\u{378}", "\u{231a}"]), - ("\u{378}\u{308}\u{231a}", &["\u{378}\u{308}", "\u{231a}"]), - ("\u{378}\u{300}", &["\u{378}\u{300}"]), - ("\u{378}\u{308}\u{300}", &["\u{378}\u{308}\u{300}"]), - ("\u{378}\u{93c}", &["\u{378}\u{93c}"]), - ("\u{378}\u{308}\u{93c}", &["\u{378}\u{308}\u{93c}"]), - ("\u{378}\u{94d}", &["\u{378}\u{94d}"]), - ("\u{378}\u{308}\u{94d}", &["\u{378}\u{308}\u{94d}"]), - ("\u{378}\u{200d}", &["\u{378}\u{200d}"]), - ("\u{378}\u{308}\u{200d}", &["\u{378}\u{308}\u{200d}"]), - ("\u{378}\u{378}", &["\u{378}", "\u{378}"]), - ("\u{378}\u{308}\u{378}", &["\u{378}\u{308}", "\u{378}"]), - ( - "\u{d}\u{a}\u{61}\u{a}\u{308}", - &["\u{d}\u{a}", "\u{61}", "\u{a}", "\u{308}"], - ), - ("\u{61}\u{308}", &["\u{61}\u{308}"]), - ("\u{20}\u{200d}\u{646}", &["\u{20}\u{200d}", "\u{646}"]), - ("\u{646}\u{200d}\u{20}", &["\u{646}\u{200d}", "\u{20}"]), - ("\u{1100}\u{1100}", &["\u{1100}\u{1100}"]), - ( - "\u{ac00}\u{11a8}\u{1100}", - &["\u{ac00}\u{11a8}", "\u{1100}"], - ), - ( - "\u{ac01}\u{11a8}\u{1100}", - &["\u{ac01}\u{11a8}", "\u{1100}"], - ), - ( - "\u{1f1e6}\u{1f1e7}\u{1f1e8}\u{62}", - &["\u{1f1e6}\u{1f1e7}", "\u{1f1e8}", "\u{62}"], - ), - ( - "\u{61}\u{1f1e6}\u{1f1e7}\u{1f1e8}\u{62}", - &["\u{61}", "\u{1f1e6}\u{1f1e7}", "\u{1f1e8}", "\u{62}"], - ), - ( - "\u{61}\u{1f1e6}\u{1f1e7}\u{200d}\u{1f1e8}\u{62}", - &[ - "\u{61}", - "\u{1f1e6}\u{1f1e7}\u{200d}", - "\u{1f1e8}", - "\u{62}", - ], - ), - ( - "\u{61}\u{1f1e6}\u{200d}\u{1f1e7}\u{1f1e8}\u{62}", - &[ - "\u{61}", - "\u{1f1e6}\u{200d}", - "\u{1f1e7}\u{1f1e8}", - "\u{62}", - ], - ), - ( - "\u{61}\u{1f1e6}\u{1f1e7}\u{1f1e8}\u{1f1e9}\u{62}", - &[ - "\u{61}", - "\u{1f1e6}\u{1f1e7}", - "\u{1f1e8}\u{1f1e9}", - "\u{62}", - ], - ), - ("\u{61}\u{200d}", &["\u{61}\u{200d}"]), - ("\u{61}\u{308}\u{62}", &["\u{61}\u{308}", "\u{62}"]), - ( - "\u{1f476}\u{1f3ff}\u{1f476}", - &["\u{1f476}\u{1f3ff}", "\u{1f476}"], - ), - ( - "\u{61}\u{1f3ff}\u{1f476}", - &["\u{61}\u{1f3ff}", "\u{1f476}"], - ), - ( - "\u{61}\u{1f3ff}\u{1f476}\u{200d}\u{1f6d1}", - &["\u{61}\u{1f3ff}", "\u{1f476}\u{200d}\u{1f6d1}"], - ), - ( - "\u{1f476}\u{1f3ff}\u{308}\u{200d}\u{1f476}\u{1f3ff}", - &["\u{1f476}\u{1f3ff}\u{308}\u{200d}\u{1f476}\u{1f3ff}"], - ), - ( - "\u{1f6d1}\u{200d}\u{1f6d1}", - &["\u{1f6d1}\u{200d}\u{1f6d1}"], - ), - ("\u{61}\u{200d}\u{1f6d1}", &["\u{61}\u{200d}", "\u{1f6d1}"]), - ("\u{2701}\u{200d}\u{2701}", &["\u{2701}\u{200d}\u{2701}"]), - ("\u{61}\u{200d}\u{2701}", &["\u{61}\u{200d}", "\u{2701}"]), - ("\u{915}\u{924}", &["\u{915}", "\u{924}"]), - ("\u{915}\u{94d}\u{924}", &["\u{915}\u{94d}\u{924}"]), - ( - "\u{915}\u{94d}\u{94d}\u{924}", - &["\u{915}\u{94d}\u{94d}\u{924}"], - ), - ( - "\u{915}\u{94d}\u{200d}\u{924}", - &["\u{915}\u{94d}\u{200d}\u{924}"], - ), - ( - "\u{915}\u{93c}\u{200d}\u{94d}\u{924}", - &["\u{915}\u{93c}\u{200d}\u{94d}\u{924}"], - ), - ( - "\u{915}\u{93c}\u{94d}\u{200d}\u{924}", - &["\u{915}\u{93c}\u{94d}\u{200d}\u{924}"], - ), - ( - "\u{915}\u{94d}\u{924}\u{94d}\u{92f}", - &["\u{915}\u{94d}\u{924}\u{94d}\u{92f}"], - ), - ("\u{915}\u{94d}\u{61}", &["\u{915}\u{94d}", "\u{61}"]), - ("\u{61}\u{94d}\u{924}", &["\u{61}\u{94d}", "\u{924}"]), - ("\u{3f}\u{94d}\u{924}", &["\u{3f}\u{94d}", "\u{924}"]), - ( - "\u{915}\u{94d}\u{94d}\u{924}", - &["\u{915}\u{94d}\u{94d}\u{924}"], - ), -]; + // official Unicode test data + // http://www.unicode.org/Public/15.1.0/ucd/auxiliary/GraphemeBreakTest.txt + pub const TEST_SAME: &[(&str, &[&str])] = &[ + ("\u{20}\u{20}", &["\u{20}", "\u{20}"]), ("\u{20}\u{308}\u{20}", &["\u{20}\u{308}", + "\u{20}"]), ("\u{20}\u{d}", &["\u{20}", "\u{d}"]), ("\u{20}\u{308}\u{d}", &["\u{20}\u{308}", + "\u{d}"]), ("\u{20}\u{a}", &["\u{20}", "\u{a}"]), ("\u{20}\u{308}\u{a}", &["\u{20}\u{308}", + "\u{a}"]), ("\u{20}\u{1}", &["\u{20}", "\u{1}"]), ("\u{20}\u{308}\u{1}", &["\u{20}\u{308}", + "\u{1}"]), ("\u{20}\u{34f}", &["\u{20}\u{34f}"]), ("\u{20}\u{308}\u{34f}", + &["\u{20}\u{308}\u{34f}"]), ("\u{20}\u{1f1e6}", &["\u{20}", "\u{1f1e6}"]), + ("\u{20}\u{308}\u{1f1e6}", &["\u{20}\u{308}", "\u{1f1e6}"]), ("\u{20}\u{600}", &["\u{20}", + "\u{600}"]), ("\u{20}\u{308}\u{600}", &["\u{20}\u{308}", "\u{600}"]), ("\u{20}\u{1100}", + &["\u{20}", "\u{1100}"]), ("\u{20}\u{308}\u{1100}", &["\u{20}\u{308}", "\u{1100}"]), + ("\u{20}\u{1160}", &["\u{20}", "\u{1160}"]), ("\u{20}\u{308}\u{1160}", &["\u{20}\u{308}", + "\u{1160}"]), ("\u{20}\u{11a8}", &["\u{20}", "\u{11a8}"]), ("\u{20}\u{308}\u{11a8}", + &["\u{20}\u{308}", "\u{11a8}"]), ("\u{20}\u{ac00}", &["\u{20}", "\u{ac00}"]), + ("\u{20}\u{308}\u{ac00}", &["\u{20}\u{308}", "\u{ac00}"]), ("\u{20}\u{ac01}", &["\u{20}", + "\u{ac01}"]), ("\u{20}\u{308}\u{ac01}", &["\u{20}\u{308}", "\u{ac01}"]), ("\u{20}\u{900}", + &["\u{20}\u{900}"]), ("\u{20}\u{308}\u{900}", &["\u{20}\u{308}\u{900}"]), ("\u{20}\u{904}", + &["\u{20}", "\u{904}"]), ("\u{20}\u{308}\u{904}", &["\u{20}\u{308}", "\u{904}"]), + ("\u{20}\u{d4e}", &["\u{20}", "\u{d4e}"]), ("\u{20}\u{308}\u{d4e}", &["\u{20}\u{308}", + "\u{d4e}"]), ("\u{20}\u{915}", &["\u{20}", "\u{915}"]), ("\u{20}\u{308}\u{915}", + &["\u{20}\u{308}", "\u{915}"]), ("\u{20}\u{231a}", &["\u{20}", "\u{231a}"]), + ("\u{20}\u{308}\u{231a}", &["\u{20}\u{308}", "\u{231a}"]), ("\u{20}\u{300}", + &["\u{20}\u{300}"]), ("\u{20}\u{308}\u{300}", &["\u{20}\u{308}\u{300}"]), ("\u{20}\u{93c}", + &["\u{20}\u{93c}"]), ("\u{20}\u{308}\u{93c}", &["\u{20}\u{308}\u{93c}"]), ("\u{20}\u{94d}", + &["\u{20}\u{94d}"]), ("\u{20}\u{308}\u{94d}", &["\u{20}\u{308}\u{94d}"]), ("\u{20}\u{200d}", + &["\u{20}\u{200d}"]), ("\u{20}\u{308}\u{200d}", &["\u{20}\u{308}\u{200d}"]), + ("\u{20}\u{378}", &["\u{20}", "\u{378}"]), ("\u{20}\u{308}\u{378}", &["\u{20}\u{308}", + "\u{378}"]), ("\u{d}\u{20}", &["\u{d}", "\u{20}"]), ("\u{d}\u{308}\u{20}", &["\u{d}", + "\u{308}", "\u{20}"]), ("\u{d}\u{d}", &["\u{d}", "\u{d}"]), ("\u{d}\u{308}\u{d}", &["\u{d}", + "\u{308}", "\u{d}"]), ("\u{d}\u{a}", &["\u{d}\u{a}"]), ("\u{d}\u{308}\u{a}", &["\u{d}", + "\u{308}", "\u{a}"]), ("\u{d}\u{1}", &["\u{d}", "\u{1}"]), ("\u{d}\u{308}\u{1}", &["\u{d}", + "\u{308}", "\u{1}"]), ("\u{d}\u{34f}", &["\u{d}", "\u{34f}"]), ("\u{d}\u{308}\u{34f}", + &["\u{d}", "\u{308}\u{34f}"]), ("\u{d}\u{1f1e6}", &["\u{d}", "\u{1f1e6}"]), + ("\u{d}\u{308}\u{1f1e6}", &["\u{d}", "\u{308}", "\u{1f1e6}"]), ("\u{d}\u{600}", &["\u{d}", + "\u{600}"]), ("\u{d}\u{308}\u{600}", &["\u{d}", "\u{308}", "\u{600}"]), ("\u{d}\u{a03}", + &["\u{d}", "\u{a03}"]), ("\u{d}\u{1100}", &["\u{d}", "\u{1100}"]), ("\u{d}\u{308}\u{1100}", + &["\u{d}", "\u{308}", "\u{1100}"]), ("\u{d}\u{1160}", &["\u{d}", "\u{1160}"]), + ("\u{d}\u{308}\u{1160}", &["\u{d}", "\u{308}", "\u{1160}"]), ("\u{d}\u{11a8}", &["\u{d}", + "\u{11a8}"]), ("\u{d}\u{308}\u{11a8}", &["\u{d}", "\u{308}", "\u{11a8}"]), ("\u{d}\u{ac00}", + &["\u{d}", "\u{ac00}"]), ("\u{d}\u{308}\u{ac00}", &["\u{d}", "\u{308}", "\u{ac00}"]), + ("\u{d}\u{ac01}", &["\u{d}", "\u{ac01}"]), ("\u{d}\u{308}\u{ac01}", &["\u{d}", "\u{308}", + "\u{ac01}"]), ("\u{d}\u{900}", &["\u{d}", "\u{900}"]), ("\u{d}\u{308}\u{900}", &["\u{d}", + "\u{308}\u{900}"]), ("\u{d}\u{903}", &["\u{d}", "\u{903}"]), ("\u{d}\u{904}", &["\u{d}", + "\u{904}"]), ("\u{d}\u{308}\u{904}", &["\u{d}", "\u{308}", "\u{904}"]), ("\u{d}\u{d4e}", + &["\u{d}", "\u{d4e}"]), ("\u{d}\u{308}\u{d4e}", &["\u{d}", "\u{308}", "\u{d4e}"]), + ("\u{d}\u{915}", &["\u{d}", "\u{915}"]), ("\u{d}\u{308}\u{915}", &["\u{d}", "\u{308}", + "\u{915}"]), ("\u{d}\u{231a}", &["\u{d}", "\u{231a}"]), ("\u{d}\u{308}\u{231a}", &["\u{d}", + "\u{308}", "\u{231a}"]), ("\u{d}\u{300}", &["\u{d}", "\u{300}"]), ("\u{d}\u{308}\u{300}", + &["\u{d}", "\u{308}\u{300}"]), ("\u{d}\u{93c}", &["\u{d}", "\u{93c}"]), + ("\u{d}\u{308}\u{93c}", &["\u{d}", "\u{308}\u{93c}"]), ("\u{d}\u{94d}", &["\u{d}", + "\u{94d}"]), ("\u{d}\u{308}\u{94d}", &["\u{d}", "\u{308}\u{94d}"]), ("\u{d}\u{200d}", + &["\u{d}", "\u{200d}"]), ("\u{d}\u{308}\u{200d}", &["\u{d}", "\u{308}\u{200d}"]), + ("\u{d}\u{378}", &["\u{d}", "\u{378}"]), ("\u{d}\u{308}\u{378}", &["\u{d}", "\u{308}", + "\u{378}"]), ("\u{a}\u{20}", &["\u{a}", "\u{20}"]), ("\u{a}\u{308}\u{20}", &["\u{a}", + "\u{308}", "\u{20}"]), ("\u{a}\u{d}", &["\u{a}", "\u{d}"]), ("\u{a}\u{308}\u{d}", &["\u{a}", + "\u{308}", "\u{d}"]), ("\u{a}\u{a}", &["\u{a}", "\u{a}"]), ("\u{a}\u{308}\u{a}", &["\u{a}", + "\u{308}", "\u{a}"]), ("\u{a}\u{1}", &["\u{a}", "\u{1}"]), ("\u{a}\u{308}\u{1}", &["\u{a}", + "\u{308}", "\u{1}"]), ("\u{a}\u{34f}", &["\u{a}", "\u{34f}"]), ("\u{a}\u{308}\u{34f}", + &["\u{a}", "\u{308}\u{34f}"]), ("\u{a}\u{1f1e6}", &["\u{a}", "\u{1f1e6}"]), + ("\u{a}\u{308}\u{1f1e6}", &["\u{a}", "\u{308}", "\u{1f1e6}"]), ("\u{a}\u{600}", &["\u{a}", + "\u{600}"]), ("\u{a}\u{308}\u{600}", &["\u{a}", "\u{308}", "\u{600}"]), ("\u{a}\u{a03}", + &["\u{a}", "\u{a03}"]), ("\u{a}\u{1100}", &["\u{a}", "\u{1100}"]), ("\u{a}\u{308}\u{1100}", + &["\u{a}", "\u{308}", "\u{1100}"]), ("\u{a}\u{1160}", &["\u{a}", "\u{1160}"]), + ("\u{a}\u{308}\u{1160}", &["\u{a}", "\u{308}", "\u{1160}"]), ("\u{a}\u{11a8}", &["\u{a}", + "\u{11a8}"]), ("\u{a}\u{308}\u{11a8}", &["\u{a}", "\u{308}", "\u{11a8}"]), ("\u{a}\u{ac00}", + &["\u{a}", "\u{ac00}"]), ("\u{a}\u{308}\u{ac00}", &["\u{a}", "\u{308}", "\u{ac00}"]), + ("\u{a}\u{ac01}", &["\u{a}", "\u{ac01}"]), ("\u{a}\u{308}\u{ac01}", &["\u{a}", "\u{308}", + "\u{ac01}"]), ("\u{a}\u{900}", &["\u{a}", "\u{900}"]), ("\u{a}\u{308}\u{900}", &["\u{a}", + "\u{308}\u{900}"]), ("\u{a}\u{903}", &["\u{a}", "\u{903}"]), ("\u{a}\u{904}", &["\u{a}", + "\u{904}"]), ("\u{a}\u{308}\u{904}", &["\u{a}", "\u{308}", "\u{904}"]), ("\u{a}\u{d4e}", + &["\u{a}", "\u{d4e}"]), ("\u{a}\u{308}\u{d4e}", &["\u{a}", "\u{308}", "\u{d4e}"]), + ("\u{a}\u{915}", &["\u{a}", "\u{915}"]), ("\u{a}\u{308}\u{915}", &["\u{a}", "\u{308}", + "\u{915}"]), ("\u{a}\u{231a}", &["\u{a}", "\u{231a}"]), ("\u{a}\u{308}\u{231a}", &["\u{a}", + "\u{308}", "\u{231a}"]), ("\u{a}\u{300}", &["\u{a}", "\u{300}"]), ("\u{a}\u{308}\u{300}", + &["\u{a}", "\u{308}\u{300}"]), ("\u{a}\u{93c}", &["\u{a}", "\u{93c}"]), + ("\u{a}\u{308}\u{93c}", &["\u{a}", "\u{308}\u{93c}"]), ("\u{a}\u{94d}", &["\u{a}", + "\u{94d}"]), ("\u{a}\u{308}\u{94d}", &["\u{a}", "\u{308}\u{94d}"]), ("\u{a}\u{200d}", + &["\u{a}", "\u{200d}"]), ("\u{a}\u{308}\u{200d}", &["\u{a}", "\u{308}\u{200d}"]), + ("\u{a}\u{378}", &["\u{a}", "\u{378}"]), ("\u{a}\u{308}\u{378}", &["\u{a}", "\u{308}", + "\u{378}"]), ("\u{1}\u{20}", &["\u{1}", "\u{20}"]), ("\u{1}\u{308}\u{20}", &["\u{1}", + "\u{308}", "\u{20}"]), ("\u{1}\u{d}", &["\u{1}", "\u{d}"]), ("\u{1}\u{308}\u{d}", &["\u{1}", + "\u{308}", "\u{d}"]), ("\u{1}\u{a}", &["\u{1}", "\u{a}"]), ("\u{1}\u{308}\u{a}", &["\u{1}", + "\u{308}", "\u{a}"]), ("\u{1}\u{1}", &["\u{1}", "\u{1}"]), ("\u{1}\u{308}\u{1}", &["\u{1}", + "\u{308}", "\u{1}"]), ("\u{1}\u{34f}", &["\u{1}", "\u{34f}"]), ("\u{1}\u{308}\u{34f}", + &["\u{1}", "\u{308}\u{34f}"]), ("\u{1}\u{1f1e6}", &["\u{1}", "\u{1f1e6}"]), + ("\u{1}\u{308}\u{1f1e6}", &["\u{1}", "\u{308}", "\u{1f1e6}"]), ("\u{1}\u{600}", &["\u{1}", + "\u{600}"]), ("\u{1}\u{308}\u{600}", &["\u{1}", "\u{308}", "\u{600}"]), ("\u{1}\u{a03}", + &["\u{1}", "\u{a03}"]), ("\u{1}\u{1100}", &["\u{1}", "\u{1100}"]), ("\u{1}\u{308}\u{1100}", + &["\u{1}", "\u{308}", "\u{1100}"]), ("\u{1}\u{1160}", &["\u{1}", "\u{1160}"]), + ("\u{1}\u{308}\u{1160}", &["\u{1}", "\u{308}", "\u{1160}"]), ("\u{1}\u{11a8}", &["\u{1}", + "\u{11a8}"]), ("\u{1}\u{308}\u{11a8}", &["\u{1}", "\u{308}", "\u{11a8}"]), ("\u{1}\u{ac00}", + &["\u{1}", "\u{ac00}"]), ("\u{1}\u{308}\u{ac00}", &["\u{1}", "\u{308}", "\u{ac00}"]), + ("\u{1}\u{ac01}", &["\u{1}", "\u{ac01}"]), ("\u{1}\u{308}\u{ac01}", &["\u{1}", "\u{308}", + "\u{ac01}"]), ("\u{1}\u{900}", &["\u{1}", "\u{900}"]), ("\u{1}\u{308}\u{900}", &["\u{1}", + "\u{308}\u{900}"]), ("\u{1}\u{903}", &["\u{1}", "\u{903}"]), ("\u{1}\u{904}", &["\u{1}", + "\u{904}"]), ("\u{1}\u{308}\u{904}", &["\u{1}", "\u{308}", "\u{904}"]), ("\u{1}\u{d4e}", + &["\u{1}", "\u{d4e}"]), ("\u{1}\u{308}\u{d4e}", &["\u{1}", "\u{308}", "\u{d4e}"]), + ("\u{1}\u{915}", &["\u{1}", "\u{915}"]), ("\u{1}\u{308}\u{915}", &["\u{1}", "\u{308}", + "\u{915}"]), ("\u{1}\u{231a}", &["\u{1}", "\u{231a}"]), ("\u{1}\u{308}\u{231a}", &["\u{1}", + "\u{308}", "\u{231a}"]), ("\u{1}\u{300}", &["\u{1}", "\u{300}"]), ("\u{1}\u{308}\u{300}", + &["\u{1}", "\u{308}\u{300}"]), ("\u{1}\u{93c}", &["\u{1}", "\u{93c}"]), + ("\u{1}\u{308}\u{93c}", &["\u{1}", "\u{308}\u{93c}"]), ("\u{1}\u{94d}", &["\u{1}", + "\u{94d}"]), ("\u{1}\u{308}\u{94d}", &["\u{1}", "\u{308}\u{94d}"]), ("\u{1}\u{200d}", + &["\u{1}", "\u{200d}"]), ("\u{1}\u{308}\u{200d}", &["\u{1}", "\u{308}\u{200d}"]), + ("\u{1}\u{378}", &["\u{1}", "\u{378}"]), ("\u{1}\u{308}\u{378}", &["\u{1}", "\u{308}", + "\u{378}"]), ("\u{34f}\u{20}", &["\u{34f}", "\u{20}"]), ("\u{34f}\u{308}\u{20}", + &["\u{34f}\u{308}", "\u{20}"]), ("\u{34f}\u{d}", &["\u{34f}", "\u{d}"]), + ("\u{34f}\u{308}\u{d}", &["\u{34f}\u{308}", "\u{d}"]), ("\u{34f}\u{a}", &["\u{34f}", + "\u{a}"]), ("\u{34f}\u{308}\u{a}", &["\u{34f}\u{308}", "\u{a}"]), ("\u{34f}\u{1}", + &["\u{34f}", "\u{1}"]), ("\u{34f}\u{308}\u{1}", &["\u{34f}\u{308}", "\u{1}"]), + ("\u{34f}\u{34f}", &["\u{34f}\u{34f}"]), ("\u{34f}\u{308}\u{34f}", + &["\u{34f}\u{308}\u{34f}"]), ("\u{34f}\u{1f1e6}", &["\u{34f}", "\u{1f1e6}"]), + ("\u{34f}\u{308}\u{1f1e6}", &["\u{34f}\u{308}", "\u{1f1e6}"]), ("\u{34f}\u{600}", + &["\u{34f}", "\u{600}"]), ("\u{34f}\u{308}\u{600}", &["\u{34f}\u{308}", "\u{600}"]), + ("\u{34f}\u{1100}", &["\u{34f}", "\u{1100}"]), ("\u{34f}\u{308}\u{1100}", + &["\u{34f}\u{308}", "\u{1100}"]), ("\u{34f}\u{1160}", &["\u{34f}", "\u{1160}"]), + ("\u{34f}\u{308}\u{1160}", &["\u{34f}\u{308}", "\u{1160}"]), ("\u{34f}\u{11a8}", + &["\u{34f}", "\u{11a8}"]), ("\u{34f}\u{308}\u{11a8}", &["\u{34f}\u{308}", "\u{11a8}"]), + ("\u{34f}\u{ac00}", &["\u{34f}", "\u{ac00}"]), ("\u{34f}\u{308}\u{ac00}", + &["\u{34f}\u{308}", "\u{ac00}"]), ("\u{34f}\u{ac01}", &["\u{34f}", "\u{ac01}"]), + ("\u{34f}\u{308}\u{ac01}", &["\u{34f}\u{308}", "\u{ac01}"]), ("\u{34f}\u{900}", + &["\u{34f}\u{900}"]), ("\u{34f}\u{308}\u{900}", &["\u{34f}\u{308}\u{900}"]), + ("\u{34f}\u{904}", &["\u{34f}", "\u{904}"]), ("\u{34f}\u{308}\u{904}", &["\u{34f}\u{308}", + "\u{904}"]), ("\u{34f}\u{d4e}", &["\u{34f}", "\u{d4e}"]), ("\u{34f}\u{308}\u{d4e}", + &["\u{34f}\u{308}", "\u{d4e}"]), ("\u{34f}\u{915}", &["\u{34f}", "\u{915}"]), + ("\u{34f}\u{308}\u{915}", &["\u{34f}\u{308}", "\u{915}"]), ("\u{34f}\u{231a}", &["\u{34f}", + "\u{231a}"]), ("\u{34f}\u{308}\u{231a}", &["\u{34f}\u{308}", "\u{231a}"]), + ("\u{34f}\u{300}", &["\u{34f}\u{300}"]), ("\u{34f}\u{308}\u{300}", + &["\u{34f}\u{308}\u{300}"]), ("\u{34f}\u{93c}", &["\u{34f}\u{93c}"]), + ("\u{34f}\u{308}\u{93c}", &["\u{34f}\u{308}\u{93c}"]), ("\u{34f}\u{94d}", + &["\u{34f}\u{94d}"]), ("\u{34f}\u{308}\u{94d}", &["\u{34f}\u{308}\u{94d}"]), + ("\u{34f}\u{200d}", &["\u{34f}\u{200d}"]), ("\u{34f}\u{308}\u{200d}", + &["\u{34f}\u{308}\u{200d}"]), ("\u{34f}\u{378}", &["\u{34f}", "\u{378}"]), + ("\u{34f}\u{308}\u{378}", &["\u{34f}\u{308}", "\u{378}"]), ("\u{1f1e6}\u{20}", + &["\u{1f1e6}", "\u{20}"]), ("\u{1f1e6}\u{308}\u{20}", &["\u{1f1e6}\u{308}", "\u{20}"]), + ("\u{1f1e6}\u{d}", &["\u{1f1e6}", "\u{d}"]), ("\u{1f1e6}\u{308}\u{d}", &["\u{1f1e6}\u{308}", + "\u{d}"]), ("\u{1f1e6}\u{a}", &["\u{1f1e6}", "\u{a}"]), ("\u{1f1e6}\u{308}\u{a}", + &["\u{1f1e6}\u{308}", "\u{a}"]), ("\u{1f1e6}\u{1}", &["\u{1f1e6}", "\u{1}"]), + ("\u{1f1e6}\u{308}\u{1}", &["\u{1f1e6}\u{308}", "\u{1}"]), ("\u{1f1e6}\u{34f}", + &["\u{1f1e6}\u{34f}"]), ("\u{1f1e6}\u{308}\u{34f}", &["\u{1f1e6}\u{308}\u{34f}"]), + ("\u{1f1e6}\u{1f1e6}", &["\u{1f1e6}\u{1f1e6}"]), ("\u{1f1e6}\u{308}\u{1f1e6}", + &["\u{1f1e6}\u{308}", "\u{1f1e6}"]), ("\u{1f1e6}\u{600}", &["\u{1f1e6}", "\u{600}"]), + ("\u{1f1e6}\u{308}\u{600}", &["\u{1f1e6}\u{308}", "\u{600}"]), ("\u{1f1e6}\u{1100}", + &["\u{1f1e6}", "\u{1100}"]), ("\u{1f1e6}\u{308}\u{1100}", &["\u{1f1e6}\u{308}", + "\u{1100}"]), ("\u{1f1e6}\u{1160}", &["\u{1f1e6}", "\u{1160}"]), + ("\u{1f1e6}\u{308}\u{1160}", &["\u{1f1e6}\u{308}", "\u{1160}"]), ("\u{1f1e6}\u{11a8}", + &["\u{1f1e6}", "\u{11a8}"]), ("\u{1f1e6}\u{308}\u{11a8}", &["\u{1f1e6}\u{308}", + "\u{11a8}"]), ("\u{1f1e6}\u{ac00}", &["\u{1f1e6}", "\u{ac00}"]), + ("\u{1f1e6}\u{308}\u{ac00}", &["\u{1f1e6}\u{308}", "\u{ac00}"]), ("\u{1f1e6}\u{ac01}", + &["\u{1f1e6}", "\u{ac01}"]), ("\u{1f1e6}\u{308}\u{ac01}", &["\u{1f1e6}\u{308}", + "\u{ac01}"]), ("\u{1f1e6}\u{900}", &["\u{1f1e6}\u{900}"]), ("\u{1f1e6}\u{308}\u{900}", + &["\u{1f1e6}\u{308}\u{900}"]), ("\u{1f1e6}\u{904}", &["\u{1f1e6}", "\u{904}"]), + ("\u{1f1e6}\u{308}\u{904}", &["\u{1f1e6}\u{308}", "\u{904}"]), ("\u{1f1e6}\u{d4e}", + &["\u{1f1e6}", "\u{d4e}"]), ("\u{1f1e6}\u{308}\u{d4e}", &["\u{1f1e6}\u{308}", "\u{d4e}"]), + ("\u{1f1e6}\u{915}", &["\u{1f1e6}", "\u{915}"]), ("\u{1f1e6}\u{308}\u{915}", + &["\u{1f1e6}\u{308}", "\u{915}"]), ("\u{1f1e6}\u{231a}", &["\u{1f1e6}", "\u{231a}"]), + ("\u{1f1e6}\u{308}\u{231a}", &["\u{1f1e6}\u{308}", "\u{231a}"]), ("\u{1f1e6}\u{300}", + &["\u{1f1e6}\u{300}"]), ("\u{1f1e6}\u{308}\u{300}", &["\u{1f1e6}\u{308}\u{300}"]), + ("\u{1f1e6}\u{93c}", &["\u{1f1e6}\u{93c}"]), ("\u{1f1e6}\u{308}\u{93c}", + &["\u{1f1e6}\u{308}\u{93c}"]), ("\u{1f1e6}\u{94d}", &["\u{1f1e6}\u{94d}"]), + ("\u{1f1e6}\u{308}\u{94d}", &["\u{1f1e6}\u{308}\u{94d}"]), ("\u{1f1e6}\u{200d}", + &["\u{1f1e6}\u{200d}"]), ("\u{1f1e6}\u{308}\u{200d}", &["\u{1f1e6}\u{308}\u{200d}"]), + ("\u{1f1e6}\u{378}", &["\u{1f1e6}", "\u{378}"]), ("\u{1f1e6}\u{308}\u{378}", + &["\u{1f1e6}\u{308}", "\u{378}"]), ("\u{600}\u{308}\u{20}", &["\u{600}\u{308}", "\u{20}"]), + ("\u{600}\u{d}", &["\u{600}", "\u{d}"]), ("\u{600}\u{308}\u{d}", &["\u{600}\u{308}", + "\u{d}"]), ("\u{600}\u{a}", &["\u{600}", "\u{a}"]), ("\u{600}\u{308}\u{a}", + &["\u{600}\u{308}", "\u{a}"]), ("\u{600}\u{1}", &["\u{600}", "\u{1}"]), + ("\u{600}\u{308}\u{1}", &["\u{600}\u{308}", "\u{1}"]), ("\u{600}\u{34f}", + &["\u{600}\u{34f}"]), ("\u{600}\u{308}\u{34f}", &["\u{600}\u{308}\u{34f}"]), + ("\u{600}\u{308}\u{1f1e6}", &["\u{600}\u{308}", "\u{1f1e6}"]), ("\u{600}\u{308}\u{600}", + &["\u{600}\u{308}", "\u{600}"]), ("\u{600}\u{308}\u{1100}", &["\u{600}\u{308}", + "\u{1100}"]), ("\u{600}\u{308}\u{1160}", &["\u{600}\u{308}", "\u{1160}"]), + ("\u{600}\u{308}\u{11a8}", &["\u{600}\u{308}", "\u{11a8}"]), ("\u{600}\u{308}\u{ac00}", + &["\u{600}\u{308}", "\u{ac00}"]), ("\u{600}\u{308}\u{ac01}", &["\u{600}\u{308}", + "\u{ac01}"]), ("\u{600}\u{900}", &["\u{600}\u{900}"]), ("\u{600}\u{308}\u{900}", + &["\u{600}\u{308}\u{900}"]), ("\u{600}\u{308}\u{904}", &["\u{600}\u{308}", "\u{904}"]), + ("\u{600}\u{308}\u{d4e}", &["\u{600}\u{308}", "\u{d4e}"]), ("\u{600}\u{308}\u{915}", + &["\u{600}\u{308}", "\u{915}"]), ("\u{600}\u{308}\u{231a}", &["\u{600}\u{308}", + "\u{231a}"]), ("\u{600}\u{300}", &["\u{600}\u{300}"]), ("\u{600}\u{308}\u{300}", + &["\u{600}\u{308}\u{300}"]), ("\u{600}\u{93c}", &["\u{600}\u{93c}"]), + ("\u{600}\u{308}\u{93c}", &["\u{600}\u{308}\u{93c}"]), ("\u{600}\u{94d}", + &["\u{600}\u{94d}"]), ("\u{600}\u{308}\u{94d}", &["\u{600}\u{308}\u{94d}"]), + ("\u{600}\u{200d}", &["\u{600}\u{200d}"]), ("\u{600}\u{308}\u{200d}", + &["\u{600}\u{308}\u{200d}"]), ("\u{600}\u{308}\u{378}", &["\u{600}\u{308}", "\u{378}"]), + ("\u{a03}\u{20}", &["\u{a03}", "\u{20}"]), ("\u{a03}\u{308}\u{20}", &["\u{a03}\u{308}", + "\u{20}"]), ("\u{a03}\u{d}", &["\u{a03}", "\u{d}"]), ("\u{a03}\u{308}\u{d}", + &["\u{a03}\u{308}", "\u{d}"]), ("\u{a03}\u{a}", &["\u{a03}", "\u{a}"]), + ("\u{a03}\u{308}\u{a}", &["\u{a03}\u{308}", "\u{a}"]), ("\u{a03}\u{1}", &["\u{a03}", + "\u{1}"]), ("\u{a03}\u{308}\u{1}", &["\u{a03}\u{308}", "\u{1}"]), ("\u{a03}\u{34f}", + &["\u{a03}\u{34f}"]), ("\u{a03}\u{308}\u{34f}", &["\u{a03}\u{308}\u{34f}"]), + ("\u{a03}\u{1f1e6}", &["\u{a03}", "\u{1f1e6}"]), ("\u{a03}\u{308}\u{1f1e6}", + &["\u{a03}\u{308}", "\u{1f1e6}"]), ("\u{a03}\u{600}", &["\u{a03}", "\u{600}"]), + ("\u{a03}\u{308}\u{600}", &["\u{a03}\u{308}", "\u{600}"]), ("\u{a03}\u{1100}", &["\u{a03}", + "\u{1100}"]), ("\u{a03}\u{308}\u{1100}", &["\u{a03}\u{308}", "\u{1100}"]), + ("\u{a03}\u{1160}", &["\u{a03}", "\u{1160}"]), ("\u{a03}\u{308}\u{1160}", + &["\u{a03}\u{308}", "\u{1160}"]), ("\u{a03}\u{11a8}", &["\u{a03}", "\u{11a8}"]), + ("\u{a03}\u{308}\u{11a8}", &["\u{a03}\u{308}", "\u{11a8}"]), ("\u{a03}\u{ac00}", + &["\u{a03}", "\u{ac00}"]), ("\u{a03}\u{308}\u{ac00}", &["\u{a03}\u{308}", "\u{ac00}"]), + ("\u{a03}\u{ac01}", &["\u{a03}", "\u{ac01}"]), ("\u{a03}\u{308}\u{ac01}", + &["\u{a03}\u{308}", "\u{ac01}"]), ("\u{a03}\u{900}", &["\u{a03}\u{900}"]), + ("\u{a03}\u{308}\u{900}", &["\u{a03}\u{308}\u{900}"]), ("\u{a03}\u{904}", &["\u{a03}", + "\u{904}"]), ("\u{a03}\u{308}\u{904}", &["\u{a03}\u{308}", "\u{904}"]), ("\u{a03}\u{d4e}", + &["\u{a03}", "\u{d4e}"]), ("\u{a03}\u{308}\u{d4e}", &["\u{a03}\u{308}", "\u{d4e}"]), + ("\u{a03}\u{915}", &["\u{a03}", "\u{915}"]), ("\u{a03}\u{308}\u{915}", &["\u{a03}\u{308}", + "\u{915}"]), ("\u{a03}\u{231a}", &["\u{a03}", "\u{231a}"]), ("\u{a03}\u{308}\u{231a}", + &["\u{a03}\u{308}", "\u{231a}"]), ("\u{a03}\u{300}", &["\u{a03}\u{300}"]), + ("\u{a03}\u{308}\u{300}", &["\u{a03}\u{308}\u{300}"]), ("\u{a03}\u{93c}", + &["\u{a03}\u{93c}"]), ("\u{a03}\u{308}\u{93c}", &["\u{a03}\u{308}\u{93c}"]), + ("\u{a03}\u{94d}", &["\u{a03}\u{94d}"]), ("\u{a03}\u{308}\u{94d}", + &["\u{a03}\u{308}\u{94d}"]), ("\u{a03}\u{200d}", &["\u{a03}\u{200d}"]), + ("\u{a03}\u{308}\u{200d}", &["\u{a03}\u{308}\u{200d}"]), ("\u{a03}\u{378}", &["\u{a03}", + "\u{378}"]), ("\u{a03}\u{308}\u{378}", &["\u{a03}\u{308}", "\u{378}"]), ("\u{1100}\u{20}", + &["\u{1100}", "\u{20}"]), ("\u{1100}\u{308}\u{20}", &["\u{1100}\u{308}", "\u{20}"]), + ("\u{1100}\u{d}", &["\u{1100}", "\u{d}"]), ("\u{1100}\u{308}\u{d}", &["\u{1100}\u{308}", + "\u{d}"]), ("\u{1100}\u{a}", &["\u{1100}", "\u{a}"]), ("\u{1100}\u{308}\u{a}", + &["\u{1100}\u{308}", "\u{a}"]), ("\u{1100}\u{1}", &["\u{1100}", "\u{1}"]), + ("\u{1100}\u{308}\u{1}", &["\u{1100}\u{308}", "\u{1}"]), ("\u{1100}\u{34f}", + &["\u{1100}\u{34f}"]), ("\u{1100}\u{308}\u{34f}", &["\u{1100}\u{308}\u{34f}"]), + ("\u{1100}\u{1f1e6}", &["\u{1100}", "\u{1f1e6}"]), ("\u{1100}\u{308}\u{1f1e6}", + &["\u{1100}\u{308}", "\u{1f1e6}"]), ("\u{1100}\u{600}", &["\u{1100}", "\u{600}"]), + ("\u{1100}\u{308}\u{600}", &["\u{1100}\u{308}", "\u{600}"]), ("\u{1100}\u{1100}", + &["\u{1100}\u{1100}"]), ("\u{1100}\u{308}\u{1100}", &["\u{1100}\u{308}", "\u{1100}"]), + ("\u{1100}\u{1160}", &["\u{1100}\u{1160}"]), ("\u{1100}\u{308}\u{1160}", + &["\u{1100}\u{308}", "\u{1160}"]), ("\u{1100}\u{11a8}", &["\u{1100}", "\u{11a8}"]), + ("\u{1100}\u{308}\u{11a8}", &["\u{1100}\u{308}", "\u{11a8}"]), ("\u{1100}\u{ac00}", + &["\u{1100}\u{ac00}"]), ("\u{1100}\u{308}\u{ac00}", &["\u{1100}\u{308}", "\u{ac00}"]), + ("\u{1100}\u{ac01}", &["\u{1100}\u{ac01}"]), ("\u{1100}\u{308}\u{ac01}", + &["\u{1100}\u{308}", "\u{ac01}"]), ("\u{1100}\u{900}", &["\u{1100}\u{900}"]), + ("\u{1100}\u{308}\u{900}", &["\u{1100}\u{308}\u{900}"]), ("\u{1100}\u{904}", &["\u{1100}", + "\u{904}"]), ("\u{1100}\u{308}\u{904}", &["\u{1100}\u{308}", "\u{904}"]), + ("\u{1100}\u{d4e}", &["\u{1100}", "\u{d4e}"]), ("\u{1100}\u{308}\u{d4e}", + &["\u{1100}\u{308}", "\u{d4e}"]), ("\u{1100}\u{915}", &["\u{1100}", "\u{915}"]), + ("\u{1100}\u{308}\u{915}", &["\u{1100}\u{308}", "\u{915}"]), ("\u{1100}\u{231a}", + &["\u{1100}", "\u{231a}"]), ("\u{1100}\u{308}\u{231a}", &["\u{1100}\u{308}", "\u{231a}"]), + ("\u{1100}\u{300}", &["\u{1100}\u{300}"]), ("\u{1100}\u{308}\u{300}", + &["\u{1100}\u{308}\u{300}"]), ("\u{1100}\u{93c}", &["\u{1100}\u{93c}"]), + ("\u{1100}\u{308}\u{93c}", &["\u{1100}\u{308}\u{93c}"]), ("\u{1100}\u{94d}", + &["\u{1100}\u{94d}"]), ("\u{1100}\u{308}\u{94d}", &["\u{1100}\u{308}\u{94d}"]), + ("\u{1100}\u{200d}", &["\u{1100}\u{200d}"]), ("\u{1100}\u{308}\u{200d}", + &["\u{1100}\u{308}\u{200d}"]), ("\u{1100}\u{378}", &["\u{1100}", "\u{378}"]), + ("\u{1100}\u{308}\u{378}", &["\u{1100}\u{308}", "\u{378}"]), ("\u{1160}\u{20}", + &["\u{1160}", "\u{20}"]), ("\u{1160}\u{308}\u{20}", &["\u{1160}\u{308}", "\u{20}"]), + ("\u{1160}\u{d}", &["\u{1160}", "\u{d}"]), ("\u{1160}\u{308}\u{d}", &["\u{1160}\u{308}", + "\u{d}"]), ("\u{1160}\u{a}", &["\u{1160}", "\u{a}"]), ("\u{1160}\u{308}\u{a}", + &["\u{1160}\u{308}", "\u{a}"]), ("\u{1160}\u{1}", &["\u{1160}", "\u{1}"]), + ("\u{1160}\u{308}\u{1}", &["\u{1160}\u{308}", "\u{1}"]), ("\u{1160}\u{34f}", + &["\u{1160}\u{34f}"]), ("\u{1160}\u{308}\u{34f}", &["\u{1160}\u{308}\u{34f}"]), + ("\u{1160}\u{1f1e6}", &["\u{1160}", "\u{1f1e6}"]), ("\u{1160}\u{308}\u{1f1e6}", + &["\u{1160}\u{308}", "\u{1f1e6}"]), ("\u{1160}\u{600}", &["\u{1160}", "\u{600}"]), + ("\u{1160}\u{308}\u{600}", &["\u{1160}\u{308}", "\u{600}"]), ("\u{1160}\u{1100}", + &["\u{1160}", "\u{1100}"]), ("\u{1160}\u{308}\u{1100}", &["\u{1160}\u{308}", "\u{1100}"]), + ("\u{1160}\u{1160}", &["\u{1160}\u{1160}"]), ("\u{1160}\u{308}\u{1160}", + &["\u{1160}\u{308}", "\u{1160}"]), ("\u{1160}\u{11a8}", &["\u{1160}\u{11a8}"]), + ("\u{1160}\u{308}\u{11a8}", &["\u{1160}\u{308}", "\u{11a8}"]), ("\u{1160}\u{ac00}", + &["\u{1160}", "\u{ac00}"]), ("\u{1160}\u{308}\u{ac00}", &["\u{1160}\u{308}", "\u{ac00}"]), + ("\u{1160}\u{ac01}", &["\u{1160}", "\u{ac01}"]), ("\u{1160}\u{308}\u{ac01}", + &["\u{1160}\u{308}", "\u{ac01}"]), ("\u{1160}\u{900}", &["\u{1160}\u{900}"]), + ("\u{1160}\u{308}\u{900}", &["\u{1160}\u{308}\u{900}"]), ("\u{1160}\u{904}", &["\u{1160}", + "\u{904}"]), ("\u{1160}\u{308}\u{904}", &["\u{1160}\u{308}", "\u{904}"]), + ("\u{1160}\u{d4e}", &["\u{1160}", "\u{d4e}"]), ("\u{1160}\u{308}\u{d4e}", + &["\u{1160}\u{308}", "\u{d4e}"]), ("\u{1160}\u{915}", &["\u{1160}", "\u{915}"]), + ("\u{1160}\u{308}\u{915}", &["\u{1160}\u{308}", "\u{915}"]), ("\u{1160}\u{231a}", + &["\u{1160}", "\u{231a}"]), ("\u{1160}\u{308}\u{231a}", &["\u{1160}\u{308}", "\u{231a}"]), + ("\u{1160}\u{300}", &["\u{1160}\u{300}"]), ("\u{1160}\u{308}\u{300}", + &["\u{1160}\u{308}\u{300}"]), ("\u{1160}\u{93c}", &["\u{1160}\u{93c}"]), + ("\u{1160}\u{308}\u{93c}", &["\u{1160}\u{308}\u{93c}"]), ("\u{1160}\u{94d}", + &["\u{1160}\u{94d}"]), ("\u{1160}\u{308}\u{94d}", &["\u{1160}\u{308}\u{94d}"]), + ("\u{1160}\u{200d}", &["\u{1160}\u{200d}"]), ("\u{1160}\u{308}\u{200d}", + &["\u{1160}\u{308}\u{200d}"]), ("\u{1160}\u{378}", &["\u{1160}", "\u{378}"]), + ("\u{1160}\u{308}\u{378}", &["\u{1160}\u{308}", "\u{378}"]), ("\u{11a8}\u{20}", + &["\u{11a8}", "\u{20}"]), ("\u{11a8}\u{308}\u{20}", &["\u{11a8}\u{308}", "\u{20}"]), + ("\u{11a8}\u{d}", &["\u{11a8}", "\u{d}"]), ("\u{11a8}\u{308}\u{d}", &["\u{11a8}\u{308}", + "\u{d}"]), ("\u{11a8}\u{a}", &["\u{11a8}", "\u{a}"]), ("\u{11a8}\u{308}\u{a}", + &["\u{11a8}\u{308}", "\u{a}"]), ("\u{11a8}\u{1}", &["\u{11a8}", "\u{1}"]), + ("\u{11a8}\u{308}\u{1}", &["\u{11a8}\u{308}", "\u{1}"]), ("\u{11a8}\u{34f}", + &["\u{11a8}\u{34f}"]), ("\u{11a8}\u{308}\u{34f}", &["\u{11a8}\u{308}\u{34f}"]), + ("\u{11a8}\u{1f1e6}", &["\u{11a8}", "\u{1f1e6}"]), ("\u{11a8}\u{308}\u{1f1e6}", + &["\u{11a8}\u{308}", "\u{1f1e6}"]), ("\u{11a8}\u{600}", &["\u{11a8}", "\u{600}"]), + ("\u{11a8}\u{308}\u{600}", &["\u{11a8}\u{308}", "\u{600}"]), ("\u{11a8}\u{1100}", + &["\u{11a8}", "\u{1100}"]), ("\u{11a8}\u{308}\u{1100}", &["\u{11a8}\u{308}", "\u{1100}"]), + ("\u{11a8}\u{1160}", &["\u{11a8}", "\u{1160}"]), ("\u{11a8}\u{308}\u{1160}", + &["\u{11a8}\u{308}", "\u{1160}"]), ("\u{11a8}\u{11a8}", &["\u{11a8}\u{11a8}"]), + ("\u{11a8}\u{308}\u{11a8}", &["\u{11a8}\u{308}", "\u{11a8}"]), ("\u{11a8}\u{ac00}", + &["\u{11a8}", "\u{ac00}"]), ("\u{11a8}\u{308}\u{ac00}", &["\u{11a8}\u{308}", "\u{ac00}"]), + ("\u{11a8}\u{ac01}", &["\u{11a8}", "\u{ac01}"]), ("\u{11a8}\u{308}\u{ac01}", + &["\u{11a8}\u{308}", "\u{ac01}"]), ("\u{11a8}\u{900}", &["\u{11a8}\u{900}"]), + ("\u{11a8}\u{308}\u{900}", &["\u{11a8}\u{308}\u{900}"]), ("\u{11a8}\u{904}", &["\u{11a8}", + "\u{904}"]), ("\u{11a8}\u{308}\u{904}", &["\u{11a8}\u{308}", "\u{904}"]), + ("\u{11a8}\u{d4e}", &["\u{11a8}", "\u{d4e}"]), ("\u{11a8}\u{308}\u{d4e}", + &["\u{11a8}\u{308}", "\u{d4e}"]), ("\u{11a8}\u{915}", &["\u{11a8}", "\u{915}"]), + ("\u{11a8}\u{308}\u{915}", &["\u{11a8}\u{308}", "\u{915}"]), ("\u{11a8}\u{231a}", + &["\u{11a8}", "\u{231a}"]), ("\u{11a8}\u{308}\u{231a}", &["\u{11a8}\u{308}", "\u{231a}"]), + ("\u{11a8}\u{300}", &["\u{11a8}\u{300}"]), ("\u{11a8}\u{308}\u{300}", + &["\u{11a8}\u{308}\u{300}"]), ("\u{11a8}\u{93c}", &["\u{11a8}\u{93c}"]), + ("\u{11a8}\u{308}\u{93c}", &["\u{11a8}\u{308}\u{93c}"]), ("\u{11a8}\u{94d}", + &["\u{11a8}\u{94d}"]), ("\u{11a8}\u{308}\u{94d}", &["\u{11a8}\u{308}\u{94d}"]), + ("\u{11a8}\u{200d}", &["\u{11a8}\u{200d}"]), ("\u{11a8}\u{308}\u{200d}", + &["\u{11a8}\u{308}\u{200d}"]), ("\u{11a8}\u{378}", &["\u{11a8}", "\u{378}"]), + ("\u{11a8}\u{308}\u{378}", &["\u{11a8}\u{308}", "\u{378}"]), ("\u{ac00}\u{20}", + &["\u{ac00}", "\u{20}"]), ("\u{ac00}\u{308}\u{20}", &["\u{ac00}\u{308}", "\u{20}"]), + ("\u{ac00}\u{d}", &["\u{ac00}", "\u{d}"]), ("\u{ac00}\u{308}\u{d}", &["\u{ac00}\u{308}", + "\u{d}"]), ("\u{ac00}\u{a}", &["\u{ac00}", "\u{a}"]), ("\u{ac00}\u{308}\u{a}", + &["\u{ac00}\u{308}", "\u{a}"]), ("\u{ac00}\u{1}", &["\u{ac00}", "\u{1}"]), + ("\u{ac00}\u{308}\u{1}", &["\u{ac00}\u{308}", "\u{1}"]), ("\u{ac00}\u{34f}", + &["\u{ac00}\u{34f}"]), ("\u{ac00}\u{308}\u{34f}", &["\u{ac00}\u{308}\u{34f}"]), + ("\u{ac00}\u{1f1e6}", &["\u{ac00}", "\u{1f1e6}"]), ("\u{ac00}\u{308}\u{1f1e6}", + &["\u{ac00}\u{308}", "\u{1f1e6}"]), ("\u{ac00}\u{600}", &["\u{ac00}", "\u{600}"]), + ("\u{ac00}\u{308}\u{600}", &["\u{ac00}\u{308}", "\u{600}"]), ("\u{ac00}\u{1100}", + &["\u{ac00}", "\u{1100}"]), ("\u{ac00}\u{308}\u{1100}", &["\u{ac00}\u{308}", "\u{1100}"]), + ("\u{ac00}\u{1160}", &["\u{ac00}\u{1160}"]), ("\u{ac00}\u{308}\u{1160}", + &["\u{ac00}\u{308}", "\u{1160}"]), ("\u{ac00}\u{11a8}", &["\u{ac00}\u{11a8}"]), + ("\u{ac00}\u{308}\u{11a8}", &["\u{ac00}\u{308}", "\u{11a8}"]), ("\u{ac00}\u{ac00}", + &["\u{ac00}", "\u{ac00}"]), ("\u{ac00}\u{308}\u{ac00}", &["\u{ac00}\u{308}", "\u{ac00}"]), + ("\u{ac00}\u{ac01}", &["\u{ac00}", "\u{ac01}"]), ("\u{ac00}\u{308}\u{ac01}", + &["\u{ac00}\u{308}", "\u{ac01}"]), ("\u{ac00}\u{900}", &["\u{ac00}\u{900}"]), + ("\u{ac00}\u{308}\u{900}", &["\u{ac00}\u{308}\u{900}"]), ("\u{ac00}\u{904}", &["\u{ac00}", + "\u{904}"]), ("\u{ac00}\u{308}\u{904}", &["\u{ac00}\u{308}", "\u{904}"]), + ("\u{ac00}\u{d4e}", &["\u{ac00}", "\u{d4e}"]), ("\u{ac00}\u{308}\u{d4e}", + &["\u{ac00}\u{308}", "\u{d4e}"]), ("\u{ac00}\u{915}", &["\u{ac00}", "\u{915}"]), + ("\u{ac00}\u{308}\u{915}", &["\u{ac00}\u{308}", "\u{915}"]), ("\u{ac00}\u{231a}", + &["\u{ac00}", "\u{231a}"]), ("\u{ac00}\u{308}\u{231a}", &["\u{ac00}\u{308}", "\u{231a}"]), + ("\u{ac00}\u{300}", &["\u{ac00}\u{300}"]), ("\u{ac00}\u{308}\u{300}", + &["\u{ac00}\u{308}\u{300}"]), ("\u{ac00}\u{93c}", &["\u{ac00}\u{93c}"]), + ("\u{ac00}\u{308}\u{93c}", &["\u{ac00}\u{308}\u{93c}"]), ("\u{ac00}\u{94d}", + &["\u{ac00}\u{94d}"]), ("\u{ac00}\u{308}\u{94d}", &["\u{ac00}\u{308}\u{94d}"]), + ("\u{ac00}\u{200d}", &["\u{ac00}\u{200d}"]), ("\u{ac00}\u{308}\u{200d}", + &["\u{ac00}\u{308}\u{200d}"]), ("\u{ac00}\u{378}", &["\u{ac00}", "\u{378}"]), + ("\u{ac00}\u{308}\u{378}", &["\u{ac00}\u{308}", "\u{378}"]), ("\u{ac01}\u{20}", + &["\u{ac01}", "\u{20}"]), ("\u{ac01}\u{308}\u{20}", &["\u{ac01}\u{308}", "\u{20}"]), + ("\u{ac01}\u{d}", &["\u{ac01}", "\u{d}"]), ("\u{ac01}\u{308}\u{d}", &["\u{ac01}\u{308}", + "\u{d}"]), ("\u{ac01}\u{a}", &["\u{ac01}", "\u{a}"]), ("\u{ac01}\u{308}\u{a}", + &["\u{ac01}\u{308}", "\u{a}"]), ("\u{ac01}\u{1}", &["\u{ac01}", "\u{1}"]), + ("\u{ac01}\u{308}\u{1}", &["\u{ac01}\u{308}", "\u{1}"]), ("\u{ac01}\u{34f}", + &["\u{ac01}\u{34f}"]), ("\u{ac01}\u{308}\u{34f}", &["\u{ac01}\u{308}\u{34f}"]), + ("\u{ac01}\u{1f1e6}", &["\u{ac01}", "\u{1f1e6}"]), ("\u{ac01}\u{308}\u{1f1e6}", + &["\u{ac01}\u{308}", "\u{1f1e6}"]), ("\u{ac01}\u{600}", &["\u{ac01}", "\u{600}"]), + ("\u{ac01}\u{308}\u{600}", &["\u{ac01}\u{308}", "\u{600}"]), ("\u{ac01}\u{1100}", + &["\u{ac01}", "\u{1100}"]), ("\u{ac01}\u{308}\u{1100}", &["\u{ac01}\u{308}", "\u{1100}"]), + ("\u{ac01}\u{1160}", &["\u{ac01}", "\u{1160}"]), ("\u{ac01}\u{308}\u{1160}", + &["\u{ac01}\u{308}", "\u{1160}"]), ("\u{ac01}\u{11a8}", &["\u{ac01}\u{11a8}"]), + ("\u{ac01}\u{308}\u{11a8}", &["\u{ac01}\u{308}", "\u{11a8}"]), ("\u{ac01}\u{ac00}", + &["\u{ac01}", "\u{ac00}"]), ("\u{ac01}\u{308}\u{ac00}", &["\u{ac01}\u{308}", "\u{ac00}"]), + ("\u{ac01}\u{ac01}", &["\u{ac01}", "\u{ac01}"]), ("\u{ac01}\u{308}\u{ac01}", + &["\u{ac01}\u{308}", "\u{ac01}"]), ("\u{ac01}\u{900}", &["\u{ac01}\u{900}"]), + ("\u{ac01}\u{308}\u{900}", &["\u{ac01}\u{308}\u{900}"]), ("\u{ac01}\u{904}", &["\u{ac01}", + "\u{904}"]), ("\u{ac01}\u{308}\u{904}", &["\u{ac01}\u{308}", "\u{904}"]), + ("\u{ac01}\u{d4e}", &["\u{ac01}", "\u{d4e}"]), ("\u{ac01}\u{308}\u{d4e}", + &["\u{ac01}\u{308}", "\u{d4e}"]), ("\u{ac01}\u{915}", &["\u{ac01}", "\u{915}"]), + ("\u{ac01}\u{308}\u{915}", &["\u{ac01}\u{308}", "\u{915}"]), ("\u{ac01}\u{231a}", + &["\u{ac01}", "\u{231a}"]), ("\u{ac01}\u{308}\u{231a}", &["\u{ac01}\u{308}", "\u{231a}"]), + ("\u{ac01}\u{300}", &["\u{ac01}\u{300}"]), ("\u{ac01}\u{308}\u{300}", + &["\u{ac01}\u{308}\u{300}"]), ("\u{ac01}\u{93c}", &["\u{ac01}\u{93c}"]), + ("\u{ac01}\u{308}\u{93c}", &["\u{ac01}\u{308}\u{93c}"]), ("\u{ac01}\u{94d}", + &["\u{ac01}\u{94d}"]), ("\u{ac01}\u{308}\u{94d}", &["\u{ac01}\u{308}\u{94d}"]), + ("\u{ac01}\u{200d}", &["\u{ac01}\u{200d}"]), ("\u{ac01}\u{308}\u{200d}", + &["\u{ac01}\u{308}\u{200d}"]), ("\u{ac01}\u{378}", &["\u{ac01}", "\u{378}"]), + ("\u{ac01}\u{308}\u{378}", &["\u{ac01}\u{308}", "\u{378}"]), ("\u{900}\u{20}", &["\u{900}", + "\u{20}"]), ("\u{900}\u{308}\u{20}", &["\u{900}\u{308}", "\u{20}"]), ("\u{900}\u{d}", + &["\u{900}", "\u{d}"]), ("\u{900}\u{308}\u{d}", &["\u{900}\u{308}", "\u{d}"]), + ("\u{900}\u{a}", &["\u{900}", "\u{a}"]), ("\u{900}\u{308}\u{a}", &["\u{900}\u{308}", + "\u{a}"]), ("\u{900}\u{1}", &["\u{900}", "\u{1}"]), ("\u{900}\u{308}\u{1}", + &["\u{900}\u{308}", "\u{1}"]), ("\u{900}\u{34f}", &["\u{900}\u{34f}"]), + ("\u{900}\u{308}\u{34f}", &["\u{900}\u{308}\u{34f}"]), ("\u{900}\u{1f1e6}", &["\u{900}", + "\u{1f1e6}"]), ("\u{900}\u{308}\u{1f1e6}", &["\u{900}\u{308}", "\u{1f1e6}"]), + ("\u{900}\u{600}", &["\u{900}", "\u{600}"]), ("\u{900}\u{308}\u{600}", &["\u{900}\u{308}", + "\u{600}"]), ("\u{900}\u{1100}", &["\u{900}", "\u{1100}"]), ("\u{900}\u{308}\u{1100}", + &["\u{900}\u{308}", "\u{1100}"]), ("\u{900}\u{1160}", &["\u{900}", "\u{1160}"]), + ("\u{900}\u{308}\u{1160}", &["\u{900}\u{308}", "\u{1160}"]), ("\u{900}\u{11a8}", + &["\u{900}", "\u{11a8}"]), ("\u{900}\u{308}\u{11a8}", &["\u{900}\u{308}", "\u{11a8}"]), + ("\u{900}\u{ac00}", &["\u{900}", "\u{ac00}"]), ("\u{900}\u{308}\u{ac00}", + &["\u{900}\u{308}", "\u{ac00}"]), ("\u{900}\u{ac01}", &["\u{900}", "\u{ac01}"]), + ("\u{900}\u{308}\u{ac01}", &["\u{900}\u{308}", "\u{ac01}"]), ("\u{900}\u{900}", + &["\u{900}\u{900}"]), ("\u{900}\u{308}\u{900}", &["\u{900}\u{308}\u{900}"]), + ("\u{900}\u{904}", &["\u{900}", "\u{904}"]), ("\u{900}\u{308}\u{904}", &["\u{900}\u{308}", + "\u{904}"]), ("\u{900}\u{d4e}", &["\u{900}", "\u{d4e}"]), ("\u{900}\u{308}\u{d4e}", + &["\u{900}\u{308}", "\u{d4e}"]), ("\u{900}\u{915}", &["\u{900}", "\u{915}"]), + ("\u{900}\u{308}\u{915}", &["\u{900}\u{308}", "\u{915}"]), ("\u{900}\u{231a}", &["\u{900}", + "\u{231a}"]), ("\u{900}\u{308}\u{231a}", &["\u{900}\u{308}", "\u{231a}"]), + ("\u{900}\u{300}", &["\u{900}\u{300}"]), ("\u{900}\u{308}\u{300}", + &["\u{900}\u{308}\u{300}"]), ("\u{900}\u{93c}", &["\u{900}\u{93c}"]), + ("\u{900}\u{308}\u{93c}", &["\u{900}\u{308}\u{93c}"]), ("\u{900}\u{94d}", + &["\u{900}\u{94d}"]), ("\u{900}\u{308}\u{94d}", &["\u{900}\u{308}\u{94d}"]), + ("\u{900}\u{200d}", &["\u{900}\u{200d}"]), ("\u{900}\u{308}\u{200d}", + &["\u{900}\u{308}\u{200d}"]), ("\u{900}\u{378}", &["\u{900}", "\u{378}"]), + ("\u{900}\u{308}\u{378}", &["\u{900}\u{308}", "\u{378}"]), ("\u{903}\u{20}", &["\u{903}", + "\u{20}"]), ("\u{903}\u{308}\u{20}", &["\u{903}\u{308}", "\u{20}"]), ("\u{903}\u{d}", + &["\u{903}", "\u{d}"]), ("\u{903}\u{308}\u{d}", &["\u{903}\u{308}", "\u{d}"]), + ("\u{903}\u{a}", &["\u{903}", "\u{a}"]), ("\u{903}\u{308}\u{a}", &["\u{903}\u{308}", + "\u{a}"]), ("\u{903}\u{1}", &["\u{903}", "\u{1}"]), ("\u{903}\u{308}\u{1}", + &["\u{903}\u{308}", "\u{1}"]), ("\u{903}\u{34f}", &["\u{903}\u{34f}"]), + ("\u{903}\u{308}\u{34f}", &["\u{903}\u{308}\u{34f}"]), ("\u{903}\u{1f1e6}", &["\u{903}", + "\u{1f1e6}"]), ("\u{903}\u{308}\u{1f1e6}", &["\u{903}\u{308}", "\u{1f1e6}"]), + ("\u{903}\u{600}", &["\u{903}", "\u{600}"]), ("\u{903}\u{308}\u{600}", &["\u{903}\u{308}", + "\u{600}"]), ("\u{903}\u{1100}", &["\u{903}", "\u{1100}"]), ("\u{903}\u{308}\u{1100}", + &["\u{903}\u{308}", "\u{1100}"]), ("\u{903}\u{1160}", &["\u{903}", "\u{1160}"]), + ("\u{903}\u{308}\u{1160}", &["\u{903}\u{308}", "\u{1160}"]), ("\u{903}\u{11a8}", + &["\u{903}", "\u{11a8}"]), ("\u{903}\u{308}\u{11a8}", &["\u{903}\u{308}", "\u{11a8}"]), + ("\u{903}\u{ac00}", &["\u{903}", "\u{ac00}"]), ("\u{903}\u{308}\u{ac00}", + &["\u{903}\u{308}", "\u{ac00}"]), ("\u{903}\u{ac01}", &["\u{903}", "\u{ac01}"]), + ("\u{903}\u{308}\u{ac01}", &["\u{903}\u{308}", "\u{ac01}"]), ("\u{903}\u{900}", + &["\u{903}\u{900}"]), ("\u{903}\u{308}\u{900}", &["\u{903}\u{308}\u{900}"]), + ("\u{903}\u{904}", &["\u{903}", "\u{904}"]), ("\u{903}\u{308}\u{904}", &["\u{903}\u{308}", + "\u{904}"]), ("\u{903}\u{d4e}", &["\u{903}", "\u{d4e}"]), ("\u{903}\u{308}\u{d4e}", + &["\u{903}\u{308}", "\u{d4e}"]), ("\u{903}\u{915}", &["\u{903}", "\u{915}"]), + ("\u{903}\u{308}\u{915}", &["\u{903}\u{308}", "\u{915}"]), ("\u{903}\u{231a}", &["\u{903}", + "\u{231a}"]), ("\u{903}\u{308}\u{231a}", &["\u{903}\u{308}", "\u{231a}"]), + ("\u{903}\u{300}", &["\u{903}\u{300}"]), ("\u{903}\u{308}\u{300}", + &["\u{903}\u{308}\u{300}"]), ("\u{903}\u{93c}", &["\u{903}\u{93c}"]), + ("\u{903}\u{308}\u{93c}", &["\u{903}\u{308}\u{93c}"]), ("\u{903}\u{94d}", + &["\u{903}\u{94d}"]), ("\u{903}\u{308}\u{94d}", &["\u{903}\u{308}\u{94d}"]), + ("\u{903}\u{200d}", &["\u{903}\u{200d}"]), ("\u{903}\u{308}\u{200d}", + &["\u{903}\u{308}\u{200d}"]), ("\u{903}\u{378}", &["\u{903}", "\u{378}"]), + ("\u{903}\u{308}\u{378}", &["\u{903}\u{308}", "\u{378}"]), ("\u{904}\u{20}", &["\u{904}", + "\u{20}"]), ("\u{904}\u{308}\u{20}", &["\u{904}\u{308}", "\u{20}"]), ("\u{904}\u{d}", + &["\u{904}", "\u{d}"]), ("\u{904}\u{308}\u{d}", &["\u{904}\u{308}", "\u{d}"]), + ("\u{904}\u{a}", &["\u{904}", "\u{a}"]), ("\u{904}\u{308}\u{a}", &["\u{904}\u{308}", + "\u{a}"]), ("\u{904}\u{1}", &["\u{904}", "\u{1}"]), ("\u{904}\u{308}\u{1}", + &["\u{904}\u{308}", "\u{1}"]), ("\u{904}\u{34f}", &["\u{904}\u{34f}"]), + ("\u{904}\u{308}\u{34f}", &["\u{904}\u{308}\u{34f}"]), ("\u{904}\u{1f1e6}", &["\u{904}", + "\u{1f1e6}"]), ("\u{904}\u{308}\u{1f1e6}", &["\u{904}\u{308}", "\u{1f1e6}"]), + ("\u{904}\u{600}", &["\u{904}", "\u{600}"]), ("\u{904}\u{308}\u{600}", &["\u{904}\u{308}", + "\u{600}"]), ("\u{904}\u{1100}", &["\u{904}", "\u{1100}"]), ("\u{904}\u{308}\u{1100}", + &["\u{904}\u{308}", "\u{1100}"]), ("\u{904}\u{1160}", &["\u{904}", "\u{1160}"]), + ("\u{904}\u{308}\u{1160}", &["\u{904}\u{308}", "\u{1160}"]), ("\u{904}\u{11a8}", + &["\u{904}", "\u{11a8}"]), ("\u{904}\u{308}\u{11a8}", &["\u{904}\u{308}", "\u{11a8}"]), + ("\u{904}\u{ac00}", &["\u{904}", "\u{ac00}"]), ("\u{904}\u{308}\u{ac00}", + &["\u{904}\u{308}", "\u{ac00}"]), ("\u{904}\u{ac01}", &["\u{904}", "\u{ac01}"]), + ("\u{904}\u{308}\u{ac01}", &["\u{904}\u{308}", "\u{ac01}"]), ("\u{904}\u{900}", + &["\u{904}\u{900}"]), ("\u{904}\u{308}\u{900}", &["\u{904}\u{308}\u{900}"]), + ("\u{904}\u{904}", &["\u{904}", "\u{904}"]), ("\u{904}\u{308}\u{904}", &["\u{904}\u{308}", + "\u{904}"]), ("\u{904}\u{d4e}", &["\u{904}", "\u{d4e}"]), ("\u{904}\u{308}\u{d4e}", + &["\u{904}\u{308}", "\u{d4e}"]), ("\u{904}\u{915}", &["\u{904}", "\u{915}"]), + ("\u{904}\u{308}\u{915}", &["\u{904}\u{308}", "\u{915}"]), ("\u{904}\u{231a}", &["\u{904}", + "\u{231a}"]), ("\u{904}\u{308}\u{231a}", &["\u{904}\u{308}", "\u{231a}"]), + ("\u{904}\u{300}", &["\u{904}\u{300}"]), ("\u{904}\u{308}\u{300}", + &["\u{904}\u{308}\u{300}"]), ("\u{904}\u{93c}", &["\u{904}\u{93c}"]), + ("\u{904}\u{308}\u{93c}", &["\u{904}\u{308}\u{93c}"]), ("\u{904}\u{94d}", + &["\u{904}\u{94d}"]), ("\u{904}\u{308}\u{94d}", &["\u{904}\u{308}\u{94d}"]), + ("\u{904}\u{200d}", &["\u{904}\u{200d}"]), ("\u{904}\u{308}\u{200d}", + &["\u{904}\u{308}\u{200d}"]), ("\u{904}\u{378}", &["\u{904}", "\u{378}"]), + ("\u{904}\u{308}\u{378}", &["\u{904}\u{308}", "\u{378}"]), ("\u{d4e}\u{308}\u{20}", + &["\u{d4e}\u{308}", "\u{20}"]), ("\u{d4e}\u{d}", &["\u{d4e}", "\u{d}"]), + ("\u{d4e}\u{308}\u{d}", &["\u{d4e}\u{308}", "\u{d}"]), ("\u{d4e}\u{a}", &["\u{d4e}", + "\u{a}"]), ("\u{d4e}\u{308}\u{a}", &["\u{d4e}\u{308}", "\u{a}"]), ("\u{d4e}\u{1}", + &["\u{d4e}", "\u{1}"]), ("\u{d4e}\u{308}\u{1}", &["\u{d4e}\u{308}", "\u{1}"]), + ("\u{d4e}\u{34f}", &["\u{d4e}\u{34f}"]), ("\u{d4e}\u{308}\u{34f}", + &["\u{d4e}\u{308}\u{34f}"]), ("\u{d4e}\u{308}\u{1f1e6}", &["\u{d4e}\u{308}", "\u{1f1e6}"]), + ("\u{d4e}\u{308}\u{600}", &["\u{d4e}\u{308}", "\u{600}"]), ("\u{d4e}\u{308}\u{1100}", + &["\u{d4e}\u{308}", "\u{1100}"]), ("\u{d4e}\u{308}\u{1160}", &["\u{d4e}\u{308}", + "\u{1160}"]), ("\u{d4e}\u{308}\u{11a8}", &["\u{d4e}\u{308}", "\u{11a8}"]), + ("\u{d4e}\u{308}\u{ac00}", &["\u{d4e}\u{308}", "\u{ac00}"]), ("\u{d4e}\u{308}\u{ac01}", + &["\u{d4e}\u{308}", "\u{ac01}"]), ("\u{d4e}\u{900}", &["\u{d4e}\u{900}"]), + ("\u{d4e}\u{308}\u{900}", &["\u{d4e}\u{308}\u{900}"]), ("\u{d4e}\u{308}\u{904}", + &["\u{d4e}\u{308}", "\u{904}"]), ("\u{d4e}\u{308}\u{d4e}", &["\u{d4e}\u{308}", "\u{d4e}"]), + ("\u{d4e}\u{308}\u{915}", &["\u{d4e}\u{308}", "\u{915}"]), ("\u{d4e}\u{308}\u{231a}", + &["\u{d4e}\u{308}", "\u{231a}"]), ("\u{d4e}\u{300}", &["\u{d4e}\u{300}"]), + ("\u{d4e}\u{308}\u{300}", &["\u{d4e}\u{308}\u{300}"]), ("\u{d4e}\u{93c}", + &["\u{d4e}\u{93c}"]), ("\u{d4e}\u{308}\u{93c}", &["\u{d4e}\u{308}\u{93c}"]), + ("\u{d4e}\u{94d}", &["\u{d4e}\u{94d}"]), ("\u{d4e}\u{308}\u{94d}", + &["\u{d4e}\u{308}\u{94d}"]), ("\u{d4e}\u{200d}", &["\u{d4e}\u{200d}"]), + ("\u{d4e}\u{308}\u{200d}", &["\u{d4e}\u{308}\u{200d}"]), ("\u{d4e}\u{308}\u{378}", + &["\u{d4e}\u{308}", "\u{378}"]), ("\u{915}\u{20}", &["\u{915}", "\u{20}"]), + ("\u{915}\u{308}\u{20}", &["\u{915}\u{308}", "\u{20}"]), ("\u{915}\u{d}", &["\u{915}", + "\u{d}"]), ("\u{915}\u{308}\u{d}", &["\u{915}\u{308}", "\u{d}"]), ("\u{915}\u{a}", + &["\u{915}", "\u{a}"]), ("\u{915}\u{308}\u{a}", &["\u{915}\u{308}", "\u{a}"]), + ("\u{915}\u{1}", &["\u{915}", "\u{1}"]), ("\u{915}\u{308}\u{1}", &["\u{915}\u{308}", + "\u{1}"]), ("\u{915}\u{34f}", &["\u{915}\u{34f}"]), ("\u{915}\u{308}\u{34f}", + &["\u{915}\u{308}\u{34f}"]), ("\u{915}\u{1f1e6}", &["\u{915}", "\u{1f1e6}"]), + ("\u{915}\u{308}\u{1f1e6}", &["\u{915}\u{308}", "\u{1f1e6}"]), ("\u{915}\u{600}", + &["\u{915}", "\u{600}"]), ("\u{915}\u{308}\u{600}", &["\u{915}\u{308}", "\u{600}"]), + ("\u{915}\u{1100}", &["\u{915}", "\u{1100}"]), ("\u{915}\u{308}\u{1100}", + &["\u{915}\u{308}", "\u{1100}"]), ("\u{915}\u{1160}", &["\u{915}", "\u{1160}"]), + ("\u{915}\u{308}\u{1160}", &["\u{915}\u{308}", "\u{1160}"]), ("\u{915}\u{11a8}", + &["\u{915}", "\u{11a8}"]), ("\u{915}\u{308}\u{11a8}", &["\u{915}\u{308}", "\u{11a8}"]), + ("\u{915}\u{ac00}", &["\u{915}", "\u{ac00}"]), ("\u{915}\u{308}\u{ac00}", + &["\u{915}\u{308}", "\u{ac00}"]), ("\u{915}\u{ac01}", &["\u{915}", "\u{ac01}"]), + ("\u{915}\u{308}\u{ac01}", &["\u{915}\u{308}", "\u{ac01}"]), ("\u{915}\u{900}", + &["\u{915}\u{900}"]), ("\u{915}\u{308}\u{900}", &["\u{915}\u{308}\u{900}"]), + ("\u{915}\u{904}", &["\u{915}", "\u{904}"]), ("\u{915}\u{308}\u{904}", &["\u{915}\u{308}", + "\u{904}"]), ("\u{915}\u{d4e}", &["\u{915}", "\u{d4e}"]), ("\u{915}\u{308}\u{d4e}", + &["\u{915}\u{308}", "\u{d4e}"]), ("\u{915}\u{915}", &["\u{915}", "\u{915}"]), + ("\u{915}\u{308}\u{915}", &["\u{915}\u{308}", "\u{915}"]), ("\u{915}\u{231a}", &["\u{915}", + "\u{231a}"]), ("\u{915}\u{308}\u{231a}", &["\u{915}\u{308}", "\u{231a}"]), + ("\u{915}\u{300}", &["\u{915}\u{300}"]), ("\u{915}\u{308}\u{300}", + &["\u{915}\u{308}\u{300}"]), ("\u{915}\u{93c}", &["\u{915}\u{93c}"]), + ("\u{915}\u{308}\u{93c}", &["\u{915}\u{308}\u{93c}"]), ("\u{915}\u{94d}", + &["\u{915}\u{94d}"]), ("\u{915}\u{308}\u{94d}", &["\u{915}\u{308}\u{94d}"]), + ("\u{915}\u{200d}", &["\u{915}\u{200d}"]), ("\u{915}\u{308}\u{200d}", + &["\u{915}\u{308}\u{200d}"]), ("\u{915}\u{378}", &["\u{915}", "\u{378}"]), + ("\u{915}\u{308}\u{378}", &["\u{915}\u{308}", "\u{378}"]), ("\u{231a}\u{20}", &["\u{231a}", + "\u{20}"]), ("\u{231a}\u{308}\u{20}", &["\u{231a}\u{308}", "\u{20}"]), ("\u{231a}\u{d}", + &["\u{231a}", "\u{d}"]), ("\u{231a}\u{308}\u{d}", &["\u{231a}\u{308}", "\u{d}"]), + ("\u{231a}\u{a}", &["\u{231a}", "\u{a}"]), ("\u{231a}\u{308}\u{a}", &["\u{231a}\u{308}", + "\u{a}"]), ("\u{231a}\u{1}", &["\u{231a}", "\u{1}"]), ("\u{231a}\u{308}\u{1}", + &["\u{231a}\u{308}", "\u{1}"]), ("\u{231a}\u{34f}", &["\u{231a}\u{34f}"]), + ("\u{231a}\u{308}\u{34f}", &["\u{231a}\u{308}\u{34f}"]), ("\u{231a}\u{1f1e6}", &["\u{231a}", + "\u{1f1e6}"]), ("\u{231a}\u{308}\u{1f1e6}", &["\u{231a}\u{308}", "\u{1f1e6}"]), + ("\u{231a}\u{600}", &["\u{231a}", "\u{600}"]), ("\u{231a}\u{308}\u{600}", + &["\u{231a}\u{308}", "\u{600}"]), ("\u{231a}\u{1100}", &["\u{231a}", "\u{1100}"]), + ("\u{231a}\u{308}\u{1100}", &["\u{231a}\u{308}", "\u{1100}"]), ("\u{231a}\u{1160}", + &["\u{231a}", "\u{1160}"]), ("\u{231a}\u{308}\u{1160}", &["\u{231a}\u{308}", "\u{1160}"]), + ("\u{231a}\u{11a8}", &["\u{231a}", "\u{11a8}"]), ("\u{231a}\u{308}\u{11a8}", + &["\u{231a}\u{308}", "\u{11a8}"]), ("\u{231a}\u{ac00}", &["\u{231a}", "\u{ac00}"]), + ("\u{231a}\u{308}\u{ac00}", &["\u{231a}\u{308}", "\u{ac00}"]), ("\u{231a}\u{ac01}", + &["\u{231a}", "\u{ac01}"]), ("\u{231a}\u{308}\u{ac01}", &["\u{231a}\u{308}", "\u{ac01}"]), + ("\u{231a}\u{900}", &["\u{231a}\u{900}"]), ("\u{231a}\u{308}\u{900}", + &["\u{231a}\u{308}\u{900}"]), ("\u{231a}\u{904}", &["\u{231a}", "\u{904}"]), + ("\u{231a}\u{308}\u{904}", &["\u{231a}\u{308}", "\u{904}"]), ("\u{231a}\u{d4e}", + &["\u{231a}", "\u{d4e}"]), ("\u{231a}\u{308}\u{d4e}", &["\u{231a}\u{308}", "\u{d4e}"]), + ("\u{231a}\u{915}", &["\u{231a}", "\u{915}"]), ("\u{231a}\u{308}\u{915}", + &["\u{231a}\u{308}", "\u{915}"]), ("\u{231a}\u{231a}", &["\u{231a}", "\u{231a}"]), + ("\u{231a}\u{308}\u{231a}", &["\u{231a}\u{308}", "\u{231a}"]), ("\u{231a}\u{300}", + &["\u{231a}\u{300}"]), ("\u{231a}\u{308}\u{300}", &["\u{231a}\u{308}\u{300}"]), + ("\u{231a}\u{93c}", &["\u{231a}\u{93c}"]), ("\u{231a}\u{308}\u{93c}", + &["\u{231a}\u{308}\u{93c}"]), ("\u{231a}\u{94d}", &["\u{231a}\u{94d}"]), + ("\u{231a}\u{308}\u{94d}", &["\u{231a}\u{308}\u{94d}"]), ("\u{231a}\u{200d}", + &["\u{231a}\u{200d}"]), ("\u{231a}\u{308}\u{200d}", &["\u{231a}\u{308}\u{200d}"]), + ("\u{231a}\u{378}", &["\u{231a}", "\u{378}"]), ("\u{231a}\u{308}\u{378}", + &["\u{231a}\u{308}", "\u{378}"]), ("\u{300}\u{20}", &["\u{300}", "\u{20}"]), + ("\u{300}\u{308}\u{20}", &["\u{300}\u{308}", "\u{20}"]), ("\u{300}\u{d}", &["\u{300}", + "\u{d}"]), ("\u{300}\u{308}\u{d}", &["\u{300}\u{308}", "\u{d}"]), ("\u{300}\u{a}", + &["\u{300}", "\u{a}"]), ("\u{300}\u{308}\u{a}", &["\u{300}\u{308}", "\u{a}"]), + ("\u{300}\u{1}", &["\u{300}", "\u{1}"]), ("\u{300}\u{308}\u{1}", &["\u{300}\u{308}", + "\u{1}"]), ("\u{300}\u{34f}", &["\u{300}\u{34f}"]), ("\u{300}\u{308}\u{34f}", + &["\u{300}\u{308}\u{34f}"]), ("\u{300}\u{1f1e6}", &["\u{300}", "\u{1f1e6}"]), + ("\u{300}\u{308}\u{1f1e6}", &["\u{300}\u{308}", "\u{1f1e6}"]), ("\u{300}\u{600}", + &["\u{300}", "\u{600}"]), ("\u{300}\u{308}\u{600}", &["\u{300}\u{308}", "\u{600}"]), + ("\u{300}\u{1100}", &["\u{300}", "\u{1100}"]), ("\u{300}\u{308}\u{1100}", + &["\u{300}\u{308}", "\u{1100}"]), ("\u{300}\u{1160}", &["\u{300}", "\u{1160}"]), + ("\u{300}\u{308}\u{1160}", &["\u{300}\u{308}", "\u{1160}"]), ("\u{300}\u{11a8}", + &["\u{300}", "\u{11a8}"]), ("\u{300}\u{308}\u{11a8}", &["\u{300}\u{308}", "\u{11a8}"]), + ("\u{300}\u{ac00}", &["\u{300}", "\u{ac00}"]), ("\u{300}\u{308}\u{ac00}", + &["\u{300}\u{308}", "\u{ac00}"]), ("\u{300}\u{ac01}", &["\u{300}", "\u{ac01}"]), + ("\u{300}\u{308}\u{ac01}", &["\u{300}\u{308}", "\u{ac01}"]), ("\u{300}\u{900}", + &["\u{300}\u{900}"]), ("\u{300}\u{308}\u{900}", &["\u{300}\u{308}\u{900}"]), + ("\u{300}\u{904}", &["\u{300}", "\u{904}"]), ("\u{300}\u{308}\u{904}", &["\u{300}\u{308}", + "\u{904}"]), ("\u{300}\u{d4e}", &["\u{300}", "\u{d4e}"]), ("\u{300}\u{308}\u{d4e}", + &["\u{300}\u{308}", "\u{d4e}"]), ("\u{300}\u{915}", &["\u{300}", "\u{915}"]), + ("\u{300}\u{308}\u{915}", &["\u{300}\u{308}", "\u{915}"]), ("\u{300}\u{231a}", &["\u{300}", + "\u{231a}"]), ("\u{300}\u{308}\u{231a}", &["\u{300}\u{308}", "\u{231a}"]), + ("\u{300}\u{300}", &["\u{300}\u{300}"]), ("\u{300}\u{308}\u{300}", + &["\u{300}\u{308}\u{300}"]), ("\u{300}\u{93c}", &["\u{300}\u{93c}"]), + ("\u{300}\u{308}\u{93c}", &["\u{300}\u{308}\u{93c}"]), ("\u{300}\u{94d}", + &["\u{300}\u{94d}"]), ("\u{300}\u{308}\u{94d}", &["\u{300}\u{308}\u{94d}"]), + ("\u{300}\u{200d}", &["\u{300}\u{200d}"]), ("\u{300}\u{308}\u{200d}", + &["\u{300}\u{308}\u{200d}"]), ("\u{300}\u{378}", &["\u{300}", "\u{378}"]), + ("\u{300}\u{308}\u{378}", &["\u{300}\u{308}", "\u{378}"]), ("\u{93c}\u{20}", &["\u{93c}", + "\u{20}"]), ("\u{93c}\u{308}\u{20}", &["\u{93c}\u{308}", "\u{20}"]), ("\u{93c}\u{d}", + &["\u{93c}", "\u{d}"]), ("\u{93c}\u{308}\u{d}", &["\u{93c}\u{308}", "\u{d}"]), + ("\u{93c}\u{a}", &["\u{93c}", "\u{a}"]), ("\u{93c}\u{308}\u{a}", &["\u{93c}\u{308}", + "\u{a}"]), ("\u{93c}\u{1}", &["\u{93c}", "\u{1}"]), ("\u{93c}\u{308}\u{1}", + &["\u{93c}\u{308}", "\u{1}"]), ("\u{93c}\u{34f}", &["\u{93c}\u{34f}"]), + ("\u{93c}\u{308}\u{34f}", &["\u{93c}\u{308}\u{34f}"]), ("\u{93c}\u{1f1e6}", &["\u{93c}", + "\u{1f1e6}"]), ("\u{93c}\u{308}\u{1f1e6}", &["\u{93c}\u{308}", "\u{1f1e6}"]), + ("\u{93c}\u{600}", &["\u{93c}", "\u{600}"]), ("\u{93c}\u{308}\u{600}", &["\u{93c}\u{308}", + "\u{600}"]), ("\u{93c}\u{1100}", &["\u{93c}", "\u{1100}"]), ("\u{93c}\u{308}\u{1100}", + &["\u{93c}\u{308}", "\u{1100}"]), ("\u{93c}\u{1160}", &["\u{93c}", "\u{1160}"]), + ("\u{93c}\u{308}\u{1160}", &["\u{93c}\u{308}", "\u{1160}"]), ("\u{93c}\u{11a8}", + &["\u{93c}", "\u{11a8}"]), ("\u{93c}\u{308}\u{11a8}", &["\u{93c}\u{308}", "\u{11a8}"]), + ("\u{93c}\u{ac00}", &["\u{93c}", "\u{ac00}"]), ("\u{93c}\u{308}\u{ac00}", + &["\u{93c}\u{308}", "\u{ac00}"]), ("\u{93c}\u{ac01}", &["\u{93c}", "\u{ac01}"]), + ("\u{93c}\u{308}\u{ac01}", &["\u{93c}\u{308}", "\u{ac01}"]), ("\u{93c}\u{900}", + &["\u{93c}\u{900}"]), ("\u{93c}\u{308}\u{900}", &["\u{93c}\u{308}\u{900}"]), + ("\u{93c}\u{904}", &["\u{93c}", "\u{904}"]), ("\u{93c}\u{308}\u{904}", &["\u{93c}\u{308}", + "\u{904}"]), ("\u{93c}\u{d4e}", &["\u{93c}", "\u{d4e}"]), ("\u{93c}\u{308}\u{d4e}", + &["\u{93c}\u{308}", "\u{d4e}"]), ("\u{93c}\u{915}", &["\u{93c}", "\u{915}"]), + ("\u{93c}\u{308}\u{915}", &["\u{93c}\u{308}", "\u{915}"]), ("\u{93c}\u{231a}", &["\u{93c}", + "\u{231a}"]), ("\u{93c}\u{308}\u{231a}", &["\u{93c}\u{308}", "\u{231a}"]), + ("\u{93c}\u{300}", &["\u{93c}\u{300}"]), ("\u{93c}\u{308}\u{300}", + &["\u{93c}\u{308}\u{300}"]), ("\u{93c}\u{93c}", &["\u{93c}\u{93c}"]), + ("\u{93c}\u{308}\u{93c}", &["\u{93c}\u{308}\u{93c}"]), ("\u{93c}\u{94d}", + &["\u{93c}\u{94d}"]), ("\u{93c}\u{308}\u{94d}", &["\u{93c}\u{308}\u{94d}"]), + ("\u{93c}\u{200d}", &["\u{93c}\u{200d}"]), ("\u{93c}\u{308}\u{200d}", + &["\u{93c}\u{308}\u{200d}"]), ("\u{93c}\u{378}", &["\u{93c}", "\u{378}"]), + ("\u{93c}\u{308}\u{378}", &["\u{93c}\u{308}", "\u{378}"]), ("\u{94d}\u{20}", &["\u{94d}", + "\u{20}"]), ("\u{94d}\u{308}\u{20}", &["\u{94d}\u{308}", "\u{20}"]), ("\u{94d}\u{d}", + &["\u{94d}", "\u{d}"]), ("\u{94d}\u{308}\u{d}", &["\u{94d}\u{308}", "\u{d}"]), + ("\u{94d}\u{a}", &["\u{94d}", "\u{a}"]), ("\u{94d}\u{308}\u{a}", &["\u{94d}\u{308}", + "\u{a}"]), ("\u{94d}\u{1}", &["\u{94d}", "\u{1}"]), ("\u{94d}\u{308}\u{1}", + &["\u{94d}\u{308}", "\u{1}"]), ("\u{94d}\u{34f}", &["\u{94d}\u{34f}"]), + ("\u{94d}\u{308}\u{34f}", &["\u{94d}\u{308}\u{34f}"]), ("\u{94d}\u{1f1e6}", &["\u{94d}", + "\u{1f1e6}"]), ("\u{94d}\u{308}\u{1f1e6}", &["\u{94d}\u{308}", "\u{1f1e6}"]), + ("\u{94d}\u{600}", &["\u{94d}", "\u{600}"]), ("\u{94d}\u{308}\u{600}", &["\u{94d}\u{308}", + "\u{600}"]), ("\u{94d}\u{1100}", &["\u{94d}", "\u{1100}"]), ("\u{94d}\u{308}\u{1100}", + &["\u{94d}\u{308}", "\u{1100}"]), ("\u{94d}\u{1160}", &["\u{94d}", "\u{1160}"]), + ("\u{94d}\u{308}\u{1160}", &["\u{94d}\u{308}", "\u{1160}"]), ("\u{94d}\u{11a8}", + &["\u{94d}", "\u{11a8}"]), ("\u{94d}\u{308}\u{11a8}", &["\u{94d}\u{308}", "\u{11a8}"]), + ("\u{94d}\u{ac00}", &["\u{94d}", "\u{ac00}"]), ("\u{94d}\u{308}\u{ac00}", + &["\u{94d}\u{308}", "\u{ac00}"]), ("\u{94d}\u{ac01}", &["\u{94d}", "\u{ac01}"]), + ("\u{94d}\u{308}\u{ac01}", &["\u{94d}\u{308}", "\u{ac01}"]), ("\u{94d}\u{900}", + &["\u{94d}\u{900}"]), ("\u{94d}\u{308}\u{900}", &["\u{94d}\u{308}\u{900}"]), + ("\u{94d}\u{904}", &["\u{94d}", "\u{904}"]), ("\u{94d}\u{308}\u{904}", &["\u{94d}\u{308}", + "\u{904}"]), ("\u{94d}\u{d4e}", &["\u{94d}", "\u{d4e}"]), ("\u{94d}\u{308}\u{d4e}", + &["\u{94d}\u{308}", "\u{d4e}"]), ("\u{94d}\u{915}", &["\u{94d}", "\u{915}"]), + ("\u{94d}\u{308}\u{915}", &["\u{94d}\u{308}", "\u{915}"]), ("\u{94d}\u{231a}", &["\u{94d}", + "\u{231a}"]), ("\u{94d}\u{308}\u{231a}", &["\u{94d}\u{308}", "\u{231a}"]), + ("\u{94d}\u{300}", &["\u{94d}\u{300}"]), ("\u{94d}\u{308}\u{300}", + &["\u{94d}\u{308}\u{300}"]), ("\u{94d}\u{93c}", &["\u{94d}\u{93c}"]), + ("\u{94d}\u{308}\u{93c}", &["\u{94d}\u{308}\u{93c}"]), ("\u{94d}\u{94d}", + &["\u{94d}\u{94d}"]), ("\u{94d}\u{308}\u{94d}", &["\u{94d}\u{308}\u{94d}"]), + ("\u{94d}\u{200d}", &["\u{94d}\u{200d}"]), ("\u{94d}\u{308}\u{200d}", + &["\u{94d}\u{308}\u{200d}"]), ("\u{94d}\u{378}", &["\u{94d}", "\u{378}"]), + ("\u{94d}\u{308}\u{378}", &["\u{94d}\u{308}", "\u{378}"]), ("\u{200d}\u{20}", &["\u{200d}", + "\u{20}"]), ("\u{200d}\u{308}\u{20}", &["\u{200d}\u{308}", "\u{20}"]), ("\u{200d}\u{d}", + &["\u{200d}", "\u{d}"]), ("\u{200d}\u{308}\u{d}", &["\u{200d}\u{308}", "\u{d}"]), + ("\u{200d}\u{a}", &["\u{200d}", "\u{a}"]), ("\u{200d}\u{308}\u{a}", &["\u{200d}\u{308}", + "\u{a}"]), ("\u{200d}\u{1}", &["\u{200d}", "\u{1}"]), ("\u{200d}\u{308}\u{1}", + &["\u{200d}\u{308}", "\u{1}"]), ("\u{200d}\u{34f}", &["\u{200d}\u{34f}"]), + ("\u{200d}\u{308}\u{34f}", &["\u{200d}\u{308}\u{34f}"]), ("\u{200d}\u{1f1e6}", &["\u{200d}", + "\u{1f1e6}"]), ("\u{200d}\u{308}\u{1f1e6}", &["\u{200d}\u{308}", "\u{1f1e6}"]), + ("\u{200d}\u{600}", &["\u{200d}", "\u{600}"]), ("\u{200d}\u{308}\u{600}", + &["\u{200d}\u{308}", "\u{600}"]), ("\u{200d}\u{1100}", &["\u{200d}", "\u{1100}"]), + ("\u{200d}\u{308}\u{1100}", &["\u{200d}\u{308}", "\u{1100}"]), ("\u{200d}\u{1160}", + &["\u{200d}", "\u{1160}"]), ("\u{200d}\u{308}\u{1160}", &["\u{200d}\u{308}", "\u{1160}"]), + ("\u{200d}\u{11a8}", &["\u{200d}", "\u{11a8}"]), ("\u{200d}\u{308}\u{11a8}", + &["\u{200d}\u{308}", "\u{11a8}"]), ("\u{200d}\u{ac00}", &["\u{200d}", "\u{ac00}"]), + ("\u{200d}\u{308}\u{ac00}", &["\u{200d}\u{308}", "\u{ac00}"]), ("\u{200d}\u{ac01}", + &["\u{200d}", "\u{ac01}"]), ("\u{200d}\u{308}\u{ac01}", &["\u{200d}\u{308}", "\u{ac01}"]), + ("\u{200d}\u{900}", &["\u{200d}\u{900}"]), ("\u{200d}\u{308}\u{900}", + &["\u{200d}\u{308}\u{900}"]), ("\u{200d}\u{904}", &["\u{200d}", "\u{904}"]), + ("\u{200d}\u{308}\u{904}", &["\u{200d}\u{308}", "\u{904}"]), ("\u{200d}\u{d4e}", + &["\u{200d}", "\u{d4e}"]), ("\u{200d}\u{308}\u{d4e}", &["\u{200d}\u{308}", "\u{d4e}"]), + ("\u{200d}\u{915}", &["\u{200d}", "\u{915}"]), ("\u{200d}\u{308}\u{915}", + &["\u{200d}\u{308}", "\u{915}"]), ("\u{200d}\u{231a}", &["\u{200d}", "\u{231a}"]), + ("\u{200d}\u{308}\u{231a}", &["\u{200d}\u{308}", "\u{231a}"]), ("\u{200d}\u{300}", + &["\u{200d}\u{300}"]), ("\u{200d}\u{308}\u{300}", &["\u{200d}\u{308}\u{300}"]), + ("\u{200d}\u{93c}", &["\u{200d}\u{93c}"]), ("\u{200d}\u{308}\u{93c}", + &["\u{200d}\u{308}\u{93c}"]), ("\u{200d}\u{94d}", &["\u{200d}\u{94d}"]), + ("\u{200d}\u{308}\u{94d}", &["\u{200d}\u{308}\u{94d}"]), ("\u{200d}\u{200d}", + &["\u{200d}\u{200d}"]), ("\u{200d}\u{308}\u{200d}", &["\u{200d}\u{308}\u{200d}"]), + ("\u{200d}\u{378}", &["\u{200d}", "\u{378}"]), ("\u{200d}\u{308}\u{378}", + &["\u{200d}\u{308}", "\u{378}"]), ("\u{378}\u{20}", &["\u{378}", "\u{20}"]), + ("\u{378}\u{308}\u{20}", &["\u{378}\u{308}", "\u{20}"]), ("\u{378}\u{d}", &["\u{378}", + "\u{d}"]), ("\u{378}\u{308}\u{d}", &["\u{378}\u{308}", "\u{d}"]), ("\u{378}\u{a}", + &["\u{378}", "\u{a}"]), ("\u{378}\u{308}\u{a}", &["\u{378}\u{308}", "\u{a}"]), + ("\u{378}\u{1}", &["\u{378}", "\u{1}"]), ("\u{378}\u{308}\u{1}", &["\u{378}\u{308}", + "\u{1}"]), ("\u{378}\u{34f}", &["\u{378}\u{34f}"]), ("\u{378}\u{308}\u{34f}", + &["\u{378}\u{308}\u{34f}"]), ("\u{378}\u{1f1e6}", &["\u{378}", "\u{1f1e6}"]), + ("\u{378}\u{308}\u{1f1e6}", &["\u{378}\u{308}", "\u{1f1e6}"]), ("\u{378}\u{600}", + &["\u{378}", "\u{600}"]), ("\u{378}\u{308}\u{600}", &["\u{378}\u{308}", "\u{600}"]), + ("\u{378}\u{1100}", &["\u{378}", "\u{1100}"]), ("\u{378}\u{308}\u{1100}", + &["\u{378}\u{308}", "\u{1100}"]), ("\u{378}\u{1160}", &["\u{378}", "\u{1160}"]), + ("\u{378}\u{308}\u{1160}", &["\u{378}\u{308}", "\u{1160}"]), ("\u{378}\u{11a8}", + &["\u{378}", "\u{11a8}"]), ("\u{378}\u{308}\u{11a8}", &["\u{378}\u{308}", "\u{11a8}"]), + ("\u{378}\u{ac00}", &["\u{378}", "\u{ac00}"]), ("\u{378}\u{308}\u{ac00}", + &["\u{378}\u{308}", "\u{ac00}"]), ("\u{378}\u{ac01}", &["\u{378}", "\u{ac01}"]), + ("\u{378}\u{308}\u{ac01}", &["\u{378}\u{308}", "\u{ac01}"]), ("\u{378}\u{900}", + &["\u{378}\u{900}"]), ("\u{378}\u{308}\u{900}", &["\u{378}\u{308}\u{900}"]), + ("\u{378}\u{904}", &["\u{378}", "\u{904}"]), ("\u{378}\u{308}\u{904}", &["\u{378}\u{308}", + "\u{904}"]), ("\u{378}\u{d4e}", &["\u{378}", "\u{d4e}"]), ("\u{378}\u{308}\u{d4e}", + &["\u{378}\u{308}", "\u{d4e}"]), ("\u{378}\u{915}", &["\u{378}", "\u{915}"]), + ("\u{378}\u{308}\u{915}", &["\u{378}\u{308}", "\u{915}"]), ("\u{378}\u{231a}", &["\u{378}", + "\u{231a}"]), ("\u{378}\u{308}\u{231a}", &["\u{378}\u{308}", "\u{231a}"]), + ("\u{378}\u{300}", &["\u{378}\u{300}"]), ("\u{378}\u{308}\u{300}", + &["\u{378}\u{308}\u{300}"]), ("\u{378}\u{93c}", &["\u{378}\u{93c}"]), + ("\u{378}\u{308}\u{93c}", &["\u{378}\u{308}\u{93c}"]), ("\u{378}\u{94d}", + &["\u{378}\u{94d}"]), ("\u{378}\u{308}\u{94d}", &["\u{378}\u{308}\u{94d}"]), + ("\u{378}\u{200d}", &["\u{378}\u{200d}"]), ("\u{378}\u{308}\u{200d}", + &["\u{378}\u{308}\u{200d}"]), ("\u{378}\u{378}", &["\u{378}", "\u{378}"]), + ("\u{378}\u{308}\u{378}", &["\u{378}\u{308}", "\u{378}"]), ("\u{d}\u{a}\u{61}\u{a}\u{308}", + &["\u{d}\u{a}", "\u{61}", "\u{a}", "\u{308}"]), ("\u{61}\u{308}", &["\u{61}\u{308}"]), + ("\u{20}\u{200d}\u{646}", &["\u{20}\u{200d}", "\u{646}"]), ("\u{646}\u{200d}\u{20}", + &["\u{646}\u{200d}", "\u{20}"]), ("\u{1100}\u{1100}", &["\u{1100}\u{1100}"]), + ("\u{ac00}\u{11a8}\u{1100}", &["\u{ac00}\u{11a8}", "\u{1100}"]), + ("\u{ac01}\u{11a8}\u{1100}", &["\u{ac01}\u{11a8}", "\u{1100}"]), + ("\u{1f1e6}\u{1f1e7}\u{1f1e8}\u{62}", &["\u{1f1e6}\u{1f1e7}", "\u{1f1e8}", "\u{62}"]), + ("\u{61}\u{1f1e6}\u{1f1e7}\u{1f1e8}\u{62}", &["\u{61}", "\u{1f1e6}\u{1f1e7}", "\u{1f1e8}", + "\u{62}"]), ("\u{61}\u{1f1e6}\u{1f1e7}\u{200d}\u{1f1e8}\u{62}", &["\u{61}", + "\u{1f1e6}\u{1f1e7}\u{200d}", "\u{1f1e8}", "\u{62}"]), + ("\u{61}\u{1f1e6}\u{200d}\u{1f1e7}\u{1f1e8}\u{62}", &["\u{61}", "\u{1f1e6}\u{200d}", + "\u{1f1e7}\u{1f1e8}", "\u{62}"]), ("\u{61}\u{1f1e6}\u{1f1e7}\u{1f1e8}\u{1f1e9}\u{62}", + &["\u{61}", "\u{1f1e6}\u{1f1e7}", "\u{1f1e8}\u{1f1e9}", "\u{62}"]), ("\u{61}\u{200d}", + &["\u{61}\u{200d}"]), ("\u{61}\u{308}\u{62}", &["\u{61}\u{308}", "\u{62}"]), + ("\u{1f476}\u{1f3ff}\u{1f476}", &["\u{1f476}\u{1f3ff}", "\u{1f476}"]), + ("\u{61}\u{1f3ff}\u{1f476}", &["\u{61}\u{1f3ff}", "\u{1f476}"]), + ("\u{61}\u{1f3ff}\u{1f476}\u{200d}\u{1f6d1}", &["\u{61}\u{1f3ff}", + "\u{1f476}\u{200d}\u{1f6d1}"]), ("\u{1f476}\u{1f3ff}\u{308}\u{200d}\u{1f476}\u{1f3ff}", + &["\u{1f476}\u{1f3ff}\u{308}\u{200d}\u{1f476}\u{1f3ff}"]), ("\u{1f6d1}\u{200d}\u{1f6d1}", + &["\u{1f6d1}\u{200d}\u{1f6d1}"]), ("\u{61}\u{200d}\u{1f6d1}", &["\u{61}\u{200d}", + "\u{1f6d1}"]), ("\u{2701}\u{200d}\u{2701}", &["\u{2701}\u{200d}\u{2701}"]), + ("\u{61}\u{200d}\u{2701}", &["\u{61}\u{200d}", "\u{2701}"]), ("\u{915}\u{924}", &["\u{915}", + "\u{924}"]), ("\u{915}\u{94d}\u{61}", &["\u{915}\u{94d}", "\u{61}"]), + ("\u{61}\u{94d}\u{924}", &["\u{61}\u{94d}", "\u{924}"]), ("\u{3f}\u{94d}\u{924}", + &["\u{3f}\u{94d}", "\u{924}"]) + ]; -pub const TEST_DIFF: &'static [( - &'static str, - &'static [&'static str], - &'static [&'static str], -)] = &[ - ("\u{20}\u{a03}", &["\u{20}\u{a03}"], &["\u{20}", "\u{a03}"]), - ( - "\u{20}\u{308}\u{a03}", - &["\u{20}\u{308}\u{a03}"], - &["\u{20}\u{308}", "\u{a03}"], - ), - ("\u{20}\u{903}", &["\u{20}\u{903}"], &["\u{20}", "\u{903}"]), - ( - "\u{20}\u{308}\u{903}", - &["\u{20}\u{308}\u{903}"], - &["\u{20}\u{308}", "\u{903}"], - ), - ( - "\u{d}\u{308}\u{a03}", - &["\u{d}", "\u{308}\u{a03}"], - &["\u{d}", "\u{308}", "\u{a03}"], - ), - ( - "\u{d}\u{308}\u{903}", - &["\u{d}", "\u{308}\u{903}"], - &["\u{d}", "\u{308}", "\u{903}"], - ), - ( - "\u{a}\u{308}\u{a03}", - &["\u{a}", "\u{308}\u{a03}"], - &["\u{a}", "\u{308}", "\u{a03}"], - ), - ( - "\u{a}\u{308}\u{903}", - &["\u{a}", "\u{308}\u{903}"], - &["\u{a}", "\u{308}", "\u{903}"], - ), - ( - "\u{1}\u{308}\u{a03}", - &["\u{1}", "\u{308}\u{a03}"], - &["\u{1}", "\u{308}", "\u{a03}"], - ), - ( - "\u{1}\u{308}\u{903}", - &["\u{1}", "\u{308}\u{903}"], - &["\u{1}", "\u{308}", "\u{903}"], - ), - ( - "\u{34f}\u{a03}", - &["\u{34f}\u{a03}"], - &["\u{34f}", "\u{a03}"], - ), - ( - "\u{34f}\u{308}\u{a03}", - &["\u{34f}\u{308}\u{a03}"], - &["\u{34f}\u{308}", "\u{a03}"], - ), - ( - "\u{34f}\u{903}", - &["\u{34f}\u{903}"], - &["\u{34f}", "\u{903}"], - ), - ( - "\u{34f}\u{308}\u{903}", - &["\u{34f}\u{308}\u{903}"], - &["\u{34f}\u{308}", "\u{903}"], - ), - ( - "\u{1f1e6}\u{a03}", - &["\u{1f1e6}\u{a03}"], - &["\u{1f1e6}", "\u{a03}"], - ), - ( - "\u{1f1e6}\u{308}\u{a03}", - &["\u{1f1e6}\u{308}\u{a03}"], - &["\u{1f1e6}\u{308}", "\u{a03}"], - ), - ( - "\u{1f1e6}\u{903}", - &["\u{1f1e6}\u{903}"], - &["\u{1f1e6}", "\u{903}"], - ), - ( - "\u{1f1e6}\u{308}\u{903}", - &["\u{1f1e6}\u{308}\u{903}"], - &["\u{1f1e6}\u{308}", "\u{903}"], - ), - ("\u{600}\u{20}", &["\u{600}\u{20}"], &["\u{600}", "\u{20}"]), - ( - "\u{600}\u{1f1e6}", - &["\u{600}\u{1f1e6}"], - &["\u{600}", "\u{1f1e6}"], - ), - ( - "\u{600}\u{600}", - &["\u{600}\u{600}"], - &["\u{600}", "\u{600}"], - ), - ( - "\u{600}\u{a03}", - &["\u{600}\u{a03}"], - &["\u{600}", "\u{a03}"], - ), - ( - "\u{600}\u{308}\u{a03}", - &["\u{600}\u{308}\u{a03}"], - &["\u{600}\u{308}", "\u{a03}"], - ), - ( - "\u{600}\u{1100}", - &["\u{600}\u{1100}"], - &["\u{600}", "\u{1100}"], - ), - ( - "\u{600}\u{1160}", - &["\u{600}\u{1160}"], - &["\u{600}", "\u{1160}"], - ), - ( - "\u{600}\u{11a8}", - &["\u{600}\u{11a8}"], - &["\u{600}", "\u{11a8}"], - ), - ( - "\u{600}\u{ac00}", - &["\u{600}\u{ac00}"], - &["\u{600}", "\u{ac00}"], - ), - ( - "\u{600}\u{ac01}", - &["\u{600}\u{ac01}"], - &["\u{600}", "\u{ac01}"], - ), - ( - "\u{600}\u{903}", - &["\u{600}\u{903}"], - &["\u{600}", "\u{903}"], - ), - ( - "\u{600}\u{308}\u{903}", - &["\u{600}\u{308}\u{903}"], - &["\u{600}\u{308}", "\u{903}"], - ), - ( - "\u{600}\u{904}", - &["\u{600}\u{904}"], - &["\u{600}", "\u{904}"], - ), - ( - "\u{600}\u{d4e}", - &["\u{600}\u{d4e}"], - &["\u{600}", "\u{d4e}"], - ), - ( - "\u{600}\u{915}", - &["\u{600}\u{915}"], - &["\u{600}", "\u{915}"], - ), - ( - "\u{600}\u{231a}", - &["\u{600}\u{231a}"], - &["\u{600}", "\u{231a}"], - ), - ( - "\u{600}\u{378}", - &["\u{600}\u{378}"], - &["\u{600}", "\u{378}"], - ), - ( - "\u{a03}\u{a03}", - &["\u{a03}\u{a03}"], - &["\u{a03}", "\u{a03}"], - ), - ( - "\u{a03}\u{308}\u{a03}", - &["\u{a03}\u{308}\u{a03}"], - &["\u{a03}\u{308}", "\u{a03}"], - ), - ( - "\u{a03}\u{903}", - &["\u{a03}\u{903}"], - &["\u{a03}", "\u{903}"], - ), - ( - "\u{a03}\u{308}\u{903}", - &["\u{a03}\u{308}\u{903}"], - &["\u{a03}\u{308}", "\u{903}"], - ), - ( - "\u{1100}\u{a03}", - &["\u{1100}\u{a03}"], - &["\u{1100}", "\u{a03}"], - ), - ( - "\u{1100}\u{308}\u{a03}", - &["\u{1100}\u{308}\u{a03}"], - &["\u{1100}\u{308}", "\u{a03}"], - ), - ( - "\u{1100}\u{903}", - &["\u{1100}\u{903}"], - &["\u{1100}", "\u{903}"], - ), - ( - "\u{1100}\u{308}\u{903}", - &["\u{1100}\u{308}\u{903}"], - &["\u{1100}\u{308}", "\u{903}"], - ), - ( - "\u{1160}\u{a03}", - &["\u{1160}\u{a03}"], - &["\u{1160}", "\u{a03}"], - ), - ( - "\u{1160}\u{308}\u{a03}", - &["\u{1160}\u{308}\u{a03}"], - &["\u{1160}\u{308}", "\u{a03}"], - ), - ( - "\u{1160}\u{903}", - &["\u{1160}\u{903}"], - &["\u{1160}", "\u{903}"], - ), - ( - "\u{1160}\u{308}\u{903}", - &["\u{1160}\u{308}\u{903}"], - &["\u{1160}\u{308}", "\u{903}"], - ), - ( - "\u{11a8}\u{a03}", - &["\u{11a8}\u{a03}"], - &["\u{11a8}", "\u{a03}"], - ), - ( - "\u{11a8}\u{308}\u{a03}", - &["\u{11a8}\u{308}\u{a03}"], - &["\u{11a8}\u{308}", "\u{a03}"], - ), - ( - "\u{11a8}\u{903}", - &["\u{11a8}\u{903}"], - &["\u{11a8}", "\u{903}"], - ), - ( - "\u{11a8}\u{308}\u{903}", - &["\u{11a8}\u{308}\u{903}"], - &["\u{11a8}\u{308}", "\u{903}"], - ), - ( - "\u{ac00}\u{a03}", - &["\u{ac00}\u{a03}"], - &["\u{ac00}", "\u{a03}"], - ), - ( - "\u{ac00}\u{308}\u{a03}", - &["\u{ac00}\u{308}\u{a03}"], - &["\u{ac00}\u{308}", "\u{a03}"], - ), - ( - "\u{ac00}\u{903}", - &["\u{ac00}\u{903}"], - &["\u{ac00}", "\u{903}"], - ), - ( - "\u{ac00}\u{308}\u{903}", - &["\u{ac00}\u{308}\u{903}"], - &["\u{ac00}\u{308}", "\u{903}"], - ), - ( - "\u{ac01}\u{a03}", - &["\u{ac01}\u{a03}"], - &["\u{ac01}", "\u{a03}"], - ), - ( - "\u{ac01}\u{308}\u{a03}", - &["\u{ac01}\u{308}\u{a03}"], - &["\u{ac01}\u{308}", "\u{a03}"], - ), - ( - "\u{ac01}\u{903}", - &["\u{ac01}\u{903}"], - &["\u{ac01}", "\u{903}"], - ), - ( - "\u{ac01}\u{308}\u{903}", - &["\u{ac01}\u{308}\u{903}"], - &["\u{ac01}\u{308}", "\u{903}"], - ), - ( - "\u{900}\u{a03}", - &["\u{900}\u{a03}"], - &["\u{900}", "\u{a03}"], - ), - ( - "\u{900}\u{308}\u{a03}", - &["\u{900}\u{308}\u{a03}"], - &["\u{900}\u{308}", "\u{a03}"], - ), - ( - "\u{900}\u{903}", - &["\u{900}\u{903}"], - &["\u{900}", "\u{903}"], - ), - ( - "\u{900}\u{308}\u{903}", - &["\u{900}\u{308}\u{903}"], - &["\u{900}\u{308}", "\u{903}"], - ), - ( - "\u{903}\u{a03}", - &["\u{903}\u{a03}"], - &["\u{903}", "\u{a03}"], - ), - ( - "\u{903}\u{308}\u{a03}", - &["\u{903}\u{308}\u{a03}"], - &["\u{903}\u{308}", "\u{a03}"], - ), - ( - "\u{903}\u{903}", - &["\u{903}\u{903}"], - &["\u{903}", "\u{903}"], - ), - ( - "\u{903}\u{308}\u{903}", - &["\u{903}\u{308}\u{903}"], - &["\u{903}\u{308}", "\u{903}"], - ), - ( - "\u{904}\u{a03}", - &["\u{904}\u{a03}"], - &["\u{904}", "\u{a03}"], - ), - ( - "\u{904}\u{308}\u{a03}", - &["\u{904}\u{308}\u{a03}"], - &["\u{904}\u{308}", "\u{a03}"], - ), - ( - "\u{904}\u{903}", - &["\u{904}\u{903}"], - &["\u{904}", "\u{903}"], - ), - ( - "\u{904}\u{308}\u{903}", - &["\u{904}\u{308}\u{903}"], - &["\u{904}\u{308}", "\u{903}"], - ), - ("\u{d4e}\u{20}", &["\u{d4e}\u{20}"], &["\u{d4e}", "\u{20}"]), - ( - "\u{d4e}\u{1f1e6}", - &["\u{d4e}\u{1f1e6}"], - &["\u{d4e}", "\u{1f1e6}"], - ), - ( - "\u{d4e}\u{600}", - &["\u{d4e}\u{600}"], - &["\u{d4e}", "\u{600}"], - ), - ( - "\u{d4e}\u{a03}", - &["\u{d4e}\u{a03}"], - &["\u{d4e}", "\u{a03}"], - ), - ( - "\u{d4e}\u{308}\u{a03}", - &["\u{d4e}\u{308}\u{a03}"], - &["\u{d4e}\u{308}", "\u{a03}"], - ), - ( - "\u{d4e}\u{1100}", - &["\u{d4e}\u{1100}"], - &["\u{d4e}", "\u{1100}"], - ), - ( - "\u{d4e}\u{1160}", - &["\u{d4e}\u{1160}"], - &["\u{d4e}", "\u{1160}"], - ), - ( - "\u{d4e}\u{11a8}", - &["\u{d4e}\u{11a8}"], - &["\u{d4e}", "\u{11a8}"], - ), - ( - "\u{d4e}\u{ac00}", - &["\u{d4e}\u{ac00}"], - &["\u{d4e}", "\u{ac00}"], - ), - ( - "\u{d4e}\u{ac01}", - &["\u{d4e}\u{ac01}"], - &["\u{d4e}", "\u{ac01}"], - ), - ( - "\u{d4e}\u{903}", - &["\u{d4e}\u{903}"], - &["\u{d4e}", "\u{903}"], - ), - ( - "\u{d4e}\u{308}\u{903}", - &["\u{d4e}\u{308}\u{903}"], - &["\u{d4e}\u{308}", "\u{903}"], - ), - ( - "\u{d4e}\u{904}", - &["\u{d4e}\u{904}"], - &["\u{d4e}", "\u{904}"], - ), - ( - "\u{d4e}\u{d4e}", - &["\u{d4e}\u{d4e}"], - &["\u{d4e}", "\u{d4e}"], - ), - ( - "\u{d4e}\u{915}", - &["\u{d4e}\u{915}"], - &["\u{d4e}", "\u{915}"], - ), - ( - "\u{d4e}\u{231a}", - &["\u{d4e}\u{231a}"], - &["\u{d4e}", "\u{231a}"], - ), - ( - "\u{d4e}\u{378}", - &["\u{d4e}\u{378}"], - &["\u{d4e}", "\u{378}"], - ), - ( - "\u{915}\u{a03}", - &["\u{915}\u{a03}"], - &["\u{915}", "\u{a03}"], - ), - ( - "\u{915}\u{308}\u{a03}", - &["\u{915}\u{308}\u{a03}"], - &["\u{915}\u{308}", "\u{a03}"], - ), - ( - "\u{915}\u{903}", - &["\u{915}\u{903}"], - &["\u{915}", "\u{903}"], - ), - ( - "\u{915}\u{308}\u{903}", - &["\u{915}\u{308}\u{903}"], - &["\u{915}\u{308}", "\u{903}"], - ), - ( - "\u{231a}\u{a03}", - &["\u{231a}\u{a03}"], - &["\u{231a}", "\u{a03}"], - ), - ( - "\u{231a}\u{308}\u{a03}", - &["\u{231a}\u{308}\u{a03}"], - &["\u{231a}\u{308}", "\u{a03}"], - ), - ( - "\u{231a}\u{903}", - &["\u{231a}\u{903}"], - &["\u{231a}", "\u{903}"], - ), - ( - "\u{231a}\u{308}\u{903}", - &["\u{231a}\u{308}\u{903}"], - &["\u{231a}\u{308}", "\u{903}"], - ), - ( - "\u{300}\u{a03}", - &["\u{300}\u{a03}"], - &["\u{300}", "\u{a03}"], - ), - ( - "\u{300}\u{308}\u{a03}", - &["\u{300}\u{308}\u{a03}"], - &["\u{300}\u{308}", "\u{a03}"], - ), - ( - "\u{300}\u{903}", - &["\u{300}\u{903}"], - &["\u{300}", "\u{903}"], - ), - ( - "\u{300}\u{308}\u{903}", - &["\u{300}\u{308}\u{903}"], - &["\u{300}\u{308}", "\u{903}"], - ), - ( - "\u{93c}\u{a03}", - &["\u{93c}\u{a03}"], - &["\u{93c}", "\u{a03}"], - ), - ( - "\u{93c}\u{308}\u{a03}", - &["\u{93c}\u{308}\u{a03}"], - &["\u{93c}\u{308}", "\u{a03}"], - ), - ( - "\u{93c}\u{903}", - &["\u{93c}\u{903}"], - &["\u{93c}", "\u{903}"], - ), - ( - "\u{93c}\u{308}\u{903}", - &["\u{93c}\u{308}\u{903}"], - &["\u{93c}\u{308}", "\u{903}"], - ), - ( - "\u{94d}\u{a03}", - &["\u{94d}\u{a03}"], - &["\u{94d}", "\u{a03}"], - ), - ( - "\u{94d}\u{308}\u{a03}", - &["\u{94d}\u{308}\u{a03}"], - &["\u{94d}\u{308}", "\u{a03}"], - ), - ( - "\u{94d}\u{903}", - &["\u{94d}\u{903}"], - &["\u{94d}", "\u{903}"], - ), - ( - "\u{94d}\u{308}\u{903}", - &["\u{94d}\u{308}\u{903}"], - &["\u{94d}\u{308}", "\u{903}"], - ), - ( - "\u{200d}\u{a03}", - &["\u{200d}\u{a03}"], - &["\u{200d}", "\u{a03}"], - ), - ( - "\u{200d}\u{308}\u{a03}", - &["\u{200d}\u{308}\u{a03}"], - &["\u{200d}\u{308}", "\u{a03}"], - ), - ( - "\u{200d}\u{903}", - &["\u{200d}\u{903}"], - &["\u{200d}", "\u{903}"], - ), - ( - "\u{200d}\u{308}\u{903}", - &["\u{200d}\u{308}\u{903}"], - &["\u{200d}\u{308}", "\u{903}"], - ), - ( - "\u{378}\u{a03}", - &["\u{378}\u{a03}"], - &["\u{378}", "\u{a03}"], - ), - ( - "\u{378}\u{308}\u{a03}", - &["\u{378}\u{308}\u{a03}"], - &["\u{378}\u{308}", "\u{a03}"], - ), - ( - "\u{378}\u{903}", - &["\u{378}\u{903}"], - &["\u{378}", "\u{903}"], - ), - ( - "\u{378}\u{308}\u{903}", - &["\u{378}\u{308}\u{903}"], - &["\u{378}\u{308}", "\u{903}"], - ), - ( - "\u{61}\u{903}\u{62}", - &["\u{61}\u{903}", "\u{62}"], - &["\u{61}", "\u{903}", "\u{62}"], - ), - ( - "\u{61}\u{600}\u{62}", - &["\u{61}", "\u{600}\u{62}"], - &["\u{61}", "\u{600}", "\u{62}"], - ), -]; + pub const TEST_DIFF: &[(&str, &[&str], &[&str])] = &[ + ("\u{20}\u{a03}", &["\u{20}\u{a03}"], &["\u{20}", "\u{a03}"]), ("\u{20}\u{308}\u{a03}", + &["\u{20}\u{308}\u{a03}"], &["\u{20}\u{308}", "\u{a03}"]), ("\u{20}\u{903}", + &["\u{20}\u{903}"], &["\u{20}", "\u{903}"]), ("\u{20}\u{308}\u{903}", + &["\u{20}\u{308}\u{903}"], &["\u{20}\u{308}", "\u{903}"]), ("\u{d}\u{308}\u{a03}", + &["\u{d}", "\u{308}\u{a03}"], &["\u{d}", "\u{308}", "\u{a03}"]), ("\u{d}\u{308}\u{903}", + &["\u{d}", "\u{308}\u{903}"], &["\u{d}", "\u{308}", "\u{903}"]), ("\u{a}\u{308}\u{a03}", + &["\u{a}", "\u{308}\u{a03}"], &["\u{a}", "\u{308}", "\u{a03}"]), ("\u{a}\u{308}\u{903}", + &["\u{a}", "\u{308}\u{903}"], &["\u{a}", "\u{308}", "\u{903}"]), ("\u{1}\u{308}\u{a03}", + &["\u{1}", "\u{308}\u{a03}"], &["\u{1}", "\u{308}", "\u{a03}"]), ("\u{1}\u{308}\u{903}", + &["\u{1}", "\u{308}\u{903}"], &["\u{1}", "\u{308}", "\u{903}"]), ("\u{34f}\u{a03}", + &["\u{34f}\u{a03}"], &["\u{34f}", "\u{a03}"]), ("\u{34f}\u{308}\u{a03}", + &["\u{34f}\u{308}\u{a03}"], &["\u{34f}\u{308}", "\u{a03}"]), ("\u{34f}\u{903}", + &["\u{34f}\u{903}"], &["\u{34f}", "\u{903}"]), ("\u{34f}\u{308}\u{903}", + &["\u{34f}\u{308}\u{903}"], &["\u{34f}\u{308}", "\u{903}"]), ("\u{1f1e6}\u{a03}", + &["\u{1f1e6}\u{a03}"], &["\u{1f1e6}", "\u{a03}"]), ("\u{1f1e6}\u{308}\u{a03}", + &["\u{1f1e6}\u{308}\u{a03}"], &["\u{1f1e6}\u{308}", "\u{a03}"]), ("\u{1f1e6}\u{903}", + &["\u{1f1e6}\u{903}"], &["\u{1f1e6}", "\u{903}"]), ("\u{1f1e6}\u{308}\u{903}", + &["\u{1f1e6}\u{308}\u{903}"], &["\u{1f1e6}\u{308}", "\u{903}"]), ("\u{600}\u{20}", + &["\u{600}\u{20}"], &["\u{600}", "\u{20}"]), ("\u{600}\u{1f1e6}", &["\u{600}\u{1f1e6}"], + &["\u{600}", "\u{1f1e6}"]), ("\u{600}\u{600}", &["\u{600}\u{600}"], &["\u{600}", + "\u{600}"]), ("\u{600}\u{a03}", &["\u{600}\u{a03}"], &["\u{600}", "\u{a03}"]), + ("\u{600}\u{308}\u{a03}", &["\u{600}\u{308}\u{a03}"], &["\u{600}\u{308}", "\u{a03}"]), + ("\u{600}\u{1100}", &["\u{600}\u{1100}"], &["\u{600}", "\u{1100}"]), ("\u{600}\u{1160}", + &["\u{600}\u{1160}"], &["\u{600}", "\u{1160}"]), ("\u{600}\u{11a8}", &["\u{600}\u{11a8}"], + &["\u{600}", "\u{11a8}"]), ("\u{600}\u{ac00}", &["\u{600}\u{ac00}"], &["\u{600}", + "\u{ac00}"]), ("\u{600}\u{ac01}", &["\u{600}\u{ac01}"], &["\u{600}", "\u{ac01}"]), + ("\u{600}\u{903}", &["\u{600}\u{903}"], &["\u{600}", "\u{903}"]), ("\u{600}\u{308}\u{903}", + &["\u{600}\u{308}\u{903}"], &["\u{600}\u{308}", "\u{903}"]), ("\u{600}\u{904}", + &["\u{600}\u{904}"], &["\u{600}", "\u{904}"]), ("\u{600}\u{d4e}", &["\u{600}\u{d4e}"], + &["\u{600}", "\u{d4e}"]), ("\u{600}\u{915}", &["\u{600}\u{915}"], &["\u{600}", "\u{915}"]), + ("\u{600}\u{231a}", &["\u{600}\u{231a}"], &["\u{600}", "\u{231a}"]), ("\u{600}\u{378}", + &["\u{600}\u{378}"], &["\u{600}", "\u{378}"]), ("\u{a03}\u{a03}", &["\u{a03}\u{a03}"], + &["\u{a03}", "\u{a03}"]), ("\u{a03}\u{308}\u{a03}", &["\u{a03}\u{308}\u{a03}"], + &["\u{a03}\u{308}", "\u{a03}"]), ("\u{a03}\u{903}", &["\u{a03}\u{903}"], &["\u{a03}", + "\u{903}"]), ("\u{a03}\u{308}\u{903}", &["\u{a03}\u{308}\u{903}"], &["\u{a03}\u{308}", + "\u{903}"]), ("\u{1100}\u{a03}", &["\u{1100}\u{a03}"], &["\u{1100}", "\u{a03}"]), + ("\u{1100}\u{308}\u{a03}", &["\u{1100}\u{308}\u{a03}"], &["\u{1100}\u{308}", "\u{a03}"]), + ("\u{1100}\u{903}", &["\u{1100}\u{903}"], &["\u{1100}", "\u{903}"]), + ("\u{1100}\u{308}\u{903}", &["\u{1100}\u{308}\u{903}"], &["\u{1100}\u{308}", "\u{903}"]), + ("\u{1160}\u{a03}", &["\u{1160}\u{a03}"], &["\u{1160}", "\u{a03}"]), + ("\u{1160}\u{308}\u{a03}", &["\u{1160}\u{308}\u{a03}"], &["\u{1160}\u{308}", "\u{a03}"]), + ("\u{1160}\u{903}", &["\u{1160}\u{903}"], &["\u{1160}", "\u{903}"]), + ("\u{1160}\u{308}\u{903}", &["\u{1160}\u{308}\u{903}"], &["\u{1160}\u{308}", "\u{903}"]), + ("\u{11a8}\u{a03}", &["\u{11a8}\u{a03}"], &["\u{11a8}", "\u{a03}"]), + ("\u{11a8}\u{308}\u{a03}", &["\u{11a8}\u{308}\u{a03}"], &["\u{11a8}\u{308}", "\u{a03}"]), + ("\u{11a8}\u{903}", &["\u{11a8}\u{903}"], &["\u{11a8}", "\u{903}"]), + ("\u{11a8}\u{308}\u{903}", &["\u{11a8}\u{308}\u{903}"], &["\u{11a8}\u{308}", "\u{903}"]), + ("\u{ac00}\u{a03}", &["\u{ac00}\u{a03}"], &["\u{ac00}", "\u{a03}"]), + ("\u{ac00}\u{308}\u{a03}", &["\u{ac00}\u{308}\u{a03}"], &["\u{ac00}\u{308}", "\u{a03}"]), + ("\u{ac00}\u{903}", &["\u{ac00}\u{903}"], &["\u{ac00}", "\u{903}"]), + ("\u{ac00}\u{308}\u{903}", &["\u{ac00}\u{308}\u{903}"], &["\u{ac00}\u{308}", "\u{903}"]), + ("\u{ac01}\u{a03}", &["\u{ac01}\u{a03}"], &["\u{ac01}", "\u{a03}"]), + ("\u{ac01}\u{308}\u{a03}", &["\u{ac01}\u{308}\u{a03}"], &["\u{ac01}\u{308}", "\u{a03}"]), + ("\u{ac01}\u{903}", &["\u{ac01}\u{903}"], &["\u{ac01}", "\u{903}"]), + ("\u{ac01}\u{308}\u{903}", &["\u{ac01}\u{308}\u{903}"], &["\u{ac01}\u{308}", "\u{903}"]), + ("\u{900}\u{a03}", &["\u{900}\u{a03}"], &["\u{900}", "\u{a03}"]), ("\u{900}\u{308}\u{a03}", + &["\u{900}\u{308}\u{a03}"], &["\u{900}\u{308}", "\u{a03}"]), ("\u{900}\u{903}", + &["\u{900}\u{903}"], &["\u{900}", "\u{903}"]), ("\u{900}\u{308}\u{903}", + &["\u{900}\u{308}\u{903}"], &["\u{900}\u{308}", "\u{903}"]), ("\u{903}\u{a03}", + &["\u{903}\u{a03}"], &["\u{903}", "\u{a03}"]), ("\u{903}\u{308}\u{a03}", + &["\u{903}\u{308}\u{a03}"], &["\u{903}\u{308}", "\u{a03}"]), ("\u{903}\u{903}", + &["\u{903}\u{903}"], &["\u{903}", "\u{903}"]), ("\u{903}\u{308}\u{903}", + &["\u{903}\u{308}\u{903}"], &["\u{903}\u{308}", "\u{903}"]), ("\u{904}\u{a03}", + &["\u{904}\u{a03}"], &["\u{904}", "\u{a03}"]), ("\u{904}\u{308}\u{a03}", + &["\u{904}\u{308}\u{a03}"], &["\u{904}\u{308}", "\u{a03}"]), ("\u{904}\u{903}", + &["\u{904}\u{903}"], &["\u{904}", "\u{903}"]), ("\u{904}\u{308}\u{903}", + &["\u{904}\u{308}\u{903}"], &["\u{904}\u{308}", "\u{903}"]), ("\u{d4e}\u{20}", + &["\u{d4e}\u{20}"], &["\u{d4e}", "\u{20}"]), ("\u{d4e}\u{1f1e6}", &["\u{d4e}\u{1f1e6}"], + &["\u{d4e}", "\u{1f1e6}"]), ("\u{d4e}\u{600}", &["\u{d4e}\u{600}"], &["\u{d4e}", + "\u{600}"]), ("\u{d4e}\u{a03}", &["\u{d4e}\u{a03}"], &["\u{d4e}", "\u{a03}"]), + ("\u{d4e}\u{308}\u{a03}", &["\u{d4e}\u{308}\u{a03}"], &["\u{d4e}\u{308}", "\u{a03}"]), + ("\u{d4e}\u{1100}", &["\u{d4e}\u{1100}"], &["\u{d4e}", "\u{1100}"]), ("\u{d4e}\u{1160}", + &["\u{d4e}\u{1160}"], &["\u{d4e}", "\u{1160}"]), ("\u{d4e}\u{11a8}", &["\u{d4e}\u{11a8}"], + &["\u{d4e}", "\u{11a8}"]), ("\u{d4e}\u{ac00}", &["\u{d4e}\u{ac00}"], &["\u{d4e}", + "\u{ac00}"]), ("\u{d4e}\u{ac01}", &["\u{d4e}\u{ac01}"], &["\u{d4e}", "\u{ac01}"]), + ("\u{d4e}\u{903}", &["\u{d4e}\u{903}"], &["\u{d4e}", "\u{903}"]), ("\u{d4e}\u{308}\u{903}", + &["\u{d4e}\u{308}\u{903}"], &["\u{d4e}\u{308}", "\u{903}"]), ("\u{d4e}\u{904}", + &["\u{d4e}\u{904}"], &["\u{d4e}", "\u{904}"]), ("\u{d4e}\u{d4e}", &["\u{d4e}\u{d4e}"], + &["\u{d4e}", "\u{d4e}"]), ("\u{d4e}\u{915}", &["\u{d4e}\u{915}"], &["\u{d4e}", "\u{915}"]), + ("\u{d4e}\u{231a}", &["\u{d4e}\u{231a}"], &["\u{d4e}", "\u{231a}"]), ("\u{d4e}\u{378}", + &["\u{d4e}\u{378}"], &["\u{d4e}", "\u{378}"]), ("\u{915}\u{a03}", &["\u{915}\u{a03}"], + &["\u{915}", "\u{a03}"]), ("\u{915}\u{308}\u{a03}", &["\u{915}\u{308}\u{a03}"], + &["\u{915}\u{308}", "\u{a03}"]), ("\u{915}\u{903}", &["\u{915}\u{903}"], &["\u{915}", + "\u{903}"]), ("\u{915}\u{308}\u{903}", &["\u{915}\u{308}\u{903}"], &["\u{915}\u{308}", + "\u{903}"]), ("\u{231a}\u{a03}", &["\u{231a}\u{a03}"], &["\u{231a}", "\u{a03}"]), + ("\u{231a}\u{308}\u{a03}", &["\u{231a}\u{308}\u{a03}"], &["\u{231a}\u{308}", "\u{a03}"]), + ("\u{231a}\u{903}", &["\u{231a}\u{903}"], &["\u{231a}", "\u{903}"]), + ("\u{231a}\u{308}\u{903}", &["\u{231a}\u{308}\u{903}"], &["\u{231a}\u{308}", "\u{903}"]), + ("\u{300}\u{a03}", &["\u{300}\u{a03}"], &["\u{300}", "\u{a03}"]), ("\u{300}\u{308}\u{a03}", + &["\u{300}\u{308}\u{a03}"], &["\u{300}\u{308}", "\u{a03}"]), ("\u{300}\u{903}", + &["\u{300}\u{903}"], &["\u{300}", "\u{903}"]), ("\u{300}\u{308}\u{903}", + &["\u{300}\u{308}\u{903}"], &["\u{300}\u{308}", "\u{903}"]), ("\u{93c}\u{a03}", + &["\u{93c}\u{a03}"], &["\u{93c}", "\u{a03}"]), ("\u{93c}\u{308}\u{a03}", + &["\u{93c}\u{308}\u{a03}"], &["\u{93c}\u{308}", "\u{a03}"]), ("\u{93c}\u{903}", + &["\u{93c}\u{903}"], &["\u{93c}", "\u{903}"]), ("\u{93c}\u{308}\u{903}", + &["\u{93c}\u{308}\u{903}"], &["\u{93c}\u{308}", "\u{903}"]), ("\u{94d}\u{a03}", + &["\u{94d}\u{a03}"], &["\u{94d}", "\u{a03}"]), ("\u{94d}\u{308}\u{a03}", + &["\u{94d}\u{308}\u{a03}"], &["\u{94d}\u{308}", "\u{a03}"]), ("\u{94d}\u{903}", + &["\u{94d}\u{903}"], &["\u{94d}", "\u{903}"]), ("\u{94d}\u{308}\u{903}", + &["\u{94d}\u{308}\u{903}"], &["\u{94d}\u{308}", "\u{903}"]), ("\u{200d}\u{a03}", + &["\u{200d}\u{a03}"], &["\u{200d}", "\u{a03}"]), ("\u{200d}\u{308}\u{a03}", + &["\u{200d}\u{308}\u{a03}"], &["\u{200d}\u{308}", "\u{a03}"]), ("\u{200d}\u{903}", + &["\u{200d}\u{903}"], &["\u{200d}", "\u{903}"]), ("\u{200d}\u{308}\u{903}", + &["\u{200d}\u{308}\u{903}"], &["\u{200d}\u{308}", "\u{903}"]), ("\u{378}\u{a03}", + &["\u{378}\u{a03}"], &["\u{378}", "\u{a03}"]), ("\u{378}\u{308}\u{a03}", + &["\u{378}\u{308}\u{a03}"], &["\u{378}\u{308}", "\u{a03}"]), ("\u{378}\u{903}", + &["\u{378}\u{903}"], &["\u{378}", "\u{903}"]), ("\u{378}\u{308}\u{903}", + &["\u{378}\u{308}\u{903}"], &["\u{378}\u{308}", "\u{903}"]), ("\u{61}\u{903}\u{62}", + &["\u{61}\u{903}", "\u{62}"], &["\u{61}", "\u{903}", "\u{62}"]), ("\u{61}\u{600}\u{62}", + &["\u{61}", "\u{600}\u{62}"], &["\u{61}", "\u{600}", "\u{62}"]), ("\u{915}\u{94d}\u{924}", + &["\u{915}\u{94d}\u{924}"], &["\u{915}\u{94d}", "\u{924}"]), + ("\u{915}\u{94d}\u{94d}\u{924}", &["\u{915}\u{94d}\u{94d}\u{924}"], + &["\u{915}\u{94d}\u{94d}", "\u{924}"]), ("\u{915}\u{94d}\u{200d}\u{924}", + &["\u{915}\u{94d}\u{200d}\u{924}"], &["\u{915}\u{94d}\u{200d}", "\u{924}"]), + ("\u{915}\u{93c}\u{200d}\u{94d}\u{924}", &["\u{915}\u{93c}\u{200d}\u{94d}\u{924}"], + &["\u{915}\u{93c}\u{200d}\u{94d}", "\u{924}"]), ("\u{915}\u{93c}\u{94d}\u{200d}\u{924}", + &["\u{915}\u{93c}\u{94d}\u{200d}\u{924}"], &["\u{915}\u{93c}\u{94d}\u{200d}", "\u{924}"]), + ("\u{915}\u{94d}\u{924}\u{94d}\u{92f}", &["\u{915}\u{94d}\u{924}\u{94d}\u{92f}"], + &["\u{915}\u{94d}", "\u{924}\u{94d}", "\u{92f}"]), ("\u{915}\u{94d}\u{94d}\u{924}", + &["\u{915}\u{94d}\u{94d}\u{924}"], &["\u{915}\u{94d}\u{94d}", "\u{924}"]) + ]; -// official Unicode test data -// http://www.unicode.org/Public/15.1.0/ucd/auxiliary/WordBreakTest.txt -pub const TEST_WORD: &'static [(&'static str, &'static [&'static str])] = &[ + // official Unicode test data + // http://www.unicode.org/Public/15.1.0/ucd/auxiliary/WordBreakTest.txt + pub const TEST_WORD: &[(&str, &[&str])] = &[ ("\u{1}\u{1}", &["\u{1}", "\u{1}"]), ("\u{1}\u{308}\u{1}", &["\u{1}\u{308}", "\u{1}"]), ("\u{1}\u{d}", &["\u{1}", "\u{d}"]), ("\u{1}\u{308}\u{d}", &["\u{1}\u{308}", "\u{d}"]), ("\u{1}\u{a}", &["\u{1}", "\u{a}"]), ("\u{1}\u{308}\u{a}", &["\u{1}\u{308}", "\u{a}"]), @@ -3153,9 +2194,9 @@ pub const TEST_WORD: &'static [(&'static str, &'static [&'static str])] = &[ "\u{2c}", "\u{2c}", "\u{61}"]) ]; -// official Unicode test data -// http://www.unicode.org/Public/15.1.0/ucd/auxiliary/SentenceBreakTest.txt -pub const TEST_SENTENCE: &'static [(&'static str, &'static [&'static str])] = &[ + // official Unicode test data + // http://www.unicode.org/Public/15.1.0/ucd/auxiliary/SentenceBreakTest.txt + pub const TEST_SENTENCE: &[(&str, &[&str])] = &[ ("\u{1}\u{1}", &["\u{1}\u{1}"]), ("\u{1}\u{308}\u{1}", &["\u{1}\u{308}\u{1}"]), ("\u{1}\u{d}", &["\u{1}\u{d}"]), ("\u{1}\u{308}\u{d}", &["\u{1}\u{308}\u{d}"]), ("\u{1}\u{a}", &["\u{1}\u{a}"]), ("\u{1}\u{308}\u{a}", &["\u{1}\u{308}\u{a}"]), @@ -3498,3 +2539,4 @@ pub const TEST_SENTENCE: &'static [(&'static str, &'static [&'static str])] = &[ ("\u{2060}\u{41}\u{2060}\u{2e}\u{2060}\u{d}\u{2060}\u{a}\u{41}\u{2060}\u{2060}", &["\u{2060}\u{41}\u{2060}\u{2e}\u{2060}\u{d}", "\u{2060}\u{a}", "\u{41}\u{2060}\u{2060}"]) ]; +