//
// This file was auto-generated using the following command:
//
// jai generate.jai
//



kbts_s32 :: s32;

KB_TEXT_SHAPE_POINTER_SIZE :: 8;

KBTS_MAX_SIMULTANEOUS_FEATURES :: 16;

KBTS_BREAK_REORDER_BUFFER_FLUSH_THRESHOLD :: 4;
KBTS_BREAK_REORDER_BUFFER_SIZE :: KBTS_BREAK_REORDER_BUFFER_FLUSH_THRESHOLD * 2;

kbts_joining_feature :: u8;
kbts_joining_feature_enum :: enum s32 {
    NONE  :: 0;

    ISOL  :: 1;
    FINA  :: 2;
    FIN2  :: 3;
    FIN3  :: 4;
    MEDI  :: 5;
    MED2  :: 6;
    INIT  :: 7;

    COUNT :: 8;

    KBTS_JOINING_FEATURE_NONE  :: NONE;

    KBTS_JOINING_FEATURE_ISOL  :: ISOL;
    KBTS_JOINING_FEATURE_FINA  :: FINA;
    KBTS_JOINING_FEATURE_FIN2  :: FIN2;
    KBTS_JOINING_FEATURE_FIN3  :: FIN3;
    KBTS_JOINING_FEATURE_MEDI  :: MEDI;
    KBTS_JOINING_FEATURE_MED2  :: MED2;
    KBTS_JOINING_FEATURE_INIT  :: INIT;

    KBTS_JOINING_FEATURE_COUNT :: COUNT;
}

kbts_reph_position :: u8;
kbts_reph_position_enum :: enum s32 {
    AFTER_POST       :: 0;
    BEFORE_POST      :: 1;
    BEFORE_SUBJOINED :: 2;
    AFTER_SUBJOINED  :: 3;
    AFTER_MAIN       :: 4;

    COUNT            :: 5;

    KBTS_REPH_POSITION_AFTER_POST       :: AFTER_POST;
    KBTS_REPH_POSITION_BEFORE_POST      :: BEFORE_POST;
    KBTS_REPH_POSITION_BEFORE_SUBJOINED :: BEFORE_SUBJOINED;
    KBTS_REPH_POSITION_AFTER_SUBJOINED  :: AFTER_SUBJOINED;
    KBTS_REPH_POSITION_AFTER_MAIN       :: AFTER_MAIN;

    KBTS_REPH_POSITION_COUNT            :: COUNT;
}

kbts_reph_encoding :: u8;
kbts_reph_encoding_enum :: enum s32 {
    IMPLICIT      :: 0;
    EXPLICIT      :: 1;
    LOGICAL_REPHA :: 2;
    VISUAL_REPHA  :: 3;

    COUNT         :: 4;

    KBTS_REPH_ENCODING_IMPLICIT      :: IMPLICIT;
    KBTS_REPH_ENCODING_EXPLICIT      :: EXPLICIT;
    KBTS_REPH_ENCODING_LOGICAL_REPHA :: LOGICAL_REPHA;
    KBTS_REPH_ENCODING_VISUAL_REPHA  :: VISUAL_REPHA;

    KBTS_REPH_ENCODING_COUNT         :: COUNT;
}

kbts_syllabic_position :: u8;
kbts_syllabic_position_enum :: enum s32 {
    NONE                :: 0;

    RA_TO_BECOME_REPH   :: 1;

    PREBASE_MATRA       :: 2;
    PREBASE_CONSONANT   :: 3;

    SYLLABLE_BASE       :: 4;
    AFTER_MAIN          :: 5;

    ABOVEBASE_CONSONANT :: 6;

    BEFORE_SUBJOINED    :: 7;
    BELOWBASE_CONSONANT :: 8;
    AFTER_SUBJOINED     :: 9;

    BEFORE_POST         :: 10;
    POSTBASE_CONSONANT  :: 11;
    AFTER_POST          :: 12;

    FINAL_CONSONANT     :: 13;
    SMVD                :: 14;

    COUNT               :: 15;

    KBTS_SYLLABIC_POSITION_NONE                :: NONE;

    KBTS_SYLLABIC_POSITION_RA_TO_BECOME_REPH   :: RA_TO_BECOME_REPH;

    KBTS_SYLLABIC_POSITION_PREBASE_MATRA       :: PREBASE_MATRA;
    KBTS_SYLLABIC_POSITION_PREBASE_CONSONANT   :: PREBASE_CONSONANT;

    KBTS_SYLLABIC_POSITION_SYLLABLE_BASE       :: SYLLABLE_BASE;
    KBTS_SYLLABIC_POSITION_AFTER_MAIN          :: AFTER_MAIN;

    KBTS_SYLLABIC_POSITION_ABOVEBASE_CONSONANT :: ABOVEBASE_CONSONANT;

    KBTS_SYLLABIC_POSITION_BEFORE_SUBJOINED    :: BEFORE_SUBJOINED;
    KBTS_SYLLABIC_POSITION_BELOWBASE_CONSONANT :: BELOWBASE_CONSONANT;
    KBTS_SYLLABIC_POSITION_AFTER_SUBJOINED     :: AFTER_SUBJOINED;

    KBTS_SYLLABIC_POSITION_BEFORE_POST         :: BEFORE_POST;
    KBTS_SYLLABIC_POSITION_POSTBASE_CONSONANT  :: POSTBASE_CONSONANT;
    KBTS_SYLLABIC_POSITION_AFTER_POST          :: AFTER_POST;

    KBTS_SYLLABIC_POSITION_FINAL_CONSONANT     :: FINAL_CONSONANT;
    KBTS_SYLLABIC_POSITION_SMVD                :: SMVD;

    KBTS_SYLLABIC_POSITION_COUNT               :: COUNT;
}

kbts_language :: enum u32 {
    DONT_KNOW                     :: 0;

    A_HMAO                        :: 541347144;
    AARI                          :: 541676097;
    ABAZA                         :: 541147713;
    ABKHAZIAN                     :: 541803073;
    ACHI                          :: 542262081;
    ACHOLI                        :: 541606721;
    ADYGHE                        :: 542721089;
    AFAR                          :: 542262849;
    AFRIKAANS                     :: 541804097;
    AGAW                          :: 542590785;
    AITON                         :: 542067009;
    AKAN                          :: 541150017;
    ALBANIAN                      :: 541675859;
    ALSATIAN                      :: 542329921;
    ALTAI                         :: 542395457;
    ALUO                          :: 541150809;
    AMERICAN_PHONETIC             :: 1213222977;
    AMHARIC                       :: 541609281;
    ANGLO_SAXON                   :: 541544001;
    ARABIC                        :: 541151809;
    ARAGONESE                     :: 541545025;
    ARAKANESE                     :: 541807169;
    ARAKWAL                       :: 542591826;
    ARMENIAN                      :: 541415752;
    ARMENIAN_EAST                 :: 809851208;
    AROMANIAN                     :: 542135634;
    ARPITAN                       :: 542134854;
    ASSAMESE                      :: 541938497;
    ASTURIAN                      :: 542397249;
    ATHAPASKAN                    :: 541611073;
    ATSINA                        :: 542331969;
    AVAR                          :: 542266945;
    AVATIME                       :: 542004801;
    AWADHI                        :: 541153089;
    AYMARA                        :: 541940033;
    AZERBAIDJANI                  :: 541416001;
    BADAGA                        :: 541344066;
    BAGHELKHANDI                  :: 541540674;
    BAGRI                         :: 542197570;
    BALANTE                       :: 542002242;
    BALINESE                      :: 541999426;
    BALKAR                        :: 541868354;
    BALTI                         :: 542395458;
    BALUCHI                       :: 541674562;
    BAMBARA                       :: 541216066;
    BAMILEKE                      :: 541871426;
    BANDA                         :: 809779522;
    BANDJALANG                    :: 542721090;
    BANGLA                        :: 542000450;
    BASHKIR                       :: 541610818;
    BASQUE                        :: 542201157;
    BATAK                         :: 541807682;
    BATAK_ALAS_KLUET              :: 542790722;
    BATAK_ANGKOLA                 :: 541215553;
    BATAK_DAIRI                   :: 541348930;
    BATAK_KARO                    :: 542659650;
    BATAK_MANDAILING              :: 541938754;
    BATAK_SIMALUNGUN              :: 542331970;
    BATAK_TOBA                    :: 541278786;
    BAULE                         :: 542458178;
    BAVARIAN                      :: 542261570;
    BELARUSIAN                    :: 541869378;
    BEMBA                         :: 541934914;
    BENCH                         :: 541606722;
    BERBER                        :: 542261826;
    BETI                          :: 541676610;
    BETTE_KURUMA                  :: 541218136;
    BHILI                         :: 541673538;
    BHOJPURI                      :: 542066754;
    BHUTANESE                     :: 542005828;
    BIBLE_CREE                    :: 542262082;
    BIKOL                         :: 541804866;
    BILEN                         :: 541870402;
    BISHNUPRIYA_MANIPURI          :: 542724162;
    BISLAMA                       :: 542329154;
    BLACKFOOT                     :: 541477698;
    BODO                          :: 542659138;
    BOSNIAN                       :: 542330690;
    BOUYEI                        :: 541279056;
    BRAHUI                        :: 541610562;
    BRAJ_BHASHA                   :: 541676098;
    BRETON                        :: 541413954;
    BUGIS                         :: 541545794;
    BULGARIAN                     :: 542263106;
    BUMTHANGKHA                   :: 542788171;
    BURMESE                       :: 541938242;
    BURUSHASKI                    :: 541807426;
    CAJUN_FRENCH                  :: 541282886;
    CARRIER                       :: 542265923;
    CATALAN                       :: 542392643;
    CAYUGA                        :: 542720323;
    CEBUANO                       :: 541214019;
    CENTRAL_YUPIK                 :: 542462789;
    CHAHA_GURAGE                  :: 541542467;
    CHAMORRO                      :: 541149251;
    CHATTISGARHI                  :: 541608003;
    CHECHEN                       :: 541411395;
    CHEROKEE                      :: 542263363;
    CHEYENNE                      :: 542722115;
    CHICHEWA                      :: 541673539;
    CHIGA                         :: 541542211;
    CHIMILA                       :: 541540931;
    CHIN                          :: 542001489;
    CHINANTEC                     :: 1313358659;
    CHINESE_PHONETIC              :: 542132314;
    CHINESE_SIMPLIFIED            :: 542328922;
    CHINESE_TRADITIONAL           :: 542394458;
    CHINESE_TRADITIONAL_HONG_KONG :: 541608026;
    CHINESE_TRADITIONAL_MACAO     :: 1297369178;
    CHIPEWYAN                     :: 542132291;
    CHITTAGONIAN                  :: 541545539;
    CHOCTAW                       :: 542066755;
    CHUKCHI                       :: 541804611;
    CHURCH_SLAVONIC               :: 541872963;
    CHUUKESE                      :: 810240067;
    CHUVASH                       :: 542459971;
    COMORIAN                      :: 542264643;
    COMOX                         :: 542068547;
    COPTIC                        :: 542134083;
    CORNISH                       :: 542265155;
    CORSICAN                      :: 542330691;
    CREE                          :: 541413955;
    CREOLES                       :: 542134339;
    CRIMEAN_TATAR                 :: 542396995;
    CRIOULO                       :: 541148491;
    CROATIAN                      :: 542528072;
    CYPRIOT_ARABIC                :: 542720833;
    CZECH                         :: 542724931;
    DAGBANI                       :: 541540676;
    DAN                           :: 541740612;
    DANGME                        :: 541544004;
    DANISH                        :: 541999428;
    DARGWA                        :: 542261572;
    DARI                          :: 541676100;
    DAYI                          :: 542654788;
    DEFAULT                       :: 1953261156;
    DEHONG_DAI                    :: 541344852;
    DHANGU                        :: 541542468;
    DHIVEHI                       :: 542525764;
    DHUWAL                        :: 541742404;
    DIMLI                         :: 542198084;
    DINKA                         :: 541806148;
    DIVEHI                        :: 542525764;
    DJAMBARRPUYNGU                :: 810699332;
    DOGRI                         :: 542066500;
    DOGRI_MACROLANGUAGE           :: 542263108;
    DUNGAN                        :: 542004548;
    DUTCH                         :: 541346894;
    DZONGKHA                      :: 542005828;
    EASTERN_ABENAKI               :: 542196033;
    EASTERN_CHAM                  :: 541936195;
    EASTERN_CREE                  :: 542262085;
    EASTERN_MANINKAKAN            :: 541805893;
    EASTERN_PWO_KAREN             :: 542132811;
    EBIRA                         :: 541672005;
    EDO                           :: 542065733;
    EFIK                          :: 541673029;
    EMBERA_BAUDO                  :: 541279298;
    EMBERA_CATIO                  :: 542069827;
    EMBERA_CHAMI                  :: 541674819;
    EMBERA_TADO                   :: 541279316;
    ENGLISH                       :: 541544005;
    EPENA                         :: 541149779;
    ERZYA                         :: 542790213;
    KB_TEXT_SHAPEANTO             :: 542069838;
    ESTONIAN                      :: 541676613;
    EVEN                          :: 542004805;
    EVENKI                        :: 541808197;
    EWE                           :: 541415237;
    FALAM_CHIN                    :: 541868360;
    FANG                          :: 810434886;
    FANTI                         :: 542392646;
    FAROESE                       :: 542330694;
    FEFE                          :: 542133574;
    FIJIAN                        :: 541674054;
    FILIPINO                      :: 541870416;
    FINNISH                       :: 542001478;
    FLEMISH                       :: 541412422;
    FON                           :: 542003014;
    FOREST_ENETS                  :: 541412934;
    FRENCH                        :: 541151814;
    FRENCH_ANTILLEAN              :: 541999430;
    FRISIAN                       :: 541676102;
    FRIULIAN                      :: 541872710;
    FULAH                         :: 541873478;
    FUTA                          :: 541152326;
    GA                            :: 541344071;
    GAGAUZ                        :: 541540679;
    GALICIAN                      :: 541868359;
    GANDA                         :: 541545804;
    GARHWALI                      :: 542589255;
    GARO                          :: 542069319;
    GARSHUNI                      :: 542261575;
    GEBA_KAREN                    :: 542201419;
    GEEZ                          :: 542786887;
    GEORGIAN                      :: 542392651;
    GEPO                          :: 542132057;
    GERMAN                        :: 542459204;
    GIKUYU                        :: 541804875;
    GILAKI                        :: 541805639;
    GILBERTESE                    :: 810305863;
    GILYAK                        :: 541870407;
    GITHABUL                      :: 541608263;
    GOGO                          :: 541544263;
    GONDI                         :: 542003015;
    GREEK                         :: 541871173;
    GREENLANDIC                   :: 542003783;
    GUARANI                       :: 541152583;
    GUINEA                        :: 542133063;
    GUJARATI                      :: 541742407;
    GUMATJ                        :: 542002759;
    GUMUZ                         :: 542788935;
    GUPAPUYNGU                    :: 541480263;
    GUSII                         :: 542790983;
    HAIDA                         :: 810107208;
    HAITIAN_CREOLE                :: 541671752;
    HALKOMELEM                    :: 542266696;
    HAMMER_BANNA                  :: 541999688;
    HARARI                        :: 541676104;
    HARAUTI                       :: 542261576;
    HARYANVI                      :: 541280066;
    HAUSA                         :: 542458184;
    HAVASUPAI_WALAPAI_YAVAPAI     :: 541480281;
    HAWAIIAN                      :: 542589256;
    HAYA                          :: 542720328;
    HAZARAGI                      :: 542785864;
    HEBREW                        :: 542267209;
    HEILTSUK                      :: 541672776;
    HERERO                        :: 542262600;
    HIGH_MARI                     :: 541150536;
    HILIGAYNON                    :: 541870408;
    HINDI                         :: 542001480;
    HINDKO                        :: 541347400;
    HIRI_MOTU                     :: 542068040;
    HMONG                         :: 542002504;
    HMONG_DAW                     :: 542594893;
    HMONG_SHUAT                   :: 542788936;
    HO                            :: 538988360;
    HUNGARIAN                     :: 542004552;
    IBAN                          :: 541147721;
    IBIBIO                        :: 541213257;
    ICELANDIC                     :: 541872969;
    IDO                           :: 542065737;
    IGBO                          :: 542065225;
    IJO                           :: 542067273;
    ILOKANO                       :: 542067785;
    INARI_SAMI                    :: 541938505;
    INDONESIAN                    :: 541347401;
    INGUSH                        :: 541544009;
    INTERLINGUA                   :: 541150793;
    INTERLINGUE                   :: 541412425;
    INUKTITUT                     :: 542461513;
    INUPIAT                       :: 541806665;
    IPA_PHONETIC                  :: 542134345;
    IRISH                         :: 541676105;
    IRISH_TRADITIONAL             :: 542397001;
    IRULA                         :: 542462537;
    ITALIAN                       :: 541152329;
    JAMAICAN_CREOLE               :: 541933898;
    JAPANESE                      :: 541999434;
    JAVANESE                      :: 542523722;
    JENNU_KURUMA                  :: 541742424;
    JUDEO_TAT                     :: 542393418;
    JULA                          :: 541873482;
    KABARDIAN                     :: 541213003;
    KABYLE                        :: 809648459;
    KACHCHI                       :: 541278539;
    KADIWEU                       :: 541278795;
    KALENJIN                      :: 541868363;
    KALMYK                        :: 541936715;
    KAMBA                         :: 541216075;
    KANAUJI                       :: 541739586;
    KANNADA                       :: 541999435;
    KANURI                        :: 542264907;
    KAQCHIKEL                     :: 541802819;
    KARACHAY                      :: 542261579;
    KARAIM                        :: 541938251;
    KARAKALPAK                    :: 541807179;
    KARELIAN                      :: 541872715;
    KAREN                         :: 542003787;
    KASHMIRI                      :: 541610827;
    KASHUBIAN                     :: 541217603;
    KATE                          :: 541543755;
    KAZAKH                        :: 542785867;
    KEBENA                        :: 541214027;
    KEKCHI                        :: 541803851;
    KHAKASS                       :: 541149259;
    KHAMTI_SHAN                   :: 542394443;
    KHAMYANG                      :: 542462795;
    KHANTY_KAZIM                  :: 541804619;
    KHANTY_SHURISHKAR             :: 542328907;
    KHANTY_VAKHI                  :: 542525515;
    KHASI                         :: 541676363;
    KHENGKHA                      :: 541477720;
    KHINALUG                      :: 541739595;
    KHMER                         :: 541935691;
    KHORASANI_TURKIC              :: 542788939;
    KHOWAR                        :: 542591051;
    KHUTSURI_GEORGIAN             :: 541411147;
    KICHE                         :: 541283665;
    KIKONGO                       :: 542003019;
    KILDIN_SAMI                   :: 541938507;
    KINYARWANDA                   :: 541152594;
    KIRMANJKI                     :: 542460235;
    KISII                         :: 542329163;
    KITUBA                        :: 542591821;
    KODAGU                        :: 541347659;
    KOKNI                         :: 542001995;
    KOMI                          :: 541937483;
    KOMI_PERMYAK                  :: 542134091;
    KOMI_ZYRIAN                   :: 542789451;
    KOMO                          :: 542068043;
    KOMSO                         :: 542330187;
    KONGO                         :: 810438475;
    KONKANI                       :: 541806411;
    KOORETE                       :: 542397003;
    KOREAN                        :: 542265163;
    KOREAO_OLD_HANGUL             :: 541609803;
    KORYAK                        :: 541808971;
    KOSRAEAN                      :: 542330699;
    KPELLE                        :: 541872203;
    KPELLE_LIBERIA                :: 541413464;
    KRIO                          :: 541676107;
    KRYMCHAK                      :: 542393162;
    KUANYAMA                      :: 541152587;
    KUBE                          :: 541476683;
    KUI                           :: 541676875;
    KULVI                         :: 541807947;
    KUMAONI                       :: 542002507;
    KUMYK                         :: 541939019;
    KURDISH                       :: 542266699;
    KURUKH                        :: 542463307;
    KUY                           :: 542725451;
    KWAKWALA                      :: 541808459;
    KYRGYZ                        :: 542263627;
    L_CREE                        :: 542262092;
    LADAKHI                       :: 541803596;
    LADIN                         :: 541344076;
    LADINO                        :: 541349194;
    LAHULI                        :: 541606220;
    LAK                           :: 541802828;
    LAKI                          :: 541674316;
    LAMBANI                       :: 541933900;
    LAMPUNG                       :: 542132812;
    LAO                           :: 542064972;
    LATIN                         :: 542392652;
    LATVIAN                       :: 541677132;
    LAZ                           :: 542785868;
    LELEMI                        :: 541476172;
    LEZGI                         :: 542786892;
    LIGURIAN                      :: 541739340;
    LIMBU                         :: 541216076;
    LIMBURGISH                    :: 541935948;
    LINGALA                       :: 542001484;
    LIPO                          :: 542068812;
    LISU                          :: 542329164;
    LITHUANIAN                    :: 541611084;
    LIV                           :: 542525772;
    LOJBAN                        :: 542065226;
    LOMA                          :: 541937484;
    LOMBARD                       :: 542068044;
    LOMWE                         :: 542592332;
    LOW_MARI                      :: 541150540;
    LOW_SAXON                     :: 542327886;
    LOWER_SORBIAN                 :: 541217612;
    LU                            :: 541344344;
    LUBA_KATANGA                  :: 541218124;
    LUBA_LULUA                    :: 541152588;
    LULE_SAMI                     :: 541938508;
    LUO                           :: 542070092;
    LURI                          :: 541282892;
    LUSHOOTSEED                   :: 542397772;
    LUXEMBOURGISH                 :: 542790732;
    LUYIA                         :: 541611340;
    MACEDONIAN                    :: 541346637;
    MADURA                        :: 541344077;
    MAGAHI                        :: 541540685;
    MAITHILI                      :: 541611085;
    MAJANG                        :: 541737293;
    MAKASAR                       :: 542264141;
    MAKHUWA                       :: 541802829;
    MAKONDE                       :: 541410379;
    MALAGASY                      :: 541543501;
    MALAY                         :: 542723149;
    MALAYALAM                     :: 541868365;
    MALAYALAM_REFORMED            :: 542264397;
    MALE                          :: 541412429;
    MALINKE                       :: 542002253;
    MALTESE                       :: 542331981;
    MAM                           :: 541933901;
    MANCHU                        :: 541606733;
    MANDAR                        :: 542262349;
    MANDINKA                      :: 541347405;
    MANINKA                       :: 541806157;
    MANIPURI                      :: 541675085;
    MANO                          :: 542524749;
    MANSI                         :: 541999437;
    MANX                          :: 542658125;
    MAORI                         :: 541676109;
    MAPUDUNGUN                    :: 542130509;
    MARATHI                       :: 542261581;
    MARSHALLESE                   :: 541606221;
    MARWARI                       :: 542589261;
    MAYAN                         :: 542005581;
    MAZANDERANI                   :: 542005837;
    MBEMBE_TIGON                  :: 541153870;
    MBO                           :: 542065229;
    MBUNDU                        :: 541999693;
    MEDUMBA                       :: 542529858;
    MEEN                          :: 542000461;
    MENDE                         :: 541410381;
    MERU                          :: 542262605;
    MEWATI                        :: 541938775;
    MINANGKABAU                   :: 542001485;
    MINJANGBAL                    :: 541215320;
    MIRANDESE                     :: 541873997;
    MIZO                          :: 542787917;
    MOHAWK                        :: 541609805;
    MOKSHA                        :: 541806413;
    MOLDAVIAN                     :: 541871949;
    MON                           :: 542003021;
    MONGOLIAN                     :: 541544013;
    MOOSE_CREE                    :: 542262093;
    MORISYEN                      :: 541410893;
    MOROCCAN                      :: 542265165;
    MOSSI                         :: 542330957;
    MUNDARI                       :: 542004557;
    MUSCOGEE                      :: 542332237;
    N_CREE                        :: 542262094;
    NAGA_ASSAMESE                 :: 541540686;
    NAGARI                        :: 542263118;
    NAHUATL                       :: 541606222;
    NANAI                         :: 541999438;
    NASKAPI                       :: 542327118;
    NAURUAN                       :: 542458190;
    NAVAJO                        :: 542523726;
    NDAU                          :: 541279310;
    NDEBELE                       :: 541213774;
    NDONGA                        :: 541541454;
    NEAPOLITAN                    :: 542130510;
    NEPALI                        :: 542131534;
    NEWARI                        :: 542590286;
    NGBAKA                        :: 541149006;
    NIGERIAN_FULFULDE             :: 542528838;
    NIMADI                        :: 541413198;
    NISI                          :: 542329166;
    NIUEAN                        :: 542460238;
    NKO                           :: 542067534;
    NOGAI                         :: 541544270;
    NORFOLK                       :: 541608272;
    NORTH_SLAVEY                  :: 542327635;
    NORTHERN_EMBERA               :: 542133573;
    NORTHERN_SAMI                 :: 541938510;
    NORTHERN_SOTHO                :: 542069582;
    NORTHERN_TAI                  :: 541152334;
    NORWAY_HOUSE_CREE             :: 541280334;
    NORWEGIAN                     :: 542265166;
    NORWEGIAN_NYNORSK             :: 542005582;
    NOVIAL                        :: 542527310;
    NUMANGGANG                    :: 542134094;
    NUNAVIK_INUKTITUT             :: 542461513;
    NUU_CHAH_NULTH                :: 541807950;
    NYAMWEZI                      :: 541940046;
    NYANKOLE                      :: 541870926;
    OCCITAN                       :: 541672271;
    ODIA                          :: 541676111;
    OJI_CREE                      :: 542262095;
    OJIBWAY                       :: 541215311;
    OLD_IRISH                     :: 541149011;
    OLD_JAVANESE                  :: 542589259;
    ONEIDA                        :: 541412943;
    ONONDAGA                      :: 542068303;
    OROMO                         :: 542069327;
    OSSETIAN                      :: 542331727;
    PA_O_KAREN                    :: 541805634;
    PALAUAN                       :: 542458192;
    PALAUNG                       :: 541543504;
    PALESTINIAN_ARAMAIC           :: 541147472;
    PALI                          :: 541868368;
    PALPA                         :: 542130512;
    PAMPANGAN                     :: 541933904;
    PANGASINAN                    :: 541540688;
    PAPIAMENTU                    :: 810565968;
    PASHTO                        :: 542327120;
    PATTANI_MALAY                 :: 541148749;
    PENNSYLVANIA_GERMAN           :: 541279312;
    PERSIAN                       :: 542261574;
    PHAKE                         :: 541805136;
    PICARD                        :: 541344592;
    PIEMONTESE                    :: 542330192;
    PILAGA                        :: 541543504;
    PITE_SAMI                     :: 541411923;
    POCOMCHI                      :: 541609808;
    POHNPEIAN                     :: 542003024;
    POLISH                        :: 541805648;
    POLYTONIC_GREEK               :: 542263120;
    PORTUGUESE                    :: 541545552;
    PROVENCAL                     :: 542069328;
    PUNJABI                       :: 541999440;
    QUECHUA                       :: 542790993;
    QUECHUA_BOLIVIA               :: 541611345;
    QUECHUA_ECUADOR               :: 541677137;
    QUECHUA_PERU                  :: 541611857;
    R_CREE                        :: 542262098;
    RAJASTHANI                    :: 541737298;
    RAKHINE                       :: 541807169;
    RAROTONGAN                    :: 542261586;
    REJANG                        :: 541738322;
    RIANG                         :: 541149522;
    RIPUARIAN                     :: 541610827;
    RITARUNGO                     :: 542394706;
    ROHINGYA                      :: 541542482;
    ROMANIAN                      :: 541937490;
    ROMANSH                       :: 542330194;
    ROMANY                        :: 542723922;
    ROTUMAN                       :: 541938770;
    RUNDI                         :: 542004562;
    RUSSIAN                       :: 542332242;
    RUSSIAN_BURIAT                :: 542458450;
    RUSYN                         :: 542724946;
    SADRI                         :: 541344083;
    SAKHA                         :: 541802841;
    SAMOAN                        :: 542068051;
    SAMOGITIAN                    :: 542328659;
    SAN_BLAS_KUNA                 :: 541807939;
    SANGO                         :: 542066515;
    SANSKRIT                      :: 541999443;
    SANTALI                       :: 542392659;
    SARAIKI                       :: 541807187;
    SARDINIAN                     :: 541348435;
    SASAK                         :: 542327123;
    SATERLAND_FRISIAN             :: 542200915;
    SAYISI                        :: 542720339;
    SCOTS                         :: 541672275;
    SCOTTISH_GAELIC               :: 541409607;
    SEKOTA                        :: 541738323;
    SELKUP                        :: 541869395;
    SENA                          :: 541150803;
    SENECA                        :: 541410643;
    SERBIAN                       :: 541217363;
    SERER                         :: 542265939;
    SGAW_KAREN                    :: 542593867;
    SHAN                          :: 542001235;
    SHONA                         :: 541150803;
    SIBE                          :: 541215059;
    SICILIAN                      :: 541999955;
    SIDAMO                        :: 541346131;
    SILESIAN                      :: 541874771;
    SILTE_GURAGE                  :: 541542739;
    SINDHI                        :: 541347411;
    SINHALA                       :: 541609555;
    SKOLT_SAMI                    :: 542329683;
    SLAVEY                        :: 541150291;
    SLOVAK                        :: 542722899;
    SLOVENIAN                     :: 542526547;
    SMALL_FLOWERY_MIAO            :: 541935187;
    SODO_GURAGE                   :: 541544275;
    SOGA                          :: 541544280;
    SOMALI                        :: 541871443;
    SONGE                         :: 542134099;
    SONINKE                       :: 541806163;
    SOUTH_SLAVEY                  :: 541872979;
    SOUTHERN_KIWAI                :: 541346379;
    SOUTHERN_SAMI                 :: 541938515;
    SOUTHERN_SOTHO                :: 542396243;
    SPANISH                       :: 542135109;
    STANDARD_MOROCCAN_TAMAZIGHT   :: 541607770;
    STRAITS_SALISH                :: 542266451;
    SUKUMA                        :: 541807955;
    SUNDANESE                     :: 542004563;
    SURI                          :: 542266707;
    SUTU                          :: 542398547;
    SVAN                          :: 541152851;
    SWADAYA_ARAMAIC               :: 541153107;
    SWAHILI                       :: 541808467;
    SWATI                         :: 542791507;
    SWEDISH                       :: 541414995;
    SYLHETI                       :: 541874515;
    SYRIAC                        :: 542267731;
    SYRIAC_EASTERN                :: 1314019667;
    SYRIAC_ESTRANGELA             :: 1163024723;
    SYRIAC_WESTERN                :: 1246910803;
    TABASARAN                     :: 541213012;
    TACHELHIT                     :: 541673555;
    TAGALOG                       :: 541869908;
    TAHAGGART_TAMAHAQ             :: 542525524;
    TAHITIAN                      :: 542394452;
    TAI_LAING                     :: 541870676;
    TAJIKI                        :: 541737300;
    TALYSH                        :: 542723156;
    TAMASHEK                      :: 541609300;
    TAMASHEQ                      :: 542196052;
    TAMAZIGHT                     :: 541940308;
    TAMIL                         :: 541933908;
    TARIFIT                       :: 541477202;
    TATAR                         :: 542392660;
    TAWALLAMMAT_TAMAJAQ           :: 542200916;
    TAY                           :: 542792020;
    TAYART_TAMAJEQ                :: 542787668;
    TELUGU                        :: 541869396;
    TEMNE                         :: 542002516;
    TETUM                         :: 542393684;
    TH_CREE                       :: 542262100;
    THAI                          :: 541149268;
    THAILAND_MON                  :: 1414418253;
    THOMPSON                      :: 542132308;
    TIBETAN                       :: 541215060;
    TIGRE                         :: 542263124;
    TIGRINYA                      :: 542721876;
    TIV                           :: 542525780;
    TLINGIT                       :: 541674580;
    TOBO                          :: 542523988;
    TODO                          :: 541347668;
    TOK_PISIN                     :: 541675604;
    TOMA                          :: 809783124;
    TONGA                         :: 541544020;
    TONGAN                        :: 542000980;
    TORKI                         :: 541219393;
    TSHANGLA                      :: 541741908;
    TSONGA                        :: 541545300;
    TSWANA                        :: 541150804;
    TULU                          :: 541873492;
    TUMBUKA                       :: 541939028;
    TUNDRA_ENETS                  :: 541412948;
    TURKISH                       :: 541807188;
    TURKMEN                       :: 541936468;
    TUROYO_ARAMAIC                :: 541152596;
    TUSCARORA                     :: 542332244;
    TUVALU                        :: 541873748;
    TUVIN                         :: 542528852;
    TWI                           :: 541677396;
    TZOTZIL                       :: 542071380;
    UDI                           :: 541672533;
    UDMURT                        :: 541934677;
    UKRAINIAN                     :: 542264149;
    UMBUNDU                       :: 541216085;
    UME_SAMI                      :: 542460499;
    UPPER_SAXON                   :: 542464083;
    UPPER_SORBIAN                 :: 541217621;
    URALIC_PHONETIC               :: 542134357;
    URDU                          :: 541348437;
    UYGHUR                        :: 541546837;
    UZBEK                         :: 541219413;
    VENDA                         :: 542000470;
    VENETIAN                      :: 541279574;
    VIETNAMESE                    :: 542394710;
    VLAX_ROMANI                   :: 542723410;
    VOLAPUK                       :: 541871958;
    VORO                          :: 542069334;
    WA                            :: 538984791;
    WACI_GBE                      :: 541672279;
    WAGDI                         :: 541540695;
    WAKHI                         :: 541868631;
    WALLOON                       :: 542002263;
    WARAY_WARAY                   :: 542261591;
    WAYANAD_CHETTI                :: 542397507;
    WAYUU                         :: 541283655;
    WELSH                         :: 541869399;
    WENDAT                        :: 542393431;
    WEST_CREE                     :: 542262103;
    WESTERN_CHAM                  :: 541149763;
    WESTERN_KAYAH                 :: 542464331;
    WESTERN_PANJABI               :: 541216336;
    WESTERN_PWO_KAREN             :: 542070608;
    WOLOF                         :: 541477975;
    WOODS_CREE                    :: 542262084;
    WUDING_LUQUAN_YI              :: 542201689;
    WYANDOT                       :: 542005591;
    XHOSA                         :: 542328920;
    Y_CREE                        :: 542262105;
    YAO                           :: 542064985;
    YAPESE                        :: 542130521;
    YI_CLASSIC                    :: 541280601;
    YI_MODERN                     :: 541935961;
    YIDDISH                       :: 541673802;
    YORUBA                        :: 541147737;
    ZAMBOANGA_CHAVACANO           :: 541803075;
    ZANDE                         :: 541347418;
    ZARMA                         :: 542263876;
    ZAZAKI                        :: 541153882;
    ZEALANDIC                     :: 541148506;
    ZHUANG                        :: 541149274;
    ZULU                          :: 541873498;

    KBTS_LANGUAGE_DONT_KNOW                     :: DONT_KNOW;

    KBTS_LANGUAGE_A_HMAO                        :: A_HMAO;
    KBTS_LANGUAGE_AARI                          :: AARI;
    KBTS_LANGUAGE_ABAZA                         :: ABAZA;
    KBTS_LANGUAGE_ABKHAZIAN                     :: ABKHAZIAN;
    KBTS_LANGUAGE_ACHI                          :: ACHI;
    KBTS_LANGUAGE_ACHOLI                        :: ACHOLI;
    KBTS_LANGUAGE_ADYGHE                        :: ADYGHE;
    KBTS_LANGUAGE_AFAR                          :: AFAR;
    KBTS_LANGUAGE_AFRIKAANS                     :: AFRIKAANS;
    KBTS_LANGUAGE_AGAW                          :: AGAW;
    KBTS_LANGUAGE_AITON                         :: AITON;
    KBTS_LANGUAGE_AKAN                          :: AKAN;
    KBTS_LANGUAGE_ALBANIAN                      :: ALBANIAN;
    KBTS_LANGUAGE_ALSATIAN                      :: ALSATIAN;
    KBTS_LANGUAGE_ALTAI                         :: ALTAI;
    KBTS_LANGUAGE_ALUO                          :: ALUO;
    KBTS_LANGUAGE_AMERICAN_PHONETIC             :: AMERICAN_PHONETIC;
    KBTS_LANGUAGE_AMHARIC                       :: AMHARIC;
    KBTS_LANGUAGE_ANGLO_SAXON                   :: ANGLO_SAXON;
    KBTS_LANGUAGE_ARABIC                        :: ARABIC;
    KBTS_LANGUAGE_ARAGONESE                     :: ARAGONESE;
    KBTS_LANGUAGE_ARAKANESE                     :: ARAKANESE;
    KBTS_LANGUAGE_ARAKWAL                       :: ARAKWAL;
    KBTS_LANGUAGE_ARMENIAN                      :: ARMENIAN;
    KBTS_LANGUAGE_ARMENIAN_EAST                 :: ARMENIAN_EAST;
    KBTS_LANGUAGE_AROMANIAN                     :: AROMANIAN;
    KBTS_LANGUAGE_ARPITAN                       :: ARPITAN;
    KBTS_LANGUAGE_ASSAMESE                      :: ASSAMESE;
    KBTS_LANGUAGE_ASTURIAN                      :: ASTURIAN;
    KBTS_LANGUAGE_ATHAPASKAN                    :: ATHAPASKAN;
    KBTS_LANGUAGE_ATSINA                        :: ATSINA;
    KBTS_LANGUAGE_AVAR                          :: AVAR;
    KBTS_LANGUAGE_AVATIME                       :: AVATIME;
    KBTS_LANGUAGE_AWADHI                        :: AWADHI;
    KBTS_LANGUAGE_AYMARA                        :: AYMARA;
    KBTS_LANGUAGE_AZERBAIDJANI                  :: AZERBAIDJANI;
    KBTS_LANGUAGE_BADAGA                        :: BADAGA;
    KBTS_LANGUAGE_BAGHELKHANDI                  :: BAGHELKHANDI;
    KBTS_LANGUAGE_BAGRI                         :: BAGRI;
    KBTS_LANGUAGE_BALANTE                       :: BALANTE;
    KBTS_LANGUAGE_BALINESE                      :: BALINESE;
    KBTS_LANGUAGE_BALKAR                        :: BALKAR;
    KBTS_LANGUAGE_BALTI                         :: BALTI;
    KBTS_LANGUAGE_BALUCHI                       :: BALUCHI;
    KBTS_LANGUAGE_BAMBARA                       :: BAMBARA;
    KBTS_LANGUAGE_BAMILEKE                      :: BAMILEKE;
    KBTS_LANGUAGE_BANDA                         :: BANDA;
    KBTS_LANGUAGE_BANDJALANG                    :: BANDJALANG;
    KBTS_LANGUAGE_BANGLA                        :: BANGLA;
    KBTS_LANGUAGE_BASHKIR                       :: BASHKIR;
    KBTS_LANGUAGE_BASQUE                        :: BASQUE;
    KBTS_LANGUAGE_BATAK                         :: BATAK;
    KBTS_LANGUAGE_BATAK_ALAS_KLUET              :: BATAK_ALAS_KLUET;
    KBTS_LANGUAGE_BATAK_ANGKOLA                 :: BATAK_ANGKOLA;
    KBTS_LANGUAGE_BATAK_DAIRI                   :: BATAK_DAIRI;
    KBTS_LANGUAGE_BATAK_KARO                    :: BATAK_KARO;
    KBTS_LANGUAGE_BATAK_MANDAILING              :: BATAK_MANDAILING;
    KBTS_LANGUAGE_BATAK_SIMALUNGUN              :: BATAK_SIMALUNGUN;
    KBTS_LANGUAGE_BATAK_TOBA                    :: BATAK_TOBA;
    KBTS_LANGUAGE_BAULE                         :: BAULE;
    KBTS_LANGUAGE_BAVARIAN                      :: BAVARIAN;
    KBTS_LANGUAGE_BELARUSIAN                    :: BELARUSIAN;
    KBTS_LANGUAGE_BEMBA                         :: BEMBA;
    KBTS_LANGUAGE_BENCH                         :: BENCH;
    KBTS_LANGUAGE_BERBER                        :: BERBER;
    KBTS_LANGUAGE_BETI                          :: BETI;
    KBTS_LANGUAGE_BETTE_KURUMA                  :: BETTE_KURUMA;
    KBTS_LANGUAGE_BHILI                         :: BHILI;
    KBTS_LANGUAGE_BHOJPURI                      :: BHOJPURI;
    KBTS_LANGUAGE_BHUTANESE                     :: BHUTANESE;
    KBTS_LANGUAGE_BIBLE_CREE                    :: BIBLE_CREE;
    KBTS_LANGUAGE_BIKOL                         :: BIKOL;
    KBTS_LANGUAGE_BILEN                         :: BILEN;
    KBTS_LANGUAGE_BISHNUPRIYA_MANIPURI          :: BISHNUPRIYA_MANIPURI;
    KBTS_LANGUAGE_BISLAMA                       :: BISLAMA;
    KBTS_LANGUAGE_BLACKFOOT                     :: BLACKFOOT;
    KBTS_LANGUAGE_BODO                          :: BODO;
    KBTS_LANGUAGE_BOSNIAN                       :: BOSNIAN;
    KBTS_LANGUAGE_BOUYEI                        :: BOUYEI;
    KBTS_LANGUAGE_BRAHUI                        :: BRAHUI;
    KBTS_LANGUAGE_BRAJ_BHASHA                   :: BRAJ_BHASHA;
    KBTS_LANGUAGE_BRETON                        :: BRETON;
    KBTS_LANGUAGE_BUGIS                         :: BUGIS;
    KBTS_LANGUAGE_BULGARIAN                     :: BULGARIAN;
    KBTS_LANGUAGE_BUMTHANGKHA                   :: BUMTHANGKHA;
    KBTS_LANGUAGE_BURMESE                       :: BURMESE;
    KBTS_LANGUAGE_BURUSHASKI                    :: BURUSHASKI;
    KBTS_LANGUAGE_CAJUN_FRENCH                  :: CAJUN_FRENCH;
    KBTS_LANGUAGE_CARRIER                       :: CARRIER;
    KBTS_LANGUAGE_CATALAN                       :: CATALAN;
    KBTS_LANGUAGE_CAYUGA                        :: CAYUGA;
    KBTS_LANGUAGE_CEBUANO                       :: CEBUANO;
    KBTS_LANGUAGE_CENTRAL_YUPIK                 :: CENTRAL_YUPIK;
    KBTS_LANGUAGE_CHAHA_GURAGE                  :: CHAHA_GURAGE;
    KBTS_LANGUAGE_CHAMORRO                      :: CHAMORRO;
    KBTS_LANGUAGE_CHATTISGARHI                  :: CHATTISGARHI;
    KBTS_LANGUAGE_CHECHEN                       :: CHECHEN;
    KBTS_LANGUAGE_CHEROKEE                      :: CHEROKEE;
    KBTS_LANGUAGE_CHEYENNE                      :: CHEYENNE;
    KBTS_LANGUAGE_CHICHEWA                      :: CHICHEWA;
    KBTS_LANGUAGE_CHIGA                         :: CHIGA;
    KBTS_LANGUAGE_CHIMILA                       :: CHIMILA;
    KBTS_LANGUAGE_CHIN                          :: CHIN;
    KBTS_LANGUAGE_CHINANTEC                     :: CHINANTEC;
    KBTS_LANGUAGE_CHINESE_PHONETIC              :: CHINESE_PHONETIC;
    KBTS_LANGUAGE_CHINESE_SIMPLIFIED            :: CHINESE_SIMPLIFIED;
    KBTS_LANGUAGE_CHINESE_TRADITIONAL           :: CHINESE_TRADITIONAL;
    KBTS_LANGUAGE_CHINESE_TRADITIONAL_HONG_KONG :: CHINESE_TRADITIONAL_HONG_KONG;
    KBTS_LANGUAGE_CHINESE_TRADITIONAL_MACAO     :: CHINESE_TRADITIONAL_MACAO;
    KBTS_LANGUAGE_CHIPEWYAN                     :: CHIPEWYAN;
    KBTS_LANGUAGE_CHITTAGONIAN                  :: CHITTAGONIAN;
    KBTS_LANGUAGE_CHOCTAW                       :: CHOCTAW;
    KBTS_LANGUAGE_CHUKCHI                       :: CHUKCHI;
    KBTS_LANGUAGE_CHURCH_SLAVONIC               :: CHURCH_SLAVONIC;
    KBTS_LANGUAGE_CHUUKESE                      :: CHUUKESE;
    KBTS_LANGUAGE_CHUVASH                       :: CHUVASH;
    KBTS_LANGUAGE_COMORIAN                      :: COMORIAN;
    KBTS_LANGUAGE_COMOX                         :: COMOX;
    KBTS_LANGUAGE_COPTIC                        :: COPTIC;
    KBTS_LANGUAGE_CORNISH                       :: CORNISH;
    KBTS_LANGUAGE_CORSICAN                      :: CORSICAN;
    KBTS_LANGUAGE_CREE                          :: CREE;
    KBTS_LANGUAGE_CREOLES                       :: CREOLES;
    KBTS_LANGUAGE_CRIMEAN_TATAR                 :: CRIMEAN_TATAR;
    KBTS_LANGUAGE_CRIOULO                       :: CRIOULO;
    KBTS_LANGUAGE_CROATIAN                      :: CROATIAN;
    KBTS_LANGUAGE_CYPRIOT_ARABIC                :: CYPRIOT_ARABIC;
    KBTS_LANGUAGE_CZECH                         :: CZECH;
    KBTS_LANGUAGE_DAGBANI                       :: DAGBANI;
    KBTS_LANGUAGE_DAN                           :: DAN;
    KBTS_LANGUAGE_DANGME                        :: DANGME;
    KBTS_LANGUAGE_DANISH                        :: DANISH;
    KBTS_LANGUAGE_DARGWA                        :: DARGWA;
    KBTS_LANGUAGE_DARI                          :: DARI;
    KBTS_LANGUAGE_DAYI                          :: DAYI;
    KBTS_LANGUAGE_DEFAULT                       :: DEFAULT;
    KBTS_LANGUAGE_DEHONG_DAI                    :: DEHONG_DAI;
    KBTS_LANGUAGE_DHANGU                        :: DHANGU;
    KBTS_LANGUAGE_DHIVEHI                       :: DHIVEHI;
    KBTS_LANGUAGE_DHUWAL                        :: DHUWAL;
    KBTS_LANGUAGE_DIMLI                         :: DIMLI;
    KBTS_LANGUAGE_DINKA                         :: DINKA;
    KBTS_LANGUAGE_DIVEHI                        :: DIVEHI;
    KBTS_LANGUAGE_DJAMBARRPUYNGU                :: DJAMBARRPUYNGU;
    KBTS_LANGUAGE_DOGRI                         :: DOGRI;
    KBTS_LANGUAGE_DOGRI_MACROLANGUAGE           :: DOGRI_MACROLANGUAGE;
    KBTS_LANGUAGE_DUNGAN                        :: DUNGAN;
    KBTS_LANGUAGE_DUTCH                         :: DUTCH;
    KBTS_LANGUAGE_DZONGKHA                      :: DZONGKHA;
    KBTS_LANGUAGE_EASTERN_ABENAKI               :: EASTERN_ABENAKI;
    KBTS_LANGUAGE_EASTERN_CHAM                  :: EASTERN_CHAM;
    KBTS_LANGUAGE_EASTERN_CREE                  :: EASTERN_CREE;
    KBTS_LANGUAGE_EASTERN_MANINKAKAN            :: EASTERN_MANINKAKAN;
    KBTS_LANGUAGE_EASTERN_PWO_KAREN             :: EASTERN_PWO_KAREN;
    KBTS_LANGUAGE_EBIRA                         :: EBIRA;
    KBTS_LANGUAGE_EDO                           :: EDO;
    KBTS_LANGUAGE_EFIK                          :: EFIK;
    KBTS_LANGUAGE_EMBERA_BAUDO                  :: EMBERA_BAUDO;
    KBTS_LANGUAGE_EMBERA_CATIO                  :: EMBERA_CATIO;
    KBTS_LANGUAGE_EMBERA_CHAMI                  :: EMBERA_CHAMI;
    KBTS_LANGUAGE_EMBERA_TADO                   :: EMBERA_TADO;
    KBTS_LANGUAGE_ENGLISH                       :: ENGLISH;
    KBTS_LANGUAGE_EPENA                         :: EPENA;
    KBTS_LANGUAGE_ERZYA                         :: ERZYA;
    KBTS_LANGUAGE_KB_TEXT_SHAPEANTO             :: KB_TEXT_SHAPEANTO;
    KBTS_LANGUAGE_ESTONIAN                      :: ESTONIAN;
    KBTS_LANGUAGE_EVEN                          :: EVEN;
    KBTS_LANGUAGE_EVENKI                        :: EVENKI;
    KBTS_LANGUAGE_EWE                           :: EWE;
    KBTS_LANGUAGE_FALAM_CHIN                    :: FALAM_CHIN;
    KBTS_LANGUAGE_FANG                          :: FANG;
    KBTS_LANGUAGE_FANTI                         :: FANTI;
    KBTS_LANGUAGE_FAROESE                       :: FAROESE;
    KBTS_LANGUAGE_FEFE                          :: FEFE;
    KBTS_LANGUAGE_FIJIAN                        :: FIJIAN;
    KBTS_LANGUAGE_FILIPINO                      :: FILIPINO;
    KBTS_LANGUAGE_FINNISH                       :: FINNISH;
    KBTS_LANGUAGE_FLEMISH                       :: FLEMISH;
    KBTS_LANGUAGE_FON                           :: FON;
    KBTS_LANGUAGE_FOREST_ENETS                  :: FOREST_ENETS;
    KBTS_LANGUAGE_FRENCH                        :: FRENCH;
    KBTS_LANGUAGE_FRENCH_ANTILLEAN              :: FRENCH_ANTILLEAN;
    KBTS_LANGUAGE_FRISIAN                       :: FRISIAN;
    KBTS_LANGUAGE_FRIULIAN                      :: FRIULIAN;
    KBTS_LANGUAGE_FULAH                         :: FULAH;
    KBTS_LANGUAGE_FUTA                          :: FUTA;
    KBTS_LANGUAGE_GA                            :: GA;
    KBTS_LANGUAGE_GAGAUZ                        :: GAGAUZ;
    KBTS_LANGUAGE_GALICIAN                      :: GALICIAN;
    KBTS_LANGUAGE_GANDA                         :: GANDA;
    KBTS_LANGUAGE_GARHWALI                      :: GARHWALI;
    KBTS_LANGUAGE_GARO                          :: GARO;
    KBTS_LANGUAGE_GARSHUNI                      :: GARSHUNI;
    KBTS_LANGUAGE_GEBA_KAREN                    :: GEBA_KAREN;
    KBTS_LANGUAGE_GEEZ                          :: GEEZ;
    KBTS_LANGUAGE_GEORGIAN                      :: GEORGIAN;
    KBTS_LANGUAGE_GEPO                          :: GEPO;
    KBTS_LANGUAGE_GERMAN                        :: GERMAN;
    KBTS_LANGUAGE_GIKUYU                        :: GIKUYU;
    KBTS_LANGUAGE_GILAKI                        :: GILAKI;
    KBTS_LANGUAGE_GILBERTESE                    :: GILBERTESE;
    KBTS_LANGUAGE_GILYAK                        :: GILYAK;
    KBTS_LANGUAGE_GITHABUL                      :: GITHABUL;
    KBTS_LANGUAGE_GOGO                          :: GOGO;
    KBTS_LANGUAGE_GONDI                         :: GONDI;
    KBTS_LANGUAGE_GREEK                         :: GREEK;
    KBTS_LANGUAGE_GREENLANDIC                   :: GREENLANDIC;
    KBTS_LANGUAGE_GUARANI                       :: GUARANI;
    KBTS_LANGUAGE_GUINEA                        :: GUINEA;
    KBTS_LANGUAGE_GUJARATI                      :: GUJARATI;
    KBTS_LANGUAGE_GUMATJ                        :: GUMATJ;
    KBTS_LANGUAGE_GUMUZ                         :: GUMUZ;
    KBTS_LANGUAGE_GUPAPUYNGU                    :: GUPAPUYNGU;
    KBTS_LANGUAGE_GUSII                         :: GUSII;
    KBTS_LANGUAGE_HAIDA                         :: HAIDA;
    KBTS_LANGUAGE_HAITIAN_CREOLE                :: HAITIAN_CREOLE;
    KBTS_LANGUAGE_HALKOMELEM                    :: HALKOMELEM;
    KBTS_LANGUAGE_HAMMER_BANNA                  :: HAMMER_BANNA;
    KBTS_LANGUAGE_HARARI                        :: HARARI;
    KBTS_LANGUAGE_HARAUTI                       :: HARAUTI;
    KBTS_LANGUAGE_HARYANVI                      :: HARYANVI;
    KBTS_LANGUAGE_HAUSA                         :: HAUSA;
    KBTS_LANGUAGE_HAVASUPAI_WALAPAI_YAVAPAI     :: HAVASUPAI_WALAPAI_YAVAPAI;
    KBTS_LANGUAGE_HAWAIIAN                      :: HAWAIIAN;
    KBTS_LANGUAGE_HAYA                          :: HAYA;
    KBTS_LANGUAGE_HAZARAGI                      :: HAZARAGI;
    KBTS_LANGUAGE_HEBREW                        :: HEBREW;
    KBTS_LANGUAGE_HEILTSUK                      :: HEILTSUK;
    KBTS_LANGUAGE_HERERO                        :: HERERO;
    KBTS_LANGUAGE_HIGH_MARI                     :: HIGH_MARI;
    KBTS_LANGUAGE_HILIGAYNON                    :: HILIGAYNON;
    KBTS_LANGUAGE_HINDI                         :: HINDI;
    KBTS_LANGUAGE_HINDKO                        :: HINDKO;
    KBTS_LANGUAGE_HIRI_MOTU                     :: HIRI_MOTU;
    KBTS_LANGUAGE_HMONG                         :: HMONG;
    KBTS_LANGUAGE_HMONG_DAW                     :: HMONG_DAW;
    KBTS_LANGUAGE_HMONG_SHUAT                   :: HMONG_SHUAT;
    KBTS_LANGUAGE_HO                            :: HO;
    KBTS_LANGUAGE_HUNGARIAN                     :: HUNGARIAN;
    KBTS_LANGUAGE_IBAN                          :: IBAN;
    KBTS_LANGUAGE_IBIBIO                        :: IBIBIO;
    KBTS_LANGUAGE_ICELANDIC                     :: ICELANDIC;
    KBTS_LANGUAGE_IDO                           :: IDO;
    KBTS_LANGUAGE_IGBO                          :: IGBO;
    KBTS_LANGUAGE_IJO                           :: IJO;
    KBTS_LANGUAGE_ILOKANO                       :: ILOKANO;
    KBTS_LANGUAGE_INARI_SAMI                    :: INARI_SAMI;
    KBTS_LANGUAGE_INDONESIAN                    :: INDONESIAN;
    KBTS_LANGUAGE_INGUSH                        :: INGUSH;
    KBTS_LANGUAGE_INTERLINGUA                   :: INTERLINGUA;
    KBTS_LANGUAGE_INTERLINGUE                   :: INTERLINGUE;
    KBTS_LANGUAGE_INUKTITUT                     :: INUKTITUT;
    KBTS_LANGUAGE_INUPIAT                       :: INUPIAT;
    KBTS_LANGUAGE_IPA_PHONETIC                  :: IPA_PHONETIC;
    KBTS_LANGUAGE_IRISH                         :: IRISH;
    KBTS_LANGUAGE_IRISH_TRADITIONAL             :: IRISH_TRADITIONAL;
    KBTS_LANGUAGE_IRULA                         :: IRULA;
    KBTS_LANGUAGE_ITALIAN                       :: ITALIAN;
    KBTS_LANGUAGE_JAMAICAN_CREOLE               :: JAMAICAN_CREOLE;
    KBTS_LANGUAGE_JAPANESE                      :: JAPANESE;
    KBTS_LANGUAGE_JAVANESE                      :: JAVANESE;
    KBTS_LANGUAGE_JENNU_KURUMA                  :: JENNU_KURUMA;
    KBTS_LANGUAGE_JUDEO_TAT                     :: JUDEO_TAT;
    KBTS_LANGUAGE_JULA                          :: JULA;
    KBTS_LANGUAGE_KABARDIAN                     :: KABARDIAN;
    KBTS_LANGUAGE_KABYLE                        :: KABYLE;
    KBTS_LANGUAGE_KACHCHI                       :: KACHCHI;
    KBTS_LANGUAGE_KADIWEU                       :: KADIWEU;
    KBTS_LANGUAGE_KALENJIN                      :: KALENJIN;
    KBTS_LANGUAGE_KALMYK                        :: KALMYK;
    KBTS_LANGUAGE_KAMBA                         :: KAMBA;
    KBTS_LANGUAGE_KANAUJI                       :: KANAUJI;
    KBTS_LANGUAGE_KANNADA                       :: KANNADA;
    KBTS_LANGUAGE_KANURI                        :: KANURI;
    KBTS_LANGUAGE_KAQCHIKEL                     :: KAQCHIKEL;
    KBTS_LANGUAGE_KARACHAY                      :: KARACHAY;
    KBTS_LANGUAGE_KARAIM                        :: KARAIM;
    KBTS_LANGUAGE_KARAKALPAK                    :: KARAKALPAK;
    KBTS_LANGUAGE_KARELIAN                      :: KARELIAN;
    KBTS_LANGUAGE_KAREN                         :: KAREN;
    KBTS_LANGUAGE_KASHMIRI                      :: KASHMIRI;
    KBTS_LANGUAGE_KASHUBIAN                     :: KASHUBIAN;
    KBTS_LANGUAGE_KATE                          :: KATE;
    KBTS_LANGUAGE_KAZAKH                        :: KAZAKH;
    KBTS_LANGUAGE_KEBENA                        :: KEBENA;
    KBTS_LANGUAGE_KEKCHI                        :: KEKCHI;
    KBTS_LANGUAGE_KHAKASS                       :: KHAKASS;
    KBTS_LANGUAGE_KHAMTI_SHAN                   :: KHAMTI_SHAN;
    KBTS_LANGUAGE_KHAMYANG                      :: KHAMYANG;
    KBTS_LANGUAGE_KHANTY_KAZIM                  :: KHANTY_KAZIM;
    KBTS_LANGUAGE_KHANTY_SHURISHKAR             :: KHANTY_SHURISHKAR;
    KBTS_LANGUAGE_KHANTY_VAKHI                  :: KHANTY_VAKHI;
    KBTS_LANGUAGE_KHASI                         :: KHASI;
    KBTS_LANGUAGE_KHENGKHA                      :: KHENGKHA;
    KBTS_LANGUAGE_KHINALUG                      :: KHINALUG;
    KBTS_LANGUAGE_KHMER                         :: KHMER;
    KBTS_LANGUAGE_KHORASANI_TURKIC              :: KHORASANI_TURKIC;
    KBTS_LANGUAGE_KHOWAR                        :: KHOWAR;
    KBTS_LANGUAGE_KHUTSURI_GEORGIAN             :: KHUTSURI_GEORGIAN;
    KBTS_LANGUAGE_KICHE                         :: KICHE;
    KBTS_LANGUAGE_KIKONGO                       :: KIKONGO;
    KBTS_LANGUAGE_KILDIN_SAMI                   :: KILDIN_SAMI;
    KBTS_LANGUAGE_KINYARWANDA                   :: KINYARWANDA;
    KBTS_LANGUAGE_KIRMANJKI                     :: KIRMANJKI;
    KBTS_LANGUAGE_KISII                         :: KISII;
    KBTS_LANGUAGE_KITUBA                        :: KITUBA;
    KBTS_LANGUAGE_KODAGU                        :: KODAGU;
    KBTS_LANGUAGE_KOKNI                         :: KOKNI;
    KBTS_LANGUAGE_KOMI                          :: KOMI;
    KBTS_LANGUAGE_KOMI_PERMYAK                  :: KOMI_PERMYAK;
    KBTS_LANGUAGE_KOMI_ZYRIAN                   :: KOMI_ZYRIAN;
    KBTS_LANGUAGE_KOMO                          :: KOMO;
    KBTS_LANGUAGE_KOMSO                         :: KOMSO;
    KBTS_LANGUAGE_KONGO                         :: KONGO;
    KBTS_LANGUAGE_KONKANI                       :: KONKANI;
    KBTS_LANGUAGE_KOORETE                       :: KOORETE;
    KBTS_LANGUAGE_KOREAN                        :: KOREAN;
    KBTS_LANGUAGE_KOREAO_OLD_HANGUL             :: KOREAO_OLD_HANGUL;
    KBTS_LANGUAGE_KORYAK                        :: KORYAK;
    KBTS_LANGUAGE_KOSRAEAN                      :: KOSRAEAN;
    KBTS_LANGUAGE_KPELLE                        :: KPELLE;
    KBTS_LANGUAGE_KPELLE_LIBERIA                :: KPELLE_LIBERIA;
    KBTS_LANGUAGE_KRIO                          :: KRIO;
    KBTS_LANGUAGE_KRYMCHAK                      :: KRYMCHAK;
    KBTS_LANGUAGE_KUANYAMA                      :: KUANYAMA;
    KBTS_LANGUAGE_KUBE                          :: KUBE;
    KBTS_LANGUAGE_KUI                           :: KUI;
    KBTS_LANGUAGE_KULVI                         :: KULVI;
    KBTS_LANGUAGE_KUMAONI                       :: KUMAONI;
    KBTS_LANGUAGE_KUMYK                         :: KUMYK;
    KBTS_LANGUAGE_KURDISH                       :: KURDISH;
    KBTS_LANGUAGE_KURUKH                        :: KURUKH;
    KBTS_LANGUAGE_KUY                           :: KUY;
    KBTS_LANGUAGE_KWAKWALA                      :: KWAKWALA;
    KBTS_LANGUAGE_KYRGYZ                        :: KYRGYZ;
    KBTS_LANGUAGE_L_CREE                        :: L_CREE;
    KBTS_LANGUAGE_LADAKHI                       :: LADAKHI;
    KBTS_LANGUAGE_LADIN                         :: LADIN;
    KBTS_LANGUAGE_LADINO                        :: LADINO;
    KBTS_LANGUAGE_LAHULI                        :: LAHULI;
    KBTS_LANGUAGE_LAK                           :: LAK;
    KBTS_LANGUAGE_LAKI                          :: LAKI;
    KBTS_LANGUAGE_LAMBANI                       :: LAMBANI;
    KBTS_LANGUAGE_LAMPUNG                       :: LAMPUNG;
    KBTS_LANGUAGE_LAO                           :: LAO;
    KBTS_LANGUAGE_LATIN                         :: LATIN;
    KBTS_LANGUAGE_LATVIAN                       :: LATVIAN;
    KBTS_LANGUAGE_LAZ                           :: LAZ;
    KBTS_LANGUAGE_LELEMI                        :: LELEMI;
    KBTS_LANGUAGE_LEZGI                         :: LEZGI;
    KBTS_LANGUAGE_LIGURIAN                      :: LIGURIAN;
    KBTS_LANGUAGE_LIMBU                         :: LIMBU;
    KBTS_LANGUAGE_LIMBURGISH                    :: LIMBURGISH;
    KBTS_LANGUAGE_LINGALA                       :: LINGALA;
    KBTS_LANGUAGE_LIPO                          :: LIPO;
    KBTS_LANGUAGE_LISU                          :: LISU;
    KBTS_LANGUAGE_LITHUANIAN                    :: LITHUANIAN;
    KBTS_LANGUAGE_LIV                           :: LIV;
    KBTS_LANGUAGE_LOJBAN                        :: LOJBAN;
    KBTS_LANGUAGE_LOMA                          :: LOMA;
    KBTS_LANGUAGE_LOMBARD                       :: LOMBARD;
    KBTS_LANGUAGE_LOMWE                         :: LOMWE;
    KBTS_LANGUAGE_LOW_MARI                      :: LOW_MARI;
    KBTS_LANGUAGE_LOW_SAXON                     :: LOW_SAXON;
    KBTS_LANGUAGE_LOWER_SORBIAN                 :: LOWER_SORBIAN;
    KBTS_LANGUAGE_LU                            :: LU;
    KBTS_LANGUAGE_LUBA_KATANGA                  :: LUBA_KATANGA;
    KBTS_LANGUAGE_LUBA_LULUA                    :: LUBA_LULUA;
    KBTS_LANGUAGE_LULE_SAMI                     :: LULE_SAMI;
    KBTS_LANGUAGE_LUO                           :: LUO;
    KBTS_LANGUAGE_LURI                          :: LURI;
    KBTS_LANGUAGE_LUSHOOTSEED                   :: LUSHOOTSEED;
    KBTS_LANGUAGE_LUXEMBOURGISH                 :: LUXEMBOURGISH;
    KBTS_LANGUAGE_LUYIA                         :: LUYIA;
    KBTS_LANGUAGE_MACEDONIAN                    :: MACEDONIAN;
    KBTS_LANGUAGE_MADURA                        :: MADURA;
    KBTS_LANGUAGE_MAGAHI                        :: MAGAHI;
    KBTS_LANGUAGE_MAITHILI                      :: MAITHILI;
    KBTS_LANGUAGE_MAJANG                        :: MAJANG;
    KBTS_LANGUAGE_MAKASAR                       :: MAKASAR;
    KBTS_LANGUAGE_MAKHUWA                       :: MAKHUWA;
    KBTS_LANGUAGE_MAKONDE                       :: MAKONDE;
    KBTS_LANGUAGE_MALAGASY                      :: MALAGASY;
    KBTS_LANGUAGE_MALAY                         :: MALAY;
    KBTS_LANGUAGE_MALAYALAM                     :: MALAYALAM;
    KBTS_LANGUAGE_MALAYALAM_REFORMED            :: MALAYALAM_REFORMED;
    KBTS_LANGUAGE_MALE                          :: MALE;
    KBTS_LANGUAGE_MALINKE                       :: MALINKE;
    KBTS_LANGUAGE_MALTESE                       :: MALTESE;
    KBTS_LANGUAGE_MAM                           :: MAM;
    KBTS_LANGUAGE_MANCHU                        :: MANCHU;
    KBTS_LANGUAGE_MANDAR                        :: MANDAR;
    KBTS_LANGUAGE_MANDINKA                      :: MANDINKA;
    KBTS_LANGUAGE_MANINKA                       :: MANINKA;
    KBTS_LANGUAGE_MANIPURI                      :: MANIPURI;
    KBTS_LANGUAGE_MANO                          :: MANO;
    KBTS_LANGUAGE_MANSI                         :: MANSI;
    KBTS_LANGUAGE_MANX                          :: MANX;
    KBTS_LANGUAGE_MAORI                         :: MAORI;
    KBTS_LANGUAGE_MAPUDUNGUN                    :: MAPUDUNGUN;
    KBTS_LANGUAGE_MARATHI                       :: MARATHI;
    KBTS_LANGUAGE_MARSHALLESE                   :: MARSHALLESE;
    KBTS_LANGUAGE_MARWARI                       :: MARWARI;
    KBTS_LANGUAGE_MAYAN                         :: MAYAN;
    KBTS_LANGUAGE_MAZANDERANI                   :: MAZANDERANI;
    KBTS_LANGUAGE_MBEMBE_TIGON                  :: MBEMBE_TIGON;
    KBTS_LANGUAGE_MBO                           :: MBO;
    KBTS_LANGUAGE_MBUNDU                        :: MBUNDU;
    KBTS_LANGUAGE_MEDUMBA                       :: MEDUMBA;
    KBTS_LANGUAGE_MEEN                          :: MEEN;
    KBTS_LANGUAGE_MENDE                         :: MENDE;
    KBTS_LANGUAGE_MERU                          :: MERU;
    KBTS_LANGUAGE_MEWATI                        :: MEWATI;
    KBTS_LANGUAGE_MINANGKABAU                   :: MINANGKABAU;
    KBTS_LANGUAGE_MINJANGBAL                    :: MINJANGBAL;
    KBTS_LANGUAGE_MIRANDESE                     :: MIRANDESE;
    KBTS_LANGUAGE_MIZO                          :: MIZO;
    KBTS_LANGUAGE_MOHAWK                        :: MOHAWK;
    KBTS_LANGUAGE_MOKSHA                        :: MOKSHA;
    KBTS_LANGUAGE_MOLDAVIAN                     :: MOLDAVIAN;
    KBTS_LANGUAGE_MON                           :: MON;
    KBTS_LANGUAGE_MONGOLIAN                     :: MONGOLIAN;
    KBTS_LANGUAGE_MOOSE_CREE                    :: MOOSE_CREE;
    KBTS_LANGUAGE_MORISYEN                      :: MORISYEN;
    KBTS_LANGUAGE_MOROCCAN                      :: MOROCCAN;
    KBTS_LANGUAGE_MOSSI                         :: MOSSI;
    KBTS_LANGUAGE_MUNDARI                       :: MUNDARI;
    KBTS_LANGUAGE_MUSCOGEE                      :: MUSCOGEE;
    KBTS_LANGUAGE_N_CREE                        :: N_CREE;
    KBTS_LANGUAGE_NAGA_ASSAMESE                 :: NAGA_ASSAMESE;
    KBTS_LANGUAGE_NAGARI                        :: NAGARI;
    KBTS_LANGUAGE_NAHUATL                       :: NAHUATL;
    KBTS_LANGUAGE_NANAI                         :: NANAI;
    KBTS_LANGUAGE_NASKAPI                       :: NASKAPI;
    KBTS_LANGUAGE_NAURUAN                       :: NAURUAN;
    KBTS_LANGUAGE_NAVAJO                        :: NAVAJO;
    KBTS_LANGUAGE_NDAU                          :: NDAU;
    KBTS_LANGUAGE_NDEBELE                       :: NDEBELE;
    KBTS_LANGUAGE_NDONGA                        :: NDONGA;
    KBTS_LANGUAGE_NEAPOLITAN                    :: NEAPOLITAN;
    KBTS_LANGUAGE_NEPALI                        :: NEPALI;
    KBTS_LANGUAGE_NEWARI                        :: NEWARI;
    KBTS_LANGUAGE_NGBAKA                        :: NGBAKA;
    KBTS_LANGUAGE_NIGERIAN_FULFULDE             :: NIGERIAN_FULFULDE;
    KBTS_LANGUAGE_NIMADI                        :: NIMADI;
    KBTS_LANGUAGE_NISI                          :: NISI;
    KBTS_LANGUAGE_NIUEAN                        :: NIUEAN;
    KBTS_LANGUAGE_NKO                           :: NKO;
    KBTS_LANGUAGE_NOGAI                         :: NOGAI;
    KBTS_LANGUAGE_NORFOLK                       :: NORFOLK;
    KBTS_LANGUAGE_NORTH_SLAVEY                  :: NORTH_SLAVEY;
    KBTS_LANGUAGE_NORTHERN_EMBERA               :: NORTHERN_EMBERA;
    KBTS_LANGUAGE_NORTHERN_SAMI                 :: NORTHERN_SAMI;
    KBTS_LANGUAGE_NORTHERN_SOTHO                :: NORTHERN_SOTHO;
    KBTS_LANGUAGE_NORTHERN_TAI                  :: NORTHERN_TAI;
    KBTS_LANGUAGE_NORWAY_HOUSE_CREE             :: NORWAY_HOUSE_CREE;
    KBTS_LANGUAGE_NORWEGIAN                     :: NORWEGIAN;
    KBTS_LANGUAGE_NORWEGIAN_NYNORSK             :: NORWEGIAN_NYNORSK;
    KBTS_LANGUAGE_NOVIAL                        :: NOVIAL;
    KBTS_LANGUAGE_NUMANGGANG                    :: NUMANGGANG;
    KBTS_LANGUAGE_NUNAVIK_INUKTITUT             :: NUNAVIK_INUKTITUT;
    KBTS_LANGUAGE_NUU_CHAH_NULTH                :: NUU_CHAH_NULTH;
    KBTS_LANGUAGE_NYAMWEZI                      :: NYAMWEZI;
    KBTS_LANGUAGE_NYANKOLE                      :: NYANKOLE;
    KBTS_LANGUAGE_OCCITAN                       :: OCCITAN;
    KBTS_LANGUAGE_ODIA                          :: ODIA;
    KBTS_LANGUAGE_OJI_CREE                      :: OJI_CREE;
    KBTS_LANGUAGE_OJIBWAY                       :: OJIBWAY;
    KBTS_LANGUAGE_OLD_IRISH                     :: OLD_IRISH;
    KBTS_LANGUAGE_OLD_JAVANESE                  :: OLD_JAVANESE;
    KBTS_LANGUAGE_ONEIDA                        :: ONEIDA;
    KBTS_LANGUAGE_ONONDAGA                      :: ONONDAGA;
    KBTS_LANGUAGE_OROMO                         :: OROMO;
    KBTS_LANGUAGE_OSSETIAN                      :: OSSETIAN;
    KBTS_LANGUAGE_PA_O_KAREN                    :: PA_O_KAREN;
    KBTS_LANGUAGE_PALAUAN                       :: PALAUAN;
    KBTS_LANGUAGE_PALAUNG                       :: PALAUNG;
    KBTS_LANGUAGE_PALESTINIAN_ARAMAIC           :: PALESTINIAN_ARAMAIC;
    KBTS_LANGUAGE_PALI                          :: PALI;
    KBTS_LANGUAGE_PALPA                         :: PALPA;
    KBTS_LANGUAGE_PAMPANGAN                     :: PAMPANGAN;
    KBTS_LANGUAGE_PANGASINAN                    :: PANGASINAN;
    KBTS_LANGUAGE_PAPIAMENTU                    :: PAPIAMENTU;
    KBTS_LANGUAGE_PASHTO                        :: PASHTO;
    KBTS_LANGUAGE_PATTANI_MALAY                 :: PATTANI_MALAY;
    KBTS_LANGUAGE_PENNSYLVANIA_GERMAN           :: PENNSYLVANIA_GERMAN;
    KBTS_LANGUAGE_PERSIAN                       :: PERSIAN;
    KBTS_LANGUAGE_PHAKE                         :: PHAKE;
    KBTS_LANGUAGE_PICARD                        :: PICARD;
    KBTS_LANGUAGE_PIEMONTESE                    :: PIEMONTESE;
    KBTS_LANGUAGE_PILAGA                        :: PILAGA;
    KBTS_LANGUAGE_PITE_SAMI                     :: PITE_SAMI;
    KBTS_LANGUAGE_POCOMCHI                      :: POCOMCHI;
    KBTS_LANGUAGE_POHNPEIAN                     :: POHNPEIAN;
    KBTS_LANGUAGE_POLISH                        :: POLISH;
    KBTS_LANGUAGE_POLYTONIC_GREEK               :: POLYTONIC_GREEK;
    KBTS_LANGUAGE_PORTUGUESE                    :: PORTUGUESE;
    KBTS_LANGUAGE_PROVENCAL                     :: PROVENCAL;
    KBTS_LANGUAGE_PUNJABI                       :: PUNJABI;
    KBTS_LANGUAGE_QUECHUA                       :: QUECHUA;
    KBTS_LANGUAGE_QUECHUA_BOLIVIA               :: QUECHUA_BOLIVIA;
    KBTS_LANGUAGE_QUECHUA_ECUADOR               :: QUECHUA_ECUADOR;
    KBTS_LANGUAGE_QUECHUA_PERU                  :: QUECHUA_PERU;
    KBTS_LANGUAGE_R_CREE                        :: R_CREE;
    KBTS_LANGUAGE_RAJASTHANI                    :: RAJASTHANI;
    KBTS_LANGUAGE_RAKHINE                       :: RAKHINE;
    KBTS_LANGUAGE_RAROTONGAN                    :: RAROTONGAN;
    KBTS_LANGUAGE_REJANG                        :: REJANG;
    KBTS_LANGUAGE_RIANG                         :: RIANG;
    KBTS_LANGUAGE_RIPUARIAN                     :: RIPUARIAN;
    KBTS_LANGUAGE_RITARUNGO                     :: RITARUNGO;
    KBTS_LANGUAGE_ROHINGYA                      :: ROHINGYA;
    KBTS_LANGUAGE_ROMANIAN                      :: ROMANIAN;
    KBTS_LANGUAGE_ROMANSH                       :: ROMANSH;
    KBTS_LANGUAGE_ROMANY                        :: ROMANY;
    KBTS_LANGUAGE_ROTUMAN                       :: ROTUMAN;
    KBTS_LANGUAGE_RUNDI                         :: RUNDI;
    KBTS_LANGUAGE_RUSSIAN                       :: RUSSIAN;
    KBTS_LANGUAGE_RUSSIAN_BURIAT                :: RUSSIAN_BURIAT;
    KBTS_LANGUAGE_RUSYN                         :: RUSYN;
    KBTS_LANGUAGE_SADRI                         :: SADRI;
    KBTS_LANGUAGE_SAKHA                         :: SAKHA;
    KBTS_LANGUAGE_SAMOAN                        :: SAMOAN;
    KBTS_LANGUAGE_SAMOGITIAN                    :: SAMOGITIAN;
    KBTS_LANGUAGE_SAN_BLAS_KUNA                 :: SAN_BLAS_KUNA;
    KBTS_LANGUAGE_SANGO                         :: SANGO;
    KBTS_LANGUAGE_SANSKRIT                      :: SANSKRIT;
    KBTS_LANGUAGE_SANTALI                       :: SANTALI;
    KBTS_LANGUAGE_SARAIKI                       :: SARAIKI;
    KBTS_LANGUAGE_SARDINIAN                     :: SARDINIAN;
    KBTS_LANGUAGE_SASAK                         :: SASAK;
    KBTS_LANGUAGE_SATERLAND_FRISIAN             :: SATERLAND_FRISIAN;
    KBTS_LANGUAGE_SAYISI                        :: SAYISI;
    KBTS_LANGUAGE_SCOTS                         :: SCOTS;
    KBTS_LANGUAGE_SCOTTISH_GAELIC               :: SCOTTISH_GAELIC;
    KBTS_LANGUAGE_SEKOTA                        :: SEKOTA;
    KBTS_LANGUAGE_SELKUP                        :: SELKUP;
    KBTS_LANGUAGE_SENA                          :: SENA;
    KBTS_LANGUAGE_SENECA                        :: SENECA;
    KBTS_LANGUAGE_SERBIAN                       :: SERBIAN;
    KBTS_LANGUAGE_SERER                         :: SERER;
    KBTS_LANGUAGE_SGAW_KAREN                    :: SGAW_KAREN;
    KBTS_LANGUAGE_SHAN                          :: SHAN;
    KBTS_LANGUAGE_SHONA                         :: SHONA;
    KBTS_LANGUAGE_SIBE                          :: SIBE;
    KBTS_LANGUAGE_SICILIAN                      :: SICILIAN;
    KBTS_LANGUAGE_SIDAMO                        :: SIDAMO;
    KBTS_LANGUAGE_SILESIAN                      :: SILESIAN;
    KBTS_LANGUAGE_SILTE_GURAGE                  :: SILTE_GURAGE;
    KBTS_LANGUAGE_SINDHI                        :: SINDHI;
    KBTS_LANGUAGE_SINHALA                       :: SINHALA;
    KBTS_LANGUAGE_SKOLT_SAMI                    :: SKOLT_SAMI;
    KBTS_LANGUAGE_SLAVEY                        :: SLAVEY;
    KBTS_LANGUAGE_SLOVAK                        :: SLOVAK;
    KBTS_LANGUAGE_SLOVENIAN                     :: SLOVENIAN;
    KBTS_LANGUAGE_SMALL_FLOWERY_MIAO            :: SMALL_FLOWERY_MIAO;
    KBTS_LANGUAGE_SODO_GURAGE                   :: SODO_GURAGE;
    KBTS_LANGUAGE_SOGA                          :: SOGA;
    KBTS_LANGUAGE_SOMALI                        :: SOMALI;
    KBTS_LANGUAGE_SONGE                         :: SONGE;
    KBTS_LANGUAGE_SONINKE                       :: SONINKE;
    KBTS_LANGUAGE_SOUTH_SLAVEY                  :: SOUTH_SLAVEY;
    KBTS_LANGUAGE_SOUTHERN_KIWAI                :: SOUTHERN_KIWAI;
    KBTS_LANGUAGE_SOUTHERN_SAMI                 :: SOUTHERN_SAMI;
    KBTS_LANGUAGE_SOUTHERN_SOTHO                :: SOUTHERN_SOTHO;
    KBTS_LANGUAGE_SPANISH                       :: SPANISH;
    KBTS_LANGUAGE_STANDARD_MOROCCAN_TAMAZIGHT   :: STANDARD_MOROCCAN_TAMAZIGHT;
    KBTS_LANGUAGE_STRAITS_SALISH                :: STRAITS_SALISH;
    KBTS_LANGUAGE_SUKUMA                        :: SUKUMA;
    KBTS_LANGUAGE_SUNDANESE                     :: SUNDANESE;
    KBTS_LANGUAGE_SURI                          :: SURI;
    KBTS_LANGUAGE_SUTU                          :: SUTU;
    KBTS_LANGUAGE_SVAN                          :: SVAN;
    KBTS_LANGUAGE_SWADAYA_ARAMAIC               :: SWADAYA_ARAMAIC;
    KBTS_LANGUAGE_SWAHILI                       :: SWAHILI;
    KBTS_LANGUAGE_SWATI                         :: SWATI;
    KBTS_LANGUAGE_SWEDISH                       :: SWEDISH;
    KBTS_LANGUAGE_SYLHETI                       :: SYLHETI;
    KBTS_LANGUAGE_SYRIAC                        :: SYRIAC;
    KBTS_LANGUAGE_SYRIAC_EASTERN                :: SYRIAC_EASTERN;
    KBTS_LANGUAGE_SYRIAC_ESTRANGELA             :: SYRIAC_ESTRANGELA;
    KBTS_LANGUAGE_SYRIAC_WESTERN                :: SYRIAC_WESTERN;
    KBTS_LANGUAGE_TABASARAN                     :: TABASARAN;
    KBTS_LANGUAGE_TACHELHIT                     :: TACHELHIT;
    KBTS_LANGUAGE_TAGALOG                       :: TAGALOG;
    KBTS_LANGUAGE_TAHAGGART_TAMAHAQ             :: TAHAGGART_TAMAHAQ;
    KBTS_LANGUAGE_TAHITIAN                      :: TAHITIAN;
    KBTS_LANGUAGE_TAI_LAING                     :: TAI_LAING;
    KBTS_LANGUAGE_TAJIKI                        :: TAJIKI;
    KBTS_LANGUAGE_TALYSH                        :: TALYSH;
    KBTS_LANGUAGE_TAMASHEK                      :: TAMASHEK;
    KBTS_LANGUAGE_TAMASHEQ                      :: TAMASHEQ;
    KBTS_LANGUAGE_TAMAZIGHT                     :: TAMAZIGHT;
    KBTS_LANGUAGE_TAMIL                         :: TAMIL;
    KBTS_LANGUAGE_TARIFIT                       :: TARIFIT;
    KBTS_LANGUAGE_TATAR                         :: TATAR;
    KBTS_LANGUAGE_TAWALLAMMAT_TAMAJAQ           :: TAWALLAMMAT_TAMAJAQ;
    KBTS_LANGUAGE_TAY                           :: TAY;
    KBTS_LANGUAGE_TAYART_TAMAJEQ                :: TAYART_TAMAJEQ;
    KBTS_LANGUAGE_TELUGU                        :: TELUGU;
    KBTS_LANGUAGE_TEMNE                         :: TEMNE;
    KBTS_LANGUAGE_TETUM                         :: TETUM;
    KBTS_LANGUAGE_TH_CREE                       :: TH_CREE;
    KBTS_LANGUAGE_THAI                          :: THAI;
    KBTS_LANGUAGE_THAILAND_MON                  :: THAILAND_MON;
    KBTS_LANGUAGE_THOMPSON                      :: THOMPSON;
    KBTS_LANGUAGE_TIBETAN                       :: TIBETAN;
    KBTS_LANGUAGE_TIGRE                         :: TIGRE;
    KBTS_LANGUAGE_TIGRINYA                      :: TIGRINYA;
    KBTS_LANGUAGE_TIV                           :: TIV;
    KBTS_LANGUAGE_TLINGIT                       :: TLINGIT;
    KBTS_LANGUAGE_TOBO                          :: TOBO;
    KBTS_LANGUAGE_TODO                          :: TODO;
    KBTS_LANGUAGE_TOK_PISIN                     :: TOK_PISIN;
    KBTS_LANGUAGE_TOMA                          :: TOMA;
    KBTS_LANGUAGE_TONGA                         :: TONGA;
    KBTS_LANGUAGE_TONGAN                        :: TONGAN;
    KBTS_LANGUAGE_TORKI                         :: TORKI;
    KBTS_LANGUAGE_TSHANGLA                      :: TSHANGLA;
    KBTS_LANGUAGE_TSONGA                        :: TSONGA;
    KBTS_LANGUAGE_TSWANA                        :: TSWANA;
    KBTS_LANGUAGE_TULU                          :: TULU;
    KBTS_LANGUAGE_TUMBUKA                       :: TUMBUKA;
    KBTS_LANGUAGE_TUNDRA_ENETS                  :: TUNDRA_ENETS;
    KBTS_LANGUAGE_TURKISH                       :: TURKISH;
    KBTS_LANGUAGE_TURKMEN                       :: TURKMEN;
    KBTS_LANGUAGE_TUROYO_ARAMAIC                :: TUROYO_ARAMAIC;
    KBTS_LANGUAGE_TUSCARORA                     :: TUSCARORA;
    KBTS_LANGUAGE_TUVALU                        :: TUVALU;
    KBTS_LANGUAGE_TUVIN                         :: TUVIN;
    KBTS_LANGUAGE_TWI                           :: TWI;
    KBTS_LANGUAGE_TZOTZIL                       :: TZOTZIL;
    KBTS_LANGUAGE_UDI                           :: UDI;
    KBTS_LANGUAGE_UDMURT                        :: UDMURT;
    KBTS_LANGUAGE_UKRAINIAN                     :: UKRAINIAN;
    KBTS_LANGUAGE_UMBUNDU                       :: UMBUNDU;
    KBTS_LANGUAGE_UME_SAMI                      :: UME_SAMI;
    KBTS_LANGUAGE_UPPER_SAXON                   :: UPPER_SAXON;
    KBTS_LANGUAGE_UPPER_SORBIAN                 :: UPPER_SORBIAN;
    KBTS_LANGUAGE_URALIC_PHONETIC               :: URALIC_PHONETIC;
    KBTS_LANGUAGE_URDU                          :: URDU;
    KBTS_LANGUAGE_UYGHUR                        :: UYGHUR;
    KBTS_LANGUAGE_UZBEK                         :: UZBEK;
    KBTS_LANGUAGE_VENDA                         :: VENDA;
    KBTS_LANGUAGE_VENETIAN                      :: VENETIAN;
    KBTS_LANGUAGE_VIETNAMESE                    :: VIETNAMESE;
    KBTS_LANGUAGE_VLAX_ROMANI                   :: VLAX_ROMANI;
    KBTS_LANGUAGE_VOLAPUK                       :: VOLAPUK;
    KBTS_LANGUAGE_VORO                          :: VORO;
    KBTS_LANGUAGE_WA                            :: WA;
    KBTS_LANGUAGE_WACI_GBE                      :: WACI_GBE;
    KBTS_LANGUAGE_WAGDI                         :: WAGDI;
    KBTS_LANGUAGE_WAKHI                         :: WAKHI;
    KBTS_LANGUAGE_WALLOON                       :: WALLOON;
    KBTS_LANGUAGE_WARAY_WARAY                   :: WARAY_WARAY;
    KBTS_LANGUAGE_WAYANAD_CHETTI                :: WAYANAD_CHETTI;
    KBTS_LANGUAGE_WAYUU                         :: WAYUU;
    KBTS_LANGUAGE_WELSH                         :: WELSH;
    KBTS_LANGUAGE_WENDAT                        :: WENDAT;
    KBTS_LANGUAGE_WEST_CREE                     :: WEST_CREE;
    KBTS_LANGUAGE_WESTERN_CHAM                  :: WESTERN_CHAM;
    KBTS_LANGUAGE_WESTERN_KAYAH                 :: WESTERN_KAYAH;
    KBTS_LANGUAGE_WESTERN_PANJABI               :: WESTERN_PANJABI;
    KBTS_LANGUAGE_WESTERN_PWO_KAREN             :: WESTERN_PWO_KAREN;
    KBTS_LANGUAGE_WOLOF                         :: WOLOF;
    KBTS_LANGUAGE_WOODS_CREE                    :: WOODS_CREE;
    KBTS_LANGUAGE_WUDING_LUQUAN_YI              :: WUDING_LUQUAN_YI;
    KBTS_LANGUAGE_WYANDOT                       :: WYANDOT;
    KBTS_LANGUAGE_XHOSA                         :: XHOSA;
    KBTS_LANGUAGE_Y_CREE                        :: Y_CREE;
    KBTS_LANGUAGE_YAO                           :: YAO;
    KBTS_LANGUAGE_YAPESE                        :: YAPESE;
    KBTS_LANGUAGE_YI_CLASSIC                    :: YI_CLASSIC;
    KBTS_LANGUAGE_YI_MODERN                     :: YI_MODERN;
    KBTS_LANGUAGE_YIDDISH                       :: YIDDISH;
    KBTS_LANGUAGE_YORUBA                        :: YORUBA;
    KBTS_LANGUAGE_ZAMBOANGA_CHAVACANO           :: ZAMBOANGA_CHAVACANO;
    KBTS_LANGUAGE_ZANDE                         :: ZANDE;
    KBTS_LANGUAGE_ZARMA                         :: ZARMA;
    KBTS_LANGUAGE_ZAZAKI                        :: ZAZAKI;
    KBTS_LANGUAGE_ZEALANDIC                     :: ZEALANDIC;
    KBTS_LANGUAGE_ZHUANG                        :: ZHUANG;
    KBTS_LANGUAGE_ZULU                          :: ZULU;
}

kbts_break_flags :: enum u32 {
    DIRECTION :: 1;

    SCRIPT    :: 2;

    GRAPHEME  :: 4;

    WORD      :: 8;

    LINE_SOFT :: 16;

    LINE_HARD :: 32;

    LINE      :: 48;
    ANY       :: 63;

    KBTS_BREAK_FLAG_DIRECTION :: DIRECTION;

    KBTS_BREAK_FLAG_SCRIPT    :: SCRIPT;

    KBTS_BREAK_FLAG_GRAPHEME  :: GRAPHEME;

    KBTS_BREAK_FLAG_WORD      :: WORD;

    KBTS_BREAK_FLAG_LINE_SOFT :: LINE_SOFT;

    KBTS_BREAK_FLAG_LINE_HARD :: LINE_HARD;

    KBTS_BREAK_FLAG_LINE      :: LINE;
    KBTS_BREAK_FLAG_ANY       :: ANY;
}

kbts_op_kind :: u8;
kbts_op_kind_enum :: enum s32 {
    END                          :: 0;

    PRE_NORMALIZE_DOTTED_CIRCLES :: 1;
    NORMALIZE                    :: 2;
    NORMALIZE_HANGUL             :: 3;
    FLAG_JOINING_LETTERS         :: 4;
    GSUB_FEATURES                :: 5;
    GSUB_FEATURES_WITH_USER      :: 6;

    GPOS_METRICS                 :: 7;
    GPOS_FEATURES                :: 8;

    POST_GPOS_FIXUP              :: 9;
    STCH_POSTPASS                :: 10;

    COUNT                        :: 11;

    KBTS_OP_KIND_END                          :: END;

    KBTS_OP_KIND_PRE_NORMALIZE_DOTTED_CIRCLES :: PRE_NORMALIZE_DOTTED_CIRCLES;
    KBTS_OP_KIND_NORMALIZE                    :: NORMALIZE;
    KBTS_OP_KIND_NORMALIZE_HANGUL             :: NORMALIZE_HANGUL;
    KBTS_OP_KIND_FLAG_JOINING_LETTERS         :: FLAG_JOINING_LETTERS;
    KBTS_OP_KIND_GSUB_FEATURES                :: GSUB_FEATURES;
    KBTS_OP_KIND_GSUB_FEATURES_WITH_USER      :: GSUB_FEATURES_WITH_USER;

    KBTS_OP_KIND_GPOS_METRICS                 :: GPOS_METRICS;
    KBTS_OP_KIND_GPOS_FEATURES                :: GPOS_FEATURES;

    KBTS_OP_KIND_POST_GPOS_FIXUP              :: POST_GPOS_FIXUP;
    KBTS_OP_KIND_STCH_POSTPASS                :: STCH_POSTPASS;

    KBTS_OP_KIND_COUNT                        :: COUNT;
}

kbts_glyph_flags :: u32;
kbts_glyph_flags_enum :: enum s32 {
    ISOL                           :: 1;
    FINA                           :: 2;
    FIN2                           :: 4;
    FIN3                           :: 8;
    MEDI                           :: 16;
    MED2                           :: 32;
    INIT                           :: 64;

    LJMO                           :: 128;
    VJMO                           :: 256;
    TJMO                           :: 512;
    RPHF                           :: 1024;
    BLWF                           :: 2048;
    HALF                           :: 4096;
    PSTF                           :: 8192;
    ABVF                           :: 16384;
    PREF                           :: 32768;
    NUMR                           :: 65536;
    FRAC                           :: 131072;
    DNOM                           :: 262144;
    CFAR                           :: 524288;

    DO_NOT_DECOMPOSE               :: 2097152;
    FIRST_IN_MULTIPLE_SUBSTITUTION :: 4194304;
    NO_BREAK                       :: 8388608;
    CURSIVE                        :: 16777216;
    GENERATED_BY_GSUB              :: 33554432;
    USED_IN_GPOS                   :: 67108864;

    STCH_ENDPOINT                  :: 134217728;
    STCH_EXTENSION                 :: 268435456;

    LIGATURE                       :: 536870912;
    MULTIPLE_SUBSTITUTION          :: 1073741824;

    KBTS_GLYPH_FLAG_ISOL                           :: ISOL;
    KBTS_GLYPH_FLAG_FINA                           :: FINA;
    KBTS_GLYPH_FLAG_FIN2                           :: FIN2;
    KBTS_GLYPH_FLAG_FIN3                           :: FIN3;
    KBTS_GLYPH_FLAG_MEDI                           :: MEDI;
    KBTS_GLYPH_FLAG_MED2                           :: MED2;
    KBTS_GLYPH_FLAG_INIT                           :: INIT;

    KBTS_GLYPH_FLAG_LJMO                           :: LJMO;
    KBTS_GLYPH_FLAG_VJMO                           :: VJMO;
    KBTS_GLYPH_FLAG_TJMO                           :: TJMO;
    KBTS_GLYPH_FLAG_RPHF                           :: RPHF;
    KBTS_GLYPH_FLAG_BLWF                           :: BLWF;
    KBTS_GLYPH_FLAG_HALF                           :: HALF;
    KBTS_GLYPH_FLAG_PSTF                           :: PSTF;
    KBTS_GLYPH_FLAG_ABVF                           :: ABVF;
    KBTS_GLYPH_FLAG_PREF                           :: PREF;
    KBTS_GLYPH_FLAG_NUMR                           :: NUMR;
    KBTS_GLYPH_FLAG_FRAC                           :: FRAC;
    KBTS_GLYPH_FLAG_DNOM                           :: DNOM;
    KBTS_GLYPH_FLAG_CFAR                           :: CFAR;

    KBTS_GLYPH_FLAG_DO_NOT_DECOMPOSE               :: DO_NOT_DECOMPOSE;
    KBTS_GLYPH_FLAG_FIRST_IN_MULTIPLE_SUBSTITUTION :: FIRST_IN_MULTIPLE_SUBSTITUTION;
    KBTS_GLYPH_FLAG_NO_BREAK                       :: NO_BREAK;
    KBTS_GLYPH_FLAG_CURSIVE                        :: CURSIVE;
    KBTS_GLYPH_FLAG_GENERATED_BY_GSUB              :: GENERATED_BY_GSUB;
    KBTS_GLYPH_FLAG_USED_IN_GPOS                   :: USED_IN_GPOS;

    KBTS_GLYPH_FLAG_STCH_ENDPOINT                  :: STCH_ENDPOINT;
    KBTS_GLYPH_FLAG_STCH_EXTENSION                 :: STCH_EXTENSION;

    KBTS_GLYPH_FLAG_LIGATURE                       :: LIGATURE;
    KBTS_GLYPH_FLAG_MULTIPLE_SUBSTITUTION          :: MULTIPLE_SUBSTITUTION;
}

kbts_japanese_line_break_style :: enum u8 {
    STRICT :: 0;

    NORMAL :: 1;

    LOOSE  :: 2;

    COUNT  :: 3;

    KBTS_JAPANESE_LINE_BREAK_STYLE_STRICT :: STRICT;

    KBTS_JAPANESE_LINE_BREAK_STYLE_NORMAL :: NORMAL;

    KBTS_JAPANESE_LINE_BREAK_STYLE_LOOSE  :: LOOSE;

    KBTS_JAPANESE_LINE_BREAK_STYLE_COUNT  :: COUNT;
}

kbts_orientation :: u32;
kbts_orientation_enum :: enum s32 {
    HORIZONTAL :: 0;
    VERTICAL   :: 1;

    COUNT      :: 2;

    KBTS_ORIENTATION_HORIZONTAL :: HORIZONTAL;
    KBTS_ORIENTATION_VERTICAL   :: VERTICAL;

    KBTS_ORIENTATION_COUNT      :: COUNT;
}

kbts_direction :: enum u32 {
    NONE  :: 0;
    LTR   :: 1;
    RTL   :: 2;

    COUNT :: 3;

    KBTS_DIRECTION_NONE  :: NONE;
    KBTS_DIRECTION_LTR   :: LTR;
    KBTS_DIRECTION_RTL   :: RTL;

    KBTS_DIRECTION_COUNT :: COUNT;
}

kbts_unicode_joining_type :: u8;
kbts_unicode_joining_type_enum :: enum s32 {
    NONE        :: 0;
    LEFT        :: 1;
    DUAL        :: 2;
    FORCE       :: 3;
    RIGHT       :: 4;
    TRANSPARENT :: 5;
    COUNT       :: 6;

    KBTS_UNICODE_JOINING_TYPE_NONE        :: NONE;
    KBTS_UNICODE_JOINING_TYPE_LEFT        :: LEFT;
    KBTS_UNICODE_JOINING_TYPE_DUAL        :: DUAL;
    KBTS_UNICODE_JOINING_TYPE_FORCE       :: FORCE;
    KBTS_UNICODE_JOINING_TYPE_RIGHT       :: RIGHT;
    KBTS_UNICODE_JOINING_TYPE_TRANSPARENT :: TRANSPARENT;
    KBTS_UNICODE_JOINING_TYPE_COUNT       :: COUNT;
}

kbts_unicode_flags :: u8;
kbts_unicode_flag_enum :: enum s32 {
    MODIFIER_COMBINING_MARK :: 1;
    DEFAULT_IGNORABLE       :: 2;
    OPEN_BRACKET            :: 4;
    CLOSE_BRACKET           :: 8;
    PART_OF_WORD            :: 16;
    DECIMAL_DIGIT           :: 32;
    NON_SPACING_MARK        :: 64;

    KBTS_UNICODE_FLAG_MODIFIER_COMBINING_MARK :: MODIFIER_COMBINING_MARK;
    KBTS_UNICODE_FLAG_DEFAULT_IGNORABLE       :: DEFAULT_IGNORABLE;
    KBTS_UNICODE_FLAG_OPEN_BRACKET            :: OPEN_BRACKET;
    KBTS_UNICODE_FLAG_CLOSE_BRACKET           :: CLOSE_BRACKET;
    KBTS_UNICODE_FLAG_PART_OF_WORD            :: PART_OF_WORD;
    KBTS_UNICODE_FLAG_DECIMAL_DIGIT           :: DECIMAL_DIGIT;
    KBTS_UNICODE_FLAG_NON_SPACING_MARK        :: NON_SPACING_MARK;
}

kbts_unicode_bidirectional_class :: u8;
kbts_unicode_bidirectional_class_enum :: enum s32 {
    NI    :: 0;
    L     :: 1;
    R     :: 2;
    NSM   :: 3;
    AL    :: 4;
    AN    :: 5;
    EN    :: 6;
    ES    :: 7;
    ET    :: 8;
    CS    :: 9;
    COUNT :: 10;

    KBTS_UNICODE_BIDIRECTIONAL_CLASS_NI    :: NI;
    KBTS_UNICODE_BIDIRECTIONAL_CLASS_L     :: L;
    KBTS_UNICODE_BIDIRECTIONAL_CLASS_R     :: R;
    KBTS_UNICODE_BIDIRECTIONAL_CLASS_NSM   :: NSM;
    KBTS_UNICODE_BIDIRECTIONAL_CLASS_AL    :: AL;
    KBTS_UNICODE_BIDIRECTIONAL_CLASS_AN    :: AN;
    KBTS_UNICODE_BIDIRECTIONAL_CLASS_EN    :: EN;
    KBTS_UNICODE_BIDIRECTIONAL_CLASS_ES    :: ES;
    KBTS_UNICODE_BIDIRECTIONAL_CLASS_ET    :: ET;
    KBTS_UNICODE_BIDIRECTIONAL_CLASS_CS    :: CS;
    KBTS_UNICODE_BIDIRECTIONAL_CLASS_COUNT :: COUNT;
}

kbts_line_break_class :: u8;
kbts_line_break_class_enum :: enum s32 {
    Onea          :: 0;
    Oea           :: 1;
    Ope           :: 2;
    BK            :: 3;
    CR            :: 4;
    LF            :: 5;
    NL            :: 6;
    SP            :: 7;
    ZW            :: 8;
    WJ            :: 9;
    GLnea         :: 10;
    GLea          :: 11;
    CLnea         :: 12;
    CLea          :: 13;
    CPnea         :: 14;
    CPea          :: 15;
    EXnea         :: 16;
    EXea          :: 17;
    SY            :: 18;
    BAnea         :: 19;
    BAea          :: 20;
    OPnea         :: 21;
    OPea          :: 22;
    QU            :: 23;
    QUPi          :: 24;
    QUPf          :: 25;
    IS            :: 26;
    NSnea         :: 27;
    NSea          :: 28;
    B2            :: 29;
    CB            :: 30;
    HY            :: 31;
    HYPHEN        :: 32;
    INnea         :: 33;
    INea          :: 34;
    BB            :: 35;
    HL            :: 36;
    ALnea         :: 37;
    ALea          :: 38;
    NU            :: 39;
    PRnea         :: 40;
    PRea          :: 41;
    IDnea         :: 42;
    IDea          :: 43;
    IDpe          :: 44;
    EBnea         :: 45;
    EBea          :: 46;
    EM            :: 47;
    POnea         :: 48;
    POea          :: 49;
    JL            :: 50;
    JV            :: 51;
    JT            :: 52;
    H2            :: 53;
    H3            :: 54;
    AP            :: 55;
    AK            :: 56;
    DOTTED_CIRCLE :: 57;
    AS            :: 58;
    VF            :: 59;
    VI            :: 60;
    RI            :: 61;

    COUNT         :: 62;

    CM            :: 63;
    ZWJ           :: 64;

    CJ            :: 65;

    SOT           :: 66;
    EOT           :: 67;

    KBTS_LINE_BREAK_CLASS_Onea          :: Onea;
    KBTS_LINE_BREAK_CLASS_Oea           :: Oea;
    KBTS_LINE_BREAK_CLASS_Ope           :: Ope;
    KBTS_LINE_BREAK_CLASS_BK            :: BK;
    KBTS_LINE_BREAK_CLASS_CR            :: CR;
    KBTS_LINE_BREAK_CLASS_LF            :: LF;
    KBTS_LINE_BREAK_CLASS_NL            :: NL;
    KBTS_LINE_BREAK_CLASS_SP            :: SP;
    KBTS_LINE_BREAK_CLASS_ZW            :: ZW;
    KBTS_LINE_BREAK_CLASS_WJ            :: WJ;
    KBTS_LINE_BREAK_CLASS_GLnea         :: GLnea;
    KBTS_LINE_BREAK_CLASS_GLea          :: GLea;
    KBTS_LINE_BREAK_CLASS_CLnea         :: CLnea;
    KBTS_LINE_BREAK_CLASS_CLea          :: CLea;
    KBTS_LINE_BREAK_CLASS_CPnea         :: CPnea;
    KBTS_LINE_BREAK_CLASS_CPea          :: CPea;
    KBTS_LINE_BREAK_CLASS_EXnea         :: EXnea;
    KBTS_LINE_BREAK_CLASS_EXea          :: EXea;
    KBTS_LINE_BREAK_CLASS_SY            :: SY;
    KBTS_LINE_BREAK_CLASS_BAnea         :: BAnea;
    KBTS_LINE_BREAK_CLASS_BAea          :: BAea;
    KBTS_LINE_BREAK_CLASS_OPnea         :: OPnea;
    KBTS_LINE_BREAK_CLASS_OPea          :: OPea;
    KBTS_LINE_BREAK_CLASS_QU            :: QU;
    KBTS_LINE_BREAK_CLASS_QUPi          :: QUPi;
    KBTS_LINE_BREAK_CLASS_QUPf          :: QUPf;
    KBTS_LINE_BREAK_CLASS_IS            :: IS;
    KBTS_LINE_BREAK_CLASS_NSnea         :: NSnea;
    KBTS_LINE_BREAK_CLASS_NSea          :: NSea;
    KBTS_LINE_BREAK_CLASS_B2            :: B2;
    KBTS_LINE_BREAK_CLASS_CB            :: CB;
    KBTS_LINE_BREAK_CLASS_HY            :: HY;
    KBTS_LINE_BREAK_CLASS_HYPHEN        :: HYPHEN;
    KBTS_LINE_BREAK_CLASS_INnea         :: INnea;
    KBTS_LINE_BREAK_CLASS_INea          :: INea;
    KBTS_LINE_BREAK_CLASS_BB            :: BB;
    KBTS_LINE_BREAK_CLASS_HL            :: HL;
    KBTS_LINE_BREAK_CLASS_ALnea         :: ALnea;
    KBTS_LINE_BREAK_CLASS_ALea          :: ALea;
    KBTS_LINE_BREAK_CLASS_NU            :: NU;
    KBTS_LINE_BREAK_CLASS_PRnea         :: PRnea;
    KBTS_LINE_BREAK_CLASS_PRea          :: PRea;
    KBTS_LINE_BREAK_CLASS_IDnea         :: IDnea;
    KBTS_LINE_BREAK_CLASS_IDea          :: IDea;
    KBTS_LINE_BREAK_CLASS_IDpe          :: IDpe;
    KBTS_LINE_BREAK_CLASS_EBnea         :: EBnea;
    KBTS_LINE_BREAK_CLASS_EBea          :: EBea;
    KBTS_LINE_BREAK_CLASS_EM            :: EM;
    KBTS_LINE_BREAK_CLASS_POnea         :: POnea;
    KBTS_LINE_BREAK_CLASS_POea          :: POea;
    KBTS_LINE_BREAK_CLASS_JL            :: JL;
    KBTS_LINE_BREAK_CLASS_JV            :: JV;
    KBTS_LINE_BREAK_CLASS_JT            :: JT;
    KBTS_LINE_BREAK_CLASS_H2            :: H2;
    KBTS_LINE_BREAK_CLASS_H3            :: H3;
    KBTS_LINE_BREAK_CLASS_AP            :: AP;
    KBTS_LINE_BREAK_CLASS_AK            :: AK;
    KBTS_LINE_BREAK_CLASS_DOTTED_CIRCLE :: DOTTED_CIRCLE;
    KBTS_LINE_BREAK_CLASS_AS            :: AS;
    KBTS_LINE_BREAK_CLASS_VF            :: VF;
    KBTS_LINE_BREAK_CLASS_VI            :: VI;
    KBTS_LINE_BREAK_CLASS_RI            :: RI;

    KBTS_LINE_BREAK_CLASS_COUNT         :: COUNT;

    KBTS_LINE_BREAK_CLASS_CM            :: CM;
    KBTS_LINE_BREAK_CLASS_ZWJ           :: ZWJ;

    KBTS_LINE_BREAK_CLASS_CJ            :: CJ;

    KBTS_LINE_BREAK_CLASS_SOT           :: SOT;
    KBTS_LINE_BREAK_CLASS_EOT           :: EOT;
}

kbts_word_break_class :: u8;
kbts_word_break_class_enum :: enum s32 {
    Onep  :: 0;
    Oep   :: 1;
    CR    :: 2;
    LF    :: 3;
    NL    :: 4;
    EX    :: 5;
    ZWJ   :: 6;
    RI    :: 7;
    FO    :: 8;
    KA    :: 9;
    HL    :: 10;
    ALnep :: 11;
    ALep  :: 12;
    SQ    :: 13;
    DQ    :: 14;
    MNL   :: 15;
    ML    :: 16;
    MN    :: 17;
    NM    :: 18;
    ENL   :: 19;
    WSS   :: 20;

    SOT   :: 21;

    KBTS_WORD_BREAK_CLASS_Onep  :: Onep;
    KBTS_WORD_BREAK_CLASS_Oep   :: Oep;
    KBTS_WORD_BREAK_CLASS_CR    :: CR;
    KBTS_WORD_BREAK_CLASS_LF    :: LF;
    KBTS_WORD_BREAK_CLASS_NL    :: NL;
    KBTS_WORD_BREAK_CLASS_EX    :: EX;
    KBTS_WORD_BREAK_CLASS_ZWJ   :: ZWJ;
    KBTS_WORD_BREAK_CLASS_RI    :: RI;
    KBTS_WORD_BREAK_CLASS_FO    :: FO;
    KBTS_WORD_BREAK_CLASS_KA    :: KA;
    KBTS_WORD_BREAK_CLASS_HL    :: HL;
    KBTS_WORD_BREAK_CLASS_ALnep :: ALnep;
    KBTS_WORD_BREAK_CLASS_ALep  :: ALep;
    KBTS_WORD_BREAK_CLASS_SQ    :: SQ;
    KBTS_WORD_BREAK_CLASS_DQ    :: DQ;
    KBTS_WORD_BREAK_CLASS_MNL   :: MNL;
    KBTS_WORD_BREAK_CLASS_ML    :: ML;
    KBTS_WORD_BREAK_CLASS_MN    :: MN;
    KBTS_WORD_BREAK_CLASS_NM    :: NM;
    KBTS_WORD_BREAK_CLASS_ENL   :: ENL;
    KBTS_WORD_BREAK_CLASS_WSS   :: WSS;

    KBTS_WORD_BREAK_CLASS_SOT   :: SOT;
}

kbts_shaper :: u32;
kbts_shaper_enum :: enum s32 {
    DEFAULT :: 0;
    ARABIC  :: 1;
    HANGUL  :: 2;
    HEBREW  :: 3;
    INDIC   :: 4;
    KHMER   :: 5;
    MYANMAR :: 6;
    TIBETAN :: 7;
    USE     :: 8;

    COUNT   :: 9;

    KBTS_SHAPER_DEFAULT :: DEFAULT;
    KBTS_SHAPER_ARABIC  :: ARABIC;
    KBTS_SHAPER_HANGUL  :: HANGUL;
    KBTS_SHAPER_HEBREW  :: HEBREW;
    KBTS_SHAPER_INDIC   :: INDIC;
    KBTS_SHAPER_KHMER   :: KHMER;
    KBTS_SHAPER_MYANMAR :: MYANMAR;
    KBTS_SHAPER_TIBETAN :: TIBETAN;
    KBTS_SHAPER_USE     :: USE;

    KBTS_SHAPER_COUNT   :: COUNT;
}

kbts_script_tag :: u32;
kbts_script_tag_enum :: enum s32 {
    DONT_KNOW                 :: 538976288;
    ADLAM                     :: 1835820129;
    AHOM                      :: 1836017761;
    ANATOLIAN_HIEROGLYPHS     :: 2004184168;
    ARABIC                    :: 1650553441;
    ARMENIAN                  :: 1852666465;
    AVESTAN                   :: 1953724001;
    BALINESE                  :: 1768710498;
    BAMUM                     :: 1970102626;
    BASSA_VAH                 :: 1936941410;
    BATAK                     :: 1802789218;
    BENGALI                   :: 845639266;
    BHAIKSUKI                 :: 1936418914;
    BOPOMOFO                  :: 1869639522;
    BRAHMI                    :: 1751216738;
    BUGINESE                  :: 1768387938;
    BUHID                     :: 1684567394;
    CANADIAN_SYLLABICS        :: 1936613731;
    CARIAN                    :: 1769103715;
    CAUCASIAN_ALBANIAN        :: 1651009377;
    CHAKMA                    :: 1835753827;
    CHAM                      :: 1835100259;
    CHEROKEE                  :: 1919248483;
    CHORASMIAN                :: 1936877667;
    CJK_IDEOGRAPHIC           :: 1768841576;
    COPTIC                    :: 1953525603;
    CYPRIOT_SYLLABARY         :: 1953656931;
    CYPRO_MINOAN              :: 1852665955;
    CYRILLIC                  :: 1819441507;
    DEFAULT                   :: 1414284868;
    DEFAULT2                  :: 1414284868;
    DESERET                   :: 1953657700;
    DEVANAGARI                :: 846620004;
    DIVES_AKURU               :: 1801546084;
    DOGRA                     :: 1919381348;
    DUPLOYAN                  :: 1819309412;
    EGYPTIAN_HIEROGLYPHS      :: 1887004517;
    ELBASAN                   :: 1633840229;
    ELYMAIC                   :: 1836674149;
    ETHIOPIC                  :: 1768453221;
    GARAY                     :: 1634885991;
    GEORGIAN                  :: 1919903079;
    GLAGOLITIC                :: 1734437991;
    GOTHIC                    :: 1752461159;
    GRANTHA                   :: 1851880039;
    GREEK                     :: 1801810535;
    GUJARATI                  :: 846359143;
    GUNJALA_GONDI             :: 1735290727;
    GURMUKHI                  :: 846361959;
    GURUNG_KHEMA              :: 1751872871;
    HANGUL                    :: 1735287144;
    HANIFI_ROHINGYA           :: 1734897522;
    HANUNOO                   :: 1869504872;
    HATRAN                    :: 1920229736;
    HEBREW                    :: 1919051112;
    HIRAGANA                  :: 1634623851;
    IMPERIAL_ARAMAIC          :: 1768780385;
    INSCRIPTIONAL_PAHLAVI     :: 1768712304;
    INSCRIPTIONAL_PARTHIAN    :: 1769239152;
    JAVANESE                  :: 1635148138;
    KAITHI                    :: 1768453227;
    KANNADA                   :: 845442667;
    KATAKANA                  :: 1634623851;
    KAWI                      :: 1769431403;
    KAYAH_LI                  :: 1768710507;
    KHAROSHTHI                :: 1918986347;
    KHITAN_SMALL_SCRIPT       :: 1937009003;
    KHMER                     :: 1919772779;
    KHOJKI                    :: 1785686123;
    KHUDAWADI                 :: 1684957555;
    KIRAT_RAI                 :: 1767993963;
    LAO                       :: 544170348;
    LATIN                     :: 1853120876;
    LEPCHA                    :: 1668310380;
    LIMBU                     :: 1651337580;
    LINEAR_A                  :: 1634625900;
    LINEAR_B                  :: 1651403116;
    LISU                      :: 1970497900;
    LYCIAN                    :: 1768126828;
    LYDIAN                    :: 1768192364;
    MAHAJANI                  :: 1785225581;
    MAKASAR                   :: 1634427245;
    MALAYALAM                 :: 846031981;
    MANDAIC                   :: 1684955501;
    MANICHAEAN                :: 1768841581;
    MARCHEN                   :: 1668440429;
    MASARAM_GONDI             :: 1835954023;
    MEDEFAIDRIN               :: 1717855597;
    MEETEI_MAYEK              :: 1768256621;
    MENDE_KIKAKUI             :: 1684956525;
    MEROITIC_CURSIVE          :: 1668441453;
    MEROITIC_HIEROGLYPHS      :: 1869768045;
    MIAO                      :: 1685220464;
    MODI                      :: 1768189805;
    MONGOLIAN                 :: 1735290733;
    MRO                       :: 1869574765;
    MULTANI                   :: 1953265005;
    MYANMAR                   :: 846035309;
    NABATAEAN                 :: 1952539246;
    NAG_MUNDARI               :: 1835491694;
    NANDINAGARI               :: 1684955502;
    NEWA                      :: 1635214702;
    NEW_TAI_LUE               :: 1970037108;
    NKO                       :: 544172910;
    NUSHU                     :: 1969779566;
    NYIAKENG_PUACHUE_HMONG    :: 1886285160;
    OGHAM                     :: 1835100015;
    OL_CHIKI                  :: 1801677935;
    OL_ONAL                   :: 1868656239;
    OLD_ITALIC                :: 1818326121;
    OLD_HUNGARIAN             :: 1735292264;
    OLD_NORTH_ARABIAN         :: 1651663214;
    OLD_PERMIC                :: 1836213616;
    OLD_PERSIAN_CUNEIFORM     :: 1868918904;
    OLD_SOGDIAN               :: 1869049715;
    OLD_SOUTH_ARABIAN         :: 1651663219;
    OLD_TURKIC                :: 1751872111;
    OLD_UYGHUR                :: 1919382895;
    ODIA                      :: 846819951;
    OSAGE                     :: 1701278575;
    OSMANYA                   :: 1634562927;
    PAHAWH_HMONG              :: 1735290216;
    PALMYRENE                 :: 1835819376;
    PAU_CIN_HAU               :: 1668637040;
    PHAGS_PA                  :: 1734436976;
    PHOENICIAN                :: 2020501616;
    PSALTER_PAHLAVI           :: 1886152816;
    REJANG                    :: 1735289458;
    RUNIC                     :: 1919841650;
    SAMARITAN                 :: 1919770995;
    SAURASHTRA                :: 1920295283;
    SHARADA                   :: 1685219443;
    SHAVIAN                   :: 2002872435;
    SIDDHAM                   :: 1684302195;
    SIGN_WRITING              :: 2003724147;
    SOGDIAN                   :: 1684500339;
    SINHALA                   :: 1752066419;
    SORA_SOMPENG              :: 1634889587;
    SOYOMBO                   :: 1870229363;
    SUMERO_AKKADIAN_CUNEIFORM :: 2020963192;
    SUNDANESE                 :: 1684960627;
    SUNUWAR                   :: 1970173299;
    SYLOTI_NAGRI              :: 1869379955;
    SYRIAC                    :: 1668446579;
    TAGALOG                   :: 1735157620;
    TAGBANWA                  :: 1650942324;
    TAI_LE                    :: 1701601652;
    TAI_THAM                  :: 1634623852;
    TAI_VIET                  :: 1953915252;
    TAKRI                     :: 1919639924;
    TAMIL                     :: 845966708;
    TANGSA                    :: 1634954868;
    TANGUT                    :: 1735287156;
    TELUGU                    :: 845964660;
    THAANA                    :: 1633773684;
    THAI                      :: 1767991412;
    TIBETAN                   :: 1952606580;
    TIFINAGH                  :: 1735288436;
    TIRHUTA                   :: 1752328564;
    TODHRI                    :: 1919184756;
    TOTO                      :: 1869901684;
    TULU_TIGALARI             :: 1735685492;
    UGARITIC_CUNEIFORM        :: 1918986101;
    VAI                       :: 543777142;
    VITHKUQI                  :: 1752459638;
    WANCHO                    :: 1869112183;
    WARANG_CITI               :: 1634886007;
    YEZIDI                    :: 1769629049;
    YI                        :: 538995065;
    ZANABAZAR_SQUARE          :: 1651401082;

    KBTS_SCRIPT_TAG_DONT_KNOW                 :: DONT_KNOW;
    KBTS_SCRIPT_TAG_ADLAM                     :: ADLAM;
    KBTS_SCRIPT_TAG_AHOM                      :: AHOM;
    KBTS_SCRIPT_TAG_ANATOLIAN_HIEROGLYPHS     :: ANATOLIAN_HIEROGLYPHS;
    KBTS_SCRIPT_TAG_ARABIC                    :: ARABIC;
    KBTS_SCRIPT_TAG_ARMENIAN                  :: ARMENIAN;
    KBTS_SCRIPT_TAG_AVESTAN                   :: AVESTAN;
    KBTS_SCRIPT_TAG_BALINESE                  :: BALINESE;
    KBTS_SCRIPT_TAG_BAMUM                     :: BAMUM;
    KBTS_SCRIPT_TAG_BASSA_VAH                 :: BASSA_VAH;
    KBTS_SCRIPT_TAG_BATAK                     :: BATAK;
    KBTS_SCRIPT_TAG_BENGALI                   :: BENGALI;
    KBTS_SCRIPT_TAG_BHAIKSUKI                 :: BHAIKSUKI;
    KBTS_SCRIPT_TAG_BOPOMOFO                  :: BOPOMOFO;
    KBTS_SCRIPT_TAG_BRAHMI                    :: BRAHMI;
    KBTS_SCRIPT_TAG_BUGINESE                  :: BUGINESE;
    KBTS_SCRIPT_TAG_BUHID                     :: BUHID;
    KBTS_SCRIPT_TAG_CANADIAN_SYLLABICS        :: CANADIAN_SYLLABICS;
    KBTS_SCRIPT_TAG_CARIAN                    :: CARIAN;
    KBTS_SCRIPT_TAG_CAUCASIAN_ALBANIAN        :: CAUCASIAN_ALBANIAN;
    KBTS_SCRIPT_TAG_CHAKMA                    :: CHAKMA;
    KBTS_SCRIPT_TAG_CHAM                      :: CHAM;
    KBTS_SCRIPT_TAG_CHEROKEE                  :: CHEROKEE;
    KBTS_SCRIPT_TAG_CHORASMIAN                :: CHORASMIAN;
    KBTS_SCRIPT_TAG_CJK_IDEOGRAPHIC           :: CJK_IDEOGRAPHIC;
    KBTS_SCRIPT_TAG_COPTIC                    :: COPTIC;
    KBTS_SCRIPT_TAG_CYPRIOT_SYLLABARY         :: CYPRIOT_SYLLABARY;
    KBTS_SCRIPT_TAG_CYPRO_MINOAN              :: CYPRO_MINOAN;
    KBTS_SCRIPT_TAG_CYRILLIC                  :: CYRILLIC;
    KBTS_SCRIPT_TAG_DEFAULT                   :: DEFAULT;
    KBTS_SCRIPT_TAG_DEFAULT2                  :: DEFAULT2;
    KBTS_SCRIPT_TAG_DESERET                   :: DESERET;
    KBTS_SCRIPT_TAG_DEVANAGARI                :: DEVANAGARI;
    KBTS_SCRIPT_TAG_DIVES_AKURU               :: DIVES_AKURU;
    KBTS_SCRIPT_TAG_DOGRA                     :: DOGRA;
    KBTS_SCRIPT_TAG_DUPLOYAN                  :: DUPLOYAN;
    KBTS_SCRIPT_TAG_EGYPTIAN_HIEROGLYPHS      :: EGYPTIAN_HIEROGLYPHS;
    KBTS_SCRIPT_TAG_ELBASAN                   :: ELBASAN;
    KBTS_SCRIPT_TAG_ELYMAIC                   :: ELYMAIC;
    KBTS_SCRIPT_TAG_ETHIOPIC                  :: ETHIOPIC;
    KBTS_SCRIPT_TAG_GARAY                     :: GARAY;
    KBTS_SCRIPT_TAG_GEORGIAN                  :: GEORGIAN;
    KBTS_SCRIPT_TAG_GLAGOLITIC                :: GLAGOLITIC;
    KBTS_SCRIPT_TAG_GOTHIC                    :: GOTHIC;
    KBTS_SCRIPT_TAG_GRANTHA                   :: GRANTHA;
    KBTS_SCRIPT_TAG_GREEK                     :: GREEK;
    KBTS_SCRIPT_TAG_GUJARATI                  :: GUJARATI;
    KBTS_SCRIPT_TAG_GUNJALA_GONDI             :: GUNJALA_GONDI;
    KBTS_SCRIPT_TAG_GURMUKHI                  :: GURMUKHI;
    KBTS_SCRIPT_TAG_GURUNG_KHEMA              :: GURUNG_KHEMA;
    KBTS_SCRIPT_TAG_HANGUL                    :: HANGUL;
    KBTS_SCRIPT_TAG_HANIFI_ROHINGYA           :: HANIFI_ROHINGYA;
    KBTS_SCRIPT_TAG_HANUNOO                   :: HANUNOO;
    KBTS_SCRIPT_TAG_HATRAN                    :: HATRAN;
    KBTS_SCRIPT_TAG_HEBREW                    :: HEBREW;
    KBTS_SCRIPT_TAG_HIRAGANA                  :: HIRAGANA;
    KBTS_SCRIPT_TAG_IMPERIAL_ARAMAIC          :: IMPERIAL_ARAMAIC;
    KBTS_SCRIPT_TAG_INSCRIPTIONAL_PAHLAVI     :: INSCRIPTIONAL_PAHLAVI;
    KBTS_SCRIPT_TAG_INSCRIPTIONAL_PARTHIAN    :: INSCRIPTIONAL_PARTHIAN;
    KBTS_SCRIPT_TAG_JAVANESE                  :: JAVANESE;
    KBTS_SCRIPT_TAG_KAITHI                    :: KAITHI;
    KBTS_SCRIPT_TAG_KANNADA                   :: KANNADA;
    KBTS_SCRIPT_TAG_KATAKANA                  :: KATAKANA;
    KBTS_SCRIPT_TAG_KAWI                      :: KAWI;
    KBTS_SCRIPT_TAG_KAYAH_LI                  :: KAYAH_LI;
    KBTS_SCRIPT_TAG_KHAROSHTHI                :: KHAROSHTHI;
    KBTS_SCRIPT_TAG_KHITAN_SMALL_SCRIPT       :: KHITAN_SMALL_SCRIPT;
    KBTS_SCRIPT_TAG_KHMER                     :: KHMER;
    KBTS_SCRIPT_TAG_KHOJKI                    :: KHOJKI;
    KBTS_SCRIPT_TAG_KHUDAWADI                 :: KHUDAWADI;
    KBTS_SCRIPT_TAG_KIRAT_RAI                 :: KIRAT_RAI;
    KBTS_SCRIPT_TAG_LAO                       :: LAO;
    KBTS_SCRIPT_TAG_LATIN                     :: LATIN;
    KBTS_SCRIPT_TAG_LEPCHA                    :: LEPCHA;
    KBTS_SCRIPT_TAG_LIMBU                     :: LIMBU;
    KBTS_SCRIPT_TAG_LINEAR_A                  :: LINEAR_A;
    KBTS_SCRIPT_TAG_LINEAR_B                  :: LINEAR_B;
    KBTS_SCRIPT_TAG_LISU                      :: LISU;
    KBTS_SCRIPT_TAG_LYCIAN                    :: LYCIAN;
    KBTS_SCRIPT_TAG_LYDIAN                    :: LYDIAN;
    KBTS_SCRIPT_TAG_MAHAJANI                  :: MAHAJANI;
    KBTS_SCRIPT_TAG_MAKASAR                   :: MAKASAR;
    KBTS_SCRIPT_TAG_MALAYALAM                 :: MALAYALAM;
    KBTS_SCRIPT_TAG_MANDAIC                   :: MANDAIC;
    KBTS_SCRIPT_TAG_MANICHAEAN                :: MANICHAEAN;
    KBTS_SCRIPT_TAG_MARCHEN                   :: MARCHEN;
    KBTS_SCRIPT_TAG_MASARAM_GONDI             :: MASARAM_GONDI;
    KBTS_SCRIPT_TAG_MEDEFAIDRIN               :: MEDEFAIDRIN;
    KBTS_SCRIPT_TAG_MEETEI_MAYEK              :: MEETEI_MAYEK;
    KBTS_SCRIPT_TAG_MENDE_KIKAKUI             :: MENDE_KIKAKUI;
    KBTS_SCRIPT_TAG_MEROITIC_CURSIVE          :: MEROITIC_CURSIVE;
    KBTS_SCRIPT_TAG_MEROITIC_HIEROGLYPHS      :: MEROITIC_HIEROGLYPHS;
    KBTS_SCRIPT_TAG_MIAO                      :: MIAO;
    KBTS_SCRIPT_TAG_MODI                      :: MODI;
    KBTS_SCRIPT_TAG_MONGOLIAN                 :: MONGOLIAN;
    KBTS_SCRIPT_TAG_MRO                       :: MRO;
    KBTS_SCRIPT_TAG_MULTANI                   :: MULTANI;
    KBTS_SCRIPT_TAG_MYANMAR                   :: MYANMAR;
    KBTS_SCRIPT_TAG_NABATAEAN                 :: NABATAEAN;
    KBTS_SCRIPT_TAG_NAG_MUNDARI               :: NAG_MUNDARI;
    KBTS_SCRIPT_TAG_NANDINAGARI               :: NANDINAGARI;
    KBTS_SCRIPT_TAG_NEWA                      :: NEWA;
    KBTS_SCRIPT_TAG_NEW_TAI_LUE               :: NEW_TAI_LUE;
    KBTS_SCRIPT_TAG_NKO                       :: NKO;
    KBTS_SCRIPT_TAG_NUSHU                     :: NUSHU;
    KBTS_SCRIPT_TAG_NYIAKENG_PUACHUE_HMONG    :: NYIAKENG_PUACHUE_HMONG;
    KBTS_SCRIPT_TAG_OGHAM                     :: OGHAM;
    KBTS_SCRIPT_TAG_OL_CHIKI                  :: OL_CHIKI;
    KBTS_SCRIPT_TAG_OL_ONAL                   :: OL_ONAL;
    KBTS_SCRIPT_TAG_OLD_ITALIC                :: OLD_ITALIC;
    KBTS_SCRIPT_TAG_OLD_HUNGARIAN             :: OLD_HUNGARIAN;
    KBTS_SCRIPT_TAG_OLD_NORTH_ARABIAN         :: OLD_NORTH_ARABIAN;
    KBTS_SCRIPT_TAG_OLD_PERMIC                :: OLD_PERMIC;
    KBTS_SCRIPT_TAG_OLD_PERSIAN_CUNEIFORM     :: OLD_PERSIAN_CUNEIFORM;
    KBTS_SCRIPT_TAG_OLD_SOGDIAN               :: OLD_SOGDIAN;
    KBTS_SCRIPT_TAG_OLD_SOUTH_ARABIAN         :: OLD_SOUTH_ARABIAN;
    KBTS_SCRIPT_TAG_OLD_TURKIC                :: OLD_TURKIC;
    KBTS_SCRIPT_TAG_OLD_UYGHUR                :: OLD_UYGHUR;
    KBTS_SCRIPT_TAG_ODIA                      :: ODIA;
    KBTS_SCRIPT_TAG_OSAGE                     :: OSAGE;
    KBTS_SCRIPT_TAG_OSMANYA                   :: OSMANYA;
    KBTS_SCRIPT_TAG_PAHAWH_HMONG              :: PAHAWH_HMONG;
    KBTS_SCRIPT_TAG_PALMYRENE                 :: PALMYRENE;
    KBTS_SCRIPT_TAG_PAU_CIN_HAU               :: PAU_CIN_HAU;
    KBTS_SCRIPT_TAG_PHAGS_PA                  :: PHAGS_PA;
    KBTS_SCRIPT_TAG_PHOENICIAN                :: PHOENICIAN;
    KBTS_SCRIPT_TAG_PSALTER_PAHLAVI           :: PSALTER_PAHLAVI;
    KBTS_SCRIPT_TAG_REJANG                    :: REJANG;
    KBTS_SCRIPT_TAG_RUNIC                     :: RUNIC;
    KBTS_SCRIPT_TAG_SAMARITAN                 :: SAMARITAN;
    KBTS_SCRIPT_TAG_SAURASHTRA                :: SAURASHTRA;
    KBTS_SCRIPT_TAG_SHARADA                   :: SHARADA;
    KBTS_SCRIPT_TAG_SHAVIAN                   :: SHAVIAN;
    KBTS_SCRIPT_TAG_SIDDHAM                   :: SIDDHAM;
    KBTS_SCRIPT_TAG_SIGN_WRITING              :: SIGN_WRITING;
    KBTS_SCRIPT_TAG_SOGDIAN                   :: SOGDIAN;
    KBTS_SCRIPT_TAG_SINHALA                   :: SINHALA;
    KBTS_SCRIPT_TAG_SORA_SOMPENG              :: SORA_SOMPENG;
    KBTS_SCRIPT_TAG_SOYOMBO                   :: SOYOMBO;
    KBTS_SCRIPT_TAG_SUMERO_AKKADIAN_CUNEIFORM :: SUMERO_AKKADIAN_CUNEIFORM;
    KBTS_SCRIPT_TAG_SUNDANESE                 :: SUNDANESE;
    KBTS_SCRIPT_TAG_SUNUWAR                   :: SUNUWAR;
    KBTS_SCRIPT_TAG_SYLOTI_NAGRI              :: SYLOTI_NAGRI;
    KBTS_SCRIPT_TAG_SYRIAC                    :: SYRIAC;
    KBTS_SCRIPT_TAG_TAGALOG                   :: TAGALOG;
    KBTS_SCRIPT_TAG_TAGBANWA                  :: TAGBANWA;
    KBTS_SCRIPT_TAG_TAI_LE                    :: TAI_LE;
    KBTS_SCRIPT_TAG_TAI_THAM                  :: TAI_THAM;
    KBTS_SCRIPT_TAG_TAI_VIET                  :: TAI_VIET;
    KBTS_SCRIPT_TAG_TAKRI                     :: TAKRI;
    KBTS_SCRIPT_TAG_TAMIL                     :: TAMIL;
    KBTS_SCRIPT_TAG_TANGSA                    :: TANGSA;
    KBTS_SCRIPT_TAG_TANGUT                    :: TANGUT;
    KBTS_SCRIPT_TAG_TELUGU                    :: TELUGU;
    KBTS_SCRIPT_TAG_THAANA                    :: THAANA;
    KBTS_SCRIPT_TAG_THAI                      :: THAI;
    KBTS_SCRIPT_TAG_TIBETAN                   :: TIBETAN;
    KBTS_SCRIPT_TAG_TIFINAGH                  :: TIFINAGH;
    KBTS_SCRIPT_TAG_TIRHUTA                   :: TIRHUTA;
    KBTS_SCRIPT_TAG_TODHRI                    :: TODHRI;
    KBTS_SCRIPT_TAG_TOTO                      :: TOTO;
    KBTS_SCRIPT_TAG_TULU_TIGALARI             :: TULU_TIGALARI;
    KBTS_SCRIPT_TAG_UGARITIC_CUNEIFORM        :: UGARITIC_CUNEIFORM;
    KBTS_SCRIPT_TAG_VAI                       :: VAI;
    KBTS_SCRIPT_TAG_VITHKUQI                  :: VITHKUQI;
    KBTS_SCRIPT_TAG_WANCHO                    :: WANCHO;
    KBTS_SCRIPT_TAG_WARANG_CITI               :: WARANG_CITI;
    KBTS_SCRIPT_TAG_YEZIDI                    :: YEZIDI;
    KBTS_SCRIPT_TAG_YI                        :: YI;
    KBTS_SCRIPT_TAG_ZANABAZAR_SQUARE          :: ZANABAZAR_SQUARE;
}

kbts_script :: enum u32 {
    DONT_KNOW                 :: 0;
    ADLAM                     :: 1;
    AHOM                      :: 2;
    ANATOLIAN_HIEROGLYPHS     :: 3;
    ARABIC                    :: 4;
    ARMENIAN                  :: 5;
    AVESTAN                   :: 6;
    BALINESE                  :: 7;
    BAMUM                     :: 8;
    BASSA_VAH                 :: 9;
    BATAK                     :: 10;
    BENGALI                   :: 11;
    BHAIKSUKI                 :: 12;
    BOPOMOFO                  :: 13;
    BRAHMI                    :: 14;
    BUGINESE                  :: 15;
    BUHID                     :: 16;
    CANADIAN_SYLLABICS        :: 17;
    CARIAN                    :: 18;
    CAUCASIAN_ALBANIAN        :: 19;
    CHAKMA                    :: 20;
    CHAM                      :: 21;
    CHEROKEE                  :: 22;
    CHORASMIAN                :: 23;
    CJK_IDEOGRAPHIC           :: 24;
    COPTIC                    :: 25;
    CYPRIOT_SYLLABARY         :: 26;
    CYPRO_MINOAN              :: 27;
    CYRILLIC                  :: 28;
    DEFAULT                   :: 29;
    DEFAULT2                  :: 30;
    DESERET                   :: 31;
    DEVANAGARI                :: 32;
    DIVES_AKURU               :: 33;
    DOGRA                     :: 34;
    DUPLOYAN                  :: 35;
    EGYPTIAN_HIEROGLYPHS      :: 36;
    ELBASAN                   :: 37;
    ELYMAIC                   :: 38;
    ETHIOPIC                  :: 39;
    GARAY                     :: 40;
    GEORGIAN                  :: 41;
    GLAGOLITIC                :: 42;
    GOTHIC                    :: 43;
    GRANTHA                   :: 44;
    GREEK                     :: 45;
    GUJARATI                  :: 46;
    GUNJALA_GONDI             :: 47;
    GURMUKHI                  :: 48;
    GURUNG_KHEMA              :: 49;
    HANGUL                    :: 50;
    HANIFI_ROHINGYA           :: 51;
    HANUNOO                   :: 52;
    HATRAN                    :: 53;
    HEBREW                    :: 54;
    HIRAGANA                  :: 55;
    IMPERIAL_ARAMAIC          :: 56;
    INSCRIPTIONAL_PAHLAVI     :: 57;
    INSCRIPTIONAL_PARTHIAN    :: 58;
    JAVANESE                  :: 59;
    KAITHI                    :: 60;
    KANNADA                   :: 61;
    KATAKANA                  :: 62;
    KAWI                      :: 63;
    KAYAH_LI                  :: 64;
    KHAROSHTHI                :: 65;
    KHITAN_SMALL_SCRIPT       :: 66;
    KHMER                     :: 67;
    KHOJKI                    :: 68;
    KHUDAWADI                 :: 69;
    KIRAT_RAI                 :: 70;
    LAO                       :: 71;
    LATIN                     :: 72;
    LEPCHA                    :: 73;
    LIMBU                     :: 74;
    LINEAR_A                  :: 75;
    LINEAR_B                  :: 76;
    LISU                      :: 77;
    LYCIAN                    :: 78;
    LYDIAN                    :: 79;
    MAHAJANI                  :: 80;
    MAKASAR                   :: 81;
    MALAYALAM                 :: 82;
    MANDAIC                   :: 83;
    MANICHAEAN                :: 84;
    MARCHEN                   :: 85;
    MASARAM_GONDI             :: 86;
    MEDEFAIDRIN               :: 87;
    MEETEI_MAYEK              :: 88;
    MENDE_KIKAKUI             :: 89;
    MEROITIC_CURSIVE          :: 90;
    MEROITIC_HIEROGLYPHS      :: 91;
    MIAO                      :: 92;
    MODI                      :: 93;
    MONGOLIAN                 :: 94;
    MRO                       :: 95;
    MULTANI                   :: 96;
    MYANMAR                   :: 97;
    NABATAEAN                 :: 98;
    NAG_MUNDARI               :: 99;
    NANDINAGARI               :: 100;
    NEWA                      :: 101;
    NEW_TAI_LUE               :: 102;
    NKO                       :: 103;
    NUSHU                     :: 104;
    NYIAKENG_PUACHUE_HMONG    :: 105;
    OGHAM                     :: 106;
    OL_CHIKI                  :: 107;
    OL_ONAL                   :: 108;
    OLD_ITALIC                :: 109;
    OLD_HUNGARIAN             :: 110;
    OLD_NORTH_ARABIAN         :: 111;
    OLD_PERMIC                :: 112;
    OLD_PERSIAN_CUNEIFORM     :: 113;
    OLD_SOGDIAN               :: 114;
    OLD_SOUTH_ARABIAN         :: 115;
    OLD_TURKIC                :: 116;
    OLD_UYGHUR                :: 117;
    ODIA                      :: 118;
    OSAGE                     :: 119;
    OSMANYA                   :: 120;
    PAHAWH_HMONG              :: 121;
    PALMYRENE                 :: 122;
    PAU_CIN_HAU               :: 123;
    PHAGS_PA                  :: 124;
    PHOENICIAN                :: 125;
    PSALTER_PAHLAVI           :: 126;
    REJANG                    :: 127;
    RUNIC                     :: 128;
    SAMARITAN                 :: 129;
    SAURASHTRA                :: 130;
    SHARADA                   :: 131;
    SHAVIAN                   :: 132;
    SIDDHAM                   :: 133;
    SIGN_WRITING              :: 134;
    SOGDIAN                   :: 135;
    SINHALA                   :: 136;
    SORA_SOMPENG              :: 137;
    SOYOMBO                   :: 138;
    SUMERO_AKKADIAN_CUNEIFORM :: 139;
    SUNDANESE                 :: 140;
    SUNUWAR                   :: 141;
    SYLOTI_NAGRI              :: 142;
    SYRIAC                    :: 143;
    TAGALOG                   :: 144;
    TAGBANWA                  :: 145;
    TAI_LE                    :: 146;
    TAI_THAM                  :: 147;
    TAI_VIET                  :: 148;
    TAKRI                     :: 149;
    TAMIL                     :: 150;
    TANGSA                    :: 151;
    TANGUT                    :: 152;
    TELUGU                    :: 153;
    THAANA                    :: 154;
    THAI                      :: 155;
    TIBETAN                   :: 156;
    TIFINAGH                  :: 157;
    TIRHUTA                   :: 158;
    TODHRI                    :: 159;
    TOTO                      :: 160;
    TULU_TIGALARI             :: 161;
    UGARITIC_CUNEIFORM        :: 162;
    VAI                       :: 163;
    VITHKUQI                  :: 164;
    WANCHO                    :: 165;
    WARANG_CITI               :: 166;
    YEZIDI                    :: 167;
    YI                        :: 168;
    ZANABAZAR_SQUARE          :: 169;
    COUNT                     :: 170;

    KBTS_SCRIPT_DONT_KNOW                 :: DONT_KNOW;
    KBTS_SCRIPT_ADLAM                     :: ADLAM;
    KBTS_SCRIPT_AHOM                      :: AHOM;
    KBTS_SCRIPT_ANATOLIAN_HIEROGLYPHS     :: ANATOLIAN_HIEROGLYPHS;
    KBTS_SCRIPT_ARABIC                    :: ARABIC;
    KBTS_SCRIPT_ARMENIAN                  :: ARMENIAN;
    KBTS_SCRIPT_AVESTAN                   :: AVESTAN;
    KBTS_SCRIPT_BALINESE                  :: BALINESE;
    KBTS_SCRIPT_BAMUM                     :: BAMUM;
    KBTS_SCRIPT_BASSA_VAH                 :: BASSA_VAH;
    KBTS_SCRIPT_BATAK                     :: BATAK;
    KBTS_SCRIPT_BENGALI                   :: BENGALI;
    KBTS_SCRIPT_BHAIKSUKI                 :: BHAIKSUKI;
    KBTS_SCRIPT_BOPOMOFO                  :: BOPOMOFO;
    KBTS_SCRIPT_BRAHMI                    :: BRAHMI;
    KBTS_SCRIPT_BUGINESE                  :: BUGINESE;
    KBTS_SCRIPT_BUHID                     :: BUHID;
    KBTS_SCRIPT_CANADIAN_SYLLABICS        :: CANADIAN_SYLLABICS;
    KBTS_SCRIPT_CARIAN                    :: CARIAN;
    KBTS_SCRIPT_CAUCASIAN_ALBANIAN        :: CAUCASIAN_ALBANIAN;
    KBTS_SCRIPT_CHAKMA                    :: CHAKMA;
    KBTS_SCRIPT_CHAM                      :: CHAM;
    KBTS_SCRIPT_CHEROKEE                  :: CHEROKEE;
    KBTS_SCRIPT_CHORASMIAN                :: CHORASMIAN;
    KBTS_SCRIPT_CJK_IDEOGRAPHIC           :: CJK_IDEOGRAPHIC;
    KBTS_SCRIPT_COPTIC                    :: COPTIC;
    KBTS_SCRIPT_CYPRIOT_SYLLABARY         :: CYPRIOT_SYLLABARY;
    KBTS_SCRIPT_CYPRO_MINOAN              :: CYPRO_MINOAN;
    KBTS_SCRIPT_CYRILLIC                  :: CYRILLIC;
    KBTS_SCRIPT_DEFAULT                   :: DEFAULT;
    KBTS_SCRIPT_DEFAULT2                  :: DEFAULT2;
    KBTS_SCRIPT_DESERET                   :: DESERET;
    KBTS_SCRIPT_DEVANAGARI                :: DEVANAGARI;
    KBTS_SCRIPT_DIVES_AKURU               :: DIVES_AKURU;
    KBTS_SCRIPT_DOGRA                     :: DOGRA;
    KBTS_SCRIPT_DUPLOYAN                  :: DUPLOYAN;
    KBTS_SCRIPT_EGYPTIAN_HIEROGLYPHS      :: EGYPTIAN_HIEROGLYPHS;
    KBTS_SCRIPT_ELBASAN                   :: ELBASAN;
    KBTS_SCRIPT_ELYMAIC                   :: ELYMAIC;
    KBTS_SCRIPT_ETHIOPIC                  :: ETHIOPIC;
    KBTS_SCRIPT_GARAY                     :: GARAY;
    KBTS_SCRIPT_GEORGIAN                  :: GEORGIAN;
    KBTS_SCRIPT_GLAGOLITIC                :: GLAGOLITIC;
    KBTS_SCRIPT_GOTHIC                    :: GOTHIC;
    KBTS_SCRIPT_GRANTHA                   :: GRANTHA;
    KBTS_SCRIPT_GREEK                     :: GREEK;
    KBTS_SCRIPT_GUJARATI                  :: GUJARATI;
    KBTS_SCRIPT_GUNJALA_GONDI             :: GUNJALA_GONDI;
    KBTS_SCRIPT_GURMUKHI                  :: GURMUKHI;
    KBTS_SCRIPT_GURUNG_KHEMA              :: GURUNG_KHEMA;
    KBTS_SCRIPT_HANGUL                    :: HANGUL;
    KBTS_SCRIPT_HANIFI_ROHINGYA           :: HANIFI_ROHINGYA;
    KBTS_SCRIPT_HANUNOO                   :: HANUNOO;
    KBTS_SCRIPT_HATRAN                    :: HATRAN;
    KBTS_SCRIPT_HEBREW                    :: HEBREW;
    KBTS_SCRIPT_HIRAGANA                  :: HIRAGANA;
    KBTS_SCRIPT_IMPERIAL_ARAMAIC          :: IMPERIAL_ARAMAIC;
    KBTS_SCRIPT_INSCRIPTIONAL_PAHLAVI     :: INSCRIPTIONAL_PAHLAVI;
    KBTS_SCRIPT_INSCRIPTIONAL_PARTHIAN    :: INSCRIPTIONAL_PARTHIAN;
    KBTS_SCRIPT_JAVANESE                  :: JAVANESE;
    KBTS_SCRIPT_KAITHI                    :: KAITHI;
    KBTS_SCRIPT_KANNADA                   :: KANNADA;
    KBTS_SCRIPT_KATAKANA                  :: KATAKANA;
    KBTS_SCRIPT_KAWI                      :: KAWI;
    KBTS_SCRIPT_KAYAH_LI                  :: KAYAH_LI;
    KBTS_SCRIPT_KHAROSHTHI                :: KHAROSHTHI;
    KBTS_SCRIPT_KHITAN_SMALL_SCRIPT       :: KHITAN_SMALL_SCRIPT;
    KBTS_SCRIPT_KHMER                     :: KHMER;
    KBTS_SCRIPT_KHOJKI                    :: KHOJKI;
    KBTS_SCRIPT_KHUDAWADI                 :: KHUDAWADI;
    KBTS_SCRIPT_KIRAT_RAI                 :: KIRAT_RAI;
    KBTS_SCRIPT_LAO                       :: LAO;
    KBTS_SCRIPT_LATIN                     :: LATIN;
    KBTS_SCRIPT_LEPCHA                    :: LEPCHA;
    KBTS_SCRIPT_LIMBU                     :: LIMBU;
    KBTS_SCRIPT_LINEAR_A                  :: LINEAR_A;
    KBTS_SCRIPT_LINEAR_B                  :: LINEAR_B;
    KBTS_SCRIPT_LISU                      :: LISU;
    KBTS_SCRIPT_LYCIAN                    :: LYCIAN;
    KBTS_SCRIPT_LYDIAN                    :: LYDIAN;
    KBTS_SCRIPT_MAHAJANI                  :: MAHAJANI;
    KBTS_SCRIPT_MAKASAR                   :: MAKASAR;
    KBTS_SCRIPT_MALAYALAM                 :: MALAYALAM;
    KBTS_SCRIPT_MANDAIC                   :: MANDAIC;
    KBTS_SCRIPT_MANICHAEAN                :: MANICHAEAN;
    KBTS_SCRIPT_MARCHEN                   :: MARCHEN;
    KBTS_SCRIPT_MASARAM_GONDI             :: MASARAM_GONDI;
    KBTS_SCRIPT_MEDEFAIDRIN               :: MEDEFAIDRIN;
    KBTS_SCRIPT_MEETEI_MAYEK              :: MEETEI_MAYEK;
    KBTS_SCRIPT_MENDE_KIKAKUI             :: MENDE_KIKAKUI;
    KBTS_SCRIPT_MEROITIC_CURSIVE          :: MEROITIC_CURSIVE;
    KBTS_SCRIPT_MEROITIC_HIEROGLYPHS      :: MEROITIC_HIEROGLYPHS;
    KBTS_SCRIPT_MIAO                      :: MIAO;
    KBTS_SCRIPT_MODI                      :: MODI;
    KBTS_SCRIPT_MONGOLIAN                 :: MONGOLIAN;
    KBTS_SCRIPT_MRO                       :: MRO;
    KBTS_SCRIPT_MULTANI                   :: MULTANI;
    KBTS_SCRIPT_MYANMAR                   :: MYANMAR;
    KBTS_SCRIPT_NABATAEAN                 :: NABATAEAN;
    KBTS_SCRIPT_NAG_MUNDARI               :: NAG_MUNDARI;
    KBTS_SCRIPT_NANDINAGARI               :: NANDINAGARI;
    KBTS_SCRIPT_NEWA                      :: NEWA;
    KBTS_SCRIPT_NEW_TAI_LUE               :: NEW_TAI_LUE;
    KBTS_SCRIPT_NKO                       :: NKO;
    KBTS_SCRIPT_NUSHU                     :: NUSHU;
    KBTS_SCRIPT_NYIAKENG_PUACHUE_HMONG    :: NYIAKENG_PUACHUE_HMONG;
    KBTS_SCRIPT_OGHAM                     :: OGHAM;
    KBTS_SCRIPT_OL_CHIKI                  :: OL_CHIKI;
    KBTS_SCRIPT_OL_ONAL                   :: OL_ONAL;
    KBTS_SCRIPT_OLD_ITALIC                :: OLD_ITALIC;
    KBTS_SCRIPT_OLD_HUNGARIAN             :: OLD_HUNGARIAN;
    KBTS_SCRIPT_OLD_NORTH_ARABIAN         :: OLD_NORTH_ARABIAN;
    KBTS_SCRIPT_OLD_PERMIC                :: OLD_PERMIC;
    KBTS_SCRIPT_OLD_PERSIAN_CUNEIFORM     :: OLD_PERSIAN_CUNEIFORM;
    KBTS_SCRIPT_OLD_SOGDIAN               :: OLD_SOGDIAN;
    KBTS_SCRIPT_OLD_SOUTH_ARABIAN         :: OLD_SOUTH_ARABIAN;
    KBTS_SCRIPT_OLD_TURKIC                :: OLD_TURKIC;
    KBTS_SCRIPT_OLD_UYGHUR                :: OLD_UYGHUR;
    KBTS_SCRIPT_ODIA                      :: ODIA;
    KBTS_SCRIPT_OSAGE                     :: OSAGE;
    KBTS_SCRIPT_OSMANYA                   :: OSMANYA;
    KBTS_SCRIPT_PAHAWH_HMONG              :: PAHAWH_HMONG;
    KBTS_SCRIPT_PALMYRENE                 :: PALMYRENE;
    KBTS_SCRIPT_PAU_CIN_HAU               :: PAU_CIN_HAU;
    KBTS_SCRIPT_PHAGS_PA                  :: PHAGS_PA;
    KBTS_SCRIPT_PHOENICIAN                :: PHOENICIAN;
    KBTS_SCRIPT_PSALTER_PAHLAVI           :: PSALTER_PAHLAVI;
    KBTS_SCRIPT_REJANG                    :: REJANG;
    KBTS_SCRIPT_RUNIC                     :: RUNIC;
    KBTS_SCRIPT_SAMARITAN                 :: SAMARITAN;
    KBTS_SCRIPT_SAURASHTRA                :: SAURASHTRA;
    KBTS_SCRIPT_SHARADA                   :: SHARADA;
    KBTS_SCRIPT_SHAVIAN                   :: SHAVIAN;
    KBTS_SCRIPT_SIDDHAM                   :: SIDDHAM;
    KBTS_SCRIPT_SIGN_WRITING              :: SIGN_WRITING;
    KBTS_SCRIPT_SOGDIAN                   :: SOGDIAN;
    KBTS_SCRIPT_SINHALA                   :: SINHALA;
    KBTS_SCRIPT_SORA_SOMPENG              :: SORA_SOMPENG;
    KBTS_SCRIPT_SOYOMBO                   :: SOYOMBO;
    KBTS_SCRIPT_SUMERO_AKKADIAN_CUNEIFORM :: SUMERO_AKKADIAN_CUNEIFORM;
    KBTS_SCRIPT_SUNDANESE                 :: SUNDANESE;
    KBTS_SCRIPT_SUNUWAR                   :: SUNUWAR;
    KBTS_SCRIPT_SYLOTI_NAGRI              :: SYLOTI_NAGRI;
    KBTS_SCRIPT_SYRIAC                    :: SYRIAC;
    KBTS_SCRIPT_TAGALOG                   :: TAGALOG;
    KBTS_SCRIPT_TAGBANWA                  :: TAGBANWA;
    KBTS_SCRIPT_TAI_LE                    :: TAI_LE;
    KBTS_SCRIPT_TAI_THAM                  :: TAI_THAM;
    KBTS_SCRIPT_TAI_VIET                  :: TAI_VIET;
    KBTS_SCRIPT_TAKRI                     :: TAKRI;
    KBTS_SCRIPT_TAMIL                     :: TAMIL;
    KBTS_SCRIPT_TANGSA                    :: TANGSA;
    KBTS_SCRIPT_TANGUT                    :: TANGUT;
    KBTS_SCRIPT_TELUGU                    :: TELUGU;
    KBTS_SCRIPT_THAANA                    :: THAANA;
    KBTS_SCRIPT_THAI                      :: THAI;
    KBTS_SCRIPT_TIBETAN                   :: TIBETAN;
    KBTS_SCRIPT_TIFINAGH                  :: TIFINAGH;
    KBTS_SCRIPT_TIRHUTA                   :: TIRHUTA;
    KBTS_SCRIPT_TODHRI                    :: TODHRI;
    KBTS_SCRIPT_TOTO                      :: TOTO;
    KBTS_SCRIPT_TULU_TIGALARI             :: TULU_TIGALARI;
    KBTS_SCRIPT_UGARITIC_CUNEIFORM        :: UGARITIC_CUNEIFORM;
    KBTS_SCRIPT_VAI                       :: VAI;
    KBTS_SCRIPT_VITHKUQI                  :: VITHKUQI;
    KBTS_SCRIPT_WANCHO                    :: WANCHO;
    KBTS_SCRIPT_WARANG_CITI               :: WARANG_CITI;
    KBTS_SCRIPT_YEZIDI                    :: YEZIDI;
    KBTS_SCRIPT_YI                        :: YI;
    KBTS_SCRIPT_ZANABAZAR_SQUARE          :: ZANABAZAR_SQUARE;
    KBTS_SCRIPT_COUNT                     :: COUNT;
}

kbts_feature_tag :: u32;
kbts_feature_tag_enum :: enum s32 {
    UNREGISTERED :: 0;
    isol         :: 1819243369;
    fina         :: 1634625894;
    fin2         :: 846096742;
    fin3         :: 862873958;
    medi         :: 1768187245;
    med2         :: 845440365;
    init         :: 1953066601;
    ljmo         :: 1869441644;
    vjmo         :: 1869441654;
    tjmo         :: 1869441652;
    rphf         :: 1718120562;
    blwf         :: 1719102562;
    half         :: 1718378856;
    pstf         :: 1718907760;
    abvf         :: 1719034465;
    pref         :: 1717924464;
    numr         :: 1919776110;
    frac         :: 1667330662;
    dnom         :: 1836019300;
    cfar         :: 1918985827;
    aalt         :: 1953259873;
    abvm         :: 1836474977;
    abvs         :: 1937138273;
    afrc         :: 1668441697;
    akhn         :: 1852336993;
    apkn         :: 1852534881;
    blwm         :: 1836543074;
    blws         :: 1937206370;
    calt         :: 1953259875;
    _case         :: 1702060387;
    ccmp         :: 1886217059;
    chws         :: 1937205347;
    cjct         :: 1952672355;
    clig         :: 1734962275;
    cpct         :: 1952673891;
    cpsp         :: 1886613603;
    cswh         :: 1752658787;
    curs         :: 1936880995;
    cv01         :: 825259619;
    cv02         :: 842036835;
    cv03         :: 858814051;
    cv04         :: 875591267;
    cv05         :: 892368483;
    cv06         :: 909145699;
    cv07         :: 925922915;
    cv08         :: 942700131;
    cv09         :: 959477347;
    cv10         :: 808547939;
    cv11         :: 825325155;
    cv12         :: 842102371;
    cv13         :: 858879587;
    cv14         :: 875656803;
    cv15         :: 892434019;
    cv16         :: 909211235;
    cv17         :: 925988451;
    cv18         :: 942765667;
    cv19         :: 959542883;
    cv20         :: 808613475;
    cv21         :: 825390691;
    cv22         :: 842167907;
    cv23         :: 858945123;
    cv24         :: 875722339;
    cv25         :: 892499555;
    cv26         :: 909276771;
    cv27         :: 926053987;
    cv28         :: 942831203;
    cv29         :: 959608419;
    cv30         :: 808679011;
    cv31         :: 825456227;
    cv32         :: 842233443;
    cv33         :: 859010659;
    cv34         :: 875787875;
    cv35         :: 892565091;
    cv36         :: 909342307;
    cv37         :: 926119523;
    cv38         :: 942896739;
    cv39         :: 959673955;
    cv40         :: 808744547;
    cv41         :: 825521763;
    cv42         :: 842298979;
    cv43         :: 859076195;
    cv44         :: 875853411;
    cv45         :: 892630627;
    cv46         :: 909407843;
    cv47         :: 926185059;
    cv48         :: 942962275;
    cv49         :: 959739491;
    cv50         :: 808810083;
    cv51         :: 825587299;
    cv52         :: 842364515;
    cv53         :: 859141731;
    cv54         :: 875918947;
    cv55         :: 892696163;
    cv56         :: 909473379;
    cv57         :: 926250595;
    cv58         :: 943027811;
    cv59         :: 959805027;
    cv60         :: 808875619;
    cv61         :: 825652835;
    cv62         :: 842430051;
    cv63         :: 859207267;
    cv64         :: 875984483;
    cv65         :: 892761699;
    cv66         :: 909538915;
    cv67         :: 926316131;
    cv68         :: 943093347;
    cv69         :: 959870563;
    cv70         :: 808941155;
    cv71         :: 825718371;
    cv72         :: 842495587;
    cv73         :: 859272803;
    cv74         :: 876050019;
    cv75         :: 892827235;
    cv76         :: 909604451;
    cv77         :: 926381667;
    cv78         :: 943158883;
    cv79         :: 959936099;
    cv80         :: 809006691;
    cv81         :: 825783907;
    cv82         :: 842561123;
    cv83         :: 859338339;
    cv84         :: 876115555;
    cv85         :: 892892771;
    cv86         :: 909669987;
    cv87         :: 926447203;
    cv88         :: 943224419;
    cv89         :: 960001635;
    cv90         :: 809072227;
    cv91         :: 825849443;
    cv92         :: 842626659;
    cv93         :: 859403875;
    cv94         :: 876181091;
    cv95         :: 892958307;
    cv96         :: 909735523;
    cv97         :: 926512739;
    cv98         :: 943289955;
    cv99         :: 960067171;
    c2pc         :: 1668297315;
    c2sc         :: 1668493923;
    dist         :: 1953720676;
    dlig         :: 1734962276;
    dtls         :: 1936487524;
    expt         :: 1953527909;
    falt         :: 1953259878;
    flac         :: 1667329126;
    fwid         :: 1684633446;
    haln         :: 1852596584;
    halt         :: 1953259880;
    hist         :: 1953720680;
    hkna         :: 1634626408;
    hlig         :: 1734962280;
    hngl         :: 1818717800;
    hojo         :: 1869246312;
    hwid         :: 1684633448;
    ital         :: 1818326121;
    jalt         :: 1953259882;
    jp78         :: 943157354;
    jp83         :: 859336810;
    jp90         :: 809070698;
    jp04         :: 875589738;
    kern         :: 1852990827;
    lfbd         :: 1684170348;
    liga         :: 1634167148;
    lnum         :: 1836412524;
    locl         :: 1818455916;
    ltra         :: 1634890860;
    ltrm         :: 1836217452;
    mark         :: 1802658157;
    mgrk         :: 1802659693;
    mkmk         :: 1802333037;
    mset         :: 1952805741;
    nalt         :: 1953259886;
    nlck         :: 1801677934;
    nukt         :: 1953199470;
    onum         :: 1836412527;
    opbd         :: 1684172911;
    ordn         :: 1852076655;
    ornm         :: 1835954799;
    palt         :: 1953259888;
    pcap         :: 1885430640;
    pkna         :: 1634626416;
    pnum         :: 1836412528;
    pres         :: 1936028272;
    psts         :: 1937011568;
    pwid         :: 1684633456;
    qwid         :: 1684633457;
    rand         :: 1684955506;
    rclt         :: 1953260402;
    rkrf         :: 1718774642;
    rlig         :: 1734962290;
    rtbd         :: 1684173938;
    rtla         :: 1634497650;
    rtlm         :: 1835824242;
    ruby         :: 2036495730;
    rvrn         :: 1852995186;
    salt         :: 1953259891;
    sinf         :: 1718511987;
    size         :: 1702521203;
    smcp         :: 1885564275;
    smpl         :: 1819307379;
    ss01         :: 825258867;
    ss02         :: 842036083;
    ss03         :: 858813299;
    ss04         :: 875590515;
    ss05         :: 892367731;
    ss06         :: 909144947;
    ss07         :: 925922163;
    ss08         :: 942699379;
    ss09         :: 959476595;
    ss10         :: 808547187;
    ss11         :: 825324403;
    ss12         :: 842101619;
    ss13         :: 858878835;
    ss14         :: 875656051;
    ss15         :: 892433267;
    ss16         :: 909210483;
    ss17         :: 925987699;
    ss18         :: 942764915;
    ss19         :: 959542131;
    ss20         :: 808612723;
    ssty         :: 2037674867;
    stch         :: 1751348339;
    subs         :: 1935832435;
    sups         :: 1936749939;
    swsh         :: 1752397683;
    test         :: 1953719668;
    titl         :: 1819568500;
    tnam         :: 1835101812;
    tnum         :: 1836412532;
    trad         :: 1684107892;
    twid         :: 1684633460;
    unic         :: 1667853941;
    valt         :: 1953259894;
    vapk         :: 1802527094;
    vatu         :: 1970561398;
    vchw         :: 2003329910;
    vert         :: 1953654134;
    vhal         :: 1818323062;
    vkna         :: 1634626422;
    vkrn         :: 1852992374;
    vpal         :: 1818325110;
    vrt2         :: 846492278;
    vrtr         :: 1920234102;
    zero         :: 1869768058;

    KBTS_FEATURE_TAG_UNREGISTERED :: UNREGISTERED;
    KBTS_FEATURE_TAG_isol         :: isol;
    KBTS_FEATURE_TAG_fina         :: fina;
    KBTS_FEATURE_TAG_fin2         :: fin2;
    KBTS_FEATURE_TAG_fin3         :: fin3;
    KBTS_FEATURE_TAG_medi         :: medi;
    KBTS_FEATURE_TAG_med2         :: med2;
    KBTS_FEATURE_TAG_init         :: init;
    KBTS_FEATURE_TAG_ljmo         :: ljmo;
    KBTS_FEATURE_TAG_vjmo         :: vjmo;
    KBTS_FEATURE_TAG_tjmo         :: tjmo;
    KBTS_FEATURE_TAG_rphf         :: rphf;
    KBTS_FEATURE_TAG_blwf         :: blwf;
    KBTS_FEATURE_TAG_half         :: half;
    KBTS_FEATURE_TAG_pstf         :: pstf;
    KBTS_FEATURE_TAG_abvf         :: abvf;
    KBTS_FEATURE_TAG_pref         :: pref;
    KBTS_FEATURE_TAG_numr         :: numr;
    KBTS_FEATURE_TAG_frac         :: frac;
    KBTS_FEATURE_TAG_dnom         :: dnom;
    KBTS_FEATURE_TAG_cfar         :: cfar;
    KBTS_FEATURE_TAG_aalt         :: aalt;
    KBTS_FEATURE_TAG_abvm         :: abvm;
    KBTS_FEATURE_TAG_abvs         :: abvs;
    KBTS_FEATURE_TAG_afrc         :: afrc;
    KBTS_FEATURE_TAG_akhn         :: akhn;
    KBTS_FEATURE_TAG_apkn         :: apkn;
    KBTS_FEATURE_TAG_blwm         :: blwm;
    KBTS_FEATURE_TAG_blws         :: blws;
    KBTS_FEATURE_TAG_calt         :: calt;
    KBTS_FEATURE_TAG_case         :: _case;
    KBTS_FEATURE_TAG_ccmp         :: ccmp;
    KBTS_FEATURE_TAG_chws         :: chws;
    KBTS_FEATURE_TAG_cjct         :: cjct;
    KBTS_FEATURE_TAG_clig         :: clig;
    KBTS_FEATURE_TAG_cpct         :: cpct;
    KBTS_FEATURE_TAG_cpsp         :: cpsp;
    KBTS_FEATURE_TAG_cswh         :: cswh;
    KBTS_FEATURE_TAG_curs         :: curs;
    KBTS_FEATURE_TAG_cv01         :: cv01;
    KBTS_FEATURE_TAG_cv02         :: cv02;
    KBTS_FEATURE_TAG_cv03         :: cv03;
    KBTS_FEATURE_TAG_cv04         :: cv04;
    KBTS_FEATURE_TAG_cv05         :: cv05;
    KBTS_FEATURE_TAG_cv06         :: cv06;
    KBTS_FEATURE_TAG_cv07         :: cv07;
    KBTS_FEATURE_TAG_cv08         :: cv08;
    KBTS_FEATURE_TAG_cv09         :: cv09;
    KBTS_FEATURE_TAG_cv10         :: cv10;
    KBTS_FEATURE_TAG_cv11         :: cv11;
    KBTS_FEATURE_TAG_cv12         :: cv12;
    KBTS_FEATURE_TAG_cv13         :: cv13;
    KBTS_FEATURE_TAG_cv14         :: cv14;
    KBTS_FEATURE_TAG_cv15         :: cv15;
    KBTS_FEATURE_TAG_cv16         :: cv16;
    KBTS_FEATURE_TAG_cv17         :: cv17;
    KBTS_FEATURE_TAG_cv18         :: cv18;
    KBTS_FEATURE_TAG_cv19         :: cv19;
    KBTS_FEATURE_TAG_cv20         :: cv20;
    KBTS_FEATURE_TAG_cv21         :: cv21;
    KBTS_FEATURE_TAG_cv22         :: cv22;
    KBTS_FEATURE_TAG_cv23         :: cv23;
    KBTS_FEATURE_TAG_cv24         :: cv24;
    KBTS_FEATURE_TAG_cv25         :: cv25;
    KBTS_FEATURE_TAG_cv26         :: cv26;
    KBTS_FEATURE_TAG_cv27         :: cv27;
    KBTS_FEATURE_TAG_cv28         :: cv28;
    KBTS_FEATURE_TAG_cv29         :: cv29;
    KBTS_FEATURE_TAG_cv30         :: cv30;
    KBTS_FEATURE_TAG_cv31         :: cv31;
    KBTS_FEATURE_TAG_cv32         :: cv32;
    KBTS_FEATURE_TAG_cv33         :: cv33;
    KBTS_FEATURE_TAG_cv34         :: cv34;
    KBTS_FEATURE_TAG_cv35         :: cv35;
    KBTS_FEATURE_TAG_cv36         :: cv36;
    KBTS_FEATURE_TAG_cv37         :: cv37;
    KBTS_FEATURE_TAG_cv38         :: cv38;
    KBTS_FEATURE_TAG_cv39         :: cv39;
    KBTS_FEATURE_TAG_cv40         :: cv40;
    KBTS_FEATURE_TAG_cv41         :: cv41;
    KBTS_FEATURE_TAG_cv42         :: cv42;
    KBTS_FEATURE_TAG_cv43         :: cv43;
    KBTS_FEATURE_TAG_cv44         :: cv44;
    KBTS_FEATURE_TAG_cv45         :: cv45;
    KBTS_FEATURE_TAG_cv46         :: cv46;
    KBTS_FEATURE_TAG_cv47         :: cv47;
    KBTS_FEATURE_TAG_cv48         :: cv48;
    KBTS_FEATURE_TAG_cv49         :: cv49;
    KBTS_FEATURE_TAG_cv50         :: cv50;
    KBTS_FEATURE_TAG_cv51         :: cv51;
    KBTS_FEATURE_TAG_cv52         :: cv52;
    KBTS_FEATURE_TAG_cv53         :: cv53;
    KBTS_FEATURE_TAG_cv54         :: cv54;
    KBTS_FEATURE_TAG_cv55         :: cv55;
    KBTS_FEATURE_TAG_cv56         :: cv56;
    KBTS_FEATURE_TAG_cv57         :: cv57;
    KBTS_FEATURE_TAG_cv58         :: cv58;
    KBTS_FEATURE_TAG_cv59         :: cv59;
    KBTS_FEATURE_TAG_cv60         :: cv60;
    KBTS_FEATURE_TAG_cv61         :: cv61;
    KBTS_FEATURE_TAG_cv62         :: cv62;
    KBTS_FEATURE_TAG_cv63         :: cv63;
    KBTS_FEATURE_TAG_cv64         :: cv64;
    KBTS_FEATURE_TAG_cv65         :: cv65;
    KBTS_FEATURE_TAG_cv66         :: cv66;
    KBTS_FEATURE_TAG_cv67         :: cv67;
    KBTS_FEATURE_TAG_cv68         :: cv68;
    KBTS_FEATURE_TAG_cv69         :: cv69;
    KBTS_FEATURE_TAG_cv70         :: cv70;
    KBTS_FEATURE_TAG_cv71         :: cv71;
    KBTS_FEATURE_TAG_cv72         :: cv72;
    KBTS_FEATURE_TAG_cv73         :: cv73;
    KBTS_FEATURE_TAG_cv74         :: cv74;
    KBTS_FEATURE_TAG_cv75         :: cv75;
    KBTS_FEATURE_TAG_cv76         :: cv76;
    KBTS_FEATURE_TAG_cv77         :: cv77;
    KBTS_FEATURE_TAG_cv78         :: cv78;
    KBTS_FEATURE_TAG_cv79         :: cv79;
    KBTS_FEATURE_TAG_cv80         :: cv80;
    KBTS_FEATURE_TAG_cv81         :: cv81;
    KBTS_FEATURE_TAG_cv82         :: cv82;
    KBTS_FEATURE_TAG_cv83         :: cv83;
    KBTS_FEATURE_TAG_cv84         :: cv84;
    KBTS_FEATURE_TAG_cv85         :: cv85;
    KBTS_FEATURE_TAG_cv86         :: cv86;
    KBTS_FEATURE_TAG_cv87         :: cv87;
    KBTS_FEATURE_TAG_cv88         :: cv88;
    KBTS_FEATURE_TAG_cv89         :: cv89;
    KBTS_FEATURE_TAG_cv90         :: cv90;
    KBTS_FEATURE_TAG_cv91         :: cv91;
    KBTS_FEATURE_TAG_cv92         :: cv92;
    KBTS_FEATURE_TAG_cv93         :: cv93;
    KBTS_FEATURE_TAG_cv94         :: cv94;
    KBTS_FEATURE_TAG_cv95         :: cv95;
    KBTS_FEATURE_TAG_cv96         :: cv96;
    KBTS_FEATURE_TAG_cv97         :: cv97;
    KBTS_FEATURE_TAG_cv98         :: cv98;
    KBTS_FEATURE_TAG_cv99         :: cv99;
    KBTS_FEATURE_TAG_c2pc         :: c2pc;
    KBTS_FEATURE_TAG_c2sc         :: c2sc;
    KBTS_FEATURE_TAG_dist         :: dist;
    KBTS_FEATURE_TAG_dlig         :: dlig;
    KBTS_FEATURE_TAG_dtls         :: dtls;
    KBTS_FEATURE_TAG_expt         :: expt;
    KBTS_FEATURE_TAG_falt         :: falt;
    KBTS_FEATURE_TAG_flac         :: flac;
    KBTS_FEATURE_TAG_fwid         :: fwid;
    KBTS_FEATURE_TAG_haln         :: haln;
    KBTS_FEATURE_TAG_halt         :: halt;
    KBTS_FEATURE_TAG_hist         :: hist;
    KBTS_FEATURE_TAG_hkna         :: hkna;
    KBTS_FEATURE_TAG_hlig         :: hlig;
    KBTS_FEATURE_TAG_hngl         :: hngl;
    KBTS_FEATURE_TAG_hojo         :: hojo;
    KBTS_FEATURE_TAG_hwid         :: hwid;
    KBTS_FEATURE_TAG_ital         :: ital;
    KBTS_FEATURE_TAG_jalt         :: jalt;
    KBTS_FEATURE_TAG_jp78         :: jp78;
    KBTS_FEATURE_TAG_jp83         :: jp83;
    KBTS_FEATURE_TAG_jp90         :: jp90;
    KBTS_FEATURE_TAG_jp04         :: jp04;
    KBTS_FEATURE_TAG_kern         :: kern;
    KBTS_FEATURE_TAG_lfbd         :: lfbd;
    KBTS_FEATURE_TAG_liga         :: liga;
    KBTS_FEATURE_TAG_lnum         :: lnum;
    KBTS_FEATURE_TAG_locl         :: locl;
    KBTS_FEATURE_TAG_ltra         :: ltra;
    KBTS_FEATURE_TAG_ltrm         :: ltrm;
    KBTS_FEATURE_TAG_mark         :: mark;
    KBTS_FEATURE_TAG_mgrk         :: mgrk;
    KBTS_FEATURE_TAG_mkmk         :: mkmk;
    KBTS_FEATURE_TAG_mset         :: mset;
    KBTS_FEATURE_TAG_nalt         :: nalt;
    KBTS_FEATURE_TAG_nlck         :: nlck;
    KBTS_FEATURE_TAG_nukt         :: nukt;
    KBTS_FEATURE_TAG_onum         :: onum;
    KBTS_FEATURE_TAG_opbd         :: opbd;
    KBTS_FEATURE_TAG_ordn         :: ordn;
    KBTS_FEATURE_TAG_ornm         :: ornm;
    KBTS_FEATURE_TAG_palt         :: palt;
    KBTS_FEATURE_TAG_pcap         :: pcap;
    KBTS_FEATURE_TAG_pkna         :: pkna;
    KBTS_FEATURE_TAG_pnum         :: pnum;
    KBTS_FEATURE_TAG_pres         :: pres;
    KBTS_FEATURE_TAG_psts         :: psts;
    KBTS_FEATURE_TAG_pwid         :: pwid;
    KBTS_FEATURE_TAG_qwid         :: qwid;
    KBTS_FEATURE_TAG_rand         :: rand;
    KBTS_FEATURE_TAG_rclt         :: rclt;
    KBTS_FEATURE_TAG_rkrf         :: rkrf;
    KBTS_FEATURE_TAG_rlig         :: rlig;
    KBTS_FEATURE_TAG_rtbd         :: rtbd;
    KBTS_FEATURE_TAG_rtla         :: rtla;
    KBTS_FEATURE_TAG_rtlm         :: rtlm;
    KBTS_FEATURE_TAG_ruby         :: ruby;
    KBTS_FEATURE_TAG_rvrn         :: rvrn;
    KBTS_FEATURE_TAG_salt         :: salt;
    KBTS_FEATURE_TAG_sinf         :: sinf;
    KBTS_FEATURE_TAG_size         :: size;
    KBTS_FEATURE_TAG_smcp         :: smcp;
    KBTS_FEATURE_TAG_smpl         :: smpl;
    KBTS_FEATURE_TAG_ss01         :: ss01;
    KBTS_FEATURE_TAG_ss02         :: ss02;
    KBTS_FEATURE_TAG_ss03         :: ss03;
    KBTS_FEATURE_TAG_ss04         :: ss04;
    KBTS_FEATURE_TAG_ss05         :: ss05;
    KBTS_FEATURE_TAG_ss06         :: ss06;
    KBTS_FEATURE_TAG_ss07         :: ss07;
    KBTS_FEATURE_TAG_ss08         :: ss08;
    KBTS_FEATURE_TAG_ss09         :: ss09;
    KBTS_FEATURE_TAG_ss10         :: ss10;
    KBTS_FEATURE_TAG_ss11         :: ss11;
    KBTS_FEATURE_TAG_ss12         :: ss12;
    KBTS_FEATURE_TAG_ss13         :: ss13;
    KBTS_FEATURE_TAG_ss14         :: ss14;
    KBTS_FEATURE_TAG_ss15         :: ss15;
    KBTS_FEATURE_TAG_ss16         :: ss16;
    KBTS_FEATURE_TAG_ss17         :: ss17;
    KBTS_FEATURE_TAG_ss18         :: ss18;
    KBTS_FEATURE_TAG_ss19         :: ss19;
    KBTS_FEATURE_TAG_ss20         :: ss20;
    KBTS_FEATURE_TAG_ssty         :: ssty;
    KBTS_FEATURE_TAG_stch         :: stch;
    KBTS_FEATURE_TAG_subs         :: subs;
    KBTS_FEATURE_TAG_sups         :: sups;
    KBTS_FEATURE_TAG_swsh         :: swsh;
    KBTS_FEATURE_TAG_test         :: test;
    KBTS_FEATURE_TAG_titl         :: titl;
    KBTS_FEATURE_TAG_tnam         :: tnam;
    KBTS_FEATURE_TAG_tnum         :: tnum;
    KBTS_FEATURE_TAG_trad         :: trad;
    KBTS_FEATURE_TAG_twid         :: twid;
    KBTS_FEATURE_TAG_unic         :: unic;
    KBTS_FEATURE_TAG_valt         :: valt;
    KBTS_FEATURE_TAG_vapk         :: vapk;
    KBTS_FEATURE_TAG_vatu         :: vatu;
    KBTS_FEATURE_TAG_vchw         :: vchw;
    KBTS_FEATURE_TAG_vert         :: vert;
    KBTS_FEATURE_TAG_vhal         :: vhal;
    KBTS_FEATURE_TAG_vkna         :: vkna;
    KBTS_FEATURE_TAG_vkrn         :: vkrn;
    KBTS_FEATURE_TAG_vpal         :: vpal;
    KBTS_FEATURE_TAG_vrt2         :: vrt2;
    KBTS_FEATURE_TAG_vrtr         :: vrtr;
    KBTS_FEATURE_TAG_zero         :: zero;
}

kbts_feature_id :: u32;
kbts_feature_id_enum :: enum s32 {
    UNREGISTERED :: 0;
    isol         :: 1;
    fina         :: 2;
    fin2         :: 3;
    fin3         :: 4;
    medi         :: 5;
    med2         :: 6;
    init         :: 7;
    ljmo         :: 8;
    vjmo         :: 9;
    tjmo         :: 10;
    rphf         :: 11;
    blwf         :: 12;
    half         :: 13;
    pstf         :: 14;
    abvf         :: 15;
    pref         :: 16;
    numr         :: 17;
    frac         :: 18;
    dnom         :: 19;
    cfar         :: 20;
    aalt         :: 21;
    abvm         :: 22;
    abvs         :: 23;
    afrc         :: 24;
    akhn         :: 25;
    apkn         :: 26;
    blwm         :: 27;
    blws         :: 28;
    calt         :: 29;
    _case         :: 30;
    ccmp         :: 31;
    chws         :: 32;
    cjct         :: 33;
    clig         :: 34;
    cpct         :: 35;
    cpsp         :: 36;
    cswh         :: 37;
    curs         :: 38;
    cv01         :: 39;
    cv02         :: 40;
    cv03         :: 41;
    cv04         :: 42;
    cv05         :: 43;
    cv06         :: 44;
    cv07         :: 45;
    cv08         :: 46;
    cv09         :: 47;
    cv10         :: 48;
    cv11         :: 49;
    cv12         :: 50;
    cv13         :: 51;
    cv14         :: 52;
    cv15         :: 53;
    cv16         :: 54;
    cv17         :: 55;
    cv18         :: 56;
    cv19         :: 57;
    cv20         :: 58;
    cv21         :: 59;
    cv22         :: 60;
    cv23         :: 61;
    cv24         :: 62;
    cv25         :: 63;
    cv26         :: 64;
    cv27         :: 65;
    cv28         :: 66;
    cv29         :: 67;
    cv30         :: 68;
    cv31         :: 69;
    cv32         :: 70;
    cv33         :: 71;
    cv34         :: 72;
    cv35         :: 73;
    cv36         :: 74;
    cv37         :: 75;
    cv38         :: 76;
    cv39         :: 77;
    cv40         :: 78;
    cv41         :: 79;
    cv42         :: 80;
    cv43         :: 81;
    cv44         :: 82;
    cv45         :: 83;
    cv46         :: 84;
    cv47         :: 85;
    cv48         :: 86;
    cv49         :: 87;
    cv50         :: 88;
    cv51         :: 89;
    cv52         :: 90;
    cv53         :: 91;
    cv54         :: 92;
    cv55         :: 93;
    cv56         :: 94;
    cv57         :: 95;
    cv58         :: 96;
    cv59         :: 97;
    cv60         :: 98;
    cv61         :: 99;
    cv62         :: 100;
    cv63         :: 101;
    cv64         :: 102;
    cv65         :: 103;
    cv66         :: 104;
    cv67         :: 105;
    cv68         :: 106;
    cv69         :: 107;
    cv70         :: 108;
    cv71         :: 109;
    cv72         :: 110;
    cv73         :: 111;
    cv74         :: 112;
    cv75         :: 113;
    cv76         :: 114;
    cv77         :: 115;
    cv78         :: 116;
    cv79         :: 117;
    cv80         :: 118;
    cv81         :: 119;
    cv82         :: 120;
    cv83         :: 121;
    cv84         :: 122;
    cv85         :: 123;
    cv86         :: 124;
    cv87         :: 125;
    cv88         :: 126;
    cv89         :: 127;
    cv90         :: 128;
    cv91         :: 129;
    cv92         :: 130;
    cv93         :: 131;
    cv94         :: 132;
    cv95         :: 133;
    cv96         :: 134;
    cv97         :: 135;
    cv98         :: 136;
    cv99         :: 137;
    c2pc         :: 138;
    c2sc         :: 139;
    dist         :: 140;
    dlig         :: 141;
    dtls         :: 142;
    expt         :: 143;
    falt         :: 144;
    flac         :: 145;
    fwid         :: 146;
    haln         :: 147;
    halt         :: 148;
    hist         :: 149;
    hkna         :: 150;
    hlig         :: 151;
    hngl         :: 152;
    hojo         :: 153;
    hwid         :: 154;
    ital         :: 155;
    jalt         :: 156;
    jp78         :: 157;
    jp83         :: 158;
    jp90         :: 159;
    jp04         :: 160;
    kern         :: 161;
    lfbd         :: 162;
    liga         :: 163;
    lnum         :: 164;
    locl         :: 165;
    ltra         :: 166;
    ltrm         :: 167;
    mark         :: 168;
    mgrk         :: 169;
    mkmk         :: 170;
    mset         :: 171;
    nalt         :: 172;
    nlck         :: 173;
    nukt         :: 174;
    onum         :: 175;
    opbd         :: 176;
    ordn         :: 177;
    ornm         :: 178;
    palt         :: 179;
    pcap         :: 180;
    pkna         :: 181;
    pnum         :: 182;
    pres         :: 183;
    psts         :: 184;
    pwid         :: 185;
    qwid         :: 186;
    rand         :: 187;
    rclt         :: 188;
    rkrf         :: 189;
    rlig         :: 190;
    rtbd         :: 191;
    rtla         :: 192;
    rtlm         :: 193;
    ruby         :: 194;
    rvrn         :: 195;
    salt         :: 196;
    sinf         :: 197;
    size         :: 198;
    smcp         :: 199;
    smpl         :: 200;
    ss01         :: 201;
    ss02         :: 202;
    ss03         :: 203;
    ss04         :: 204;
    ss05         :: 205;
    ss06         :: 206;
    ss07         :: 207;
    ss08         :: 208;
    ss09         :: 209;
    ss10         :: 210;
    ss11         :: 211;
    ss12         :: 212;
    ss13         :: 213;
    ss14         :: 214;
    ss15         :: 215;
    ss16         :: 216;
    ss17         :: 217;
    ss18         :: 218;
    ss19         :: 219;
    ss20         :: 220;
    ssty         :: 221;
    stch         :: 222;
    subs         :: 223;
    sups         :: 224;
    swsh         :: 225;
    test         :: 226;
    titl         :: 227;
    tnam         :: 228;
    tnum         :: 229;
    trad         :: 230;
    twid         :: 231;
    unic         :: 232;
    valt         :: 233;
    vapk         :: 234;
    vatu         :: 235;
    vchw         :: 236;
    vert         :: 237;
    vhal         :: 238;
    vkna         :: 239;
    vkrn         :: 240;
    vpal         :: 241;
    vrt2         :: 242;
    vrtr         :: 243;
    zero         :: 244;
    COUNT        :: 245;

    KBTS_FEATURE_ID_UNREGISTERED :: UNREGISTERED;
    KBTS_FEATURE_ID_isol         :: isol;
    KBTS_FEATURE_ID_fina         :: fina;
    KBTS_FEATURE_ID_fin2         :: fin2;
    KBTS_FEATURE_ID_fin3         :: fin3;
    KBTS_FEATURE_ID_medi         :: medi;
    KBTS_FEATURE_ID_med2         :: med2;
    KBTS_FEATURE_ID_init         :: init;
    KBTS_FEATURE_ID_ljmo         :: ljmo;
    KBTS_FEATURE_ID_vjmo         :: vjmo;
    KBTS_FEATURE_ID_tjmo         :: tjmo;
    KBTS_FEATURE_ID_rphf         :: rphf;
    KBTS_FEATURE_ID_blwf         :: blwf;
    KBTS_FEATURE_ID_half         :: half;
    KBTS_FEATURE_ID_pstf         :: pstf;
    KBTS_FEATURE_ID_abvf         :: abvf;
    KBTS_FEATURE_ID_pref         :: pref;
    KBTS_FEATURE_ID_numr         :: numr;
    KBTS_FEATURE_ID_frac         :: frac;
    KBTS_FEATURE_ID_dnom         :: dnom;
    KBTS_FEATURE_ID_cfar         :: cfar;
    KBTS_FEATURE_ID_aalt         :: aalt;
    KBTS_FEATURE_ID_abvm         :: abvm;
    KBTS_FEATURE_ID_abvs         :: abvs;
    KBTS_FEATURE_ID_afrc         :: afrc;
    KBTS_FEATURE_ID_akhn         :: akhn;
    KBTS_FEATURE_ID_apkn         :: apkn;
    KBTS_FEATURE_ID_blwm         :: blwm;
    KBTS_FEATURE_ID_blws         :: blws;
    KBTS_FEATURE_ID_calt         :: calt;
    KBTS_FEATURE_ID_case         :: _case;
    KBTS_FEATURE_ID_ccmp         :: ccmp;
    KBTS_FEATURE_ID_chws         :: chws;
    KBTS_FEATURE_ID_cjct         :: cjct;
    KBTS_FEATURE_ID_clig         :: clig;
    KBTS_FEATURE_ID_cpct         :: cpct;
    KBTS_FEATURE_ID_cpsp         :: cpsp;
    KBTS_FEATURE_ID_cswh         :: cswh;
    KBTS_FEATURE_ID_curs         :: curs;
    KBTS_FEATURE_ID_cv01         :: cv01;
    KBTS_FEATURE_ID_cv02         :: cv02;
    KBTS_FEATURE_ID_cv03         :: cv03;
    KBTS_FEATURE_ID_cv04         :: cv04;
    KBTS_FEATURE_ID_cv05         :: cv05;
    KBTS_FEATURE_ID_cv06         :: cv06;
    KBTS_FEATURE_ID_cv07         :: cv07;
    KBTS_FEATURE_ID_cv08         :: cv08;
    KBTS_FEATURE_ID_cv09         :: cv09;
    KBTS_FEATURE_ID_cv10         :: cv10;
    KBTS_FEATURE_ID_cv11         :: cv11;
    KBTS_FEATURE_ID_cv12         :: cv12;
    KBTS_FEATURE_ID_cv13         :: cv13;
    KBTS_FEATURE_ID_cv14         :: cv14;
    KBTS_FEATURE_ID_cv15         :: cv15;
    KBTS_FEATURE_ID_cv16         :: cv16;
    KBTS_FEATURE_ID_cv17         :: cv17;
    KBTS_FEATURE_ID_cv18         :: cv18;
    KBTS_FEATURE_ID_cv19         :: cv19;
    KBTS_FEATURE_ID_cv20         :: cv20;
    KBTS_FEATURE_ID_cv21         :: cv21;
    KBTS_FEATURE_ID_cv22         :: cv22;
    KBTS_FEATURE_ID_cv23         :: cv23;
    KBTS_FEATURE_ID_cv24         :: cv24;
    KBTS_FEATURE_ID_cv25         :: cv25;
    KBTS_FEATURE_ID_cv26         :: cv26;
    KBTS_FEATURE_ID_cv27         :: cv27;
    KBTS_FEATURE_ID_cv28         :: cv28;
    KBTS_FEATURE_ID_cv29         :: cv29;
    KBTS_FEATURE_ID_cv30         :: cv30;
    KBTS_FEATURE_ID_cv31         :: cv31;
    KBTS_FEATURE_ID_cv32         :: cv32;
    KBTS_FEATURE_ID_cv33         :: cv33;
    KBTS_FEATURE_ID_cv34         :: cv34;
    KBTS_FEATURE_ID_cv35         :: cv35;
    KBTS_FEATURE_ID_cv36         :: cv36;
    KBTS_FEATURE_ID_cv37         :: cv37;
    KBTS_FEATURE_ID_cv38         :: cv38;
    KBTS_FEATURE_ID_cv39         :: cv39;
    KBTS_FEATURE_ID_cv40         :: cv40;
    KBTS_FEATURE_ID_cv41         :: cv41;
    KBTS_FEATURE_ID_cv42         :: cv42;
    KBTS_FEATURE_ID_cv43         :: cv43;
    KBTS_FEATURE_ID_cv44         :: cv44;
    KBTS_FEATURE_ID_cv45         :: cv45;
    KBTS_FEATURE_ID_cv46         :: cv46;
    KBTS_FEATURE_ID_cv47         :: cv47;
    KBTS_FEATURE_ID_cv48         :: cv48;
    KBTS_FEATURE_ID_cv49         :: cv49;
    KBTS_FEATURE_ID_cv50         :: cv50;
    KBTS_FEATURE_ID_cv51         :: cv51;
    KBTS_FEATURE_ID_cv52         :: cv52;
    KBTS_FEATURE_ID_cv53         :: cv53;
    KBTS_FEATURE_ID_cv54         :: cv54;
    KBTS_FEATURE_ID_cv55         :: cv55;
    KBTS_FEATURE_ID_cv56         :: cv56;
    KBTS_FEATURE_ID_cv57         :: cv57;
    KBTS_FEATURE_ID_cv58         :: cv58;
    KBTS_FEATURE_ID_cv59         :: cv59;
    KBTS_FEATURE_ID_cv60         :: cv60;
    KBTS_FEATURE_ID_cv61         :: cv61;
    KBTS_FEATURE_ID_cv62         :: cv62;
    KBTS_FEATURE_ID_cv63         :: cv63;
    KBTS_FEATURE_ID_cv64         :: cv64;
    KBTS_FEATURE_ID_cv65         :: cv65;
    KBTS_FEATURE_ID_cv66         :: cv66;
    KBTS_FEATURE_ID_cv67         :: cv67;
    KBTS_FEATURE_ID_cv68         :: cv68;
    KBTS_FEATURE_ID_cv69         :: cv69;
    KBTS_FEATURE_ID_cv70         :: cv70;
    KBTS_FEATURE_ID_cv71         :: cv71;
    KBTS_FEATURE_ID_cv72         :: cv72;
    KBTS_FEATURE_ID_cv73         :: cv73;
    KBTS_FEATURE_ID_cv74         :: cv74;
    KBTS_FEATURE_ID_cv75         :: cv75;
    KBTS_FEATURE_ID_cv76         :: cv76;
    KBTS_FEATURE_ID_cv77         :: cv77;
    KBTS_FEATURE_ID_cv78         :: cv78;
    KBTS_FEATURE_ID_cv79         :: cv79;
    KBTS_FEATURE_ID_cv80         :: cv80;
    KBTS_FEATURE_ID_cv81         :: cv81;
    KBTS_FEATURE_ID_cv82         :: cv82;
    KBTS_FEATURE_ID_cv83         :: cv83;
    KBTS_FEATURE_ID_cv84         :: cv84;
    KBTS_FEATURE_ID_cv85         :: cv85;
    KBTS_FEATURE_ID_cv86         :: cv86;
    KBTS_FEATURE_ID_cv87         :: cv87;
    KBTS_FEATURE_ID_cv88         :: cv88;
    KBTS_FEATURE_ID_cv89         :: cv89;
    KBTS_FEATURE_ID_cv90         :: cv90;
    KBTS_FEATURE_ID_cv91         :: cv91;
    KBTS_FEATURE_ID_cv92         :: cv92;
    KBTS_FEATURE_ID_cv93         :: cv93;
    KBTS_FEATURE_ID_cv94         :: cv94;
    KBTS_FEATURE_ID_cv95         :: cv95;
    KBTS_FEATURE_ID_cv96         :: cv96;
    KBTS_FEATURE_ID_cv97         :: cv97;
    KBTS_FEATURE_ID_cv98         :: cv98;
    KBTS_FEATURE_ID_cv99         :: cv99;
    KBTS_FEATURE_ID_c2pc         :: c2pc;
    KBTS_FEATURE_ID_c2sc         :: c2sc;
    KBTS_FEATURE_ID_dist         :: dist;
    KBTS_FEATURE_ID_dlig         :: dlig;
    KBTS_FEATURE_ID_dtls         :: dtls;
    KBTS_FEATURE_ID_expt         :: expt;
    KBTS_FEATURE_ID_falt         :: falt;
    KBTS_FEATURE_ID_flac         :: flac;
    KBTS_FEATURE_ID_fwid         :: fwid;
    KBTS_FEATURE_ID_haln         :: haln;
    KBTS_FEATURE_ID_halt         :: halt;
    KBTS_FEATURE_ID_hist         :: hist;
    KBTS_FEATURE_ID_hkna         :: hkna;
    KBTS_FEATURE_ID_hlig         :: hlig;
    KBTS_FEATURE_ID_hngl         :: hngl;
    KBTS_FEATURE_ID_hojo         :: hojo;
    KBTS_FEATURE_ID_hwid         :: hwid;
    KBTS_FEATURE_ID_ital         :: ital;
    KBTS_FEATURE_ID_jalt         :: jalt;
    KBTS_FEATURE_ID_jp78         :: jp78;
    KBTS_FEATURE_ID_jp83         :: jp83;
    KBTS_FEATURE_ID_jp90         :: jp90;
    KBTS_FEATURE_ID_jp04         :: jp04;
    KBTS_FEATURE_ID_kern         :: kern;
    KBTS_FEATURE_ID_lfbd         :: lfbd;
    KBTS_FEATURE_ID_liga         :: liga;
    KBTS_FEATURE_ID_lnum         :: lnum;
    KBTS_FEATURE_ID_locl         :: locl;
    KBTS_FEATURE_ID_ltra         :: ltra;
    KBTS_FEATURE_ID_ltrm         :: ltrm;
    KBTS_FEATURE_ID_mark         :: mark;
    KBTS_FEATURE_ID_mgrk         :: mgrk;
    KBTS_FEATURE_ID_mkmk         :: mkmk;
    KBTS_FEATURE_ID_mset         :: mset;
    KBTS_FEATURE_ID_nalt         :: nalt;
    KBTS_FEATURE_ID_nlck         :: nlck;
    KBTS_FEATURE_ID_nukt         :: nukt;
    KBTS_FEATURE_ID_onum         :: onum;
    KBTS_FEATURE_ID_opbd         :: opbd;
    KBTS_FEATURE_ID_ordn         :: ordn;
    KBTS_FEATURE_ID_ornm         :: ornm;
    KBTS_FEATURE_ID_palt         :: palt;
    KBTS_FEATURE_ID_pcap         :: pcap;
    KBTS_FEATURE_ID_pkna         :: pkna;
    KBTS_FEATURE_ID_pnum         :: pnum;
    KBTS_FEATURE_ID_pres         :: pres;
    KBTS_FEATURE_ID_psts         :: psts;
    KBTS_FEATURE_ID_pwid         :: pwid;
    KBTS_FEATURE_ID_qwid         :: qwid;
    KBTS_FEATURE_ID_rand         :: rand;
    KBTS_FEATURE_ID_rclt         :: rclt;
    KBTS_FEATURE_ID_rkrf         :: rkrf;
    KBTS_FEATURE_ID_rlig         :: rlig;
    KBTS_FEATURE_ID_rtbd         :: rtbd;
    KBTS_FEATURE_ID_rtla         :: rtla;
    KBTS_FEATURE_ID_rtlm         :: rtlm;
    KBTS_FEATURE_ID_ruby         :: ruby;
    KBTS_FEATURE_ID_rvrn         :: rvrn;
    KBTS_FEATURE_ID_salt         :: salt;
    KBTS_FEATURE_ID_sinf         :: sinf;
    KBTS_FEATURE_ID_size         :: size;
    KBTS_FEATURE_ID_smcp         :: smcp;
    KBTS_FEATURE_ID_smpl         :: smpl;
    KBTS_FEATURE_ID_ss01         :: ss01;
    KBTS_FEATURE_ID_ss02         :: ss02;
    KBTS_FEATURE_ID_ss03         :: ss03;
    KBTS_FEATURE_ID_ss04         :: ss04;
    KBTS_FEATURE_ID_ss05         :: ss05;
    KBTS_FEATURE_ID_ss06         :: ss06;
    KBTS_FEATURE_ID_ss07         :: ss07;
    KBTS_FEATURE_ID_ss08         :: ss08;
    KBTS_FEATURE_ID_ss09         :: ss09;
    KBTS_FEATURE_ID_ss10         :: ss10;
    KBTS_FEATURE_ID_ss11         :: ss11;
    KBTS_FEATURE_ID_ss12         :: ss12;
    KBTS_FEATURE_ID_ss13         :: ss13;
    KBTS_FEATURE_ID_ss14         :: ss14;
    KBTS_FEATURE_ID_ss15         :: ss15;
    KBTS_FEATURE_ID_ss16         :: ss16;
    KBTS_FEATURE_ID_ss17         :: ss17;
    KBTS_FEATURE_ID_ss18         :: ss18;
    KBTS_FEATURE_ID_ss19         :: ss19;
    KBTS_FEATURE_ID_ss20         :: ss20;
    KBTS_FEATURE_ID_ssty         :: ssty;
    KBTS_FEATURE_ID_stch         :: stch;
    KBTS_FEATURE_ID_subs         :: subs;
    KBTS_FEATURE_ID_sups         :: sups;
    KBTS_FEATURE_ID_swsh         :: swsh;
    KBTS_FEATURE_ID_test         :: test;
    KBTS_FEATURE_ID_titl         :: titl;
    KBTS_FEATURE_ID_tnam         :: tnam;
    KBTS_FEATURE_ID_tnum         :: tnum;
    KBTS_FEATURE_ID_trad         :: trad;
    KBTS_FEATURE_ID_twid         :: twid;
    KBTS_FEATURE_ID_unic         :: unic;
    KBTS_FEATURE_ID_valt         :: valt;
    KBTS_FEATURE_ID_vapk         :: vapk;
    KBTS_FEATURE_ID_vatu         :: vatu;
    KBTS_FEATURE_ID_vchw         :: vchw;
    KBTS_FEATURE_ID_vert         :: vert;
    KBTS_FEATURE_ID_vhal         :: vhal;
    KBTS_FEATURE_ID_vkna         :: vkna;
    KBTS_FEATURE_ID_vkrn         :: vkrn;
    KBTS_FEATURE_ID_vpal         :: vpal;
    KBTS_FEATURE_ID_vrt2         :: vrt2;
    KBTS_FEATURE_ID_vrtr         :: vrtr;
    KBTS_FEATURE_ID_zero         :: zero;
    KBTS_FEATURE_ID_COUNT        :: COUNT;
}

kbts_shaping_table :: u8;
kbts_shaping_table_enum :: enum s32 {
    GSUB  :: 0;
    GPOS  :: 1;
    COUNT :: 2;

    KBTS_SHAPING_TABLE_GSUB  :: GSUB;
    KBTS_SHAPING_TABLE_GPOS  :: GPOS;
    KBTS_SHAPING_TABLE_COUNT :: COUNT;
}

kbts_lookup_info :: struct {
    MaximumBacktrackWithoutSkippingGlyphs: u32;
    MaximumLookaheadWithoutSkippingGlyphs: u32;
    MaximumSubstitutionOutputSize:         u32;
    MaximumInputSequenceLength:            u32;
    MaximumLookupStackSize:                u32;
}

kbts_gdef :: struct {}
kbts_cmap_14 :: struct {}
kbts_gsub_gpos :: struct {}
kbts_maxp :: struct {}
kbts_hea :: struct {}
kbts_iterate_features :: struct {}

kbts_shaper_properties :: struct {}
kbts_feature :: struct {}
kbts_head :: struct {}

kbts_lookup_subtable_info :: struct {
    MinimumBacktrackPlusOne: u32;
    MinimumFollowupPlusOne:  u32;
}

kbts_font :: struct {
    FileBase:                   *u8;
    FileSize:                   u64;
    Head:                       *kbts_head;
    Cmap:                       *u16;
    Gdef:                       *kbts_gdef;
    Cmap14:                     *kbts_cmap_14;
    ShapingTables:              [2] *kbts_gsub_gpos;
    Fvar:                       *void;
    Maxp:                       *kbts_maxp;

    Hea:                        [2] *kbts_hea;
    Mtx:                        [2] *u16;

    LookupInfo:                 kbts_lookup_info;

    GlyphCount:                 u32;
    LookupCount:                u32;
    SubtableCount:              u32;

    GlyphLookupMatrix:          *u32;
    GlyphLookupSubtableMatrix:  *u32;
    LookupSubtableIndexOffsets: *u32;
    SubtableInfos:              *kbts_lookup_subtable_info;
    GposLookupIndexOffset:      u32;

    Error:                      s32;
}

kbts_glyph_classes :: struct {
    Class:               u16;
    MarkAttachmentClass: u16;
}

kbts_feature_set :: struct {
    Flags: [4] u64;
}

kbts_feature_override :: struct {
    Id:                        kbts_feature_id;
    Tag:                       kbts_feature_tag;
    EnabledOrAlternatePlusOne: u32;
}

kbts_glyph_config :: struct {
    EnabledFeatures:                 kbts_feature_set;
    DisabledFeatures:                kbts_feature_set;
    FeatureOverrideCount:            u32;
    FeatureOverrideCapacity:         u32;
    RequiredFeatureOverrideCapacity: u32;
    FeatureOverrides:                *kbts_feature_override;
}

kbts_glyph :: struct {
    Codepoint:                     u32;
    Id:                            u16;
    Uid:                           u16;
    Classes:                       kbts_glyph_classes;

    Decomposition:                 u64;

    Config:                        *kbts_glyph_config;

    Flags:                         kbts_glyph_flags;

    OffsetX:                       s32;
    OffsetY:                       s32;
    AdvanceX:                      s32;
    AdvanceY:                      s32;

    ParentInfo:                    u32;

    LigatureUid:                   u16;
    LigatureComponentIndexPlusOne: u16;

    AttachGlyphIndexPlusOne:       u16;

    JoiningFeature:                kbts_joining_feature;

    JoiningType:                   kbts_unicode_joining_type;
    Script:                        u8;
    UnicodeFlags:                  u8;
    SyllabicClass:                 u8;
    SyllabicPosition:              u8;
    UseClass:                      u8;
    CombiningClass:                u8;

    MarkOrdering:                  u8;
}

kbts_glyph_array :: struct {
    Glyphs:           *kbts_glyph;
    Count:            u32;
    TotalCount:       u32;
    Capacity:         u32;
    RequiredCapacity: u32;
}

kbts_op_state_normalize :: struct {
    CodepointsToDecomposeCount: u64;
    AboveBaseGlyphCount:        u64;
}

kbts_op_state_gsub :: struct {
    LookupFeatures: kbts_feature_set;
    LookupIndex:    u64;
    GlyphFilter:    u32;
    SkipFlags:      u32;
}

kbts_op_state_normalize_hangul :: struct {
    LvtGlyphs:     [4] kbts_glyph;
    LvtGlyphCount: u64;
}

kbts_op_state_op_specific :: union {
    Normalize:       kbts_op_state_normalize;
    Gsub:            kbts_op_state_gsub;
    NormalizeHangul: kbts_op_state_normalize_hangul;
}

kbts_lookup_indices :: struct {
    FeatureTag:  u32;
    FeatureId:   u32;
    SkipFlags:   u32;
    GlyphFilter: u32;
    Count:       u32;
    Indices:     *u16;
}

kbts_op :: struct {
    Kind:     kbts_op_kind;
    Features: kbts_feature_set;
}

kbts_op_state :: struct {
    WrittenCount:             u64;
    GlyphIndex:               u64;
    FrameCount:               u32;
    ResumePoint:              u32;

    FeatureCount:             u32;
    FeatureLookupIndices:     [16] kbts_lookup_indices;
    UnregisteredFeatureCount: u32;
    UnregisteredFeatureTags:  [16] kbts_feature_tag;

    OpSpecific:               kbts_op_state_op_specific;
}

kbts_op_list :: struct {
    Ops:    *u8;
    Length: u64;
}

kbts_indic_script_properties :: struct {
    ViramaCodepoint:        u32;
    BlwfPostOnly:           u8;
    RephPosition:           kbts_reph_position;
    RephEncoding:           kbts_reph_encoding;
    RightSideMatraPosition: kbts_syllabic_position;
    AboveBaseMatraPosition: kbts_syllabic_position;
    BelowBaseMatraPosition: kbts_syllabic_position;
}

kbts_langsys :: struct {}
kbts_shape_config :: struct {
    Font:                  *kbts_font;
    Script:                kbts_script;
    Language:              kbts_language;
    Langsys:               [2] *kbts_langsys;
    OpLists:               [4] kbts_op_list;

    Features:              *kbts_feature_set;

    Shaper:                kbts_shaper;
    ShaperProperties:      *kbts_shaper_properties;

    IndicScriptProperties: kbts_indic_script_properties;
    Blwf:                  *kbts_feature;
    Pref:                  *kbts_feature;
    Pstf:                  *kbts_feature;
    Locl:                  *kbts_feature;
    Rphf:                  *kbts_feature;
    Half:                  *kbts_feature;
    Vatu:                  *kbts_feature;

    Virama:                kbts_glyph;

    DottedCircle:          kbts_glyph;
    Whitespace:            kbts_glyph;

    Nikhahit:              kbts_glyph;
    SaraAa:                kbts_glyph;
}

kbts_shape_state :: struct {
    Op:                                   kbts_op;
    Config:                               *kbts_shape_config;
    MainDirection:                        kbts_direction;
    RunDirection:                         kbts_direction;

    UserFeatures:                         kbts_feature_set;

    GlyphArray:                           kbts_glyph_array;
    ClusterGlyphArray:                    kbts_glyph_array;

    DottedCircleInsertIndex:              u32;

    GlyphCountStartingFromCurrentCluster: u32;

    At:                                   u32;
    ResumePoint:                          u32;
    OpGlyphOffset:                        u32;
    ClusterGlyphCount:                    u32;
    Ip:                                   u32;
    NextGlyphUid:                         u32;

    RequiredGlyphCapacity:                u32;

    RealCluster:                          s32;
    ClusterAtStartOfWord:                 s32;
    WordBreak:                            s32;

    OpState:                              kbts_op_state;
}

kbts_cursor :: struct {
    Direction:    kbts_direction;
    LastAdvanceX: s32;
    X:            s32;
    Y:            s32;
}

kbts_break :: struct {
    Position:  u32;
    Flags:     kbts_break_flags;
    Direction: kbts_direction;
    Script:    kbts_script;
}

kbts_bracket :: struct {
    Codepoint: u32;
    Direction: u8;
    Script:    u8;
}

kbts_break_state_flags :: u32;
kbts_break_state_flags_enum :: enum s32 {
    STARTED                         :: 1;
    END                             :: 2;
    RAN_OUT_OF_REORDER_BUFFER_SPACE :: 4;

    SAW_R_AFTER_L                   :: 8;
    SAW_AL_AFTER_LR                 :: 16;
    LAST_WAS_BRACKET                :: 32;

    KBTS_BREAK_STATE_FLAG_STARTED                         :: STARTED;
    KBTS_BREAK_STATE_FLAG_END                             :: END;
    KBTS_BREAK_STATE_FLAG_RAN_OUT_OF_REORDER_BUFFER_SPACE :: RAN_OUT_OF_REORDER_BUFFER_SPACE;

    KBTS_BREAK_STATE_FLAG_SAW_R_AFTER_L                   :: SAW_R_AFTER_L;
    KBTS_BREAK_STATE_FLAG_SAW_AL_AFTER_LR                 :: SAW_AL_AFTER_LR;
    KBTS_BREAK_STATE_FLAG_LAST_WAS_BRACKET                :: LAST_WAS_BRACKET;
}

kbts_break_state :: struct {
    Breaks:                             [8] kbts_break;
    BreakCount:                         u32;
    MainDirection:                      kbts_direction;

    LastFlushedBreakPosition:           u32;
    CurrentPosition:                    u32;

    LastScripts:                        [2] u8;

    Brackets:                           [64] kbts_bracket;
    BracketCount:                       u32;
    Flags:                              kbts_break_state_flags;

    FlagState:                          u32;
    PositionOffset2:                    s16;
    PositionOffset3:                    s16;

    WordBreakHistory:                   u32;
    WordBreaks:                         u16;
    WordUnbreaks:                       u16;
    WordBreak2PositionOffset:           s16;

    LineBreaks:                         u64;

    LineUnbreaksAsync:                  u64;
    LineUnbreaks:                       u64;
    LineBreakHistory:                   u32;
    LineBreak2PositionOffset:           s16;
    LineBreak3PositionOffset:           s16;

    LastDirection:                      u8;
    BidirectionalClass2:                u8;
    BidirectionalClass1:                u8;

    JapaneseLineBreakStyle:             kbts_japanese_line_break_style;
    GraphemeBreakState:                 u8;
    LastLineBreakClass:                 u8;
    LastWordBreakClass:                 u8;
    LastWordBreakClassIncludingIgnored: u8;
}

kbts_decode :: struct {
    Codepoint:                u32;

    SourceCharactersConsumed: u32;
    Valid:                    u32;
}

kbts_FontFromFile :: (FileName: *u8) -> kbts_font #foreign kb_text_shape;
kbts_FreeFont :: (Font: *kbts_font) -> void #foreign kb_text_shape;
kbts_CreateShapeState :: (Font: *kbts_font) -> *kbts_shape_state #foreign kb_text_shape;
kbts_FreeShapeState :: (State: *kbts_shape_state) -> void #foreign kb_text_shape;

kbts_FeatureTagToId :: (Tag: kbts_feature_tag) -> kbts_feature_id #foreign kb_text_shape;
kbts_FeatureOverride :: (Id: kbts_feature_id, Alternate: s32, Value: u32) -> kbts_feature_override #foreign kb_text_shape;
kbts_FeatureOverrideFromTag :: (Tag: kbts_feature_tag, Alternate: s32, Value: u32) -> kbts_feature_override #foreign kb_text_shape;
kbts_GlyphConfig :: (FeatureOverrides: *kbts_feature_override, FeatureOverrideCount: u32) -> kbts_glyph_config #foreign kb_text_shape;
kbts_EmptyGlyphConfig :: (FeatureOverrides: *kbts_feature_override, FeatureOverrideCapacity: u32) -> kbts_glyph_config #foreign kb_text_shape;
kbts_GlyphConfigOverrideFeature :: (Config: *kbts_glyph_config, Id: kbts_feature_id, Alternate: s32, Value: u32) -> s32 #foreign kb_text_shape;
kbts_GlyphConfigOverrideFeatureFromTag :: (Config: *kbts_glyph_config, Tag: kbts_feature_tag, Alternate: s32, Value: u32) -> s32 #foreign kb_text_shape;
kbts_FontIsValid :: (Font: *kbts_font) -> s32 #foreign kb_text_shape;
kbts_ReadFontHeader :: (Font: *kbts_font, Data: *void, Size: u64) -> u64 #foreign kb_text_shape;
kbts_ReadFontData :: (Font: *kbts_font, Scratch: *void, ScratchSize: u64) -> u64 #foreign kb_text_shape;
kbts_PostReadFontInitialize :: (Font: *kbts_font, Memory: *void, MemorySize: u64) -> s32 #foreign kb_text_shape;
kbts_SizeOfShapeState :: (Font: *kbts_font) -> u64 #foreign kb_text_shape;
kbts_PlaceShapeState :: (Address: *void, Size: u64) -> *kbts_shape_state #foreign kb_text_shape;
kbts_ResetShapeState :: (State: *kbts_shape_state) -> void #foreign kb_text_shape;
kbts_ShapeConfig :: (Font: *kbts_font, Script: kbts_script, Language: kbts_language) -> kbts_shape_config #foreign kb_text_shape;
kbts_ShaperIsComplex :: (Shaper: kbts_shaper) -> s32 #foreign kb_text_shape;
kbts_Shape :: (State: *kbts_shape_state, Config: *kbts_shape_config, MainDirection: kbts_direction, RunDirection: kbts_direction, Glyphs: *kbts_glyph, GlyphCount: *u32, GlyphCapacity: u32) -> s32 #foreign kb_text_shape;
kbts_Cursor :: (Direction: kbts_direction) -> kbts_cursor #foreign kb_text_shape;
kbts_PositionGlyph :: (Cursor: *kbts_cursor, Glyph: *kbts_glyph, X: *s32, Y: *s32) -> void #foreign kb_text_shape;
kbts_BeginBreak :: (State: *kbts_break_state, MainDirection: kbts_direction, JapaneseLineBreakStyle: kbts_japanese_line_break_style) -> void #foreign kb_text_shape;
kbts_BreakStateIsValid :: (State: *kbts_break_state) -> s32 #foreign kb_text_shape;
kbts_BreakAddCodepoint :: (State: *kbts_break_state, Codepoint: u32, PositionIncrement: u32, EndOfText: s32) -> void #foreign kb_text_shape;
kbts_BreakFlush :: (State: *kbts_break_state) -> void #foreign kb_text_shape;
kbts_Break :: (State: *kbts_break_state, Break: *kbts_break) -> s32 #foreign kb_text_shape;
kbts_DecodeUtf8 :: (Utf8: *u8, Length: u64) -> kbts_decode #foreign kb_text_shape;
kbts_CodepointToGlyph :: (Font: *kbts_font, Codepoint: u32) -> kbts_glyph #foreign kb_text_shape;
kbts_InferScript :: (Direction: *kbts_direction, Script: *kbts_script, GlyphScript: kbts_script) -> void #foreign kb_text_shape;
kbts_ScriptIsComplex :: (Script: kbts_script) -> s32 #foreign kb_text_shape;
kbts_ScriptTagToScript :: (Tag: kbts_script_tag) -> kbts_script #foreign kb_text_shape;

#scope_file


#if OS == .WINDOWS {
    kb_text_shape :: #library "windows/kb_text_shape";
} else #if OS == .LINUX {
    kb_text_shape :: #library "linux/kb_text_shape";
} else #if OS == .MACOS {
    kb_text_shape :: #library "macos/kb_text_shape";
} else #if OS == .ANDROID {
    #if CPU == .X64 {
        kb_text_shape :: #library "android/x64/kb_text_shape";
    } else #if CPU == .ARM64 {
        kb_text_shape :: #library "android/arm64/kb_text_shape";
    }
} else #if OS == .PS5 {
    kb_text_shape :: #library "ps5/kb_text_shape";
} else {
    #assert false;
}

