# 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 = AED
AFN = AFN||0
ALL = ALL||0
AMD = AMD||0
ANG = Голланд Антил гульдени
AOA = AOA
ARS = Аргентина песоси
AUD = AUD|A$
AWG = Аруба флорини
AZN = AZN
BAM = BAM
BBD = Барбадос доллари
BDT = BDT
BGN = BGN
BHD = BHD||3
BIF = BIF||0
BMD = Бермуда доллари
BND = BND
BOB = Боливия болвиани
BRL = Бразил реали|R$
BSD = Багама доллари
BTN = BTN
BWP = BWP
BYN = BYN
BYR = BYR||0|1
BZD = Белиз доллари
CAD = Канада доллари|CA$
CDF = CDF
CHF = CHF
CLP = Чили песоси||0
CNY = Хитой юани|CN¥
COP = Колумбия песоси||0
CRC = Коста-Рика колони
CUC = Куба Айирбошлаш песоси
CUP = Куба песоси
CVE = CVE
CZK = CZK
DJF = DJF||0
DKK = DKK
DOP = Доминикан песоси
DZD = Жазоир динори
EGP = Миср фунти
ERN = ERN
ETB = ETB
EUR = Евро|€
FJD = FJD
FKP = Фолькленд ороли фунти
GBP = Инглиз фунт|£
GEL = GEL
GHS = GHS
GIP = GIP
GMD = GMD
GNF = GNF||0
GTQ = Гватемала кветзали
GYD = Гаяна доллари||0
HKD = HKD|HK$
HNL = Гондурас лемпираси
HRK = HRK
HTG = Гаити гурдаси
HUF = HUF
IDR = IDR||0
ILS = ILS|₪
INR = Ҳинд рупияси|₹
IQD = IQD||0
IRR = IRR||0
ISK = ISK||0
JMD = Ямайка доллари
JOD = JOD||3
JPY = Япон йенаси|JP¥|0
KES = KES
KGS = KGS
KHR = KHR
KMF = KMF||0
KPW = KPW||0
KRW = KRW|₩|0
KWD = KWD||3
KYD = Кайман ороли Доллари
KZT = KZT
LAK = LAK||0
LBP = LBP||0
LKR = LKR
LRD = LRD
LTL = LTL|||1
LVL = LVL|||1
LYD = Ливия динори||3
MAD = Марокаш дирҳами
MDL = MDL
MGA = MGA||0
MKD = MKD
MMK = MMK||0
MNT = MNT||0
MOP = MOP
MRO = MRO||0
MUR = MUR||0
MVR = MVR
MWK = MWK
MXN = Мексика песоси|MX$
MYR = MYR
MZN = MZN
NAD = NAD
NGN = NGN
NIO = Никарагуа кордобаси
NOK = NOK
NPR = NPR
NZD = NZD|NZ$
OMR = OMR||3
PAB = Панама бальбоаси
PEN = Перу сол
PGK = PGK
PHP = PHP
PKR = PKR||0
PLN = PLN
PYG = Парагвай гуарани||0
QAR = QAR
RON = RON
RSD = RSD||0
RUB = Рус рубли
RWF = RWF||0
SAR = SAR
SBD = SBD
SCR = SCR
SDG = SDG
SEK = SEK
SGD = SGD
SHP = SHP
SLL = SLL||0
SOS = SOS||0
SRD = Суринам доллари
SSP = SSP
STD = STD||0|1
SYP = SYP||0
SZL = SZL
THB = THB|฿
TJS = TJS
TMT = TMT
TND = TND||3
TOP = TOP
TRY = TRY|TL
TTD = Тринидад ва Тобаго доллари
TWD = TWD|NT$
TZS = TZS||0
UAH = UAH
UGX = UGX||0
USD = АҚШ доллари|US$
UYU = Уругвай песоси
UZS = Ўзбекистон сўм|сўм|0
VEF = Венесуэла боливари
VND = VND|₫|0
VUV = VUV||0
WST = WST
XAF = XAF|FCFA|0
XCD = Шарқий Кариб доллари|EC$
XOF = XOF|CFA|0
XPF = XPF|CFPF|0
XXX = XXX|||1
YER = YER||0
ZAR = ZAR
ZMW = ZMW
