use encoding::all::encodings;
use lazy_static::lazy_static;
use maplit::{hashmap, hashset};
use regex::Regex;
use std::collections::HashMap;
use std::collections::HashSet;
use std::ops::Range;
lazy_static! {
pub(crate) static ref ENCODING_MARKS: HashMap<&'static str, &'static [u8]> = hashmap!{
"utf-8" => b"\xef\xbb\xbf".as_slice(),
"gb18030" => b"\x84\x31\x95\x33".as_slice(),
"utf-16le" => b"\xff\xfe".as_slice(),
"utf-16be" => b"\xfe\xff".as_slice(),
};
pub static ref MAX_PROCESSED_BYTES: usize = 500_000;
pub static ref TOO_SMALL_SEQUENCE: usize = 32;
pub static ref TOO_BIG_SEQUENCE: usize = 10e6 as usize;
pub(crate) static ref UTF8_MAXIMAL_ALLOCATION: usize = 1112064;
pub(crate) static ref UNICODE_RANGES_COMBINED: Vec<(&'static str, Range<u32>)> = vec![
("Control character", 0..31 + 1),
("Basic Latin", 32..127 + 1),
("Latin-1 Supplement", 128..255 + 1),
("Latin Extended-A", 256..383 + 1),
("Latin Extended-B", 384..591 + 1),
("IPA Extensions", 592..687 + 1),
("Spacing Modifier Letters", 688..767 + 1),
("Combining Diacritical Marks", 768..879 + 1),
("Greek and Coptic", 880..1023 + 1),
("Cyrillic", 1024..1279 + 1),
("Cyrillic Supplement", 1280..1327 + 1),
("Armenian", 1328..1423 + 1),
("Hebrew", 1424..1535 + 1),
("Arabic", 1536..1791 + 1),
("Syriac", 1792..1871 + 1),
("Arabic Supplement", 1872..1919 + 1),
("Thaana", 1920..1983 + 1),
("NKo", 1984..2047 + 1),
("Samaritan", 2048..2111 + 1),
("Mandaic", 2112..2143 + 1),
("Syriac Supplement", 2144..2159 + 1),
("Arabic Extended-A", 2208..2303 + 1),
("Devanagari", 2304..2431 + 1),
("Bengali", 2432..2559 + 1),
("Gurmukhi", 2560..2687 + 1),
("Gujarati", 2688..2815 + 1),
("Oriya", 2816..2943 + 1),
("Tamil", 2944..3071 + 1),
("Telugu", 3072..3199 + 1),
("Kannada", 3200..3327 + 1),
("Malayalam", 3328..3455 + 1),
("Sinhala", 3456..3583 + 1),
("Thai", 3584..3711 + 1),
("Lao", 3712..3839 + 1),
("Tibetan", 3840..4095 + 1),
("Myanmar", 4096..4255 + 1),
("Georgian", 4256..4351 + 1),
("Hangul Jamo", 4352..4607 + 1),
("Ethiopic", 4608..4991 + 1),
("Ethiopic Supplement", 4992..5023 + 1),
("Cherokee", 5024..5119 + 1),
("Unified Canadian Aboriginal Syllabics", 5120..5759 + 1),
("Ogham", 5760..5791 + 1),
("Runic", 5792..5887 + 1),
("Tagalog", 5888..5919 + 1),
("Hanunoo", 5920..5951 + 1),
("Buhid", 5952..5983 + 1),
("Tagbanwa", 5984..6015 + 1),
("Khmer", 6016..6143 + 1),
("Mongolian", 6144..6319 + 1),
("Unified Canadian Aboriginal Syllabics Extended", 6320..6399 + 1),
("Limbu", 6400..6479 + 1),
("Tai Le", 6480..6527 + 1),
("New Tai Lue", 6528..6623 + 1),
("Khmer Symbols", 6624..6655 + 1),
("Buginese", 6656..6687 + 1),
("Tai Tham", 6688..6831 + 1),
("Combining Diacritical Marks Extended", 6832..6911 + 1),
("Balinese", 6912..7039 + 1),
("Sundanese", 7040..7103 + 1),
("Batak", 7104..7167 + 1),
("Lepcha", 7168..7247 + 1),
("Ol Chiki", 7248..7295 + 1),
("Cyrillic Extended C", 7296..7311 + 1),
("Sundanese Supplement", 7360..7375 + 1),
("Vedic Extensions", 7376..7423 + 1),
("Phonetic Extensions", 7424..7551 + 1),
("Phonetic Extensions Supplement", 7552..7615 + 1),
("Combining Diacritical Marks Supplement", 7616..7679 + 1),
("Latin Extended Additional", 7680..7935 + 1),
("Greek Extended", 7936..8191 + 1),
("General Punctuation", 8192..8303 + 1),
("Superscripts and Subscripts", 8304..8351 + 1),
("Currency Symbols", 8352..8399 + 1),
("Combining Diacritical Marks for Symbols", 8400..8447 + 1),
("Letterlike Symbols", 8448..8527 + 1),
("Number Forms", 8528..8591 + 1),
("Arrows", 8592..8703 + 1),
("Mathematical Operators", 8704..8959 + 1),
("Miscellaneous Technical", 8960..9215 + 1),
("Control Pictures", 9216..9279 + 1),
("Optical Character Recognition", 9280..9311 + 1),
("Enclosed Alphanumerics", 9312..9471 + 1),
("Box Drawing", 9472..9599 + 1),
("Block Elements", 9600..9631 + 1),
("Geometric Shapes", 9632..9727 + 1),
("Miscellaneous Symbols", 9728..9983 + 1),
("Dingbats", 9984..10175 + 1),
("Miscellaneous Mathematical Symbols-A", 10176..10223 + 1),
("Supplemental Arrows-A", 10224..10239 + 1),
("Braille Patterns", 10240..10495 + 1),
("Supplemental Arrows-B", 10496..10623 + 1),
("Miscellaneous Mathematical Symbols-B", 10624..10751 + 1),
("Supplemental Mathematical Operators", 10752..11007 + 1),
("Miscellaneous Symbols and Arrows", 11008..11263 + 1),
("Glagolitic", 11264..11359 + 1),
("Latin Extended-C", 11360..11391 + 1),
("Coptic", 11392..11519 + 1),
("Georgian Supplement", 11520..11567 + 1),
("Tifinagh", 11568..11647 + 1),
("Ethiopic Extended", 11648..11743 + 1),
("Cyrillic Extended-A", 11744..11775 + 1),
("Supplemental Punctuation", 11776..11903 + 1),
("CJK Radicals Supplement", 11904..12031 + 1),
("Kangxi Radicals", 12032..12255 + 1),
("Ideographic Description Characters", 12272..12287 + 1),
("CJK Symbols and Punctuation", 12288..12351 + 1),
("Hiragana", 12352..12447 + 1),
("Katakana", 12448..12543 + 1),
("Bopomofo", 12544..12591 + 1),
("Hangul Compatibility Jamo", 12592..12687 + 1),
("Kanbun", 12688..12703 + 1),
("Bopomofo Extended", 12704..12735 + 1),
("CJK Strokes", 12736..12783 + 1),
("Katakana Phonetic Extensions", 12784..12799 + 1),
("Enclosed CJK Letters and Months", 12800..13055 + 1),
("CJK Compatibility", 13056..13311 + 1),
("CJK Unified Ideographs Extension A", 13312..19903 + 1),
("Yijing Hexagram Symbols", 19904..19967 + 1),
("CJK Unified Ideographs", 19968..40959 + 1),
("Yi Syllables", 40960..42127 + 1),
("Yi Radicals", 42128..42191 + 1),
("Lisu", 42192..42239 + 1),
("Vai", 42240..42559 + 1),
("Cyrillic Extended-B", 42560..42655 + 1),
("Bamum", 42656..42751 + 1),
("Modifier Tone Letters", 42752..42783 + 1),
("Latin Extended-D", 42784..43007 + 1),
("Syloti Nagri", 43008..43055 + 1),
("Common Indic Number Forms", 43056..43071 + 1),
("Phags-pa", 43072..43135 + 1),
("Saurashtra", 43136..43231 + 1),
("Devanagari Extended", 43232..43263 + 1),
("Kayah Li", 43264..43311 + 1),
("Rejang", 43312..43359 + 1),
("Hangul Jamo Extended-A", 43360..43391 + 1),
("Javanese", 43392..43487 + 1),
("Myanmar Extended-B", 43488..43519 + 1),
("Cham", 43520..43615 + 1),
("Myanmar Extended-A", 43616..43647 + 1),
("Tai Viet", 43648..43743 + 1),
("Meetei Mayek Extensions", 43744..43775 + 1),
("Ethiopic Extended-A", 43776..43823 + 1),
("Latin Extended-E", 43824..43887 + 1),
("Cherokee Supplement", 43888..43967 + 1),
("Meetei Mayek", 43968..44031 + 1),
("Hangul Syllables", 44032..55215 + 1),
("Hangul Jamo Extended-B", 55216..55295 + 1),
("High Surrogates", 55296..56191 + 1),
("High Private Use Surrogates", 56192..56319 + 1),
("Low Surrogates", 56320..57343 + 1),
("Private Use Area", 57344..63743 + 1),
("CJK Compatibility Ideographs", 63744..64255 + 1),
("Alphabetic Presentation Forms", 64256..64335 + 1),
("Arabic Presentation Forms-A", 64336..65023 + 1),
("Variation Selectors", 65024..65039 + 1),
("Vertical Forms", 65040..65055 + 1),
("Combining Half Marks", 65056..65071 + 1),
("CJK Compatibility Forms", 65072..65103 + 1),
("Small Form Variants", 65104..65135 + 1),
("Arabic Presentation Forms-B", 65136..65279 + 1),
("Halfwidth and Fullwidth Forms", 65280..65519 + 1),
("Specials", 65520..65535 + 1),
("Linear B Syllabary", 65536..65663 + 1),
("Linear B Ideograms", 65664..65791 + 1),
("Aegean Numbers", 65792..65855 + 1),
("Ancient Greek Numbers", 65856..65935 + 1),
("Ancient Symbols", 65936..65999 + 1),
("Phaistos Disc", 66000..66047 + 1),
("Lycian", 66176..66207 + 1),
("Carian", 66208..66271 + 1),
("Coptic Epact Numbers", 66272..66303 + 1),
("Old Italic", 66304..66351 + 1),
("Gothic", 66352..66383 + 1),
("Old Permic", 66384..66431 + 1),
("Ugaritic", 66432..66463 + 1),
("Old Persian", 66464..66527 + 1),
("Deseret", 66560..66639 + 1),
("Shavian", 66640..66687 + 1),
("Osmanya", 66688..66735 + 1),
("Osage", 66736..66815 + 1),
("Elbasan", 66816..66863 + 1),
("Caucasian Albanian", 66864..66927 + 1),
("Linear A", 67072..67455 + 1),
("Cypriot Syllabary", 67584..67647 + 1),
("Imperial Aramaic", 67648..67679 + 1),
("Palmyrene", 67680..67711 + 1),
("Nabataean", 67712..67759 + 1),
("Hatran", 67808..67839 + 1),
("Phoenician", 67840..67871 + 1),
("Lydian", 67872..67903 + 1),
("Meroitic Hieroglyphs", 67968..67999 + 1),
("Meroitic Cursive", 68000..68095 + 1),
("Kharoshthi", 68096..68191 + 1),
("Old South Arabian", 68192..68223 + 1),
("Old North Arabian", 68224..68255 + 1),
("Manichaean", 68288..68351 + 1),
("Avestan", 68352..68415 + 1),
("Inscriptional Parthian", 68416..68447 + 1),
("Inscriptional Pahlavi", 68448..68479 + 1),
("Psalter Pahlavi", 68480..68527 + 1),
("Old Turkic", 68608..68687 + 1),
("Old Hungarian", 68736..68863 + 1),
("Rumi Numeral Symbols", 69216..69247 + 1),
("Brahmi", 69632..69759 + 1),
("Kaithi", 69760..69839 + 1),
("Sora Sompeng", 69840..69887 + 1),
("Chakma", 69888..69967 + 1),
("Mahajani", 69968..70015 + 1),
("Sharada", 70016..70111 + 1),
("Sinhala Archaic Numbers", 70112..70143 + 1),
("Khojki", 70144..70223 + 1),
("Multani", 70272..70319 + 1),
("Khudawadi", 70320..70399 + 1),
("Grantha", 70400..70527 + 1),
("Newa", 70656..70783 + 1),
("Tirhuta", 70784..70879 + 1),
("Siddham", 71040..71167 + 1),
("Modi", 71168..71263 + 1),
("Mongolian Supplement", 71264..71295 + 1),
("Takri", 71296..71375 + 1),
("Ahom", 71424..71487 + 1),
("Warang Citi", 71840..71935 + 1),
("Zanabazar Square", 72192..72271 + 1),
("Soyombo", 72272..72367 + 1),
("Pau Cin Hau", 72384..72447 + 1),
("Bhaiksuki", 72704..72815 + 1),
("Marchen", 72816..72895 + 1),
("Masaram Gondi", 72960..73055 + 1),
("Cuneiform", 73728..74751 + 1),
("Cuneiform Numbers and Punctuation", 74752..74879 + 1),
("Early Dynastic Cuneiform", 74880..75087 + 1),
("Egyptian Hieroglyphs", 77824..78895 + 1),
("Anatolian Hieroglyphs", 82944..83583 + 1),
("Bamum Supplement", 92160..92735 + 1),
("Mro", 92736..92783 + 1),
("Bassa Vah", 92880..92927 + 1),
("Pahawh Hmong", 92928..93071 + 1),
("Miao", 93952..94111 + 1),
("Ideographic Symbols and Punctuation", 94176..94207 + 1),
("Tangut", 94208..100351 + 1),
("Tangut Components", 100352..101119 + 1),
("Kana Supplement", 110592..110847 + 1),
("Kana Extended-A", 110848..110895 + 1),
("Nushu", 110960..111359 + 1),
("Duployan", 113664..113823 + 1),
("Shorthand Format Controls", 113824..113839 + 1),
("Byzantine Musical Symbols", 118784..119039 + 1),
("Musical Symbols", 119040..119295 + 1),
("Ancient Greek Musical Notation", 119296..119375 + 1),
("Tai Xuan Jing Symbols", 119552..119647 + 1),
("Counting Rod Numerals", 119648..119679 + 1),
("Mathematical Alphanumeric Symbols", 119808..120831 + 1),
("Sutton SignWriting", 120832..121519 + 1),
("Glagolitic Supplement", 122880..122927 + 1),
("Mende Kikakui", 124928..125151 + 1),
("Adlam", 125184..125279 + 1),
("Arabic Mathematical Alphabetic Symbols", 126464..126719 + 1),
("Mahjong Tiles", 126976..127023 + 1),
("Domino Tiles", 127024..127135 + 1),
("Playing Cards", 127136..127231 + 1),
("Enclosed Alphanumeric Supplement", 127232..127487 + 1),
("Enclosed Ideographic Supplement", 127488..127743 + 1),
("Miscellaneous Symbols and Pictographs", 127744..128511 + 1),
("Emoticons range(Emoji)", 128512..128591 + 1),
("Ornamental Dingbats", 128592..128639 + 1),
("Transport and Map Symbols", 128640..128767 + 1),
("Alchemical Symbols", 128768..128895 + 1),
("Geometric Shapes Extended", 128896..129023 + 1),
("Supplemental Arrows-C", 129024..129279 + 1),
("Supplemental Symbols and Pictographs", 129280..129535 + 1),
("CJK Unified Ideographs Extension B", 131072..173791 + 1),
("CJK Unified Ideographs Extension C", 173824..177983 + 1),
("CJK Unified Ideographs Extension D", 177984..178207 + 1),
("CJK Unified Ideographs Extension E", 178208..183983 + 1),
("CJK Unified Ideographs Extension F", 183984..191471 + 1),
("CJK Compatibility Ideographs Supplement", 194560..195103 + 1),
("Tags", 917504..917631 + 1),
("Variation Selectors Supplement", 917760..917999 + 1),
];
pub(crate) static ref UNICODE_SECONDARY_RANGE_KEYWORD: HashSet<&'static str> = hashset!(
"Supplement",
"Extended",
"Extensions",
"Modifier",
"Marks",
"Punctuation",
"Symbols",
"Forms",
"Operators",
"Miscellaneous",
"Drawing",
"Block",
"Shapes",
"Supplemental",
"Tags",
);
pub(crate) static ref COMMON_SAFE_ASCII_CHARACTERS: &'static str = "<>=:/&;{}[],|\"-";
pub(crate) static ref RE_POSSIBLE_ENCODING_INDICATION: Regex = Regex::new(
r#"(?:(?:encoding)|(?:charset)|(?:coding))(?:[\:= ]{1,10})(?:["']?)([a-zA-Z0-9\-_]+)(?:["']?)"#
).unwrap();
pub static ref IANA_SUPPORTED: Vec<&'static str> = encodings()
.iter()
.filter(|&enc| !["error", "encoder-only-utf-8", "pua-mapped-binary"].contains(&enc.name()) )
.map(|&enc| enc.whatwg_name().unwrap_or(enc.name()))
.collect();
pub static ref IANA_SUPPORTED_COUNT: usize = IANA_SUPPORTED.len();
pub static ref CHARDET_CORRESPONDENCE: HashMap<&'static str, &'static str> = hashmap!{
"tis-620" => "windows-874",
"utf-16" => "utf-16le",
"maccyrillic" => "x-mac-cyrillic",
"gb2312" => "gbk",
"cp949" => "euc-kr",
};
pub static ref IANA_SUPPORTED_ALIASES: HashMap<&'static str, Vec<&'static str>> = hashmap!{
"utf-8" => vec!["unicode-1-1-utf-8", "unicode11utf8", "unicode20utf8", "utf-8", "utf8", "x-unicode20utf8"],
"ibm866" => vec!["866", "cp866", "csibm866", "ibm866"],
"iso-8859-2" => vec!["csisolatin2", "iso-8859-2", "iso-ir-101", "iso8859-2", "iso88592", "iso_8859-2", "iso_8859-2:1987", "l2", "latin2"],
"iso-8859-3" => vec!["csisolatin3", "iso-8859-3", "iso-ir-109", "iso8859-3", "iso88593", "iso_8859-3", "iso_8859-3:1988", "l3", "latin3"],
"iso-8859-4" => vec!["csisolatin4", "iso-8859-4", "iso-ir-110", "iso8859-4", "iso88594", "iso_8859-4", "iso_8859-4:1988", "l4", "latin4"],
"iso-8859-5" => vec!["csisolatincyrillic", "cyrillic", "iso-8859-5", "iso-ir-144", "iso8859-5", "iso88595", "iso_8859-5", "iso_8859-5:1988"],
"iso-8859-6" => vec!["arabic", "asmo-708", "csiso88596e", "csiso88596i", "csisolatinarabic", "ecma-114", "iso-8859-6", "iso-8859-6-e", "iso-8859-6-i", "iso-ir-127", "iso8859-6", "iso88596", "iso_8859-6", "iso_8859-6:1987"],
"iso-8859-7" => vec!["csisolatingreek", "ecma-118", "elot_928", "greek", "greek8", "iso-8859-7", "iso-ir-126", "iso8859-7", "iso88597", "iso_8859-7", "iso_8859-7:1987", "sun_eu_greek"],
"iso-8859-8" => vec!["csiso88598e", "csisolatinhebrew", "hebrew", "iso-8859-8", "iso-8859-8-e", "iso-ir-138", "iso8859-8", "iso88598", "iso_8859-8", "iso_8859-8:1988", "visual"],
"iso-8859-8-i" => vec!["csiso88598i", "iso-8859-8-i", "logical"],
"iso-8859-10" => vec!["csisolatin6", "iso-8859-10", "iso-ir-157", "iso8859-10", "iso885910", "l6", "latin6"],
"iso-8859-13" => vec!["iso-8859-13", "iso8859-13", "iso885913"],
"iso-8859-14" => vec!["iso-8859-14", "iso8859-14", "iso885914"],
"iso-8859-15" => vec!["csisolatin9", "iso-8859-15", "iso8859-15", "iso885915", "iso_8859-15", "l9"],
"iso-8859-16" => vec!["iso-8859-16"],
"koi8-r" => vec!["cskoi8r", "koi", "koi8", "koi8-r", "koi8_r"],
"koi8-u" => vec!["koi8-ru", "koi8-u"],
"macintosh" => vec!["csmacintosh", "mac", "macintosh", "x-mac-roman"],
"windows-874" => vec!["dos-874", "iso-8859-11", "iso8859-11", "iso885911", "tis-620", "windows-874"],
"windows-1250" => vec!["cp1250", "windows-1250", "x-cp1250"],
"windows-1251" => vec!["cp1251", "windows-1251", "x-cp1251"],
"windows-1252" => vec!["ansi_x3.4-1968", "ascii", "cp1252", "cp819", "csisolatin1", "ibm819", "iso-8859-1", "iso-ir-100", "iso8859-1", "iso88591", "iso_8859-1", "iso_8859-1:1987", "l1", "latin1", "us-ascii", "windows-1252", "x-cp1252"],
"windows-1253" => vec!["cp1253", "windows-1253", "x-cp1253"],
"windows-1254" => vec!["cp1254", "csisolatin5", "iso-8859-9", "iso-ir-148", "iso8859-9", "iso88599", "iso_8859-9", "iso_8859-9:1989", "l5", "latin5", "windows-1254", "x-cp1254"],
"windows-1255" => vec!["cp1255", "windows-1255", "x-cp1255"],
"windows-1256" => vec!["cp1256", "windows-1256", "x-cp1256"],
"windows-1257" => vec!["cp1257", "windows-1257", "x-cp1257"],
"windows-1258" => vec!["cp1258", "windows-1258", "x-cp1258"],
"x-mac-cyrillic" => vec!["x-mac-cyrillic", "x-mac-ukrainian"],
"gbk" => vec!["chinese", "csgb2312", "csiso58gb231280", "gb2312", "gb_2312", "gb_2312-80", "gbk", "iso-ir-58", "x-gbk"],
"gb18030" => vec!["gb18030"],
"big5" => vec!["big5", "big5-hkscs", "cn-big5", "csbig5", "x-x-big5"],
"euc-jp" => vec!["cseucpkdfmtjapanese", "euc-jp", "x-euc-jp"],
"iso-2022-jp" => vec!["csiso2022jp", "iso-2022-jp"],
"shift_jis" => vec!["csshiftjis", "ms932", "ms_kanji", "shift-jis", "shift_jis", "sjis", "windows-31j", "x-sjis"],
"euc-kr" => vec!["cseuckr", "csksc56011987", "euc-kr", "iso-ir-149", "korean", "ks_c_5601-1987", "ks_c_5601-1989", "ksc5601", "ksc_5601", "windows-949"],
"replacement" => vec!["csiso2022kr", "hz-gb-2312", "iso-2022-cn", "iso-2022-cn-ext", "iso-2022-kr", "replacement"],
"utf-16be" => vec!["unicodefffe", "utf-16be"],
"utf-16le" => vec!["csunicode", "iso-10646-ucs-2", "ucs-2", "unicode", "unicodefeff", "utf-16", "utf-16le"],
"x-user-defined" => vec!["x-user-defined"],
};
pub static ref IANA_SUPPORTED_SIMILAR: HashMap<&'static str, Vec<&'static str>> = hashmap!{
"windows-1252" => vec!["iso-8859-15", "windows-1254"],
"windows-1253" => vec!["iso-8859-7"],
"windows-1254" => vec!["iso-8859-15", "windows-1252"],
"windows-1257" => vec!["iso-8859-13"],
"iso-8859-10" => vec!["iso-8859-14", "iso-8859-15", "iso-8859-4", "windows-1254", "windows-1252"],
"iso-8859-13" => vec!["windows-1257"],
"iso-8859-14" => vec![
"iso-8859-10",
"iso-8859-15",
"iso-8859-16",
"iso-8859-3",
"windows-1254",
"windows-1252",
],
"iso-8859-15" => vec![
"windows-1252",
"windows-1254",
"iso-8859-10",
"iso-8859-14",
"iso-8859-16",
"iso-8859-3",
],
"iso-8859-16" => vec![
"iso-8859-14",
"iso-8859-15",
"iso-8859-2",
"iso-8859-3",
"windows-1254",
"windows-1252",
],
"iso-8859-2" => vec![
"iso-8859-16",
"iso-8859-4",
],
"iso-8859-3" => vec![
"iso-8859-14",
"iso-8859-15",
"iso-8859-16",
"windows-1254",
"windows-1252",
],
"iso-8859-4" => vec![
"iso-8859-10",
"iso-8859-2",
"windows-1254",
"windows-1252",
],
"iso-8859-7" => vec![
"windows-1253"
],
"windows-1254" => vec![
"windows-1252",
"windows-1258",
"iso-8859-10",
"iso-8859-14",
"iso-8859-15",
"iso-8859-16",
"iso-8859-3",
"iso-8859-4",
],
"windows-1252" => vec![
"windows-1254",
"windows-1258",
"iso-8859-10",
"iso-8859-14",
"iso-8859-15",
"iso-8859-16",
"iso-8859-3",
"iso-8859-4",
],
};
}