# 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:
#  cldrVersion=21.0
#  number=$Revision: 6546 Google $
#  type=root
#  date=$Date: 2012-02-07 13:32:35 -0500 (Tue, 07 Feb 2012) $

ADP = pesseta andorrana||0|1
AED = dirhem dels Emirats Àrabs Units
AFA = afgani afganès (1927-2002)|||1
AFN = afgani afganès||0
ALK = lek albanès (1946-1965)|||1
ALL = lek albanès||0
AMD = dram armeni||0
ANG = florí de les Antilles Neerlandeses
AOA = kwanza angolès
AOK = kwanza angolès (1977-1991)|||1
AON = nou kwanza angolès (1990-2000)|||1
AOR = kwanza angolès reajustat (1995-1999)|||1
ARA = austral argentí|||1
ARL = peso ley argentí (1970-1983)|||1
ARM = peso moneda nacional argentí|||1
ARP = peso argentí (1983-1985)|||1
ARS = peso argentí
ATS = xíling austríac|||1
AUD = dòlar australià|AU$
AWG = florí d'Aruba
AZM = manat azerbaidjanès (1993-2006)|||1
AZN = manat azerbaidjanès
BAD = dinar de Bòsnia i Hercegovina (1992-1994)|||1
BAM = marc convertible de Bòsnia i Hercegovina
BAN = nou dinar de Bòsnia i Hercegovina (1994-1997)|||1
BBD = dòlar de Barbados
BDT = taka de Bangla Desh
BEC = franc belga (convertible)|||1
BEF = franc belga|||1
BEL = franc belga (financer)|||1
BGL = lev fort búlgar|||1
BGM = lev socialista búlgar|||1
BGN = lev búlgar
BGO = lev búlgar (1879-1952)|||1
BHD = dinar de Bahrain||3
BIF = franc de Burundi||0
BMD = dòlar de les Bermudes
BND = dòlar de Brunei
BOB = boliviano bolivià
BOL = boliviano bolivià (1863-1963)|||1
BOP = peso bolivià|||1
BOV = MVDOL bolivià|||1
BRB = cruzeiro novo brasiler (1967-1986)|||1
BRC = cruzado brasiler|||1
BRE = cruzeiro brasiler (1990-1993)|||1
BRL = real brasiler|R$
BRN = cruzado novo brasiler|||1
BRR = cruzeiro brasiler|||1
BRZ = antic cruzeiro brasiler|||1
BSD = dòlar de les Bahames
BTN = ngultrum de Bhutan
BUK = kyat birmà|||1
BWP = pula de Botswana
BYB = nou ruble bielorús (1994-1999)|||1
BYR = ruble bielorús||0
BZD = dòlar de Belize
CAD = dòlar canadenc|CA$
CDF = franc congolès
CHE = euro WIR|||1
CHF = franc suís||||5
CHW = franc WIR|||1
CLF = unidad de fomento xilena||0|1
CLP = peso xilè||0
CNY = iuan renmimbi xinès|CN¥
COP = peso colombià||0
COU = unidad de valor real colombiana|||1
CRC = colón costa-riqueny||0
CSD = dinar serbi antic|||1
CSK = corona forta txecoslovaca|||1
CUC = peso convertible cubà
CUP = peso cubà
CVE = escut de Cap Verd
CYP = lliura xipriota|||1
CZK = corona txeca
DDM = marc de l'Alemanya Oriental|||1
DEM = marc alemany|||1
DJF = franc de Djibouti||0
DKK = corona danesa
DOP = peso dominicà
DZD = dinar algerià
ECS = sucre equatorià|||1
ECV = unidad de valor constante (UVC) equatoriana|||1
EEK = corona estoniana|||1
EGP = lliura egípcia
ERN = nakfa eritreu
ESA = pesseta espanyola (compte A)|||1
ESB = pesseta espanyola (compte convertible)|||1
ESP = pesseta espanyola|₧|0|1
ETB = birr etíop
EUR = euro|€
FIM = marc finlandès|||1
FJD = dòlar fijià
FKP = lliura de les illes Malvines
FRF = franc francès|||1
GBP = lliura esterlina britànica|UK£
GEK = cupó de lari georgià|||1
GEL = lari georgià
GHC = cedi ghanès (1979-2007)|||1
GHS = cedi ghanès
GIP = lliura de Gibraltar
GMD = dalasi gambià
GNF = franc guineà||0
GNS = syli guineà|||1
GQE = ekwele de Guinea Equatorial|||1
GRD = dracma grega|||1
GTQ = quetzal guatemalenc
GWE = escut de la Guinea Portuguesa|||1
GWP = peso de Guinea Bissau|||1
GYD = dòlar de Guyana||0
HKD = dòlar de Hong Kong|HK$
HNL = lempira hondurenya
HRD = dinar croat|||1
HRK = kuna croata
HTG = gourde haitià
HUF = fòrint hongarès||0
IDR = rupia indonèsia||0
IEP = lliura irlandesa|||1
ILP = lliura israeliana|||1
ILR = xéquel israelià|||1
ILS = nou xéquel israelià|₪
INR = rupia índia|Rs.
IQD = dinar iraquià||0
IRR = rial iranià||0
ISJ = corona islandesa antiga|||1
ISK = corona islandesa||0
ITL = lira italiana||0|1
JMD = dòlar jamaicà
JOD = dinar jordà||3
JPY = ien japonès|JP¥|0
KES = xíling kenyà
KGS = som kirguís
KHR = riel cambodjà
KMF = franc de les Comores||0
KPW = won nord-coreà||0
KRH = hwan sud-coreà|||1
KRO = antic won sud-coreà|||1
KRW = won sud-coreà|₩|0
KWD = dinar kuwaitià||3
KYD = dòlar de les illes Caiman
KZT = tenge kazakh
LAK = kip laosià||0
LBP = lliura libanesa||0
LKR = rupia de Sri Lanka
LRD = dòlar liberià
LSL = loti de Lesotho
LTL = litas lituà
LTT = talonas lituà|||1
LUC = franc convertible luxemburguès|||1
LUF = franc luxemburguès||0|1
LUL = franc financer luxemburguès|||1
LVL = lats letó
LVR = ruble letó|||1
LYD = dinar libi||3
MAD = dírham marroquí
MAF = franc marroquí|||1
MCF = franc monegasc|||1
MDC = cupó moldau|||1
MDL = leu moldau
MGA = ariary malgaix||0
MGF = franc malgaix||0|1
MKD = denar macedoni
MKN = denar macedoni (1992-1993)|||1
MLF = franc malià|||1
MMK = kyat de Myanmar||0
MNT = tögrög mongol||0
MOP = pataca de Macau
MRO = ouguiya maurità||0
MTL = lira maltesa|||1
MTP = lliura maltesa|||1
MUR = rupia de Maurici||0
MVR = rupia de les Maldives
MWK = kwacha malawià
MXN = peso mexicà|MX$
MXP = peso de plata mexicà (1861-1992)|||1
MXV = unidad de inversión (UDI) mexicana|||1
MYR = ringgit de Malàisia
MZE = escut moçambiquès|||1
MZM = antic metical moçambiquès|||1
MZN = metical moçambiquès
NAD = dòlar namibià
NGN = naira nigerià
NIC = córdoba nicaragüenca|||1
NIO = córdoba oro nicaragüenca
NLG = florí neerlandès|||1
NOK = corona noruega
NPR = rupia nepalesa
NZD = dòlar neozelandès|NZ$
OMR = rial omanita||3
PAB = balboa panameny
PEI = inti peruà|||1
PEN = nou sol peruà
PES = sol peruà|||1
PGK = kina de Papua Nova Guinea
PHP = peso filipí
PKR = rupia pakistanesa||0
PLN = zloty polonès
PLZ = zloty polonès (1950-1995)|||1
PTE = escut portuguès|||1
PYG = guaraní paraguaià||0
QAR = riyal de Qatar
RHD = dòlar rhodesià|||1
ROL = antic leu romanès|||1
RON = leu romanès
RSD = dinar serbi||0
RUB = ruble rus
RUR = ruble rus (1991-1998)|||1
RWF = franc rwandès||0
SAR = riyal saudita
SBD = dòlar de les illes Salomó
SCR = rupia de les Seychelles
SDD = dinar sudanès|||1
SDG = lliura sudanesa
SDP = antiga lliura sudanesa|||1
SEK = corona sueca
SGD = dòlar de Singapur
SHP = lliura de Santa Helena
SIT = tolar eslovè|||1
SKK = corona eslovaca|||1
SLL = leone de Sierra Leone||0
SOS = xíling somali||0
SRD = dòlar de Surinam
SRG = florí de Surinam|||1
STD = dobra de São Tomé i Príncipe||0
SUR = ruble soviètic|||1
SVC = colón salvadorenc|||1
SYP = lliura síria||0
SZL = lilangeni swazi
THB = baht tailandès|฿
TJR = ruble tadjik|||1
TJS = somoni tadjik
TMM = manat turcman (1993-2009)||0|1
TMT = manat turcman
TND = dinar tunisià||3
TOP = pa‘anga tongà
TPE = escut de Timor|||1
TRL = lira turca (1922-2005)||0|1
TRY = lira turca
TTD = dòlar de Trinitat i Tobago
TWD = nou dòlar de Taiwan|NT$
TZS = xíling tanzà||0
UAH = hrívnia ucraïnesa
UAK = karbóvanets ucraïnès|||1
UGS = xíling ugandès (1966-1987)|||1
UGX = xíling ugandès||0
USD = dòlar dels Estats Units|US$
USN = dòlar dels Estats Units (dia següent)|||1
USS = dòlar dels Estats Units (mateix dia)|||1
UYI = peso uruguaià en unitats indexades|||1
UYP = peso uruguaià (1975-1993)|||1
UYU = peso uruguaià
UZS = som uzbek||0
VEB = bolívar veneçolà|||1
VEF = bolívar fort veneçolà
VND = dong vietnamita|₫|0
VNN = dong vietnamita (1978-1985)|||1
VUV = vatu de Vanuatu||0
WST = tala samoà
XAF = franc CFA BEAC|FCFA|0
XAG = plata|||1
XAU = or|||1
XBA = unitat compensatòria europea|||1
XBB = unitat monetària europea|||1
XBC = unitat de compte europea (XBC)|||1
XBD = unitat de compte europea (XBD)|||1
XCD = dòlar del Carib Oriental|EC$
XDR = drets especials de gir|||1
XEU = unitat de moneda europea|||1
XFO = franc or francès|||1
XFU = franc UIC francès|||1
XOF = franc CFA BCEAO|CFA|0
XPD = pal·ladi|||1
XPF = franc CFP|CFPF|0
XPT = platí|||1
XRE = fons RINET|||1
XTS = codi reservat per a proves|||1
XXX = moneda desconeguda/no vàlida|||1
YDD = dinar iemenita|||1
YER = rial iemenita||0
YUD = dinar fort iugoslau|||1
YUM = nou dinar iugoslau|||1
YUN = dinar convertible iugoslau|||1
ZAL = rand sud-africà (financer)|||1
ZAR = rand sud-africà
ZMK = kwacha zambià||0
ZRN = nou zaire zairès|||1
ZRZ = zaire zairès|||1
ZWD = dòlar zimbabuès (1980-2008)||0|1
ZWL = dòlar zimbabuès (2009)|||1
ZWR = dòlar zimbabuès (2008)|||1
