export const CONTINENTS = ['Europe', 'Asia', 'Africa', 'N. America', 'S. America', 'Oceania'];

const map = {
  '004': 'Asia',        // Afghanistan
  '008': 'Europe',      // Albania
  '012': 'Africa',      // Algeria
  '020': 'Europe',      // Andorra
  '024': 'Africa',      // Angola
  '028': 'N. America',  // Antigua and Barb.
  '031': 'Asia',        // Azerbaijan
  '032': 'S. America',  // Argentina
  '036': 'Oceania',     // Australia
  '040': 'Europe',      // Austria
  '044': 'N. America',  // Bahamas
  '048': 'Asia',        // Bahrain
  '050': 'Asia',        // Bangladesh
  '051': 'Asia',        // Armenia
  '052': 'N. America',  // Barbados
  '056': 'Europe',      // Belgium
  '064': 'Asia',        // Bhutan
  '068': 'S. America',  // Bolivia
  '070': 'Europe',      // Bosnia and Herz.
  '072': 'Africa',      // Botswana
  '076': 'S. America',  // Brazil
  '084': 'N. America',  // Belize
  '090': 'Oceania',     // Solomon Is.
  '096': 'Asia',        // Brunei
  '100': 'Europe',      // Bulgaria
  '104': 'Asia',        // Myanmar
  '108': 'Africa',      // Burundi
  '112': 'Europe',      // Belarus
  '116': 'Asia',        // Cambodia
  '120': 'Africa',      // Cameroon
  '124': 'N. America',  // Canada
  '132': 'Africa',      // Cabo Verde
  '140': 'Africa',      // Central African Rep.
  '144': 'Asia',        // Sri Lanka
  '148': 'Africa',      // Chad
  '152': 'S. America',  // Chile
  '156': 'Asia',        // China
  '158': 'Asia',        // Taiwan
  '170': 'S. America',  // Colombia
  '174': 'Africa',      // Comoros
  '178': 'Africa',      // Congo
  '180': 'Africa',      // Dem. Rep. Congo
  '188': 'N. America',  // Costa Rica
  '191': 'Europe',      // Croatia
  '192': 'N. America',  // Cuba
  '196': 'Asia',        // Cyprus
  '203': 'Europe',      // Czechia
  '204': 'Africa',      // Benin
  '208': 'Europe',      // Denmark
  '212': 'N. America',  // Dominica
  '214': 'N. America',  // Dominican Rep.
  '218': 'S. America',  // Ecuador
  '222': 'N. America',  // El Salvador
  '226': 'Africa',      // Eq. Guinea
  '231': 'Africa',      // Ethiopia
  '232': 'Africa',      // Eritrea
  '233': 'Europe',      // Estonia
  '242': 'Oceania',     // Fiji
  '246': 'Europe',      // Finland
  '250': 'Europe',      // France
  '262': 'Africa',      // Djibouti
  '266': 'Africa',      // Gabon
  '268': 'Asia',        // Georgia
  '270': 'Africa',      // Gambia
  '275': 'Asia',        // Palestine
  '276': 'Europe',      // Germany
  '288': 'Africa',      // Ghana
  '296': 'Oceania',     // Kiribati
  '300': 'Europe',      // Greece
  '308': 'N. America',  // Grenada
  '320': 'N. America',  // Guatemala
  '324': 'Africa',      // Guinea
  '328': 'S. America',  // Guyana
  '332': 'N. America',  // Haiti
  '336': 'Europe',      // Vatican
  '340': 'N. America',  // Honduras
  '344': 'Asia',        // Hong Kong
  '348': 'Europe',      // Hungary
  '352': 'Europe',      // Iceland
  '356': 'Asia',        // India
  '360': 'Asia',        // Indonesia
  '364': 'Asia',        // Iran
  '368': 'Asia',        // Iraq
  '372': 'Europe',      // Ireland
  '376': 'Asia',        // Israel
  '380': 'Europe',      // Italy
  '384': 'Africa',      // Cote d'Ivoire
  '388': 'N. America',  // Jamaica
  '392': 'Asia',        // Japan
  '398': 'Asia',        // Kazakhstan
  '400': 'Asia',        // Jordan
  '404': 'Africa',      // Kenya
  '408': 'Asia',        // North Korea
  '410': 'Asia',        // South Korea
  '414': 'Asia',        // Kuwait
  '417': 'Asia',        // Kyrgyzstan
  '418': 'Asia',        // Laos
  '422': 'Asia',        // Lebanon
  '426': 'Africa',      // Lesotho
  '428': 'Europe',      // Latvia
  '430': 'Africa',      // Liberia
  '434': 'Africa',      // Libya
  '438': 'Europe',      // Liechtenstein
  '440': 'Europe',      // Lithuania
  '442': 'Europe',      // Luxembourg
  '450': 'Africa',      // Madagascar
  '454': 'Africa',      // Malawi
  '458': 'Asia',        // Malaysia
  '462': 'Asia',        // Maldives
  '466': 'Africa',      // Mali
  '470': 'Europe',      // Malta
  '478': 'Africa',      // Mauritania
  '480': 'Africa',      // Mauritius
  '484': 'N. America',  // Mexico
  '492': 'Europe',      // Monaco
  '496': 'Asia',        // Mongolia
  '498': 'Europe',      // Moldova
  '499': 'Europe',      // Montenegro
  '504': 'Africa',      // Morocco
  '508': 'Africa',      // Mozambique
  '512': 'Asia',        // Oman
  '516': 'Africa',      // Namibia
  '520': 'Oceania',     // Nauru
  '524': 'Asia',        // Nepal
  '528': 'Europe',      // Netherlands
  '548': 'Oceania',     // Vanuatu
  '554': 'Oceania',     // New Zealand
  '558': 'N. America',  // Nicaragua
  '562': 'Africa',      // Niger
  '566': 'Africa',      // Nigeria
  '578': 'Europe',      // Norway
  '583': 'Oceania',     // Micronesia
  '584': 'Oceania',     // Marshall Is.
  '585': 'Oceania',     // Palau
  '586': 'Asia',        // Pakistan
  '591': 'N. America',  // Panama
  '598': 'Oceania',     // Papua New Guinea
  '600': 'S. America',  // Paraguay
  '604': 'S. America',  // Peru
  '608': 'Asia',        // Philippines
  '616': 'Europe',      // Poland
  '620': 'Europe',      // Portugal
  '624': 'Africa',      // Guinea-Bissau
  '626': 'Asia',        // Timor-Leste
  '634': 'Asia',        // Qatar
  '642': 'Europe',      // Romania
  '643': 'Europe',      // Russia
  '646': 'Africa',      // Rwanda
  '659': 'N. America',  // St. Kitts and Nevis
  '662': 'N. America',  // Saint Lucia
  '670': 'N. America',  // St. Vin. and Gren.
  '674': 'Europe',      // San Marino
  '678': 'Africa',      // Sao Tome and Principe
  '682': 'Asia',        // Saudi Arabia
  '686': 'Africa',      // Senegal
  '688': 'Europe',      // Serbia
  '690': 'Africa',      // Seychelles
  '694': 'Africa',      // Sierra Leone
  '702': 'Asia',        // Singapore
  '703': 'Europe',      // Slovakia
  '704': 'Asia',        // Vietnam
  '705': 'Europe',      // Slovenia
  '706': 'Africa',      // Somalia
  '710': 'Africa',      // South Africa
  '716': 'Africa',      // Zimbabwe
  '724': 'Europe',      // Spain
  '728': 'Africa',      // S. Sudan
  '729': 'Africa',      // Sudan
  '732': 'Africa',      // W. Sahara
  '740': 'S. America',  // Suriname
  '748': 'Africa',      // eSwatini
  '752': 'Europe',      // Sweden
  '756': 'Europe',      // Switzerland
  '760': 'Asia',        // Syria
  '762': 'Asia',        // Tajikistan
  '764': 'Asia',        // Thailand
  '768': 'Africa',      // Togo
  '776': 'Oceania',     // Tonga
  '780': 'N. America',  // Trinidad and Tobago
  '784': 'Asia',        // United Arab Emirates
  '788': 'Africa',      // Tunisia
  '792': 'Asia',        // Turkey
  '795': 'Asia',        // Turkmenistan
  '800': 'Africa',      // Uganda
  '804': 'Europe',      // Ukraine
  '807': 'Europe',      // Macedonia
  '818': 'Africa',      // Egypt
  '826': 'Europe',      // United Kingdom
  '834': 'Africa',      // Tanzania
  '840': 'N. America',  // United States of America
  '854': 'Africa',      // Burkina Faso
  '858': 'S. America',  // Uruguay
  '860': 'Asia',        // Uzbekistan
  '862': 'S. America',  // Venezuela
  '882': 'Oceania',     // Samoa
  '887': 'Asia',        // Yemen
  '894': 'Africa',      // Zambia
  'XK': 'Europe',       // Kosovo
};

export const continentTotals = CONTINENTS.reduce((acc, c) => (acc[c] = 0, acc), {});
for (const id of Object.keys(map)) {
  const cont = map[id];
  if (cont) continentTotals[cont]++;
}

export function getContinent(id) {
  return map[id] ?? null;
}

