@sumaris-net/ngx-components 18.2.26 → 18.2.27-alpha1
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/esm2022/public_api.mjs +2 -1
- package/esm2022/src/app/core/table/testing/table.testing.mjs +2 -2
- package/esm2022/src/app/shared/inputs.mjs +6 -2
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +16 -25
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +14 -5
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +6 -5
- package/esm2022/src/app/shared/material/latlong/material.latlong2.mjs +631 -0
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +18 -7
- package/fesm2022/sumaris-net.ngx-components.mjs +688 -72
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
- package/src/app/shared/material/latlong/latlong.utils.d.ts +10 -0
- package/src/app/shared/material/latlong/material.latlong.d.ts +1 -1
- package/src/app/shared/material/latlong/material.latlong.module.d.ts +15 -14
- package/src/app/shared/material/latlong/material.latlong2.d.ts +164 -0
- package/src/app/shared/material/latlong/testing/latlong.test.d.ts +3 -2
- package/src/assets/i18n/en-US.json +0 -2
- package/src/assets/i18n/en.json +16 -18
- package/src/assets/i18n/fr.json +16 -11
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DEFAULT_PLACEHOLDER_CHAR, EMPTY_PLACEHOLDER_CHAR, EMPTY_PLACEHOLDER_CHAR_REGEXP_GLOBAL, PLUS_PLACEHOLDER_CHAR_REGEXP_GLOBAL, SPACE_PLACEHOLDER_CHAR_REGEXP_GLOBAL, } from '../../constants';
|
|
2
2
|
import { getInputSelectionRangesFromMask } from '../../inputs';
|
|
3
|
+
import { isNil } from '../../functions';
|
|
3
4
|
export const LAT_LONG_PATTERNS = ['DDMMSS', 'DDMM', 'DD'];
|
|
4
5
|
const D = /\d|\s/;
|
|
5
6
|
const D5 = /[0-5]|\s/;
|
|
@@ -81,12 +82,12 @@ export function formatLongitude(value, opts) {
|
|
|
81
82
|
case 'DDMM':
|
|
82
83
|
fieldsValues = splitNumberToFieldsDDMM(value, finalOpts);
|
|
83
84
|
break;
|
|
84
|
-
default: //
|
|
85
|
+
default: // DD is the default
|
|
85
86
|
fieldsValues = splitNumberToFieldsDD(value, finalOpts);
|
|
86
87
|
}
|
|
87
88
|
return fieldsValues.length > 0 ? formatFieldsArrayToString(fieldsValues, mask, finalOpts) : '';
|
|
88
89
|
}
|
|
89
|
-
function splitNumberToFieldsDD(value, opts) {
|
|
90
|
+
export function splitNumberToFieldsDD(value, opts) {
|
|
90
91
|
const longitude = opts.longitude;
|
|
91
92
|
const negative = value < 0;
|
|
92
93
|
if (negative)
|
|
@@ -99,33 +100,18 @@ function splitNumberToFieldsDD(value, opts) {
|
|
|
99
100
|
const degrees = parseInt(degreesFields[0]);
|
|
100
101
|
if (degreesFields.length > 1) {
|
|
101
102
|
const degreesTeens = parseInt(degreesFields[1]) * 10 ** (opts.maxDecimals - degreesFields[1].length);
|
|
102
|
-
|
|
103
|
-
return [sign + degrees.toString().padStart(3, opts.placeholderChar), degreesTeens];
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
return [sign, degrees, degreesTeens];
|
|
107
|
-
}
|
|
103
|
+
return [sign, degrees, degreesTeens];
|
|
108
104
|
}
|
|
109
105
|
else {
|
|
110
|
-
if (
|
|
111
|
-
|
|
112
|
-
return [sign + '0'.padStart(3, opts.placeholderChar), 1 / (parseFloat(degreesFields[0]) * 10 ** opts.maxDecimals)];
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
return [sign + degrees.toString().padStart(3, opts.placeholderChar)];
|
|
116
|
-
}
|
|
106
|
+
if (degreesFields[0] === `1e-${opts.maxDecimals}`) {
|
|
107
|
+
return [sign, 0, 1 / (parseFloat(degreesFields[0]) * 10 ** opts.maxDecimals)];
|
|
117
108
|
}
|
|
118
109
|
else {
|
|
119
|
-
|
|
120
|
-
return [sign, 0, 1 / (parseFloat(degreesFields[0]) * 10 ** opts.maxDecimals)];
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
return [sign, degrees];
|
|
124
|
-
}
|
|
110
|
+
return [sign, degrees];
|
|
125
111
|
}
|
|
126
112
|
}
|
|
127
113
|
}
|
|
128
|
-
function splitNumberToFieldsDDMM(value, opts) {
|
|
114
|
+
export function splitNumberToFieldsDDMM(value, opts) {
|
|
129
115
|
const negative = value < 0;
|
|
130
116
|
value = Math.abs(value);
|
|
131
117
|
if (opts.fixLatLong) {
|
|
@@ -165,7 +151,7 @@ function splitNumberToFieldsDDMM(value, opts) {
|
|
|
165
151
|
result[0] = -1 * result[0];
|
|
166
152
|
return result;
|
|
167
153
|
}
|
|
168
|
-
function splitNumberToFieldsDDMMSS(value, opts) {
|
|
154
|
+
export function splitNumberToFieldsDDMMSS(value, opts) {
|
|
169
155
|
const negative = value < 0;
|
|
170
156
|
value = Math.abs(value);
|
|
171
157
|
if (opts.fixLatLong) {
|
|
@@ -299,7 +285,12 @@ export function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholde
|
|
|
299
285
|
const seconds = (pattern === 'DDMMSS' && parts[2] && parseFloat(parts[2].replace(/,/g, '.'))) || 0;
|
|
300
286
|
const direction = (pattern === 'DDMMSS' && parts[3]) || (pattern === 'DDMM' && parts[2]) || undefined;
|
|
301
287
|
const sign = direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W') ? -1 : 1;
|
|
302
|
-
|
|
288
|
+
return computeDecimalDegrees(degrees, minutes, seconds, sign, maxDecimals);
|
|
289
|
+
}
|
|
290
|
+
export function computeDecimalDegrees(degrees, minutes, seconds, sign, maxDecimals) {
|
|
291
|
+
if (isNil(degrees))
|
|
292
|
+
return null;
|
|
293
|
+
degrees = (sign || 1) * (degrees + (minutes || 0) / 60 + (seconds || 0) / (60 * 60));
|
|
303
294
|
return roundFloat(degrees, maxDecimals);
|
|
304
295
|
}
|
|
305
296
|
function roundFloat(input, maxDecimals) {
|
|
@@ -310,4 +301,4 @@ function roundFloat(input, maxDecimals) {
|
|
|
310
301
|
}
|
|
311
302
|
return input;
|
|
312
303
|
}
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG9uZy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbGF0bG9uZy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixvQ0FBb0MsRUFDcEMsbUNBQW1DLEVBQ25DLG9DQUFvQyxHQUNyQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUkvRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBcUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRTVFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUNsQixNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUM7QUFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1osTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBRXBCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FJZDtJQUNGLFFBQVEsRUFBRTtRQUNSLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7UUFDaEUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFD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QUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEdBQUcsS0FBSyxHQUFHLHlDQUF5QyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RHLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JCLE9BQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzSCxNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25HLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO0lBQ3RHLE1BQU0sSUFBSSxHQUFHLFNBQVMsSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLElBQUksU0FBUyxLQUFLLEdBQUcsSUFBSSxTQUFTLEtBQUssR0FBRyxJQUFJLFNBQVMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0SCxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxHQUFHLE9BQU8sR0FBRyxFQUFFLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsT0FBTyxVQUFVLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUFhLEVBQUUsV0FBb0I7SUFDckQsSUFBSSxXQUFXLEtBQUssU0FBUyxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsRCwrREFBK0Q7UUFDL0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgREVGQVVMVF9QTEFDRUhPTERFUl9DSEFSLFxuICBFTVBUWV9QTEFDRUhPTERFUl9DSEFSLFxuICBFTVBUWV9QTEFDRUhPTERFUl9DSEFSX1JFR0VYUF9HTE9CQUwsXG4gIFBMVVNfUExBQ0VIT0xERVJfQ0hBUl9SRUdFWFBfR0xPQkFMLFxuICBTUEFDRV9QTEFDRUhPTERFUl9DSEFSX1JFR0VYUF9HTE9CQUwsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRJbnB1dFNlbGVjdGlvblJhbmdlc0Zyb21NYXNrIH0gZnJvbSAnLi4vLi4vaW5wdXRzJztcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBMYXRMb25nVHlwZSA9ICdsYXRpdHVkZScgfCAnbG9uZ2l0dWRlJztcbmV4cG9ydCBkZWNsYXJlIHR5cGUgTGF0TG9uZ1BhdHRlcm4gPSAnRERNTVNTJyB8ICdERE1NJyB8ICdERCc7XG5leHBvcnQgY29uc3QgTEFUX0xPTkdfUEFUVEVSTlM6IExhdExvbmdQYXR0ZXJuW10gPSBbJ0RETU1TUycsICdERE1NJywgJ0REJ107XG5cbmNvbnN0IEQgPSAvXFxkfFxccy87XG5jb25zdCBENSA9IC9bMC01XXxcXHMvO1xuY29uc3QgTSA9IEQ7XG5jb25zdCBNNSA9IEQ1O1xuY29uc3QgUyA9IEQ7XG5jb25zdCBTNSA9IEQ1O1xuY29uc3QgU0lHTiA9IC9bKy1dLztcblxuZXhwb3J0IGNvbnN0IE1BU0tTOiB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBbcGF0dGVybjogc3RyaW5nXTogQXJyYXk8c3RyaW5nIHwgUmVnRXhwPjtcbiAgfTtcbn0gPSB7XG4gIGxhdGl0dWRlOiB7XG4gICAgRERNTVNTOiBbRCwgRCwgJ8KwJywgJyAnLCBNNSwgTSwgXCInXCIsICcgJywgUzUsIFMsICcuJywgUywgUywgJ1wiJ10sXG4gICAgRERNTTogW0QsIEQsICfCsCcsICcgJywgTTUsIE0sICcuJywgTSwgTSwgTSwgXCInXCJdLFxuICAgIEREOiBbU0lHTiwgJyAnLCBELCBELCAnLicsIEQsIEQsIEQsIEQsIEQsIEQsIEQsICfCsCddLFxuICB9LFxuICBsb25naXR1ZGU6IHtcbiAgICBERE1NU1M6IFtELCBELCBELCAnwrAnLCAnICcsIE01LCBNLCBcIidcIiwgJyAnLCBTNSwgUywgJy4nLCBTLCBTLCAnXCInXSxcbiAgICBERE1NOiBbRCwgRCwgRCwgJ8KwJywgJyAnLCBNNSwgTSwgJy4nLCBNLCBNLCBNLCBcIidcIl0sXG4gICAgREQ6IFtTSUdOLCBELCBELCBELCAnLicsIEQsIEQsIEQsIEQsIEQsIEQsIEQsICfCsCddLFxuICB9LFxufTtcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgTGF0TG9uZ0Zvcm1hdE9wdGlvbnMge1xuICBwYXR0ZXJuOiBMYXRMb25nUGF0dGVybjtcbiAgbWF4RGVjaW1hbHM/OiBudW1iZXI7XG4gIHBsYWNlaG9sZGVyQ2hhcj86IHN0cmluZztcbiAgaGlkZVNpZ24/OiBib29sZWFuO1xuICBpbnB1dFNlbGVjdGlvblJhbmdlcz86IG51bWJlcltdW107XG4gIGZpeExhdExvbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgTEFUX0xPTkdfREVGQVVMVF9NQVhfREVDSU1BTFMgPSAzO1xuXG5jb25zdCBERUZBVUxUX09QVElPTlMgPSA8TGF0TG9uZ0Zvcm1hdE9wdGlvbnM+e1xuICBwYXR0ZXJuOiAnRERNTScsXG4gIG1heERlY2ltYWxzOiBMQVRfTE9OR19ERUZBVUxUX01BWF9ERUNJTUFMUyxcbiAgcGxhY2Vob2xkZXJDaGFyOiBERUZBVUxUX1BMQUNFSE9MREVSX0NIQVIsXG59O1xuY29uc3QgREVGQVVMVF9MQVRJVFVERV9PUFRJT05TOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH0gPSB7XG4gIC4uLkRFRkFVTFRfT1BUSU9OUyxcbiAgbG9uZ2l0dWRlOiBmYWxzZSxcbn07XG5jb25zdCBERUZBVUxUX0xPTkdJVFVERV9PUFRJT05TOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH0gPSB7XG4gIC4uLkRFRkFVTFRfT1BUSU9OUyxcbiAgbG9uZ2l0dWRlOiB0cnVlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdExhdExvbmcodmFsdWU6IG51bWJlciwgdHlwZTogTGF0TG9uZ1R5cGUsIG9wdHM/OiBQYXJ0aWFsPExhdExvbmdGb3JtYXRPcHRpb25zPikge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdsYXRpdHVkZSc6XG4gICAgICByZXR1cm4gZm9ybWF0TGF0aXR1ZGUodmFsdWUsIG9wdHMpO1xuICAgIGNhc2UgJ2xvbmdpdHVkZSc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZ2l0dWRlKHZhbHVlLCBvcHRzKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TGF0aXR1ZGUodmFsdWU6IG51bWJlciB8IG51bGwsIG9wdHM/OiBQYXJ0aWFsPExhdExvbmdGb3JtYXRPcHRpb25zPik6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICBvcHRzLnBhdHRlcm4gPSBvcHRzPy5wYXR0ZXJuID8/ICdERCc7XG4gIGNvbnN0IG1hc2sgPSBNQVNLU1snbGF0aXR1ZGUnXVtvcHRzLnBhdHRlcm5dO1xuICBvcHRzLmlucHV0U2VsZWN0aW9uUmFuZ2VzID0gb3B0cz8uaW5wdXRTZWxlY3Rpb25SYW5nZXMgPz8gZ2V0SW5wdXRTZWxlY3Rpb25SYW5nZXNGcm9tTWFzayhtYXNrKTtcbiAgb3B0cy5wbGFjZWhvbGRlckNoYXIgPSBvcHRzPy5wbGFjZWhvbGRlckNoYXIgPz8gREVGQVVMVF9QTEFDRUhPTERFUl9DSEFSO1xuICBvcHRzLmZpeExhdExvbmcgPSBvcHRzPy5maXhMYXRMb25nID8/IHRydWU7XG4gIGNvbnN0IGZpbmFsT3B0czogTGF0TG9uZ0Zvcm1hdE9wdGlvbnMgJiB7IGxvbmdpdHVkZTogYm9vbGVhbiB9ID0geyAuLi5ERUZBVUxUX0xBVElUVURFX09QVElPTlMsIC4uLm9wdHMgfTtcblxuICBsZXQgZmllbGRzVmFsdWVzOiBhbnlbXTtcbiAgc3dpdGNoIChvcHRzLnBhdHRlcm4pIHtcbiAgICBjYXNlICdERE1NU1MnOlxuICAgICAgZmllbGRzVmFsdWVzID0gc3BsaXROdW1iZXJUb0ZpZWxkc0RETU1TUyh2YWx1ZSwgZmluYWxPcHRzKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0RETU0nOlxuICAgICAgZmllbGRzVmFsdWVzID0gc3BsaXROdW1iZXJUb0ZpZWxkc0RETU0odmFsdWUsIGZpbmFsT3B0cyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OiAvLyBERCBpcyB0aGUgZGVmYXVsdFxuICAgICAgZmllbGRzVmFsdWVzID0gc3BsaXROdW1iZXJUb0ZpZWxkc0REKHZhbHVlLCBmaW5hbE9wdHMpO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkc1ZhbHVlcy5sZW5ndGggPiAwID8gZm9ybWF0RmllbGRzQXJyYXlUb1N0cmluZyhmaWVsZHNWYWx1ZXMsIG1hc2ssIGZpbmFsT3B0cykgOiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdExvbmdpdHVkZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCwgb3B0cz86IFBhcnRpYWw8TGF0TG9uZ0Zvcm1hdE9wdGlvbnM+KTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBudWxsO1xuXG4gIG9wdHMucGF0dGVybiA9IG9wdHM/LnBhdHRlcm4gPz8gJ0REJztcbiAgY29uc3QgbWFzayA9IE1BU0tTWydsb25naXR1ZGUnXVtvcHRzLnBhdHRlcm5dO1xuICBvcHRzLmlucHV0U2VsZWN0aW9uUmFuZ2VzID0gb3B0cz8uaW5wdXRTZWxlY3Rpb25SYW5nZXMgPz8gZ2V0SW5wdXRTZWxlY3Rpb25SYW5nZXNGcm9tTWFzayhtYXNrKTtcbiAgb3B0cy5wbGFjZWhvbGRlckNoYXIgPSBvcHRzPy5wbGFjZWhvbGRlckNoYXIgPz8gREVGQVVMVF9QTEFDRUhPTERFUl9DSEFSO1xuICBvcHRzLmZpeExhdExvbmcgPSBvcHRzPy5maXhMYXRMb25nID8/IHRydWU7XG4gIGNvbnN0IGZpbmFsT3B0czogTGF0TG9uZ0Zvcm1hdE9wdGlvbnMgJiB7IGxvbmdpdHVkZTogYm9vbGVhbiB9ID0geyAuLi5ERUZBVUxUX0xPTkdJVFVERV9PUFRJT05TLCAuLi5vcHRzIH07XG5cbiAgbGV0IGZpZWxkc1ZhbHVlczogYW55W107XG4gIHN3aXRjaCAob3B0cy5wYXR0ZXJuKSB7XG4gICAgY2FzZSAnRERNTVNTJzpcbiAgICAgIGZpZWxkc1ZhbHVlcyA9IHNwbGl0TnVtYmVyVG9GaWVsZHNERE1NU1ModmFsdWUsIGZpbmFsT3B0cyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdERE1NJzpcbiAgICAgIGZpZWxkc1ZhbHVlcyA9IHNwbGl0TnVtYmVyVG9GaWVsZHNERE1NKHZhbHVlLCBmaW5hbE9wdHMpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDogLy8gRERNTSBpcyB0aGUgZGVmYXVsdFxuICAgICAgZmllbGRzVmFsdWVzID0gc3BsaXROdW1iZXJUb0ZpZWxkc0REKHZhbHVlLCBmaW5hbE9wdHMpO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkc1ZhbHVlcy5sZW5ndGggPiAwID8gZm9ybWF0RmllbGRzQXJyYXlUb1N0cmluZyhmaWVsZHNWYWx1ZXMsIG1hc2ssIGZpbmFsT3B0cykgOiAnJztcbn1cblxuZnVuY3Rpb24gc3BsaXROdW1iZXJUb0ZpZWxkc0REKHZhbHVlOiBudW1iZXIsIG9wdHM6IExhdExvbmdGb3JtYXRPcHRpb25zICYgeyBsb25naXR1ZGU6IGJvb2xlYW4gfSk6IChudW1iZXIgfCBzdHJpbmcpW10ge1xuICBjb25zdCBsb25naXR1ZGUgPSBvcHRzLmxvbmdpdHVkZTtcbiAgY29uc3QgbmVnYXRpdmUgPSB2YWx1ZSA8IDA7XG4gIGlmIChuZWdhdGl2ZSkgdmFsdWUgKj0gLTE7XG5cbiAgaWYgKG9wdHMuZml4TGF0TG9uZykge1xuICAgIHZhbHVlID0gZml4VmFsdWUodmFsdWUsIG9wdHMubG9uZ2l0dWRlKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ24gPSBuZWdhdGl2ZSA/ICctJyA6ICcrJztcbiAgY29uc3QgZGVncmVlc0ZpZWxkcyA9IHJvdW5kRmxvYXQodmFsdWUsIG9wdHMubWF4RGVjaW1hbHMpLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcbiAgY29uc3QgZGVncmVlcyA9IHBhcnNlSW50KGRlZ3JlZXNGaWVsZHNbMF0pO1xuICBpZiAoZGVncmVlc0ZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgY29uc3QgZGVncmVlc1RlZW5zID0gcGFyc2VJbnQoZGVncmVlc0ZpZWxkc1sxXSkgKiAxMCAqKiAob3B0cy5tYXhEZWNpbWFscyAtIGRlZ3JlZXNGaWVsZHNbMV0ubGVuZ3RoKTtcbiAgICBpZiAobG9uZ2l0dWRlKSB7XG4gICAgICByZXR1cm4gW3NpZ24gKyBkZWdyZWVzLnRvU3RyaW5nKCkucGFkU3RhcnQoMywgb3B0cy5wbGFjZWhvbGRlckNoYXIpLCBkZWdyZWVzVGVlbnNdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3NpZ24sIGRlZ3JlZXMsIGRlZ3JlZXNUZWVuc107XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChsb25naXR1ZGUpIHtcbiAgICAgIGlmIChkZWdyZWVzRmllbGRzWzBdID09PSBgMWUtJHtvcHRzLm1heERlY2ltYWxzfWApIHtcbiAgICAgICAgcmV0dXJuIFtzaWduICsgJzAnLnBhZFN0YXJ0KDMsIG9wdHMucGxhY2Vob2xkZXJDaGFyKSwgMSAvIChwYXJzZUZsb2F0KGRlZ3JlZXNGaWVsZHNbMF0pICogMTAgKiogb3B0cy5tYXhEZWNpbWFscyldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtzaWduICsgZGVncmVlcy50b1N0cmluZygpLnBhZFN0YXJ0KDMsIG9wdHMucGxhY2Vob2xkZXJDaGFyKV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChkZWdyZWVzRmllbGRzWzBdID09PSBgMWUtJHtvcHRzLm1heERlY2ltYWxzfWApIHtcbiAgICAgICAgcmV0dXJuIFtzaWduLCAwLCAxIC8gKHBhcnNlRmxvYXQoZGVncmVlc0ZpZWxkc1swXSkgKiAxMCAqKiBvcHRzLm1heERlY2ltYWxzKV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW3NpZ24sIGRlZ3JlZXNdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzcGxpdE51bWJlclRvRmllbGRzRERNTSh2YWx1ZTogbnVtYmVyLCBvcHRzOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH0pOiBudW1iZXJbXSB7XG4gIGNvbnN0IG5lZ2F0aXZlID0gdmFsdWUgPCAwO1xuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKTtcblxuICBpZiAob3B0cy5maXhMYXRMb25nKSB7XG4gICAgdmFsdWUgPSBmaXhWYWx1ZSh2YWx1ZSwgb3B0cy5sb25naXR1ZGUpO1xuICB9XG5cbiAgbGV0IGRlZ3JlZXM6IG51bWJlciA9IChuZWdhdGl2ZSA/IC0xIDogMSkgKiBNYXRoLnRydW5jKHZhbHVlKTtcbiAgY29uc3QgbWludXRlc0ZpZWxkcyA9IHJvdW5kRmxvYXQoKHZhbHVlIC0gZGVncmVlcykgKiA2MCwgb3B0cy5tYXhEZWNpbWFscylcbiAgICAudG9TdHJpbmcoKVxuICAgIC5zcGxpdCgnLicpO1xuICBsZXQgbWludXRlcyA9IHBhcnNlSW50KG1pbnV0ZXNGaWVsZHNbMF0pO1xuICBsZXQgbWludXRlc1RlZW5zOiBudW1iZXI7XG4gIGlmIChtaW51dGVzRmllbGRzLmxlbmd0aCA+IDEpIHtcbiAgICBtaW51dGVzVGVlbnMgPSBwYXJzZUludChtaW51dGVzRmllbGRzWzFdKTtcbiAgICBpZiAobWludXRlc0ZpZWxkc1sxXS5sZW5ndGggPT09IDEpIG1pbnV0ZXNUZWVucyAqPSAxMDA7XG4gICAgZWxzZSBpZiAobWludXRlc0ZpZWxkc1sxXS5sZW5ndGggPT09IDIpIG1pbnV0ZXNUZWVucyAqPSAxMDtcbiAgfSBlbHNlIHtcbiAgICBtaW51dGVzVGVlbnMgPSAwO1xuICB9XG5cbiAgd2hpbGUgKG1pbnV0ZXMgPj0gNjApIHtcbiAgICBtaW51dGVzIC09IDYwO1xuICAgIGRlZ3JlZXMgKz0gMTtcbiAgfVxuXG4gIC8vIFRoZSByZWR1Y2UgcmVtb3ZlIGFsbCByaWdodCB6ZXJvc1xuICBjb25zdCByZXN1bHQgPSBbbWludXRlc1RlZW5zLCBtaW51dGVzLCBkZWdyZWVzXVxuICAgIC5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICBpZiAoYWNjLmxlbmd0aCA+IDAgfHwgdmFsID4gMCkge1xuICAgICAgICBhY2MucHVzaCh2YWwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSlcbiAgICAucmV2ZXJzZSgpO1xuXG4gIC8vIFJlLWFkZCBzaWduIG9uIGRlZ3JlZXNcbiAgaWYgKG5lZ2F0aXZlKSByZXN1bHRbMF0gPSAtMSAqIHJlc3VsdFswXTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBzcGxpdE51bWJlclRvRmllbGRzRERNTVNTKHZhbHVlOiBudW1iZXIsIG9wdHM6IExhdExvbmdGb3JtYXRPcHRpb25zICYgeyBsb25naXR1ZGU6IGJvb2xlYW4gfSk6IG51bWJlcltdIHtcbiAgY29uc3QgbmVnYXRpdmUgPSB2YWx1ZSA8IDA7XG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpO1xuXG4gIGlmIChvcHRzLmZpeExhdExvbmcpIHtcbiAgICB2YWx1ZSA9IGZpeFZhbHVlKHZhbHVlLCBvcHRzLmxvbmdpdHVkZSk7XG4gIH1cblxuICBsZXQgZGVncmVlczogbnVtYmVyID0gTWF0aC50cnVuYyh2YWx1ZSk7XG4gIGxldCBtaW51dGVzOiBudW1iZXIgfCBzdHJpbmcgPSBNYXRoLnRydW5jKCh2YWx1ZSAtIGRlZ3JlZXMpICogNjApO1xuICBjb25zdCBzZWNvbmRGaWVsZHM6IHN0cmluZ1tdID0gcm91bmRGbG9hdCgoKHZhbHVlIC0gZGVncmVlcykgKiA2MCAtIG1pbnV0ZXMpICogNjAsIG9wdHMubWF4RGVjaW1hbHMpXG4gICAgLnRvU3RyaW5nKClcbiAgICAuc3BsaXQoJy4nKTtcbiAgbGV0IHNlY29uZHM6IG51bWJlciA9IHBhcnNlSW50KHNlY29uZEZpZWxkc1swXSk7XG4gIGNvbnN0IG1pbGlzZWNvbmRzOiBudW1iZXIgPSBzZWNvbmRGaWVsZHMubGVuZ3RoID4gMSA/IHBhcnNlSW50KHNlY29uZEZpZWxkc1sxXSkgKiAoc2Vjb25kRmllbGRzWzFdLmxlbmd0aCA9PT0gMSA/IDEwIDogMSkgOiAwO1xuXG4gIHdoaWxlIChzZWNvbmRzID49IDYwKSB7XG4gICAgc2Vjb25kcyAtPSA2MDtcbiAgICBtaW51dGVzICs9IDE7XG4gIH1cbiAgd2hpbGUgKG1pbnV0ZXMgPj0gNjApIHtcbiAgICBtaW51dGVzIC09IDYwO1xuICAgIGRlZ3JlZXMgKz0gMTtcbiAgfVxuXG4gIC8vIFRoZSByZWR1Y2UgcmVtb3ZlIGFsbCByaWdodCB6ZXJvc1xuICBjb25zdCByZXN1bHQgPSBbbWlsaXNlY29uZHMsIHNlY29uZHMsIG1pbnV0ZXMsIGRlZ3JlZXNdXG4gICAgLnJlZHVjZSgoYWNjLCB2YWwpID0+IHtcbiAgICAgIGlmIChhY2MubGVuZ3RoID4gMCB8fCB2YWwgPiAwKSB7XG4gICAgICAgIGFjYy5wdXNoKHZhbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKVxuICAgIC5yZXZlcnNlKCk7XG5cbiAgLy8gUmUtYWRkIHNpZ24gb24gZGVncmVlc1xuICBpZiAobmVnYXRpdmUpIHJlc3VsdFswXSA9IC0xICogcmVzdWx0WzBdO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGZpeFZhbHVlKHZhbHVlOiBudW1iZXIsIGxvbmdpdHVkZTogYm9vbGVhbikge1xuICAvLyBGaXggbG9uZ2l0dWRlIHdoZW4gb3V0c2lkZSBbLTE4MCwgMTgwXVxuICBpZiAobG9uZ2l0dWRlICYmICh2YWx1ZSA+IDE4MCB8fCB2YWx1ZSA8IC0xODApKSB7XG4gICAgdmFsdWUgJT0gMTgwO1xuICB9XG4gIC8vIEZpeCBsYXRpdHVkZSB3aGVuIG91dHNpZGUgWy05MCwgOTBdXG4gIGVsc2UgaWYgKCFsb25naXR1ZGUgJiYgKHZhbHVlID4gOTAgfHwgdmFsdWUgPCAtOTApKSB7XG4gICAgdmFsdWUgJT0gOTA7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRGaWVsZHNBcnJheVRvU3RyaW5nKFxuICB2YWx1ZXM6IChzdHJpbmcgfCBudW1iZXIpW10sXG4gIG1hc2s6IChzdHJpbmcgfCBSZWdFeHApW10sXG4gIG9wdHM6IExhdExvbmdGb3JtYXRPcHRpb25zICYgeyBsb25naXR1ZGU6IGJvb2xlYW4gfVxuKTogc3RyaW5nIHtcbiAgY29uc3QgbmVnYXRpdmUgPSB2YWx1ZXNbMF0udG9TdHJpbmcoKS5zbGljZSgwLCAxKSA9PT0gJy0nO1xuICBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gJ251bWJlcicpIHtcbiAgICAvLyBOb3JtYWxpemUgZGVncmVlcyB0byBiZSBPSyB3aGVuIGNvbnZlcnQgdG8gc3RyaW5nXG4gICAgdmFsdWVzWzBdID0gTWF0aC5hYnModmFsdWVzWzBdKTtcbiAgfVxuXG4gIGxldCByZXN1bHQgPSAnJztcbiAgY29uc3QgaW5wdXRTZWxlY3Rpb25SYW5nZXMgPSBvcHRzLmlucHV0U2VsZWN0aW9uUmFuZ2VzO1xuICBjb25zdCBwbGFjZWhvbGRlckNoYXIgPSBvcHRzLnBsYWNlaG9sZGVyQ2hhcjtcbiAgaW5wdXRTZWxlY3Rpb25SYW5nZXMuZm9yRWFjaCgocmFuZ2UsIGlkeCkgPT4ge1xuICAgIC8vIFwic3RhcnRcIiBhbmQgXCJlbmRcIiBhcmUgdXNlZCB0byBnZXQgc3ltYm9sIGNoYXJzIGZyb20gbWFzayBwbGFjZWhvbGRlclxuICAgIC8vIChiZXR3ZWVuIHZhbHVhYmxlcyBjaGFyYWN0ZXJzKVxuICAgIGNvbnN0IGxhc3QgPSBpZHggPT09IGlucHV0U2VsZWN0aW9uUmFuZ2VzLmxlbmd0aCAtIDE7XG4gICAgY29uc3Qgc3RhcnQgPSByYW5nZVsxXSArIDE7XG4gICAgY29uc3QgZW5kID0gbGFzdCA/IG1hc2subGVuZ3RoIDogaW5wdXRTZWxlY3Rpb25SYW5nZXNbaWR4ICsgMV1bMF07XG4gICAgY29uc3Qgc2l6ZSA9IHJhbmdlWzFdIC0gcmFuZ2VbMF0gKyAxO1xuICAgIGNvbnN0IHN5bWJvbCA9IG1hc2suc2xpY2Uoc3RhcnQsIGVuZCkuam9pbignJyk7XG4gICAgaWYgKGlkeCA8IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHZhbHVlc1tpZHhdLnRvU3RyaW5nKCk7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnBhZFN0YXJ0KHNpemUsIGxhc3QgPyAnMCcgOiBwbGFjZWhvbGRlckNoYXIpO1xuICAgICAgaWYgKGxhc3QgJiYgcGxhY2Vob2xkZXJDaGFyID09PSAnJykge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLzAqJC8sIHBsYWNlaG9sZGVyQ2hhcik7XG4gICAgICB9XG4gICAgICByZXN1bHQgKz0gdmFsdWUgKyBzeW1ib2w7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vICcnIGFzIGZpbGxDaGFyID0gZG9uJ3QgZmlsbFxuICAgICAgaWYgKHBsYWNlaG9sZGVyQ2hhciAhPT0gJycpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAnJy50b1N0cmluZygpLnBhZFN0YXJ0KHNpemUsIHBsYWNlaG9sZGVyQ2hhcik7XG4gICAgICAgIHJlc3VsdCArPSB2YWx1ZSArIHN5bWJvbDtcbiAgICAgIH1cbiAgICAgIC8vIEF2b2lkIGxhc3QgY2hhciBkb3QsIHJlcGxhY2UgaXQgd2l0aCByZWFsIGxhc3Qgc3ltYm9sXG4gICAgICAvLyAwMS4wMFwiIC0+XG4gICAgICAvLyAgICAgIE9LOiAgMVwiXG4gICAgICAvLyAgICAgIEtPOiAgMS5cbiAgICAgIGlmIChsYXN0ICYmIHJlc3VsdC5zbGljZSgtMSkgPT09ICcuJykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoc3ltYm9sKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHN5bWJvbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgbGV0IHNpZ24gPSAnJztcbiAgaWYgKCFvcHRzPy5oaWRlU2lnbiAmJiBvcHRzLnBhdHRlcm4gIT09ICdERCcpIHtcbiAgICBpZiAob3B0cy5sb25naXR1ZGUpIHtcbiAgICAgIHNpZ24gPSBuZWdhdGl2ZSA/ICcgUycgOiAnIE4nO1xuICAgIH0gZWxzZSB7XG4gICAgICBzaWduID0gbmVnYXRpdmUgPyAnIFcnIDogJyBFJztcbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0cy5oaWRlU2lnbiAmJiBvcHRzLnBhdHRlcm4gPT09ICdERCcpIHtcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvXlxcKy8sICcgJyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0ICsgc2lnbjtcbn1cblxuLy8gMzbCsDU3JzlcIiBOICA9IDM2Ljk1MjUwMDBcbi8vIDEwwrA0JzIxXCIgVyA9IC0xMC4wNzI1MDAwXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VMYXRpdHVkZU9yTG9uZ2l0dWRlKGlucHV0OiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZywgbWF4RGVjaW1hbHM/OiBudW1iZXIsIHBsYWNlaG9sZGVyQ2hhcj86IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xuICBwbGFjZWhvbGRlckNoYXIgPSBwbGFjZWhvbGRlckNoYXIgfHwgREVGQVVMVF9QTEFDRUhPTERFUl9DSEFSO1xuICBsZXQgaW5wdXRGaXggPSBpbnB1dC50cmltKCk7XG4gIGlmIChwbGFjZWhvbGRlckNoYXIgPT09IEVNUFRZX1BMQUNFSE9MREVSX0NIQVIpIHtcbiAgICBpbnB1dEZpeCA9IGlucHV0Rml4XG4gICAgICAvLyBSZXBsYWNlIGVtcHR5IGNoYXIgcGxhY2Vob2xkZXJcbiAgICAgIC5yZXBsYWNlKEVNUFRZX1BMQUNFSE9MREVSX0NIQVJfUkVHRVhQX0dMT0JBTCwgJycpXG4gICAgICAvLyBSZW1vdmUgc3BhY2UgYW5kICcrJyAoPSB0cmltIG9uIGVhY2ggcGFydHMpXG4gICAgICAucmVwbGFjZShTUEFDRV9QTEFDRUhPTERFUl9DSEFSX1JFR0VYUF9HTE9CQUwsICcnKVxuICAgICAgLnJlcGxhY2UoUExVU19QTEFDRUhPTERFUl9DSEFSX1JFR0VYUF9HTE9CQUwsICcnKTtcbiAgfVxuICAvLyBSZW1vdmUgYWxsIHBsYWNlaG9sZGVyICg9IHRyaW0gb24gZWFjaCBwYXJ0cylcbiAgZWxzZSB7XG4gICAgaW5wdXRGaXggPSBpbnB1dEZpeC5yZXBsYWNlKG5ldyBSZWdFeHAoYFsgKyR7cGxhY2Vob2xkZXJDaGFyfV0rYCwgJ2cnKSwgJycpO1xuICB9XG5cbiAgLy9ERUJVRyBjb25zb2xlLmRlYnVnKFwiUGFyc2luZyBsYXQ9IFwiICsgaW5wdXRGaXgpO1xuICBjb25zdCBwYXJ0cyA9IGlucHV0Rml4LnNwbGl0KC9bXi1cXGRcXHcuLF0rLyk7XG4gIGxldCBkZWdyZWVzID0gcGFyc2VGbG9hdChwYXJ0c1swXS5yZXBsYWNlKC8sL2csICcuJykpO1xuICBpZiAoaXNOYU4oZGVncmVlcykpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdwYXJzZUxhdGl0dWRlT3JMb25naXR1ZGUgJyArIGlucHV0ICsgJyAtPiBJbnZhbGlkIGRlZ3JlZXMgKE5hTikuIFBhcnRzIGZvdW5kOicsIHBhcnRzKTtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgaWYgKHBhdHRlcm4gPT09ICdERCcpIHtcbiAgICByZXR1cm4gcm91bmRGbG9hdChkZWdyZWVzLCBtYXhEZWNpbWFscyk7XG4gIH1cblxuICBjb25zdCBtaW51dGVzID0gKChwYXR0ZXJuID09PSAnRERNTVNTJyB8fCBwYXR0ZXJuID09PSAnRERNTScpICYmIHBhcnRzWzFdICYmIHBhcnNlRmxvYXQocGFydHNbMV0ucmVwbGFjZSgvLC9nLCAnLicpKSkgfHwgMDtcbiAgY29uc3Qgc2Vjb25kcyA9IChwYXR0ZXJuID09PSAnRERNTVNTJyAmJiBwYXJ0c1syXSAmJiBwYXJzZUZsb2F0KHBhcnRzWzJdLnJlcGxhY2UoLywvZywgJy4nKSkpIHx8IDA7XG4gIGNvbnN0IGRpcmVjdGlvbiA9IChwYXR0ZXJuID09PSAnRERNTVNTJyAmJiBwYXJ0c1szXSkgfHwgKHBhdHRlcm4gPT09ICdERE1NJyAmJiBwYXJ0c1syXSkgfHwgdW5kZWZpbmVkO1xuICBjb25zdCBzaWduID0gZGlyZWN0aW9uICYmIChkaXJlY3Rpb24gPT09ICdzJyB8fCBkaXJlY3Rpb24gPT09ICdTJyB8fCBkaXJlY3Rpb24gPT09ICd3JyB8fCBkaXJlY3Rpb24gPT09ICdXJykgPyAtMSA6IDE7XG5cbiAgZGVncmVlcyA9IHNpZ24gKiAoZGVncmVlcyArIG1pbnV0ZXMgLyA2MCArIHNlY29uZHMgLyAoNjAgKiA2MCkpO1xuICByZXR1cm4gcm91bmRGbG9hdChkZWdyZWVzLCBtYXhEZWNpbWFscyk7XG59XG5cbmZ1bmN0aW9uIHJvdW5kRmxvYXQoaW5wdXQ6IG51bWJlciwgbWF4RGVjaW1hbHM/OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAobWF4RGVjaW1hbHMgIT09IHVuZGVmaW5lZCAmJiBtYXhEZWNpbWFscyA+PSAwKSB7XG4gICAgLy8gVXRpbGlzYXRpb24gZGUgdG9GaXhlZCBwb3VyIGfDqXJlciBsZXMgcHJvYmzDqG1lcyBkZSBwcsOpY2lzaW9uXG4gICAgY29uc3Qgc3RyID0gaW5wdXQudG9GaXhlZChtYXhEZWNpbWFscyk7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKTtcbiAgfVxuICByZXR1cm4gaW5wdXQ7XG59XG4iXX0=
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG9uZy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbGF0bG9uZy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixvQ0FBb0MsRUFDcEMsbUNBQW1DLEVBQ25DLG9DQUFvQyxHQUNyQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJeEMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDbEIsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO0FBQ3RCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNkLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUVwQixNQUFNLENBQUMsTUFBTSxLQUFLLEdBSWQ7SUFDRixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ2hFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxF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O1FBQ2xELCtEQUErRDtRQUMvRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBERUZBVUxUX1BMQUNFSE9MREVSX0NIQVIsXG4gIEVNUFRZX1BMQUNFSE9MREVSX0NIQVIsXG4gIEVNUFRZX1BMQUNFSE9MREVSX0NIQVJfUkVHRVhQX0dMT0JBTCxcbiAgUExVU19QTEFDRUhPTERFUl9DSEFSX1JFR0VYUF9HTE9CQUwsXG4gIFNQQUNFX1BMQUNFSE9MREVSX0NIQVJfUkVHRVhQX0dMT0JBTCxcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2sgfSBmcm9tICcuLi8uLi9pbnB1dHMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIExhdExvbmdUeXBlID0gJ2xhdGl0dWRlJyB8ICdsb25naXR1ZGUnO1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBMYXRMb25nUGF0dGVybiA9ICdERE1NU1MnIHwgJ0RETU0nIHwgJ0REJztcbmV4cG9ydCBjb25zdCBMQVRfTE9OR19QQVRURVJOUzogTGF0TG9uZ1BhdHRlcm5bXSA9IFsnRERNTVNTJywgJ0RETU0nLCAnREQnXTtcblxuY29uc3QgRCA9IC9cXGR8XFxzLztcbmNvbnN0IEQ1ID0gL1swLTVdfFxccy87XG5jb25zdCBNID0gRDtcbmNvbnN0IE01ID0gRDU7XG5jb25zdCBTID0gRDtcbmNvbnN0IFM1ID0gRDU7XG5jb25zdCBTSUdOID0gL1srLV0vO1xuXG5leHBvcnQgY29uc3QgTUFTS1M6IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIFtwYXR0ZXJuOiBzdHJpbmddOiBBcnJheTxzdHJpbmcgfCBSZWdFeHA+O1xuICB9O1xufSA9IHtcbiAgbGF0aXR1ZGU6IHtcbiAgICBERE1NU1M6IFtELCBELCAnwrAnLCAnICcsIE01LCBNLCBcIidcIiwgJyAnLCBTNSwgUywgJy4nLCBTLCBTLCAnXCInXSxcbiAgICBERE1NOiBbRCwgRCwgJ8KwJywgJyAnLCBNNSwgTSwgJy4nLCBNLCBNLCBNLCBcIidcIl0sXG4gICAgREQ6IFtTSUdOLCAnICcsIEQsIEQsICcuJywgRCwgRCwgRCwgRCwgRCwgRCwgRCwgJ8KwJ10sXG4gIH0sXG4gIGxvbmdpdHVkZToge1xuICAgIERETU1TUzogW0QsIEQsIEQsICfCsCcsICcgJywgTTUsIE0sIFwiJ1wiLCAnICcsIFM1LCBTLCAnLicsIFMsIFMsICdcIiddLFxuICAgIERETU06IFtELCBELCBELCAnwrAnLCAnICcsIE01LCBNLCAnLicsIE0sIE0sIE0sIFwiJ1wiXSxcbiAgICBERDogW1NJR04sIEQsIEQsIEQsICcuJywgRCwgRCwgRCwgRCwgRCwgRCwgRCwgJ8KwJ10sXG4gIH0sXG59O1xuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBMYXRMb25nRm9ybWF0T3B0aW9ucyB7XG4gIHBhdHRlcm46IExhdExvbmdQYXR0ZXJuO1xuICBtYXhEZWNpbWFscz86IG51bWJlcjtcbiAgcGxhY2Vob2xkZXJDaGFyPzogc3RyaW5nO1xuICBoaWRlU2lnbj86IGJvb2xlYW47XG4gIGlucHV0U2VsZWN0aW9uUmFuZ2VzPzogbnVtYmVyW11bXTtcbiAgZml4TGF0TG9uZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBMQVRfTE9OR19ERUZBVUxUX01BWF9ERUNJTUFMUyA9IDM7XG5cbmNvbnN0IERFRkFVTFRfT1BUSU9OUyA9IDxMYXRMb25nRm9ybWF0T3B0aW9ucz57XG4gIHBhdHRlcm46ICdERE1NJyxcbiAgbWF4RGVjaW1hbHM6IExBVF9MT05HX0RFRkFVTFRfTUFYX0RFQ0lNQUxTLFxuICBwbGFjZWhvbGRlckNoYXI6IERFRkFVTFRfUExBQ0VIT0xERVJfQ0hBUixcbn07XG5jb25zdCBERUZBVUxUX0xBVElUVURFX09QVElPTlM6IExhdExvbmdGb3JtYXRPcHRpb25zICYgeyBsb25naXR1ZGU6IGJvb2xlYW4gfSA9IHtcbiAgLi4uREVGQVVMVF9PUFRJT05TLFxuICBsb25naXR1ZGU6IGZhbHNlLFxufTtcbmNvbnN0IERFRkFVTFRfTE9OR0lUVURFX09QVElPTlM6IExhdExvbmdGb3JtYXRPcHRpb25zICYgeyBsb25naXR1ZGU6IGJvb2xlYW4gfSA9IHtcbiAgLi4uREVGQVVMVF9PUFRJT05TLFxuICBsb25naXR1ZGU6IHRydWUsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TGF0TG9uZyh2YWx1ZTogbnVtYmVyLCB0eXBlOiBMYXRMb25nVHlwZSwgb3B0cz86IFBhcnRpYWw8TGF0TG9uZ0Zvcm1hdE9wdGlvbnM+KSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2xhdGl0dWRlJzpcbiAgICAgIHJldHVybiBmb3JtYXRMYXRpdHVkZSh2YWx1ZSwgb3B0cyk7XG4gICAgY2FzZSAnbG9uZ2l0dWRlJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25naXR1ZGUodmFsdWUsIG9wdHMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRMYXRpdHVkZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCwgb3B0cz86IFBhcnRpYWw8TGF0TG9uZ0Zvcm1hdE9wdGlvbnM+KTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBudWxsO1xuXG4gIG9wdHMucGF0dGVybiA9IG9wdHM/LnBhdHRlcm4gPz8gJ0REJztcbiAgY29uc3QgbWFzayA9IE1BU0tTWydsYXRpdHVkZSddW29wdHMucGF0dGVybl07XG4gIG9wdHMuaW5wdXRTZWxlY3Rpb25SYW5nZXMgPSBvcHRzPy5pbnB1dFNlbGVjdGlvblJhbmdlcyA/PyBnZXRJbnB1dFNlbGVjdGlvblJhbmdlc0Zyb21NYXNrKG1hc2spO1xuICBvcHRzLnBsYWNlaG9sZGVyQ2hhciA9IG9wdHM/LnBsYWNlaG9sZGVyQ2hhciA/PyBERUZBVUxUX1BMQUNFSE9MREVSX0NIQVI7XG4gIG9wdHMuZml4TGF0TG9uZyA9IG9wdHM/LmZpeExhdExvbmcgPz8gdHJ1ZTtcbiAgY29uc3QgZmluYWxPcHRzOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH0gPSB7IC4uLkRFRkFVTFRfTEFUSVRVREVfT1BUSU9OUywgLi4ub3B0cyB9O1xuXG4gIGxldCBmaWVsZHNWYWx1ZXM6IGFueVtdO1xuICBzd2l0Y2ggKG9wdHMucGF0dGVybikge1xuICAgIGNhc2UgJ0RETU1TUyc6XG4gICAgICBmaWVsZHNWYWx1ZXMgPSBzcGxpdE51bWJlclRvRmllbGRzRERNTVNTKHZhbHVlLCBmaW5hbE9wdHMpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnRERNTSc6XG4gICAgICBmaWVsZHNWYWx1ZXMgPSBzcGxpdE51bWJlclRvRmllbGRzRERNTSh2YWx1ZSwgZmluYWxPcHRzKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6IC8vIEREIGlzIHRoZSBkZWZhdWx0XG4gICAgICBmaWVsZHNWYWx1ZXMgPSBzcGxpdE51bWJlclRvRmllbGRzREQodmFsdWUsIGZpbmFsT3B0cyk7XG4gIH1cblxuICByZXR1cm4gZmllbGRzVmFsdWVzLmxlbmd0aCA+IDAgPyBmb3JtYXRGaWVsZHNBcnJheVRvU3RyaW5nKGZpZWxkc1ZhbHVlcywgbWFzaywgZmluYWxPcHRzKSA6ICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TG9uZ2l0dWRlKHZhbHVlOiBudW1iZXIgfCBudWxsLCBvcHRzPzogUGFydGlhbDxMYXRMb25nRm9ybWF0T3B0aW9ucz4pOiBzdHJpbmcge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cbiAgb3B0cy5wYXR0ZXJuID0gb3B0cz8ucGF0dGVybiA/PyAnREQnO1xuICBjb25zdCBtYXNrID0gTUFTS1NbJ2xvbmdpdHVkZSddW29wdHMucGF0dGVybl07XG4gIG9wdHMuaW5wdXRTZWxlY3Rpb25SYW5nZXMgPSBvcHRzPy5pbnB1dFNlbGVjdGlvblJhbmdlcyA/PyBnZXRJbnB1dFNlbGVjdGlvblJhbmdlc0Zyb21NYXNrKG1hc2spO1xuICBvcHRzLnBsYWNlaG9sZGVyQ2hhciA9IG9wdHM/LnBsYWNlaG9sZGVyQ2hhciA/PyBERUZBVUxUX1BMQUNFSE9MREVSX0NIQVI7XG4gIG9wdHMuZml4TGF0TG9uZyA9IG9wdHM/LmZpeExhdExvbmcgPz8gdHJ1ZTtcbiAgY29uc3QgZmluYWxPcHRzOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH0gPSB7IC4uLkRFRkFVTFRfTE9OR0lUVURFX09QVElPTlMsIC4uLm9wdHMgfTtcblxuICBsZXQgZmllbGRzVmFsdWVzOiBhbnlbXTtcbiAgc3dpdGNoIChvcHRzLnBhdHRlcm4pIHtcbiAgICBjYXNlICdERE1NU1MnOlxuICAgICAgZmllbGRzVmFsdWVzID0gc3BsaXROdW1iZXJUb0ZpZWxkc0RETU1TUyh2YWx1ZSwgZmluYWxPcHRzKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0RETU0nOlxuICAgICAgZmllbGRzVmFsdWVzID0gc3BsaXROdW1iZXJUb0ZpZWxkc0RETU0odmFsdWUsIGZpbmFsT3B0cyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OiAvLyBERCBpcyB0aGUgZGVmYXVsdFxuICAgICAgZmllbGRzVmFsdWVzID0gc3BsaXROdW1iZXJUb0ZpZWxkc0REKHZhbHVlLCBmaW5hbE9wdHMpO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkc1ZhbHVlcy5sZW5ndGggPiAwID8gZm9ybWF0RmllbGRzQXJyYXlUb1N0cmluZyhmaWVsZHNWYWx1ZXMsIG1hc2ssIGZpbmFsT3B0cykgOiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0TnVtYmVyVG9GaWVsZHNERCh2YWx1ZTogbnVtYmVyLCBvcHRzOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH0pOiAobnVtYmVyIHwgc3RyaW5nKVtdIHtcbiAgY29uc3QgbG9uZ2l0dWRlID0gb3B0cy5sb25naXR1ZGU7XG4gIGNvbnN0IG5lZ2F0aXZlID0gdmFsdWUgPCAwO1xuICBpZiAobmVnYXRpdmUpIHZhbHVlICo9IC0xO1xuXG4gIGlmIChvcHRzLmZpeExhdExvbmcpIHtcbiAgICB2YWx1ZSA9IGZpeFZhbHVlKHZhbHVlLCBvcHRzLmxvbmdpdHVkZSk7XG4gIH1cblxuICBjb25zdCBzaWduID0gbmVnYXRpdmUgPyAnLScgOiAnKyc7XG4gIGNvbnN0IGRlZ3JlZXNGaWVsZHMgPSByb3VuZEZsb2F0KHZhbHVlLCBvcHRzLm1heERlY2ltYWxzKS50b1N0cmluZygpLnNwbGl0KCcuJyk7XG4gIGNvbnN0IGRlZ3JlZXMgPSBwYXJzZUludChkZWdyZWVzRmllbGRzWzBdKTtcbiAgaWYgKGRlZ3JlZXNGaWVsZHMubGVuZ3RoID4gMSkge1xuICAgIGNvbnN0IGRlZ3JlZXNUZWVucyA9IHBhcnNlSW50KGRlZ3JlZXNGaWVsZHNbMV0pICogMTAgKiogKG9wdHMubWF4RGVjaW1hbHMgLSBkZWdyZWVzRmllbGRzWzFdLmxlbmd0aCk7XG4gICAgcmV0dXJuIFtzaWduLCBkZWdyZWVzLCBkZWdyZWVzVGVlbnNdO1xuICB9IGVsc2Uge1xuICAgIGlmIChkZWdyZWVzRmllbGRzWzBdID09PSBgMWUtJHtvcHRzLm1heERlY2ltYWxzfWApIHtcbiAgICAgIHJldHVybiBbc2lnbiwgMCwgMSAvIChwYXJzZUZsb2F0KGRlZ3JlZXNGaWVsZHNbMF0pICogMTAgKiogb3B0cy5tYXhEZWNpbWFscyldO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3NpZ24sIGRlZ3JlZXNdO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXROdW1iZXJUb0ZpZWxkc0RETU0odmFsdWU6IG51bWJlciwgb3B0czogTGF0TG9uZ0Zvcm1hdE9wdGlvbnMgJiB7IGxvbmdpdHVkZTogYm9vbGVhbiB9KTogbnVtYmVyW10ge1xuICBjb25zdCBuZWdhdGl2ZSA9IHZhbHVlIDwgMDtcbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSk7XG5cbiAgaWYgKG9wdHMuZml4TGF0TG9uZykge1xuICAgIHZhbHVlID0gZml4VmFsdWUodmFsdWUsIG9wdHMubG9uZ2l0dWRlKTtcbiAgfVxuXG4gIGxldCBkZWdyZWVzOiBudW1iZXIgPSAobmVnYXRpdmUgPyAtMSA6IDEpICogTWF0aC50cnVuYyh2YWx1ZSk7XG4gIGNvbnN0IG1pbnV0ZXNGaWVsZHMgPSByb3VuZEZsb2F0KCh2YWx1ZSAtIGRlZ3JlZXMpICogNjAsIG9wdHMubWF4RGVjaW1hbHMpXG4gICAgLnRvU3RyaW5nKClcbiAgICAuc3BsaXQoJy4nKTtcblxuICBsZXQgbWludXRlcyA9IHBhcnNlSW50KG1pbnV0ZXNGaWVsZHNbMF0pO1xuICBsZXQgbWludXRlc1RlZW5zOiBudW1iZXI7XG4gIGlmIChtaW51dGVzRmllbGRzLmxlbmd0aCA+IDEpIHtcbiAgICBtaW51dGVzVGVlbnMgPSBwYXJzZUludChtaW51dGVzRmllbGRzWzFdKTtcbiAgICBpZiAobWludXRlc0ZpZWxkc1sxXS5sZW5ndGggPT09IDEpIG1pbnV0ZXNUZWVucyAqPSAxMDA7XG4gICAgZWxzZSBpZiAobWludXRlc0ZpZWxkc1sxXS5sZW5ndGggPT09IDIpIG1pbnV0ZXNUZWVucyAqPSAxMDtcbiAgfSBlbHNlIHtcbiAgICBtaW51dGVzVGVlbnMgPSAwO1xuICB9XG5cbiAgd2hpbGUgKG1pbnV0ZXMgPj0gNjApIHtcbiAgICBtaW51dGVzIC09IDYwO1xuICAgIGRlZ3JlZXMgKz0gMTtcbiAgfVxuXG4gIC8vIFRoZSByZWR1Y2UgcmVtb3ZlIGFsbCByaWdodCB6ZXJvc1xuICBjb25zdCByZXN1bHQgPSBbbWludXRlc1RlZW5zLCBtaW51dGVzLCBkZWdyZWVzXVxuICAgIC5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICBpZiAoYWNjLmxlbmd0aCA+IDAgfHwgdmFsID4gMCkge1xuICAgICAgICBhY2MucHVzaCh2YWwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSlcbiAgICAucmV2ZXJzZSgpO1xuXG4gIC8vIFJlLWFkZCBzaWduIG9uIGRlZ3JlZXNcbiAgaWYgKG5lZ2F0aXZlKSByZXN1bHRbMF0gPSAtMSAqIHJlc3VsdFswXTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXROdW1iZXJUb0ZpZWxkc0RETU1TUyh2YWx1ZTogbnVtYmVyLCBvcHRzOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH0pOiBudW1iZXJbXSB7XG4gIGNvbnN0IG5lZ2F0aXZlID0gdmFsdWUgPCAwO1xuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKTtcblxuICBpZiAob3B0cy5maXhMYXRMb25nKSB7XG4gICAgdmFsdWUgPSBmaXhWYWx1ZSh2YWx1ZSwgb3B0cy5sb25naXR1ZGUpO1xuICB9XG5cbiAgbGV0IGRlZ3JlZXM6IG51bWJlciA9IE1hdGgudHJ1bmModmFsdWUpO1xuICBsZXQgbWludXRlczogbnVtYmVyIHwgc3RyaW5nID0gTWF0aC50cnVuYygodmFsdWUgLSBkZWdyZWVzKSAqIDYwKTtcbiAgY29uc3Qgc2Vjb25kRmllbGRzOiBzdHJpbmdbXSA9IHJvdW5kRmxvYXQoKCh2YWx1ZSAtIGRlZ3JlZXMpICogNjAgLSBtaW51dGVzKSAqIDYwLCBvcHRzLm1heERlY2ltYWxzKVxuICAgIC50b1N0cmluZygpXG4gICAgLnNwbGl0KCcuJyk7XG4gIGxldCBzZWNvbmRzOiBudW1iZXIgPSBwYXJzZUludChzZWNvbmRGaWVsZHNbMF0pO1xuICBjb25zdCBtaWxpc2Vjb25kczogbnVtYmVyID0gc2Vjb25kRmllbGRzLmxlbmd0aCA+IDEgPyBwYXJzZUludChzZWNvbmRGaWVsZHNbMV0pICogKHNlY29uZEZpZWxkc1sxXS5sZW5ndGggPT09IDEgPyAxMCA6IDEpIDogMDtcblxuICB3aGlsZSAoc2Vjb25kcyA+PSA2MCkge1xuICAgIHNlY29uZHMgLT0gNjA7XG4gICAgbWludXRlcyArPSAxO1xuICB9XG4gIHdoaWxlIChtaW51dGVzID49IDYwKSB7XG4gICAgbWludXRlcyAtPSA2MDtcbiAgICBkZWdyZWVzICs9IDE7XG4gIH1cblxuICAvLyBUaGUgcmVkdWNlIHJlbW92ZSBhbGwgcmlnaHQgemVyb3NcbiAgY29uc3QgcmVzdWx0ID0gW21pbGlzZWNvbmRzLCBzZWNvbmRzLCBtaW51dGVzLCBkZWdyZWVzXVxuICAgIC5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICBpZiAoYWNjLmxlbmd0aCA+IDAgfHwgdmFsID4gMCkge1xuICAgICAgICBhY2MucHVzaCh2YWwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSlcbiAgICAucmV2ZXJzZSgpO1xuXG4gIC8vIFJlLWFkZCBzaWduIG9uIGRlZ3JlZXNcbiAgaWYgKG5lZ2F0aXZlKSByZXN1bHRbMF0gPSAtMSAqIHJlc3VsdFswXTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBmaXhWYWx1ZSh2YWx1ZTogbnVtYmVyLCBsb25naXR1ZGU6IGJvb2xlYW4pIHtcbiAgLy8gRml4IGxvbmdpdHVkZSB3aGVuIG91dHNpZGUgWy0xODAsIDE4MF1cbiAgaWYgKGxvbmdpdHVkZSAmJiAodmFsdWUgPiAxODAgfHwgdmFsdWUgPCAtMTgwKSkge1xuICAgIHZhbHVlICU9IDE4MDtcbiAgfVxuICAvLyBGaXggbGF0aXR1ZGUgd2hlbiBvdXRzaWRlIFstOTAsIDkwXVxuICBlbHNlIGlmICghbG9uZ2l0dWRlICYmICh2YWx1ZSA+IDkwIHx8IHZhbHVlIDwgLTkwKSkge1xuICAgIHZhbHVlICU9IDkwO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RmllbGRzQXJyYXlUb1N0cmluZyhcbiAgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICBtYXNrOiAoc3RyaW5nIHwgUmVnRXhwKVtdLFxuICBvcHRzOiBMYXRMb25nRm9ybWF0T3B0aW9ucyAmIHsgbG9uZ2l0dWRlOiBib29sZWFuIH1cbik6IHN0cmluZyB7XG4gIGNvbnN0IG5lZ2F0aXZlID0gdmFsdWVzWzBdLnRvU3RyaW5nKCkuc2xpY2UoMCwgMSkgPT09ICctJztcbiAgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09ICdudW1iZXInKSB7XG4gICAgLy8gTm9ybWFsaXplIGRlZ3JlZXMgdG8gYmUgT0sgd2hlbiBjb252ZXJ0IHRvIHN0cmluZ1xuICAgIHZhbHVlc1swXSA9IE1hdGguYWJzKHZhbHVlc1swXSk7XG4gIH1cblxuICBsZXQgcmVzdWx0ID0gJyc7XG4gIGNvbnN0IGlucHV0U2VsZWN0aW9uUmFuZ2VzID0gb3B0cy5pbnB1dFNlbGVjdGlvblJhbmdlcztcbiAgY29uc3QgcGxhY2Vob2xkZXJDaGFyID0gb3B0cy5wbGFjZWhvbGRlckNoYXI7XG4gIGlucHV0U2VsZWN0aW9uUmFuZ2VzLmZvckVhY2goKHJhbmdlLCBpZHgpID0+IHtcbiAgICAvLyBcInN0YXJ0XCIgYW5kIFwiZW5kXCIgYXJlIHVzZWQgdG8gZ2V0IHN5bWJvbCBjaGFycyBmcm9tIG1hc2sgcGxhY2Vob2xkZXJcbiAgICAvLyAoYmV0d2VlbiB2YWx1YWJsZXMgY2hhcmFjdGVycylcbiAgICBjb25zdCBsYXN0ID0gaWR4ID09PSBpbnB1dFNlbGVjdGlvblJhbmdlcy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IHN0YXJ0ID0gcmFuZ2VbMV0gKyAxO1xuICAgIGNvbnN0IGVuZCA9IGxhc3QgPyBtYXNrLmxlbmd0aCA6IGlucHV0U2VsZWN0aW9uUmFuZ2VzW2lkeCArIDFdWzBdO1xuICAgIGNvbnN0IHNpemUgPSByYW5nZVsxXSAtIHJhbmdlWzBdICsgMTtcbiAgICBjb25zdCBzeW1ib2wgPSBtYXNrLnNsaWNlKHN0YXJ0LCBlbmQpLmpvaW4oJycpO1xuICAgIGlmIChpZHggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICBsZXQgdmFsdWUgPSB2YWx1ZXNbaWR4XS50b1N0cmluZygpO1xuICAgICAgdmFsdWUgPSB2YWx1ZS5wYWRTdGFydChzaXplLCBsYXN0ID8gJzAnIDogcGxhY2Vob2xkZXJDaGFyKTtcbiAgICAgIGlmIChsYXN0ICYmIHBsYWNlaG9sZGVyQ2hhciA9PT0gJycpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8wKiQvLCBwbGFjZWhvbGRlckNoYXIpO1xuICAgICAgfVxuICAgICAgcmVzdWx0ICs9IHZhbHVlICsgc3ltYm9sO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyAnJyBhcyBmaWxsQ2hhciA9IGRvbid0IGZpbGxcbiAgICAgIGlmIChwbGFjZWhvbGRlckNoYXIgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gJycudG9TdHJpbmcoKS5wYWRTdGFydChzaXplLCBwbGFjZWhvbGRlckNoYXIpO1xuICAgICAgICByZXN1bHQgKz0gdmFsdWUgKyBzeW1ib2w7XG4gICAgICB9XG4gICAgICAvLyBBdm9pZCBsYXN0IGNoYXIgZG90LCByZXBsYWNlIGl0IHdpdGggcmVhbCBsYXN0IHN5bWJvbFxuICAgICAgLy8gMDEuMDBcIiAtPlxuICAgICAgLy8gICAgICBPSzogIDFcIlxuICAgICAgLy8gICAgICBLTzogIDEuXG4gICAgICBpZiAobGFzdCAmJiByZXN1bHQuc2xpY2UoLTEpID09PSAnLicpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIC0xKTtcbiAgICAgICAgaWYgKHN5bWJvbCkge1xuICAgICAgICAgIHJlc3VsdCArPSBzeW1ib2w7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGxldCBzaWduID0gJyc7XG4gIGlmICghb3B0cz8uaGlkZVNpZ24gJiYgb3B0cy5wYXR0ZXJuICE9PSAnREQnKSB7XG4gICAgaWYgKG9wdHMubG9uZ2l0dWRlKSB7XG4gICAgICBzaWduID0gbmVnYXRpdmUgPyAnIFMnIDogJyBOJztcbiAgICB9IGVsc2Uge1xuICAgICAgc2lnbiA9IG5lZ2F0aXZlID8gJyBXJyA6ICcgRSc7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdHMuaGlkZVNpZ24gJiYgb3B0cy5wYXR0ZXJuID09PSAnREQnKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoL15cXCsvLCAnICcpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCArIHNpZ247XG59XG5cbi8vIDM2wrA1Nyc5XCIgTiAgPSAzNi45NTI1MDAwXG4vLyAxMMKwNCcyMVwiIFcgPSAtMTAuMDcyNTAwMFxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGF0aXR1ZGVPckxvbmdpdHVkZShpbnB1dDogc3RyaW5nLCBwYXR0ZXJuOiBzdHJpbmcsIG1heERlY2ltYWxzPzogbnVtYmVyLCBwbGFjZWhvbGRlckNoYXI/OiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgcGxhY2Vob2xkZXJDaGFyID0gcGxhY2Vob2xkZXJDaGFyIHx8IERFRkFVTFRfUExBQ0VIT0xERVJfQ0hBUjtcbiAgbGV0IGlucHV0Rml4ID0gaW5wdXQudHJpbSgpO1xuICBpZiAocGxhY2Vob2xkZXJDaGFyID09PSBFTVBUWV9QTEFDRUhPTERFUl9DSEFSKSB7XG4gICAgaW5wdXRGaXggPSBpbnB1dEZpeFxuICAgICAgLy8gUmVwbGFjZSBlbXB0eSBjaGFyIHBsYWNlaG9sZGVyXG4gICAgICAucmVwbGFjZShFTVBUWV9QTEFDRUhPTERFUl9DSEFSX1JFR0VYUF9HTE9CQUwsICcnKVxuICAgICAgLy8gUmVtb3ZlIHNwYWNlIGFuZCAnKycgKD0gdHJpbSBvbiBlYWNoIHBhcnRzKVxuICAgICAgLnJlcGxhY2UoU1BBQ0VfUExBQ0VIT0xERVJfQ0hBUl9SRUdFWFBfR0xPQkFMLCAnJylcbiAgICAgIC5yZXBsYWNlKFBMVVNfUExBQ0VIT0xERVJfQ0hBUl9SRUdFWFBfR0xPQkFMLCAnJyk7XG4gIH1cbiAgLy8gUmVtb3ZlIGFsbCBwbGFjZWhvbGRlciAoPSB0cmltIG9uIGVhY2ggcGFydHMpXG4gIGVsc2Uge1xuICAgIGlucHV0Rml4ID0gaW5wdXRGaXgucmVwbGFjZShuZXcgUmVnRXhwKGBbICske3BsYWNlaG9sZGVyQ2hhcn1dK2AsICdnJyksICcnKTtcbiAgfVxuXG4gIC8vREVCVUcgY29uc29sZS5kZWJ1ZyhcIlBhcnNpbmcgbGF0PSBcIiArIGlucHV0Rml4KTtcbiAgY29uc3QgcGFydHMgPSBpbnB1dEZpeC5zcGxpdCgvW14tXFxkXFx3LixdKy8pO1xuICBsZXQgZGVncmVlcyA9IHBhcnNlRmxvYXQocGFydHNbMF0ucmVwbGFjZSgvLC9nLCAnLicpKTtcbiAgaWYgKGlzTmFOKGRlZ3JlZXMpKSB7XG4gICAgY29uc29sZS5kZWJ1ZygncGFyc2VMYXRpdHVkZU9yTG9uZ2l0dWRlICcgKyBpbnB1dCArICcgLT4gSW52YWxpZCBkZWdyZWVzIChOYU4pLiBQYXJ0cyBmb3VuZDonLCBwYXJ0cyk7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIGlmIChwYXR0ZXJuID09PSAnREQnKSB7XG4gICAgcmV0dXJuIHJvdW5kRmxvYXQoZGVncmVlcywgbWF4RGVjaW1hbHMpO1xuICB9XG5cbiAgY29uc3QgbWludXRlcyA9ICgocGF0dGVybiA9PT0gJ0RETU1TUycgfHwgcGF0dGVybiA9PT0gJ0RETU0nKSAmJiBwYXJ0c1sxXSAmJiBwYXJzZUZsb2F0KHBhcnRzWzFdLnJlcGxhY2UoLywvZywgJy4nKSkpIHx8IDA7XG4gIGNvbnN0IHNlY29uZHMgPSAocGF0dGVybiA9PT0gJ0RETU1TUycgJiYgcGFydHNbMl0gJiYgcGFyc2VGbG9hdChwYXJ0c1syXS5yZXBsYWNlKC8sL2csICcuJykpKSB8fCAwO1xuICBjb25zdCBkaXJlY3Rpb24gPSAocGF0dGVybiA9PT0gJ0RETU1TUycgJiYgcGFydHNbM10pIHx8IChwYXR0ZXJuID09PSAnRERNTScgJiYgcGFydHNbMl0pIHx8IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2lnbiA9IGRpcmVjdGlvbiAmJiAoZGlyZWN0aW9uID09PSAncycgfHwgZGlyZWN0aW9uID09PSAnUycgfHwgZGlyZWN0aW9uID09PSAndycgfHwgZGlyZWN0aW9uID09PSAnVycpID8gLTEgOiAxO1xuXG4gIHJldHVybiBjb21wdXRlRGVjaW1hbERlZ3JlZXMoZGVncmVlcywgbWludXRlcywgc2Vjb25kcywgc2lnbiwgbWF4RGVjaW1hbHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZURlY2ltYWxEZWdyZWVzKGRlZ3JlZXM6IG51bWJlciwgbWludXRlczogbnVtYmVyLCBzZWNvbmRzOiBudW1iZXIsIHNpZ246IC0xIHwgMSwgbWF4RGVjaW1hbHM/OiBudW1iZXIpIHtcbiAgaWYgKGlzTmlsKGRlZ3JlZXMpKSByZXR1cm4gbnVsbDtcbiAgZGVncmVlcyA9IChzaWduIHx8IDEpICogKGRlZ3JlZXMgKyAobWludXRlcyB8fCAwKSAvIDYwICsgKHNlY29uZHMgfHwgMCkgLyAoNjAgKiA2MCkpO1xuICByZXR1cm4gcm91bmRGbG9hdChkZWdyZWVzLCBtYXhEZWNpbWFscyk7XG59XG5cbmZ1bmN0aW9uIHJvdW5kRmxvYXQoaW5wdXQ6IG51bWJlciwgbWF4RGVjaW1hbHM/OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAobWF4RGVjaW1hbHMgIT09IHVuZGVmaW5lZCAmJiBtYXhEZWNpbWFscyA+PSAwKSB7XG4gICAgLy8gVXRpbGlzYXRpb24gZGUgdG9GaXhlZCBwb3VyIGfDqXJlciBsZXMgcHJvYmzDqG1lcyBkZSBwcsOpY2lzaW9uXG4gICAgY29uc3Qgc3RyID0gaW5wdXQudG9GaXhlZChtYXhEZWNpbWFscyk7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKTtcbiAgfVxuICByZXR1cm4gaW5wdXQ7XG59XG4iXX0=
|
|
@@ -5,7 +5,7 @@ import { formatLatLong, LAT_LONG_DEFAULT_MAX_DECIMALS, MASKS, parseLatitudeOrLon
|
|
|
5
5
|
import { SPACE_PLACEHOLDER_CHAR } from '../../constants';
|
|
6
6
|
import { filter } from 'rxjs/operators';
|
|
7
7
|
import { isNil, isNotNil, isNotNilOrBlank } from '../../functions';
|
|
8
|
-
import { getInputSelectionRangesFromMask } from '../../inputs';
|
|
8
|
+
import { getInputSelectionRangesFromMask, selectInputRange } from '../../inputs';
|
|
9
9
|
import { merge, Subscription } from 'rxjs';
|
|
10
10
|
import { DEFAULT_MAX_DECIMALS } from '../duration/duration.utils';
|
|
11
11
|
import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
|
|
@@ -118,7 +118,7 @@ export class MatLatLongField {
|
|
|
118
118
|
}
|
|
119
119
|
else if (this.pattern === 'DDMM') {
|
|
120
120
|
if (this.maxDecimals != 2)
|
|
121
|
-
console.warn(`Force 'maxDecimals' to be '
|
|
121
|
+
console.warn(`Force 'maxDecimals' to be '3' when using the 'DDMM' pattern.`);
|
|
122
122
|
this.maxDecimals = 3;
|
|
123
123
|
}
|
|
124
124
|
else if (isNil(this.maxDecimals)) {
|
|
@@ -216,6 +216,7 @@ export class MatLatLongField {
|
|
|
216
216
|
}
|
|
217
217
|
_onFocus(event) {
|
|
218
218
|
this.hasFocus = true;
|
|
219
|
+
const fromTabKey = isNotNil(event.relatedTarget);
|
|
219
220
|
const fixLatLong = this.formControl.valid;
|
|
220
221
|
let strValue = formatLatLong(this.formControl.value, this.type, { ...this._formatOptions, placeholderChar: '0', fixLatLong }) ?? this.maskitoPlaceholder;
|
|
221
222
|
if (strValue.startsWith('±')) {
|
|
@@ -228,6 +229,14 @@ export class MatLatLongField {
|
|
|
228
229
|
}
|
|
229
230
|
}
|
|
230
231
|
this.textFormControl.setValue(strValue);
|
|
232
|
+
// If focus came form push tab key and the input has value, select all the value
|
|
233
|
+
if (fromTabKey && strValue.replace(/^[±+-]/, '') !== this.maskitoPlaceholder.replace(/^[±+-]/, '')) {
|
|
234
|
+
const strValueWithoutSign = strValue.replace(/^[±+-]/, '');
|
|
235
|
+
if (strValueWithoutSign !== this.maskitoPlaceholder.replace(/^[±+-]/, '')) {
|
|
236
|
+
// has value
|
|
237
|
+
selectInputRange(event.target, strValue.length - strValueWithoutSign.length, strValueWithoutSign.length);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
231
240
|
this.onFocus.emit(event);
|
|
232
241
|
return true;
|
|
233
242
|
}
|
|
@@ -337,7 +346,7 @@ export class MatLatLongField {
|
|
|
337
346
|
this.cd.markForCheck();
|
|
338
347
|
}
|
|
339
348
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: MatLatLongField, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: i2.TranslateService }, { token: i1.FormGroupDirective, optional: true }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
|
|
340
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: MatLatLongField, selector: "mat-latlong-field", inputs: { formControl: "formControl", formControlName: "formControlName", type: "type", pattern: ["latLongPattern", "pattern"], required: "required", floatLabel: "floatLabel", placeholder: "placeholder", tabindex: "tabindex", defaultSign: "defaultSign", maxDecimals: "maxDecimals", placeholderChar: "placeholderChar", autofocus: "autofocus", mobile: ["mobile", "mobile", booleanAttribute], appearance: "appearance", readonly: "readonly", subscriptSizing: "subscriptSizing" }, outputs: { onBlur: "onBlur", onFocus: "onFocus" }, providers: [
|
|
349
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: MatLatLongField, selector: "mat-latlong-field-old", inputs: { formControl: "formControl", formControlName: "formControlName", type: "type", pattern: ["latLongPattern", "pattern"], required: "required", floatLabel: "floatLabel", placeholder: "placeholder", tabindex: "tabindex", defaultSign: "defaultSign", maxDecimals: "maxDecimals", placeholderChar: "placeholderChar", autofocus: "autofocus", mobile: ["mobile", "mobile", booleanAttribute], appearance: "appearance", readonly: "readonly", subscriptSizing: "subscriptSizing" }, outputs: { onBlur: "onBlur", onFocus: "onFocus" }, providers: [
|
|
341
350
|
{
|
|
342
351
|
provide: NG_VALUE_ACCESSOR,
|
|
343
352
|
multi: true,
|
|
@@ -347,7 +356,7 @@ export class MatLatLongField {
|
|
|
347
356
|
}
|
|
348
357
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: MatLatLongField, decorators: [{
|
|
349
358
|
type: Component,
|
|
350
|
-
args: [{ selector: 'mat-latlong-field', providers: [
|
|
359
|
+
args: [{ selector: 'mat-latlong-field-old', providers: [
|
|
351
360
|
{
|
|
352
361
|
provide: NG_VALUE_ACCESSOR,
|
|
353
362
|
multi: true,
|
|
@@ -401,4 +410,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
401
410
|
type: ViewChild,
|
|
402
411
|
args: ['inputElement']
|
|
403
412
|
}] } });
|
|
404
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubGF0bG9uZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE0QyxpQkFBaUIsRUFBMEMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakosT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUNMLGFBQWEsRUFDYiw2QkFBNkIsRUFJN0IsS0FBSyxFQUNMLHdCQUF3QixHQUN6QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDhCQUE4QixFQUF1RSxNQUFNLDhCQUE4QixDQUFDO0FB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LFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFHbEMsVUFBVTtzQkFEYixLQUFLO2dCQVFPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBVUYsZUFBZTtzQkFEbEIsS0FBSztnQkFRSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFFb0IsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaGFyZWRWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtcbiAgZm9ybWF0TGF0TG9uZyxcbiAgTEFUX0xPTkdfREVGQVVMVF9NQVhfREVDSU1BTFMsXG4gIExhdExvbmdGb3JtYXRPcHRpb25zLFxuICBMYXRMb25nUGF0dGVybixcbiAgTGF0TG9uZ1R5cGUsXG4gIE1BU0tTLFxuICBwYXJzZUxhdGl0dWRlT3JMb25naXR1ZGUsXG59IGZyb20gJy4vbGF0bG9uZy51dGlscyc7XG5pbXBvcnQgeyBTUEFDRV9QTEFDRUhPTERFUl9DSEFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzTmlsLCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2sgfSBmcm9tICcuLi8uLi9pbnB1dHMnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgREVGQVVMVF9NQVhfREVDSU1BTFMgfSBmcm9tICcuLi9kdXJhdGlvbi9kdXJhdGlvbi51dGlscyc7XG5pbXBvcnQgeyBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMsIE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsIE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zLCBTdWJzY3JpcHRTaXppbmcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEFwcEZsb2F0TGFiZWxUeXBlIH0gZnJvbSAnLi4vLi4vZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX0FQUEVBUkFOQ0UsIE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfU1VCU0NSSVBUX1NJWklORyB9IGZyb20gJy4uL21hdGVyaWFsLmNvbmZpZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uLy4uL3BsYXRmb3Jtcyc7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LWxhdGxvbmctZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwubGF0bG9uZy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwubGF0bG9uZy5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXRMYXRMb25nRmllbGQpLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRMYXRMb25nRmllbGQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgX2Zvcm1hdE9wdGlvbnM6IExhdExvbmdGb3JtYXRPcHRpb25zO1xuICBwcml2YXRlIF9kaXNhYmxpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfd3JpdGluZyA9IGZhbHNlO1xuICBwcml2YXRlIF9hcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3N1YnNjcmlwdFNpemluZzogU3Vic2NyaXB0U2l6aW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRBcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0U3Vic2NyaXB0U2l6aW5nOiBTdWJzY3JpcHRTaXppbmc7XG5cbiAgcHJvdGVjdGVkIF9yZWFkb25seSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgdGV4dEZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHByb3RlY3RlZCBzaWduRm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgcHJvdGVjdGVkIG1hc2s6IChzdHJpbmcgfCBSZWdFeHApW107XG4gIHByb3RlY3RlZCBpbnB1dFBsYWNlSG9sZGVySTE4bktleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2hvd1NpZ25Db250cm9sOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgbWFza2l0b1BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBoYXNGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGdldCBkaXNhYmxlZCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZWQ7XG4gIH1cblxuICBASW5wdXQoKSBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgdHlwZTogTGF0TG9uZ1R5cGU7XG4gIEBJbnB1dCgnbGF0TG9uZ1BhdHRlcm4nKSBwYXR0ZXJuOiBMYXRMb25nUGF0dGVybjtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogQXBwRmxvYXRMYWJlbFR5cGUgPSAnYXV0byc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIGRlZmF1bHRTaWduOiAnLScgfCAnKyc7XG4gIEBJbnB1dCgpIG1heERlY2ltYWxzOiBudW1iZXIgPSBMQVRfTE9OR19ERUZBVUxUX01BWF9ERUNJTUFMUztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXJDaGFyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGF1dG9mb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbW9iaWxlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBhcHBlYXJhbmNlKHZhbHVlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlKSB7XG4gICAgdGhpcy5fYXBwZWFyYW5jZSA9IHZhbHVlO1xuICB9XG4gIGdldCBhcHBlYXJhbmNlKCk6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2Uge1xuICAgIHJldHVybiB0aGlzLl9hcHBlYXJhbmNlIHx8IHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZG9ubHkgPSB2YWx1ZTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzdWJzY3JpcHRTaXppbmcodmFsdWU6IFN1YnNjcmlwdFNpemluZykge1xuICAgIHRoaXMuX3N1YnNjcmlwdFNpemluZyA9IHZhbHVlO1xuICB9XG4gIGdldCBzdWJzY3JpcHRTaXppbmcoKTogU3Vic2NyaXB0U2l6aW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3Vic2NyaXB0U2l6aW5nIHx8IHRoaXMuX2RlZmF1bHRTdWJzY3JpcHRTaXppbmc7XG4gIH1cblxuICBAT3V0cHV0KCkgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuICBAT3V0cHV0KCkgb25Gb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnKSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwRGlyOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgQEluamVjdChNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMpIGRlZmF1bHRPcHRpb25zPzogTWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnNcbiAgKSB7XG4gICAgdGhpcy5fZGVmYXVsdFN1YnNjcmlwdFNpemluZyA9IGRlZmF1bHRPcHRpb25zPy5zdWJzY3JpcHRTaXppbmcgfHwgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9TVUJTQ1JJUFRfU0laSU5HO1xuICAgIHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlID0gZGVmYXVsdE9wdGlvbnM/LmFwcGVhcmFuY2UgfHwgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9BUFBFQVJBTkNFO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tb2JpbGUgPSB0aGlzLm1vYmlsZSA/PyBpc01vYmlsZSh3aW5kb3cpO1xuXG4gICAgaWYgKGlzTmlsKHRoaXMucGxhY2Vob2xkZXJDaGFyKSkge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlckNoYXIgPSB0aGlzLm1vYmlsZSA/IFNQQUNFX1BMQUNFSE9MREVSX0NIQVIgOiAnJztcbiAgICB9XG5cbiAgICB0aGlzLnR5cGUgPSB0aGlzLnR5cGUgfHwgJ2xhdGl0dWRlJztcbiAgICB0aGlzLnBhdHRlcm4gPSB0aGlzLnBhdHRlcm4gfHwgJ0RETU0nO1xuICAgIHRoaXMubWFzayA9IE1BU0tTW3RoaXMudHlwZV0/Llt0aGlzLnBhdHRlcm5dO1xuICAgIGlmICghdGhpcy5tYXNrKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBhdHRyaWJ1dGUgdmFsdWUuIEV4cGVjdGVkOiB0eXBlOiAnbGF0aXR1ZGV8bG9uZ2l0dWRlJyBhbmQgbGF0bG9uZ1BhdHRlcm46ICdERHxERE1NfERETU1TUydcIik7XG4gICAgICB0aGlzLnR5cGUgPSAnbGF0aXR1ZGUnO1xuICAgICAgdGhpcy5wYXR0ZXJuID0gJ0RETU0nO1xuICAgICAgdGhpcy5tYXNrID0gTUFTS1NbdGhpcy50eXBlXVt0aGlzLnBhdHRlcm5dO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBtYXhEZWNpbWFscyBoYXMgY29ycmVjdCB2YWx1ZSBkZXBlbmRpbmcgb24gcGF0dGVybiBhbmQgaXQncyBvd24gdmFsdWVcbiAgICBpZiAodGhpcy5wYXR0ZXJuID09PSAnREQnKSB7XG4gICAgICBpZiAodGhpcy5tYXhEZWNpbWFscyAhPSA3KSBjb25zb2xlLndhcm4oYEZvcmNlICdtYXhEZWNpbWFscycgdG8gYmUgJzcnIHdoZW4gdXNpbmcgdGhlICdERCcgcGF0dGVybi5gKTtcbiAgICAgIHRoaXMubWF4RGVjaW1hbHMgPSA3O1xuICAgIH0gZWxzZSBpZiAodGhpcy5wYXR0ZXJuID09PSAnRERNTScpIHtcbiAgICAgIGlmICh0aGlzLm1heERlY2ltYWxzICE9IDIpIGNvbnNvbGUud2FybihgRm9yY2UgJ21heERlY2ltYWxzJyB0byBiZSAnMicgd2hlbiB1c2luZyB0aGUgJ0RETU1TUycgcGF0dGVybi5gKTtcbiAgICAgIHRoaXMubWF4RGVjaW1hbHMgPSAzO1xuICAgIH0gZWxzZSBpZiAoaXNOaWwodGhpcy5tYXhEZWNpbWFscykpIHtcbiAgICAgIHRoaXMubWF4RGVjaW1hbHMgPSBERUZBVUxUX01BWF9ERUNJTUFMUztcbiAgICB9IGVsc2UgaWYgKHRoaXMubWF4RGVjaW1hbHMgPCAwKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBhdHRyaWJ1dGUgJ21heERlY2ltYWxzJy4gTXVzdCBhIHBvc2l0aXZlIHZhbHVlLlwiKTtcbiAgICAgIHRoaXMubWF4RGVjaW1hbHMgPSBERUZBVUxUX01BWF9ERUNJTUFMUztcbiAgICB9IGVsc2UgaWYgKHRoaXMubWF4RGVjaW1hbHMgIT09IERFRkFVTFRfTUFYX0RFQ0lNQUxTKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBJbnZhbGlkIGF0dHJpYnV0ZSAnbWF4RGVjaW1hbHMnIC0gRXhwZWN0ZWQgdmFsdWU6ICR7REVGQVVMVF9NQVhfREVDSU1BTFN9IGJ1dCBnZXQ6ICR7dGhpcy5tYXhEZWNpbWFsc30uIE90aGVyIHZhbHVlIG5vdCBpbXBsZW1lbnRlZC5gXG4gICAgICApO1xuICAgICAgdGhpcy5tYXhEZWNpbWFscyA9IERFRkFVTFRfTUFYX0RFQ0lNQUxTO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1NpZ25Db250cm9sID0gdGhpcy5wYXR0ZXJuICE9PSAnREQnO1xuXG4gICAgdGhpcy5fZm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgIHBhdHRlcm46IHRoaXMucGF0dGVybixcbiAgICAgIG1heERlY2ltYWxzOiB0aGlzLm1heERlY2ltYWxzLFxuICAgICAgaGlkZVNpZ246IHRoaXMuc2hvd1NpZ25Db250cm9sLFxuICAgICAgaW5wdXRTZWxlY3Rpb25SYW5nZXM6IGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2sodGhpcy5tYXNrKSxcbiAgICAgIHBsYWNlaG9sZGVyQ2hhcjogdGhpcy5wbGFjZWhvbGRlckNoYXIsXG4gICAgfTtcblxuICAgIHRoaXMuaW5wdXRQbGFjZUhvbGRlckkxOG5LZXkgPSAnQ09NTU9OLkxBVF9MT05HLicgKyAoKHRoaXMudHlwZSA9PT0gJ2xvbmdpdHVkZScgJiYgJ0QnKSB8fCAnJykgKyB0aGlzLnBhdHRlcm4gKyAnX1BMQUNFSE9MREVSJztcblxuICAgIHRoaXMudGV4dEZvcm1Db250cm9sID0gdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHRoaXMucmVxdWlyZWQgPyBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbbnVsbF0pO1xuXG4gICAgdGhpcy5zaWduRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodGhpcy5yZXF1aXJlZCA/IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtudWxsXSk7XG5cbiAgICB0aGlzLmZvcm1Db250cm9sID1cbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wgfHwgKHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIHRoaXMuZm9ybUdyb3VwRGlyICYmICh0aGlzLmZvcm1Hcm91cERpci5mb3JtLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgYXMgVW50eXBlZEZvcm1Db250cm9sKSk7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIG1hbmRhdG9yeSBhdHRyaWJ1dGUgJ2Zvcm1Db250cm9sJyBvciAnZm9ybUNvbnRyb2xOYW1lJyBpbiA8bWF0LWxhdGxvbmctZmllbGQ+LlwiKTtcblxuICAgIGNvbnN0IGV4aXN0aW5nVmFsaWRhdG9ycyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsaWRhdG9yO1xuICAgIGlmIChleGlzdGluZ1ZhbGlkYXRvcnMpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbZXhpc3RpbmdWYWxpZGF0b3JzLCB0aGlzLnR5cGUgPT09ICdsYXRpdHVkZScgPyBTaGFyZWRWYWxpZGF0b3JzLmxhdGl0dWRlIDogU2hhcmVkVmFsaWRhdG9ycy5sb25naXR1ZGVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJyA/IFNoYXJlZFZhbGlkYXRvcnMubGF0aXR1ZGUgOiBTaGFyZWRWYWxpZGF0b3JzLmxvbmdpdHVkZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChtZXJnZSh0aGlzLnRleHRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMsIHRoaXMuc2lnbkZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcykuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Gb3JtQ2hhbmdlKCkpKTtcblxuICAgIC8vIExpc3RlbiBzdGF0dXMgY2hhbmdlcyAod2hlbiBkb25lIG91dHNpZGUgdGhlIGNvbXBvbmVudCAgLSBlLmcuIHdoZW4gc2V0RXJyb3JzKCkgaXMgY2FsbGluZyBvbiB0aGUgZm9ybUNvbnRyb2wpXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMucmVhZG9ubHkgJiYgIXRoaXMuX3dyaXRpbmcgJiYgIXRoaXMuX2Rpc2FibGluZykgLy8gU2tpcFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5tYXJrRm9yQ2hlY2soKSlcbiAgICApO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRyYW5zbGF0ZS5nZXQodGhpcy5pbnB1dFBsYWNlSG9sZGVySTE4bktleSkuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbikgPT4gdGhpcy51cGRhdGVUcmFuc2xhdGlvbnModHJhbnNsYXRpb24pKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd3JpdGluZykgcmV0dXJuO1xuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyA/IHBhcnNlRmxvYXQob2JqLnJlcGxhY2UoLywvZywgJy4nKSkgOiBvYmo7XG4gICAgY29uc3QgZml4TGF0TG9uZyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsaWQ7XG4gICAgY29uc3Qgc3RyVmFsdWUgPSB0aGlzLl9mb3JtYXQodmFsdWUsIHsgZml4TGF0TG9uZyB9KTtcblxuICAgIGNvbnN0IHNpZ24gPSBpc05vdE5pbCh2YWx1ZSlcbiAgICAgID8gdmFsdWUgPCAwXG4gICAgICAgID8gLTFcbiAgICAgICAgOiAxXG4gICAgICA6IC8vIFVzZSBkZWZhdWx0IHNpZ24sIGlmIGFueVxuICAgICAgICB0aGlzLmRlZmF1bHRTaWduXG4gICAgICAgID8gdGhpcy5kZWZhdWx0U2lnbiA9PT0gJy0nXG4gICAgICAgICAgPyAtMVxuICAgICAgICAgIDogMVxuICAgICAgICA6IG51bGw7XG5cbiAgICB0aGlzLnNpZ25Gb3JtQ29udHJvbC5wYXRjaFZhbHVlKHNpZ24sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIC8vIFJlc2V0IHRoZSBmaWVsZFxuICAgICAgdGhpcy50ZXh0Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGV4dEZvcm1Db250cm9sLnBhdGNoVmFsdWUoc3RyVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGluZykgcmV0dXJuO1xuXG4gICAgdGhpcy5fZGlzYWJsaW5nID0gdHJ1ZTtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy50ZXh0Rm9ybUNvbnRyb2wuZGlzYWJsZSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5zaWduRm9ybUNvbnRyb2wuZGlzYWJsZSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRleHRGb3JtQ29udHJvbC5lbmFibGUoeyBvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc2lnbkZvcm1Db250cm9sLmVuYWJsZSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICB0aGlzLl9kaXNhYmxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgX29uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICB0aGlzLmhhc0ZvY3VzID0gdHJ1ZTtcbiAgICBjb25zdCBmaXhMYXRMb25nID0gdGhpcy5mb3JtQ29udHJvbC52YWxpZDtcblxuICAgIGxldCBzdHJWYWx1ZSA9XG4gICAgICBmb3JtYXRMYXRMb25nKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUsIHRoaXMudHlwZSwgeyAuLi50aGlzLl9mb3JtYXRPcHRpb25zLCBwbGFjZWhvbGRlckNoYXI6ICcwJywgZml4TGF0TG9uZyB9KSA/PyB0aGlzLm1hc2tpdG9QbGFjZWhvbGRlcjtcblxuICAgIGlmIChzdHJWYWx1ZS5zdGFydHNXaXRoKCfCsScpKSB7XG4gICAgICBzdHJWYWx1ZSA9IHN0clZhbHVlLnJlcGxhY2UoJ8KxJywgdGhpcy5kZWZhdWx0U2lnbik7XG4gICAgICBpZiAodGhpcy50eXBlID09PSAnbGF0aXR1ZGUnKSB7XG4gICAgICAgIHRoaXMudGV4dEZvcm1Db250cm9sLnNldFZhbHVlKHN0clZhbHVlICsgJyAnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGV4dEZvcm1Db250cm9sLnNldFZhbHVlKHN0clZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRleHRGb3JtQ29udHJvbC5zZXRWYWx1ZShzdHJWYWx1ZSk7XG5cbiAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBfb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgdGhpcy5oYXNGb2N1cyA9IGZhbHNlO1xuICAgIGxldCBzdHJWYWx1ZSA9IHRoaXMudGV4dEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgLy8gUmVzZXQgbWFzayBpZiB2YWx1ZSBpcyBlbXB0eVxuICAgIGlmICghL1xcZC8udGVzdChzdHJWYWx1ZSkpIHtcbiAgICAgIHN0clZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZShzdHJWYWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKHBhcnNlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZm9ybWF0KHZhbHVlOiBudW1iZXIsIG9wdHM6IFBhcnRpYWw8TGF0TG9uZ0Zvcm1hdE9wdGlvbnM+ID0ge30pOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXRMYXRMb25nKHZhbHVlLCB0aGlzLnR5cGUsIHsgLi4udGhpcy5fZm9ybWF0T3B0aW9ucywgLi4ub3B0cyB9KSA/PyB0aGlzLm1hc2tpdG9QbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBfY2hlY2tJZlRvdWNoZWQoKSB7XG4gICAgaWYgKHRoaXMudGV4dEZvcm1Db250cm9sLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByaXZhdGUgbWV0aG9kIC0tICovXG5cbiAgcHJpdmF0ZSBvbkZvcm1DaGFuZ2UoKSB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjsgLy8gU2tpcCBpZiBjYWxsIGJ5IHNlbGZcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcblxuICAgIGxldCBzdHJWYWx1ZSA9IHRoaXMudGV4dEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgLy8gUmVzZXQgbWFzayBpZiB2YWx1ZSBpcyBlbXB0eVxuICAgIGlmICghL1xcZC8udGVzdChzdHJWYWx1ZSkpIHtcbiAgICAgIHN0clZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZShzdHJWYWx1ZSk7XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UocGFyc2VkVmFsdWUpO1xuXG4gICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDaGFuZ2UodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGZvcm1Db250cm9sVmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgaWYgKGZvcm1Db250cm9sVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICBpZiAodGhpcy50ZXh0Rm9ybUNvbnRyb2wudmFsaWQpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY2hlY2tJZlRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRyYW5zbGF0aW9ucyh0cmFuc2xhdGlvbjogc3RyaW5nKSB7XG4gICAgLy8gTm8gY2hhbmdlXG4gICAgaWYgKHRoaXMubWFza2l0b1BsYWNlaG9sZGVyID09PSB0cmFuc2xhdGlvbikgcmV0dXJuO1xuICAgIC8vIFRyYW5zbGF0aW9uIGZhbGxiYWNrXG4gICAgaWYgKHRoaXMuaW5wdXRQbGFjZUhvbGRlckkxOG5LZXkgPT09IHRyYW5zbGF0aW9uKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucGF0dGVybikge1xuICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2xvbmdpdHVkZScpIHtcbiAgICAgICAgICAgIHRoaXMubWFza2l0b1BsYWNlaG9sZGVyID0gJ8KxRERELkRERERERETCsCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWFza2l0b1BsYWNlaG9sZGVyID0gJ8KxIERELkRERERERETCsCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdERE1NJzpcbiAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbG9uZ2l0dWRlJykge1xuICAgICAgICAgICAgdGhpcy5tYXNraXRvUGxhY2Vob2xkZXIgPSBcIkRERMKwIE1NLk1NTSdcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYXNraXRvUGxhY2Vob2xkZXIgPSBcIkREwrAgTU0uTU1NJ1wiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRERNTVNTJzpcbiAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbG9uZ2l0dWRlJykge1xuICAgICAgICAgICAgdGhpcy5tYXNraXRvUGxhY2Vob2xkZXIgPSAnREREwrAgTU1cXCcgU1MuU1NcIic7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWFza2l0b1BsYWNlaG9sZGVyID0gJ0REwrAgTU1cXCcgU1MuU1NcIic7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1hc2tpdG9QbGFjZWhvbGRlciA9IHRyYW5zbGF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVZhbHVlKHN0clZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBwYXJzZWRWYWx1ZTogbnVtYmVyO1xuICAgIGlmIChpc05vdE5pbE9yQmxhbmsoc3RyVmFsdWUpKSB7XG4gICAgICBpZiAodGhpcy5wYXR0ZXJuID09PSAnREQnKSB7XG4gICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VMYXRpdHVkZU9yTG9uZ2l0dWRlKHN0clZhbHVlLCB0aGlzLnBhdHRlcm4sIDcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2lnbiA9IHRoaXMuc2lnbkZvcm1Db250cm9sLnZhbHVlIHx8IHRoaXMuZGVmYXVsdFNpZ24gPT09ICctJyA/IC0xIDogMTtcbiAgICAgICAgcGFyc2VkVmFsdWUgPSBzaWduICogcGFyc2VMYXRpdHVkZU9yTG9uZ2l0dWRlKHN0clZhbHVlLCB0aGlzLnBhdHRlcm4sIDcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWRWYWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGF0dGVybiAhPT0gJ0REJyAmJiBwYXJzZWRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2lnbiA9IHRoaXMuc2lnbkZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgcGFyc2VkVmFsdWUgPSBzaWduICogTWF0aC5hYnMocGFyc2VkVmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjwhLS0gcmVhZG9ubHkgLS0+XG48bWF0LWZvcm0tZmllbGRcbiAgKm5nSWY9XCJyZWFkb25seTsgZWxzZSB3cml0YWJsZVwiXG4gIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCJcbiAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gIFtzdWJzY3JpcHRTaXppbmddPVwic3Vic2NyaXB0U2l6aW5nXCJcbiAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1kaXNhYmxlZFwiXG4+XG4gIDxkaXYgbWF0UHJlZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICBAaWYgKGZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlcikge1xuICAgIDxtYXQtbGFiZWw+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cbiAgfVxuXG4gIDxpbnB1dCBtYXRJbnB1dCBoaWRkZW4gdHlwZT1cInRleHRcIiByZWFkb25seSBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiAvPlxuICA8aW9uLXRleHQ+e3sgX2Zvcm1hdChmb3JtQ29udHJvbC52YWx1ZSkgfX08L2lvbi10ZXh0PlxuXG4gIDxkaXYgbWF0U3VmZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGhpbnRzIC0tPlxuICA8bWF0LWhpbnQgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiZm9ybUNvbnRyb2wuaW52YWxpZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRIaW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtaGludD5cbjwvbWF0LWZvcm0tZmllbGQ+XG5cbjwhLS0gd3JpdGFibGUgLS0+XG48bmctdGVtcGxhdGUgI3dyaXRhYmxlPlxuICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZyB7eyBhcHBlYXJhbmNlIH19XCI+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZyBuby13cmFwXCI+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cInRleHQgaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGVcIlxuICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgIFtzdWJzY3JpcHRTaXppbmddPVwiJ2R5bmFtaWMnXCJcbiAgICAgICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWludmFsaWRdPVwiZm9ybUNvbnRyb2wudG91Y2hlZCAmJiAoc2lnbkZvcm1Db250cm9sLmludmFsaWQgfHwgZm9ybUNvbnRyb2wuaW52YWxpZClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBtYXRQcmVmaXg+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciB9fTwvbWF0LWxhYmVsPlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgI2lucHV0RWxlbWVudFxuICAgICAgICAgICAgW21hc2tpdG9dPVwibWFza2l0b1BsYWNlaG9sZGVyIHwgbWFza2l0b1BsYWNlaG9sZGVyOiBtYXNrXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGJsdXIpPVwiX29uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJfb25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0ZXh0Rm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIEBpZiAoIXNob3dTaWduQ29udHJvbCkge1xuICAgICAgICAgICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9pb24tY29sPlxuXG4gICAgICA8IS0tIHNpZ24gLS0+XG4gICAgICBAaWYgKHNob3dTaWduQ29udHJvbCkge1xuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cInNpZ24gaW9uLW5vLXBhZGRpbmcge3sgdHlwZSB9fVwiPlxuICAgICAgICAgIEBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIEBjYXNlICgnbGF0aXR1ZGUnKSB7XG4gICAgICAgICAgICAgIDwhLS0gc2lnbiBvbiBsYXRpdHVkZSAtLT5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgW3N1YnNjcmlwdFNpemluZ109XCInZHluYW1pYydcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tZGMtdGV4dC1maWVsZC0taW52YWxpZF09XCJmb3JtQ29udHJvbC50b3VjaGVkICYmIHNpZ25Gb3JtQ29udHJvbC5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2lnbkZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQ09NTU9OLkxBVF9MT05HLkxBVF9TSUdOX1BMQUNFSE9MREVSJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXggIT09IHVuZGVmaW5lZCA/IHRhYmluZGV4ICsgMSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjFcIj57eyAnQ09NTU9OLkxBVF9MT05HLkxBVF9TSUdOX04nIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIi0xXCI+e3sgJ0NPTU1PTi5MQVRfTE9ORy5MQVRfU0lHTl9TJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdsb25naXR1ZGUnKSB7XG4gICAgICAgICAgICAgIDwhLS0gc2lnbiBvbiBsb25naXR1ZGUgLS0+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgIFtzdWJzY3JpcHRTaXppbmddPVwiJ2R5bmFtaWMnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWludmFsaWRdPVwiZm9ybUNvbnRyb2wudG91Y2hlZCAmJiBzaWduRm9ybUNvbnRyb2wuaW52YWxpZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNpZ25Gb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0NPTU1PTi5MQVRfTE9ORy5MT05HX1NJR05fUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleCAhPT0gdW5kZWZpbmVkID8gdGFiaW5kZXggKyAxIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMVwiIHRyYW5zbGF0ZT57eyAnQ09NTU9OLkxBVF9MT05HLkxPTkdfU0lHTl9FJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCItMVwiIHRyYW5zbGF0ZT57eyAnQ09NTU9OLkxBVF9MT05HLkxPTkdfU0lHTl9XJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgfVxuICAgIDwvaW9uLXJvdz5cbiAgPC9pb24tZ3JpZD5cblxuICA8IS0tIERvIHRoZSBzYW1lIGFzIE1hdEZyb21GaWVsZCBzaW5jZSBhbmd1bGFyIDE1IChzZWUgY29tcG9uZW50IHNvdXJjZSktLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyXCJcbiAgICBbY2xhc3MubWF0LW1kYy1mb3JtLWZpZWxkLWJvdHRvbS1hbGlnbl09XCJzdWJzY3JpcHRTaXppbmcgPT09ICdmaXhlZCdcIlxuICAgIFtjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtc3Vic2NyaXB0LWR5bmFtaWMtc2l6ZV09XCJzdWJzY3JpcHRTaXppbmcgPT09ICdkeW5hbWljJ1wiXG4gID5cbiAgICBAaWYgKGZvcm1Db250cm9sLnRvdWNoZWQgJiYgZm9ybUNvbnRyb2wuaW52YWxpZCkge1xuICAgICAgPCEtLSBlcnJvcnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWVycm9yLXdyYXBwZXJcIj5cbiAgICAgICAgQGlmIChmb3JtQ29udHJvbC5lcnJvcnMgfCBtYXBLZXlzIHwgYXJyYXlGaXJzdDsgYXMgZXJyb3JLZXkpIHtcbiAgICAgICAgICBAc3dpdGNoIChlcnJvcktleSkge1xuICAgICAgICAgICAgQGNhc2UgKCdyZXF1aXJlZCcpIHtcbiAgICAgICAgICAgICAgPG1hdC1lcnJvciB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgnbGF0aXR1ZGUnKSB7XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9MQVRJVFVERTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdsb25naXR1ZGUnKSB7XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9MT05HSVRVREU8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgnbWluJykge1xuICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIHt7ICdFUlJPUi5GSUVMRF9NSU5fQ09NUEFDVCcgfCB0cmFuc2xhdGU6IHsgbWluOiBfZm9ybWF0KGZvcm1Db250cm9sLmVycm9ycy5taW4ubWluKSB9IH19XG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdtYXgnKSB7XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAge3sgJ0VSUk9SLkZJRUxEX01BWF9DT01QQUNUJyB8IHRyYW5zbGF0ZTogeyBtYXg6IF9mb3JtYXQoZm9ybUNvbnRyb2wuZXJyb3JzLm1heC5tYXgpIH0gfX1cbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ21zZycpIHtcbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtQ29udHJvbC5lcnJvcnMubXNnPy5rZXkgfHwgZm9ybUNvbnRyb2wuZXJyb3JzLm1zZyB8IHRyYW5zbGF0ZTogZm9ybUNvbnRyb2wuZXJyb3JzLm1zZz8ucGFyYW1zIH19XG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0RXJyb3JUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdEVycm9yVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIGhpbnRzIC0tPlxuICAgICAgPG1hdC1oaW50PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0SGludFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L21hdC1oaW50PlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21hdFByZWZpeFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0UHJlZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWF0U3VmZml4VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtYXRFcnJvclRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtZXJyb3IsW21hdEVycm9yXVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWF0SGludFRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1oaW50Om5vdChbYWxpZ249J2VuZCddKSxbbWF0SGludF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1oaW50LXNwYWNlclwiPjwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1oaW50W2FsaWduPSdlbmQnXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
413
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubGF0bG9uZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE0QyxpQkFBaUIsRUFBMEMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakosT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUNMLGFBQWEsRUFDYiw2QkFBNkIsRUFJN0IsS0FBSyxFQUNMLHdCQUF3QixHQUN6QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakYsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDhCQUE4QixFQUF1RSxNQUFNLDhC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Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQzt5QkFDL0M7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQTJFNUMsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyw4QkFBOEI7eUNBakQvQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNtQixPQUFPO3NCQUEvQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFDZCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ2tDLE1BQU07c0JBQTdDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBR2xDLFVBQVU7c0JBRGIsS0FBSztnQkFRTyxRQUFRO3NCQUFwQixLQUFLO2dCQVVGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBUUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBRW9CLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2hhcmVkVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvci92YWxpZGF0b3JzJztcbmltcG9ydCB7XG4gIGZvcm1hdExhdExvbmcsXG4gIExBVF9MT05HX0RFRkFVTFRfTUFYX0RFQ0lNQUxTLFxuICBMYXRMb25nRm9ybWF0T3B0aW9ucyxcbiAgTGF0TG9uZ1BhdHRlcm4sXG4gIExhdExvbmdUeXBlLFxuICBNQVNLUyxcbiAgcGFyc2VMYXRpdHVkZU9yTG9uZ2l0dWRlLFxufSBmcm9tICcuL2xhdGxvbmcudXRpbHMnO1xuaW1wb3J0IHsgU1BBQ0VfUExBQ0VIT0xERVJfQ0hBUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc05pbCwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuayB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBnZXRJbnB1dFNlbGVjdGlvblJhbmdlc0Zyb21NYXNrLCBzZWxlY3RJbnB1dFJhbmdlIH0gZnJvbSAnLi4vLi4vaW5wdXRzJztcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERFRkFVTFRfTUFYX0RFQ0lNQUxTIH0gZnJvbSAnLi4vZHVyYXRpb24vZHVyYXRpb24udXRpbHMnO1xuaW1wb3J0IHsgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TLCBNYXRGb3JtRmllbGRBcHBlYXJhbmNlLCBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucywgU3Vic2NyaXB0U2l6aW5nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBBcHBGbG9hdExhYmVsVHlwZSB9IGZyb20gJy4uLy4uL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9BUFBFQVJBTkNFLCBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX1NVQlNDUklQVF9TSVpJTkcgfSBmcm9tICcuLi9tYXRlcmlhbC5jb25maWcnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi8uLi9wbGF0Zm9ybXMnO1xuXG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1sYXRsb25nLWZpZWxkLW9sZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC5sYXRsb25nLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXRlcmlhbC5sYXRsb25nLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hdExhdExvbmdGaWVsZCksXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1hdExhdExvbmdGaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfZm9ybWF0T3B0aW9uczogTGF0TG9uZ0Zvcm1hdE9wdGlvbnM7XG4gIHByaXZhdGUgX2Rpc2FibGluZyA9IGZhbHNlO1xuICBwcml2YXRlIF93cml0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgX2FwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0U2l6aW5nOiBTdWJzY3JpcHRTaXppbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdEFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRTdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZztcblxuICBwcm90ZWN0ZWQgX3JlYWRvbmx5ID0gZmFsc2U7XG4gIHByb3RlY3RlZCB0ZXh0Rm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgcHJvdGVjdGVkIHNpZ25Gb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBwcm90ZWN0ZWQgbWFzazogKHN0cmluZyB8IFJlZ0V4cClbXTtcbiAgcHJvdGVjdGVkIGlucHV0UGxhY2VIb2xkZXJJMThuS2V5OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBzaG93U2lnbkNvbnRyb2w6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBtYXNraXRvUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIGhhc0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgfHwgdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlOiBMYXRMb25nVHlwZTtcbiAgQElucHV0KCdsYXRMb25nUGF0dGVybicpIHBhdHRlcm46IExhdExvbmdQYXR0ZXJuO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBBcHBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgZGVmYXVsdFNpZ246ICctJyB8ICcrJztcbiAgQElucHV0KCkgbWF4RGVjaW1hbHM6IG51bWJlciA9IExBVF9MT05HX0RFRkFVTFRfTUFYX0RFQ0lNQUxTO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlckNoYXI6IHN0cmluZztcbiAgQElucHV0KCkgYXV0b2ZvY3VzID0gZmFsc2U7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtb2JpbGU6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2V0IGFwcGVhcmFuY2UodmFsdWU6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UpIHtcbiAgICB0aGlzLl9hcHBlYXJhbmNlID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGFwcGVhcmFuY2UoKTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVhcmFuY2UgfHwgdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZWFkb25seSA9IHZhbHVlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHN1YnNjcmlwdFNpemluZyh2YWx1ZTogU3Vic2NyaXB0U2l6aW5nKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0U2l6aW5nID0gdmFsdWU7XG4gIH1cbiAgZ2V0IHN1YnNjcmlwdFNpemluZygpOiBTdWJzY3JpcHRTaXppbmcge1xuICAgIHJldHVybiB0aGlzLl9zdWJzY3JpcHRTaXppbmcgfHwgdGhpcy5fZGVmYXVsdFN1YnNjcmlwdFNpemluZztcbiAgfVxuXG4gIEBPdXRwdXQoKSBvbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcpIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBASW5qZWN0KE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUykgZGVmYXVsdE9wdGlvbnM/OiBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9uc1xuICApIHtcbiAgICB0aGlzLl9kZWZhdWx0U3Vic2NyaXB0U2l6aW5nID0gZGVmYXVsdE9wdGlvbnM/LnN1YnNjcmlwdFNpemluZyB8fCBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX1NVQlNDUklQVF9TSVpJTkc7XG4gICAgdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UgPSBkZWZhdWx0T3B0aW9ucz8uYXBwZWFyYW5jZSB8fCBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX0FQUEVBUkFOQ0U7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1vYmlsZSA9IHRoaXMubW9iaWxlID8/IGlzTW9iaWxlKHdpbmRvdyk7XG5cbiAgICBpZiAoaXNOaWwodGhpcy5wbGFjZWhvbGRlckNoYXIpKSB7XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyQ2hhciA9IHRoaXMubW9iaWxlID8gU1BBQ0VfUExBQ0VIT0xERVJfQ0hBUiA6ICcnO1xuICAgIH1cblxuICAgIHRoaXMudHlwZSA9IHRoaXMudHlwZSB8fCAnbGF0aXR1ZGUnO1xuICAgIHRoaXMucGF0dGVybiA9IHRoaXMucGF0dGVybiB8fCAnRERNTSc7XG4gICAgdGhpcy5tYXNrID0gTUFTS1NbdGhpcy50eXBlXT8uW3RoaXMucGF0dGVybl07XG4gICAgaWYgKCF0aGlzLm1hc2spIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIGF0dHJpYnV0ZSB2YWx1ZS4gRXhwZWN0ZWQ6IHR5cGU6ICdsYXRpdHVkZXxsb25naXR1ZGUnIGFuZCBsYXRsb25nUGF0dGVybjogJ0REfERETU18RERNTVNTJ1wiKTtcbiAgICAgIHRoaXMudHlwZSA9ICdsYXRpdHVkZSc7XG4gICAgICB0aGlzLnBhdHRlcm4gPSAnRERNTSc7XG4gICAgICB0aGlzLm1hc2sgPSBNQVNLU1t0aGlzLnR5cGVdW3RoaXMucGF0dGVybl07XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIG1heERlY2ltYWxzIGhhcyBjb3JyZWN0IHZhbHVlIGRlcGVuZGluZyBvbiBwYXR0ZXJuIGFuZCBpdCdzIG93biB2YWx1ZVxuICAgIGlmICh0aGlzLnBhdHRlcm4gPT09ICdERCcpIHtcbiAgICAgIGlmICh0aGlzLm1heERlY2ltYWxzICE9IDcpIGNvbnNvbGUud2FybihgRm9yY2UgJ21heERlY2ltYWxzJyB0byBiZSAnNycgd2hlbiB1c2luZyB0aGUgJ0REJyBwYXR0ZXJuLmApO1xuICAgICAgdGhpcy5tYXhEZWNpbWFscyA9IDc7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBhdHRlcm4gPT09ICdERE1NJykge1xuICAgICAgaWYgKHRoaXMubWF4RGVjaW1hbHMgIT0gMikgY29uc29sZS53YXJuKGBGb3JjZSAnbWF4RGVjaW1hbHMnIHRvIGJlICczJyB3aGVuIHVzaW5nIHRoZSAnRERNTScgcGF0dGVybi5gKTtcbiAgICAgIHRoaXMubWF4RGVjaW1hbHMgPSAzO1xuICAgIH0gZWxzZSBpZiAoaXNOaWwodGhpcy5tYXhEZWNpbWFscykpIHtcbiAgICAgIHRoaXMubWF4RGVjaW1hbHMgPSBERUZBVUxUX01BWF9ERUNJTUFMUztcbiAgICB9IGVsc2UgaWYgKHRoaXMubWF4RGVjaW1hbHMgPCAwKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBhdHRyaWJ1dGUgJ21heERlY2ltYWxzJy4gTXVzdCBhIHBvc2l0aXZlIHZhbHVlLlwiKTtcbiAgICAgIHRoaXMubWF4RGVjaW1hbHMgPSBERUZBVUxUX01BWF9ERUNJTUFMUztcbiAgICB9IGVsc2UgaWYgKHRoaXMubWF4RGVjaW1hbHMgIT09IERFRkFVTFRfTUFYX0RFQ0lNQUxTKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBJbnZhbGlkIGF0dHJpYnV0ZSAnbWF4RGVjaW1hbHMnIC0gRXhwZWN0ZWQgdmFsdWU6ICR7REVGQVVMVF9NQVhfREVDSU1BTFN9IGJ1dCBnZXQ6ICR7dGhpcy5tYXhEZWNpbWFsc30uIE90aGVyIHZhbHVlIG5vdCBpbXBsZW1lbnRlZC5gXG4gICAgICApO1xuICAgICAgdGhpcy5tYXhEZWNpbWFscyA9IERFRkFVTFRfTUFYX0RFQ0lNQUxTO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1NpZ25Db250cm9sID0gdGhpcy5wYXR0ZXJuICE9PSAnREQnO1xuXG4gICAgdGhpcy5fZm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgIHBhdHRlcm46IHRoaXMucGF0dGVybixcbiAgICAgIG1heERlY2ltYWxzOiB0aGlzLm1heERlY2ltYWxzLFxuICAgICAgaGlkZVNpZ246IHRoaXMuc2hvd1NpZ25Db250cm9sLFxuICAgICAgaW5wdXRTZWxlY3Rpb25SYW5nZXM6IGdldElucHV0U2VsZWN0aW9uUmFuZ2VzRnJvbU1hc2sodGhpcy5tYXNrKSxcbiAgICAgIHBsYWNlaG9sZGVyQ2hhcjogdGhpcy5wbGFjZWhvbGRlckNoYXIsXG4gICAgfTtcblxuICAgIHRoaXMuaW5wdXRQbGFjZUhvbGRlckkxOG5LZXkgPSAnQ09NTU9OLkxBVF9MT05HLicgKyAoKHRoaXMudHlwZSA9PT0gJ2xvbmdpdHVkZScgJiYgJ0QnKSB8fCAnJykgKyB0aGlzLnBhdHRlcm4gKyAnX1BMQUNFSE9MREVSJztcblxuICAgIHRoaXMudGV4dEZvcm1Db250cm9sID0gdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHRoaXMucmVxdWlyZWQgPyBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbbnVsbF0pO1xuXG4gICAgdGhpcy5zaWduRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodGhpcy5yZXF1aXJlZCA/IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtudWxsXSk7XG5cbiAgICB0aGlzLmZvcm1Db250cm9sID1cbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wgfHwgKHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIHRoaXMuZm9ybUdyb3VwRGlyICYmICh0aGlzLmZvcm1Hcm91cERpci5mb3JtLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgYXMgVW50eXBlZEZvcm1Db250cm9sKSk7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIG1hbmRhdG9yeSBhdHRyaWJ1dGUgJ2Zvcm1Db250cm9sJyBvciAnZm9ybUNvbnRyb2xOYW1lJyBpbiA8bWF0LWxhdGxvbmctZmllbGQ+LlwiKTtcblxuICAgIGNvbnN0IGV4aXN0aW5nVmFsaWRhdG9ycyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsaWRhdG9yO1xuICAgIGlmIChleGlzdGluZ1ZhbGlkYXRvcnMpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbZXhpc3RpbmdWYWxpZGF0b3JzLCB0aGlzLnR5cGUgPT09ICdsYXRpdHVkZScgPyBTaGFyZWRWYWxpZGF0b3JzLmxhdGl0dWRlIDogU2hhcmVkVmFsaWRhdG9ycy5sb25naXR1ZGVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJyA/IFNoYXJlZFZhbGlkYXRvcnMubGF0aXR1ZGUgOiBTaGFyZWRWYWxpZGF0b3JzLmxvbmdpdHVkZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChtZXJnZSh0aGlzLnRleHRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMsIHRoaXMuc2lnbkZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcykuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Gb3JtQ2hhbmdlKCkpKTtcblxuICAgIC8vIExpc3RlbiBzdGF0dXMgY2hhbmdlcyAod2hlbiBkb25lIG91dHNpZGUgdGhlIGNvbXBvbmVudCAgLSBlLmcuIHdoZW4gc2V0RXJyb3JzKCkgaXMgY2FsbGluZyBvbiB0aGUgZm9ybUNvbnRyb2wpXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMucmVhZG9ubHkgJiYgIXRoaXMuX3dyaXRpbmcgJiYgIXRoaXMuX2Rpc2FibGluZykgLy8gU2tpcFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5tYXJrRm9yQ2hlY2soKSlcbiAgICApO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRyYW5zbGF0ZS5nZXQodGhpcy5pbnB1dFBsYWNlSG9sZGVySTE4bktleSkuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbikgPT4gdGhpcy51cGRhdGVUcmFuc2xhdGlvbnModHJhbnNsYXRpb24pKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd3JpdGluZykgcmV0dXJuO1xuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyA/IHBhcnNlRmxvYXQob2JqLnJlcGxhY2UoLywvZywgJy4nKSkgOiBvYmo7XG4gICAgY29uc3QgZml4TGF0TG9uZyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsaWQ7XG4gICAgY29uc3Qgc3RyVmFsdWUgPSB0aGlzLl9mb3JtYXQodmFsdWUsIHsgZml4TGF0TG9uZyB9KTtcblxuICAgIGNvbnN0IHNpZ24gPSBpc05vdE5pbCh2YWx1ZSlcbiAgICAgID8gdmFsdWUgPCAwXG4gICAgICAgID8gLTFcbiAgICAgICAgOiAxXG4gICAgICA6IC8vIFVzZSBkZWZhdWx0IHNpZ24sIGlmIGFueVxuICAgICAgICB0aGlzLmRlZmF1bHRTaWduXG4gICAgICAgID8gdGhpcy5kZWZhdWx0U2lnbiA9PT0gJy0nXG4gICAgICAgICAgPyAtMVxuICAgICAgICAgIDogMVxuICAgICAgICA6IG51bGw7XG5cbiAgICB0aGlzLnNpZ25Gb3JtQ29udHJvbC5wYXRjaFZhbHVlKHNpZ24sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIC8vIFJlc2V0IHRoZSBmaWVsZFxuICAgICAgdGhpcy50ZXh0Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGV4dEZvcm1Db250cm9sLnBhdGNoVmFsdWUoc3RyVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGluZykgcmV0dXJuO1xuXG4gICAgdGhpcy5fZGlzYWJsaW5nID0gdHJ1ZTtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy50ZXh0Rm9ybUNvbnRyb2wuZGlzYWJsZSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5zaWduRm9ybUNvbnRyb2wuZGlzYWJsZSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRleHRGb3JtQ29udHJvbC5lbmFibGUoeyBvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc2lnbkZvcm1Db250cm9sLmVuYWJsZSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICB0aGlzLl9kaXNhYmxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgX29uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICB0aGlzLmhhc0ZvY3VzID0gdHJ1ZTtcbiAgICBjb25zdCBmcm9tVGFiS2V5ID0gaXNOb3ROaWwoZXZlbnQucmVsYXRlZFRhcmdldCk7XG4gICAgY29uc3QgZml4TGF0TG9uZyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsaWQ7XG5cbiAgICBsZXQgc3RyVmFsdWUgPVxuICAgICAgZm9ybWF0TGF0TG9uZyh0aGlzLmZvcm1Db250cm9sLnZhbHVlLCB0aGlzLnR5cGUsIHsgLi4udGhpcy5fZm9ybWF0T3B0aW9ucywgcGxhY2Vob2xkZXJDaGFyOiAnMCcsIGZpeExhdExvbmcgfSkgPz8gdGhpcy5tYXNraXRvUGxhY2Vob2xkZXI7XG5cbiAgICBpZiAoc3RyVmFsdWUuc3RhcnRzV2l0aCgnwrEnKSkge1xuICAgICAgc3RyVmFsdWUgPSBzdHJWYWx1ZS5yZXBsYWNlKCfCsScsIHRoaXMuZGVmYXVsdFNpZ24pO1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJykge1xuICAgICAgICB0aGlzLnRleHRGb3JtQ29udHJvbC5zZXRWYWx1ZShzdHJWYWx1ZSArICcgJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRleHRGb3JtQ29udHJvbC5zZXRWYWx1ZShzdHJWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50ZXh0Rm9ybUNvbnRyb2wuc2V0VmFsdWUoc3RyVmFsdWUpO1xuICAgIC8vIElmIGZvY3VzIGNhbWUgZm9ybSBwdXNoIHRhYiBrZXkgYW5kIHRoZSBpbnB1dCBoYXMgdmFsdWUsIHNlbGVjdCBhbGwgdGhlIHZhbHVlXG4gICAgaWYgKGZyb21UYWJLZXkgJiYgc3RyVmFsdWUucmVwbGFjZSgvXlvCsSstXS8sICcnKSAhPT0gdGhpcy5tYXNraXRvUGxhY2Vob2xkZXIucmVwbGFjZSgvXlvCsSstXS8sICcnKSkge1xuICAgICAgY29uc3Qgc3RyVmFsdWVXaXRob3V0U2lnbiA9IHN0clZhbHVlLnJlcGxhY2UoL15bwrErLV0vLCAnJyk7XG4gICAgICBpZiAoc3RyVmFsdWVXaXRob3V0U2lnbiAhPT0gdGhpcy5tYXNraXRvUGxhY2Vob2xkZXIucmVwbGFjZSgvXlvCsSstXS8sICcnKSkge1xuICAgICAgICAvLyBoYXMgdmFsdWVcbiAgICAgICAgc2VsZWN0SW5wdXRSYW5nZShldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCwgc3RyVmFsdWUubGVuZ3RoIC0gc3RyVmFsdWVXaXRob3V0U2lnbi5sZW5ndGgsIHN0clZhbHVlV2l0aG91dFNpZ24ubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBfb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgdGhpcy5oYXNGb2N1cyA9IGZhbHNlO1xuICAgIGxldCBzdHJWYWx1ZSA9IHRoaXMudGV4dEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgLy8gUmVzZXQgbWFzayBpZiB2YWx1ZSBpcyBlbXB0eVxuICAgIGlmICghL1xcZC8udGVzdChzdHJWYWx1ZSkpIHtcbiAgICAgIHN0clZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZShzdHJWYWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKHBhcnNlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZm9ybWF0KHZhbHVlOiBudW1iZXIsIG9wdHM6IFBhcnRpYWw8TGF0TG9uZ0Zvcm1hdE9wdGlvbnM+ID0ge30pOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXRMYXRMb25nKHZhbHVlLCB0aGlzLnR5cGUsIHsgLi4udGhpcy5fZm9ybWF0T3B0aW9ucywgLi4ub3B0cyB9KSA/PyB0aGlzLm1hc2tpdG9QbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBfY2hlY2tJZlRvdWNoZWQoKSB7XG4gICAgaWYgKHRoaXMudGV4dEZvcm1Db250cm9sLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByaXZhdGUgbWV0aG9kIC0tICovXG5cbiAgcHJpdmF0ZSBvbkZvcm1DaGFuZ2UoKSB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjsgLy8gU2tpcCBpZiBjYWxsIGJ5IHNlbGZcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcblxuICAgIGxldCBzdHJWYWx1ZSA9IHRoaXMudGV4dEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgLy8gUmVzZXQgbWFzayBpZiB2YWx1ZSBpcyBlbXB0eVxuICAgIGlmICghL1xcZC8udGVzdChzdHJWYWx1ZSkpIHtcbiAgICAgIHN0clZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZShzdHJWYWx1ZSk7XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UocGFyc2VkVmFsdWUpO1xuXG4gICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDaGFuZ2UodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGZvcm1Db250cm9sVmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgaWYgKGZvcm1Db250cm9sVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICBpZiAodGhpcy50ZXh0Rm9ybUNvbnRyb2wudmFsaWQpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY2hlY2tJZlRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRyYW5zbGF0aW9ucyh0cmFuc2xhdGlvbjogc3RyaW5nKSB7XG4gICAgLy8gTm8gY2hhbmdlXG4gICAgaWYgKHRoaXMubWFza2l0b1BsYWNlaG9sZGVyID09PSB0cmFuc2xhdGlvbikgcmV0dXJuO1xuICAgIC8vIFRyYW5zbGF0aW9uIGZhbGxiYWNrXG4gICAgaWYgKHRoaXMuaW5wdXRQbGFjZUhvbGRlckkxOG5LZXkgPT09IHRyYW5zbGF0aW9uKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucGF0dGVybikge1xuICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2xvbmdpdHVkZScpIHtcbiAgICAgICAgICAgIHRoaXMubWFza2l0b1BsYWNlaG9sZGVyID0gJ8KxRERELkRERERERETCsCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWFza2l0b1BsYWNlaG9sZGVyID0gJ8KxIERELkRERERERETCsCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdERE1NJzpcbiAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbG9uZ2l0dWRlJykge1xuICAgICAgICAgICAgdGhpcy5tYXNraXRvUGxhY2Vob2xkZXIgPSBcIkRERMKwIE1NLk1NTSdcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYXNraXRvUGxhY2Vob2xkZXIgPSBcIkREwrAgTU0uTU1NJ1wiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRERNTVNTJzpcbiAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbG9uZ2l0dWRlJykge1xuICAgICAgICAgICAgdGhpcy5tYXNraXRvUGxhY2Vob2xkZXIgPSAnREREwrAgTU1cXCcgU1MuU1NcIic7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWFza2l0b1BsYWNlaG9sZGVyID0gJ0REwrAgTU1cXCcgU1MuU1NcIic7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1hc2tpdG9QbGFjZWhvbGRlciA9IHRyYW5zbGF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVZhbHVlKHN0clZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBwYXJzZWRWYWx1ZTogbnVtYmVyO1xuICAgIGlmIChpc05vdE5pbE9yQmxhbmsoc3RyVmFsdWUpKSB7XG4gICAgICBpZiAodGhpcy5wYXR0ZXJuID09PSAnREQnKSB7XG4gICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VMYXRpdHVkZU9yTG9uZ2l0dWRlKHN0clZhbHVlLCB0aGlzLnBhdHRlcm4sIDcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2lnbiA9IHRoaXMuc2lnbkZvcm1Db250cm9sLnZhbHVlIHx8IHRoaXMuZGVmYXVsdFNpZ24gPT09ICctJyA/IC0xIDogMTtcbiAgICAgICAgcGFyc2VkVmFsdWUgPSBzaWduICogcGFyc2VMYXRpdHVkZU9yTG9uZ2l0dWRlKHN0clZhbHVlLCB0aGlzLnBhdHRlcm4sIDcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWRWYWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGF0dGVybiAhPT0gJ0REJyAmJiBwYXJzZWRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2lnbiA9IHRoaXMuc2lnbkZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgcGFyc2VkVmFsdWUgPSBzaWduICogTWF0aC5hYnMocGFyc2VkVmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjwhLS0gcmVhZG9ubHkgLS0+XG48bWF0LWZvcm0tZmllbGRcbiAgKm5nSWY9XCJyZWFkb25seTsgZWxzZSB3cml0YWJsZVwiXG4gIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCJcbiAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gIFtzdWJzY3JpcHRTaXppbmddPVwic3Vic2NyaXB0U2l6aW5nXCJcbiAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1kaXNhYmxlZFwiXG4+XG4gIDxkaXYgbWF0UHJlZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICBAaWYgKGZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlcikge1xuICAgIDxtYXQtbGFiZWw+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cbiAgfVxuXG4gIDxpbnB1dCBtYXRJbnB1dCBoaWRkZW4gdHlwZT1cInRleHRcIiByZWFkb25seSBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiAvPlxuICA8aW9uLXRleHQ+e3sgX2Zvcm1hdChmb3JtQ29udHJvbC52YWx1ZSkgfX08L2lvbi10ZXh0PlxuXG4gIDxkaXYgbWF0U3VmZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIGhpbnRzIC0tPlxuICA8bWF0LWhpbnQgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiZm9ybUNvbnRyb2wuaW52YWxpZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRIaW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtaGludD5cbjwvbWF0LWZvcm0tZmllbGQ+XG5cbjwhLS0gd3JpdGFibGUgLS0+XG48bmctdGVtcGxhdGUgI3dyaXRhYmxlPlxuICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZyB7eyBhcHBlYXJhbmNlIH19XCI+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZyBuby13cmFwXCI+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cInRleHQgaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgICAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGVcIlxuICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgIFtzdWJzY3JpcHRTaXppbmddPVwiJ2R5bmFtaWMnXCJcbiAgICAgICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWludmFsaWRdPVwiZm9ybUNvbnRyb2wudG91Y2hlZCAmJiAoc2lnbkZvcm1Db250cm9sLmludmFsaWQgfHwgZm9ybUNvbnRyb2wuaW52YWxpZClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBtYXRQcmVmaXg+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciB9fTwvbWF0LWxhYmVsPlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgI2lucHV0RWxlbWVudFxuICAgICAgICAgICAgW21hc2tpdG9dPVwibWFza2l0b1BsYWNlaG9sZGVyIHwgbWFza2l0b1BsYWNlaG9sZGVyOiBtYXNrXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGJsdXIpPVwiX29uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJfb25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0ZXh0Rm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIEBpZiAoIXNob3dTaWduQ29udHJvbCkge1xuICAgICAgICAgICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9pb24tY29sPlxuXG4gICAgICA8IS0tIHNpZ24gLS0+XG4gICAgICBAaWYgKHNob3dTaWduQ29udHJvbCkge1xuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cInNpZ24gaW9uLW5vLXBhZGRpbmcge3sgdHlwZSB9fVwiPlxuICAgICAgICAgIEBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIEBjYXNlICgnbGF0aXR1ZGUnKSB7XG4gICAgICAgICAgICAgIDwhLS0gc2lnbiBvbiBsYXRpdHVkZSAtLT5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgW3N1YnNjcmlwdFNpemluZ109XCInZHluYW1pYydcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tZGMtdGV4dC1maWVsZC0taW52YWxpZF09XCJmb3JtQ29udHJvbC50b3VjaGVkICYmIHNpZ25Gb3JtQ29udHJvbC5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2lnbkZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQ09NTU9OLkxBVF9MT05HLkxBVF9TSUdOX1BMQUNFSE9MREVSJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXggIT09IHVuZGVmaW5lZCA/IHRhYmluZGV4ICsgMSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjFcIj57eyAnQ09NTU9OLkxBVF9MT05HLkxBVF9TSUdOX04nIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIi0xXCI+e3sgJ0NPTU1PTi5MQVRfTE9ORy5MQVRfU0lHTl9TJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdsb25naXR1ZGUnKSB7XG4gICAgICAgICAgICAgIDwhLS0gc2lnbiBvbiBsb25naXR1ZGUgLS0+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgIFtzdWJzY3JpcHRTaXppbmddPVwiJ2R5bmFtaWMnXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWludmFsaWRdPVwiZm9ybUNvbnRyb2wudG91Y2hlZCAmJiBzaWduRm9ybUNvbnRyb2wuaW52YWxpZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNpZ25Gb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0NPTU1PTi5MQVRfTE9ORy5MT05HX1NJR05fUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleCAhPT0gdW5kZWZpbmVkID8gdGFiaW5kZXggKyAxIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMVwiIHRyYW5zbGF0ZT57eyAnQ09NTU9OLkxBVF9MT05HLkxPTkdfU0lHTl9FJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCItMVwiIHRyYW5zbGF0ZT57eyAnQ09NTU9OLkxBVF9MT05HLkxPTkdfU0lHTl9XJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgfVxuICAgIDwvaW9uLXJvdz5cbiAgPC9pb24tZ3JpZD5cblxuICA8IS0tIERvIHRoZSBzYW1lIGFzIE1hdEZyb21GaWVsZCBzaW5jZSBhbmd1bGFyIDE1IChzZWUgY29tcG9uZW50IHNvdXJjZSktLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyXCJcbiAgICBbY2xhc3MubWF0LW1kYy1mb3JtLWZpZWxkLWJvdHRvbS1hbGlnbl09XCJzdWJzY3JpcHRTaXppbmcgPT09ICdmaXhlZCdcIlxuICAgIFtjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtc3Vic2NyaXB0LWR5bmFtaWMtc2l6ZV09XCJzdWJzY3JpcHRTaXppbmcgPT09ICdkeW5hbWljJ1wiXG4gID5cbiAgICBAaWYgKGZvcm1Db250cm9sLnRvdWNoZWQgJiYgZm9ybUNvbnRyb2wuaW52YWxpZCkge1xuICAgICAgPCEtLSBlcnJvcnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWVycm9yLXdyYXBwZXJcIj5cbiAgICAgICAgQGlmIChmb3JtQ29udHJvbC5lcnJvcnMgfCBtYXBLZXlzIHwgYXJyYXlGaXJzdDsgYXMgZXJyb3JLZXkpIHtcbiAgICAgICAgICBAc3dpdGNoIChlcnJvcktleSkge1xuICAgICAgICAgICAgQGNhc2UgKCdyZXF1aXJlZCcpIHtcbiAgICAgICAgICAgICAgPG1hdC1lcnJvciB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgnbGF0aXR1ZGUnKSB7XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9MQVRJVFVERTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdsb25naXR1ZGUnKSB7XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9MT05HSVRVREU8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgnbWluJykge1xuICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIHt7ICdFUlJPUi5GSUVMRF9NSU5fQ09NUEFDVCcgfCB0cmFuc2xhdGU6IHsgbWluOiBfZm9ybWF0KGZvcm1Db250cm9sLmVycm9ycy5taW4ubWluKSB9IH19XG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKCdtYXgnKSB7XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAge3sgJ0VSUk9SLkZJRUxEX01BWF9DT01QQUNUJyB8IHRyYW5zbGF0ZTogeyBtYXg6IF9mb3JtYXQoZm9ybUNvbnRyb2wuZXJyb3JzLm1heC5tYXgpIH0gfX1cbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ21zZycpIHtcbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtQ29udHJvbC5lcnJvcnMubXNnPy5rZXkgfHwgZm9ybUNvbnRyb2wuZXJyb3JzLm1zZyB8IHRyYW5zbGF0ZTogZm9ybUNvbnRyb2wuZXJyb3JzLm1zZz8ucGFyYW1zIH19XG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0RXJyb3JUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdEVycm9yVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIGhpbnRzIC0tPlxuICAgICAgPG1hdC1oaW50PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0SGludFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L21hdC1oaW50PlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21hdFByZWZpeFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0UHJlZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWF0U3VmZml4VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtYXRFcnJvclRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtZXJyb3IsW21hdEVycm9yXVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWF0SGludFRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1oaW50Om5vdChbYWxpZ249J2VuZCddKSxbbWF0SGludF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1oaW50LXNwYWNlclwiPjwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1oaW50W2FsaWduPSdlbmQnXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -13,11 +13,12 @@ import { TranslateModule } from '@ngx-translate/core';
|
|
|
13
13
|
import { MatLatLongField } from './material.latlong';
|
|
14
14
|
import { SharedDirectivesModule } from '../../directives/directives.module';
|
|
15
15
|
import { SharedPipesModule } from '../../pipes/pipes.module';
|
|
16
|
+
import { MatLatLongField2 } from './material.latlong2';
|
|
16
17
|
import * as i0 from "@angular/core";
|
|
17
18
|
import * as i1 from "@ngx-translate/core";
|
|
18
19
|
export class SharedMatLatLongModule {
|
|
19
20
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: SharedMatLatLongModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: SharedMatLatLongModule, declarations: [MatLatLongField], imports: [CommonModule,
|
|
21
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: SharedMatLatLongModule, declarations: [MatLatLongField, MatLatLongField2], imports: [CommonModule,
|
|
21
22
|
IonicModule,
|
|
22
23
|
ReactiveFormsModule,
|
|
23
24
|
SharedDirectivesModule,
|
|
@@ -28,7 +29,7 @@ export class SharedMatLatLongModule {
|
|
|
28
29
|
MatButtonModule,
|
|
29
30
|
MaskitoDirective,
|
|
30
31
|
MatIconModule,
|
|
31
|
-
MatSelectModule, i1.TranslateModule], exports: [MatLatLongField] });
|
|
32
|
+
MatSelectModule, i1.TranslateModule], exports: [MatLatLongField, MatLatLongField2] });
|
|
32
33
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: SharedMatLatLongModule, imports: [CommonModule,
|
|
33
34
|
IonicModule,
|
|
34
35
|
ReactiveFormsModule,
|
|
@@ -60,8 +61,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
60
61
|
MatSelectModule,
|
|
61
62
|
TranslateModule.forChild(),
|
|
62
63
|
],
|
|
63
|
-
exports: [MatLatLongField],
|
|
64
|
-
declarations: [MatLatLongField],
|
|
64
|
+
exports: [MatLatLongField, MatLatLongField2],
|
|
65
|
+
declarations: [MatLatLongField, MatLatLongField2],
|
|
65
66
|
}]
|
|
66
67
|
}] });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubGF0bG9uZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9sYXRsb25nL21hdGVyaWFsLmxhdGxvbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQXFCdkQsTUFBTSxPQUFPLHNCQUFzQjt3R0FBdEIsc0JBQXNCO3lHQUF0QixzQkFBc0IsaUJBRmxCLGVBQWUsRUFBRSxnQkFBZ0IsYUFmOUMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixlQUFlLGlDQUdQLGVBQWUsRUFBRSxnQkFBZ0I7eUdBR2hDLHNCQUFzQixZQWpCL0IsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxlQUFlO1lBRWYsYUFBYTtZQUNiLGVBQWU7WUFDZixlQUFlLENBQUMsUUFBUSxFQUFFOzs0RkFLakIsc0JBQXNCO2tCQW5CbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZUFBZSxDQUFDLFFBQVEsRUFBRTtxQkFDM0I7b0JBQ0QsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDO29CQUM1QyxZQUFZLEVBQUUsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXNraXRvRGlyZWN0aXZlIH0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0TGF0TG9uZ0ZpZWxkIH0gZnJvbSAnLi9tYXRlcmlhbC5sYXRsb25nJztcbmltcG9ydCB7IFNoYXJlZERpcmVjdGl2ZXNNb2R1bGUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RpcmVjdGl2ZXMubW9kdWxlJztcbmltcG9ydCB7IFNoYXJlZFBpcGVzTW9kdWxlIH0gZnJvbSAnLi4vLi4vcGlwZXMvcGlwZXMubW9kdWxlJztcbmltcG9ydCB7IE1hdExhdExvbmdGaWVsZDIgfSBmcm9tICcuL21hdGVyaWFsLmxhdGxvbmcyJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNoYXJlZERpcmVjdGl2ZXNNb2R1bGUsXG4gICAgU2hhcmVkUGlwZXNNb2R1bGUsXG4gICAgTWF0Q29tbW9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWFza2l0b0RpcmVjdGl2ZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgXSxcbiAgZXhwb3J0czogW01hdExhdExvbmdGaWVsZCwgTWF0TGF0TG9uZ0ZpZWxkMl0sXG4gIGRlY2xhcmF0aW9uczogW01hdExhdExvbmdGaWVsZCwgTWF0TGF0TG9uZ0ZpZWxkMl0sXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlZE1hdExhdExvbmdNb2R1bGUge31cbiJdfQ==
|