rust-lang/rust · #164474

core: implement `char::is_xid_{start|continue}`

sleepycatcoding · merged Oct 24, 20267 files · 807 + / 1 −
library/core/src/char/methods.rs74 + / 0 −
@@ -1093,6 +1093,80 @@ impl char {         }     } +    /// Returns `true` if this `char` has the `XID_Continue` property.+    ///+    /// `XID_Continue` is [specified] in the Unicode Character Database [`DerivedCoreProperties.txt`].+    ///+    /// [specified]: https://www.unicode.org/reports/tr31+    /// [`DerivedCoreProperties.txt`]: https://www.unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt+    ///+    /// New versions of Unicode may add new characters to this set, in accordance with its [stability policy].+    /// This is *not* considered a [breaking change].+    ///+    /// [stability policy]: https://www.unicode.org/policies/stability_policy.html#Identifier+    /// [breaking change]: char::UNICODE_VERSION+    ///+    /// # Examples+    ///+    /// Basic usage:+    ///+    /// ```+    /// #![feature(char_is_xid)]+    ///+    /// assert!('A'.is_xid_continue());+    /// assert!('9'.is_xid_continue());+    /// assert!('_'.is_xid_continue());+    ///+    /// assert!(!' '.is_xid_continue());+    /// ```+    #[must_use]+    #[unstable(feature = "char_is_xid", issue = "none", reason = "to be created")]+    #[inline]+    pub fn is_xid_continue(self) -> bool {+        match self {+            'a'..='z' | 'A'..='Z' | '0'..='9' | '_' => true,+            '\0'..='\u{A9}' => false,+            _ => unicode::XID_Continue(self),+        }+    }++    /// Returns `true` if this `char` has the `XID_Start` property.+    ///+    /// `XID_Start` is [specified] in the Unicode Character Database [`DerivedCoreProperties.txt`].+    ///+    /// [specified]: https://www.unicode.org/reports/tr31+    /// [`DerivedCoreProperties.txt`]: https://www.unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt+    ///+    /// New versions of Unicode may add new characters to this set, in accordance with its [stability policy].+    /// This is *not* considered a [breaking change].+    ///+    /// [stability policy]: https://www.unicode.org/policies/stability_policy.html#Identifier+    /// [breaking change]: char::UNICODE_VERSION+    ///+    /// # Examples+    ///+    /// Basic usage:+    ///+    /// ```+    /// #![feature(char_is_xid)]+    ///+    /// assert!('A'.is_xid_start());+    ///+    /// assert!(!' '.is_xid_start());+    /// assert!(!'9'.is_xid_start());+    /// assert!(!'_'.is_xid_start());+    /// ```+    #[must_use]+    #[unstable(feature = "char_is_xid", issue = "none", reason = "to be created")]+    #[inline]+    pub fn is_xid_start(self) -> bool {+        match self {+            'a'..='z' | 'A'..='Z' => true,+            '\0'..='\u{A9}' => false,+            _ => unicode::XID_Start(self),+        }+    }+     /// Returns `true` if this `char` has the general category for control codes.     ///     /// Control codes (code points with the general category of `Cc`) are [described] in Chapter 23
library/core/src/unicode/mod.rs2 + / 0 −
@@ -18,6 +18,8 @@ pub(crate) use unicode_data::lt::lookup as Lt; pub(crate) use unicode_data::n::lookup as N; pub(crate) use unicode_data::uppercase::lookup as Uppercase; pub(crate) use unicode_data::white_space::lookup as White_Space;+pub(crate) use unicode_data::xid_continue::lookup as XID_Continue;+pub(crate) use unicode_data::xid_start::lookup as XID_Start;  #[allow(unreachable_pub)] pub mod unicode_data;
library/core/src/unicode/unicode_data.rs229 + / 1 −
@@ -10,11 +10,13 @@ // N                           :   471 bytes,   2237 codepoints in 147 ranges (U+0000B2 - U+01FBFA) using skiplist // Uppercase                   :   847 bytes,   2000 codepoints in 677 ranges (U+0000C0 - U+01F18A) using bitset // White_Space                 :   256 bytes,     19 codepoints in   8 ranges (U+000085 - U+003001) using cascading+// XID_Continue                :  1859 bytes, 162018 codepoints in 817 ranges (U+0000AA - U+0E01F0) using skiplist+// XID_Start                   :  1605 bytes, 158664 codepoints in 700 ranges (U+0000AA - U+03FC40) using skiplist // to_lower                    :  1166 bytes,   1482 codepoints in 194 ranges (U+0000C0 - U+01E921) using 2-level LUT // to_upper                    :  2068 bytes,   1575 codepoints in 308 ranges (U+0000B5 - U+01E943) using 2-level LUT // to_title                    :   356 bytes,    136 codepoints in  49 ranges (U+0000DF - U+01DF95) using 2-level LUT // to_casefold                 :    32 bytes,    174 codepoints in   5 ranges (U+000131 - U+00ABBF) using 2-level LUT-// Total                       : 11826 bytes+// Total                       : 15290 bytes  #[inline(always)] const fn bitset_search<@@ -943,6 +945,232 @@ pub mod white_space {     } } +#[rustfmt::skip]+pub mod xid_continue {+    use super::ShortOffsetRunHeader;++    static SHORT_OFFSET_RUNS: [ShortOffsetRunHeader; 56] = [+        ShortOffsetRunHeader::new(0, 706), ShortOffsetRunHeader::new(14, 4681),+        ShortOffsetRunHeader::new(420, 5741), ShortOffsetRunHeader::new(462, 7958),+        ShortOffsetRunHeader::new(558, 11264), ShortOffsetRunHeader::new(639, 12293),+        ShortOffsetRunHeader::new(673, 13312), ShortOffsetRunHeader::new(697, 19904),+        ShortOffsetRunHeader::new(698, 42125), ShortOffsetRunHeader::new(700, 42509),+        ShortOffsetRunHeader::new(704, 55204), ShortOffsetRunHeader::new(786, 63744),+        ShortOffsetRunHeader::new(791, 64110), ShortOffsetRunHeader::new(792, 67383),+        ShortOffsetRunHeader::new(932, 74650), ShortOffsetRunHeader::new(1286, 75399),+        ShortOffsetRunHeader::new(1292, 77712), ShortOffsetRunHeader::new(1293, 78896),+        ShortOffsetRunHeader::new(1296, 82939), ShortOffsetRunHeader::new(1300, 83527),+        ShortOffsetRunHeader::new(1302, 90368), ShortOffsetRunHeader::new(1303, 92160),+        ShortOffsetRunHeader::new(1305, 92729), ShortOffsetRunHeader::new(1306, 93504),+        ShortOffsetRunHeader::new(1329, 101595), ShortOffsetRunHeader::new(1352, 102802),+        ShortOffsetRunHeader::new(1358, 110576), ShortOffsetRunHeader::new(1361, 110889),+        ShortOffsetRunHeader::new(1368, 111356), ShortOffsetRunHeader::new(1378, 113664),+        ShortOffsetRunHeader::new(1379, 118000), ShortOffsetRunHeader::new(1389, 118528),+        ShortOffsetRunHeader::new(1391, 119079), ShortOffsetRunHeader::new(1395, 119808),+        ShortOffsetRunHeader::new(1417, 120487), ShortOffsetRunHeader::new(1454, 121344),+        ShortOffsetRunHeader::new(1479, 122624), ShortOffsetRunHeader::new(1491, 123536),+        ShortOffsetRunHeader::new(1517, 124112), ShortOffsetRunHeader::new(1521, 126464),+        ShortOffsetRunHeader::new(1547, 130032), ShortOffsetRunHeader::new(1613, 131072),+        ShortOffsetRunHeader::new(1615, 173792), ShortOffsetRunHeader::new(1616, 178207),+        ShortOffsetRunHeader::new(1618, 183982), ShortOffsetRunHeader::new(1620, 191457),+        ShortOffsetRunHeader::new(1622, 192094), ShortOffsetRunHeader::new(1624, 194560),+        ShortOffsetRunHeader::new(1625, 195102), ShortOffsetRunHeader::new(1626, 196608),+        ShortOffsetRunHeader::new(1627, 201547), ShortOffsetRunHeader::new(1628, 210042),+        ShortOffsetRunHeader::new(1630, 249856), ShortOffsetRunHeader::new(1631, 261184),+        ShortOffsetRunHeader::new(1632, 917760), ShortOffsetRunHeader::new(1633, 2032112),+    ];+    static OFFSETS: [u8; 1635] = [+        170, 1, 10, 1, 1, 1, 2, 1, 5, 23, 1, 31, 1, 0, 4, 12, 14, 5, 7, 1, 1, 1, 17, 117, 1, 2, 3,+        3, 1, 1, 6, 5, 1, 1, 1, 20, 1, 83, 1, 139, 1, 5, 2, 166, 1, 38, 1, 2, 6, 41, 2, 2, 4, 45, 1,+        1, 1, 2, 1, 2, 1, 3, 6, 27, 4, 4, 29, 11, 5, 74, 4, 102, 1, 8, 2, 10, 1, 19, 2, 1, 16, 59,+        2, 101, 14, 54, 4, 1, 2, 1, 2, 46, 18, 28, 4, 11, 5, 24, 1, 7, 7, 75, 1, 129, 2, 10, 1, 19,+        1, 8, 2, 2, 2, 22, 1, 7, 1, 1, 3, 4, 2, 9, 2, 2, 2, 4, 8, 1, 4, 2, 1, 5, 2, 12, 10, 1, 1, 1,+        2, 3, 1, 6, 4, 2, 2, 22, 1, 7, 1, 2, 1, 2, 1, 2, 2, 1, 1, 5, 4, 2, 2, 3, 3, 1, 7, 4, 1, 1,+        7, 16, 11, 3, 1, 9, 1, 3, 1, 22, 1, 7, 1, 2, 1, 5, 2, 10, 1, 3, 1, 3, 2, 1, 15, 4, 2, 10, 9,+        7, 1, 3, 1, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1, 5, 2, 9, 2, 2, 2, 3, 5, 5, 4, 2, 1, 5, 2, 10, 1,+        1, 16, 2, 1, 6, 3, 3, 1, 4, 3, 2, 1, 1, 1, 2, 3, 2, 3, 3, 3, 12, 4, 5, 3, 3, 1, 4, 2, 1, 6,+        1, 14, 10, 16, 13, 1, 3, 1, 23, 1, 16, 2, 9, 1, 3, 1, 4, 7, 2, 1, 3, 1, 2, 2, 4, 2, 10, 16,+        4, 1, 8, 1, 3, 1, 23, 1, 10, 1, 5, 2, 9, 1, 3, 1, 4, 7, 2, 5, 3, 1, 4, 2, 10, 1, 3, 12, 13,+        1, 3, 1, 51, 1, 3, 1, 5, 5, 4, 7, 5, 2, 10, 10, 6, 1, 3, 1, 18, 3, 24, 1, 9, 1, 1, 2, 7, 3,+        1, 4, 6, 1, 1, 1, 8, 6, 10, 2, 2, 13, 58, 5, 15, 1, 10, 39, 2, 1, 1, 1, 5, 1, 24, 1, 1, 1,+        23, 2, 5, 1, 1, 1, 7, 1, 10, 2, 4, 32, 1, 23, 2, 6, 10, 11, 1, 1, 1, 1, 1, 4, 10, 1, 36, 4,+        20, 1, 18, 1, 36, 9, 1, 57, 74, 6, 78, 2, 38, 1, 1, 5, 1, 2, 43, 1, 0, 1, 4, 2, 7, 1, 1, 1,+        4, 2, 41, 1, 4, 2, 33, 1, 4, 2, 7, 1, 1, 1, 4, 2, 15, 1, 57, 1, 4, 2, 67, 2, 3, 9, 9, 14,+        16, 16, 86, 2, 6, 3, 0, 2, 17, 1, 26, 5, 75, 3, 11, 7, 22, 9, 22, 11, 20, 12, 13, 1, 3, 1,+        2, 12, 84, 3, 1, 4, 2, 2, 10, 33, 3, 1, 11, 6, 89, 7, 43, 5, 70, 10, 31, 1, 12, 4, 12, 10,+        40, 2, 5, 11, 44, 4, 26, 6, 11, 37, 28, 4, 63, 1, 29, 2, 11, 6, 10, 13, 1, 8, 14, 1, 50, 15,+        77, 3, 10, 17, 9, 12, 116, 12, 56, 8, 10, 3, 49, 2, 11, 5, 43, 2, 3, 16, 3, 1, 39, 5, 0, 2,+        6, 2, 38, 2, 6, 2, 8, 1, 1, 1, 1, 1, 1, 1, 31, 2, 53, 1, 7, 1, 1, 3, 3, 1, 7, 3, 4, 2, 6, 4,+        13, 5, 3, 1, 7, 15, 2, 49, 2, 19, 1, 28, 1, 13, 1, 15, 17, 48, 13, 4, 1, 3, 12, 17, 1, 4, 1,+        2, 10, 1, 1, 2, 6, 6, 1, 1, 1, 1, 1, 1, 16, 2, 4, 5, 5, 4, 1, 17, 41, 0, 229, 6, 9, 12, 38,+        1, 1, 5, 1, 2, 56, 7, 1, 15, 24, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 32, 0,+        3, 25, 15, 1, 5, 2, 5, 4, 86, 2, 2, 2, 3, 1, 95, 5, 43, 1, 94, 17, 32, 48, 16, 0, 0, 64, 0,+        67, 46, 2, 0, 3, 28, 20, 48, 4, 10, 1, 115, 37, 9, 2, 103, 2, 83, 4, 1, 14, 55, 4, 1, 19,+        52, 12, 70, 10, 10, 6, 24, 3, 1, 1, 49, 2, 36, 12, 29, 3, 65, 14, 11, 6, 31, 1, 55, 9, 14,+        2, 10, 6, 23, 3, 73, 24, 3, 2, 16, 2, 5, 10, 6, 2, 6, 2, 6, 9, 7, 1, 7, 1, 43, 1, 14, 2, 2,+        2, 123, 1, 2, 2, 10, 6, 0, 12, 23, 4, 49, 0, 0, 2, 106, 38, 7, 12, 5, 5, 12, 1, 13, 1, 5, 1,+        1, 1, 2, 1, 2, 1, 108, 33, 139, 6, 218, 18, 64, 2, 54, 40, 10, 6, 16, 16, 16, 3, 2, 24, 3,+        33, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 126, 19, 10, 7, 26, 4, 1, 1, 26, 10, 90, 3, 6, 2, 6,+        2, 6, 2, 3, 35, 12, 1, 26, 1, 19, 1, 2, 1, 15, 2, 14, 34, 123, 69, 53, 136, 1, 130, 29, 3,+        49, 15, 1, 31, 32, 13, 30, 5, 43, 5, 30, 2, 36, 4, 8, 1, 5, 42, 158, 2, 10, 6, 36, 4, 36, 4,+        40, 8, 52, 12, 11, 1, 15, 1, 7, 1, 2, 1, 11, 1, 15, 1, 7, 1, 2, 3, 52, 12, 0, 9, 22, 10, 8,+        24, 6, 1, 42, 1, 14, 64, 6, 2, 1, 1, 44, 1, 2, 3, 1, 2, 23, 10, 23, 9, 31, 65, 19, 1, 2, 10,+        22, 10, 26, 6, 26, 38, 56, 6, 2, 64, 4, 1, 2, 5, 8, 1, 3, 1, 29, 2, 3, 4, 1, 32, 29, 3, 29,+        35, 8, 1, 30, 25, 54, 10, 22, 10, 19, 13, 18, 110, 73, 55, 51, 13, 51, 13, 40, 8, 10, 6, 38,+        3, 5, 1, 23, 250, 42, 1, 2, 3, 2, 16, 6, 3, 5, 9, 22, 1, 45, 10, 1, 8, 33, 31, 22, 42, 21,+        27, 23, 9, 71, 31, 16, 9, 60, 7, 1, 13, 25, 7, 10, 6, 53, 1, 10, 4, 4, 8, 36, 2, 1, 9, 69,+        4, 4, 1, 13, 1, 1, 35, 18, 1, 37, 6, 4, 62, 7, 1, 1, 1, 4, 1, 15, 1, 10, 7, 59, 5, 10, 6, 4,+        1, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1, 5, 1, 10, 2, 2, 2, 3, 2, 1, 6, 1, 5, 7, 2, 7, 3, 5, 11,+        10, 1, 1, 2, 1, 1, 38, 1, 10, 1, 1, 2, 1, 1, 4, 1, 8, 13, 2, 29, 75, 5, 10, 4, 4, 30, 70, 1,+        1, 8, 10, 166, 54, 2, 9, 23, 6, 34, 65, 3, 1, 11, 10, 38, 57, 7, 10, 6, 20, 28, 27, 2, 15,+        4, 10, 6, 7, 185, 59, 101, 74, 21, 8, 2, 1, 2, 8, 1, 2, 1, 30, 1, 2, 2, 9, 12, 10, 70, 8, 2,+        46, 2, 8, 1, 2, 27, 63, 8, 1, 8, 74, 3, 1, 18, 73, 17, 1, 85, 8, 88, 33, 15, 10, 6, 9, 1,+        45, 1, 9, 15, 10, 24, 30, 2, 22, 1, 14, 73, 7, 1, 2, 1, 44, 3, 1, 1, 2, 1, 9, 8, 10, 6, 6,+        1, 2, 1, 37, 1, 2, 1, 6, 7, 10, 6, 44, 4, 10, 6, 2, 238, 23, 9, 17, 1, 41, 3, 5, 13, 11, 85,+        1, 79, 0, 102, 112, 5, 207, 12, 0, 0, 97, 15, 0, 16, 22, 10, 0, 5, 0, 0, 58, 0, 0, 7, 31, 1,+        10, 6, 79, 1, 10, 6, 30, 2, 5, 11, 55, 9, 4, 12, 10, 9, 21, 5, 19, 0, 45, 3, 10, 198, 64,+        32, 25, 2, 25, 44, 75, 4, 57, 7, 17, 64, 2, 1, 2, 11, 7, 9, 0, 36, 34, 95, 115, 13, 0, 14,+        51, 0, 4, 1, 7, 1, 2, 1, 0, 9, 1, 29, 3, 2, 1, 14, 5, 7, 0, 0, 107, 5, 13, 3, 9, 7, 10, 3,+        2, 0, 10, 0, 46, 2, 23, 0, 2, 60, 5, 3, 6, 8, 8, 2, 7, 30, 4, 148, 3, 11, 3, 8, 2, 2, 1, 32,+        2, 0, 85, 1, 71, 1, 2, 2, 1, 2, 2, 2, 4, 1, 12, 1, 1, 1, 7, 1, 65, 1, 4, 2, 8, 1, 7, 1, 28,+        1, 4, 1, 5, 1, 1, 3, 7, 1, 0, 1, 25, 1, 25, 1, 31, 1, 25, 1, 31, 1, 25, 1, 31, 1, 25, 1, 31,+        1, 25, 1, 8, 2, 50, 0, 55, 4, 50, 8, 1, 14, 1, 22, 5, 1, 15, 0, 130, 14, 7, 54, 58, 1, 17,+        2, 7, 1, 2, 1, 5, 5, 62, 33, 1, 112, 45, 3, 14, 2, 10, 4, 1, 0, 31, 17, 58, 0, 42, 214, 43,+        197, 31, 1, 22, 8, 2, 224, 7, 1, 4, 1, 2, 1, 15, 1, 197, 11, 7, 41, 76, 4, 10, 0, 4, 1, 27,+        1, 2, 1, 1, 2, 1, 1, 10, 1, 4, 1, 1, 1, 1, 6, 1, 4, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 2, 1,+        1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 4, 1, 7, 1, 4, 1, 4, 1, 1, 1, 10, 1, 17, 5, 3, 1, 5,+        1, 17, 0, 10, 0, 0, 32, 0, 1, 0, 2, 0, 15, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 240, 0,+    ];+    #[inline]+    pub fn lookup(c: char) -> bool {+        debug_assert!(!c.is_ascii());+        (c as u32) >= 0xaa && lookup_slow(c)+    }++    #[inline(never)]+    fn lookup_slow(c: char) -> bool {+        const {+            assert!(SHORT_OFFSET_RUNS.last().unwrap().0 > char::MAX as u32);+            let mut i = 0;+            while i < SHORT_OFFSET_RUNS.len() {+                assert!(SHORT_OFFSET_RUNS[i].start_index() < OFFSETS.len());+                i += 1;+            }+        }+        // SAFETY: We just ensured the last element of `SHORT_OFFSET_RUNS` is greater than `std::char::MAX`+        // and the start indices of all elements in `SHORT_OFFSET_RUNS` are smaller than `OFFSETS.len()`.+        unsafe { super::skip_search(c, &SHORT_OFFSET_RUNS, &OFFSETS) }+    }+}++#[rustfmt::skip]+pub mod xid_start {+    use super::ShortOffsetRunHeader;++    static SHORT_OFFSET_RUNS: [ShortOffsetRunHeader; 51] = [+        ShortOffsetRunHeader::new(0, 706), ShortOffsetRunHeader::new(12, 4681),+        ShortOffsetRunHeader::new(344, 5741), ShortOffsetRunHeader::new(382, 7958),+        ShortOffsetRunHeader::new(464, 11264), ShortOffsetRunHeader::new(533, 12293),+        ShortOffsetRunHeader::new(567, 13312), ShortOffsetRunHeader::new(591, 19904),+        ShortOffsetRunHeader::new(592, 42125), ShortOffsetRunHeader::new(594, 42509),+        ShortOffsetRunHeader::new(598, 55204), ShortOffsetRunHeader::new(698, 63744),+        ShortOffsetRunHeader::new(703, 64110), ShortOffsetRunHeader::new(704, 66176),+        ShortOffsetRunHeader::new(783, 67383), ShortOffsetRunHeader::new(830, 74650),+        ShortOffsetRunHeader::new(1116, 75399), ShortOffsetRunHeader::new(1122, 77712),+        ShortOffsetRunHeader::new(1123, 78896), ShortOffsetRunHeader::new(1126, 82939),+        ShortOffsetRunHeader::new(1130, 83527), ShortOffsetRunHeader::new(1132, 90368),+        ShortOffsetRunHeader::new(1133, 92160), ShortOffsetRunHeader::new(1135, 92729),+        ShortOffsetRunHeader::new(1136, 93504), ShortOffsetRunHeader::new(1151, 101595),+        ShortOffsetRunHeader::new(1172, 102802), ShortOffsetRunHeader::new(1178, 110576),+        ShortOffsetRunHeader::new(1181, 110889), ShortOffsetRunHeader::new(1188, 111356),+        ShortOffsetRunHeader::new(1198, 113664), ShortOffsetRunHeader::new(1199, 119808),+        ShortOffsetRunHeader::new(1207, 120487), ShortOffsetRunHeader::new(1244, 122624),+        ShortOffsetRunHeader::new(1267, 123536), ShortOffsetRunHeader::new(1281, 124112),+        ShortOffsetRunHeader::new(1285, 126464), ShortOffsetRunHeader::new(1317, 131072),+        ShortOffsetRunHeader::new(1383, 173792), ShortOffsetRunHeader::new(1384, 178207),+        ShortOffsetRunHeader::new(1386, 183982), ShortOffsetRunHeader::new(1388, 191457),+        ShortOffsetRunHeader::new(1390, 192094), ShortOffsetRunHeader::new(1392, 194560),+        ShortOffsetRunHeader::new(1393, 195102), ShortOffsetRunHeader::new(1394, 196608),+        ShortOffsetRunHeader::new(1395, 201547), ShortOffsetRunHeader::new(1396, 210042),+        ShortOffsetRunHeader::new(1398, 249856), ShortOffsetRunHeader::new(1399, 261184),+        ShortOffsetRunHeader::new(1400, 1375296),+    ];+    static OFFSETS: [u8; 1401] = [+        170, 1, 10, 1, 4, 1, 5, 23, 1, 31, 1, 0, 4, 12, 14, 5, 7, 1, 1, 1, 129, 5, 1, 2, 3, 3, 1,+        1, 6, 1, 1, 3, 1, 1, 1, 20, 1, 83, 1, 139, 8, 166, 1, 38, 1, 2, 6, 41, 2, 2, 67, 27, 4, 4,+        45, 43, 35, 2, 1, 99, 1, 1, 15, 2, 7, 2, 10, 3, 2, 1, 16, 1, 1, 30, 29, 89, 11, 1, 24, 33,+        9, 2, 4, 1, 5, 22, 4, 1, 9, 1, 3, 1, 23, 25, 7, 11, 5, 24, 1, 7, 16, 42, 58, 54, 3, 1, 18,+        1, 7, 10, 15, 16, 4, 8, 2, 2, 2, 22, 1, 7, 1, 1, 3, 4, 3, 1, 16, 1, 13, 2, 1, 3, 14, 2, 10,+        1, 8, 6, 4, 2, 2, 22, 1, 7, 1, 2, 1, 2, 1, 2, 31, 4, 1, 1, 19, 3, 16, 9, 1, 3, 1, 22, 1, 7,+        1, 2, 1, 5, 3, 1, 18, 1, 15, 2, 23, 1, 11, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1, 5, 3, 1, 30, 2, 1,+        3, 15, 1, 17, 1, 1, 6, 3, 3, 1, 4, 3, 2, 1, 1, 1, 2, 3, 2, 3, 3, 3, 12, 22, 1, 52, 8, 1, 3,+        1, 23, 1, 16, 3, 1, 26, 3, 1, 2, 2, 2, 30, 1, 4, 8, 1, 3, 1, 23, 1, 10, 1, 5, 3, 1, 30, 3,+        1, 2, 15, 2, 17, 9, 1, 3, 1, 41, 2, 1, 16, 1, 5, 3, 8, 3, 24, 6, 5, 18, 3, 24, 1, 9, 1, 1,+        2, 7, 58, 48, 1, 1, 13, 7, 58, 2, 1, 1, 1, 5, 1, 24, 1, 1, 1, 10, 1, 1, 10, 1, 2, 5, 1, 1,+        21, 4, 32, 1, 63, 8, 1, 36, 27, 5, 115, 43, 20, 1, 16, 6, 4, 4, 3, 1, 3, 2, 7, 3, 4, 13, 12,+        1, 17, 38, 1, 1, 5, 1, 2, 43, 1, 0, 1, 4, 2, 7, 1, 1, 1, 4, 2, 41, 1, 4, 2, 33, 1, 4, 2, 7,+        1, 1, 1, 4, 2, 15, 1, 57, 1, 4, 2, 67, 37, 16, 16, 86, 2, 6, 3, 0, 2, 17, 1, 26, 5, 75, 3,+        11, 7, 18, 13, 19, 14, 18, 14, 13, 1, 3, 15, 52, 35, 1, 4, 1, 67, 89, 7, 41, 1, 1, 5, 70,+        10, 31, 49, 30, 2, 5, 11, 44, 4, 26, 54, 23, 9, 53, 82, 1, 93, 47, 17, 8, 54, 30, 13, 2, 10,+        44, 26, 36, 41, 3, 10, 36, 2, 11, 5, 43, 2, 3, 41, 4, 1, 6, 1, 2, 3, 1, 5, 192, 64, 0, 2, 6,+        2, 38, 2, 6, 2, 8, 1, 1, 1, 1, 1, 1, 1, 31, 2, 53, 1, 7, 1, 1, 3, 3, 1, 7, 3, 4, 2, 6, 4,+        13, 5, 3, 1, 7, 116, 1, 13, 1, 15, 17, 98, 1, 4, 1, 2, 10, 1, 1, 2, 6, 6, 1, 1, 1, 1, 1, 1,+        16, 2, 4, 5, 5, 4, 1, 17, 41, 0, 229, 6, 4, 3, 2, 12, 38, 1, 1, 5, 1, 2, 56, 7, 1, 16, 23,+        9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 0, 3, 25, 9, 7, 5, 2, 5, 4, 86, 6, 3, 1, 90,+        1, 4, 5, 43, 1, 94, 17, 32, 48, 16, 0, 0, 64, 0, 67, 46, 2, 0, 3, 16, 10, 2, 20, 47, 16, 31,+        2, 80, 39, 9, 2, 103, 2, 83, 4, 1, 14, 17, 1, 3, 1, 4, 1, 23, 29, 52, 14, 50, 62, 6, 3, 1,+        1, 2, 11, 28, 10, 23, 25, 29, 7, 47, 28, 1, 16, 5, 1, 10, 10, 5, 1, 41, 23, 3, 1, 8, 20, 23,+        3, 1, 3, 50, 1, 1, 3, 2, 2, 5, 2, 1, 1, 1, 24, 3, 2, 11, 7, 3, 12, 6, 2, 6, 2, 6, 9, 7, 1,+        7, 1, 43, 1, 14, 2, 2, 2, 115, 29, 0, 12, 23, 4, 49, 0, 0, 2, 106, 38, 7, 12, 5, 5, 1, 1,+        10, 1, 13, 1, 5, 1, 1, 1, 2, 1, 2, 1, 108, 33, 139, 6, 218, 18, 64, 2, 54, 40, 10, 119, 1,+        1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 126, 36, 26, 6, 26, 11, 56, 2, 31, 3, 6, 2, 6, 2, 6, 2, 3,+        35, 12, 1, 26, 1, 19, 1, 2, 1, 15, 2, 14, 34, 123, 69, 53, 0, 29, 3, 49, 47, 32, 13, 30, 5,+        38, 10, 30, 2, 36, 4, 8, 1, 5, 42, 158, 18, 36, 4, 36, 4, 40, 8, 52, 12, 11, 1, 15, 1, 7, 1,+        2, 1, 11, 1, 15, 1, 7, 1, 2, 3, 52, 12, 0, 9, 22, 10, 8, 24, 6, 1, 42, 1, 14, 64, 6, 2, 1,+        1, 44, 1, 2, 3, 1, 2, 23, 10, 23, 9, 31, 65, 19, 1, 2, 10, 22, 10, 26, 6, 26, 38, 56, 6, 2,+        64, 1, 15, 4, 1, 3, 1, 29, 42, 29, 3, 29, 35, 8, 1, 28, 27, 54, 10, 22, 10, 19, 13, 18, 110,+        73, 55, 51, 13, 51, 13, 36, 38, 28, 9, 23, 250, 42, 6, 2, 16, 6, 17, 22, 17, 29, 10, 1, 8,+        22, 42, 18, 46, 21, 27, 23, 12, 53, 57, 2, 2, 1, 13, 45, 32, 25, 26, 36, 29, 1, 2, 1, 8, 35,+        3, 1, 12, 48, 14, 4, 21, 1, 1, 1, 35, 18, 1, 25, 19, 2, 63, 7, 1, 1, 1, 4, 1, 15, 1, 10, 7,+        47, 38, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1, 5, 3, 1, 18, 1, 12, 5, 30, 10, 1, 1, 2, 1, 1, 38, 1,+        1, 25, 1, 1, 1, 44, 53, 18, 4, 20, 3, 30, 48, 20, 2, 1, 1, 184, 47, 41, 4, 36, 48, 20, 1,+        59, 43, 13, 1, 71, 27, 37, 7, 185, 44, 116, 64, 31, 8, 2, 1, 2, 8, 1, 2, 1, 24, 15, 1, 1, 1,+        94, 8, 2, 39, 16, 1, 1, 1, 28, 1, 10, 40, 7, 1, 21, 1, 11, 46, 19, 1, 18, 73, 17, 1, 181,+        33, 31, 9, 1, 37, 17, 1, 49, 30, 112, 7, 1, 2, 1, 38, 21, 1, 25, 6, 1, 2, 1, 32, 14, 1, 23,+        44, 21, 1, 238, 19, 15, 1, 1, 13, 1, 34, 124, 1, 79, 0, 102, 112, 5, 207, 12, 0, 0, 97, 15,+        0, 17, 6, 25, 0, 5, 0, 0, 30, 0, 0, 7, 31, 17, 79, 17, 30, 18, 48, 16, 4, 31, 21, 5, 19, 0,+        45, 211, 64, 32, 25, 2, 25, 44, 75, 5, 1, 66, 13, 64, 2, 1, 1, 14, 5, 9, 0, 36, 34, 95, 115,+        13, 0, 14, 51, 0, 4, 1, 7, 1, 2, 1, 0, 9, 1, 29, 3, 2, 1, 14, 5, 7, 0, 0, 107, 5, 13, 3, 9,+        7, 10, 0, 85, 1, 71, 1, 2, 2, 1, 2, 2, 2, 4, 1, 12, 1, 1, 1, 7, 1, 65, 1, 4, 2, 8, 1, 7, 1,+        28, 1, 4, 1, 5, 1, 1, 3, 7, 1, 0, 1, 25, 1, 25, 1, 31, 1, 25, 1, 31, 1, 25, 1, 31, 1, 25, 1,+        31, 1, 25, 1, 8, 0, 130, 14, 7, 54, 51, 48, 62, 146, 45, 10, 7, 16, 1, 0, 30, 18, 44, 0, 28,+        228, 30, 2, 1, 207, 31, 1, 3, 1, 2, 1, 7, 2, 5, 9, 2, 224, 7, 1, 4, 1, 2, 1, 15, 1, 197, 59,+        68, 7, 1, 0, 4, 1, 27, 1, 2, 1, 1, 2, 1, 1, 10, 1, 4, 1, 1, 1, 1, 6, 1, 4, 1, 1, 1, 1, 1, 1,+        3, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 4, 1, 7, 1, 4, 1, 4, 1, 1, 1,+        10, 1, 17, 5, 3, 1, 5, 1, 17, 0, 0, 32, 0, 1, 0, 2, 0, 15, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0,+    ];+    #[inline]+    pub fn lookup(c: char) -> bool {+        debug_assert!(!c.is_ascii());+        (c as u32) >= 0xaa && lookup_slow(c)+    }++    #[inline(never)]+    fn lookup_slow(c: char) -> bool {+        const {+            assert!(SHORT_OFFSET_RUNS.last().unwrap().0 > char::MAX as u32);+            let mut i = 0;+            while i < SHORT_OFFSET_RUNS.len() {+                assert!(SHORT_OFFSET_RUNS[i].start_index() < OFFSETS.len());+                i += 1;+            }+        }+        // SAFETY: We just ensured the last element of `SHORT_OFFSET_RUNS` is greater than `std::char::MAX`+        // and the start indices of all elements in `SHORT_OFFSET_RUNS` are smaller than `OFFSETS.len()`.+        unsafe { super::skip_search(c, &SHORT_OFFSET_RUNS, &OFFSETS) }+    }+}+ #[rustfmt::skip] pub mod conversions { 
library/coretests/tests/lib.rs1 + / 0 −
@@ -15,6 +15,7 @@ #![feature(cfg_overflow_checks)] #![feature(cfg_target_has_reliable_f16_f128)] #![feature(char_internals)]+#![feature(char_is_xid)] #![feature(clamp_magnitude)] #![feature(clamp_to)] #![feature(clone_to_uninit)]
library/coretests/tests/unicode.rs14 + / 0 −
@@ -121,6 +121,20 @@ fn white_space() {     test_boolean_property(test_data::WHITE_SPACE, char::is_whitespace); } +#[test]+#[cfg_attr(miri, ignore)] // Miri is too slow+fn xid_continue() {+    test_boolean_property(test_data::XID_CONTINUE, unicode_data::xid_continue::lookup);+    test_boolean_property(test_data::XID_CONTINUE, char::is_xid_continue);+}++#[test]+#[cfg_attr(miri, ignore)] // Miri is too slow+fn xid_start() {+    test_boolean_property(test_data::XID_START, unicode_data::xid_start::lookup);+    test_boolean_property(test_data::XID_START, char::is_xid_start);+}+ #[test] #[cfg_attr(miri, ignore)] // Miri is too slow fn to_lowercase() {
library/coretests/tests/unicode/test_data.rs485 + / 0 −
@@ -1266,6 +1266,491 @@ pub(super) static WHITE_SPACE: &[RangeInclusive<char>; 8] = &[     '\u{3000}'..='\u{3000}', ]; +#[rustfmt::skip]+pub(super) static XID_CONTINUE: &[RangeInclusive<char>; 817] = &[+    '\u{aa}'..='\u{aa}', '\u{b5}'..='\u{b5}', '\u{b7}'..='\u{b7}', '\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}'..='\u{2ee}', '\u{300}'..='\u{374}',+    '\u{376}'..='\u{377}', '\u{37b}'..='\u{37d}', '\u{37f}'..='\u{37f}', '\u{386}'..='\u{38a}',+    '\u{38c}'..='\u{38c}', '\u{38e}'..='\u{3a1}', '\u{3a3}'..='\u{3f5}', '\u{3f7}'..='\u{481}',+    '\u{483}'..='\u{487}', '\u{48a}'..='\u{52f}', '\u{531}'..='\u{556}', '\u{558}'..='\u{559}',+    '\u{560}'..='\u{588}', '\u{58b}'..='\u{58c}', '\u{591}'..='\u{5bd}', '\u{5bf}'..='\u{5bf}',+    '\u{5c1}'..='\u{5c2}', '\u{5c4}'..='\u{5c5}', '\u{5c7}'..='\u{5c9}', '\u{5d0}'..='\u{5ea}',+    '\u{5ef}'..='\u{5f2}', '\u{610}'..='\u{61a}', '\u{620}'..='\u{669}', '\u{66e}'..='\u{6d3}',+    '\u{6d5}'..='\u{6dc}', '\u{6df}'..='\u{6e8}', '\u{6ea}'..='\u{6fc}', '\u{6ff}'..='\u{6ff}',+    '\u{710}'..='\u{74a}', '\u{74d}'..='\u{7b1}', '\u{7c0}'..='\u{7f5}', '\u{7fa}'..='\u{7fa}',+    '\u{7fd}'..='\u{7fd}', '\u{800}'..='\u{82d}', '\u{840}'..='\u{85b}', '\u{860}'..='\u{86a}',+    '\u{870}'..='\u{887}', '\u{889}'..='\u{88f}', '\u{897}'..='\u{8e1}', '\u{8e3}'..='\u{963}',+    '\u{966}'..='\u{96f}', '\u{971}'..='\u{983}', '\u{985}'..='\u{98c}', '\u{98f}'..='\u{990}',+    '\u{993}'..='\u{9a8}', '\u{9aa}'..='\u{9b0}', '\u{9b2}'..='\u{9b2}', '\u{9b6}'..='\u{9b9}',+    '\u{9bc}'..='\u{9c4}', '\u{9c7}'..='\u{9c8}', '\u{9cb}'..='\u{9ce}', '\u{9d7}'..='\u{9d7}',+    '\u{9dc}'..='\u{9dd}', '\u{9df}'..='\u{9e3}', '\u{9e6}'..='\u{9f1}', '\u{9fc}'..='\u{9fc}',+    '\u{9fe}'..='\u{9fe}', '\u{a01}'..='\u{a03}', '\u{a05}'..='\u{a0a}', '\u{a0f}'..='\u{a10}',+    '\u{a13}'..='\u{a28}', '\u{a2a}'..='\u{a30}', '\u{a32}'..='\u{a33}', '\u{a35}'..='\u{a36}',+    '\u{a38}'..='\u{a39}', '\u{a3c}'..='\u{a3c}', '\u{a3e}'..='\u{a42}', '\u{a47}'..='\u{a48}',+    '\u{a4b}'..='\u{a4d}', '\u{a51}'..='\u{a51}', '\u{a59}'..='\u{a5c}', '\u{a5e}'..='\u{a5e}',+    '\u{a66}'..='\u{a75}', '\u{a81}'..='\u{a83}', '\u{a85}'..='\u{a8d}', '\u{a8f}'..='\u{a91}',+    '\u{a93}'..='\u{aa8}', '\u{aaa}'..='\u{ab0}', '\u{ab2}'..='\u{ab3}', '\u{ab5}'..='\u{ab9}',+    '\u{abc}'..='\u{ac5}', '\u{ac7}'..='\u{ac9}', '\u{acb}'..='\u{acd}', '\u{ad0}'..='\u{ad0}',+    '\u{ae0}'..='\u{ae3}', '\u{ae6}'..='\u{aef}', '\u{af9}'..='\u{aff}', '\u{b01}'..='\u{b03}',+    '\u{b05}'..='\u{b0c}', '\u{b0f}'..='\u{b10}', '\u{b13}'..='\u{b28}', '\u{b2a}'..='\u{b30}',+    '\u{b32}'..='\u{b33}', '\u{b35}'..='\u{b39}', '\u{b3c}'..='\u{b44}', '\u{b47}'..='\u{b48}',+    '\u{b4b}'..='\u{b4d}', '\u{b53}'..='\u{b57}', '\u{b5c}'..='\u{b5d}', '\u{b5f}'..='\u{b63}',+    '\u{b66}'..='\u{b6f}', '\u{b71}'..='\u{b71}', '\u{b82}'..='\u{b83}', '\u{b85}'..='\u{b8a}',+    '\u{b8e}'..='\u{b90}', '\u{b92}'..='\u{b95}', '\u{b99}'..='\u{b9a}', '\u{b9c}'..='\u{b9c}',+    '\u{b9e}'..='\u{b9f}', '\u{ba3}'..='\u{ba4}', '\u{ba8}'..='\u{baa}', '\u{bae}'..='\u{bb9}',+    '\u{bbe}'..='\u{bc2}', '\u{bc6}'..='\u{bc8}', '\u{bca}'..='\u{bcd}', '\u{bd0}'..='\u{bd0}',+    '\u{bd7}'..='\u{bd7}', '\u{be6}'..='\u{bef}', '\u{c00}'..='\u{c0c}', '\u{c0e}'..='\u{c10}',+    '\u{c12}'..='\u{c28}', '\u{c2a}'..='\u{c39}', '\u{c3c}'..='\u{c44}', '\u{c46}'..='\u{c48}',+    '\u{c4a}'..='\u{c4d}', '\u{c55}'..='\u{c56}', '\u{c58}'..='\u{c5a}', '\u{c5c}'..='\u{c5d}',+    '\u{c60}'..='\u{c63}', '\u{c66}'..='\u{c6f}', '\u{c80}'..='\u{c83}', '\u{c85}'..='\u{c8c}',+    '\u{c8e}'..='\u{c90}', '\u{c92}'..='\u{ca8}', '\u{caa}'..='\u{cb3}', '\u{cb5}'..='\u{cb9}',+    '\u{cbc}'..='\u{cc4}', '\u{cc6}'..='\u{cc8}', '\u{cca}'..='\u{ccd}', '\u{cd5}'..='\u{cd6}',+    '\u{cdc}'..='\u{cde}', '\u{ce0}'..='\u{ce3}', '\u{ce6}'..='\u{cef}', '\u{cf1}'..='\u{cf3}',+    '\u{d00}'..='\u{d0c}', '\u{d0e}'..='\u{d10}', '\u{d12}'..='\u{d44}', '\u{d46}'..='\u{d48}',+    '\u{d4a}'..='\u{d4e}', '\u{d54}'..='\u{d57}', '\u{d5f}'..='\u{d63}', '\u{d66}'..='\u{d6f}',+    '\u{d7a}'..='\u{d7f}', '\u{d81}'..='\u{d83}', '\u{d85}'..='\u{d96}', '\u{d9a}'..='\u{db1}',+    '\u{db3}'..='\u{dbb}', '\u{dbd}'..='\u{dbd}', '\u{dc0}'..='\u{dc6}', '\u{dca}'..='\u{dca}',+    '\u{dcf}'..='\u{dd4}', '\u{dd6}'..='\u{dd6}', '\u{dd8}'..='\u{ddf}', '\u{de6}'..='\u{def}',+    '\u{df2}'..='\u{df3}', '\u{e01}'..='\u{e3a}', '\u{e40}'..='\u{e4e}', '\u{e50}'..='\u{e59}',+    '\u{e81}'..='\u{e82}', '\u{e84}'..='\u{e84}', '\u{e86}'..='\u{e8a}', '\u{e8c}'..='\u{ea3}',+    '\u{ea5}'..='\u{ea5}', '\u{ea7}'..='\u{ebd}', '\u{ec0}'..='\u{ec4}', '\u{ec6}'..='\u{ec6}',+    '\u{ec8}'..='\u{ece}', '\u{ed0}'..='\u{ed9}', '\u{edc}'..='\u{edf}', '\u{f00}'..='\u{f00}',+    '\u{f18}'..='\u{f19}', '\u{f20}'..='\u{f29}', '\u{f35}'..='\u{f35}', '\u{f37}'..='\u{f37}',+    '\u{f39}'..='\u{f39}', '\u{f3e}'..='\u{f47}', '\u{f49}'..='\u{f6c}', '\u{f71}'..='\u{f84}',+    '\u{f86}'..='\u{f97}', '\u{f99}'..='\u{fbc}', '\u{fc6}'..='\u{fc6}',+    '\u{1000}'..='\u{1049}', '\u{1050}'..='\u{109d}', '\u{10a0}'..='\u{10c5}',+    '\u{10c7}'..='\u{10c7}', '\u{10cd}'..='\u{10cd}', '\u{10d0}'..='\u{10fa}',+    '\u{10fc}'..='\u{1248}', '\u{124a}'..='\u{124d}', '\u{1250}'..='\u{1256}',+    '\u{1258}'..='\u{1258}', '\u{125a}'..='\u{125d}', '\u{1260}'..='\u{1288}',+    '\u{128a}'..='\u{128d}', '\u{1290}'..='\u{12b0}', '\u{12b2}'..='\u{12b5}',+    '\u{12b8}'..='\u{12be}', '\u{12c0}'..='\u{12c0}', '\u{12c2}'..='\u{12c5}',+    '\u{12c8}'..='\u{12d6}', '\u{12d8}'..='\u{1310}', '\u{1312}'..='\u{1315}',+    '\u{1318}'..='\u{135a}', '\u{135d}'..='\u{135f}', '\u{1369}'..='\u{1371}',+    '\u{1380}'..='\u{138f}', '\u{13a0}'..='\u{13f5}', '\u{13f8}'..='\u{13fd}',+    '\u{1401}'..='\u{166c}', '\u{166f}'..='\u{167f}', '\u{1681}'..='\u{169a}',+    '\u{16a0}'..='\u{16ea}', '\u{16ee}'..='\u{16f8}', '\u{1700}'..='\u{1715}',+    '\u{171f}'..='\u{1734}', '\u{1740}'..='\u{1753}', '\u{1760}'..='\u{176c}',+    '\u{176e}'..='\u{1770}', '\u{1772}'..='\u{1773}', '\u{1780}'..='\u{17d3}',+    '\u{17d7}'..='\u{17d7}', '\u{17dc}'..='\u{17dd}', '\u{17e0}'..='\u{17e9}',+    '\u{180b}'..='\u{180d}', '\u{180f}'..='\u{1819}', '\u{1820}'..='\u{1878}',+    '\u{1880}'..='\u{18aa}', '\u{18b0}'..='\u{18f5}', '\u{1900}'..='\u{191e}',+    '\u{1920}'..='\u{192b}', '\u{1930}'..='\u{193b}', '\u{1946}'..='\u{196d}',+    '\u{1970}'..='\u{1974}', '\u{1980}'..='\u{19ab}', '\u{19b0}'..='\u{19c9}',+    '\u{19d0}'..='\u{19da}', '\u{1a00}'..='\u{1a1b}', '\u{1a20}'..='\u{1a5e}',+    '\u{1a60}'..='\u{1a7c}', '\u{1a7f}'..='\u{1a89}', '\u{1a90}'..='\u{1a99}',+    '\u{1aa7}'..='\u{1aa7}', '\u{1ab0}'..='\u{1abd}', '\u{1abf}'..='\u{1af0}',+    '\u{1b00}'..='\u{1b4c}', '\u{1b50}'..='\u{1b59}', '\u{1b6b}'..='\u{1b73}',+    '\u{1b80}'..='\u{1bf3}', '\u{1c00}'..='\u{1c37}', '\u{1c40}'..='\u{1c49}',+    '\u{1c4d}'..='\u{1c7d}', '\u{1c80}'..='\u{1c8a}', '\u{1c90}'..='\u{1cba}',+    '\u{1cbd}'..='\u{1cbf}', '\u{1cd0}'..='\u{1cd2}', '\u{1cd4}'..='\u{1cfa}',+    '\u{1d00}'..='\u{1f15}', '\u{1f18}'..='\u{1f1d}', '\u{1f20}'..='\u{1f45}',+    '\u{1f48}'..='\u{1f4d}', '\u{1f50}'..='\u{1f57}', '\u{1f59}'..='\u{1f59}',+    '\u{1f5b}'..='\u{1f5b}', '\u{1f5d}'..='\u{1f5d}', '\u{1f5f}'..='\u{1f7d}',+    '\u{1f80}'..='\u{1fb4}', '\u{1fb6}'..='\u{1fbc}', '\u{1fbe}'..='\u{1fbe}',+    '\u{1fc2}'..='\u{1fc4}', '\u{1fc6}'..='\u{1fcc}', '\u{1fd0}'..='\u{1fd3}',+    '\u{1fd6}'..='\u{1fdb}', '\u{1fe0}'..='\u{1fec}', '\u{1ff2}'..='\u{1ff4}',+    '\u{1ff6}'..='\u{1ffc}', '\u{200c}'..='\u{200d}', '\u{203f}'..='\u{2040}',+    '\u{2054}'..='\u{2054}', '\u{2071}'..='\u{2071}', '\u{207f}'..='\u{207f}',+    '\u{208f}'..='\u{209f}', '\u{20d0}'..='\u{20dc}', '\u{20e1}'..='\u{20e1}',+    '\u{20e5}'..='\u{20f0}', '\u{2102}'..='\u{2102}', '\u{2107}'..='\u{2107}',+    '\u{210a}'..='\u{2113}', '\u{2115}'..='\u{2115}', '\u{2118}'..='\u{211d}',+    '\u{2124}'..='\u{2124}', '\u{2126}'..='\u{2126}', '\u{2128}'..='\u{2128}',+    '\u{212a}'..='\u{2139}', '\u{213c}'..='\u{213f}', '\u{2145}'..='\u{2149}',+    '\u{214e}'..='\u{214e}', '\u{2160}'..='\u{2188}', '\u{2c00}'..='\u{2ce4}',+    '\u{2ceb}'..='\u{2cf3}', '\u{2d00}'..='\u{2d25}', '\u{2d27}'..='\u{2d27}',+    '\u{2d2d}'..='\u{2d2d}', '\u{2d30}'..='\u{2d67}', '\u{2d6f}'..='\u{2d6f}',+    '\u{2d7f}'..='\u{2d96}', '\u{2da0}'..='\u{2da6}', '\u{2da8}'..='\u{2dae}',+    '\u{2db0}'..='\u{2db6}', '\u{2db8}'..='\u{2dbe}', '\u{2dc0}'..='\u{2dc6}',+    '\u{2dc8}'..='\u{2dce}', '\u{2dd0}'..='\u{2dd6}', '\u{2dd8}'..='\u{2dde}',+    '\u{2de0}'..='\u{2dff}', '\u{3005}'..='\u{3007}', '\u{3021}'..='\u{302f}',+    '\u{3031}'..='\u{3035}', '\u{3038}'..='\u{303c}', '\u{3041}'..='\u{3096}',+    '\u{3099}'..='\u{309a}', '\u{309d}'..='\u{309f}', '\u{30a1}'..='\u{30ff}',+    '\u{3105}'..='\u{312f}', '\u{3131}'..='\u{318e}', '\u{31a0}'..='\u{31bf}',+    '\u{31f0}'..='\u{31ff}', '\u{3400}'..='\u{4dbf}', '\u{4e00}'..='\u{a48c}',+    '\u{a4d0}'..='\u{a4fd}', '\u{a500}'..='\u{a60c}', '\u{a610}'..='\u{a62b}',+    '\u{a640}'..='\u{a66f}', '\u{a674}'..='\u{a67d}', '\u{a67f}'..='\u{a6f1}',+    '\u{a717}'..='\u{a71f}', '\u{a722}'..='\u{a788}', '\u{a78b}'..='\u{a7dd}',+    '\u{a7e2}'..='\u{a7e2}', '\u{a7f1}'..='\u{a827}', '\u{a82c}'..='\u{a82c}',+    '\u{a840}'..='\u{a873}', '\u{a880}'..='\u{a8c5}', '\u{a8d0}'..='\u{a8d9}',+    '\u{a8e0}'..='\u{a8f7}', '\u{a8fb}'..='\u{a8fb}', '\u{a8fd}'..='\u{a92d}',+    '\u{a930}'..='\u{a953}', '\u{a960}'..='\u{a97c}', '\u{a980}'..='\u{a9c0}',+    '\u{a9cf}'..='\u{a9d9}', '\u{a9e0}'..='\u{a9fe}', '\u{aa00}'..='\u{aa36}',+    '\u{aa40}'..='\u{aa4d}', '\u{aa50}'..='\u{aa59}', '\u{aa60}'..='\u{aa76}',+    '\u{aa7a}'..='\u{aac2}', '\u{aadb}'..='\u{aadd}', '\u{aae0}'..='\u{aaef}',+    '\u{aaf2}'..='\u{aaf6}', '\u{ab01}'..='\u{ab06}', '\u{ab09}'..='\u{ab0e}',+    '\u{ab11}'..='\u{ab16}', '\u{ab20}'..='\u{ab26}', '\u{ab28}'..='\u{ab2e}',+    '\u{ab30}'..='\u{ab5a}', '\u{ab5c}'..='\u{ab69}', '\u{ab6c}'..='\u{ab6d}',+    '\u{ab70}'..='\u{abea}', '\u{abec}'..='\u{abed}', '\u{abf0}'..='\u{abf9}',+    '\u{ac00}'..='\u{d7a3}', '\u{d7b0}'..='\u{d7c6}', '\u{d7cb}'..='\u{d7fb}',+    '\u{f900}'..='\u{fa6d}', '\u{fa70}'..='\u{fad9}', '\u{fb00}'..='\u{fb06}',+    '\u{fb13}'..='\u{fb17}', '\u{fb1d}'..='\u{fb28}', '\u{fb2a}'..='\u{fb36}',+    '\u{fb38}'..='\u{fb3c}', '\u{fb3e}'..='\u{fb3e}', '\u{fb40}'..='\u{fb41}',+    '\u{fb43}'..='\u{fb44}', '\u{fb46}'..='\u{fbb1}', '\u{fbd3}'..='\u{fc5d}',+    '\u{fc64}'..='\u{fd3d}', '\u{fd50}'..='\u{fd8f}', '\u{fd92}'..='\u{fdc7}',+    '\u{fdf0}'..='\u{fdf9}', '\u{fe00}'..='\u{fe0f}', '\u{fe20}'..='\u{fe2f}',+    '\u{fe33}'..='\u{fe34}', '\u{fe4d}'..='\u{fe4f}', '\u{fe71}'..='\u{fe71}',+    '\u{fe73}'..='\u{fe73}', '\u{fe77}'..='\u{fe77}', '\u{fe79}'..='\u{fe79}',+    '\u{fe7b}'..='\u{fe7b}', '\u{fe7d}'..='\u{fe7d}', '\u{fe7f}'..='\u{fefc}',+    '\u{ff10}'..='\u{ff19}', '\u{ff21}'..='\u{ff3a}', '\u{ff3f}'..='\u{ff3f}',+    '\u{ff41}'..='\u{ff5a}', '\u{ff65}'..='\u{ffbe}', '\u{ffc2}'..='\u{ffc7}',+    '\u{ffca}'..='\u{ffcf}', '\u{ffd2}'..='\u{ffd7}', '\u{ffda}'..='\u{ffdc}',+    '\u{10000}'..='\u{1000b}', '\u{1000d}'..='\u{10026}', '\u{10028}'..='\u{1003a}',+    '\u{1003c}'..='\u{1003d}', '\u{1003f}'..='\u{1004d}', '\u{10050}'..='\u{1005d}',+    '\u{10080}'..='\u{100fa}', '\u{10140}'..='\u{10174}', '\u{101fd}'..='\u{101fd}',+    '\u{10280}'..='\u{1029c}', '\u{102a0}'..='\u{102d0}', '\u{102e0}'..='\u{102e0}',+    '\u{10300}'..='\u{1031f}', '\u{1032d}'..='\u{1034a}', '\u{10350}'..='\u{1037a}',+    '\u{10380}'..='\u{1039d}', '\u{103a0}'..='\u{103c3}', '\u{103c8}'..='\u{103cf}',+    '\u{103d1}'..='\u{103d5}', '\u{10400}'..='\u{1049d}', '\u{104a0}'..='\u{104a9}',+    '\u{104b0}'..='\u{104d3}', '\u{104d8}'..='\u{104fb}', '\u{10500}'..='\u{10527}',+    '\u{10530}'..='\u{10563}', '\u{10570}'..='\u{1057a}', '\u{1057c}'..='\u{1058a}',+    '\u{1058c}'..='\u{10592}', '\u{10594}'..='\u{10595}', '\u{10597}'..='\u{105a1}',+    '\u{105a3}'..='\u{105b1}', '\u{105b3}'..='\u{105b9}', '\u{105bb}'..='\u{105bc}',+    '\u{105c0}'..='\u{105f3}', '\u{10600}'..='\u{10736}', '\u{10740}'..='\u{10755}',+    '\u{10760}'..='\u{10767}', '\u{10780}'..='\u{10785}', '\u{10787}'..='\u{107b0}',+    '\u{107b2}'..='\u{107bf}', '\u{10800}'..='\u{10805}', '\u{10808}'..='\u{10808}',+    '\u{1080a}'..='\u{10835}', '\u{10837}'..='\u{10838}', '\u{1083c}'..='\u{1083c}',+    '\u{1083f}'..='\u{10855}', '\u{10860}'..='\u{10876}', '\u{10880}'..='\u{1089e}',+    '\u{108e0}'..='\u{108f2}', '\u{108f4}'..='\u{108f5}', '\u{10900}'..='\u{10915}',+    '\u{10920}'..='\u{10939}', '\u{10940}'..='\u{10959}', '\u{10980}'..='\u{109b7}',+    '\u{109be}'..='\u{109bf}', '\u{10a00}'..='\u{10a03}', '\u{10a05}'..='\u{10a06}',+    '\u{10a0c}'..='\u{10a13}', '\u{10a15}'..='\u{10a17}', '\u{10a19}'..='\u{10a35}',+    '\u{10a38}'..='\u{10a3a}', '\u{10a3f}'..='\u{10a3f}', '\u{10a60}'..='\u{10a7c}',+    '\u{10a80}'..='\u{10a9c}', '\u{10ac0}'..='\u{10ac7}', '\u{10ac9}'..='\u{10ae6}',+    '\u{10b00}'..='\u{10b35}', '\u{10b40}'..='\u{10b55}', '\u{10b60}'..='\u{10b72}',+    '\u{10b80}'..='\u{10b91}', '\u{10c00}'..='\u{10c48}', '\u{10c80}'..='\u{10cb2}',+    '\u{10cc0}'..='\u{10cf2}', '\u{10d00}'..='\u{10d27}', '\u{10d30}'..='\u{10d39}',+    '\u{10d40}'..='\u{10d65}', '\u{10d69}'..='\u{10d6d}', '\u{10d6f}'..='\u{10d85}',+    '\u{10e80}'..='\u{10ea9}', '\u{10eab}'..='\u{10eac}', '\u{10eb0}'..='\u{10eb1}',+    '\u{10ec2}'..='\u{10ec7}', '\u{10ecb}'..='\u{10ecf}', '\u{10ed9}'..='\u{10eee}',+    '\u{10ef0}'..='\u{10f1c}', '\u{10f27}'..='\u{10f27}', '\u{10f30}'..='\u{10f50}',+    '\u{10f70}'..='\u{10f85}', '\u{10fb0}'..='\u{10fc4}', '\u{10fe0}'..='\u{10ff6}',+    '\u{11000}'..='\u{11046}', '\u{11066}'..='\u{11075}', '\u{1107f}'..='\u{110ba}',+    '\u{110c2}'..='\u{110c2}', '\u{110d0}'..='\u{110e8}', '\u{110f0}'..='\u{110f9}',+    '\u{11100}'..='\u{11134}', '\u{11136}'..='\u{1113f}', '\u{11144}'..='\u{11147}',+    '\u{11150}'..='\u{11173}', '\u{11176}'..='\u{11176}', '\u{11180}'..='\u{111c4}',+    '\u{111c9}'..='\u{111cc}', '\u{111ce}'..='\u{111da}', '\u{111dc}'..='\u{111dc}',+    '\u{11200}'..='\u{11211}', '\u{11213}'..='\u{11237}', '\u{1123e}'..='\u{11241}',+    '\u{11280}'..='\u{11286}', '\u{11288}'..='\u{11288}', '\u{1128a}'..='\u{1128d}',+    '\u{1128f}'..='\u{1129d}', '\u{1129f}'..='\u{112a8}', '\u{112b0}'..='\u{112ea}',+    '\u{112f0}'..='\u{112f9}', '\u{11300}'..='\u{11303}', '\u{11305}'..='\u{1130c}',+    '\u{1130f}'..='\u{11310}', '\u{11313}'..='\u{11328}', '\u{1132a}'..='\u{11330}',+    '\u{11332}'..='\u{11333}', '\u{11335}'..='\u{11339}', '\u{1133b}'..='\u{11344}',+    '\u{11347}'..='\u{11348}', '\u{1134b}'..='\u{1134d}', '\u{11350}'..='\u{11350}',+    '\u{11357}'..='\u{11357}', '\u{1135d}'..='\u{11363}', '\u{11366}'..='\u{1136c}',+    '\u{11370}'..='\u{11374}', '\u{11380}'..='\u{11389}', '\u{1138b}'..='\u{1138b}',+    '\u{1138e}'..='\u{1138e}', '\u{11390}'..='\u{113b5}', '\u{113b7}'..='\u{113c0}',+    '\u{113c2}'..='\u{113c2}', '\u{113c5}'..='\u{113c5}', '\u{113c7}'..='\u{113ca}',+    '\u{113cc}'..='\u{113d3}', '\u{113e1}'..='\u{113e2}', '\u{11400}'..='\u{1144a}',+    '\u{11450}'..='\u{11459}', '\u{1145e}'..='\u{11461}', '\u{11480}'..='\u{114c5}',+    '\u{114c7}'..='\u{114c7}', '\u{114d0}'..='\u{114d9}', '\u{11580}'..='\u{115b5}',+    '\u{115b8}'..='\u{115c0}', '\u{115d8}'..='\u{115dd}', '\u{11600}'..='\u{11640}',+    '\u{11644}'..='\u{11644}', '\u{11650}'..='\u{11659}', '\u{11680}'..='\u{116b8}',+    '\u{116c0}'..='\u{116c9}', '\u{116d0}'..='\u{116e3}', '\u{11700}'..='\u{1171a}',+    '\u{1171d}'..='\u{1172b}', '\u{11730}'..='\u{11739}', '\u{11740}'..='\u{11746}',+    '\u{11800}'..='\u{1183a}', '\u{118a0}'..='\u{118e9}', '\u{118ff}'..='\u{11906}',+    '\u{11909}'..='\u{11909}', '\u{1190c}'..='\u{11913}', '\u{11915}'..='\u{11916}',+    '\u{11918}'..='\u{11935}', '\u{11937}'..='\u{11938}', '\u{1193b}'..='\u{11943}',+    '\u{11950}'..='\u{11959}', '\u{119a0}'..='\u{119a7}', '\u{119aa}'..='\u{119d7}',+    '\u{119da}'..='\u{119e1}', '\u{119e3}'..='\u{119e4}', '\u{11a00}'..='\u{11a3e}',+    '\u{11a47}'..='\u{11a47}', '\u{11a50}'..='\u{11a99}', '\u{11a9d}'..='\u{11a9d}',+    '\u{11ab0}'..='\u{11af8}', '\u{11b0a}'..='\u{11b0a}', '\u{11b60}'..='\u{11b67}',+    '\u{11bc0}'..='\u{11be0}', '\u{11bf0}'..='\u{11bf9}', '\u{11c00}'..='\u{11c08}',+    '\u{11c0a}'..='\u{11c36}', '\u{11c38}'..='\u{11c40}', '\u{11c50}'..='\u{11c59}',+    '\u{11c72}'..='\u{11c8f}', '\u{11c92}'..='\u{11ca7}', '\u{11ca9}'..='\u{11cb6}',+    '\u{11d00}'..='\u{11d06}', '\u{11d08}'..='\u{11d09}', '\u{11d0b}'..='\u{11d36}',+    '\u{11d3a}'..='\u{11d3a}', '\u{11d3c}'..='\u{11d3d}', '\u{11d3f}'..='\u{11d47}',+    '\u{11d50}'..='\u{11d59}', '\u{11d60}'..='\u{11d65}', '\u{11d67}'..='\u{11d68}',+    '\u{11d6a}'..='\u{11d8e}', '\u{11d90}'..='\u{11d91}', '\u{11d93}'..='\u{11d98}',+    '\u{11da0}'..='\u{11da9}', '\u{11db0}'..='\u{11ddb}', '\u{11de0}'..='\u{11de9}',+    '\u{11df0}'..='\u{11df1}', '\u{11ee0}'..='\u{11ef6}', '\u{11f00}'..='\u{11f10}',+    '\u{11f12}'..='\u{11f3a}', '\u{11f3e}'..='\u{11f42}', '\u{11f50}'..='\u{11f5a}',+    '\u{11fb0}'..='\u{11fb0}', '\u{12000}'..='\u{12399}', '\u{12400}'..='\u{1246f}',+    '\u{12475}'..='\u{12543}', '\u{12550}'..='\u{12686}', '\u{12f90}'..='\u{12ff0}',+    '\u{13000}'..='\u{1342f}', '\u{13440}'..='\u{13455}', '\u{13460}'..='\u{143fa}',+    '\u{14400}'..='\u{14646}', '\u{16100}'..='\u{16139}', '\u{16800}'..='\u{16a38}',+    '\u{16a40}'..='\u{16a5e}', '\u{16a60}'..='\u{16a69}', '\u{16a70}'..='\u{16abe}',+    '\u{16ac0}'..='\u{16ac9}', '\u{16ad0}'..='\u{16aed}', '\u{16af0}'..='\u{16af4}',+    '\u{16b00}'..='\u{16b36}', '\u{16b40}'..='\u{16b43}', '\u{16b50}'..='\u{16b59}',+    '\u{16b63}'..='\u{16b77}', '\u{16b7d}'..='\u{16b8f}', '\u{16d40}'..='\u{16d6c}',+    '\u{16d70}'..='\u{16d79}', '\u{16e40}'..='\u{16e7f}', '\u{16ea0}'..='\u{16eb8}',+    '\u{16ebb}'..='\u{16ed3}', '\u{16f00}'..='\u{16f4a}', '\u{16f4f}'..='\u{16f87}',+    '\u{16f8f}'..='\u{16f9f}', '\u{16fe0}'..='\u{16fe1}', '\u{16fe3}'..='\u{16fe4}',+    '\u{16ff0}'..='\u{16ff6}', '\u{17000}'..='\u{18cda}', '\u{18cff}'..='\u{18d20}',+    '\u{18d80}'..='\u{18df2}', '\u{18e00}'..='\u{19191}', '\u{191a0}'..='\u{191d2}',+    '\u{1aff0}'..='\u{1aff3}', '\u{1aff5}'..='\u{1affb}', '\u{1affd}'..='\u{1affe}',+    '\u{1b000}'..='\u{1b128}', '\u{1b132}'..='\u{1b132}', '\u{1b150}'..='\u{1b152}',+    '\u{1b155}'..='\u{1b155}', '\u{1b164}'..='\u{1b168}', '\u{1b170}'..='\u{1b2fb}',+    '\u{1bc00}'..='\u{1bc6a}', '\u{1bc70}'..='\u{1bc7c}', '\u{1bc80}'..='\u{1bc88}',+    '\u{1bc90}'..='\u{1bc99}', '\u{1bc9d}'..='\u{1bc9e}', '\u{1ccf0}'..='\u{1ccf9}',+    '\u{1cf00}'..='\u{1cf2d}', '\u{1cf30}'..='\u{1cf46}', '\u{1d127}'..='\u{1d128}',+    '\u{1d165}'..='\u{1d169}', '\u{1d16d}'..='\u{1d172}', '\u{1d17b}'..='\u{1d182}',+    '\u{1d185}'..='\u{1d18b}', '\u{1d1aa}'..='\u{1d1ad}', '\u{1d242}'..='\u{1d244}',+    '\u{1d250}'..='\u{1d252}', '\u{1d25b}'..='\u{1d25c}', '\u{1d25f}'..='\u{1d25f}',+    '\u{1d280}'..='\u{1d281}', '\u{1d400}'..='\u{1d454}', '\u{1d456}'..='\u{1d49c}',+    '\u{1d49e}'..='\u{1d49f}', '\u{1d4a2}'..='\u{1d4a2}', '\u{1d4a5}'..='\u{1d4a6}',+    '\u{1d4a9}'..='\u{1d4ac}', '\u{1d4ae}'..='\u{1d4b9}', '\u{1d4bb}'..='\u{1d4bb}',+    '\u{1d4bd}'..='\u{1d4c3}', '\u{1d4c5}'..='\u{1d505}', '\u{1d507}'..='\u{1d50a}',+    '\u{1d50d}'..='\u{1d514}', '\u{1d516}'..='\u{1d51c}', '\u{1d51e}'..='\u{1d539}',+    '\u{1d53b}'..='\u{1d53e}', '\u{1d540}'..='\u{1d544}', '\u{1d546}'..='\u{1d546}',+    '\u{1d54a}'..='\u{1d550}', '\u{1d552}'..='\u{1d6a6}', '\u{1d6a8}'..='\u{1d6c0}',+    '\u{1d6c2}'..='\u{1d6da}', '\u{1d6dc}'..='\u{1d6fa}', '\u{1d6fc}'..='\u{1d714}',+    '\u{1d716}'..='\u{1d734}', '\u{1d736}'..='\u{1d74e}', '\u{1d750}'..='\u{1d76e}',+    '\u{1d770}'..='\u{1d788}', '\u{1d78a}'..='\u{1d7a8}', '\u{1d7aa}'..='\u{1d7c2}',+    '\u{1d7c4}'..='\u{1d7cb}', '\u{1d7ce}'..='\u{1d7ff}', '\u{1da00}'..='\u{1da36}',+    '\u{1da3b}'..='\u{1da6c}', '\u{1da75}'..='\u{1da75}', '\u{1da84}'..='\u{1da84}',+    '\u{1da9b}'..='\u{1da9f}', '\u{1daa1}'..='\u{1daaf}', '\u{1df00}'..='\u{1df81}',+    '\u{1df90}'..='\u{1df96}', '\u{1dfcd}'..='\u{1e006}', '\u{1e008}'..='\u{1e018}',+    '\u{1e01b}'..='\u{1e021}', '\u{1e023}'..='\u{1e024}', '\u{1e026}'..='\u{1e02a}',+    '\u{1e030}'..='\u{1e06d}', '\u{1e08f}'..='\u{1e08f}', '\u{1e100}'..='\u{1e12c}',+    '\u{1e130}'..='\u{1e13d}', '\u{1e140}'..='\u{1e149}', '\u{1e14e}'..='\u{1e14e}',+    '\u{1e290}'..='\u{1e2ae}', '\u{1e2c0}'..='\u{1e2f9}', '\u{1e4d0}'..='\u{1e4f9}',+    '\u{1e5d0}'..='\u{1e5fa}', '\u{1e6c0}'..='\u{1e6de}', '\u{1e6e0}'..='\u{1e6f5}',+    '\u{1e6fe}'..='\u{1e6ff}', '\u{1e7e0}'..='\u{1e7e6}', '\u{1e7e8}'..='\u{1e7eb}',+    '\u{1e7ed}'..='\u{1e7ee}', '\u{1e7f0}'..='\u{1e7fe}', '\u{1e800}'..='\u{1e8c4}',+    '\u{1e8d0}'..='\u{1e8d6}', '\u{1e900}'..='\u{1e94b}', '\u{1e950}'..='\u{1e959}',+    '\u{1ee00}'..='\u{1ee03}', '\u{1ee05}'..='\u{1ee1f}', '\u{1ee21}'..='\u{1ee22}',+    '\u{1ee24}'..='\u{1ee24}', '\u{1ee27}'..='\u{1ee27}', '\u{1ee29}'..='\u{1ee32}',+    '\u{1ee34}'..='\u{1ee37}', '\u{1ee39}'..='\u{1ee39}', '\u{1ee3b}'..='\u{1ee3b}',+    '\u{1ee42}'..='\u{1ee42}', '\u{1ee47}'..='\u{1ee47}', '\u{1ee49}'..='\u{1ee49}',+    '\u{1ee4b}'..='\u{1ee4b}', '\u{1ee4d}'..='\u{1ee4f}', '\u{1ee51}'..='\u{1ee52}',+    '\u{1ee54}'..='\u{1ee54}', '\u{1ee57}'..='\u{1ee57}', '\u{1ee59}'..='\u{1ee59}',+    '\u{1ee5b}'..='\u{1ee5b}', '\u{1ee5d}'..='\u{1ee5d}', '\u{1ee5f}'..='\u{1ee5f}',+    '\u{1ee61}'..='\u{1ee62}', '\u{1ee64}'..='\u{1ee64}', '\u{1ee67}'..='\u{1ee6a}',+    '\u{1ee6c}'..='\u{1ee72}', '\u{1ee74}'..='\u{1ee77}', '\u{1ee79}'..='\u{1ee7c}',+    '\u{1ee7e}'..='\u{1ee7e}', '\u{1ee80}'..='\u{1ee89}', '\u{1ee8b}'..='\u{1ee9b}',+    '\u{1eea1}'..='\u{1eea3}', '\u{1eea5}'..='\u{1eea9}', '\u{1eeab}'..='\u{1eebb}',+    '\u{1fbf0}'..='\u{1fbf9}', '\u{20000}'..='\u{2a6df}', '\u{2a700}'..='\u{2b81e}',+    '\u{2b820}'..='\u{2cead}', '\u{2ceb0}'..='\u{2ebe0}', '\u{2ebf0}'..='\u{2ee5d}',+    '\u{2f800}'..='\u{2fa1d}', '\u{30000}'..='\u{3134a}', '\u{31350}'..='\u{33479}',+    '\u{3d000}'..='\u{3fc3f}', '\u{e0100}'..='\u{e01ef}',+];++#[rustfmt::skip]+pub(super) static XID_START: &[RangeInclusive<char>; 700] = &[+    '\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}'..='\u{2ee}', '\u{370}'..='\u{374}', '\u{376}'..='\u{377}',+    '\u{37b}'..='\u{37d}', '\u{37f}'..='\u{37f}', '\u{386}'..='\u{386}', '\u{388}'..='\u{38a}',+    '\u{38c}'..='\u{38c}', '\u{38e}'..='\u{3a1}', '\u{3a3}'..='\u{3f5}', '\u{3f7}'..='\u{481}',+    '\u{48a}'..='\u{52f}', '\u{531}'..='\u{556}', '\u{558}'..='\u{559}', '\u{560}'..='\u{588}',+    '\u{58b}'..='\u{58c}', '\u{5d0}'..='\u{5ea}', '\u{5ef}'..='\u{5f2}', '\u{620}'..='\u{64a}',+    '\u{66e}'..='\u{66f}', '\u{671}'..='\u{6d3}', '\u{6d5}'..='\u{6d5}', '\u{6e5}'..='\u{6e6}',+    '\u{6ee}'..='\u{6ef}', '\u{6fa}'..='\u{6fc}', '\u{6ff}'..='\u{6ff}', '\u{710}'..='\u{710}',+    '\u{712}'..='\u{72f}', '\u{74d}'..='\u{7a5}', '\u{7b1}'..='\u{7b1}', '\u{7ca}'..='\u{7ea}',+    '\u{7f4}'..='\u{7f5}', '\u{7fa}'..='\u{7fa}', '\u{800}'..='\u{815}', '\u{81a}'..='\u{81a}',+    '\u{824}'..='\u{824}', '\u{828}'..='\u{828}', '\u{840}'..='\u{858}', '\u{860}'..='\u{86a}',+    '\u{870}'..='\u{887}', '\u{889}'..='\u{88f}', '\u{8a0}'..='\u{8c9}', '\u{904}'..='\u{939}',+    '\u{93d}'..='\u{93d}', '\u{950}'..='\u{950}', '\u{958}'..='\u{961}', '\u{971}'..='\u{980}',+    '\u{985}'..='\u{98c}', '\u{98f}'..='\u{990}', '\u{993}'..='\u{9a8}', '\u{9aa}'..='\u{9b0}',+    '\u{9b2}'..='\u{9b2}', '\u{9b6}'..='\u{9b9}', '\u{9bd}'..='\u{9bd}', '\u{9ce}'..='\u{9ce}',+    '\u{9dc}'..='\u{9dd}', '\u{9df}'..='\u{9e1}', '\u{9f0}'..='\u{9f1}', '\u{9fc}'..='\u{9fc}',+    '\u{a05}'..='\u{a0a}', '\u{a0f}'..='\u{a10}', '\u{a13}'..='\u{a28}', '\u{a2a}'..='\u{a30}',+    '\u{a32}'..='\u{a33}', '\u{a35}'..='\u{a36}', '\u{a38}'..='\u{a39}', '\u{a59}'..='\u{a5c}',+    '\u{a5e}'..='\u{a5e}', '\u{a72}'..='\u{a74}', '\u{a85}'..='\u{a8d}', '\u{a8f}'..='\u{a91}',+    '\u{a93}'..='\u{aa8}', '\u{aaa}'..='\u{ab0}', '\u{ab2}'..='\u{ab3}', '\u{ab5}'..='\u{ab9}',+    '\u{abd}'..='\u{abd}', '\u{ad0}'..='\u{ad0}', '\u{ae0}'..='\u{ae1}', '\u{af9}'..='\u{af9}',+    '\u{b05}'..='\u{b0c}', '\u{b0f}'..='\u{b10}', '\u{b13}'..='\u{b28}', '\u{b2a}'..='\u{b30}',+    '\u{b32}'..='\u{b33}', '\u{b35}'..='\u{b39}', '\u{b3d}'..='\u{b3d}', '\u{b5c}'..='\u{b5d}',+    '\u{b5f}'..='\u{b61}', '\u{b71}'..='\u{b71}', '\u{b83}'..='\u{b83}', '\u{b85}'..='\u{b8a}',+    '\u{b8e}'..='\u{b90}', '\u{b92}'..='\u{b95}', '\u{b99}'..='\u{b9a}', '\u{b9c}'..='\u{b9c}',+    '\u{b9e}'..='\u{b9f}', '\u{ba3}'..='\u{ba4}', '\u{ba8}'..='\u{baa}', '\u{bae}'..='\u{bb9}',+    '\u{bd0}'..='\u{bd0}', '\u{c05}'..='\u{c0c}', '\u{c0e}'..='\u{c10}', '\u{c12}'..='\u{c28}',+    '\u{c2a}'..='\u{c39}', '\u{c3d}'..='\u{c3d}', '\u{c58}'..='\u{c5a}', '\u{c5c}'..='\u{c5d}',+    '\u{c60}'..='\u{c61}', '\u{c80}'..='\u{c80}', '\u{c85}'..='\u{c8c}', '\u{c8e}'..='\u{c90}',+    '\u{c92}'..='\u{ca8}', '\u{caa}'..='\u{cb3}', '\u{cb5}'..='\u{cb9}', '\u{cbd}'..='\u{cbd}',+    '\u{cdc}'..='\u{cde}', '\u{ce0}'..='\u{ce1}', '\u{cf1}'..='\u{cf2}', '\u{d04}'..='\u{d0c}',+    '\u{d0e}'..='\u{d10}', '\u{d12}'..='\u{d3a}', '\u{d3d}'..='\u{d3d}', '\u{d4e}'..='\u{d4e}',+    '\u{d54}'..='\u{d56}', '\u{d5f}'..='\u{d61}', '\u{d7a}'..='\u{d7f}', '\u{d85}'..='\u{d96}',+    '\u{d9a}'..='\u{db1}', '\u{db3}'..='\u{dbb}', '\u{dbd}'..='\u{dbd}', '\u{dc0}'..='\u{dc6}',+    '\u{e01}'..='\u{e30}', '\u{e32}'..='\u{e32}', '\u{e40}'..='\u{e46}', '\u{e81}'..='\u{e82}',+    '\u{e84}'..='\u{e84}', '\u{e86}'..='\u{e8a}', '\u{e8c}'..='\u{ea3}', '\u{ea5}'..='\u{ea5}',+    '\u{ea7}'..='\u{eb0}', '\u{eb2}'..='\u{eb2}', '\u{ebd}'..='\u{ebd}', '\u{ec0}'..='\u{ec4}',+    '\u{ec6}'..='\u{ec6}', '\u{edc}'..='\u{edf}', '\u{f00}'..='\u{f00}', '\u{f40}'..='\u{f47}',+    '\u{f49}'..='\u{f6c}', '\u{f88}'..='\u{f8c}', '\u{1000}'..='\u{102a}',+    '\u{103f}'..='\u{103f}', '\u{1050}'..='\u{1055}', '\u{105a}'..='\u{105d}',+    '\u{1061}'..='\u{1061}', '\u{1065}'..='\u{1066}', '\u{106e}'..='\u{1070}',+    '\u{1075}'..='\u{1081}', '\u{108e}'..='\u{108e}', '\u{10a0}'..='\u{10c5}',+    '\u{10c7}'..='\u{10c7}', '\u{10cd}'..='\u{10cd}', '\u{10d0}'..='\u{10fa}',+    '\u{10fc}'..='\u{1248}', '\u{124a}'..='\u{124d}', '\u{1250}'..='\u{1256}',+    '\u{1258}'..='\u{1258}', '\u{125a}'..='\u{125d}', '\u{1260}'..='\u{1288}',+    '\u{128a}'..='\u{128d}', '\u{1290}'..='\u{12b0}', '\u{12b2}'..='\u{12b5}',+    '\u{12b8}'..='\u{12be}', '\u{12c0}'..='\u{12c0}', '\u{12c2}'..='\u{12c5}',+    '\u{12c8}'..='\u{12d6}', '\u{12d8}'..='\u{1310}', '\u{1312}'..='\u{1315}',+    '\u{1318}'..='\u{135a}', '\u{1380}'..='\u{138f}', '\u{13a0}'..='\u{13f5}',+    '\u{13f8}'..='\u{13fd}', '\u{1401}'..='\u{166c}', '\u{166f}'..='\u{167f}',+    '\u{1681}'..='\u{169a}', '\u{16a0}'..='\u{16ea}', '\u{16ee}'..='\u{16f8}',+    '\u{1700}'..='\u{1711}', '\u{171f}'..='\u{1731}', '\u{1740}'..='\u{1751}',+    '\u{1760}'..='\u{176c}', '\u{176e}'..='\u{1770}', '\u{1780}'..='\u{17b3}',+    '\u{17d7}'..='\u{17d7}', '\u{17dc}'..='\u{17dc}', '\u{1820}'..='\u{1878}',+    '\u{1880}'..='\u{18a8}', '\u{18aa}'..='\u{18aa}', '\u{18b0}'..='\u{18f5}',+    '\u{1900}'..='\u{191e}', '\u{1950}'..='\u{196d}', '\u{1970}'..='\u{1974}',+    '\u{1980}'..='\u{19ab}', '\u{19b0}'..='\u{19c9}', '\u{1a00}'..='\u{1a16}',+    '\u{1a20}'..='\u{1a54}', '\u{1aa7}'..='\u{1aa7}', '\u{1b05}'..='\u{1b33}',+    '\u{1b45}'..='\u{1b4c}', '\u{1b83}'..='\u{1ba0}', '\u{1bae}'..='\u{1baf}',+    '\u{1bba}'..='\u{1be5}', '\u{1c00}'..='\u{1c23}', '\u{1c4d}'..='\u{1c4f}',+    '\u{1c5a}'..='\u{1c7d}', '\u{1c80}'..='\u{1c8a}', '\u{1c90}'..='\u{1cba}',+    '\u{1cbd}'..='\u{1cbf}', '\u{1ce9}'..='\u{1cec}', '\u{1cee}'..='\u{1cf3}',+    '\u{1cf5}'..='\u{1cf6}', '\u{1cfa}'..='\u{1cfa}', '\u{1d00}'..='\u{1dbf}',+    '\u{1e00}'..='\u{1f15}', '\u{1f18}'..='\u{1f1d}', '\u{1f20}'..='\u{1f45}',+    '\u{1f48}'..='\u{1f4d}', '\u{1f50}'..='\u{1f57}', '\u{1f59}'..='\u{1f59}',+    '\u{1f5b}'..='\u{1f5b}', '\u{1f5d}'..='\u{1f5d}', '\u{1f5f}'..='\u{1f7d}',+    '\u{1f80}'..='\u{1fb4}', '\u{1fb6}'..='\u{1fbc}', '\u{1fbe}'..='\u{1fbe}',+    '\u{1fc2}'..='\u{1fc4}', '\u{1fc6}'..='\u{1fcc}', '\u{1fd0}'..='\u{1fd3}',+    '\u{1fd6}'..='\u{1fdb}', '\u{1fe0}'..='\u{1fec}', '\u{1ff2}'..='\u{1ff4}',+    '\u{1ff6}'..='\u{1ffc}', '\u{2071}'..='\u{2071}', '\u{207f}'..='\u{207f}',+    '\u{208f}'..='\u{209f}', '\u{2102}'..='\u{2102}', '\u{2107}'..='\u{2107}',+    '\u{210a}'..='\u{2113}', '\u{2115}'..='\u{2115}', '\u{2118}'..='\u{211d}',+    '\u{2124}'..='\u{2124}', '\u{2126}'..='\u{2126}', '\u{2128}'..='\u{2128}',+    '\u{212a}'..='\u{2139}', '\u{213c}'..='\u{213f}', '\u{2145}'..='\u{2149}',+    '\u{214e}'..='\u{214e}', '\u{2160}'..='\u{2188}', '\u{2c00}'..='\u{2ce4}',+    '\u{2ceb}'..='\u{2cee}', '\u{2cf2}'..='\u{2cf3}', '\u{2d00}'..='\u{2d25}',+    '\u{2d27}'..='\u{2d27}', '\u{2d2d}'..='\u{2d2d}', '\u{2d30}'..='\u{2d67}',+    '\u{2d6f}'..='\u{2d6f}', '\u{2d80}'..='\u{2d96}', '\u{2da0}'..='\u{2da6}',+    '\u{2da8}'..='\u{2dae}', '\u{2db0}'..='\u{2db6}', '\u{2db8}'..='\u{2dbe}',+    '\u{2dc0}'..='\u{2dc6}', '\u{2dc8}'..='\u{2dce}', '\u{2dd0}'..='\u{2dd6}',+    '\u{2dd8}'..='\u{2dde}', '\u{3005}'..='\u{3007}', '\u{3021}'..='\u{3029}',+    '\u{3031}'..='\u{3035}', '\u{3038}'..='\u{303c}', '\u{3041}'..='\u{3096}',+    '\u{309d}'..='\u{309f}', '\u{30a1}'..='\u{30fa}', '\u{30fc}'..='\u{30ff}',+    '\u{3105}'..='\u{312f}', '\u{3131}'..='\u{318e}', '\u{31a0}'..='\u{31bf}',+    '\u{31f0}'..='\u{31ff}', '\u{3400}'..='\u{4dbf}', '\u{4e00}'..='\u{a48c}',+    '\u{a4d0}'..='\u{a4fd}', '\u{a500}'..='\u{a60c}', '\u{a610}'..='\u{a61f}',+    '\u{a62a}'..='\u{a62b}', '\u{a640}'..='\u{a66e}', '\u{a67f}'..='\u{a69d}',+    '\u{a6a0}'..='\u{a6ef}', '\u{a717}'..='\u{a71f}', '\u{a722}'..='\u{a788}',+    '\u{a78b}'..='\u{a7dd}', '\u{a7e2}'..='\u{a7e2}', '\u{a7f1}'..='\u{a801}',+    '\u{a803}'..='\u{a805}', '\u{a807}'..='\u{a80a}', '\u{a80c}'..='\u{a822}',+    '\u{a840}'..='\u{a873}', '\u{a882}'..='\u{a8b3}', '\u{a8f2}'..='\u{a8f7}',+    '\u{a8fb}'..='\u{a8fb}', '\u{a8fd}'..='\u{a8fe}', '\u{a90a}'..='\u{a925}',+    '\u{a930}'..='\u{a946}', '\u{a960}'..='\u{a97c}', '\u{a984}'..='\u{a9b2}',+    '\u{a9cf}'..='\u{a9cf}', '\u{a9e0}'..='\u{a9e4}', '\u{a9e6}'..='\u{a9ef}',+    '\u{a9fa}'..='\u{a9fe}', '\u{aa00}'..='\u{aa28}', '\u{aa40}'..='\u{aa42}',+    '\u{aa44}'..='\u{aa4b}', '\u{aa60}'..='\u{aa76}', '\u{aa7a}'..='\u{aa7a}',+    '\u{aa7e}'..='\u{aaaf}', '\u{aab1}'..='\u{aab1}', '\u{aab5}'..='\u{aab6}',+    '\u{aab9}'..='\u{aabd}', '\u{aac0}'..='\u{aac0}', '\u{aac2}'..='\u{aac2}',+    '\u{aadb}'..='\u{aadd}', '\u{aae0}'..='\u{aaea}', '\u{aaf2}'..='\u{aaf4}',+    '\u{ab01}'..='\u{ab06}', '\u{ab09}'..='\u{ab0e}', '\u{ab11}'..='\u{ab16}',+    '\u{ab20}'..='\u{ab26}', '\u{ab28}'..='\u{ab2e}', '\u{ab30}'..='\u{ab5a}',+    '\u{ab5c}'..='\u{ab69}', '\u{ab6c}'..='\u{ab6d}', '\u{ab70}'..='\u{abe2}',+    '\u{ac00}'..='\u{d7a3}', '\u{d7b0}'..='\u{d7c6}', '\u{d7cb}'..='\u{d7fb}',+    '\u{f900}'..='\u{fa6d}', '\u{fa70}'..='\u{fad9}', '\u{fb00}'..='\u{fb06}',+    '\u{fb13}'..='\u{fb17}', '\u{fb1d}'..='\u{fb1d}', '\u{fb1f}'..='\u{fb28}',+    '\u{fb2a}'..='\u{fb36}', '\u{fb38}'..='\u{fb3c}', '\u{fb3e}'..='\u{fb3e}',+    '\u{fb40}'..='\u{fb41}', '\u{fb43}'..='\u{fb44}', '\u{fb46}'..='\u{fbb1}',+    '\u{fbd3}'..='\u{fc5d}', '\u{fc64}'..='\u{fd3d}', '\u{fd50}'..='\u{fd8f}',+    '\u{fd92}'..='\u{fdc7}', '\u{fdf0}'..='\u{fdf9}', '\u{fe71}'..='\u{fe71}',+    '\u{fe73}'..='\u{fe73}', '\u{fe77}'..='\u{fe77}', '\u{fe79}'..='\u{fe79}',+    '\u{fe7b}'..='\u{fe7b}', '\u{fe7d}'..='\u{fe7d}', '\u{fe7f}'..='\u{fefc}',+    '\u{ff21}'..='\u{ff3a}', '\u{ff41}'..='\u{ff5a}', '\u{ff66}'..='\u{ff9d}',+    '\u{ffa0}'..='\u{ffbe}', '\u{ffc2}'..='\u{ffc7}', '\u{ffca}'..='\u{ffcf}',+    '\u{ffd2}'..='\u{ffd7}', '\u{ffda}'..='\u{ffdc}', '\u{10000}'..='\u{1000b}',+    '\u{1000d}'..='\u{10026}', '\u{10028}'..='\u{1003a}', '\u{1003c}'..='\u{1003d}',+    '\u{1003f}'..='\u{1004d}', '\u{10050}'..='\u{1005d}', '\u{10080}'..='\u{100fa}',+    '\u{10140}'..='\u{10174}', '\u{10280}'..='\u{1029c}', '\u{102a0}'..='\u{102d0}',+    '\u{10300}'..='\u{1031f}', '\u{1032d}'..='\u{1034a}', '\u{10350}'..='\u{10375}',+    '\u{10380}'..='\u{1039d}', '\u{103a0}'..='\u{103c3}', '\u{103c8}'..='\u{103cf}',+    '\u{103d1}'..='\u{103d5}', '\u{10400}'..='\u{1049d}', '\u{104b0}'..='\u{104d3}',+    '\u{104d8}'..='\u{104fb}', '\u{10500}'..='\u{10527}', '\u{10530}'..='\u{10563}',+    '\u{10570}'..='\u{1057a}', '\u{1057c}'..='\u{1058a}', '\u{1058c}'..='\u{10592}',+    '\u{10594}'..='\u{10595}', '\u{10597}'..='\u{105a1}', '\u{105a3}'..='\u{105b1}',+    '\u{105b3}'..='\u{105b9}', '\u{105bb}'..='\u{105bc}', '\u{105c0}'..='\u{105f3}',+    '\u{10600}'..='\u{10736}', '\u{10740}'..='\u{10755}', '\u{10760}'..='\u{10767}',+    '\u{10780}'..='\u{10785}', '\u{10787}'..='\u{107b0}', '\u{107b2}'..='\u{107bf}',+    '\u{10800}'..='\u{10805}', '\u{10808}'..='\u{10808}', '\u{1080a}'..='\u{10835}',+    '\u{10837}'..='\u{10838}', '\u{1083c}'..='\u{1083c}', '\u{1083f}'..='\u{10855}',+    '\u{10860}'..='\u{10876}', '\u{10880}'..='\u{1089e}', '\u{108e0}'..='\u{108f2}',+    '\u{108f4}'..='\u{108f5}', '\u{10900}'..='\u{10915}', '\u{10920}'..='\u{10939}',+    '\u{10940}'..='\u{10959}', '\u{10980}'..='\u{109b7}', '\u{109be}'..='\u{109bf}',+    '\u{10a00}'..='\u{10a00}', '\u{10a10}'..='\u{10a13}', '\u{10a15}'..='\u{10a17}',+    '\u{10a19}'..='\u{10a35}', '\u{10a60}'..='\u{10a7c}', '\u{10a80}'..='\u{10a9c}',+    '\u{10ac0}'..='\u{10ac7}', '\u{10ac9}'..='\u{10ae4}', '\u{10b00}'..='\u{10b35}',+    '\u{10b40}'..='\u{10b55}', '\u{10b60}'..='\u{10b72}', '\u{10b80}'..='\u{10b91}',+    '\u{10c00}'..='\u{10c48}', '\u{10c80}'..='\u{10cb2}', '\u{10cc0}'..='\u{10cf2}',+    '\u{10d00}'..='\u{10d23}', '\u{10d4a}'..='\u{10d65}', '\u{10d6f}'..='\u{10d85}',+    '\u{10e80}'..='\u{10ea9}', '\u{10eb0}'..='\u{10eb1}', '\u{10ec2}'..='\u{10ec7}',+    '\u{10ed9}'..='\u{10eee}', '\u{10f00}'..='\u{10f1c}', '\u{10f27}'..='\u{10f27}',+    '\u{10f30}'..='\u{10f45}', '\u{10f70}'..='\u{10f81}', '\u{10fb0}'..='\u{10fc4}',+    '\u{10fe0}'..='\u{10ff6}', '\u{11003}'..='\u{11037}', '\u{11071}'..='\u{11072}',+    '\u{11075}'..='\u{11075}', '\u{11083}'..='\u{110af}', '\u{110d0}'..='\u{110e8}',+    '\u{11103}'..='\u{11126}', '\u{11144}'..='\u{11144}', '\u{11147}'..='\u{11147}',+    '\u{11150}'..='\u{11172}', '\u{11176}'..='\u{11176}', '\u{11183}'..='\u{111b2}',+    '\u{111c1}'..='\u{111c4}', '\u{111da}'..='\u{111da}', '\u{111dc}'..='\u{111dc}',+    '\u{11200}'..='\u{11211}', '\u{11213}'..='\u{1122b}', '\u{1123f}'..='\u{11240}',+    '\u{11280}'..='\u{11286}', '\u{11288}'..='\u{11288}', '\u{1128a}'..='\u{1128d}',+    '\u{1128f}'..='\u{1129d}', '\u{1129f}'..='\u{112a8}', '\u{112b0}'..='\u{112de}',+    '\u{11305}'..='\u{1130c}', '\u{1130f}'..='\u{11310}', '\u{11313}'..='\u{11328}',+    '\u{1132a}'..='\u{11330}', '\u{11332}'..='\u{11333}', '\u{11335}'..='\u{11339}',+    '\u{1133d}'..='\u{1133d}', '\u{11350}'..='\u{11350}', '\u{1135d}'..='\u{11361}',+    '\u{11380}'..='\u{11389}', '\u{1138b}'..='\u{1138b}', '\u{1138e}'..='\u{1138e}',+    '\u{11390}'..='\u{113b5}', '\u{113b7}'..='\u{113b7}', '\u{113d1}'..='\u{113d1}',+    '\u{113d3}'..='\u{113d3}', '\u{11400}'..='\u{11434}', '\u{11447}'..='\u{1144a}',+    '\u{1145f}'..='\u{11461}', '\u{11480}'..='\u{114af}', '\u{114c4}'..='\u{114c5}',+    '\u{114c7}'..='\u{114c7}', '\u{11580}'..='\u{115ae}', '\u{115d8}'..='\u{115db}',+    '\u{11600}'..='\u{1162f}', '\u{11644}'..='\u{11644}', '\u{11680}'..='\u{116aa}',+    '\u{116b8}'..='\u{116b8}', '\u{11700}'..='\u{1171a}', '\u{11740}'..='\u{11746}',+    '\u{11800}'..='\u{1182b}', '\u{118a0}'..='\u{118df}', '\u{118ff}'..='\u{11906}',+    '\u{11909}'..='\u{11909}', '\u{1190c}'..='\u{11913}', '\u{11915}'..='\u{11916}',+    '\u{11918}'..='\u{1192f}', '\u{1193f}'..='\u{1193f}', '\u{11941}'..='\u{11941}',+    '\u{119a0}'..='\u{119a7}', '\u{119aa}'..='\u{119d0}', '\u{119e1}'..='\u{119e1}',+    '\u{119e3}'..='\u{119e3}', '\u{11a00}'..='\u{11a00}', '\u{11a0b}'..='\u{11a32}',+    '\u{11a3a}'..='\u{11a3a}', '\u{11a50}'..='\u{11a50}', '\u{11a5c}'..='\u{11a89}',+    '\u{11a9d}'..='\u{11a9d}', '\u{11ab0}'..='\u{11af8}', '\u{11b0a}'..='\u{11b0a}',+    '\u{11bc0}'..='\u{11be0}', '\u{11c00}'..='\u{11c08}', '\u{11c0a}'..='\u{11c2e}',+    '\u{11c40}'..='\u{11c40}', '\u{11c72}'..='\u{11c8f}', '\u{11d00}'..='\u{11d06}',+    '\u{11d08}'..='\u{11d09}', '\u{11d0b}'..='\u{11d30}', '\u{11d46}'..='\u{11d46}',+    '\u{11d60}'..='\u{11d65}', '\u{11d67}'..='\u{11d68}', '\u{11d6a}'..='\u{11d89}',+    '\u{11d98}'..='\u{11d98}', '\u{11db0}'..='\u{11ddb}', '\u{11df1}'..='\u{11df1}',+    '\u{11ee0}'..='\u{11ef2}', '\u{11f02}'..='\u{11f02}', '\u{11f04}'..='\u{11f10}',+    '\u{11f12}'..='\u{11f33}', '\u{11fb0}'..='\u{11fb0}', '\u{12000}'..='\u{12399}',+    '\u{12400}'..='\u{1246f}', '\u{12475}'..='\u{12543}', '\u{12550}'..='\u{12686}',+    '\u{12f90}'..='\u{12ff0}', '\u{13000}'..='\u{1342f}', '\u{13441}'..='\u{13446}',+    '\u{13460}'..='\u{143fa}', '\u{14400}'..='\u{14646}', '\u{16100}'..='\u{1611d}',+    '\u{16800}'..='\u{16a38}', '\u{16a40}'..='\u{16a5e}', '\u{16a70}'..='\u{16abe}',+    '\u{16ad0}'..='\u{16aed}', '\u{16b00}'..='\u{16b2f}', '\u{16b40}'..='\u{16b43}',+    '\u{16b63}'..='\u{16b77}', '\u{16b7d}'..='\u{16b8f}', '\u{16d40}'..='\u{16d6c}',+    '\u{16e40}'..='\u{16e7f}', '\u{16ea0}'..='\u{16eb8}', '\u{16ebb}'..='\u{16ed3}',+    '\u{16f00}'..='\u{16f4a}', '\u{16f50}'..='\u{16f50}', '\u{16f93}'..='\u{16f9f}',+    '\u{16fe0}'..='\u{16fe1}', '\u{16fe3}'..='\u{16fe3}', '\u{16ff2}'..='\u{16ff6}',+    '\u{17000}'..='\u{18cda}', '\u{18cff}'..='\u{18d20}', '\u{18d80}'..='\u{18df2}',+    '\u{18e00}'..='\u{19191}', '\u{191a0}'..='\u{191d2}', '\u{1aff0}'..='\u{1aff3}',+    '\u{1aff5}'..='\u{1affb}', '\u{1affd}'..='\u{1affe}', '\u{1b000}'..='\u{1b128}',+    '\u{1b132}'..='\u{1b132}', '\u{1b150}'..='\u{1b152}', '\u{1b155}'..='\u{1b155}',+    '\u{1b164}'..='\u{1b168}', '\u{1b170}'..='\u{1b2fb}', '\u{1bc00}'..='\u{1bc6a}',+    '\u{1bc70}'..='\u{1bc7c}', '\u{1bc80}'..='\u{1bc88}', '\u{1bc90}'..='\u{1bc99}',+    '\u{1d400}'..='\u{1d454}', '\u{1d456}'..='\u{1d49c}', '\u{1d49e}'..='\u{1d49f}',+    '\u{1d4a2}'..='\u{1d4a2}', '\u{1d4a5}'..='\u{1d4a6}', '\u{1d4a9}'..='\u{1d4ac}',+    '\u{1d4ae}'..='\u{1d4b9}', '\u{1d4bb}'..='\u{1d4bb}', '\u{1d4bd}'..='\u{1d4c3}',+    '\u{1d4c5}'..='\u{1d505}', '\u{1d507}'..='\u{1d50a}', '\u{1d50d}'..='\u{1d514}',+    '\u{1d516}'..='\u{1d51c}', '\u{1d51e}'..='\u{1d539}', '\u{1d53b}'..='\u{1d53e}',+    '\u{1d540}'..='\u{1d544}', '\u{1d546}'..='\u{1d546}', '\u{1d54a}'..='\u{1d550}',+    '\u{1d552}'..='\u{1d6a6}', '\u{1d6a8}'..='\u{1d6c0}', '\u{1d6c2}'..='\u{1d6da}',+    '\u{1d6dc}'..='\u{1d6fa}', '\u{1d6fc}'..='\u{1d714}', '\u{1d716}'..='\u{1d734}',+    '\u{1d736}'..='\u{1d74e}', '\u{1d750}'..='\u{1d76e}', '\u{1d770}'..='\u{1d788}',+    '\u{1d78a}'..='\u{1d7a8}', '\u{1d7aa}'..='\u{1d7c2}', '\u{1d7c4}'..='\u{1d7cb}',+    '\u{1df00}'..='\u{1df81}', '\u{1df90}'..='\u{1df96}', '\u{1dfcd}'..='\u{1dfff}',+    '\u{1e030}'..='\u{1e06d}', '\u{1e100}'..='\u{1e12c}', '\u{1e137}'..='\u{1e13d}',+    '\u{1e14e}'..='\u{1e14e}', '\u{1e290}'..='\u{1e2ad}', '\u{1e2c0}'..='\u{1e2eb}',+    '\u{1e4d0}'..='\u{1e4eb}', '\u{1e5d0}'..='\u{1e5ed}', '\u{1e5f0}'..='\u{1e5f0}',+    '\u{1e6c0}'..='\u{1e6de}', '\u{1e6e0}'..='\u{1e6e2}', '\u{1e6e4}'..='\u{1e6e5}',+    '\u{1e6e7}'..='\u{1e6ed}', '\u{1e6f0}'..='\u{1e6f4}', '\u{1e6fe}'..='\u{1e6ff}',+    '\u{1e7e0}'..='\u{1e7e6}', '\u{1e7e8}'..='\u{1e7eb}', '\u{1e7ed}'..='\u{1e7ee}',+    '\u{1e7f0}'..='\u{1e7fe}', '\u{1e800}'..='\u{1e8c4}', '\u{1e900}'..='\u{1e943}',+    '\u{1e94b}'..='\u{1e94b}', '\u{1ee00}'..='\u{1ee03}', '\u{1ee05}'..='\u{1ee1f}',+    '\u{1ee21}'..='\u{1ee22}', '\u{1ee24}'..='\u{1ee24}', '\u{1ee27}'..='\u{1ee27}',+    '\u{1ee29}'..='\u{1ee32}', '\u{1ee34}'..='\u{1ee37}', '\u{1ee39}'..='\u{1ee39}',+    '\u{1ee3b}'..='\u{1ee3b}', '\u{1ee42}'..='\u{1ee42}', '\u{1ee47}'..='\u{1ee47}',+    '\u{1ee49}'..='\u{1ee49}', '\u{1ee4b}'..='\u{1ee4b}', '\u{1ee4d}'..='\u{1ee4f}',+    '\u{1ee51}'..='\u{1ee52}', '\u{1ee54}'..='\u{1ee54}', '\u{1ee57}'..='\u{1ee57}',+    '\u{1ee59}'..='\u{1ee59}', '\u{1ee5b}'..='\u{1ee5b}', '\u{1ee5d}'..='\u{1ee5d}',+    '\u{1ee5f}'..='\u{1ee5f}', '\u{1ee61}'..='\u{1ee62}', '\u{1ee64}'..='\u{1ee64}',+    '\u{1ee67}'..='\u{1ee6a}', '\u{1ee6c}'..='\u{1ee72}', '\u{1ee74}'..='\u{1ee77}',+    '\u{1ee79}'..='\u{1ee7c}', '\u{1ee7e}'..='\u{1ee7e}', '\u{1ee80}'..='\u{1ee89}',+    '\u{1ee8b}'..='\u{1ee9b}', '\u{1eea1}'..='\u{1eea3}', '\u{1eea5}'..='\u{1eea9}',+    '\u{1eeab}'..='\u{1eebb}', '\u{20000}'..='\u{2a6df}', '\u{2a700}'..='\u{2b81e}',+    '\u{2b820}'..='\u{2cead}', '\u{2ceb0}'..='\u{2ebe0}', '\u{2ebf0}'..='\u{2ee5d}',+    '\u{2f800}'..='\u{2fa1d}', '\u{30000}'..='\u{3134a}', '\u{31350}'..='\u{33479}',+    '\u{3d000}'..='\u{3fc3f}',+];+ #[rustfmt::skip] pub(super) static TO_LOWER: &[(char, [char; 3]); 1482] = &[     ('\u{c0}', ['\u{e0}', '\u{0}', '\u{0}']), ('\u{c1}', ['\u{e1}', '\u{0}', '\u{0}']),
src/tools/unicode-table-generator/src/main.rs2 + / 0 −
@@ -101,6 +101,8 @@ static PROPERTIES: &[&str] = &[     "N",     "Uppercase",     "White_Space",+    "XID_Continue",+    "XID_Start",     // tidy-alphabetical-end ];