# 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 = Andorrskur peseti||0|1
AED = Arabískt dírham
AFN = Afganskur afghani||0
ALL = Lek||0
AMD = Dramm||0
ANG = Hollenskt Antillugyllini
AOA = Kwanza í Angóla
ARA = Argentine Austral|||1
ARP = Argentískur pesi (1983-1985)|||1
ARS = Argentískur pesi
ATS = Austurrískur skildingur|||1
AUD = Ástralskur dalur|AU$
AWG = Arúbönsk flórína
AZN = Manat í Aserbaídsjan
BAM = Skiptanlegt mark í Bosníu-Hersegóvínu
BBD = Barbadoskur dalur
BDT = Taka í Bangladesh
BEF = Belgískur franki|||1
BGL = Lef|||1
BGN = Lef, nýtt
BHD = Dínar í Bahrain||3
BIF = Búrúndískur franki||0
BMD = Bermúdeyskur dalur
BND = Brúneiskur dalur
BOB = Boliviano í Bólivíu
BOP = Bólivískur pesi|||1
BOV = Bolivian Mvdol|||1
BRL = Brasilískt ríal|R$
BSD = Bahameyskur dalur
BTN = Bútanskt ngultrum
BUK = Búrmverskt kjat|||1
BWP = Pula í Botsvana
BYR = Hvítrússnesk rúbla||0
BZD = Belískur dalur
CAD = Kanadískur dalur|CA$
CDF = Franki í Kongó
CHF = Svissneskur franki||||5
CLF = Chilean Unidades de Fomento||0|1
CLP = Chileskur pesi||0
CNY = Júan|CN¥
COP = Kólumbískur pesi||0
CRC = Colón á Kosta ríka||0
CSK = Tékknesk króna, eldri|||1
CUC = Kúbanskur skiptanlegur pesó
CUP = Kúbverskur pesi
CVE = Grænhöfðeyskur skúti
CYP = Kýpverskt pund|||1
CZK = Tékknesk króna
DDM = Austurþýskt mark|||1
DEM = Þýskt mark|||1
DJF = Djibouti Franc||0
DKK = Dönsk króna
DOP = Dóminískur pesi
DZD = Alsírskur dínar
ECS = Ecuador Sucre|||1
EEK = Eistnesk króna|||1
EGP = Egypskt pund
ERN = Eritrean Nakfa
ESP = Spænskur peseti||0|1
ETB = Eþíópískt birr
EUR = Euro|€
FIM = Finnskt mark|||1
FJD = Fídjeyskur dalur
FKP = Falklenskt pund
FRF = Franskur franki|||1
GBP = Sterlingspund|UK£
GEL = Georgískt lari
GHS = Cedi í Gana
GIP = Gíbraltarspund
GMD = Gambískur dalasi
GNF = Gíneufranki||0
GRD = Drakma|||1
GTQ = Guatemala Quetzal
GWE = Portúgalskur, gíneskur skúti|||1
GYD = Gvæjanskur dalur||0
HKD = Hong Kong-dalur|HK$
HNL = Hoduras Lempira
HRK = Kúna
HTG = Gourde á Haítí
HUF = Fórinta||0
IDR = Indónesísk rúpía||0
IEP = Írskt pund|||1
ILP = Ísraelskt pund|||1
ILS = Sikill|₪
INR = Indversk rúpía|Rs.
IQD = Írakskur denari||0
IRR = Íranskt ríal||0
ISK = Íslensk króna|kr|0
ITL = Ítölsk líra||0|1
JMD = Jamaískur dalur
JOD = Jórdanskur dínar||3
JPY = Jen|JP¥|0
KES = Kenískur skildingur
KGS = Som í Kyrgystan
KHR = Kambódískt riel
KMF = Kómoreyskur franki||0
KPW = Norðurkóreskt vonn||0
KRW = Suðurkóreskt vonn|₩|0
KWD = Kúveiskur denari||3
KYD = Caymaneyskur dalur
KZT = Kazakhstan Tenge
LAK = Kip í Laos||0
LBP = Líbanskt pund||0
LKR = Srílönsk rúpía
LRD = Líberískur dalur
LSL = Lesotho Loti
LTL = Lít
LTT = Lithuanian Talonas|||1
LUF = Lúxemborgarfranki||0|1
LVL = Lat
LVR = Lettnesk rúbla|||1
LYD = Líbískur denari||3
MAD = Marokkóskt dírham
MAF = Marokkóskur franki|||1
MDL = Moldavískt leu
MGA = Madagascar Ariary||0
MGF = Madagaskur franki||0|1
MKD = Makedónskur denari
MLF = Malískur franki|||1
MMK = Mjanmarskt kjat||0
MNT = Túríkur||0
MOP = Macao Pataca
MRO = Mauritania Ouguiya||0
MTL = Meltnesk líra|||1
MTP = Maltneskt pund|||1
MUR = Máritísk rúpía||0
MVR = Rufiyaa á Maldíveyjum
MWK = Kwacha í Malavíu
MXN = Mexíkóskur pesi|MX$
MXP = Mexíkóskur silfurpesi (1861-1992)|||1
MXV = Mexíkóskur pesi, UDI|||1
MYR = Malaysian Ringgit
MZE = Mósambískur skúti|||1
NAD = Namibískur dalur
NGN = Nigerian Naira
NIO = Córdoba í Níkaragúa
NLG = Hollenskt gyllini|||1
NOK = Norsk króna
NPR = Nepölsk rúpía
NZD = Nýsjálenskur dalur|NZ$
OMR = Ómanskt ríal||3
PAB = Balbói
PEN = Perúskt nuevo sol
PGK = Kina í Papúa Nýju Gíneu
PHP = Filippínskur pesó
PKR = Pakistönsk rúpía||0
PLN = Pólskt zloty
PLZ = Slot|||1
PTE = Portúgalskur skúti|||1
PYG = Paragvæskt gvaraní||0
QAR = Rial í Katar
ROL = Rúmenskt lei|||1
RON = Rúmensk leu
RSD = Serbneskur dínar||0
RUB = Rússnesk rúbla
RUR = Rússnesk rúbla (1991-1998)|||1
RWF = Rwandan Franc||0
SAR = Sádiarabískt ríal
SBD = Salómonseyskur dalur
SCR = Seychelles rúpía
SDD = Súdanskur denari|||1
SDG = Súdanskt pund
SDP = Súdanskt pund (1957-1998)|||1
SEK = Sænsk króna
SGD = Singapúrskur dalur
SHP = Helenskt pund
SIT = Slóvenskur dalur|||1
SKK = Slóvakísk króna|||1
SLL = Leone í Síerra Leóne||0
SOS = Sómalískur skildingur||0
SRD = Súrinamískur dollar
SRG = Suriname Guilder|||1
STD = Sao Tome and Principe Dobra||0
SUR = Soviet Rouble|||1
SVC = El Salvador Colon|||1
SYP = Sýrlenskt pund||0
SZL = Svasílenskur lílangeni
THB = Bat|฿
TJR = Tadsjiksk rúbla|||1
TJS = Tajikistan Somoni
TMM = Túrkmenskt manat||0|1
TMT = Manat í Túrkmenistan
TND = Túnískur dínar||3
TOP = Tongan Paʻanga
TPE = Tímorskur skúti|||1
TRL = Tyrknesk líra||0|1
TRY = Ný tyrknesk líra
TTD = Trínidad og Tóbagó-dalur
TWD = Taívanskur dalur|NT$
TZS = Tanzanian Shilling||0
UAH = Hrinja
UAK = Ukrainian Karbovanetz|||1
UGX = Úgandskur skildingur||0
USD = Bandaríkjadalur|US$
USN = Bandaríkjadalur (næsta dag)|||1
USS = Bandaríkjadalur (sama dag)|||1
UYU = Úrúgvæskur pesó
UZS = Som í Úsbekistan||0
VEB = Venezuelan Bolivar|||1
VEF = Bolívar í Venesúela
VND = Víetnamískt dong|₫|0
VUV = Vanuatu Vatu||0
WST = Tala á Samóaeyjum
XAF = Miðafrískur franki, BEAC|FCFA|0
XAG = unse silfur|||1
XAU = unse gull|||1
XCD = Austur-Karíbahafsdalur|EC$
XDR = Sérstök dráttarréttindi|||1
XFO = Franskur gullfranki|||1
XFU = Franskur franki, UIC|||1
XOF = Miðafrískur franki, BCEAO|CFA|0
XPD = unse palladín|||1
XPF = Pólinesískur franki|CFPF|0
XPT = unse platína|||1
XXX = Óþekktur eða ógildur gjaldeyrir|||1
YDD = Jemenskur denari|||1
YER = Jemenskt ríal||0
YUM = Júgóslavneskur denari|||1
ZAL = Rand (viðskipta)|||1
ZAR = Suðurafrískt rand
ZMK = Zambian Kwacha||0
ZWD = Simbabveskur dalur||0|1
