@jsverse/transloco-locale 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +3 -0
- package/esm2022/index.mjs +8 -0
- package/esm2022/jsverse-transloco-locale.mjs +5 -0
- package/esm2022/lib/helpers.mjs +70 -0
- package/esm2022/lib/locale-currency.mjs +651 -0
- package/esm2022/lib/pipes/base-locale.pipe.mjs +24 -0
- package/esm2022/lib/pipes/index.mjs +6 -0
- package/esm2022/lib/pipes/transloco-currency.pipe.mjs +44 -0
- package/esm2022/lib/pipes/transloco-date.pipe.mjs +43 -0
- package/esm2022/lib/pipes/transloco-decimal.pipe.mjs +39 -0
- package/esm2022/lib/pipes/transloco-percent.pipe.mjs +39 -0
- package/esm2022/lib/shared.mjs +9 -0
- package/esm2022/lib/transloco-locale.config.mjs +18 -0
- package/esm2022/lib/transloco-locale.module.mjs +28 -0
- package/esm2022/lib/transloco-locale.providers.mjs +75 -0
- package/esm2022/lib/transloco-locale.service.mjs +120 -0
- package/esm2022/lib/transloco-locale.transformers.mjs +15 -0
- package/esm2022/lib/transloco-locale.types.mjs +2 -0
- package/fesm2022/jsverse-transloco-locale.mjs +1140 -0
- package/fesm2022/jsverse-transloco-locale.mjs.map +1 -0
- package/index.d.ts +7 -0
- package/lib/helpers.d.ts +15 -0
- package/lib/locale-currency.d.ts +651 -0
- package/lib/pipes/base-locale.pipe.d.ts +13 -0
- package/lib/pipes/index.d.ts +5 -0
- package/lib/pipes/transloco-currency.pipe.d.ts +22 -0
- package/lib/pipes/transloco-date.pipe.d.ts +24 -0
- package/lib/pipes/transloco-decimal.pipe.d.ts +19 -0
- package/lib/pipes/transloco-percent.pipe.d.ts +19 -0
- package/lib/shared.d.ts +2 -0
- package/lib/transloco-locale.config.d.ts +8 -0
- package/lib/transloco-locale.module.d.ts +10 -0
- package/lib/transloco-locale.providers.d.ts +11 -0
- package/lib/transloco-locale.service.d.ts +54 -0
- package/lib/transloco-locale.transformers.d.ts +16 -0
- package/lib/transloco-locale.types.d.ts +151 -0
- package/package.json +49 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2019-2021 Netanel Basal, Shahar Kazaz, and Itay Oded.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
22
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { TranslocoLocaleService } from './lib/transloco-locale.service';
|
|
2
|
+
export { TRANSLOCO_LOCALE_CONFIG, TRANSLOCO_LOCALE_CURRENCY_MAPPING, TRANSLOCO_LOCALE_DEFAULT_CURRENCY, TRANSLOCO_LOCALE_DEFAULT_LOCALE, TRANSLOCO_LOCALE_LANG_MAPPING, } from './lib/transloco-locale.config';
|
|
3
|
+
export { TranslocoLocaleModule } from './lib/transloco-locale.module';
|
|
4
|
+
export { TRANSLOCO_DATE_TRANSFORMER, TRANSLOCO_NUMBER_TRANSFORMER, DefaultDateTransformer, DefaultNumberTransformer, } from './lib/transloco-locale.transformers';
|
|
5
|
+
export { provideTranslocoLocaleLangMapping, provideTranslocoLocaleCurrencyMapping, provideTranslocoDateTransformer, provideTranslocoDefaultCurrency, provideTranslocoLocale, provideTranslocoNumberTransformer, provideTranslocoLocaleConfig, provideTranslocoDefaultLocale, } from './lib/transloco-locale.providers';
|
|
6
|
+
export * from './lib/transloco-locale.types';
|
|
7
|
+
export { TranslocoCurrencyPipe, TranslocoDatePipe, TranslocoDecimalPipe, TranslocoPercentPipe, BaseLocalePipe, } from './lib/pipes';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3RyYW5zbG9jby1sb2NhbGUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQywrQkFBK0IsRUFDL0IsNkJBQTZCLEdBQzlCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUNMLDBCQUEwQixFQUMxQiw0QkFBNEIsRUFHNUIsc0JBQXNCLEVBQ3RCLHdCQUF3QixHQUN6QixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMscUNBQXFDLEVBQ3JDLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0Isc0JBQXNCLEVBQ3RCLGlDQUFpQyxFQUNqQyw0QkFBNEIsRUFDNUIsNkJBQTZCLEdBQzlCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFRyYW5zbG9jb0xvY2FsZVNlcnZpY2UgfSBmcm9tICcuL2xpYi90cmFuc2xvY28tbG9jYWxlLnNlcnZpY2UnO1xuZXhwb3J0IHtcbiAgVFJBTlNMT0NPX0xPQ0FMRV9DT05GSUcsXG4gIFRSQU5TTE9DT19MT0NBTEVfQ1VSUkVOQ1lfTUFQUElORyxcbiAgVFJBTlNMT0NPX0xPQ0FMRV9ERUZBVUxUX0NVUlJFTkNZLFxuICBUUkFOU0xPQ09fTE9DQUxFX0RFRkFVTFRfTE9DQUxFLFxuICBUUkFOU0xPQ09fTE9DQUxFX0xBTkdfTUFQUElORyxcbn0gZnJvbSAnLi9saWIvdHJhbnNsb2NvLWxvY2FsZS5jb25maWcnO1xuZXhwb3J0IHsgVHJhbnNsb2NvTG9jYWxlTW9kdWxlIH0gZnJvbSAnLi9saWIvdHJhbnNsb2NvLWxvY2FsZS5tb2R1bGUnO1xuZXhwb3J0IHtcbiAgVFJBTlNMT0NPX0RBVEVfVFJBTlNGT1JNRVIsXG4gIFRSQU5TTE9DT19OVU1CRVJfVFJBTlNGT1JNRVIsXG4gIFRyYW5zbG9jb0RhdGVUcmFuc2Zvcm1lcixcbiAgVHJhbnNsb2NvTnVtYmVyVHJhbnNmb3JtZXIsXG4gIERlZmF1bHREYXRlVHJhbnNmb3JtZXIsXG4gIERlZmF1bHROdW1iZXJUcmFuc2Zvcm1lcixcbn0gZnJvbSAnLi9saWIvdHJhbnNsb2NvLWxvY2FsZS50cmFuc2Zvcm1lcnMnO1xuZXhwb3J0IHtcbiAgcHJvdmlkZVRyYW5zbG9jb0xvY2FsZUxhbmdNYXBwaW5nLFxuICBwcm92aWRlVHJhbnNsb2NvTG9jYWxlQ3VycmVuY3lNYXBwaW5nLFxuICBwcm92aWRlVHJhbnNsb2NvRGF0ZVRyYW5zZm9ybWVyLFxuICBwcm92aWRlVHJhbnNsb2NvRGVmYXVsdEN1cnJlbmN5LFxuICBwcm92aWRlVHJhbnNsb2NvTG9jYWxlLFxuICBwcm92aWRlVHJhbnNsb2NvTnVtYmVyVHJhbnNmb3JtZXIsXG4gIHByb3ZpZGVUcmFuc2xvY29Mb2NhbGVDb25maWcsXG4gIHByb3ZpZGVUcmFuc2xvY29EZWZhdWx0TG9jYWxlLFxufSBmcm9tICcuL2xpYi90cmFuc2xvY28tbG9jYWxlLnByb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmFuc2xvY28tbG9jYWxlLnR5cGVzJztcbmV4cG9ydCB7XG4gIFRyYW5zbG9jb0N1cnJlbmN5UGlwZSxcbiAgVHJhbnNsb2NvRGF0ZVBpcGUsXG4gIFRyYW5zbG9jb0RlY2ltYWxQaXBlLFxuICBUcmFuc2xvY29QZXJjZW50UGlwZSxcbiAgQmFzZUxvY2FsZVBpcGUsXG59IGZyb20gJy4vbGliL3BpcGVzJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianN2ZXJzZS10cmFuc2xvY28tbG9jYWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28tbG9jYWxlL3NyYy9qc3ZlcnNlLXRyYW5zbG9jby1sb2NhbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { toNumber } from '@jsverse/transloco';
|
|
2
|
+
export const ISO8601_DATE_REGEX = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
|
|
3
|
+
/**
|
|
4
|
+
* check if a given value is in BCP 47 language tag.
|
|
5
|
+
*
|
|
6
|
+
* isLocaleFormat('en') // false,
|
|
7
|
+
* isLocaleFormat('En-us') // false
|
|
8
|
+
* isLocaleFormat('en-US') // true
|
|
9
|
+
*/
|
|
10
|
+
export function isLocaleFormat(val) {
|
|
11
|
+
const irregulars = `en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE|art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang|es-419`;
|
|
12
|
+
const BCPFormat = `[a-z]{2}-[A-Z]{2}`;
|
|
13
|
+
const scriptFormat = `[a-z]{2}-[A-Za-z]{4}`;
|
|
14
|
+
return (typeof val === 'string' &&
|
|
15
|
+
!!val.match(RegExp(`(${irregulars})|(${BCPFormat})|(${scriptFormat})`)));
|
|
16
|
+
}
|
|
17
|
+
export function localizeNumber(value, locale, options) {
|
|
18
|
+
const number = toNumber(value);
|
|
19
|
+
return number !== null
|
|
20
|
+
? new Intl.NumberFormat(locale, options).format(number)
|
|
21
|
+
: '';
|
|
22
|
+
}
|
|
23
|
+
export function localizeDate(date, locale, options) {
|
|
24
|
+
if (isDate(date)) {
|
|
25
|
+
return new Intl.DateTimeFormat(locale, options).format(date);
|
|
26
|
+
}
|
|
27
|
+
return '';
|
|
28
|
+
}
|
|
29
|
+
export function isDate(value) {
|
|
30
|
+
return value instanceof Date && !isNaN(value);
|
|
31
|
+
}
|
|
32
|
+
export function toDate(value) {
|
|
33
|
+
let match;
|
|
34
|
+
if (typeof value === 'string') {
|
|
35
|
+
value = value.trim();
|
|
36
|
+
}
|
|
37
|
+
if (isDate(value)) {
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
if (!isNaN(value - parseFloat(value))) {
|
|
41
|
+
return new Date(parseFloat(value));
|
|
42
|
+
}
|
|
43
|
+
if (typeof value === 'string' && /^(\d{4}-\d{1,2}-\d{1,2})$/.test(value)) {
|
|
44
|
+
const [y, m, d] = value.split('-').map((val) => parseInt(val, 10));
|
|
45
|
+
return new Date(y, m - 1, d);
|
|
46
|
+
}
|
|
47
|
+
if (typeof value === 'string' && (match = value.match(ISO8601_DATE_REGEX))) {
|
|
48
|
+
return isoStringToDate(match);
|
|
49
|
+
}
|
|
50
|
+
return new Date(value);
|
|
51
|
+
}
|
|
52
|
+
export function isoStringToDate(match) {
|
|
53
|
+
const date = new Date(0);
|
|
54
|
+
let tzHour = 0;
|
|
55
|
+
let tzMin = 0;
|
|
56
|
+
const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;
|
|
57
|
+
const timeSetter = match[8] ? date.setUTCHours : date.setHours;
|
|
58
|
+
if (match[9]) {
|
|
59
|
+
tzHour = +(match[9] + match[10]);
|
|
60
|
+
tzMin = +(match[9] + match[11]);
|
|
61
|
+
}
|
|
62
|
+
dateSetter.call(date, +match[1], +match[2] - 1, +match[3]);
|
|
63
|
+
const h = +(match[4] || '0') - tzHour;
|
|
64
|
+
const m = +(match[5] || '0') - tzMin;
|
|
65
|
+
const s = +(match[6] || '0');
|
|
66
|
+
const ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);
|
|
67
|
+
timeSetter.call(date, h, m, s, ms);
|
|
68
|
+
return date;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvLWxvY2FsZS9zcmMvbGliL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTlDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUM3QixzR0FBc0csQ0FBQztBQUN6Rzs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQVE7SUFDckMsTUFBTSxVQUFVLEdBQUcsa09BQWtPLENBQUM7SUFDdFAsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUM7SUFDdEMsTUFBTSxZQUFZLEdBQUcsc0JBQXNCLENBQUM7SUFDNUMsT0FBTyxDQUNMLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFDdkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxNQUFNLFNBQVMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQ3hFLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsS0FBc0IsRUFDdEIsTUFBYyxFQUNkLE9BQWlDO0lBRWpDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixPQUFPLE1BQU0sS0FBSyxJQUFJO1FBQ3BCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDdkQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNULENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixJQUFVLEVBQ1YsTUFBYyxFQUNkLE9BQTBCO0lBRTFCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2hCLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDckU7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQVU7SUFDL0IsT0FBTyxLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQVU7SUFDL0IsSUFBSSxLQUE4QixDQUFDO0lBRW5DLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDdEI7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNqQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDckMsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUNwQztJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN4RSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDOUI7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRTtRQUMxRSxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMvQjtJQUVELE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBdUI7SUFDckQsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3JFLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMvRCxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNaLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ2pDO0lBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsTUFBTSxDQUFDLEdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDOUMsTUFBTSxDQUFDLEdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDN0MsTUFBTSxDQUFDLEdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNyQyxNQUFNLEVBQUUsR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN6RSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuQyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b051bWJlciB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5cbmltcG9ydCB7IExvY2FsZSwgRGF0ZUZvcm1hdE9wdGlvbnMgfSBmcm9tICcuL3RyYW5zbG9jby1sb2NhbGUudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgSVNPODYwMV9EQVRFX1JFR0VYID1cbiAgL14oXFxkezR9KS0/KFxcZFxcZCktPyhcXGRcXGQpKD86VChcXGRcXGQpKD86Oj8oXFxkXFxkKSg/Ojo/KFxcZFxcZCkoPzpcXC4oXFxkKykpPyk/KT8oWnwoWystXSkoXFxkXFxkKTo/KFxcZFxcZCkpPyk/JC87XG4vKipcbiAqIGNoZWNrIGlmIGEgZ2l2ZW4gdmFsdWUgaXMgaW4gQkNQIDQ3IGxhbmd1YWdlIHRhZy5cbiAqXG4gKiBpc0xvY2FsZUZvcm1hdCgnZW4nKSAvLyBmYWxzZSxcbiAqIGlzTG9jYWxlRm9ybWF0KCdFbi11cycpIC8vIGZhbHNlXG4gKiBpc0xvY2FsZUZvcm1hdCgnZW4tVVMnKSAvLyB0cnVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xvY2FsZUZvcm1hdCh2YWw6IGFueSk6IHZhbCBpcyBMb2NhbGUge1xuICBjb25zdCBpcnJlZ3VsYXJzID0gYGVuLUdCLW9lZHxpLWFtaXxpLWJubnxpLWRlZmF1bHR8aS1lbm9jaGlhbnxpLWhha3xpLWtsaW5nb258aS1sdXh8aS1taW5nb3xpLW5hdmFqb3xpLXB3bnxpLXRhb3xpLXRheXxpLXRzdXxzZ24tQkUtRlJ8c2duLUJFLU5MfHNnbi1DSC1ERXxhcnQtbG9qYmFufGNlbC1nYXVsaXNofG5vLWJva3xuby1ueW58emgtZ3VveXV8emgtaGFra2F8emgtbWlufHpoLW1pbi1uYW58emgteGlhbmd8ZXMtNDE5YDtcbiAgY29uc3QgQkNQRm9ybWF0ID0gYFthLXpdezJ9LVtBLVpdezJ9YDtcbiAgY29uc3Qgc2NyaXB0Rm9ybWF0ID0gYFthLXpdezJ9LVtBLVphLXpdezR9YDtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJlxuICAgICEhdmFsLm1hdGNoKFJlZ0V4cChgKCR7aXJyZWd1bGFyc30pfCgke0JDUEZvcm1hdH0pfCgke3NjcmlwdEZvcm1hdH0pYCkpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGl6ZU51bWJlcihcbiAgdmFsdWU6IG51bWJlciB8IHN0cmluZyxcbiAgbG9jYWxlOiBMb2NhbGUsXG4gIG9wdGlvbnM6IEludGwuTnVtYmVyRm9ybWF0T3B0aW9uc1xuKTogc3RyaW5nIHtcbiAgY29uc3QgbnVtYmVyID0gdG9OdW1iZXIodmFsdWUpO1xuICByZXR1cm4gbnVtYmVyICE9PSBudWxsXG4gICAgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCBvcHRpb25zKS5mb3JtYXQobnVtYmVyKVxuICAgIDogJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGl6ZURhdGUoXG4gIGRhdGU6IERhdGUsXG4gIGxvY2FsZTogTG9jYWxlLFxuICBvcHRpb25zOiBEYXRlRm9ybWF0T3B0aW9uc1xuKTogc3RyaW5nIHtcbiAgaWYgKGlzRGF0ZShkYXRlKSkge1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIG9wdGlvbnMgYXMgYW55KS5mb3JtYXQoZGF0ZSk7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oPGFueT52YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUodmFsdWU6IGFueSk6IERhdGUge1xuICBsZXQgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gIH1cblxuICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGlmICghaXNOYU4odmFsdWUgLSBwYXJzZUZsb2F0KHZhbHVlKSkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUocGFyc2VGbG9hdCh2YWx1ZSkpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgL14oXFxkezR9LVxcZHsxLDJ9LVxcZHsxLDJ9KSQvLnRlc3QodmFsdWUpKSB7XG4gICAgY29uc3QgW3ksIG0sIGRdID0gdmFsdWUuc3BsaXQoJy0nKS5tYXAoKHZhbDogc3RyaW5nKSA9PiBwYXJzZUludCh2YWwsIDEwKSk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHksIG0gLSAxLCBkKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIChtYXRjaCA9IHZhbHVlLm1hdGNoKElTTzg2MDFfREFURV9SRUdFWCkpKSB7XG4gICAgcmV0dXJuIGlzb1N0cmluZ1RvRGF0ZShtYXRjaCk7XG4gIH1cblxuICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNvU3RyaW5nVG9EYXRlKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KTogRGF0ZSB7XG4gIGNvbnN0IGRhdGU6IERhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgbGV0IHR6SG91ciA9IDA7XG4gIGxldCB0ek1pbiA9IDA7XG4gIGNvbnN0IGRhdGVTZXR0ZXIgPSBtYXRjaFs4XSA/IGRhdGUuc2V0VVRDRnVsbFllYXIgOiBkYXRlLnNldEZ1bGxZZWFyO1xuICBjb25zdCB0aW1lU2V0dGVyID0gbWF0Y2hbOF0gPyBkYXRlLnNldFVUQ0hvdXJzIDogZGF0ZS5zZXRIb3VycztcbiAgaWYgKG1hdGNoWzldKSB7XG4gICAgdHpIb3VyID0gKyhtYXRjaFs5XSArIG1hdGNoWzEwXSk7XG4gICAgdHpNaW4gPSArKG1hdGNoWzldICsgbWF0Y2hbMTFdKTtcbiAgfVxuICBkYXRlU2V0dGVyLmNhbGwoZGF0ZSwgK21hdGNoWzFdLCArbWF0Y2hbMl0gLSAxLCArbWF0Y2hbM10pO1xuICBjb25zdCBoOiBudW1iZXIgPSArKG1hdGNoWzRdIHx8ICcwJykgLSB0ekhvdXI7XG4gIGNvbnN0IG06IG51bWJlciA9ICsobWF0Y2hbNV0gfHwgJzAnKSAtIHR6TWluO1xuICBjb25zdCBzOiBudW1iZXIgPSArKG1hdGNoWzZdIHx8ICcwJyk7XG4gIGNvbnN0IG1zOiBudW1iZXIgPSBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoJzAuJyArIChtYXRjaFs3XSB8fCAwKSkgKiAxMDAwKTtcbiAgdGltZVNldHRlci5jYWxsKGRhdGUsIGgsIG0sIHMsIG1zKTtcbiAgcmV0dXJuIGRhdGU7XG59XG4iXX0=
|