# 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 = ADP||0|1
AED = AED
AFA = AFA|||1
AFN = AFN||0
ALK = ALK|||1
ALL = ALL||0
AMD = AMD||0
ANG = ANG
AOA = AOA
AOK = AOK|||1
AON = AON|||1
AOR = AOR|||1
ARA = ARA|||1
ARP = ARP|||1
ARS = ARS
ATS = ATS|||1
AUD = AUD|A$
AWG = AWG
AZM = AZM|||1
AZN = манат|ман.
BAD = BAD|||1
BAM = BAM
BBD = BBD
BDT = BDT
BEC = BEC|||1
BEF = BEF|||1
BEL = BEL|||1
BGL = BGL|||1
BGN = BGN
BHD = BHD||3
BIF = BIF||0
BMD = BMD
BND = BND
BOB = BOB
BOP = BOP|||1
BOV = BOV|||1
BRB = BRB|||1
BRC = BRC|||1
BRE = BRE|||1
BRL = BRL|R$
BRN = BRN|||1
BRR = BRR|||1
BSD = BSD
BTN = BTN
BUK = BUK|||1
BWP = BWP
BYB = BYB|||1
BYN = BYN
BYR = BYR||0|1
BZD = BZD
CAD = CAD|CA$
CDF = CDF
CHE = CHE|||1
CHF = CHF
CHW = CHW|||1
CLP = CLP||0
CNY = CNY|CN¥
COP = COP||0
CRC = CRC
CSD = CSD|||1
CSK = CSK|||1
CUC = CUC
CUP = CUP
CVE = CVE
CYP = CYP|||1
CZK = CZK
DDM = DDM|||1
DEM = DEM|||1
DJF = DJF||0
DKK = DKK
DOP = DOP
DZD = DZD
ECS = ECS|||1
EEK = EEK|||1
EGP = EGP
ERN = ERN
ESA = ESA|||1
ESB = ESB|||1
ESP = ESP||0|1
ETB = ETB
EUR = EUR|€
FIM = FIM|||1
FJD = FJD
FKP = FKP
FRF = FRF|||1
GBP = GBP|£
GEK = GEK|||1
GEL = GEL
GHC = GHC|||1
GHS = GHS
GIP = GIP
GMD = GMD
GNF = GNF||0
GNS = GNS|||1
GQE = GQE|||1
GRD = GRD|||1
GTQ = GTQ
GWE = GWE|||1
GWP = GWP|||1
GYD = GYD||0
HKD = HKD|HK$
HNL = HNL
HRD = HRD|||1
HRK = HRK
HTG = HTG
HUF = HUF
IDR = IDR||0
IEP = IEP|||1
ILP = ILP|||1
ILR = ILR|||1
ILS = ILS|₪
INR = INR|₹
IQD = IQD||0
IRR = IRR||0
ISJ = ISJ|||1
ISK = ISK||0
ITL = ITL||0|1
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
LSL = LSL
LTL = LTL|||1
LTT = LTT|||1
LUC = LUC|||1
LUF = LUF||0|1
LUL = LUL|||1
LVL = LVL|||1
LVR = LVR|||1
LYD = LYD||3
MAD = MAD
MAF = MAF|||1
MDL = MDL
MGA = MGA||0
MGF = MGF||0|1
MKD = MKD
MKN = MKN|||1
MLF = MLF|||1
MMK = MMK||0
MNT = MNT||0
MOP = MOP
MRO = MRO||0
MTP = MTP|||1
MUR = MUR||0
MVR = MVR
MWK = MWK
MXN = MXN|MX$
MXP = MXP|||1
MYR = MYR
MZE = MZE|||1
MZM = MZM|||1
MZN = MZN
NAD = NAD
NGN = NGN
NIC = NIC|||1
NIO = NIO
NLG = NLG|||1
NOK = NOK
NPR = NPR
NZD = NZD|NZ$
OMR = OMR||3
PAB = PAB
PEI = PEI|||1
PEN = PEN
PES = PES|||1
PGK = PGK
PHP = PHP
PKR = PKR||0
PLN = PLN
PLZ = PLZ|||1
PTE = PTE|||1
PYG = PYG||0
QAR = QAR
RHD = RHD|||1
ROL = ROL|||1
RON = RON
RSD = RSD||0
RUB = RUB
RUR = RUR|||1
RWF = RWF||0
SAR = SAR
SBD = SBD
SCR = SCR
SDG = SDG
SEK = SEK
SGD = SGD
SHP = SHP
SIT = SIT|||1
SKK = SKK|||1
SLL = SLL||0
SOS = SOS||0
SRD = SRD
SSP = SSP
STD = STD||0|1
SUR = SUR|||1
SVC = SVC|||1
SYP = SYP||0
SZL = SZL
THB = THB
TJR = TJR|||1
TJS = TJS
TMM = TMM||0|1
TMT = TMT
TND = TND||3
TOP = TOP
TPE = TPE|||1
TRL = TRL||0|1
TRY = TRY|TL
TTD = TTD
TWD = TWD|NT$
TZS = TZS||0
UAH = UAH
UAK = UAK|||1
UGS = UGS|||1
UGX = UGX||0
USD = USD|US$
USN = USN|||1
USS = USS|||1
UYI = UYI||0|1
UYP = UYP|||1
UYU = UYU
UZS = UZS||0
VEB = VEB|||1
VEF = VEF
VND = VND|₫|0
VNN = VNN|||1
VUV = VUV||0
WST = WST
XAF = XAF|FCFA|0
XAG = XAG|||1
XAU = XAU|||1
XCD = XCD|EC$
XFO = XFO|||1
XFU = XFU|||1
XOF = XOF|CFA|0
XPD = XPD|||1
XPF = XPF|CFPF|0
XPT = XPT|||1
XXX = XXX|||1
YDD = YDD|||1
YER = YER||0
YUD = YUD|||1
YUM = YUM|||1
YUN = YUN|||1
ZAL = ZAL|||1
ZAR = ZAR
ZMK = ZMK||0|1
ZMW = ZMW
ZRN = ZRN|||1
ZRZ = ZRZ|||1
ZWD = ZWD||0|1
ZWL = ZWL|||1
ZWR = ZWR|||1
