# 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: 2013-08-29 04:32:04 +0200 (Thu, 29 Aug 2013) $
#  number=$Revision: 9287 $
#  type=az
ADP = ADP||0|1
AED = AED
AFA = AFA|||1
AFN = AFN||0
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|$
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
BYR = BYR||0
BZD = BZD|$
CAD = CAD|CA$
CDF = CDF
CHE = CHE|||1
CHF = CHF
CHW = CHW|||1
CLP = CLP|$|0
CNY = CNY|¥
COP = COP||0
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
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
ILS = ILS|₪
INR = INR|Rs.
IQD = IQD||0
IRR = IRR||0
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
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
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|$
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|$
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
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
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
