! / 0 0 0 0 576 ` ‰X‰X‰X‰X‰X‰X‰X_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$13get_unchecked17heb0c32fa89cccc6fE_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$3get17hfc33a9f7558a6bf7E_ZN4core6option15Option$LT$T$GT$9unwrap_or17hfe64f11db43101a4E_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$13get_unchecked17ha319b638ced3549dE_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$3get17h452f56c5933f0df7E_ZN13unicode_ident12is_xid_start17hcd4d21ef1325e377E_ZN13unicode_ident15is_xid_continue17hc43d2a3210898bd5E/ 0 0 0 0 574 ` †X‰_ZN13unicode_ident12is_xid_start17hcd4d21ef1325e377E_ZN13unicode_ident15is_xid_continue17hc43d2a3210898bd5E_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$13get_unchecked17heb0c32fa89cccc6fE_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$3get17hfc33a9f7558a6bf7E_ZN4core6option15Option$LT$T$GT$9unwrap_or17hfe64f11db43101a4E_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$13get_unchecked17ha319b638ced3549dE_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$3get17h452f56c5933f0df7E// 76 ` unicode_ident-6471048e310c06c3.unicode_ident.2b5c1a1328b09674-cgu.0.rcgu.o lib.rmeta/ 0 0 0 644 33685 ` d†ƒ.rmetaCƒ<rust Ю#rustc 1.81.0 (eeb90cda1 2024-09-04)СЦ4–ae'ЃО7`у/Еа–-89ef43c30f9b928eСŒА­“вxшvAйЁЅ›—QБ-1426abde5263ac46Сrustc_std_workspace_coreСXP\ŒщVB*ПD‚Аi-d08e4e7d05aff086С„Ц is_xid_startСis_xid_continueСtablesС … FС Align8С …щ Align64С …щ  ASCII_STARTС  ASCII_CONTINUEС  CHUNKС  TRIE_STARTС   TRIE_CONTINUEС  LEAFС! $ѕ Ќх$ю"trueС,‹ Дћ$„"falseСФ €)Ј4;128Сœ €Ј)Ј4;128Су  @ЈќУ #Ј,л $64С’  ’Ј)Ј4;402С$Љ Ј )Ј4;1793С$Џw рЈ")Ј4;7904СмЈ …'Тщ ЪЖЙЅИŠŠ л„ _„ fmy „ ›Є І„ ­Дфщ „ $сщ УяќЏ­њрШm„ [„ biu „ ‹—с Ђ„ ЉА Ц—tЛ\\Ы\А,и\ щ$п\!бlх\ МTє\ ќГbЃ [![github]](https://github.com/dtolnay/unicode-ident) [![crates-io]](https://crates.io/crates/unicode-ident) [![docs-rs]](https://docs.rs/unicode-ident)СќІЇg [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=githubСќЋjk [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rustСќ–nj [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rsСќ…mѓ
СDї€K Implementation of [Unicode Standard Annex #31][tr31] for determining whichСќ„N= `char` values are valid in programming language identifiers.Сќг@”. [tr31]: https://www.unicode.org/reports/tr31/Сќ˜1ЪK This crate is a better optimized implementation of the older `unicode-xid`СќЮNI crate. This crate uses less static storage, and is able to classify bothСќLJ ASCII and non-ASCII codepoints with better performance, 2–10×СќъM faster than `unicode-xid`.СєИзВDлф ## Comparison of performanceСќш ‰G The following table shows a comparison between five Unicode identifierСќJ implementations.СЄиэ! - `unicode-ident` is this crate;Сќё$F - [`unicode-xid`] is a widely used crate run by the "unicode-rs" org;Сќ– I@ - `ucd-trie` and `fst` are two data structures supported by theСќр C [`ucd-generate`] tool;СфЄ : - [`roaring`] is a Rust implementation of Roaring bitmap.СќС =џ M The *static storage* column shows the total size of `static` tables that theСќƒ P: crate bakes into your binary, measured in 1000s of bytes.Сќд =’ G The remaining columns show the **cost per call** to evaluate whether aСќ– JD single `char` has the XID\_Start or XID\_Continue Unicode property,Сќс GJ comparing across different ratios of ASCII to non-ASCII codepoints in theСќЉ M input data.С|ї ‡; [`unicode-xid`]: https://github.com/unicode-rs/unicode-xidСќ‹>= [`ucd-generate`]: https://github.com/BurntSushi/ucd-generateСќЪ@9 [`roaring`]: https://github.com/RoaringBitmap/roaring-rsСќ‹<Ш> | | static storage | 0% nonascii | 1% | 10% | 100% nonascii |СќЬA |---|---|---|---|---|---|СьŽI | **`unicode-ident`** | 10.4 K | 0.96 ns | 0.95 ns | 1.09 ns | 1.55 ns |СќЌLH | **`unicode-xid`** | 11.8 K | 1.88 ns | 2.14 ns | 3.48 ns | 15.63 ns |СќљKD | **`ucd-trie`** | 10.3 K | 1.29 ns | 1.28 ns | 1.36 ns | 2.15 ns |СќХG> | **`fst`** | 144 K | 55.1 ns | 54.9 ns | 53.2 ns | 28.5 ns |СќAC | **`roaring`** | 66.1 K | 2.78 ns | 3.09 ns | 3.37 ns | 4.70 ns |СќЯF–K Source code for the benchmark is provided in the *bench* directory of thisСќšN7 repo and may be repeated by running `cargo criterion`.Сќщ:ЄВDЈБ! ## Comparison of data structuresСќЕ$к #### unicode-xidСЄоѓL They use a sorted array of character ranges, and do a binary search to lookСќїO? up whether a given character lands inside one of those ranges.СќЧBŠ ```rustС\Ž # const _: &str = stringify! {Сќš"3 static XID_Continue_table: [(char, char); 763] = [СќН6" ('\u{30}', '\u{39}'), // 0-9Сќє%" ('\u{41}', '\u{5a}'), // A-ZСќš% # "С<Р т€ІС\Шї'<д ('\u{e0100}', '\u{e01ef}'),Сќм# ];С4€ # };СD‡ ```С<˜I The static storage used by this data structure scales with the number ofСќœLI contiguous ranges of identifier codepoints in Unicode. Every table entryСќщLI consumes 8 bytes, because it consists of a pair of 32-bit `char` values.СќЖLƒF In some ranges of the Unicode codepoint space, this is quite a sparseСќ‡IH representation – there are some ranges where tens of thousands ofСќбKJ adjacent codepoints are all valid identifier characters. In other places,СќMI the representation is quite inefficient. A characater like `ТЕ` (U+00B5)СќыLI which is surrounded by non-identifier codepoints consumes 64 bits in theСќИL7 table, while it would be just 1 bit in a dense bitmap.Сќ…:РK On a system with 64-byte cache lines, binary searching the table touches 7СќФNC cache lines on average. Each cache line fits only 8 table entries.Сќ“FK Additionally, the branching performed during the binary search is probablyСќкN. mostly unpredictable to the branch predictor.СќЉ1лK Overall, the crate ends up being about 10× slower on non-ASCII inputСќпN compared to the fastest crate.СќЎ "б K A potential improvement would be to pack the table entries more compactly.Сќе NL Rust's `char` type is a 21-bit integer padded to 32 bits, which means everyСќЄ!OI table entry is holding 22 bits of wasted space, adding up to 3.9 K. TheyСќє!LJ could instead fit every table entry into 6 bytes, leaving out some of theСќС"MM padding, for a 25% improvement in space used. With some cleverness it may beСќ#PH possible to fit in 5 bytes or even 4 bytes by storing a low char and anСќр#KK extent, instead of low char and high char. I don't expect that performanceСќЌ$NM would improve much but this could be the most efficient for space across allСќћ$P0 the libraries, needing only about 7 K to store.СќЬ%3€& #### ucd-trieСŒ„&–&H Their data structure is a compressed trie set specifically tailored forСќš&K= Unicode codepoints. The design is credited to Raph Levien inСќц&@ [rust-lang/rust#33098].СмЇ'У'E [rust-lang/rust#33098]: https://github.com/rust-lang/rust/pull/33098СќЧ'H(Ѓ&\”( pub struct TrieSet {СФ (& tree1_level1: &'static [u64; 32],СќЙ()& tree2_level1: &'static [u8; 992],Сќу()" tree2_level2: &'static [u64],Сќ)%& tree3_level1: &'static [u8; 256],СќГ))! tree3_level2: &'static [u8],Сќн)$" tree3_level3: &'static [u64],Сќ‚*% }С,Ј*ш(<Ў*Ж*M It represents codepoint sets using a trie to achieve prefix compression. TheСќК*PH final states of the trie are embedded in leaves or "chunks", where eachСќ‹+KK chunk is a 64-bit integer. Each bit position of the integer corresponds toСќз+NJ whether a particular codepoint is in the set or not. These chunks are notСќІ,ML just a compact representation of the final states of the trie, but are alsoСќє,OF a form of suffix compression. In particular, if multiple ranges of 64СќФ-IM contiguous codepoints have the same Unicode properties, then they all map toСќŽ.P/ the same chunk in the final level of the trie.Сќп.2’/K Being tailored for Unicode codepoints, this trie is partitioned into threeСќ–/NL disjoint sets: tree1, tree2, tree3. The first set corresponds to codepointsСќх/OC \[0, 0x800), the second \[0x800, 0x10000) and the third \[0x10000,СќЕ0FK 0x110000). These partitions conveniently correspond to the space of 1 or 2Сќќ0NJ byte UTF-8 encoded codepoints, 3 byte UTF-8 encoded codepoints and 4 byteСќЫ1M( UTF-8 encoded codepoints, respectively.Сќ™2+Х2L Lookups in this data structure are significantly more efficient than binaryСќЩ2OM search. A lookup touches either 1, 2, or 3 cache lines based on which of theСќ™3P# trie partitions is being accessed.Сќъ3&‘4M One possible performance improvement would be for this crate to expose a wayСќ•4PI to query based on a UTF-8 encoded string, returning the Unicode propertyСќц4LM corresponding to the first character in the string. Without such an API, theСќГ5PK caller is required to tokenize their UTF-8 encoded input data into `char`,Сќ„6NJ hand the `char` into `ucd-trie`, only for `ucd-trie` to undo that work byСќг6ML converting back into the variable-length representation for trie traversal.СќЁ7Oё7 #### fstСdѕ7‚8I Uses a [finite state transducer][fst]. This representation is built intoСќ†8LG [ucd-generate] but I am not aware of any advantage over the `ucd-trie`Сќг8JJ representation. In particular `ucd-trie` is optimized for storing UnicodeСќž9M properties while `fst` is not.Сќь9":) [fst]: https://github.com/BurntSushi/fstСќ“:,; [ucd-generate]: https://github.com/BurntSushi/ucd-generateСќР:>џ:J As far as I can tell, the main thing that causes `fst` to have large sizeСќƒ;MJ and slow lookups for this use case relative to `ucd-trie` is that it doesСќб;MH not specialize for the fact that only 21 of the 32 bits in a `char` areСќŸDˆ?3 [Roaring Bitmap]: https://roaringbitmap.org/about/СќŒ?6У?M Roaring bitmaps are compressed bitmaps which tend to outperform conventionalСќЧ?PM compressed bitmaps such as WAH, EWAH or Concise. In some instances, they canСќ˜@PF be hundreds of times faster and they often offer significantly betterСќщ@I compression.С„ГAФAF In this use case the performance was reasonably competitive but stillСќШAIF substantially slower than the Unicode-optimized crates. Meanwhile theСќ’BIL compression was significantly worse, requiring 6× as much storage forСќмBO the data structure.СМЌCФCM I also benchmarked the [`croaring`] crate which is an FFI wrapper around theСќШCPJ C reference implementation of Roaring Bitmap. This crate was consistentlyСќ™DMM about 15% slower than pure-Rust `roaring`, which could just be FFI overhead.СќчDP I did not investigate further.СќИE"лE0 [`croaring`]: https://crates.io/crates/croaringСќпE3“F #### unicode-identСД—FЎFL This crate is most similar to the `ucd-trie` library, in that it's based onСќВFOL bitmaps stored in the leafs of a trie representation, achieving both prefixСќ‚GO$ compression and suffix compression.СќвG'њG The key differences are:СфўG›HM - Uses a single 2-level trie, rather than 3 disjoint partitions of differentСќŸHP depth each.СŒ№HB - Uses significantly larger chunks: 512 bits rather than 64 bits.Сќ‚IEB - Compresses the XID\_Start and XID\_Continue properties togetherСќШIEL simultaneously, rather than duplicating identical trie leaf chunks acrossСќŽJO the two.СtоJэJL The following diagram show the XID\_Start and XID\_Continue Unicode booleanСќёJO5 properties in uncompressed form, in row-major order:СќСK8њK С\ўK1 СќŠL4 СDПL СќШL   СќщMЃ СLO
XID_StartXID_Continue
XID_Start bitmapXID_Continue bitmap
Сd—OЄOM Uncompressed, these would take 140 K to store, which is beyond what would beСќЈOPJ reasonable. However, as you can see there is a large degree of similarityСќљOMA between the two bitmaps and across the rows, which lends well toСќЧPDW„ŒQQK This crate stores one 512-bit "row" of the above bitmaps in the leaf levelСќЁQNK of a trie, and a single additional level to index into the leafs. It turnsСќ№QNM out there are 124 unique 512-bit chunks across the two bitmaps so 7 bits areСќПRP sufficient to index them.СьSЎSL The chunk size of 512 bits is selected as the size that minimizes the totalСќВSOI size of the data structure. A smaller chunk, like 256 or 128 bits, wouldСќ‚TLH achieve better deduplication but require a larger index. A larger chunkСќЯTKF would increase redundancy in the leaf bitmaps. 512 bit chunks are theСќ›UI7 optimum for total size of the index plus leaf bitmaps.СќхU: VJ In fact since there are only 124 unique chunks, we can use an 8-bit indexСќЄVMD with a spare bit to index at the half-chunk level. This achieves anСќђVGK additional 8.5% compression by eliminating redundancies between the secondСќКWNK half of any chunk and the first half of any other chunk. Note that this isСќ‰XNJ not the same as using chunks which are half the size, because it does notСќиXM8 necessitate raising the size of the trie's first level.СќІY;тYL In contrast to binary search or the `ucd-trie` crate, performing lookups inСќцYOF this data structure is straight-line code with no need for branching.СќЖZI[Ѓ ’[ Щ[ Œl“[ Ё[$https://docs.rs/unicode-ident/1.0.13СќЃ[&ќŒ[? Цѕѕ—)А> щP!бe Мz ѕѕѕѕѕќЋ\T))>>PPeezzќ‚]%d‰] chС–]ќз_(|о_ шvю_Tš\l‹\й <‹\оТ $”\\4ž\!lх ы lћ  u4К…б‚„ СЄ ЪЖЙЅИŠŠ л„ Є uV„ Є  „ _adФ„ 5<ћ…Ўy ƒс УяќЏ­њрШm„ с 5L„ с  „ ^`d†„ ќ–3\Јсщ УяќЏ­њрШmЈ€€€Јќы6t§|€€пЈьУ ,д Јќш /Tњ Тщ ЪЖЙЅИŠŠ лЈ’˜ #'-148<@EIMQTX\ `dfjnr(vx|€„ˆŒ”˜œ +ЄІЈ2ЎЏГЗЛCПСRУЦвдЪлпуЭчыэЉ№ѓЌѕАюёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ˜ƒЈќќ3lŽТщ ЪЖЙЅИŠŠ лЈˆ !%*/16:>BGKOQVZ^ bdhlpt(vz~‚†ŠŽ’–šžЂ+ЄІЋ2ЎБЕЙНCПСRУЩЬФЧЯвжиЪнсхЭщыаэЉ№ѓЌѕАюёйџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџˆгЈќŠw+$œwсщ УяќЏ­њрШmЈр€>џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ??џџџџ??џЊџџџ?џџџџџџп_мЯџм џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУџPпИ@зџџћџџџџџџџџџПџџџџџџџџџџџџџџџџџџџџџџџџџУџPџџџџџџџџџџџџџџпИРзџџћџџџџџџџџџПџџџџџџџџџџџџџџџџџќџџџџџџџџџџџџџџџџџџџџўџџџџџџџџџџџ‡џџџџџџџџџџџџџџџџћќџџџџџџџџџџџџџџџџџџџџўџџџџџџџџўџџџџПЖџџџ‡џџџџџРўџџџџџџџџџџџ/`Рœ§џџџрџџџџџџџџџџ?ќџџџ0џџџџџџџџџџУџџџџџџџџџџџџяŸџ§џŸџџџџџџџчџџџџџџџџџџџџџџџџџџ?$џџ?џџџџџџџ~џџџџџ№џџџџџџ#џўџсŸљџџ§Х#@Аџџџџџ?џџџџџџџ~€џџџџџџџџџћџџџџџџџџџџџџџџџЯџўџяŸљџџ§ХѓŸy€АЯџPр‡љџџ§m^рПћџџ§э#рŸљџџ§э#АшЧ=жЧџю‡љџџ§mг‡9^Рџ?юПћџџ§эѓП;ЯџўюŸљџџ§эѓŸ9рАЯџьЧ=жЧџУЧ=Рџрп§џџ§џ#'сп§џџ§я#`№п§џџџџ'@p€ќрџќџџћ/џп§џџ§џѓп=`'Яџяп§џџ§яѓп=``Яџџп§џџџџџп}№€Яџќюџќџџћ/„_џРџ ўџџџџџжїџџЏџ _№џўџџџўџџџџџџџџжїџџЏџџ?_џѓџ Тџўџџџўџпџџўџџџ@џџџџџ€?ўџџџџџџџџџрўџџџџџџџџџџїрџџџџџўџџџџџџџџџџџџџџџџрўџ>ўџџџџџџџџџцўџџџџџџџџџџџрџџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ'№џџџџџџџџџџџџџџџџџџџџџ џџџџџ€џџџ?џџџџџџџџџџ€џќџџџџџџџџџџџџљџџџџџџџ?ыќџџџџџџџџџџџ№Пџџџџџџџџџџџџџџ€џќџџџџџџџџџџџџљџџџџџџџ?ыќџЛїџџџџџџџџќџџџџџќhќџџ?џџџџџ№џџџџџ€пџ|џџџџџџџџџџџџџџџџџџџ?џџџџшџџџџџ?џџџџџџџџџџџџџџџ€џџџџџџџџџїџџФџџџџџџb>8џ~~~џџџџџїџџџџџџџџџџџџџџџџџџџџџџ?џџџќџџџџџџџџ8џџ|~~~џџџџџїџџџџџџџџџџџџџџџџ7џџџџџџџџџџџџџџ?џџџџџџџџџџџџџј џ§_лџџџџџџџџџџџџџјџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџјрџ§_лџџџџџџџџџџџџџјџџџџџџџџџџџџџџџџ?№џџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџќџџџџџџџŠЊџџџџџџџџџџџџџџџўџџўџџРџџџџџџ?џџџќќќџџџџрŠЊџџџџџџџџџџџџџџџџўџџ‡ўџџрџџџџџџџџџџќќќџяџџџџЗџ?џ?џџџџџџџџџџџџџџџџџџџџџџяџџџџЗџ?џ?џџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџрџџџџџџџ?џџџ?џџџџџ>џџџџџџџџџџџџџрџџџџџџџџџџџ?џџџџџ>џџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџїџїЗџћџћџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџїџїЗџћџћџџџџџџ?§џџџџП‘џџ?џџџџџџџ7џџ?џџџџџџџџџџРяўџџ?џџџџџџџўџџџџџџџџ?џџ?џџџџo№яўџџ?‡џџџџџџџўџџџџџџџџ?џџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџ?€џџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?Оџџ?џџџџџџџџ€џџ?џџџџџџџџџџџ№џџџ€џџџџџџ?џџџџјџџџџџџ&јџџџџџџџџјџџџџџџџGјџџџџџџџџџџџџџРџ?€џџџџџџџџџџџџџџџџџпџ№џџџџOџџџџџџџџоџџџћџџ€НџПџџџџџџрŸљџџ§э#рџKџџџџП џџћџџџџРНџПџџџџџџџџџяŸљџџ§эћŸ9рЯџKџџџџПџЅїџџџџџџ€€џџџџџџАџџџџџџџџџџџџџџџУџџџџџџџџПџџџџџџџ?џ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџчџџџџџџџџџџџџџџџ€ђoџџџ€џќџџџџ џџџџџџџџџџџџџџџџ€ђoџџџПљџџќџџџџџќјџџџџ№џџџџџ џџџџџџџџџџџџџџџџџџџџ€џџџџџџџџџ#џџџџџџџџџџџџџџџ§џџџќџџџћџџџџ@П§џџџџ§џџџџџџќџџџќџџўћџџџџДџџП§џџџћџџџєџ§џџџџџџџ§џџџџЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ~џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџјџџрџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџјџџрџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјџ џџџџџџџџџџџџџџџџџ‡џџџџџџџ€џџџџџџџџџџџџџџџџџџџџџџџџџџџџ?€џяoџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџрујч<џџџџџџџџџџџџџџџџcџџџрџoџџџџџџџџџџџџпџџџџџџџџпdоџыяџџџџџџџПчппџџџ{_ќ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџ§џџїџџџїџџпџџџпџџџџџџџџ§џџџ§џџїџџџџџџџџџџџџџџџџџџџџ?џџџ§џџїџџџїџџпџџџпџџџџџџџџ§џџџ§џџїЯџџџџџџџџџџџџјџџџџџ јўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџ€?@џџљлџџџџџџџ?€џџџџџџ?џCџџџ?џџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџяџџџ–ўї „ъ–Њ–її^џћџюћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?}џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ€>$ЈB!https://crates.io/crates/croaringС unicode-xidСcroaringС ucd-generateСgithubСUnicode Standard Annex #31Сhttps://docs.rs/unicode-identС%https://www.unicode.org/reports/tr31/С&https://crates.io/crates/unicode-identС)https://github.com/unicode-rs/unicode-xidС https://roaringbitmap.org/about/СШк crates-ioСюкrust-lang/rust#33098Сўк‹лfinite state transducerСЇлRoaring BitmapС(https://github.com/dtolnay/unicode-identСшл+https://github.com/RoaringBitmap/roaring-rsСымШк–нЊнœлЇлroaringСён*https://github.com/BurntSushi/ucd-generateС„о!https://github.com/BurntSushi/fstСЗоЊнўкdocs-rsСœл‹пЦл„ошлвпНм,https://github.com/rust-lang/rust/pull/33098СŠрЯн‹пёнЦлпвп’мНмРр–нюкŠр‹лЯнпЗо’мымРрЗ’6›БхІ3u^ьй~ckхўфЕU:Ўк•yЬEіdЧЈ~‚Х[0Г}ЄіЕ…Џд_З†ФУlmEЂЯшS‘wex‡Zи<Юљ!ђ Сh‰m Сšџ–)Љ:NљљьЇцлžu1№оіGЦ№BЅе’єкS†Ц˜–џ(жhрю—œ к+Y—B’о"Ц‘.c§C€"ЊћOwp—Тƒgtэ[™5}ы=ŒMq•эжюў&пТu]jІіƒMъ 4"v†)Їl”­;HoоF(t*ƒCŸЬˆ’\MА­“rЌƒ2эл`b=—ћQ йxˆХи+Z\ОУv\f{ NЈІ~ѓЦЪфіАсрИђ}нШ>м2хh:‘ѓ>;u;Љ;х;њ;<Ћ<Т<U=n=e>"?9?‚AыIe:е ;Y<=  % %  d:Q;ˆ;г;щ;ў;&?L?•AўIŒў:;;;;;!;';-;3;9;p;Ѕ;с;і; `>??4?nA}AзIцI7m;; ;;;;$;*;0;6;>;u;Я;х;њ;"?9?‚AыI`;—;ђ;<+<Œ<Ѓ<И<п<6=M=b=Š=[>>?/?U?xAžAсIJAmY;;ы;<<ƒ<œ<Џ<Ы<-=F=Y=ƒ=T>z>?(?N?qA—AкIJ:mc;š;ѕ; <><‘<Н<щ<;=g==^>„>?2?X?{AЁAфI JDmR;‰;=?†AяIІ<P=s3є@ьЈн-б"ыЇ?Œ2юм,€а!r5г#xЧh9…з'|Ыlg;ž;Ш=†>•?оAFJb:Э;<Т<O<љ<@<ы<ЩЬазнсхщэёѕљ "/6>KOV]kov}“ЈЌИЩЭсх№R<ќм2х"џ-6U6-Nџџџџ;џџџџџ2џHwDVu,SpHI#|K=yџOџџџџ1VџџAџџџџSWџџџџџџџerџ-6U6-Nџџџџ;џџfC:\Users\olexa\.cargo\registry\src\index.crates.io-6f17d22bba15001f\unicode-ident-1.0.13\src\tables.rsС ”С2ж‘Ў‡›.fXЬГ%lРёфЌЇЭ/mлОљŸQC3+,@ddddCdddd$;ddddddddddddddddddddddddd?dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd 8ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddŒч†Щы†8 Р! ЮђcC:\Users\olexa\.cargo\registry\src\index.crates.io-6f17d22bba15001f\unicode-ident-1.0.13\src/lib.rsС эP=N5LэjёˆѕЦX>щШP=aСbяЧ'ЛХДbЇkon OA2OMN !K%JD>Q>KHN?A=BMLHBGO; %PC #7&& $ MMMJLNMM;OGO2O#OPMNQLOQ4LAI **&*%&QLONPJQ3OPGON,PQ'QMQONP MKN#-?NNLO'IE7QQJJJPQNQ#4PP(QFFPP9 5 ЁЄ QNEOOQPMLJ;NHOON<PJ @< Z(+JGQ+.MGQаЋБG Љ  ZДЦAЋ%Tв|€x86_64-pc-windows-msvcСšЃrl8ПR+‘?ЦP unicode_identС-6471048e310c06c3Сt–А(\+™ƒ“ р#˜"f*#?"##D"FD##FF#FB",D.#,F,#F##FF  '"D**#*F*зъrust-end-file@feat.00џџ /0 0 0 0 644 17983 ` d†,џ7w.textє 0`.dataє@0Р.bss€0Р.text є P`.text 0 P`.text<[ P`.textmŒ P`.textFž P`.text6ь" P`.text 4T P`.text8p P`.text5Ах  P`.text5ƒ И  P`.rdataBV @@.rdataa˜ @@.rdataљ @@.rdatacњ @@.rdata] u @@@.rdata — @@@.rdataЁ Й @@@.rdataУ л @@@.rdata€х @p@.rdata€e@p@.rdata˜х@@@.rdata}@@@.rdata…@p@.xdata(@0@.xdatae@0@.xdata–@0@.xdataф@0@.xdata,@0@.xdatah@0@.xdataЈ@0@.xdata{ @0@.xdataN @0@.pdata …6‘6@0@.pdata Џ6Л6@0@.pdata й6х6@0@.pdata 77@0@.pdata -797@0@.pdata W7c7@0@.pdata 77@0@.pdata Ћ7З7@0@.pdata е7с7@0@Hƒь(ƒљrH КBшHƒФ(У 8pBƒ9–Р$ЖРУHƒь(L‰D$ I‰аH‰ЪH‹L$ шHƒФ(УBHƒь(L‰D$ I‰аH‰ЪH‹L$ шHƒФ(У)BHƒьH‰$H‰L$H‹T$И1ЩHƒњHDСHƒјu H‹$H‰D$ы H‹D$H‰D$H‹D$HƒФУ"Hƒь8L‰D$ H‰T$(H‰L$0ыH‹T$ H‹L$0шH‹L$0H‹D$(HШHƒФ8У $bHƒь(H9бrH КaшHƒФ(У ;pBHƒьH‰$H‰L$L9Сr HЧD$ыH‹L$H‹$HШH‰D$H‹D$HƒФУ"HƒьH‰L$@HL$@шЈuF‹D$@A‰РIСшIСшH К’шH‰СHшЖЙ@HїсH‰D$8Рp?ы‹D$@H‰D$0H=€‚–щЈH‹D$8Hбш‹L$@HСщHƒс?HШH‰D$(’РrVы H шL‹D$(H КршŠˆD$'‹L$@ƒсƒс‰L$ ш‹L$ ŠD$'вш$<•Р$ˆD$Gы H шŠD$G$ЖРHƒФHУH‹L$0HŠ$ˆD$GылH‹L$0LК€шЬ (V2<>AœDЁq­\За№DѕrP&G0s‚HƒьH‰L$@HL$@шЈuF‹D$@A‰РIСшIСшH КшH‰СHшЖЙ@HїсH‰D$8Рp?ы‹D$@H‰D$0H=€‚–щЈH‹D$8Hбш‹L$@HСщHƒс?HШH‰D$(’РrVы H шL‹D$(H КршŠˆD$'‹L$@ƒсƒс‰L$ ш‹L$ ŠD$'вш$<•Р$ˆD$Gы H шŠD$G$ЖРHƒФHУH‹L$0HŠ$ˆD$GылH‹L$0LК€шЬ (Y2<>AœJЁq­\За№JѕrS&M0s‚unsafe precondition(s) violated: u8::unchecked_shr cannot overflowunsafe precondition(s) violated: slice::get_unchecked requires that the index is within the sliceC:\Users\olexa\.cargo\registry\src\index.crates.io-6f17d22bba15001f\unicode-ident-1.0.13\src/lib.rscAcџAc AcA #'-148<@EIMQTX\ `dfjnr(vx|€„ˆŒ”˜œ +ЄІЈ2ЎЏГЗЛCПСRУЦвдЪлпуЭчыэЉ№ѓЌѕАюё !%*/16:>BGKOQVZ^ bdhlpt(vz~‚†ŠŽ’–šžЂ+ЄІЋ2ЎБЕЙНCПСRУЩЬФЧЯвжиЪнсхЭщыаэЉ№ѓЌѕАюёйџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ??џџџџ??џЊџџџ?џџџџџџп_мЯџм џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУџPпИ@зџџћџџџџџџџџџПџџџџџџџџџџџџџџџџџџџџџџџџџУџPџџџџџџџџџџџџџџпИРзџџћџџџџџџџџџПџџџџџџџџџџџџџџџџџќџџџџџџџџџџџџџџџџџџџџўџџџџџџџџџџџ‡џџџџџџџџџџџџџџџџћќџџџџџџџџџџџџџџџџџџџџўџџџџџџџџўџџџџПЖџџџ‡џџџџџРўџџџџџџџџџџџ/`Рœ§џџџрџџџџџџџџџџ?ќџџџ0џџџџџџџџџџУџџџџџџџџџџџџяŸџ§џŸџџџџџџџчџџџџџџџџџџџџџџџџџџ?$џџ?џџџџџџџ~џџџџџ№џџџџџџ#џўџсŸљџџ§Х#@Аџџџџџ?џџџџџџџ~€џџџџџџџџџћџџџџџџџџџџџџџџџЯџўџяŸљџџ§ХѓŸy€АЯџPр‡љџџ§m^рПћџџ§э#рŸљџџ§э#АшЧ=жЧџю‡љџџ§mг‡9^Рџ?юПћџџ§эѓП;ЯџўюŸљџџ§эѓŸ9рАЯџьЧ=жЧџУЧ=Рџрп§џџ§џ#'сп§џџ§я#`№п§џџџџ'@p€ќрџќџџћ/џп§џџ§џѓп=`'Яџяп§џџ§яѓп=``Яџџп§џџџџџп}№€Яџќюџќџџћ/„_џРџ ўџџџџџжїџџЏџ _№џўџџџўџџџџџџџџжїџџЏџџ?_џѓџ Тџўџџџўџпџџўџџџ@џџџџџ€?ўџџџџџџџџџрўџџџџџџџџџџїрџџџџџўџџџџџџџџџџџџџџџџрўџ>ўџџџџџџџџџцўџџџџџџџџџџџрџџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ'№џџџџџџџџџџџџџџџџџџџџџ џџџџџ€џџџ?џџџџџџџџџџ€џќџџџџџџџџџџџџљџџџџџџџ?ыќџџџџџџџџџџџ№Пџџџџџџџџџџџџџџ€џќџџџџџџџџџџџџљџџџџџџџ?ыќџЛїџџџџџџџџќџџџџџќhќџџ?џџџџџ№џџџџџ€пџ|џџџџџџџџџџџџџџџџџџџ?џџџџшџџџџџ?џџџџџџџџџџџџџџџ€џџџџџџџџџїџџФџџџџџџb>8џ~~~џџџџџїџџџџџџџџџџџџџџџџџџџџџџ?џџџќџџџџџџџџ8џџ|~~~џџџџџїџџџџџџџџџџџџџџџџ7џџџџџџџџџџџџџџ?џџџџџџџџџџџџџј џ§_лџџџџџџџџџџџџџјџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџјрџ§_лџџџџџџџџџџџџџјџџџџџџџџџџџџџџџџ?№џџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџќџџџџџџџŠЊџџџџџџџџџџџџџџџўџџўџџРџџџџџџ?џџџќќќџџџџрŠЊџџџџџџџџџџџџџџџџўџџ‡ўџџрџџџџџџџџџџќќќџяџџџџЗџ?џ?џџџџџџџџџџџџџџџџџџџџџџяџџџџЗџ?џ?џџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџџџџџрџџџџџџџ?џџџ?џџџџџ>џџџџџџџџџџџџџрџџџџџџџџџџџ?џџџџџ>џџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџїџїЗџћџћџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџїџїЗџћџћџџџџџџ?§џџџџП‘џџ?џџџџџџџ7џџ?џџџџџџџџџџРяўџџ?џџџџџџџўџџџџџџџџ?џџ?џџџџo№яўџџ?‡џџџџџџџўџџџџџџџџ?џџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџќџџ?€џџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?Оџџ?џџџџџџџџ€џџ?џџџџџџџџџџџ№џџџ€џџџџџџ?џџџџјџџџџџџ&јџџџџџџџџјџџџџџџџGјџџџџџџџџџџџџџРџ?€џџџџџџџџџџџџџџџџџпџ№џџџџOџџџџџџџџоџџџћџџ€НџПџџџџџџрŸљџџ§э#рџKџџџџП џџћџџџџРНџПџџџџџџџџџяŸљџџ§эћŸ9рЯџKџџџџПџЅїџџџџџџ€€џџџџџџАџџџџџџџџџџџџџџџУџџџџџџџџПџџџџџџџ?џ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџчџџџџџџџџџџџџџџџ€ђoџџџ€џќџџџџ џџџџџџџџџџџџџџџџ€ђoџџџПљџџќџџџџџќјџџџџ№џџџџџ џџџџџџџџџџџџџџџџџџџџ€џџџџџџџџџ#џџџџџџџџџџџџџџџ§џџџќџџџћџџџџ@П§џџџџ§џџџџџџќџџџќџџўћџџџџДџџП§џџџћџџџєџ§џџџџџџџ§џџџџЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ~џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџјџџрџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџјџџрџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјџ џџџџџџџџџџџџџџџџџ‡џџџџџџџ€џџџџџџџџџџџџџџџџџџџџџџџџџџџџ?€џяoџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџрујч<џџџџџџџџџџџџџџџџcџџџрџoџџџџџџџџџџџџпџџџџџџџџпdоџыяџџџџџџџПчппџџџ{_ќ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџ§џџїџџџїџџпџџџпџџџџџџџџ§џџџ§џџїџџџџџџџџџџџџџџџџџџџџ?џџџ§џџїџџџїџџпџџџпџџџџџџџџ§џџџ§џџїЯџџџџџџџџџџџџјџџџџџ јўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџ€?@џџљлџџџџџџџ?€џџџџџџ?џCџџџ?џџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџяџџџ–ўї „ъ–Њ–її^џћџюћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ?  F6  ""%8''*5,,/5114.text.data.bss.text ŽЮе .xdataб9Х.text C HЕ .text Q;0^ .xdataб9Х.text Q;0 .xdataб9Х.textFˆў<НС .xdataёђG.text 6ЮеD Џ .xdata1ˆ7 .text  ёxjF њ .xdata б9Х .text 8жЧО• š .xdata!ёђG .text 5ЇРІ I .xdata"‘Џjž .text 5iUД N .xdata#‘Џjž .rdataB/>ь ж.rdataa‹ЊЯЪ.rdataО.rdatacYŸ~O‚.rdataЈЊЫВ.rdata hлfІ.rdataƒБ„š.rdataы~5Ž.rdata€У".rdata€aiМ.rdata˜Я"vž`.rdataaoœП#.rdata?Џ?ЯN.pdata$ Vbvљ.pdata% ‡#›Ѕ.pdata& ‡#›Ѕ.pdata' jЫђя.pdata( њZЂC .pdata) Vbvљ .pdata* ШH(V .pdata+ ­VZk .pdata, ­VZk @feat.00џџ~†.fileўџgunicode_ident.2b5c1a1328b09674-cgu.0т_ZN4core3num20_$LT$impl$u20$u8$GT$13unchecked_shr18precondition_check17h3155016aceb9bdcfE_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$13get_unchecked17heb0c32fa89cccc6fE_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$13get_unchecked17ha319b638ced3549dE_ZN13unicode_ident6tables13TRIE_CONTINUE17h35d72043f42e0ecaE_ZN13unicode_ident6tables10TRIE_START17hd2cb4d0e0a81d5a8E_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$3get17h452f56c5933f0df7E_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$3get17hfc33a9f7558a6bf7E_ZN13unicode_ident12is_xid_start17hcd4d21ef1325e377E_ZN4core9panicking14panic_nounwind17h7093548e2b172a67E_ZN4core4char7methods22_$LT$impl$u20$char$GT$8is_ascii17h670e03721c7a7cb6E_ZN4core9panicking11panic_const24panic_const_mul_overflow17ha22772dc71f13e36E_ZN13unicode_ident15is_xid_continue17hc43d2a3210898bd5E_ZN4core9panicking18panic_bounds_check17h10ecf9c8d50868d4E_ZN4core6option15Option$LT$T$GT$9unwrap_or17hfe64f11db43101a4E_ZN4core9panicking11panic_const24panic_const_add_overflow17he356f8cd7e4debd3E_ZN13unicode_ident6tables4LEAF17h943af587f651acb3E_ZN13unicode_ident6tables11ASCII_START17h91093e1d1a6d0283E_ZN13unicode_ident6tables14ASCII_CONTINUE17hc6eda32aba38c762E_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$13get_unchecked18precondition_check17h4025db412d295852E__unnamed_8__unnamed_7__unnamed_6__unnamed_5__unnamed_4__unnamed_3__unnamed_2__unnamed_1