/*
 * Copyright 2014 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.i18n.client.impl.cldr;

import com.google.gwt.core.client.JavaScriptObject;

// DO NOT EDIT - GENERATED FROM CLDR DATA:
//  cldrVersion=25
//  date=$Date: 2013-08-29 04:32:04 +0200 (Thu, 29 Aug 2013) $
//  number=$Revision: 9287 $
//  type=wal

/**
 * Localized names for the "wal" locale.
 */
public class LocalizedNamesImpl_wal extends LocalizedNamesImpl {

  @Override
  public String[] loadSortedRegionCodes() {
    return new String[] {
        "AC",
        "AF",
        "AG",
        "AI",
        "AO",
        "AQ",
        "AS",
        "AW",
        "AX",
        "BD",
        "BF",
        "BI",
        "BJ",
        "BL",
        "BN",
        "BQ",
        "BS",
        "BV",
        "BW",
        "CA",
        "CC",
        "CG",
        "CI",
        "CK",
        "CP",
        "CR",
        "CU",
        "CW",
        "CX",
        "DG",
        "DJ",
        "EA",
        "EU",
        "FK",
        "FO",
        "GA",
        "GD",
        "GG",
        "GH",
        "GI",
        "GL",
        "GP",
        "GS",
        "GT",
        "GU",
        "HM",
        "HN",
        "IC",
        "IM",
        "IO",
        "IR",
        "JE",
        "KE",
        "KG",
        "KI",
        "KN",
        "KY",
        "KZ",
        "LA",
        "LC",
        "LI",
        "LK",
        "LR",
        "LS",
        "LU",
        "MC",
        "ME",
        "MF",
        "MG",
        "MH",
        "ML",
        "MM",
        "MP",
        "MQ",
        "MS",
        "MV",
        "MW",
        "MZ",
        "NE",
        "NF",
        "NI",
        "NR",
        "NU",
        "OM",
        "PA",
        "PH",
        "PK",
        "PM",
        "PN",
        "PS",
        "PT",
        "PW",
        "PY",
        "QA",
        "QO",
        "RE",
        "RS",
        "RW",
        "SB",
        "SC",
        "SH",
        "SJ",
        "SL",
        "SM",
        "SR",
        "SS",
        "ST",
        "SV",
        "SX",
        "SZ",
        "TA",
        "TC",
        "TG",
        "TK",
        "TM",
        "TO",
        "TV",
        "TW",
        "UA",
        "UM",
        "UY",
        "VA",
        "VC",
        "VN",
        "VU",
        "WF",
        "WS",
        "XK",
        "YT",
        "ZW",
        "HU",
        "HT",
        "IN",
        "HK",
        "LY",
        "LB",
        "LT",
        "LV",
        "FM",
        "MY",
        "MT",
        "MU",
        "MK",
        "MO",
        "MX",
        "TL",
        "EH",
        "MD",
        "MR",
        "MA",
        "MN",
        "RU",
        "RO",
        "KR",
        "SO",
        "SD",
        "SY",
        "SG",
        "SA",
        "CY",
        "SN",
        "SK",
        "SI",
        "CH",
        "SE",
        "ES",
        "BT",
        "BG",
        "GW",
        "BH",
        "BB",
        "BZ",
        "BY",
        "BE",
        "BM",
        "BR",
        "BO",
        "BA",
        "VE",
        "TR",
        "TN",
        "TZ",
        "TH",
        "TJ",
        "TT",
        "CL",
        "CN",
        "TD",
        "CZ",
        "NC",
        "NZ",
        "NA",
        "NG",
        "NL",
        "AN",
        "NP",
        "NO",
        "AL",
        "DZ",
        "US",
        "AM",
        "AR",
        "AD",
        "AU",
        "AZ",
        "IE",
        "IS",
        "IQ",
        "ET",
        "ID",
        "GQ",
        "EC",
        "ER",
        "EE",
        "IL",
        "GB",
        "AT",
        "CM",
        "KH",
        "CV",
        "HR",
        "KW",
        "CO",
        "KM",
        "CD",
        "ZM",
        "YE",
        "CF",
        "AE",
        "VI",
        "VG",
        "TF",
        "GF",
        "PF",
        "UZ",
        "UG",
        "ZA",
        "KP",
        "DK",
        "DM",
        "DO",
        "DE",
        "JM",
        "JP",
        "JO",
        "GE",
        "GY",
        "GN",
        "GM",
        "GR",
        "EG",
        "IT",
        "FR",
        "FI",
        "FJ",
        "PG",
        "PE",
        "PL",
        "PR",
    };
  }

  @Override
  protected void loadNameMapJava() {
    super.loadNameMapJava();
    namesMap.put("AD", "አንዶራ");
    namesMap.put("AE", "የተባበሩት አረብ ኤምሬትስ");
    namesMap.put("AL", "አልባኒያ");
    namesMap.put("AM", "አርሜኒያ");
    namesMap.put("AN", "ኔዘርላንድስ አንቲልስ");
    namesMap.put("AR", "አርጀንቲና");
    namesMap.put("AT", "ኦስትሪያ");
    namesMap.put("AU", "አውስትሬሊያ");
    namesMap.put("AZ", "አዘርባጃን");
    namesMap.put("BA", "ቦስኒያ እና ሄርዞጎቪኒያ");
    namesMap.put("BB", "ባርቤዶስ");
    namesMap.put("BE", "ቤልጄም");
    namesMap.put("BG", "ቡልጌሪያ");
    namesMap.put("BH", "ባህሬን");
    namesMap.put("BM", "ቤርሙዳ");
    namesMap.put("BO", "ቦሊቪያ");
    namesMap.put("BR", "ብራዚል");
    namesMap.put("BT", "ቡህታን");
    namesMap.put("BY", "ቤላሩስ");
    namesMap.put("BZ", "ቤሊዘ");
    namesMap.put("CD", "ኮንጎ");
    namesMap.put("CF", "የመካከለኛው አፍሪካ ሪፐብሊክ");
    namesMap.put("CH", "ስዊዘርላንድ");
    namesMap.put("CL", "ቺሊ");
    namesMap.put("CM", "ካሜሩን");
    namesMap.put("CN", "ቻይና");
    namesMap.put("CO", "ኮሎምቢያ");
    namesMap.put("CV", "ኬፕ ቬርዴ");
    namesMap.put("CY", "ሳይፕረስ");
    namesMap.put("CZ", "ቼክ ሪፑብሊክ");
    namesMap.put("DE", "ጀርመን");
    namesMap.put("DK", "ዴንማርክ");
    namesMap.put("DM", "ዶሚኒካ");
    namesMap.put("DO", "ዶሚኒክ ሪፑብሊክ");
    namesMap.put("DZ", "አልጄሪያ");
    namesMap.put("EC", "ኢኳዶር");
    namesMap.put("EE", "ኤስቶኒያ");
    namesMap.put("EG", "ግብጽ");
    namesMap.put("EH", "ምዕራባዊ ሳህራ");
    namesMap.put("ER", "ኤርትራ");
    namesMap.put("ES", "ስፔን");
    namesMap.put("ET", "ኢትዮጵያ");
    namesMap.put("FI", "ፊንላንድ");
    namesMap.put("FJ", "ፊጂ");
    namesMap.put("FM", "ሚክሮኔዢያ");
    namesMap.put("FR", "ፈረንሳይ");
    namesMap.put("GB", "እንግሊዝ");
    namesMap.put("GE", "ጆርጂያ");
    namesMap.put("GF", "የፈረንሳይ ጉዊአና");
    namesMap.put("GM", "ጋምቢያ");
    namesMap.put("GN", "ጊኒ");
    namesMap.put("GQ", "ኢኳቶሪያል ጊኒ");
    namesMap.put("GR", "ግሪክ");
    namesMap.put("GW", "ቢሳዎ");
    namesMap.put("GY", "ጉያና");
    namesMap.put("HK", "ሆንግ ኮንግ");
    namesMap.put("HR", "ክሮኤሽያ");
    namesMap.put("HT", "ሀይቲ");
    namesMap.put("HU", "ሀንጋሪ");
    namesMap.put("ID", "ኢንዶኔዢያ");
    namesMap.put("IE", "አየርላንድ");
    namesMap.put("IL", "እስራኤል");
    namesMap.put("IN", "ህንድ");
    namesMap.put("IQ", "ኢራቅ");
    namesMap.put("IS", "አይስላንድ");
    namesMap.put("IT", "ጣሊያን");
    namesMap.put("JM", "ጃማይካ");
    namesMap.put("JO", "ጆርዳን");
    namesMap.put("JP", "ጃፓን");
    namesMap.put("KH", "ካምቦዲያ");
    namesMap.put("KM", "ኮሞሮስ");
    namesMap.put("KP", "ደቡብ ኮሪያ");
    namesMap.put("KR", "ሰሜን ኮሪያ");
    namesMap.put("KW", "ክዌት");
    namesMap.put("LB", "ሊባኖስ");
    namesMap.put("LT", "ሊቱዌኒያ");
    namesMap.put("LV", "ላትቪያ");
    namesMap.put("LY", "ሊቢያ");
    namesMap.put("MA", "ሞሮኮ");
    namesMap.put("MD", "ሞልዶቫ");
    namesMap.put("MK", "ማከዶኒያ");
    namesMap.put("MN", "ሞንጎሊያ");
    namesMap.put("MO", "ማካዎ");
    namesMap.put("MR", "ሞሪቴኒያ");
    namesMap.put("MT", "ማልታ");
    namesMap.put("MU", "ማሩሸስ");
    namesMap.put("MX", "ሜክሲኮ");
    namesMap.put("MY", "ማሌዢያ");
    namesMap.put("NA", "ናሚቢያ");
    namesMap.put("NC", "ኒው ካሌዶኒያ");
    namesMap.put("NG", "ናይጄሪያ");
    namesMap.put("NL", "ኔዘርላንድ");
    namesMap.put("NO", "ኖርዌ");
    namesMap.put("NP", "ኔፓል");
    namesMap.put("NZ", "ኒው ዚላንድ");
    namesMap.put("PE", "ፔሩ");
    namesMap.put("PF", "የፈረንሳይ ፖሊኔዢያ");
    namesMap.put("PG", "ፓፑዋ ኒው ጊኒ");
    namesMap.put("PL", "ፖላንድ");
    namesMap.put("PR", "ፖርታ ሪኮ");
    namesMap.put("RO", "ሮሜኒያ");
    namesMap.put("RU", "ራሺያ");
    namesMap.put("SA", "ሳውድአረቢያ");
    namesMap.put("SD", "ሱዳን");
    namesMap.put("SE", "ስዊድን");
    namesMap.put("SG", "ሲንጋፖር");
    namesMap.put("SI", "ስሎቬኒያ");
    namesMap.put("SK", "ስሎቫኪያ");
    namesMap.put("SN", "ሴኔጋል");
    namesMap.put("SO", "ሱማሌ");
    namesMap.put("SY", "ሲሪያ");
    namesMap.put("TD", "ቻድ");
    namesMap.put("TF", "የፈረንሳይ ደቡባዊ ግዛቶች");
    namesMap.put("TH", "ታይላንድ");
    namesMap.put("TJ", "ታጃኪስታን");
    namesMap.put("TL", "ምስራቅ ቲሞር");
    namesMap.put("TN", "ቱኒዚያ");
    namesMap.put("TR", "ቱርክ");
    namesMap.put("TT", "ትሪኒዳድ እና ቶባጎ");
    namesMap.put("TZ", "ታንዛኒያ");
    namesMap.put("UG", "ዩጋንዳ");
    namesMap.put("US", "አሜሪካ");
    namesMap.put("UZ", "ዩዝበኪስታን");
    namesMap.put("VE", "ቬንዙዌላ");
    namesMap.put("VG", "የእንግሊዝ ድንግል ደሴቶች");
    namesMap.put("VI", "የአሜሪካ ቨርጂን ደሴቶች");
    namesMap.put("YE", "የመን");
    namesMap.put("ZA", "ደቡብ አፍሪካ");
    namesMap.put("ZM", "ዛምቢያ");
  }

  @Override
  protected JavaScriptObject loadNameMapNative() {
    return overrideMap(super.loadNameMapNative(), loadMyNameMap());
  }

  private native JavaScriptObject loadMyNameMap() /*-{
    return {
        "AD": "አንዶራ",
        "AE": "የተባበሩት አረብ ኤምሬትስ",
        "AL": "አልባኒያ",
        "AM": "አርሜኒያ",
        "AN": "ኔዘርላንድስ አንቲልስ",
        "AR": "አርጀንቲና",
        "AT": "ኦስትሪያ",
        "AU": "አውስትሬሊያ",
        "AZ": "አዘርባጃን",
        "BA": "ቦስኒያ እና ሄርዞጎቪኒያ",
        "BB": "ባርቤዶስ",
        "BE": "ቤልጄም",
        "BG": "ቡልጌሪያ",
        "BH": "ባህሬን",
        "BM": "ቤርሙዳ",
        "BO": "ቦሊቪያ",
        "BR": "ብራዚል",
        "BT": "ቡህታን",
        "BY": "ቤላሩስ",
        "BZ": "ቤሊዘ",
        "CD": "ኮንጎ",
        "CF": "የመካከለኛው አፍሪካ ሪፐብሊክ",
        "CH": "ስዊዘርላንድ",
        "CL": "ቺሊ",
        "CM": "ካሜሩን",
        "CN": "ቻይና",
        "CO": "ኮሎምቢያ",
        "CV": "ኬፕ ቬርዴ",
        "CY": "ሳይፕረስ",
        "CZ": "ቼክ ሪፑብሊክ",
        "DE": "ጀርመን",
        "DK": "ዴንማርክ",
        "DM": "ዶሚኒካ",
        "DO": "ዶሚኒክ ሪፑብሊክ",
        "DZ": "አልጄሪያ",
        "EC": "ኢኳዶር",
        "EE": "ኤስቶኒያ",
        "EG": "ግብጽ",
        "EH": "ምዕራባዊ ሳህራ",
        "ER": "ኤርትራ",
        "ES": "ስፔን",
        "ET": "ኢትዮጵያ",
        "FI": "ፊንላንድ",
        "FJ": "ፊጂ",
        "FM": "ሚክሮኔዢያ",
        "FR": "ፈረንሳይ",
        "GB": "እንግሊዝ",
        "GE": "ጆርጂያ",
        "GF": "የፈረንሳይ ጉዊአና",
        "GM": "ጋምቢያ",
        "GN": "ጊኒ",
        "GQ": "ኢኳቶሪያል ጊኒ",
        "GR": "ግሪክ",
        "GW": "ቢሳዎ",
        "GY": "ጉያና",
        "HK": "ሆንግ ኮንግ",
        "HR": "ክሮኤሽያ",
        "HT": "ሀይቲ",
        "HU": "ሀንጋሪ",
        "ID": "ኢንዶኔዢያ",
        "IE": "አየርላንድ",
        "IL": "እስራኤል",
        "IN": "ህንድ",
        "IQ": "ኢራቅ",
        "IS": "አይስላንድ",
        "IT": "ጣሊያን",
        "JM": "ጃማይካ",
        "JO": "ጆርዳን",
        "JP": "ጃፓን",
        "KH": "ካምቦዲያ",
        "KM": "ኮሞሮስ",
        "KP": "ደቡብ ኮሪያ",
        "KR": "ሰሜን ኮሪያ",
        "KW": "ክዌት",
        "LB": "ሊባኖስ",
        "LT": "ሊቱዌኒያ",
        "LV": "ላትቪያ",
        "LY": "ሊቢያ",
        "MA": "ሞሮኮ",
        "MD": "ሞልዶቫ",
        "MK": "ማከዶኒያ",
        "MN": "ሞንጎሊያ",
        "MO": "ማካዎ",
        "MR": "ሞሪቴኒያ",
        "MT": "ማልታ",
        "MU": "ማሩሸስ",
        "MX": "ሜክሲኮ",
        "MY": "ማሌዢያ",
        "NA": "ናሚቢያ",
        "NC": "ኒው ካሌዶኒያ",
        "NG": "ናይጄሪያ",
        "NL": "ኔዘርላንድ",
        "NO": "ኖርዌ",
        "NP": "ኔፓል",
        "NZ": "ኒው ዚላንድ",
        "PE": "ፔሩ",
        "PF": "የፈረንሳይ ፖሊኔዢያ",
        "PG": "ፓፑዋ ኒው ጊኒ",
        "PL": "ፖላንድ",
        "PR": "ፖርታ ሪኮ",
        "RO": "ሮሜኒያ",
        "RU": "ራሺያ",
        "SA": "ሳውድአረቢያ",
        "SD": "ሱዳን",
        "SE": "ስዊድን",
        "SG": "ሲንጋፖር",
        "SI": "ስሎቬኒያ",
        "SK": "ስሎቫኪያ",
        "SN": "ሴኔጋል",
        "SO": "ሱማሌ",
        "SY": "ሲሪያ",
        "TD": "ቻድ",
        "TF": "የፈረንሳይ ደቡባዊ ግዛቶች",
        "TH": "ታይላንድ",
        "TJ": "ታጃኪስታን",
        "TL": "ምስራቅ ቲሞር",
        "TN": "ቱኒዚያ",
        "TR": "ቱርክ",
        "TT": "ትሪኒዳድ እና ቶባጎ",
        "TZ": "ታንዛኒያ",
        "UG": "ዩጋንዳ",
        "US": "አሜሪካ",
        "UZ": "ዩዝበኪስታን",
        "VE": "ቬንዙዌላ",
        "VG": "የእንግሊዝ ድንግል ደሴቶች",
        "VI": "የአሜሪካ ቨርጂን ደሴቶች",
        "YE": "የመን",
        "ZA": "ደቡብ አፍሪካ",
        "ZM": "ዛምቢያ"
    };
  }-*/;
}
