# 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:
#  cldrVersion=21.0
#  number=$Revision: 6546 $
#  type=root
#  date=$Date: 2012-02-07 13:32:35 -0500 (Tue, 07 Feb 2012) $

AED = Lupila lwa Hufalme dza Huhihalabu
AOA = Lupila lwa Huangola
AUD = Lupila lwa Huaustlalia|AU$
BHD = Lupila lwa Hubahareni||3
BIF = Lupila lwa Huburundi||0
BWP = Lupila lwa Hubotswana
CAD = Lupila lwa Hukanada|CA$
CDF = Lupila lwa Hukongo
CHF = Lupila lwa Huuswisi||||5
CNY = Lupila lwa Huchina|CN¥
CVE = Lupila lwa Hukepuvede
DJF = Lupila lwa Hujibuti||0
DZD = Lupila lwa Hualjelia
EGP = Lupila lwa Humisri
ERN = Lupila lwa Hueritrea
ETB = Lupila lwa Huuhabeshi
EUR = Lupila lwa Yulo|€
GBP = Lupila lwa Huuingereza|UK£
GHC = Lupila lwa Hughana|||1
GMD = Lupila lwa Hugambia
GNS = Lupila lwa Hujine|||1
INR = Lupila lwa Huindia|Rs.
JPY = Lupila lwa Hijapani|JP¥|0
KES = Shilingi ya Hukenya
KMF = Lupila lwa Hukomoro||0
LRD = Lupila lwa Hulibelia
LSL = Lupila lwa Hulesoto
LYD = Lupila lwa Hulibya||3
MAD = Lupila lwa Humoloko
MGA = Lupila lwa Hubukini||0
MRO = Lupila lwa Humolitania||0
MUR = Lupila lwa Humolisi||0
MWK = Lupila lwa Humalawi
MZM = Lupila lwa Humsumbiji|||1
NAD = Lupila lwa Hunamibia
NGN = Lupila lwa Hunijelia
RWF = Lupila lwa Hurwanda||0
SAR = Lupila lwa Husaudi
SCR = Lupila lwa Hushelisheli
SDG = Lupila lwa Husudani
SHP = Lupila lwa Husantahelena
SLL = Lupila lwa Lioni||0
SOS = Lupila lwa Husomalia||0
STD = Lupila lwa Husaotome na Huprinisipe||0
SZL = Lupila lwa Lilangeni
TND = Lupila lwa Hutunisia||3
TZS = Shilingi ya Hutanzania|TSh|0
UGX = Shilingi ya Huuganda||0
USD = Lupila lwa Humalekani|US$
XAF = Lupila lwa CFA BEAC|FCFA|0
XOF = Lupila lwa CFA BCEAO|CFA|0
ZAR = Lupila lwa Huafriaka ya Hukusini
ZMK = Lupila lwa Huzambia||0
ZWD = Lupila lwa Huzimbabwe||0|1
