# 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 ya Falme za Kiarabu
AFN = Afghani ya Afghanistan||0
ALL = Lek ya Albania||0
AMD = Dram ya Armenia||0
ANG = Guilder ya Antili za Kiholanzi
AOA = Kwanza ya Angola
ARS = Peso ya Argentina
AUD = Dola ya Australia|A$
AWG = Florin ya Aruba
AZN = Manat ya Azerbaijan
BAM = Convertible Mark ya Bosnia na Hezegovina
BBD = Dola ya Barbados
BDT = Taka ya Bangladesh
BGN = Lev ya Bulgaria
BHD = Dinar ya Bahrain||3
BIF = Faranga ya Burundi||0
BMD = Dola ya Bermuda
BND = Dola ya Brunei
BOB = Boliviano ya Bolivia
BRL = Real ya Brazil|R$
BSD = Dola ya Bahamas
BTN = Ngultrum ya Bhutan
BWP = Pula ya Botswana
BYN = Ruble ya Belarus
BYR = Ruble ya Belarusi (2000–2016)||0|1
BZD = Dola ya Belize
CAD = Dola ya Canada|CA$
CDF = Faranga ya Kongo
CHF = Faranga ya Uswisi
CLP = Peso ya Chile||0
CNH = Yuan ya Uchina (huru)|||1
CNY = Yuan ya Uchina|CN¥
COP = Peso ya Colombia||0
CRC = Colon ya Costa Rica
CUC = Peso ya Cuba Inayoweza Kubadilishwa
CUP = Peso ya Cuba
CVE = Eskudo ya Cape Verde
DJF = Faranga ya Djibouti||0
DKK = Krone ya Denmark
DOP = Peso ya Dominica
DZD = Dinar ya Algeria
EGP = Pauni ya Misri
ERN = Nakfa ya Eritrea
ETB = Birr ya Uhabeshi
EUR = Yuro|€
FJD = Dola ya Fiji
FKP = Pauni ya Visiwa vya Falkland
GBP = Pauni ya Uingereza|£
GEL = Lari ya Georgia|₾
GHC = Sedi ya Ghana|||1
GHS = Cedi ya Ghana
GIP = Pauni ya Gibraltar
GMD = Dalasi ya Gambia
GNF = Faranga ya Guinea||0
GNS = Faranga ya Gine|||1
GTQ = Quetzal ya Guatemala
GYD = Dola ya Guyana||0
HKD = Dola ya Hong Kong|HK$
HNL = Lempira ya Hondurasi
HRK = Kuna ya Croatia
HTG = Gourde ya Haiti
HUF = Forint ya Hungaria
IDR = Rupiah ya Indonesia||0
ILS = Shekeli Mpya ya Israel|₪
INR = Rupia ya India|₹
IQD = Dinar ya Iraq||0
IRR = Rial ya Iran||0
ISK = Krona ya Aisilandi||0
JMD = Dola ya Jamaica
JOD = Dinar ya Jordan||3
JPY = Yen ya Ujapani|JP¥|0
KES = Shilingi ya Kenya|Ksh
KGS = Som ya Kyrgystan
KHR = Riel ya Cambodia
KMF = Faranga ya Comoros||0
KPW = Won ya Korea Kaskazini||0
KRW = Won ya Korea Kusini|₩|0
KWD = Dinar ya Kuwait||3
KYD = Dola ya Visiwa vya Cayman
KZT = Tenge ya Kazakhstan
LAK = Kip ya Laosi||0
LBP = Pauni ya Lebanon||0
LKR = Rupia ya Sri Lanka
LRD = Dola ya Liberia
LSL = Loti ya Lesoto
LTL = Litas ya Lithuania|||1
LVL = Lats ya Lativia|||1
LYD = Dinari ya Libya||3
MAD = Dirham ya Morocco
MDL = Leu ya Moldova
MGA = Ariari ya Madagascar||0
MKD = Denar ya Macedonia
MMK = Kyat ya Myanmar||0
MNT = Tugrik ya Mongolia||0
MOP = Pataca ya Macau
MRO = Ouguiya ya Mauritania||0
MUR = Rupia ya Mauritius||0
MVR = Rufiyaa ya Maldives
MWK = Kwacha ya Malawi
MXN = Peso ya Mexico|MX$
MYR = Ringgit ya Malaysia
MZM = Metikali ya Msumbiji (1980–2006)|||1
MZN = Metikali ya Msumbiji
NAD = Dola ya Namibia
NGN = Naira ya Nigeria
NIO = Cordoba ya Nicaragua
NOK = Krone ya Norway
NPR = Rupia ya Nepal
NZD = Dola ya New Zealand|NZ$
OMR = Rial ya Omani||3
PAB = Balboa ya Panama
PEN = Sol ya Peru
PGK = Kina ya Papua New Guinea
PHP = Peso ya Ufilipino
PKR = Rupia ya Pakistan||0
PLN = Zloty ya Poland
PYG = Guarani ya Paraguay||0
QAR = Rial ya Qatar
RON = Leu ya Romania
RSD = Dinar ya Serbia||0
RUB = Ruble ya Urusi
RWF = Faranga ya Rwanda||0
SAR = Riyal ya Saudia
SBD = Dola ya Visiwa vya Solomon
SCR = Rupia ya Ushelisheli
SDG = Pauni ya Sudan
SDP = Pauni ya Sudani (1957–1998)|||1
SEK = Krona ya Uswidi
SGD = Dola ya Singapore
SHP = Pauni ya St. Helena
SLL = Leone||0
SOS = Shilingi ya Somalia||0
SRD = Dola ya Suriname
SSP = Pauni ya Sudan Kusini
STD = Dobra ya Sao Tome na Principe||0|1
SYP = Pauni ya Syria||0
SZL = Lilangeni
THB = Baht ya Tailandi|฿
TJS = Somoni ya Tajikistan
TMT = Manat ya Turkmenistan
TND = Dinari ya Tunisia||3
TOP = Paʻanga ya Tonga
TRY = Lira ya Uturuki|TL
TTD = Dola ya Trinidad na Tobago
TWD = Dola ya Taiwan|NT$
TZS = Shilingi ya Tanzania|TSh|0
UAH = Hryvnia ya Ukraine
UGX = Shilingi ya Uganda||0
USD = Dola ya Marekani|US$
UYU = Peso ya Uruguay
UZS = Som ya Uzbekistan||0
VEF = Bolivar ya Venezuela
VND = Dong ya Vietnam|₫|0
VUV = Vatu ya Vanuatu||0
WST = Tala ya Samoa
XAF = Faranga ya Afrika ya Kati CFA|FCFA|0
XCD = Dola ya Caribbean Mashariki|EC$
XOF = Faranga ya Afrika Magharibi CFA|CFA|0
XPF = Faranga ya CFP|CFPF|0
XXX = Sarafu isiyojulikana|||1
YER = Rial ya Yemen||0
ZAR = Randi ya Afrika Kusini
ZMK = Kwacha ya Zambia (1968–2012)||0|1
ZMW = Kwacha ya Zambia
ZWD = Dola ya Zimbabwe||0|1
