@sumaris-net/ngx-components 18.3.30-alpha1 → 18.4.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/doc/changelog.md +16 -13
- package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
- package/esm2022/src/app/shared/inputs.mjs +3 -2
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +39 -27
- package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +134 -80
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +21 -106
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +1 -1
- package/esm2022/src/app/shared/material/material.testing.module.mjs +3 -14
- package/esm2022/src/app/shared/material/test/test-component.mjs +48 -24
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +3 -3
- package/fesm2022/sumaris-net.ngx-components.mjs +317 -323
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/shared/material/latlong/latlong.utils.d.ts +24 -6
- package/src/app/shared/material/latlong/material.latlong-input.d.ts +9 -5
- package/src/app/shared/material/latlong/material.latlong.d.ts +1 -15
- package/src/assets/i18n/en-US.json +12 -20
- package/src/assets/i18n/en.json +8 -16
- package/src/assets/i18n/fr.json +8 -16
- package/src/assets/manifest.json +1 -1
- package/src/theme/_material.scss +5 -0
|
@@ -21,6 +21,18 @@ export const MASKS = {
|
|
|
21
21
|
DD: [SIGN, D, D, D, '.', D, D, D, D, D, D, D, '°'],
|
|
22
22
|
},
|
|
23
23
|
};
|
|
24
|
+
export const MASK_RANGES = {
|
|
25
|
+
latitude: {
|
|
26
|
+
DDMMSS: getInputSelectionRangesFromMask(MASKS.latitude.DDMMSS),
|
|
27
|
+
DDMM: getInputSelectionRangesFromMask(MASKS.latitude.DDMM),
|
|
28
|
+
DD: getInputSelectionRangesFromMask(MASKS.latitude.DD),
|
|
29
|
+
},
|
|
30
|
+
longitude: {
|
|
31
|
+
DDMMSS: getInputSelectionRangesFromMask(MASKS.longitude.DDMMSS),
|
|
32
|
+
DDMM: getInputSelectionRangesFromMask(MASKS.longitude.DDMM),
|
|
33
|
+
DD: getInputSelectionRangesFromMask(MASKS.longitude.DD),
|
|
34
|
+
},
|
|
35
|
+
};
|
|
24
36
|
export const LAT_LONG_PATTERN_MAX_DECIMALS = 3;
|
|
25
37
|
export const LAT_LONG_VALUE_MAX_DECIMALS = 7;
|
|
26
38
|
const DEFAULT_OPTIONS = {
|
|
@@ -50,48 +62,46 @@ export function formatLatLong(value, type, opts) {
|
|
|
50
62
|
export function formatLatitude(value, opts) {
|
|
51
63
|
if (value === undefined || value === null)
|
|
52
64
|
return null;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const finalOpts = { ...DEFAULT_LATITUDE_OPTIONS, ...opts };
|
|
65
|
+
const finalOpts = {
|
|
66
|
+
...DEFAULT_LATITUDE_OPTIONS,
|
|
67
|
+
fixLatLong: true,
|
|
68
|
+
...opts,
|
|
69
|
+
};
|
|
59
70
|
let fieldsValues;
|
|
60
71
|
switch (opts.pattern) {
|
|
61
72
|
case 'DDMMSS':
|
|
62
|
-
fieldsValues =
|
|
73
|
+
fieldsValues = splitDegreesToDDMMSSArray(value, finalOpts);
|
|
63
74
|
break;
|
|
64
75
|
case 'DDMM':
|
|
65
|
-
fieldsValues =
|
|
76
|
+
fieldsValues = splitDegreesToDDMMArray(value, finalOpts);
|
|
66
77
|
break;
|
|
67
78
|
default: // DD is the default
|
|
68
|
-
fieldsValues =
|
|
79
|
+
fieldsValues = splitDegreesToDDArray(value, finalOpts);
|
|
69
80
|
}
|
|
70
|
-
return fieldsValues.length > 0 ? formatFieldsArrayToString(fieldsValues,
|
|
81
|
+
return fieldsValues.length > 0 ? formatFieldsArrayToString(fieldsValues, finalOpts) : '';
|
|
71
82
|
}
|
|
72
83
|
export function formatLongitude(value, opts) {
|
|
73
84
|
if (value === undefined || value === null)
|
|
74
85
|
return null;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
let fieldsValues;
|
|
86
|
+
const finalOpts = {
|
|
87
|
+
...DEFAULT_LONGITUDE_OPTIONS,
|
|
88
|
+
fixLatLong: true,
|
|
89
|
+
...opts,
|
|
90
|
+
};
|
|
91
|
+
let parts;
|
|
82
92
|
switch (opts.pattern) {
|
|
83
93
|
case 'DDMMSS':
|
|
84
|
-
|
|
94
|
+
parts = splitDegreesToDDMMSSArray(value, finalOpts);
|
|
85
95
|
break;
|
|
86
96
|
case 'DDMM':
|
|
87
|
-
|
|
97
|
+
parts = splitDegreesToDDMMArray(value, finalOpts);
|
|
88
98
|
break;
|
|
89
99
|
default: // DD is the default
|
|
90
|
-
|
|
100
|
+
parts = splitDegreesToDDArray(value, finalOpts);
|
|
91
101
|
}
|
|
92
|
-
return
|
|
102
|
+
return parts.length > 0 ? formatFieldsArrayToString(parts, finalOpts) : '';
|
|
93
103
|
}
|
|
94
|
-
export function
|
|
104
|
+
export function splitDegreesToDDArray(value, opts) {
|
|
95
105
|
const negative = value < 0;
|
|
96
106
|
if (negative)
|
|
97
107
|
value *= -1;
|
|
@@ -114,7 +124,7 @@ export function splitNumberToFieldsDD(value, opts) {
|
|
|
114
124
|
}
|
|
115
125
|
}
|
|
116
126
|
}
|
|
117
|
-
export function
|
|
127
|
+
export function splitDegreesToDDMMArray(value, opts) {
|
|
118
128
|
const negative = value < 0;
|
|
119
129
|
value = Math.abs(value);
|
|
120
130
|
if (opts.fixLatLong) {
|
|
@@ -154,7 +164,7 @@ export function splitNumberToFieldsDDMM(value, opts) {
|
|
|
154
164
|
result[0] = -1 * result[0];
|
|
155
165
|
return result;
|
|
156
166
|
}
|
|
157
|
-
export function
|
|
167
|
+
export function splitDegreesToDDMMSSArray(value, opts) {
|
|
158
168
|
const negative = value < 0;
|
|
159
169
|
value = Math.abs(value);
|
|
160
170
|
if (opts.fixLatLong) {
|
|
@@ -200,14 +210,16 @@ function fixValue(value, longitude) {
|
|
|
200
210
|
}
|
|
201
211
|
return value;
|
|
202
212
|
}
|
|
203
|
-
function formatFieldsArrayToString(values,
|
|
213
|
+
function formatFieldsArrayToString(values, opts) {
|
|
214
|
+
const pattern = opts.pattern || 'DD';
|
|
215
|
+
const mask = MASKS[opts.longitude ? 'longitude' : 'latitude'][pattern];
|
|
216
|
+
const inputSelectionRanges = MASK_RANGES[opts.longitude ? 'longitude' : 'latitude'][pattern];
|
|
204
217
|
const negative = values[0].toString().slice(0, 1) === '-';
|
|
205
218
|
if (typeof values[0] === 'number') {
|
|
206
219
|
// Normalize degrees to be OK when convert to string
|
|
207
220
|
values[0] = Math.abs(values[0]);
|
|
208
221
|
}
|
|
209
222
|
let result = '';
|
|
210
|
-
const inputSelectionRanges = opts.inputSelectionRanges;
|
|
211
223
|
const placeholderChar = opts.placeholderChar;
|
|
212
224
|
inputSelectionRanges.forEach((range, idx) => {
|
|
213
225
|
// "start" and "end" are used to get symbol chars from mask placeholder
|
|
@@ -304,4 +316,4 @@ function roundFloat(input, maxDecimals) {
|
|
|
304
316
|
}
|
|
305
317
|
return input;
|
|
306
318
|
}
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG9uZy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbGF0bG9uZy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixvQ0FBb0MsRUFDcEMsbUNBQW1DLEVBQ25DLG9DQUFvQyxHQUNyQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJeEMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDbEIsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO0FBQ3RCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQVlwQixNQUFNLENBQUMsTUFBTSxLQUFLLEdBSWQ7SUFDRixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ2hFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxF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RUFBRSxXQUFXLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBYSxFQUFFLFdBQW9CO0lBQ3JELElBQUksV0FBVyxLQUFLLFNBQVMsSUFBSSxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEQsK0RBQStEO1FBQy9ELE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERFRkFVTFRfUExBQ0VIT0xERVJfQ0hBUixcbiAgRU1QVFlfUExBQ0VIT0xERVJfQ0hBUixcbiAgRU1QVFlfUExBQ0VIT0xERVJfQ0hBUl9SRUdFWFBfR0xPQkFMLFxuICBQTFVTX1BMQUNFSE9MREVSX0NIQVJfUkVHRVhQX0dMT0JBTCxcbiAgU1BBQ0VfUExBQ0VIT0xERVJfQ0hBUl9SRUdFWFBfR0xPQkFMLFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0SW5wdXRTZWxlY3Rpb25SYW5nZXNGcm9tTWFzayB9IGZyb20gJy4uLy4uL2lucHV0cyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgTGF0TG9uZ1R5cGUgPSAnbGF0aXR1ZGUnIHwgJ2xvbmdpdHVkZSc7XG5leHBvcnQgZGVjbGFyZSB0eXBlIExhdExvbmdQYXR0ZXJuID0gJ0RETU1TUycgfCAnRERNTScgfCAnREQnO1xuZXhwb3J0IGNvbnN0IExBVF9MT05HX1BBVFRFUk5TOiBMYXRMb25nUGF0dGVybltdID0gWydERE1NU1MnLCAnRERNTScsICdERCddO1xuXG5jb25zdCBEID0gL1xcZHxcXHMvO1xuY29uc3QgRDUgPSAvWzAtNV18XFxzLztcbmNvbnN0IE0gPSBEO1xuY29uc3QgTTUgPSBENTtcbmNvbnN0IFMgPSBEO1xuY29uc3QgUzUgPSBENTtcbmNvbnN0IFNJR04gPSAvWystXS87XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgTGF0TG9uZ1NpZ24gPSAnKycgfCAnLSc7XG5leHBvcnQgZGVjbGFyZSB0eXBlIExhdExvbmdTaWduVmFsdWUgPSAxIHwgLTE7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxhdExvbmdEYXRhIHtcbiAgZGVncmVlczogbnVtYmVyO1xuICBtaW51dGVzOiBudW1iZXI7XG4gIHNlY29uZHM6IG51bWJlcjtcbiAgc2lnbjogTGF0TG9uZ1NpZ25WYWx1ZTtcbn1cblxuZXhwb3J0IGNvbnN0IE1BU0tTOiB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBbcGF0dGVybjogc3RyaW5nXTogQXJyYXk8c3RyaW5nIHwgUmVnRXhwPjtcbiAgfTtcbn0gPSB7XG4gIGxhdGl0dWRlOiB7XG4gICAgRERNTVNTOiBbRCwgRCwgJ8KwJywgJyAnLCBNNSwgTSwgXCInXCIsICcgJywgUzUsIFMsICcuJywgUywgUywgJ1wiJ10sXG4gICAgRERNTTogW0QsIEQsICfCsCcsICcgJywgTTUsIE0sICcuJywgTSwgTSwgTSwgXCInXCJdLFxuICAgIEREOiBbU0lHTiwgJyAnLCBELCBELCAnLicsIEQsIEQsIEQsIEQsIEQsIEQsIEQsICfCsCddLFxuICB9LFxuICBsb25naXR1ZGU6IHtcbiAgICBERE1NU1M6IFtELCBELCBELCAnwrAnLCAnICcsIE01LCBNLCBcIidcIiwgJyAnLCBTNSwgUywgJy4nLCBTLCBTLCAnXCInXSxcbiAgICBERE1NOiBbRCwgRCwgRCwgJ8KwJywgJyAnLCBNNSwgTSwgJy4nLCBNLCBNLCBNLCBcIidcIl0sXG4gICAgREQ6IFtTSUdOLCBELCBELCBELCAnLicsIEQsIEQsIEQsIEQsIEQsIEQsIEQsICfCsCddLFxuICB9LFxufTtcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgTGF0TG9uZ0Zvcm1hdE9wdGlvbnMge1xuICBwYXR0ZXJuOiBMYXRMb25nUGF0dGVybjtcbiAgbWF4RGVjaW1hbHM/OiBudW1iZXI7XG4gIHBsYWNlaG9sZGVyQ2hhcj86IHN0cmluZztcbiAgaGlkZVNpZ24/OiBib29sZWFuO1xuICBpbnB1dFNlbGVjdGlvblJhbmdlcz86IG51bWJlcltdW107XG4gIGZpeExhdExvbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgTEFUX0xPTkdfUEFUVEVSTl9NQVhfREVDSU1BTFMgPSAzO1xuZXhwb3J0IGNvbnN0IExBVF9MT05HX1ZBTFVFX01BWF9ERUNJTUFMUyA9IDc7XG5cbmNvbnN0IERFRkFVTFRfT1BUSU9OUyA9IDxMYXRMb25nRm9ybWF0T3B0aW9ucz57XG4gIHBhdHRlcm46ICdERE1NJyxcbiAgbWF4RGVjaW1hbHM6IExBVF9MT05HX1BBVFRFUk5fTUFYX0RFQ0lNQUxTLFxuICBwbGFjZWhvbGRlckNoYXI6IERFRkFVTFRfUExBQ0VIT0xERVJfQ0hBUixcbn07XG5jb25zdCBERUZBVUxUX0xBVElUVURFX09QVElPTlM6IExhdExvbmdGb3JtYXRPcHRpb25zICYgeyBsb25naXR1ZGU6IGJvb2xlYW4gfSA9IHtcbiAgLi4uREVGQVVMVF9PUFRJT05TLFxuICBsb25naXR1ZGU6IGZhbHNlLFxufTtcbmNvbnN0IERFRkFVTFRfTE9OR0lUVURFX09QVElPTlM6IExhdExvbmdGb3JtYXRPcHRpb25zICYgeyBsb25naXR1ZGU6IGJvb2xlYW4gfSA9IHtcbiAgLi4uREVGQVVMVF9PUFRJT05TLFxuICBsb25naXR1ZGU6IHRydWUsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZURlY2ltYWxQYXJ0KHZhbHVlOiBudW1iZXIsIG5iT2ZEZWNpbWFsczogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbHVlICogMTAgKiogKG5iT2ZEZWNpbWFscyAqIC0xKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdExhdExvbmcodmFsdWU6IG51bWJlciwgdHlwZTogTGF0TG9uZ1R5cGUsIG9wdHM/OiBQYXJ0aWFsPExhdExvbmdGb3JtYXRPcHRpb25zPikge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdsYXRpdHVkZSc6XG4gICAgICByZXR1cm4gZm9ybWF0TGF0aXR1ZGUodmFsdWUsIG9wdHMpO1xuICAgIGNhc2UgJ2xvbmdpdHVkZSc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZ2l0dWRlKHZhbHVlLCBvcHRzKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TGF0aXR1ZGUodmFsdWU6IG51bWJlciB8IG51bGwsIG9wdHM/OiBQYXJ0aWFsPExhdExvbmdGb3JtYXRPcHRpb25zPik6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICBvcHRzLnBhdHRlcm4gPSBvcHRzPy5wYXR0ZXJuID8/ICdERCc7XG4gIGNvbnN0IG1hc2sgPSBNQVNLU1snbGF0aXR1ZGUnXVtvcHRzLnBhdHRlcm5dO1xuICBvcHRzLmlucHV0U2VsZWN0aW9uUmFuZ2VzID0gb3B0cz8uaW5wdXRTZWxlY3Rpb25SYW5nZXMgPz8gZ2V0SW5wdXRTZWxlY3Rpb25SYW5nZXNGcm9tTWFzayhtYXNrKTtcbiAgb3B0cy5wbGFjZWhvbGRlckNoYXIgPSBvcHRzPy5wbGFjZWhvbGRlckNoYXIgPz8gREVGQVVMVF9QTEFDRUhPTERFUl9DSEFSO1xuICBvcHRzLmZpeExhdExvbmcgPSBvcHRzPy5maXhMYXRMb25nID8/IHRydWU7XG4gIGNvbnN0IGZpbmFsT3B0czogTGF0TG9uZ0Zvcm1hdE9wdGlvbnMgJiB7IGxvbmdpdHVkZTogYm9vbGVhbiB9ID0geyAuLi5ERUZBVUxUX0xBVElUVURFX09QVElPTlMsIC4uLm9wdHMgfTtcblxuICBsZXQgZmllbGRzVmFsdWVzOiBhbnlbXTtcbiAgc3dpdGNoIChvcHRzLnBhdHRlcm4pIHtcbiAgICBjYXNlICdERE1NU1MnOlxuICAgICAgZmllbGRzVmFsdWVzID0gc3BsaXROdW1iZXJUb0ZpZWxkc0RETU1TUyh2YWx1ZSwgZmluYWxPcHRzKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0RETU0nOlxuICAgICAgZmllbGRzVmFsdWVzID0gc3BsaXROdW1iZXJUb0ZpZWxkc0RETU0odmFsdWUsIGZpbmFsT3B0cyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OiAvLyBERCBpcyB0aGUgZGVmYXVsdFxuICAgICAgZmllbGRzVmFsdWVzID0gc3BsaXROdW1iZXJUb0ZpZWxkc0REKHZhbHVlLCBmaW5hbE9wdHMpO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkc1ZhbHVlcy5sZW5ndGggPiAwID8gZm9ybWF0RmllbGRzQXJyYXlUb1N0cmluZyhmaWVsZHNWYWx1ZXMsIG1hc2ssIGZpbmFsT3B0cykgOiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdExvbmdpdHVkZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCwgb3B0cz86IFBhcnRpYWw8TGF0TG9uZ0Zvcm1hdE9wdGlvbnM+KTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBudWxsO1xuXG4gIG9wdHMucGF0dGVybiA9IG9wdHM/LnBhdHRlcm4gPz8gJ0REJztcbiAgY29uc3QgbWFzayA9IE1BU0tTWydsb25naXR1ZGUnXVtvcHRzLnBhdHRlcm5dO1xuICBvcHRzLmlucHV0U2VsZWN0aW9uUmFuZ2VzID0gb3B0cz8uaW5wdXRTZWxlY3Rpb25SYW5nZXMgPz8gZ2V0SW5wdXRTZWxlY3Rpb25SYW5nZXNGcm9tTWFzayhtYXNrKTtcbiAgb3B0cy5wbGFjZWhvbGRlckNoYXIgPSBvcHRzPy5wbGFjZWhvbGRlckNoYXIgPz8gREVGQVVMVF9QTEFDRUhPTERFUl9DSEFSO1xuICBvcHRzLmZpeExhdExvbmcgPSBvcHRzPy5maXhMYXRMb25nID8/IHRydWU7XG4gIGNvbnN0IGZpbmFsT3B0czogTGF0TG9uZ0Zvcm1hdE9wdGlvbnMgJiB7IGxvbmdpdHVkZTogYm9vbGVhbiB9ID0geyAuLi5ERUZBVUxUX0xPTkdJVFVERV9PUFRJT05TLCAuLi5vcHRzIH07XG5cbiAgbGV0IGZpZWxkc1ZhbHVlczogYW55W107XG4gIHN3aXRjaCAob3B0cy5wYXR0ZXJuKSB7XG4gICAgY2FzZSAnRERNTVNTJzpcbiAgICAgIGZpZWxkc1ZhbHVlcyA9IHNwbGl0TnVtYmVyVG9GaWVsZHNERE1NU1ModmFsdWUsIGZpbmFsT3B0cyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdERE1NJzpcbiAgICAgIGZpZWxkc1ZhbHVlcyA9IHNwbGl0TnVtYmVyVG9GaWVsZHNERE1NKHZhbHVlLCBmaW5hbE9wdHMpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDogLy8gREQgaXMgdGhlIGRlZmF1bHRcbiAgICAgIGZpZWxkc1ZhbHVlcyA9IHNwbGl0TnVtYmVyVG9GaWVsZHNERCh2YWx1ZSwgZmluYWxPcHRzKTtcbiAgfVxuXG4gIHJldHVybiBmaWVsZHNWYWx1ZXMubGVuZ3RoID4gMCA/IGZvcm1hdEZpZWxkc0FycmF5VG9TdHJpbmcoZmllbGRzVmFsdWVzLCBtYXNrLCBmaW5hbE9wdHMpIDogJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdE51bWJlclRvRmllbGRzREQodmFsdWU6IG51bWJlciwgb3B0czogTGF0TG9uZ0Zvcm1hdE9wdGlvbnMgJiB7IGxvbmdpdHVkZTogYm9vbGVhbiB9KTogKG51bWJlciB8IHN0cmluZylbXSB7XG4gIGNvbnN0IG5lZ2F0aXZlID0gdmFsdWUgPCAwO1xuICBpZiAobmVnYXRpdmUpIHZhbHVlICo9IC0xO1xuXG4gIGlmIChvcHRzLmZpeExhdExvbmcpIHtcbiAgICB2YWx1ZSA9IGZpeFZhbHVlKHZhbHVlLCBvcHRzLmxvbmdpdHVkZSk7XG4gIH1cblxuICBjb25zdCBzaWduID0gbmVnYXRpdmUgPyAnLScgOiAnKyc7XG4gIGNvbnN0IGRlZ3JlZXNGaWVsZHMgPSByb3VuZEZsb2F0KHZhbHVlLCBvcHRzLm1heERlY2ltYWxzKS50b1N0cmluZygpLnNwbGl0KCcuJyk7XG4gIGNvbnN0IGRlZ3JlZXMgPSBwYXJzZUludChkZWdyZWVzRmllbGRzWzBdKTtcbiAgaWYgKGRlZ3JlZXNGaWVsZHMubGVuZ3RoID4gMSkge1xuICAgIGNvbnN0IGRlZ3JlZXNUZWVucyA9IHBhcnNlSW50KGRlZ3JlZXNGaWVsZHNbMV0pICogMTAgKiogKG9wdHMubWF4RGVjaW1hbHMgLSBkZWdyZWVzRmllbGRzWzFdLmxlbmd0aCk7XG4gICAgcmV0dXJuIFtzaWduLCBkZWdyZWVzLCBkZWdyZWVzVGVlbnNdO1xuICB9IGVsc2Uge1xuICAgIGlmIChkZWdyZWVzRmllbGRzWzBdID09PSBgMWUtJHtvcHRzLm1heERlY2ltYWxzfWApIHtcbiAgICAgIHJldHVybiBbc2lnbiwgMCwgMSAvIChwYXJzZUZsb2F0KGRlZ3JlZXNGaWVsZHNbMF0pICogMTAgKiogb3B0cy5tYXhEZWNpbWFscyldO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3NpZ24sIGRlZ3JlZXNdO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXROdW1iZXJUb0ZpZWxkc0RETU0odmFsdWU6IG51bWJlciwgb3B0czogTGF0TG9uZ0Zvcm1hdE9wdGlvbnMgJiB7IGxvbmdpdHVkZTogYm9vbGVhbiB9KTogbnVtYmVyW10ge1xuICBjb25zdCBuZWdhdGl2ZSA9IHZhbHVlIDwgMDtcbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSk7XG5cbiAgaWYgKG9wdHMuZml4TGF0TG9uZykge1xuICAgIHZhbHVlID0gZml4VmFsdWUodmFsdWUsIG9wdHMubG9uZ2l0dWRlKTtcbiAgfVxuXG4gIGxldCBkZWdyZWVzOiBudW1iZXIgPSAobmVnYXRpdmUgPyAtMSA6IDEpICogTWF0aC50cnVuYyh2YWx1ZSk7XG4gIGNvbnN0IG1pbnV0ZXNGaWVsZHMgPSByb3VuZEZsb2F0KCh2YWx1ZSAtIGRlZ3JlZXMpICogNjAsIG9wdHMubWF4RGVjaW1hbHMpXG4gICAgLnRvU3RyaW5nKClcbiAgICAuc3BsaXQoJy4nKTtcblxuICBsZXQgbWludXRlcyA9IHBhcnNlSW50KG1pbnV0ZXNGaWVsZHNbMF0pO1xuICBsZXQgbWludXRlc1RlZW5zOiBudW1iZXI7XG4gIGlmIChtaW51dGVzRmllbGRzLmxlbmd0aCA+IDEpIHtcbiAgICBtaW51dGVzVGVlbnMgPSBwYXJzZUludChtaW51dGVzRmllbGRzWzFdKTtcbiAgICBpZiAobWludXRlc0ZpZWxkc1sxXS5sZW5ndGggPT09IDEpIG1pbnV0ZXNUZWVucyAqPSAxMDA7XG4gICAgZWxzZSBpZiAobWludXRlc0ZpZWxkc1sxXS5sZW5ndGggPT09IDIpIG1pbnV0ZXNUZWVucyAqPSAxMDtcbiAgfSBlbHNlIHtcbiAgICBtaW51dGVzVGVlbnMgPSAwO1xuICB9XG5cbiAgd2hpbGUgKG1pbnV0ZXMgPj0gNjApIHtcbiAgICBtaW51dGVzIC09IDYwO1xuICAgIGRlZ3JlZXMgKz0gMTtcbiAgfVxuXG4gIC8vIFRoZSByZWR1Y2UgcmVtb3ZlIGFsbCByaWdodCB6ZXJvc1xuICBjb25zdCByZXN1bHQgPSBbbWludXRlc1RlZW5zLCBtaW51dGVzLCBkZWdyZWVzXVxuICAgIC5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICBpZiAoYWNjLmxlbmd0aCA+IDAgfHwgdmFsID4gMCkge1xuICAgICAgICBhY2MucHVzaCh2YWwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSlcbiAgICAucmV2ZXJzZSgpO1xuXG4gIC8vIFJlLWFkZCBzaWduIG9uIGRlZ3JlZXNcbiAgaWYgKG5lZ2F0aXZlKSByZXN1bHRbMF0gPSAtMSAqIHJlc3VsdFswXTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXROdW1iZXJUb0ZpZWxkc0RETU1TUyh2YWx1ZTogbnVtYmVyLCBvcHRzOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH0pOiBudW1iZXJbXSB7XG4gIGNvbnN0IG5lZ2F0aXZlID0gdmFsdWUgPCAwO1xuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKTtcblxuICBpZiAob3B0cy5maXhMYXRMb25nKSB7XG4gICAgdmFsdWUgPSBmaXhWYWx1ZSh2YWx1ZSwgb3B0cy5sb25naXR1ZGUpO1xuICB9XG5cbiAgbGV0IGRlZ3JlZXM6IG51bWJlciA9IE1hdGgudHJ1bmModmFsdWUpO1xuICBsZXQgbWludXRlczogbnVtYmVyIHwgc3RyaW5nID0gTWF0aC50cnVuYygodmFsdWUgLSBkZWdyZWVzKSAqIDYwKTtcbiAgY29uc3Qgc2Vjb25kRmllbGRzOiBzdHJpbmdbXSA9IHJvdW5kRmxvYXQoKCh2YWx1ZSAtIGRlZ3JlZXMpICogNjAgLSBtaW51dGVzKSAqIDYwLCBvcHRzLm1heERlY2ltYWxzKVxuICAgIC50b1N0cmluZygpXG4gICAgLnNwbGl0KCcuJyk7XG4gIGxldCBzZWNvbmRzOiBudW1iZXIgPSBwYXJzZUludChzZWNvbmRGaWVsZHNbMF0pO1xuICBjb25zdCBtaWxpc2Vjb25kczogbnVtYmVyID0gc2Vjb25kRmllbGRzLmxlbmd0aCA+IDEgPyBwYXJzZUludChzZWNvbmRGaWVsZHNbMV0pICogKHNlY29uZEZpZWxkc1sxXS5sZW5ndGggPT09IDEgPyAxMCA6IDEpIDogMDtcblxuICB3aGlsZSAoc2Vjb25kcyA+PSA2MCkge1xuICAgIHNlY29uZHMgLT0gNjA7XG4gICAgbWludXRlcyArPSAxO1xuICB9XG4gIHdoaWxlIChtaW51dGVzID49IDYwKSB7XG4gICAgbWludXRlcyAtPSA2MDtcbiAgICBkZWdyZWVzICs9IDE7XG4gIH1cblxuICAvLyBUaGUgcmVkdWNlIHJlbW92ZSBhbGwgcmlnaHQgemVyb3NcbiAgY29uc3QgcmVzdWx0ID0gW21pbGlzZWNvbmRzLCBzZWNvbmRzLCBtaW51dGVzLCBkZWdyZWVzXVxuICAgIC5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICBpZiAoYWNjLmxlbmd0aCA+IDAgfHwgdmFsID4gMCkge1xuICAgICAgICBhY2MucHVzaCh2YWwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSlcbiAgICAucmV2ZXJzZSgpO1xuXG4gIC8vIFJlLWFkZCBzaWduIG9uIGRlZ3JlZXNcbiAgaWYgKG5lZ2F0aXZlKSByZXN1bHRbMF0gPSAtMSAqIHJlc3VsdFswXTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBmaXhWYWx1ZSh2YWx1ZTogbnVtYmVyLCBsb25naXR1ZGU6IGJvb2xlYW4pIHtcbiAgLy8gRml4IGxvbmdpdHVkZSB3aGVuIG91dHNpZGUgWy0xODAsIDE4MF1cbiAgaWYgKGxvbmdpdHVkZSAmJiAodmFsdWUgPiAxODAgfHwgdmFsdWUgPCAtMTgwKSkge1xuICAgIHZhbHVlICU9IDE4MDtcbiAgfVxuICAvLyBGaXggbGF0aXR1ZGUgd2hlbiBvdXRzaWRlIFstOTAsIDkwXVxuICBlbHNlIGlmICghbG9uZ2l0dWRlICYmICh2YWx1ZSA+IDkwIHx8IHZhbHVlIDwgLTkwKSkge1xuICAgIHZhbHVlICU9IDkwO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RmllbGRzQXJyYXlUb1N0cmluZyhcbiAgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICBtYXNrOiAoc3RyaW5nIHwgUmVnRXhwKVtdLFxuICBvcHRzOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH1cbik6IHN0cmluZyB7XG4gIGNvbnN0IG5lZ2F0aXZlID0gdmFsdWVzWzBdLnRvU3RyaW5nKCkuc2xpY2UoMCwgMSkgPT09ICctJztcbiAgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09ICdudW1iZXInKSB7XG4gICAgLy8gTm9ybWFsaXplIGRlZ3JlZXMgdG8gYmUgT0sgd2hlbiBjb252ZXJ0IHRvIHN0cmluZ1xuICAgIHZhbHVlc1swXSA9IE1hdGguYWJzKHZhbHVlc1swXSk7XG4gIH1cblxuICBsZXQgcmVzdWx0ID0gJyc7XG4gIGNvbnN0IGlucHV0U2VsZWN0aW9uUmFuZ2VzID0gb3B0cy5pbnB1dFNlbGVjdGlvblJhbmdlcztcbiAgY29uc3QgcGxhY2Vob2xkZXJDaGFyID0gb3B0cy5wbGFjZWhvbGRlckNoYXI7XG4gIGlucHV0U2VsZWN0aW9uUmFuZ2VzLmZvckVhY2goKHJhbmdlLCBpZHgpID0+IHtcbiAgICAvLyBcInN0YXJ0XCIgYW5kIFwiZW5kXCIgYXJlIHVzZWQgdG8gZ2V0IHN5bWJvbCBjaGFycyBmcm9tIG1hc2sgcGxhY2Vob2xkZXJcbiAgICAvLyAoYmV0d2VlbiB2YWx1YWJsZXMgY2hhcmFjdGVycylcbiAgICBjb25zdCBsYXN0ID0gaWR4ID09PSBpbnB1dFNlbGVjdGlvblJhbmdlcy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IHN0YXJ0ID0gcmFuZ2VbMV0gKyAxO1xuICAgIGNvbnN0IGVuZCA9IGxhc3QgPyBtYXNrLmxlbmd0aCA6IGlucHV0U2VsZWN0aW9uUmFuZ2VzW2lkeCArIDFdWzBdO1xuICAgIGNvbnN0IHNpemUgPSByYW5nZVsxXSAtIHJhbmdlWzBdICsgMTtcbiAgICBjb25zdCBzeW1ib2wgPSBtYXNrLnNsaWNlKHN0YXJ0LCBlbmQpLmpvaW4oJycpO1xuICAgIGlmIChpZHggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICBsZXQgdmFsdWUgPSB2YWx1ZXNbaWR4XS50b1N0cmluZygpO1xuICAgICAgdmFsdWUgPSB2YWx1ZS5wYWRTdGFydChzaXplLCBsYXN0ID8gJzAnIDogcGxhY2Vob2xkZXJDaGFyKTtcbiAgICAgIGlmIChsYXN0ICYmIHBsYWNlaG9sZGVyQ2hhciA9PT0gJycpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8wKiQvLCBwbGFjZWhvbGRlckNoYXIpO1xuICAgICAgfVxuICAgICAgcmVzdWx0ICs9IHZhbHVlICsgc3ltYm9sO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyAnJyBhcyBmaWxsQ2hhciA9IGRvbid0IGZpbGxcbiAgICAgIGlmIChwbGFjZWhvbGRlckNoYXIgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gJycudG9TdHJpbmcoKS5wYWRTdGFydChzaXplLCBwbGFjZWhvbGRlckNoYXIpO1xuICAgICAgICByZXN1bHQgKz0gdmFsdWUgKyBzeW1ib2w7XG4gICAgICB9XG4gICAgICAvLyBBdm9pZCBsYXN0IGNoYXIgZG90LCByZXBsYWNlIGl0IHdpdGggcmVhbCBsYXN0IHN5bWJvbFxuICAgICAgLy8gMDEuMDBcIiAtPlxuICAgICAgLy8gICAgICBPSzogIDFcIlxuICAgICAgLy8gICAgICBLTzogIDEuXG4gICAgICBpZiAobGFzdCAmJiByZXN1bHQuc2xpY2UoLTEpID09PSAnLicpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIC0xKTtcbiAgICAgICAgaWYgKHN5bWJvbCkge1xuICAgICAgICAgIHJlc3VsdCArPSBzeW1ib2w7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGxldCBzaWduID0gJyc7XG4gIGlmICghb3B0cz8uaGlkZVNpZ24gJiYgb3B0cy5wYXR0ZXJuICE9PSAnREQnKSB7XG4gICAgaWYgKG9wdHMubG9uZ2l0dWRlKSB7XG4gICAgICBzaWduID0gbmVnYXRpdmUgPyAnIFcnIDogJyBFJztcbiAgICB9IGVsc2Uge1xuICAgICAgc2lnbiA9IG5lZ2F0aXZlID8gJyBTJyA6ICcgTic7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdHMuaGlkZVNpZ24gJiYgb3B0cy5wYXR0ZXJuID09PSAnREQnKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoL15cXCsvLCAnICcpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCArIHNpZ247XG59XG5cbi8vIDM2wrA1Nyc5XCIgTiAgPSAzNi45NTI1MDAwXG4vLyAxMMKwNCcyMVwiIFcgPSAtMTAuMDcyNTAwMFxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGF0aXR1ZGVPckxvbmdpdHVkZShpbnB1dDogc3RyaW5nLCBwYXR0ZXJuOiBzdHJpbmcsIG1heERlY2ltYWxzPzogbnVtYmVyLCBwbGFjZWhvbGRlckNoYXI/OiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgcGxhY2Vob2xkZXJDaGFyID0gcGxhY2Vob2xkZXJDaGFyIHx8IERFRkFVTFRfUExBQ0VIT0xERVJfQ0hBUjtcbiAgbGV0IGlucHV0Rml4ID0gaW5wdXQudHJpbSgpO1xuICBpZiAocGxhY2Vob2xkZXJDaGFyID09PSBFTVBUWV9QTEFDRUhPTERFUl9DSEFSKSB7XG4gICAgaW5wdXRGaXggPSBpbnB1dEZpeFxuICAgICAgLy8gUmVwbGFjZSBlbXB0eSBjaGFyIHBsYWNlaG9sZGVyXG4gICAgICAucmVwbGFjZShFTVBUWV9QTEFDRUhPTERFUl9DSEFSX1JFR0VYUF9HTE9CQUwsICcnKVxuICAgICAgLy8gUmVtb3ZlIHNwYWNlIGFuZCAnKycgKD0gdHJpbSBvbiBlYWNoIHBhcnRzKVxuICAgICAgLnJlcGxhY2UoU1BBQ0VfUExBQ0VIT0xERVJfQ0hBUl9SRUdFWFBfR0xPQkFMLCAnJylcbiAgICAgIC5yZXBsYWNlKFBMVVNfUExBQ0VIT0xERVJfQ0hBUl9SRUdFWFBfR0xPQkFMLCAnJyk7XG4gIH1cbiAgLy8gUmVtb3ZlIGFsbCBwbGFjZWhvbGRlciAoPSB0cmltIG9uIGVhY2ggcGFydHMpXG4gIGVsc2Uge1xuICAgIGlucHV0Rml4ID0gaW5wdXRGaXgucmVwbGFjZShuZXcgUmVnRXhwKGBbICske3BsYWNlaG9sZGVyQ2hhcn1dK2AsICdnJyksICcnKTtcbiAgfVxuXG4gIC8vREVCVUcgY29uc29sZS5kZWJ1ZyhcIlBhcnNpbmcgbGF0PSBcIiArIGlucHV0Rml4KTtcbiAgY29uc3QgcGFydHMgPSBpbnB1dEZpeC5zcGxpdCgvW14tXFxkXFx3LixdKy8pO1xuICBsZXQgZGVncmVlcyA9IHBhcnNlRmxvYXQocGFydHNbMF0ucmVwbGFjZSgvLC9nLCAnLicpKTtcbiAgaWYgKGlzTmFOKGRlZ3JlZXMpKSB7XG4gICAgY29uc29sZS5kZWJ1ZygncGFyc2VMYXRpdHVkZU9yTG9uZ2l0dWRlICcgKyBpbnB1dCArICcgLT4gSW52YWxpZCBkZWdyZWVzIChOYU4pLiBQYXJ0cyBmb3VuZDonLCBwYXJ0cyk7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIGlmIChwYXR0ZXJuID09PSAnREQnKSB7XG4gICAgcmV0dXJuIHJvdW5kRmxvYXQoZGVncmVlcywgbWF4RGVjaW1hbHMpO1xuICB9XG5cbiAgY29uc3QgbWludXRlcyA9ICgocGF0dGVybiA9PT0gJ0RETU1TUycgfHwgcGF0dGVybiA9PT0gJ0RETU0nKSAmJiBwYXJ0c1sxXSAmJiBwYXJzZUZsb2F0KHBhcnRzWzFdLnJlcGxhY2UoLywvZywgJy4nKSkpIHx8IDA7XG4gIGNvbnN0IHNlY29uZHMgPSAocGF0dGVybiA9PT0gJ0RETU1TUycgJiYgcGFydHNbMl0gJiYgcGFyc2VGbG9hdChwYXJ0c1syXS5yZXBsYWNlKC8sL2csICcuJykpKSB8fCAwO1xuICBjb25zdCBkaXJlY3Rpb24gPSAocGF0dGVybiA9PT0gJ0RETU1TUycgJiYgcGFydHNbM10pIHx8IChwYXR0ZXJuID09PSAnRERNTScgJiYgcGFydHNbMl0pIHx8IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2lnbiA9IGRpcmVjdGlvbiAmJiAoZGlyZWN0aW9uID09PSAncycgfHwgZGlyZWN0aW9uID09PSAnUycgfHwgZGlyZWN0aW9uID09PSAndycgfHwgZGlyZWN0aW9uID09PSAnVycpID8gLTEgOiAxO1xuXG4gIHJldHVybiBjb21wdXRlRGVjaW1hbERlZ3JlZXMoZGVncmVlcywgbWludXRlcywgc2Vjb25kcywgc2lnbiwgbWF4RGVjaW1hbHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZURlY2ltYWxEZWdyZWVzKGRlZ3JlZXM6IG51bWJlciwgbWludXRlczogbnVtYmVyLCBzZWNvbmRzOiBudW1iZXIsIHNpZ246IC0xIHwgMSwgbWF4RGVjaW1hbHM/OiBudW1iZXIpIHtcbiAgaWYgKGlzTmlsKGRlZ3JlZXMpKSByZXR1cm4gbnVsbDtcbiAgZGVncmVlcyA9IChzaWduIHx8IDEpICogKGRlZ3JlZXMgKyAobWludXRlcyB8fCAwKSAvIDYwICsgKHNlY29uZHMgfHwgMCkgLyAoNjAgKiA2MCkpO1xuICByZXR1cm4gcm91bmRGbG9hdChkZWdyZWVzLCBtYXhEZWNpbWFscyk7XG59XG5cbmZ1bmN0aW9uIHJvdW5kRmxvYXQoaW5wdXQ6IG51bWJlciwgbWF4RGVjaW1hbHM/OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAobWF4RGVjaW1hbHMgIT09IHVuZGVmaW5lZCAmJiBtYXhEZWNpbWFscyA+PSAwKSB7XG4gICAgLy8gVXRpbGlzYXRpb24gZGUgdG9GaXhlZCBwb3VyIGfDqXJlciBsZXMgcHJvYmzDqG1lcyBkZSBwcsOpY2lzaW9uXG4gICAgY29uc3Qgc3RyID0gaW5wdXQudG9GaXhlZChtYXhEZWNpbWFscyk7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKTtcbiAgfVxuICByZXR1cm4gaW5wdXQ7XG59XG4iXX0=
|
|
319
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG9uZy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbGF0bG9uZy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixvQ0FBb0MsRUFDcEMsbUNBQW1DLEVBQ25DLG9DQUFvQyxHQUNyQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJeEMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDbEIsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO0FBQ3RCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQVlwQixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUNoRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUs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Q0FBQztJQUNyRixPQUFPLFVBQVUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEtBQWEsRUFBRSxXQUFvQjtJQUNyRCxJQUFJLFdBQVcsS0FBSyxTQUFTLElBQUksV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xELCtEQUErRDtRQUMvRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBERUZBVUxUX1BMQUNFSE9MREVSX0NIQVIsXG4gIEVNUFRZX1BMQUNFSE9MREVSX0NIQVIsXG4gIEVNUFRZX1BMQUNFSE9MREVSX0NIQVJfUkVHRVhQX0dMT0JBTCxcbiAgUExVU19QTEFDRUhPTERFUl9DSEFSX1JFR0VYUF9HTE9CQUwsXG4gIFNQQUNFX1BMQUNFSE9MREVSX0NIQVJfUkVHRVhQX0dMT0JBTCxcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2sgfSBmcm9tICcuLi8uLi9pbnB1dHMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIExhdExvbmdUeXBlID0gJ2xhdGl0dWRlJyB8ICdsb25naXR1ZGUnO1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBMYXRMb25nUGF0dGVybiA9ICdERE1NU1MnIHwgJ0RETU0nIHwgJ0REJztcbmV4cG9ydCBjb25zdCBMQVRfTE9OR19QQVRURVJOUzogTGF0TG9uZ1BhdHRlcm5bXSA9IFsnRERNTVNTJywgJ0RETU0nLCAnREQnXTtcblxuY29uc3QgRCA9IC9cXGR8XFxzLztcbmNvbnN0IEQ1ID0gL1swLTVdfFxccy87XG5jb25zdCBNID0gRDtcbmNvbnN0IE01ID0gRDU7XG5jb25zdCBTID0gRDtcbmNvbnN0IFM1ID0gRDU7XG5jb25zdCBTSUdOID0gL1srLV0vO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIExhdExvbmdTaWduID0gJysnIHwgJy0nO1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBMYXRMb25nU2lnblZhbHVlID0gMSB8IC0xO1xuXG5leHBvcnQgaW50ZXJmYWNlIElMYXRMb25nRGF0YSB7XG4gIGRlZ3JlZXM6IG51bWJlcjtcbiAgbWludXRlczogbnVtYmVyO1xuICBzZWNvbmRzOiBudW1iZXI7XG4gIHNpZ246IExhdExvbmdTaWduVmFsdWU7XG59XG5cbmV4cG9ydCBjb25zdCBNQVNLUyA9IHtcbiAgbGF0aXR1ZGU6IHtcbiAgICBERE1NU1M6IFtELCBELCAnwrAnLCAnICcsIE01LCBNLCBcIidcIiwgJyAnLCBTNSwgUywgJy4nLCBTLCBTLCAnXCInXSxcbiAgICBERE1NOiBbRCwgRCwgJ8KwJywgJyAnLCBNNSwgTSwgJy4nLCBNLCBNLCBNLCBcIidcIl0sXG4gICAgREQ6IFtTSUdOLCAnICcsIEQsIEQsICcuJywgRCwgRCwgRCwgRCwgRCwgRCwgRCwgJ8KwJ10sXG4gIH0sXG4gIGxvbmdpdHVkZToge1xuICAgIERETU1TUzogW0QsIEQsIEQsICfCsCcsICcgJywgTTUsIE0sIFwiJ1wiLCAnICcsIFM1LCBTLCAnLicsIFMsIFMsICdcIiddLFxuICAgIERETU06IFtELCBELCBELCAnwrAnLCAnICcsIE01LCBNLCAnLicsIE0sIE0sIE0sIFwiJ1wiXSxcbiAgICBERDogW1NJR04sIEQsIEQsIEQsICcuJywgRCwgRCwgRCwgRCwgRCwgRCwgRCwgJ8KwJ10sXG4gIH0sXG59O1xuZXhwb3J0IGNvbnN0IE1BU0tfUkFOR0VTID0ge1xuICBsYXRpdHVkZToge1xuICAgIERETU1TUzogZ2V0SW5wdXRTZWxlY3Rpb25SYW5nZXNGcm9tTWFzayhNQVNLUy5sYXRpdHVkZS5ERE1NU1MpLFxuICAgIERETU06IGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2soTUFTS1MubGF0aXR1ZGUuRERNTSksXG4gICAgREQ6IGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2soTUFTS1MubGF0aXR1ZGUuREQpLFxuICB9LFxuICBsb25naXR1ZGU6IHtcbiAgICBERE1NU1M6IGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2soTUFTS1MubG9uZ2l0dWRlLkRETU1TUyksXG4gICAgRERNTTogZ2V0SW5wdXRTZWxlY3Rpb25SYW5nZXNGcm9tTWFzayhNQVNLUy5sb25naXR1ZGUuRERNTSksXG4gICAgREQ6IGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2soTUFTS1MubG9uZ2l0dWRlLkREKSxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIExhdExvbmdGb3JtYXRPcHRpb25zIHtcbiAgcGF0dGVybjogTGF0TG9uZ1BhdHRlcm47XG4gIG1heERlY2ltYWxzPzogbnVtYmVyO1xuICBwbGFjZWhvbGRlckNoYXI/OiBzdHJpbmc7XG4gIGhpZGVTaWduPzogYm9vbGVhbjtcbiAgZml4TGF0TG9uZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBMQVRfTE9OR19QQVRURVJOX01BWF9ERUNJTUFMUyA9IDM7XG5leHBvcnQgY29uc3QgTEFUX0xPTkdfVkFMVUVfTUFYX0RFQ0lNQUxTID0gNztcblxuY29uc3QgREVGQVVMVF9PUFRJT05TID0gPExhdExvbmdGb3JtYXRPcHRpb25zPntcbiAgcGF0dGVybjogJ0RETU0nLFxuICBtYXhEZWNpbWFsczogTEFUX0xPTkdfUEFUVEVSTl9NQVhfREVDSU1BTFMsXG4gIHBsYWNlaG9sZGVyQ2hhcjogREVGQVVMVF9QTEFDRUhPTERFUl9DSEFSLFxufTtcbmNvbnN0IERFRkFVTFRfTEFUSVRVREVfT1BUSU9OUzogTGF0TG9uZ0Zvcm1hdE9wdGlvbnMgJiB7IGxvbmdpdHVkZTogYm9vbGVhbiB9ID0ge1xuICAuLi5ERUZBVUxUX09QVElPTlMsXG4gIGxvbmdpdHVkZTogZmFsc2UsXG59O1xuY29uc3QgREVGQVVMVF9MT05HSVRVREVfT1BUSU9OUzogTGF0TG9uZ0Zvcm1hdE9wdGlvbnMgJiB7IGxvbmdpdHVkZTogYm9vbGVhbiB9ID0ge1xuICAuLi5ERUZBVUxUX09QVElPTlMsXG4gIGxvbmdpdHVkZTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlRGVjaW1hbFBhcnQodmFsdWU6IG51bWJlciwgbmJPZkRlY2ltYWxzOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gdmFsdWUgKiAxMCAqKiAobmJPZkRlY2ltYWxzICogLTEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TGF0TG9uZyh2YWx1ZTogbnVtYmVyLCB0eXBlOiBMYXRMb25nVHlwZSwgb3B0cz86IFBhcnRpYWw8TGF0TG9uZ0Zvcm1hdE9wdGlvbnM+KSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2xhdGl0dWRlJzpcbiAgICAgIHJldHVybiBmb3JtYXRMYXRpdHVkZSh2YWx1ZSwgb3B0cyk7XG4gICAgY2FzZSAnbG9uZ2l0dWRlJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25naXR1ZGUodmFsdWUsIG9wdHMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRMYXRpdHVkZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCwgb3B0cz86IFBhcnRpYWw8TGF0TG9uZ0Zvcm1hdE9wdGlvbnM+KTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGZpbmFsT3B0cyA9IHtcbiAgICAuLi5ERUZBVUxUX0xBVElUVURFX09QVElPTlMsXG4gICAgZml4TGF0TG9uZzogdHJ1ZSxcbiAgICAuLi5vcHRzLFxuICB9O1xuXG4gIGxldCBmaWVsZHNWYWx1ZXM6IGFueVtdO1xuICBzd2l0Y2ggKG9wdHMucGF0dGVybikge1xuICAgIGNhc2UgJ0RETU1TUyc6XG4gICAgICBmaWVsZHNWYWx1ZXMgPSBzcGxpdERlZ3JlZXNUb0RETU1TU0FycmF5KHZhbHVlLCBmaW5hbE9wdHMpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnRERNTSc6XG4gICAgICBmaWVsZHNWYWx1ZXMgPSBzcGxpdERlZ3JlZXNUb0RETU1BcnJheSh2YWx1ZSwgZmluYWxPcHRzKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6IC8vIEREIGlzIHRoZSBkZWZhdWx0XG4gICAgICBmaWVsZHNWYWx1ZXMgPSBzcGxpdERlZ3JlZXNUb0REQXJyYXkodmFsdWUsIGZpbmFsT3B0cyk7XG4gIH1cblxuICByZXR1cm4gZmllbGRzVmFsdWVzLmxlbmd0aCA+IDAgPyBmb3JtYXRGaWVsZHNBcnJheVRvU3RyaW5nKGZpZWxkc1ZhbHVlcywgZmluYWxPcHRzKSA6ICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TG9uZ2l0dWRlKHZhbHVlOiBudW1iZXIgfCBudWxsLCBvcHRzPzogUGFydGlhbDxMYXRMb25nRm9ybWF0T3B0aW9ucz4pOiBzdHJpbmcge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgZmluYWxPcHRzID0ge1xuICAgIC4uLkRFRkFVTFRfTE9OR0lUVURFX09QVElPTlMsXG4gICAgZml4TGF0TG9uZzogdHJ1ZSxcbiAgICAuLi5vcHRzLFxuICB9O1xuXG4gIGxldCBwYXJ0czogYW55W107XG4gIHN3aXRjaCAob3B0cy5wYXR0ZXJuKSB7XG4gICAgY2FzZSAnRERNTVNTJzpcbiAgICAgIHBhcnRzID0gc3BsaXREZWdyZWVzVG9ERE1NU1NBcnJheSh2YWx1ZSwgZmluYWxPcHRzKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0RETU0nOlxuICAgICAgcGFydHMgPSBzcGxpdERlZ3JlZXNUb0RETU1BcnJheSh2YWx1ZSwgZmluYWxPcHRzKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6IC8vIEREIGlzIHRoZSBkZWZhdWx0XG4gICAgICBwYXJ0cyA9IHNwbGl0RGVncmVlc1RvRERBcnJheSh2YWx1ZSwgZmluYWxPcHRzKTtcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5sZW5ndGggPiAwID8gZm9ybWF0RmllbGRzQXJyYXlUb1N0cmluZyhwYXJ0cywgZmluYWxPcHRzKSA6ICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXREZWdyZWVzVG9EREFycmF5KHZhbHVlOiBudW1iZXIsIG9wdHM6IExhdExvbmdGb3JtYXRPcHRpb25zICYgeyBsb25naXR1ZGU6IGJvb2xlYW4gfSk6IChudW1iZXIgfCBzdHJpbmcpW10ge1xuICBjb25zdCBuZWdhdGl2ZSA9IHZhbHVlIDwgMDtcbiAgaWYgKG5lZ2F0aXZlKSB2YWx1ZSAqPSAtMTtcblxuICBpZiAob3B0cy5maXhMYXRMb25nKSB7XG4gICAgdmFsdWUgPSBmaXhWYWx1ZSh2YWx1ZSwgb3B0cy5sb25naXR1ZGUpO1xuICB9XG5cbiAgY29uc3Qgc2lnbiA9IG5lZ2F0aXZlID8gJy0nIDogJysnO1xuICBjb25zdCBkZWdyZWVzRmllbGRzID0gcm91bmRGbG9hdCh2YWx1ZSwgb3B0cy5tYXhEZWNpbWFscykudG9TdHJpbmcoKS5zcGxpdCgnLicpO1xuICBjb25zdCBkZWdyZWVzID0gcGFyc2VJbnQoZGVncmVlc0ZpZWxkc1swXSk7XG4gIGlmIChkZWdyZWVzRmllbGRzLmxlbmd0aCA+IDEpIHtcbiAgICBjb25zdCBkZWdyZWVzVGVlbnMgPSBwYXJzZUludChkZWdyZWVzRmllbGRzWzFdKSAqIDEwICoqIChvcHRzLm1heERlY2ltYWxzIC0gZGVncmVlc0ZpZWxkc1sxXS5sZW5ndGgpO1xuICAgIHJldHVybiBbc2lnbiwgZGVncmVlcywgZGVncmVlc1RlZW5zXTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoZGVncmVlc0ZpZWxkc1swXSA9PT0gYDFlLSR7b3B0cy5tYXhEZWNpbWFsc31gKSB7XG4gICAgICByZXR1cm4gW3NpZ24sIDAsIDEgLyAocGFyc2VGbG9hdChkZWdyZWVzRmllbGRzWzBdKSAqIDEwICoqIG9wdHMubWF4RGVjaW1hbHMpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtzaWduLCBkZWdyZWVzXTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0RGVncmVlc1RvRERNTUFycmF5KHZhbHVlOiBudW1iZXIsIG9wdHM6IExhdExvbmdGb3JtYXRPcHRpb25zICYgeyBsb25naXR1ZGU6IGJvb2xlYW4gfSk6IG51bWJlcltdIHtcbiAgY29uc3QgbmVnYXRpdmUgPSB2YWx1ZSA8IDA7XG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpO1xuXG4gIGlmIChvcHRzLmZpeExhdExvbmcpIHtcbiAgICB2YWx1ZSA9IGZpeFZhbHVlKHZhbHVlLCBvcHRzLmxvbmdpdHVkZSk7XG4gIH1cblxuICBsZXQgZGVncmVlczogbnVtYmVyID0gKG5lZ2F0aXZlID8gLTEgOiAxKSAqIE1hdGgudHJ1bmModmFsdWUpO1xuICBjb25zdCBtaW51dGVzRmllbGRzID0gcm91bmRGbG9hdCgodmFsdWUgLSBkZWdyZWVzKSAqIDYwLCBvcHRzLm1heERlY2ltYWxzKVxuICAgIC50b1N0cmluZygpXG4gICAgLnNwbGl0KCcuJyk7XG5cbiAgbGV0IG1pbnV0ZXMgPSBwYXJzZUludChtaW51dGVzRmllbGRzWzBdKTtcbiAgbGV0IG1pbnV0ZXNUZWVuczogbnVtYmVyO1xuICBpZiAobWludXRlc0ZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgbWludXRlc1RlZW5zID0gcGFyc2VJbnQobWludXRlc0ZpZWxkc1sxXSk7XG4gICAgaWYgKG1pbnV0ZXNGaWVsZHNbMV0ubGVuZ3RoID09PSAxKSBtaW51dGVzVGVlbnMgKj0gMTAwO1xuICAgIGVsc2UgaWYgKG1pbnV0ZXNGaWVsZHNbMV0ubGVuZ3RoID09PSAyKSBtaW51dGVzVGVlbnMgKj0gMTA7XG4gIH0gZWxzZSB7XG4gICAgbWludXRlc1RlZW5zID0gMDtcbiAgfVxuXG4gIHdoaWxlIChtaW51dGVzID49IDYwKSB7XG4gICAgbWludXRlcyAtPSA2MDtcbiAgICBkZWdyZWVzICs9IDE7XG4gIH1cblxuICAvLyBUaGUgcmVkdWNlIHJlbW92ZSBhbGwgcmlnaHQgemVyb3NcbiAgY29uc3QgcmVzdWx0ID0gW21pbnV0ZXNUZWVucywgbWludXRlcywgZGVncmVlc11cbiAgICAucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgaWYgKGFjYy5sZW5ndGggPiAwIHx8IHZhbCA+IDApIHtcbiAgICAgICAgYWNjLnB1c2godmFsKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pXG4gICAgLnJldmVyc2UoKTtcblxuICAvLyBSZS1hZGQgc2lnbiBvbiBkZWdyZWVzXG4gIGlmIChuZWdhdGl2ZSkgcmVzdWx0WzBdID0gLTEgKiByZXN1bHRbMF07XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0RGVncmVlc1RvRERNTVNTQXJyYXkodmFsdWU6IG51bWJlciwgb3B0czogTGF0TG9uZ0Zvcm1hdE9wdGlvbnMgJiB7IGxvbmdpdHVkZTogYm9vbGVhbiB9KTogbnVtYmVyW10ge1xuICBjb25zdCBuZWdhdGl2ZSA9IHZhbHVlIDwgMDtcbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSk7XG5cbiAgaWYgKG9wdHMuZml4TGF0TG9uZykge1xuICAgIHZhbHVlID0gZml4VmFsdWUodmFsdWUsIG9wdHMubG9uZ2l0dWRlKTtcbiAgfVxuXG4gIGxldCBkZWdyZWVzOiBudW1iZXIgPSBNYXRoLnRydW5jKHZhbHVlKTtcbiAgbGV0IG1pbnV0ZXM6IG51bWJlciB8IHN0cmluZyA9IE1hdGgudHJ1bmMoKHZhbHVlIC0gZGVncmVlcykgKiA2MCk7XG4gIGNvbnN0IHNlY29uZEZpZWxkczogc3RyaW5nW10gPSByb3VuZEZsb2F0KCgodmFsdWUgLSBkZWdyZWVzKSAqIDYwIC0gbWludXRlcykgKiA2MCwgb3B0cy5tYXhEZWNpbWFscylcbiAgICAudG9TdHJpbmcoKVxuICAgIC5zcGxpdCgnLicpO1xuICBsZXQgc2Vjb25kczogbnVtYmVyID0gcGFyc2VJbnQoc2Vjb25kRmllbGRzWzBdKTtcbiAgY29uc3QgbWlsaXNlY29uZHM6IG51bWJlciA9IHNlY29uZEZpZWxkcy5sZW5ndGggPiAxID8gcGFyc2VJbnQoc2Vjb25kRmllbGRzWzFdKSAqIChzZWNvbmRGaWVsZHNbMV0ubGVuZ3RoID09PSAxID8gMTAgOiAxKSA6IDA7XG5cbiAgd2hpbGUgKHNlY29uZHMgPj0gNjApIHtcbiAgICBzZWNvbmRzIC09IDYwO1xuICAgIG1pbnV0ZXMgKz0gMTtcbiAgfVxuICB3aGlsZSAobWludXRlcyA+PSA2MCkge1xuICAgIG1pbnV0ZXMgLT0gNjA7XG4gICAgZGVncmVlcyArPSAxO1xuICB9XG5cbiAgLy8gVGhlIHJlZHVjZSByZW1vdmUgYWxsIHJpZ2h0IHplcm9zXG4gIGNvbnN0IHJlc3VsdCA9IFttaWxpc2Vjb25kcywgc2Vjb25kcywgbWludXRlcywgZGVncmVlc11cbiAgICAucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgaWYgKGFjYy5sZW5ndGggPiAwIHx8IHZhbCA+IDApIHtcbiAgICAgICAgYWNjLnB1c2godmFsKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pXG4gICAgLnJldmVyc2UoKTtcblxuICAvLyBSZS1hZGQgc2lnbiBvbiBkZWdyZWVzXG4gIGlmIChuZWdhdGl2ZSkgcmVzdWx0WzBdID0gLTEgKiByZXN1bHRbMF07XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZml4VmFsdWUodmFsdWU6IG51bWJlciwgbG9uZ2l0dWRlOiBib29sZWFuKSB7XG4gIC8vIEZpeCBsb25naXR1ZGUgd2hlbiBvdXRzaWRlIFstMTgwLCAxODBdXG4gIGlmIChsb25naXR1ZGUgJiYgKHZhbHVlID4gMTgwIHx8IHZhbHVlIDwgLTE4MCkpIHtcbiAgICB2YWx1ZSAlPSAxODA7XG4gIH1cbiAgLy8gRml4IGxhdGl0dWRlIHdoZW4gb3V0c2lkZSBbLTkwLCA5MF1cbiAgZWxzZSBpZiAoIWxvbmdpdHVkZSAmJiAodmFsdWUgPiA5MCB8fCB2YWx1ZSA8IC05MCkpIHtcbiAgICB2YWx1ZSAlPSA5MDtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEZpZWxkc0FycmF5VG9TdHJpbmcodmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdLCBvcHRzOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICBjb25zdCBwYXR0ZXJuID0gb3B0cy5wYXR0ZXJuIHx8ICdERCc7XG4gIGNvbnN0IG1hc2sgPSBNQVNLU1tvcHRzLmxvbmdpdHVkZSA/ICdsb25naXR1ZGUnIDogJ2xhdGl0dWRlJ11bcGF0dGVybl07XG4gIGNvbnN0IGlucHV0U2VsZWN0aW9uUmFuZ2VzID0gTUFTS19SQU5HRVNbb3B0cy5sb25naXR1ZGUgPyAnbG9uZ2l0dWRlJyA6ICdsYXRpdHVkZSddW3BhdHRlcm5dO1xuXG4gIGNvbnN0IG5lZ2F0aXZlID0gdmFsdWVzWzBdLnRvU3RyaW5nKCkuc2xpY2UoMCwgMSkgPT09ICctJztcbiAgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09ICdudW1iZXInKSB7XG4gICAgLy8gTm9ybWFsaXplIGRlZ3JlZXMgdG8gYmUgT0sgd2hlbiBjb252ZXJ0IHRvIHN0cmluZ1xuICAgIHZhbHVlc1swXSA9IE1hdGguYWJzKHZhbHVlc1swXSk7XG4gIH1cblxuICBsZXQgcmVzdWx0ID0gJyc7XG4gIGNvbnN0IHBsYWNlaG9sZGVyQ2hhciA9IG9wdHMucGxhY2Vob2xkZXJDaGFyO1xuICBpbnB1dFNlbGVjdGlvblJhbmdlcy5mb3JFYWNoKChyYW5nZSwgaWR4KSA9PiB7XG4gICAgLy8gXCJzdGFydFwiIGFuZCBcImVuZFwiIGFyZSB1c2VkIHRvIGdldCBzeW1ib2wgY2hhcnMgZnJvbSBtYXNrIHBsYWNlaG9sZGVyXG4gICAgLy8gKGJldHdlZW4gdmFsdWFibGVzIGNoYXJhY3RlcnMpXG4gICAgY29uc3QgbGFzdCA9IGlkeCA9PT0gaW5wdXRTZWxlY3Rpb25SYW5nZXMubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBzdGFydCA9IHJhbmdlWzFdICsgMTtcbiAgICBjb25zdCBlbmQgPSBsYXN0ID8gbWFzay5sZW5ndGggOiBpbnB1dFNlbGVjdGlvblJhbmdlc1tpZHggKyAxXVswXTtcbiAgICBjb25zdCBzaXplID0gcmFuZ2VbMV0gLSByYW5nZVswXSArIDE7XG4gICAgY29uc3Qgc3ltYm9sID0gbWFzay5zbGljZShzdGFydCwgZW5kKS5qb2luKCcnKTtcbiAgICBpZiAoaWR4IDwgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgbGV0IHZhbHVlID0gdmFsdWVzW2lkeF0udG9TdHJpbmcoKTtcbiAgICAgIHZhbHVlID0gdmFsdWUucGFkU3RhcnQoc2l6ZSwgbGFzdCA/ICcwJyA6IHBsYWNlaG9sZGVyQ2hhcik7XG4gICAgICBpZiAobGFzdCAmJiBwbGFjZWhvbGRlckNoYXIgPT09ICcnKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvMCokLywgcGxhY2Vob2xkZXJDaGFyKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCArPSB2YWx1ZSArIHN5bWJvbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gJycgYXMgZmlsbENoYXIgPSBkb24ndCBmaWxsXG4gICAgICBpZiAocGxhY2Vob2xkZXJDaGFyICE9PSAnJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9ICcnLnRvU3RyaW5nKCkucGFkU3RhcnQoc2l6ZSwgcGxhY2Vob2xkZXJDaGFyKTtcbiAgICAgICAgcmVzdWx0ICs9IHZhbHVlICsgc3ltYm9sO1xuICAgICAgfVxuICAgICAgLy8gQXZvaWQgbGFzdCBjaGFyIGRvdCwgcmVwbGFjZSBpdCB3aXRoIHJlYWwgbGFzdCBzeW1ib2xcbiAgICAgIC8vIDAxLjAwXCIgLT5cbiAgICAgIC8vICAgICAgT0s6ICAxXCJcbiAgICAgIC8vICAgICAgS086ICAxLlxuICAgICAgaWYgKGxhc3QgJiYgcmVzdWx0LnNsaWNlKC0xKSA9PT0gJy4nKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGlmIChzeW1ib2wpIHtcbiAgICAgICAgICByZXN1bHQgKz0gc3ltYm9sO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBsZXQgc2lnbiA9ICcnO1xuICBpZiAoIW9wdHM/LmhpZGVTaWduICYmIG9wdHMucGF0dGVybiAhPT0gJ0REJykge1xuICAgIGlmIChvcHRzLmxvbmdpdHVkZSkge1xuICAgICAgc2lnbiA9IG5lZ2F0aXZlID8gJyBXJyA6ICcgRSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNpZ24gPSBuZWdhdGl2ZSA/ICcgUycgOiAnIE4nO1xuICAgIH1cbiAgfSBlbHNlIGlmIChvcHRzLmhpZGVTaWduICYmIG9wdHMucGF0dGVybiA9PT0gJ0REJykge1xuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC9eXFwrLywgJyAnKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQgKyBzaWduO1xufVxuXG4vLyAzNsKwNTcnOVwiIE4gID0gMzYuOTUyNTAwMFxuLy8gMTDCsDQnMjFcIiBXID0gLTEwLjA3MjUwMDBcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxhdGl0dWRlT3JMb25naXR1ZGUoaW5wdXQ6IHN0cmluZywgcGF0dGVybjogc3RyaW5nLCBtYXhEZWNpbWFscz86IG51bWJlciwgcGxhY2Vob2xkZXJDaGFyPzogc3RyaW5nKTogbnVtYmVyIHwgbnVsbCB7XG4gIHBsYWNlaG9sZGVyQ2hhciA9IHBsYWNlaG9sZGVyQ2hhciB8fCBERUZBVUxUX1BMQUNFSE9MREVSX0NIQVI7XG4gIGxldCBpbnB1dEZpeCA9IGlucHV0LnRyaW0oKTtcbiAgaWYgKHBsYWNlaG9sZGVyQ2hhciA9PT0gRU1QVFlfUExBQ0VIT0xERVJfQ0hBUikge1xuICAgIGlucHV0Rml4ID0gaW5wdXRGaXhcbiAgICAgIC8vIFJlcGxhY2UgZW1wdHkgY2hhciBwbGFjZWhvbGRlclxuICAgICAgLnJlcGxhY2UoRU1QVFlfUExBQ0VIT0xERVJfQ0hBUl9SRUdFWFBfR0xPQkFMLCAnJylcbiAgICAgIC8vIFJlbW92ZSBzcGFjZSBhbmQgJysnICg9IHRyaW0gb24gZWFjaCBwYXJ0cylcbiAgICAgIC5yZXBsYWNlKFNQQUNFX1BMQUNFSE9MREVSX0NIQVJfUkVHRVhQX0dMT0JBTCwgJycpXG4gICAgICAucmVwbGFjZShQTFVTX1BMQUNFSE9MREVSX0NIQVJfUkVHRVhQX0dMT0JBTCwgJycpO1xuICB9XG4gIC8vIFJlbW92ZSBhbGwgcGxhY2Vob2xkZXIgKD0gdHJpbSBvbiBlYWNoIHBhcnRzKVxuICBlbHNlIHtcbiAgICBpbnB1dEZpeCA9IGlucHV0Rml4LnJlcGxhY2UobmV3IFJlZ0V4cChgWyArJHtwbGFjZWhvbGRlckNoYXJ9XStgLCAnZycpLCAnJyk7XG4gIH1cblxuICAvL0RFQlVHIGNvbnNvbGUuZGVidWcoXCJQYXJzaW5nIGxhdD0gXCIgKyBpbnB1dEZpeCk7XG4gIGNvbnN0IHBhcnRzID0gaW5wdXRGaXguc3BsaXQoL1teLVxcZFxcdy4sXSsvKTtcbiAgbGV0IGRlZ3JlZXMgPSBwYXJzZUZsb2F0KHBhcnRzWzBdLnJlcGxhY2UoLywvZywgJy4nKSk7XG4gIGlmIChpc05hTihkZWdyZWVzKSkge1xuICAgIGNvbnNvbGUuZGVidWcoJ3BhcnNlTGF0aXR1ZGVPckxvbmdpdHVkZSAnICsgaW5wdXQgKyAnIC0+IEludmFsaWQgZGVncmVlcyAoTmFOKS4gUGFydHMgZm91bmQ6JywgcGFydHMpO1xuICAgIHJldHVybiBOYU47XG4gIH1cblxuICBpZiAocGF0dGVybiA9PT0gJ0REJykge1xuICAgIHJldHVybiByb3VuZEZsb2F0KGRlZ3JlZXMsIG1heERlY2ltYWxzKTtcbiAgfVxuXG4gIGNvbnN0IG1pbnV0ZXMgPSAoKHBhdHRlcm4gPT09ICdERE1NU1MnIHx8IHBhdHRlcm4gPT09ICdERE1NJykgJiYgcGFydHNbMV0gJiYgcGFyc2VGbG9hdChwYXJ0c1sxXS5yZXBsYWNlKC8sL2csICcuJykpKSB8fCAwO1xuICBjb25zdCBzZWNvbmRzID0gKHBhdHRlcm4gPT09ICdERE1NU1MnICYmIHBhcnRzWzJdICYmIHBhcnNlRmxvYXQocGFydHNbMl0ucmVwbGFjZSgvLC9nLCAnLicpKSkgfHwgMDtcbiAgY29uc3QgZGlyZWN0aW9uID0gKHBhdHRlcm4gPT09ICdERE1NU1MnICYmIHBhcnRzWzNdKSB8fCAocGF0dGVybiA9PT0gJ0RETU0nICYmIHBhcnRzWzJdKSB8fCB1bmRlZmluZWQ7XG4gIGNvbnN0IHNpZ24gPSBkaXJlY3Rpb24gJiYgKGRpcmVjdGlvbiA9PT0gJ3MnIHx8IGRpcmVjdGlvbiA9PT0gJ1MnIHx8IGRpcmVjdGlvbiA9PT0gJ3cnIHx8IGRpcmVjdGlvbiA9PT0gJ1cnKSA/IC0xIDogMTtcblxuICByZXR1cm4gY29tcHV0ZURlY2ltYWxEZWdyZWVzKGRlZ3JlZXMsIG1pbnV0ZXMsIHNlY29uZHMsIHNpZ24sIG1heERlY2ltYWxzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVEZWNpbWFsRGVncmVlcyhkZWdyZWVzOiBudW1iZXIsIG1pbnV0ZXM6IG51bWJlciwgc2Vjb25kczogbnVtYmVyLCBzaWduOiAtMSB8IDEsIG1heERlY2ltYWxzPzogbnVtYmVyKSB7XG4gIGlmIChpc05pbChkZWdyZWVzKSkgcmV0dXJuIG51bGw7XG4gIGRlZ3JlZXMgPSAoc2lnbiB8fCAxKSAqIChkZWdyZWVzICsgKG1pbnV0ZXMgfHwgMCkgLyA2MCArIChzZWNvbmRzIHx8IDApIC8gKDYwICogNjApKTtcbiAgcmV0dXJuIHJvdW5kRmxvYXQoZGVncmVlcywgbWF4RGVjaW1hbHMpO1xufVxuXG5mdW5jdGlvbiByb3VuZEZsb2F0KGlucHV0OiBudW1iZXIsIG1heERlY2ltYWxzPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKG1heERlY2ltYWxzICE9PSB1bmRlZmluZWQgJiYgbWF4RGVjaW1hbHMgPj0gMCkge1xuICAgIC8vIFV0aWxpc2F0aW9uIGRlIHRvRml4ZWQgcG91ciBnw6lyZXIgbGVzIHByb2Jsw6htZXMgZGUgcHLDqWNpc2lvblxuICAgIGNvbnN0IHN0ciA9IGlucHV0LnRvRml4ZWQobWF4RGVjaW1hbHMpO1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cik7XG4gIH1cbiAgcmV0dXJuIGlucHV0O1xufVxuIl19
|