summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-04-16 03:01:17 +0000
committerNorbert Preining <norbert@preining.info>2020-04-16 03:01:17 +0000
commit7412eb57b148d2ecd77d0291c97fb05bea8efbb0 (patch)
treeed628b0a7a0eb72a835f5462808f900e850d2dc8 /macros
parente768cc604852d6fe8821592cea67835f67eab0db (diff)
CTAN sync 202004160301
Diffstat (limited to 'macros')
-rw-r--r--macros/generic/unicode-data/GraphemeBreakProperty.txt1448
-rw-r--r--macros/generic/unicode-data/README.md4
-rw-r--r--macros/generic/unicode-data/emoji-data.txt1261
-rw-r--r--macros/generic/unicode-data/load-unicode-data.tex2
-rw-r--r--macros/generic/unicode-data/load-unicode-math-classes.tex2
-rw-r--r--macros/generic/unicode-data/load-unicode-xetex-classes.tex2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/README.md2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamercolorthemefocus.sty2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerfontthemefocus.sty2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerinnerthemefocus.sty3
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty14
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerthemefocus.sty4
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/demo.pdfbin324539 -> 324539 bytes
-rw-r--r--macros/latex/contrib/ccool/README.md (renamed from macros/latex/contrib/oops/README.md)6
-rw-r--r--macros/latex/contrib/ccool/ccool.dtx1692
-rw-r--r--macros/latex/contrib/ccool/ccool.pdfbin0 -> 722772 bytes
-rw-r--r--macros/latex/contrib/oops/oops.dtx789
-rw-r--r--macros/latex/contrib/oops/oops.pdfbin565727 -> 0 bytes
18 files changed, 4425 insertions, 808 deletions
diff --git a/macros/generic/unicode-data/GraphemeBreakProperty.txt b/macros/generic/unicode-data/GraphemeBreakProperty.txt
new file mode 100644
index 0000000000..6ee92f6eec
--- /dev/null
+++ b/macros/generic/unicode-data/GraphemeBreakProperty.txt
@@ -0,0 +1,1448 @@
+# GraphemeBreakProperty-13.0.0.txt
+# Date: 2019-10-21, 14:30:35 GMT
+# © 2019 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
+
+# ================================================
+
+# Property: Grapheme_Cluster_Break
+
+# All code points not explicitly listed for Grapheme_Cluster_Break
+# have the value Other (XX).
+
+# @missing: 0000..10FFFF; Other
+
+# ================================================
+
+0600..0605 ; Prepend # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
+06DD ; Prepend # Cf ARABIC END OF AYAH
+070F ; Prepend # Cf SYRIAC ABBREVIATION MARK
+08E2 ; Prepend # Cf ARABIC DISPUTED END OF AYAH
+0D4E ; Prepend # Lo MALAYALAM LETTER DOT REPH
+110BD ; Prepend # Cf KAITHI NUMBER SIGN
+110CD ; Prepend # Cf KAITHI NUMBER SIGN ABOVE
+111C2..111C3 ; Prepend # Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA
+1193F ; Prepend # Lo DIVES AKURU PREFIXED NASAL SIGN
+11941 ; Prepend # Lo DIVES AKURU INITIAL RA
+11A3A ; Prepend # Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+11A84..11A89 ; Prepend # Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA
+11D46 ; Prepend # Lo MASARAM GONDI REPHA
+
+# Total code points: 24
+
+# ================================================
+
+000D ; CR # Cc <control-000D>
+
+# Total code points: 1
+
+# ================================================
+
+000A ; LF # Cc <control-000A>
+
+# Total code points: 1
+
+# ================================================
+
+0000..0009 ; Control # Cc [10] <control-0000>..<control-0009>
+000B..000C ; Control # Cc [2] <control-000B>..<control-000C>
+000E..001F ; Control # Cc [18] <control-000E>..<control-001F>
+007F..009F ; Control # Cc [33] <control-007F>..<control-009F>
+00AD ; Control # Cf SOFT HYPHEN
+061C ; Control # Cf ARABIC LETTER MARK
+180E ; Control # Cf MONGOLIAN VOWEL SEPARATOR
+200B ; Control # Cf ZERO WIDTH SPACE
+200E..200F ; Control # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
+2028 ; Control # Zl LINE SEPARATOR
+2029 ; Control # Zp PARAGRAPH SEPARATOR
+202A..202E ; Control # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+2060..2064 ; Control # Cf [5] WORD JOINER..INVISIBLE PLUS
+2065 ; Control # Cn <reserved-2065>
+2066..206F ; Control # Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
+FEFF ; Control # Cf ZERO WIDTH NO-BREAK SPACE
+FFF0..FFF8 ; Control # Cn [9] <reserved-FFF0>..<reserved-FFF8>
+FFF9..FFFB ; Control # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+13430..13438 ; Control # Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT
+1BCA0..1BCA3 ; Control # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+1D173..1D17A ; Control # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+E0000 ; Control # Cn <reserved-E0000>
+E0001 ; Control # Cf LANGUAGE TAG
+E0002..E001F ; Control # Cn [30] <reserved-E0002>..<reserved-E001F>
+E0080..E00FF ; Control # Cn [128] <reserved-E0080>..<reserved-E00FF>
+E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
+
+# Total code points: 3886
+
+# ================================================
+
+0300..036F ; Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+0483..0487 ; Extend # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+0488..0489 ; Extend # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+0591..05BD ; Extend # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+05BF ; Extend # Mn HEBREW POINT RAFE
+05C1..05C2 ; Extend # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C4..05C5 ; Extend # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C7 ; Extend # Mn HEBREW POINT QAMATS QATAN
+0610..061A ; Extend # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+064B..065F ; Extend # Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW
+0670 ; Extend # Mn ARABIC LETTER SUPERSCRIPT ALEF
+06D6..06DC ; Extend # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DF..06E4 ; Extend # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+06E7..06E8 ; Extend # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06EA..06ED ; Extend # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+0711 ; Extend # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
+0730..074A ; Extend # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+07A6..07B0 ; Extend # Mn [11] THAANA ABAFILI..THAANA SUKUN
+07EB..07F3 ; Extend # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+07FD ; Extend # Mn NKO DANTAYALAN
+0816..0819 ; Extend # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
+081B..0823 ; Extend # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
+0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
+0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
+0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+08D3..08E1 ; Extend # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA
+08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
+093A ; Extend # Mn DEVANAGARI VOWEL SIGN OE
+093C ; Extend # Mn DEVANAGARI SIGN NUKTA
+0941..0948 ; Extend # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+094D ; Extend # Mn DEVANAGARI SIGN VIRAMA
+0951..0957 ; Extend # Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
+0962..0963 ; Extend # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0981 ; Extend # Mn BENGALI SIGN CANDRABINDU
+09BC ; Extend # Mn BENGALI SIGN NUKTA
+09BE ; Extend # Mc BENGALI VOWEL SIGN AA
+09C1..09C4 ; Extend # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09CD ; Extend # Mn BENGALI SIGN VIRAMA
+09D7 ; Extend # Mc BENGALI AU LENGTH MARK
+09E2..09E3 ; Extend # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+09FE ; Extend # Mn BENGALI SANDHI MARK
+0A01..0A02 ; Extend # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A3C ; Extend # Mn GURMUKHI SIGN NUKTA
+0A41..0A42 ; Extend # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; Extend # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D ; Extend # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A51 ; Extend # Mn GURMUKHI SIGN UDAAT
+0A70..0A71 ; Extend # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A75 ; Extend # Mn GURMUKHI SIGN YAKASH
+0A81..0A82 ; Extend # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0ABC ; Extend # Mn GUJARATI SIGN NUKTA
+0AC1..0AC5 ; Extend # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8 ; Extend # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0ACD ; Extend # Mn GUJARATI SIGN VIRAMA
+0AE2..0AE3 ; Extend # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0AFA..0AFF ; Extend # Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
+0B01 ; Extend # Mn ORIYA SIGN CANDRABINDU
+0B3C ; Extend # Mn ORIYA SIGN NUKTA
+0B3E ; Extend # Mc ORIYA VOWEL SIGN AA
+0B3F ; Extend # Mn ORIYA VOWEL SIGN I
+0B41..0B44 ; Extend # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+0B4D ; Extend # Mn ORIYA SIGN VIRAMA
+0B55..0B56 ; Extend # Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
+0B57 ; Extend # Mc ORIYA AU LENGTH MARK
+0B62..0B63 ; Extend # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+0B82 ; Extend # Mn TAMIL SIGN ANUSVARA
+0BBE ; Extend # Mc TAMIL VOWEL SIGN AA
+0BC0 ; Extend # Mn TAMIL VOWEL SIGN II
+0BCD ; Extend # Mn TAMIL SIGN VIRAMA
+0BD7 ; Extend # Mc TAMIL AU LENGTH MARK
+0C00 ; Extend # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE
+0C04 ; Extend # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE
+0C3E..0C40 ; Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C46..0C48 ; Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D ; Extend # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56 ; Extend # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0C62..0C63 ; Extend # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+0C81 ; Extend # Mn KANNADA SIGN CANDRABINDU
+0CBC ; Extend # Mn KANNADA SIGN NUKTA
+0CBF ; Extend # Mn KANNADA VOWEL SIGN I
+0CC2 ; Extend # Mc KANNADA VOWEL SIGN UU
+0CC6 ; Extend # Mn KANNADA VOWEL SIGN E
+0CCC..0CCD ; Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CD5..0CD6 ; Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CE2..0CE3 ; Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0D00..0D01 ; Extend # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
+0D3B..0D3C ; Extend # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
+0D3E ; Extend # Mc MALAYALAM VOWEL SIGN AA
+0D41..0D44 ; Extend # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+0D4D ; Extend # Mn MALAYALAM SIGN VIRAMA
+0D57 ; Extend # Mc MALAYALAM AU LENGTH MARK
+0D62..0D63 ; Extend # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+0D81 ; Extend # Mn SINHALA SIGN CANDRABINDU
+0DCA ; Extend # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; Extend # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DD2..0DD4 ; Extend # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; Extend # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DDF ; Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA
+0E31 ; Extend # Mn THAI CHARACTER MAI HAN-AKAT
+0E34..0E3A ; Extend # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E47..0E4E ; Extend # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0EB1 ; Extend # Mn LAO VOWEL SIGN MAI KAN
+0EB4..0EBC ; Extend # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
+0EC8..0ECD ; Extend # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA
+0F18..0F19 ; Extend # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F35 ; Extend # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
+0F37 ; Extend # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F39 ; Extend # Mn TIBETAN MARK TSA -PHRU
+0F71..0F7E ; Extend # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F80..0F84 ; Extend # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+0F86..0F87 ; Extend # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F8D..0F97 ; Extend # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC ; Extend # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FC6 ; Extend # Mn TIBETAN SYMBOL PADMA GDAN
+102D..1030 ; Extend # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1032..1037 ; Extend # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
+1039..103A ; Extend # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+103D..103E ; Extend # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+1058..1059 ; Extend # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+105E..1060 ; Extend # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+1071..1074 ; Extend # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+1082 ; Extend # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+1085..1086 ; Extend # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+108D ; Extend # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+109D ; Extend # Mn MYANMAR VOWEL SIGN AITON AI
+135D..135F ; Extend # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
+1712..1714 ; Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1732..1734 ; Extend # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
+1752..1753 ; Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+1772..1773 ; Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+17B4..17B5 ; Extend # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+17B7..17BD ; Extend # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17C6 ; Extend # Mn KHMER SIGN NIKAHIT
+17C9..17D3 ; Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+17DD ; Extend # Mn KHMER SIGN ATTHACAN
+180B..180D ; Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+1885..1886 ; Extend # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+18A9 ; Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA
+1920..1922 ; Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1927..1928 ; Extend # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1932 ; Extend # Mn LIMBU SMALL LETTER ANUSVARA
+1939..193B ; Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1A17..1A18 ; Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1A1B ; Extend # Mn BUGINESE VOWEL SIGN AE
+1A56 ; Extend # Mn TAI THAM CONSONANT SIGN MEDIAL LA
+1A58..1A5E ; Extend # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
+1A60 ; Extend # Mn TAI THAM SIGN SAKOT
+1A62 ; Extend # Mn TAI THAM VOWEL SIGN MAI SAT
+1A65..1A6C ; Extend # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
+1A73..1A7C ; Extend # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
+1A7F ; Extend # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT
+1AB0..1ABD ; Extend # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
+1ABE ; Extend # Me COMBINING PARENTHESES OVERLAY
+1ABF..1AC0 ; Extend # Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
+1B00..1B03 ; Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B34 ; Extend # Mn BALINESE SIGN REREKAN
+1B35 ; Extend # Mc BALINESE VOWEL SIGN TEDUNG
+1B36..1B3A ; Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3C ; Extend # Mn BALINESE VOWEL SIGN LA LENGA
+1B42 ; Extend # Mn BALINESE VOWEL SIGN PEPET
+1B6B..1B73 ; Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+1B80..1B81 ; Extend # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+1BA2..1BA5 ; Extend # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+1BA8..1BA9 ; Extend # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+1BAB..1BAD ; Extend # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
+1BE6 ; Extend # Mn BATAK SIGN TOMPI
+1BE8..1BE9 ; Extend # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
+1BED ; Extend # Mn BATAK VOWEL SIGN KARO O
+1BEF..1BF1 ; Extend # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+1C2C..1C33 ; Extend # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+1C36..1C37 ; Extend # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
+1CD0..1CD2 ; Extend # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
+1CD4..1CE0 ; Extend # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+1CE2..1CE8 ; Extend # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+1CED ; Extend # Mn VEDIC SIGN TIRYAK
+1CF4 ; Extend # Mn VEDIC TONE CANDRA ABOVE
+1CF8..1CF9 ; Extend # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
+1DC0..1DF9 ; Extend # Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW
+1DFB..1DFF ; Extend # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C ; Extend # Cf ZERO WIDTH NON-JOINER
+20D0..20DC ; Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20DD..20E0 ; Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1 ; Extend # Mn COMBINING LEFT RIGHT ARROW ABOVE
+20E2..20E4 ; Extend # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+20E5..20F0 ; Extend # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
+2CEF..2CF1 ; Extend # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
+2D7F ; Extend # Mn TIFINAGH CONSONANT JOINER
+2DE0..2DFF ; Extend # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+302A..302D ; Extend # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
+302E..302F ; Extend # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
+3099..309A ; Extend # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+A66F ; Extend # Mn COMBINING CYRILLIC VZMET
+A670..A672 ; Extend # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+A674..A67D ; Extend # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
+A69E..A69F ; Extend # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
+A6F0..A6F1 ; Extend # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
+A802 ; Extend # Mn SYLOTI NAGRI SIGN DVISVARA
+A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA
+A80B ; Extend # Mn SYLOTI NAGRI SIGN ANUSVARA
+A825..A826 ; Extend # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+A82C ; Extend # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA
+A8C4..A8C5 ; Extend # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
+A8E0..A8F1 ; Extend # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
+A8FF ; Extend # Mn DEVANAGARI VOWEL SIGN AY
+A926..A92D ; Extend # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+A947..A951 ; Extend # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+A980..A982 ; Extend # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
+A9B3 ; Extend # Mn JAVANESE SIGN CECAK TELU
+A9B6..A9B9 ; Extend # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
+A9BC..A9BD ; Extend # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+A9E5 ; Extend # Mn MYANMAR SIGN SHAN SAW
+AA29..AA2E ; Extend # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+AA31..AA32 ; Extend # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+AA35..AA36 ; Extend # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+AA43 ; Extend # Mn CHAM CONSONANT SIGN FINAL NG
+AA4C ; Extend # Mn CHAM CONSONANT SIGN FINAL M
+AA7C ; Extend # Mn MYANMAR SIGN TAI LAING TONE-2
+AAB0 ; Extend # Mn TAI VIET MAI KANG
+AAB2..AAB4 ; Extend # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U
+AAB7..AAB8 ; Extend # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
+AABE..AABF ; Extend # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
+AAC1 ; Extend # Mn TAI VIET TONE MAI THO
+AAEC..AAED ; Extend # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
+AAF6 ; Extend # Mn MEETEI MAYEK VIRAMA
+ABE5 ; Extend # Mn MEETEI MAYEK VOWEL SIGN ANAP
+ABE8 ; Extend # Mn MEETEI MAYEK VOWEL SIGN UNAP
+ABED ; Extend # Mn MEETEI MAYEK APUN IYEK
+FB1E ; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA
+FE00..FE0F ; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE20..FE2F ; Extend # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
+FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+101FD ; Extend # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+102E0 ; Extend # Mn COPTIC EPACT THOUSANDS MARK
+10376..1037A ; Extend # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
+10A01..10A03 ; Extend # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; Extend # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F ; Extend # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10A38..10A3A ; Extend # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F ; Extend # Mn KHAROSHTHI VIRAMA
+10AE5..10AE6 ; Extend # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
+10D24..10D27 ; Extend # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10EAB..10EAC ; Extend # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+10F46..10F50 ; Extend # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
+11001 ; Extend # Mn BRAHMI SIGN ANUSVARA
+11038..11046 ; Extend # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
+1107F..11081 ; Extend # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
+110B3..110B6 ; Extend # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
+110B9..110BA ; Extend # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
+11100..11102 ; Extend # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
+11127..1112B ; Extend # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
+1112D..11134 ; Extend # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
+11173 ; Extend # Mn MAHAJANI SIGN NUKTA
+11180..11181 ; Extend # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
+111B6..111BE ; Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+111C9..111CC ; Extend # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
+111CF ; Extend # Mn SHARADA SIGN INVERTED CANDRABINDU
+1122F..11231 ; Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
+11234 ; Extend # Mn KHOJKI SIGN ANUSVARA
+11236..11237 ; Extend # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E ; Extend # Mn KHOJKI SIGN SUKUN
+112DF ; Extend # Mn KHUDAWADI SIGN ANUSVARA
+112E3..112EA ; Extend # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
+11300..11301 ; Extend # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
+1133B..1133C ; Extend # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
+1133E ; Extend # Mc GRANTHA VOWEL SIGN AA
+11340 ; Extend # Mn GRANTHA VOWEL SIGN II
+11357 ; Extend # Mc GRANTHA AU LENGTH MARK
+11366..1136C ; Extend # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
+11370..11374 ; Extend # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11438..1143F ; Extend # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11442..11444 ; Extend # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11446 ; Extend # Mn NEWA SIGN NUKTA
+1145E ; Extend # Mn NEWA SANDHI MARK
+114B0 ; Extend # Mc TIRHUTA VOWEL SIGN AA
+114B3..114B8 ; Extend # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
+114BA ; Extend # Mn TIRHUTA VOWEL SIGN SHORT E
+114BD ; Extend # Mc TIRHUTA VOWEL SIGN SHORT O
+114BF..114C0 ; Extend # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
+114C2..114C3 ; Extend # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
+115AF ; Extend # Mc SIDDHAM VOWEL SIGN AA
+115B2..115B5 ; Extend # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
+115BC..115BD ; Extend # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
+115BF..115C0 ; Extend # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
+115DC..115DD ; Extend # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
+11633..1163A ; Extend # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
+1163D ; Extend # Mn MODI SIGN ANUSVARA
+1163F..11640 ; Extend # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
+116AB ; Extend # Mn TAKRI SIGN ANUSVARA
+116AD ; Extend # Mn TAKRI VOWEL SIGN AA
+116B0..116B5 ; Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+116B7 ; Extend # Mn TAKRI SIGN NUKTA
+1171D..1171F ; Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+11722..11725 ; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
+11727..1172B ; Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+1182F..11837 ; Extend # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+11839..1183A ; Extend # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+11930 ; Extend # Mc DIVES AKURU VOWEL SIGN AA
+1193B..1193C ; Extend # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+1193E ; Extend # Mn DIVES AKURU VIRAMA
+11943 ; Extend # Mn DIVES AKURU SIGN NUKTA
+119D4..119D7 ; Extend # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
+119DA..119DB ; Extend # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
+119E0 ; Extend # Mn NANDINAGARI SIGN VIRAMA
+11A01..11A0A ; Extend # Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+11A33..11A38 ; Extend # Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
+11A3B..11A3E ; Extend # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
+11A47 ; Extend # Mn ZANABAZAR SQUARE SUBJOINER
+11A51..11A56 ; Extend # Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
+11A59..11A5B ; Extend # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
+11A8A..11A96 ; Extend # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
+11A98..11A99 ; Extend # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
+11C30..11C36 ; Extend # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D ; Extend # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3F ; Extend # Mn BHAIKSUKI SIGN VIRAMA
+11C92..11CA7 ; Extend # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CAA..11CB0 ; Extend # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB2..11CB3 ; Extend # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB5..11CB6 ; Extend # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
+11D31..11D36 ; Extend # Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
+11D3A ; Extend # Mn MASARAM GONDI VOWEL SIGN E
+11D3C..11D3D ; Extend # Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
+11D3F..11D45 ; Extend # Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
+11D47 ; Extend # Mn MASARAM GONDI RA-KARA
+11D90..11D91 ; Extend # Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+11D95 ; Extend # Mn GUNJALA GONDI SIGN ANUSVARA
+11D97 ; Extend # Mn GUNJALA GONDI VIRAMA
+11EF3..11EF4 ; Extend # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+16AF0..16AF4 ; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
+16B30..16B36 ; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
+16F4F ; Extend # Mn MIAO SIGN CONSONANT MODIFIER BAR
+16F8F..16F92 ; Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
+16FE4 ; Extend # Mn KHITAN SMALL SCRIPT FILLER
+1BC9D..1BC9E ; Extend # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
+1D165 ; Extend # Mc MUSICAL SYMBOL COMBINING STEM
+1D167..1D169 ; Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+1D16E..1D172 ; Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+1D17B..1D182 ; Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D242..1D244 ; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+1DA00..1DA36 ; Extend # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
+1DA3B..1DA6C ; Extend # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
+1DA75 ; Extend # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
+1DA84 ; Extend # Mn SIGNWRITING LOCATION HEAD NECK
+1DA9B..1DA9F ; Extend # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
+1DAA1..1DAAF ; Extend # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006 ; Extend # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018 ; Extend # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021 ; Extend # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024 ; Extend # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A ; Extend # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+1E130..1E136 ; Extend # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
+1E2EC..1E2EF ; Extend # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
+1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A ; Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+1F3FB..1F3FF ; Extend # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+E0020..E007F ; Extend # Cf [96] TAG SPACE..CANCEL TAG
+E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 1984
+
+# ================================================
+
+1F1E6..1F1FF ; Regional_Indicator # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
+
+# Total code points: 26
+
+# ================================================
+
+0903 ; SpacingMark # Mc DEVANAGARI SIGN VISARGA
+093B ; SpacingMark # Mc DEVANAGARI VOWEL SIGN OOE
+093E..0940 ; SpacingMark # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0949..094C ; SpacingMark # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+094E..094F ; SpacingMark # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
+0982..0983 ; SpacingMark # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+09BF..09C0 ; SpacingMark # Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II
+09C7..09C8 ; SpacingMark # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC ; SpacingMark # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+0A03 ; SpacingMark # Mc GURMUKHI SIGN VISARGA
+0A3E..0A40 ; SpacingMark # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A83 ; SpacingMark # Mc GUJARATI SIGN VISARGA
+0ABE..0AC0 ; SpacingMark # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC9 ; SpacingMark # Mc GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC ; SpacingMark # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0B02..0B03 ; SpacingMark # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B40 ; SpacingMark # Mc ORIYA VOWEL SIGN II
+0B47..0B48 ; SpacingMark # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C ; SpacingMark # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0BBF ; SpacingMark # Mc TAMIL VOWEL SIGN I
+0BC1..0BC2 ; SpacingMark # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8 ; SpacingMark # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC ; SpacingMark # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C01..0C03 ; SpacingMark # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C41..0C44 ; SpacingMark # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C82..0C83 ; SpacingMark # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0CBE ; SpacingMark # Mc KANNADA VOWEL SIGN AA
+0CC0..0CC1 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U
+0CC3..0CC4 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR
+0CC7..0CC8 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; SpacingMark # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D02..0D03 ; SpacingMark # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D3F..0D40 ; SpacingMark # Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II
+0D46..0D48 ; SpacingMark # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C ; SpacingMark # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D82..0D83 ; SpacingMark # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0DD0..0DD1 ; SpacingMark # Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD8..0DDE ; SpacingMark # Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DF2..0DF3 ; SpacingMark # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0E33 ; SpacingMark # Lo THAI CHARACTER SARA AM
+0EB3 ; SpacingMark # Lo LAO VOWEL SIGN AM
+0F3E..0F3F ; SpacingMark # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+0F7F ; SpacingMark # Mc TIBETAN SIGN RNAM BCAD
+1031 ; SpacingMark # Mc MYANMAR VOWEL SIGN E
+103B..103C ; SpacingMark # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+1056..1057 ; SpacingMark # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+1084 ; SpacingMark # Mc MYANMAR VOWEL SIGN SHAN E
+17B6 ; SpacingMark # Mc KHMER VOWEL SIGN AA
+17BE..17C5 ; SpacingMark # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+17C7..17C8 ; SpacingMark # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+1923..1926 ; SpacingMark # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1929..192B ; SpacingMark # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931 ; SpacingMark # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1933..1938 ; SpacingMark # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+1A19..1A1A ; SpacingMark # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
+1A55 ; SpacingMark # Mc TAI THAM CONSONANT SIGN MEDIAL RA
+1A57 ; SpacingMark # Mc TAI THAM CONSONANT SIGN LA TANG LAI
+1A6D..1A72 ; SpacingMark # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
+1B04 ; SpacingMark # Mc BALINESE SIGN BISAH
+1B3B ; SpacingMark # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D..1B41 ; SpacingMark # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43..1B44 ; SpacingMark # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+1B82 ; SpacingMark # Mc SUNDANESE SIGN PANGWISAD
+1BA1 ; SpacingMark # Mc SUNDANESE CONSONANT SIGN PAMINGKAL
+1BA6..1BA7 ; SpacingMark # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+1BAA ; SpacingMark # Mc SUNDANESE SIGN PAMAAEH
+1BE7 ; SpacingMark # Mc BATAK VOWEL SIGN E
+1BEA..1BEC ; SpacingMark # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
+1BEE ; SpacingMark # Mc BATAK VOWEL SIGN U
+1BF2..1BF3 ; SpacingMark # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
+1C24..1C2B ; SpacingMark # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+1C34..1C35 ; SpacingMark # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+1CE1 ; SpacingMark # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
+1CF7 ; SpacingMark # Mc VEDIC SIGN ATIKRAMA
+A823..A824 ; SpacingMark # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A827 ; SpacingMark # Mc SYLOTI NAGRI VOWEL SIGN OO
+A880..A881 ; SpacingMark # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+A8B4..A8C3 ; SpacingMark # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+A952..A953 ; SpacingMark # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+A983 ; SpacingMark # Mc JAVANESE SIGN WIGNYAN
+A9B4..A9B5 ; SpacingMark # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
+A9BA..A9BB ; SpacingMark # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
+A9BE..A9C0 ; SpacingMark # Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON
+AA2F..AA30 ; SpacingMark # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+AA33..AA34 ; SpacingMark # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+AA4D ; SpacingMark # Mc CHAM CONSONANT SIGN FINAL H
+AAEB ; SpacingMark # Mc MEETEI MAYEK VOWEL SIGN II
+AAEE..AAEF ; SpacingMark # Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU
+AAF5 ; SpacingMark # Mc MEETEI MAYEK VOWEL SIGN VISARGA
+ABE3..ABE4 ; SpacingMark # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
+ABE6..ABE7 ; SpacingMark # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
+ABE9..ABEA ; SpacingMark # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
+ABEC ; SpacingMark # Mc MEETEI MAYEK LUM IYEK
+11000 ; SpacingMark # Mc BRAHMI SIGN CANDRABINDU
+11002 ; SpacingMark # Mc BRAHMI SIGN VISARGA
+11082 ; SpacingMark # Mc KAITHI SIGN VISARGA
+110B0..110B2 ; SpacingMark # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
+110B7..110B8 ; SpacingMark # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
+1112C ; SpacingMark # Mc CHAKMA VOWEL SIGN E
+11145..11146 ; SpacingMark # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
+11182 ; SpacingMark # Mc SHARADA SIGN VISARGA
+111B3..111B5 ; SpacingMark # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
+111BF..111C0 ; SpacingMark # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
+111CE ; SpacingMark # Mc SHARADA VOWEL SIGN PRISHTHAMATRA E
+1122C..1122E ; SpacingMark # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
+11232..11233 ; SpacingMark # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
+11235 ; SpacingMark # Mc KHOJKI SIGN VIRAMA
+112E0..112E2 ; SpacingMark # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
+11302..11303 ; SpacingMark # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
+1133F ; SpacingMark # Mc GRANTHA VOWEL SIGN I
+11341..11344 ; SpacingMark # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
+11347..11348 ; SpacingMark # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
+1134B..1134D ; SpacingMark # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
+11362..11363 ; SpacingMark # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11435..11437 ; SpacingMark # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11440..11441 ; SpacingMark # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11445 ; SpacingMark # Mc NEWA SIGN VISARGA
+114B1..114B2 ; SpacingMark # Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II
+114B9 ; SpacingMark # Mc TIRHUTA VOWEL SIGN E
+114BB..114BC ; SpacingMark # Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O
+114BE ; SpacingMark # Mc TIRHUTA VOWEL SIGN AU
+114C1 ; SpacingMark # Mc TIRHUTA SIGN VISARGA
+115B0..115B1 ; SpacingMark # Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II
+115B8..115BB ; SpacingMark # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
+115BE ; SpacingMark # Mc SIDDHAM SIGN VISARGA
+11630..11632 ; SpacingMark # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
+1163B..1163C ; SpacingMark # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
+1163E ; SpacingMark # Mc MODI SIGN VISARGA
+116AC ; SpacingMark # Mc TAKRI SIGN VISARGA
+116AE..116AF ; SpacingMark # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
+116B6 ; SpacingMark # Mc TAKRI SIGN VIRAMA
+11720..11721 ; SpacingMark # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
+11726 ; SpacingMark # Mc AHOM VOWEL SIGN E
+1182C..1182E ; SpacingMark # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+11838 ; SpacingMark # Mc DOGRA SIGN VISARGA
+11931..11935 ; SpacingMark # Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E
+11937..11938 ; SpacingMark # Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
+1193D ; SpacingMark # Mc DIVES AKURU SIGN HALANTA
+11940 ; SpacingMark # Mc DIVES AKURU MEDIAL YA
+11942 ; SpacingMark # Mc DIVES AKURU MEDIAL RA
+119D1..119D3 ; SpacingMark # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
+119DC..119DF ; SpacingMark # Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
+119E4 ; SpacingMark # Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
+11A39 ; SpacingMark # Mc ZANABAZAR SQUARE SIGN VISARGA
+11A57..11A58 ; SpacingMark # Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
+11A97 ; SpacingMark # Mc SOYOMBO SIGN VISARGA
+11C2F ; SpacingMark # Mc BHAIKSUKI VOWEL SIGN AA
+11C3E ; SpacingMark # Mc BHAIKSUKI SIGN VISARGA
+11CA9 ; SpacingMark # Mc MARCHEN SUBJOINED LETTER YA
+11CB1 ; SpacingMark # Mc MARCHEN VOWEL SIGN I
+11CB4 ; SpacingMark # Mc MARCHEN VOWEL SIGN O
+11D8A..11D8E ; SpacingMark # Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+11D93..11D94 ; SpacingMark # Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+11D96 ; SpacingMark # Mc GUNJALA GONDI SIGN VISARGA
+11EF5..11EF6 ; SpacingMark # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
+16F51..16F87 ; SpacingMark # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
+16FF0..16FF1 ; SpacingMark # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
+1D166 ; SpacingMark # Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D16D ; SpacingMark # Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT
+
+# Total code points: 388
+
+# ================================================
+
+1100..115F ; L # Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER
+A960..A97C ; L # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
+
+# Total code points: 125
+
+# ================================================
+
+1160..11A7 ; V # Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE
+D7B0..D7C6 ; V # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+
+# Total code points: 95
+
+# ================================================
+
+11A8..11FF ; T # Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN
+D7CB..D7FB ; T # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
+
+# Total code points: 137
+
+# ================================================
+
+AC00 ; LV # Lo HANGUL SYLLABLE GA
+AC1C ; LV # Lo HANGUL SYLLABLE GAE
+AC38 ; LV # Lo HANGUL SYLLABLE GYA
+AC54 ; LV # Lo HANGUL SYLLABLE GYAE
+AC70 ; LV # Lo HANGUL SYLLABLE GEO
+AC8C ; LV # Lo HANGUL SYLLABLE GE
+ACA8 ; LV # Lo HANGUL SYLLABLE GYEO
+ACC4 ; LV # Lo HANGUL SYLLABLE GYE
+ACE0 ; LV # Lo HANGUL SYLLABLE GO
+ACFC ; LV # Lo HANGUL SYLLABLE GWA
+AD18 ; LV # Lo HANGUL SYLLABLE GWAE
+AD34 ; LV # Lo HANGUL SYLLABLE GOE
+AD50 ; LV # Lo HANGUL SYLLABLE GYO
+AD6C ; LV # Lo HANGUL SYLLABLE GU
+AD88 ; LV # Lo HANGUL SYLLABLE GWEO
+ADA4 ; LV # Lo HANGUL SYLLABLE GWE
+ADC0 ; LV # Lo HANGUL SYLLABLE GWI
+ADDC ; LV # Lo HANGUL SYLLABLE GYU
+ADF8 ; LV # Lo HANGUL SYLLABLE GEU
+AE14 ; LV # Lo HANGUL SYLLABLE GYI
+AE30 ; LV # Lo HANGUL SYLLABLE GI
+AE4C ; LV # Lo HANGUL SYLLABLE GGA
+AE68 ; LV # Lo HANGUL SYLLABLE GGAE
+AE84 ; LV # Lo HANGUL SYLLABLE GGYA
+AEA0 ; LV # Lo HANGUL SYLLABLE GGYAE
+AEBC ; LV # Lo HANGUL SYLLABLE GGEO
+AED8 ; LV # Lo HANGUL SYLLABLE GGE
+AEF4 ; LV # Lo HANGUL SYLLABLE GGYEO
+AF10 ; LV # Lo HANGUL SYLLABLE GGYE
+AF2C ; LV # Lo HANGUL SYLLABLE GGO
+AF48 ; LV # Lo HANGUL SYLLABLE GGWA
+AF64 ; LV # Lo HANGUL SYLLABLE GGWAE
+AF80 ; LV # Lo HANGUL SYLLABLE GGOE
+AF9C ; LV # Lo HANGUL SYLLABLE GGYO
+AFB8 ; LV # Lo HANGUL SYLLABLE GGU
+AFD4 ; LV # Lo HANGUL SYLLABLE GGWEO
+AFF0 ; LV # Lo HANGUL SYLLABLE GGWE
+B00C ; LV # Lo HANGUL SYLLABLE GGWI
+B028 ; LV # Lo HANGUL SYLLABLE GGYU
+B044 ; LV # Lo HANGUL SYLLABLE GGEU
+B060 ; LV # Lo HANGUL SYLLABLE GGYI
+B07C ; LV # Lo HANGUL SYLLABLE GGI
+B098 ; LV # Lo HANGUL SYLLABLE NA
+B0B4 ; LV # Lo HANGUL SYLLABLE NAE
+B0D0 ; LV # Lo HANGUL SYLLABLE NYA
+B0EC ; LV # Lo HANGUL SYLLABLE NYAE
+B108 ; LV # Lo HANGUL SYLLABLE NEO
+B124 ; LV # Lo HANGUL SYLLABLE NE
+B140 ; LV # Lo HANGUL SYLLABLE NYEO
+B15C ; LV # Lo HANGUL SYLLABLE NYE
+B178 ; LV # Lo HANGUL SYLLABLE NO
+B194 ; LV # Lo HANGUL SYLLABLE NWA
+B1B0 ; LV # Lo HANGUL SYLLABLE NWAE
+B1CC ; LV # Lo HANGUL SYLLABLE NOE
+B1E8 ; LV # Lo HANGUL SYLLABLE NYO
+B204 ; LV # Lo HANGUL SYLLABLE NU
+B220 ; LV # Lo HANGUL SYLLABLE NWEO
+B23C ; LV # Lo HANGUL SYLLABLE NWE
+B258 ; LV # Lo HANGUL SYLLABLE NWI
+B274 ; LV # Lo HANGUL SYLLABLE NYU
+B290 ; LV # Lo HANGUL SYLLABLE NEU
+B2AC ; LV # Lo HANGUL SYLLABLE NYI
+B2C8 ; LV # Lo HANGUL SYLLABLE NI
+B2E4 ; LV # Lo HANGUL SYLLABLE DA
+B300 ; LV # Lo HANGUL SYLLABLE DAE
+B31C ; LV # Lo HANGUL SYLLABLE DYA
+B338 ; LV # Lo HANGUL SYLLABLE DYAE
+B354 ; LV # Lo HANGUL SYLLABLE DEO
+B370 ; LV # Lo HANGUL SYLLABLE DE
+B38C ; LV # Lo HANGUL SYLLABLE DYEO
+B3A8 ; LV # Lo HANGUL SYLLABLE DYE
+B3C4 ; LV # Lo HANGUL SYLLABLE DO
+B3E0 ; LV # Lo HANGUL SYLLABLE DWA
+B3FC ; LV # Lo HANGUL SYLLABLE DWAE
+B418 ; LV # Lo HANGUL SYLLABLE DOE
+B434 ; LV # Lo HANGUL SYLLABLE DYO
+B450 ; LV # Lo HANGUL SYLLABLE DU
+B46C ; LV # Lo HANGUL SYLLABLE DWEO
+B488 ; LV # Lo HANGUL SYLLABLE DWE
+B4A4 ; LV # Lo HANGUL SYLLABLE DWI
+B4C0 ; LV # Lo HANGUL SYLLABLE DYU
+B4DC ; LV # Lo HANGUL SYLLABLE DEU
+B4F8 ; LV # Lo HANGUL SYLLABLE DYI
+B514 ; LV # Lo HANGUL SYLLABLE DI
+B530 ; LV # Lo HANGUL SYLLABLE DDA
+B54C ; LV # Lo HANGUL SYLLABLE DDAE
+B568 ; LV # Lo HANGUL SYLLABLE DDYA
+B584 ; LV # Lo HANGUL SYLLABLE DDYAE
+B5A0 ; LV # Lo HANGUL SYLLABLE DDEO
+B5BC ; LV # Lo HANGUL SYLLABLE DDE
+B5D8 ; LV # Lo HANGUL SYLLABLE DDYEO
+B5F4 ; LV # Lo HANGUL SYLLABLE DDYE
+B610 ; LV # Lo HANGUL SYLLABLE DDO
+B62C ; LV # Lo HANGUL SYLLABLE DDWA
+B648 ; LV # Lo HANGUL SYLLABLE DDWAE
+B664 ; LV # Lo HANGUL SYLLABLE DDOE
+B680 ; LV # Lo HANGUL SYLLABLE DDYO
+B69C ; LV # Lo HANGUL SYLLABLE DDU
+B6B8 ; LV # Lo HANGUL SYLLABLE DDWEO
+B6D4 ; LV # Lo HANGUL SYLLABLE DDWE
+B6F0 ; LV # Lo HANGUL SYLLABLE DDWI
+B70C ; LV # Lo HANGUL SYLLABLE DDYU
+B728 ; LV # Lo HANGUL SYLLABLE DDEU
+B744 ; LV # Lo HANGUL SYLLABLE DDYI
+B760 ; LV # Lo HANGUL SYLLABLE DDI
+B77C ; LV # Lo HANGUL SYLLABLE RA
+B798 ; LV # Lo HANGUL SYLLABLE RAE
+B7B4 ; LV # Lo HANGUL SYLLABLE RYA
+B7D0 ; LV # Lo HANGUL SYLLABLE RYAE
+B7EC ; LV # Lo HANGUL SYLLABLE REO
+B808 ; LV # Lo HANGUL SYLLABLE RE
+B824 ; LV # Lo HANGUL SYLLABLE RYEO
+B840 ; LV # Lo HANGUL SYLLABLE RYE
+B85C ; LV # Lo HANGUL SYLLABLE RO
+B878 ; LV # Lo HANGUL SYLLABLE RWA
+B894 ; LV # Lo HANGUL SYLLABLE RWAE
+B8B0 ; LV # Lo HANGUL SYLLABLE ROE
+B8CC ; LV # Lo HANGUL SYLLABLE RYO
+B8E8 ; LV # Lo HANGUL SYLLABLE RU
+B904 ; LV # Lo HANGUL SYLLABLE RWEO
+B920 ; LV # Lo HANGUL SYLLABLE RWE
+B93C ; LV # Lo HANGUL SYLLABLE RWI
+B958 ; LV # Lo HANGUL SYLLABLE RYU
+B974 ; LV # Lo HANGUL SYLLABLE REU
+B990 ; LV # Lo HANGUL SYLLABLE RYI
+B9AC ; LV # Lo HANGUL SYLLABLE RI
+B9C8 ; LV # Lo HANGUL SYLLABLE MA
+B9E4 ; LV # Lo HANGUL SYLLABLE MAE
+BA00 ; LV # Lo HANGUL SYLLABLE MYA
+BA1C ; LV # Lo HANGUL SYLLABLE MYAE
+BA38 ; LV # Lo HANGUL SYLLABLE MEO
+BA54 ; LV # Lo HANGUL SYLLABLE ME
+BA70 ; LV # Lo HANGUL SYLLABLE MYEO
+BA8C ; LV # Lo HANGUL SYLLABLE MYE
+BAA8 ; LV # Lo HANGUL SYLLABLE MO
+BAC4 ; LV # Lo HANGUL SYLLABLE MWA
+BAE0 ; LV # Lo HANGUL SYLLABLE MWAE
+BAFC ; LV # Lo HANGUL SYLLABLE MOE
+BB18 ; LV # Lo HANGUL SYLLABLE MYO
+BB34 ; LV # Lo HANGUL SYLLABLE MU
+BB50 ; LV # Lo HANGUL SYLLABLE MWEO
+BB6C ; LV # Lo HANGUL SYLLABLE MWE
+BB88 ; LV # Lo HANGUL SYLLABLE MWI
+BBA4 ; LV # Lo HANGUL SYLLABLE MYU
+BBC0 ; LV # Lo HANGUL SYLLABLE MEU
+BBDC ; LV # Lo HANGUL SYLLABLE MYI
+BBF8 ; LV # Lo HANGUL SYLLABLE MI
+BC14 ; LV # Lo HANGUL SYLLABLE BA
+BC30 ; LV # Lo HANGUL SYLLABLE BAE
+BC4C ; LV # Lo HANGUL SYLLABLE BYA
+BC68 ; LV # Lo HANGUL SYLLABLE BYAE
+BC84 ; LV # Lo HANGUL SYLLABLE BEO
+BCA0 ; LV # Lo HANGUL SYLLABLE BE
+BCBC ; LV # Lo HANGUL SYLLABLE BYEO
+BCD8 ; LV # Lo HANGUL SYLLABLE BYE
+BCF4 ; LV # Lo HANGUL SYLLABLE BO
+BD10 ; LV # Lo HANGUL SYLLABLE BWA
+BD2C ; LV # Lo HANGUL SYLLABLE BWAE
+BD48 ; LV # Lo HANGUL SYLLABLE BOE
+BD64 ; LV # Lo HANGUL SYLLABLE BYO
+BD80 ; LV # Lo HANGUL SYLLABLE BU
+BD9C ; LV # Lo HANGUL SYLLABLE BWEO
+BDB8 ; LV # Lo HANGUL SYLLABLE BWE
+BDD4 ; LV # Lo HANGUL SYLLABLE BWI
+BDF0 ; LV # Lo HANGUL SYLLABLE BYU
+BE0C ; LV # Lo HANGUL SYLLABLE BEU
+BE28 ; LV # Lo HANGUL SYLLABLE BYI
+BE44 ; LV # Lo HANGUL SYLLABLE BI
+BE60 ; LV # Lo HANGUL SYLLABLE BBA
+BE7C ; LV # Lo HANGUL SYLLABLE BBAE
+BE98 ; LV # Lo HANGUL SYLLABLE BBYA
+BEB4 ; LV # Lo HANGUL SYLLABLE BBYAE
+BED0 ; LV # Lo HANGUL SYLLABLE BBEO
+BEEC ; LV # Lo HANGUL SYLLABLE BBE
+BF08 ; LV # Lo HANGUL SYLLABLE BBYEO
+BF24 ; LV # Lo HANGUL SYLLABLE BBYE
+BF40 ; LV # Lo HANGUL SYLLABLE BBO
+BF5C ; LV # Lo HANGUL SYLLABLE BBWA
+BF78 ; LV # Lo HANGUL SYLLABLE BBWAE
+BF94 ; LV # Lo HANGUL SYLLABLE BBOE
+BFB0 ; LV # Lo HANGUL SYLLABLE BBYO
+BFCC ; LV # Lo HANGUL SYLLABLE BBU
+BFE8 ; LV # Lo HANGUL SYLLABLE BBWEO
+C004 ; LV # Lo HANGUL SYLLABLE BBWE
+C020 ; LV # Lo HANGUL SYLLABLE BBWI
+C03C ; LV # Lo HANGUL SYLLABLE BBYU
+C058 ; LV # Lo HANGUL SYLLABLE BBEU
+C074 ; LV # Lo HANGUL SYLLABLE BBYI
+C090 ; LV # Lo HANGUL SYLLABLE BBI
+C0AC ; LV # Lo HANGUL SYLLABLE SA
+C0C8 ; LV # Lo HANGUL SYLLABLE SAE
+C0E4 ; LV # Lo HANGUL SYLLABLE SYA
+C100 ; LV # Lo HANGUL SYLLABLE SYAE
+C11C ; LV # Lo HANGUL SYLLABLE SEO
+C138 ; LV # Lo HANGUL SYLLABLE SE
+C154 ; LV # Lo HANGUL SYLLABLE SYEO
+C170 ; LV # Lo HANGUL SYLLABLE SYE
+C18C ; LV # Lo HANGUL SYLLABLE SO
+C1A8 ; LV # Lo HANGUL SYLLABLE SWA
+C1C4 ; LV # Lo HANGUL SYLLABLE SWAE
+C1E0 ; LV # Lo HANGUL SYLLABLE SOE
+C1FC ; LV # Lo HANGUL SYLLABLE SYO
+C218 ; LV # Lo HANGUL SYLLABLE SU
+C234 ; LV # Lo HANGUL SYLLABLE SWEO
+C250 ; LV # Lo HANGUL SYLLABLE SWE
+C26C ; LV # Lo HANGUL SYLLABLE SWI
+C288 ; LV # Lo HANGUL SYLLABLE SYU
+C2A4 ; LV # Lo HANGUL SYLLABLE SEU
+C2C0 ; LV # Lo HANGUL SYLLABLE SYI
+C2DC ; LV # Lo HANGUL SYLLABLE SI
+C2F8 ; LV # Lo HANGUL SYLLABLE SSA
+C314 ; LV # Lo HANGUL SYLLABLE SSAE
+C330 ; LV # Lo HANGUL SYLLABLE SSYA
+C34C ; LV # Lo HANGUL SYLLABLE SSYAE
+C368 ; LV # Lo HANGUL SYLLABLE SSEO
+C384 ; LV # Lo HANGUL SYLLABLE SSE
+C3A0 ; LV # Lo HANGUL SYLLABLE SSYEO
+C3BC ; LV # Lo HANGUL SYLLABLE SSYE
+C3D8 ; LV # Lo HANGUL SYLLABLE SSO
+C3F4 ; LV # Lo HANGUL SYLLABLE SSWA
+C410 ; LV # Lo HANGUL SYLLABLE SSWAE
+C42C ; LV # Lo HANGUL SYLLABLE SSOE
+C448 ; LV # Lo HANGUL SYLLABLE SSYO
+C464 ; LV # Lo HANGUL SYLLABLE SSU
+C480 ; LV # Lo HANGUL SYLLABLE SSWEO
+C49C ; LV # Lo HANGUL SYLLABLE SSWE
+C4B8 ; LV # Lo HANGUL SYLLABLE SSWI
+C4D4 ; LV # Lo HANGUL SYLLABLE SSYU
+C4F0 ; LV # Lo HANGUL SYLLABLE SSEU
+C50C ; LV # Lo HANGUL SYLLABLE SSYI
+C528 ; LV # Lo HANGUL SYLLABLE SSI
+C544 ; LV # Lo HANGUL SYLLABLE A
+C560 ; LV # Lo HANGUL SYLLABLE AE
+C57C ; LV # Lo HANGUL SYLLABLE YA
+C598 ; LV # Lo HANGUL SYLLABLE YAE
+C5B4 ; LV # Lo HANGUL SYLLABLE EO
+C5D0 ; LV # Lo HANGUL SYLLABLE E
+C5EC ; LV # Lo HANGUL SYLLABLE YEO
+C608 ; LV # Lo HANGUL SYLLABLE YE
+C624 ; LV # Lo HANGUL SYLLABLE O
+C640 ; LV # Lo HANGUL SYLLABLE WA
+C65C ; LV # Lo HANGUL SYLLABLE WAE
+C678 ; LV # Lo HANGUL SYLLABLE OE
+C694 ; LV # Lo HANGUL SYLLABLE YO
+C6B0 ; LV # Lo HANGUL SYLLABLE U
+C6CC ; LV # Lo HANGUL SYLLABLE WEO
+C6E8 ; LV # Lo HANGUL SYLLABLE WE
+C704 ; LV # Lo HANGUL SYLLABLE WI
+C720 ; LV # Lo HANGUL SYLLABLE YU
+C73C ; LV # Lo HANGUL SYLLABLE EU
+C758 ; LV # Lo HANGUL SYLLABLE YI
+C774 ; LV # Lo HANGUL SYLLABLE I
+C790 ; LV # Lo HANGUL SYLLABLE JA
+C7AC ; LV # Lo HANGUL SYLLABLE JAE
+C7C8 ; LV # Lo HANGUL SYLLABLE JYA
+C7E4 ; LV # Lo HANGUL SYLLABLE JYAE
+C800 ; LV # Lo HANGUL SYLLABLE JEO
+C81C ; LV # Lo HANGUL SYLLABLE JE
+C838 ; LV # Lo HANGUL SYLLABLE JYEO
+C854 ; LV # Lo HANGUL SYLLABLE JYE
+C870 ; LV # Lo HANGUL SYLLABLE JO
+C88C ; LV # Lo HANGUL SYLLABLE JWA
+C8A8 ; LV # Lo HANGUL SYLLABLE JWAE
+C8C4 ; LV # Lo HANGUL SYLLABLE JOE
+C8E0 ; LV # Lo HANGUL SYLLABLE JYO
+C8FC ; LV # Lo HANGUL SYLLABLE JU
+C918 ; LV # Lo HANGUL SYLLABLE JWEO
+C934 ; LV # Lo HANGUL SYLLABLE JWE
+C950 ; LV # Lo HANGUL SYLLABLE JWI
+C96C ; LV # Lo HANGUL SYLLABLE JYU
+C988 ; LV # Lo HANGUL SYLLABLE JEU
+C9A4 ; LV # Lo HANGUL SYLLABLE JYI
+C9C0 ; LV # Lo HANGUL SYLLABLE JI
+C9DC ; LV # Lo HANGUL SYLLABLE JJA
+C9F8 ; LV # Lo HANGUL SYLLABLE JJAE
+CA14 ; LV # Lo HANGUL SYLLABLE JJYA
+CA30 ; LV # Lo HANGUL SYLLABLE JJYAE
+CA4C ; LV # Lo HANGUL SYLLABLE JJEO
+CA68 ; LV # Lo HANGUL SYLLABLE JJE
+CA84 ; LV # Lo HANGUL SYLLABLE JJYEO
+CAA0 ; LV # Lo HANGUL SYLLABLE JJYE
+CABC ; LV # Lo HANGUL SYLLABLE JJO
+CAD8 ; LV # Lo HANGUL SYLLABLE JJWA
+CAF4 ; LV # Lo HANGUL SYLLABLE JJWAE
+CB10 ; LV # Lo HANGUL SYLLABLE JJOE
+CB2C ; LV # Lo HANGUL SYLLABLE JJYO
+CB48 ; LV # Lo HANGUL SYLLABLE JJU
+CB64 ; LV # Lo HANGUL SYLLABLE JJWEO
+CB80 ; LV # Lo HANGUL SYLLABLE JJWE
+CB9C ; LV # Lo HANGUL SYLLABLE JJWI
+CBB8 ; LV # Lo HANGUL SYLLABLE JJYU
+CBD4 ; LV # Lo HANGUL SYLLABLE JJEU
+CBF0 ; LV # Lo HANGUL SYLLABLE JJYI
+CC0C ; LV # Lo HANGUL SYLLABLE JJI
+CC28 ; LV # Lo HANGUL SYLLABLE CA
+CC44 ; LV # Lo HANGUL SYLLABLE CAE
+CC60 ; LV # Lo HANGUL SYLLABLE CYA
+CC7C ; LV # Lo HANGUL SYLLABLE CYAE
+CC98 ; LV # Lo HANGUL SYLLABLE CEO
+CCB4 ; LV # Lo HANGUL SYLLABLE CE
+CCD0 ; LV # Lo HANGUL SYLLABLE CYEO
+CCEC ; LV # Lo HANGUL SYLLABLE CYE
+CD08 ; LV # Lo HANGUL SYLLABLE CO
+CD24 ; LV # Lo HANGUL SYLLABLE CWA
+CD40 ; LV # Lo HANGUL SYLLABLE CWAE
+CD5C ; LV # Lo HANGUL SYLLABLE COE
+CD78 ; LV # Lo HANGUL SYLLABLE CYO
+CD94 ; LV # Lo HANGUL SYLLABLE CU
+CDB0 ; LV # Lo HANGUL SYLLABLE CWEO
+CDCC ; LV # Lo HANGUL SYLLABLE CWE
+CDE8 ; LV # Lo HANGUL SYLLABLE CWI
+CE04 ; LV # Lo HANGUL SYLLABLE CYU
+CE20 ; LV # Lo HANGUL SYLLABLE CEU
+CE3C ; LV # Lo HANGUL SYLLABLE CYI
+CE58 ; LV # Lo HANGUL SYLLABLE CI
+CE74 ; LV # Lo HANGUL SYLLABLE KA
+CE90 ; LV # Lo HANGUL SYLLABLE KAE
+CEAC ; LV # Lo HANGUL SYLLABLE KYA
+CEC8 ; LV # Lo HANGUL SYLLABLE KYAE
+CEE4 ; LV # Lo HANGUL SYLLABLE KEO
+CF00 ; LV # Lo HANGUL SYLLABLE KE
+CF1C ; LV # Lo HANGUL SYLLABLE KYEO
+CF38 ; LV # Lo HANGUL SYLLABLE KYE
+CF54 ; LV # Lo HANGUL SYLLABLE KO
+CF70 ; LV # Lo HANGUL SYLLABLE KWA
+CF8C ; LV # Lo HANGUL SYLLABLE KWAE
+CFA8 ; LV # Lo HANGUL SYLLABLE KOE
+CFC4 ; LV # Lo HANGUL SYLLABLE KYO
+CFE0 ; LV # Lo HANGUL SYLLABLE KU
+CFFC ; LV # Lo HANGUL SYLLABLE KWEO
+D018 ; LV # Lo HANGUL SYLLABLE KWE
+D034 ; LV # Lo HANGUL SYLLABLE KWI
+D050 ; LV # Lo HANGUL SYLLABLE KYU
+D06C ; LV # Lo HANGUL SYLLABLE KEU
+D088 ; LV # Lo HANGUL SYLLABLE KYI
+D0A4 ; LV # Lo HANGUL SYLLABLE KI
+D0C0 ; LV # Lo HANGUL SYLLABLE TA
+D0DC ; LV # Lo HANGUL SYLLABLE TAE
+D0F8 ; LV # Lo HANGUL SYLLABLE TYA
+D114 ; LV # Lo HANGUL SYLLABLE TYAE
+D130 ; LV # Lo HANGUL SYLLABLE TEO
+D14C ; LV # Lo HANGUL SYLLABLE TE
+D168 ; LV # Lo HANGUL SYLLABLE TYEO
+D184 ; LV # Lo HANGUL SYLLABLE TYE
+D1A0 ; LV # Lo HANGUL SYLLABLE TO
+D1BC ; LV # Lo HANGUL SYLLABLE TWA
+D1D8 ; LV # Lo HANGUL SYLLABLE TWAE
+D1F4 ; LV # Lo HANGUL SYLLABLE TOE
+D210 ; LV # Lo HANGUL SYLLABLE TYO
+D22C ; LV # Lo HANGUL SYLLABLE TU
+D248 ; LV # Lo HANGUL SYLLABLE TWEO
+D264 ; LV # Lo HANGUL SYLLABLE TWE
+D280 ; LV # Lo HANGUL SYLLABLE TWI
+D29C ; LV # Lo HANGUL SYLLABLE TYU
+D2B8 ; LV # Lo HANGUL SYLLABLE TEU
+D2D4 ; LV # Lo HANGUL SYLLABLE TYI
+D2F0 ; LV # Lo HANGUL SYLLABLE TI
+D30C ; LV # Lo HANGUL SYLLABLE PA
+D328 ; LV # Lo HANGUL SYLLABLE PAE
+D344 ; LV # Lo HANGUL SYLLABLE PYA
+D360 ; LV # Lo HANGUL SYLLABLE PYAE
+D37C ; LV # Lo HANGUL SYLLABLE PEO
+D398 ; LV # Lo HANGUL SYLLABLE PE
+D3B4 ; LV # Lo HANGUL SYLLABLE PYEO
+D3D0 ; LV # Lo HANGUL SYLLABLE PYE
+D3EC ; LV # Lo HANGUL SYLLABLE PO
+D408 ; LV # Lo HANGUL SYLLABLE PWA
+D424 ; LV # Lo HANGUL SYLLABLE PWAE
+D440 ; LV # Lo HANGUL SYLLABLE POE
+D45C ; LV # Lo HANGUL SYLLABLE PYO
+D478 ; LV # Lo HANGUL SYLLABLE PU
+D494 ; LV # Lo HANGUL SYLLABLE PWEO
+D4B0 ; LV # Lo HANGUL SYLLABLE PWE
+D4CC ; LV # Lo HANGUL SYLLABLE PWI
+D4E8 ; LV # Lo HANGUL SYLLABLE PYU
+D504 ; LV # Lo HANGUL SYLLABLE PEU
+D520 ; LV # Lo HANGUL SYLLABLE PYI
+D53C ; LV # Lo HANGUL SYLLABLE PI
+D558 ; LV # Lo HANGUL SYLLABLE HA
+D574 ; LV # Lo HANGUL SYLLABLE HAE
+D590 ; LV # Lo HANGUL SYLLABLE HYA
+D5AC ; LV # Lo HANGUL SYLLABLE HYAE
+D5C8 ; LV # Lo HANGUL SYLLABLE HEO
+D5E4 ; LV # Lo HANGUL SYLLABLE HE
+D600 ; LV # Lo HANGUL SYLLABLE HYEO
+D61C ; LV # Lo HANGUL SYLLABLE HYE
+D638 ; LV # Lo HANGUL SYLLABLE HO
+D654 ; LV # Lo HANGUL SYLLABLE HWA
+D670 ; LV # Lo HANGUL SYLLABLE HWAE
+D68C ; LV # Lo HANGUL SYLLABLE HOE
+D6A8 ; LV # Lo HANGUL SYLLABLE HYO
+D6C4 ; LV # Lo HANGUL SYLLABLE HU
+D6E0 ; LV # Lo HANGUL SYLLABLE HWEO
+D6FC ; LV # Lo HANGUL SYLLABLE HWE
+D718 ; LV # Lo HANGUL SYLLABLE HWI
+D734 ; LV # Lo HANGUL SYLLABLE HYU
+D750 ; LV # Lo HANGUL SYLLABLE HEU
+D76C ; LV # Lo HANGUL SYLLABLE HYI
+D788 ; LV # Lo HANGUL SYLLABLE HI
+
+# Total code points: 399
+
+# ================================================
+
+AC01..AC1B ; LVT # Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH
+AC1D..AC37 ; LVT # Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH
+AC39..AC53 ; LVT # Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH
+AC55..AC6F ; LVT # Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH
+AC71..AC8B ; LVT # Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH
+AC8D..ACA7 ; LVT # Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH
+ACA9..ACC3 ; LVT # Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH
+ACC5..ACDF ; LVT # Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH
+ACE1..ACFB ; LVT # Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH
+ACFD..AD17 ; LVT # Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH
+AD19..AD33 ; LVT # Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH
+AD35..AD4F ; LVT # Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH
+AD51..AD6B ; LVT # Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH
+AD6D..AD87 ; LVT # Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH
+AD89..ADA3 ; LVT # Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH
+ADA5..ADBF ; LVT # Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH
+ADC1..ADDB ; LVT # Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH
+ADDD..ADF7 ; LVT # Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH
+ADF9..AE13 ; LVT # Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH
+AE15..AE2F ; LVT # Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH
+AE31..AE4B ; LVT # Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH
+AE4D..AE67 ; LVT # Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH
+AE69..AE83 ; LVT # Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH
+AE85..AE9F ; LVT # Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH
+AEA1..AEBB ; LVT # Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH
+AEBD..AED7 ; LVT # Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH
+AED9..AEF3 ; LVT # Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH
+AEF5..AF0F ; LVT # Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH
+AF11..AF2B ; LVT # Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH
+AF2D..AF47 ; LVT # Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH
+AF49..AF63 ; LVT # Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH
+AF65..AF7F ; LVT # Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH
+AF81..AF9B ; LVT # Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH
+AF9D..AFB7 ; LVT # Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH
+AFB9..AFD3 ; LVT # Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH
+AFD5..AFEF ; LVT # Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH
+AFF1..B00B ; LVT # Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH
+B00D..B027 ; LVT # Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH
+B029..B043 ; LVT # Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH
+B045..B05F ; LVT # Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH
+B061..B07B ; LVT # Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH
+B07D..B097 ; LVT # Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH
+B099..B0B3 ; LVT # Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH
+B0B5..B0CF ; LVT # Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH
+B0D1..B0EB ; LVT # Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH
+B0ED..B107 ; LVT # Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH
+B109..B123 ; LVT # Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH
+B125..B13F ; LVT # Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH
+B141..B15B ; LVT # Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH
+B15D..B177 ; LVT # Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH
+B179..B193 ; LVT # Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH
+B195..B1AF ; LVT # Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH
+B1B1..B1CB ; LVT # Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH
+B1CD..B1E7 ; LVT # Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH
+B1E9..B203 ; LVT # Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH
+B205..B21F ; LVT # Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH
+B221..B23B ; LVT # Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH
+B23D..B257 ; LVT # Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH
+B259..B273 ; LVT # Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH
+B275..B28F ; LVT # Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH
+B291..B2AB ; LVT # Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH
+B2AD..B2C7 ; LVT # Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH
+B2C9..B2E3 ; LVT # Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH
+B2E5..B2FF ; LVT # Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH
+B301..B31B ; LVT # Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH
+B31D..B337 ; LVT # Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH
+B339..B353 ; LVT # Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH
+B355..B36F ; LVT # Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH
+B371..B38B ; LVT # Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH
+B38D..B3A7 ; LVT # Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH
+B3A9..B3C3 ; LVT # Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH
+B3C5..B3DF ; LVT # Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH
+B3E1..B3FB ; LVT # Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH
+B3FD..B417 ; LVT # Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH
+B419..B433 ; LVT # Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH
+B435..B44F ; LVT # Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH
+B451..B46B ; LVT # Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH
+B46D..B487 ; LVT # Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH
+B489..B4A3 ; LVT # Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH
+B4A5..B4BF ; LVT # Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH
+B4C1..B4DB ; LVT # Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH
+B4DD..B4F7 ; LVT # Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH
+B4F9..B513 ; LVT # Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH
+B515..B52F ; LVT # Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH
+B531..B54B ; LVT # Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH
+B54D..B567 ; LVT # Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH
+B569..B583 ; LVT # Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH
+B585..B59F ; LVT # Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH
+B5A1..B5BB ; LVT # Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH
+B5BD..B5D7 ; LVT # Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH
+B5D9..B5F3 ; LVT # Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH
+B5F5..B60F ; LVT # Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH
+B611..B62B ; LVT # Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH
+B62D..B647 ; LVT # Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH
+B649..B663 ; LVT # Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH
+B665..B67F ; LVT # Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH
+B681..B69B ; LVT # Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH
+B69D..B6B7 ; LVT # Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH
+B6B9..B6D3 ; LVT # Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH
+B6D5..B6EF ; LVT # Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH
+B6F1..B70B ; LVT # Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH
+B70D..B727 ; LVT # Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH
+B729..B743 ; LVT # Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH
+B745..B75F ; LVT # Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH
+B761..B77B ; LVT # Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH
+B77D..B797 ; LVT # Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH
+B799..B7B3 ; LVT # Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH
+B7B5..B7CF ; LVT # Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH
+B7D1..B7EB ; LVT # Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH
+B7ED..B807 ; LVT # Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH
+B809..B823 ; LVT # Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH
+B825..B83F ; LVT # Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH
+B841..B85B ; LVT # Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH
+B85D..B877 ; LVT # Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH
+B879..B893 ; LVT # Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH
+B895..B8AF ; LVT # Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH
+B8B1..B8CB ; LVT # Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH
+B8CD..B8E7 ; LVT # Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH
+B8E9..B903 ; LVT # Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH
+B905..B91F ; LVT # Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH
+B921..B93B ; LVT # Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH
+B93D..B957 ; LVT # Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH
+B959..B973 ; LVT # Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH
+B975..B98F ; LVT # Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH
+B991..B9AB ; LVT # Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH
+B9AD..B9C7 ; LVT # Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH
+B9C9..B9E3 ; LVT # Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH
+B9E5..B9FF ; LVT # Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH
+BA01..BA1B ; LVT # Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH
+BA1D..BA37 ; LVT # Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH
+BA39..BA53 ; LVT # Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH
+BA55..BA6F ; LVT # Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH
+BA71..BA8B ; LVT # Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH
+BA8D..BAA7 ; LVT # Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH
+BAA9..BAC3 ; LVT # Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH
+BAC5..BADF ; LVT # Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH
+BAE1..BAFB ; LVT # Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH
+BAFD..BB17 ; LVT # Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH
+BB19..BB33 ; LVT # Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH
+BB35..BB4F ; LVT # Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH
+BB51..BB6B ; LVT # Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH
+BB6D..BB87 ; LVT # Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH
+BB89..BBA3 ; LVT # Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH
+BBA5..BBBF ; LVT # Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH
+BBC1..BBDB ; LVT # Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH
+BBDD..BBF7 ; LVT # Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH
+BBF9..BC13 ; LVT # Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH
+BC15..BC2F ; LVT # Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH
+BC31..BC4B ; LVT # Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH
+BC4D..BC67 ; LVT # Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH
+BC69..BC83 ; LVT # Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH
+BC85..BC9F ; LVT # Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH
+BCA1..BCBB ; LVT # Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH
+BCBD..BCD7 ; LVT # Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH
+BCD9..BCF3 ; LVT # Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH
+BCF5..BD0F ; LVT # Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH
+BD11..BD2B ; LVT # Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH
+BD2D..BD47 ; LVT # Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH
+BD49..BD63 ; LVT # Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH
+BD65..BD7F ; LVT # Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH
+BD81..BD9B ; LVT # Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH
+BD9D..BDB7 ; LVT # Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH
+BDB9..BDD3 ; LVT # Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH
+BDD5..BDEF ; LVT # Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH
+BDF1..BE0B ; LVT # Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH
+BE0D..BE27 ; LVT # Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH
+BE29..BE43 ; LVT # Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH
+BE45..BE5F ; LVT # Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH
+BE61..BE7B ; LVT # Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH
+BE7D..BE97 ; LVT # Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH
+BE99..BEB3 ; LVT # Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH
+BEB5..BECF ; LVT # Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH
+BED1..BEEB ; LVT # Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH
+BEED..BF07 ; LVT # Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH
+BF09..BF23 ; LVT # Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH
+BF25..BF3F ; LVT # Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH
+BF41..BF5B ; LVT # Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH
+BF5D..BF77 ; LVT # Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH
+BF79..BF93 ; LVT # Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH
+BF95..BFAF ; LVT # Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH
+BFB1..BFCB ; LVT # Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH
+BFCD..BFE7 ; LVT # Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH
+BFE9..C003 ; LVT # Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH
+C005..C01F ; LVT # Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH
+C021..C03B ; LVT # Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH
+C03D..C057 ; LVT # Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH
+C059..C073 ; LVT # Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH
+C075..C08F ; LVT # Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH
+C091..C0AB ; LVT # Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH
+C0AD..C0C7 ; LVT # Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH
+C0C9..C0E3 ; LVT # Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH
+C0E5..C0FF ; LVT # Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH
+C101..C11B ; LVT # Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH
+C11D..C137 ; LVT # Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH
+C139..C153 ; LVT # Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH
+C155..C16F ; LVT # Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH
+C171..C18B ; LVT # Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH
+C18D..C1A7 ; LVT # Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH
+C1A9..C1C3 ; LVT # Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH
+C1C5..C1DF ; LVT # Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH
+C1E1..C1FB ; LVT # Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH
+C1FD..C217 ; LVT # Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH
+C219..C233 ; LVT # Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH
+C235..C24F ; LVT # Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH
+C251..C26B ; LVT # Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH
+C26D..C287 ; LVT # Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH
+C289..C2A3 ; LVT # Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH
+C2A5..C2BF ; LVT # Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH
+C2C1..C2DB ; LVT # Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH
+C2DD..C2F7 ; LVT # Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH
+C2F9..C313 ; LVT # Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH
+C315..C32F ; LVT # Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH
+C331..C34B ; LVT # Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH
+C34D..C367 ; LVT # Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH
+C369..C383 ; LVT # Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH
+C385..C39F ; LVT # Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH
+C3A1..C3BB ; LVT # Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH
+C3BD..C3D7 ; LVT # Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH
+C3D9..C3F3 ; LVT # Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH
+C3F5..C40F ; LVT # Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH
+C411..C42B ; LVT # Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH
+C42D..C447 ; LVT # Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH
+C449..C463 ; LVT # Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH
+C465..C47F ; LVT # Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH
+C481..C49B ; LVT # Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH
+C49D..C4B7 ; LVT # Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH
+C4B9..C4D3 ; LVT # Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH
+C4D5..C4EF ; LVT # Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH
+C4F1..C50B ; LVT # Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH
+C50D..C527 ; LVT # Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH
+C529..C543 ; LVT # Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH
+C545..C55F ; LVT # Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH
+C561..C57B ; LVT # Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH
+C57D..C597 ; LVT # Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH
+C599..C5B3 ; LVT # Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH
+C5B5..C5CF ; LVT # Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH
+C5D1..C5EB ; LVT # Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH
+C5ED..C607 ; LVT # Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH
+C609..C623 ; LVT # Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH
+C625..C63F ; LVT # Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH
+C641..C65B ; LVT # Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH
+C65D..C677 ; LVT # Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH
+C679..C693 ; LVT # Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH
+C695..C6AF ; LVT # Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH
+C6B1..C6CB ; LVT # Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH
+C6CD..C6E7 ; LVT # Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH
+C6E9..C703 ; LVT # Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH
+C705..C71F ; LVT # Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH
+C721..C73B ; LVT # Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH
+C73D..C757 ; LVT # Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH
+C759..C773 ; LVT # Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH
+C775..C78F ; LVT # Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH
+C791..C7AB ; LVT # Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH
+C7AD..C7C7 ; LVT # Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH
+C7C9..C7E3 ; LVT # Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH
+C7E5..C7FF ; LVT # Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH
+C801..C81B ; LVT # Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH
+C81D..C837 ; LVT # Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH
+C839..C853 ; LVT # Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH
+C855..C86F ; LVT # Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH
+C871..C88B ; LVT # Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH
+C88D..C8A7 ; LVT # Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH
+C8A9..C8C3 ; LVT # Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH
+C8C5..C8DF ; LVT # Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH
+C8E1..C8FB ; LVT # Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH
+C8FD..C917 ; LVT # Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH
+C919..C933 ; LVT # Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH
+C935..C94F ; LVT # Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH
+C951..C96B ; LVT # Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH
+C96D..C987 ; LVT # Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH
+C989..C9A3 ; LVT # Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH
+C9A5..C9BF ; LVT # Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH
+C9C1..C9DB ; LVT # Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH
+C9DD..C9F7 ; LVT # Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH
+C9F9..CA13 ; LVT # Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH
+CA15..CA2F ; LVT # Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH
+CA31..CA4B ; LVT # Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH
+CA4D..CA67 ; LVT # Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH
+CA69..CA83 ; LVT # Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH
+CA85..CA9F ; LVT # Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH
+CAA1..CABB ; LVT # Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH
+CABD..CAD7 ; LVT # Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH
+CAD9..CAF3 ; LVT # Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH
+CAF5..CB0F ; LVT # Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH
+CB11..CB2B ; LVT # Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH
+CB2D..CB47 ; LVT # Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH
+CB49..CB63 ; LVT # Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH
+CB65..CB7F ; LVT # Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH
+CB81..CB9B ; LVT # Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH
+CB9D..CBB7 ; LVT # Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH
+CBB9..CBD3 ; LVT # Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH
+CBD5..CBEF ; LVT # Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH
+CBF1..CC0B ; LVT # Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH
+CC0D..CC27 ; LVT # Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH
+CC29..CC43 ; LVT # Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH
+CC45..CC5F ; LVT # Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH
+CC61..CC7B ; LVT # Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH
+CC7D..CC97 ; LVT # Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH
+CC99..CCB3 ; LVT # Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH
+CCB5..CCCF ; LVT # Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH
+CCD1..CCEB ; LVT # Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH
+CCED..CD07 ; LVT # Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH
+CD09..CD23 ; LVT # Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH
+CD25..CD3F ; LVT # Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH
+CD41..CD5B ; LVT # Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH
+CD5D..CD77 ; LVT # Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH
+CD79..CD93 ; LVT # Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH
+CD95..CDAF ; LVT # Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH
+CDB1..CDCB ; LVT # Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH
+CDCD..CDE7 ; LVT # Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH
+CDE9..CE03 ; LVT # Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH
+CE05..CE1F ; LVT # Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH
+CE21..CE3B ; LVT # Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH
+CE3D..CE57 ; LVT # Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH
+CE59..CE73 ; LVT # Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH
+CE75..CE8F ; LVT # Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH
+CE91..CEAB ; LVT # Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH
+CEAD..CEC7 ; LVT # Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH
+CEC9..CEE3 ; LVT # Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH
+CEE5..CEFF ; LVT # Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH
+CF01..CF1B ; LVT # Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH
+CF1D..CF37 ; LVT # Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH
+CF39..CF53 ; LVT # Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH
+CF55..CF6F ; LVT # Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH
+CF71..CF8B ; LVT # Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH
+CF8D..CFA7 ; LVT # Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH
+CFA9..CFC3 ; LVT # Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH
+CFC5..CFDF ; LVT # Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH
+CFE1..CFFB ; LVT # Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH
+CFFD..D017 ; LVT # Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH
+D019..D033 ; LVT # Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH
+D035..D04F ; LVT # Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH
+D051..D06B ; LVT # Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH
+D06D..D087 ; LVT # Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH
+D089..D0A3 ; LVT # Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH
+D0A5..D0BF ; LVT # Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH
+D0C1..D0DB ; LVT # Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH
+D0DD..D0F7 ; LVT # Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH
+D0F9..D113 ; LVT # Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH
+D115..D12F ; LVT # Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH
+D131..D14B ; LVT # Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH
+D14D..D167 ; LVT # Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH
+D169..D183 ; LVT # Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH
+D185..D19F ; LVT # Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH
+D1A1..D1BB ; LVT # Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH
+D1BD..D1D7 ; LVT # Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH
+D1D9..D1F3 ; LVT # Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH
+D1F5..D20F ; LVT # Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH
+D211..D22B ; LVT # Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH
+D22D..D247 ; LVT # Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH
+D249..D263 ; LVT # Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH
+D265..D27F ; LVT # Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH
+D281..D29B ; LVT # Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH
+D29D..D2B7 ; LVT # Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH
+D2B9..D2D3 ; LVT # Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH
+D2D5..D2EF ; LVT # Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH
+D2F1..D30B ; LVT # Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH
+D30D..D327 ; LVT # Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH
+D329..D343 ; LVT # Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH
+D345..D35F ; LVT # Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH
+D361..D37B ; LVT # Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH
+D37D..D397 ; LVT # Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH
+D399..D3B3 ; LVT # Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH
+D3B5..D3CF ; LVT # Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH
+D3D1..D3EB ; LVT # Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH
+D3ED..D407 ; LVT # Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH
+D409..D423 ; LVT # Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH
+D425..D43F ; LVT # Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH
+D441..D45B ; LVT # Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH
+D45D..D477 ; LVT # Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH
+D479..D493 ; LVT # Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH
+D495..D4AF ; LVT # Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH
+D4B1..D4CB ; LVT # Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH
+D4CD..D4E7 ; LVT # Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH
+D4E9..D503 ; LVT # Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH
+D505..D51F ; LVT # Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH
+D521..D53B ; LVT # Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH
+D53D..D557 ; LVT # Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH
+D559..D573 ; LVT # Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH
+D575..D58F ; LVT # Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH
+D591..D5AB ; LVT # Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH
+D5AD..D5C7 ; LVT # Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH
+D5C9..D5E3 ; LVT # Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH
+D5E5..D5FF ; LVT # Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH
+D601..D61B ; LVT # Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH
+D61D..D637 ; LVT # Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH
+D639..D653 ; LVT # Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH
+D655..D66F ; LVT # Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH
+D671..D68B ; LVT # Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH
+D68D..D6A7 ; LVT # Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH
+D6A9..D6C3 ; LVT # Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH
+D6C5..D6DF ; LVT # Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH
+D6E1..D6FB ; LVT # Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH
+D6FD..D717 ; LVT # Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH
+D719..D733 ; LVT # Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH
+D735..D74F ; LVT # Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH
+D751..D76B ; LVT # Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH
+D76D..D787 ; LVT # Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH
+D789..D7A3 ; LVT # Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
+
+# Total code points: 10773
+
+# ================================================
+
+200D ; ZWJ # Cf ZERO WIDTH JOINER
+
+# Total code points: 1
+
+# EOF
diff --git a/macros/generic/unicode-data/README.md b/macros/generic/unicode-data/README.md
index ec304d9d17..e6ca0b2bb9 100644
--- a/macros/generic/unicode-data/README.md
+++ b/macros/generic/unicode-data/README.md
@@ -105,6 +105,8 @@ Unicode Consortium (see below):
- `BidiMirroring-5-1-0.txt`
- `CaseFolding.txt`
- `EastAsianWidth.txt`
+- `emoji-data.txt`
+- `GraphemeBreakProperty.txt`
- `LineBreak.txt`
- `MathClass.txt`
- `PropList.txt`
@@ -185,6 +187,8 @@ Changes
- Add `BidiMirroring.txt` and `BidiMirroring-5-1-0.txt`
- v1.12 (2020-03-11)
- Update data files to Unicode release 13.0.0
+- v1.13 (2020-04-15)
+ - Add `emoji-data.txt` and `GraphemeBreakProperty.txt`
License and permission
======================
diff --git a/macros/generic/unicode-data/emoji-data.txt b/macros/generic/unicode-data/emoji-data.txt
new file mode 100644
index 0000000000..5d7dc1b156
--- /dev/null
+++ b/macros/generic/unicode-data/emoji-data.txt
@@ -0,0 +1,1261 @@
+# emoji-data.txt
+# Date: 2020-01-28, 20:52:38 GMT
+# © 2020 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Emoji Data for UTS #51
+# Version: 13.0
+#
+# For documentation and usage, see http://www.unicode.org/reports/tr51
+#
+# Format:
+# <codepoint(s)> ; <property> # <comments>
+# Note: there is no guarantee as to the structure of whitespace or comments
+#
+# Characters and sequences are listed in code point order. Users should be shown a more natural order.
+# See the CLDR collation order for Emoji.
+
+
+# ================================================
+
+# All omitted code points have Emoji=No
+# @missing: 0000..10FFFF ; Emoji ; No
+
+0023 ; Emoji # E0.0 [1] (#️) number sign
+002A ; Emoji # E0.0 [1] (*️) asterisk
+0030..0039 ; Emoji # E0.0 [10] (0️..9️) digit zero..digit nine
+00A9 ; Emoji # E0.6 [1] (©️) copyright
+00AE ; Emoji # E0.6 [1] (®️) registered
+203C ; Emoji # E0.6 [1] (‼️) double exclamation mark
+2049 ; Emoji # E0.6 [1] (⁉️) exclamation question mark
+2122 ; Emoji # E0.6 [1] (™️) trade mark
+2139 ; Emoji # E0.6 [1] (ℹ️) information
+2194..2199 ; Emoji # E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow
+21A9..21AA ; Emoji # E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right
+231A..231B ; Emoji # E0.6 [2] (⌚..⌛) watch..hourglass done
+2328 ; Emoji # E1.0 [1] (⌨️) keyboard
+23CF ; Emoji # E1.0 [1] (⏏️) eject button
+23E9..23EC ; Emoji # E0.6 [4] (⏩..⏬) fast-forward button..fast down button
+23ED..23EE ; Emoji # E0.7 [2] (⏭️..⏮️) next track button..last track button
+23EF ; Emoji # E1.0 [1] (⏯️) play or pause button
+23F0 ; Emoji # E0.6 [1] (⏰) alarm clock
+23F1..23F2 ; Emoji # E1.0 [2] (⏱️..⏲️) stopwatch..timer clock
+23F3 ; Emoji # E0.6 [1] (⏳) hourglass not done
+23F8..23FA ; Emoji # E0.7 [3] (⏸️..⏺️) pause button..record button
+24C2 ; Emoji # E0.6 [1] (Ⓜ️) circled M
+25AA..25AB ; Emoji # E0.6 [2] (▪️..▫️) black small square..white small square
+25B6 ; Emoji # E0.6 [1] (▶️) play button
+25C0 ; Emoji # E0.6 [1] (◀️) reverse button
+25FB..25FE ; Emoji # E0.6 [4] (◻️..◾) white medium square..black medium-small square
+2600..2601 ; Emoji # E0.6 [2] (☀️..☁️) sun..cloud
+2602..2603 ; Emoji # E0.7 [2] (☂️..☃️) umbrella..snowman
+2604 ; Emoji # E1.0 [1] (☄️) comet
+260E ; Emoji # E0.6 [1] (☎️) telephone
+2611 ; Emoji # E0.6 [1] (☑️) check box with check
+2614..2615 ; Emoji # E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage
+2618 ; Emoji # E1.0 [1] (☘️) shamrock
+261D ; Emoji # E0.6 [1] (☝️) index pointing up
+2620 ; Emoji # E1.0 [1] (☠️) skull and crossbones
+2622..2623 ; Emoji # E1.0 [2] (☢️..☣️) radioactive..biohazard
+2626 ; Emoji # E1.0 [1] (☦️) orthodox cross
+262A ; Emoji # E0.7 [1] (☪️) star and crescent
+262E ; Emoji # E1.0 [1] (☮️) peace symbol
+262F ; Emoji # E0.7 [1] (☯️) yin yang
+2638..2639 ; Emoji # E0.7 [2] (☸️..☹️) wheel of dharma..frowning face
+263A ; Emoji # E0.6 [1] (☺️) smiling face
+2640 ; Emoji # E4.0 [1] (♀️) female sign
+2642 ; Emoji # E4.0 [1] (♂️) male sign
+2648..2653 ; Emoji # E0.6 [12] (♈..♓) Aries..Pisces
+265F ; Emoji # E11.0 [1] (♟️) chess pawn
+2660 ; Emoji # E0.6 [1] (♠️) spade suit
+2663 ; Emoji # E0.6 [1] (♣️) club suit
+2665..2666 ; Emoji # E0.6 [2] (♥️..♦️) heart suit..diamond suit
+2668 ; Emoji # E0.6 [1] (♨️) hot springs
+267B ; Emoji # E0.6 [1] (♻️) recycling symbol
+267E ; Emoji # E11.0 [1] (♾️) infinity
+267F ; Emoji # E0.6 [1] (♿) wheelchair symbol
+2692 ; Emoji # E1.0 [1] (⚒️) hammer and pick
+2693 ; Emoji # E0.6 [1] (⚓) anchor
+2694 ; Emoji # E1.0 [1] (⚔️) crossed swords
+2695 ; Emoji # E4.0 [1] (⚕️) medical symbol
+2696..2697 ; Emoji # E1.0 [2] (⚖️..⚗️) balance scale..alembic
+2699 ; Emoji # E1.0 [1] (⚙️) gear
+269B..269C ; Emoji # E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis
+26A0..26A1 ; Emoji # E0.6 [2] (⚠️..⚡) warning..high voltage
+26A7 ; Emoji # E13.0 [1] (⚧️) transgender symbol
+26AA..26AB ; Emoji # E0.6 [2] (⚪..⚫) white circle..black circle
+26B0..26B1 ; Emoji # E1.0 [2] (⚰️..⚱️) coffin..funeral urn
+26BD..26BE ; Emoji # E0.6 [2] (⚽..⚾) soccer ball..baseball
+26C4..26C5 ; Emoji # E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud
+26C8 ; Emoji # E0.7 [1] (⛈️) cloud with lightning and rain
+26CE ; Emoji # E0.6 [1] (⛎) Ophiuchus
+26CF ; Emoji # E0.7 [1] (⛏️) pick
+26D1 ; Emoji # E0.7 [1] (⛑️) rescue worker’s helmet
+26D3 ; Emoji # E0.7 [1] (⛓️) chains
+26D4 ; Emoji # E0.6 [1] (⛔) no entry
+26E9 ; Emoji # E0.7 [1] (⛩️) shinto shrine
+26EA ; Emoji # E0.6 [1] (⛪) church
+26F0..26F1 ; Emoji # E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground
+26F2..26F3 ; Emoji # E0.6 [2] (⛲..⛳) fountain..flag in hole
+26F4 ; Emoji # E0.7 [1] (⛴️) ferry
+26F5 ; Emoji # E0.6 [1] (⛵) sailboat
+26F7..26F9 ; Emoji # E0.7 [3] (⛷️..⛹️) skier..person bouncing ball
+26FA ; Emoji # E0.6 [1] (⛺) tent
+26FD ; Emoji # E0.6 [1] (⛽) fuel pump
+2702 ; Emoji # E0.6 [1] (✂️) scissors
+2705 ; Emoji # E0.6 [1] (✅) check mark button
+2708..270C ; Emoji # E0.6 [5] (✈️..✌️) airplane..victory hand
+270D ; Emoji # E0.7 [1] (✍️) writing hand
+270F ; Emoji # E0.6 [1] (✏️) pencil
+2712 ; Emoji # E0.6 [1] (✒️) black nib
+2714 ; Emoji # E0.6 [1] (✔️) check mark
+2716 ; Emoji # E0.6 [1] (✖️) multiply
+271D ; Emoji # E0.7 [1] (✝️) latin cross
+2721 ; Emoji # E0.7 [1] (✡️) star of David
+2728 ; Emoji # E0.6 [1] (✨) sparkles
+2733..2734 ; Emoji # E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star
+2744 ; Emoji # E0.6 [1] (❄️) snowflake
+2747 ; Emoji # E0.6 [1] (❇️) sparkle
+274C ; Emoji # E0.6 [1] (❌) cross mark
+274E ; Emoji # E0.6 [1] (❎) cross mark button
+2753..2755 ; Emoji # E0.6 [3] (❓..❕) question mark..white exclamation mark
+2757 ; Emoji # E0.6 [1] (❗) exclamation mark
+2763 ; Emoji # E1.0 [1] (❣️) heart exclamation
+2764 ; Emoji # E0.6 [1] (❤️) red heart
+2795..2797 ; Emoji # E0.6 [3] (➕..➗) plus..divide
+27A1 ; Emoji # E0.6 [1] (➡️) right arrow
+27B0 ; Emoji # E0.6 [1] (➰) curly loop
+27BF ; Emoji # E1.0 [1] (➿) double curly loop
+2934..2935 ; Emoji # E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down
+2B05..2B07 ; Emoji # E0.6 [3] (⬅️..⬇️) left arrow..down arrow
+2B1B..2B1C ; Emoji # E0.6 [2] (⬛..⬜) black large square..white large square
+2B50 ; Emoji # E0.6 [1] (⭐) star
+2B55 ; Emoji # E0.6 [1] (⭕) hollow red circle
+3030 ; Emoji # E0.6 [1] (〰️) wavy dash
+303D ; Emoji # E0.6 [1] (〽️) part alternation mark
+3297 ; Emoji # E0.6 [1] (㊗️) Japanese “congratulations” button
+3299 ; Emoji # E0.6 [1] (㊙️) Japanese “secret” button
+1F004 ; Emoji # E0.6 [1] (🀄) mahjong red dragon
+1F0CF ; Emoji # E0.6 [1] (🃏) joker
+1F170..1F171 ; Emoji # E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type)
+1F17E..1F17F ; Emoji # E0.6 [2] (🅾️..🅿️) O button (blood type)..P button
+1F18E ; Emoji # E0.6 [1] (🆎) AB button (blood type)
+1F191..1F19A ; Emoji # E0.6 [10] (🆑..🆚) CL button..VS button
+1F1E6..1F1FF ; Emoji # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
+1F201..1F202 ; Emoji # E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button
+1F21A ; Emoji # E0.6 [1] (🈚) Japanese “free of charge” button
+1F22F ; Emoji # E0.6 [1] (🈯) Japanese “reserved” button
+1F232..1F23A ; Emoji # E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button
+1F250..1F251 ; Emoji # E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
+1F300..1F30C ; Emoji # E0.6 [13] (🌀..🌌) cyclone..milky way
+1F30D..1F30E ; Emoji # E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas
+1F30F ; Emoji # E0.6 [1] (🌏) globe showing Asia-Australia
+1F310 ; Emoji # E1.0 [1] (🌐) globe with meridians
+1F311 ; Emoji # E0.6 [1] (🌑) new moon
+1F312 ; Emoji # E1.0 [1] (🌒) waxing crescent moon
+1F313..1F315 ; Emoji # E0.6 [3] (🌓..🌕) first quarter moon..full moon
+1F316..1F318 ; Emoji # E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon
+1F319 ; Emoji # E0.6 [1] (🌙) crescent moon
+1F31A ; Emoji # E1.0 [1] (🌚) new moon face
+1F31B ; Emoji # E0.6 [1] (🌛) first quarter moon face
+1F31C ; Emoji # E0.7 [1] (🌜) last quarter moon face
+1F31D..1F31E ; Emoji # E1.0 [2] (🌝..🌞) full moon face..sun with face
+1F31F..1F320 ; Emoji # E0.6 [2] (🌟..🌠) glowing star..shooting star
+1F321 ; Emoji # E0.7 [1] (🌡️) thermometer
+1F324..1F32C ; Emoji # E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face
+1F32D..1F32F ; Emoji # E1.0 [3] (🌭..🌯) hot dog..burrito
+1F330..1F331 ; Emoji # E0.6 [2] (🌰..🌱) chestnut..seedling
+1F332..1F333 ; Emoji # E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree
+1F334..1F335 ; Emoji # E0.6 [2] (🌴..🌵) palm tree..cactus
+1F336 ; Emoji # E0.7 [1] (🌶️) hot pepper
+1F337..1F34A ; Emoji # E0.6 [20] (🌷..🍊) tulip..tangerine
+1F34B ; Emoji # E1.0 [1] (🍋) lemon
+1F34C..1F34F ; Emoji # E0.6 [4] (🍌..🍏) banana..green apple
+1F350 ; Emoji # E1.0 [1] (🍐) pear
+1F351..1F37B ; Emoji # E0.6 [43] (🍑..🍻) peach..clinking beer mugs
+1F37C ; Emoji # E1.0 [1] (🍼) baby bottle
+1F37D ; Emoji # E0.7 [1] (🍽️) fork and knife with plate
+1F37E..1F37F ; Emoji # E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn
+1F380..1F393 ; Emoji # E0.6 [20] (🎀..🎓) ribbon..graduation cap
+1F396..1F397 ; Emoji # E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon
+1F399..1F39B ; Emoji # E0.7 [3] (🎙️..🎛️) studio microphone..control knobs
+1F39E..1F39F ; Emoji # E0.7 [2] (🎞️..🎟️) film frames..admission tickets
+1F3A0..1F3C4 ; Emoji # E0.6 [37] (🎠..🏄) carousel horse..person surfing
+1F3C5 ; Emoji # E1.0 [1] (🏅) sports medal
+1F3C6 ; Emoji # E0.6 [1] (🏆) trophy
+1F3C7 ; Emoji # E1.0 [1] (🏇) horse racing
+1F3C8 ; Emoji # E0.6 [1] (🏈) american football
+1F3C9 ; Emoji # E1.0 [1] (🏉) rugby football
+1F3CA ; Emoji # E0.6 [1] (🏊) person swimming
+1F3CB..1F3CE ; Emoji # E0.7 [4] (🏋️..🏎️) person lifting weights..racing car
+1F3CF..1F3D3 ; Emoji # E1.0 [5] (🏏..🏓) cricket game..ping pong
+1F3D4..1F3DF ; Emoji # E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium
+1F3E0..1F3E3 ; Emoji # E0.6 [4] (🏠..🏣) house..Japanese post office
+1F3E4 ; Emoji # E1.0 [1] (🏤) post office
+1F3E5..1F3F0 ; Emoji # E0.6 [12] (🏥..🏰) hospital..castle
+1F3F3 ; Emoji # E0.7 [1] (🏳️) white flag
+1F3F4 ; Emoji # E1.0 [1] (🏴) black flag
+1F3F5 ; Emoji # E0.7 [1] (🏵️) rosette
+1F3F7 ; Emoji # E0.7 [1] (🏷️) label
+1F3F8..1F407 ; Emoji # E1.0 [16] (🏸..🐇) badminton..rabbit
+1F408 ; Emoji # E0.7 [1] (🐈) cat
+1F409..1F40B ; Emoji # E1.0 [3] (🐉..🐋) dragon..whale
+1F40C..1F40E ; Emoji # E0.6 [3] (🐌..🐎) snail..horse
+1F40F..1F410 ; Emoji # E1.0 [2] (🐏..🐐) ram..goat
+1F411..1F412 ; Emoji # E0.6 [2] (🐑..🐒) ewe..monkey
+1F413 ; Emoji # E1.0 [1] (🐓) rooster
+1F414 ; Emoji # E0.6 [1] (🐔) chicken
+1F415 ; Emoji # E0.7 [1] (🐕) dog
+1F416 ; Emoji # E1.0 [1] (🐖) pig
+1F417..1F429 ; Emoji # E0.6 [19] (🐗..🐩) boar..poodle
+1F42A ; Emoji # E1.0 [1] (🐪) camel
+1F42B..1F43E ; Emoji # E0.6 [20] (🐫..🐾) two-hump camel..paw prints
+1F43F ; Emoji # E0.7 [1] (🐿️) chipmunk
+1F440 ; Emoji # E0.6 [1] (👀) eyes
+1F441 ; Emoji # E0.7 [1] (👁️) eye
+1F442..1F464 ; Emoji # E0.6 [35] (👂..👤) ear..bust in silhouette
+1F465 ; Emoji # E1.0 [1] (👥) busts in silhouette
+1F466..1F46B ; Emoji # E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Emoji # E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F4AC ; Emoji # E0.6 [63] (👮..💬) police officer..speech balloon
+1F4AD ; Emoji # E1.0 [1] (💭) thought balloon
+1F4AE..1F4B5 ; Emoji # E0.6 [8] (💮..💵) white flower..dollar banknote
+1F4B6..1F4B7 ; Emoji # E1.0 [2] (💶..💷) euro banknote..pound banknote
+1F4B8..1F4EB ; Emoji # E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag
+1F4EC..1F4ED ; Emoji # E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag
+1F4EE ; Emoji # E0.6 [1] (📮) postbox
+1F4EF ; Emoji # E1.0 [1] (📯) postal horn
+1F4F0..1F4F4 ; Emoji # E0.6 [5] (📰..📴) newspaper..mobile phone off
+1F4F5 ; Emoji # E1.0 [1] (📵) no mobile phones
+1F4F6..1F4F7 ; Emoji # E0.6 [2] (📶..📷) antenna bars..camera
+1F4F8 ; Emoji # E1.0 [1] (📸) camera with flash
+1F4F9..1F4FC ; Emoji # E0.6 [4] (📹..📼) video camera..videocassette
+1F4FD ; Emoji # E0.7 [1] (📽️) film projector
+1F4FF..1F502 ; Emoji # E1.0 [4] (📿..🔂) prayer beads..repeat single button
+1F503 ; Emoji # E0.6 [1] (🔃) clockwise vertical arrows
+1F504..1F507 ; Emoji # E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker
+1F508 ; Emoji # E0.7 [1] (🔈) speaker low volume
+1F509 ; Emoji # E1.0 [1] (🔉) speaker medium volume
+1F50A..1F514 ; Emoji # E0.6 [11] (🔊..🔔) speaker high volume..bell
+1F515 ; Emoji # E1.0 [1] (🔕) bell with slash
+1F516..1F52B ; Emoji # E0.6 [22] (🔖..🔫) bookmark..pistol
+1F52C..1F52D ; Emoji # E1.0 [2] (🔬..🔭) microscope..telescope
+1F52E..1F53D ; Emoji # E0.6 [16] (🔮..🔽) crystal ball..downwards button
+1F549..1F54A ; Emoji # E0.7 [2] (🕉️..🕊️) om..dove
+1F54B..1F54E ; Emoji # E1.0 [4] (🕋..🕎) kaaba..menorah
+1F550..1F55B ; Emoji # E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock
+1F55C..1F567 ; Emoji # E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty
+1F56F..1F570 ; Emoji # E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock
+1F573..1F579 ; Emoji # E0.7 [7] (🕳️..🕹️) hole..joystick
+1F57A ; Emoji # E3.0 [1] (🕺) man dancing
+1F587 ; Emoji # E0.7 [1] (🖇️) linked paperclips
+1F58A..1F58D ; Emoji # E0.7 [4] (🖊️..🖍️) pen..crayon
+1F590 ; Emoji # E0.7 [1] (🖐️) hand with fingers splayed
+1F595..1F596 ; Emoji # E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F5A4 ; Emoji # E3.0 [1] (🖤) black heart
+1F5A5 ; Emoji # E0.7 [1] (🖥️) desktop computer
+1F5A8 ; Emoji # E0.7 [1] (🖨️) printer
+1F5B1..1F5B2 ; Emoji # E0.7 [2] (🖱️..🖲️) computer mouse..trackball
+1F5BC ; Emoji # E0.7 [1] (🖼️) framed picture
+1F5C2..1F5C4 ; Emoji # E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet
+1F5D1..1F5D3 ; Emoji # E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar
+1F5DC..1F5DE ; Emoji # E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper
+1F5E1 ; Emoji # E0.7 [1] (🗡️) dagger
+1F5E3 ; Emoji # E0.7 [1] (🗣️) speaking head
+1F5E8 ; Emoji # E2.0 [1] (🗨️) left speech bubble
+1F5EF ; Emoji # E0.7 [1] (🗯️) right anger bubble
+1F5F3 ; Emoji # E0.7 [1] (🗳️) ballot box with ballot
+1F5FA ; Emoji # E0.7 [1] (🗺️) world map
+1F5FB..1F5FF ; Emoji # E0.6 [5] (🗻..🗿) mount fuji..moai
+1F600 ; Emoji # E1.0 [1] (😀) grinning face
+1F601..1F606 ; Emoji # E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face
+1F607..1F608 ; Emoji # E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns
+1F609..1F60D ; Emoji # E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes
+1F60E ; Emoji # E1.0 [1] (😎) smiling face with sunglasses
+1F60F ; Emoji # E0.6 [1] (😏) smirking face
+1F610 ; Emoji # E0.7 [1] (😐) neutral face
+1F611 ; Emoji # E1.0 [1] (😑) expressionless face
+1F612..1F614 ; Emoji # E0.6 [3] (😒..😔) unamused face..pensive face
+1F615 ; Emoji # E1.0 [1] (😕) confused face
+1F616 ; Emoji # E0.6 [1] (😖) confounded face
+1F617 ; Emoji # E1.0 [1] (😗) kissing face
+1F618 ; Emoji # E0.6 [1] (😘) face blowing a kiss
+1F619 ; Emoji # E1.0 [1] (😙) kissing face with smiling eyes
+1F61A ; Emoji # E0.6 [1] (😚) kissing face with closed eyes
+1F61B ; Emoji # E1.0 [1] (😛) face with tongue
+1F61C..1F61E ; Emoji # E0.6 [3] (😜..😞) winking face with tongue..disappointed face
+1F61F ; Emoji # E1.0 [1] (😟) worried face
+1F620..1F625 ; Emoji # E0.6 [6] (😠..😥) angry face..sad but relieved face
+1F626..1F627 ; Emoji # E1.0 [2] (😦..😧) frowning face with open mouth..anguished face
+1F628..1F62B ; Emoji # E0.6 [4] (😨..😫) fearful face..tired face
+1F62C ; Emoji # E1.0 [1] (😬) grimacing face
+1F62D ; Emoji # E0.6 [1] (😭) loudly crying face
+1F62E..1F62F ; Emoji # E1.0 [2] (😮..😯) face with open mouth..hushed face
+1F630..1F633 ; Emoji # E0.6 [4] (😰..😳) anxious face with sweat..flushed face
+1F634 ; Emoji # E1.0 [1] (😴) sleeping face
+1F635 ; Emoji # E0.6 [1] (😵) dizzy face
+1F636 ; Emoji # E1.0 [1] (😶) face without mouth
+1F637..1F640 ; Emoji # E0.6 [10] (😷..🙀) face with medical mask..weary cat
+1F641..1F644 ; Emoji # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
+1F645..1F64F ; Emoji # E0.6 [11] (🙅..🙏) person gesturing NO..folded hands
+1F680 ; Emoji # E0.6 [1] (🚀) rocket
+1F681..1F682 ; Emoji # E1.0 [2] (🚁..🚂) helicopter..locomotive
+1F683..1F685 ; Emoji # E0.6 [3] (🚃..🚅) railway car..bullet train
+1F686 ; Emoji # E1.0 [1] (🚆) train
+1F687 ; Emoji # E0.6 [1] (🚇) metro
+1F688 ; Emoji # E1.0 [1] (🚈) light rail
+1F689 ; Emoji # E0.6 [1] (🚉) station
+1F68A..1F68B ; Emoji # E1.0 [2] (🚊..🚋) tram..tram car
+1F68C ; Emoji # E0.6 [1] (🚌) bus
+1F68D ; Emoji # E0.7 [1] (🚍) oncoming bus
+1F68E ; Emoji # E1.0 [1] (🚎) trolleybus
+1F68F ; Emoji # E0.6 [1] (🚏) bus stop
+1F690 ; Emoji # E1.0 [1] (🚐) minibus
+1F691..1F693 ; Emoji # E0.6 [3] (🚑..🚓) ambulance..police car
+1F694 ; Emoji # E0.7 [1] (🚔) oncoming police car
+1F695 ; Emoji # E0.6 [1] (🚕) taxi
+1F696 ; Emoji # E1.0 [1] (🚖) oncoming taxi
+1F697 ; Emoji # E0.6 [1] (🚗) automobile
+1F698 ; Emoji # E0.7 [1] (🚘) oncoming automobile
+1F699..1F69A ; Emoji # E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck
+1F69B..1F6A1 ; Emoji # E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway
+1F6A2 ; Emoji # E0.6 [1] (🚢) ship
+1F6A3 ; Emoji # E1.0 [1] (🚣) person rowing boat
+1F6A4..1F6A5 ; Emoji # E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light
+1F6A6 ; Emoji # E1.0 [1] (🚦) vertical traffic light
+1F6A7..1F6AD ; Emoji # E0.6 [7] (🚧..🚭) construction..no smoking
+1F6AE..1F6B1 ; Emoji # E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water
+1F6B2 ; Emoji # E0.6 [1] (🚲) bicycle
+1F6B3..1F6B5 ; Emoji # E1.0 [3] (🚳..🚵) no bicycles..person mountain biking
+1F6B6 ; Emoji # E0.6 [1] (🚶) person walking
+1F6B7..1F6B8 ; Emoji # E1.0 [2] (🚷..🚸) no pedestrians..children crossing
+1F6B9..1F6BE ; Emoji # E0.6 [6] (🚹..🚾) men’s room..water closet
+1F6BF ; Emoji # E1.0 [1] (🚿) shower
+1F6C0 ; Emoji # E0.6 [1] (🛀) person taking bath
+1F6C1..1F6C5 ; Emoji # E1.0 [5] (🛁..🛅) bathtub..left luggage
+1F6CB ; Emoji # E0.7 [1] (🛋️) couch and lamp
+1F6CC ; Emoji # E1.0 [1] (🛌) person in bed
+1F6CD..1F6CF ; Emoji # E0.7 [3] (🛍️..🛏️) shopping bags..bed
+1F6D0 ; Emoji # E1.0 [1] (🛐) place of worship
+1F6D1..1F6D2 ; Emoji # E3.0 [2] (🛑..🛒) stop sign..shopping cart
+1F6D5 ; Emoji # E12.0 [1] (🛕) hindu temple
+1F6D6..1F6D7 ; Emoji # E13.0 [2] (🛖..🛗) hut..elevator
+1F6E0..1F6E5 ; Emoji # E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat
+1F6E9 ; Emoji # E0.7 [1] (🛩️) small airplane
+1F6EB..1F6EC ; Emoji # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
+1F6F0 ; Emoji # E0.7 [1] (🛰️) satellite
+1F6F3 ; Emoji # E0.7 [1] (🛳️) passenger ship
+1F6F4..1F6F6 ; Emoji # E3.0 [3] (🛴..🛶) kick scooter..canoe
+1F6F7..1F6F8 ; Emoji # E5.0 [2] (🛷..🛸) sled..flying saucer
+1F6F9 ; Emoji # E11.0 [1] (🛹) skateboard
+1F6FA ; Emoji # E12.0 [1] (🛺) auto rickshaw
+1F6FB..1F6FC ; Emoji # E13.0 [2] (🛻..🛼) pickup truck..roller skate
+1F7E0..1F7EB ; Emoji # E12.0 [12] (🟠..🟫) orange circle..brown square
+1F90C ; Emoji # E13.0 [1] (🤌) pinched fingers
+1F90D..1F90F ; Emoji # E12.0 [3] (🤍..🤏) white heart..pinching hand
+1F910..1F918 ; Emoji # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
+1F919..1F91E ; Emoji # E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Emoji # E5.0 [1] (🤟) love-you gesture
+1F920..1F927 ; Emoji # E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face
+1F928..1F92F ; Emoji # E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
+1F930 ; Emoji # E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Emoji # E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F93A ; Emoji # E3.0 [8] (🤳..🤺) selfie..person fencing
+1F93C..1F93E ; Emoji # E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F93F ; Emoji # E12.0 [1] (🤿) diving mask
+1F940..1F945 ; Emoji # E3.0 [6] (🥀..🥅) wilted flower..goal net
+1F947..1F94B ; Emoji # E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
+1F94C ; Emoji # E5.0 [1] (🥌) curling stone
+1F94D..1F94F ; Emoji # E11.0 [3] (🥍..🥏) lacrosse..flying disc
+1F950..1F95E ; Emoji # E3.0 [15] (🥐..🥞) croissant..pancakes
+1F95F..1F96B ; Emoji # E5.0 [13] (🥟..🥫) dumpling..canned food
+1F96C..1F970 ; Emoji # E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
+1F971 ; Emoji # E12.0 [1] (🥱) yawning face
+1F972 ; Emoji # E13.0 [1] (🥲) smiling face with tear
+1F973..1F976 ; Emoji # E11.0 [4] (🥳..🥶) partying face..cold face
+1F977..1F978 ; Emoji # E13.0 [2] (🥷..🥸) ninja..disguised face
+1F97A ; Emoji # E11.0 [1] (🥺) pleading face
+1F97B ; Emoji # E12.0 [1] (🥻) sari
+1F97C..1F97F ; Emoji # E11.0 [4] (🥼..🥿) lab coat..flat shoe
+1F980..1F984 ; Emoji # E1.0 [5] (🦀..🦄) crab..unicorn
+1F985..1F991 ; Emoji # E3.0 [13] (🦅..🦑) eagle..squid
+1F992..1F997 ; Emoji # E5.0 [6] (🦒..🦗) giraffe..cricket
+1F998..1F9A2 ; Emoji # E11.0 [11] (🦘..🦢) kangaroo..swan
+1F9A3..1F9A4 ; Emoji # E13.0 [2] (🦣..🦤) mammoth..dodo
+1F9A5..1F9AA ; Emoji # E12.0 [6] (🦥..🦪) sloth..oyster
+1F9AB..1F9AD ; Emoji # E13.0 [3] (🦫..🦭) beaver..seal
+1F9AE..1F9AF ; Emoji # E12.0 [2] (🦮..🦯) guide dog..white cane
+1F9B0..1F9B9 ; Emoji # E11.0 [10] (🦰..🦹) red hair..supervillain
+1F9BA..1F9BF ; Emoji # E12.0 [6] (🦺..🦿) safety vest..mechanical leg
+1F9C0 ; Emoji # E1.0 [1] (🧀) cheese wedge
+1F9C1..1F9C2 ; Emoji # E11.0 [2] (🧁..🧂) cupcake..salt
+1F9C3..1F9CA ; Emoji # E12.0 [8] (🧃..🧊) beverage box..ice
+1F9CB ; Emoji # E13.0 [1] (🧋) bubble tea
+1F9CD..1F9CF ; Emoji # E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D0..1F9E6 ; Emoji # E5.0 [23] (🧐..🧦) face with monocle..socks
+1F9E7..1F9FF ; Emoji # E11.0 [25] (🧧..🧿) red envelope..nazar amulet
+1FA70..1FA73 ; Emoji # E12.0 [4] (🩰..🩳) ballet shoes..shorts
+1FA74 ; Emoji # E13.0 [1] (🩴) thong sandal
+1FA78..1FA7A ; Emoji # E12.0 [3] (🩸..🩺) drop of blood..stethoscope
+1FA80..1FA82 ; Emoji # E12.0 [3] (🪀..🪂) yo-yo..parachute
+1FA83..1FA86 ; Emoji # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
+1FA90..1FA95 ; Emoji # E12.0 [6] (🪐..🪕) ringed planet..banjo
+1FA96..1FAA8 ; Emoji # E13.0 [19] (🪖..🪨) military helmet..rock
+1FAB0..1FAB6 ; Emoji # E13.0 [7] (🪰..🪶) fly..feather
+1FAC0..1FAC2 ; Emoji # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
+1FAD0..1FAD6 ; Emoji # E13.0 [7] (🫐..🫖) blueberries..teapot
+
+# Total elements: 1367
+
+# ================================================
+
+# All omitted code points have Emoji_Presentation=No
+# @missing: 0000..10FFFF ; Emoji_Presentation ; No
+
+231A..231B ; Emoji_Presentation # E0.6 [2] (⌚..⌛) watch..hourglass done
+23E9..23EC ; Emoji_Presentation # E0.6 [4] (⏩..⏬) fast-forward button..fast down button
+23F0 ; Emoji_Presentation # E0.6 [1] (⏰) alarm clock
+23F3 ; Emoji_Presentation # E0.6 [1] (⏳) hourglass not done
+25FD..25FE ; Emoji_Presentation # E0.6 [2] (◽..◾) white medium-small square..black medium-small square
+2614..2615 ; Emoji_Presentation # E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage
+2648..2653 ; Emoji_Presentation # E0.6 [12] (♈..♓) Aries..Pisces
+267F ; Emoji_Presentation # E0.6 [1] (♿) wheelchair symbol
+2693 ; Emoji_Presentation # E0.6 [1] (⚓) anchor
+26A1 ; Emoji_Presentation # E0.6 [1] (⚡) high voltage
+26AA..26AB ; Emoji_Presentation # E0.6 [2] (⚪..⚫) white circle..black circle
+26BD..26BE ; Emoji_Presentation # E0.6 [2] (⚽..⚾) soccer ball..baseball
+26C4..26C5 ; Emoji_Presentation # E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud
+26CE ; Emoji_Presentation # E0.6 [1] (⛎) Ophiuchus
+26D4 ; Emoji_Presentation # E0.6 [1] (⛔) no entry
+26EA ; Emoji_Presentation # E0.6 [1] (⛪) church
+26F2..26F3 ; Emoji_Presentation # E0.6 [2] (⛲..⛳) fountain..flag in hole
+26F5 ; Emoji_Presentation # E0.6 [1] (⛵) sailboat
+26FA ; Emoji_Presentation # E0.6 [1] (⛺) tent
+26FD ; Emoji_Presentation # E0.6 [1] (⛽) fuel pump
+2705 ; Emoji_Presentation # E0.6 [1] (✅) check mark button
+270A..270B ; Emoji_Presentation # E0.6 [2] (✊..✋) raised fist..raised hand
+2728 ; Emoji_Presentation # E0.6 [1] (✨) sparkles
+274C ; Emoji_Presentation # E0.6 [1] (❌) cross mark
+274E ; Emoji_Presentation # E0.6 [1] (❎) cross mark button
+2753..2755 ; Emoji_Presentation # E0.6 [3] (❓..❕) question mark..white exclamation mark
+2757 ; Emoji_Presentation # E0.6 [1] (❗) exclamation mark
+2795..2797 ; Emoji_Presentation # E0.6 [3] (➕..➗) plus..divide
+27B0 ; Emoji_Presentation # E0.6 [1] (➰) curly loop
+27BF ; Emoji_Presentation # E1.0 [1] (➿) double curly loop
+2B1B..2B1C ; Emoji_Presentation # E0.6 [2] (⬛..⬜) black large square..white large square
+2B50 ; Emoji_Presentation # E0.6 [1] (⭐) star
+2B55 ; Emoji_Presentation # E0.6 [1] (⭕) hollow red circle
+1F004 ; Emoji_Presentation # E0.6 [1] (🀄) mahjong red dragon
+1F0CF ; Emoji_Presentation # E0.6 [1] (🃏) joker
+1F18E ; Emoji_Presentation # E0.6 [1] (🆎) AB button (blood type)
+1F191..1F19A ; Emoji_Presentation # E0.6 [10] (🆑..🆚) CL button..VS button
+1F1E6..1F1FF ; Emoji_Presentation # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
+1F201 ; Emoji_Presentation # E0.6 [1] (🈁) Japanese “here” button
+1F21A ; Emoji_Presentation # E0.6 [1] (🈚) Japanese “free of charge” button
+1F22F ; Emoji_Presentation # E0.6 [1] (🈯) Japanese “reserved” button
+1F232..1F236 ; Emoji_Presentation # E0.6 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button
+1F238..1F23A ; Emoji_Presentation # E0.6 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button
+1F250..1F251 ; Emoji_Presentation # E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
+1F300..1F30C ; Emoji_Presentation # E0.6 [13] (🌀..🌌) cyclone..milky way
+1F30D..1F30E ; Emoji_Presentation # E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas
+1F30F ; Emoji_Presentation # E0.6 [1] (🌏) globe showing Asia-Australia
+1F310 ; Emoji_Presentation # E1.0 [1] (🌐) globe with meridians
+1F311 ; Emoji_Presentation # E0.6 [1] (🌑) new moon
+1F312 ; Emoji_Presentation # E1.0 [1] (🌒) waxing crescent moon
+1F313..1F315 ; Emoji_Presentation # E0.6 [3] (🌓..🌕) first quarter moon..full moon
+1F316..1F318 ; Emoji_Presentation # E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon
+1F319 ; Emoji_Presentation # E0.6 [1] (🌙) crescent moon
+1F31A ; Emoji_Presentation # E1.0 [1] (🌚) new moon face
+1F31B ; Emoji_Presentation # E0.6 [1] (🌛) first quarter moon face
+1F31C ; Emoji_Presentation # E0.7 [1] (🌜) last quarter moon face
+1F31D..1F31E ; Emoji_Presentation # E1.0 [2] (🌝..🌞) full moon face..sun with face
+1F31F..1F320 ; Emoji_Presentation # E0.6 [2] (🌟..🌠) glowing star..shooting star
+1F32D..1F32F ; Emoji_Presentation # E1.0 [3] (🌭..🌯) hot dog..burrito
+1F330..1F331 ; Emoji_Presentation # E0.6 [2] (🌰..🌱) chestnut..seedling
+1F332..1F333 ; Emoji_Presentation # E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree
+1F334..1F335 ; Emoji_Presentation # E0.6 [2] (🌴..🌵) palm tree..cactus
+1F337..1F34A ; Emoji_Presentation # E0.6 [20] (🌷..🍊) tulip..tangerine
+1F34B ; Emoji_Presentation # E1.0 [1] (🍋) lemon
+1F34C..1F34F ; Emoji_Presentation # E0.6 [4] (🍌..🍏) banana..green apple
+1F350 ; Emoji_Presentation # E1.0 [1] (🍐) pear
+1F351..1F37B ; Emoji_Presentation # E0.6 [43] (🍑..🍻) peach..clinking beer mugs
+1F37C ; Emoji_Presentation # E1.0 [1] (🍼) baby bottle
+1F37E..1F37F ; Emoji_Presentation # E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn
+1F380..1F393 ; Emoji_Presentation # E0.6 [20] (🎀..🎓) ribbon..graduation cap
+1F3A0..1F3C4 ; Emoji_Presentation # E0.6 [37] (🎠..🏄) carousel horse..person surfing
+1F3C5 ; Emoji_Presentation # E1.0 [1] (🏅) sports medal
+1F3C6 ; Emoji_Presentation # E0.6 [1] (🏆) trophy
+1F3C7 ; Emoji_Presentation # E1.0 [1] (🏇) horse racing
+1F3C8 ; Emoji_Presentation # E0.6 [1] (🏈) american football
+1F3C9 ; Emoji_Presentation # E1.0 [1] (🏉) rugby football
+1F3CA ; Emoji_Presentation # E0.6 [1] (🏊) person swimming
+1F3CF..1F3D3 ; Emoji_Presentation # E1.0 [5] (🏏..🏓) cricket game..ping pong
+1F3E0..1F3E3 ; Emoji_Presentation # E0.6 [4] (🏠..🏣) house..Japanese post office
+1F3E4 ; Emoji_Presentation # E1.0 [1] (🏤) post office
+1F3E5..1F3F0 ; Emoji_Presentation # E0.6 [12] (🏥..🏰) hospital..castle
+1F3F4 ; Emoji_Presentation # E1.0 [1] (🏴) black flag
+1F3F8..1F407 ; Emoji_Presentation # E1.0 [16] (🏸..🐇) badminton..rabbit
+1F408 ; Emoji_Presentation # E0.7 [1] (🐈) cat
+1F409..1F40B ; Emoji_Presentation # E1.0 [3] (🐉..🐋) dragon..whale
+1F40C..1F40E ; Emoji_Presentation # E0.6 [3] (🐌..🐎) snail..horse
+1F40F..1F410 ; Emoji_Presentation # E1.0 [2] (🐏..🐐) ram..goat
+1F411..1F412 ; Emoji_Presentation # E0.6 [2] (🐑..🐒) ewe..monkey
+1F413 ; Emoji_Presentation # E1.0 [1] (🐓) rooster
+1F414 ; Emoji_Presentation # E0.6 [1] (🐔) chicken
+1F415 ; Emoji_Presentation # E0.7 [1] (🐕) dog
+1F416 ; Emoji_Presentation # E1.0 [1] (🐖) pig
+1F417..1F429 ; Emoji_Presentation # E0.6 [19] (🐗..🐩) boar..poodle
+1F42A ; Emoji_Presentation # E1.0 [1] (🐪) camel
+1F42B..1F43E ; Emoji_Presentation # E0.6 [20] (🐫..🐾) two-hump camel..paw prints
+1F440 ; Emoji_Presentation # E0.6 [1] (👀) eyes
+1F442..1F464 ; Emoji_Presentation # E0.6 [35] (👂..👤) ear..bust in silhouette
+1F465 ; Emoji_Presentation # E1.0 [1] (👥) busts in silhouette
+1F466..1F46B ; Emoji_Presentation # E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Emoji_Presentation # E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F4AC ; Emoji_Presentation # E0.6 [63] (👮..💬) police officer..speech balloon
+1F4AD ; Emoji_Presentation # E1.0 [1] (💭) thought balloon
+1F4AE..1F4B5 ; Emoji_Presentation # E0.6 [8] (💮..💵) white flower..dollar banknote
+1F4B6..1F4B7 ; Emoji_Presentation # E1.0 [2] (💶..💷) euro banknote..pound banknote
+1F4B8..1F4EB ; Emoji_Presentation # E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag
+1F4EC..1F4ED ; Emoji_Presentation # E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag
+1F4EE ; Emoji_Presentation # E0.6 [1] (📮) postbox
+1F4EF ; Emoji_Presentation # E1.0 [1] (📯) postal horn
+1F4F0..1F4F4 ; Emoji_Presentation # E0.6 [5] (📰..📴) newspaper..mobile phone off
+1F4F5 ; Emoji_Presentation # E1.0 [1] (📵) no mobile phones
+1F4F6..1F4F7 ; Emoji_Presentation # E0.6 [2] (📶..📷) antenna bars..camera
+1F4F8 ; Emoji_Presentation # E1.0 [1] (📸) camera with flash
+1F4F9..1F4FC ; Emoji_Presentation # E0.6 [4] (📹..📼) video camera..videocassette
+1F4FF..1F502 ; Emoji_Presentation # E1.0 [4] (📿..🔂) prayer beads..repeat single button
+1F503 ; Emoji_Presentation # E0.6 [1] (🔃) clockwise vertical arrows
+1F504..1F507 ; Emoji_Presentation # E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker
+1F508 ; Emoji_Presentation # E0.7 [1] (🔈) speaker low volume
+1F509 ; Emoji_Presentation # E1.0 [1] (🔉) speaker medium volume
+1F50A..1F514 ; Emoji_Presentation # E0.6 [11] (🔊..🔔) speaker high volume..bell
+1F515 ; Emoji_Presentation # E1.0 [1] (🔕) bell with slash
+1F516..1F52B ; Emoji_Presentation # E0.6 [22] (🔖..🔫) bookmark..pistol
+1F52C..1F52D ; Emoji_Presentation # E1.0 [2] (🔬..🔭) microscope..telescope
+1F52E..1F53D ; Emoji_Presentation # E0.6 [16] (🔮..🔽) crystal ball..downwards button
+1F54B..1F54E ; Emoji_Presentation # E1.0 [4] (🕋..🕎) kaaba..menorah
+1F550..1F55B ; Emoji_Presentation # E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock
+1F55C..1F567 ; Emoji_Presentation # E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty
+1F57A ; Emoji_Presentation # E3.0 [1] (🕺) man dancing
+1F595..1F596 ; Emoji_Presentation # E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F5A4 ; Emoji_Presentation # E3.0 [1] (🖤) black heart
+1F5FB..1F5FF ; Emoji_Presentation # E0.6 [5] (🗻..🗿) mount fuji..moai
+1F600 ; Emoji_Presentation # E1.0 [1] (😀) grinning face
+1F601..1F606 ; Emoji_Presentation # E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face
+1F607..1F608 ; Emoji_Presentation # E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns
+1F609..1F60D ; Emoji_Presentation # E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes
+1F60E ; Emoji_Presentation # E1.0 [1] (😎) smiling face with sunglasses
+1F60F ; Emoji_Presentation # E0.6 [1] (😏) smirking face
+1F610 ; Emoji_Presentation # E0.7 [1] (😐) neutral face
+1F611 ; Emoji_Presentation # E1.0 [1] (😑) expressionless face
+1F612..1F614 ; Emoji_Presentation # E0.6 [3] (😒..😔) unamused face..pensive face
+1F615 ; Emoji_Presentation # E1.0 [1] (😕) confused face
+1F616 ; Emoji_Presentation # E0.6 [1] (😖) confounded face
+1F617 ; Emoji_Presentation # E1.0 [1] (😗) kissing face
+1F618 ; Emoji_Presentation # E0.6 [1] (😘) face blowing a kiss
+1F619 ; Emoji_Presentation # E1.0 [1] (😙) kissing face with smiling eyes
+1F61A ; Emoji_Presentation # E0.6 [1] (😚) kissing face with closed eyes
+1F61B ; Emoji_Presentation # E1.0 [1] (😛) face with tongue
+1F61C..1F61E ; Emoji_Presentation # E0.6 [3] (😜..😞) winking face with tongue..disappointed face
+1F61F ; Emoji_Presentation # E1.0 [1] (😟) worried face
+1F620..1F625 ; Emoji_Presentation # E0.6 [6] (😠..😥) angry face..sad but relieved face
+1F626..1F627 ; Emoji_Presentation # E1.0 [2] (😦..😧) frowning face with open mouth..anguished face
+1F628..1F62B ; Emoji_Presentation # E0.6 [4] (😨..😫) fearful face..tired face
+1F62C ; Emoji_Presentation # E1.0 [1] (😬) grimacing face
+1F62D ; Emoji_Presentation # E0.6 [1] (😭) loudly crying face
+1F62E..1F62F ; Emoji_Presentation # E1.0 [2] (😮..😯) face with open mouth..hushed face
+1F630..1F633 ; Emoji_Presentation # E0.6 [4] (😰..😳) anxious face with sweat..flushed face
+1F634 ; Emoji_Presentation # E1.0 [1] (😴) sleeping face
+1F635 ; Emoji_Presentation # E0.6 [1] (😵) dizzy face
+1F636 ; Emoji_Presentation # E1.0 [1] (😶) face without mouth
+1F637..1F640 ; Emoji_Presentation # E0.6 [10] (😷..🙀) face with medical mask..weary cat
+1F641..1F644 ; Emoji_Presentation # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
+1F645..1F64F ; Emoji_Presentation # E0.6 [11] (🙅..🙏) person gesturing NO..folded hands
+1F680 ; Emoji_Presentation # E0.6 [1] (🚀) rocket
+1F681..1F682 ; Emoji_Presentation # E1.0 [2] (🚁..🚂) helicopter..locomotive
+1F683..1F685 ; Emoji_Presentation # E0.6 [3] (🚃..🚅) railway car..bullet train
+1F686 ; Emoji_Presentation # E1.0 [1] (🚆) train
+1F687 ; Emoji_Presentation # E0.6 [1] (🚇) metro
+1F688 ; Emoji_Presentation # E1.0 [1] (🚈) light rail
+1F689 ; Emoji_Presentation # E0.6 [1] (🚉) station
+1F68A..1F68B ; Emoji_Presentation # E1.0 [2] (🚊..🚋) tram..tram car
+1F68C ; Emoji_Presentation # E0.6 [1] (🚌) bus
+1F68D ; Emoji_Presentation # E0.7 [1] (🚍) oncoming bus
+1F68E ; Emoji_Presentation # E1.0 [1] (🚎) trolleybus
+1F68F ; Emoji_Presentation # E0.6 [1] (🚏) bus stop
+1F690 ; Emoji_Presentation # E1.0 [1] (🚐) minibus
+1F691..1F693 ; Emoji_Presentation # E0.6 [3] (🚑..🚓) ambulance..police car
+1F694 ; Emoji_Presentation # E0.7 [1] (🚔) oncoming police car
+1F695 ; Emoji_Presentation # E0.6 [1] (🚕) taxi
+1F696 ; Emoji_Presentation # E1.0 [1] (🚖) oncoming taxi
+1F697 ; Emoji_Presentation # E0.6 [1] (🚗) automobile
+1F698 ; Emoji_Presentation # E0.7 [1] (🚘) oncoming automobile
+1F699..1F69A ; Emoji_Presentation # E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck
+1F69B..1F6A1 ; Emoji_Presentation # E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway
+1F6A2 ; Emoji_Presentation # E0.6 [1] (🚢) ship
+1F6A3 ; Emoji_Presentation # E1.0 [1] (🚣) person rowing boat
+1F6A4..1F6A5 ; Emoji_Presentation # E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light
+1F6A6 ; Emoji_Presentation # E1.0 [1] (🚦) vertical traffic light
+1F6A7..1F6AD ; Emoji_Presentation # E0.6 [7] (🚧..🚭) construction..no smoking
+1F6AE..1F6B1 ; Emoji_Presentation # E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water
+1F6B2 ; Emoji_Presentation # E0.6 [1] (🚲) bicycle
+1F6B3..1F6B5 ; Emoji_Presentation # E1.0 [3] (🚳..🚵) no bicycles..person mountain biking
+1F6B6 ; Emoji_Presentation # E0.6 [1] (🚶) person walking
+1F6B7..1F6B8 ; Emoji_Presentation # E1.0 [2] (🚷..🚸) no pedestrians..children crossing
+1F6B9..1F6BE ; Emoji_Presentation # E0.6 [6] (🚹..🚾) men’s room..water closet
+1F6BF ; Emoji_Presentation # E1.0 [1] (🚿) shower
+1F6C0 ; Emoji_Presentation # E0.6 [1] (🛀) person taking bath
+1F6C1..1F6C5 ; Emoji_Presentation # E1.0 [5] (🛁..🛅) bathtub..left luggage
+1F6CC ; Emoji_Presentation # E1.0 [1] (🛌) person in bed
+1F6D0 ; Emoji_Presentation # E1.0 [1] (🛐) place of worship
+1F6D1..1F6D2 ; Emoji_Presentation # E3.0 [2] (🛑..🛒) stop sign..shopping cart
+1F6D5 ; Emoji_Presentation # E12.0 [1] (🛕) hindu temple
+1F6D6..1F6D7 ; Emoji_Presentation # E13.0 [2] (🛖..🛗) hut..elevator
+1F6EB..1F6EC ; Emoji_Presentation # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
+1F6F4..1F6F6 ; Emoji_Presentation # E3.0 [3] (🛴..🛶) kick scooter..canoe
+1F6F7..1F6F8 ; Emoji_Presentation # E5.0 [2] (🛷..🛸) sled..flying saucer
+1F6F9 ; Emoji_Presentation # E11.0 [1] (🛹) skateboard
+1F6FA ; Emoji_Presentation # E12.0 [1] (🛺) auto rickshaw
+1F6FB..1F6FC ; Emoji_Presentation # E13.0 [2] (🛻..🛼) pickup truck..roller skate
+1F7E0..1F7EB ; Emoji_Presentation # E12.0 [12] (🟠..🟫) orange circle..brown square
+1F90C ; Emoji_Presentation # E13.0 [1] (🤌) pinched fingers
+1F90D..1F90F ; Emoji_Presentation # E12.0 [3] (🤍..🤏) white heart..pinching hand
+1F910..1F918 ; Emoji_Presentation # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
+1F919..1F91E ; Emoji_Presentation # E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Emoji_Presentation # E5.0 [1] (🤟) love-you gesture
+1F920..1F927 ; Emoji_Presentation # E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face
+1F928..1F92F ; Emoji_Presentation # E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
+1F930 ; Emoji_Presentation # E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Emoji_Presentation # E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F93A ; Emoji_Presentation # E3.0 [8] (🤳..🤺) selfie..person fencing
+1F93C..1F93E ; Emoji_Presentation # E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F93F ; Emoji_Presentation # E12.0 [1] (🤿) diving mask
+1F940..1F945 ; Emoji_Presentation # E3.0 [6] (🥀..🥅) wilted flower..goal net
+1F947..1F94B ; Emoji_Presentation # E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
+1F94C ; Emoji_Presentation # E5.0 [1] (🥌) curling stone
+1F94D..1F94F ; Emoji_Presentation # E11.0 [3] (🥍..🥏) lacrosse..flying disc
+1F950..1F95E ; Emoji_Presentation # E3.0 [15] (🥐..🥞) croissant..pancakes
+1F95F..1F96B ; Emoji_Presentation # E5.0 [13] (🥟..🥫) dumpling..canned food
+1F96C..1F970 ; Emoji_Presentation # E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
+1F971 ; Emoji_Presentation # E12.0 [1] (🥱) yawning face
+1F972 ; Emoji_Presentation # E13.0 [1] (🥲) smiling face with tear
+1F973..1F976 ; Emoji_Presentation # E11.0 [4] (🥳..🥶) partying face..cold face
+1F977..1F978 ; Emoji_Presentation # E13.0 [2] (🥷..🥸) ninja..disguised face
+1F97A ; Emoji_Presentation # E11.0 [1] (🥺) pleading face
+1F97B ; Emoji_Presentation # E12.0 [1] (🥻) sari
+1F97C..1F97F ; Emoji_Presentation # E11.0 [4] (🥼..🥿) lab coat..flat shoe
+1F980..1F984 ; Emoji_Presentation # E1.0 [5] (🦀..🦄) crab..unicorn
+1F985..1F991 ; Emoji_Presentation # E3.0 [13] (🦅..🦑) eagle..squid
+1F992..1F997 ; Emoji_Presentation # E5.0 [6] (🦒..🦗) giraffe..cricket
+1F998..1F9A2 ; Emoji_Presentation # E11.0 [11] (🦘..🦢) kangaroo..swan
+1F9A3..1F9A4 ; Emoji_Presentation # E13.0 [2] (🦣..🦤) mammoth..dodo
+1F9A5..1F9AA ; Emoji_Presentation # E12.0 [6] (🦥..🦪) sloth..oyster
+1F9AB..1F9AD ; Emoji_Presentation # E13.0 [3] (🦫..🦭) beaver..seal
+1F9AE..1F9AF ; Emoji_Presentation # E12.0 [2] (🦮..🦯) guide dog..white cane
+1F9B0..1F9B9 ; Emoji_Presentation # E11.0 [10] (🦰..🦹) red hair..supervillain
+1F9BA..1F9BF ; Emoji_Presentation # E12.0 [6] (🦺..🦿) safety vest..mechanical leg
+1F9C0 ; Emoji_Presentation # E1.0 [1] (🧀) cheese wedge
+1F9C1..1F9C2 ; Emoji_Presentation # E11.0 [2] (🧁..🧂) cupcake..salt
+1F9C3..1F9CA ; Emoji_Presentation # E12.0 [8] (🧃..🧊) beverage box..ice
+1F9CB ; Emoji_Presentation # E13.0 [1] (🧋) bubble tea
+1F9CD..1F9CF ; Emoji_Presentation # E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D0..1F9E6 ; Emoji_Presentation # E5.0 [23] (🧐..🧦) face with monocle..socks
+1F9E7..1F9FF ; Emoji_Presentation # E11.0 [25] (🧧..🧿) red envelope..nazar amulet
+1FA70..1FA73 ; Emoji_Presentation # E12.0 [4] (🩰..🩳) ballet shoes..shorts
+1FA74 ; Emoji_Presentation # E13.0 [1] (🩴) thong sandal
+1FA78..1FA7A ; Emoji_Presentation # E12.0 [3] (🩸..🩺) drop of blood..stethoscope
+1FA80..1FA82 ; Emoji_Presentation # E12.0 [3] (🪀..🪂) yo-yo..parachute
+1FA83..1FA86 ; Emoji_Presentation # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
+1FA90..1FA95 ; Emoji_Presentation # E12.0 [6] (🪐..🪕) ringed planet..banjo
+1FA96..1FAA8 ; Emoji_Presentation # E13.0 [19] (🪖..🪨) military helmet..rock
+1FAB0..1FAB6 ; Emoji_Presentation # E13.0 [7] (🪰..🪶) fly..feather
+1FAC0..1FAC2 ; Emoji_Presentation # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
+1FAD0..1FAD6 ; Emoji_Presentation # E13.0 [7] (🫐..🫖) blueberries..teapot
+
+# Total elements: 1148
+
+# ================================================
+
+# All omitted code points have Emoji_Modifier=No
+# @missing: 0000..10FFFF ; Emoji_Modifier ; No
+
+1F3FB..1F3FF ; Emoji_Modifier # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone
+
+# Total elements: 5
+
+# ================================================
+
+# All omitted code points have Emoji_Modifier_Base=No
+# @missing: 0000..10FFFF ; Emoji_Modifier_Base ; No
+
+261D ; Emoji_Modifier_Base # E0.6 [1] (☝️) index pointing up
+26F9 ; Emoji_Modifier_Base # E0.7 [1] (⛹️) person bouncing ball
+270A..270C ; Emoji_Modifier_Base # E0.6 [3] (✊..✌️) raised fist..victory hand
+270D ; Emoji_Modifier_Base # E0.7 [1] (✍️) writing hand
+1F385 ; Emoji_Modifier_Base # E0.6 [1] (🎅) Santa Claus
+1F3C2..1F3C4 ; Emoji_Modifier_Base # E0.6 [3] (🏂..🏄) snowboarder..person surfing
+1F3C7 ; Emoji_Modifier_Base # E1.0 [1] (🏇) horse racing
+1F3CA ; Emoji_Modifier_Base # E0.6 [1] (🏊) person swimming
+1F3CB..1F3CC ; Emoji_Modifier_Base # E0.7 [2] (🏋️..🏌️) person lifting weights..person golfing
+1F442..1F443 ; Emoji_Modifier_Base # E0.6 [2] (👂..👃) ear..nose
+1F446..1F450 ; Emoji_Modifier_Base # E0.6 [11] (👆..👐) backhand index pointing up..open hands
+1F466..1F46B ; Emoji_Modifier_Base # E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Emoji_Modifier_Base # E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F478 ; Emoji_Modifier_Base # E0.6 [11] (👮..👸) police officer..princess
+1F47C ; Emoji_Modifier_Base # E0.6 [1] (👼) baby angel
+1F481..1F483 ; Emoji_Modifier_Base # E0.6 [3] (💁..💃) person tipping hand..woman dancing
+1F485..1F487 ; Emoji_Modifier_Base # E0.6 [3] (💅..💇) nail polish..person getting haircut
+1F48F ; Emoji_Modifier_Base # E0.6 [1] (💏) kiss
+1F491 ; Emoji_Modifier_Base # E0.6 [1] (💑) couple with heart
+1F4AA ; Emoji_Modifier_Base # E0.6 [1] (💪) flexed biceps
+1F574..1F575 ; Emoji_Modifier_Base # E0.7 [2] (🕴️..🕵️) person in suit levitating..detective
+1F57A ; Emoji_Modifier_Base # E3.0 [1] (🕺) man dancing
+1F590 ; Emoji_Modifier_Base # E0.7 [1] (🖐️) hand with fingers splayed
+1F595..1F596 ; Emoji_Modifier_Base # E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F645..1F647 ; Emoji_Modifier_Base # E0.6 [3] (🙅..🙇) person gesturing NO..person bowing
+1F64B..1F64F ; Emoji_Modifier_Base # E0.6 [5] (🙋..🙏) person raising hand..folded hands
+1F6A3 ; Emoji_Modifier_Base # E1.0 [1] (🚣) person rowing boat
+1F6B4..1F6B5 ; Emoji_Modifier_Base # E1.0 [2] (🚴..🚵) person biking..person mountain biking
+1F6B6 ; Emoji_Modifier_Base # E0.6 [1] (🚶) person walking
+1F6C0 ; Emoji_Modifier_Base # E0.6 [1] (🛀) person taking bath
+1F6CC ; Emoji_Modifier_Base # E1.0 [1] (🛌) person in bed
+1F90C ; Emoji_Modifier_Base # E13.0 [1] (🤌) pinched fingers
+1F90F ; Emoji_Modifier_Base # E12.0 [1] (🤏) pinching hand
+1F918 ; Emoji_Modifier_Base # E1.0 [1] (🤘) sign of the horns
+1F919..1F91E ; Emoji_Modifier_Base # E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Emoji_Modifier_Base # E5.0 [1] (🤟) love-you gesture
+1F926 ; Emoji_Modifier_Base # E3.0 [1] (🤦) person facepalming
+1F930 ; Emoji_Modifier_Base # E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Emoji_Modifier_Base # E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F939 ; Emoji_Modifier_Base # E3.0 [7] (🤳..🤹) selfie..person juggling
+1F93C..1F93E ; Emoji_Modifier_Base # E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F977 ; Emoji_Modifier_Base # E13.0 [1] (🥷) ninja
+1F9B5..1F9B6 ; Emoji_Modifier_Base # E11.0 [2] (🦵..🦶) leg..foot
+1F9B8..1F9B9 ; Emoji_Modifier_Base # E11.0 [2] (🦸..🦹) superhero..supervillain
+1F9BB ; Emoji_Modifier_Base # E12.0 [1] (🦻) ear with hearing aid
+1F9CD..1F9CF ; Emoji_Modifier_Base # E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D1..1F9DD ; Emoji_Modifier_Base # E5.0 [13] (🧑..🧝) person..elf
+
+# Total elements: 122
+
+# ================================================
+
+# All omitted code points have Emoji_Component=No
+# @missing: 0000..10FFFF ; Emoji_Component ; No
+
+0023 ; Emoji_Component # E0.0 [1] (#️) number sign
+002A ; Emoji_Component # E0.0 [1] (*️) asterisk
+0030..0039 ; Emoji_Component # E0.0 [10] (0️..9️) digit zero..digit nine
+200D ; Emoji_Component # E0.0 [1] (‍) zero width joiner
+20E3 ; Emoji_Component # E0.0 [1] (⃣) combining enclosing keycap
+FE0F ; Emoji_Component # E0.0 [1] () VARIATION SELECTOR-16
+1F1E6..1F1FF ; Emoji_Component # E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
+1F3FB..1F3FF ; Emoji_Component # E1.0 [5] (🏻..🏿) light skin tone..dark skin tone
+1F9B0..1F9B3 ; Emoji_Component # E11.0 [4] (🦰..🦳) red hair..white hair
+E0020..E007F ; Emoji_Component # E0.0 [96] (󠀠..󠁿) tag space..cancel tag
+
+# Total elements: 146
+
+# ================================================
+
+# All omitted code points have Extended_Pictographic=No
+# @missing: 0000..10FFFF ; Extended_Pictographic ; No
+
+00A9 ; Extended_Pictographic# E0.6 [1] (©️) copyright
+00AE ; Extended_Pictographic# E0.6 [1] (®️) registered
+203C ; Extended_Pictographic# E0.6 [1] (‼️) double exclamation mark
+2049 ; Extended_Pictographic# E0.6 [1] (⁉️) exclamation question mark
+2122 ; Extended_Pictographic# E0.6 [1] (™️) trade mark
+2139 ; Extended_Pictographic# E0.6 [1] (ℹ️) information
+2194..2199 ; Extended_Pictographic# E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow
+21A9..21AA ; Extended_Pictographic# E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right
+231A..231B ; Extended_Pictographic# E0.6 [2] (⌚..⌛) watch..hourglass done
+2328 ; Extended_Pictographic# E1.0 [1] (⌨️) keyboard
+2388 ; Extended_Pictographic# E0.0 [1] (⎈) HELM SYMBOL
+23CF ; Extended_Pictographic# E1.0 [1] (⏏️) eject button
+23E9..23EC ; Extended_Pictographic# E0.6 [4] (⏩..⏬) fast-forward button..fast down button
+23ED..23EE ; Extended_Pictographic# E0.7 [2] (⏭️..⏮️) next track button..last track button
+23EF ; Extended_Pictographic# E1.0 [1] (⏯️) play or pause button
+23F0 ; Extended_Pictographic# E0.6 [1] (⏰) alarm clock
+23F1..23F2 ; Extended_Pictographic# E1.0 [2] (⏱️..⏲️) stopwatch..timer clock
+23F3 ; Extended_Pictographic# E0.6 [1] (⏳) hourglass not done
+23F8..23FA ; Extended_Pictographic# E0.7 [3] (⏸️..⏺️) pause button..record button
+24C2 ; Extended_Pictographic# E0.6 [1] (Ⓜ️) circled M
+25AA..25AB ; Extended_Pictographic# E0.6 [2] (▪️..▫️) black small square..white small square
+25B6 ; Extended_Pictographic# E0.6 [1] (▶️) play button
+25C0 ; Extended_Pictographic# E0.6 [1] (◀️) reverse button
+25FB..25FE ; Extended_Pictographic# E0.6 [4] (◻️..◾) white medium square..black medium-small square
+2600..2601 ; Extended_Pictographic# E0.6 [2] (☀️..☁️) sun..cloud
+2602..2603 ; Extended_Pictographic# E0.7 [2] (☂️..☃️) umbrella..snowman
+2604 ; Extended_Pictographic# E1.0 [1] (☄️) comet
+2605 ; Extended_Pictographic# E0.0 [1] (★) BLACK STAR
+2607..260D ; Extended_Pictographic# E0.0 [7] (☇..☍) LIGHTNING..OPPOSITION
+260E ; Extended_Pictographic# E0.6 [1] (☎️) telephone
+260F..2610 ; Extended_Pictographic# E0.0 [2] (☏..☐) WHITE TELEPHONE..BALLOT BOX
+2611 ; Extended_Pictographic# E0.6 [1] (☑️) check box with check
+2612 ; Extended_Pictographic# E0.0 [1] (☒) BALLOT BOX WITH X
+2614..2615 ; Extended_Pictographic# E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage
+2616..2617 ; Extended_Pictographic# E0.0 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE
+2618 ; Extended_Pictographic# E1.0 [1] (☘️) shamrock
+2619..261C ; Extended_Pictographic# E0.0 [4] (☙..☜) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX
+261D ; Extended_Pictographic# E0.6 [1] (☝️) index pointing up
+261E..261F ; Extended_Pictographic# E0.0 [2] (☞..☟) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX
+2620 ; Extended_Pictographic# E1.0 [1] (☠️) skull and crossbones
+2621 ; Extended_Pictographic# E0.0 [1] (☡) CAUTION SIGN
+2622..2623 ; Extended_Pictographic# E1.0 [2] (☢️..☣️) radioactive..biohazard
+2624..2625 ; Extended_Pictographic# E0.0 [2] (☤..☥) CADUCEUS..ANKH
+2626 ; Extended_Pictographic# E1.0 [1] (☦️) orthodox cross
+2627..2629 ; Extended_Pictographic# E0.0 [3] (☧..☩) CHI RHO..CROSS OF JERUSALEM
+262A ; Extended_Pictographic# E0.7 [1] (☪️) star and crescent
+262B..262D ; Extended_Pictographic# E0.0 [3] (☫..☭) FARSI SYMBOL..HAMMER AND SICKLE
+262E ; Extended_Pictographic# E1.0 [1] (☮️) peace symbol
+262F ; Extended_Pictographic# E0.7 [1] (☯️) yin yang
+2630..2637 ; Extended_Pictographic# E0.0 [8] (☰..☷) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH
+2638..2639 ; Extended_Pictographic# E0.7 [2] (☸️..☹️) wheel of dharma..frowning face
+263A ; Extended_Pictographic# E0.6 [1] (☺️) smiling face
+263B..263F ; Extended_Pictographic# E0.0 [5] (☻..☿) BLACK SMILING FACE..MERCURY
+2640 ; Extended_Pictographic# E4.0 [1] (♀️) female sign
+2641 ; Extended_Pictographic# E0.0 [1] (♁) EARTH
+2642 ; Extended_Pictographic# E4.0 [1] (♂️) male sign
+2643..2647 ; Extended_Pictographic# E0.0 [5] (♃..♇) JUPITER..PLUTO
+2648..2653 ; Extended_Pictographic# E0.6 [12] (♈..♓) Aries..Pisces
+2654..265E ; Extended_Pictographic# E0.0 [11] (♔..♞) WHITE CHESS KING..BLACK CHESS KNIGHT
+265F ; Extended_Pictographic# E11.0 [1] (♟️) chess pawn
+2660 ; Extended_Pictographic# E0.6 [1] (♠️) spade suit
+2661..2662 ; Extended_Pictographic# E0.0 [2] (♡..♢) WHITE HEART SUIT..WHITE DIAMOND SUIT
+2663 ; Extended_Pictographic# E0.6 [1] (♣️) club suit
+2664 ; Extended_Pictographic# E0.0 [1] (♤) WHITE SPADE SUIT
+2665..2666 ; Extended_Pictographic# E0.6 [2] (♥️..♦️) heart suit..diamond suit
+2667 ; Extended_Pictographic# E0.0 [1] (♧) WHITE CLUB SUIT
+2668 ; Extended_Pictographic# E0.6 [1] (♨️) hot springs
+2669..267A ; Extended_Pictographic# E0.0 [18] (♩..♺) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS
+267B ; Extended_Pictographic# E0.6 [1] (♻️) recycling symbol
+267C..267D ; Extended_Pictographic# E0.0 [2] (♼..♽) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL
+267E ; Extended_Pictographic# E11.0 [1] (♾️) infinity
+267F ; Extended_Pictographic# E0.6 [1] (♿) wheelchair symbol
+2680..2685 ; Extended_Pictographic# E0.0 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6
+2690..2691 ; Extended_Pictographic# E0.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG
+2692 ; Extended_Pictographic# E1.0 [1] (⚒️) hammer and pick
+2693 ; Extended_Pictographic# E0.6 [1] (⚓) anchor
+2694 ; Extended_Pictographic# E1.0 [1] (⚔️) crossed swords
+2695 ; Extended_Pictographic# E4.0 [1] (⚕️) medical symbol
+2696..2697 ; Extended_Pictographic# E1.0 [2] (⚖️..⚗️) balance scale..alembic
+2698 ; Extended_Pictographic# E0.0 [1] (⚘) FLOWER
+2699 ; Extended_Pictographic# E1.0 [1] (⚙️) gear
+269A ; Extended_Pictographic# E0.0 [1] (⚚) STAFF OF HERMES
+269B..269C ; Extended_Pictographic# E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis
+269D..269F ; Extended_Pictographic# E0.0 [3] (⚝..⚟) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT
+26A0..26A1 ; Extended_Pictographic# E0.6 [2] (⚠️..⚡) warning..high voltage
+26A2..26A6 ; Extended_Pictographic# E0.0 [5] (⚢..⚦) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN
+26A7 ; Extended_Pictographic# E13.0 [1] (⚧️) transgender symbol
+26A8..26A9 ; Extended_Pictographic# E0.0 [2] (⚨..⚩) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN
+26AA..26AB ; Extended_Pictographic# E0.6 [2] (⚪..⚫) white circle..black circle
+26AC..26AF ; Extended_Pictographic# E0.0 [4] (⚬..⚯) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL
+26B0..26B1 ; Extended_Pictographic# E1.0 [2] (⚰️..⚱️) coffin..funeral urn
+26B2..26BC ; Extended_Pictographic# E0.0 [11] (⚲..⚼) NEUTER..SESQUIQUADRATE
+26BD..26BE ; Extended_Pictographic# E0.6 [2] (⚽..⚾) soccer ball..baseball
+26BF..26C3 ; Extended_Pictographic# E0.0 [5] (⚿..⛃) SQUARED KEY..BLACK DRAUGHTS KING
+26C4..26C5 ; Extended_Pictographic# E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud
+26C6..26C7 ; Extended_Pictographic# E0.0 [2] (⛆..⛇) RAIN..BLACK SNOWMAN
+26C8 ; Extended_Pictographic# E0.7 [1] (⛈️) cloud with lightning and rain
+26C9..26CD ; Extended_Pictographic# E0.0 [5] (⛉..⛍) TURNED WHITE SHOGI PIECE..DISABLED CAR
+26CE ; Extended_Pictographic# E0.6 [1] (⛎) Ophiuchus
+26CF ; Extended_Pictographic# E0.7 [1] (⛏️) pick
+26D0 ; Extended_Pictographic# E0.0 [1] (⛐) CAR SLIDING
+26D1 ; Extended_Pictographic# E0.7 [1] (⛑️) rescue worker’s helmet
+26D2 ; Extended_Pictographic# E0.0 [1] (⛒) CIRCLED CROSSING LANES
+26D3 ; Extended_Pictographic# E0.7 [1] (⛓️) chains
+26D4 ; Extended_Pictographic# E0.6 [1] (⛔) no entry
+26D5..26E8 ; Extended_Pictographic# E0.0 [20] (⛕..⛨) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD
+26E9 ; Extended_Pictographic# E0.7 [1] (⛩️) shinto shrine
+26EA ; Extended_Pictographic# E0.6 [1] (⛪) church
+26EB..26EF ; Extended_Pictographic# E0.0 [5] (⛫..⛯) CASTLE..MAP SYMBOL FOR LIGHTHOUSE
+26F0..26F1 ; Extended_Pictographic# E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground
+26F2..26F3 ; Extended_Pictographic# E0.6 [2] (⛲..⛳) fountain..flag in hole
+26F4 ; Extended_Pictographic# E0.7 [1] (⛴️) ferry
+26F5 ; Extended_Pictographic# E0.6 [1] (⛵) sailboat
+26F6 ; Extended_Pictographic# E0.0 [1] (⛶) SQUARE FOUR CORNERS
+26F7..26F9 ; Extended_Pictographic# E0.7 [3] (⛷️..⛹️) skier..person bouncing ball
+26FA ; Extended_Pictographic# E0.6 [1] (⛺) tent
+26FB..26FC ; Extended_Pictographic# E0.0 [2] (⛻..⛼) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL
+26FD ; Extended_Pictographic# E0.6 [1] (⛽) fuel pump
+26FE..2701 ; Extended_Pictographic# E0.0 [4] (⛾..✁) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS
+2702 ; Extended_Pictographic# E0.6 [1] (✂️) scissors
+2703..2704 ; Extended_Pictographic# E0.0 [2] (✃..✄) LOWER BLADE SCISSORS..WHITE SCISSORS
+2705 ; Extended_Pictographic# E0.6 [1] (✅) check mark button
+2708..270C ; Extended_Pictographic# E0.6 [5] (✈️..✌️) airplane..victory hand
+270D ; Extended_Pictographic# E0.7 [1] (✍️) writing hand
+270E ; Extended_Pictographic# E0.0 [1] (✎) LOWER RIGHT PENCIL
+270F ; Extended_Pictographic# E0.6 [1] (✏️) pencil
+2710..2711 ; Extended_Pictographic# E0.0 [2] (✐..✑) UPPER RIGHT PENCIL..WHITE NIB
+2712 ; Extended_Pictographic# E0.6 [1] (✒️) black nib
+2714 ; Extended_Pictographic# E0.6 [1] (✔️) check mark
+2716 ; Extended_Pictographic# E0.6 [1] (✖️) multiply
+271D ; Extended_Pictographic# E0.7 [1] (✝️) latin cross
+2721 ; Extended_Pictographic# E0.7 [1] (✡️) star of David
+2728 ; Extended_Pictographic# E0.6 [1] (✨) sparkles
+2733..2734 ; Extended_Pictographic# E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star
+2744 ; Extended_Pictographic# E0.6 [1] (❄️) snowflake
+2747 ; Extended_Pictographic# E0.6 [1] (❇️) sparkle
+274C ; Extended_Pictographic# E0.6 [1] (❌) cross mark
+274E ; Extended_Pictographic# E0.6 [1] (❎) cross mark button
+2753..2755 ; Extended_Pictographic# E0.6 [3] (❓..❕) question mark..white exclamation mark
+2757 ; Extended_Pictographic# E0.6 [1] (❗) exclamation mark
+2763 ; Extended_Pictographic# E1.0 [1] (❣️) heart exclamation
+2764 ; Extended_Pictographic# E0.6 [1] (❤️) red heart
+2765..2767 ; Extended_Pictographic# E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET
+2795..2797 ; Extended_Pictographic# E0.6 [3] (➕..➗) plus..divide
+27A1 ; Extended_Pictographic# E0.6 [1] (➡️) right arrow
+27B0 ; Extended_Pictographic# E0.6 [1] (➰) curly loop
+27BF ; Extended_Pictographic# E1.0 [1] (➿) double curly loop
+2934..2935 ; Extended_Pictographic# E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down
+2B05..2B07 ; Extended_Pictographic# E0.6 [3] (⬅️..⬇️) left arrow..down arrow
+2B1B..2B1C ; Extended_Pictographic# E0.6 [2] (⬛..⬜) black large square..white large square
+2B50 ; Extended_Pictographic# E0.6 [1] (⭐) star
+2B55 ; Extended_Pictographic# E0.6 [1] (⭕) hollow red circle
+3030 ; Extended_Pictographic# E0.6 [1] (〰️) wavy dash
+303D ; Extended_Pictographic# E0.6 [1] (〽️) part alternation mark
+3297 ; Extended_Pictographic# E0.6 [1] (㊗️) Japanese “congratulations” button
+3299 ; Extended_Pictographic# E0.6 [1] (㊙️) Japanese “secret” button
+1F000..1F003 ; Extended_Pictographic# E0.0 [4] (🀀..🀃) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND
+1F004 ; Extended_Pictographic# E0.6 [1] (🀄) mahjong red dragon
+1F005..1F0CE ; Extended_Pictographic# E0.0 [202] (🀅..🃎) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS
+1F0CF ; Extended_Pictographic# E0.6 [1] (🃏) joker
+1F0D0..1F0FF ; Extended_Pictographic# E0.0 [48] (🃐..🃿) <reserved-1F0D0>..<reserved-1F0FF>
+1F10D..1F10F ; Extended_Pictographic# E0.0 [3] (🄍..🄏) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
+1F12F ; Extended_Pictographic# E0.0 [1] (🄯) COPYLEFT SYMBOL
+1F16C..1F16F ; Extended_Pictographic# E0.0 [4] (🅬..🅯) RAISED MR SIGN..CIRCLED HUMAN FIGURE
+1F170..1F171 ; Extended_Pictographic# E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type)
+1F17E..1F17F ; Extended_Pictographic# E0.6 [2] (🅾️..🅿️) O button (blood type)..P button
+1F18E ; Extended_Pictographic# E0.6 [1] (🆎) AB button (blood type)
+1F191..1F19A ; Extended_Pictographic# E0.6 [10] (🆑..🆚) CL button..VS button
+1F1AD..1F1E5 ; Extended_Pictographic# E0.0 [57] (🆭..🇥) MASK WORK SYMBOL..<reserved-1F1E5>
+1F201..1F202 ; Extended_Pictographic# E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button
+1F203..1F20F ; Extended_Pictographic# E0.0 [13] (🈃..🈏) <reserved-1F203>..<reserved-1F20F>
+1F21A ; Extended_Pictographic# E0.6 [1] (🈚) Japanese “free of charge” button
+1F22F ; Extended_Pictographic# E0.6 [1] (🈯) Japanese “reserved” button
+1F232..1F23A ; Extended_Pictographic# E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button
+1F23C..1F23F ; Extended_Pictographic# E0.0 [4] (🈼..🈿) <reserved-1F23C>..<reserved-1F23F>
+1F249..1F24F ; Extended_Pictographic# E0.0 [7] (🉉..🉏) <reserved-1F249>..<reserved-1F24F>
+1F250..1F251 ; Extended_Pictographic# E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
+1F252..1F2FF ; Extended_Pictographic# E0.0 [174] (🉒..🋿) <reserved-1F252>..<reserved-1F2FF>
+1F300..1F30C ; Extended_Pictographic# E0.6 [13] (🌀..🌌) cyclone..milky way
+1F30D..1F30E ; Extended_Pictographic# E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas
+1F30F ; Extended_Pictographic# E0.6 [1] (🌏) globe showing Asia-Australia
+1F310 ; Extended_Pictographic# E1.0 [1] (🌐) globe with meridians
+1F311 ; Extended_Pictographic# E0.6 [1] (🌑) new moon
+1F312 ; Extended_Pictographic# E1.0 [1] (🌒) waxing crescent moon
+1F313..1F315 ; Extended_Pictographic# E0.6 [3] (🌓..🌕) first quarter moon..full moon
+1F316..1F318 ; Extended_Pictographic# E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon
+1F319 ; Extended_Pictographic# E0.6 [1] (🌙) crescent moon
+1F31A ; Extended_Pictographic# E1.0 [1] (🌚) new moon face
+1F31B ; Extended_Pictographic# E0.6 [1] (🌛) first quarter moon face
+1F31C ; Extended_Pictographic# E0.7 [1] (🌜) last quarter moon face
+1F31D..1F31E ; Extended_Pictographic# E1.0 [2] (🌝..🌞) full moon face..sun with face
+1F31F..1F320 ; Extended_Pictographic# E0.6 [2] (🌟..🌠) glowing star..shooting star
+1F321 ; Extended_Pictographic# E0.7 [1] (🌡️) thermometer
+1F322..1F323 ; Extended_Pictographic# E0.0 [2] (🌢..🌣) BLACK DROPLET..WHITE SUN
+1F324..1F32C ; Extended_Pictographic# E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face
+1F32D..1F32F ; Extended_Pictographic# E1.0 [3] (🌭..🌯) hot dog..burrito
+1F330..1F331 ; Extended_Pictographic# E0.6 [2] (🌰..🌱) chestnut..seedling
+1F332..1F333 ; Extended_Pictographic# E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree
+1F334..1F335 ; Extended_Pictographic# E0.6 [2] (🌴..🌵) palm tree..cactus
+1F336 ; Extended_Pictographic# E0.7 [1] (🌶️) hot pepper
+1F337..1F34A ; Extended_Pictographic# E0.6 [20] (🌷..🍊) tulip..tangerine
+1F34B ; Extended_Pictographic# E1.0 [1] (🍋) lemon
+1F34C..1F34F ; Extended_Pictographic# E0.6 [4] (🍌..🍏) banana..green apple
+1F350 ; Extended_Pictographic# E1.0 [1] (🍐) pear
+1F351..1F37B ; Extended_Pictographic# E0.6 [43] (🍑..🍻) peach..clinking beer mugs
+1F37C ; Extended_Pictographic# E1.0 [1] (🍼) baby bottle
+1F37D ; Extended_Pictographic# E0.7 [1] (🍽️) fork and knife with plate
+1F37E..1F37F ; Extended_Pictographic# E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn
+1F380..1F393 ; Extended_Pictographic# E0.6 [20] (🎀..🎓) ribbon..graduation cap
+1F394..1F395 ; Extended_Pictographic# E0.0 [2] (🎔..🎕) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS
+1F396..1F397 ; Extended_Pictographic# E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon
+1F398 ; Extended_Pictographic# E0.0 [1] (🎘) MUSICAL KEYBOARD WITH JACKS
+1F399..1F39B ; Extended_Pictographic# E0.7 [3] (🎙️..🎛️) studio microphone..control knobs
+1F39C..1F39D ; Extended_Pictographic# E0.0 [2] (🎜..🎝) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES
+1F39E..1F39F ; Extended_Pictographic# E0.7 [2] (🎞️..🎟️) film frames..admission tickets
+1F3A0..1F3C4 ; Extended_Pictographic# E0.6 [37] (🎠..🏄) carousel horse..person surfing
+1F3C5 ; Extended_Pictographic# E1.0 [1] (🏅) sports medal
+1F3C6 ; Extended_Pictographic# E0.6 [1] (🏆) trophy
+1F3C7 ; Extended_Pictographic# E1.0 [1] (🏇) horse racing
+1F3C8 ; Extended_Pictographic# E0.6 [1] (🏈) american football
+1F3C9 ; Extended_Pictographic# E1.0 [1] (🏉) rugby football
+1F3CA ; Extended_Pictographic# E0.6 [1] (🏊) person swimming
+1F3CB..1F3CE ; Extended_Pictographic# E0.7 [4] (🏋️..🏎️) person lifting weights..racing car
+1F3CF..1F3D3 ; Extended_Pictographic# E1.0 [5] (🏏..🏓) cricket game..ping pong
+1F3D4..1F3DF ; Extended_Pictographic# E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium
+1F3E0..1F3E3 ; Extended_Pictographic# E0.6 [4] (🏠..🏣) house..Japanese post office
+1F3E4 ; Extended_Pictographic# E1.0 [1] (🏤) post office
+1F3E5..1F3F0 ; Extended_Pictographic# E0.6 [12] (🏥..🏰) hospital..castle
+1F3F1..1F3F2 ; Extended_Pictographic# E0.0 [2] (🏱..🏲) WHITE PENNANT..BLACK PENNANT
+1F3F3 ; Extended_Pictographic# E0.7 [1] (🏳️) white flag
+1F3F4 ; Extended_Pictographic# E1.0 [1] (🏴) black flag
+1F3F5 ; Extended_Pictographic# E0.7 [1] (🏵️) rosette
+1F3F6 ; Extended_Pictographic# E0.0 [1] (🏶) BLACK ROSETTE
+1F3F7 ; Extended_Pictographic# E0.7 [1] (🏷️) label
+1F3F8..1F3FA ; Extended_Pictographic# E1.0 [3] (🏸..🏺) badminton..amphora
+1F400..1F407 ; Extended_Pictographic# E1.0 [8] (🐀..🐇) rat..rabbit
+1F408 ; Extended_Pictographic# E0.7 [1] (🐈) cat
+1F409..1F40B ; Extended_Pictographic# E1.0 [3] (🐉..🐋) dragon..whale
+1F40C..1F40E ; Extended_Pictographic# E0.6 [3] (🐌..🐎) snail..horse
+1F40F..1F410 ; Extended_Pictographic# E1.0 [2] (🐏..🐐) ram..goat
+1F411..1F412 ; Extended_Pictographic# E0.6 [2] (🐑..🐒) ewe..monkey
+1F413 ; Extended_Pictographic# E1.0 [1] (🐓) rooster
+1F414 ; Extended_Pictographic# E0.6 [1] (🐔) chicken
+1F415 ; Extended_Pictographic# E0.7 [1] (🐕) dog
+1F416 ; Extended_Pictographic# E1.0 [1] (🐖) pig
+1F417..1F429 ; Extended_Pictographic# E0.6 [19] (🐗..🐩) boar..poodle
+1F42A ; Extended_Pictographic# E1.0 [1] (🐪) camel
+1F42B..1F43E ; Extended_Pictographic# E0.6 [20] (🐫..🐾) two-hump camel..paw prints
+1F43F ; Extended_Pictographic# E0.7 [1] (🐿️) chipmunk
+1F440 ; Extended_Pictographic# E0.6 [1] (👀) eyes
+1F441 ; Extended_Pictographic# E0.7 [1] (👁️) eye
+1F442..1F464 ; Extended_Pictographic# E0.6 [35] (👂..👤) ear..bust in silhouette
+1F465 ; Extended_Pictographic# E1.0 [1] (👥) busts in silhouette
+1F466..1F46B ; Extended_Pictographic# E0.6 [6] (👦..👫) boy..woman and man holding hands
+1F46C..1F46D ; Extended_Pictographic# E1.0 [2] (👬..👭) men holding hands..women holding hands
+1F46E..1F4AC ; Extended_Pictographic# E0.6 [63] (👮..💬) police officer..speech balloon
+1F4AD ; Extended_Pictographic# E1.0 [1] (💭) thought balloon
+1F4AE..1F4B5 ; Extended_Pictographic# E0.6 [8] (💮..💵) white flower..dollar banknote
+1F4B6..1F4B7 ; Extended_Pictographic# E1.0 [2] (💶..💷) euro banknote..pound banknote
+1F4B8..1F4EB ; Extended_Pictographic# E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag
+1F4EC..1F4ED ; Extended_Pictographic# E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag
+1F4EE ; Extended_Pictographic# E0.6 [1] (📮) postbox
+1F4EF ; Extended_Pictographic# E1.0 [1] (📯) postal horn
+1F4F0..1F4F4 ; Extended_Pictographic# E0.6 [5] (📰..📴) newspaper..mobile phone off
+1F4F5 ; Extended_Pictographic# E1.0 [1] (📵) no mobile phones
+1F4F6..1F4F7 ; Extended_Pictographic# E0.6 [2] (📶..📷) antenna bars..camera
+1F4F8 ; Extended_Pictographic# E1.0 [1] (📸) camera with flash
+1F4F9..1F4FC ; Extended_Pictographic# E0.6 [4] (📹..📼) video camera..videocassette
+1F4FD ; Extended_Pictographic# E0.7 [1] (📽️) film projector
+1F4FE ; Extended_Pictographic# E0.0 [1] (📾) PORTABLE STEREO
+1F4FF..1F502 ; Extended_Pictographic# E1.0 [4] (📿..🔂) prayer beads..repeat single button
+1F503 ; Extended_Pictographic# E0.6 [1] (🔃) clockwise vertical arrows
+1F504..1F507 ; Extended_Pictographic# E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker
+1F508 ; Extended_Pictographic# E0.7 [1] (🔈) speaker low volume
+1F509 ; Extended_Pictographic# E1.0 [1] (🔉) speaker medium volume
+1F50A..1F514 ; Extended_Pictographic# E0.6 [11] (🔊..🔔) speaker high volume..bell
+1F515 ; Extended_Pictographic# E1.0 [1] (🔕) bell with slash
+1F516..1F52B ; Extended_Pictographic# E0.6 [22] (🔖..🔫) bookmark..pistol
+1F52C..1F52D ; Extended_Pictographic# E1.0 [2] (🔬..🔭) microscope..telescope
+1F52E..1F53D ; Extended_Pictographic# E0.6 [16] (🔮..🔽) crystal ball..downwards button
+1F546..1F548 ; Extended_Pictographic# E0.0 [3] (🕆..🕈) WHITE LATIN CROSS..CELTIC CROSS
+1F549..1F54A ; Extended_Pictographic# E0.7 [2] (🕉️..🕊️) om..dove
+1F54B..1F54E ; Extended_Pictographic# E1.0 [4] (🕋..🕎) kaaba..menorah
+1F54F ; Extended_Pictographic# E0.0 [1] (🕏) BOWL OF HYGIEIA
+1F550..1F55B ; Extended_Pictographic# E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock
+1F55C..1F567 ; Extended_Pictographic# E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty
+1F568..1F56E ; Extended_Pictographic# E0.0 [7] (🕨..🕮) RIGHT SPEAKER..BOOK
+1F56F..1F570 ; Extended_Pictographic# E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock
+1F571..1F572 ; Extended_Pictographic# E0.0 [2] (🕱..🕲) BLACK SKULL AND CROSSBONES..NO PIRACY
+1F573..1F579 ; Extended_Pictographic# E0.7 [7] (🕳️..🕹️) hole..joystick
+1F57A ; Extended_Pictographic# E3.0 [1] (🕺) man dancing
+1F57B..1F586 ; Extended_Pictographic# E0.0 [12] (🕻..🖆) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE
+1F587 ; Extended_Pictographic# E0.7 [1] (🖇️) linked paperclips
+1F588..1F589 ; Extended_Pictographic# E0.0 [2] (🖈..🖉) BLACK PUSHPIN..LOWER LEFT PENCIL
+1F58A..1F58D ; Extended_Pictographic# E0.7 [4] (🖊️..🖍️) pen..crayon
+1F58E..1F58F ; Extended_Pictographic# E0.0 [2] (🖎..🖏) LEFT WRITING HAND..TURNED OK HAND SIGN
+1F590 ; Extended_Pictographic# E0.7 [1] (🖐️) hand with fingers splayed
+1F591..1F594 ; Extended_Pictographic# E0.0 [4] (🖑..🖔) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND
+1F595..1F596 ; Extended_Pictographic# E1.0 [2] (🖕..🖖) middle finger..vulcan salute
+1F597..1F5A3 ; Extended_Pictographic# E0.0 [13] (🖗..🖣) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX
+1F5A4 ; Extended_Pictographic# E3.0 [1] (🖤) black heart
+1F5A5 ; Extended_Pictographic# E0.7 [1] (🖥️) desktop computer
+1F5A6..1F5A7 ; Extended_Pictographic# E0.0 [2] (🖦..🖧) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS
+1F5A8 ; Extended_Pictographic# E0.7 [1] (🖨️) printer
+1F5A9..1F5B0 ; Extended_Pictographic# E0.0 [8] (🖩..🖰) POCKET CALCULATOR..TWO BUTTON MOUSE
+1F5B1..1F5B2 ; Extended_Pictographic# E0.7 [2] (🖱️..🖲️) computer mouse..trackball
+1F5B3..1F5BB ; Extended_Pictographic# E0.0 [9] (🖳..🖻) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE
+1F5BC ; Extended_Pictographic# E0.7 [1] (🖼️) framed picture
+1F5BD..1F5C1 ; Extended_Pictographic# E0.0 [5] (🖽..🗁) FRAME WITH TILES..OPEN FOLDER
+1F5C2..1F5C4 ; Extended_Pictographic# E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet
+1F5C5..1F5D0 ; Extended_Pictographic# E0.0 [12] (🗅..🗐) EMPTY NOTE..PAGES
+1F5D1..1F5D3 ; Extended_Pictographic# E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar
+1F5D4..1F5DB ; Extended_Pictographic# E0.0 [8] (🗔..🗛) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL
+1F5DC..1F5DE ; Extended_Pictographic# E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper
+1F5DF..1F5E0 ; Extended_Pictographic# E0.0 [2] (🗟..🗠) PAGE WITH CIRCLED TEXT..STOCK CHART
+1F5E1 ; Extended_Pictographic# E0.7 [1] (🗡️) dagger
+1F5E2 ; Extended_Pictographic# E0.0 [1] (🗢) LIPS
+1F5E3 ; Extended_Pictographic# E0.7 [1] (🗣️) speaking head
+1F5E4..1F5E7 ; Extended_Pictographic# E0.0 [4] (🗤..🗧) THREE RAYS ABOVE..THREE RAYS RIGHT
+1F5E8 ; Extended_Pictographic# E2.0 [1] (🗨️) left speech bubble
+1F5E9..1F5EE ; Extended_Pictographic# E0.0 [6] (🗩..🗮) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE
+1F5EF ; Extended_Pictographic# E0.7 [1] (🗯️) right anger bubble
+1F5F0..1F5F2 ; Extended_Pictographic# E0.0 [3] (🗰..🗲) MOOD BUBBLE..LIGHTNING MOOD
+1F5F3 ; Extended_Pictographic# E0.7 [1] (🗳️) ballot box with ballot
+1F5F4..1F5F9 ; Extended_Pictographic# E0.0 [6] (🗴..🗹) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK
+1F5FA ; Extended_Pictographic# E0.7 [1] (🗺️) world map
+1F5FB..1F5FF ; Extended_Pictographic# E0.6 [5] (🗻..🗿) mount fuji..moai
+1F600 ; Extended_Pictographic# E1.0 [1] (😀) grinning face
+1F601..1F606 ; Extended_Pictographic# E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face
+1F607..1F608 ; Extended_Pictographic# E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns
+1F609..1F60D ; Extended_Pictographic# E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes
+1F60E ; Extended_Pictographic# E1.0 [1] (😎) smiling face with sunglasses
+1F60F ; Extended_Pictographic# E0.6 [1] (😏) smirking face
+1F610 ; Extended_Pictographic# E0.7 [1] (😐) neutral face
+1F611 ; Extended_Pictographic# E1.0 [1] (😑) expressionless face
+1F612..1F614 ; Extended_Pictographic# E0.6 [3] (😒..😔) unamused face..pensive face
+1F615 ; Extended_Pictographic# E1.0 [1] (😕) confused face
+1F616 ; Extended_Pictographic# E0.6 [1] (😖) confounded face
+1F617 ; Extended_Pictographic# E1.0 [1] (😗) kissing face
+1F618 ; Extended_Pictographic# E0.6 [1] (😘) face blowing a kiss
+1F619 ; Extended_Pictographic# E1.0 [1] (😙) kissing face with smiling eyes
+1F61A ; Extended_Pictographic# E0.6 [1] (😚) kissing face with closed eyes
+1F61B ; Extended_Pictographic# E1.0 [1] (😛) face with tongue
+1F61C..1F61E ; Extended_Pictographic# E0.6 [3] (😜..😞) winking face with tongue..disappointed face
+1F61F ; Extended_Pictographic# E1.0 [1] (😟) worried face
+1F620..1F625 ; Extended_Pictographic# E0.6 [6] (😠..😥) angry face..sad but relieved face
+1F626..1F627 ; Extended_Pictographic# E1.0 [2] (😦..😧) frowning face with open mouth..anguished face
+1F628..1F62B ; Extended_Pictographic# E0.6 [4] (😨..😫) fearful face..tired face
+1F62C ; Extended_Pictographic# E1.0 [1] (😬) grimacing face
+1F62D ; Extended_Pictographic# E0.6 [1] (😭) loudly crying face
+1F62E..1F62F ; Extended_Pictographic# E1.0 [2] (😮..😯) face with open mouth..hushed face
+1F630..1F633 ; Extended_Pictographic# E0.6 [4] (😰..😳) anxious face with sweat..flushed face
+1F634 ; Extended_Pictographic# E1.0 [1] (😴) sleeping face
+1F635 ; Extended_Pictographic# E0.6 [1] (😵) dizzy face
+1F636 ; Extended_Pictographic# E1.0 [1] (😶) face without mouth
+1F637..1F640 ; Extended_Pictographic# E0.6 [10] (😷..🙀) face with medical mask..weary cat
+1F641..1F644 ; Extended_Pictographic# E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
+1F645..1F64F ; Extended_Pictographic# E0.6 [11] (🙅..🙏) person gesturing NO..folded hands
+1F680 ; Extended_Pictographic# E0.6 [1] (🚀) rocket
+1F681..1F682 ; Extended_Pictographic# E1.0 [2] (🚁..🚂) helicopter..locomotive
+1F683..1F685 ; Extended_Pictographic# E0.6 [3] (🚃..🚅) railway car..bullet train
+1F686 ; Extended_Pictographic# E1.0 [1] (🚆) train
+1F687 ; Extended_Pictographic# E0.6 [1] (🚇) metro
+1F688 ; Extended_Pictographic# E1.0 [1] (🚈) light rail
+1F689 ; Extended_Pictographic# E0.6 [1] (🚉) station
+1F68A..1F68B ; Extended_Pictographic# E1.0 [2] (🚊..🚋) tram..tram car
+1F68C ; Extended_Pictographic# E0.6 [1] (🚌) bus
+1F68D ; Extended_Pictographic# E0.7 [1] (🚍) oncoming bus
+1F68E ; Extended_Pictographic# E1.0 [1] (🚎) trolleybus
+1F68F ; Extended_Pictographic# E0.6 [1] (🚏) bus stop
+1F690 ; Extended_Pictographic# E1.0 [1] (🚐) minibus
+1F691..1F693 ; Extended_Pictographic# E0.6 [3] (🚑..🚓) ambulance..police car
+1F694 ; Extended_Pictographic# E0.7 [1] (🚔) oncoming police car
+1F695 ; Extended_Pictographic# E0.6 [1] (🚕) taxi
+1F696 ; Extended_Pictographic# E1.0 [1] (🚖) oncoming taxi
+1F697 ; Extended_Pictographic# E0.6 [1] (🚗) automobile
+1F698 ; Extended_Pictographic# E0.7 [1] (🚘) oncoming automobile
+1F699..1F69A ; Extended_Pictographic# E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck
+1F69B..1F6A1 ; Extended_Pictographic# E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway
+1F6A2 ; Extended_Pictographic# E0.6 [1] (🚢) ship
+1F6A3 ; Extended_Pictographic# E1.0 [1] (🚣) person rowing boat
+1F6A4..1F6A5 ; Extended_Pictographic# E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light
+1F6A6 ; Extended_Pictographic# E1.0 [1] (🚦) vertical traffic light
+1F6A7..1F6AD ; Extended_Pictographic# E0.6 [7] (🚧..🚭) construction..no smoking
+1F6AE..1F6B1 ; Extended_Pictographic# E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water
+1F6B2 ; Extended_Pictographic# E0.6 [1] (🚲) bicycle
+1F6B3..1F6B5 ; Extended_Pictographic# E1.0 [3] (🚳..🚵) no bicycles..person mountain biking
+1F6B6 ; Extended_Pictographic# E0.6 [1] (🚶) person walking
+1F6B7..1F6B8 ; Extended_Pictographic# E1.0 [2] (🚷..🚸) no pedestrians..children crossing
+1F6B9..1F6BE ; Extended_Pictographic# E0.6 [6] (🚹..🚾) men’s room..water closet
+1F6BF ; Extended_Pictographic# E1.0 [1] (🚿) shower
+1F6C0 ; Extended_Pictographic# E0.6 [1] (🛀) person taking bath
+1F6C1..1F6C5 ; Extended_Pictographic# E1.0 [5] (🛁..🛅) bathtub..left luggage
+1F6C6..1F6CA ; Extended_Pictographic# E0.0 [5] (🛆..🛊) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL
+1F6CB ; Extended_Pictographic# E0.7 [1] (🛋️) couch and lamp
+1F6CC ; Extended_Pictographic# E1.0 [1] (🛌) person in bed
+1F6CD..1F6CF ; Extended_Pictographic# E0.7 [3] (🛍️..🛏️) shopping bags..bed
+1F6D0 ; Extended_Pictographic# E1.0 [1] (🛐) place of worship
+1F6D1..1F6D2 ; Extended_Pictographic# E3.0 [2] (🛑..🛒) stop sign..shopping cart
+1F6D3..1F6D4 ; Extended_Pictographic# E0.0 [2] (🛓..🛔) STUPA..PAGODA
+1F6D5 ; Extended_Pictographic# E12.0 [1] (🛕) hindu temple
+1F6D6..1F6D7 ; Extended_Pictographic# E13.0 [2] (🛖..🛗) hut..elevator
+1F6D8..1F6DF ; Extended_Pictographic# E0.0 [8] (🛘..🛟) <reserved-1F6D8>..<reserved-1F6DF>
+1F6E0..1F6E5 ; Extended_Pictographic# E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat
+1F6E6..1F6E8 ; Extended_Pictographic# E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE
+1F6E9 ; Extended_Pictographic# E0.7 [1] (🛩️) small airplane
+1F6EA ; Extended_Pictographic# E0.0 [1] (🛪) NORTHEAST-POINTING AIRPLANE
+1F6EB..1F6EC ; Extended_Pictographic# E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
+1F6ED..1F6EF ; Extended_Pictographic# E0.0 [3] (🛭..🛯) <reserved-1F6ED>..<reserved-1F6EF>
+1F6F0 ; Extended_Pictographic# E0.7 [1] (🛰️) satellite
+1F6F1..1F6F2 ; Extended_Pictographic# E0.0 [2] (🛱..🛲) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE
+1F6F3 ; Extended_Pictographic# E0.7 [1] (🛳️) passenger ship
+1F6F4..1F6F6 ; Extended_Pictographic# E3.0 [3] (🛴..🛶) kick scooter..canoe
+1F6F7..1F6F8 ; Extended_Pictographic# E5.0 [2] (🛷..🛸) sled..flying saucer
+1F6F9 ; Extended_Pictographic# E11.0 [1] (🛹) skateboard
+1F6FA ; Extended_Pictographic# E12.0 [1] (🛺) auto rickshaw
+1F6FB..1F6FC ; Extended_Pictographic# E13.0 [2] (🛻..🛼) pickup truck..roller skate
+1F6FD..1F6FF ; Extended_Pictographic# E0.0 [3] (🛽..🛿) <reserved-1F6FD>..<reserved-1F6FF>
+1F774..1F77F ; Extended_Pictographic# E0.0 [12] (🝴..🝿) <reserved-1F774>..<reserved-1F77F>
+1F7D5..1F7DF ; Extended_Pictographic# E0.0 [11] (🟕..🟟) CIRCLED TRIANGLE..<reserved-1F7DF>
+1F7E0..1F7EB ; Extended_Pictographic# E12.0 [12] (🟠..🟫) orange circle..brown square
+1F7EC..1F7FF ; Extended_Pictographic# E0.0 [20] (🟬..🟿) <reserved-1F7EC>..<reserved-1F7FF>
+1F80C..1F80F ; Extended_Pictographic# E0.0 [4] (🠌..🠏) <reserved-1F80C>..<reserved-1F80F>
+1F848..1F84F ; Extended_Pictographic# E0.0 [8] (🡈..🡏) <reserved-1F848>..<reserved-1F84F>
+1F85A..1F85F ; Extended_Pictographic# E0.0 [6] (🡚..🡟) <reserved-1F85A>..<reserved-1F85F>
+1F888..1F88F ; Extended_Pictographic# E0.0 [8] (🢈..🢏) <reserved-1F888>..<reserved-1F88F>
+1F8AE..1F8FF ; Extended_Pictographic# E0.0 [82] (🢮..🣿) <reserved-1F8AE>..<reserved-1F8FF>
+1F90C ; Extended_Pictographic# E13.0 [1] (🤌) pinched fingers
+1F90D..1F90F ; Extended_Pictographic# E12.0 [3] (🤍..🤏) white heart..pinching hand
+1F910..1F918 ; Extended_Pictographic# E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
+1F919..1F91E ; Extended_Pictographic# E3.0 [6] (🤙..🤞) call me hand..crossed fingers
+1F91F ; Extended_Pictographic# E5.0 [1] (🤟) love-you gesture
+1F920..1F927 ; Extended_Pictographic# E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face
+1F928..1F92F ; Extended_Pictographic# E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
+1F930 ; Extended_Pictographic# E3.0 [1] (🤰) pregnant woman
+1F931..1F932 ; Extended_Pictographic# E5.0 [2] (🤱..🤲) breast-feeding..palms up together
+1F933..1F93A ; Extended_Pictographic# E3.0 [8] (🤳..🤺) selfie..person fencing
+1F93C..1F93E ; Extended_Pictographic# E3.0 [3] (🤼..🤾) people wrestling..person playing handball
+1F93F ; Extended_Pictographic# E12.0 [1] (🤿) diving mask
+1F940..1F945 ; Extended_Pictographic# E3.0 [6] (🥀..🥅) wilted flower..goal net
+1F947..1F94B ; Extended_Pictographic# E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
+1F94C ; Extended_Pictographic# E5.0 [1] (🥌) curling stone
+1F94D..1F94F ; Extended_Pictographic# E11.0 [3] (🥍..🥏) lacrosse..flying disc
+1F950..1F95E ; Extended_Pictographic# E3.0 [15] (🥐..🥞) croissant..pancakes
+1F95F..1F96B ; Extended_Pictographic# E5.0 [13] (🥟..🥫) dumpling..canned food
+1F96C..1F970 ; Extended_Pictographic# E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
+1F971 ; Extended_Pictographic# E12.0 [1] (🥱) yawning face
+1F972 ; Extended_Pictographic# E13.0 [1] (🥲) smiling face with tear
+1F973..1F976 ; Extended_Pictographic# E11.0 [4] (🥳..🥶) partying face..cold face
+1F977..1F978 ; Extended_Pictographic# E13.0 [2] (🥷..🥸) ninja..disguised face
+1F979 ; Extended_Pictographic# E0.0 [1] (🥹) <reserved-1F979>
+1F97A ; Extended_Pictographic# E11.0 [1] (🥺) pleading face
+1F97B ; Extended_Pictographic# E12.0 [1] (🥻) sari
+1F97C..1F97F ; Extended_Pictographic# E11.0 [4] (🥼..🥿) lab coat..flat shoe
+1F980..1F984 ; Extended_Pictographic# E1.0 [5] (🦀..🦄) crab..unicorn
+1F985..1F991 ; Extended_Pictographic# E3.0 [13] (🦅..🦑) eagle..squid
+1F992..1F997 ; Extended_Pictographic# E5.0 [6] (🦒..🦗) giraffe..cricket
+1F998..1F9A2 ; Extended_Pictographic# E11.0 [11] (🦘..🦢) kangaroo..swan
+1F9A3..1F9A4 ; Extended_Pictographic# E13.0 [2] (🦣..🦤) mammoth..dodo
+1F9A5..1F9AA ; Extended_Pictographic# E12.0 [6] (🦥..🦪) sloth..oyster
+1F9AB..1F9AD ; Extended_Pictographic# E13.0 [3] (🦫..🦭) beaver..seal
+1F9AE..1F9AF ; Extended_Pictographic# E12.0 [2] (🦮..🦯) guide dog..white cane
+1F9B0..1F9B9 ; Extended_Pictographic# E11.0 [10] (🦰..🦹) red hair..supervillain
+1F9BA..1F9BF ; Extended_Pictographic# E12.0 [6] (🦺..🦿) safety vest..mechanical leg
+1F9C0 ; Extended_Pictographic# E1.0 [1] (🧀) cheese wedge
+1F9C1..1F9C2 ; Extended_Pictographic# E11.0 [2] (🧁..🧂) cupcake..salt
+1F9C3..1F9CA ; Extended_Pictographic# E12.0 [8] (🧃..🧊) beverage box..ice
+1F9CB ; Extended_Pictographic# E13.0 [1] (🧋) bubble tea
+1F9CC ; Extended_Pictographic# E0.0 [1] (🧌) <reserved-1F9CC>
+1F9CD..1F9CF ; Extended_Pictographic# E12.0 [3] (🧍..🧏) person standing..deaf person
+1F9D0..1F9E6 ; Extended_Pictographic# E5.0 [23] (🧐..🧦) face with monocle..socks
+1F9E7..1F9FF ; Extended_Pictographic# E11.0 [25] (🧧..🧿) red envelope..nazar amulet
+1FA00..1FA6F ; Extended_Pictographic# E0.0 [112] (🨀..🩯) NEUTRAL CHESS KING..<reserved-1FA6F>
+1FA70..1FA73 ; Extended_Pictographic# E12.0 [4] (🩰..🩳) ballet shoes..shorts
+1FA74 ; Extended_Pictographic# E13.0 [1] (🩴) thong sandal
+1FA75..1FA77 ; Extended_Pictographic# E0.0 [3] (🩵..🩷) <reserved-1FA75>..<reserved-1FA77>
+1FA78..1FA7A ; Extended_Pictographic# E12.0 [3] (🩸..🩺) drop of blood..stethoscope
+1FA7B..1FA7F ; Extended_Pictographic# E0.0 [5] (🩻..🩿) <reserved-1FA7B>..<reserved-1FA7F>
+1FA80..1FA82 ; Extended_Pictographic# E12.0 [3] (🪀..🪂) yo-yo..parachute
+1FA83..1FA86 ; Extended_Pictographic# E13.0 [4] (🪃..🪆) boomerang..nesting dolls
+1FA87..1FA8F ; Extended_Pictographic# E0.0 [9] (🪇..🪏) <reserved-1FA87>..<reserved-1FA8F>
+1FA90..1FA95 ; Extended_Pictographic# E12.0 [6] (🪐..🪕) ringed planet..banjo
+1FA96..1FAA8 ; Extended_Pictographic# E13.0 [19] (🪖..🪨) military helmet..rock
+1FAA9..1FAAF ; Extended_Pictographic# E0.0 [7] (🪩..🪯) <reserved-1FAA9>..<reserved-1FAAF>
+1FAB0..1FAB6 ; Extended_Pictographic# E13.0 [7] (🪰..🪶) fly..feather
+1FAB7..1FABF ; Extended_Pictographic# E0.0 [9] (🪷..🪿) <reserved-1FAB7>..<reserved-1FABF>
+1FAC0..1FAC2 ; Extended_Pictographic# E13.0 [3] (🫀..🫂) anatomical heart..people hugging
+1FAC3..1FACF ; Extended_Pictographic# E0.0 [13] (🫃..🫏) <reserved-1FAC3>..<reserved-1FACF>
+1FAD0..1FAD6 ; Extended_Pictographic# E13.0 [7] (🫐..🫖) blueberries..teapot
+1FAD7..1FAFF ; Extended_Pictographic# E0.0 [41] (🫗..🫿) <reserved-1FAD7>..<reserved-1FAFF>
+1FC00..1FFFD ; Extended_Pictographic# E0.0[1022] (🰀..🿽) <reserved-1FC00>..<reserved-1FFFD>
+
+# Total elements: 3537
+
+#EOF
diff --git a/macros/generic/unicode-data/load-unicode-data.tex b/macros/generic/unicode-data/load-unicode-data.tex
index 8a19eb00c6..662dfe975f 100644
--- a/macros/generic/unicode-data/load-unicode-data.tex
+++ b/macros/generic/unicode-data/load-unicode-data.tex
@@ -57,7 +57,7 @@
\catcode`\^=7 %
\newlinechar=`\^^J %
\message{^^J}%
- \message{load-unicode-data.tex v1.12 (2020-03-12)^^J}%
+ \message{load-unicode-data.tex v1.13 (2020-04-15)^^J}%
\message{Reading Unicode data^^J}%
% The first stage of parsing is dealing with the fact that there are lots of
% data items separated by |;|. Of those, only a few are needed so they are
diff --git a/macros/generic/unicode-data/load-unicode-math-classes.tex b/macros/generic/unicode-data/load-unicode-math-classes.tex
index b40143f77d..0f897dd187 100644
--- a/macros/generic/unicode-data/load-unicode-math-classes.tex
+++ b/macros/generic/unicode-data/load-unicode-math-classes.tex
@@ -48,7 +48,7 @@
\catcode`\^=7 %
\newlinechar=`\^^J %
\message{^^J}%
- \message{load-unicode-math-classes.tex v1.12 (2020-03-12)^^J}%
+ \message{load-unicode-math-classes.tex v1.13 (2020-04-15)^^J}%
\message{Reading math class data^^J}%
% The parser for data lines starts by skipping any comments (which start with
% a |#| and which will be category code~$12$).
diff --git a/macros/generic/unicode-data/load-unicode-xetex-classes.tex b/macros/generic/unicode-data/load-unicode-xetex-classes.tex
index cd7d95f606..33bbd8ab30 100644
--- a/macros/generic/unicode-data/load-unicode-xetex-classes.tex
+++ b/macros/generic/unicode-data/load-unicode-xetex-classes.tex
@@ -64,7 +64,7 @@
\catcode`\^=7 %
\newlinechar=`\^^J %
\message{^^J}%
- \message{load-unicode-xetex-classes.tex v1.12 (2020-03-12)^^J}%
+ \message{load-unicode-xetex-classes.tex v1.13 (2020-04-15)^^J}%
\message{Reading Unicode east Asian character class data^^J}%
% A string version of |#| will be needed to look for comment lines in the
% source. Once that is done proper parsing can begin.
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/README.md b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/README.md
index 1a6155d4c7..154ae8123a 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/README.md
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/README.md
@@ -1,4 +1,4 @@
-# Focus v2.5
+# Focus v2.6
A presentation theme for LaTeX Beamer that aims at a clean and minimalist design,
so to minimize distractions and put the focus directly on the content.
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamercolorthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamercolorthemefocus.sty
index 4a45cecba1..80dd314b67 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamercolorthemefocus.sty
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamercolorthemefocus.sty
@@ -1,4 +1,4 @@
-% Copyright (C) 2018-2019 Pasquale Claudio Africa and the LaTeX community.
+% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community.
% A full list of contributors can be found at
%
% https://github.com/elauksap/focus-beamertheme
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerfontthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerfontthemefocus.sty
index 3a956c6154..380af92254 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerfontthemefocus.sty
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerfontthemefocus.sty
@@ -1,4 +1,4 @@
-% Copyright (C) 2018-2019 Pasquale Claudio Africa and the LaTeX community.
+% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community.
% A full list of contributors can be found at
%
% https://github.com/elauksap/focus-beamertheme
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerinnerthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerinnerthemefocus.sty
index a753dacf36..e0317d51af 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerinnerthemefocus.sty
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerinnerthemefocus.sty
@@ -1,4 +1,4 @@
-% Copyright (C) 2018-2019 Pasquale Claudio Africa and the LaTeX community.
+% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community.
% A full list of contributors can be found at
%
% https://github.com/elauksap/focus-beamertheme
@@ -84,6 +84,7 @@
\vspace*{0pt plus 100fill}
\addtocounter{framenumber}{-1}
+ \addtocounter{realframenumber}{-1}
}
% Section page.
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty
index 26afe6799e..bbf893eeaa 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty
@@ -1,4 +1,4 @@
-% Copyright (C) 2018-2019 Pasquale Claudio Africa and the LaTeX community.
+% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community.
% A full list of contributors can be found at
%
% https://github.com/elauksap/focus-beamertheme
@@ -37,11 +37,12 @@
\RequirePackage{etoolbox} % \BeforeBeginEnvironment.
\RequirePackage{tikz}
+\newcounter{realframenumber}
% FRAMETITLE TEMPLATES. --------------------------------------------------------
\defbeamertemplate*{frametitle}{focus}{%
% If not title page.
- \ifnum\value{framenumber}>0%
+ \ifnum\value{realframenumber}>0%
\vspace{-1pt}%
\begin{beamercolorbox}[wd=\paperwidth,leftskip=0.55cm,rightskip=0.55cm,sep=0.2cm]{frametitle}%
\strut\insertframetitle\strut%
@@ -52,7 +53,7 @@
% Plain header.
\defbeamertemplate*{frametitle}{plain}{%
% If not title page.
- \ifnum\value{framenumber}>0%
+ \ifnum\value{realframenumber}>0%
\vspace{-1pt}%
\begin{beamercolorbox}[wd=\paperwidth,leftskip=0.55cm,rightskip=0.55cm,sep=0.2cm,ignorebg]{frametitle}%
\strut%
@@ -78,8 +79,8 @@
\addtolength{\focus@pbar@rightoffset}{1.5em}%
%
% If not title page.
- \ifnum\c@framenumber>0%
- \ifnum\c@framenumber<\inserttotalframenumber%
+ \ifnum\value{realframenumber}>0%
+ \ifnum\value{framenumber}<\inserttotalframenumber%
\begin{tikzpicture}[inner xsep=0.5em, inner ysep=0.5ex]\usebeamerfont{footline}
\pgfmathsetmacro{\focus@pbar@progress}%
{(\paperwidth-\focus@pbar@leftoffset-\focus@pbar@rightoffset)*(\insertframenumber/\inserttotalframenumber)}
@@ -119,7 +120,7 @@
\addtolength{\focus@pbar@rightoffset}{1.5em}%
%
% If not title page.
- \ifnum\c@framenumber>0%
+ \ifnum\value{realframenumber}>0%
\begin{tikzpicture}[inner xsep=0.5em, inner ysep=0.5ex]
\clip (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height);
\fill[footline.bg] (0,0) rectangle ++(\paperwidth,\the\focus@pbar@height);
@@ -169,6 +170,7 @@
% HOOKS FOR CREATING FRAMES. ---------------------------------------------------
\BeforeBeginEnvironment{frame}{%
+ \stepcounter{realframenumber}
\setbeamertemplate{background canvas}[focus]%
\setbeamertemplate{frametitle}[focus]%
%
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerthemefocus.sty
index 134cd0596b..6da4b05683 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerthemefocus.sty
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerthemefocus.sty
@@ -1,4 +1,4 @@
-% Copyright (C) 2018-2019 Pasquale Claudio Africa and the LaTeX community.
+% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community.
% A full list of contributors can be found at
%
% https://github.com/elauksap/focus-beamertheme
@@ -19,7 +19,7 @@
% along with beamerthemefocus. If not, see <http://www.gnu.org/licenses/>.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerthemefocus}[2019/11/20 v2.5 Focus Beamer theme]
+\ProvidesPackage{beamerthemefocus}[2020/04/15 v2.6 Focus Beamer theme]
\mode<presentation>
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/demo.pdf b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/demo.pdf
index bd40c54745..d4eafee0dc 100644
--- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/demo.pdf
+++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/oops/README.md b/macros/latex/contrib/ccool/README.md
index c7907f4b51..79ddcae18f 100644
--- a/macros/latex/contrib/oops/README.md
+++ b/macros/latex/contrib/ccool/README.md
@@ -1,9 +1,7 @@
----------------------------------------------------------------
-#### oops --- An object oriented practical scribe's package,
-#### typically for typesetting math
-- Source repository: https://github.com/rogard/oops
+##### ccool --- A tool for encoding mathematical notation
+- Source repository: https://github.com/rogard/ccool
- Released under the LaTeX Project Public License v1.3c or later
- See http://www.latex-project.org/lppl.txt
----------------------------------------------------------------
-
diff --git a/macros/latex/contrib/ccool/ccool.dtx b/macros/latex/contrib/ccool/ccool.dtx
new file mode 100644
index 0000000000..4dd2d47e22
--- /dev/null
+++ b/macros/latex/contrib/ccool/ccool.dtx
@@ -0,0 +1,1692 @@
+% \iffalse meta-comment
+% !TEX program = pdfLaTeX
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+----------------------------------------------------------------
+##### ccool --- A tool for encoding mathematical notation
+- Source repository: https://github.com/rogard/ccool
+- Released under the LaTeX Project Public License v1.3c or later
+- See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+%</readme>
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+\expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+----------------------------------------------------------------------------
+ccool --- A tool for encoding mathematical notation
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+Copyright (C) 2020 by Erwann Rogard
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License (LPPL), either
+version 1.3c of this license or (at your option) any later
+version. The latest version of this license is in the file:
+
+http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status) by
+Erwann Rogard.
+
+This work consists of the file ccool.dtx and the derived files:
+ccool.sty, and ccool.pdf.
+
+\endpostamble
+\generate{
+ \file{\jobname.sty}{\from{\jobname.dtx}{package}}
+}
+%</install>
+%<install> \endbatchfile
+%<*internal>
+\generate{
+ \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+}
+\nopreamble\nopostamble
+\generate{
+ \file{README.md}{\from{\jobname.dtx}{readme}}
+}
+\ifx\fmtname\nameofplainTeX
+\expandafter\endbatchfile
+\else
+\expandafter\endgroup
+\fi
+%</internal>
+%<package> \NeedsTeXFormat{LaTeX2e}[2020/02/02]
+%<package> \RequirePackage{etoolbox}[2019/09/21]
+%<package> \RequirePackage{l3keys2e}[2020/03/06]
+%<package> \RequirePackage{xparse}[2020/03/06]
+%<package> \ProvidesExplPackage
+%<package> {ccool} % Package name
+%<package> {2020/04/15} % Release date
+%<package> {2.0} % Release version
+%<package> {cool --- A tool for encoding mathematical notation} % Description
+%
+%<*driver>
+\documentclass[full]{l3doc}
+\listfiles
+\usepackage{amsmath, amssymb}
+\usepackage[english]{babel}
+\usepackage{bookmark}
+\usepackage{ccool}
+\usepackage{fancyvrb}
+\usepackage{fvextra}% csquotes should be loaded after fvextra
+\usepackage[T1]{fontenc}% \char`[
+\usepackage{pdfpages}
+\usepackage{tabto}
+\usepackage{tcolorbox}
+\tcbuselibrary{listings, breakable}
+\makeatletter
+\newcommand*{\docsetnameref}{\def\@currentlabelname}%https://tex.stackexchange.com/questions/537751
+\makeatother
+\ExplSyntaxOn
+\tl_gset:Nn \partname {Part}
+\ExplSyntaxOff
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+% ^^A\AtEndDocument { \PrintChanges \PrintIndex }
+\ExplSyntaxOn
+\providecommand\docarg[1]{\texttt{#1}} % fun[param] (macro) vs fun[arg] (eval)
+\providecommand\docargnoval{\c_novalue_tl}
+\providecommand\docassign[2]{#1~$\leftarrow$~#2}
+\providecommand\docccept[1]{\textit{#1}}
+\providecommand\doccceptbool{boolean}
+\providecommand\doccceptcode{code}
+\providecommand\doccceptint{integer}
+\providecommand\doccceptgroup{local~group}
+\providecommand\doccceptkvl{keyval~list}
+\providecommand\doccceptpath{path}
+\providecommand\doccceptpre{preamble}
+\providecommand\docccepttok{token}
+\providecommand\docenvdoc{\env{document}}
+\providecommand\docdefaultfor{default~for~}
+\providecommand\doceval[1]{\texttt{\char`\{}#1\texttt{\char`\}}}
+\providecommand\docfillblank{\begin{minipage}[t]{\linewidth}\end{minipage}}
+\providecommand\docissuedo{Do: }
+\providecommand\docissuedont{Don't: }
+\providecommand\docissuesymp{Symptom: }
+\providecommand\doclist[1]{Listing~\autoref{listing:#1}}
+\providecommand\docopto[1]{\texttt{[}#1\texttt{]}}
+\providecommand\docopte[2]{\texttt{#1}\doceval{#2}}
+\providecommand\docoptd[1]{\texttt{\textless}#1\texttt{\textgreater}}
+\providecommand\docpipe{\textbar}
+\cs_new:Nn \__ccool_docu:n{\MakeUppercase #1}
+\providecommand\docstep[1]{step~\ref{step:#1}}
+\providecommand\docsee{See:~}
+\providecommand\docccepttl{token~list}
+\providecommand\doctip{\noindent\textbf{Tip}:~}
+\providecommand\docU[1]{\exp_args:Nx \__ccool_docu:n{#1}}
+\providecommand\docvers[2]{v#1.#2}
+\providecommand\docwarn{\noindent\textbf{Warning}:~}
+\providecommand\pkgparde{kvl$_{1}$}%Adef
+\providecommand\pkgparhe{tl$_{2}$}%head
+\providecommand\pkgparin{code$_{1}$}%inner
+\providecommand\pkgparna{tl$_{1}$}%name
+\providecommand\pkgparou{code$_{2}$}%outer
+\providecommand\pkgpars{\Arg{\pkgparsi}\docpipe\Arg{\pkgparsi}\Arg{\pkgparsii}\docpipe\Arg{\pkgparsi}\Arg{\pkgparsii}\Arg{\pkgparsiii}}%separ
+\providecommand\pkgparsi{tl$_{3}$}
+\providecommand\pkgparsii{tl$_{4}$}
+\providecommand\pkgparsiii{tl$_{5}$}
+\providecommand\pkgparta{tl$_{6}$}%tail
+\providecommand\pkgkey{key$_{i}$}
+\providecommand\pkgval{val$_{i}$}
+\providecommand\pkgoptex{\docarg{Expans}}
+\providecommand\pkgoptfi{\docarg{File}}
+\providecommand\pkgoptin{\docarg{Inner}}
+\providecommand\pkgoptna{\docarg{Name}}
+\providecommand\pkgoptnad{\docarg{Math}}%default
+\providecommand\pkgoptou{\docarg{Outer}}
+\providecommand\pkgoptwr{\docarg{Write}}
+\providecommand\pkgoptse{\docarg{Separ}}
+\providecommand\pkgobj[1]{object identified by #1}
+\providecommand\pkgoptions{kvl0}
+\providecommand\pkgsep[1]{\Arg{#1}}
+\providecommand\pkgwrite{\cs{Ccool}\docarg{\meta{\pkgparna}}\docopte{i}{\meta{\pkgparin}}\Arg{\pkgparde}}
+\ExplSyntaxOff
+\begin{document}
+\DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{\jobname.sty}
+%^^A\begin{documentation}
+% \title{The \pkg{ccool} package\thanks{^^A
+% This file describes version \fileversion, last revised \filedate.^^A
+% }^^A
+% }
+% \author{Erwann Rogard\thanks{firstname dot lastname AusTria gmail dot com}}
+%
+% \date{Released \filedate}
+%
+% \maketitle
+%
+% \begin{abstract} \pkg{ccool} stands for Custom COntent Oriented for \LaTeX,
+% a concept pioneered by \pkg{cool}\cite{cool}\footnote{Whereas \pkg{cool} provided predefined macros, \pkg{ccool} is tool for making macros, hence ``custom''.}.
+% This is done using a minimalist interface built upon \pkg{xparse}\cite{xparse}.\nobreak
+% ~Specifically, \nameref{usage:cs:ccool}\docoptd{\meta{name}} begins a series of instructions
+% alternating between `text' and macro definitions, that themselves optionally expand using predefined or inline rules.
+% For example,\begin{Verbatim}[breaklines=true]
+% \Ccool<Math>[Let~]
+% i{\mathbb{#1}}{ Nat = N, Real = R }*s{{~\rm{and}~}}
+% [~denote the natural and real numbers.]{}
+% \end{Verbatim}
+% expands to: ``\Ccool<Math>[Let~]i{\mathbb{#1}}{Nat = N, Real = R}*s{{~\rm{and}~}}[~denote the natural and real numbers.]{}''
+% As a side effect, |$\Nat<Math>$|~encodes~``$\Nat<Math>$'' (and likewise for |\Real|).
+% \pkgoptnad~being the default for \meta{name}, |<Math>| can be dropped. In conjunction with
+% lamba expressions, this tool allows for encoding the way certain mathematical objects, such as functions, should be formatted.
+% Optionally, the macros can be written to a file, and read, which
+% can be useful for typesetting documents sharing the same notation.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \part{Usage}\label{part:usage}
+% \VerbatimFootnotes
+%
+% \setcounter{section}{0}
+% \label{usage:conv}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}Convention}
+% \section*{Convention}
+% \begin{enumerate}
+% \item Loosely, those of \cite{interface3} and \cite{xparse}, for example as to the meaning of \meta{\docccepttl}.
+% \item If unspecified, the environment in which a macro must be declared is \docenvdoc.
+% \end{enumerate}
+%
+% \refstepcounter{section}
+% \label{usage:load}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}Loading the package}
+%
+% \begin{function}{\usepackage}
+% \begin{syntax}
+% \cs{usepackage}\doceval{\pkg{ccool}}
+% \end{syntax}
+% \begin{description}
+% \item[Requirement]\docfillblank
+% \begin{enumerate}
+% \item \file{ccool.sty} is in the path of the \LaTeX~engine. See \autoref{part:other}, \autoref{other:support}.
+% \item Declare it in the~\docccept{\doccceptpre}
+% \end{enumerate}
+% \end{description}
+% \end{function}
+%
+% \leavevmode
+% \refstepcounter{section}
+% \docsetnameref{\cs{Ccool}}
+% \label{usage:cs:ccool}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{Ccool}}
+% \setcounter{subsection}{0}
+% \begin{function}{\Ccool}
+% \begin{syntax}
+% \cs{Ccool}\docoptd{\meta{\pkgparna}}
+% \docopto{\meta{\pkgparhe}}
+% \docopte{i}{\meta{\pkgparin}}
+% \Arg{\pkgparde}
+% |+|
+% |*|
+% \docopte{s}{\pkgpars}
+% \docopte{o}{\meta{\pkgparou}}
+% \docopto{\meta{\pkgparta}}
+% \end{syntax}
+% \begin{description}
+% \item[Requirement] \meta{\pkgparde} is specified (all others optional).
+% \end{description}
+% \end{function}
+%
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{\meta{\pkgparna}}
+% \label{usage:par:na}
+% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docoptd{\meta{\pkgparna}}}
+% \DescribeOption{\meta{\pkgparna}}
+% \begin{description}
+% \item[Default] \nameref{usage:opt:na}
+% \item[Example] \pkgoptnad, |ModelA|, |ModelB|
+% \item[Semantics] Identifies a group of macros
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{\meta{\pkgparhe}}
+% \label{usage:par:he}
+% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopto{\meta{\pkgparhe}}}
+% \DescribeOption{\meta{\pkgparhe}}
+% \begin{description}
+% \item[Example]|Let~|
+% \item[Semantics] Expands~\meta{\pkgparhe}
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{\meta{\pkgparin}}
+% \label{usage:par:in}
+% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopte{i}{\meta{\pkgparin}}}
+% \DescribeOption{\meta{\pkgparin}}
+%
+% \begin{description}
+% \item[Default] \nameref{usage:opt:in}
+% \item[Example] |\mathbb{#1}|
+% \item[Semantics] \docfillblank
+% \begin{enumerate}[label=\emph{\arabic*)}]
+% \item \docassign{\meta{\pkgval} }
+% { \meta{\pkgparin} applied to \meta{\pkgval} }\label{step:val}
+% \end{enumerate}
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{\meta{\pkgparde}}
+% \label{usage:par:de}
+% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\Arg{\pkgparde}}
+% \DescribeOption{\meta{\pkgparde}}
+% \begin{description}
+% \item[Example] |Elems={\omega_1, \dots, \omega_n}, Sample=\Omega|
+% \item[Semantics]\docfillblank
+% \begin{enumerate}[label=\emph{\arabic*)}]
+% \setcounter{enumi}{1}
+% \item \docassign{ \cs{\meta{\pkgkey}}\docoptd{\meta{\pkgparna}}}{\meta{val_i}} defined in \docstep{val},
+% using \nameref{usage:opt:ex} for expansion. \label{step:key}
+% \item If \nameref{usage:opt:wr}, writes the input used by \docstep{key} to \nameref{usage:opt:fi}\label{step:write}
+% \end{enumerate}
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{parameter \docarg{+}}
+% \label{usage:par:appto}
+% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docarg{+}}
+% \DescribeOption{+}
+% \begin{description}
+% \item[Semantics] Appends \docstep{key} and \docstep{write} to \nameref{usage:cs:hook}
+% \footnote{Needed inside a \docccept{\doccceptgroup}, for the side effect of \cs{Ccool} to persist thereafter.}
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{parameter \docarg{*}}
+% \label{usage:par:expand}
+% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docarg{*}}
+% \DescribeOption{*}
+%
+% \begin{description}
+% \item[Semantics]\docfillblank
+% \begin{enumerate}
+% \setcounter{enumi}{3}
+% \item Expands~\nameref{usage:par:ou} applied to the list created in \docstep{val},
+% using the separator specified by \nameref{usage:par:si}, \nameref{usage:par:sii}, \nameref{usage:par:siii}.
+% \end{enumerate}
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{separators' parameter}
+% \label{usage:par:s}
+% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopte{s}{\pkgpars}}
+%
+% \leavevmode
+% \refstepcounter{subsubsection}
+% \docsetnameref{\meta{\pkgparsi}}
+% \label{usage:par:si}
+% \DescribeOption{\meta{\pkgparsi}}
+% \begin{description}
+% \item[Default] \nameref{usage:opt:se}
+% \item[Example] |{~\in~}|
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{subsubsection}
+% \docsetnameref{\meta{\pkgparsii}}
+% \label{usage:par:sii}
+% \DescribeOption{\meta{\pkgparsii}}
+% \begin{description}
+% \item[Default] \nameref{usage:opt:se}
+% \item[Example] |{,~}|
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{subsubsection}
+% \docsetnameref{\meta{\pkgparsiii}}
+% \label{usage:par:siii}
+% \DescribeOption{\meta{\pkgparsiii}}
+% \begin{description}
+% \item[Default] \nameref{usage:opt:se}
+% \item[Example] |{~\&~}|
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{\meta{\pkgparou}}
+% \label{usage:par:ou}
+% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopte{o}{\meta{\pkgparou}}}
+% \DescribeOption{\meta{\pkgparou}}
+% \begin{description}
+% \item[Default] \nameref{usage:opt:ou}
+% \item[Example] |$\left\{#1\right\}$|
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{\meta{\pkgparta}}
+% \label{usage:par:ta}
+% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopto{\meta{\pkgparta}}}
+% \DescribeOption{\meta{\pkgparta}}
+% \begin{description}
+% \item[Semantics]
+% \nameref{usage:cs:ccool}\docoptd{\meta{\pkgparna}}\docopto{\meta{\pkgparta}}
+% \end{description}
+%
+% \leavevmode
+% \refstepcounter{section}
+% \docsetnameref{Other}
+% \label{usage:other}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}Other}
+% \section*{Other}
+% Continued in \autoref{part:impl}, \autoref{impl:frontend}.
+%
+% \leavevmode
+% \refstepcounter{section}
+% \docsetnameref{Do's and dont's}
+% \label{usage:dosdont}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}Do's and dont's}
+% \section*{Do's and dont's}
+%
+% \begin{enumerate}
+% \item \docfillblank
+% \begin{itemize}
+% \item[\docissuedont] |\Ccool{ A = a, B = b }[Hello, world!]|.
+% \item[\docissuedo] |\Ccool{ A = a, B = b }[Hello, world!]{}|, or \\|\Ccool{ A = a, B = b } Hello, world!|
+% \end{itemize}
+% \item \docfillblank
+% \begin{itemize}
+% \item[\docissuedont] |$|\cs{\meta{\pkgkey}}|<x$|.
+% \item[\docissuedo] |$|\cs{\meta{\pkgkey}}|{<}x$|
+% \end{itemize}
+% \item\docfillblank
+% \begin{itemize}
+% \item[\docissuedont] |[a, b)|
+% \item[\docissuedo] |{[}a, b{)}|
+% \end{itemize}
+% \item \docfillblank
+% \begin{itemize}
+% \item[\docissuedont] |\Ccool{ F = \cal F }|.
+% \item[\docissuedo] | \Ccool{ F = \cal{F} } | or | \Ccool{ F = \mathcal{F} } |
+% \end{itemize}
+% \item \docfillblank
+% \begin{itemize}
+% \item[\docissuedont] |[x_0,x]|
+% \item[\docissuedo] |\left[x_0,x\right]|
+% \end{itemize}
+% \item Also see \autoref{part:other}, \autoref{other:issue}
+% \end{enumerate}
+%
+% \clearpage
+% \part{Listing}\label{part:listing}
+%
+% \newtcblisting[auto counter]
+% {listing}[2][]{
+% noparskip,
+% breakable,
+% colback=white,
+% colframe=black,
+% opacitybacktitle=.8,%
+% fonttitle=\bfseries,
+% title={Listing~\thetcbcounter. #1},
+% arc=0pt,
+% outer arc=0pt,
+% boxrule=1pt,
+% listing and text,
+% #2
+% }
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{vers}. Version.}
+% \begin{listing}[]
+% {label=listing:vers}
+% \CcoolVers
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{pre}. Preamble.}
+% \begin{listing}[Preamble\footnote{These are the settings to replicate the listings.
+% For exhaustivity, check the \env{documentation} section of \pkg{ccool}\texttt{.dtx}.}]
+% {label=listing:pre, listing only}
+% \usepackage{amsmath, amsthm, commath}
+% \usepackage[T1]{fontenc}% \char`[
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{test:i}. Separators.}
+% \begin{listing}[Separators]
+% {label=listing:test:i}
+% \CcoolOption{
+% ^^A% spaces betw. inner and outer brackets matter!->
+% Separ={{\ \char`@\ }{\ \%\ }{\ \char`@\ }}}
+% \Ccool<Test>{ X = x, Y = y }*[\\]
+% { X = x, Y = y, Z = z }*[\\]
+% { X = x, Y = y }*s{{\ \&\ }}[\\]
+% { X = x, Y = y }*s{{\ \&\ }{,\ }}[\\]
+% { X = x, Y = y, Z = z }*s{{\ \&\ }}[\\]
+% { X = x, Y = y, Z = z }*s{{\ \&\ }{,\ }}[\\]
+% { X = x, Y = y, Z = z }*s{{\ \&\ }{,\ }{\ \&\ }}\\
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{test:ii}. Hello, world!}
+% \begin{listing}[Hello, world!\footnote{If this looks arcane, it's for the purpose of testing.}]
+% {label=listing:test:ii}
+% \CcoolOption{ Separ = {{}{.}{.}}, Outer = { ####1 } }
+% \CcoolOption{ Write = \BooleanTrue }
+% \Ccool<Test>
+% { KeyA = {.}, KeyB = {!}, KeyC = {\%} }[]
+% { KeyD = {d}, KeyE = {\%} }[]i{\{#1\}}
+% { KeyF = {H}, KeyG = {e}, KeyH = {l} }*[]
+% { KeyI = {\%}, KeyJ = {\%}, KeyK = {\%} }[.\{l\}.\{o\}]
+% { KeyL = {l}, KeyM = {\char`[}, KeyN = {\char`]} }[]
+% { KeyO = {o}, KeyP = {\%}, KeyQ = {\%} }[{,\ }]
+% { KeyR = {w}, KeyS = {o}, KeyT = {r} }*s{{}{}{}}o{{\char`[}#1}[]
+% { KeyU = {\%}, KeyV = {\%}, KeyW = {\%} }[]
+% { KeyX = {\%}, KeyY = {\%}, KeyZ = {\KeyB<Test>} }\nobreak
+% \KeyL<Test>\KeyD<Test>\KeyZ<Test>\KeyN<Test>\\
+% \CcoolOption{ Write = \BooleanFalse }
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{test:iii}. \doclist{test:ii} read from file.}
+% \begin{listing}[\doclist{test:ii} read from file.]
+% {label=listing:test:iii}
+% \CcoolRead
+% \KeyF<Test>\KeyA<Test>\nobreak
+% \KeyG<Test>\KeyA<Test>\nobreak
+% \KeyH<Test>\KeyA<Test>\nobreak
+% \KeyH<Test>\KeyA<Test>\nobreak
+% {\{}\nobreak\KeyO<Test>{\}},{\ }\nobreak
+% \KeyM<Test>\KeyR<Test>\nobreak
+% \KeyO<Test>\nobreak
+% \KeyT<Test>\nobreak
+% \KeyL<Test>\nobreak
+% \KeyD<Test>\nobreak
+% \KeyZ<Test>\nobreak
+% \KeyN<Test>\nobreak
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{proba:i}. Probability space.}
+% \begin{listing}[Probability space]
+% {label=listing:proba:i}
+% \CcoolOption{ Write = \BooleanTrue }
+% \Ccool[Let~]
+% { Space = \Omega, Field = \mathcal{F}, Meas = \mathcal{P} }
+% *s{{,}}o{$\{#1\}$}
+% [~denote the probability space, where~]{ PowerSet = { 2^{\Space} } }
+% [$\Field\subset \PowerSet$.]
+% {}
+% \CcoolOption{ Write = \BooleanFalse }
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{proba:ii}. \doclist{proba:i} read from file.}
+% \begin{listing}[\doclist{proba:i} read from file.]
+% {label=listing:proba:ii}
+% \CcoolRead \tab $\Omega$ $\Field$ $\Meas$
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{mvt:i}. Mittelwertsatz f\"ur $n$ Variable.}
+% \begin{listing}[{Mittelwertsatz f\"ur $n$ Variable\cite[17.3]{tcolbox}}]
+% {label=listing:mvt:i}
+% \CcoolOption{ Write = \BooleanTrue }
+% \newtheorem{theorem}{Theorem}
+% \AfterEndEnvironment{theorem}{\CcoolHook}
+% \Ccool i{\mathbb{#1}}
+% { N = { N } , R = { R } }+[]
+% { Grad = { \operatorname{grad} } }+
+% [\begin{theorem}
+% [Mittelwertsatz f\"ur $n$ Variable]Es~sei~]
+% { OffMenge = {D}, Ci = {C^{1}}, Strecke = { \left[x_0,x\right] } }+
+% [$n\in\N$,~$\OffMenge\subseteq\N^n$ eine offene Menge und $f\in\Ci(\OffMenge,\R)$.
+% Dann gibt es auf jeder Strecke $\Strecke\subset\OffMenge$ einen Punkt $\xi\in\Strecke$,~]
+% { Steig = { \frac{ f(x)-f(x_0) }{ x-x_0 } }, Punkt = { \xi } }+
+% [so dass gilt
+% \begin{equation*}
+% \Steig = \Grad f(\Punkt)^{\top}
+% \end{equation*}
+% \end{theorem}]
+% {}
+% (Check: $\N$, $\Punkt$)
+% \CcoolOption{ Write = \BooleanFalse }
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{mvt:ii}. \doclist{mvt:i} read from file.}
+% \begin{listing}[\doclist{mvt:i} read from file.]
+% {label=listing:mvt:ii}
+% \CcoolRead \tab $\N$ $\R$ $\OffMenge$ $\Ci$ $\Strecke$
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{lambda:i}. Lambda expression.}
+% \begin{listing}[Lambda expression.]
+% {label=listing:lambda:i}
+% \CcoolOption{ Write = \BooleanTrue }
+% \Ccool{ EvalAt = \CcoolLambda{(#1)}, ApplyOp = \CcoolLambda[2]{#1[#2]} }
+% [Supposons une fonction $f\EvalAt{t}$, et \'etudions le probl\`eme o\`u la fonctionnelle $\ApplyOp{S}{f}$ est donn\'ee par\dots]{}
+% \CcoolOption{ Write = \BooleanFalse }
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{lambda:ii}. \doclist{lambda:i} read from file.}
+% \begin{listing}[\doclist{lambda:i} read from file.]
+% {label=listing:lambda:ii}
+% \CcoolRead \tab $f\EvalAt{t}$, $\ApplyOp{S}{f}$
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{cusum:i}. CUSUM statistic.}
+% \begin{listing}[CUSUM statistic\cite{ccool-thesis}]
+% {label=listing:cusum:i}
+% \newtheorem{definition}{Definition}
+% \AfterEndEnvironment{definition}{\CcoolHook}
+%
+% \CcoolOption{ Write = \BooleanTrue }
+% \Ccool{ SuchThat = { ;~ }, Time = { t }, Process = { \xi }, StopT = { T }, EvalAt = \CcoolLambda{(#1)} }
+% [The CUSUM statistic process and the corresponding one-sided CUSUM stopping time are defined as follows:
+% \begin{definition}\label{the CUSUM statistic}. Let~]
+% { Scale = { \lambda }, Real = {\mathcal{R}} }+*s{{~\in~}}[~and~]
+% { CUSUMthresh = { \nu } }+*o{$#1\in\Real^{+}$.}
+% [~Define the following processes:]
+% { LogWald = { u }, CUSUMst = { \StopT_{c} }, CUSUM = { y }, LogWaldInf = { m } }+
+% [\begin{enumerate}
+% \item{$\LogWald_{\Time}\EvalAt{ \Scale } = \Scale\Process_{\Time} - \frac{1}{2}\Scale^2\Time$;
+% $\LogWaldInf_{\Time}\EvalAt{ \Scale } = \inf_{ 0\le s \le \Time }\CUSUM_{s} \EvalAt{ \Scale }$.}
+% \item{$\CUSUM_{\Time}\EvalAt{ \Scale } = \LogWaldInf_{\Time}\EvalAt{ \Scale } - \LogWald_{\Time}\EvalAt{ \Scale }\ge0$, which is the CUSUM statistic process.}
+% \item{$\CUSUMst \EvalAt{ \Scale, \LogWaldInf } = \inf\left[ \Time \ge 0 \SuchThat \CUSUM_{\Time}\EvalAt{\Scale} \ge \LogWaldInf \right]$, which is the CUSUM stopping time.} \end{enumerate}\end{definition}\par]{}
+%
+% (Check: $\Scale$, $\CUSUM$)
+% \CcoolOption{ Write = \BooleanFalse }
+% \end{listing}
+%
+% \phantomsection\addcontentsline{toc}{section}{\doclist{cusum:ii}. \doclist{cusum:i} read from file.}
+% \begin{listing}[\doclist{cusum:i} read from file.]
+% {label=listing:cusum:ii}
+% \CcoolRead \tab $\Time $ $\Process$ $\Scale$ $\Real$ $\CUSUMthresh$ $\LogWald$ $\CUSUMst$ $\CUSUM$ $\LogWaldInf$
+% \end{listing}
+%
+% \clearpage
+% \part{Other}\label{part:other}
+%
+% \section{Acknowledgment}\label{other:acknowl}
+%
+% This work has benefited from Q\&A's from the \LaTeX community\cite{user-erw}.
+% Specific attributions are made throughout this document.
+%
+% \section{Install}\label{other:install}
+%
+% Compiling \file{ccool.dtx}\footnote{Under Unix, |$tex ccool.dtx|} will generate \file{ccool.sty} and \file{ccool.pdf}
+%
+% \section{Issue}\label{other:issue}
+%
+% \begin{enumerate}
+% \item
+% \begin{description}
+% \item[\docissuedont] |Inner={\{####1\}}|
+% \item[\docissuesymp] \cs{CcoolRead} fails
+% \item[\docissuedo] |Inner={\char`{####1\char`}}|
+% \end{description}
+% \end{enumerate}
+%
+% \section{Support}\label{other:support}
+%
+% This package is available from \url{https://www.ctan.org/pkg/ccool} and \url{https://github.com/rogard/ccool}.
+%
+% \section{Testing}\label{other:testing}
+%
+% \subsection{Technicality}
+% Not possible to compile-check the expansion of a certain class of macros against predefined values\cite{a-534100}.
+% Instead, one can visually check \autoref{part:listing}, as generated in \autoref{other:install} on one's own machine,
+% against that \href{https://github.com/rogard/ccool}{of the repository} for the same version.
+%
+%
+% \subsection{Platform}
+% \begin{enumerate}[label=\emph{\roman*)}]
+% \item
+% ^^A uname -a
+% \begin{Verbatim}[breaklines=true]
+% Linux laptop 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
+% \end{Verbatim}
+% \label{plat:lin}
+% \end{enumerate}
+%
+% \subsection{Engine}
+% \begin{enumerate}[label=\emph{\alph*})]
+% \item
+% \begin{Verbatim}[breaklines=true]
+% pdfTeX 3.14159265-2.6-1.40.20 (TeX Live 2019)
+% \end{Verbatim}
+% \label{eng:tlxviiii:pdf}
+% \item
+% \begin{Verbatim}[breaklines=true]
+% pdfTeX 3.14159265-2.6-1.40.21 (TeX Live 2020)
+% \end{Verbatim}
+% \label{eng:tlxx:pdf}
+% \item
+% \begin{Verbatim}[breaklines=true]
+% LuaHBTeX, Version 1.12.0 (TeX Live 2020)
+% \end{Verbatim}
+% \label{eng:tlxx:lua}
+% \item
+% \begin{Verbatim}[breaklines=true]
+% XeTeX 3.14159265-2.6-0.999992 (TeX Live 2020)
+% \end{Verbatim}
+% \label{eng:tlxx:xe}
+% \end{enumerate}
+%
+% \subsection{Results}
+%
+% \begin{enumerate}
+% \item \pkg{ccool} \docvers{1}{8} satisfactory on platform \ref{plat:lin} and engine \ref{eng:tlxviiii:pdf}
+% \item \pkg{ccool} \docvers{1}{8} satisfactory on platform \ref{plat:lin} and engine \ref{eng:tlxx:pdf}
+% \item \pkg{ccool} \docvers{1}{9} satisfactory on platform \ref{plat:lin} and engines \ref{eng:tlxx:pdf} and \ref{eng:tlxx:lua}
+% \item \pkg{ccool} \docvers{2}{0} satisfactory on platform \ref{plat:lin} and engines \ref{eng:tlxx:pdf}, \ref{eng:tlxx:lua}, and \ref{eng:tlxx:xe}
+% \end{enumerate}
+%
+% \subsection{Other}
+% Check \cite{ccool-thesis} for testing \pkg{ccool} with \cls{llncs}
+%
+% \leavevmode
+% \refstepcounter{section}
+% \docsetnameref{References}
+% \label{other:bib}
+% \phantomsection\addcontentsline{toc}{section}{References}
+% \begin{thebibliography}{1}
+% \bibitem{cool} Nick Setzer {\em The \pkg{cool} package}, 2005, \url{https://www.ctan.org/pkg/cool}
+% \bibitem{interface3} The \LaTeX3 Project Team {\em The \LaTeX3 interfaces}, 2019,
+% \url{http://ftp.math.purdue.edu/mirrors/ctan.org/macros/latex/contrib/l3kernel/interface3.pdf}
+% \bibitem{tcolbox} Thomas F. Sturm {\em The \pkg{tcolorbox} package}, 2019,
+% \url{http://www.texdoc.net/texmf-dist/doc/latex/tcolorbox/tcolorbox.pdf}
+% \bibitem{xparse} The \LaTeX3 Project Team {\em The \pkg{xparse} package}, 2020,
+% \url{http://ftp.math.purdue.edu/mirrors/ctan.org/macros/latex/contrib/l3packages/xparse.pdf}
+% \bibitem{ccool-thesis} Erwann Rogard and Olympia Hadjiliadis {\em Typesetting a math thesis with \pkg{ccool}}, 2020,
+% \url{https://github.com/rogard/ccool/blob/master/thesis.pdf}
+% \bibitem{user-erw} \url{https://tex.stackexchange.com/users/112708/erwann?tab=questions}
+% \bibitem{a-188053} \href{https://tex.stackexchange.com/users/17423/sean-allred}{@{}sean-allred}'s answer to
+% ``How to create lambda expressions?'', \url{https://tex.stackexchange.com/a/188053/112708}
+% \bibitem{a-534100} \href{https://tex.stackexchange.com/users/73/joseph-wright}{@{}joseph-wright}'s answer to
+% ``Checking a function's expansion against a string'', \url{https://tex.stackexchange.com/a/534100}
+% \bibitem{a-536597} \href{https://tex.stackexchange.com/users/73317/frougon}{@{}frougon}'s answer to ``Journaling calls to a function \textdel{taking inline code as argument}'', \url{https://tex.stackexchange.com/a/536620}
+% \end{thebibliography}
+%
+% \changes{\docvers{1}{0}}{2020/03/08}{Initial version}
+% \changes{\docvers{1}{1}}{2020/04/04}{Revamped: much of the implementation}
+% \changes{\docvers{1}{1}}{2020/04/04}{Replaced: \Arg{kvl_{2}}~by~\docoptd{kvl_{2}}~given that option type \texttt{G} not recommended\cite{xparse}}
+% \changes{\docvers{1}{1}}{2020/04/04}{Replaced: \cs{OopsOptions}~by~\cs{OopsOption}}
+% \changes{\docvers{1}{1}}{2020/04/04}{Replaced: \docarg{GenericObject}~by~\docarg{Name}}
+% \changes{\docvers{1}{1}}{2020/04/04}{Replaced: \docarg{Separators}~by~\docarg{Separ}}
+% \changes{\docvers{1}{1}}{2020/04/04}{Added:\cs{OopsTest}}
+% \changes{\docvers{1}{1}}{2020/04/04}{Added:\cs{OopsRestore}}
+% \changes{\docvers{1}{1}}{2020/04/04}{Added: \docarg{Save}}
+% \changes{\docvers{1}{1}}{2020/04/04}{Deleted: Listing 1-5 from \docvers{1}{0}}
+% \changes{\docvers{1}{1}}{2020/04/04}{Added: Listing~1., 2., 3., 4., 6., and 9.}
+% \changes{\docvers{1}{1}}{2020/04/04}{Fixed: apparent anomaly in \docvers{1}{0}'s Listing~4, see \doclist{test:i}}
+% \changes{\docvers{1}{2}}{2020/04/06}{Added: optional |*| to \cs{OopsNew} as instruction to expand \pkgparde}
+% \changes{\docvers{1}{2}}{2020/04/06}{Replaced: \cs{OopsClear}\Arg{\pkgparna} by \cs{OopsClear}\docopto{\meta{\doccceptkvl}}}
+% \changes{\docvers{1}{2}}{2020/04/06}{Deleted: \meta{kvl_{2}}~and~\meta{code_{2}}}
+% \changes{\docvers{1}{2}}{2020/04/06}{Deleted: \cs{OopsTest}}
+% \changes{\docvers{1}{2}}{2020/04/06}{Deleted: Listing~2-3 from \docvers{1}{1}.}
+% \changes{\docvers{1}{2}}{2020/04/06}{Replaced: \cs{Save} by \cs{Write}}
+% \changes{\docvers{1}{2}}{2020/04/06}{Replaced: \cs{Restore} by \cs{Read}}
+% \changes{\docvers{1}{3}}{2020/04/06}{Replaced: \cs{OopsNew} by \cs{Oops}}
+% \changes{\docvers{1}{3}}{2020/04/06}{Replaced: \Arg{\pkgparna} and \docopto{\meta{\pkgparna}} by \docoptd{\meta{\pkgparna}} }
+% \changes{\docvers{1}{4}}{2020/04/10}{Replaced: \docopte{s}{\Arg{\pkgparsi}\Arg{\pkgparsii}\Arg{\pkgparsiii}}
+% by \docopte{s}{\Arg{\pkgparsi}\docpipe\Arg{\pkgparsi}\Arg{\pkgparsii}\docpipe\Arg{\pkgparsi}\Arg{\pkgparsii}\Arg{\pkgparsiii}}}
+% \changes{\docvers{1}{4}}{2020/04/10}{Added:optional |+| to \cs{OopsNew} to make side effects presist beyond local group}
+% \changes{\docvers{1}{4}}{2020/04/10}{Added: \cs{OopsHook}}
+% \changes{\docvers{1}{4}}{2020/04/10}{Deleted: Listing~1., and 2. }
+% \changes{\docvers{1}{4}}{2020/04/10}{Added: Listing~1., 2., and 3. }
+% \changes{\docvers{1}{4}}{2020/04/10}{Added: \docarg{Expans} (for debugging' sake, but...) }
+% \changes{\docvers{1}{4}}{2020/04/10}{Added: \autoref{usage:dosdont} }
+% \changes{\docvers{1}{4}}{2020/04/10}{Added: \cs{OopsDebug} }
+% \changes{\docvers{1}{5}}{2020/04/10}{Deleted: dependence on \pkg{datetime} }
+% \changes{\docvers{1}{5}}{2020/04/10}{Added: \pkgoptfi }
+% \changes{\docvers{1}{6}}{2020/04/10}{Renamed: \pkg{oops} to \pkg{ccool} (better describes the purpose) }
+% \changes{\docvers{1}{6}}{2020/04/10}{Renamed: \cs{Oops} to \cs{Ccool}}
+% \changes{\docvers{1}{6}}{2020/04/10}{Renamed: \cs{OopsClear} to \cs{CcoolClear}}
+% \changes{\docvers{1}{6}}{2020/04/10}{Renamed: \cs{OopsDebug} to \cs{CcoolDebug}}
+% \changes{\docvers{1}{6}}{2020/04/10}{Renamed: \cs{OopsHook} to \cs{CcoolHook}}
+% \changes{\docvers{1}{6}}{2020/04/10}{Renamed: \cs{OopsOption} to \cs{CcoolOption}}
+% \changes{\docvers{1}{6}}{2020/04/10}{Renamed: \cs{OopsRead} to \cs{CcoolRead}}
+% \changes{\docvers{1}{6}}{2020/04/10}{Added: \doclist{pre} (preamble) }
+% \changes{\docvers{1}{7}}{2020/04/11}{Added: \doclist{cusum:i} (CUSUM) }
+% \changes{\docvers{1}{7}}{2020/04/11}{Added: Legends to listings }
+% \changes{\docvers{1}{7}}{2020/04/11}{Deleted: \cs{CcoolDebug} }
+% \changes{\docvers{1}{7}}{2020/04/11}{Deleted: Listing~5 from \docvers{1}{6} }
+% \changes{\docvers{1}{8}}{2020/04/12}{Added: \cs{CcoolLambda} }
+% \changes{\docvers{1}{8}}{2020/04/12}{Added: \doclist{lambda:i}, \doclist{lambda:ii} }
+% \changes{\docvers{1}{8}}{2020/04/12}{Added: \cs{CcoolVers} }
+% \changes{\docvers{1}{8}}{2020/04/12}{Added: \doclist{vers} }
+% \changes{\docvers{1}{9}}{2020/04/14}{Added: support for \LuaTeX }
+% \changes{\docvers{1}{9}}{2020/04/14}{Moved: from \autoref{part:usage} to \autoref{part:impl}, what is now that part's \autoref{impl:frontend}}
+% \changes{\docvers{2}{0}}{2020/04/15}{Deleted: \pkgoptfi's dependency on \pkg{texosquery} and \cs{pdfcreationdate}}
+% \changes{\docvers{2}{0}}{2020/04/15}{Added: support for \XeTeX}
+% \changes{\docvers{2}{0}}{2020/04/15}{Updated: \cs{RequirePackage}, \cs{NeedsTeXFormat}'s second argument / TeX Live 2020}
+%
+% \PrintChanges
+% \PrintIndex
+% \clearpage
+% \StopEventually{
+% ^^A \PrintChanges
+% ^^A \PrintIndex
+% }
+%^^A \end{documentation}
+%^^A% Commented out to eliminate WARNING: Reference `doc/function//
+%^^A \begin{implementation}
+% \part{Implementation}\label{part:impl}
+%
+% \iffalse
+%<*package>
+% \fi
+% \begin{macrocode}
+%<@@=ccool>
+\ExplSyntaxOn
+% \end{macrocode}
+% \section{\texttt{aux}}
+% \begin{macro}{\@@_aux_inner_set:n}
+% \begin{arguments}
+% \item \meta{code}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_aux_inner_set:n
+{
+ \cs_gset:Npn \@@_aux_inner:n ##1 {#1}
+ \cs_generate_variant:Nn \@@_aux_inner:n { e }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_key:w }
+% \begin{arguments}
+% \item \meta{ key }
+% \item \meta{ value }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_aux_key:w #1 = #2 \q_stop
+{
+ \seq_gput_right:Nx \g@@_aux_key_seq { \tl_trim_spaces:n{#1} }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_key:n }
+% \begin{arguments}
+% \item \meta{ key = value }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_aux_key:n
+{
+ \@@_aux_key:w #1 \q_stop
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_key:N }
+% \begin{arguments}
+% \item \meta{ seq }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_aux_key:N
+{
+ \seq_gclear_new:N \g@@_aux_key_seq
+ \seq_map_function:NN #1 \@@_aux_key:n
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_outer_set:n}
+% \begin{arguments}
+% \item \meta{ inline code }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_aux_outer_set:n
+{
+ \cs_gset:Npn \@@_aux_outer:n ##1 {#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_prop:nn}
+% \begin{macrocode}
+\prop_new:N \g@@_aux_prop
+\cs_new_protected:Nn \@@_aux_prop:nn
+{
+ \prop_gput:Nnn \g@@_aux_prop{#1}{#2}
+}
+\cs_generate_variant:Nn \@@_aux_prop:nn { eo, ee, ex, xo, xe, xx }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_prop:w}
+% \begin{arguments}
+% \item \meta{ key }
+% \item \meta{ value }
+% \end{arguments}
+% \begin{macrocode}
+\tl_new:N \g@@_option_expans_tl
+\cs_new_protected:Npn \@@_aux_prop:w #1 = #2 \q_stop
+{
+ \exp_args:Nx
+ \use:c{@@_aux_prop:\g@@_option_expans_tl}
+ { \tl_trim_spaces:n{#1} }
+ { \@@_aux_inner:n{ \tl_trim_spaces:n{#2} } }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_prop:n}
+% \begin{arguments}
+% \item \meta{ key = value }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_aux_prop:n
+{
+ \@@_aux_prop:w #1 \q_stop
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_prop:N}
+% \begin{arguments}
+% \item \meta{keyval list}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_aux_prop:N
+{
+ \prop_gclear_new:N \g@@_aux_prop
+ \seq_if_empty:NTF #1
+ { \c_empty_tl }
+ {
+ \seq_map_function:NN #1 \@@_aux_prop:n
+ }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_separ:nn}
+% \begin{arguments}
+% \item \meta{ int }
+% \item \meta{ tokens }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_aux_separ:nn
+{
+ \int_case:nnTF {#1}
+ {
+ {1}
+ { \prg_replicate:nn{ 3 }{#2} }
+ {2}
+ {
+ { \use_i:nn #2 }
+ { \use_ii:nn #2 }
+ { \use_i:nn #2 }
+ }
+ {3}{#2}
+ }
+ { \c_empty_tl }
+ {
+ \msg_error:nnnn { @@ }
+ { separ }
+ { \exp_not:N \_@@_aux_separ:nn }
+ {#2}
+ }
+}
+\cs_generate_variant:Nn \@@_aux_separ:nn { e }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_separ:n}
+% \begin{arguments}
+% \item \meta{ tokens }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_aux_separ:n
+{
+ \@@_aux_separ:en{ \tl_count:n{#1} }{#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_aux_val:Nn}
+% \begin{arguments}
+% \item \meta{ seq }
+% \item \meta{ tl var name }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_aux_val:Nn
+{
+ \seq_gclear_new:N \g@@_aux_val_seq
+ \@@_seq_from_prop:NNn \g@@_aux_val_seq #1 { \@@_prop_name:n{#2} }
+}
+% \end{macrocode}
+% \end{macro}
+% \section{\texttt{lambda}}
+% \begin{macro}{\@@_lambda:nn}\cite{a-188053}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_lambda:nn #1 #2
+{
+ \exp_args:NNx
+ \DeclareDocumentCommand \@@_lambda_expression
+ { \prg_replicate:nn { #1 } { m } }
+ {#2}
+ \@@_lambda_expression
+}
+% \end{macrocode}
+% \end{macro}
+% \section{\texttt{log}}
+% \begin{macro}{\@@_log_close:}
+% \begin{macrocode}
+\iow_new:N \g@@_log_iow
+\AtEndDocument{\iow_close:N \g@@_log_iow}
+\bool_set_false:N \g@@_log_open_bool
+\cs_new_protected:Nn \@@_log_close:
+{
+ \iow_close:N \g@@_log_iow
+ \bool_gset_false:N \g@@_log_open_bool
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_log_open:}
+% \begin{macrocode}
+\tl_new:N \g@@_log_file_tl
+\cs_new_protected:Nn \@@_log_open:
+{
+ \tl_gset:Nx \g@@_log_to_tl{\g@@_log_file_tl}
+ \iow_open:Nn \g@@_log_iow {\g@@_log_to_tl}
+ \bool_gset_true:N \g@@_log_open_bool
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_log_read:n}
+% \begin{arguments}
+% \item \meta{path}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_log_read:n
+{
+ \file_input:n{#1}
+ \tl_log:n{read~from~#1}
+}
+\cs_generate_variant:Nn \@@_log_read:n { e }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_log_read:}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_log_read:
+{
+ \@@_log_read:e{\g@@_log_to_tl}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_log_write:n}
+% \begin{macrocode}
+\tl_new:N \g@@_log_to_tl
+\cs_new_protected:Nn \@@_log_write:n
+{
+ \bool_if:nTF{ \g@@_log_open_bool }
+ {
+ \iow_now:Nn \g@@_log_iow {#1}
+ \tl_log:n{ write~to~#1 }
+ }
+ { \msg_error:nnn{ @@ }{ iow }{ \g@@_log_iow } }
+}
+\cs_generate_variant:Nn \@@_log_write:n { e }
+% \end{macrocode}
+% \end{macro}
+% \section{\texttt{make_key}}
+% \begin{macro}{\@@_make_key:Nn}
+% \begin{arguments}
+% \item \meta{ token }
+% \item \meta{ key }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_make_key:Nn
+{
+ \exp_args:NNx
+ \ProvideDocumentCommand{#1}
+ { D<>{\g@@_option_name_tl} }
+ {
+ \@@_prop_item:nn{##1}{#2}
+ }
+}
+\cs_generate_variant:Nn \@@_make_key:Nn {c}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_make_key:n}
+% \begin{arguments}
+% \item \meta{ key }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_make_key:n
+{
+ \@@_make_key:cn{#1}{#1}
+}
+\cs_generate_variant:Nn \@@_make_key:n { e }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_make_key:N}
+% \begin{arguments}
+% \item \meta{ seq }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_make_key:N
+{
+ \seq_map_function:NN #1 \@@_make_key:e
+}
+% \end{macrocode}
+% \end{macro}
+% \section{\texttt{make_ccool}}
+% \begin{macro}{\@@_make_ccool_exp:nnn}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_make_ccool_exp:nnn
+{
+ \@@_aux_val:Nn \g@@_aux_key_seq {#1}
+ \@@_aux_outer_set:n{#3}
+ \@@_aux_outer:n
+ {
+ \exp_args:NNf
+ \@@_seq_use:Nn
+ \g@@_aux_val_seq
+ {#2}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_make_ccool_key:nnn}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_make_ccool_key:nnn
+{
+ \@@_prop_if_exist:nTF{#1}
+ { \c_empty_tl }
+ { \@@_prop_new:n{#1} }
+ \exp_args:No \@@_aux_inner_set:n{#2}
+ \seq_set_from_clist:Nn \g@@_aux_keyval_seq {#3}
+ \@@_aux_prop:N \g@@_aux_keyval_seq
+ \@@_prop_append:Nn \g@@_aux_prop {#1}
+ \@@_aux_key:N \g@@_aux_keyval_seq
+ \@@_make_key:N \g@@_aux_key_seq
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_make_ccool_sideeffect:nnn}\cite{a-536597}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_make_ccool_sideeffect:nnn
+{
+ \@@_make_ccool_key:nnn{#1}{#2}{#3}
+ \bool_if:nTF{ \g@@_log_open_bool }
+ {
+ \@@_log_write:n
+ {
+ \begingroup
+ \def \@@_log_entry { \Ccool<#1>i{#2}{#3} } \expandafter
+ \endgroup \@@_log_entry
+ }
+ }{\c_empty_tl}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_make_ccool:nnnn}
+% \begin{arguments}
+% \item \meta{ token list }
+% \item \meta{ seq_{1} }
+% \item \meta{ seq_{2} }
+% \item \meta{ prop }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_make_ccool:nnnn #1 #2 #3 #4
+{
+ \exp_args:NNx \DeclareDocumentCommand \Ccool
+ {%^^A 2 3 4 5 6 7 8 9
+ D<>{#1} +o E{ i }{{#2}} m t+ s E{ s o }{{#3}{#4}} +o
+ }
+ {
+ \IfValueT{##2}{##2}
+ \@@_make_ccool_sideeffect:nnn{##1}{##3}{##4}
+ \IfBooleanT{##6}
+ {
+ \@@_make_ccool_exp:nnn{##1}{##7}{##8}
+ }
+ \bool_if:nTF{##5}
+ {
+ \gappto{\CcoolHook}
+ {
+ \@@_make_ccool_sideeffect:nnn{##1}{##3}{##4}
+ }
+ }
+ {\c_empty_tl}
+ \IfValueT{##9}
+ {
+ \exp_not:n{ \Ccool<##1>[##9] }
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+% \section{\texttt{msg}}
+% \begin{macrocode}
+\msg_new:nnn {@@}{ generic }{#1}
+\msg_new:nnn {@@}{ iow }{#1~is~closed~can't~write}
+\msg_new:nnn {@@}{ keyonly }{#1~does~not~take~values;~keyval~is~#2}
+\msg_new:nnn {@@}{ keywrong }{#1~does~not~recognize~key~#2}
+\msg_new:nnn {@@}{ separ }{#1~expects~1~to~3~items,~#2}
+\msg_new:nnn {@@}{ unset }{#1~unset}
+% \end{macrocode}
+% \section{\texttt{option}}
+% \begin{macro}{\@@_aux_inner:n}
+% \begin{arguments}
+% \item \meta{code}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_option_inner:n
+{
+ \tl_gset:Nn \g@@_option_inner_tl {#1}
+}
+\@@_option_inner:n
+{
+ \msg_warning:nnn{ @@ }{ unset }{ \exp_not:N \g@@_option_inner_tl }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_option_name:n}
+% \begin{arguments}
+% \item \meta{token list}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_option_name:n
+{
+ \tl_gset:Nn \g@@_option_name_tl{#1}
+}
+\@@_option_name:n
+{
+ \msg_error:nnx{ @@ }
+ { generic }
+ { \exp_not:N\g@@_option_name_tl~undefined }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_option_outer:n}
+% \begin{arguments}
+% \item \meta{ inline code }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_option_outer:n
+{
+ \tl_gset:Nn \g@@_option_outer_tl {#1}
+}
+\@@_option_outer:n
+{
+ \msg_warning:nnn{ @@ }{ unset }{ \exp_not:N \g@@_option_outer_tl }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_option_separ:n}
+% \begin{arguments}
+% \item \Arg{ tl_{1} }\Arg{ tl_{2} }\Arg{ tl_{3} }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_option_separ:n
+{
+ \cs_gset:Npn \g@@_option_separ_tl {#1}
+}
+\@@_option_separ:n
+{
+ \msg_warning:nnn{ @@ }{ unset }{ \exp_not:N \g@@_option_separ_tl }
+}
+% \end{macrocode}
+% \end{macro}
+% \section{\texttt{prop}}
+% \begin{macro}{\@@_prop_append:NN}
+% \begin{arguments}
+% \item \meta{ prop_{1} }
+% \item \meta{ prop_{2} }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_prop_append:NN #1 #2
+{
+ \cs_set:Nn \@@_prop_append:nn
+ {
+ \prop_gput:Nnx #1 {##1}{ \prop_item:Nn #2{##1} }
+ }
+ \prop_map_function:NN #2 \@@_prop_append:nn
+}
+\cs_generate_variant:Nn \@@_prop_append:NN { cN }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_prop_append:Nn}
+% \begin{arguments}
+% \item \meta{ prop }
+% \item \meta{ tl var name }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_prop_append:Nn
+{
+ \@@_prop_append:cN{ \@@_prop_name:n {#2} } #1
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_prop_clear_new:n}
+% \begin{arguments}
+% \item \meta{ tl var name }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_prop_clear_new:n
+{
+ \exp_args:No \prop_clear_new:c{ \@@_prop_name:n {#1} }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_prop_clear_new_map:n}
+% \begin{arguments}
+% \item \meta{ keyval list }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_prop_clear_new_map:n
+{
+ \seq_set_from_clist:Nn \g@@_aux_key_seq {#1}
+ \seq_map_function:NN \g@@_aux_key_seq \@@_prop_clear_new:n
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_prop_if_exist:nTF}
+% \begin{arguments}
+% \item \meta{tl_{1}}
+% \item \meta{tl_{2}}
+% \item \meta{tl_{3}}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_prop_if_exist:nTF
+{
+ \prop_if_exist:cTF{ \@@_prop_name:n {#1} }{#2}{#3}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_prop_item:nn}
+% \begin{arguments}
+% \item \meta{ tl var name }
+% \item \meta{ key }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_prop_item:nn
+{
+ \prop_item:cn { \@@_prop_name:n {#1} } {#2}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_prop_name:n}
+% \begin{arguments}
+% \item \meta{ tl var name }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Npn \@@_prop_name:n #1{ @@_#1 }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_prop_new:n}
+% \begin{arguments}
+% \item \meta{ tl var name }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_prop_new:n
+{
+ \prop_new:c{ \@@_prop_name:n {#1} }
+}
+% \end{macrocode}
+% \end{macro}
+% \section{\texttt{seq}}
+% \begin{macro}{\@@_seq_from_prop:NNn}
+% \begin{arguments}
+% \item \meta{ seq_{1} }
+% \item \meta{ seq_{2} } (keys)
+% \item \meta{ prop }
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_seq_from_prop:NNn
+{
+ \cs_set_protected:Nn \@@_seq_from_prop:n
+ {
+ \seq_gput_right:No #1 { \prop_item:cn{#3}{##1} }
+ }
+ \seq_map_function:NN #2 \@@_seq_from_prop:n
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_erw_seq_use:Nn}
+% \begin{macrocode}
+% \begin{arguments}
+% \item \meta{ seq }
+% \item \meta{ tokens }
+% \end{arguments}
+\cs_new:Nn \@@_seq_use:Nn
+{
+ \exp_last_unbraced:NNf
+ \seq_use:Nnnn #1
+ \@@_aux_separ:n{#2}
+}
+% \end{macrocode}
+% \end{macro}
+% \section{sys}\label{impl:sys}
+% \begin{macro}{\@@_sys_date:}
+% \begin{macrocode}
+\cs_new:Nn \@@_sys_date:
+{
+ \int_eval:n
+ {
+ \c_sys_year_int * 10000
+ +\c_sys_month_int * 100
+ +\c_sys_day_int * 1
+ }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_sys_date_hex:}
+% \begin{macrocode}
+\cs_new:Nn \@@_sys_date_hex:
+{\int_to_hex:n{\@@_sys_date:}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_sys_time:}
+% \begin{macrocode}
+\cs_new:Nn \@@_sys_time:
+{
+ \int_eval:n
+ {
+ \c_sys_hour_int * 100
+ +\c_sys_minute_int * 1
+ }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_sys_time_hex:}
+% \begin{macrocode}
+\cs_new:Nn\@@_sys_time_hex:
+{\int_to_hex:n{\@@_sys_time:}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@_sys_filename:}
+% \begin{macrocode}
+\cs_new:Nn\@@_sys_filename:
+{
+ \c_sys_jobname_str--
+ \@@_sys_date_hex:--
+ \@@_sys_time_hex:
+}
+% \end{macrocode}
+% \end{macro}
+% \section{Front-end}\label{impl:frontend}
+% \leavevmode
+% \refstepcounter{section}
+% \label{usage:cs:clear}
+% \docsetnameref{\cs{CcoolClear}}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{CcoolClear}}
+% \begin{function}{\CcoolClear}
+% \begin{arguments}
+% \item \meta{\docccepttl}
+% \end{arguments}
+% \begin{description}
+% \item[Semantics] Clears any data created by \nameref{usage:cs:ccool}\Arg{\docccepttl}
+% \end{description}
+% \begin{macrocode}
+\NewDocumentCommand{ \CcoolClear }
+{ D<>{\g@@_option_name_tl} }
+{
+ \@@_prop_clear_new_map:n{#1}
+}
+% \end{macrocode}
+% \end{function}
+% \leavevmode
+% \refstepcounter{section}
+% \docsetnameref{\cs{CcoolHook}}
+% \label{usage:cs:hook}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{CcoolHook}}
+% \begin{variable}{\CcoolHook}
+% \begin{description}
+% \item[Example] |\AfterEndEnvironment{theorem}{\CcoolHook}|
+% \end{description}
+% \begin{macrocode}
+\NewDocumentCommand{\CcoolHook}{}{\c_empty_tl}
+% \end{macrocode}
+% \end{variable}
+% \docsetnameref{\cs{CcoolLambda}}
+% \label{usage:cs:lambda}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{CcoolLambda}}
+% \begin{function}{\CcoolLambda}
+% \begin{arguments}
+% \item \meta{\doccceptint}
+% \item \meta{\doccceptcode}
+% \end{arguments}
+% \begin{description}
+% \item[Example] |\Ccool{ EvalAt = \CcoolLambda{(#1)} }|
+% \item[Semantics] Creates a lambda expression with \meta{\doccceptint} arguments for \meta{\doccceptcode}
+% \end{description}
+% \begin{macrocode}
+\ProvideDocumentCommand \CcoolLambda { O{1} m }
+{
+ \@@_lambda:nn { #1 } { #2 }
+}
+% \end{macrocode}
+% \end{function}
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{\cs{CcoolOption}}
+% \label{usage:cs:option}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{CcoolOption}}
+% \begin{function}{\CcoolOption}
+% \begin{arguments}
+% \item \meta{\doccceptkvl}
+% \end{arguments}
+% \begin{macrocode}
+\NewDocumentCommand{ \CcoolOption }
+{ m }
+{
+ \keys_set:nn{ @@ }{#1}
+}
+% \end{macrocode}
+% \end{function}
+% \begin{macrocode}
+\keys_define:nn { @@ }
+{
+% \end{macrocode}
+% \leavevmode
+% \refstepcounter{subsection}
+% \docsetnameref{\pkgoptex}
+% \label{usage:opt:ex}
+% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\pkgoptex}
+% \DescribeOption{\pkgoptex}
+% \begin{description}
+% \item[Value] \texttt{eo\docpipe{}ee\docpipe{}ex\docpipe{}xo\docpipe{}xe\docpipe{}xx}
+% \end{description}
+% \begin{macrocode}
+Expans .multichoices:nn = { eo, ee, ex, xo, xe, xx }
+{ \tl_gset_eq:NN \g@@_option_expans_tl \l_keys_choice_tl },
+Expans .default:n = { xo },
+Expans .initial:n = { xo },
+% \end{macrocode}
+% \leavevmode
+% \refstepcounter{subsubsection}
+% \docsetnameref{\pkgoptfi}
+% \label{usage:opt:fi}
+% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\pkgoptfi}
+% \DescribeOption{\pkgoptfi}
+% \begin{description}
+% \item[Value] \meta{\doccceptpath}
+% \end{description}
+% \begin{macrocode}
+File .code:n = {
+ \tl_gset:Nx \g@@_log_file_tl{#1}
+},
+File .default:n = { \@@_sys_filename: },
+File .initial:n = { \@@_sys_filename: },
+% \end{macrocode}
+% \leavevmode
+% \refstepcounter{subsubsection}
+% \docsetnameref{\pkgoptin}
+% \label{usage:opt:in}
+% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\pkgoptin}
+% \DescribeOption{\pkgoptin}
+% \begin{description}
+% \item[Value] \meta{\doccceptcode}, with |####1| as the argument to be replaced
+% \end{description}
+% \begin{macrocode}
+Inner .code:n={
+ \@@_option_inner:n{#1}
+ \exp_last_unbraced:Nf
+ \@@_make_ccool:nnnn
+ {
+ { \g@@_option_name_tl }
+ { \g@@_option_inner_tl }
+ { \g@@_option_separ_tl }
+ { \g@@_option_outer_tl }
+ }
+},
+Inner .value_required:n = false,
+Inner .default:n = {####1},
+Inner .initial:n = {####1},
+% \end{macrocode}
+% \leavevmode
+% \refstepcounter{subsubsection}
+% \docsetnameref{\pkgoptna}
+% \label{usage:opt:na}
+% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\pkgoptna}
+% \DescribeOption{\pkgoptna}
+% \begin{description}
+% \item[Value] \meta{\docccepttl}
+% \end{description}
+% \begin{macrocode}
+Name .code:n={
+ \@@_option_name:n{#1}
+ \exp_last_unbraced:Nf
+ \@@_make_ccool:nnnn
+ {
+ { \g@@_option_name_tl }
+ { \g@@_option_inner_tl }
+ { \g@@_option_separ_tl }
+ { \g@@_option_outer_tl }
+ }
+},
+Name .value_required:n = false,
+Name .default:n = { Math },
+Name .initial:n = { Math },
+% \end{macrocode}
+% \leavevmode
+% \refstepcounter{subsubsection}
+% \docsetnameref{\pkgoptou}
+% \label{usage:opt:ou}
+% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\pkgoptou}
+% \DescribeOption{\pkgoptou}
+% \begin{description}
+% \item[Value] \meta{\doccceptcode}, with |####1| as the argument to be replaced
+% \end{description}
+% \begin{macrocode}
+Outer .code:n={
+ \@@_option_outer:n{#1}
+ \exp_last_unbraced:Nf
+ \@@_make_ccool:nnnn
+ {
+ { \g@@_option_name_tl }
+ { \g@@_option_inner_tl }
+ { \g@@_option_separ_tl }
+ { \g@@_option_outer_tl }
+ }
+},
+Outer .value_required:n = false,
+Outer .default:n = { \ensuremath{####1} },
+Outer .initial:n = { \ensuremath{####1} },
+% \end{macrocode}
+% \leavevmode
+% \refstepcounter{subsubsection}
+% \docsetnameref{\pkgoptse}
+% \label{usage:opt:se}
+% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\pkgoptse}
+% \DescribeOption{\pkgoptse}
+% \begin{description}
+% \item[Value] That of `separators' in \cite[Section 8 of \pkg{l3seq}]{interface3}
+% \end{description}
+% \begin{macrocode}
+Separ .code:n={
+ \@@_option_separ:n{#1}
+ \exp_last_unbraced:Nf
+ \@@_make_ccool:nnnn
+ {
+ { \g@@_option_name_tl }
+ { \g@@_option_inner_tl }
+ { \g@@_option_separ_tl }
+ { \g@@_option_outer_tl }
+ }
+},
+Separ .value_required:n = false,
+Separ .default:n = { {\ }and{\ } } { ,{\ } } { ,{\ }and{\ } },
+Separ .initial:n = { {\ }and{\ } } { ,{\ } } { ,{\ }and{\ } },
+% \end{macrocode}
+% \leavevmode
+% \addtocounter{subsection}{1}
+% \docsetnameref{\pkgoptwr}
+% \label{usage:opt:wr}
+% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\pkgoptwr}
+% \DescribeOption{\pkgoptwr}
+% \begin{description}
+% \item[Value] \meta{\doccceptbool}
+% \end{description}
+% \begin{macrocode}
+Write .code:n = {
+ \bool_if:nTF{#1}
+ {\@@_log_open:}
+ {\@@_log_close:}
+},
+Write .value_required:n = false,
+Write .default:n = \BooleanFalse,
+Write .initial:n = \BooleanFalse
+% \end{macrocode}
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \leavevmode
+% \refstepcounter{section}
+% \docsetnameref{\cs{CcoolRead}}
+% \label{usage:cs:read}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{CcoolRead}}
+% \begin{function}{\CcoolRead}
+% \begin{arguments}
+% \item \meta{\doccceptpath}
+% \end{arguments}
+% \begin{description}
+% \item[Semantics]\docfillblank
+% \begin{enumerate}
+% \item Reads the definitions in \meta{\doccceptpath}.
+% \item Writes to \file{ccool.log}: `read from \meta{\doccceptpath}'
+% \end{enumerate}
+% \end{description}
+% \end{function}
+% \begin{macrocode}
+\NewDocumentCommand{\CcoolRead}
+{o}
+{
+ \IfValueTF{#1}
+ {\@@_log_read:e{#1}}
+ {\@@_log_read:}
+}
+% \end{macrocode}
+% \leavevmode
+% \refstepcounter{section}
+% \docsetnameref{\cs{CcoolVers}}
+% \label{usage:cs:vers}
+% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{CcoolVers}}
+% \begin{variable}{\CcoolVers}
+% \end{variable}
+% \begin{description}
+% \item[Semantics] Expands to the package's version
+% \end{description}
+% \begin{macrocode}
+\NewDocumentCommand{\CcoolVers}
+{}
+{\use:c{ver@ccool.sty}}
+% \end{macrocode}
+% \section{Misc}
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%^^A \end{implementation}
+%
+% \iffalse
+%</package>
+% \fi
+% \Finale
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/ccool/ccool.pdf b/macros/latex/contrib/ccool/ccool.pdf
new file mode 100644
index 0000000000..672af92977
--- /dev/null
+++ b/macros/latex/contrib/ccool/ccool.pdf
Binary files differ
diff --git a/macros/latex/contrib/oops/oops.dtx b/macros/latex/contrib/oops/oops.dtx
deleted file mode 100644
index bc79a5dea8..0000000000
--- a/macros/latex/contrib/oops/oops.dtx
+++ /dev/null
@@ -1,789 +0,0 @@
-% \iffalse meta-comment
-% !TEX program = pdfLaTeX
-%<*internal>
-\iffalse
-%</internal>
-%<*readme>
-----------------------------------------------------------------
-#### oops --- An object oriented practical scribe's package,
-#### typically for typesetting math
-- Source repository: https://github.com/rogard/oops
-- Released under the LaTeX Project Public License v1.3c or later
-- See http://www.latex-project.org/lppl.txt
-----------------------------------------------------------------
-
-%</readme>
-%<*internal>
-\fi
-\def\nameofplainTeX{plain}
-\ifx\fmtname\nameofplainTeX\else
-\expandafter\begingroup
-\fi
-%</internal>
-%<*install>
-\input docstrip.tex
-\keepsilent
-\askforoverwritefalse
-\preamble
-----------------------------------------------------------------
-oops --- An object oriented practical scribe's package,
-typically for typesetting math
-Released under the LaTeX Project Public License v1.3c or later
-See http://www.latex-project.org/lppl.txt
-----------------------------------------------------------------
-
-\endpreamble
-\postamble
-
-Copyright (C) 2020 by Erwann Rogard
-
-This work may be distributed and/or modified under the
-conditions of the LaTeX Project Public License (LPPL), either
-version 1.3c of this license or (at your option) any later
-version. The latest version of this license is in the file:
-
-http://www.latex-project.org/lppl.txt
-
-This work is "maintained" (as per LPPL maintenance status) by
-Erwann Rogard.
-
-This work consists of the file oops.dtx
-and the derived files oops.ins,
-oops.pdf and
-oops.sty.
-
-\endpostamble
-\generate{
- \file{\jobname.sty}{\from{\jobname.dtx}{package}}
-}
-%</install>
-%<install> \endbatchfile
-%<*internal>
-\generate{
- \file{\jobname.ins}{\from{\jobname.dtx}{install}}
-}
-\nopreamble\nopostamble
-\generate{
- \file{README.txt}{\from{\jobname.dtx}{readme}}
-}
-\nopreamble\nopostamble
-\generate{
- \file{README.md}{\from{\jobname.dtx}{readme}}
-}
-\ifx\fmtname\nameofplainTeX
-\expandafter\endbatchfile
-\else
-\expandafter\endgroup
-\fi
-%</internal>
-%<package> \RequirePackage{xparse}[2019/05/28]
-%<package> \ProvidesExplPackage
-%<package> {oops} % Package name
-%<package> {2020/03/11} % Release date
-%<package> {1.0} % Release version
-%<package> {An object oriented practical scribe's package} % Description
-%
-%<*driver>
-\documentclass[full]{l3doc}
-\usepackage{oops}
-\usepackage{tcolorbox}
-\tcbuselibrary{listings,breakable}
-\ExplSyntaxOn
-\tl_gset:Nn \partname {Part}
-\ExplSyntaxOff
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-% \AtEndDocument { \PrintChanges \PrintIndex } % TODO
-\providecommand\pkgdata{\texttt{\meta{data}}}
-\providecommand\pkgoptions{\texttt{\meta{kvl0}}}
-\providecommand\pkgkey{\dockey{Key}}
-\providecommand\pkgvalue{\dockey{Value}}
-\providecommand\pkggenobjdefault{\texttt{Math}}
-\providecommand\pkgobj[1]{object identified by #1}
-\providecommand\pkgsep[1]{\docmarg{\texttt{#1}}}
-\providecommand\pkgargobj{\texttt{\meta{tl1}}}
-\providecommand\pkgargexpi{\texttt{\meta{tl2}}}
-\providecommand\pkgarginneri{\texttt{\meta{code1}}}
-\providecommand\pkgargsep{\texttt{\pkgsep{\meta{tl3}}\pkgsep{\meta{tl4}}\pkgsep{\meta{tl5}}}}
-\providecommand\pkgargouter{\texttt{\meta{code2}}}
-\providecommand\pkgargdefi{\texttt{\meta{kvl1}}}
-\providecommand\pkgarginnerii{\texttt{\meta{code3}}}
-\providecommand\pkgargdefii{\texttt{\meta{kvl2}}}
-\providecommand\pkgargexpii{\texttt{\meta{tl6}}}
-\providecommand\docConv[1]{Convention~\ref{#1}}
-\providecommand\docconv[1]{convention~\ref{#1}}
-\providecommand\docmarg[1]{\texttt{\char`\{#1\char`\}}}
-\providecommand\docopto[1]{\texttt{[}#1\texttt{]}}
-\providecommand\docopte[2]{#1\docmarg{#2}}
-\providecommand\docinlcode{\textit{inline code}}
-\providecommand\docInlcode{\textit{Inline code}}
-\providecommand\docbody{\textit{body}}
-\providecommand\docemptyarg{\textit{empty}}
-\providecommand\dockey[1]{\texttt{#1}}
-\providecommand\dockeyval[2]{\texttt{#1=#2}}
-\providecommand\docnovalue{\textit{no value}}
-\providecommand\docpreamb{\textit{preamble}}
-\providecommand\doctl{\textit{token list}}
-\providecommand\docTl{\textit{Token list}}
-\providecommand\dockvl{\textit{keyval list}}
-\providecommand\docKvl{\textit{Keyval list}}
-\providecommand\dockl{\textit{key list}}
-\providecommand\doclist[1]{Listing~\autoref{listing:#1}}
-\begin{document}
-\DocInput{\jobname.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \GetFileInfo{\jobname.sty}
-%
-%
-% \title{^^A
-% \pkg{oops}, an object oriented practical scribe's package.\thanks{^^A
-% This file describes version \fileversion, last revised \filedate.^^A
-% }^^A
-% }
-% \author{Erwann Rogard\thanks{firstname dot lastname AusTria gmail dot com}}
-%
-% \date{Released \filedate}
-%
-% \maketitle
-%
-% \begin{abstract}\pkg{oops}~is a package for \LaTeX~(hence ``scribe'') that organizes (typically mathematical) definitions
-% along two dimensions: functions and objects, hence ``OO''. Such definitions are made \textit{inline} thanks to a minimalist interface built upon \pkg{xparse}\cite{xparse}. To make a definition, use \cs{OopsNew}\docmarg{\pkgargobj}, where \pkgargobj~identifies an object, followed by input that alternates between `text' and instructions.
-% The latter create and expand definitions using rules that can be modified at the package level or themselves inline.
-% This framework is suitable for instance where \pkgargobj~ is either of \texttt{ModelA} and \texttt{ModelB},
-% and each requires its own definition of, say, a \textit{space}. In this case, they would be encoded respectively as \cs{Space}\docmarg{\texttt{ModelA}} and \cs{Space}\docmarg{\texttt{ModelB}}. However, this would be verbose if most functions applied to just one object, so the package provides a generic one that is set by default to \pkggenobjdefault. For example, \verb|\OopsNew{Math}[Let~]{Space=\Omega}[~denote the sample space]{}|, followed by \verb|$\Space$|, expand to:
-% ``\OopsNew{Math}[Let~]{Space=\Omega}[~denote the sample space]{}'' and ``$\Space$''.
-% Other features automate repetitive formatting tasks. Altogether, ``practical''.
-% \end{abstract}
-%
-% \tableofcontents
-%
-% \part{Usage}\label{part:usage}
-%
-% \addtocounter{section}{1}
-% \addcontentsline{toc}{section}{\protect\numberline{\thesection}Convention}
-% \section*{Convention}%\label{usage:conv}
-%
-% \begin{enumerate}[label=\alph*)]
-% \item By default, all commands are declared in the \docbody~of \cs{documentclass}.
-% \item Arguments expecting a \doctl\cite{tex.stack:104023}, \dockvl\cite[l3keys]{interface3}, a character, and \docinlcode, are denoted respectively
-% \meta{tl}, \meta{kvl}, \meta{char}, and \meta{code}.
-% \item \marg{arg} is either \texttt{m} or \texttt{g} options\cite{xparse}, and \docopto{\meta{arg}} and \docopte{\meta{char}}{\meta{arg}} are \texttt{o} and \texttt{e} options\cite{xparse}.
-% \item If we say that \meta{option} can be used to override \meta{default}, and \meta{option} is \docnovalue\cite{xparse}, we will treat it as though \meta{option}$=$\meta{default}.
-% \item We say ``set the key to'' as shorthand for ``set the value associated with the key to''
-% \item We call \cs{code}\marg{arg}, \meta{code} with \verb|#1| replaced by \marg{arg}
-% \end{enumerate}
-%
-% The template for the description of functions and arguments is, where applicable:
-% \begin{description}
-% \item[Use it to]
-% \item[Requirement]
-% \item[Side effect]
-% \item[Expands to]
-% \item[Default]
-% \item[Example]
-% \item[Other]
-% \end{description}Only the items that cannot be deduced from other information, are given. For instance, the requirement that \pkgargobj~be a \doctl~is ommited.
-%
-%
-% \addtocounter{section}{1}
-% \addcontentsline{toc}{section}{\protect\numberline{\thesection}Loading the package}
-%
-% \begin{function}{\usepackage}
-% \begin{syntax}
-% \cs{usepackage}\docopto{\pkgoptions}\docmarg{\pkg{oops}}
-% \end{syntax}
-% \begin{description}
-% \item[Use it to] Load the package
-% \item[Requirement]\begin{enumerate}
-% \item \file{oops.sty} is in the path of the \LaTeX~engine. See \autoref{part:other}, \autoref{other:support}.
-% \item Declared in the \docpreamb~of \cs{documentclass}
-% \end{enumerate}
-% \item[Side effect] That of \cs{OopsOptions}\docmarg{\pkgoptions}
-% \end{description}
-% \end{function}
-%
-% \addtocounter{section}{1}
-% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{OopsOptions}}
-% \begin{function}{\OopsOptions}
-% \begin{syntax}
-% \cs{OopsOptions}\docmarg{\pkgoptions}
-% \end{syntax}
-% \begin{description}
-% \item[Use it to] Set default options for \cs{OopsNew}
-% \item[Other] Also works in the \docpreamb
-% \end{description}
-% \end{function}
-%
-% \DescribeOption{\meta{kvl}}
-% \begin{description}
-% \item[Requirement] Keys listed below.
-% \end{description}
-%
-% \addtocounter{subsection}{1}
-% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\dockey{GenericObject}}
-% \DescribeOption{GenericObject}
-% \begin{description}
-% \item[Requirement] See \cs{OopsNew}, \pkgargobj
-% \item[Default] \verb|Math|
-% \end{description}
-%
-% \addtocounter{subsection}{1}
-% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\dockey{Inner}}
-% \DescribeOption{Inner}
-% \begin{description}
-% \item[Requirement] See \cs{OopsNew}, \pkgarginneri
-% \item[Default] \verb|{#1}|
-% \end{description}
-%
-% \addtocounter{subsection}{1}
-% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\dockey{Separators}}
-% \DescribeOption{Separators}
-% \begin{description}
-% \item[Requirement] See \cite[Section 8 of \pkg{l3seq}]{interface3}
-% \item[Default] \verb|{\text{~and~}{\text{,~}}{\text{,~and~}}|
-% \end{description}
-%
-% \addtocounter{subsection}{1}
-% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\dockey{Outer}}
-% \DescribeOption{Outer}
-% \begin{description}
-% \item[Requirement] See \cs{OopsNew}, \pkgargouter
-% \item[Default] \verb|\ensuremath{#1}|
-% \end{description}
-%
-% \addtocounter{section}{1}
-% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{OopsClear}}
-% \begin{function}{\OopsClear}
-% \begin{syntax}
-% \cs{OopsClear}\docmarg{\pkgargobj}
-% \end{syntax}
-% \end{function}
-%
-% \begin{description}
-% \item[Side effect] Clears \pkgargobj~of any \pkgdata
-% \end{description}
-%
-% \addtocounter{section}{1}
-% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{OopsNew}}
-% \setcounter{subsection}{0}
-% \begin{function}{\OopsNew}
-% \begin{syntax}
-% \cs{OopsNew}\docmarg{\pkgargobj}
-% \docopto{\pkgargexpi}
-% \docopte{i}{\pkgarginneri}
-% \docopte{s}{\pkgargsep}
-% \docopte{o}{\pkgargouter}
-% \docmarg{\pkgargdefi}
-% \docopte{i}{\pkgarginnerii}
-% \docmarg{\pkgargdefii}
-% \docopto{\pkgargexpii}
-% \end{syntax}
-% \begin{description}
-% \item[Requirement] Only \pkgargobj~and \pkgargdefi~are mandatory
-% \end{description}
-% \end{function}
-%
-% \addtocounter{subsection}{1}
-% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docmarg{\pkgargobj}}
-% \DescribeOption{\pkgargobj}
-%
-% \begin{description}
-% \item[Use it to] Identify an object
-% \item[Side effect] Registers \pkgargobj~ as a new object, if applicable
-% \item[Example] \pkggenobjdefault, \verb|ModelA|, \verb|ModelB|
-% \end{description}
-%
-% \addtocounter{subsection}{1}
-% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopto{\pkgargexpi}}
-% \DescribeOption{\pkgargexpi}
-%
-% \begin{description}
-% \item[Use it to] Bring about a definition
-% \item[Expands to] \pkgargexpi
-% \item[Example]\verb|Let~|
-% \end{description}
-%
-% \addtocounter{subsection}{1}
-% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopte{i}{\pkgarginneri}}
-% \DescribeOption{\pkgarginneri}
-%
-% \begin{description}
-% \item[Use it to] Override \dockey{Inner}.
-% \item[Example] \verb|\mathbb{#1}|
-% \end{description}
-%
-% \addtocounter{subsection}{1}
-% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopte{s}{\pkgargsep}}
-% \DescribeOption{\pkgargsep}
-%
-% \begin{description}
-% \item[Use it to] Override \dockey{Separators}
-% \item[Example] \verb|{~\&~}{,~}{~\&~}|
-% \end{description}
-%
-% \addtocounter{subsection}{1}
-% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopte{o}{\pkgargouter}}
-% \DescribeOption{\pkgargouter}
-%
-% \begin{description}
-% \item[Use it to] Override \dockey{Outer}
-% \item[Example] \verb|\text{#1}|
-% \end{description}
-%
-% \addtocounter{subsection}{1}
-% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docmarg{\pkgargdefi}}
-% \DescribeOption{\pkgargdefi}
-%
-% \begin{description}
-% \item[Side effect] If \pkgkey~is a new key, attaches to it \pkgdata=\cs{\pkgarginneri}\docmarg{\pkgvalue}
-% \item[Expands to] If \pkgargexpi~is \docnovalue, none, otherwise,
-% \begin{enumerate}
-% \item
-% For each \pkgkey, calls \cs{\pkgkey}\pkgargobj. Call it \meta{seq}.
-% \item
-% Concatenates \meta{seq} using \pkgargsep. Call it \meta{tmp}.
-% \item Expands \cs{\pkgargouter}\marg{tmp}
-% \end{enumerate}
-% \item[Example] \verb|Sample=\Omega|
-% \end{description}
-%
-% The remaining options taken together forward to:
-%
-% \cs{OopsNew}\docmarg{\pkgargobj}
-% \docopte{o}{\pkgarginnerii}
-% \docmarg{\pkgargdefii}
-% \docopto{\pkgargexpii}
-%
-% \addtocounter{subsection}{1}
-% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopte{i}{\pkgarginnerii}}
-% \DescribeOption{\pkgarginnerii}
-%
-% \addtocounter{subsection}{1}
-% \phantomsection\addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docmarg{\pkgargdefii}}
-% \DescribeOption{\pkgargdefii}
-%
-% \addtocounter{subsection}{1}
-% \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}\docopto{\pkgargexpii}}
-% \DescribeOption{\pkgargexpii}
-%
-% \addtocounter{section}{1}
-% \addcontentsline{toc}{section}{\protect\numberline{\thesection}\cs{\meta{Key}}}
-% \setcounter{subsection}{0}
-%
-% \begin{function}{\<Key>}
-% \begin{syntax}
-% \cs{\meta{Key}}\docopto{\pkgargobj}
-% \end{syntax}
-% \begin{description}
-% \item[Side effect] Expands to \pkgdata~associated with \pkgargobj~and \dockey{\meta{Key}}, if applicable.
-% \end{description}
-% \end{function}
-%
-% \clearpage
-% \part{Listings}\label{part:listing}
-%
-% \newtcblisting[auto counter]
-% {listing}[2][]{
-% noparskip,
-% breakable,
-% colback=white,
-% colframe=black,
-% opacitybacktitle=.8,%
-% fonttitle=\bfseries,
-% title=Listing~\thetcbcounter. #1,
-% arc=0pt,
-% outer arc=0pt,
-% boxrule=1pt,
-% #2
-% }
-%
-% \phantomsection\addcontentsline{toc}{section}{\doclist{options:i}.}
-% \begin{listing}[]
-% {label=listing:options:i}
-% \OopsOptions
-% {
-% Inner = {#1},
-% Outer = {#1}
-% }
-% \end{listing}
-%
-% \phantomsection\addcontentsline{toc}{section}{\doclist{foo:i}.}
-% \begin{listing}[]{label=listing:foo:i}
-% \OopsNew{Foo}{ Barr = { a }, Baz = { b } }{ Qux = { c } }
-% \textless(\Barr[Foo]), (\Baz[Foo]) \& (\Qux[Foo])\textgreater
-% \end{listing}
-%
-% \phantomsection\addcontentsline{toc}{section}{\doclist{foo:ii}.}
-% \begin{listing}[]{label=listing:foo:ii}
-% \OopsNew{Foo}[]i{(#1)}s{{~\&~}{,~}{~\&~}}o{\textless#1\textgreater}{ Barr = { a }, Baz = { b }, Qux = { c } }
-% \end{listing}
-%
-% \phantomsection\addcontentsline{toc}{section}{\doclist{foo:iii}.}
-% \begin{listing}[]{label=listing:foo:iii}
-% \OopsOptions
-% {
-% Inner = {(#1)},
-% Separators = { {~\&~}{~,~}{~\&~} },
-% Outer = {\textless#1\textgreater}
-% }
-% \OopsNew{Foo}[]{ Barr = { a }, Baz = { b }, Qux = { c } }
-% \end{listing}
-%
-% \phantomsection\addcontentsline{toc}{section}{\doclist{foo:iv}.}
-% \begin{listing}[]
-% {label=listing:foo:iv}
-% \OopsOptions
-% {
-% Inner,
-% Separators,
-% Outer
-% }
-% \end{listing}
-%
-% \phantomsection\addcontentsline{toc}{section}{\doclist{math:i}.}
-% \begin{listing}[]
-% {label=listing:math:i}
-% \OopsNew{Math}[We call~]{Elems={\omega_1, \dots, \omega_n}}
-% [~the elementary events, and ]{}{Space=\Omega}
-% [\begin{equation*}\Space=(\Elems)\end{equation*}~the sample space.]
-% {}
-% \end{listing}
-%
-%
-% \phantomsection\addcontentsline{toc}{section}{Listing~\autoref{listing:math:ii}.}
-% \begin{listing}[]
-% {label=listing:math:ii}
-% \OopsClear{Math}
-% \OopsNew{Math}[Let ]s{{,}{,}{,}}o{\ensuremath{\{#1\}}}
-% {Space=\Omega, SigmaField=\mathcal{F}, Measure=\mathcal{P}}
-% [~denote the probability space, where $\SigmaField\subset 2^{\Space}$.]
-% {}
-% \end{listing}
-% \phantomsection\addcontentsline{toc}{section}{Listing~\autoref{listing:mvt}.}
-% \begin{listing}[]{label=listing:mvt}
-% \newtheorem{theorem}{Theorem}
-% \OopsNew{Math}
-% i{\mathbb{#1}}{ N = { N } , R = { R } }
-% [\begin{theorem}[Mittelwertsatz f\"ur $n$ Variable]Es sei~]
-% {}
-% {
-% OffeneMenge={D},
-% Ci={C^{1}},
-% Strecke={[x_0,x]}
-%^^A %Strecke={\char`[x_0,x\char`]} % Also works
-%^^A %Strecke={\[x_0,x\]} % BUG
-% }
-% [$n\in\N$, $\OffeneMenge\subseteq\N^n$ eine offene Menge und $f\in \Ci(\OffeneMenge,\R)$.
-% Dann gibt es auf jeder Strecke $\Strecke\subset\OffeneMenge$ einen Punkt $\xi\in\Strecke$, ]
-% {}
-% {
-% yDifferenz={f(x)-f(x_0)},
-% xDifferenz={x-x_0},
-% Steigung={\frac{\yDifferenz}{\xDifferenz}}
-% }
-% [so dass gilt \begin{equation*}\Steigung = \operatorname{grad} f(\xi)^{\top}\end{equation*}
-% \end{theorem}]
-% {}
-% \end{listing}
-%
-% \StopEventually{^^A
-% \PrintChanges
-% \PrintIndex
-% }
-% \part{Other}\label{part:other}
-% \section{Acknowledgment}
-%
-% This work has benefited from Q\&A's from the \LaTeX community. For specifics, see here: \url{https://tex.stackexchange.com/users/112708/erwann?tab=questions}
-% \doclist{math:i} and \doclist{math:ii} are from \cite{shir95}. \doclist{mvt} is from \pkg{tcolbox}\cite[17.3]{tcolbox}.
-%
-% \begin{thebibliography}{1}
-% \bibitem{shir95} A.N. Shiryaev {\em Probability} Springer, 1995
-% \bibitem{interface3} The \LaTeX3 Project Team {\em The \LaTeX3 interfaces}
-% \url{http://ftp.math.purdue.edu/mirrors/ctan.org/macros/latex/contrib/l3kernel/interface3.pdf}
-% \bibitem{xparse} The \LaTeX3 Project Team {\em The \pkg{xparse} package}
-% \url{http://ftp.math.purdue.edu/mirrors/ctan.org/macros/latex/contrib/l3packages/xparse.pdf}
-% \bibitem{tcolbox} Thomas F. Sturm {\em The \pkg{tcolorbox} package}
-% \url{http://www.texdoc.net/texmf-dist/doc/latex/tcolorbox/tcolorbox.pdf}
-% \bibitem{tex.stack:104023} \url{https://tex.stackexchange.com/questions/104023/what-is-a-token#104025}
-% \end{thebibliography}
-%
-% \section{Bug}\label{other:bug}
-%
-% See \doclist{math:ii}. Low priority as there are workarounds.
-%
-% \section{Disclaimer}\label{other:discl}
-%
-% This package has not been tested beyond \autoref{part:listing}.
-%
-% Option type \texttt{G} is supported but not recommended by \pkg{xparse}\cite{xparse}, but it's really practical in this case.
-
-% \section{Support}\label{other:support}
-%
-% This package is available from \url{https://www.ctan.org/pkg/oops} (release) or \url{https://github.com/rogard/oops} (development) where you can report issues.
-%
-% \section{To do}\label{other:todo}
-%
-% \begin{enumerate}
-% \item Continue \autoref{part:listing} based on \cite[Section 17.3]{tcolbox}
-% \end{enumerate}
-%
-%^^A \section{Changes}
-%
-% \changes{v1.0}{2019/03/08}{Initial version}
-%
-% \clearpage
-% \part{Implementation}\label{part:impl}
-%
-% \iffalse
-%<*package>
-% \fi
-% \section{Back end}
-% \subsection{Aux}
-% \subsubsection{Msg}
-% \begin{macrocode}
-\NeedsTeXFormat{LaTeX2e}[2019/10/01]
-\ExplSyntaxOn
-\msg_new:nnn
-{Oops}
-{generic}
-{#1}
-% \end{macrocode}
-% \subsubsection{Variables}
-% \begin{macrocode}
-\seq_new:N \__erw_oops_seq
-% \end{macrocode}
-% \subsubsection{Options}
-% \begin{macrocode}
-\keys_define:nn { Oops }
-{
- GenericObject .tl_gset:N = \__erw_oops_object_default_tl,
- GenericObject .value_required:n = false,
- GenericObject .default:n = {Math},
- GenericObject .initial:n = {Math},
- Inner .code:n =
- {
- \cs_gset:Npn \__erw_oops_inner_default:n ##1{#1}
- },
- Inner .value_required:n = false,
- Inner .default:n = {#1},
- Inner .initial:n = {#1},
- Separators .tl_gset:N = \__erw_oops_separators_default_tl,
- Separators .value_required:n = false,
- Separators .default:n = {{ \text{~and~}}{\text{,~}}{\text{,~and~}}},
- Separators .initial:n = {{ \text{~and~}}{\text{,~}}{\text{,~and~}}},
- Outer .code:n =
- {
- \cs_gset:Npn \__erw_oops_outer_default:n ##1{#1}
- },
- Outer .value_required:n = false,
- Outer .default:n = {\ensuremath{#1}},
- Outer .initial:n = {\ensuremath{#1}}
-}
-% \end{macrocode}
-% \subsection{Prop}
-% \subsubsection{name}
-% \begin{macrocode}
-\cs_new:Npn \__erw_oops_name:n #1{__erw_oops_#1}
-% \end{macrocode}
-% \subsubsection{new}
-% \begin{macrocode}
-\cs_new_protected:Nn \__erw_oops_new:n
-{
- \prop_new:c{\__erw_oops_name:n { #1 }}
-}
-\cs_new_protected:Nn \__erw_oops_clear_new:n
-{
- \prop_clear_new:c{\__erw_oops_name:n { #1 }}
-}
-% \end{macrocode}
-% \subsubsection{put}
-% \begin{macrocode}
-\cs_new_protected:Nn \__erw_oops_put:nnn
-{
- \prop_put:cnn { \__erw_oops_name:n { #1 } } { #2 } { #3 }
-}
-\cs_new_protected:Nn \__erw_oops_putinner:nnn
-{
- \__erw_oops_put:nnn{#1}
- {#2}
- {\__erw_oops_inner:n{#3}}
-}
-% \end{macrocode}
-% \subsubsection{item}
-% \begin{macrocode}
-\cs_new:Nn \__erw_oops_item:nn
-{
- \prop_item:cn { \__erw_oops_name:n { #1 } } { #2 }
-}
-\cs_new:Npn \__erw_oops_item:nnn #1 #2 #3
-{
- \__erw_oops_item:nn{#1}{#2}
-}
-\cs_new:Nn \__erw_oops_itemcmd:Nn
-{
- \ProvideDocumentCommand{#1}
- {O{\__erw_oops_object_default_tl}}
- {
- \__erw_oops_item:nn {##1}{ #2 }
- }
-}
-\cs_generate_variant:Nn \__erw_oops_itemcmd:Nn {c}
-\cs_new:Npn \__erw_oops_itemcmd:nnn
-#1
-#2
-#3
-{
- \__erw_oops_itemcmd:cn{#2}{#2}
-}
-\cs_new:Npn \__erw_oops_itemto_seq:nnn #1 #2 #3
-{
- \seq_put_right:Nn
- \__erw_oops_seq
- {\__erw_oops_item:nn{#1}{#2}}
-}
-% \end{macrocode}
-% \subsubsection{conditional}
-% \begin{macrocode}
-\cs_new:Nn \__erw_oops_if_exist:nTF
-{
- \prop_if_exist:cTF{\__erw_oops_name:n { #1 }}{#2}{#3}
-}
-% \end{macrocode}
-% \subsubsection{parse}
-% \begin{macrocode}
-\cs_set:Npn \__erw_oops_parse:Nnn
-#1 % fun
-#2 % prop name
-#3 % clist
-{
-
- \tl_if_blank:nTF{#3}
- {\c_empty_tl}
- {
- \seq_set_split:Nnn \l_tmpa_seq {,}{#3}
- \cs_set:Npn \__erw_oops_parse:w ##1 = ##2 \q_stop
- {
- #1
- {#2}
- {\tl_trim_spaces:n{##1}} % key
- {\tl_trim_spaces:n{##2}} % value
- }
- \cs_set:Npn \__erw_oops_parse:n ##1
- {
- \__erw_oops_parse:w ##1 \q_stop
- }
- \seq_map_function:NN \l_tmpa_seq \__erw_oops_parse:n
- }
-}
-% \end{macrocode}
-% \section{Front end}
-% \subsection{\cs{OopsOptions}}
-% \begin{macrocode}
-\NewDocumentCommand{\OopsOptions}
-{m}
-{
- \keys_set:nn { Oops } {#1}
-}
-% \ProcessKeysPackageOptions{ Oops }
-% \end{macrocode}
-% \subsection{\cs{OopsClear}}
-% \begin{macrocode}
-\NewDocumentCommand{\OopsClear}
-{m}
-{
- \__erw_oops_clear_new:n{#1}
-}
-% \end{macrocode}
-% \subsection{\cs{OopsNew}}
-% \begin{macrocode}
-\NewDocumentCommand{\OopsNew}
-{
- m
- +o
- E{iso}
- {
- {\__erw_oops_inner_default:n{##1}}
- {\__erw_oops_separators_default_tl}
- {\__erw_oops_outer_default:n{##1}}
- }
- m
- E{i}
- {
- {\__erw_oops_inner_default:n{##1}}
- }
- g
- +o
-}
-{
- \__erw_oops_if_exist:nTF{#1}
- {\c_empty_tl}
- {\__erw_oops_new:n{#1}}
-
- \IfValueTF{#2}
- {#2}
- {\c_empty_tl}
- \cs_gset:Npn
-
- \__erw_oops_inner:n ##1
- {#3}
- \__erw_oops_parse:Nnn
- \__erw_oops_putinner:nnn
- {#1}
- {#6}
-
- \__erw_oops_parse:Nnn
- \__erw_oops_itemcmd:nnn
- {#1}
- {#6}
-
- \IfValueTF{#2}
- {
- \seq_clear:N \__erw_oops_seq
- \__erw_oops_parse:Nnn
- \__erw_oops_itemto_seq:nnn
- {#1}
- {#6}
- \cs_gset:Npn
- \__erw_oops_outer:n ##1
- {#5}
- \__erw_oops_outer:n
- {\exp_last_unbraced:NNo
- \seq_use:Nnnn
- \__erw_oops_seq
- {#4}
- }
- }
- {\c_empty_tl}
-
- \IfValueTF{#8}
- {
- \IfValueTF{#9}
- {
- \exp_not:n{\OopsNew{#1}i{#7}{#8}[#9]}
- }
- {
- \exp_not:n{\OopsNew{#1}i{#7}{#8}}
- }
- }
- {
- \IfValueTF{#9}
- {
- \exp_not:n{\OopsNew{#1}[#9]}
- }
- {\c_empty_tl}
- }
-}
-% \end{macrocode}
-% \begin{macrocode}
-\ExplSyntaxOff
-% \end{macrocode}
-%
-% \iffalse
-%</package>
-% \fi
-% \Finale
-\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/oops/oops.pdf b/macros/latex/contrib/oops/oops.pdf
deleted file mode 100644
index aeffddaf4d..0000000000
--- a/macros/latex/contrib/oops/oops.pdf
+++ /dev/null
Binary files differ