# 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=xog
AED = Diraamu eya Emireeti
AOA = Kwanza y'Angola
AUD = Doola y'Awusiturelya|$
BHD = Dinaali ya Baareeni||3
BIF = Faranga ya burundi||0
BWP = Pula ya Botiswana
CAD = Doola ya Kanada|CA$
CDF = Faranga ya Kongo
CHF = Faranga ey'eSwitizirandi
CNY = Yuwani Reniminibi ya Cayina|¥
CVE = Esikudo ya Keepu Veredi
DJF = Faranga ya Jjibuti||0
DZD = Dinaali y'Aligerya
EGP = Pawunda ya Misiri
ERN = Nakifa ya Eritureya
ETB = Biiru ya Esyopya
EUR = Yuro|€
GBP = Pawunda ya Bungereza|£
GHC = Sedi ya Gana|||1
GMD = Dalasi ya Gambya
GNS = Faranga ya Gini|||1
INR = Rupiya ya Buyindi|Rs.
JPY = Yeni ya Japani|¥|0
KES = Silingi ya Kenya
KMF = Faranga ya Komoro||0
LRD = Doola ya Liberya
LSL = Loti ya Lesoso
LYD = Dinaali ya Libya||3
MAD = Diraamu ey'eMoroko
MGA = Faranga ey'eMalagase||0
MRO = Wugwiya ey'eMawritenya||0
MUR = Rupiya ey'eMawurisyasi||0
MWK = Kwaca ey'eMalawi
MZM = Metikaali ey'eMozambiiki|||1
NGN = Nayira ey'eNayijerya
RWF = Faranga ey'eRwanda||0
SAR = Riyaali ey'eBuwarabu
SCR = Rupiya ey'eSesere
SDG = Dinaali ey'eSudaani
SDP = Pawunda ey'eSudaani|||1
SHP = Pawunda ey'eSenti Herena
SLL = Lewone||0
SOS = Silingi ey'eSomaliya||0
STD = Dobura ey'eSantome ne Purincipe||0
SZL = Lilangeni
TND = Dinaali ey'eTunizya||3
TZS = Silingi ey'eTanzaniya||0
UGX = Silingi eya Yuganda|USh|0
USD = Doola ey'Amerika|$
XAF = Faranga yamu Afirika ya wakati|FCFA|0
XOF = Faranga yamu Afirika ya bugwanjuba|CFA|0
ZAR = Randi ey'eSawusafirika
ZMK = Kwaca ey'eZambya (1968–2012)||0|1
ZMW = Kwaca ey'eZambya
ZWD = Doola ey'eZimbabwe||0|1
