# 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
ADP = andorraska peseta||0|1
AED = ZAE dirham
AFN = afghaniski afgani||0
ALL = albański lek||0
AMD = armeński dram||0
ANG = nižozemsko-antilski gulden
AOA = angolska kwanza
AOK = angolska kwanza (1977–1990)|||1
AON = angolska nowa kwanza (1990–2000)|||1
AOR = angolska kwanza reajustado (1995–1999)|||1
ARA = argentinski austral|||1
ARP = argentinski peso (1983–1985)|||1
ARS = argentinski peso
ATS = rakuski šiling|||1
AUD = awstralski dolar
AWG = aruba-florin
AZM = azerbajdžaniski manat (1993–2006)|||1
AZN = azerbajdžaniski manat
BAD = bosniski dinar|||1
BAM = bosniska konwertibelna marka
BBD = barbadoski dolar
BDT = bangladešska taka
BEC = belgiski frank (konwertibelny)|||1
BEF = belgiski frank|||1
BEL = belgiski financny frank|||1
BGL = bulgarski lew (1962–1999)|||1
BGN = bulgarski lew
BHD = bahrainski dinar||3
BIF = burundiski frank||0
BMD = bermudaski dolar
BND = bruneiski dolar
BOB = boliwiski boliviano
BOP = boliwiski peso|||1
BOV = boliwiski mvdol|||1
BRB = brazilski nowy cruzeiro (1967–1986)|||1
BRC = brazilski cruzado (1986–1989)|||1
BRE = brazilski cruzeiro (1990–1993)|||1
BRL = brazilski real|R$
BRN = brazilski nowy cruzado (1989–1990)|||1
BRR = brazilski cruzeiro (1993–1994)|||1
BSD = bahamaski dolar
BTN = bhutański ngultrum
BUK = burmaski kyat|||1
BWP = botswaniska pula
BYB = běłoruski rubl (1994–1999)|||1
BYN = běłoruski rubl
BYR = běłoruski rubl (2000–2016)||0|1
BZD = belizeski dolar
CAD = kanadiski dolar|CA$
CDF = kongoski frank
CHF = šwicarski frank
CLP = chilski peso||0
CNY = chinski yuan|CN¥
COP = kolumbiski peso||0
CRC = kosta-rikański colón
CUC = kubański konwertibelny peso
CUP = kubański peso
CVE = kapverdski escudo
CZK = česka krona
DJF = dźibutiski frank||0
DKK = dańska krona
DOP = dominikański peso
DZD = algeriski dinar
EGP = egyptojski punt
ERN = eritrejska nakfa
ETB = etiopiski birr
EUR = euro|€
FJD = fidźiski dolar
FKP = falklandski punt
GBP = britiski punt|£
GEL = georgiski lari
GHS = ghanaski cedi
GIP = gibraltiski punt
GMD = gambiski dalasi
GNF = guineski frank||0
GTQ = guatemalski quetzal
GWP = Guinea-Bissau peso|||1
GYD = guyański dolar||0
HKD = hongkongski dolar|HK$
HNL = honduraska lempira
HRK = chorwatska kuna
HTG = haitiska gourda
HUF = madźarski forint
IDR = indoneska rupija||0
ILS = israelski nowy šekel|₪
INR = indiska rupija|₹
IQD = irakski dinar||0
IRR = irański rial||0
ISK = islandska krona||0
JMD = jamaiski dolar
JOD = jordaniski dinar||3
JPY = japański yen|¥|0
KES = keniaski šiling
KGS = kirgiski som
KHR = kambodžaski riel
KMF = komorski frank||0
KPW = pódpołnocnokorejski won||0
KRW = pódpołdnjowokorejski won|₩|0
KWD = kuwaitski dinar||3
KYD = kajmaniski dolar
KZT = kazachski tenge
LAK = laoski kip||0
LBP = libanoński punt||0
LKR = sri-lankaska rupija
LRD = liberiski dolar
LTL = litawski litas|||1
LVL = letiski lat|||1
LYD = libyski dinar||3
MAD = marokkoski dirham
MDL = moldawiski leu
MGA = madagaskarski ariary||0
MKD = makedoński denar
MMK = myanmarski kyat||0
MNT = mongolski tugrik||0
MOP = macaoska pataca
MRO = mauretański ouguiya||0
MUR = mauriciska rupija||0
MVR = malediwiska rupija
MWK = malawiski kwacha
MXN = mexiski peso|MX$
MYR = malajziski ringgit
MZE = Mozabicke escudo|||1
MZM = mosambikski metical (1980–2006)|||1
MZN = mosambikski metical
NAD = namibiski dolar
NGN = nigeriska naira
NIO = nikaraguaska cordoba
NOK = norwegska krona
NPR = nepalska rupija
NZD = nowoseelandski dolar|NZ$
OMR = omański rial||3
PAB = panamaski balboa
PEN = peruski sol
PGK = papua-neuguinejska kina
PHP = filipinski peso
PKR = pakistańska rupija||0
PLN = pólski złoty|zł
PYG = paraguayski guarani||0
QAR = katarski rial
RON = rumuński leu
RSD = serbiski dinar||0
RUB = ruski rubl
RWF = ruandiski frank||0
SAR = saudi-arabiski rial
SBD = salomoński dolar
SCR = seychelska rupija
SDG = sudański punt
SEK = šwedska krona
SGD = singapurski dolar
SHP = St. Helena punt
SLL = sierra-leoneski leone||0
SOS = somaliski šiling||0
SRD = surinamski dolar
SSP = pódpołdnjowosudański punt
STD = são-tomeska dobra||0|1
SVC = el-salvadorski colón|||1
SYP = syriski punt||0
SZL = swasiski lilangeni
THB = thaiski baht|฿
TJS = tadźikiski somoni
TMT = turkmeniski manat
TND = tuneziski dinar||3
TOP = tongaski paʻanga
TRY = turkojska lira|TL
TTD = trinidad-tobagoski dolar
TWD = nowy taiwański dolar|NT$
TZS = tansaniski šiling||0
UAH = ukrainska griwna
UGX = ugandaski šiling||0
USD = ameriski dolar|$
UYU = uruguayski peso
UZS = usbekiski sum||0
VEF = venezuelski bolívar
VND = vietnamski dong|₫|0
VUV = vanuatski vatu||0
WST = samoaska tala
XAF = CFA-frank (BEAC)|FCFA|0
XCD = pódzajtšnokaribiski dolar|EC$
XOF = CFA-frank (BCEAO)|CFA|0
XPF = CFP-frank|CFPF|0
XXX = njeznate pjenjeze|||1
YER = jemeński rial||0
ZAR = pódpołdnjowoafriski rand
ZMW = sambiska kwacha
