# 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 = AED
AFN = افغانی|؋|0
ALL = ALL||0
AMD = AMD||0
ANG = ANG
AOA = AOA
ARS = ARS
AUD = AUD|A$
AWG = AWG
AZN = AZN
BAM = BAM
BBD = BBD
BDT = BDT
BGN = BGN
BHD = BHD||3
BIF = BIF||0
BMD = BMD
BND = BND
BOB = BOB
BRL = BRL|R$
BSD = BSD
BTN = BTN
BWP = BWP
BYN = BYN
BYR = BYR||0|1
BZD = BZD
CAD = CAD|CA$
CDF = CDF
CHF = CHF
CLP = CLP||0
CNY = CNY|CN¥
COP = COP||0
CRC = CRC
CUC = CUC
CUP = CUP
CVE = CVE
CZK = CZK
DJF = DJF||0
DKK = DKK
DOP = DOP
DZD = DZD
EGP = EGP
ERN = ERN
ETB = ETB
EUR = EUR|€
FJD = FJD
FKP = FKP
GBP = GBP|£
GEL = GEL
GHS = GHS
GIP = GIP
GMD = GMD
GNF = GNF||0
GTQ = GTQ
GYD = GYD||0
HKD = HKD|HK$
HNL = HNL
HRK = HRK
HTG = HTG
HUF = HUF
IDR = IDR||0
ILS = ILS|₪
INR = INR|₹
IQD = IQD||0
IRR = IRR||0
ISK = ISK||0
JMD = JMD
JOD = JOD||3
JPY = JPY|JP¥|0
KES = KES
KGS = KGS
KHR = KHR
KMF = KMF||0
KPW = KPW||0
KRW = KRW|₩|0
KWD = KWD||3
KYD = KYD
KZT = KZT
LAK = LAK||0
LBP = LBP||0
LKR = LKR
LRD = LRD
LTL = LTL|||1
LVL = LVL|||1
LYD = LYD||3
MAD = MAD
MDL = MDL
MGA = MGA||0
MKD = MKD
MMK = MMK||0
MNT = MNT||0
MOP = MOP
MRO = MRO||0
MUR = MUR||0
MVR = MVR
MWK = MWK
MXN = MXN|MX$
MYR = MYR
MZN = MZN
NAD = NAD
NGN = NGN
NIO = NIO
NOK = NOK
NPR = NPR
NZD = NZD|NZ$
OMR = OMR||3
PAB = PAB
PEN = PEN
PGK = PGK
PHP = PHP
PKR = PKR||0
PLN = PLN
PYG = PYG||0
QAR = QAR
RON = RON
RSD = RSD||0
RUB = RUB
RWF = RWF||0
SAR = SAR
SBD = SBD
SCR = SCR
SDG = SDG
SEK = SEK
SGD = SGD
SHP = SHP
SLL = SLL||0
SOS = SOS||0
SRD = SRD
SSP = SSP
STD = STD||0|1
SYP = SYP||0
SZL = SZL
THB = THB
TJS = TJS
TMT = TMT
TND = TND||3
TOP = TOP
TRY = TRY|TL
TTD = TTD
TWD = TWD|NT$
TZS = TZS||0
UAH = UAH
UGX = UGX||0
USD = USD|US$
UYU = UYU
UZS = UZS||0
VEF = VEF
VND = VND|₫|0
VUV = VUV||0
WST = WST
XAF = XAF|FCFA|0
XCD = XCD|EC$
XOF = XOF|CFA|0
XPF = XPF|CFPF|0
XXX = XXX|||1
YER = YER||0
ZAR = ZAR
ZMW = ZMW
