# 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-13 05:14:13 +0100 (Thu, 13 Feb 2014) $
#  number=$Revision: 9728 $
#  type=root
AED = dirham Emira arab ini
AOA = kwanza angole
AUD = dolar ostralien|$
BHD = dinar bahreïn||3
BIF = fran burunde||0
BWP = pula ya botswane
CAD = dolar kanadien|CA$
CDF = fran kongole
CHF = fran swis
CNY = yuan renminbi sinwa|¥
CVE = eskudo kapverdien
DJF = fran djiboutien||0
DZD = dinar alzerien
EGP = liv ezipsien
ERN = nafka erythreen
ETB = birr etiopien
EUR = euro|€
GBP = liv sterlin|£
GHC = sedi ganeen|||1
GMD = dalasi gambien
GNS = fran gineen|||1
INR = roupi|Rs.
JPY = yen zapone|¥|0
KES = shiling kenyan
KMF = fran komorien||0
LRD = dolar liberien
LSL = loti lezoto
LYD = dinar libien||3
MAD = dirham marokin
MGA = fran malgas||0
MRO = ouguiya moritanien||0
MUR = roupi morisien|Rs|0
MWK = kwacha malawit
MZM = metikal mozanbikin|||1
NAD = dolar namibien|$
NGN = naira nizerian
RWF = fran rwande||0
SAR = rial saoudien
SCR = roupi seselwa
SDG = dinar soudane
SDP = liv soudane|||1
SHP = liv Sainte-Hélène
SLL = leonn Sierra-Leone||0
SOS = shilingi somalien||0
STD = dobra santomeen||0
SZL = lilangeni swazi
TND = dinar tinizien||3
TZS = shiling tanzanien||0
UGX = shiling ougande||0
USD = dolar amerikin|$
XAF = fran CFA (BEAC)|FCFA|0
XOF = fran CFA (BCEAO)|CFA|0
ZAR = rand sid-afrikin
ZMK = kwacha zanbien (1968–2012)||0|1
ZMW = kwacha zanbien
ZWD = dolar zimbawe||0|1
