# Copyright 2014 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=25
#  date=$Date: 2014-02-14 23:49:13 +0100 (Fri, 14 Feb 2014) $
#  number=$Revision: 9737 Google $
#  type=root
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
ARL = ARL|||1
ARM = ARM|||1
ARP = ARP|||1
ARS = ARS
ATS = ATS|||1
AUD = AUD|$
AWG = AWG
AZM = AZM|||1
AZN = AZN
BAD = BAD|||1
BAM = BAM
BAN = BAN|||1
BBD = BBD
BDT = BDT|৳
BEC = BEC|||1
BEF = BEF|||1
BEL = BEL|||1
BGL = BGL|||1
BGM = BGM|||1
BGN = BGN
BGO = BGO|||1
BHD = BHD||3
BIF = BIF||0
BMD = BMD|$
BND = BND
BOB = BOB
BOL = BOL|||1
BOP = BOP|||1
BOV = BOV|||1
BRB = BRB|||1
BRC = BRC|||1
BRE = BRE|||1
BRL = BRL|R$
BRN = BRN|||1
BRR = BRR|||1
BRZ = BRZ|||1
BSD = BSD|$
BTN = BTN
BUK = BUK|||1
BWP = BWP
BYB = BYB|||1
BYR = BYR||0
BZD = BZD|$
CAD = CAD|CA$
CDF = CDF
CHE = CHE|||1
CHF = CHF
CHW = CHW|||1
CLE = CLE|||1
CLF = CLF||0|1
CLP = CLP|$|0
CNX = CNX|||1
CNY = CNY|¥
COP = COP||0
COU = COU|||1
CRC = CRC||0
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
ECV = ECV|||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|$
HNL = HNL
HRD = HRD|||1
HRK = HRK
HTG = HTG
HUF = HUF||0
IDR = IDR||0
IEP = IEP|||1
ILP = ILP|||1
ILR = ILR|||1
ILS = ILS|₪
INR = INR|Rs.
IQD = IQD||0
IRR = IRR||0
ISJ = ISJ|||1
ISK = ISK||0
ITL = ITL||0|1
JMD = JMD
JOD = JOD||3
JPY = JPY|¥|0
KES = KES
KGS = KGS
KHR = KHR
KMF = KMF||0
KPW = KPW||0
KRH = KRH|||1
KRO = KRO|||1
KRW = KRW|₩|0
KWD = KWD||3
KYD = KYD|$
KZT = KZT|₸
LAK = LAK||0
LBP = LBP||0
LKR = LKR
LRD = LRD
LSL = LSL
LTL = LTL
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
MCF = MCF|||1
MDC = MDC|||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
MTL = MTL|||1
MTP = MTP|||1
MUR = MUR||0
MVP = MVP|||1
MVR = MVR
MWK = MWK
MXN = MXN|$
MXP = MXP|||1
MXV = MXV|||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|$
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
SDD = SDD|||1
SDG = SDG
SDP = SDP|||1
SEK = SEK
SGD = SGD|$
SHP = SHP
SIT = SIT|||1
SKK = SKK|||1
SLL = SLL||0
SOS = SOS||0
SRD = SRD
SRG = SRG|||1
SSP = SSP|£
STD = STD||0
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
TTD = TTD|$
TWD = TWD|NT$
TZS = TZS||0
UAH = UAH|₴
UAK = UAK|||1
UGS = UGS|||1
UGX = UGX||0
USD = USD|$
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
XBA = XBA|||1
XBB = XBB|||1
XBC = XBC|||1
XBD = XBD|||1
XCD = XCD|EC$
XDR = XDR|||1
XEU = XEU|||1
XFO = XFO|||1
XFU = XFU|||1
XOF = XOF|CFA|0
XPD = XPD|||1
XPF = XPF|CFPF|0
XPT = XPT|||1
XRE = XRE|||1
XSU = XSU|||1
XTS = XTS|||1
XUA = XUA|||1
XXX = XXX|||1
YDD = YDD|||1
YER = YER||0
YUD = YUD|||1
YUM = YUM|||1
YUN = YUN|||1
YUR = YUR|||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
