# Copyright 2012 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.

#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag|rounding
# If a symbol is not supplied, the currency code will be used
# If # of decimal digits is omitted, 2 is used
# If a currency is not generally used, not-used-flag=1
# If a currency should be rounded to a multiple of of the least significant
#   digit, rounding will be present
# Trailing empty fields can be omitted

# DO NOT EDIT - GENERATED FROM CLDR DATA
AED = Dirham Emiriah Arab Bersatu
AFN = Afghani Afghanistan||0
ALL = Lek Albania||0
AMD = Dram Armenia
ANG = Guilder Antillen Belanda
AOA = Kwanza Angola
ARS = Peso Argentina
AUD = Dolar Australia|A$
AWG = Florin Aruba
AZN = Manat Azerbaijan
BAM = Mark Boleh Tukar Bosnia-Herzegovina
BBD = Dolar Barbados
BDT = Taka Bangladesh
BGN = Lev Bulgaria
BHD = Dinar Bahrain||3
BIF = Franc Burundi||0
BMD = Dolar Bermuda
BND = Dolar Brunei
BOB = Boliviano Bolivia
BRL = Real Brazil|R$
BSD = Dolar Bahamas
BTN = Ngultrum Bhutan
BWP = Pula Botswana
BYN = Rubel Belarus baharu
BYR = Rubel Belarus (2000–2016)||0|1
BZD = Dolar Belize
CAD = Dolar Kanada
CDF = Franc Congo
CHF = Franc Switzerland
CLP = Peso Chile||0
CNH = Yuan China (luar pesisir)|||1
CNY = Yuan Cina|CN¥
COP = Peso Colombia
CRC = Colon Costa Rica
CUC = Peso Boleh Tukar Cuba
CUP = Peso Cuba
CVE = Escudo Tanjung Verde
CZK = Koruna Republik Czech
DJF = Franc Djibouti||0
DKK = Krone Denmark
DOP = Peso Dominican
DZD = Dinar Algeria
EGP = Paun Mesir
ETB = Birr Ethiopia
EUR = Euro|€
FJD = Dolar Fiji
FKP = Paun Kepulauan Falkland
GBP = Paun British|£
GEL = Lari Georgia
GHS = Cedi Ghana
GIP = Paun Gibraltar
GMD = Dalasi Gambia
GNF = Franc Guinea||0
GTQ = Quetzal Guatemala
GYD = Dolar Guyana
HKD = Dolar Hong Kong|HK$
HNL = Lempira Honduras
HRK = Kuna Croatia
HTG = Gourde Haiti
HUF = Forint Hungary
IDR = Rupiah Indonesia
ILS = Syekel Baharu Israel|₪
INR = Rupee India|₹
IQD = Dinar Iraq||0
IRR = Rial Iran||0
ISK = Krona Iceland||0
JMD = Dolar Jamaica
JOD = Dinar Jordan||3
JPY = Yen Jepun|JP¥|0
KES = Syiling Kenya
KGS = Som Kyrgystani
KHR = Riel Kemboja
KMF = Franc Comoria||0
KPW = Won Korea Utara||0
KRW = Won Korea Selatan|₩|0
KWD = Dinar Kuwait||3
KYD = Dolar Kepulauan Cayman
KZT = Tenge Kazakhstan
LAK = Kip Laos||0
LBP = Paun Lubnan||0
LKR = Rupee Sri Lanka
LRD = Dolar Liberia
LSL = Loti Lesotho
LTL = Litas Lithuania|||1
LVL = Lats Latvia|||1
LYD = Dinar Libya||3
MAD = Dirham Maghribi
MDL = Leu Moldova
MGA = Ariary Malagasy||0
MKD = Denar Macedonia
MMK = Kyat Myanma||0
MNT = Tugrik Mongolia
MOP = Pataca Macau
MRO = Ouguiya Mauritania (1973–2017)||0|1
MRU = Ouguiya Mauritania
MUR = Rupee Mauritius
MVR = Rufiyaa Maldives
MWK = Kwacha Malawi
MXN = Peso Mexico
MYR = Ringgit Malaysia|RM
MZN = Metikal Mozambique
NAD = Dolar Namibia
NGN = Naira Nigeria
NIO = Cordoba Nicaragua
NOK = Krone Norway
NPR = Rupee Nepal
NZD = Dolar New Zealand|NZ$
OMR = Rial Oman||3
PAB = Balboa Panama
PEN = Sol Peru
PGK = Kina Papua New Guinea
PHP = Peso Filipina
PKR = Rupee Pakistan
PLN = Zloty Poland
PYG = Guarani Paraguay||0
QAR = Rial Qatar
RON = Leu Romania
RSD = Dinar Serbia||0
RUB = Rubel Rusia
RWF = Franc Rwanda||0
SAR = Riyal Saudi
SBD = Dolar Kepulauan Solomon
SCR = Rupee Seychelles
SDG = Paun Sudan
SEK = Krona Sweden
SGD = Dolar Singapura
SHP = Paun Saint Helena
SLL = Leone Sierra Leone||0
SOS = Syiling Somali||0
SRD = Dolar Surinam
SSP = Paun Sudan selatan
STD = Dobra Sao Tome dan Principe (1977–2017)||0|1
STN = Dobra Sao Tome dan Principe
SYP = Paun Syria||0
SZL = Lilangeni Swazi
THB = Baht Thai
TJS = Somoni Tajikistan
TMT = Manat Turkmenistan
TND = Dinar Tunisia||3
TOP = Pa’anga Tonga
TRY = Lira Turki|TL
TTD = Dolar Trinidad dan Tobago
TWD = Dolar Taiwan Baru|NT$
TZS = Syiling Tanzania
UAH = Hryvnia Ukraine
UGX = Syiling Uganda||0
USD = Dolar AS
UYU = Peso Uruguay
UZS = Som Uzbekistan
VEF = Bolivar Venezuela (2008–2018)|||1
VES = Bolivar Venezuela
VND = Dong Vietnam|₫|0
VUV = Vatu Vanuatu||0
WST = Tala Samoa
XAF = Franc CFA BEAC|FCFA|0
XCD = Dolar Caribbean Timur|EC$
XOF = Franc CFA BCEAO|CFA|0
XPF = Franc CFP|CFPF|0
XXX = Mata Wang Tidak Diketahui|¤||1
YER = Rial Yaman||0
ZAR = Rand Afrika Selatan
ZMK = Kwacha Zambia (1968–2012)||0|1
ZMW = Kwacha Zambia
