@1money/component-ui 0.0.75 → 0.0.76
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/es/components/ProForm/ProForm.js +46 -33
- package/es/components/ProForm/ProFormDependency.js +6 -16
- package/es/components/ProForm/ProFormItem.js +5 -7
- package/es/components/ProForm/ProFormList.js +112 -40
- package/es/components/ProForm/core/constants.d.ts +2 -0
- package/es/components/ProForm/core/constants.js +7 -1
- package/es/components/ProForm/core/devWarning.d.ts +3 -0
- package/es/components/ProForm/core/devWarning.js +22 -0
- package/es/components/ProForm/core/formStore.d.ts +10 -2
- package/es/components/ProForm/core/formStore.js +21 -2
- package/es/components/ProForm/core/hooks/useForm.js +246 -103
- package/es/components/ProForm/core/hooks/useFormCore.js +134 -28
- package/es/components/ProForm/core/interface.d.ts +124 -49
- package/es/components/ProForm/core/runRules.d.ts +44 -12
- package/es/components/ProForm/core/runRules.js +584 -133
- package/es/components/ProForm/core/useFormItem.d.ts +6 -7
- package/es/components/ProForm/core/useFormItem.js +44 -22
- package/es/components/ProForm/core/validationError.d.ts +13 -0
- package/es/components/ProForm/core/validationError.js +29 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +19 -5
- package/es/components/ProForm/fields/ProFormFieldSet.js +51 -12
- package/es/components/ProForm/fields/ProFormRadioGroup.js +8 -3
- package/es/components/ProForm/fields/ProFormSelect.js +13 -7
- package/es/components/ProForm/fields/createProFormField.js +18 -25
- package/es/components/ProForm/hooks/useFieldRequest.js +10 -8
- package/es/components/ProForm/index.d.ts +2 -1
- package/es/components/ProForm/index.js +4 -1
- package/es/components/ProForm/interface.d.ts +31 -40
- package/es/components/ProForm/layouts/QueryFilter.js +24 -16
- package/es/components/ProForm/utils.d.ts +8 -0
- package/es/components/ProForm/utils.js +51 -3
- package/es/components/Table/core/useTableSetup.js +2 -2
- package/es/components/Table/interface.d.ts +1 -1
- package/es/index.css +1 -1
- package/lib/components/ProForm/ProForm.js +45 -32
- package/lib/components/ProForm/ProFormDependency.js +5 -15
- package/lib/components/ProForm/ProFormItem.js +5 -7
- package/lib/components/ProForm/ProFormList.js +110 -38
- package/lib/components/ProForm/core/constants.d.ts +2 -0
- package/lib/components/ProForm/core/constants.js +8 -2
- package/lib/components/ProForm/core/devWarning.d.ts +3 -0
- package/lib/components/ProForm/core/devWarning.js +29 -0
- package/lib/components/ProForm/core/formStore.d.ts +10 -2
- package/lib/components/ProForm/core/formStore.js +23 -2
- package/lib/components/ProForm/core/hooks/useForm.js +242 -99
- package/lib/components/ProForm/core/hooks/useFormCore.js +133 -27
- package/lib/components/ProForm/core/interface.d.ts +124 -49
- package/lib/components/ProForm/core/runRules.d.ts +44 -12
- package/lib/components/ProForm/core/runRules.js +587 -133
- package/lib/components/ProForm/core/useFormItem.d.ts +6 -7
- package/lib/components/ProForm/core/useFormItem.js +43 -21
- package/lib/components/ProForm/core/validationError.d.ts +13 -0
- package/lib/components/ProForm/core/validationError.js +36 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +18 -4
- package/lib/components/ProForm/fields/ProFormFieldSet.js +51 -12
- package/lib/components/ProForm/fields/ProFormRadioGroup.js +7 -2
- package/lib/components/ProForm/fields/ProFormSelect.js +13 -7
- package/lib/components/ProForm/fields/createProFormField.js +18 -25
- package/lib/components/ProForm/hooks/useFieldRequest.js +10 -8
- package/lib/components/ProForm/index.d.ts +2 -1
- package/lib/components/ProForm/index.js +10 -1
- package/lib/components/ProForm/interface.d.ts +31 -40
- package/lib/components/ProForm/layouts/QueryFilter.js +24 -16
- package/lib/components/ProForm/utils.d.ts +8 -0
- package/lib/components/ProForm/utils.js +52 -3
- package/lib/components/Table/core/useTableSetup.js +2 -2
- package/lib/components/Table/interface.d.ts +1 -1
- package/lib/index.css +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +42 -36
- package/scripts/mcp-server/index.generated.json +23 -67
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
3
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
4
|
var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
@@ -52,7 +51,8 @@ import { CSS_PREFIX } from './constants';
|
|
|
52
51
|
import { stableSerialize, transformSubmitValues, omitNilValues, formatDateValues } from './utils';
|
|
53
52
|
import { useShallowStable } from './core/formStore';
|
|
54
53
|
import { useUrlSync } from './hooks/useUrlSync';
|
|
55
|
-
import { resolveValue } from './core/pathUtils';
|
|
54
|
+
import { resolveValue, setNestedValue } from './core/pathUtils';
|
|
55
|
+
import { FormValidationError } from './core/validationError';
|
|
56
56
|
var classes = classnames(CSS_PREFIX);
|
|
57
57
|
var formClasses = classnames('form');
|
|
58
58
|
var DEFAULT_COL_PROPS = {
|
|
@@ -62,9 +62,8 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
62
62
|
var children = props.children,
|
|
63
63
|
className = props.className,
|
|
64
64
|
submitter = props.submitter,
|
|
65
|
-
_props$
|
|
66
|
-
|
|
67
|
-
modeProp = props.mode,
|
|
65
|
+
_props$mode = props.mode,
|
|
66
|
+
mode = _props$mode === void 0 ? 'edit' : _props$mode,
|
|
68
67
|
_props$grid = props.grid,
|
|
69
68
|
grid = _props$grid === void 0 ? false : _props$grid,
|
|
70
69
|
colProps = props.colProps,
|
|
@@ -101,15 +100,10 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
101
100
|
labelAlign = _props$labelAlign === void 0 ? 'left' : _props$labelAlign,
|
|
102
101
|
_props$disabled = props.disabled,
|
|
103
102
|
disabled = _props$disabled === void 0 ? false : _props$disabled,
|
|
104
|
-
_props$colon = props.colon,
|
|
105
|
-
colon = _props$colon === void 0 ? true : _props$colon,
|
|
106
|
-
_props$requiredMark = props.requiredMark,
|
|
107
|
-
requiredMark = _props$requiredMark === void 0 ? true : _props$requiredMark,
|
|
108
103
|
_props$validateTrigge = props.validateTrigger,
|
|
109
104
|
validateTrigger = _props$validateTrigge === void 0 ? 'onChange' : _props$validateTrigge,
|
|
110
105
|
_prefixCls = props.prefixCls,
|
|
111
|
-
rest = __rest(props, ["children", "className", "submitter", "
|
|
112
|
-
var mode = modeProp !== null && modeProp !== void 0 ? modeProp : readonly ? 'read' : 'edit';
|
|
106
|
+
rest = __rest(props, ["children", "className", "submitter", "mode", "grid", "colProps", "rowProps", "loading", "request", "params", "initialValues", "onFinish", "onFinishFailed", "onValuesChange", "onReset", "onInit", "onLoadingChange", "syncToUrl", "syncToUrlAsImportant", "extraUrlParams", "autoFocusFirstInput", "formComponentType", "formRef", "omitNil", "dateFormatter", "fieldProps", "formItemProps", "layout", "size", "labelAlign", "disabled", "validateTrigger", "prefixCls"]);
|
|
113
107
|
var _useSafeState = useSafeState(false),
|
|
114
108
|
_useSafeState2 = _slicedToArray(_useSafeState, 2),
|
|
115
109
|
requestLoading = _useSafeState2[0],
|
|
@@ -199,8 +193,6 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
199
193
|
size: size,
|
|
200
194
|
labelAlign: labelAlign,
|
|
201
195
|
disabled: disabled,
|
|
202
|
-
colon: colon,
|
|
203
|
-
requiredMark: requiredMark,
|
|
204
196
|
validateTrigger: validateTrigger
|
|
205
197
|
}),
|
|
206
198
|
formInstance = _useForm.formInstance,
|
|
@@ -211,7 +203,7 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
211
203
|
// ref catches two calls in the same tick).
|
|
212
204
|
var wrappedHandleSubmit = useEventCallback(function (e) {
|
|
213
205
|
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
214
|
-
var _a, _b, _c, epoch, validatedValues, pipelined, result,
|
|
206
|
+
var _a, _b, _c, epoch, validatedValues, pipelined, result, _t;
|
|
215
207
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
216
208
|
while (1) switch (_context.prev = _context.next) {
|
|
217
209
|
case 0:
|
|
@@ -259,11 +251,18 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
259
251
|
}
|
|
260
252
|
return _context.abrupt("return");
|
|
261
253
|
case 7:
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
254
|
+
// Only a VALIDATION failure routes to onFinishFailed. An exception out
|
|
255
|
+
// of the consumer's own onFinish is not a validation result: the submit
|
|
256
|
+
// fails (URL untouched, overlay stays open) and the error is surfaced
|
|
257
|
+
// on the console instead of being misreported with an empty payload.
|
|
258
|
+
if (_t instanceof FormValidationError) {
|
|
259
|
+
onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed({
|
|
260
|
+
values: _t.values,
|
|
261
|
+
errors: _t.errors
|
|
262
|
+
});
|
|
263
|
+
} else {
|
|
264
|
+
console.error('[ProForm] onFinish threw during submit:', _t);
|
|
265
|
+
}
|
|
267
266
|
case 8:
|
|
268
267
|
_context.prev = 8;
|
|
269
268
|
submittingRef.current = false;
|
|
@@ -289,8 +288,9 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
289
288
|
getFieldFormatValueObject: function getFieldFormatValueObject(name) {
|
|
290
289
|
var formatted = formatValuesKeepNil(formInstance.getFieldsValue());
|
|
291
290
|
if (!name) return formatted;
|
|
292
|
-
|
|
293
|
-
|
|
291
|
+
// A nested object carrying ONLY the requested leaf — not the whole
|
|
292
|
+
// top-level subtree the path happens to live in.
|
|
293
|
+
return setNestedValue({}, name, resolveValue(formatted, name));
|
|
294
294
|
},
|
|
295
295
|
validateFieldsReturnFormatValue: function validateFieldsReturnFormatValue() {
|
|
296
296
|
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
@@ -335,6 +335,7 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
335
335
|
}, [formRef, proFormFormInstance]);
|
|
336
336
|
// ── request / params auto-load ──
|
|
337
337
|
var requestRef = useLatest(request);
|
|
338
|
+
var hasRequest = !!request;
|
|
338
339
|
var serializedParams = useMemo(function () {
|
|
339
340
|
return stableSerialize(params);
|
|
340
341
|
}, [params]);
|
|
@@ -354,7 +355,7 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
354
355
|
var stale = false;
|
|
355
356
|
var fetchData = function fetchData() {
|
|
356
357
|
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
357
|
-
var requestFn, data;
|
|
358
|
+
var requestFn, data, _t3;
|
|
358
359
|
return _regeneratorRuntime.wrap(function (_context3) {
|
|
359
360
|
while (1) switch (_context3.prev = _context3.next) {
|
|
360
361
|
case 0:
|
|
@@ -374,20 +375,31 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
374
375
|
if (!stale && data && _typeof(data) === 'object') {
|
|
375
376
|
formInstance.setFieldsValue(data);
|
|
376
377
|
}
|
|
378
|
+
_context3.next = 5;
|
|
379
|
+
break;
|
|
377
380
|
case 4:
|
|
378
381
|
_context3.prev = 4;
|
|
382
|
+
_t3 = _context3["catch"](2);
|
|
383
|
+
// A failed request must not escape as an unhandled rejection — the
|
|
384
|
+
// form keeps its initialValues and the failure is surfaced on the
|
|
385
|
+
// console (mirrors the field-level useFieldRequest handling).
|
|
386
|
+
if (!stale) {
|
|
387
|
+
console.error('[ProForm] request failed:', _t3);
|
|
388
|
+
}
|
|
389
|
+
case 5:
|
|
390
|
+
_context3.prev = 5;
|
|
379
391
|
if (!stale) {
|
|
380
392
|
setRequestLoading(false);
|
|
381
393
|
// Only a NON-superseded settle initializes the form: a stale
|
|
382
394
|
// request's data was discarded, so its values must not be reported.
|
|
383
395
|
fireInit();
|
|
384
396
|
}
|
|
385
|
-
return _context3.finish(
|
|
386
|
-
case
|
|
397
|
+
return _context3.finish(5);
|
|
398
|
+
case 6:
|
|
387
399
|
case "end":
|
|
388
400
|
return _context3.stop();
|
|
389
401
|
}
|
|
390
|
-
}, _callee3, null, [[2
|
|
402
|
+
}, _callee3, null, [[2, 4, 5, 6]]);
|
|
391
403
|
}));
|
|
392
404
|
};
|
|
393
405
|
if (requestRef.current) {
|
|
@@ -398,10 +410,12 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
398
410
|
return function () {
|
|
399
411
|
stale = true;
|
|
400
412
|
};
|
|
401
|
-
// Re-fetch
|
|
413
|
+
// Re-fetch when params change by VALUE (depending on the raw `params`
|
|
402
414
|
// reference would re-run on every render for inline object literals and,
|
|
403
|
-
// combined with the loading setState, loop forever
|
|
404
|
-
|
|
415
|
+
// combined with the loading setState, loop forever) — and when `request`
|
|
416
|
+
// first becomes defined (e.g. behind a feature flag), mirroring
|
|
417
|
+
// useFieldRequest. fireInit's once-guard keeps onInit from re-firing.
|
|
418
|
+
}, [serializedParams, hasRequest]);
|
|
405
419
|
// ── autoFocusFirstInput ──
|
|
406
420
|
var formElRef = useRef(null);
|
|
407
421
|
useEffect(function () {
|
|
@@ -431,17 +445,16 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
431
445
|
validateFieldAsync: internals.validateFieldAsync,
|
|
432
446
|
registerField: internals.registerField,
|
|
433
447
|
unregisterField: internals.unregisterField,
|
|
448
|
+
retainField: internals.retainField,
|
|
449
|
+
releaseField: internals.releaseField,
|
|
434
450
|
size: size,
|
|
435
451
|
labelAlign: labelAlign,
|
|
436
452
|
// Submitting/loading does NOT disable fields — only the
|
|
437
453
|
// explicit `disabled` prop does. Keeping isLoading out of this slice
|
|
438
454
|
// means a submit cycle no longer re-renders every field shell.
|
|
439
455
|
disabled: disabled,
|
|
440
|
-
colon: colon,
|
|
441
|
-
requiredMark: requiredMark,
|
|
442
456
|
validateTrigger: validateTrigger,
|
|
443
457
|
// ProForm specifics
|
|
444
|
-
readonly: readonly,
|
|
445
458
|
mode: mode,
|
|
446
459
|
grid: grid,
|
|
447
460
|
colProps: stableColProps !== null && stableColProps !== void 0 ? stableColProps : DEFAULT_COL_PROPS,
|
|
@@ -454,7 +467,7 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
454
467
|
layout: stableLayout,
|
|
455
468
|
formComponentType: formComponentType
|
|
456
469
|
};
|
|
457
|
-
}, [proFormFormInstance, internals.setFieldValue, internals.setFieldError, internals.setFieldWarning, internals.validateField, internals.validateFieldAsync, internals.registerField, internals.unregisterField,
|
|
470
|
+
}, [proFormFormInstance, internals.setFieldValue, internals.setFieldError, internals.setFieldWarning, internals.validateField, internals.validateFieldAsync, internals.registerField, internals.unregisterField, internals.retainField, internals.releaseField, size, labelAlign, disabled, validateTrigger, mode, grid, stableColProps, registerTransform, unregisterTransform, registerValueType, unregisterValueType, stableFieldProps, stableFormItemProps, stableLayout, formComponentType]);
|
|
458
471
|
var WrapperComponent = grid ? Row : Fragment;
|
|
459
472
|
var wrapperProps = grid ? Object.assign({}, rowProps) : {};
|
|
460
473
|
// Reset callback chain: the Submitter resets the values first, then the
|
|
@@ -488,4 +501,4 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
488
501
|
ProFormBase.displayName = 'ProForm';
|
|
489
502
|
export var ProForm = /*#__PURE__*/memo(ProFormBase);
|
|
490
503
|
export default ProForm;
|
|
491
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwidmFsdWUiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwiZSIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIl9fcmVzdCIsInMiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiUmVhY3QiLCJtZW1vIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsIkZyYWdtZW50IiwidXNlTGF0ZXN0IiwidXNlU2FmZVN0YXRlIiwidXNlTWVtb2l6ZWRGbiIsInVzZUV2ZW50Q2FsbGJhY2siLCJkZWZhdWx0IiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJSb3ciLCJ1c2VGb3JtIiwiUHJvRm9ybVN0YWJsZUNvbnRleHQiLCJQcm9Gb3JtU3RhdGVDb250ZXh0IiwiU3VibWl0dGVyIiwiQ1NTX1BSRUZJWCIsInN0YWJsZVNlcmlhbGl6ZSIsInRyYW5zZm9ybVN1Ym1pdFZhbHVlcyIsIm9taXROaWxWYWx1ZXMiLCJmb3JtYXREYXRlVmFsdWVzIiwidXNlU2hhbGxvd1N0YWJsZSIsInVzZVVybFN5bmMiLCJyZXNvbHZlVmFsdWUiLCJjbGFzc2VzIiwiZm9ybUNsYXNzZXMiLCJERUZBVUxUX0NPTF9QUk9QUyIsInNwYW4iLCJQcm9Gb3JtQmFzZSIsInByb3BzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJzdWJtaXR0ZXIiLCJfcHJvcHMkcmVhZG9ubHkiLCJyZWFkb25seSIsIm1vZGVQcm9wIiwibW9kZSIsIl9wcm9wcyRncmlkIiwiZ3JpZCIsImNvbFByb3BzIiwicm93UHJvcHMiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJyZXF1ZXN0IiwicGFyYW1zIiwiaW5pdGlhbFZhbHVlcyIsIm9uRmluaXNoIiwib25GaW5pc2hGYWlsZWQiLCJvblZhbHVlc0NoYW5nZSIsIm9uUmVzZXQiLCJvbkluaXQiLCJvbkxvYWRpbmdDaGFuZ2UiLCJzeW5jVG9VcmwiLCJfcHJvcHMkc3luY1RvVXJsQXNJbXAiLCJzeW5jVG9VcmxBc0ltcG9ydGFudCIsImV4dHJhVXJsUGFyYW1zIiwiX3Byb3BzJGF1dG9Gb2N1c0ZpcnN0IiwiYXV0b0ZvY3VzRmlyc3RJbnB1dCIsImZvcm1Db21wb25lbnRUeXBlIiwiZm9ybVJlZiIsIl9wcm9wcyRvbWl0TmlsIiwib21pdE5pbCIsIl9wcm9wcyRkYXRlRm9ybWF0dGVyIiwiZGF0ZUZvcm1hdHRlciIsImZpZWxkUHJvcHMiLCJmb3JtSXRlbVByb3BzIiwibGF5b3V0IiwiX3Byb3BzJHNpemUiLCJzaXplIiwiX3Byb3BzJGxhYmVsQWxpZ24iLCJsYWJlbEFsaWduIiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfcHJvcHMkY29sb24iLCJjb2xvbiIsIl9wcm9wcyRyZXF1aXJlZE1hcmsiLCJyZXF1aXJlZE1hcmsiLCJfcHJvcHMkdmFsaWRhdGVUcmlnZ2UiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJfcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwicmVzdCIsIl91c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwicmVxdWVzdExvYWRpbmciLCJzZXRSZXF1ZXN0TG9hZGluZyIsIl91c2VTYWZlU3RhdGUzIiwiX3VzZVNhZmVTdGF0ZTQiLCJzdWJtaXR0aW5nIiwic2V0U3VibWl0dGluZyIsInN1Ym1pdHRpbmdSZWYiLCJpc0xvYWRpbmciLCJ0cmFuc2Zvcm1LZXlSZWYiLCJ2YWx1ZVR5cGVSZWYiLCJyZWdpc3RlclRyYW5zZm9ybSIsIm5hbWUiLCJmbiIsImN1cnJlbnQiLCJ1bnJlZ2lzdGVyVHJhbnNmb3JtIiwidW5kZWZpbmVkIiwicmVnaXN0ZXJWYWx1ZVR5cGUiLCJ2YWx1ZVR5cGUiLCJ1bnJlZ2lzdGVyVmFsdWVUeXBlIiwib25GaW5pc2hSZWYiLCJvbkluaXRSZWYiLCJvbkxvYWRpbmdDaGFuZ2VSZWYiLCJhcHBseVBpcGVsaW5lIiwidmFsdWVzIiwiZm9ybWF0VmFsdWVzS2VlcE5pbCIsIl91c2VVcmxTeW5jIiwidXJsSW5pdGlhbFZhbHVlcyIsIm9uVXJsU3luY0ZpbmlzaCIsIm9uVXJsU3luY1Jlc2V0IiwibWVyZ2VkSW5pdGlhbFZhbHVlc1JlZiIsImFzc2lnbiIsIm1lcmdlZEluaXRpYWxWYWx1ZXMiLCJyZXNldEVwb2NoUmVmIiwiZmlyZUZvcm1SZXNldCIsImZpbmFsVmFsdWVzIiwiZm9ybUluc3RhbmNlIiwiZ2V0RmllbGRzVmFsdWUiLCJfdXNlRm9ybSIsImludGVybmFscyIsInN0b3JlIiwid3JhcHBlZEhhbmRsZVN1Ym1pdCIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9hIiwiX2IiLCJfYyIsImVwb2NoIiwidmFsaWRhdGVkVmFsdWVzIiwicGlwZWxpbmVkIiwidHlwZWQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJwcmV2ZW50RGVmYXVsdCIsImFicnVwdCIsInZhbGlkYXRlRmllbGRzIiwic2VudCIsImVycm9ycyIsImZpbmlzaCIsInN0b3AiLCJwcm9Gb3JtRm9ybUluc3RhbmNlIiwiZ2V0RmllbGRzRm9ybWF0VmFsdWUiLCJnZXRGaWVsZEZvcm1hdFZhbHVlIiwiZ2V0RmllbGRGb3JtYXRWYWx1ZU9iamVjdCIsImZvcm1hdHRlZCIsInRvcEtleSIsInNwbGl0IiwiX2RlZmluZVByb3BlcnR5IiwidmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZSIsIl9jYWxsZWUyIiwidmFscyIsIl90MiIsIl9jb250ZXh0MiIsInN1Y2Nlc3MiLCJzdWJtaXRGb3JtIiwicmVxdWVzdFJlZiIsInNlcmlhbGl6ZWRQYXJhbXMiLCJpbml0RmlyZWRSZWYiLCJmaXJlSW5pdCIsInN0YWxlIiwiZmV0Y2hEYXRhIiwiX2NhbGxlZTMiLCJyZXF1ZXN0Rm4iLCJkYXRhIiwiX2NvbnRleHQzIiwiX3R5cGVvZiIsInNldEZpZWxkc1ZhbHVlIiwiZm9ybUVsUmVmIiwiZmlyc3RJbnB1dCIsInF1ZXJ5U2VsZWN0b3IiLCJmb2N1cyIsInN0YWJsZUZpZWxkUHJvcHMiLCJzdGFibGVGb3JtSXRlbVByb3BzIiwic3RhYmxlQ29sUHJvcHMiLCJzdGFibGVMYXlvdXQiLCJzdGFibGVWYWx1ZSIsInNldEZpZWxkVmFsdWUiLCJzZXRGaWVsZEVycm9yIiwic2V0RmllbGRXYXJuaW5nIiwidmFsaWRhdGVGaWVsZCIsInZhbGlkYXRlRmllbGRBc3luYyIsInJlZ2lzdGVyRmllbGQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJXcmFwcGVyQ29tcG9uZW50Iiwid3JhcHBlclByb3BzIiwiaGFuZGxlU3VibWl0dGVyUmVzZXQiLCJzdWJtaXR0ZXJOb2RlIiwiUHJvdmlkZXIiLCJyZWYiLCJvblN1Ym1pdCIsImhhbmRsZVJlc2V0IiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENB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RWpHLElBQUEsQ0FBQ2tCLG9CQUFvQixDQUFDcUwsUUFBUSxFQUFBO0lBQUNsTyxLQUFLLEVBQUVzTixXQUFXO0lBQUF4SixRQUFBLEVBRy9DbkMsSUFBQSxDQUFDbUIsbUJBQW1CLENBQUNvTCxRQUFRLEVBQUE7TUFBQ2xPLEtBQUssRUFBRTRKLEtBQUs7TUFBQTlGLFFBQUEsRUFDeENqQyxLQUFBLENBQUEsTUFBQSxFQUFBWixNQUFBLENBQUFrSSxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQ01sQyxJQUFJLEVBQUE7UUFDUmtILEdBQUcsRUFBRXJCLFNBQVM7UUFDZC9JLFNBQVMsRUFBRU4sV0FBVyxDQUFDMkUsU0FBUyxFQUFFMUYsT0FBTyxDQUFDYyxPQUFPLENBQUEsQ0FBRSxFQUFFTyxTQUFTLENBQUMsQ0FBQztRQUNoRXFLLFFBQVEsRUFBRXZFLG1CQUFtQjtRQUM3QjVFLE9BQU8sRUFBRTBFLFNBQVMsQ0FBQzBFLFdBQVc7UUFBQXZLLFFBQUEsRUFBQSxDQUU5Qm5DLElBQUEsQ0FBQ21NLGdCQUFnQixFQUFBN00sTUFBQSxDQUFBa0ksTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFLNEUsWUFBWSxFQUFBO1VBQUFqSyxRQUFBLEVBQUdBO1FBQVEsQ0FBQSxDQUFBLENBQW9CLEVBQ2hFbUssYUFBYTtNQUFBLENBQUEsQ0FBQTtJQUNULENBQUE7RUFDc0IsQ0FBQSxDQUNEO0FBRXBDLENBQUM7QUFFRHJLLFdBQVcsQ0FBQzBLLFdBQVcsR0FBRyxTQUFTO0FBV25DLE9BQU8sSUFBTUMsT0FBTyxnQkFBR3hNLElBQUksQ0FBQzZCLFdBQVcsQ0FBZ0M7QUFFdkUsZUFBZTJLLE9BQU8iLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUxhdGVzdCBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUxhdGVzdCc7XG5pbXBvcnQgdXNlU2FmZVN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlU2FmZVN0YXRlJztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBSb3cgfSBmcm9tICcuLi9HcmlkJztcbmltcG9ydCB7IHVzZUZvcm0gfSBmcm9tICcuL2NvcmUvaG9va3MvdXNlRm9ybSc7XG5pbXBvcnQgeyBQcm9Gb3JtU3RhYmxlQ29udGV4dCwgUHJvRm9ybVN0YXRlQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBTdWJtaXR0ZXIgfSBmcm9tICcuL1N1Ym1pdHRlcic7XG5pbXBvcnQgeyBDU1NfUFJFRklYIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgc3RhYmxlU2VyaWFsaXplLCB0cmFuc2Zvcm1TdWJtaXRWYWx1ZXMsIG9taXROaWxWYWx1ZXMsIGZvcm1hdERhdGVWYWx1ZXMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IHVzZVNoYWxsb3dTdGFibGUgfSBmcm9tICcuL2NvcmUvZm9ybVN0b3JlJztcbmltcG9ydCB7IHVzZVVybFN5bmMgfSBmcm9tICcuL2hvb2tzL3VzZVVybFN5bmMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi9jb3JlL3BhdGhVdGlscyc7XG5jb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhDU1NfUFJFRklYKTtcbmNvbnN0IGZvcm1DbGFzc2VzID0gY2xhc3NuYW1lcygnZm9ybScpO1xuY29uc3QgREVGQVVMVF9DT0xfUFJPUFMgPSB7IHNwYW46IDI0IH07XG5jb25zdCBQcm9Gb3JtQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgc3VibWl0dGVyLCByZWFkb25seSA9IGZhbHNlLCBtb2RlOiBtb2RlUHJvcCwgZ3JpZCA9IGZhbHNlLCBjb2xQcm9wcywgcm93UHJvcHMsIGxvYWRpbmcgPSBmYWxzZSwgcmVxdWVzdCwgcGFyYW1zLCBpbml0aWFsVmFsdWVzLCBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uVmFsdWVzQ2hhbmdlLCBvblJlc2V0LCBvbkluaXQsIG9uTG9hZGluZ0NoYW5nZSwgc3luY1RvVXJsLCBzeW5jVG9VcmxBc0ltcG9ydGFudCA9IGZhbHNlLCBleHRyYVVybFBhcmFtcywgYXV0b0ZvY3VzRmlyc3RJbnB1dCA9IGZhbHNlLCBmb3JtQ29tcG9uZW50VHlwZSwgZm9ybVJlZiwgb21pdE5pbCA9IHRydWUsIGRhdGVGb3JtYXR0ZXIgPSAnc3RyaW5nJywgZmllbGRQcm9wcywgZm9ybUl0ZW1Qcm9wcywgbGF5b3V0LCBzaXplID0gJ2xhcmdlJywgbGFiZWxBbGlnbiA9ICdsZWZ0JywgZGlzYWJsZWQgPSBmYWxzZSwgY29sb24gPSB0cnVlLCByZXF1aXJlZE1hcmsgPSB0cnVlLCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCBwcmVmaXhDbHM6IF9wcmVmaXhDbHMgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcInN1Ym1pdHRlclwiLCBcInJlYWRvbmx5XCIsIFwibW9kZVwiLCBcImdyaWRcIiwgXCJjb2xQcm9wc1wiLCBcInJvd1Byb3BzXCIsIFwibG9hZGluZ1wiLCBcInJlcXVlc3RcIiwgXCJwYXJhbXNcIiwgXCJpbml0aWFsVmFsdWVzXCIsIFwib25GaW5pc2hcIiwgXCJvbkZpbmlzaEZhaWxlZFwiLCBcIm9uVmFsdWVzQ2hhbmdlXCIsIFwib25SZXNldFwiLCBcIm9uSW5pdFwiLCBcIm9uTG9hZGluZ0NoYW5nZVwiLCBcInN5bmNUb1VybFwiLCBcInN5bmNUb1VybEFzSW1wb3J0YW50XCIsIFwiZXh0cmFVcmxQYXJhbXNcIiwgXCJhdXRvRm9jdXNGaXJzdElucHV0XCIsIFwiZm9ybUNvbXBvbmVudFR5cGVcIiwgXCJmb3JtUmVmXCIsIFwib21pdE5pbFwiLCBcImRhdGVGb3JtYXR0ZXJcIiwgXCJmaWVsZFByb3BzXCIsIFwiZm9ybUl0ZW1Qcm9wc1wiLCBcImxheW91dFwiLCBcInNpemVcIiwgXCJsYWJlbEFsaWduXCIsIFwiZGlzYWJsZWRcIiwgXCJjb2xvblwiLCBcInJlcXVpcmVkTWFya1wiLCBcInZhbGlkYXRlVHJpZ2dlclwiLCBcInByZWZpeENsc1wiXSk7XG4gICAgY29uc3QgbW9kZSA9IG1vZGVQcm9wICE9PSBudWxsICYmIG1vZGVQcm9wICE9PSB2b2lkIDAgPyBtb2RlUHJvcCA6IChyZWFkb25seSA/ICdyZWFkJyA6ICdlZGl0Jyk7XG4gICAgY29uc3QgW3JlcXVlc3RMb2FkaW5nLCBzZXRSZXF1ZXN0TG9hZGluZ10gPSB1c2VTYWZlU3RhdGUoZmFsc2UpO1xuICAgIC8vIHVzZVNhZmVTdGF0ZSBmb3IgdGhlIFJFTkRFUkVEIHN1Ym1pdHRpbmcgc3RhdGUgKGl0cyBzZXR0ZXIgaXMgdW5tb3VudC1zYWZlXG4gICAgLy8g4oCUIHRoZSBmaW5hbGx5IGJlbG93IHJ1bnMgYWZ0ZXIgYXdhaXRpbmcgb25GaW5pc2gsIHdoZW4gdGhlIHR5cGljYWxcbiAgICAvLyBzdWJtaXQtdGhlbi1jbG9zZSBmbG93IG1heSBhbHJlYWR5IGhhdmUgdW5tb3VudGVkIHRoZSBmb3JtIG9uIFJlYWN0XG4gICAgLy8gMTYvMTcpLiBUaGUgcmVmIGlzIHRoZSBzeW5jaHJvbm91cyByZS1lbnRyeSBndWFyZDsgQDFtb25leS9ob29rcyBoYXMgbm9cbiAgICAvLyBzaW5nbGUgaG9vayB0aGF0IGlzIGJvdGggdW5tb3VudC1zYWZlIGFuZCBzeW5jaHJvbm91c2x5IHJlYWRhYmxlLlxuICAgIGNvbnN0IFtzdWJtaXR0aW5nLCBzZXRTdWJtaXR0aW5nXSA9IHVzZVNhZmVTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgc3VibWl0dGluZ1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaXNMb2FkaW5nID0gbG9hZGluZyB8fCByZXF1ZXN0TG9hZGluZyB8fCBzdWJtaXR0aW5nO1xuICAgIC8vIOKUgOKUgCBUcmFuc2Zvcm0gLyB2YWx1ZVR5cGUgcmVnaXN0cmllcyDilIDilIBcbiAgICBjb25zdCB0cmFuc2Zvcm1LZXlSZWYgPSB1c2VSZWYoe30pO1xuICAgIGNvbnN0IHZhbHVlVHlwZVJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgcmVnaXN0ZXJUcmFuc2Zvcm0gPSB1c2VNZW1vaXplZEZuKChuYW1lLCBmbikgPT4ge1xuICAgICAgICB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudFtuYW1lXSA9IGZuO1xuICAgIH0pO1xuICAgIC8vIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgZ3VhcmRzIHJlbW92YWw6IGRlbGV0ZSBvbmx5IHdoZW4gdGhlIHJlZ2lzdHJ5XG4gICAgLy8gc3RpbGwgaG9sZHMgdGhlIENBTExFUidTIHJlZ2lzdHJhdGlvbiwgc28gYW4gdW5tb3VudGluZyBpbnN0YW5jZSBjYW4gbmV2ZXJcbiAgICAvLyB3aXBlIGEgc2FtZS1uYW1lIHNpYmxpbmcncyBvciBzdWNjZXNzb3IncyBlbnRyeS5cbiAgICBjb25zdCB1bnJlZ2lzdGVyVHJhbnNmb3JtID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZm4pID0+IHtcbiAgICAgICAgaWYgKGZuID09PSB1bmRlZmluZWQgfHwgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnRbbmFtZV0gPT09IGZuKSB7XG4gICAgICAgICAgICBkZWxldGUgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnRbbmFtZV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCByZWdpc3RlclZhbHVlVHlwZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlVHlwZSkgPT4ge1xuICAgICAgICB2YWx1ZVR5cGVSZWYuY3VycmVudFtuYW1lXSA9IHZhbHVlVHlwZTtcbiAgICB9KTtcbiAgICBjb25zdCB1bnJlZ2lzdGVyVmFsdWVUeXBlID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWVUeXBlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZVR5cGUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZVR5cGVSZWYuY3VycmVudFtuYW1lXSA9PT0gdmFsdWVUeXBlKSB7XG4gICAgICAgICAgICBkZWxldGUgdmFsdWVUeXBlUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBvbkZpbmlzaFJlZiA9IHVzZUxhdGVzdChvbkZpbmlzaCk7XG4gICAgY29uc3Qgb25Jbml0UmVmID0gdXNlTGF0ZXN0KG9uSW5pdCk7XG4gICAgY29uc3Qgb25Mb2FkaW5nQ2hhbmdlUmVmID0gdXNlTGF0ZXN0KG9uTG9hZGluZ0NoYW5nZSk7XG4gICAgLy8gU3VibWl0IHBpcGVsaW5lOiBkYXRlcyDihpIgZmllbGQgdHJhbnNmb3JtcyDihpIgb21pdE5pbFxuICAgIGNvbnN0IGFwcGx5UGlwZWxpbmUgPSB1c2VNZW1vaXplZEZuKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZvcm1hdERhdGVWYWx1ZXModmFsdWVzLCBkYXRlRm9ybWF0dGVyLCB2YWx1ZVR5cGVSZWYuY3VycmVudCk7XG4gICAgICAgIHJlc3VsdCA9IHRyYW5zZm9ybVN1Ym1pdFZhbHVlcyhyZXN1bHQsIHRyYW5zZm9ybUtleVJlZi5jdXJyZW50KTtcbiAgICAgICAgaWYgKG9taXROaWwpXG4gICAgICAgICAgICByZXN1bHQgPSBvbWl0TmlsVmFsdWVzKHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG4gICAgLy8gU2FtZSBwaXBlbGluZSBXSVRIT1VUIG9taXROaWwg4oCUIHNpbmdsZS1maWVsZCByZWFkZXJzIG11c3Qgbm90IHNlZSBhIGZpZWxkXG4gICAgLy8gdmFuaXNoIGp1c3QgYmVjYXVzZSBpdHMgY3VycmVudCB2YWx1ZSBpcyBlbXB0eS5cbiAgICBjb25zdCBmb3JtYXRWYWx1ZXNLZWVwTmlsID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERhdGVWYWx1ZXModmFsdWVzLCBkYXRlRm9ybWF0dGVyLCB2YWx1ZVR5cGVSZWYuY3VycmVudCk7XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1TdWJtaXRWYWx1ZXMocmVzdWx0LCB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudCk7XG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIFVSTCBzeW5jIChzeW5jVG9VcmwgLyBzeW5jVG9VcmxBc0ltcG9ydGFudCAvIGV4dHJhVXJsUGFyYW1zKSDilIDilIBcbiAgICBjb25zdCB7IHVybEluaXRpYWxWYWx1ZXMsIG9uVXJsU3luY0ZpbmlzaCwgb25VcmxTeW5jUmVzZXQgfSA9IHVzZVVybFN5bmMoe1xuICAgICAgICBzeW5jVG9VcmwsXG4gICAgICAgIGV4dHJhVXJsUGFyYW1zLFxuICAgIH0pO1xuICAgIC8vIGluaXRpYWxWYWx1ZXMgaXMgTU9VTlQtT05MWSAoZG9jdW1lbnRlZCBjb250cmFjdDsgdXNlRm9ybUNvcmUgcmUtZnJlZXplc1xuICAgIC8vIGFzIGEgc2FmZXR5IG5ldCkg4oCUIGNvbXB1dGUgdGhlIFVSTCBtZXJnZSBvbmNlIHNvIHRoZSBmcmVlemUgaXMgdmlzaWJsZVxuICAgIC8vIHdoZXJlIHRoZSBwcm9wcyBlbnRlciwgaW5zdGVhZCBvZiByZWNvbXB1dGluZyBkZWFkIHNwcmVhZHMgcGVyIHJlbmRlci5cbiAgICBjb25zdCBtZXJnZWRJbml0aWFsVmFsdWVzUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGlmIChtZXJnZWRJbml0aWFsVmFsdWVzUmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgbWVyZ2VkSW5pdGlhbFZhbHVlc1JlZi5jdXJyZW50ID0gc3luY1RvVXJsXG4gICAgICAgICAgICA/IChzeW5jVG9VcmxBc0ltcG9ydGFudFxuICAgICAgICAgICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpbml0aWFsVmFsdWVzKSwgdXJsSW5pdGlhbFZhbHVlcykgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHVybEluaXRpYWxWYWx1ZXMpLCBpbml0aWFsVmFsdWVzKSlcbiAgICAgICAgICAgIDogKGluaXRpYWxWYWx1ZXMgIT09IG51bGwgJiYgaW5pdGlhbFZhbHVlcyAhPT0gdm9pZCAwID8gaW5pdGlhbFZhbHVlcyA6IHt9KTtcbiAgICB9XG4gICAgY29uc3QgbWVyZ2VkSW5pdGlhbFZhbHVlcyA9IG1lcmdlZEluaXRpYWxWYWx1ZXNSZWYuY3VycmVudDtcbiAgICAvLyBCdW1wZWQgb24gZXZlcnkgcmVzZXQg4oCUIGFuIGluLWZsaWdodCBzdWJtaXQgY2FwdHVyZXMgaXQgYW5kIGFib3J0cyB3aGVuXG4gICAgLy8gaXQgY2hhbmdlZCB1bmRlcm5lYXRoICh0aGUgdXNlciBkaXNjYXJkZWQgdGhlIHN1Ym1pc3Npb24ncyB2YWx1ZXMpLlxuICAgIGNvbnN0IHJlc2V0RXBvY2hSZWYgPSB1c2VSZWYoMCk7XG4gICAgLy8gUmVzZXQgY2hhaW46IGZvcm0tbGV2ZWwgb25SZXNldCByZWNlaXZlcyB0aGUgKHBvc3QtcmVzZXQpIGZvcm1hdHRlZFxuICAgIC8vIHZhbHVlcywgdGhlbiB0aGUgZm9ybSdzIG93biBVUkwgcGFyYW1zIGFyZSBjbGVhcmVkLiB1c2VNZW1vaXplZEZuIGRlZmVyc1xuICAgIC8vIGV4ZWN1dGlvbiB0byBldmVudCB0aW1lLCB3aGVuIGBmb3JtSW5zdGFuY2VgIChjcmVhdGVkIGp1c3QgYmVsb3cpIGV4aXN0cy5cbiAgICBjb25zdCBmaXJlRm9ybVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHJlc2V0RXBvY2hSZWYuY3VycmVudCArPSAxO1xuICAgICAgICBjb25zdCBmaW5hbFZhbHVlcyA9IGFwcGx5UGlwZWxpbmUoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoZmluYWxWYWx1ZXMpO1xuICAgICAgICBvblVybFN5bmNSZXNldCgpO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBGb3JtIGVuZ2luZSAodXNlRm9ybSB3aXRoIGFzeW5jIHZhbGlkYXRpb24pIOKUgOKUgFxuICAgIGNvbnN0IHsgZm9ybUluc3RhbmNlLCBpbnRlcm5hbHMsIHN0b3JlIH0gPSB1c2VGb3JtKHtcbiAgICAgICAgaW5pdGlhbFZhbHVlczogbWVyZ2VkSW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UsXG4gICAgICAgIG9uUmVzZXQ6IGZpcmVGb3JtUmVzZXQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIEFzeW5jIHN1Ym1pdCB3aXRoIHRyYW5zZm9ybSBwaXBlbGluZSDilIDilIBcbiAgICAvLyBSZS1lbnRyeSBndWFyZDogYSBzZWNvbmQgc3VibWl0IHdoaWxlIG9uZSBpcyBpbiBmbGlnaHQgaXMgaWdub3JlZCAodGhlXG4gICAgLy8gcmVmIGNhdGNoZXMgdHdvIGNhbGxzIGluIHRoZSBzYW1lIHRpY2spLlxuICAgIGNvbnN0IHdyYXBwZWRIYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoc3VibWl0dGluZ1JlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdWJtaXR0aW5nUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBzZXRTdWJtaXR0aW5nKHRydWUpO1xuICAgICAgICAoX2EgPSBvbkxvYWRpbmdDaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob25Mb2FkaW5nQ2hhbmdlUmVmLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZXBvY2ggPSByZXNldEVwb2NoUmVmLmN1cnJlbnQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWRWYWx1ZXMgPSB5aWVsZCBmb3JtSW5zdGFuY2UudmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgICAgICAgIC8vIEEgcmVzZXQgZHVyaW5nIChhc3luYykgdmFsaWRhdGlvbiBkaXNjYXJkcyB0aGlzIHN1Ym1pc3Npb24gZW50aXJlbHk6XG4gICAgICAgICAgICAvLyB2YWxpZGF0ZUZpZWxkcyByZS1yZWFkcyB0aGUgbGl2ZSBzdG9yZSwgc28gcHJvY2VlZGluZyB3b3VsZCBoYW5kXG4gICAgICAgICAgICAvLyBvbkZpbmlzaCB0aGUgUE9TVC1yZXNldCB2YWx1ZXMuXG4gICAgICAgICAgICBpZiAoZXBvY2ggIT09IHJlc2V0RXBvY2hSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBwaXBlbGluZWQgPSBhcHBseVBpcGVsaW5lKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB5aWVsZCAoKF9iID0gb25GaW5pc2hSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwob25GaW5pc2hSZWYsIHBpcGVsaW5lZCkpO1xuICAgICAgICAgICAgLy8gU3luYyB0aGUgVVJMIHVubGVzcyBvbkZpbmlzaCBleHBsaWNpdGx5IHJldHVybmVkIGZhbHNlIChhIHRocm93IGFib3ZlXG4gICAgICAgICAgICAvLyBhbHNvIHNraXBzIOKAlCBhIGZhaWxlZCBzdWJtaXQgbXVzdCBub3QgcG9sbHV0ZSB0aGUgVVJMKSwgYW5kIG9ubHkgaWZcbiAgICAgICAgICAgIC8vIHRoZSB1c2VyIGRpZCBOT1QgcmVzZXQgdGhlIGZvcm0gd2hpbGUgdGhlIHN1Ym1pdCB3YXMgaW4gZmxpZ2h0LlxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgZXBvY2ggPT09IHJlc2V0RXBvY2hSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIG9uVXJsU3luY0ZpbmlzaChwaXBlbGluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIEEgcmVzZXQgZHVyaW5nIHZhbGlkYXRpb24gYWxzbyBpbnZhbGlkYXRlcyB0aGUgRkFJTFVSRSBjYWxsYmFjayDigJRcbiAgICAgICAgICAgIC8vIHRoZSBlcnJvciBjYXJyaWVzIHBvc3QtcmVzZXQgdmFsdWVzIGZvciBhIGRpc2NhcmRlZCBzdWJtaXNzaW9uLlxuICAgICAgICAgICAgLy8gKEZpZWxkIGVycm9ycyBzdGFtcGVkIGJ5IHRoZSBkZWFkIHZhbGlkYXRpb24gbWF5IHN0aWxsIGFwcGVhcjsgYVxuICAgICAgICAgICAgLy8gZGVlcGVyIHZhbGlkYXRpb24tZXBvY2ggd291bGQgYmUgbmVlZGVkIHRvIHN1cHByZXNzIHRob3NlLilcbiAgICAgICAgICAgIGlmIChlcG9jaCAhPT0gcmVzZXRFcG9jaFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVkID0gZXJyO1xuICAgICAgICAgICAgb25GaW5pc2hGYWlsZWQgPT09IG51bGwgfHwgb25GaW5pc2hGYWlsZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoRmFpbGVkKHsgdmFsdWVzOiB0eXBlZC52YWx1ZXMsIGVycm9yczogdHlwZWQuZXJyb3JzIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgc3VibWl0dGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRTdWJtaXR0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgIChfYyA9IG9uTG9hZGluZ0NoYW5nZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuY2FsbChvbkxvYWRpbmdDaGFuZ2VSZWYsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICAvLyDilIDilIAgUHJvRm9ybSBpbnN0YW5jZTogc3VwZXJzZXQgb2YgRm9ybUluc3RhbmNlIOKUgOKUgFxuICAgIGNvbnN0IHByb0Zvcm1Gb3JtSW5zdGFuY2UgPSB1c2VNZW1vKCgpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZvcm1JbnN0YW5jZSksIHsgZ2V0RmllbGRzRm9ybWF0VmFsdWU6ICgpID0+IGFwcGx5UGlwZWxpbmUoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpLCBnZXRGaWVsZEZvcm1hdFZhbHVlOiAobmFtZSkgPT4gcmVzb2x2ZVZhbHVlKGZvcm1hdFZhbHVlc0tlZXBOaWwoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpLCBuYW1lKSwgZ2V0RmllbGRGb3JtYXRWYWx1ZU9iamVjdDogKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdFZhbHVlc0tlZXBOaWwoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpO1xuICAgICAgICAgICAgaWYgKCFuYW1lKVxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gICAgICAgICAgICBjb25zdCB0b3BLZXkgPSBuYW1lLnNwbGl0KCcuJylbMF07XG4gICAgICAgICAgICByZXR1cm4geyBbdG9wS2V5XTogZm9ybWF0dGVkW3RvcEtleV0gfTtcbiAgICAgICAgfSwgdmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZTogKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHMgPSB5aWVsZCBmb3JtSW5zdGFuY2UudmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCB2YWx1ZXM6IGFwcGx5UGlwZWxpbmUodmFscykgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0ZUZpZWxkcyByZWplY3RzIHdpdGggYW4gRXJyb3IgY2FycnlpbmcgdGhlIGZpZWxkIGVycm9ycyBtYXBcbiAgICAgICAgICAgICAgICAvLyAoc2FtZSBzaGFwZSB3cmFwcGVkSGFuZGxlU3VibWl0IGNvbnN1bWVzIGFib3ZlKS5cbiAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycyB9ID0gZXJyO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcnM6IGVycm9ycyAhPT0gbnVsbCAmJiBlcnJvcnMgIT09IHZvaWQgMCA/IGVycm9ycyA6IHt9IH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLCBzdWJtaXRGb3JtOiB3cmFwcGVkSGFuZGxlU3VibWl0IH0pKSwgW2Zvcm1JbnN0YW5jZSwgYXBwbHlQaXBlbGluZSwgd3JhcHBlZEhhbmRsZVN1Ym1pdF0pO1xuICAgIC8vIOKUgOKUgCBTeW5jIHRvIGZvcm1SZWYgcHJvcCDilIDilIBcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoZm9ybVJlZikge1xuICAgICAgICAgICAgZm9ybVJlZi5jdXJyZW50ID0gcHJvRm9ybUZvcm1JbnN0YW5jZTtcbiAgICAgICAgfVxuICAgIH0sIFtmb3JtUmVmLCBwcm9Gb3JtRm9ybUluc3RhbmNlXSk7XG4gICAgLy8g4pSA4pSAIHJlcXVlc3QgLyBwYXJhbXMgYXV0by1sb2FkIOKUgOKUgFxuICAgIGNvbnN0IHJlcXVlc3RSZWYgPSB1c2VMYXRlc3QocmVxdWVzdCk7XG4gICAgY29uc3Qgc2VyaWFsaXplZFBhcmFtcyA9IHVzZU1lbW8oKCkgPT4gc3RhYmxlU2VyaWFsaXplKHBhcmFtcyksIFtwYXJhbXNdKTtcbiAgICAvLyBvbkluaXQgZmlyZXMgZXhhY3RseSBvbmNlOiBhZnRlciB0aGUgRklSU1QgcmVxdWVzdCByZXNvbHZlcyB3aGVuIGFcbiAgICAvLyByZXF1ZXN0IGlzIGNvbmZpZ3VyZWQsIG90aGVyd2lzZSByaWdodCBhZnRlciBtb3VudC5cbiAgICBjb25zdCBpbml0RmlyZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGZpcmVJbml0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGluaXRGaXJlZFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpbml0RmlyZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIChfYSA9IG9uSW5pdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChvbkluaXRSZWYsIGFwcGx5UGlwZWxpbmUoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpLCBwcm9Gb3JtRm9ybUluc3RhbmNlKTtcbiAgICB9KTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBTdGFsZW5lc3MgZ3VhcmQ6IGlmIHBhcmFtcyBjaGFuZ2UgYWdhaW4gYmVmb3JlIHRoaXMgZmV0Y2ggcmVzb2x2ZXMsIHRoZVxuICAgICAgICAvLyBjbGVhbnVwIG1hcmtzIGl0IHN0YWxlIHNvIHRoZSBsYXRlIHJlc3BvbnNlIGNhbid0IG92ZXJ3cml0ZSB0aGUgdmFsdWVzXG4gICAgICAgIC8vIGEgbmV3ZXIgcmVxdWVzdCBhbHJlYWR5IChvciB3aWxsKSBzZXQuXG4gICAgICAgIGxldCBzdGFsZSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBmZXRjaERhdGEgPSAoKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RGbiA9IHJlcXVlc3RSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmICghcmVxdWVzdEZuKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHNldFJlcXVlc3RMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0geWllbGQgcmVxdWVzdEZuKHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGFsZSAmJiBkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBmb3JtSW5zdGFuY2Uuc2V0RmllbGRzVmFsdWUoZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGFsZSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgYSBOT04tc3VwZXJzZWRlZCBzZXR0bGUgaW5pdGlhbGl6ZXMgdGhlIGZvcm06IGEgc3RhbGVcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVxdWVzdCdzIGRhdGEgd2FzIGRpc2NhcmRlZCwgc28gaXRzIHZhbHVlcyBtdXN0IG5vdCBiZSByZXBvcnRlZC5cbiAgICAgICAgICAgICAgICAgICAgZmlyZUluaXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocmVxdWVzdFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBmZXRjaERhdGEoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpcmVJbml0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHN0YWxlID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gUmUtZmV0Y2ggT05MWSB3aGVuIHBhcmFtcyBjaGFuZ2UgYnkgVkFMVUU6IGRlcGVuZGluZyBvbiB0aGUgcmF3IGBwYXJhbXNgXG4gICAgICAgIC8vIHJlZmVyZW5jZSB3b3VsZCByZS1ydW4gb24gZXZlcnkgcmVuZGVyIGZvciBpbmxpbmUgb2JqZWN0IGxpdGVyYWxzIGFuZCxcbiAgICAgICAgLy8gY29tYmluZWQgd2l0aCB0aGUgbG9hZGluZyBzZXRTdGF0ZSwgbG9vcCBmb3JldmVyLlxuICAgIH0sIFtzZXJpYWxpemVkUGFyYW1zXSk7XG4gICAgLy8g4pSA4pSAIGF1dG9Gb2N1c0ZpcnN0SW5wdXQg4pSA4pSAXG4gICAgY29uc3QgZm9ybUVsUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFhdXRvRm9jdXNGaXJzdElucHV0IHx8IG1vZGUgPT09ICdyZWFkJylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZmlyc3RJbnB1dCA9IChfYSA9IGZvcm1FbFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucXVlcnlTZWxlY3RvcignaW5wdXQ6bm90KFt0eXBlPVwiaGlkZGVuXCJdKTpub3QoW2Rpc2FibGVkXSksIHRleHRhcmVhOm5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScpO1xuICAgICAgICBmaXJzdElucHV0ID09PSBudWxsIHx8IGZpcnN0SW5wdXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpcnN0SW5wdXQuZm9jdXMoKTtcbiAgICAgICAgLy8gTW91bnQtb25seSBieSBkZXNpZ24uXG4gICAgfSwgW10pO1xuICAgIC8vIOKUgOKUgCBTcGxpdCBjb250ZXh0IOKUgOKUgFxuICAgIC8vIEZvcm0tbGV2ZWwgcHJvcCBiYWdzIGFyZSBvZnRlbiBpbmxpbmUgbGl0ZXJhbHM6IGtlZXAgdGhlaXIgaWRlbnRpdHlcbiAgICAvLyBzdGFibGUgd2hpbGUgc2hhbGxvdy1lcXVhbCBzbyB0aGUgc3RhYmxlIHNsaWNlIGRvZXNuJ3QgY2h1cm4gcGVyIHJlbmRlci5cbiAgICBjb25zdCBzdGFibGVGaWVsZFByb3BzID0gdXNlU2hhbGxvd1N0YWJsZShmaWVsZFByb3BzKTtcbiAgICBjb25zdCBzdGFibGVGb3JtSXRlbVByb3BzID0gdXNlU2hhbGxvd1N0YWJsZShmb3JtSXRlbVByb3BzKTtcbiAgICBjb25zdCBzdGFibGVDb2xQcm9wcyA9IHVzZVNoYWxsb3dTdGFibGUoY29sUHJvcHMpO1xuICAgIGNvbnN0IHN0YWJsZUxheW91dCA9IHVzZVNoYWxsb3dTdGFibGUobGF5b3V0KTtcbiAgICAvLyBTdGFibGUgc2xpY2U6IGNvbmZpZ3VyYXRpb24gKyBpZGVudGl0eS1zdGFibGUgZGlzcGF0Y2hlcnMvaW5zdGFuY2UuXG4gICAgLy8gQ2hhbmdlcyBvbmx5IHdoZW4gZm9ybS1sZXZlbCBwcm9wcyBjaGFuZ2Ug4oCUIE5PVCBvbiBrZXlzdHJva2VzLCBzb1xuICAgIC8vIHN1YnNjcmliZXJzIGxpa2UgU3VibWl0dGVyIGFuZCB0aGUgZmllbGQgZmFjdG9yaWVzIHNraXAgdGhvc2UgcmVuZGVycy5cbiAgICBjb25zdCBzdGFibGVWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgZm9ybUluc3RhbmNlOiBwcm9Gb3JtRm9ybUluc3RhbmNlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlOiBpbnRlcm5hbHMuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcjogaW50ZXJuYWxzLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkV2FybmluZzogaW50ZXJuYWxzLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZDogaW50ZXJuYWxzLnZhbGlkYXRlRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRBc3luYzogaW50ZXJuYWxzLnZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZDogaW50ZXJuYWxzLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZDogaW50ZXJuYWxzLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgLy8gU3VibWl0dGluZy9sb2FkaW5nIGRvZXMgTk9UIGRpc2FibGUgZmllbGRzIOKAlCBvbmx5IHRoZVxuICAgICAgICAvLyBleHBsaWNpdCBgZGlzYWJsZWRgIHByb3AgZG9lcy4gS2VlcGluZyBpc0xvYWRpbmcgb3V0IG9mIHRoaXMgc2xpY2VcbiAgICAgICAgLy8gbWVhbnMgYSBzdWJtaXQgY3ljbGUgbm8gbG9uZ2VyIHJlLXJlbmRlcnMgZXZlcnkgZmllbGQgc2hlbGwuXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgICAgIC8vIFByb0Zvcm0gc3BlY2lmaWNzXG4gICAgICAgIHJlYWRvbmx5LFxuICAgICAgICBtb2RlLFxuICAgICAgICBncmlkLFxuICAgICAgICBjb2xQcm9wczogc3RhYmxlQ29sUHJvcHMgIT09IG51bGwgJiYgc3RhYmxlQ29sUHJvcHMgIT09IHZvaWQgMCA/IHN0YWJsZUNvbFByb3BzIDogREVGQVVMVF9DT0xfUFJPUFMsXG4gICAgICAgIHJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICB1bnJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICByZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgdW5yZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgZmllbGRQcm9wczogc3RhYmxlRmllbGRQcm9wcyxcbiAgICAgICAgZm9ybUl0ZW1Qcm9wczogc3RhYmxlRm9ybUl0ZW1Qcm9wcyxcbiAgICAgICAgbGF5b3V0OiBzdGFibGVMYXlvdXQsXG4gICAgICAgIGZvcm1Db21wb25lbnRUeXBlLFxuICAgIH0pLCBbXG4gICAgICAgIHByb0Zvcm1Gb3JtSW5zdGFuY2UsXG4gICAgICAgIGludGVybmFscy5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBpbnRlcm5hbHMuc2V0RmllbGRFcnJvcixcbiAgICAgICAgaW50ZXJuYWxzLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgaW50ZXJuYWxzLnZhbGlkYXRlRmllbGQsXG4gICAgICAgIGludGVybmFscy52YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIGludGVybmFscy5yZWdpc3RlckZpZWxkLFxuICAgICAgICBpbnRlcm5hbHMudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY29sb24sXG4gICAgICAgIHJlcXVpcmVkTWFyayxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgICAgICByZWFkb25seSxcbiAgICAgICAgbW9kZSxcbiAgICAgICAgZ3JpZCxcbiAgICAgICAgc3RhYmxlQ29sUHJvcHMsXG4gICAgICAgIHJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICB1bnJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICByZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgdW5yZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgc3RhYmxlRmllbGRQcm9wcyxcbiAgICAgICAgc3RhYmxlRm9ybUl0ZW1Qcm9wcyxcbiAgICAgICAgc3RhYmxlTGF5b3V0LFxuICAgICAgICBmb3JtQ29tcG9uZW50VHlwZSxcbiAgICBdKTtcbiAgICBjb25zdCBXcmFwcGVyQ29tcG9uZW50ID0gZ3JpZCA/IFJvdyA6IEZyYWdtZW50O1xuICAgIGNvbnN0IHdyYXBwZXJQcm9wcyA9IGdyaWQgPyBPYmplY3QuYXNzaWduKHt9LCByb3dQcm9wcykgOiB7fTtcbiAgICAvLyBSZXNldCBjYWxsYmFjayBjaGFpbjogdGhlIFN1Ym1pdHRlciByZXNldHMgdGhlIHZhbHVlcyBmaXJzdCwgdGhlbiB0aGVcbiAgICAvLyBzdWJtaXR0ZXItbGV2ZWwgb25SZXNldCwgdGhlbiB0aGUgZm9ybS1sZXZlbCBvblJlc2V0ICh3aXRoIGZpbmFsVmFsdWVzKVxuICAgIC8vIGFuZCB0aGUgVVJMIGNsZWFudXAg4oCUIGZpcmVkIGV4YWN0bHkgb25jZSBwZXIgcmVzZXQgYWN0aW9uLlxuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdHRlclJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdWJtaXR0ZXIgPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgKF9hID0gc3VibWl0dGVyLm9uUmVzZXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHN1Ym1pdHRlcik7XG4gICAgICAgIGZpcmVGb3JtUmVzZXQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBzdWJtaXR0ZXJOb2RlID0gc3VibWl0dGVyICE9PSBmYWxzZSAmJiBtb2RlICE9PSAncmVhZCcgPyAoX2pzeChTdWJtaXR0ZXIsIE9iamVjdC5hc3NpZ24oe30sICh0eXBlb2Ygc3VibWl0dGVyID09PSAnb2JqZWN0JyA/IHN1Ym1pdHRlciA6IHt9KSwgeyBvblJlc2V0OiBoYW5kbGVTdWJtaXR0ZXJSZXNldCwgbG9hZGluZzogaXNMb2FkaW5nIH0pKSkgOiBudWxsO1xuICAgIHJldHVybiAoX2pzeChQcm9Gb3JtU3RhYmxlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc3RhYmxlVmFsdWUsIGNoaWxkcmVuOiBfanN4KFByb0Zvcm1TdGF0ZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHN0b3JlLCBjaGlsZHJlbjogX2pzeHMoXCJmb3JtXCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgcmVmOiBmb3JtRWxSZWYsIGNsYXNzTmFtZTogZm9ybUNsYXNzZXModW5kZWZpbmVkLCBqb2luQ2xzKGNsYXNzZXMoKSwgY2xhc3NOYW1lKSksIG9uU3VibWl0OiB3cmFwcGVkSGFuZGxlU3VibWl0LCBvblJlc2V0OiBpbnRlcm5hbHMuaGFuZGxlUmVzZXQsIGNoaWxkcmVuOiBbX2pzeChXcmFwcGVyQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCB3cmFwcGVyUHJvcHMsIHsgY2hpbGRyZW46IGNoaWxkcmVuIH0pKSwgc3VibWl0dGVyTm9kZV0gfSkpIH0pIH0pKTtcbn07XG5Qcm9Gb3JtQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtJztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtID0gbWVtbyhQcm9Gb3JtQmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
504
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwidmFsdWUiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwiZSIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIl9fcmVzdCIsInMiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiUmVhY3QiLCJtZW1vIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsIkZyYWdtZW50IiwidXNlTGF0ZXN0IiwidXNlU2FmZVN0YXRlIiwidXNlTWVtb2l6ZWRGbiIsInVzZUV2ZW50Q2FsbGJhY2siLCJkZWZhdWx0IiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJSb3ciLCJ1c2VGb3JtIiwiUHJvRm9ybVN0YWJsZUNvbnRleHQiLCJQcm9Gb3JtU3RhdGVDb250ZXh0IiwiU3VibWl0dGVyIiwiQ1NTX1BSRUZJWCIsInN0YWJsZVNlcmlhbGl6ZSIsInRyYW5zZm9ybVN1Ym1pdFZhbHVlcyIsIm9taXROaWxWYWx1ZXMiLCJmb3JtYXREYXRlVmFsdWVzIiwidXNlU2hhbGxvd1N0YWJsZSIsInVzZVVybFN5bmMiLCJyZXNvbHZlVmFsdWUiLCJzZXROZXN0ZWRWYWx1ZSIsIkZvcm1WYWxpZGF0aW9uRXJyb3IiLCJjbGFzc2VzIiwiZm9ybUNsYXNzZXMiLCJERUZBVUxUX0NPTF9QUk9QUyIsInNwYW4iLCJQcm9Gb3JtQmFzZSIsInByb3BzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJzdWJtaXR0ZXIiLCJfcHJvcHMkbW9kZSIsIm1vZGUiLCJfcHJvcHMkZ3JpZCIsImdyaWQiLCJjb2xQcm9wcyIsInJvd1Byb3BzIiwiX3Byb3BzJGxvYWRpbmciLCJsb2FkaW5nIiwicmVxdWVzdCIsInBhcmFtcyIsImluaXRpYWxWYWx1ZXMiLCJvbkZpbmlzaCIsIm9uRmluaXNoRmFpbGVkIiwib25WYWx1ZXNDaGFuZ2UiLCJvblJlc2V0Iiwib25Jbml0Iiwib25Mb2FkaW5nQ2hhbmdlIiwic3luY1RvVXJsIiwiX3Byb3BzJHN5bmNUb1VybEFzSW1wIiwic3luY1RvVXJsQXNJbXBvcnRhbnQiLCJleHRyYVVybFBhcmFtcyIsIl9wcm9wcyRhdXRvRm9jdXNGaXJzdCIsImF1dG9Gb2N1c0ZpcnN0SW5wdXQiLCJmb3JtQ29tcG9uZW50VHlwZSIsImZvcm1SZWYiLCJfcHJvcHMkb21pdE5pbCIsIm9taXROaWwiLCJfcHJvcHMkZGF0ZUZvcm1hdHRlciIsImRhdGVGb3JtYXR0ZXIiLCJmaWVsZFByb3BzIiwiZm9ybUl0ZW1Qcm9wcyIsImxheW91dCIsIl9wcm9wcyRzaXplIiwic2l6ZSIsIl9wcm9wcyRsYWJlbEFsaWduIiwibGFiZWxBbGlnbiIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwiX3Byb3BzJHZhbGlkYXRlVHJpZ2dlIiwidmFsaWRhdGVUcmlnZ2VyIiwiX3ByZWZpeENscyIsInByZWZpeENscyIsInJlc3QiLCJfdXNlU2FmZVN0YXRlIiwiX3VzZVNhZmVTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInJlcXVlc3RMb2FkaW5nIiwic2V0UmVxdWVzdExvYWRpbmciLCJfdXNlU2FmZVN0YXRlMyIsIl91c2VTYWZlU3RhdGU0Iiwic3VibWl0dGluZyIsInNldFN1Ym1pdHRpbmciLCJzdWJtaXR0aW5nUmVmIiwiaXNMb2FkaW5nIiwidHJhbnNmb3JtS2V5UmVmIiwidmFsdWVUeXBlUmVmIiwicmVnaXN0ZXJUcmFuc2Zvcm0iLCJuYW1lIiwiZm4iLCJjdXJyZW50IiwidW5yZWdpc3RlclRyYW5zZm9ybSIsInVuZGVmaW5lZCIsInJlZ2lzdGVyVmFsdWVUeXBlIiwidmFsdWVUeXBlIiwidW5yZWdpc3RlclZhbHVlVHlwZSIsIm9uRmluaXNoUmVmIiwib25Jbml0UmVmIiwib25Mb2FkaW5nQ2hhbmdlUmVmIiwiYXBwbHlQaXBlbGluZSIsInZhbHVlcyIsImZvcm1hdFZhbHVlc0tlZXBOaWwiLCJfdXNlVXJsU3luYyIsInVybEluaXRpYWxWYWx1ZXMiLCJvblVybFN5bmNGaW5pc2giLCJvblVybFN5bmNSZXNldCIsIm1lcmdlZEluaXRpYWxWYWx1ZXNSZWYiLCJhc3NpZ24iLCJtZXJnZWRJbml0aWFsVmFsdWVzIiwicmVzZXRFcG9jaFJlZiIsImZpcmVGb3JtUmVzZXQiLCJmaW5hbFZhbHVlcyIsImZvcm1JbnN0YW5jZSIsImdldEZpZWxkc1ZhbHVlIiwiX3VzZUZvcm0iLCJpbnRlcm5hbHMiLCJzdG9yZSIsIndyYXBwZWRIYW5kbGVTdWJtaXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfYSIsIl9iIiwiX2MiLCJlcG9jaCIsInZhbGlkYXRlZFZhbHVlcyIsInBpcGVsaW5lZCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsInByZXZlbnREZWZhdWx0IiwiYWJydXB0IiwidmFsaWRhdGVGaWVsZHMiLCJzZW50IiwiZXJyb3JzIiwiY29uc29sZSIsImVycm9yIiwiZmluaXNoIiwic3RvcCIsInByb0Zvcm1Gb3JtSW5zdGFuY2UiLCJnZXRGaWVsZHNGb3JtYXRWYWx1ZSIsImdldEZpZWxkRm9ybWF0VmFsdWUiLCJnZXRGaWVsZEZvcm1hdFZhbHVlT2JqZWN0IiwiZm9ybWF0dGVkIiwidmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZSIsIl9jYWxsZWUyIiwidmFscyIsIl90MiIsIl9jb250ZXh0MiIsInN1Y2Nlc3MiLCJzdWJtaXRGb3JtIiwicmVxdWVzdFJlZiIsImhhc1JlcXVlc3QiLCJzZXJpYWxpemVkUGFyYW1zIiwiaW5pdEZpcmVkUmVmIiwiZmlyZUluaXQiLCJzdGFsZSIsImZldGNoRGF0YSIsIl9jYWxsZWUzIiwicmVxdWVzdEZuIiwiZGF0YSIsIl90MyIsIl9jb250ZXh0MyIsIl90eXBlb2YiLCJzZXRGaWVsZHNWYWx1ZSIsImZvcm1FbFJlZiIsImZpcnN0SW5wdXQiLCJxdWVyeVNlbGVjdG9yIiwiZm9jdXMiLCJzdGFibGVGaWVsZFByb3BzIiwic3RhYmxlRm9ybUl0ZW1Qcm9wcyIsInN0YWJsZUNvbFByb3BzIiwic3RhYmxlTGF5b3V0Iiwic3RhYmxlVmFsdWUiLCJzZXRGaWVsZFZhbHVlIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkV2FybmluZyIsInZhbGlkYXRlRmllbGQiLCJ2YWxpZGF0ZUZpZWxkQXN5bmMiLCJyZWdpc3RlckZpZWxkIiwidW5yZWdpc3RlckZpZWxkIiwicmV0YWluRmllbGQiLCJyZWxlYXNlRmllbGQiLCJXcmFwcGVyQ29tcG9uZW50Iiwid3JhcHBlclByb3BzIiwiaGFuZGxlU3VibWl0dGVyUmVzZXQiLCJzdWJtaXR0ZXJOb2RlIiwiUHJvdmlkZXIiLCJyZWYiLCJvblN1Ym1pdCIsImhhbmRsZVJlc2V0IiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJQSxTQUFTLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxLQUFLLEVBQUU7SUFBRSxPQUFPQSxLQUFLLFlBQVlILENBQUMsR0FBR0csS0FBSyxHQUFHLElBQUlILENBQUMsQ0FBQyxVQUFVSSxPQUFPLEVBQUU7TUFBRUEsT0FBTyxDQUFDRCxLQUFLLENBQUM7SUFBRSxDQUFDLENBQUM7RUFBRTtFQUMzRyxPQUFPLEtBQUtILENBQUMsS0FBS0EsQ0FBQyxHQUFHSyxPQUFPLENBQUMsRUFBRSxV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Q0FBQ21MLFFBQVEsRUFBQTtJQUFDaE8sS0FBSyxFQUFFa04sV0FBVztJQUFBbEosUUFBQSxFQUcvQ3JDLElBQUEsQ0FBQ21CLG1CQUFtQixDQUFDa0wsUUFBUSxFQUFBO01BQUNoTyxLQUFLLEVBQUV3SixLQUFLO01BQUF4RixRQUFBLEVBQ3hDbkMsS0FBQSxDQUFBLE1BQUEsRUFBQVosTUFBQSxDQUFBOEgsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNNbEMsSUFBSSxFQUFBO1FBQ1JvSCxHQUFHLEVBQUV2QixTQUFTO1FBQ2R6SSxTQUFTLEVBQUVOLFdBQVcsQ0FBQ3FFLFNBQVMsRUFBRXRGLE9BQU8sQ0FBQ2dCLE9BQU8sQ0FBQSxDQUFFLEVBQUVPLFNBQVMsQ0FBQyxDQUFDO1FBQ2hFaUssUUFBUSxFQUFFekUsbUJBQW1CO1FBQzdCeEUsT0FBTyxFQUFFc0UsU0FBUyxDQUFDNEUsV0FBVztRQUFBbkssUUFBQSxFQUFBLENBRTlCckMsSUFBQSxDQUFDaU0sZ0JBQWdCLEVBQUEzTSxNQUFBLENBQUE4SCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUs4RSxZQUFZLEVBQUE7VUFBQTdKLFFBQUEsRUFBR0E7UUFBUSxDQUFBLENBQUEsQ0FBb0IsRUFDaEUrSixhQUFhO01BQUEsQ0FBQSxDQUFBO0lBQ1QsQ0FBQTtFQUNzQixDQUFBLENBQ0Q7QUFFcEMsQ0FBQztBQUVEakssV0FBVyxDQUFDc0ssV0FBVyxHQUFHLFNBQVM7QUFXbkMsT0FBTyxJQUFNQyxPQUFPLGdCQUFHdE0sSUFBSSxDQUFDK0IsV0FBVyxDQUFnQztBQUV2RSxlQUFldUssT0FBTyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vUHJvRm9ybS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgRnJhZ21lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTGF0ZXN0IGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTGF0ZXN0JztcbmltcG9ydCB1c2VTYWZlU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VTYWZlU3RhdGUnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uL0dyaWQnO1xuaW1wb3J0IHsgdXNlRm9ybSB9IGZyb20gJy4vY29yZS9ob29rcy91c2VGb3JtJztcbmltcG9ydCB7IFByb0Zvcm1TdGFibGVDb250ZXh0LCBQcm9Gb3JtU3RhdGVDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IFN1Ym1pdHRlciB9IGZyb20gJy4vU3VibWl0dGVyJztcbmltcG9ydCB7IENTU19QUkVGSVggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBzdGFibGVTZXJpYWxpemUsIHRyYW5zZm9ybVN1Ym1pdFZhbHVlcywgb21pdE5pbFZhbHVlcywgZm9ybWF0RGF0ZVZhbHVlcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgdXNlU2hhbGxvd1N0YWJsZSB9IGZyb20gJy4vY29yZS9mb3JtU3RvcmUnO1xuaW1wb3J0IHsgdXNlVXJsU3luYyB9IGZyb20gJy4vaG9va3MvdXNlVXJsU3luYyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUsIHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi9jb3JlL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBGb3JtVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi9jb3JlL3ZhbGlkYXRpb25FcnJvcic7XG5jb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhDU1NfUFJFRklYKTtcbmNvbnN0IGZvcm1DbGFzc2VzID0gY2xhc3NuYW1lcygnZm9ybScpO1xuY29uc3QgREVGQVVMVF9DT0xfUFJPUFMgPSB7IHNwYW46IDI0IH07XG5jb25zdCBQcm9Gb3JtQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgc3VibWl0dGVyLCBtb2RlID0gJ2VkaXQnLCBncmlkID0gZmFsc2UsIGNvbFByb3BzLCByb3dQcm9wcywgbG9hZGluZyA9IGZhbHNlLCByZXF1ZXN0LCBwYXJhbXMsIGluaXRpYWxWYWx1ZXMsIG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25WYWx1ZXNDaGFuZ2UsIG9uUmVzZXQsIG9uSW5pdCwgb25Mb2FkaW5nQ2hhbmdlLCBzeW5jVG9VcmwsIHN5bmNUb1VybEFzSW1wb3J0YW50ID0gZmFsc2UsIGV4dHJhVXJsUGFyYW1zLCBhdXRvRm9jdXNGaXJzdElucHV0ID0gZmFsc2UsIGZvcm1Db21wb25lbnRUeXBlLCBmb3JtUmVmLCBvbWl0TmlsID0gdHJ1ZSwgZGF0ZUZvcm1hdHRlciA9ICdzdHJpbmcnLCBmaWVsZFByb3BzLCBmb3JtSXRlbVByb3BzLCBsYXlvdXQsIHNpemUgPSAnbGFyZ2UnLCBsYWJlbEFsaWduID0gJ2xlZnQnLCBkaXNhYmxlZCA9IGZhbHNlLCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCBwcmVmaXhDbHM6IF9wcmVmaXhDbHMgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcInN1Ym1pdHRlclwiLCBcIm1vZGVcIiwgXCJncmlkXCIsIFwiY29sUHJvcHNcIiwgXCJyb3dQcm9wc1wiLCBcImxvYWRpbmdcIiwgXCJyZXF1ZXN0XCIsIFwicGFyYW1zXCIsIFwiaW5pdGlhbFZhbHVlc1wiLCBcIm9uRmluaXNoXCIsIFwib25GaW5pc2hGYWlsZWRcIiwgXCJvblZhbHVlc0NoYW5nZVwiLCBcIm9uUmVzZXRcIiwgXCJvbkluaXRcIiwgXCJvbkxvYWRpbmdDaGFuZ2VcIiwgXCJzeW5jVG9VcmxcIiwgXCJzeW5jVG9VcmxBc0ltcG9ydGFudFwiLCBcImV4dHJhVXJsUGFyYW1zXCIsIFwiYXV0b0ZvY3VzRmlyc3RJbnB1dFwiLCBcImZvcm1Db21wb25lbnRUeXBlXCIsIFwiZm9ybVJlZlwiLCBcIm9taXROaWxcIiwgXCJkYXRlRm9ybWF0dGVyXCIsIFwiZmllbGRQcm9wc1wiLCBcImZvcm1JdGVtUHJvcHNcIiwgXCJsYXlvdXRcIiwgXCJzaXplXCIsIFwibGFiZWxBbGlnblwiLCBcImRpc2FibGVkXCIsIFwidmFsaWRhdGVUcmlnZ2VyXCIsIFwicHJlZml4Q2xzXCJdKTtcbiAgICBjb25zdCBbcmVxdWVzdExvYWRpbmcsIHNldFJlcXVlc3RMb2FkaW5nXSA9IHVzZVNhZmVTdGF0ZShmYWxzZSk7XG4gICAgLy8gdXNlU2FmZVN0YXRlIGZvciB0aGUgUkVOREVSRUQgc3VibWl0dGluZyBzdGF0ZSAoaXRzIHNldHRlciBpcyB1bm1vdW50LXNhZmVcbiAgICAvLyDigJQgdGhlIGZpbmFsbHkgYmVsb3cgcnVucyBhZnRlciBhd2FpdGluZyBvbkZpbmlzaCwgd2hlbiB0aGUgdHlwaWNhbFxuICAgIC8vIHN1Ym1pdC10aGVuLWNsb3NlIGZsb3cgbWF5IGFscmVhZHkgaGF2ZSB1bm1vdW50ZWQgdGhlIGZvcm0gb24gUmVhY3RcbiAgICAvLyAxNi8xNykuIFRoZSByZWYgaXMgdGhlIHN5bmNocm9ub3VzIHJlLWVudHJ5IGd1YXJkOyBAMW1vbmV5L2hvb2tzIGhhcyBub1xuICAgIC8vIHNpbmdsZSBob29rIHRoYXQgaXMgYm90aCB1bm1vdW50LXNhZmUgYW5kIHN5bmNocm9ub3VzbHkgcmVhZGFibGUuXG4gICAgY29uc3QgW3N1Ym1pdHRpbmcsIHNldFN1Ym1pdHRpbmddID0gdXNlU2FmZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBzdWJtaXR0aW5nUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBpc0xvYWRpbmcgPSBsb2FkaW5nIHx8IHJlcXVlc3RMb2FkaW5nIHx8IHN1Ym1pdHRpbmc7XG4gICAgLy8g4pSA4pSAIFRyYW5zZm9ybSAvIHZhbHVlVHlwZSByZWdpc3RyaWVzIOKUgOKUgFxuICAgIGNvbnN0IHRyYW5zZm9ybUtleVJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgdmFsdWVUeXBlUmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCByZWdpc3RlclRyYW5zZm9ybSA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIGZuKSA9PiB7XG4gICAgICAgIHRyYW5zZm9ybUtleVJlZi5jdXJyZW50W25hbWVdID0gZm47XG4gICAgfSk7XG4gICAgLy8gVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBndWFyZHMgcmVtb3ZhbDogZGVsZXRlIG9ubHkgd2hlbiB0aGUgcmVnaXN0cnlcbiAgICAvLyBzdGlsbCBob2xkcyB0aGUgQ0FMTEVSJ1MgcmVnaXN0cmF0aW9uLCBzbyBhbiB1bm1vdW50aW5nIGluc3RhbmNlIGNhbiBuZXZlclxuICAgIC8vIHdpcGUgYSBzYW1lLW5hbWUgc2libGluZydzIG9yIHN1Y2Nlc3NvcidzIGVudHJ5LlxuICAgIGNvbnN0IHVucmVnaXN0ZXJUcmFuc2Zvcm0gPSB1c2VNZW1vaXplZEZuKChuYW1lLCBmbikgPT4ge1xuICAgICAgICBpZiAoZm4gPT09IHVuZGVmaW5lZCB8fCB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudFtuYW1lXSA9PT0gZm4pIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudFtuYW1lXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHJlZ2lzdGVyVmFsdWVUeXBlID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWVUeXBlKSA9PiB7XG4gICAgICAgIHZhbHVlVHlwZVJlZi5jdXJyZW50W25hbWVdID0gdmFsdWVUeXBlO1xuICAgIH0pO1xuICAgIGNvbnN0IHVucmVnaXN0ZXJWYWx1ZVR5cGUgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZVR5cGUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlVHlwZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlVHlwZVJlZi5jdXJyZW50W25hbWVdID09PSB2YWx1ZVR5cGUpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVR5cGVSZWYuY3VycmVudFtuYW1lXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG9uRmluaXNoUmVmID0gdXNlTGF0ZXN0KG9uRmluaXNoKTtcbiAgICBjb25zdCBvbkluaXRSZWYgPSB1c2VMYXRlc3Qob25Jbml0KTtcbiAgICBjb25zdCBvbkxvYWRpbmdDaGFuZ2VSZWYgPSB1c2VMYXRlc3Qob25Mb2FkaW5nQ2hhbmdlKTtcbiAgICAvLyBTdWJtaXQgcGlwZWxpbmU6IGRhdGVzIOKGkiBmaWVsZCB0cmFuc2Zvcm1zIOKGkiBvbWl0TmlsXG4gICAgY29uc3QgYXBwbHlQaXBlbGluZSA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZm9ybWF0RGF0ZVZhbHVlcyh2YWx1ZXMsIGRhdGVGb3JtYXR0ZXIsIHZhbHVlVHlwZVJlZi5jdXJyZW50KTtcbiAgICAgICAgcmVzdWx0ID0gdHJhbnNmb3JtU3VibWl0VmFsdWVzKHJlc3VsdCwgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAob21pdE5pbClcbiAgICAgICAgICAgIHJlc3VsdCA9IG9taXROaWxWYWx1ZXMocmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgICAvLyBTYW1lIHBpcGVsaW5lIFdJVEhPVVQgb21pdE5pbCDigJQgc2luZ2xlLWZpZWxkIHJlYWRlcnMgbXVzdCBub3Qgc2VlIGEgZmllbGRcbiAgICAvLyB2YW5pc2gganVzdCBiZWNhdXNlIGl0cyBjdXJyZW50IHZhbHVlIGlzIGVtcHR5LlxuICAgIGNvbnN0IGZvcm1hdFZhbHVlc0tlZXBOaWwgPSB1c2VNZW1vaXplZEZuKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZm9ybWF0RGF0ZVZhbHVlcyh2YWx1ZXMsIGRhdGVGb3JtYXR0ZXIsIHZhbHVlVHlwZVJlZi5jdXJyZW50KTtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVN1Ym1pdFZhbHVlcyhyZXN1bHQsIHRyYW5zZm9ybUtleVJlZi5jdXJyZW50KTtcbiAgICB9KTtcbiAgICAvLyDilIDilIAgVVJMIHN5bmMgKHN5bmNUb1VybCAvIHN5bmNUb1VybEFzSW1wb3J0YW50IC8gZXh0cmFVcmxQYXJhbXMpIOKUgOKUgFxuICAgIGNvbnN0IHsgdXJsSW5pdGlhbFZhbHVlcywgb25VcmxTeW5jRmluaXNoLCBvblVybFN5bmNSZXNldCB9ID0gdXNlVXJsU3luYyh7XG4gICAgICAgIHN5bmNUb1VybCxcbiAgICAgICAgZXh0cmFVcmxQYXJhbXMsXG4gICAgfSk7XG4gICAgLy8gaW5pdGlhbFZhbHVlcyBpcyBNT1VOVC1PTkxZIChkb2N1bWVudGVkIGNvbnRyYWN0OyB1c2VGb3JtQ29yZSByZS1mcmVlemVzXG4gICAgLy8gYXMgYSBzYWZldHkgbmV0KSDigJQgY29tcHV0ZSB0aGUgVVJMIG1lcmdlIG9uY2Ugc28gdGhlIGZyZWV6ZSBpcyB2aXNpYmxlXG4gICAgLy8gd2hlcmUgdGhlIHByb3BzIGVudGVyLCBpbnN0ZWFkIG9mIHJlY29tcHV0aW5nIGRlYWQgc3ByZWFkcyBwZXIgcmVuZGVyLlxuICAgIGNvbnN0IG1lcmdlZEluaXRpYWxWYWx1ZXNSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgaWYgKG1lcmdlZEluaXRpYWxWYWx1ZXNSZWYuY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICBtZXJnZWRJbml0aWFsVmFsdWVzUmVmLmN1cnJlbnQgPSBzeW5jVG9VcmxcbiAgICAgICAgICAgID8gKHN5bmNUb1VybEFzSW1wb3J0YW50XG4gICAgICAgICAgICAgICAgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGluaXRpYWxWYWx1ZXMpLCB1cmxJbml0aWFsVmFsdWVzKSA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdXJsSW5pdGlhbFZhbHVlcyksIGluaXRpYWxWYWx1ZXMpKVxuICAgICAgICAgICAgOiAoaW5pdGlhbFZhbHVlcyAhPT0gbnVsbCAmJiBpbml0aWFsVmFsdWVzICE9PSB2b2lkIDAgPyBpbml0aWFsVmFsdWVzIDoge30pO1xuICAgIH1cbiAgICBjb25zdCBtZXJnZWRJbml0aWFsVmFsdWVzID0gbWVyZ2VkSW5pdGlhbFZhbHVlc1JlZi5jdXJyZW50O1xuICAgIC8vIEJ1bXBlZCBvbiBldmVyeSByZXNldCDigJQgYW4gaW4tZmxpZ2h0IHN1Ym1pdCBjYXB0dXJlcyBpdCBhbmQgYWJvcnRzIHdoZW5cbiAgICAvLyBpdCBjaGFuZ2VkIHVuZGVybmVhdGggKHRoZSB1c2VyIGRpc2NhcmRlZCB0aGUgc3VibWlzc2lvbidzIHZhbHVlcykuXG4gICAgY29uc3QgcmVzZXRFcG9jaFJlZiA9IHVzZVJlZigwKTtcbiAgICAvLyBSZXNldCBjaGFpbjogZm9ybS1sZXZlbCBvblJlc2V0IHJlY2VpdmVzIHRoZSAocG9zdC1yZXNldCkgZm9ybWF0dGVkXG4gICAgLy8gdmFsdWVzLCB0aGVuIHRoZSBmb3JtJ3Mgb3duIFVSTCBwYXJhbXMgYXJlIGNsZWFyZWQuIHVzZU1lbW9pemVkRm4gZGVmZXJzXG4gICAgLy8gZXhlY3V0aW9uIHRvIGV2ZW50IHRpbWUsIHdoZW4gYGZvcm1JbnN0YW5jZWAgKGNyZWF0ZWQganVzdCBiZWxvdykgZXhpc3RzLlxuICAgIGNvbnN0IGZpcmVGb3JtUmVzZXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgcmVzZXRFcG9jaFJlZi5jdXJyZW50ICs9IDE7XG4gICAgICAgIGNvbnN0IGZpbmFsVmFsdWVzID0gYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSk7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldChmaW5hbFZhbHVlcyk7XG4gICAgICAgIG9uVXJsU3luY1Jlc2V0KCk7XG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIEZvcm0gZW5naW5lICh1c2VGb3JtIHdpdGggYXN5bmMgdmFsaWRhdGlvbikg4pSA4pSAXG4gICAgY29uc3QgeyBmb3JtSW5zdGFuY2UsIGludGVybmFscywgc3RvcmUgfSA9IHVzZUZvcm0oe1xuICAgICAgICBpbml0aWFsVmFsdWVzOiBtZXJnZWRJbml0aWFsVmFsdWVzLFxuICAgICAgICBvblZhbHVlc0NoYW5nZSxcbiAgICAgICAgb25SZXNldDogZmlyZUZvcm1SZXNldCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICB9KTtcbiAgICAvLyDilIDilIAgQXN5bmMgc3VibWl0IHdpdGggdHJhbnNmb3JtIHBpcGVsaW5lIOKUgOKUgFxuICAgIC8vIFJlLWVudHJ5IGd1YXJkOiBhIHNlY29uZCBzdWJtaXQgd2hpbGUgb25lIGlzIGluIGZsaWdodCBpcyBpZ25vcmVkICh0aGVcbiAgICAvLyByZWYgY2F0Y2hlcyB0d28gY2FsbHMgaW4gdGhlIHNhbWUgdGljaykuXG4gICAgY29uc3Qgd3JhcHBlZEhhbmRsZVN1Ym1pdCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzdWJtaXR0aW5nUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN1Ym1pdHRpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHNldFN1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgICAgIChfYSA9IG9uTG9hZGluZ0NoYW5nZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChvbkxvYWRpbmdDaGFuZ2VSZWYsIHRydWUpO1xuICAgICAgICBjb25zdCBlcG9jaCA9IHJlc2V0RXBvY2hSZWYuY3VycmVudDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZFZhbHVlcyA9IHlpZWxkIGZvcm1JbnN0YW5jZS52YWxpZGF0ZUZpZWxkcygpO1xuICAgICAgICAgICAgLy8gQSByZXNldCBkdXJpbmcgKGFzeW5jKSB2YWxpZGF0aW9uIGRpc2NhcmRzIHRoaXMgc3VibWlzc2lvbiBlbnRpcmVseTpcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlRmllbGRzIHJlLXJlYWRzIHRoZSBsaXZlIHN0b3JlLCBzbyBwcm9jZWVkaW5nIHdvdWxkIGhhbmRcbiAgICAgICAgICAgIC8vIG9uRmluaXNoIHRoZSBQT1NULXJlc2V0IHZhbHVlcy5cbiAgICAgICAgICAgIGlmIChlcG9jaCAhPT0gcmVzZXRFcG9jaFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHBpcGVsaW5lZCA9IGFwcGx5UGlwZWxpbmUodmFsaWRhdGVkVmFsdWVzKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkICgoX2IgPSBvbkZpbmlzaFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChvbkZpbmlzaFJlZiwgcGlwZWxpbmVkKSk7XG4gICAgICAgICAgICAvLyBTeW5jIHRoZSBVUkwgdW5sZXNzIG9uRmluaXNoIGV4cGxpY2l0bHkgcmV0dXJuZWQgZmFsc2UgKGEgdGhyb3cgYWJvdmVcbiAgICAgICAgICAgIC8vIGFsc28gc2tpcHMg4oCUIGEgZmFpbGVkIHN1Ym1pdCBtdXN0IG5vdCBwb2xsdXRlIHRoZSBVUkwpLCBhbmQgb25seSBpZlxuICAgICAgICAgICAgLy8gdGhlIHVzZXIgZGlkIE5PVCByZXNldCB0aGUgZm9ybSB3aGlsZSB0aGUgc3VibWl0IHdhcyBpbiBmbGlnaHQuXG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBmYWxzZSAmJiBlcG9jaCA9PT0gcmVzZXRFcG9jaFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgb25VcmxTeW5jRmluaXNoKHBpcGVsaW5lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gQSByZXNldCBkdXJpbmcgdmFsaWRhdGlvbiBhbHNvIGludmFsaWRhdGVzIHRoZSBGQUlMVVJFIGNhbGxiYWNrIOKAlFxuICAgICAgICAgICAgLy8gdGhlIGVycm9yIGNhcnJpZXMgcG9zdC1yZXNldCB2YWx1ZXMgZm9yIGEgZGlzY2FyZGVkIHN1Ym1pc3Npb24uXG4gICAgICAgICAgICAvLyAoRmllbGQgZXJyb3JzIGZyb20gdGhlIGRlYWQgdmFsaWRhdGlvbiBhcmUgc3VwcHJlc3NlZCBieSB0aGVcbiAgICAgICAgICAgIC8vIHBlci1maWVsZCB2YWxpZGF0aW9uIGVwb2NoczogcmVzZXRGaWVsZHMgaW52YWxpZGF0ZXMgaW4tZmxpZ2h0IHJ1bnMuKVxuICAgICAgICAgICAgaWYgKGVwb2NoICE9PSByZXNldEVwb2NoUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgLy8gT25seSBhIFZBTElEQVRJT04gZmFpbHVyZSByb3V0ZXMgdG8gb25GaW5pc2hGYWlsZWQuIEFuIGV4Y2VwdGlvbiBvdXRcbiAgICAgICAgICAgIC8vIG9mIHRoZSBjb25zdW1lcidzIG93biBvbkZpbmlzaCBpcyBub3QgYSB2YWxpZGF0aW9uIHJlc3VsdDogdGhlIHN1Ym1pdFxuICAgICAgICAgICAgLy8gZmFpbHMgKFVSTCB1bnRvdWNoZWQsIG92ZXJsYXkgc3RheXMgb3BlbikgYW5kIHRoZSBlcnJvciBpcyBzdXJmYWNlZFxuICAgICAgICAgICAgLy8gb24gdGhlIGNvbnNvbGUgaW5zdGVhZCBvZiBiZWluZyBtaXNyZXBvcnRlZCB3aXRoIGFuIGVtcHR5IHBheWxvYWQuXG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRm9ybVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIG9uRmluaXNoRmFpbGVkID09PSBudWxsIHx8IG9uRmluaXNoRmFpbGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaEZhaWxlZCh7IHZhbHVlczogZXJyLnZhbHVlcywgZXJyb3JzOiBlcnIuZXJyb3JzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1Byb0Zvcm1dIG9uRmluaXNoIHRocmV3IGR1cmluZyBzdWJtaXQ6JywgZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHN1Ym1pdHRpbmdSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgc2V0U3VibWl0dGluZyhmYWxzZSk7XG4gICAgICAgICAgICAoX2MgPSBvbkxvYWRpbmdDaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmNhbGwob25Mb2FkaW5nQ2hhbmdlUmVmLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgLy8g4pSA4pSAIFByb0Zvcm0gaW5zdGFuY2U6IHN1cGVyc2V0IG9mIEZvcm1JbnN0YW5jZSDilIDilIBcbiAgICBjb25zdCBwcm9Gb3JtRm9ybUluc3RhbmNlID0gdXNlTWVtbygoKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmb3JtSW5zdGFuY2UpLCB7IGdldEZpZWxkc0Zvcm1hdFZhbHVlOiAoKSA9PiBhcHBseVBpcGVsaW5lKGZvcm1JbnN0YW5jZS5nZXRGaWVsZHNWYWx1ZSgpKSwgZ2V0RmllbGRGb3JtYXRWYWx1ZTogKG5hbWUpID0+IHJlc29sdmVWYWx1ZShmb3JtYXRWYWx1ZXNLZWVwTmlsKGZvcm1JbnN0YW5jZS5nZXRGaWVsZHNWYWx1ZSgpKSwgbmFtZSksIGdldEZpZWxkRm9ybWF0VmFsdWVPYmplY3Q6IChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXRWYWx1ZXNLZWVwTmlsKGZvcm1JbnN0YW5jZS5nZXRGaWVsZHNWYWx1ZSgpKTtcbiAgICAgICAgICAgIGlmICghbmFtZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkO1xuICAgICAgICAgICAgLy8gQSBuZXN0ZWQgb2JqZWN0IGNhcnJ5aW5nIE9OTFkgdGhlIHJlcXVlc3RlZCBsZWFmIOKAlCBub3QgdGhlIHdob2xlXG4gICAgICAgICAgICAvLyB0b3AtbGV2ZWwgc3VidHJlZSB0aGUgcGF0aCBoYXBwZW5zIHRvIGxpdmUgaW4uXG4gICAgICAgICAgICByZXR1cm4gc2V0TmVzdGVkVmFsdWUoe30sIG5hbWUsIHJlc29sdmVWYWx1ZShmb3JtYXR0ZWQsIG5hbWUpKTtcbiAgICAgICAgfSwgdmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZTogKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHMgPSB5aWVsZCBmb3JtSW5zdGFuY2UudmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCB2YWx1ZXM6IGFwcGx5UGlwZWxpbmUodmFscykgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0ZUZpZWxkcyByZWplY3RzIHdpdGggYW4gRXJyb3IgY2FycnlpbmcgdGhlIGZpZWxkIGVycm9ycyBtYXBcbiAgICAgICAgICAgICAgICAvLyAoc2FtZSBzaGFwZSB3cmFwcGVkSGFuZGxlU3VibWl0IGNvbnN1bWVzIGFib3ZlKS5cbiAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycyB9ID0gZXJyO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcnM6IGVycm9ycyAhPT0gbnVsbCAmJiBlcnJvcnMgIT09IHZvaWQgMCA/IGVycm9ycyA6IHt9IH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLCBzdWJtaXRGb3JtOiB3cmFwcGVkSGFuZGxlU3VibWl0IH0pKSwgW2Zvcm1JbnN0YW5jZSwgYXBwbHlQaXBlbGluZSwgd3JhcHBlZEhhbmRsZVN1Ym1pdF0pO1xuICAgIC8vIOKUgOKUgCBTeW5jIHRvIGZvcm1SZWYgcHJvcCDilIDilIBcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoZm9ybVJlZikge1xuICAgICAgICAgICAgZm9ybVJlZi5jdXJyZW50ID0gcHJvRm9ybUZvcm1JbnN0YW5jZTtcbiAgICAgICAgfVxuICAgIH0sIFtmb3JtUmVmLCBwcm9Gb3JtRm9ybUluc3RhbmNlXSk7XG4gICAgLy8g4pSA4pSAIHJlcXVlc3QgLyBwYXJhbXMgYXV0by1sb2FkIOKUgOKUgFxuICAgIGNvbnN0IHJlcXVlc3RSZWYgPSB1c2VMYXRlc3QocmVxdWVzdCk7XG4gICAgY29uc3QgaGFzUmVxdWVzdCA9ICEhcmVxdWVzdDtcbiAgICBjb25zdCBzZXJpYWxpemVkUGFyYW1zID0gdXNlTWVtbygoKSA9PiBzdGFibGVTZXJpYWxpemUocGFyYW1zKSwgW3BhcmFtc10pO1xuICAgIC8vIG9uSW5pdCBmaXJlcyBleGFjdGx5IG9uY2U6IGFmdGVyIHRoZSBGSVJTVCByZXF1ZXN0IHJlc29sdmVzIHdoZW4gYVxuICAgIC8vIHJlcXVlc3QgaXMgY29uZmlndXJlZCwgb3RoZXJ3aXNlIHJpZ2h0IGFmdGVyIG1vdW50LlxuICAgIGNvbnN0IGluaXRGaXJlZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgZmlyZUluaXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaW5pdEZpcmVkUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRGaXJlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgKF9hID0gb25Jbml0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9uSW5pdFJlZiwgYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIHByb0Zvcm1Gb3JtSW5zdGFuY2UpO1xuICAgIH0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIFN0YWxlbmVzcyBndWFyZDogaWYgcGFyYW1zIGNoYW5nZSBhZ2FpbiBiZWZvcmUgdGhpcyBmZXRjaCByZXNvbHZlcywgdGhlXG4gICAgICAgIC8vIGNsZWFudXAgbWFya3MgaXQgc3RhbGUgc28gdGhlIGxhdGUgcmVzcG9uc2UgY2FuJ3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZXNcbiAgICAgICAgLy8gYSBuZXdlciByZXF1ZXN0IGFscmVhZHkgKG9yIHdpbGwpIHNldC5cbiAgICAgICAgbGV0IHN0YWxlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGZldGNoRGF0YSA9ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdEZuID0gcmVxdWVzdFJlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKCFyZXF1ZXN0Rm4pXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc2V0UmVxdWVzdExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCByZXF1ZXN0Rm4ocGFyYW1zKTtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YWxlICYmIGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1JbnN0YW5jZS5zZXRGaWVsZHNWYWx1ZShkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQSBmYWlsZWQgcmVxdWVzdCBtdXN0IG5vdCBlc2NhcGUgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiDigJQgdGhlXG4gICAgICAgICAgICAgICAgLy8gZm9ybSBrZWVwcyBpdHMgaW5pdGlhbFZhbHVlcyBhbmQgdGhlIGZhaWx1cmUgaXMgc3VyZmFjZWQgb24gdGhlXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZSAobWlycm9ycyB0aGUgZmllbGQtbGV2ZWwgdXNlRmllbGRSZXF1ZXN0IGhhbmRsaW5nKS5cbiAgICAgICAgICAgICAgICBpZiAoIXN0YWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSByZXF1ZXN0IGZhaWxlZDonLCBlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGlmICghc3RhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVxdWVzdExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGEgTk9OLXN1cGVyc2VkZWQgc2V0dGxlIGluaXRpYWxpemVzIHRoZSBmb3JtOiBhIHN0YWxlXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QncyBkYXRhIHdhcyBkaXNjYXJkZWQsIHNvIGl0cyB2YWx1ZXMgbXVzdCBub3QgYmUgcmVwb3J0ZWQuXG4gICAgICAgICAgICAgICAgICAgIGZpcmVJbml0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlcXVlc3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgZmV0Y2hEYXRhKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmaXJlSW5pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBzdGFsZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIC8vIFJlLWZldGNoIHdoZW4gcGFyYW1zIGNoYW5nZSBieSBWQUxVRSAoZGVwZW5kaW5nIG9uIHRoZSByYXcgYHBhcmFtc2BcbiAgICAgICAgLy8gcmVmZXJlbmNlIHdvdWxkIHJlLXJ1biBvbiBldmVyeSByZW5kZXIgZm9yIGlubGluZSBvYmplY3QgbGl0ZXJhbHMgYW5kLFxuICAgICAgICAvLyBjb21iaW5lZCB3aXRoIHRoZSBsb2FkaW5nIHNldFN0YXRlLCBsb29wIGZvcmV2ZXIpIOKAlCBhbmQgd2hlbiBgcmVxdWVzdGBcbiAgICAgICAgLy8gZmlyc3QgYmVjb21lcyBkZWZpbmVkIChlLmcuIGJlaGluZCBhIGZlYXR1cmUgZmxhZyksIG1pcnJvcmluZ1xuICAgICAgICAvLyB1c2VGaWVsZFJlcXVlc3QuIGZpcmVJbml0J3Mgb25jZS1ndWFyZCBrZWVwcyBvbkluaXQgZnJvbSByZS1maXJpbmcuXG4gICAgfSwgW3NlcmlhbGl6ZWRQYXJhbXMsIGhhc1JlcXVlc3RdKTtcbiAgICAvLyDilIDilIAgYXV0b0ZvY3VzRmlyc3RJbnB1dCDilIDilIBcbiAgICBjb25zdCBmb3JtRWxSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIWF1dG9Gb2N1c0ZpcnN0SW5wdXQgfHwgbW9kZSA9PT0gJ3JlYWQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBmaXJzdElucHV0ID0gKF9hID0gZm9ybUVsUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5xdWVyeVNlbGVjdG9yKCdpbnB1dDpub3QoW3R5cGU9XCJoaWRkZW5cIl0pOm5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLCBzZWxlY3Q6bm90KFtkaXNhYmxlZF0pJyk7XG4gICAgICAgIGZpcnN0SW5wdXQgPT09IG51bGwgfHwgZmlyc3RJbnB1dCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmlyc3RJbnB1dC5mb2N1cygpO1xuICAgICAgICAvLyBNb3VudC1vbmx5IGJ5IGRlc2lnbi5cbiAgICB9LCBbXSk7XG4gICAgLy8g4pSA4pSAIFNwbGl0IGNvbnRleHQg4pSA4pSAXG4gICAgLy8gRm9ybS1sZXZlbCBwcm9wIGJhZ3MgYXJlIG9mdGVuIGlubGluZSBsaXRlcmFsczoga2VlcCB0aGVpciBpZGVudGl0eVxuICAgIC8vIHN0YWJsZSB3aGlsZSBzaGFsbG93LWVxdWFsIHNvIHRoZSBzdGFibGUgc2xpY2UgZG9lc24ndCBjaHVybiBwZXIgcmVuZGVyLlxuICAgIGNvbnN0IHN0YWJsZUZpZWxkUHJvcHMgPSB1c2VTaGFsbG93U3RhYmxlKGZpZWxkUHJvcHMpO1xuICAgIGNvbnN0IHN0YWJsZUZvcm1JdGVtUHJvcHMgPSB1c2VTaGFsbG93U3RhYmxlKGZvcm1JdGVtUHJvcHMpO1xuICAgIGNvbnN0IHN0YWJsZUNvbFByb3BzID0gdXNlU2hhbGxvd1N0YWJsZShjb2xQcm9wcyk7XG4gICAgY29uc3Qgc3RhYmxlTGF5b3V0ID0gdXNlU2hhbGxvd1N0YWJsZShsYXlvdXQpO1xuICAgIC8vIFN0YWJsZSBzbGljZTogY29uZmlndXJhdGlvbiArIGlkZW50aXR5LXN0YWJsZSBkaXNwYXRjaGVycy9pbnN0YW5jZS5cbiAgICAvLyBDaGFuZ2VzIG9ubHkgd2hlbiBmb3JtLWxldmVsIHByb3BzIGNoYW5nZSDigJQgTk9UIG9uIGtleXN0cm9rZXMsIHNvXG4gICAgLy8gc3Vic2NyaWJlcnMgbGlrZSBTdWJtaXR0ZXIgYW5kIHRoZSBmaWVsZCBmYWN0b3JpZXMgc2tpcCB0aG9zZSByZW5kZXJzLlxuICAgIGNvbnN0IHN0YWJsZVZhbHVlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBmb3JtSW5zdGFuY2U6IHByb0Zvcm1Gb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWU6IGludGVybmFscy5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yOiBpbnRlcm5hbHMuc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nOiBpbnRlcm5hbHMuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkOiBpbnRlcm5hbHMudmFsaWRhdGVGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jOiBpbnRlcm5hbHMudmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICByZWdpc3RlckZpZWxkOiBpbnRlcm5hbHMucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkOiBpbnRlcm5hbHMudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICByZXRhaW5GaWVsZDogaW50ZXJuYWxzLnJldGFpbkZpZWxkLFxuICAgICAgICByZWxlYXNlRmllbGQ6IGludGVybmFscy5yZWxlYXNlRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIC8vIFN1Ym1pdHRpbmcvbG9hZGluZyBkb2VzIE5PVCBkaXNhYmxlIGZpZWxkcyDigJQgb25seSB0aGVcbiAgICAgICAgLy8gZXhwbGljaXQgYGRpc2FibGVkYCBwcm9wIGRvZXMuIEtlZXBpbmcgaXNMb2FkaW5nIG91dCBvZiB0aGlzIHNsaWNlXG4gICAgICAgIC8vIG1lYW5zIGEgc3VibWl0IGN5Y2xlIG5vIGxvbmdlciByZS1yZW5kZXJzIGV2ZXJ5IGZpZWxkIHNoZWxsLlxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgICAgICAvLyBQcm9Gb3JtIHNwZWNpZmljc1xuICAgICAgICBtb2RlLFxuICAgICAgICBncmlkLFxuICAgICAgICBjb2xQcm9wczogc3RhYmxlQ29sUHJvcHMgIT09IG51bGwgJiYgc3RhYmxlQ29sUHJvcHMgIT09IHZvaWQgMCA/IHN0YWJsZUNvbFByb3BzIDogREVGQVVMVF9DT0xfUFJPUFMsXG4gICAgICAgIHJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICB1bnJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICByZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgdW5yZWdpc3RlclZhbHVlVHlwZSxcbiAgICAgICAgZmllbGRQcm9wczogc3RhYmxlRmllbGRQcm9wcyxcbiAgICAgICAgZm9ybUl0ZW1Qcm9wczogc3RhYmxlRm9ybUl0ZW1Qcm9wcyxcbiAgICAgICAgbGF5b3V0OiBzdGFibGVMYXlvdXQsXG4gICAgICAgIGZvcm1Db21wb25lbnRUeXBlLFxuICAgIH0pLCBbXG4gICAgICAgIHByb0Zvcm1Gb3JtSW5zdGFuY2UsXG4gICAgICAgIGludGVybmFscy5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBpbnRlcm5hbHMuc2V0RmllbGRFcnJvcixcbiAgICAgICAgaW50ZXJuYWxzLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgaW50ZXJuYWxzLnZhbGlkYXRlRmllbGQsXG4gICAgICAgIGludGVybmFscy52YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIGludGVybmFscy5yZWdpc3RlckZpZWxkLFxuICAgICAgICBpbnRlcm5hbHMudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBpbnRlcm5hbHMucmV0YWluRmllbGQsXG4gICAgICAgIGludGVybmFscy5yZWxlYXNlRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgICAgIG1vZGUsXG4gICAgICAgIGdyaWQsXG4gICAgICAgIHN0YWJsZUNvbFByb3BzLFxuICAgICAgICByZWdpc3RlclRyYW5zZm9ybSxcbiAgICAgICAgdW5yZWdpc3RlclRyYW5zZm9ybSxcbiAgICAgICAgcmVnaXN0ZXJWYWx1ZVR5cGUsXG4gICAgICAgIHVucmVnaXN0ZXJWYWx1ZVR5cGUsXG4gICAgICAgIHN0YWJsZUZpZWxkUHJvcHMsXG4gICAgICAgIHN0YWJsZUZvcm1JdGVtUHJvcHMsXG4gICAgICAgIHN0YWJsZUxheW91dCxcbiAgICAgICAgZm9ybUNvbXBvbmVudFR5cGUsXG4gICAgXSk7XG4gICAgY29uc3QgV3JhcHBlckNvbXBvbmVudCA9IGdyaWQgPyBSb3cgOiBGcmFnbWVudDtcbiAgICBjb25zdCB3cmFwcGVyUHJvcHMgPSBncmlkID8gT2JqZWN0LmFzc2lnbih7fSwgcm93UHJvcHMpIDoge307XG4gICAgLy8gUmVzZXQgY2FsbGJhY2sgY2hhaW46IHRoZSBTdWJtaXR0ZXIgcmVzZXRzIHRoZSB2YWx1ZXMgZmlyc3QsIHRoZW4gdGhlXG4gICAgLy8gc3VibWl0dGVyLWxldmVsIG9uUmVzZXQsIHRoZW4gdGhlIGZvcm0tbGV2ZWwgb25SZXNldCAod2l0aCBmaW5hbFZhbHVlcylcbiAgICAvLyBhbmQgdGhlIFVSTCBjbGVhbnVwIOKAlCBmaXJlZCBleGFjdGx5IG9uY2UgcGVyIHJlc2V0IGFjdGlvbi5cbiAgICBjb25zdCBoYW5kbGVTdWJtaXR0ZXJSZXNldCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh0eXBlb2Ygc3VibWl0dGVyID09PSAnb2JqZWN0JylcbiAgICAgICAgICAgIChfYSA9IHN1Ym1pdHRlci5vblJlc2V0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzdWJtaXR0ZXIpO1xuICAgICAgICBmaXJlRm9ybVJlc2V0KCk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3VibWl0dGVyTm9kZSA9IHN1Ym1pdHRlciAhPT0gZmFsc2UgJiYgbW9kZSAhPT0gJ3JlYWQnID8gKF9qc3goU3VibWl0dGVyLCBPYmplY3QuYXNzaWduKHt9LCAodHlwZW9mIHN1Ym1pdHRlciA9PT0gJ29iamVjdCcgPyBzdWJtaXR0ZXIgOiB7fSksIHsgb25SZXNldDogaGFuZGxlU3VibWl0dGVyUmVzZXQsIGxvYWRpbmc6IGlzTG9hZGluZyB9KSkpIDogbnVsbDtcbiAgICByZXR1cm4gKF9qc3goUHJvRm9ybVN0YWJsZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHN0YWJsZVZhbHVlLCBjaGlsZHJlbjogX2pzeChQcm9Gb3JtU3RhdGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBzdG9yZSwgY2hpbGRyZW46IF9qc3hzKFwiZm9ybVwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogZm9ybUVsUmVmLCBjbGFzc05hbWU6IGZvcm1DbGFzc2VzKHVuZGVmaW5lZCwgam9pbkNscyhjbGFzc2VzKCksIGNsYXNzTmFtZSkpLCBvblN1Ym1pdDogd3JhcHBlZEhhbmRsZVN1Ym1pdCwgb25SZXNldDogaW50ZXJuYWxzLmhhbmRsZVJlc2V0LCBjaGlsZHJlbjogW19qc3goV3JhcHBlckNvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgd3JhcHBlclByb3BzLCB7IGNoaWxkcmVuOiBjaGlsZHJlbiB9KSksIHN1Ym1pdHRlck5vZGVdIH0pKSB9KSB9KSk7XG59O1xuUHJvRm9ybUJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybSc7XG5leHBvcnQgY29uc3QgUHJvRm9ybSA9IG1lbW8oUHJvRm9ybUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -1,29 +1,20 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import React, { memo, useMemo } from 'react';
|
|
3
|
-
import { useProFormStable, useProFormStore
|
|
3
|
+
import { useProFormStable, useProFormStore } from './context';
|
|
4
4
|
import { useStoreSelector, shallowEqualArrays } from './core/formStore';
|
|
5
5
|
import { getNestedValue } from './utils';
|
|
6
6
|
var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
|
|
7
7
|
var name = _ref.name,
|
|
8
|
-
ignoreFormListField = _ref.ignoreFormListField,
|
|
9
8
|
children = _ref.children;
|
|
10
9
|
var _useProFormStable = useProFormStable(),
|
|
11
10
|
formInstance = _useProFormStable.formInstance;
|
|
12
11
|
var store = useProFormStore();
|
|
13
|
-
var formListCtx = useFormListContext();
|
|
14
|
-
// Resolve the actual paths to watch, considering FormList scope
|
|
15
|
-
var resolvedPaths = useMemo(function () {
|
|
16
|
-
var shouldPrefix = !ignoreFormListField && formListCtx.listName !== undefined;
|
|
17
|
-
return name.map(function (fieldName) {
|
|
18
|
-
return shouldPrefix ? "".concat(formListCtx.listName, ".").concat(fieldName) : fieldName;
|
|
19
|
-
});
|
|
20
|
-
}, [name, ignoreFormListField, formListCtx.listName]);
|
|
21
12
|
// Subscribe ONLY to the watched paths: a commit that leaves every watched
|
|
22
13
|
// value Object.is-equal short-circuits, so children are NOT re-invoked when
|
|
23
14
|
// unrelated fields change. Reactivity tracks the RAW values; the payload
|
|
24
15
|
// below is derived from the FORMATTED values.
|
|
25
16
|
var watchedArray = useStoreSelector(store, function (state) {
|
|
26
|
-
return
|
|
17
|
+
return name.map(function (path) {
|
|
27
18
|
return path.includes('.') ? getNestedValue(state.values, path) : state.values[path];
|
|
28
19
|
});
|
|
29
20
|
}, shallowEqualArrays);
|
|
@@ -35,17 +26,16 @@ var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
|
|
|
35
26
|
var formatted = formInstance.getFieldFormatValueObject();
|
|
36
27
|
var result = {};
|
|
37
28
|
for (var i = 0; i < name.length; i++) {
|
|
38
|
-
|
|
39
|
-
var path = resolvedPaths[i];
|
|
29
|
+
var path = name[i];
|
|
40
30
|
var value = watchedArray[i];
|
|
41
31
|
var formattedValue = path.includes('.') ? getNestedValue(formatted, path) : path in formatted ? formatted[path] : undefined;
|
|
42
32
|
if (formattedValue !== undefined) {
|
|
43
33
|
value = formattedValue;
|
|
44
34
|
}
|
|
45
|
-
result[
|
|
35
|
+
result[path] = value;
|
|
46
36
|
}
|
|
47
37
|
return result;
|
|
48
|
-
}, [name,
|
|
38
|
+
}, [name, watchedArray, formInstance]);
|
|
49
39
|
return _jsx(_Fragment, {
|
|
50
40
|
children: children(watchedValues, formInstance)
|
|
51
41
|
});
|
|
@@ -53,4 +43,4 @@ var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
|
|
|
53
43
|
ProFormDependencyBase.displayName = 'ProFormDependency';
|
|
54
44
|
export var ProFormDependency = /*#__PURE__*/memo(ProFormDependencyBase);
|
|
55
45
|
export default ProFormDependency;
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3giLCJfanN4IiwiUmVhY3QiLCJtZW1vIiwidXNlTWVtbyIsInVzZVByb0Zvcm1TdGFibGUiLCJ1c2VQcm9Gb3JtU3RvcmUiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsQXJyYXlzIiwiZ2V0TmVzdGVkVmFsdWUiLCJQcm9Gb3JtRGVwZW5kZW5jeUJhc2UiLCJfcmVmIiwibmFtZSIsImNoaWxkcmVuIiwiX3VzZVByb0Zvcm1TdGFibGUiLCJmb3JtSW5zdGFuY2UiLCJzdG9yZSIsIndhdGNoZWRBcnJheSIsInN0YXRlIiwibWFwIiwicGF0aCIsImluY2x1ZGVzIiwidmFsdWVzIiwid2F0Y2hlZFZhbHVlcyIsImZvcm1hdHRlZCIsImdldEZpZWxkRm9ybWF0VmFsdWVPYmplY3QiLCJyZXN1bHQiLCJpIiwibGVuZ3RoIiwidmFsdWUiLCJmb3JtYXR0ZWRWYWx1ZSIsInVuZGVmaW5lZCIsImRpc3BsYXlOYW1lIiwiUHJvRm9ybURlcGVuZGVuY3kiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsSUFBSUMsU0FBUyxFQUFFQyxHQUFHLElBQUlDLElBQUksUUFBUSxtQkFBbUI7QUNBdEUsT0FBT0MsS0FBSyxJQUFJQyxJQUFJLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBRTVDLFNBQVNDLGdCQUFnQixFQUFFQyxlQUFlLFFBQVEsV0FBVztBQUM3RCxTQUFTQyxnQkFBZ0IsRUFBRUMsa0JBQWtCLFFBQVEsa0JBQWtCO0FBQ3ZFLFNBQVNDLGNBQWMsUUFBUSxTQUFTO0FBR3hDLElBQU1DLHFCQUFxQixHQUErQixTQUFwREEscUJBQXFCQSxDQUFBQyxJQUFBLEVBR3RCO0VBQUEsSUFGSEMsSUFBSSxHQUFBRCxJQUFBLENBQUpDLElBQUk7SUFDSkMsUUFBUSxHQUFBRixJQUFBLENBQVJFLFFBQVE7RUFFUixJQUFBQyxpQkFBQSxHQUF5QlQsZ0JBQWdCLENBQUEsQ0FBRTtJQUFuQ1UsWUFBWSxHQUFBRCxpQkFBQSxDQUFaQyxZQUFZO0VBQ3BCLElBQU1DLEtBQUssR0FBR1YsZUFBZSxDQUFBLENBQUU7RUFFL0I7RUFDQTtFQUNBO0VBQ0E7RUFDQSxJQUFNVyxZQUFZLEdBQUdWLGdCQUFnQixDQUNuQ1MsS0FBSyxFQUNMLFVBQUNFLEtBQUs7SUFBQSxPQUNKTixJQUFJLENBQUNPLEdBQUcsQ0FBQyxVQUFDQyxJQUFJO01BQUEsT0FDWkEsSUFBSSxDQUFDQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUdaLGNBQWMsQ0FBQ1MsS0FBSyxDQUFDSSxNQUFNLEVBQUVGLElBQUksQ0FBQyxHQUFHRixLQUFLLENBQUNJLE1BQU0sQ0FBQ0YsSUFBSSxDQUFDO0lBQUEsRUFDN0U7RUFBQSxHQUNIWixrQkFBa0IsQ0FDbkI7RUFFRCxJQUFNZSxhQUFhLEdBQUduQixPQUFPLENBQUMsWUFBSztJQUNqQztJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQU1vQixTQUFTLEdBQUdULFlBQVksQ0FBQ1UseUJBQXlCLENBQUEsQ0FBRTtJQUMxRCxJQUFNQyxNQUFNLEdBQTRCLENBQUEsQ0FBRTtJQUMxQyxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR2YsSUFBSSxDQUFDZ0IsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtNQUNwQyxJQUFNUCxJQUFJLEdBQUdSLElBQUksQ0FBQ2UsQ0FBQyxDQUFDO01BQ3BCLElBQUlFLEtBQUssR0FBWVosWUFBWSxDQUFDVSxDQUFDLENBQUM7TUFDcEMsSUFBTUcsY0FBYyxHQUFHVixJQUFJLENBQUNDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FDckNaLGNBQWMsQ0FBQ2UsU0FBUyxFQUFFSixJQUFJLENBQUMsR0FDOUJBLElBQUksSUFBSUksU0FBUyxHQUFHQSxTQUFTLENBQUNKLElBQUksQ0FBQyxHQUFHVyxTQUFVO01BQ3JELElBQUlELGNBQWMsS0FBS0MsU0FBUyxFQUFFO1FBQ2hDRixLQUFLLEdBQUdDLGNBQWM7TUFDeEI7TUFDQUosTUFBTSxDQUFDTixJQUFJLENBQUMsR0FBR1MsS0FBSztJQUN0QjtJQUNBLE9BQU9ILE1BQU07RUFDZixDQUFDLEVBQUUsQ0FBQ2QsSUFBSSxFQUFFSyxZQUFZLEVBQUVGLFlBQVksQ0FBQyxDQUFDO0VBRXRDLE9BQU9kLElBQUEsQ0FBQUYsU0FBQSxFQUFBO0lBQUFjLFFBQUEsRUFBR0EsUUFBUSxDQUFDVSxhQUFhLEVBQUVSLFlBQVk7RUFBQyxDQUFBLENBQUk7QUFDckQsQ0FBQztBQUVETCxxQkFBcUIsQ0FBQ3NCLFdBQVcsR0FBRyxtQkFBbUI7QUFjdkQsT0FBTyxJQUFNQyxpQkFBaUIsZ0JBQUc5QixJQUFJLENBQ25DTyxxQkFBcUIsQ0FDbUI7QUFFMUMsZUFBZXVCLGlCQUFpQiIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vUHJvRm9ybURlcGVuZGVuY3kuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVByb0Zvcm1TdGFibGUsIHVzZVByb0Zvcm1TdG9yZSB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyB1c2VTdG9yZVNlbGVjdG9yLCBzaGFsbG93RXF1YWxBcnJheXMgfSBmcm9tICcuL2NvcmUvZm9ybVN0b3JlJztcbmltcG9ydCB7IGdldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCBQcm9Gb3JtRGVwZW5kZW5jeUJhc2UgPSAoeyBuYW1lLCBjaGlsZHJlbiwgfSkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybUluc3RhbmNlIH0gPSB1c2VQcm9Gb3JtU3RhYmxlKCk7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VQcm9Gb3JtU3RvcmUoKTtcbiAgICAvLyBTdWJzY3JpYmUgT05MWSB0byB0aGUgd2F0Y2hlZCBwYXRoczogYSBjb21taXQgdGhhdCBsZWF2ZXMgZXZlcnkgd2F0Y2hlZFxuICAgIC8vIHZhbHVlIE9iamVjdC5pcy1lcXVhbCBzaG9ydC1jaXJjdWl0cywgc28gY2hpbGRyZW4gYXJlIE5PVCByZS1pbnZva2VkIHdoZW5cbiAgICAvLyB1bnJlbGF0ZWQgZmllbGRzIGNoYW5nZS4gUmVhY3Rpdml0eSB0cmFja3MgdGhlIFJBVyB2YWx1ZXM7IHRoZSBwYXlsb2FkXG4gICAgLy8gYmVsb3cgaXMgZGVyaXZlZCBmcm9tIHRoZSBGT1JNQVRURUQgdmFsdWVzLlxuICAgIGNvbnN0IHdhdGNoZWRBcnJheSA9IHVzZVN0b3JlU2VsZWN0b3Ioc3RvcmUsIChzdGF0ZSkgPT4gbmFtZS5tYXAoKHBhdGgpID0+IHBhdGguaW5jbHVkZXMoJy4nKSA/IGdldE5lc3RlZFZhbHVlKHN0YXRlLnZhbHVlcywgcGF0aCkgOiBzdGF0ZS52YWx1ZXNbcGF0aF0pLCBzaGFsbG93RXF1YWxBcnJheXMpO1xuICAgIGNvbnN0IHdhdGNoZWRWYWx1ZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgLy8gQ2hpbGRyZW4gcmVjZWl2ZSBGT1JNQVRURUQgdmFsdWVzIChkYXRlRm9ybWF0dGVyICsgdHJhbnNmb3JtIGFwcGxpZWQpLFxuICAgICAgICAvLyBtYXRjaGluZyB3aGF0IG9uRmluaXNoIHdvdWxkIHN1Ym1pdCBmb3IgdGhvc2UgZmllbGRzLiBBIHRyYW5zZm9ybSB0aGF0XG4gICAgICAgIC8vIFJFTkFNRVMgaXRzIGtleSBkZWxldGVzIHRoZSBvcmlnaW5hbCBwYXRoIGZyb20gdGhlIGZvcm1hdHRlZCBvYmplY3Qg4oCUXG4gICAgICAgIC8vIGZhbGwgYmFjayB0byB0aGUgcmF3IHZhbHVlIHNvIHRoZSB3YXRjaGVyIHN0aWxsIHNlZXMgdGhlIGZpZWxkLlxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtSW5zdGFuY2UuZ2V0RmllbGRGb3JtYXRWYWx1ZU9iamVjdCgpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gbmFtZVtpXTtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHdhdGNoZWRBcnJheVtpXTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gcGF0aC5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBnZXROZXN0ZWRWYWx1ZShmb3JtYXR0ZWQsIHBhdGgpXG4gICAgICAgICAgICAgICAgOiAocGF0aCBpbiBmb3JtYXR0ZWQgPyBmb3JtYXR0ZWRbcGF0aF0gOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgaWYgKGZvcm1hdHRlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W3BhdGhdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBbbmFtZSwgd2F0Y2hlZEFycmF5LCBmb3JtSW5zdGFuY2VdKTtcbiAgICByZXR1cm4gX2pzeChfRnJhZ21lbnQsIHsgY2hpbGRyZW46IGNoaWxkcmVuKHdhdGNoZWRWYWx1ZXMsIGZvcm1JbnN0YW5jZSkgfSk7XG59O1xuUHJvRm9ybURlcGVuZGVuY3lCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1EZXBlbmRlbmN5JztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtRGVwZW5kZW5jeSA9IG1lbW8oUHJvRm9ybURlcGVuZGVuY3lCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1EZXBlbmRlbmN5OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|