diff --git a/src/Nager.Country.Subdivision/EmptySubdivisionTranslation.cs b/src/Nager.Country.Subdivision/EmptySubdivisionTranslation.cs
new file mode 100644
index 0000000..3e89235
--- /dev/null
+++ b/src/Nager.Country.Subdivision/EmptySubdivisionTranslation.cs
@@ -0,0 +1,8 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision;
+
+public class EmptySubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => [];
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/ISubdivisionInfo.cs b/src/Nager.Country.Subdivision/ISubdivisionInfo.cs
new file mode 100644
index 0000000..8e9bd73
--- /dev/null
+++ b/src/Nager.Country.Subdivision/ISubdivisionInfo.cs
@@ -0,0 +1,21 @@
+namespace Nager.Country.Subdivision;
+
+public interface ISubdivisionInfo
+{
+ ///
+ /// CommonName (english)
+ ///
+ string CommonName { get; }
+ ///
+ /// ISO-3166-2 code
+ ///
+ string TextCode { get; }
+ ///
+ /// Subdivision code
+ ///
+ SubdivisionCode Code { get; }
+ ///
+ /// Alpha2Code of parent
+ ///
+ Alpha2Code ParentAlpha2Code { get; }
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/ISubdivisionProvider.cs b/src/Nager.Country.Subdivision/ISubdivisionProvider.cs
new file mode 100644
index 0000000..d786ba6
--- /dev/null
+++ b/src/Nager.Country.Subdivision/ISubdivisionProvider.cs
@@ -0,0 +1,10 @@
+namespace Nager.Country.Subdivision;
+
+public interface ISubdivisionProvider
+{
+ IEnumerable GetSubdivisions();
+ IEnumerable GetSubdivisions( Alpha2Code alpha2Code );
+ IEnumerable GetSubdivisions( Alpha3Code alpha3Code );
+
+ ISubdivisionInfo GetSubdivision( SubdivisionCode code );
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/ISubdivisionTranslation.cs b/src/Nager.Country.Subdivision/ISubdivisionTranslation.cs
new file mode 100644
index 0000000..85f19db
--- /dev/null
+++ b/src/Nager.Country.Subdivision/ISubdivisionTranslation.cs
@@ -0,0 +1,14 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision;
+
+///
+/// ISubdivisionTranslation
+///
+public interface ISubdivisionTranslation
+{
+ ///
+ /// Get all subdivision translation (different than common name)
+ ///
+ TranslationInfo[] Translations { get; }
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/ISubdivisionTranslationProvider.cs b/src/Nager.Country.Subdivision/ISubdivisionTranslationProvider.cs
new file mode 100644
index 0000000..bbabdbf
--- /dev/null
+++ b/src/Nager.Country.Subdivision/ISubdivisionTranslationProvider.cs
@@ -0,0 +1,12 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision;
+
+public interface ISubdivisionTranslationProvider
+{
+ ISubdivisionTranslation GetSubdivisionTranslation( SubdivisionCode code );
+
+ string GetSubdivisionTranslatedName( SubdivisionCode code, LanguageCode languageCode );
+
+ string GetSubdivisionTranslatedOrCommonName( SubdivisionCode code, LanguageCode languageCode );
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/Nager.Country.Subdivision.csproj b/src/Nager.Country.Subdivision/Nager.Country.Subdivision.csproj
new file mode 100644
index 0000000..f945e3a
--- /dev/null
+++ b/src/Nager.Country.Subdivision/Nager.Country.Subdivision.csproj
@@ -0,0 +1,13 @@
+
+
+
+ netstandard2.0;netstandard2.1;net6;net48
+ disable
+
+
+
+
+
+
+
+
diff --git a/src/Nager.Country.Subdivision/SubdivisionCode.cs b/src/Nager.Country.Subdivision/SubdivisionCode.cs
new file mode 100644
index 0000000..da9a4f6
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionCode.cs
@@ -0,0 +1,3515 @@
+namespace Nager.Country.Subdivision;
+
+public enum SubdivisionCode
+{
+ AD02 = 1,
+ AD03 = 2,
+ AD04 = 3,
+ AD05 = 4,
+ AD06 = 5,
+ AD07 = 6,
+ AD08 = 7,
+ AEAJ = 8,
+ AEAZ = 9,
+ AEDU = 10,
+ AEFU = 11,
+ AERK = 12,
+ AESH = 13,
+ AEUQ = 14,
+ AFBAL = 15,
+ AFBAM = 16,
+ AFBDG = 17,
+ AFBDS = 18,
+ AFBGL = 19,
+ AFDAY = 20,
+ AFFRA = 21,
+ AFFYB = 22,
+ AFGHA = 23,
+ AFGHO = 24,
+ AFHEL = 25,
+ AFHER = 26,
+ AFJOW = 27,
+ AFKAB = 28,
+ AFKAN = 29,
+ AFKDZ = 30,
+ AFKHO = 31,
+ AFLAG = 32,
+ AFLOG = 33,
+ AFNAN = 34,
+ AFNIM = 35,
+ AFPAR = 36,
+ AFPIA = 37,
+ AFPKA = 38,
+ AFSAM = 39,
+ AFSAR = 40,
+ AFTAK = 41,
+ AFURU = 42,
+ AG03 = 43,
+ AG04 = 44,
+ AG05 = 45,
+ AG06 = 46,
+ AG07 = 47,
+ AG08 = 48,
+ AG10 = 49,
+ AL01 = 50,
+ AL02 = 51,
+ AL03 = 52,
+ AL04 = 53,
+ AL05 = 54,
+ AL06 = 55,
+ AL07 = 56,
+ AL08 = 57,
+ AL09 = 58,
+ AL10 = 59,
+ AL11 = 60,
+ AL12 = 61,
+ AMAG = 62,
+ AMAR = 63,
+ AMAV = 64,
+ AMER = 65,
+ AMGR = 66,
+ AMKT = 67,
+ AMLO = 68,
+ AMSH = 69,
+ AMSU = 70,
+ AMTV = 71,
+ AMVD = 72,
+ AOBGO = 73,
+ AOBGU = 74,
+ AOBIE = 75,
+ AOCAB = 76,
+ AOCCU = 77,
+ AOCNO = 78,
+ AOCUS = 79,
+ AOHUA = 80,
+ AOHUI = 81,
+ AOLNO = 82,
+ AOLSU = 83,
+ AOLUA = 84,
+ AOMAL = 85,
+ AOMOX = 86,
+ AONAM = 87,
+ AOUIG = 88,
+ AOZAI = 89,
+ ARA = 90,
+ ARB = 91,
+ ARC = 92,
+ ARD = 93,
+ ARE = 94,
+ ARF = 95,
+ ARG = 96,
+ ARH = 97,
+ ARJ = 98,
+ ARK = 99,
+ ARL = 100,
+ ARM = 101,
+ ARN = 102,
+ ARP = 103,
+ ARQ = 104,
+ ARR = 105,
+ ARS = 106,
+ ART = 107,
+ ARU = 108,
+ ARV = 109,
+ ARW = 110,
+ ARX = 111,
+ ARY = 112,
+ ARZ = 113,
+ AT1 = 114,
+ AT2 = 115,
+ AT3 = 116,
+ AT4 = 117,
+ AT5 = 118,
+ AT6 = 119,
+ AT7 = 120,
+ AT8 = 121,
+ AT9 = 122,
+ AUACT = 123,
+ AUNSW = 124,
+ AUNT = 125,
+ AUQLD = 126,
+ AUSA = 127,
+ AUTAS = 128,
+ AUVIC = 129,
+ AUWA = 130,
+ AZABS = 131,
+ AZAGA = 132,
+ AZAGC = 133,
+ AZAGS = 134,
+ AZAGU = 135,
+ AZAST = 136,
+ AZBA = 137,
+ AZBAL = 138,
+ AZBAR = 139,
+ AZBEY = 140,
+ AZCAL = 141,
+ AZGA = 142,
+ AZGAD = 143,
+ AZGOR = 144,
+ AZGOY = 145,
+ AZGYG = 146,
+ AZIMI = 147,
+ AZISM = 148,
+ AZKUR = 149,
+ AZLA = 150,
+ AZMAS = 151,
+ AZMI = 152,
+ AZNEF = 153,
+ AZNX = 154,
+ AZOGU = 155,
+ AZQAB = 156,
+ AZQAZ = 157,
+ AZQBA = 158,
+ AZQUS = 159,
+ AZSAB = 160,
+ AZSAK = 161,
+ AZSAL = 162,
+ AZSAT = 163,
+ AZSIY = 164,
+ AZSKR = 165,
+ AZSM = 166,
+ AZSMI = 167,
+ AZSMX = 168,
+ AZSR = 169,
+ AZTAR = 170,
+ AZTOV = 171,
+ AZUCA = 172,
+ AZXAC = 173,
+ AZXIZ = 174,
+ AZYAR = 175,
+ AZYEV = 176,
+ AZZAQ = 177,
+ AZZAR = 178,
+ BABIH = 179,
+ BABRC = 180,
+ BASRP = 181,
+ BB01 = 182,
+ BB02 = 183,
+ BB03 = 184,
+ BB04 = 185,
+ BB05 = 186,
+ BB06 = 187,
+ BB07 = 188,
+ BB08 = 189,
+ BB09 = 190,
+ BB10 = 191,
+ BB11 = 192,
+ BDA = 193,
+ BDB = 194,
+ BDC = 195,
+ BDD = 196,
+ BDE = 197,
+ BDF = 198,
+ BDG = 199,
+ BEBRU = 200,
+ BEVAN = 201,
+ BEVBR = 202,
+ BEVLI = 203,
+ BEVOV = 204,
+ BEVWV = 205,
+ BEWBR = 206,
+ BEWHT = 207,
+ BEWLG = 208,
+ BEWLX = 209,
+ BEWNA = 210,
+ BFBAL = 211,
+ BFBAM = 212,
+ BFBAN = 213,
+ BFBAZ = 214,
+ BFBGR = 215,
+ BFBLG = 216,
+ BFBLK = 217,
+ BFCOM = 218,
+ BFGAN = 219,
+ BFGNA = 220,
+ BFGOU = 221,
+ BFHOU = 222,
+ BFKAD = 223,
+ BFKEN = 224,
+ BFKMP = 225,
+ BFKOS = 226,
+ BFKOT = 227,
+ BFKOW = 228,
+ BFLER = 229,
+ BFLOR = 230,
+ BFMOU = 231,
+ BFNAM = 232,
+ BFNAO = 233,
+ BFNAY = 234,
+ BFOUB = 235,
+ BFOUD = 236,
+ BFPAS = 237,
+ BFPON = 238,
+ BFSEN = 239,
+ BFSIS = 240,
+ BFSMT = 241,
+ BFSOM = 242,
+ BFTAP = 243,
+ BFTUI = 244,
+ BFYAT = 245,
+ BFZIR = 246,
+ BFZON = 247,
+ BFZOU = 248,
+ BG01 = 249,
+ BG02 = 250,
+ BG03 = 251,
+ BG04 = 252,
+ BG05 = 253,
+ BG06 = 254,
+ BG07 = 255,
+ BG08 = 256,
+ BG09 = 257,
+ BG10 = 258,
+ BG11 = 259,
+ BG12 = 260,
+ BG13 = 261,
+ BG14 = 262,
+ BG15 = 263,
+ BG16 = 264,
+ BG17 = 265,
+ BG18 = 266,
+ BG19 = 267,
+ BG20 = 268,
+ BG21 = 269,
+ BG22 = 270,
+ BG23 = 271,
+ BG24 = 272,
+ BG25 = 273,
+ BG26 = 274,
+ BG27 = 275,
+ BG28 = 276,
+ BH13 = 277,
+ BH14 = 278,
+ BH15 = 279,
+ BH17 = 280,
+ BIBM = 281,
+ BIBR = 282,
+ BICI = 283,
+ BIGI = 284,
+ BIKI = 285,
+ BIMA = 286,
+ BIMW = 287,
+ BING = 288,
+ BIRM = 289,
+ BIRT = 290,
+ BIRY = 291,
+ BJAK = 292,
+ BJAQ = 293,
+ BJBO = 294,
+ BJCO = 295,
+ BJLI = 296,
+ BJOU = 297,
+ BJPL = 298,
+ BJZO = 299,
+ BNBE = 300,
+ BNBM = 301,
+ BNTE = 302,
+ BNTU = 303,
+ BOB = 304,
+ BOC = 305,
+ BOH = 306,
+ BOL = 307,
+ BON = 308,
+ BOO = 309,
+ BOP = 310,
+ BOS = 311,
+ BOT = 312,
+ BQBO = 313,
+ BQSA = 314,
+ BQSE = 315,
+ BRAC = 316,
+ BRAL = 317,
+ BRAM = 318,
+ BRAP = 319,
+ BRBA = 320,
+ BRCE = 321,
+ BRDF = 322,
+ BRES = 323,
+ BRGO = 324,
+ BRMA = 325,
+ BRMG = 326,
+ BRMS = 327,
+ BRMT = 328,
+ BRPA = 329,
+ BRPB = 330,
+ BRPE = 331,
+ BRPI = 332,
+ BRPR = 333,
+ BRRJ = 334,
+ BRRN = 335,
+ BRRO = 336,
+ BRRR = 337,
+ BRRS = 338,
+ BRSC = 339,
+ BRSE = 340,
+ BRSP = 341,
+ BRTO = 342,
+ BSBP = 343,
+ BSCO = 344,
+ BSEG = 345,
+ BSFP = 346,
+ BSHI = 347,
+ BSLI = 348,
+ BSMI = 349,
+ BSNE = 350,
+ BSNP = 351,
+ BSNS = 352,
+ BSSE = 353,
+ BSSS = 354,
+ BSWG = 355,
+ BT11 = 356,
+ BT12 = 357,
+ BT14 = 358,
+ BT15 = 359,
+ BT21 = 360,
+ BT22 = 361,
+ BT23 = 362,
+ BT24 = 363,
+ BT31 = 364,
+ BT32 = 365,
+ BT33 = 366,
+ BT41 = 367,
+ BT42 = 368,
+ BT43 = 369,
+ BT44 = 370,
+ BT45 = 371,
+ BTGA = 372,
+ BWCE = 373,
+ BWCH = 374,
+ BWGH = 375,
+ BWKG = 376,
+ BWKL = 377,
+ BWKW = 378,
+ BWNE = 379,
+ BWNW = 380,
+ BWSE = 381,
+ BWSO = 382,
+ BYBR = 383,
+ BYHM = 384,
+ BYHO = 385,
+ BYHR = 386,
+ BYMA = 387,
+ BYMI = 388,
+ BYVI = 389,
+ BZBZ = 390,
+ BZCY = 391,
+ BZCZL = 392,
+ BZOW = 393,
+ BZSC = 394,
+ BZTOL = 395,
+ CAAB = 396,
+ CABC = 397,
+ CAMB = 398,
+ CANB = 399,
+ CANL = 400,
+ CANS = 401,
+ CANT = 402,
+ CANU = 403,
+ CAON = 404,
+ CAPE = 405,
+ CAQC = 406,
+ CASK = 407,
+ CAYT = 408,
+ CDBC = 409,
+ CDEQ = 410,
+ CDHK = 411,
+ CDIT = 412,
+ CDKC = 413,
+ CDKE = 414,
+ CDKN = 415,
+ CDKS = 416,
+ CDLU = 417,
+ CDMA = 418,
+ CDNK = 419,
+ CDNU = 420,
+ CDSA = 421,
+ CDSK = 422,
+ CDTA = 423,
+ CDTO = 424,
+ CFAC = 425,
+ CFBB = 426,
+ CFBGF = 427,
+ CFHK = 428,
+ CFHM = 429,
+ CFHS = 430,
+ CFKB = 431,
+ CFKG = 432,
+ CFLB = 433,
+ CFNM = 434,
+ CFOP = 435,
+ CFUK = 436,
+ CFVK = 437,
+ CG11 = 438,
+ CG13 = 439,
+ CG16 = 440,
+ CG7 = 441,
+ CG8 = 442,
+ CG9 = 443,
+ CGBZV = 444,
+ CHAG = 445,
+ CHAI = 446,
+ CHAR = 447,
+ CHBE = 448,
+ CHBL = 449,
+ CHBS = 450,
+ CHFR = 451,
+ CHGE = 452,
+ CHGL = 453,
+ CHGR = 454,
+ CHJU = 455,
+ CHLU = 456,
+ CHNE = 457,
+ CHNW = 458,
+ CHOW = 459,
+ CHSG = 460,
+ CHSH = 461,
+ CHSO = 462,
+ CHSZ = 463,
+ CHTG = 464,
+ CHTI = 465,
+ CHUR = 466,
+ CHVD = 467,
+ CHVS = 468,
+ CHZG = 469,
+ CHZH = 470,
+ CIAB = 471,
+ CIBS = 472,
+ CICM = 473,
+ CIDN = 474,
+ CIGD = 475,
+ CILC = 476,
+ CILG = 477,
+ CIMG = 478,
+ CISM = 479,
+ CISV = 480,
+ CIVB = 481,
+ CIWR = 482,
+ CIYM = 483,
+ CIZZ = 484,
+ CLAI = 485,
+ CLAN = 486,
+ CLAP = 487,
+ CLAR = 488,
+ CLAT = 489,
+ CLBI = 490,
+ CLCO = 491,
+ CLLI = 492,
+ CLLL = 493,
+ CLLR = 494,
+ CLMA = 495,
+ CLML = 496,
+ CLNB = 497,
+ CLRM = 498,
+ CLTA = 499,
+ CLVS = 500,
+ CMAD = 501,
+ CMCE = 502,
+ CMEN = 503,
+ CMES = 504,
+ CMLT = 505,
+ CMNO = 506,
+ CMNW = 507,
+ CMOU = 508,
+ CMSU = 509,
+ CMSW = 510,
+ CNAH = 511,
+ CNBJ = 512,
+ CNCQ = 513,
+ CNFJ = 514,
+ CNGD = 515,
+ CNGS = 516,
+ CNGX = 517,
+ CNGZ = 518,
+ CNHA = 519,
+ CNHB = 520,
+ CNHE = 521,
+ CNHI = 522,
+ CNHL = 523,
+ CNHN = 524,
+ CNJL = 525,
+ CNJS = 526,
+ CNJX = 527,
+ CNLN = 528,
+ CNNM = 529,
+ CNNX = 530,
+ CNQH = 531,
+ CNSC = 532,
+ CNSD = 533,
+ CNSH = 534,
+ CNSN = 535,
+ CNSX = 536,
+ CNTJ = 537,
+ CNXJ = 538,
+ CNXZ = 539,
+ CNYN = 540,
+ CNZJ = 541,
+ COAMA = 542,
+ COANT = 543,
+ COARA = 544,
+ COATL = 545,
+ COBOL = 546,
+ COBOY = 547,
+ COCAL = 548,
+ COCAQ = 549,
+ COCAS = 550,
+ COCAU = 551,
+ COCES = 552,
+ COCHO = 553,
+ COCOR = 554,
+ COCUN = 555,
+ CODC = 556,
+ COGUA = 557,
+ COGUV = 558,
+ COHUI = 559,
+ COLAG = 560,
+ COMAG = 561,
+ COMET = 562,
+ CONAR = 563,
+ CONSA = 564,
+ COPUT = 565,
+ COQUI = 566,
+ CORIS = 567,
+ COSAN = 568,
+ COSAP = 569,
+ COSUC = 570,
+ COTOL = 571,
+ COVAC = 572,
+ COVID = 573,
+ CRA = 574,
+ CRC = 575,
+ CRG = 576,
+ CRH = 577,
+ CRL = 578,
+ CRP = 579,
+ CRSJ = 580,
+ CU01 = 581,
+ CU03 = 582,
+ CU04 = 583,
+ CU05 = 584,
+ CU06 = 585,
+ CU07 = 586,
+ CU08 = 587,
+ CU09 = 588,
+ CU10 = 589,
+ CU11 = 590,
+ CU12 = 591,
+ CU13 = 592,
+ CU14 = 593,
+ CU15 = 594,
+ CU16 = 595,
+ CU99 = 596,
+ CVBV = 597,
+ CVCA = 598,
+ CVPA = 599,
+ CVPN = 600,
+ CVPR = 601,
+ CVRG = 602,
+ CVRS = 603,
+ CVSF = 604,
+ CVSL = 605,
+ CVSO = 606,
+ CVSV = 607,
+ CVTA = 608,
+ CY01 = 609,
+ CY02 = 610,
+ CY03 = 611,
+ CY04 = 612,
+ CY05 = 613,
+ CY06 = 614,
+ CZ10 = 615,
+ CZ20 = 616,
+ CZ31 = 617,
+ CZ32 = 618,
+ CZ41 = 619,
+ CZ42 = 620,
+ CZ51 = 621,
+ CZ52 = 622,
+ CZ53 = 623,
+ CZ63 = 624,
+ CZ64 = 625,
+ CZ71 = 626,
+ CZ72 = 627,
+ CZ80 = 628,
+ DEBB = 629,
+ DEBE = 630,
+ DEBW = 631,
+ DEBY = 632,
+ DEHB = 633,
+ DEHE = 634,
+ DEHH = 635,
+ DEMV = 636,
+ DENI = 637,
+ DENW = 638,
+ DERP = 639,
+ DESH = 640,
+ DESL = 641,
+ DESN = 642,
+ DEST = 643,
+ DETH = 644,
+ DJAR = 645,
+ DJDI = 646,
+ DJDJ = 647,
+ DJTA = 648,
+ DK81 = 649,
+ DK82 = 650,
+ DK83 = 651,
+ DK84 = 652,
+ DK85 = 653,
+ DM02 = 654,
+ DM04 = 655,
+ DM05 = 656,
+ DM06 = 657,
+ DM07 = 658,
+ DM09 = 659,
+ DM10 = 660,
+ DO01 = 661,
+ DO02 = 662,
+ DO03 = 663,
+ DO04 = 664,
+ DO05 = 665,
+ DO06 = 666,
+ DO07 = 667,
+ DO08 = 668,
+ DO09 = 669,
+ DO10 = 670,
+ DO11 = 671,
+ DO12 = 672,
+ DO13 = 673,
+ DO14 = 674,
+ DO15 = 675,
+ DO17 = 676,
+ DO18 = 677,
+ DO19 = 678,
+ DO20 = 679,
+ DO21 = 680,
+ DO22 = 681,
+ DO23 = 682,
+ DO24 = 683,
+ DO25 = 684,
+ DO26 = 685,
+ DO27 = 686,
+ DO28 = 687,
+ DO29 = 688,
+ DO30 = 689,
+ DO31 = 690,
+ DZ01 = 691,
+ DZ02 = 692,
+ DZ03 = 693,
+ DZ04 = 694,
+ DZ05 = 695,
+ DZ06 = 696,
+ DZ07 = 697,
+ DZ08 = 698,
+ DZ09 = 699,
+ DZ10 = 700,
+ DZ11 = 701,
+ DZ12 = 702,
+ DZ13 = 703,
+ DZ14 = 704,
+ DZ15 = 705,
+ DZ16 = 706,
+ DZ17 = 707,
+ DZ18 = 708,
+ DZ19 = 709,
+ DZ20 = 710,
+ DZ21 = 711,
+ DZ22 = 712,
+ DZ23 = 713,
+ DZ24 = 714,
+ DZ25 = 715,
+ DZ26 = 716,
+ DZ27 = 717,
+ DZ28 = 718,
+ DZ29 = 719,
+ DZ30 = 720,
+ DZ31 = 721,
+ DZ32 = 722,
+ DZ33 = 723,
+ DZ34 = 724,
+ DZ35 = 725,
+ DZ36 = 726,
+ DZ37 = 727,
+ DZ38 = 728,
+ DZ39 = 729,
+ DZ40 = 730,
+ DZ41 = 731,
+ DZ42 = 732,
+ DZ43 = 733,
+ DZ44 = 734,
+ DZ45 = 735,
+ DZ46 = 736,
+ DZ47 = 737,
+ DZ48 = 738,
+ DZ49 = 739,
+ DZ51 = 740,
+ DZ53 = 741,
+ DZ55 = 742,
+ DZ56 = 743,
+ DZ57 = 744,
+ ECA = 745,
+ ECB = 746,
+ ECC = 747,
+ ECD = 748,
+ ECE = 749,
+ ECF = 750,
+ ECG = 751,
+ ECH = 752,
+ ECI = 753,
+ ECL = 754,
+ ECM = 755,
+ ECN = 756,
+ ECO = 757,
+ ECP = 758,
+ ECR = 759,
+ ECS = 760,
+ ECSD = 761,
+ ECSE = 762,
+ ECT = 763,
+ ECU = 764,
+ ECW = 765,
+ ECX = 766,
+ ECY = 767,
+ ECZ = 768,
+ EE37 = 769,
+ EE39 = 770,
+ EE45 = 771,
+ EE50 = 772,
+ EE52 = 773,
+ EE56 = 774,
+ EE60 = 775,
+ EE64 = 776,
+ EE68 = 777,
+ EE71 = 778,
+ EE74 = 779,
+ EE79 = 780,
+ EE81 = 781,
+ EE84 = 782,
+ EE87 = 783,
+ EGALX = 784,
+ EGASN = 785,
+ EGAST = 786,
+ EGBA = 787,
+ EGBH = 788,
+ EGBNS = 789,
+ EGC = 790,
+ EGDK = 791,
+ EGDT = 792,
+ EGFYM = 793,
+ EGGH = 794,
+ EGGZ = 795,
+ EGIS = 796,
+ EGJS = 797,
+ EGKB = 798,
+ EGKFS = 799,
+ EGKN = 800,
+ EGLX = 801,
+ EGMN = 802,
+ EGMNF = 803,
+ EGMT = 804,
+ EGPTS = 805,
+ EGSHG = 806,
+ EGSHR = 807,
+ EGSIN = 808,
+ EGSUZ = 809,
+ EGWAD = 810,
+ ERGB = 811,
+ ERMA = 812,
+ ESAN = 813,
+ ESAR = 814,
+ ESAS = 815,
+ ESCB = 816,
+ ESCE = 817,
+ ESCL = 818,
+ ESCM = 819,
+ ESCN = 820,
+ ESCT = 821,
+ ESEX = 822,
+ ESGA = 823,
+ ESIB = 824,
+ ESMC = 825,
+ ESMD = 826,
+ ESML = 827,
+ ESNC = 828,
+ ESPV = 829,
+ ESRI = 830,
+ ESVC = 831,
+ ETAA = 832,
+ ETAF = 833,
+ ETAM = 834,
+ ETBE = 835,
+ ETDD = 836,
+ ETHA = 837,
+ ETOR = 838,
+ ETSN = 839,
+ ETSO = 840,
+ ETTI = 841,
+ FI02 = 842,
+ FI03 = 843,
+ FI04 = 844,
+ FI05 = 845,
+ FI06 = 846,
+ FI07 = 847,
+ FI08 = 848,
+ FI09 = 849,
+ FI10 = 850,
+ FI11 = 851,
+ FI12 = 852,
+ FI13 = 853,
+ FI14 = 854,
+ FI15 = 855,
+ FI16 = 856,
+ FI17 = 857,
+ FI18 = 858,
+ FI19 = 859,
+ FJC = 860,
+ FJE = 861,
+ FJN = 862,
+ FJR = 863,
+ FJW = 864,
+ FMKSA = 865,
+ FMPNI = 866,
+ FMTRK = 867,
+ FMYAP = 868,
+ FR20R = 869,
+ FRARA = 870,
+ FRBFC = 871,
+ FRBRE = 872,
+ FRCVL = 873,
+ FRGES = 874,
+ FRHDF = 875,
+ FRIDF = 876,
+ FRNAQ = 877,
+ FRNOR = 878,
+ FROCC = 879,
+ FRPAC = 880,
+ FRPDL = 881,
+ GA1 = 882,
+ GA2 = 883,
+ GA3 = 884,
+ GA4 = 885,
+ GA5 = 886,
+ GA7 = 887,
+ GA8 = 888,
+ GA9 = 889,
+ GBENG = 890,
+ GBNIR = 891,
+ GBSCT = 892,
+ GBWLS = 893,
+ GD01 = 894,
+ GD02 = 895,
+ GD03 = 896,
+ GD04 = 897,
+ GD05 = 898,
+ GD06 = 899,
+ GD10 = 900,
+ GEAB = 901,
+ GEAJ = 902,
+ GEGU = 903,
+ GEIM = 904,
+ GEKA = 905,
+ GEKK = 906,
+ GEMM = 907,
+ GERL = 908,
+ GESJ = 909,
+ GESK = 910,
+ GESZ = 911,
+ GETB = 912,
+ GHAA = 913,
+ GHAF = 914,
+ GHAH = 915,
+ GHBE = 916,
+ GHBO = 917,
+ GHCP = 918,
+ GHEP = 919,
+ GHNP = 920,
+ GHTV = 921,
+ GHUE = 922,
+ GHUW = 923,
+ GHWP = 924,
+ GLAV = 925,
+ GLKU = 926,
+ GLQE = 927,
+ GLQT = 928,
+ GLSM = 929,
+ GMB = 930,
+ GML = 931,
+ GMM = 932,
+ GMN = 933,
+ GMW = 934,
+ GNBE = 935,
+ GNBF = 936,
+ GNBK = 937,
+ GNC = 938,
+ GNDB = 939,
+ GNDI = 940,
+ GNDU = 941,
+ GNFR = 942,
+ GNKA = 943,
+ GNKO = 944,
+ GNLA = 945,
+ GNMM = 946,
+ GNPI = 947,
+ GNSI = 948,
+ GQBN = 949,
+ GQCS = 950,
+ GQKN = 951,
+ GQLI = 952,
+ GQWN = 953,
+ GRA = 954,
+ GRB = 955,
+ GRC = 956,
+ GRD = 957,
+ GRE = 958,
+ GRF = 959,
+ GRG = 960,
+ GRH = 961,
+ GRI = 962,
+ GRJ = 963,
+ GRK = 964,
+ GRL = 965,
+ GRM = 966,
+ GT01 = 967,
+ GT02 = 968,
+ GT03 = 969,
+ GT04 = 970,
+ GT05 = 971,
+ GT06 = 972,
+ GT07 = 973,
+ GT08 = 974,
+ GT09 = 975,
+ GT10 = 976,
+ GT11 = 977,
+ GT12 = 978,
+ GT13 = 979,
+ GT14 = 980,
+ GT15 = 981,
+ GT16 = 982,
+ GT17 = 983,
+ GT18 = 984,
+ GT19 = 985,
+ GT20 = 986,
+ GT21 = 987,
+ GT22 = 988,
+ GWBA = 989,
+ GWBS = 990,
+ GWCA = 991,
+ GWGA = 992,
+ GWOI = 993,
+ GWQU = 994,
+ GYBA = 995,
+ GYCU = 996,
+ GYDE = 997,
+ GYEB = 998,
+ GYES = 999,
+ GYMA = 1000,
+ GYPM = 1001,
+ GYPT = 1002,
+ GYUD = 1003,
+ GYUT = 1004,
+ HNAT = 1005,
+ HNCH = 1006,
+ HNCL = 1007,
+ HNCM = 1008,
+ HNCP = 1009,
+ HNCR = 1010,
+ HNEP = 1011,
+ HNFM = 1012,
+ HNIB = 1013,
+ HNIN = 1014,
+ HNLE = 1015,
+ HNLP = 1016,
+ HNOC = 1017,
+ HNOL = 1018,
+ HNSB = 1019,
+ HNVA = 1020,
+ HNYO = 1021,
+ HR01 = 1022,
+ HR02 = 1023,
+ HR03 = 1024,
+ HR04 = 1025,
+ HR05 = 1026,
+ HR06 = 1027,
+ HR07 = 1028,
+ HR08 = 1029,
+ HR09 = 1030,
+ HR10 = 1031,
+ HR11 = 1032,
+ HR12 = 1033,
+ HR13 = 1034,
+ HR14 = 1035,
+ HR15 = 1036,
+ HR16 = 1037,
+ HR17 = 1038,
+ HR18 = 1039,
+ HR19 = 1040,
+ HR20 = 1041,
+ HR21 = 1042,
+ HTAR = 1043,
+ HTCE = 1044,
+ HTGA = 1045,
+ HTND = 1046,
+ HTNO = 1047,
+ HTOU = 1048,
+ HTSD = 1049,
+ HTSE = 1050,
+ HUBA = 1051,
+ HUBE = 1052,
+ HUBK = 1053,
+ HUBU = 1054,
+ HUBZ = 1055,
+ HUCS = 1056,
+ HUFE = 1057,
+ HUGS = 1058,
+ HUHB = 1059,
+ HUHE = 1060,
+ HUJN = 1061,
+ HUKE = 1062,
+ HUNO = 1063,
+ HUPE = 1064,
+ HUSO = 1065,
+ HUSZ = 1066,
+ HUTO = 1067,
+ HUVA = 1068,
+ HUVE = 1069,
+ HUZA = 1070,
+ IDAC = 1071,
+ IDBA = 1072,
+ IDBB = 1073,
+ IDBE = 1074,
+ IDBT = 1075,
+ IDGO = 1076,
+ IDJA = 1077,
+ IDJB = 1078,
+ IDJI = 1079,
+ IDJK = 1080,
+ IDJT = 1081,
+ IDKB = 1082,
+ IDKI = 1083,
+ IDKR = 1084,
+ IDKS = 1085,
+ IDKT = 1086,
+ IDKU = 1087,
+ IDLA = 1088,
+ IDML = 1089,
+ IDMU = 1090,
+ IDNB = 1091,
+ IDNT = 1092,
+ IDPB = 1093,
+ IDPD = 1094,
+ IDPE = 1095,
+ IDPP = 1096,
+ IDPS = 1097,
+ IDPT = 1098,
+ IDRI = 1099,
+ IDSA = 1100,
+ IDSB = 1101,
+ IDSG = 1102,
+ IDSN = 1103,
+ IDSR = 1104,
+ IDSS = 1105,
+ IDST = 1106,
+ IDSU = 1107,
+ IDYO = 1108,
+ IECE = 1109,
+ IECN = 1110,
+ IECO = 1111,
+ IECW = 1112,
+ IED = 1113,
+ IEDL = 1114,
+ IEG = 1115,
+ IEKE = 1116,
+ IEKK = 1117,
+ IEKY = 1118,
+ IELD = 1119,
+ IELH = 1120,
+ IELK = 1121,
+ IELM = 1122,
+ IELS = 1123,
+ IEMH = 1124,
+ IEMN = 1125,
+ IEMO = 1126,
+ IEOY = 1127,
+ IERN = 1128,
+ IESO = 1129,
+ IETA = 1130,
+ IEWD = 1131,
+ IEWH = 1132,
+ IEWW = 1133,
+ IEWX = 1134,
+ ILD = 1135,
+ ILHA = 1136,
+ ILJM = 1137,
+ ILM = 1138,
+ ILTA = 1139,
+ ILZ = 1140,
+ INAN = 1141,
+ INAP = 1142,
+ INAR = 1143,
+ INAS = 1144,
+ INBR = 1145,
+ INCG = 1146,
+ INCH = 1147,
+ INDH = 1148,
+ INDL = 1149,
+ INGA = 1150,
+ INGJ = 1151,
+ INHP = 1152,
+ INHR = 1153,
+ INJH = 1154,
+ INJK = 1155,
+ INKA = 1156,
+ INKL = 1157,
+ INLD = 1158,
+ INMH = 1159,
+ INML = 1160,
+ INMN = 1161,
+ INMP = 1162,
+ INMZ = 1163,
+ INNL = 1164,
+ INOD = 1165,
+ INPB = 1166,
+ INPY = 1167,
+ INRJ = 1168,
+ INSK = 1169,
+ INTN = 1170,
+ INTR = 1171,
+ INTS = 1172,
+ INUK = 1173,
+ INUP = 1174,
+ INWB = 1175,
+ IQAN = 1176,
+ IQAR = 1177,
+ IQBA = 1178,
+ IQBB = 1179,
+ IQBG = 1180,
+ IQDA = 1181,
+ IQDI = 1182,
+ IQDQ = 1183,
+ IQKA = 1184,
+ IQKI = 1185,
+ IQMA = 1186,
+ IQMU = 1187,
+ IQNA = 1188,
+ IQNI = 1189,
+ IQQA = 1190,
+ IQSD = 1191,
+ IQSU = 1192,
+ IQWA = 1193,
+ IR00 = 1194,
+ IR01 = 1195,
+ IR02 = 1196,
+ IR03 = 1197,
+ IR04 = 1198,
+ IR05 = 1199,
+ IR06 = 1200,
+ IR07 = 1201,
+ IR08 = 1202,
+ IR09 = 1203,
+ IR10 = 1204,
+ IR11 = 1205,
+ IR12 = 1206,
+ IR13 = 1207,
+ IR14 = 1208,
+ IR15 = 1209,
+ IR16 = 1210,
+ IR17 = 1211,
+ IR18 = 1212,
+ IR19 = 1213,
+ IR20 = 1214,
+ IR21 = 1215,
+ IR22 = 1216,
+ IR23 = 1217,
+ IR24 = 1218,
+ IR25 = 1219,
+ IR26 = 1220,
+ IR27 = 1221,
+ IR28 = 1222,
+ IR29 = 1223,
+ IR30 = 1224,
+ IS1 = 1225,
+ IS2 = 1226,
+ IS3 = 1227,
+ IS4 = 1228,
+ IS5 = 1229,
+ IS6 = 1230,
+ IS7 = 1231,
+ IS8 = 1232,
+ IT21 = 1233,
+ IT23 = 1234,
+ IT25 = 1235,
+ IT32 = 1236,
+ IT34 = 1237,
+ IT36 = 1238,
+ IT42 = 1239,
+ IT45 = 1240,
+ IT52 = 1241,
+ IT55 = 1242,
+ IT57 = 1243,
+ IT62 = 1244,
+ IT65 = 1245,
+ IT67 = 1246,
+ IT72 = 1247,
+ IT75 = 1248,
+ IT77 = 1249,
+ IT78 = 1250,
+ IT82 = 1251,
+ IT88 = 1252,
+ JM01 = 1253,
+ JM02 = 1254,
+ JM03 = 1255,
+ JM04 = 1256,
+ JM05 = 1257,
+ JM06 = 1258,
+ JM07 = 1259,
+ JM08 = 1260,
+ JM09 = 1261,
+ JM10 = 1262,
+ JM11 = 1263,
+ JM12 = 1264,
+ JM13 = 1265,
+ JM14 = 1266,
+ JOAJ = 1267,
+ JOAM = 1268,
+ JOAQ = 1269,
+ JOAT = 1270,
+ JOAZ = 1271,
+ JOBA = 1272,
+ JOIR = 1273,
+ JOJA = 1274,
+ JOKA = 1275,
+ JOMA = 1276,
+ JOMD = 1277,
+ JOMN = 1278,
+ JP01 = 1279,
+ JP02 = 1280,
+ JP03 = 1281,
+ JP04 = 1282,
+ JP05 = 1283,
+ JP06 = 1284,
+ JP07 = 1285,
+ JP08 = 1286,
+ JP09 = 1287,
+ JP10 = 1288,
+ JP11 = 1289,
+ JP12 = 1290,
+ JP13 = 1291,
+ JP14 = 1292,
+ JP15 = 1293,
+ JP16 = 1294,
+ JP17 = 1295,
+ JP18 = 1296,
+ JP19 = 1297,
+ JP20 = 1298,
+ JP21 = 1299,
+ JP22 = 1300,
+ JP23 = 1301,
+ JP24 = 1302,
+ JP25 = 1303,
+ JP26 = 1304,
+ JP27 = 1305,
+ JP28 = 1306,
+ JP29 = 1307,
+ JP30 = 1308,
+ JP31 = 1309,
+ JP32 = 1310,
+ JP33 = 1311,
+ JP34 = 1312,
+ JP35 = 1313,
+ JP36 = 1314,
+ JP37 = 1315,
+ JP38 = 1316,
+ JP39 = 1317,
+ JP40 = 1318,
+ JP41 = 1319,
+ JP42 = 1320,
+ JP43 = 1321,
+ JP44 = 1322,
+ JP45 = 1323,
+ JP46 = 1324,
+ JP47 = 1325,
+ KE01 = 1326,
+ KE02 = 1327,
+ KE03 = 1328,
+ KE04 = 1329,
+ KE05 = 1330,
+ KE06 = 1331,
+ KE07 = 1332,
+ KE08 = 1333,
+ KE09 = 1334,
+ KE10 = 1335,
+ KE11 = 1336,
+ KE12 = 1337,
+ KE13 = 1338,
+ KE14 = 1339,
+ KE15 = 1340,
+ KE16 = 1341,
+ KE17 = 1342,
+ KE18 = 1343,
+ KE19 = 1344,
+ KE20 = 1345,
+ KE21 = 1346,
+ KE22 = 1347,
+ KE23 = 1348,
+ KE24 = 1349,
+ KE25 = 1350,
+ KE26 = 1351,
+ KE27 = 1352,
+ KE28 = 1353,
+ KE29 = 1354,
+ KE30 = 1355,
+ KE31 = 1356,
+ KE32 = 1357,
+ KE33 = 1358,
+ KE34 = 1359,
+ KE35 = 1360,
+ KE36 = 1361,
+ KE37 = 1362,
+ KE38 = 1363,
+ KE39 = 1364,
+ KE40 = 1365,
+ KE41 = 1366,
+ KE42 = 1367,
+ KE43 = 1368,
+ KE44 = 1369,
+ KE45 = 1370,
+ KE46 = 1371,
+ KE47 = 1372,
+ KGB = 1373,
+ KGC = 1374,
+ KGGB = 1375,
+ KGGO = 1376,
+ KGJ = 1377,
+ KGN = 1378,
+ KGT = 1379,
+ KGY = 1380,
+ KH1 = 1381,
+ KH10 = 1382,
+ KH11 = 1383,
+ KH12 = 1384,
+ KH13 = 1385,
+ KH14 = 1386,
+ KH16 = 1387,
+ KH17 = 1388,
+ KH18 = 1389,
+ KH19 = 1390,
+ KH2 = 1391,
+ KH20 = 1392,
+ KH21 = 1393,
+ KH22 = 1394,
+ KH23 = 1395,
+ KH24 = 1396,
+ KH3 = 1397,
+ KH4 = 1398,
+ KH5 = 1399,
+ KH6 = 1400,
+ KH7 = 1401,
+ KH8 = 1402,
+ KH9 = 1403,
+ KIG = 1404,
+ KIL = 1405,
+ KMA = 1406,
+ KMG = 1407,
+ KMM = 1408,
+ KN01 = 1409,
+ KN02 = 1410,
+ KN03 = 1411,
+ KN05 = 1412,
+ KN06 = 1413,
+ KN07 = 1414,
+ KN08 = 1415,
+ KN09 = 1416,
+ KN10 = 1417,
+ KN11 = 1418,
+ KN12 = 1419,
+ KN13 = 1420,
+ KN15 = 1421,
+ KP01 = 1422,
+ KR11 = 1423,
+ KR26 = 1424,
+ KR27 = 1425,
+ KR28 = 1426,
+ KR29 = 1427,
+ KR30 = 1428,
+ KR31 = 1429,
+ KR41 = 1430,
+ KR42 = 1431,
+ KR43 = 1432,
+ KR44 = 1433,
+ KR45 = 1434,
+ KR46 = 1435,
+ KR47 = 1436,
+ KR48 = 1437,
+ KR49 = 1438,
+ KR50 = 1439,
+ KWAH = 1440,
+ KWFA = 1441,
+ KWHA = 1442,
+ KWJA = 1443,
+ KWKU = 1444,
+ KWMU = 1445,
+ KZ10 = 1446,
+ KZ11 = 1447,
+ KZ15 = 1448,
+ KZ19 = 1449,
+ KZ23 = 1450,
+ KZ27 = 1451,
+ KZ31 = 1452,
+ KZ33 = 1453,
+ KZ35 = 1454,
+ KZ39 = 1455,
+ KZ43 = 1456,
+ KZ47 = 1457,
+ KZ55 = 1458,
+ KZ59 = 1459,
+ KZ61 = 1460,
+ KZ62 = 1461,
+ KZ63 = 1462,
+ KZ71 = 1463,
+ KZ75 = 1464,
+ KZ79 = 1465,
+ LAAT = 1466,
+ LABK = 1467,
+ LACH = 1468,
+ LAHO = 1469,
+ LAKH = 1470,
+ LALM = 1471,
+ LALP = 1472,
+ LAOU = 1473,
+ LAPH = 1474,
+ LASL = 1475,
+ LASV = 1476,
+ LAVI = 1477,
+ LAXA = 1478,
+ LAXE = 1479,
+ LAXI = 1480,
+ LBAK = 1481,
+ LBAS = 1482,
+ LBBA = 1483,
+ LBBH = 1484,
+ LBBI = 1485,
+ LBJA = 1486,
+ LBJL = 1487,
+ LBNA = 1488,
+ LC01 = 1489,
+ LC02 = 1490,
+ LC03 = 1491,
+ LC05 = 1492,
+ LC06 = 1493,
+ LC07 = 1494,
+ LC08 = 1495,
+ LC10 = 1496,
+ LC11 = 1497,
+ LI01 = 1498,
+ LI02 = 1499,
+ LI03 = 1500,
+ LI04 = 1501,
+ LI06 = 1502,
+ LI07 = 1503,
+ LI09 = 1504,
+ LI10 = 1505,
+ LI11 = 1506,
+ LK1 = 1507,
+ LK2 = 1508,
+ LK3 = 1509,
+ LK4 = 1510,
+ LK5 = 1511,
+ LK6 = 1512,
+ LK7 = 1513,
+ LK8 = 1514,
+ LK9 = 1515,
+ LRBG = 1516,
+ LRBM = 1517,
+ LRCM = 1518,
+ LRGG = 1519,
+ LRMG = 1520,
+ LRMO = 1521,
+ LRNI = 1522,
+ LRRG = 1523,
+ LRRI = 1524,
+ LRSI = 1525,
+ LSA = 1526,
+ LSB = 1527,
+ LSC = 1528,
+ LSD = 1529,
+ LSE = 1530,
+ LSF = 1531,
+ LSG = 1532,
+ LSH = 1533,
+ LSJ = 1534,
+ LSK = 1535,
+ LTAL = 1536,
+ LTKL = 1537,
+ LTKU = 1538,
+ LTMR = 1539,
+ LTPN = 1540,
+ LTSA = 1541,
+ LTTA = 1542,
+ LTTE = 1543,
+ LTUT = 1544,
+ LTVL = 1545,
+ LUCA = 1546,
+ LUCL = 1547,
+ LUDI = 1548,
+ LUEC = 1549,
+ LUES = 1550,
+ LUGR = 1551,
+ LULU = 1552,
+ LUME = 1553,
+ LURD = 1554,
+ LURM = 1555,
+ LUVD = 1556,
+ LUWI = 1557,
+ LV002 = 1558,
+ LV007 = 1559,
+ LV011 = 1560,
+ LV015 = 1561,
+ LV016 = 1562,
+ LV022 = 1563,
+ LV026 = 1564,
+ LV033 = 1565,
+ LV041 = 1566,
+ LV042 = 1567,
+ LV047 = 1568,
+ LV050 = 1569,
+ LV052 = 1570,
+ LV054 = 1571,
+ LV056 = 1572,
+ LV058 = 1573,
+ LV059 = 1574,
+ LV062 = 1575,
+ LV067 = 1576,
+ LV068 = 1577,
+ LV073 = 1578,
+ LV077 = 1579,
+ LV080 = 1580,
+ LV087 = 1581,
+ LV088 = 1582,
+ LV089 = 1583,
+ LV091 = 1584,
+ LV094 = 1585,
+ LV097 = 1586,
+ LV099 = 1587,
+ LV101 = 1588,
+ LV102 = 1589,
+ LV106 = 1590,
+ LV112 = 1591,
+ LV113 = 1592,
+ LVDGV = 1593,
+ LVJEL = 1594,
+ LVJUR = 1595,
+ LVLPX = 1596,
+ LVRIX = 1597,
+ LYBA = 1598,
+ LYBU = 1599,
+ LYDR = 1600,
+ LYGT = 1601,
+ LYJA = 1602,
+ LYJG = 1603,
+ LYJI = 1604,
+ LYJU = 1605,
+ LYKF = 1606,
+ LYMB = 1607,
+ LYMI = 1608,
+ LYMJ = 1609,
+ LYMQ = 1610,
+ LYNL = 1611,
+ LYNQ = 1612,
+ LYSB = 1613,
+ LYSR = 1614,
+ LYTB = 1615,
+ LYWA = 1616,
+ LYWD = 1617,
+ LYWS = 1618,
+ LYZA = 1619,
+ MA01 = 1620,
+ MA02 = 1621,
+ MA03 = 1622,
+ MA04 = 1623,
+ MA05 = 1624,
+ MA06 = 1625,
+ MA07 = 1626,
+ MA08 = 1627,
+ MA09 = 1628,
+ MA10 = 1629,
+ MA11 = 1630,
+ MCCO = 1631,
+ MCFO = 1632,
+ MCMC = 1633,
+ MCMG = 1634,
+ MCMO = 1635,
+ MCSR = 1636,
+ MDAN = 1637,
+ MDBA = 1638,
+ MDBD = 1639,
+ MDBR = 1640,
+ MDBS = 1641,
+ MDCA = 1642,
+ MDCL = 1643,
+ MDCM = 1644,
+ MDCR = 1645,
+ MDCS = 1646,
+ MDCT = 1647,
+ MDCU = 1648,
+ MDDO = 1649,
+ MDDR = 1650,
+ MDDU = 1651,
+ MDED = 1652,
+ MDFA = 1653,
+ MDFL = 1654,
+ MDGA = 1655,
+ MDGL = 1656,
+ MDHI = 1657,
+ MDIA = 1658,
+ MDLE = 1659,
+ MDNI = 1660,
+ MDOC = 1661,
+ MDOR = 1662,
+ MDRE = 1663,
+ MDRI = 1664,
+ MDSD = 1665,
+ MDSI = 1666,
+ MDSN = 1667,
+ MDSO = 1668,
+ MDST = 1669,
+ MDSV = 1670,
+ MDTA = 1671,
+ MDTE = 1672,
+ MDUN = 1673,
+ ME02 = 1674,
+ ME03 = 1675,
+ ME04 = 1676,
+ ME05 = 1677,
+ ME06 = 1678,
+ ME07 = 1679,
+ ME08 = 1680,
+ ME09 = 1681,
+ ME10 = 1682,
+ ME11 = 1683,
+ ME12 = 1684,
+ ME13 = 1685,
+ ME14 = 1686,
+ ME15 = 1687,
+ ME16 = 1688,
+ ME17 = 1689,
+ ME19 = 1690,
+ ME20 = 1691,
+ ME21 = 1692,
+ ME24 = 1693,
+ ME25 = 1694,
+ MGA = 1695,
+ MGD = 1696,
+ MGF = 1697,
+ MGM = 1698,
+ MGT = 1699,
+ MGU = 1700,
+ MHKWA = 1701,
+ MHMAJ = 1702,
+ MK101 = 1703,
+ MK104 = 1704,
+ MK105 = 1705,
+ MK106 = 1706,
+ MK107 = 1707,
+ MK108 = 1708,
+ MK109 = 1709,
+ MK201 = 1710,
+ MK202 = 1711,
+ MK203 = 1712,
+ MK204 = 1713,
+ MK205 = 1714,
+ MK206 = 1715,
+ MK207 = 1716,
+ MK208 = 1717,
+ MK209 = 1718,
+ MK211 = 1719,
+ MK301 = 1720,
+ MK303 = 1721,
+ MK304 = 1722,
+ MK307 = 1723,
+ MK308 = 1724,
+ MK310 = 1725,
+ MK311 = 1726,
+ MK312 = 1727,
+ MK313 = 1728,
+ MK401 = 1729,
+ MK402 = 1730,
+ MK403 = 1731,
+ MK404 = 1732,
+ MK405 = 1733,
+ MK406 = 1734,
+ MK407 = 1735,
+ MK408 = 1736,
+ MK409 = 1737,
+ MK410 = 1738,
+ MK501 = 1739,
+ MK502 = 1740,
+ MK503 = 1741,
+ MK504 = 1742,
+ MK506 = 1743,
+ MK507 = 1744,
+ MK508 = 1745,
+ MK509 = 1746,
+ MK601 = 1747,
+ MK602 = 1748,
+ MK603 = 1749,
+ MK604 = 1750,
+ MK605 = 1751,
+ MK606 = 1752,
+ MK607 = 1753,
+ MK608 = 1754,
+ MK609 = 1755,
+ MK701 = 1756,
+ MK702 = 1757,
+ MK703 = 1758,
+ MK704 = 1759,
+ MK705 = 1760,
+ MK802 = 1761,
+ MK803 = 1762,
+ MK804 = 1763,
+ MK806 = 1764,
+ MK807 = 1765,
+ MK809 = 1766,
+ MK810 = 1767,
+ MK811 = 1768,
+ MK812 = 1769,
+ MK813 = 1770,
+ MK814 = 1771,
+ MK816 = 1772,
+ ML1 = 1773,
+ ML2 = 1774,
+ ML3 = 1775,
+ ML4 = 1776,
+ ML5 = 1777,
+ ML6 = 1778,
+ ML7 = 1779,
+ ML8 = 1780,
+ MLBKO = 1781,
+ MM01 = 1782,
+ MM02 = 1783,
+ MM03 = 1784,
+ MM04 = 1785,
+ MM05 = 1786,
+ MM06 = 1787,
+ MM07 = 1788,
+ MM11 = 1789,
+ MM12 = 1790,
+ MM13 = 1791,
+ MM14 = 1792,
+ MM15 = 1793,
+ MM16 = 1794,
+ MM17 = 1795,
+ MM18 = 1796,
+ MN035 = 1797,
+ MN037 = 1798,
+ MN041 = 1799,
+ MN043 = 1800,
+ MN047 = 1801,
+ MN049 = 1802,
+ MN053 = 1803,
+ MN055 = 1804,
+ MN057 = 1805,
+ MN059 = 1806,
+ MN061 = 1807,
+ MN064 = 1808,
+ MN065 = 1809,
+ MN069 = 1810,
+ MN071 = 1811,
+ MN1 = 1812,
+ MR02 = 1813,
+ MR03 = 1814,
+ MR04 = 1815,
+ MR05 = 1816,
+ MR06 = 1817,
+ MR07 = 1818,
+ MR08 = 1819,
+ MR09 = 1820,
+ MR10 = 1821,
+ MR11 = 1822,
+ MR12 = 1823,
+ MR13 = 1824,
+ MT01 = 1825,
+ MT02 = 1826,
+ MT03 = 1827,
+ MT04 = 1828,
+ MT05 = 1829,
+ MT06 = 1830,
+ MT07 = 1831,
+ MT08 = 1832,
+ MT09 = 1833,
+ MT10 = 1834,
+ MT11 = 1835,
+ MT12 = 1836,
+ MT13 = 1837,
+ MT14 = 1838,
+ MT15 = 1839,
+ MT16 = 1840,
+ MT17 = 1841,
+ MT18 = 1842,
+ MT19 = 1843,
+ MT20 = 1844,
+ MT21 = 1845,
+ MT23 = 1846,
+ MT24 = 1847,
+ MT25 = 1848,
+ MT26 = 1849,
+ MT27 = 1850,
+ MT28 = 1851,
+ MT29 = 1852,
+ MT30 = 1853,
+ MT31 = 1854,
+ MT32 = 1855,
+ MT33 = 1856,
+ MT34 = 1857,
+ MT35 = 1858,
+ MT36 = 1859,
+ MT37 = 1860,
+ MT38 = 1861,
+ MT39 = 1862,
+ MT40 = 1863,
+ MT41 = 1864,
+ MT42 = 1865,
+ MT43 = 1866,
+ MT44 = 1867,
+ MT45 = 1868,
+ MT46 = 1869,
+ MT47 = 1870,
+ MT48 = 1871,
+ MT49 = 1872,
+ MT50 = 1873,
+ MT51 = 1874,
+ MT52 = 1875,
+ MT53 = 1876,
+ MT54 = 1877,
+ MT55 = 1878,
+ MT56 = 1879,
+ MT57 = 1880,
+ MT58 = 1881,
+ MT59 = 1882,
+ MT60 = 1883,
+ MT61 = 1884,
+ MT62 = 1885,
+ MT63 = 1886,
+ MT64 = 1887,
+ MT65 = 1888,
+ MT67 = 1889,
+ MT68 = 1890,
+ MUBL = 1891,
+ MUFL = 1892,
+ MUGP = 1893,
+ MUMO = 1894,
+ MUPA = 1895,
+ MUPL = 1896,
+ MUPW = 1897,
+ MURO = 1898,
+ MURR = 1899,
+ MUSA = 1900,
+ MV00 = 1901,
+ MV01 = 1902,
+ MV02 = 1903,
+ MV03 = 1904,
+ MV04 = 1905,
+ MV05 = 1906,
+ MV07 = 1907,
+ MV12 = 1908,
+ MV13 = 1909,
+ MV14 = 1910,
+ MV17 = 1911,
+ MV20 = 1912,
+ MV23 = 1913,
+ MV24 = 1914,
+ MV25 = 1915,
+ MV27 = 1916,
+ MV28 = 1917,
+ MV29 = 1918,
+ MVMLE = 1919,
+ MWBA = 1920,
+ MWBL = 1921,
+ MWCK = 1922,
+ MWCR = 1923,
+ MWDE = 1924,
+ MWDO = 1925,
+ MWKR = 1926,
+ MWLI = 1927,
+ MWLK = 1928,
+ MWMG = 1929,
+ MWMH = 1930,
+ MWMW = 1931,
+ MWMZ = 1932,
+ MWNE = 1933,
+ MWNI = 1934,
+ MWNK = 1935,
+ MWSA = 1936,
+ MWTH = 1937,
+ MWZO = 1938,
+ MXAGU = 1939,
+ MXBCN = 1940,
+ MXBCS = 1941,
+ MXCAM = 1942,
+ MXCHH = 1943,
+ MXCHP = 1944,
+ MXCMX = 1945,
+ MXCOA = 1946,
+ MXCOL = 1947,
+ MXDUR = 1948,
+ MXGRO = 1949,
+ MXGUA = 1950,
+ MXHID = 1951,
+ MXJAL = 1952,
+ MXMEX = 1953,
+ MXMIC = 1954,
+ MXMOR = 1955,
+ MXNAY = 1956,
+ MXNLE = 1957,
+ MXOAX = 1958,
+ MXPUE = 1959,
+ MXQUE = 1960,
+ MXROO = 1961,
+ MXSIN = 1962,
+ MXSLP = 1963,
+ MXSON = 1964,
+ MXTAB = 1965,
+ MXTAM = 1966,
+ MXTLA = 1967,
+ MXVER = 1968,
+ MXYUC = 1969,
+ MXZAC = 1970,
+ MY01 = 1971,
+ MY02 = 1972,
+ MY03 = 1973,
+ MY04 = 1974,
+ MY05 = 1975,
+ MY06 = 1976,
+ MY07 = 1977,
+ MY08 = 1978,
+ MY09 = 1979,
+ MY10 = 1980,
+ MY11 = 1981,
+ MY12 = 1982,
+ MY13 = 1983,
+ MY14 = 1984,
+ MY15 = 1985,
+ MY16 = 1986,
+ MZA = 1987,
+ MZB = 1988,
+ MZG = 1989,
+ MZI = 1990,
+ MZL = 1991,
+ MZN = 1992,
+ MZP = 1993,
+ MZQ = 1994,
+ MZS = 1995,
+ MZT = 1996,
+ NACA = 1997,
+ NAER = 1998,
+ NAHA = 1999,
+ NAKA = 2000,
+ NAKE = 2001,
+ NAKH = 2002,
+ NAKU = 2003,
+ NAKW = 2004,
+ NAOD = 2005,
+ NAOH = 2006,
+ NAON = 2007,
+ NAOS = 2008,
+ NAOT = 2009,
+ NAOW = 2010,
+ NE1 = 2011,
+ NE2 = 2012,
+ NE3 = 2013,
+ NE4 = 2014,
+ NE5 = 2015,
+ NE6 = 2016,
+ NE7 = 2017,
+ NE8 = 2018,
+ NGAB = 2019,
+ NGAD = 2020,
+ NGAK = 2021,
+ NGAN = 2022,
+ NGBA = 2023,
+ NGBE = 2024,
+ NGBO = 2025,
+ NGBY = 2026,
+ NGCR = 2027,
+ NGDE = 2028,
+ NGEB = 2029,
+ NGED = 2030,
+ NGEK = 2031,
+ NGEN = 2032,
+ NGFC = 2033,
+ NGGO = 2034,
+ NGIM = 2035,
+ NGJI = 2036,
+ NGKD = 2037,
+ NGKE = 2038,
+ NGKN = 2039,
+ NGKO = 2040,
+ NGKT = 2041,
+ NGKW = 2042,
+ NGLA = 2043,
+ NGNA = 2044,
+ NGNI = 2045,
+ NGOG = 2046,
+ NGON = 2047,
+ NGOS = 2048,
+ NGOY = 2049,
+ NGPL = 2050,
+ NGRI = 2051,
+ NGSO = 2052,
+ NGTA = 2053,
+ NGYO = 2054,
+ NGZA = 2055,
+ NIAN = 2056,
+ NIAS = 2057,
+ NIBO = 2058,
+ NICA = 2059,
+ NICI = 2060,
+ NICO = 2061,
+ NIES = 2062,
+ NIGR = 2063,
+ NIJI = 2064,
+ NILE = 2065,
+ NIMD = 2066,
+ NIMN = 2067,
+ NIMS = 2068,
+ NIMT = 2069,
+ NINS = 2070,
+ NIRI = 2071,
+ NISJ = 2072,
+ NLDR = 2073,
+ NLFL = 2074,
+ NLFR = 2075,
+ NLGE = 2076,
+ NLGR = 2077,
+ NLLI = 2078,
+ NLNB = 2079,
+ NLNH = 2080,
+ NLOV = 2081,
+ NLUT = 2082,
+ NLZE = 2083,
+ NLZH = 2084,
+ NO03 = 2085,
+ NO11 = 2086,
+ NO15 = 2087,
+ NO18 = 2088,
+ NO30 = 2089,
+ NO34 = 2090,
+ NO38 = 2091,
+ NO42 = 2092,
+ NO46 = 2093,
+ NO50 = 2094,
+ NO54 = 2095,
+ NPP1 = 2096,
+ NPP2 = 2097,
+ NPP3 = 2098,
+ NPP4 = 2099,
+ NPP5 = 2100,
+ NPP6 = 2101,
+ NPP7 = 2102,
+ NR01 = 2103,
+ NR03 = 2104,
+ NR14 = 2105,
+ NZAUK = 2106,
+ NZBOP = 2107,
+ NZCAN = 2108,
+ NZCIT = 2109,
+ NZGIS = 2110,
+ NZHKB = 2111,
+ NZMBH = 2112,
+ NZMWT = 2113,
+ NZNSN = 2114,
+ NZNTL = 2115,
+ NZOTA = 2116,
+ NZSTL = 2117,
+ NZTAS = 2118,
+ NZTKI = 2119,
+ NZWGN = 2120,
+ NZWKO = 2121,
+ NZWTC = 2122,
+ OMBJ = 2123,
+ OMBS = 2124,
+ OMBU = 2125,
+ OMDA = 2126,
+ OMMA = 2127,
+ OMMU = 2128,
+ OMSJ = 2129,
+ OMSS = 2130,
+ OMWU = 2131,
+ OMZA = 2132,
+ OMZU = 2133,
+ PA1 = 2134,
+ PA2 = 2135,
+ PA3 = 2136,
+ PA4 = 2137,
+ PA5 = 2138,
+ PA6 = 2139,
+ PA7 = 2140,
+ PA8 = 2141,
+ PA9 = 2142,
+ PANB = 2143,
+ PEAMA = 2144,
+ PEANC = 2145,
+ PEAPU = 2146,
+ PEARE = 2147,
+ PEAYA = 2148,
+ PECAJ = 2149,
+ PECAL = 2150,
+ PECUS = 2151,
+ PEHUC = 2152,
+ PEHUV = 2153,
+ PEICA = 2154,
+ PEJUN = 2155,
+ PELAL = 2156,
+ PELAM = 2157,
+ PELIM = 2158,
+ PELOR = 2159,
+ PEMDD = 2160,
+ PEMOQ = 2161,
+ PEPAS = 2162,
+ PEPIU = 2163,
+ PEPUN = 2164,
+ PESAM = 2165,
+ PETAC = 2166,
+ PETUM = 2167,
+ PEUCA = 2168,
+ PGCPM = 2169,
+ PGEBR = 2170,
+ PGEHG = 2171,
+ PGEPW = 2172,
+ PGMBA = 2173,
+ PGMPL = 2174,
+ PGMPM = 2175,
+ PGMRL = 2176,
+ PGNCD = 2177,
+ PGNIK = 2178,
+ PGNPP = 2179,
+ PGNSB = 2180,
+ PGSAN = 2181,
+ PGSHM = 2182,
+ PGWBK = 2183,
+ PGWHM = 2184,
+ PGWPD = 2185,
+ PH00 = 2186,
+ PHABR = 2187,
+ PHAGN = 2188,
+ PHAGS = 2189,
+ PHAKL = 2190,
+ PHALB = 2191,
+ PHANT = 2192,
+ PHAPA = 2193,
+ PHAUR = 2194,
+ PHBAN = 2195,
+ PHBAS = 2196,
+ PHBEN = 2197,
+ PHBIL = 2198,
+ PHBOH = 2199,
+ PHBTG = 2200,
+ PHBTN = 2201,
+ PHBUK = 2202,
+ PHBUL = 2203,
+ PHCAG = 2204,
+ PHCAM = 2205,
+ PHCAN = 2206,
+ PHCAP = 2207,
+ PHCAS = 2208,
+ PHCAT = 2209,
+ PHCAV = 2210,
+ PHCEB = 2211,
+ PHCOM = 2212,
+ PHDAO = 2213,
+ PHDAS = 2214,
+ PHDAV = 2215,
+ PHDIN = 2216,
+ PHEAS = 2217,
+ PHGUI = 2218,
+ PHIFU = 2219,
+ PHILI = 2220,
+ PHILN = 2221,
+ PHILS = 2222,
+ PHISA = 2223,
+ PHKAL = 2224,
+ PHLAG = 2225,
+ PHLAN = 2226,
+ PHLAS = 2227,
+ PHLEY = 2228,
+ PHLUN = 2229,
+ PHMAD = 2230,
+ PHMAG = 2231,
+ PHMAS = 2232,
+ PHMDC = 2233,
+ PHMDR = 2234,
+ PHMOU = 2235,
+ PHMSC = 2236,
+ PHMSR = 2237,
+ PHNCO = 2238,
+ PHNEC = 2239,
+ PHNER = 2240,
+ PHNSA = 2241,
+ PHNUE = 2242,
+ PHNUV = 2243,
+ PHPAM = 2244,
+ PHPAN = 2245,
+ PHPLW = 2246,
+ PHQUE = 2247,
+ PHQUI = 2248,
+ PHRIZ = 2249,
+ PHROM = 2250,
+ PHSAR = 2251,
+ PHSCO = 2252,
+ PHSIG = 2253,
+ PHSLE = 2254,
+ PHSLU = 2255,
+ PHSOR = 2256,
+ PHSUK = 2257,
+ PHSUN = 2258,
+ PHSUR = 2259,
+ PHTAR = 2260,
+ PHTAW = 2261,
+ PHWSA = 2262,
+ PHZAN = 2263,
+ PHZAS = 2264,
+ PHZMB = 2265,
+ PHZSI = 2266,
+ PKBA = 2267,
+ PKGB = 2268,
+ PKIS = 2269,
+ PKJK = 2270,
+ PKKP = 2271,
+ PKPB = 2272,
+ PKSD = 2273,
+ PL02 = 2274,
+ PL04 = 2275,
+ PL06 = 2276,
+ PL08 = 2277,
+ PL10 = 2278,
+ PL12 = 2279,
+ PL14 = 2280,
+ PL16 = 2281,
+ PL18 = 2282,
+ PL20 = 2283,
+ PL22 = 2284,
+ PL24 = 2285,
+ PL26 = 2286,
+ PL28 = 2287,
+ PL30 = 2288,
+ PL32 = 2289,
+ PSBTH = 2290,
+ PSDEB = 2291,
+ PSGZA = 2292,
+ PSHBN = 2293,
+ PSJEM = 2294,
+ PSJEN = 2295,
+ PSJRH = 2296,
+ PSKYS = 2297,
+ PSNBS = 2298,
+ PSQQA = 2299,
+ PSRBH = 2300,
+ PSRFH = 2301,
+ PSSLT = 2302,
+ PSTBS = 2303,
+ PSTKM = 2304,
+ PT01 = 2305,
+ PT02 = 2306,
+ PT03 = 2307,
+ PT04 = 2308,
+ PT05 = 2309,
+ PT06 = 2310,
+ PT07 = 2311,
+ PT08 = 2312,
+ PT09 = 2313,
+ PT10 = 2314,
+ PT11 = 2315,
+ PT12 = 2316,
+ PT13 = 2317,
+ PT14 = 2318,
+ PT15 = 2319,
+ PT16 = 2320,
+ PT17 = 2321,
+ PT18 = 2322,
+ PT20 = 2323,
+ PT30 = 2324,
+ PW004 = 2325,
+ PW150 = 2326,
+ PW212 = 2327,
+ PW214 = 2328,
+ PW222 = 2329,
+ PW224 = 2330,
+ PW370 = 2331,
+ PY1 = 2332,
+ PY10 = 2333,
+ PY11 = 2334,
+ PY12 = 2335,
+ PY13 = 2336,
+ PY14 = 2337,
+ PY15 = 2338,
+ PY16 = 2339,
+ PY19 = 2340,
+ PY2 = 2341,
+ PY3 = 2342,
+ PY4 = 2343,
+ PY5 = 2344,
+ PY6 = 2345,
+ PY7 = 2346,
+ PY8 = 2347,
+ PY9 = 2348,
+ PYASU = 2349,
+ QADA = 2350,
+ QAKH = 2351,
+ QAMS = 2352,
+ QARA = 2353,
+ QAUS = 2354,
+ QAWA = 2355,
+ QAZA = 2356,
+ ROAB = 2357,
+ ROAG = 2358,
+ ROAR = 2359,
+ ROB = 2360,
+ ROBC = 2361,
+ ROBH = 2362,
+ ROBN = 2363,
+ ROBR = 2364,
+ ROBT = 2365,
+ ROBV = 2366,
+ ROBZ = 2367,
+ ROCJ = 2368,
+ ROCL = 2369,
+ ROCS = 2370,
+ ROCT = 2371,
+ ROCV = 2372,
+ RODB = 2373,
+ RODJ = 2374,
+ ROGJ = 2375,
+ ROGL = 2376,
+ ROGR = 2377,
+ ROHD = 2378,
+ ROHR = 2379,
+ ROIF = 2380,
+ ROIL = 2381,
+ ROIS = 2382,
+ ROMH = 2383,
+ ROMM = 2384,
+ ROMS = 2385,
+ RONT = 2386,
+ ROOT = 2387,
+ ROPH = 2388,
+ ROSB = 2389,
+ ROSJ = 2390,
+ ROSM = 2391,
+ ROSV = 2392,
+ ROTL = 2393,
+ ROTM = 2394,
+ ROTR = 2395,
+ ROVL = 2396,
+ ROVN = 2397,
+ ROVS = 2398,
+ RS00 = 2399,
+ RS01 = 2400,
+ RS02 = 2401,
+ RS03 = 2402,
+ RS04 = 2403,
+ RS05 = 2404,
+ RS06 = 2405,
+ RS07 = 2406,
+ RS08 = 2407,
+ RS09 = 2408,
+ RS10 = 2409,
+ RS11 = 2410,
+ RS12 = 2411,
+ RS13 = 2412,
+ RS14 = 2413,
+ RS15 = 2414,
+ RS16 = 2415,
+ RS17 = 2416,
+ RS18 = 2417,
+ RS19 = 2418,
+ RS20 = 2419,
+ RS21 = 2420,
+ RS22 = 2421,
+ RS23 = 2422,
+ RS24 = 2423,
+ RS26 = 2424,
+ RS27 = 2425,
+ RS28 = 2426,
+ RUAD = 2427,
+ RUAL = 2428,
+ RUALT = 2429,
+ RUAMU = 2430,
+ RUARK = 2431,
+ RUAST = 2432,
+ RUBA = 2433,
+ RUBEL = 2434,
+ RUBRY = 2435,
+ RUBU = 2436,
+ RUCE = 2437,
+ RUCHE = 2438,
+ RUCHU = 2439,
+ RUCU = 2440,
+ RUDA = 2441,
+ RUIN = 2442,
+ RUIRK = 2443,
+ RUIVA = 2444,
+ RUKAM = 2445,
+ RUKB = 2446,
+ RUKC = 2447,
+ RUKDA = 2448,
+ RUKEM = 2449,
+ RUKGD = 2450,
+ RUKGN = 2451,
+ RUKHA = 2452,
+ RUKHM = 2453,
+ RUKIR = 2454,
+ RUKK = 2455,
+ RUKL = 2456,
+ RUKLU = 2457,
+ RUKO = 2458,
+ RUKOS = 2459,
+ RUKR = 2460,
+ RUKRS = 2461,
+ RUKYA = 2462,
+ RULEN = 2463,
+ RULIP = 2464,
+ RUMAG = 2465,
+ RUME = 2466,
+ RUMO = 2467,
+ RUMOS = 2468,
+ RUMOW = 2469,
+ RUMUR = 2470,
+ RUNEN = 2471,
+ RUNGR = 2472,
+ RUNIZ = 2473,
+ RUNVS = 2474,
+ RUOMS = 2475,
+ RUORE = 2476,
+ RUORL = 2477,
+ RUPER = 2478,
+ RUPNZ = 2479,
+ RUPRI = 2480,
+ RUPSK = 2481,
+ RUROS = 2482,
+ RURYA = 2483,
+ RUSA = 2484,
+ RUSAK = 2485,
+ RUSAM = 2486,
+ RUSAR = 2487,
+ RUSE = 2488,
+ RUSMO = 2489,
+ RUSPE = 2490,
+ RUSTA = 2491,
+ RUSVE = 2492,
+ RUTA = 2493,
+ RUTAM = 2494,
+ RUTOM = 2495,
+ RUTUL = 2496,
+ RUTVE = 2497,
+ RUTY = 2498,
+ RUTYU = 2499,
+ RUUD = 2500,
+ RUULY = 2501,
+ RUVGG = 2502,
+ RUVLA = 2503,
+ RUVLG = 2504,
+ RUVOR = 2505,
+ RUYAN = 2506,
+ RUYAR = 2507,
+ RUYEV = 2508,
+ RUZAB = 2509,
+ RW01 = 2510,
+ RW02 = 2511,
+ RW03 = 2512,
+ RW04 = 2513,
+ RW05 = 2514,
+ SA01 = 2515,
+ SA02 = 2516,
+ SA03 = 2517,
+ SA04 = 2518,
+ SA05 = 2519,
+ SA06 = 2520,
+ SA07 = 2521,
+ SA08 = 2522,
+ SA09 = 2523,
+ SA10 = 2524,
+ SA11 = 2525,
+ SA12 = 2526,
+ SA14 = 2527,
+ SBGU = 2528,
+ SBMK = 2529,
+ SBWE = 2530,
+ SC01 = 2531,
+ SC02 = 2532,
+ SC05 = 2533,
+ SC06 = 2534,
+ SC07 = 2535,
+ SC08 = 2536,
+ SC10 = 2537,
+ SC11 = 2538,
+ SC13 = 2539,
+ SC14 = 2540,
+ SC15 = 2541,
+ SC16 = 2542,
+ SC20 = 2543,
+ SC23 = 2544,
+ SDDC = 2545,
+ SDDN = 2546,
+ SDDS = 2547,
+ SDDW = 2548,
+ SDGD = 2549,
+ SDGK = 2550,
+ SDGZ = 2551,
+ SDKA = 2552,
+ SDKH = 2553,
+ SDKN = 2554,
+ SDKS = 2555,
+ SDNB = 2556,
+ SDNO = 2557,
+ SDNR = 2558,
+ SDNW = 2559,
+ SDRS = 2560,
+ SDSI = 2561,
+ SEAB = 2562,
+ SEAC = 2563,
+ SEBD = 2564,
+ SEC = 2565,
+ SED = 2566,
+ SEE = 2567,
+ SEF = 2568,
+ SEG = 2569,
+ SEH = 2570,
+ SEI = 2571,
+ SEK = 2572,
+ SEM = 2573,
+ SEN = 2574,
+ SEO = 2575,
+ SES = 2576,
+ SET = 2577,
+ SEU = 2578,
+ SEW = 2579,
+ SEX = 2580,
+ SEY = 2581,
+ SEZ = 2582,
+ SHHL = 2583,
+ SI001 = 2584,
+ SI002 = 2585,
+ SI003 = 2586,
+ SI004 = 2587,
+ SI005 = 2588,
+ SI006 = 2589,
+ SI007 = 2590,
+ SI008 = 2591,
+ SI009 = 2592,
+ SI010 = 2593,
+ SI011 = 2594,
+ SI012 = 2595,
+ SI013 = 2596,
+ SI014 = 2597,
+ SI015 = 2598,
+ SI017 = 2599,
+ SI018 = 2600,
+ SI019 = 2601,
+ SI020 = 2602,
+ SI021 = 2603,
+ SI023 = 2604,
+ SI024 = 2605,
+ SI025 = 2606,
+ SI026 = 2607,
+ SI029 = 2608,
+ SI031 = 2609,
+ SI032 = 2610,
+ SI033 = 2611,
+ SI034 = 2612,
+ SI035 = 2613,
+ SI036 = 2614,
+ SI037 = 2615,
+ SI038 = 2616,
+ SI039 = 2617,
+ SI040 = 2618,
+ SI041 = 2619,
+ SI042 = 2620,
+ SI043 = 2621,
+ SI044 = 2622,
+ SI045 = 2623,
+ SI046 = 2624,
+ SI047 = 2625,
+ SI048 = 2626,
+ SI049 = 2627,
+ SI050 = 2628,
+ SI052 = 2629,
+ SI053 = 2630,
+ SI054 = 2631,
+ SI055 = 2632,
+ SI056 = 2633,
+ SI057 = 2634,
+ SI058 = 2635,
+ SI059 = 2636,
+ SI060 = 2637,
+ SI061 = 2638,
+ SI063 = 2639,
+ SI064 = 2640,
+ SI065 = 2641,
+ SI066 = 2642,
+ SI067 = 2643,
+ SI068 = 2644,
+ SI069 = 2645,
+ SI070 = 2646,
+ SI071 = 2647,
+ SI072 = 2648,
+ SI073 = 2649,
+ SI074 = 2650,
+ SI075 = 2651,
+ SI076 = 2652,
+ SI077 = 2653,
+ SI079 = 2654,
+ SI080 = 2655,
+ SI081 = 2656,
+ SI082 = 2657,
+ SI083 = 2658,
+ SI084 = 2659,
+ SI085 = 2660,
+ SI086 = 2661,
+ SI087 = 2662,
+ SI090 = 2663,
+ SI091 = 2664,
+ SI092 = 2665,
+ SI094 = 2666,
+ SI095 = 2667,
+ SI096 = 2668,
+ SI097 = 2669,
+ SI098 = 2670,
+ SI099 = 2671,
+ SI100 = 2672,
+ SI101 = 2673,
+ SI102 = 2674,
+ SI103 = 2675,
+ SI104 = 2676,
+ SI105 = 2677,
+ SI106 = 2678,
+ SI108 = 2679,
+ SI109 = 2680,
+ SI110 = 2681,
+ SI111 = 2682,
+ SI112 = 2683,
+ SI113 = 2684,
+ SI114 = 2685,
+ SI115 = 2686,
+ SI116 = 2687,
+ SI117 = 2688,
+ SI118 = 2689,
+ SI119 = 2690,
+ SI120 = 2691,
+ SI121 = 2692,
+ SI122 = 2693,
+ SI123 = 2694,
+ SI124 = 2695,
+ SI125 = 2696,
+ SI126 = 2697,
+ SI127 = 2698,
+ SI128 = 2699,
+ SI129 = 2700,
+ SI130 = 2701,
+ SI131 = 2702,
+ SI132 = 2703,
+ SI133 = 2704,
+ SI134 = 2705,
+ SI135 = 2706,
+ SI136 = 2707,
+ SI137 = 2708,
+ SI138 = 2709,
+ SI139 = 2710,
+ SI140 = 2711,
+ SI141 = 2712,
+ SI142 = 2713,
+ SI143 = 2714,
+ SI144 = 2715,
+ SI146 = 2716,
+ SI147 = 2717,
+ SI148 = 2718,
+ SI149 = 2719,
+ SI150 = 2720,
+ SI151 = 2721,
+ SI152 = 2722,
+ SI154 = 2723,
+ SI155 = 2724,
+ SI156 = 2725,
+ SI158 = 2726,
+ SI159 = 2727,
+ SI160 = 2728,
+ SI161 = 2729,
+ SI162 = 2730,
+ SI164 = 2731,
+ SI165 = 2732,
+ SI166 = 2733,
+ SI167 = 2734,
+ SI168 = 2735,
+ SI169 = 2736,
+ SI170 = 2737,
+ SI171 = 2738,
+ SI172 = 2739,
+ SI173 = 2740,
+ SI174 = 2741,
+ SI175 = 2742,
+ SI176 = 2743,
+ SI179 = 2744,
+ SI180 = 2745,
+ SI182 = 2746,
+ SI183 = 2747,
+ SI184 = 2748,
+ SI185 = 2749,
+ SI186 = 2750,
+ SI187 = 2751,
+ SI188 = 2752,
+ SI189 = 2753,
+ SI190 = 2754,
+ SI191 = 2755,
+ SI193 = 2756,
+ SI194 = 2757,
+ SI195 = 2758,
+ SI196 = 2759,
+ SI197 = 2760,
+ SI198 = 2761,
+ SI199 = 2762,
+ SI200 = 2763,
+ SI201 = 2764,
+ SI203 = 2765,
+ SI204 = 2766,
+ SI205 = 2767,
+ SI206 = 2768,
+ SI207 = 2769,
+ SI208 = 2770,
+ SI209 = 2771,
+ SI210 = 2772,
+ SI211 = 2773,
+ SI212 = 2774,
+ SI213 = 2775,
+ SKBC = 2776,
+ SKBL = 2777,
+ SKKI = 2778,
+ SKNI = 2779,
+ SKPV = 2780,
+ SKTA = 2781,
+ SKTC = 2782,
+ SKZI = 2783,
+ SLE = 2784,
+ SLN = 2785,
+ SLNW = 2786,
+ SLS = 2787,
+ SLW = 2788,
+ SM02 = 2789,
+ SM04 = 2790,
+ SM07 = 2791,
+ SM09 = 2792,
+ SNDB = 2793,
+ SNDK = 2794,
+ SNFK = 2795,
+ SNKA = 2796,
+ SNKD = 2797,
+ SNKE = 2798,
+ SNKL = 2799,
+ SNLG = 2800,
+ SNMT = 2801,
+ SNSE = 2802,
+ SNSL = 2803,
+ SNTC = 2804,
+ SNTH = 2805,
+ SNZG = 2806,
+ SOAW = 2807,
+ SOBN = 2808,
+ SOBR = 2809,
+ SOBY = 2810,
+ SOGA = 2811,
+ SOHI = 2812,
+ SOJH = 2813,
+ SOMU = 2814,
+ SONU = 2815,
+ SOSA = 2816,
+ SOSO = 2817,
+ SOTO = 2818,
+ SOWO = 2819,
+ SRBR = 2820,
+ SRCM = 2821,
+ SRCR = 2822,
+ SRMA = 2823,
+ SRNI = 2824,
+ SRPM = 2825,
+ SRPR = 2826,
+ SRSA = 2827,
+ SRSI = 2828,
+ SRWA = 2829,
+ SSBN = 2830,
+ SSBW = 2831,
+ SSEC = 2832,
+ SSEE = 2833,
+ SSEW = 2834,
+ SSJG = 2835,
+ SSNU = 2836,
+ SSUY = 2837,
+ SSWR = 2838,
+ ST01 = 2839,
+ STP = 2840,
+ SVAH = 2841,
+ SVCA = 2842,
+ SVCH = 2843,
+ SVCU = 2844,
+ SVLI = 2845,
+ SVMO = 2846,
+ SVPA = 2847,
+ SVSA = 2848,
+ SVSM = 2849,
+ SVSO = 2850,
+ SVSS = 2851,
+ SVSV = 2852,
+ SVUN = 2853,
+ SVUS = 2854,
+ SYDI = 2855,
+ SYDR = 2856,
+ SYDY = 2857,
+ SYHA = 2858,
+ SYHI = 2859,
+ SYHL = 2860,
+ SYHM = 2861,
+ SYID = 2862,
+ SYLA = 2863,
+ SYQU = 2864,
+ SYRA = 2865,
+ SYRD = 2866,
+ SYSU = 2867,
+ SYTA = 2868,
+ SZHH = 2869,
+ SZLU = 2870,
+ SZMA = 2871,
+ SZSH = 2872,
+ TDBG = 2873,
+ TDCB = 2874,
+ TDGR = 2875,
+ TDLC = 2876,
+ TDLO = 2877,
+ TDND = 2878,
+ TDOD = 2879,
+ TDSI = 2880,
+ TGC = 2881,
+ TGK = 2882,
+ TGM = 2883,
+ TGP = 2884,
+ TGS = 2885,
+ TH10 = 2886,
+ TH11 = 2887,
+ TH12 = 2888,
+ TH13 = 2889,
+ TH14 = 2890,
+ TH15 = 2891,
+ TH16 = 2892,
+ TH17 = 2893,
+ TH18 = 2894,
+ TH19 = 2895,
+ TH20 = 2896,
+ TH21 = 2897,
+ TH22 = 2898,
+ TH23 = 2899,
+ TH24 = 2900,
+ TH25 = 2901,
+ TH26 = 2902,
+ TH27 = 2903,
+ TH30 = 2904,
+ TH31 = 2905,
+ TH32 = 2906,
+ TH33 = 2907,
+ TH34 = 2908,
+ TH35 = 2909,
+ TH36 = 2910,
+ TH37 = 2911,
+ TH38 = 2912,
+ TH39 = 2913,
+ TH40 = 2914,
+ TH41 = 2915,
+ TH42 = 2916,
+ TH43 = 2917,
+ TH44 = 2918,
+ TH45 = 2919,
+ TH46 = 2920,
+ TH47 = 2921,
+ TH48 = 2922,
+ TH49 = 2923,
+ TH50 = 2924,
+ TH51 = 2925,
+ TH52 = 2926,
+ TH53 = 2927,
+ TH54 = 2928,
+ TH55 = 2929,
+ TH56 = 2930,
+ TH57 = 2931,
+ TH58 = 2932,
+ TH60 = 2933,
+ TH61 = 2934,
+ TH62 = 2935,
+ TH63 = 2936,
+ TH64 = 2937,
+ TH65 = 2938,
+ TH66 = 2939,
+ TH67 = 2940,
+ TH70 = 2941,
+ TH71 = 2942,
+ TH72 = 2943,
+ TH73 = 2944,
+ TH74 = 2945,
+ TH75 = 2946,
+ TH76 = 2947,
+ TH77 = 2948,
+ TH80 = 2949,
+ TH81 = 2950,
+ TH82 = 2951,
+ TH83 = 2952,
+ TH84 = 2953,
+ TH85 = 2954,
+ TH86 = 2955,
+ TH90 = 2956,
+ TH91 = 2957,
+ TH92 = 2958,
+ TH93 = 2959,
+ TH94 = 2960,
+ TH95 = 2961,
+ TH96 = 2962,
+ TJDU = 2963,
+ TJGB = 2964,
+ TJKT = 2965,
+ TJRA = 2966,
+ TJSU = 2967,
+ TLAL = 2968,
+ TLAN = 2969,
+ TLCO = 2970,
+ TLDI = 2971,
+ TLER = 2972,
+ TLLI = 2973,
+ TMA = 2974,
+ TMB = 2975,
+ TMD = 2976,
+ TML = 2977,
+ TMM = 2978,
+ TN11 = 2979,
+ TN12 = 2980,
+ TN13 = 2981,
+ TN14 = 2982,
+ TN21 = 2983,
+ TN22 = 2984,
+ TN23 = 2985,
+ TN31 = 2986,
+ TN32 = 2987,
+ TN33 = 2988,
+ TN34 = 2989,
+ TN41 = 2990,
+ TN42 = 2991,
+ TN43 = 2992,
+ TN51 = 2993,
+ TN52 = 2994,
+ TN53 = 2995,
+ TN61 = 2996,
+ TN71 = 2997,
+ TN72 = 2998,
+ TN73 = 2999,
+ TN81 = 3000,
+ TN82 = 3001,
+ TN83 = 3002,
+ TO01 = 3003,
+ TO02 = 3004,
+ TO03 = 3005,
+ TO04 = 3006,
+ TO05 = 3007,
+ TR01 = 3008,
+ TR02 = 3009,
+ TR03 = 3010,
+ TR04 = 3011,
+ TR05 = 3012,
+ TR06 = 3013,
+ TR07 = 3014,
+ TR08 = 3015,
+ TR09 = 3016,
+ TR10 = 3017,
+ TR11 = 3018,
+ TR12 = 3019,
+ TR13 = 3020,
+ TR14 = 3021,
+ TR15 = 3022,
+ TR16 = 3023,
+ TR17 = 3024,
+ TR18 = 3025,
+ TR19 = 3026,
+ TR20 = 3027,
+ TR21 = 3028,
+ TR22 = 3029,
+ TR23 = 3030,
+ TR24 = 3031,
+ TR25 = 3032,
+ TR26 = 3033,
+ TR27 = 3034,
+ TR28 = 3035,
+ TR29 = 3036,
+ TR30 = 3037,
+ TR31 = 3038,
+ TR32 = 3039,
+ TR33 = 3040,
+ TR34 = 3041,
+ TR35 = 3042,
+ TR36 = 3043,
+ TR37 = 3044,
+ TR38 = 3045,
+ TR39 = 3046,
+ TR40 = 3047,
+ TR41 = 3048,
+ TR42 = 3049,
+ TR43 = 3050,
+ TR44 = 3051,
+ TR45 = 3052,
+ TR46 = 3053,
+ TR47 = 3054,
+ TR48 = 3055,
+ TR49 = 3056,
+ TR50 = 3057,
+ TR51 = 3058,
+ TR52 = 3059,
+ TR53 = 3060,
+ TR54 = 3061,
+ TR55 = 3062,
+ TR56 = 3063,
+ TR57 = 3064,
+ TR58 = 3065,
+ TR59 = 3066,
+ TR60 = 3067,
+ TR61 = 3068,
+ TR62 = 3069,
+ TR63 = 3070,
+ TR64 = 3071,
+ TR65 = 3072,
+ TR66 = 3073,
+ TR67 = 3074,
+ TR68 = 3075,
+ TR69 = 3076,
+ TR70 = 3077,
+ TR71 = 3078,
+ TR72 = 3079,
+ TR73 = 3080,
+ TR74 = 3081,
+ TR75 = 3082,
+ TR76 = 3083,
+ TR77 = 3084,
+ TR78 = 3085,
+ TR79 = 3086,
+ TR80 = 3087,
+ TR81 = 3088,
+ TTARI = 3089,
+ TTCHA = 3090,
+ TTCTT = 3091,
+ TTDMN = 3092,
+ TTMRC = 3093,
+ TTPED = 3094,
+ TTPOS = 3095,
+ TTPRT = 3096,
+ TTPTF = 3097,
+ TTSFO = 3098,
+ TTSGE = 3099,
+ TTSIP = 3100,
+ TTSJL = 3101,
+ TTTOB = 3102,
+ TTTUP = 3103,
+ TVFUN = 3104,
+ TWCHA = 3105,
+ TWCYQ = 3106,
+ TWHSQ = 3107,
+ TWHUA = 3108,
+ TWILA = 3109,
+ TWKEE = 3110,
+ TWKHH = 3111,
+ TWKIN = 3112,
+ TWLIE = 3113,
+ TWMIA = 3114,
+ TWNAN = 3115,
+ TWNWT = 3116,
+ TWPEN = 3117,
+ TWPIF = 3118,
+ TWTAO = 3119,
+ TWTNN = 3120,
+ TWTPE = 3121,
+ TWTTT = 3122,
+ TWTXG = 3123,
+ TWYUN = 3124,
+ TZ01 = 3125,
+ TZ02 = 3126,
+ TZ03 = 3127,
+ TZ04 = 3128,
+ TZ05 = 3129,
+ TZ06 = 3130,
+ TZ07 = 3131,
+ TZ08 = 3132,
+ TZ09 = 3133,
+ TZ10 = 3134,
+ TZ11 = 3135,
+ TZ12 = 3136,
+ TZ13 = 3137,
+ TZ14 = 3138,
+ TZ15 = 3139,
+ TZ16 = 3140,
+ TZ17 = 3141,
+ TZ18 = 3142,
+ TZ19 = 3143,
+ TZ20 = 3144,
+ TZ21 = 3145,
+ TZ22 = 3146,
+ TZ23 = 3147,
+ TZ24 = 3148,
+ TZ25 = 3149,
+ TZ26 = 3150,
+ TZ27 = 3151,
+ TZ28 = 3152,
+ TZ29 = 3153,
+ TZ30 = 3154,
+ TZ31 = 3155,
+ UA05 = 3156,
+ UA07 = 3157,
+ UA09 = 3158,
+ UA12 = 3159,
+ UA14 = 3160,
+ UA18 = 3161,
+ UA21 = 3162,
+ UA23 = 3163,
+ UA26 = 3164,
+ UA30 = 3165,
+ UA32 = 3166,
+ UA35 = 3167,
+ UA40 = 3168,
+ UA43 = 3169,
+ UA46 = 3170,
+ UA48 = 3171,
+ UA51 = 3172,
+ UA53 = 3173,
+ UA56 = 3174,
+ UA59 = 3175,
+ UA61 = 3176,
+ UA63 = 3177,
+ UA65 = 3178,
+ UA68 = 3179,
+ UA71 = 3180,
+ UA74 = 3181,
+ UA77 = 3182,
+ UG101 = 3183,
+ UG102 = 3184,
+ UG103 = 3185,
+ UG104 = 3186,
+ UG105 = 3187,
+ UG106 = 3188,
+ UG107 = 3189,
+ UG108 = 3190,
+ UG109 = 3191,
+ UG110 = 3192,
+ UG111 = 3193,
+ UG112 = 3194,
+ UG113 = 3195,
+ UG114 = 3196,
+ UG115 = 3197,
+ UG116 = 3198,
+ UG117 = 3199,
+ UG118 = 3200,
+ UG120 = 3201,
+ UG121 = 3202,
+ UG122 = 3203,
+ UG123 = 3204,
+ UG124 = 3205,
+ UG201 = 3206,
+ UG202 = 3207,
+ UG203 = 3208,
+ UG204 = 3209,
+ UG205 = 3210,
+ UG206 = 3211,
+ UG207 = 3212,
+ UG208 = 3213,
+ UG209 = 3214,
+ UG211 = 3215,
+ UG212 = 3216,
+ UG213 = 3217,
+ UG214 = 3218,
+ UG215 = 3219,
+ UG218 = 3220,
+ UG219 = 3221,
+ UG222 = 3222,
+ UG223 = 3223,
+ UG225 = 3224,
+ UG226 = 3225,
+ UG227 = 3226,
+ UG228 = 3227,
+ UG229 = 3228,
+ UG230 = 3229,
+ UG301 = 3230,
+ UG302 = 3231,
+ UG303 = 3232,
+ UG304 = 3233,
+ UG305 = 3234,
+ UG307 = 3235,
+ UG308 = 3236,
+ UG309 = 3237,
+ UG310 = 3238,
+ UG311 = 3239,
+ UG312 = 3240,
+ UG313 = 3241,
+ UG314 = 3242,
+ UG318 = 3243,
+ UG319 = 3244,
+ UG320 = 3245,
+ UG321 = 3246,
+ UG322 = 3247,
+ UG323 = 3248,
+ UG325 = 3249,
+ UG326 = 3250,
+ UG327 = 3251,
+ UG328 = 3252,
+ UG330 = 3253,
+ UG401 = 3254,
+ UG402 = 3255,
+ UG403 = 3256,
+ UG404 = 3257,
+ UG405 = 3258,
+ UG406 = 3259,
+ UG407 = 3260,
+ UG408 = 3261,
+ UG409 = 3262,
+ UG410 = 3263,
+ UG411 = 3264,
+ UG412 = 3265,
+ UG413 = 3266,
+ UG414 = 3267,
+ UG415 = 3268,
+ UG416 = 3269,
+ UG417 = 3270,
+ UG418 = 3271,
+ UG419 = 3272,
+ UG420 = 3273,
+ UG421 = 3274,
+ UG422 = 3275,
+ UG423 = 3276,
+ UG424 = 3277,
+ UG425 = 3278,
+ UG426 = 3279,
+ UM95 = 3280,
+ USAK = 3281,
+ USAL = 3282,
+ USAR = 3283,
+ USAZ = 3284,
+ USCA = 3285,
+ USCO = 3286,
+ USCT = 3287,
+ USDC = 3288,
+ USDE = 3289,
+ USFL = 3290,
+ USGA = 3291,
+ USHI = 3292,
+ USIA = 3293,
+ USID = 3294,
+ USIL = 3295,
+ USIN = 3296,
+ USKS = 3297,
+ USKY = 3298,
+ USLA = 3299,
+ USMA = 3300,
+ USMD = 3301,
+ USME = 3302,
+ USMI = 3303,
+ USMN = 3304,
+ USMO = 3305,
+ USMS = 3306,
+ USMT = 3307,
+ USNC = 3308,
+ USND = 3309,
+ USNE = 3310,
+ USNH = 3311,
+ USNJ = 3312,
+ USNM = 3313,
+ USNV = 3314,
+ USNY = 3315,
+ USOH = 3316,
+ USOK = 3317,
+ USOR = 3318,
+ USPA = 3319,
+ USRI = 3320,
+ USSC = 3321,
+ USSD = 3322,
+ USTN = 3323,
+ USTX = 3324,
+ USUT = 3325,
+ USVA = 3326,
+ USVT = 3327,
+ USWA = 3328,
+ USWI = 3329,
+ USWV = 3330,
+ USWY = 3331,
+ UYAR = 3332,
+ UYCA = 3333,
+ UYCL = 3334,
+ UYCO = 3335,
+ UYDU = 3336,
+ UYFD = 3337,
+ UYFS = 3338,
+ UYLA = 3339,
+ UYMA = 3340,
+ UYMO = 3341,
+ UYPA = 3342,
+ UYRN = 3343,
+ UYRO = 3344,
+ UYRV = 3345,
+ UYSA = 3346,
+ UYSJ = 3347,
+ UYSO = 3348,
+ UYTA = 3349,
+ UYTT = 3350,
+ UZAN = 3351,
+ UZBU = 3352,
+ UZFA = 3353,
+ UZJI = 3354,
+ UZNG = 3355,
+ UZNW = 3356,
+ UZQA = 3357,
+ UZQR = 3358,
+ UZSA = 3359,
+ UZSI = 3360,
+ UZSU = 3361,
+ UZTK = 3362,
+ UZXO = 3363,
+ VC01 = 3364,
+ VC04 = 3365,
+ VC05 = 3366,
+ VC06 = 3367,
+ VEA = 3368,
+ VEB = 3369,
+ VEC = 3370,
+ VED = 3371,
+ VEE = 3372,
+ VEF = 3373,
+ VEG = 3374,
+ VEH = 3375,
+ VEI = 3376,
+ VEJ = 3377,
+ VEK = 3378,
+ VEL = 3379,
+ VEM = 3380,
+ VEN = 3381,
+ VEO = 3382,
+ VEP = 3383,
+ VER = 3384,
+ VES = 3385,
+ VET = 3386,
+ VEU = 3387,
+ VEV = 3388,
+ VEW = 3389,
+ VEX = 3390,
+ VEY = 3391,
+ VEZ = 3392,
+ VN01 = 3393,
+ VN02 = 3394,
+ VN03 = 3395,
+ VN04 = 3396,
+ VN05 = 3397,
+ VN06 = 3398,
+ VN07 = 3399,
+ VN09 = 3400,
+ VN13 = 3401,
+ VN14 = 3402,
+ VN18 = 3403,
+ VN20 = 3404,
+ VN21 = 3405,
+ VN22 = 3406,
+ VN23 = 3407,
+ VN24 = 3408,
+ VN25 = 3409,
+ VN26 = 3410,
+ VN27 = 3411,
+ VN28 = 3412,
+ VN29 = 3413,
+ VN30 = 3414,
+ VN31 = 3415,
+ VN32 = 3416,
+ VN33 = 3417,
+ VN34 = 3418,
+ VN35 = 3419,
+ VN36 = 3420,
+ VN37 = 3421,
+ VN39 = 3422,
+ VN40 = 3423,
+ VN41 = 3424,
+ VN43 = 3425,
+ VN44 = 3426,
+ VN45 = 3427,
+ VN46 = 3428,
+ VN47 = 3429,
+ VN49 = 3430,
+ VN50 = 3431,
+ VN51 = 3432,
+ VN52 = 3433,
+ VN53 = 3434,
+ VN54 = 3435,
+ VN55 = 3436,
+ VN56 = 3437,
+ VN57 = 3438,
+ VN58 = 3439,
+ VN59 = 3440,
+ VN61 = 3441,
+ VN63 = 3442,
+ VN66 = 3443,
+ VN67 = 3444,
+ VN68 = 3445,
+ VN69 = 3446,
+ VN70 = 3447,
+ VN71 = 3448,
+ VN72 = 3449,
+ VN73 = 3450,
+ VNCT = 3451,
+ VNDN = 3452,
+ VNHN = 3453,
+ VNHP = 3454,
+ VNSG = 3455,
+ VUSAM = 3456,
+ VUSEE = 3457,
+ VUTAE = 3458,
+ WFSG = 3459,
+ WFUV = 3460,
+ WSAT = 3461,
+ WSFA = 3462,
+ WSTU = 3463,
+ YEAB = 3464,
+ YEAD = 3465,
+ YEAM = 3466,
+ YEBA = 3467,
+ YEDA = 3468,
+ YEDH = 3469,
+ YEHD = 3470,
+ YEHU = 3471,
+ YEIB = 3472,
+ YEJA = 3473,
+ YELA = 3474,
+ YEMA = 3475,
+ YEMW = 3476,
+ YESA = 3477,
+ YESD = 3478,
+ YESH = 3479,
+ YESN = 3480,
+ YETA = 3481,
+ ZAEC = 3482,
+ ZAFS = 3483,
+ ZAGP = 3484,
+ ZAKZN = 3485,
+ ZALP = 3486,
+ ZAMP = 3487,
+ ZANC = 3488,
+ ZANW = 3489,
+ ZAWC = 3490,
+ ZM01 = 3491,
+ ZM02 = 3492,
+ ZM03 = 3493,
+ ZM04 = 3494,
+ ZM05 = 3495,
+ ZM06 = 3496,
+ ZM07 = 3497,
+ ZM08 = 3498,
+ ZM09 = 3499,
+ ZM10 = 3500,
+ ZWBU = 3501,
+ ZWHA = 3502,
+ ZWMA = 3503,
+ ZWMC = 3504,
+ ZWME = 3505,
+ ZWMI = 3506,
+ ZWMN = 3507,
+ ZWMS = 3508,
+ ZWMV = 3509,
+ ZWMW = 3510
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionCodeExtensions.cs b/src/Nager.Country.Subdivision/SubdivisionCodeExtensions.cs
new file mode 100644
index 0000000..4b07a38
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionCodeExtensions.cs
@@ -0,0 +1,22 @@
+namespace Nager.Country.Subdivision;
+
+public static class SubdivisionCodeExtensions
+{
+ public static Alpha2Code GetAlpha2Code( this SubdivisionCode subdivisionCode )
+ {
+ // get name
+ string subdivisionName = Enum.GetName( typeof( SubdivisionCode ), subdivisionCode );
+ if( subdivisionName == null )
+ {
+ throw new UnknownSubdivisionException( $"Cannot found subdivisions for subdivision code {subdivisionCode}" );
+ }
+
+ // get alpha code 2 part
+ string alpha2Part = subdivisionName.Substring( 0, 2 );
+ if( Enum.TryParse( alpha2Part, out Alpha2Code alpha2Code ) )
+ {
+ return alpha2Code;
+ }
+ throw new UnknownSubdivisionException( $"Cannot found alpha2code for subdivision code {subdivisionCode}" );
+ }
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/AargauSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/AargauSubdivisionInfo.cs
new file mode 100644
index 0000000..1535415
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/AargauSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class AargauSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Aargau";
+ public string TextCode => "CH-AG";
+ public SubdivisionCode Code => SubdivisionCode.CHAG;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellAusserrhodenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellAusserrhodenSubdivisionInfo.cs
new file mode 100644
index 0000000..f9d871b
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellAusserrhodenSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class AppenzellAusserrhodenSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Appenzell Ausserrhoden";
+ public string TextCode => "CH-AR";
+ public SubdivisionCode Code => SubdivisionCode.CHAR;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellInnerrhodenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellInnerrhodenSubdivisionInfo.cs
new file mode 100644
index 0000000..94aabbf
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/AppenzellInnerrhodenSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class AppenzellInnerrhodenSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Appenzell Innerrhoden";
+ public string TextCode => "CH-AI";
+ public SubdivisionCode Code => SubdivisionCode.CHAI;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BadenWuerttembergSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BadenWuerttembergSubdivisionInfo.cs
new file mode 100644
index 0000000..329c0cf
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BadenWuerttembergSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class BadenWuerttembergSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Baden-Wuerttemberg";
+ public string TextCode => "DE-BW";
+ public SubdivisionCode Code => SubdivisionCode.DEBW;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCitySubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCitySubdivisionInfo.cs
new file mode 100644
index 0000000..b975ef1
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCitySubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class BaselCitySubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Basel-City";
+ public string TextCode => "CH-BS";
+ public SubdivisionCode Code => SubdivisionCode.CHBS;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCountrySubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCountrySubdivisionInfo.cs
new file mode 100644
index 0000000..1a000ad
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BaselCountrySubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class BaselCountrySubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Basel-Country";
+ public string TextCode => "CH-BL";
+ public SubdivisionCode Code => SubdivisionCode.CHBL;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BavariaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BavariaSubdivisionInfo.cs
new file mode 100644
index 0000000..c7e0794
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BavariaSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class BavariaSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Bavaria";
+ public string TextCode => "DE-BY";
+ public SubdivisionCode Code => SubdivisionCode.DEBY;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BerlinSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BerlinSubdivisionInfo.cs
new file mode 100644
index 0000000..0e9b372
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BerlinSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class BerlinSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Berlin";
+ public string TextCode => "DE-BE";
+ public SubdivisionCode Code => SubdivisionCode.DEBE;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BernSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BernSubdivisionInfo.cs
new file mode 100644
index 0000000..9774888
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BernSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class BernSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Bern";
+ public string TextCode => "CH-BE";
+ public SubdivisionCode Code => SubdivisionCode.CHBE;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BrandenburgSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BrandenburgSubdivisionInfo.cs
new file mode 100644
index 0000000..503416f
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BrandenburgSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class BrandenburgSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Brandenburg";
+ public string TextCode => "DE-BB";
+ public SubdivisionCode Code => SubdivisionCode.DEBB;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BremenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BremenSubdivisionInfo.cs
new file mode 100644
index 0000000..df529cb
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BremenSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class BremenSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Bremen";
+ public string TextCode => "DE-HB";
+ public SubdivisionCode Code => SubdivisionCode.DEHB;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/BurgenlandSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/BurgenlandSubdivisionInfo.cs
new file mode 100644
index 0000000..6450202
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/BurgenlandSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class BurgenlandSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Burgenland";
+ public string TextCode => "AT-1";
+ public SubdivisionCode Code => SubdivisionCode.AT1;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.AT;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/CarinthiaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/CarinthiaSubdivisionInfo.cs
new file mode 100644
index 0000000..d974498
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/CarinthiaSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class CarinthiaSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Carinthia";
+ public string TextCode => "AT-2";
+ public SubdivisionCode Code => SubdivisionCode.AT2;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.AT;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/FribourgSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/FribourgSubdivisionInfo.cs
new file mode 100644
index 0000000..47eeaea
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/FribourgSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class FribourgSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Fribourg";
+ public string TextCode => "CH-FR";
+ public SubdivisionCode Code => SubdivisionCode.CHFR;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/GenevaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/GenevaSubdivisionInfo.cs
new file mode 100644
index 0000000..8704db2
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/GenevaSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class GenevaSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Geneva";
+ public string TextCode => "CH-GE";
+ public SubdivisionCode Code => SubdivisionCode.CHGE;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/GlarusSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/GlarusSubdivisionInfo.cs
new file mode 100644
index 0000000..5b9bf08
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/GlarusSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class GlarusSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Glarus";
+ public string TextCode => "CH-GL";
+ public SubdivisionCode Code => SubdivisionCode.CHGL;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/GrisonsSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/GrisonsSubdivisionInfo.cs
new file mode 100644
index 0000000..3883b7c
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/GrisonsSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class GrisonsSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Grisons";
+ public string TextCode => "CH-GR";
+ public SubdivisionCode Code => SubdivisionCode.CHGR;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/HamburgSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/HamburgSubdivisionInfo.cs
new file mode 100644
index 0000000..7053c4a
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/HamburgSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class HamburgSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Hamburg";
+ public string TextCode => "DE-HH";
+ public SubdivisionCode Code => SubdivisionCode.DEHH;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/HesseSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/HesseSubdivisionInfo.cs
new file mode 100644
index 0000000..1ce3029
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/HesseSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class HesseSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Hesse";
+ public string TextCode => "DE-HE";
+ public SubdivisionCode Code => SubdivisionCode.DEHE;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/JuraSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/JuraSubdivisionInfo.cs
new file mode 100644
index 0000000..85583b3
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/JuraSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class JuraSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Jura";
+ public string TextCode => "CH-JU";
+ public SubdivisionCode Code => SubdivisionCode.CHJU;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/LowerAustriaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/LowerAustriaSubdivisionInfo.cs
new file mode 100644
index 0000000..8757a63
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/LowerAustriaSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class LowerAustriaSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Lower Austria";
+ public string TextCode => "AT-3";
+ public SubdivisionCode Code => SubdivisionCode.AT3;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.AT;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/LowerSaxonySubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/LowerSaxonySubdivisionInfo.cs
new file mode 100644
index 0000000..26c84ec
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/LowerSaxonySubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class LowerSaxonySubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Lower Saxony";
+ public string TextCode => "DE-NI";
+ public SubdivisionCode Code => SubdivisionCode.DENI;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/LucerneSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/LucerneSubdivisionInfo.cs
new file mode 100644
index 0000000..deeb931
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/LucerneSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class LucerneSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Lucerne";
+ public string TextCode => "CH-LU";
+ public SubdivisionCode Code => SubdivisionCode.CHLU;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/MecklenburgWesternPomeraniaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/MecklenburgWesternPomeraniaSubdivisionInfo.cs
new file mode 100644
index 0000000..23ee86a
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/MecklenburgWesternPomeraniaSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class MecklenburgWesternPomeraniaSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Mecklenburg-Western Pomerania";
+ public string TextCode => "DE-MV";
+ public SubdivisionCode Code => SubdivisionCode.DEMV;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/NeuchatelSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/NeuchatelSubdivisionInfo.cs
new file mode 100644
index 0000000..d653d26
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/NeuchatelSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class NeuchatelSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Neuchatel";
+ public string TextCode => "CH-NE";
+ public SubdivisionCode Code => SubdivisionCode.CHNE;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/NidwaldenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/NidwaldenSubdivisionInfo.cs
new file mode 100644
index 0000000..09809c8
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/NidwaldenSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class NidwaldenSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Nidwalden";
+ public string TextCode => "CH-NW";
+ public SubdivisionCode Code => SubdivisionCode.CHNW;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/NorthRhineWestphaliaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/NorthRhineWestphaliaSubdivisionInfo.cs
new file mode 100644
index 0000000..d08571a
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/NorthRhineWestphaliaSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class NorthRhineWestphaliaSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "North Rhine-Westphalia";
+ public string TextCode => "DE-NW";
+ public SubdivisionCode Code => SubdivisionCode.DENW;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ObwaldenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ObwaldenSubdivisionInfo.cs
new file mode 100644
index 0000000..fad4aa7
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ObwaldenSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class ObwaldenSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Obwalden";
+ public string TextCode => "CH-OW";
+ public SubdivisionCode Code => SubdivisionCode.CHOW;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/RhinelandPalatinateSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/RhinelandPalatinateSubdivisionInfo.cs
new file mode 100644
index 0000000..c201665
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/RhinelandPalatinateSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class RhinelandPalatinateSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Rhineland-Palatinate";
+ public string TextCode => "DE-RP";
+ public SubdivisionCode Code => SubdivisionCode.DERP;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SaarlandSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SaarlandSubdivisionInfo.cs
new file mode 100644
index 0000000..6ba0354
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SaarlandSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class SaarlandSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Saarland";
+ public string TextCode => "DE-SL";
+ public SubdivisionCode Code => SubdivisionCode.DESL;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SaintGallSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SaintGallSubdivisionInfo.cs
new file mode 100644
index 0000000..0445600
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SaintGallSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class SaintGallSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Saint Gall";
+ public string TextCode => "CH-SG";
+ public SubdivisionCode Code => SubdivisionCode.CHSG;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SalzburgSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SalzburgSubdivisionInfo.cs
new file mode 100644
index 0000000..0c6a262
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SalzburgSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class SalzburgSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Salzburg";
+ public string TextCode => "AT-5";
+ public SubdivisionCode Code => SubdivisionCode.AT5;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.AT;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonyAnhaltSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonyAnhaltSubdivisionInfo.cs
new file mode 100644
index 0000000..ee37f1c
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonyAnhaltSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class SaxonyAnhaltSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Saxony-Anhalt";
+ public string TextCode => "DE-ST";
+ public SubdivisionCode Code => SubdivisionCode.DEST;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonySubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonySubdivisionInfo.cs
new file mode 100644
index 0000000..a29d178
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SaxonySubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class SaxonySubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Saxony";
+ public string TextCode => "DE-SN";
+ public SubdivisionCode Code => SubdivisionCode.DESN;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SchaffhausenSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SchaffhausenSubdivisionInfo.cs
new file mode 100644
index 0000000..b5849a7
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SchaffhausenSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class SchaffhausenSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Schaffhausen";
+ public string TextCode => "CH-SH";
+ public SubdivisionCode Code => SubdivisionCode.CHSH;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SchleswigHolsteinSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SchleswigHolsteinSubdivisionInfo.cs
new file mode 100644
index 0000000..1691618
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SchleswigHolsteinSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class SchleswigHolsteinSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Schleswig-Holstein";
+ public string TextCode => "DE-SH";
+ public SubdivisionCode Code => SubdivisionCode.DESH;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SchwyzSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SchwyzSubdivisionInfo.cs
new file mode 100644
index 0000000..4ee77e5
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SchwyzSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class SchwyzSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Schwyz";
+ public string TextCode => "CH-SZ";
+ public SubdivisionCode Code => SubdivisionCode.CHSZ;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/SolothurnSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/SolothurnSubdivisionInfo.cs
new file mode 100644
index 0000000..04050ed
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/SolothurnSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class SolothurnSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Solothurn";
+ public string TextCode => "CH-SO";
+ public SubdivisionCode Code => SubdivisionCode.CHSO;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/StyriaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/StyriaSubdivisionInfo.cs
new file mode 100644
index 0000000..ff511e2
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/StyriaSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class StyriaSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Styria";
+ public string TextCode => "AT-6";
+ public SubdivisionCode Code => SubdivisionCode.AT6;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.AT;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ThurgauSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ThurgauSubdivisionInfo.cs
new file mode 100644
index 0000000..8d901ec
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ThurgauSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class ThurgauSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Thurgau";
+ public string TextCode => "CH-TG";
+ public SubdivisionCode Code => SubdivisionCode.CHTG;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ThuringiaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ThuringiaSubdivisionInfo.cs
new file mode 100644
index 0000000..5ff5fcf
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ThuringiaSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class ThuringiaSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Thuringia";
+ public string TextCode => "DE-TH";
+ public SubdivisionCode Code => SubdivisionCode.DETH;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.DE;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/TicinoSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/TicinoSubdivisionInfo.cs
new file mode 100644
index 0000000..85c61d2
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/TicinoSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class TicinoSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Ticino";
+ public string TextCode => "CH-TI";
+ public SubdivisionCode Code => SubdivisionCode.CHTI;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/TyrolSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/TyrolSubdivisionInfo.cs
new file mode 100644
index 0000000..54136a0
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/TyrolSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class TyrolSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Tyrol";
+ public string TextCode => "AT-7";
+ public SubdivisionCode Code => SubdivisionCode.AT7;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.AT;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/UpperAustriaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/UpperAustriaSubdivisionInfo.cs
new file mode 100644
index 0000000..2b38445
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/UpperAustriaSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class UpperAustriaSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Upper Austria";
+ public string TextCode => "AT-4";
+ public SubdivisionCode Code => SubdivisionCode.AT4;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.AT;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/UriSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/UriSubdivisionInfo.cs
new file mode 100644
index 0000000..5b58086
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/UriSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class UriSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Uri";
+ public string TextCode => "CH-UR";
+ public SubdivisionCode Code => SubdivisionCode.CHUR;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ValaisSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ValaisSubdivisionInfo.cs
new file mode 100644
index 0000000..74e3d5d
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ValaisSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class ValaisSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Valais";
+ public string TextCode => "CH-VS";
+ public SubdivisionCode Code => SubdivisionCode.CHVS;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/VaudSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/VaudSubdivisionInfo.cs
new file mode 100644
index 0000000..ab51058
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/VaudSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class VaudSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Vaud";
+ public string TextCode => "CH-VD";
+ public SubdivisionCode Code => SubdivisionCode.CHVD;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ViennaSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ViennaSubdivisionInfo.cs
new file mode 100644
index 0000000..46d1102
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ViennaSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class ViennaSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Vienna";
+ public string TextCode => "AT-9";
+ public SubdivisionCode Code => SubdivisionCode.AT9;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.AT;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/VorarlbergSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/VorarlbergSubdivisionInfo.cs
new file mode 100644
index 0000000..f7cc4d6
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/VorarlbergSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class VorarlbergSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Vorarlberg";
+ public string TextCode => "AT-8";
+ public SubdivisionCode Code => SubdivisionCode.AT8;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.AT;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ZugSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ZugSubdivisionInfo.cs
new file mode 100644
index 0000000..d35a7cc
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ZugSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class ZugSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Zug";
+ public string TextCode => "CH-ZG";
+ public SubdivisionCode Code => SubdivisionCode.CHZG;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionInfos/ZurichSubdivisionInfo.cs b/src/Nager.Country.Subdivision/SubdivisionInfos/ZurichSubdivisionInfo.cs
new file mode 100644
index 0000000..5a1b6e5
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionInfos/ZurichSubdivisionInfo.cs
@@ -0,0 +1,9 @@
+namespace Nager.Country.Subdivision.SubdivisionInfos;
+
+public class ZurichSubdivisionInfo : ISubdivisionInfo
+{
+ public string CommonName => "Zurich";
+ public string TextCode => "CH-ZH";
+ public SubdivisionCode Code => SubdivisionCode.CHZH;
+ public Alpha2Code ParentAlpha2Code => Alpha2Code.CH;
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionProvider.cs b/src/Nager.Country.Subdivision/SubdivisionProvider.cs
new file mode 100644
index 0000000..4695811
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionProvider.cs
@@ -0,0 +1,47 @@
+namespace Nager.Country.Subdivision;
+
+public class SubdivisionProvider : ISubdivisionProvider
+{
+ private readonly Dictionary _alpha2Code2SubdivisionInfos;
+ private readonly Dictionary _code2SubdivisionInfo;
+
+ public SubdivisionProvider()
+ {
+ _code2SubdivisionInfo = SubdivisionProviderInitializer.Create();
+
+ // generate alpha 2 infos
+ _alpha2Code2SubdivisionInfos = _code2SubdivisionInfo
+ .GroupBy( entry => entry.Value.ParentAlpha2Code )
+ .ToDictionary( group => group.Key, entry => entry.Select( info => info.Value ).ToArray() );
+ }
+
+ public IEnumerable GetSubdivisions()
+ {
+ return _alpha2Code2SubdivisionInfos.Values.SelectMany( x => x );
+ }
+
+ public IEnumerable GetSubdivisions( Alpha2Code alpha2Code )
+ {
+ if( _alpha2Code2SubdivisionInfos.TryGetValue( alpha2Code, out ISubdivisionInfo[] subdivisions ) )
+ {
+ return subdivisions;
+ }
+
+ return [];
+ }
+
+ public IEnumerable GetSubdivisions( Alpha3Code alpha3Code )
+ {
+ return GetSubdivisions( alpha3Code.ToAlpha2Code() );
+ }
+
+ public ISubdivisionInfo GetSubdivision( SubdivisionCode code )
+ {
+ if( _code2SubdivisionInfo.TryGetValue( code, out ISubdivisionInfo value ) )
+ {
+ return value;
+ }
+
+ throw new UnknownSubdivisionException( $"Cannot found subdivision for code {code}" );
+ }
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionProviderExtensions.cs b/src/Nager.Country.Subdivision/SubdivisionProviderExtensions.cs
new file mode 100644
index 0000000..395d0f8
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionProviderExtensions.cs
@@ -0,0 +1,45 @@
+namespace Nager.Country.Subdivision;
+
+public static class SubdivisionProviderExtensions
+{
+ public static IEnumerable GetSubdivisions( this ISubdivisionProvider provider,
+ ICountryInfo country )
+ {
+ return provider.GetSubdivisions( country.Alpha2Code );
+ }
+
+ public static ISubdivisionInfo GetSubdivision( this ISubdivisionProvider provider, string code )
+ {
+ if( TryGetSubdivision( provider, code, out ISubdivisionInfo subdivision ) )
+ {
+ return subdivision;
+ }
+
+ throw new UnknownSubdivisionException( $"Cannot found a subdivision for code {code}" );
+ }
+
+ public static bool TryGetSubdivision( this ISubdivisionProvider provider, string code, out ISubdivisionInfo subdivision )
+ {
+ if( Enum.TryParse( code, true, out SubdivisionCode subdivisionCode ) )
+ {
+ subdivision = provider.GetSubdivision( subdivisionCode );
+ return true;
+ }
+
+ subdivision = null;
+ return false;
+ }
+
+ public static ISubdivisionInfo GetSubdivisionByName( this ISubdivisionProvider provider, string subdivisionName )
+ {
+ foreach( var subdivisionInfo in provider.GetSubdivisions() )
+ {
+ if( subdivisionInfo.CommonName.Equals( subdivisionName, StringComparison.OrdinalIgnoreCase ) )
+ {
+ return subdivisionInfo;
+ }
+ }
+
+ throw new UnknownSubdivisionException( $"Cannot found a subdivision for subdivisionName {subdivisionName}" );
+ }
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionProviderInitializer.cs b/src/Nager.Country.Subdivision/SubdivisionProviderInitializer.cs
new file mode 100644
index 0000000..7d4b6e5
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionProviderInitializer.cs
@@ -0,0 +1,64 @@
+using Nager.Country.Subdivision.SubdivisionInfos;
+
+namespace Nager.Country.Subdivision;
+
+internal static class SubdivisionProviderInitializer
+{
+ public static Dictionary Create()
+ {
+ return new Dictionary
+ {
+ { SubdivisionCode.AT1, new BurgenlandSubdivisionInfo() },
+ { SubdivisionCode.AT2, new CarinthiaSubdivisionInfo() },
+ { SubdivisionCode.AT3, new LowerAustriaSubdivisionInfo() },
+ { SubdivisionCode.AT4, new UpperAustriaSubdivisionInfo() },
+ { SubdivisionCode.AT5, new SalzburgSubdivisionInfo() },
+ { SubdivisionCode.AT6, new StyriaSubdivisionInfo() },
+ { SubdivisionCode.AT7, new TyrolSubdivisionInfo() },
+ { SubdivisionCode.AT8, new VorarlbergSubdivisionInfo() },
+ { SubdivisionCode.AT9, new ViennaSubdivisionInfo() },
+ { SubdivisionCode.CHAG, new AargauSubdivisionInfo() },
+ { SubdivisionCode.CHAR, new AppenzellAusserrhodenSubdivisionInfo() },
+ { SubdivisionCode.CHAI, new AppenzellInnerrhodenSubdivisionInfo() },
+ { SubdivisionCode.CHBL, new BaselCountrySubdivisionInfo() },
+ { SubdivisionCode.CHBS, new BaselCitySubdivisionInfo() },
+ { SubdivisionCode.CHBE, new BernSubdivisionInfo() },
+ { SubdivisionCode.CHFR, new FribourgSubdivisionInfo() },
+ { SubdivisionCode.CHGE, new GenevaSubdivisionInfo() },
+ { SubdivisionCode.CHGL, new GlarusSubdivisionInfo() },
+ { SubdivisionCode.CHGR, new GrisonsSubdivisionInfo() },
+ { SubdivisionCode.CHJU, new JuraSubdivisionInfo() },
+ { SubdivisionCode.CHLU, new LucerneSubdivisionInfo() },
+ { SubdivisionCode.CHNE, new NeuchatelSubdivisionInfo() },
+ { SubdivisionCode.CHNW, new NidwaldenSubdivisionInfo() },
+ { SubdivisionCode.CHOW, new ObwaldenSubdivisionInfo() },
+ { SubdivisionCode.CHSG, new SaintGallSubdivisionInfo() },
+ { SubdivisionCode.CHSH, new SchaffhausenSubdivisionInfo() },
+ { SubdivisionCode.CHSZ, new SchwyzSubdivisionInfo() },
+ { SubdivisionCode.CHSO, new SolothurnSubdivisionInfo() },
+ { SubdivisionCode.CHTG, new ThurgauSubdivisionInfo() },
+ { SubdivisionCode.CHTI, new TicinoSubdivisionInfo() },
+ { SubdivisionCode.CHUR, new UriSubdivisionInfo() },
+ { SubdivisionCode.CHVS, new ValaisSubdivisionInfo() },
+ { SubdivisionCode.CHVD, new VaudSubdivisionInfo() },
+ { SubdivisionCode.CHZG, new ZugSubdivisionInfo() },
+ { SubdivisionCode.CHZH, new ZurichSubdivisionInfo() },
+ { SubdivisionCode.DEBW, new BadenWuerttembergSubdivisionInfo() },
+ { SubdivisionCode.DEBY, new BavariaSubdivisionInfo() },
+ { SubdivisionCode.DEBE, new BerlinSubdivisionInfo() },
+ { SubdivisionCode.DEBB, new BrandenburgSubdivisionInfo() },
+ { SubdivisionCode.DEHB, new BremenSubdivisionInfo() },
+ { SubdivisionCode.DEHH, new HamburgSubdivisionInfo() },
+ { SubdivisionCode.DEHE, new HesseSubdivisionInfo() },
+ { SubdivisionCode.DEMV, new MecklenburgWesternPomeraniaSubdivisionInfo() },
+ { SubdivisionCode.DENI, new LowerSaxonySubdivisionInfo() },
+ { SubdivisionCode.DENW, new NorthRhineWestphaliaSubdivisionInfo() },
+ { SubdivisionCode.DERP, new RhinelandPalatinateSubdivisionInfo() },
+ { SubdivisionCode.DESL, new SaarlandSubdivisionInfo() },
+ { SubdivisionCode.DESN, new SaxonySubdivisionInfo() },
+ { SubdivisionCode.DEST, new SaxonyAnhaltSubdivisionInfo() },
+ { SubdivisionCode.DESH, new SchleswigHolsteinSubdivisionInfo() },
+ { SubdivisionCode.DETH, new ThuringiaSubdivisionInfo() }
+ };
+ }
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslationInitializer.cs b/src/Nager.Country.Subdivision/SubdivisionTranslationInitializer.cs
new file mode 100644
index 0000000..3c473a2
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslationInitializer.cs
@@ -0,0 +1,42 @@
+using Nager.Country.Subdivision.SubdivisionTranslations;
+
+namespace Nager.Country.Subdivision;
+
+internal static class SubdivisionTranslationInitializer
+{
+ public static Dictionary Create()
+ {
+ return new Dictionary
+ {
+ { SubdivisionCode.AT2, new CarinthiaSubdivisionTranslation() },
+ { SubdivisionCode.AT3, new LowerAustriaSubdivisionTranslation() },
+ { SubdivisionCode.AT4, new UpperAustriaSubdivisionTranslation() },
+ { SubdivisionCode.AT5, new SalzburgSubdivisionTranslation() },
+ { SubdivisionCode.AT6, new StyriaSubdivisionTranslation() },
+ { SubdivisionCode.AT7, new TyrolSubdivisionTranslation() },
+ { SubdivisionCode.AT8, new VorarlbergSubdivisionTranslation() },
+ { SubdivisionCode.AT9, new ViennaSubdivisionTranslation() },
+ { SubdivisionCode.CHBL, new BaselCountrySubdivisionTranslation() },
+ { SubdivisionCode.CHBS, new BaselCitySubdivisionTranslation() },
+ { SubdivisionCode.CHBE, new BernSubdivisionTranslation() },
+ { SubdivisionCode.CHFR, new FribourgSubdivisionTranslation() },
+ { SubdivisionCode.CHGE, new GenevaSubdivisionTranslation() },
+ { SubdivisionCode.CHGR, new GrisonsSubdivisionTranslation() },
+ { SubdivisionCode.CHLU, new LucerneSubdivisionTranslation() },
+ { SubdivisionCode.CHNE, new NeuchatelSubdivisionTranslation() },
+ { SubdivisionCode.CHSG, new SaintGallSubdivisionTranslation() },
+ { SubdivisionCode.CHVS, new ValaisSubdivisionTranslation() },
+ { SubdivisionCode.CHZH, new ZurichSubdivisionTranslation() },
+ { SubdivisionCode.DEBW, new BadenWuerttembergSubdivisionTranslation() },
+ { SubdivisionCode.DEBY, new BavariaSubdivisionTranslation() },
+ { SubdivisionCode.DEMV, new MecklenburgWesternPomeraniaSubdivisionTranslation() },
+ { SubdivisionCode.DENI, new LowerSaxonySubdivisionTranslation() },
+ { SubdivisionCode.DENW, new NorthRhineWestphaliaSubdivisionTranslation() },
+ { SubdivisionCode.DERP, new RhinelandPalatinateSubdivisionTranslation() },
+ { SubdivisionCode.DESN, new SaxonySubdivisionTranslation() },
+ { SubdivisionCode.DEST, new SaxonyAnhaltSubdivisionTranslation() },
+ { SubdivisionCode.DESH, new SchleswigHolsteinSubdivisionTranslation() },
+ { SubdivisionCode.DETH, new ThuringiaSubdivisionTranslation() }
+ };
+ }
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslationProvider.cs b/src/Nager.Country.Subdivision/SubdivisionTranslationProvider.cs
new file mode 100644
index 0000000..1fafb86
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslationProvider.cs
@@ -0,0 +1,58 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision;
+
+public class SubdivisionTranslationProvider : ISubdivisionTranslationProvider
+{
+ private static readonly ISubdivisionTranslation EmptyTranslation = new EmptySubdivisionTranslation();
+
+ private readonly Dictionary _code2SubdivisionTranslation = [];
+
+ private ISubdivisionProvider _subdivisionProvider;
+
+ public SubdivisionTranslationProvider( ISubdivisionProvider subdivisionProvider = null )
+ {
+ _subdivisionProvider = subdivisionProvider;
+
+ _code2SubdivisionTranslation = SubdivisionTranslationInitializer.Create();
+ }
+
+ public ISubdivisionTranslation GetSubdivisionTranslation( SubdivisionCode code )
+ {
+ if( _code2SubdivisionTranslation.TryGetValue( code, out var translation ) )
+ {
+ return translation;
+ }
+
+ return EmptyTranslation;
+ }
+
+ public string GetSubdivisionTranslatedName( SubdivisionCode code, LanguageCode languageCode )
+ {
+ if( !_code2SubdivisionTranslation.TryGetValue( code,
+ out ISubdivisionTranslation subdivisionTranslation ) )
+ {
+ return null;
+ }
+
+ return subdivisionTranslation.Translations
+ .FirstOrDefault( x => x.LanguageCode == languageCode )
+ ?.Name;
+ }
+
+ public string GetSubdivisionTranslatedOrCommonName( SubdivisionCode code, LanguageCode languageCode )
+ {
+ string translatedName = GetSubdivisionTranslatedName( code, languageCode );
+ if( translatedName != null )
+ {
+ return translatedName;
+ }
+
+ return GetProvider().GetSubdivision( code ).CommonName;
+ }
+
+ private ISubdivisionProvider GetProvider()
+ {
+ return _subdivisionProvider ??= new SubdivisionProvider();
+ }
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/BadenWuerttembergSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/BadenWuerttembergSubdivisionTranslation.cs
new file mode 100644
index 0000000..da18fdb
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/BadenWuerttembergSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class BadenWuerttembergSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Baden-Württemberg")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCitySubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCitySubdivisionTranslation.cs
new file mode 100644
index 0000000..22c12b2
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCitySubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class BaselCitySubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Basel-Stadt")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCountrySubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCountrySubdivisionTranslation.cs
new file mode 100644
index 0000000..f39c3c5
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/BaselCountrySubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class BaselCountrySubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Basel-Landschaft")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/BavariaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/BavariaSubdivisionTranslation.cs
new file mode 100644
index 0000000..30211d0
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/BavariaSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class BavariaSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Bayern")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/BernSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/BernSubdivisionTranslation.cs
new file mode 100644
index 0000000..a22809c
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/BernSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class BernSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.FR, "Berne")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/CarinthiaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/CarinthiaSubdivisionTranslation.cs
new file mode 100644
index 0000000..653aff9
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/CarinthiaSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class CarinthiaSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Kärnten")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/FribourgSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/FribourgSubdivisionTranslation.cs
new file mode 100644
index 0000000..ab26d75
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/FribourgSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class FribourgSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.FR, "Fribourg"), new TranslationInfo( LanguageCode.DE, "Freiburg")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/GenevaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/GenevaSubdivisionTranslation.cs
new file mode 100644
index 0000000..816c0b7
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/GenevaSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class GenevaSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.FR, "Genève")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/GrisonsSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/GrisonsSubdivisionTranslation.cs
new file mode 100644
index 0000000..d490be5
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/GrisonsSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class GrisonsSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Graubünden"), new TranslationInfo( LanguageCode.IT, "Grigioni"), new TranslationInfo( LanguageCode.RM, "Grischun")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerAustriaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerAustriaSubdivisionTranslation.cs
new file mode 100644
index 0000000..5cbfc8d
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerAustriaSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class LowerAustriaSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Niederösterreich")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerSaxonySubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerSaxonySubdivisionTranslation.cs
new file mode 100644
index 0000000..6486a6e
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/LowerSaxonySubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class LowerSaxonySubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Niedersachsen")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/LucerneSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/LucerneSubdivisionTranslation.cs
new file mode 100644
index 0000000..e34ce0a
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/LucerneSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class LucerneSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Luzern")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/MecklenburgWesternPomeraniaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/MecklenburgWesternPomeraniaSubdivisionTranslation.cs
new file mode 100644
index 0000000..25cf38e
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/MecklenburgWesternPomeraniaSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class MecklenburgWesternPomeraniaSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Mecklenburg-Vorpommern")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/NeuchatelSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/NeuchatelSubdivisionTranslation.cs
new file mode 100644
index 0000000..81cdeae
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/NeuchatelSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class NeuchatelSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.FR, "Neuchâtel"), new TranslationInfo( LanguageCode.DE, "Neuenburg")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/NorthRhineWestphaliaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/NorthRhineWestphaliaSubdivisionTranslation.cs
new file mode 100644
index 0000000..bf1295e
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/NorthRhineWestphaliaSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class NorthRhineWestphaliaSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Nordrhein-Westfalen")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/RhinelandPalatinateSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/RhinelandPalatinateSubdivisionTranslation.cs
new file mode 100644
index 0000000..bd22f5f
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/RhinelandPalatinateSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class RhinelandPalatinateSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Rheinland-Pfalz")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/SaintGallSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaintGallSubdivisionTranslation.cs
new file mode 100644
index 0000000..4a9c829
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaintGallSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class SaintGallSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Sankt Gallen")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/SalzburgSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/SalzburgSubdivisionTranslation.cs
new file mode 100644
index 0000000..b4495fa
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/SalzburgSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class SalzburgSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Salzburg")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonyAnhaltSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonyAnhaltSubdivisionTranslation.cs
new file mode 100644
index 0000000..e66d049
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonyAnhaltSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class SaxonyAnhaltSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Sachsen-Anhalt")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonySubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonySubdivisionTranslation.cs
new file mode 100644
index 0000000..edc876d
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/SaxonySubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class SaxonySubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Sachsen")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/SchleswigHolsteinSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/SchleswigHolsteinSubdivisionTranslation.cs
new file mode 100644
index 0000000..3603d82
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/SchleswigHolsteinSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class SchleswigHolsteinSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Schleswig-Holstein")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/StyriaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/StyriaSubdivisionTranslation.cs
new file mode 100644
index 0000000..cffd246
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/StyriaSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class StyriaSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Steiermark")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/ThuringiaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/ThuringiaSubdivisionTranslation.cs
new file mode 100644
index 0000000..a5dc309
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/ThuringiaSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class ThuringiaSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Thüringen")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/TyrolSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/TyrolSubdivisionTranslation.cs
new file mode 100644
index 0000000..efdb3f7
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/TyrolSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class TyrolSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Tirol")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/UpperAustriaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/UpperAustriaSubdivisionTranslation.cs
new file mode 100644
index 0000000..8bcc3fc
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/UpperAustriaSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class UpperAustriaSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Oberösterreich")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/ValaisSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/ValaisSubdivisionTranslation.cs
new file mode 100644
index 0000000..699df47
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/ValaisSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class ValaisSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Wallis")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/ViennaSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/ViennaSubdivisionTranslation.cs
new file mode 100644
index 0000000..ca5b33f
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/ViennaSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class ViennaSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Wien")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/VorarlbergSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/VorarlbergSubdivisionTranslation.cs
new file mode 100644
index 0000000..dcb0b1d
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/VorarlbergSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class VorarlbergSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Vorarlberg")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/SubdivisionTranslations/ZurichSubdivisionTranslation.cs b/src/Nager.Country.Subdivision/SubdivisionTranslations/ZurichSubdivisionTranslation.cs
new file mode 100644
index 0000000..5ca131e
--- /dev/null
+++ b/src/Nager.Country.Subdivision/SubdivisionTranslations/ZurichSubdivisionTranslation.cs
@@ -0,0 +1,11 @@
+using Nager.Country.Translation;
+
+namespace Nager.Country.Subdivision.SubdivisionTranslations;
+
+public class ZurichSubdivisionTranslation : ISubdivisionTranslation
+{
+ public TranslationInfo[] Translations => new[]
+ {
+ new TranslationInfo( LanguageCode.DE, "Zürich")
+ };
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Subdivision/UnknownSubdivisionException.cs b/src/Nager.Country.Subdivision/UnknownSubdivisionException.cs
new file mode 100644
index 0000000..66bfec9
--- /dev/null
+++ b/src/Nager.Country.Subdivision/UnknownSubdivisionException.cs
@@ -0,0 +1,13 @@
+namespace Nager.Country.Subdivision;
+
+public class UnknownSubdivisionException : Exception
+{
+ public UnknownSubdivisionException()
+ {
+ }
+
+ public UnknownSubdivisionException( string message ) : base( message )
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/src/Nager.Country.Translation/TranslatorProviderExtensions.cs b/src/Nager.Country.Translation/TranslatorProviderExtensions.cs
new file mode 100644
index 0000000..03f98f0
--- /dev/null
+++ b/src/Nager.Country.Translation/TranslatorProviderExtensions.cs
@@ -0,0 +1,22 @@
+namespace Nager.Country.Translation;
+
+public static class TranslatorProviderExtensions
+{
+ public static string GetCountryTranslatedOrCommonName( this ITranslationProvider provider,
+ Alpha2Code alpha2Code,
+ LanguageCode languageCode,
+ ICountryProvider countryProvider )
+ {
+ ICountryTranslation translation = provider.GetCountryTranslation( alpha2Code );
+
+ TranslationInfo countryTranslation =
+ translation.Translations.FirstOrDefault( x => x.LanguageCode == languageCode );
+
+ if( countryTranslation != null )
+ {
+ return countryTranslation.Name;
+ }
+
+ return countryProvider.GetCountry( alpha2Code ).CommonName;
+ }
+}
\ No newline at end of file
diff --git a/src/Nager.Country.sln b/src/Nager.Country.sln
index d77a48d..deea421 100644
--- a/src/Nager.Country.sln
+++ b/src/Nager.Country.sln
@@ -11,6 +11,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Nager.Country.Export", "Nag
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Nager.Country.Translation", "Nager.Country.Translation\Nager.Country.Translation.csproj", "{B72F1FD6-FDCB-4ACC-9B67-4A9CF8C02D34}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nager.Country.Subdivision", "Nager.Country.Subdivision\Nager.Country.Subdivision.csproj", "{4FEB9A36-1BEF-47E0-BDB4-F40184B1DF8F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -33,6 +35,10 @@ Global
{B72F1FD6-FDCB-4ACC-9B67-4A9CF8C02D34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B72F1FD6-FDCB-4ACC-9B67-4A9CF8C02D34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B72F1FD6-FDCB-4ACC-9B67-4A9CF8C02D34}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4FEB9A36-1BEF-47E0-BDB4-F40184B1DF8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4FEB9A36-1BEF-47E0-BDB4-F40184B1DF8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4FEB9A36-1BEF-47E0-BDB4-F40184B1DF8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4FEB9A36-1BEF-47E0-BDB4-F40184B1DF8F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/Nager.Country/AlphaCodeConversionExtensions.cs b/src/Nager.Country/AlphaCodeConversionExtensions.cs
new file mode 100644
index 0000000..e3ce5dd
--- /dev/null
+++ b/src/Nager.Country/AlphaCodeConversionExtensions.cs
@@ -0,0 +1,14 @@
+namespace Nager.Country;
+
+public static class AlphaCodeConversionExtensions
+{
+ public static Alpha3Code ToAlpha3Code( this Alpha2Code code )
+ {
+ return (Alpha3Code)code;
+ }
+
+ public static Alpha2Code ToAlpha2Code( this Alpha3Code code )
+ {
+ return (Alpha2Code)code;
+ }
+}
\ No newline at end of file
diff --git a/src/Nager.Country/CountryProviderExtensions.cs b/src/Nager.Country/CountryProviderExtensions.cs
new file mode 100644
index 0000000..e0bb3a9
--- /dev/null
+++ b/src/Nager.Country/CountryProviderExtensions.cs
@@ -0,0 +1,15 @@
+namespace Nager.Country;
+
+public static class CountryProviderExtensions
+{
+ public static IEnumerable GetCountriesByRegion( this ICountryProvider provider, Region region )
+ {
+ return provider.GetCountries().Where( x => x.Region == region );
+ }
+
+ public static IEnumerable GetCountriesBySubRegion( this ICountryProvider provider,
+ SubRegion subRegion )
+ {
+ return provider.GetCountries().Where( x => x.SubRegion == subRegion );
+ }
+}
\ No newline at end of file