Merge branch '3.4' into 4.4
* 3.4: [Validator] Add missing translations of nn locale [HttpKernel] Fix that the `Store` would not save responses with the X-Content-Digest header present [Intl] bump icu 67.1
This commit is contained in:
commit
2c57ae2b97
|
@ -175,19 +175,15 @@ class Store implements StoreInterface
|
|||
$key = $this->getCacheKey($request);
|
||||
$storedEnv = $this->persistRequest($request);
|
||||
|
||||
// write the response body to the entity store if this is the original response
|
||||
if (!$response->headers->has('X-Content-Digest')) {
|
||||
$digest = $this->generateContentDigest($response);
|
||||
$digest = $this->generateContentDigest($response);
|
||||
$response->headers->set('X-Content-Digest', $digest);
|
||||
|
||||
if (!$this->save($digest, $response->getContent())) {
|
||||
throw new \RuntimeException('Unable to store the entity.');
|
||||
}
|
||||
if (!$this->save($digest, $response->getContent(), false)) {
|
||||
throw new \RuntimeException('Unable to store the entity.');
|
||||
}
|
||||
|
||||
$response->headers->set('X-Content-Digest', $digest);
|
||||
|
||||
if (!$response->headers->has('Transfer-Encoding')) {
|
||||
$response->headers->set('Content-Length', \strlen($response->getContent()));
|
||||
}
|
||||
if (!$response->headers->has('Transfer-Encoding')) {
|
||||
$response->headers->set('Content-Length', \strlen($response->getContent()));
|
||||
}
|
||||
|
||||
// read existing cache entries, remove non-varying, and add this one to the list
|
||||
|
@ -346,10 +342,14 @@ class Store implements StoreInterface
|
|||
/**
|
||||
* Save data for the given key.
|
||||
*/
|
||||
private function save(string $key, string $data): bool
|
||||
private function save(string $key, string $data, bool $overwrite = true): bool
|
||||
{
|
||||
$path = $this->getPath($key);
|
||||
|
||||
if (!$overwrite && file_exists($path)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isset($this->locks[$key])) {
|
||||
$fp = $this->locks[$key];
|
||||
@ftruncate($fp, 0);
|
||||
|
|
|
@ -97,6 +97,27 @@ class StoreTest extends TestCase
|
|||
$this->assertEquals('en9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', $res['x-content-digest'][0]);
|
||||
}
|
||||
|
||||
public function testDoesNotTrustXContentDigestFromUpstream()
|
||||
{
|
||||
$response = new Response('test', 200, ['X-Content-Digest' => 'untrusted-from-elsewhere']);
|
||||
|
||||
$cacheKey = $this->store->write($this->request, $response);
|
||||
$entries = $this->getStoreMetadata($cacheKey);
|
||||
list(, $res) = $entries[0];
|
||||
|
||||
$this->assertEquals('en9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', $res['x-content-digest'][0]);
|
||||
$this->assertEquals('en9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', $response->headers->get('X-Content-Digest'));
|
||||
}
|
||||
|
||||
public function testWritesResponseEvenIfXContentDigestIsPresent()
|
||||
{
|
||||
// Prime the store
|
||||
$this->store->write($this->request, new Response('test', 200, ['X-Content-Digest' => 'untrusted-from-elsewhere']));
|
||||
|
||||
$response = $this->store->lookup($this->request);
|
||||
$this->assertNotNull($response);
|
||||
}
|
||||
|
||||
public function testFindsAStoredEntryWithLookup()
|
||||
{
|
||||
$this->storeSimpleEntry();
|
||||
|
|
|
@ -82,7 +82,6 @@ class CurrencyDataGenerator extends AbstractDataGenerator
|
|||
|
||||
if (isset($localeBundle['Currencies']) && null !== $localeBundle['Currencies']) {
|
||||
$data = [
|
||||
'Version' => $localeBundle['Version'],
|
||||
'Names' => $this->generateSymbolNamePairs($localeBundle),
|
||||
];
|
||||
|
||||
|
@ -102,7 +101,6 @@ class CurrencyDataGenerator extends AbstractDataGenerator
|
|||
$rootBundle = $reader->read($tempDir, 'root');
|
||||
|
||||
return [
|
||||
'Version' => $rootBundle['Version'],
|
||||
'Names' => $this->generateSymbolNamePairs($rootBundle),
|
||||
];
|
||||
}
|
||||
|
@ -112,7 +110,6 @@ class CurrencyDataGenerator extends AbstractDataGenerator
|
|||
*/
|
||||
protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array
|
||||
{
|
||||
$rootBundle = $reader->read($tempDir, 'root');
|
||||
$supplementalDataBundle = $reader->read($tempDir, 'supplementalData');
|
||||
$numericCodesBundle = $reader->read($tempDir, 'currencyNumericCodes');
|
||||
|
||||
|
@ -121,7 +118,6 @@ class CurrencyDataGenerator extends AbstractDataGenerator
|
|||
sort($this->currencyCodes);
|
||||
|
||||
$data = [
|
||||
'Version' => $rootBundle['Version'],
|
||||
'Currencies' => $this->currencyCodes,
|
||||
'Meta' => $this->generateCurrencyMeta($supplementalDataBundle),
|
||||
'Alpha3ToNumeric' => $this->generateAlpha3ToNumericMapping($numericCodesBundle, $this->currencyCodes),
|
||||
|
|
|
@ -143,7 +143,6 @@ class LanguageDataGenerator extends AbstractDataGenerator
|
|||
}
|
||||
}
|
||||
$data = [
|
||||
'Version' => $localeBundle['Version'],
|
||||
'Names' => $names,
|
||||
'LocalizedNames' => $localizedNames,
|
||||
];
|
||||
|
@ -167,7 +166,6 @@ class LanguageDataGenerator extends AbstractDataGenerator
|
|||
*/
|
||||
protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array
|
||||
{
|
||||
$rootBundle = $reader->read($tempDir, 'root');
|
||||
$metadataBundle = $reader->read($tempDir, 'metadata');
|
||||
|
||||
$this->languageCodes = array_unique($this->languageCodes);
|
||||
|
@ -175,7 +173,6 @@ class LanguageDataGenerator extends AbstractDataGenerator
|
|||
sort($this->languageCodes);
|
||||
|
||||
return [
|
||||
'Version' => $rootBundle['Version'],
|
||||
'Languages' => $this->languageCodes,
|
||||
'Alpha3Languages' => $this->generateAlpha3Codes($this->languageCodes, $metadataBundle),
|
||||
'Alpha2ToAlpha3' => $this->generateAlpha2ToAlpha3Mapping($metadataBundle),
|
||||
|
|
|
@ -116,7 +116,6 @@ class RegionDataGenerator extends AbstractDataGenerator
|
|||
// isset() on \ResourceBundle returns true even if the value is null
|
||||
if (isset($localeBundle['Countries']) && null !== $localeBundle['Countries']) {
|
||||
$data = [
|
||||
'Version' => $localeBundle['Version'],
|
||||
'Names' => $this->generateRegionNames($localeBundle),
|
||||
];
|
||||
|
||||
|
@ -141,7 +140,6 @@ class RegionDataGenerator extends AbstractDataGenerator
|
|||
*/
|
||||
protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array
|
||||
{
|
||||
$rootBundle = $reader->read($tempDir, 'root');
|
||||
$metadataBundle = $reader->read($tempDir, 'metadata');
|
||||
|
||||
$this->regionCodes = array_unique($this->regionCodes);
|
||||
|
@ -153,7 +151,6 @@ class RegionDataGenerator extends AbstractDataGenerator
|
|||
asort($alpha3ToAlpha2);
|
||||
|
||||
return [
|
||||
'Version' => $rootBundle['Version'],
|
||||
'Regions' => $this->regionCodes,
|
||||
'Alpha2ToAlpha3' => $alpha2ToAlpha3,
|
||||
'Alpha3ToAlpha2' => $alpha3ToAlpha2,
|
||||
|
|
|
@ -69,7 +69,6 @@ class ScriptDataGenerator extends AbstractDataGenerator
|
|||
// isset() on \ResourceBundle returns true even if the value is null
|
||||
if (isset($localeBundle['Scripts']) && null !== $localeBundle['Scripts']) {
|
||||
$data = [
|
||||
'Version' => $localeBundle['Version'],
|
||||
'Names' => array_diff_key(iterator_to_array($localeBundle['Scripts']), self::$blacklist),
|
||||
];
|
||||
|
||||
|
@ -94,14 +93,11 @@ class ScriptDataGenerator extends AbstractDataGenerator
|
|||
*/
|
||||
protected function generateDataForMeta(BundleEntryReaderInterface $reader, string $tempDir): ?array
|
||||
{
|
||||
$rootBundle = $reader->read($tempDir, 'root');
|
||||
|
||||
$this->scriptCodes = array_unique($this->scriptCodes);
|
||||
|
||||
sort($this->scriptCodes);
|
||||
|
||||
return [
|
||||
'Version' => $rootBundle['Version'],
|
||||
'Scripts' => $this->scriptCodes,
|
||||
];
|
||||
}
|
||||
|
|
|
@ -94,7 +94,6 @@ class TimezoneDataGenerator extends AbstractDataGenerator
|
|||
}
|
||||
|
||||
$data = [
|
||||
'Version' => $localeBundle['Version'],
|
||||
'Names' => $this->generateZones($reader, $tempDir, $displayLocale),
|
||||
'Meta' => self::generateZoneMetadata($localeBundle),
|
||||
];
|
||||
|
@ -131,7 +130,6 @@ class TimezoneDataGenerator extends AbstractDataGenerator
|
|||
$rootBundle = $reader->read($tempDir, 'root');
|
||||
|
||||
return [
|
||||
'Version' => $rootBundle['Version'],
|
||||
'Meta' => self::generateZoneMetadata($rootBundle),
|
||||
];
|
||||
}
|
||||
|
@ -149,7 +147,6 @@ class TimezoneDataGenerator extends AbstractDataGenerator
|
|||
ksort($this->zoneToCountryMapping);
|
||||
|
||||
$data = [
|
||||
'Version' => $rootBundle['Version'],
|
||||
'Zones' => $this->zoneIds,
|
||||
'ZoneToCountry' => $this->zoneToCountryMapping,
|
||||
'CountryToZone' => self::generateCountryToZoneMapping($this->zoneToCountryMapping),
|
||||
|
|
|
@ -256,7 +256,7 @@ final class Intl
|
|||
*/
|
||||
public static function getIcuStubVersion(): string
|
||||
{
|
||||
return '66.1';
|
||||
return '67.1';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"NAD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
@ -239,7 +238,7 @@
|
|||
],
|
||||
"HRK": [
|
||||
"HRK",
|
||||
"HRK"
|
||||
"የክሮሽያ ኩና"
|
||||
],
|
||||
"HTG": [
|
||||
"HTG",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"DJF": [
|
||||
"Fdj",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ERN": [
|
||||
"Nfk",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"KMF": [
|
||||
"CF",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"SDG": [
|
||||
"SDG",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"SOS": [
|
||||
"S",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"GBP": [
|
||||
"GB£",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AZN": [
|
||||
"₼",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"CNY": [
|
||||
"¥",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"CNY": [
|
||||
"CN¥",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"FRF": [
|
||||
"F",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"BYN": [
|
||||
"BYN",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"EUR": [
|
||||
"EUR",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"LUF": [
|
||||
"F",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ADP": [
|
||||
"ADP",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"BYB": [
|
||||
"BYB",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"EUR": [
|
||||
"€",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"XCD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"XCD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AED": [
|
||||
"AED",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"BBD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"BIF": [
|
||||
"FBu",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"BMD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"BSD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"BWP": [
|
||||
"P",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"BZD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"CAD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AUD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"NZD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AUD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"DKK": [
|
||||
"kr.",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"XCD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ERN": [
|
||||
"Nfk",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"FJD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"FKP": [
|
||||
"£",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"XCD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"GBP": [
|
||||
"£",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"GHS": [
|
||||
"GH₵",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"GBP": [
|
||||
"GB£",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"GMD": [
|
||||
"D",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"GYD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"GBP": [
|
||||
"£",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"VEF": [
|
||||
"VEF",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"GBP": [
|
||||
"£",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"JMD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"KES": [
|
||||
"Ksh",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AUD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"XCD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"KYD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"XCD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"LRD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"ZAR": [
|
||||
"R",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"MGA": [
|
||||
"Ar",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"MOP": [
|
||||
"MOP$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"XCD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"GBP": [
|
||||
"GB£",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"MUR": [
|
||||
"Rs",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"MWK": [
|
||||
"MK",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"MYR": [
|
||||
"RM",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"NAD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AUD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"NGN": [
|
||||
"₦",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"VUV": [
|
||||
"VT",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"AUD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"NZD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"NZD": [
|
||||
"$",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"PGK": [
|
||||
"K",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"PHP": [
|
||||
"₱",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"Version": "36.1",
|
||||
"Names": {
|
||||
"PKR": [
|
||||
"Rs",
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue