# 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 dos Emirados Árabes Unidos
AFA = Afeghani (1927–2002)|||1
AFN = Afegani do Afeganistão||0
ALL = Lek albanês||0
AMD = Dram arménio||0
AOA = Kwanza angolano
AWG = Florim de Aruba
AZN = Manat do Azerbaijão
BAD = Dinar da Bósnia-Herzegóvina|||1
BAM = Marco bósnio-herzegóvino conversível
BDT = Taka de Bangladesh
BEC = Franco belga (convertível)|||1
BHD = Dinar baremita||3
BMD = Dólar bermudense
BND = Dólar bruneíno
BSD = Dólar das Bahamas
BTN = Ngultrum do Butão
BWP = Pula de Botswana
BYB = Rublo novo bielorusso (1994–1999)|||1
BYR = Rublo bielorusso||0
BZD = Dólar belizense
CAD = Dólar canadiano|CA$
CRC = Colon costa-riquenho||0
CYP = Libra de Chipre|||1
DJF = Franco jibutiano||0
ECV = Unidad de Valor Constante (UVC) do Equador|||1
FJD = Dólar de Fiji
FKP = Libra das Ilhas Falkland
GHC = Cedi do Gana|||1
GHS = Cedi de Gana
GMD = Dalasi da Gâmbia
GNF = Franco Guineense||0
GTQ = Quetzal da Guatemala
GYD = Dólar da Guiana||0
HNL = Lempira das Honduras
HUF = Forint húngaro||0
ILS = Sheqel novo israelita|₪
INR = Rupia indiana|Rs.
KGS = Som do Quirguistão
KMF = Franco comoriano||0
KWD = Dinar kuwaitiano||3
KYD = Dólar das Ilhas Caimão
KZT = Tenge do Cazaquistão
LKR = Rupia do Sri Lanka
LTL = Litas da Lituânia
LVL = Lats da Letónia|||1
MAD = Dirham marroquino
MDL = Leu moldavo
MGA = Ariari de Madagáscar||0
MKD = Dinar macedónio
MLF = Franco do Mali|||1
MMK = Kyat de Mianmar||0
MNT = Tugrik da Mongólia||0
MOP = Pataca de Macau
MRO = Ouguiya da Mauritânia||0
MVR = Rupia das Ilhas Maldivas
MWK = Kwacha do Malawi
MXP = Peso Plata mexicano (1861–1992)|||1
MXV = Unidad de Inversion (UDI) mexicana|||1
MZN = Metical de Moçambique
NAD = Dólar da Namíbia
NIC = Córdoba nicaraguano|||1
NIO = Córdoba Ouro nicaraguano
NZD = Dólar neozelandês|NZ$
OMR = Rial de Omã||3
PAB = Balboa panamenho
PGK = Kina da Papua-Nova Guiné
PLN = Zloti polaco
PLZ = Zloti polaco (1950–1995)|||1
QAR = Rial do Qatar
SGD = Dólar de Singapura
SRD = Dólar do Suriname
STD = Dobra de São Tomé e Príncipe|Db|0
SZL = Lilangeni da Suazilândia
THB = Baht da Tailândia|฿
TJS = Somoni do Tajaquistão
TND = Dinar tunisino||3
TOP = Paʻanga de Tonga
TTD = Dólar de Trindade e Tobago
TZS = Xelim tanzaniano||0
UAH = Hryvnia da Ucrânia
USD = Dólar dos Estados Unidos|US$
UZS = Som do Uzbequistão||0
XAF = Franco CFA de BEAC|FCFA|0
XCD = Dólar das Caraíbas Orientais|EC$
XEU = Unidade da Moeda Europeia|||1
XOF = Franco CFA de BCEAO|CFA|0
YUD = Dinar forte jugoslavo|||1
YUM = Super Dinar jugoslavo|||1
YUN = Dinar conversível jugoslavo|||1
ZMK = Kwacha zambiano (1968–2012)||0|1
ZMW = Kwacha zambiano
ZWD = Dólar do Zimbabwe||0|1
