// ***************************************************************************
// *
// *   Copyright (C) 1997-2006, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
CurrencyData:table(nofallback){
    // Currency metadata.  Unlike the "Currencies" element, this is
    // NOT true locale data.  It exists only in root.  The two
    // integers are the fraction digits for each currency, and the
    // rounding increment.  The fraction digits must be an integer
    // from 0..9.  If there is no rounding, the rounding increment is
    // zero.  Otherwise the rounding increment is given in units of
    // 10^(-fraction_digits).  The special tag "DEFAULT" gives the
    // meta data for all currencies not otherwise listed.
    // Last update: Tue Apr  8 16:57:42 2003
    CurrencyMeta {
        ADP:intvector { 0, 0 } // Andorran Peseta: ANDORRA (AD)
        BHD:intvector { 3, 0 } // Bahraini Dinar: BAHRAIN (BH)
        BIF:intvector { 0, 0 } // Burundi Franc: BURUNDI (BI)
        BYR:intvector { 0, 0 } // Belarussian Ruble: BELARUS (BY)
        CHF:intvector { 2, 5 } // Swiss Franc: LIECHTENSTEIN (LI), SWITZERLAND (CH)
        CLF:intvector { 0, 0 } // Unidades de fomento: CHILE (CL)
        CLP:intvector { 0, 0 } // Chilean Peso: CHILE (CL)
        DJF:intvector { 0, 0 } // Djibouti Franc: DJIBOUTI (DJ)
        ESP:intvector { 0, 0 } // Spanish Pesenta: Spain (ES)
        GNF:intvector { 0, 0 } // Guinea Franc: GUINEA (GN)
        IQD:intvector { 3, 0 } // Iraqi Dinar: IRAQ (IQ)
        ITL:intvector { 0, 0 } // Italian Lira: ITALY (IT)
        JOD:intvector { 3, 0 } // Jordanian Dinar: JORDAN (JO)
        JPY:intvector { 0, 0 } // Yen: JAPAN (JP)
        KMF:intvector { 0, 0 } // Comoro Franc: COMOROS (KM)
        KRW:intvector { 0, 0 } // Won: KOREA, REPUBLIC OF (KR)
        KWD:intvector { 3, 0 } // Kuwaiti Dinar: KUWAIT (KW)
        LUF:intvector { 0, 0 } // LUXEMBOURG Franc: LUXEMBOURG (LU)
        LYD:intvector { 3, 0 } // Lybian Dinar: LIBYAN ARAB JAMAHIRIYA (LY)
        MGA:intvector { 0, 0 } // Malagascy Ariary: MADAGASCAR (MG)
        MGF:intvector { 0, 0 } // Malagasy Franc: MADAGASCAR (MG)
        OMR:intvector { 3, 0 } // Rial Omani: OMAN (OM)
        PYG:intvector { 0, 0 } // Guarani: PARAGUAY (PY)
        RWF:intvector { 0, 0 } // Rwanda Franc: RWANDA (RW)
        TND:intvector { 3, 0 } // Tunisian Dinar: TUNISIA (TN)
        TRL:intvector { 0, 0 } // Turkish Lira: TURKEY (TR)
        VUV:intvector { 0, 0 } // Vatu: VANUATU (VU)
        XAF:intvector { 0, 0 } // CFA Franc BEAC: CAMEROON (CM), CENTRAL AFRICAN REPUBLIC (CF), CHAD (TD), CONGO (CG), EQUATORIAL GUINEA (GQ), GABON (GA)
        XOF:intvector { 0, 0 } // CFA Franc BCEAO: BENIN (BJ), BURKINA FASO (BF), COTE D'IVOIRE (CI), GUINEA-BISSAU (GW), MALI (ML), NIGER (NE), SENEGAL (SN), TOGO (TG)
        XPF:intvector { 0, 0 } // CFP Franc: FRENCH POLYNESIA (PF), NEW CALEDONIA (NC), WALLIS AND FUTUNA (WF)
        DEFAULT:intvector { 2, 0 } // (All currencies not listed)
    }
    // Map from ISO 3166 country codes to ISO 4217 currency codes
    // NOTE: This is not true locale data; it exists only in ROOT
    // Last update: Tue Apr  8 16:57:42 2003
    CurrencyMap {
        _EURO { "EUR" } // : Euro
        AD { "EUR" } // ANDORRA: UAE Euro
        AE { "AED" } // UNITED ARAB EMIRATES: UAE Dirham
        AF { "AFN" } // AFGHANISTAN: Afghani
        AG { "XCD" } // ANTIGUA AND BARBUDA: East Caribbean Dollar
        AI { "XCD" } // ANGUILLA: East Caribbean Dollar
        AL { "ALL" } // ALBANIA: Leck
        AM { "AMD" } // ARMENIA: Armenian Dram
        AN { "ANG" } // NETHERLANDS ANTILLES: Netherlands Antillan Guilder
        AO { "AOA" } // ANGOLA: Kwanza
        AR { "ARS" } // ARGENTINA: Argentine Peso
        AS { "USD" } // AMERICAN SAMOA: US Dollar
        AT { "EUR" } // AUSTRIA: Euro
        AT_PREEURO { "ATS" }
        AU { "AUD" } // AUSTRALIA: Australian Dollar
        AW { "AWG" } // ARUBA: Aruban Guilder
        AX { "EUR" } // Aland Islands: Euro
        AZ { "AZN" } // AZERBAIJAN: Azerbaijanian Manat
        BA { "BAM" } // BOSNIA AND HERZEGOVINA: Convertible Marks
        BB { "BBD" } // BARBADOS: Barbados Dollar
        BD { "BDT" } // BANGLADESH: Taka
        BE { "EUR" } // BELGIUM: Euro
        BE_PREEURO { "BEF" }
        BF { "XOF" } // BURKINA FASO: CFA Franc BCEAO
        BG { "BGN" } // BULGARIA: Bulgarian Lev
        BH { "BHD" } // BAHRAIN: Bahraini Dinar
        BI { "BIF" } // BURUNDI: Burundi Franc
        BJ { "XOF" } // BENIN: CFA Franc BCEAO
        BM { "BMD" } // BERMUDA: Bermudian Dollar
        BN { "BND" } // BRUNEI DARUSSALAM: Brunei Dollar
        BO { "BOB" } // BOLIVIA: Boliviano
        BR { "BRL" } // BRAZIL: Brazilian Real
        BS { "BSD" } // BAHAMAS: Bahamian Dollar
        BV { "NOK" } // BOUVET ISLAND: Norwegian Krone
        BW { "BWP" } // BOTSWANA: Pula
        BY { "BYR" } // BELARUS: Belarussian Ruble
        BZ { "BZD" } // BELIZE: Belize Dollar
        CA { "CAD" } // CANADA: Canadian Dollar
        CC { "AUD" } // COCOS (KEELING) ISLANDS: Australian Dollar
        CD { "CDF" } // CONGO, THE DEMOCRATIC REPUBLIC OF THE: Franc Congolais
        CF { "XAF" } // CENTRAL AFRICAN REPUBLIC: CFA Franc BEAC
        CG { "XAF" } // CONGO: CFA Franc BEAC
        CH { "CHF" } // SWITZERLAND: Swiss Franc
        CI { "XOF" } // COTE D'IVOIRE: CFA Franc BCEAO
        CK { "NZD" } // COOK ISLANDS: New Zealand Dollar
        CL { "CLP" } // CHILE: Chilean Peso
        CM { "XAF" } // CAMEROON: CFA Franc BEAC
        CN { "CNY" } // CHINA: Yuan Renminbi
        CO { "COP" } // COLOMBIA: Colombian Peso
        CR { "CRC" } // COSTA RICA: Costa Rican Colon
        CS { "EUR" } // MONTENEGRO: Euro
        CS_PREEURO { "CSD" } // SERBIA: Serbian Dinar
        CU { "CUP" } // CUBA: Cuban Peso
        CV { "CVE" } // CAPE VERDE: Cape Verde Escudo
        CX { "AUD" } // CHRISTMAS ISLAND: Australian Dollar
        CY { "CYP" } // CYPRUS: Cyprus Pound
        CZ { "CZK" } // CZECH REPUBLIC: Czech Koruna
        DE { "EUR" } // GERMANY: Euro
        DE_PREEURO { "DEM" }
        DJ { "DJF" } // DJIBOUTI: Djibouti Franc
        DK { "DKK" } // DENMARK: Danish Krone
        DM { "XCD" } // DOMINICA: East Caribbean Dollar
        DO { "DOP" } // DOMINICAN REPUBLIC: Dominican Peso
        DZ { "DZD" } // ALGERIA: Algerian Dinar
        EC { "USD" } // ECUADOR: US Dollar
        EE { "EEK" } // ESTONIA: Kroon
        EG { "EGP" } // EGYPT: Egyptian Pound
        EH { "MAD" } // WESTERN SAHARA: Moroccan Dirham
        ER { "ERN" } // ERITREA: Nakfa
        ES { "EUR" } // SPAIN: Euro
        ES_PREEURO { "ESP" }
        ET { "ETB" } // ETHIOPIA: Ethiopian Birr
        FI { "EUR" } // FINLAND: Euro
        FI_PREEURO { "FIM" }
        FJ { "FJD" } // FIJI: Fiji Dollar
        FK { "FKP" } // FALKLAND ISLANDS (MALVINAS): Falkland Islands Pound
        FM { "USD" } // MICRONESIA, FEDERATED STATES OF: US Dollar
        FO { "DKK" } // FAROE ISLANDS: Danish Krone
        FR { "EUR" } // FRANCE: Euro
        FR_PREEURO { "FRF" }
        GA { "XAF" } // GABON: CFA Franc BEAC
        GB { "GBP" } // UNITED KINGDOM: Pound Sterling
        GD { "XCD" } // GRENADA: East Caribbean Dollar
        GE { "GEL" } // GEORGIA: Lari
        GF { "EUR" } // FRENCH GUIANA: Euro
        GG { "GBP" } // GUERNSEY: Pound Sterling
        GH { "GHC" } // GHANA: Cedi
        GI { "GIP" } // GIBRALTAR: Gibraltar Pound
        GL { "DKK" } // GREENLAND: Danish Krone
        GM { "GMD" } // GAMBIA: Dalasi
        GN { "GNF" } // GUINEA: Guinea Franc
        GP { "EUR" } // GUADELOUPE: Euro
        GQ { "XAF" } // EQUATORIAL GUINEA: CFA Franc BEAC
        GR { "EUR" } // GREECE: Euro
        GR_PREEURO { "GRD" }
        GS { "GBP" } // SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS: British Pound
        GT { "GTQ" } // GUATEMALA: Quetzal
        GU { "USD" } // GUAM: US Dollar
        GW { "GWP" } // GUINEA-BISSAU: Guinea-Bissau Peso
        GY { "GYD" } // GUYANA: Guyana Dollar
        HK { "HKD" } // HONG KONG: Hong Kong Dollar
        HM { "AUD" } // HEARD ISLAND AND MCDONALD ISLANDS: Australian Dollar
        HN { "HNL" } // HONDURAS: Lempira
        HR { "HRK" } // CROATIA: Croatian kuna
        HT { "HTG" } // HAITI: Gourde
        HU { "HUF" } // HUNGARY: Forint
        ID { "IDR" } // INDONESIA: Rupiah
        IE { "EUR" } // IRELAND: Euro
        IE_PREEURO { "IEP" }
        IL { "ILS" } // ISRAEL: New Israeli Sheqel
        IM { "GBP" } // ISLE OF MAN: Pound Sterling
        IN { "INR" } // INDIA: Indian Rupee
        IO { "USD" } // BRITISH INDIAN OCEAN TERRITORY: US Dollar
        IQ { "IQD" } // IRAQ: Iraqi Dinar
        IR { "IRR" } // IRAN, ISLAMIC REPUBLIC OF: Iranian Rial
        IS { "ISK" } // ICELAND: Iceland Krona
        IT { "EUR" } // ITALY: Euro
        IT_PREEURO { "ITL" }
        JE { "GBP" } // JERSEY: Pound Sterling
        JM { "JMD" } // JAMAICA: Jamaican Dollar
        JO { "JOD" } // JORDAN: Jordanian Dinar
        JP { "JPY" } // JAPAN: Yen
        KE { "KES" } // KENYA: Kenyan Shilling
        KG { "KGS" } // KYRGYZSTAN: Som
        KH { "KHR" } // CAMBODIA: Riel
        KI { "AUD" } // KIRIBATI: Australian Dollar
        KM { "KMF" } // COMOROS: Comoro Franc
        KN { "XCD" } // SAINT KITTS AND NEVIS: East Caribbean Dollar
        KP { "KPW" } // KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF: North Korean Won
        KR { "KRW" } // KOREA, REPUBLIC OF: Won
        KW { "KWD" } // KUWAIT: Kuwaiti Dinar
        KY { "KYD" } // CAYMAN ISLANDS: Cayman Islands Dollar
        KZ { "KZT" } // KAZAKHSTAN: Tenge
        LA { "LAK" } // LAO PEOPLE'S DEMOCRATIC REPUBLIC: Kip
        LB { "LBP" } // LEBANON: Lebanese Pound
        LC { "XCD" } // SAINT LUCIA: East Caribbean Dollar
        LI { "CHF" } // LIECHTENSTEIN: Swiss Franc
        LK { "LKR" } // SRI LANKA: Sri Lanka Rupee
        LR { "LRD" } // LIBERIA: Liberian Dollar
        LS { "ZAR" } // LESOTHO: Rand
        LT { "LTL" } // LITHUANIA: Lithuanian Litas
        LU { "EUR" } // LUXEMBOURG: Euro
        LU_PREEURO { "LUF" }
        LV { "LVL" } // LATVIA: Latvian Lats
        LY { "LYD" } // LIBYAN ARAB JAMAHIRIYA: Lybian Dinar
        MA { "MAD" } // MOROCCO: Moroccan Dirham
        MC { "EUR" } // MONACO: Euro
        MD { "MDL" } // MOLDOVA, REPUBLIC OF: Moldovan Leu
        MG { "MGA" } // MADAGASCAR: Malagasy Ariary
        MH { "USD" } // MARSHALL ISLANDS: US Dollar
        MK { "MKD" } // MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF: Denar
        ML { "XOF" } // MALI: CFA Franc BCEAO
        MM { "MMK" } // MYANMAR: Kyat
        MN { "MNT" } // MONGOLIA: Tugrik
        MO { "MOP" } // MACAO: Pataca
        MP { "USD" } // NORTHERN MARIANA ISLANDS: US Dollar
        MQ { "EUR" } // MARTINIQUE: Euro
        MR { "MRO" } // MAURITANIA: Ouguiya
        MS { "XCD" } // MONTSERRAT: East Caribbean Dollar
        MT { "MTL" } // MALTA: Maltese Lira
        MU { "MUR" } // MAURITIUS: Mauritius Rupee
        MV { "MVR" } // MALDIVES: Rufiyaa
        MW { "MWK" } // MALAWI: Kwacha
        MX { "MXN" } // MEXICO: Mexican Peso
        MY { "MYR" } // MALAYSIA: Malaysian Ringgit
        MZ { "MZN" } // MOZAMBIQUE: Metical
        NA { "ZAR" } // NAMIBIA: Rand
        NC { "XPF" } // NEW CALEDONIA: CFP Franc
        NE { "XOF" } // NIGER: CFA Franc BCEAO
        NF { "AUD" } // NORFOLK ISLAND: Australian Dollar
        NG { "NGN" } // NIGERIA: Naira
        NI { "NIO" } // NICARAGUA: Cordoba Oro
        NL { "EUR" } // NETHERLANDS: Euro
        NL_PREEURO { "NLG" }
        NO { "NOK" } // NORWAY: Norwegian Krone
        NP { "NPR" } // NEPAL: Nepalese Rupee
        NR { "AUD" } // NAURU: Australian Dollar
        NU { "NZD" } // NIUE: New Zealand Dollar
        NZ { "NZD" } // NEW ZEALAND: New Zealand Dollar
        OM { "OMR" } // OMAN: Rial Omani
        PA { "PAB" } // PANAMA: Balboa
        PE { "PEN" } // PERU: Nuevo Sol
        PF { "XPF" } // FRENCH POLYNESIA: CFP Franc
        PG { "PGK" } // PAPUA NEW GUINEA: Kina
        PH { "PHP" } // PHILIPPINES: Philippine Peso
        PK { "PKR" } // PAKISTAN: Pakistan Rupee
        PL { "PLN" } // POLAND: Zloty
        PM { "EUR" } // SAINT PIERRE AND MIQUELON: Euro
        PN { "NZD" } // PITCAIRN: New Zealand Dollar
        PR { "USD" } // PUERTO RICO: US Dollar
        PT { "EUR" } // PORTUGAL: Euro
        PT_PREEURO { "PTE" }
        PW { "USD" } // PALAU: US Dollar
        PY { "PYG" } // PARAGUAY: Guarani
        QA { "QAR" } // QATAR: Qatari Rial
        RE { "EUR" } // REUNION: Euro
        RO { "RON" } // ROMANIA: Leu
        RU { "RUB" } // RUSSIAN FEDERATION: Russian Ruble
        RW { "RWF" } // RWANDA: Rwanda Franc
        SA { "SAR" } // SAUDI ARABIA: Saudi Riyal
        SB { "SBD" } // SOLOMON ISLANDS: Solomon Islands Dollar
        SC { "SCR" } // SEYCHELLES: Seychelles Rupee
        SD { "SDD" } // SUDAN: Sudanese Dinar
        SE { "SEK" } // SWEDEN: Swedish Krona
        SG { "SGD" } // SINGAPORE: Singapore Dollar
        SH { "SHP" } // SAINT HELENA: Saint Helena Pound
        SI { "EUR" } // SLOVENIA: Euro
        SI_PREEURO { "SIT" } // SLOVENIA: Tolar
        SJ { "NOK" } // SVALBARD AND JAN MAYEN: Norwegian Krone
        SK { "SKK" } // SLOVAKIA: Slovak Koruna
        SL { "SLL" } // SIERRA LEONE: Leone
        SM { "EUR" } // SAN MARINO: Euro
        SN { "XOF" } // SENEGAL: CFA Franc BCEAO
        SO { "SOS" } // SOMALIA: Somali Shilling
        SR { "SRD" } // SURINAME: Surinam Dollar
        ST { "STD" } // SAO TOME AND PRINCIPE: Dobra
        SV { "SVC" } // EL SALVADOR: El Salvador Colon
        SY { "SYP" } // SYRIAN ARAB REPUBLIC: Syrian Pound
        SZ { "SZL" } // SWAZILAND: Lilangeni
        TC { "USD" } // TURKS AND CAICOS ISLANDS: US Dollar
        TD { "XAF" } // CHAD: CFA Franc BEAC
        TF { "EUR" } // FRENCH SOUTHERN TERRITORIES: Euro
        TG { "XOF" } // TOGO: CFA Franc BCEAO
        TH { "THB" } // THAILAND: Baht
        TJ { "TJS" } // TAJIKISTAN: Somoni
        TK { "NZD" } // TOKELAU: New Zealand Dollar
        TL { "USD" } // TIMOR-LESTE: US Dollar
        TM { "TMM" } // TURKMENISTAN: Manat
        TN { "TND" } // TUNISIA: Tunisian Dinar
        TO { "TOP" } // TONGA: Pa'anga
        TR { "TRY" } // TURKEY: Turkish Lira
        TT { "TTD" } // TRINIDAD AND TOBAGO: Trinidad and Tobago Dollar
        TV { "AUD" } // TUVALU: Australian Dollar
        TW { "TWD" } // TAIWAN, PROVINCE OF CHINA: New Taiwan Dollar
        TZ { "TZS" } // TANZANIA, UNITED REPUBLIC OF: Tanzanian Shilling
        UA { "UAH" } // UKRAINE: Hryvnia
        UG { "UGX" } // UGANDA: Uganda Shilling
        UM { "USD" } // UNITED STATES MINOR OUTLYING ISLANDS: US Dollar
        US { "USD" } // UNITED STATES: US Dollar
        UY { "UYU" } // URUGUAY: Peso Uruguayo
        UZ { "UZS" } // UZBEKISTAN: Uzbekistan Sum
        VA { "EUR" } // HOLY SEE (VATICAN CITY STATE): Euro
        VC { "XCD" } // SAINT VINCENT AND THE GRENADINES: East Caribbean Dollar
        VE { "VEB" } // VENEZUELA: Bolivar
        VG { "USD" } // VIRGIN ISLANDS, BRITISH: US Dollar
        VI { "USD" } // VIRGIN ISLANDS, U.S.: US Dollar
        VN { "VND" } // VIET NAM: Dong
        VU { "VUV" } // VANUATU: Vatu
        WF { "XPF" } // WALLIS AND FUTUNA: CFP Franc
        WS { "WST" } // SAMOA: Tala
        YE { "YER" } // YEMEN: Yemeni Rial
        YT { "EUR" } // MAYOTTE: Euro
        YU { "YUM" } // YUGOSLAVIA: Yugoslavian Dinar
        ZA { "ZAR" } // SOUTH AFRICA: Rand
        ZM { "ZMK" } // ZAMBIA: Kwacha
        ZW { "ZWD" } // ZIMBABWE: Zimbabwe Dollar
    }

  }
