rust-lang/rust · #164474
core: implement `char::is_xid_{start|continue}`
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 23library/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 ];