// generated with scripts/gen-unicode-script-data.py

#include "unicode.h"
#include "unicode-data.h"

size_t unicode_fill_from_utf8(std::string* utf8, std::vector<uint32_t>* dst_cpts, std::vector<std::string>* dst_scripts) {
    if (utf8 == nullptr) {
        return 0;
    }

static const std::vector<std::string> unicode_scripts = {
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "bopomofo",
    "common",
    "inherited",
    "greek",
    "common",
    "greek",
    "greek",
    "common",
    "greek",
    "greek",
    "common",
    "greek",
    "common",
    "greek",
    "greek",
    "greek",
    "greek",
    "coptic",
    "greek",
    "cyrillic",
    "inherited",
    "cyrillic",
    "armenian",
    "armenian",
    "armenian",
    "hebrew",
    "hebrew",
    "hebrew",
    "arabic",
    "common",
    "arabic",
    "common",
    "arabic",
    "common",
    "arabic",
    "common",
    "arabic",
    "common",
    "arabic",
    "inherited",
    "arabic",
    "inherited",
    "arabic",
    "common",
    "arabic",
    "syriac",
    "syriac",
    "syriac",
    "arabic",
    "thaana",
    "nko",
    "nko",
    "samaritan",
    "samaritan",
    "mandaic",
    "mandaic",
    "syriac",
    "arabic",
    "arabic",
    "common",
    "arabic",
    "devanagari",
    "inherited",
    "devanagari",
    "common",
    "devanagari",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "bengali",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gurmukhi",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "gujarati",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "oriya",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "tamil",
    "telugu",
    "telugu",
    "telugu",
    "telugu",
    "telugu",
    "telugu",
    "telugu",
    "telugu",
    "telugu",
    "telugu",
    "telugu",
    "telugu",
    "telugu",
    "kannada",
    "kannada",
    "kannada",
    "kannada",
    "kannada",
    "kannada",
    "kannada",
    "kannada",
    "kannada",
    "kannada",
    "kannada",
    "kannada",
    "kannada",
    "malayalam",
    "malayalam",
    "malayalam",
    "malayalam",
    "malayalam",
    "malayalam",
    "malayalam",
    "sinhala",
    "sinhala",
    "sinhala",
    "sinhala",
    "sinhala",
    "sinhala",
    "sinhala",
    "sinhala",
    "sinhala",
    "sinhala",
    "sinhala",
    "sinhala",
    "thai",
    "common",
    "thai",
    "lao",
    "lao",
    "lao",
    "lao",
    "lao",
    "lao",
    "lao",
    "lao",
    "lao",
    "lao",
    "lao",
    "tibetan",
    "tibetan",
    "tibetan",
    "tibetan",
    "tibetan",
    "tibetan",
    "common",
    "tibetan",
    "myanmar",
    "georgian",
    "georgian",
    "georgian",
    "georgian",
    "common",
    "georgian",
    "hangul",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "cherokee",
    "cherokee",
    "canadian_aboriginal",
    "ogham",
    "runic",
    "common",
    "runic",
    "tagalog",
    "tagalog",
    "hanunoo",
    "common",
    "buhid",
    "tagbanwa",
    "tagbanwa",
    "tagbanwa",
    "khmer",
    "khmer",
    "khmer",
    "mongolian",
    "common",
    "mongolian",
    "common",
    "mongolian",
    "mongolian",
    "mongolian",
    "canadian_aboriginal",
    "limbu",
    "limbu",
    "limbu",
    "limbu",
    "limbu",
    "tai_le",
    "tai_le",
    "new_tai_lue",
    "new_tai_lue",
    "new_tai_lue",
    "new_tai_lue",
    "khmer",
    "buginese",
    "buginese",
    "tai_tham",
    "tai_tham",
    "tai_tham",
    "tai_tham",
    "tai_tham",
    "inherited",
    "inherited",
    "balinese",
    "balinese",
    "sundanese",
    "batak",
    "batak",
    "lepcha",
    "lepcha",
    "lepcha",
    "ol_chiki",
    "cyrillic",
    "georgian",
    "georgian",
    "sundanese",
    "inherited",
    "common",
    "inherited",
    "common",
    "inherited",
    "common",
    "inherited",
    "common",
    "inherited",
    "common",
    "inherited",
    "common",
    "latin",
    "greek",
    "cyrillic",
    "latin",
    "greek",
    "latin",
    "greek",
    "latin",
    "cyrillic",
    "latin",
    "greek",
    "inherited",
    "latin",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "greek",
    "common",
    "inherited",
    "common",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "inherited",
    "common",
    "greek",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "common",
    "common",
    "common",
    "braille",
    "common",
    "common",
    "glagolitic",
    "latin",
    "coptic",
    "coptic",
    "georgian",
    "georgian",
    "georgian",
    "tifinagh",
    "tifinagh",
    "tifinagh",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "cyrillic",
    "common",
    "han",
    "han",
    "han",
    "common",
    "han",
    "common",
    "han",
    "common",
    "han",
    "inherited",
    "hangul",
    "common",
    "han",
    "common",
    "hiragana",
    "inherited",
    "common",
    "hiragana",
    "common",
    "katakana",
    "common",
    "katakana",
    "bopomofo",
    "hangul",
    "common",
    "bopomofo",
    "common",
    "common",
    "katakana",
    "hangul",
    "common",
    "hangul",
    "common",
    "katakana",
    "common",
    "katakana",
    "common",
    "han",
    "common",
    "han",
    "yi",
    "yi",
    "lisu",
    "vai",
    "cyrillic",
    "bamum",
    "common",
    "latin",
    "common",
    "latin",
    "latin",
    "syloti_nagri",
    "common",
    "phags_pa",
    "saurashtra",
    "saurashtra",
    "devanagari",
    "kayah_li",
    "common",
    "kayah_li",
    "rejang",
    "rejang",
    "hangul",
    "javanese",
    "common",
    "javanese",
    "javanese",
    "myanmar",
    "cham",
    "cham",
    "cham",
    "cham",
    "myanmar",
    "tai_viet",
    "tai_viet",
    "meetei_mayek",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "latin",
    "common",
    "latin",
    "greek",
    "latin",
    "common",
    "cherokee",
    "meetei_mayek",
    "meetei_mayek",
    "hangul",
    "hangul",
    "hangul",
    "han",
    "han",
    "latin",
    "armenian",
    "hebrew",
    "hebrew",
    "hebrew",
    "hebrew",
    "hebrew",
    "hebrew",
    "arabic",
    "common",
    "arabic",
    "arabic",
    "inherited",
    "common",
    "inherited",
    "cyrillic",
    "common",
    "common",
    "common",
    "arabic",
    "arabic",
    "common",
    "common",
    "latin",
    "common",
    "latin",
    "common",
    "katakana",
    "common",
    "katakana",
    "common",
    "hangul",
    "hangul",
    "hangul",
    "hangul",
    "hangul",
    "common",
    "common",
    "common",
    "linear_b",
    "linear_b",
    "linear_b",
    "linear_b",
    "linear_b",
    "linear_b",
    "linear_b",
    "common",
    "common",
    "common",
    "greek",
    "common",
    "greek",
    "common",
    "inherited",
    "lycian",
    "carian",
    "inherited",
    "common",
    "old_italic",
    "old_italic",
    "gothic",
    "old_permic",
    "ugaritic",
    "ugaritic",
    "old_persian",
    "old_persian",
    "deseret",
    "shavian",
    "osmanya",
    "osmanya",
    "osage",
    "osage",
    "elbasan",
    "caucasian_albanian",
    "caucasian_albanian",
    "vithkuqi",
    "vithkuqi",
    "vithkuqi",
    "vithkuqi",
    "vithkuqi",
    "vithkuqi",
    "vithkuqi",
    "vithkuqi",
    "todhri",
    "linear_a",
    "linear_a",
    "linear_a",
    "latin",
    "latin",
    "latin",
    "cypriot",
    "cypriot",
    "cypriot",
    "cypriot",
    "cypriot",
    "cypriot",
    "imperial_aramaic",
    "imperial_aramaic",
    "palmyrene",
    "nabataean",
    "nabataean",
    "hatran",
    "hatran",
    "hatran",
    "phoenician",
    "phoenician",
    "lydian",
    "lydian",
    "sidetic",
    "meroitic_hieroglyphs",
    "meroitic_cursive",
    "meroitic_cursive",
    "meroitic_cursive",
    "kharoshthi",
    "kharoshthi",
    "kharoshthi",
    "kharoshthi",
    "kharoshthi",
    "kharoshthi",
    "kharoshthi",
    "kharoshthi",
    "old_south_arabian",
    "old_north_arabian",
    "manichaean",
    "manichaean",
    "avestan",
    "avestan",
    "inscriptional_parthian",
    "inscriptional_parthian",
    "inscriptional_pahlavi",
    "inscriptional_pahlavi",
    "psalter_pahlavi",
    "psalter_pahlavi",
    "psalter_pahlavi",
    "old_turkic",
    "old_hungarian",
    "old_hungarian",
    "old_hungarian",
    "hanifi_rohingya",
    "hanifi_rohingya",
    "garay",
    "garay",
    "garay",
    "arabic",
    "yezidi",
    "yezidi",
    "yezidi",
    "arabic",
    "arabic",
    "arabic",
    "old_sogdian",
    "sogdian",
    "old_uyghur",
    "chorasmian",
    "elymaic",
    "brahmi",
    "brahmi",
    "brahmi",
    "kaithi",
    "kaithi",
    "sora_sompeng",
    "sora_sompeng",
    "chakma",
    "chakma",
    "mahajani",
    "sharada",
    "sinhala",
    "khojki",
    "khojki",
    "multani",
    "multani",
    "multani",
    "multani",
    "multani",
    "khudawadi",
    "khudawadi",
    "grantha",
    "grantha",
    "grantha",
    "grantha",
    "grantha",
    "grantha",
    "grantha",
    "inherited",
    "grantha",
    "grantha",
    "grantha",
    "grantha",
    "grantha",
    "grantha",
    "grantha",
    "grantha",
    "tulu_tigalari",
    "tulu_tigalari",
    "tulu_tigalari",
    "tulu_tigalari",
    "tulu_tigalari",
    "tulu_tigalari",
    "tulu_tigalari",
    "tulu_tigalari",
    "tulu_tigalari",
    "tulu_tigalari",
    "tulu_tigalari",
    "newa",
    "newa",
    "tirhuta",
    "tirhuta",
    "siddham",
    "siddham",
    "modi",
    "modi",
    "mongolian",
    "takri",
    "takri",
    "myanmar",
    "ahom",
    "ahom",
    "ahom",
    "dogra",
    "warang_citi",
    "warang_citi",
    "dives_akuru",
    "dives_akuru",
    "dives_akuru",
    "dives_akuru",
    "dives_akuru",
    "dives_akuru",
    "dives_akuru",
    "dives_akuru",
    "nandinagari",
    "nandinagari",
    "nandinagari",
    "zanabazar_square",
    "soyombo",
    "canadian_aboriginal",
    "pau_cin_hau",
    "devanagari",
    "sharada",
    "sunuwar",
    "sunuwar",
    "bhaiksuki",
    "bhaiksuki",
    "bhaiksuki",
    "bhaiksuki",
    "marchen",
    "marchen",
    "marchen",
    "masaram_gondi",
    "masaram_gondi",
    "masaram_gondi",
    "masaram_gondi",
    "masaram_gondi",
    "masaram_gondi",
    "masaram_gondi",
    "gunjala_gondi",
    "gunjala_gondi",
    "gunjala_gondi",
    "gunjala_gondi",
    "gunjala_gondi",
    "gunjala_gondi",
    "tolong_siki",
    "tolong_siki",
    "makasar",
    "kawi",
    "kawi",
    "kawi",
    "lisu",
    "tamil",
    "tamil",
    "cuneiform",
    "cuneiform",
    "cuneiform",
    "cuneiform",
    "cypro_minoan",
    "egyptian_hieroglyphs",
    "egyptian_hieroglyphs",
    "anatolian_hieroglyphs",
    "gurung_khema",
    "bamum",
    "mro",
    "mro",
    "mro",
    "tangsa",
    "tangsa",
    "bassa_vah",
    "bassa_vah",
    "pahawh_hmong",
    "pahawh_hmong",
    "pahawh_hmong",
    "pahawh_hmong",
    "pahawh_hmong",
    "kirat_rai",
    "medefaidrin",
    "beria_erfe",
    "beria_erfe",
    "miao",
    "miao",
    "miao",
    "tangut",
    "nushu",
    "han",
    "khitan_small_script",
    "han",
    "tangut",
    "khitan_small_script",
    "khitan_small_script",
    "tangut",
    "tangut",
    "katakana",
    "katakana",
    "katakana",
    "katakana",
    "hiragana",
    "katakana",
    "hiragana",
    "hiragana",
    "katakana",
    "katakana",
    "nushu",
    "duployan",
    "duployan",
    "duployan",
    "duployan",
    "duployan",
    "common",
    "common",
    "common",
    "common",
    "common",
    "inherited",
    "inherited",
    "common",
    "common",
    "common",
    "common",
    "inherited",
    "common",
    "inherited",
    "common",
    "inherited",
    "common",
    "inherited",
    "common",
    "greek",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "signwriting",
    "signwriting",
    "signwriting",
    "latin",
    "latin",
    "glagolitic",
    "glagolitic",
    "glagolitic",
    "glagolitic",
    "glagolitic",
    "cyrillic",
    "cyrillic",
    "nyiakeng_puachue_hmong",
    "nyiakeng_puachue_hmong",
    "nyiakeng_puachue_hmong",
    "nyiakeng_puachue_hmong",
    "toto",
    "wancho",
    "wancho",
    "nag_mundari",
    "ol_onal",
    "ol_onal",
    "tai_yo",
    "tai_yo",
    "tai_yo",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "ethiopic",
    "mende_kikakui",
    "mende_kikakui",
    "adlam",
    "adlam",
    "adlam",
    "common",
    "common",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "arabic",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "hiragana",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "common",
    "han",
    "han",
    "han",
    "han",
    "han",
    "han",
    "han",
    "han",
    "common",
    "common",
    "inherited",
};
static const std::vector<uint32_t> unicode_script_lasts = {
    0x000040,
    0x00005A,
    0x000060,
    0x00007A,
    0x0000A9,
    0x0000AA,
    0x0000B9,
    0x0000BA,
    0x0000BF,
    0x0000D6,
    0x0000D7,
    0x0000F6,
    0x0000F7,
    0x0002B8,
    0x0002DF,
    0x0002E4,
    0x0002E9,
    0x0002EB,
    0x0002FF,
    0x00036F,
    0x000373,
    0x000374,
    0x000377,
    0x00037D,
    0x00037E,
    0x00037F,
    0x000384,
    0x000385,
    0x000386,
    0x000387,
    0x00038A,
    0x00038C,
    0x0003A1,
    0x0003E1,
    0x0003EF,
    0x0003FF,
    0x000484,
    0x000486,
    0x00052F,
    0x000556,
    0x00058A,
    0x00058F,
    0x0005C7,
    0x0005EA,
    0x0005F4,
    0x000604,
    0x000605,
    0x00060B,
    0x00060C,
    0x00061A,
    0x00061B,
    0x00061E,
    0x00061F,
    0x00063F,
    0x000640,
    0x00064A,
    0x000655,
    0x00066F,
    0x000670,
    0x0006DC,
    0x0006DD,
    0x0006FF,
    0x00070D,
    0x00074A,
    0x00074F,
    0x00077F,
    0x0007B1,
    0x0007FA,
    0x0007FF,
    0x00082D,
    0x00083E,
    0x00085B,
    0x00085E,
    0x00086A,
    0x000891,
    0x0008E1,
    0x0008E2,
    0x0008FF,
    0x000950,
    0x000954,
    0x000963,
    0x000965,
    0x00097F,
    0x000983,
    0x00098C,
    0x000990,
    0x0009A8,
    0x0009B0,
    0x0009B2,
    0x0009B9,
    0x0009C4,
    0x0009C8,
    0x0009CE,
    0x0009D7,
    0x0009DD,
    0x0009E3,
    0x0009FE,
    0x000A03,
    0x000A0A,
    0x000A10,
    0x000A28,
    0x000A30,
    0x000A33,
    0x000A36,
    0x000A39,
    0x000A3C,
    0x000A42,
    0x000A48,
    0x000A4D,
    0x000A51,
    0x000A5C,
    0x000A5E,
    0x000A76,
    0x000A83,
    0x000A8D,
    0x000A91,
    0x000AA8,
    0x000AB0,
    0x000AB3,
    0x000AB9,
    0x000AC5,
    0x000AC9,
    0x000ACD,
    0x000AD0,
    0x000AE3,
    0x000AF1,
    0x000AFF,
    0x000B03,
    0x000B0C,
    0x000B10,
    0x000B28,
    0x000B30,
    0x000B33,
    0x000B39,
    0x000B44,
    0x000B48,
    0x000B4D,
    0x000B57,
    0x000B5D,
    0x000B63,
    0x000B77,
    0x000B83,
    0x000B8A,
    0x000B90,
    0x000B95,
    0x000B9A,
    0x000B9C,
    0x000B9F,
    0x000BA4,
    0x000BAA,
    0x000BB9,
    0x000BC2,
    0x000BC8,
    0x000BCD,
    0x000BD0,
    0x000BD7,
    0x000BFA,
    0x000C0C,
    0x000C10,
    0x000C28,
    0x000C39,
    0x000C44,
    0x000C48,
    0x000C4D,
    0x000C56,
    0x000C5A,
    0x000C5D,
    0x000C63,
    0x000C6F,
    0x000C7F,
    0x000C8C,
    0x000C90,
    0x000CA8,
    0x000CB3,
    0x000CB9,
    0x000CC4,
    0x000CC8,
    0x000CCD,
    0x000CD6,
    0x000CDE,
    0x000CE3,
    0x000CEF,
    0x000CF3,
    0x000D0C,
    0x000D10,
    0x000D44,
    0x000D48,
    0x000D4F,
    0x000D63,
    0x000D7F,
    0x000D83,
    0x000D96,
    0x000DB1,
    0x000DBB,
    0x000DBD,
    0x000DC6,
    0x000DCA,
    0x000DD4,
    0x000DD6,
    0x000DDF,
    0x000DEF,
    0x000DF4,
    0x000E3A,
    0x000E3F,
    0x000E5B,
    0x000E82,
    0x000E84,
    0x000E8A,
    0x000EA3,
    0x000EA5,
    0x000EBD,
    0x000EC4,
    0x000EC6,
    0x000ECE,
    0x000ED9,
    0x000EDF,
    0x000F47,
    0x000F6C,
    0x000F97,
    0x000FBC,
    0x000FCC,
    0x000FD4,
    0x000FD8,
    0x000FDA,
    0x00109F,
    0x0010C5,
    0x0010C7,
    0x0010CD,
    0x0010FA,
    0x0010FB,
    0x0010FF,
    0x0011FF,
    0x001248,
    0x00124D,
    0x001256,
    0x001258,
    0x00125D,
    0x001288,
    0x00128D,
    0x0012B0,
    0x0012B5,
    0x0012BE,
    0x0012C0,
    0x0012C5,
    0x0012D6,
    0x001310,
    0x001315,
    0x00135A,
    0x00137C,
    0x001399,
    0x0013F5,
    0x0013FD,
    0x00167F,
    0x00169C,
    0x0016EA,
    0x0016ED,
    0x0016F8,
    0x001715,
    0x00171F,
    0x001734,
    0x001736,
    0x001753,
    0x00176C,
    0x001770,
    0x001773,
    0x0017DD,
    0x0017E9,
    0x0017F9,
    0x001801,
    0x001803,
    0x001804,
    0x001805,
    0x001819,
    0x001878,
    0x0018AA,
    0x0018F5,
    0x00191E,
    0x00192B,
    0x00193B,
    0x001940,
    0x00194F,
    0x00196D,
    0x001974,
    0x0019AB,
    0x0019C9,
    0x0019DA,
    0x0019DF,
    0x0019FF,
    0x001A1B,
    0x001A1F,
    0x001A5E,
    0x001A7C,
    0x001A89,
    0x001A99,
    0x001AAD,
    0x001ADD,
    0x001AEB,
    0x001B4C,
    0x001B7F,
    0x001BBF,
    0x001BF3,
    0x001BFF,
    0x001C37,
    0x001C49,
    0x001C4F,
    0x001C7F,
    0x001C8A,
    0x001CBA,
    0x001CBF,
    0x001CC7,
    0x001CD2,
    0x001CD3,
    0x001CE0,
    0x001CE1,
    0x001CE8,
    0x001CEC,
    0x001CED,
    0x001CF3,
    0x001CF4,
    0x001CF7,
    0x001CF9,
    0x001CFA,
    0x001D25,
    0x001D2A,
    0x001D2B,
    0x001D5C,
    0x001D61,
    0x001D65,
    0x001D6A,
    0x001D77,
    0x001D78,
    0x001DBE,
    0x001DBF,
    0x001DFF,
    0x001EFF,
    0x001F15,
    0x001F1D,
    0x001F45,
    0x001F4D,
    0x001F57,
    0x001F59,
    0x001F5B,
    0x001F5D,
    0x001F7D,
    0x001FB4,
    0x001FC4,
    0x001FD3,
    0x001FDB,
    0x001FEF,
    0x001FF4,
    0x001FFE,
    0x00200B,
    0x00200D,
    0x002064,
    0x002070,
    0x002071,
    0x00207E,
    0x00207F,
    0x00208E,
    0x00209C,
    0x0020C1,
    0x0020F0,
    0x002125,
    0x002126,
    0x002129,
    0x00212B,
    0x002131,
    0x002132,
    0x00214D,
    0x00214E,
    0x00215F,
    0x002188,
    0x00218B,
    0x002429,
    0x00244A,
    0x0027FF,
    0x0028FF,
    0x002B73,
    0x002BFF,
    0x002C5F,
    0x002C7F,
    0x002CF3,
    0x002CFF,
    0x002D25,
    0x002D27,
    0x002D2D,
    0x002D67,
    0x002D70,
    0x002D7F,
    0x002D96,
    0x002DA6,
    0x002DAE,
    0x002DB6,
    0x002DBE,
    0x002DC6,
    0x002DCE,
    0x002DD6,
    0x002DDE,
    0x002DFF,
    0x002E5D,
    0x002E99,
    0x002EF3,
    0x002FD5,
    0x003004,
    0x003005,
    0x003006,
    0x003007,
    0x003020,
    0x003029,
    0x00302D,
    0x00302F,
    0x003037,
    0x00303B,
    0x00303F,
    0x003096,
    0x00309A,
    0x00309C,
    0x00309F,
    0x0030A0,
    0x0030FA,
    0x0030FC,
    0x0030FF,
    0x00312F,
    0x00318E,
    0x00319F,
    0x0031BF,
    0x0031E5,
    0x0031EF,
    0x0031FF,
    0x00321E,
    0x00325F,
    0x00327E,
    0x0032CF,
    0x0032FE,
    0x0032FF,
    0x003357,
    0x0033FF,
    0x004DBF,
    0x004DFF,
    0x009FFF,
    0x00A48C,
    0x00A4C6,
    0x00A4FF,
    0x00A62B,
    0x00A69F,
    0x00A6F7,
    0x00A721,
    0x00A787,
    0x00A78A,
    0x00A7DC,
    0x00A7FF,
    0x00A82C,
    0x00A839,
    0x00A877,
    0x00A8C5,
    0x00A8D9,
    0x00A8FF,
    0x00A92D,
    0x00A92E,
    0x00A92F,
    0x00A953,
    0x00A95F,
    0x00A97C,
    0x00A9CD,
    0x00A9CF,
    0x00A9D9,
    0x00A9DF,
    0x00A9FE,
    0x00AA36,
    0x00AA4D,
    0x00AA59,
    0x00AA5F,
    0x00AA7F,
    0x00AAC2,
    0x00AADF,
    0x00AAF6,
    0x00AB06,
    0x00AB0E,
    0x00AB16,
    0x00AB26,
    0x00AB2E,
    0x00AB5A,
    0x00AB5B,
    0x00AB64,
    0x00AB65,
    0x00AB69,
    0x00AB6B,
    0x00ABBF,
    0x00ABED,
    0x00ABF9,
    0x00D7A3,
    0x00D7C6,
    0x00D7FB,
    0x00FA6D,
    0x00FAD9,
    0x00FB06,
    0x00FB17,
    0x00FB36,
    0x00FB3C,
    0x00FB3E,
    0x00FB41,
    0x00FB44,
    0x00FB4F,
    0x00FD3D,
    0x00FD3F,
    0x00FDCF,
    0x00FDFF,
    0x00FE0F,
    0x00FE19,
    0x00FE2D,
    0x00FE2F,
    0x00FE52,
    0x00FE66,
    0x00FE6B,
    0x00FE74,
    0x00FEFC,
    0x00FEFF,
    0x00FF20,
    0x00FF3A,
    0x00FF40,
    0x00FF5A,
    0x00FF65,
    0x00FF6F,
    0x00FF70,
    0x00FF9D,
    0x00FF9F,
    0x00FFBE,
    0x00FFC7,
    0x00FFCF,
    0x00FFD7,
    0x00FFDC,
    0x00FFE6,
    0x00FFEE,
    0x00FFFD,
    0x01000B,
    0x010026,
    0x01003A,
    0x01003D,
    0x01004D,
    0x01005D,
    0x0100FA,
    0x010102,
    0x010133,
    0x01013F,
    0x01018E,
    0x01019C,
    0x0101A0,
    0x0101FC,
    0x0101FD,
    0x01029C,
    0x0102D0,
    0x0102E0,
    0x0102FB,
    0x010323,
    0x01032F,
    0x01034A,
    0x01037A,
    0x01039D,
    0x01039F,
    0x0103C3,
    0x0103D5,
    0x01044F,
    0x01047F,
    0x01049D,
    0x0104A9,
    0x0104D3,
    0x0104FB,
    0x010527,
    0x010563,
    0x01056F,
    0x01057A,
    0x01058A,
    0x010592,
    0x010595,
    0x0105A1,
    0x0105B1,
    0x0105B9,
    0x0105BC,
    0x0105F3,
    0x010736,
    0x010755,
    0x010767,
    0x010785,
    0x0107B0,
    0x0107BA,
    0x010805,
    0x010808,
    0x010835,
    0x010838,
    0x01083C,
    0x01083F,
    0x010855,
    0x01085F,
    0x01087F,
    0x01089E,
    0x0108AF,
    0x0108F2,
    0x0108F5,
    0x0108FF,
    0x01091B,
    0x01091F,
    0x010939,
    0x01093F,
    0x010959,
    0x01099F,
    0x0109B7,
    0x0109CF,
    0x0109FF,
    0x010A03,
    0x010A06,
    0x010A13,
    0x010A17,
    0x010A35,
    0x010A3A,
    0x010A48,
    0x010A58,
    0x010A7F,
    0x010A9F,
    0x010AE6,
    0x010AF6,
    0x010B35,
    0x010B3F,
    0x010B55,
    0x010B5F,
    0x010B72,
    0x010B7F,
    0x010B91,
    0x010B9C,
    0x010BAF,
    0x010C48,
    0x010CB2,
    0x010CF2,
    0x010CFF,
    0x010D27,
    0x010D39,
    0x010D65,
    0x010D85,
    0x010D8F,
    0x010E7E,
    0x010EA9,
    0x010EAD,
    0x010EB1,
    0x010EC7,
    0x010ED8,
    0x010EFF,
    0x010F27,
    0x010F59,
    0x010F89,
    0x010FCB,
    0x010FF6,
    0x01104D,
    0x011075,
    0x01107F,
    0x0110C2,
    0x0110CD,
    0x0110E8,
    0x0110F9,
    0x011134,
    0x011147,
    0x011176,
    0x0111DF,
    0x0111F4,
    0x011211,
    0x011241,
    0x011286,
    0x011288,
    0x01128D,
    0x01129D,
    0x0112A9,
    0x0112EA,
    0x0112F9,
    0x011303,
    0x01130C,
    0x011310,
    0x011328,
    0x011330,
    0x011333,
    0x011339,
    0x01133B,
    0x011344,
    0x011348,
    0x01134D,
    0x011350,
    0x011357,
    0x011363,
    0x01136C,
    0x011374,
    0x011389,
    0x01138B,
    0x01138E,
    0x0113B5,
    0x0113C0,
    0x0113C2,
    0x0113C5,
    0x0113CA,
    0x0113D5,
    0x0113D8,
    0x0113E2,
    0x01145B,
    0x011461,
    0x0114C7,
    0x0114D9,
    0x0115B5,
    0x0115DD,
    0x011644,
    0x011659,
    0x01166C,
    0x0116B9,
    0x0116C9,
    0x0116E3,
    0x01171A,
    0x01172B,
    0x011746,
    0x01183B,
    0x0118F2,
    0x0118FF,
    0x011906,
    0x011909,
    0x011913,
    0x011916,
    0x011935,
    0x011938,
    0x011946,
    0x011959,
    0x0119A7,
    0x0119D7,
    0x0119E4,
    0x011A47,
    0x011AA2,
    0x011ABF,
    0x011AF8,
    0x011B09,
    0x011B67,
    0x011BE1,
    0x011BF9,
    0x011C08,
    0x011C36,
    0x011C45,
    0x011C6C,
    0x011C8F,
    0x011CA7,
    0x011CB6,
    0x011D06,
    0x011D09,
    0x011D36,
    0x011D3A,
    0x011D3D,
    0x011D47,
    0x011D59,
    0x011D65,
    0x011D68,
    0x011D8E,
    0x011D91,
    0x011D98,
    0x011DA9,
    0x011DDB,
    0x011DE9,
    0x011EF8,
    0x011F10,
    0x011F3A,
    0x011F5A,
    0x011FB0,
    0x011FF1,
    0x011FFF,
    0x012399,
    0x01246E,
    0x012474,
    0x012543,
    0x012FF2,
    0x013455,
    0x0143FA,
    0x014646,
    0x016139,
    0x016A38,
    0x016A5E,
    0x016A69,
    0x016A6F,
    0x016ABE,
    0x016AC9,
    0x016AED,
    0x016AF5,
    0x016B45,
    0x016B59,
    0x016B61,
    0x016B77,
    0x016B8F,
    0x016D79,
    0x016E9A,
    0x016EB8,
    0x016ED3,
    0x016F4A,
    0x016F87,
    0x016F9F,
    0x016FE0,
    0x016FE1,
    0x016FE3,
    0x016FE4,
    0x016FF6,
    0x018AFF,
    0x018CD5,
    0x018CFF,
    0x018D1E,
    0x018DF2,
    0x01AFF3,
    0x01AFFB,
    0x01AFFE,
    0x01B000,
    0x01B11F,
    0x01B122,
    0x01B132,
    0x01B152,
    0x01B155,
    0x01B167,
    0x01B2FB,
    0x01BC6A,
    0x01BC7C,
    0x01BC88,
    0x01BC99,
    0x01BC9F,
    0x01BCA3,
    0x01CCFC,
    0x01CEB3,
    0x01CED0,
    0x01CEF0,
    0x01CF2D,
    0x01CF46,
    0x01CFC3,
    0x01D0F5,
    0x01D126,
    0x01D166,
    0x01D169,
    0x01D17A,
    0x01D182,
    0x01D184,
    0x01D18B,
    0x01D1A9,
    0x01D1AD,
    0x01D1EA,
    0x01D245,
    0x01D2D3,
    0x01D2F3,
    0x01D356,
    0x01D378,
    0x01D454,
    0x01D49C,
    0x01D49F,
    0x01D4A2,
    0x01D4A6,
    0x01D4AC,
    0x01D4B9,
    0x01D4BB,
    0x01D4C3,
    0x01D505,
    0x01D50A,
    0x01D514,
    0x01D51C,
    0x01D539,
    0x01D53E,
    0x01D544,
    0x01D546,
    0x01D550,
    0x01D6A5,
    0x01D7CB,
    0x01D7FF,
    0x01DA8B,
    0x01DA9F,
    0x01DAAF,
    0x01DF1E,
    0x01DF2A,
    0x01E006,
    0x01E018,
    0x01E021,
    0x01E024,
    0x01E02A,
    0x01E06D,
    0x01E08F,
    0x01E12C,
    0x01E13D,
    0x01E149,
    0x01E14F,
    0x01E2AE,
    0x01E2F9,
    0x01E2FF,
    0x01E4F9,
    0x01E5FA,
    0x01E5FF,
    0x01E6DE,
    0x01E6F5,
    0x01E6FF,
    0x01E7E6,
    0x01E7EB,
    0x01E7EE,
    0x01E7FE,
    0x01E8C4,
    0x01E8D6,
    0x01E94B,
    0x01E959,
    0x01E95F,
    0x01ECB4,
    0x01ED3D,
    0x01EE03,
    0x01EE1F,
    0x01EE22,
    0x01EE24,
    0x01EE27,
    0x01EE32,
    0x01EE37,
    0x01EE39,
    0x01EE3B,
    0x01EE42,
    0x01EE47,
    0x01EE49,
    0x01EE4B,
    0x01EE4F,
    0x01EE52,
    0x01EE54,
    0x01EE57,
    0x01EE59,
    0x01EE5B,
    0x01EE5D,
    0x01EE5F,
    0x01EE62,
    0x01EE64,
    0x01EE6A,
    0x01EE72,
    0x01EE77,
    0x01EE7C,
    0x01EE7E,
    0x01EE89,
    0x01EE9B,
    0x01EEA3,
    0x01EEA9,
    0x01EEBB,
    0x01EEF1,
    0x01F02B,
    0x01F093,
    0x01F0AE,
    0x01F0BF,
    0x01F0CF,
    0x01F0F5,
    0x01F1AD,
    0x01F1FF,
    0x01F200,
    0x01F202,
    0x01F23B,
    0x01F248,
    0x01F251,
    0x01F265,
    0x01F6D8,
    0x01F6EC,
    0x01F6FC,
    0x01F7D9,
    0x01F7EB,
    0x01F7F0,
    0x01F80B,
    0x01F847,
    0x01F859,
    0x01F887,
    0x01F8AD,
    0x01F8BB,
    0x01F8C1,
    0x01F8D8,
    0x01FA57,
    0x01FA6D,
    0x01FA7C,
    0x01FA8A,
    0x01FAC6,
    0x01FAC8,
    0x01FADC,
    0x01FAEA,
    0x01FAF8,
    0x01FB92,
    0x01FBFA,
    0x02A6DF,
    0x02B81D,
    0x02CEAD,
    0x02EBE0,
    0x02EE5D,
    0x02FA1D,
    0x03134A,
    0x033479,
    0x0E0001,
    0x0E007F,
    0x0E01EF,
};
    const auto cpts = unicode_cpts_from_utf8(*utf8);
    const size_t n_cpt = cpts.size();

    std::vector<std::string> scripts;
    scripts.reserve(n_cpt);

    for (const auto& cpt: cpts) {
        const auto it = std::lower_bound(unicode_script_lasts.begin(), unicode_script_lasts.end(), cpt);
        if (it != unicode_script_lasts.end()) {
            scripts.push_back(unicode_scripts[std::distance(unicode_script_lasts.begin(), it)]);
        }
    }

    if (dst_cpts != nullptr) {
        *dst_cpts = cpts;
    }
    if (dst_scripts != nullptr) {
        *dst_scripts = scripts;
    }

    return n_cpt;
}

