# 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 = United Arab Emirates Dirham
AOA = Angolan Kwanzab
AUD = Australian Dollari|A$
BHD = Bahrain Dinar||3
BIF = Burundi Franc||0
BWP = Botswanan Pulab
CAD = Canadian Dollari|CA$
CDF = Congolese Franc
CHF = Swiss Franci
CNY = Chinese Yuan Renminbi|CN¥
CVE = Escudo Caboverdiano
DJF = Djibouti Franc||0
DZD = Algerian Dinar
EGP = Egytian Ponds
ERN = Eritreian Nakfa
ETB = Ethiopian Birr
EUR = Eurob|€
GBP = British Ponds|£
GHC = Ghana Cedi|||1
GMD = Gambia Dalasi
GNS = Guinea Franc|||1
INR = Indian Rupee|₹
JPY = Japanese Yenni|JP¥|0
KES = Kenyan Shilling
KMF = Comorian Franc||0
LRD = Liberian Dollar
LSL = Lesotho Loti
LYD = Libyan Dinar||3
MAD = Moroccan Dirham
MGA = Malagasy Franc||0
MRO = Mauritania Ouguiya||0
MUR = Mauritius Rupeeb||0
MWK = Malawian Kwachab
MZM = Mozambique Metical|||1
NAD = Namibia Dollari|$
NGN = Nigerian Naira
RWF = Rwanda Franci||0
SAR = Saudi Riyal
SCR = Seychelles Rupee
SDG = Sudanese Dinar
SDP = Sudanese Ponds|||1
SHP = St Helena Ponds
SLL = Leone||0
SOS = Somali Shillings||0
STD = Sao Tome and Principe Dobra||0|1
SZL = Lilangeni
TND = Tunisian Dinar||3
TZS = Tanzanian Shillings||0
UGX = Ugandan Shillings||0
USD = US Dollari|US$
XAF = CFA Franc BEAC|FCFA|0
XOF = CFA Franc BCEAO|CFA|0
ZAR = South African Randi
ZMK = Zambian Kwachab (1968–2012)||0|1
ZMW = Zambian Kwachab
ZWD = Zimbabwe Dollari||0|1
