# 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 = ꖳꕯꔤꗳ ꕉꕟꔬ ꗡꕆꔓꔻ ꔵꕌꕆ
AOA = ꕉꖐꕞ ꖴꕎꘋꕤ
AUD = ꖺꔻꖤꔃꔷꕩ ꕜꕞꕌ|A$
BHD = ꕑꗸꘋ||3
BIF = ꖜꖩꔺ ꖢꕟꘋꕃ||0
BWP = ꕷꖬꕎꕯ ꖛꕞ
CAD = ꕪꕯꕜ ꕜꕞꕌ|CA$
CDF = ꖏꖐꕱ ꖢꕟꘋꕃ
CHF = ꖬꔃꕤ ꖨꕮꕊ ꖢꕟꘋꕃ
CNY = ꕦꕇꔧ ꖳꕎꘋ ꔓꕆꘋꔬ|CN¥
CVE = ꗡꔻꖴꖁ ꕪꕷꗲꗡꔵꕩꖆ
DJF = ꕀꖜꔳ ꖢꕟꘋꕃ||0
DZD = ꕉꔷꕀꔸꕩ ꔵꕯ
EGP = ꕆꔻꕞ ꗁꖻꘋ
ERN = ꔀꔸꔳꕟ ꗁꖻꘋ
ETB = ꔤꕿꖎꔪꕩ ꔫꔤ
EUR = ꖳꖄ|€
GBP = ꔛꔟꔻ ꗁꖻꘋ ꔻꗳꔷꘋ|£
GHC = ꕭꕌꕯ ꔻꔵ|||1
GMD = ꕭꔭꕩ ꕜꕞꔻ
GNS = ꕅꔤꕇ ꖢꕟꘋꕃ|||1
INR = ꔤꔺꕩ ꖩꔪ|₹
JPY = ꕧꕐꕇꔧ ꘂꘋ|JP¥|0
KES = ꔞꕰ ꔻꔝꘋ
KMF = ꖏꖒꖄ ꖢꕟꘋꕃ||0
LRD = ꕞꔤꔫꕩ ꕜꕞꕌ|$
LSL = ꔷꖇꕿ ꖃꔳ
LYD = ꔷꔫꕩ ꔵꕯ||3
MAD = ꗞꕟꖏ ꔵꕌꕆ
MGA = ꕮꕞꕭꕌꔻ ꕉꔸꕩꔸ||0
MRO = ꗞꔸꕚꕇꕰ ꖳꕅꕩ||0
MUR = ꗞꔓꗔ ꖩꔪ||0
MWK = ꕮꕞꕌꔨ ꖴꕎꕦ
MZM = ꗞꕤꔭꕃ ꕆꔳꕪ|||1
NAD = ꕯꕆꔫꕩ ꕜꕞꕌ
NGN = ꕯꔤꕀꔸꕩ ꕯꔤꕟ
RWF = ꕟꖙꕡ ꖢꕟꘋꕃ||0
SAR = ꕢꖙꔵ ꔸꕩꔷ
SCR = ꔖꗼꔷ ꖩꔪ
SDG = ꖬꗵꘋ ꗁꖻꘋ
SHP = ꔻꘋ ꗥꔷꕯ ꗁꖻꘋ
SLL = ꔷꗚꘋ||0
SOS = ꖇꕮꔷ ꔻꔝꘋ||0
STD = ꕢꕴ ꕿꔈ ꗪ ꕉ ꕗꕴ ꖁꖜꕟ||0|1
SZL = ꔷꕞꔟꕇ
TND = ꖤꕇꔻꕩ ꔵꕯ||3
TZS = ꕚꘋꕤꕇꕰ ꔻꔝꘋ||0
UGX = ꖳꕭꕡ ꔻꔝꘋ||0
USD = ꕶꕱ ꕜꕞ|US$
ZAR = ꕉꔱꔸꕪ ꗛꔤ ꔒꘋꗣ ꗏ ꕟꘋꔵ
ZMK = ꕤꔭꕩ ꖴꕎꕦ (1968–2012)||0|1
ZMW = ꕤꔭꕩ ꖴꕎꕦ
ZWD = ꔽꕓꖜꔃ ꕜꕞ||0|1
