@1money/component-ui 0.0.76 → 0.0.77
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.d.ts +1 -1
- package/es/components/ProForm/ProForm.js +2 -3
- package/es/components/ProForm/ProFormDependency.d.ts +2 -1
- package/es/components/ProForm/ProFormDependency.js +1 -1
- package/es/components/ProForm/ProFormItem.d.ts +7 -2
- package/es/components/ProForm/ProFormItem.js +1 -1
- package/es/components/ProForm/ProFormList.d.ts +6 -1
- package/es/components/ProForm/ProFormList.js +13 -5
- package/es/components/ProForm/SchemaForm.d.ts +1 -1
- package/es/components/ProForm/SchemaForm.js +8 -5
- package/es/components/ProForm/context.d.ts +8 -7
- package/es/components/ProForm/context.js +1 -1
- package/es/components/ProForm/core/constants.d.ts +1 -1
- package/es/components/ProForm/core/constants.js +2 -2
- package/es/components/ProForm/core/formStore.d.ts +4 -4
- package/es/components/ProForm/core/formStore.js +1 -1
- package/es/components/ProForm/core/hooks/useForm.d.ts +1 -1
- package/es/components/ProForm/core/hooks/useForm.js +34 -9
- package/es/components/ProForm/core/hooks/useFormCore.d.ts +2 -2
- package/es/components/ProForm/core/hooks/useFormCore.js +17 -123
- package/es/components/ProForm/core/interface.d.ts +70 -91
- package/es/components/ProForm/core/namePathType.d.ts +25 -0
- package/es/components/ProForm/core/namePathType.js +2 -0
- package/es/components/ProForm/core/pathUtils.d.ts +5 -3
- package/es/components/ProForm/core/pathUtils.js +19 -1
- package/es/components/ProForm/core/runRules.d.ts +8 -17
- package/es/components/ProForm/core/runRules.js +22 -129
- package/es/components/ProForm/core/useFormItem.d.ts +1 -1
- package/es/components/ProForm/core/useFormItem.js +14 -66
- package/es/components/ProForm/core/validationError.d.ts +2 -2
- package/es/components/ProForm/core/validationError.js +1 -1
- package/es/components/ProForm/fields/ProFormCheckbox.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
- package/es/components/ProForm/fields/ProFormDatePicker.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormDatePicker.js +1 -1
- package/es/components/ProForm/fields/ProFormFieldSet.d.ts +7 -2
- package/es/components/ProForm/fields/ProFormFieldSet.js +5 -7
- package/es/components/ProForm/fields/ProFormPassword.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormRadioGroup.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormRadioGroup.js +1 -1
- package/es/components/ProForm/fields/ProFormSelect.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormSelect.js +1 -1
- package/es/components/ProForm/fields/ProFormSlider.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormSwitch.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormText.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormTextArea.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormUpload.d.ts +1 -1
- package/es/components/ProForm/fields/ProFormUpload.js +1 -1
- package/es/components/ProForm/fields/createProFormField.d.ts +8 -2
- package/es/components/ProForm/fields/createProFormField.js +3 -3
- package/es/components/ProForm/hooks/useFieldRequest.d.ts +1 -1
- package/es/components/ProForm/hooks/useFieldRequest.js +1 -1
- package/es/components/ProForm/hooks/useUrlSync.d.ts +8 -7
- package/es/components/ProForm/hooks/useUrlSync.js +1 -1
- package/es/components/ProForm/index.d.ts +35 -26
- package/es/components/ProForm/index.js +1 -1
- package/es/components/ProForm/interface.d.ts +96 -91
- package/es/components/ProForm/layouts/DialogForm.d.ts +1 -1
- package/es/components/ProForm/layouts/DialogForm.js +1 -1
- package/es/components/ProForm/layouts/DrawerForm.d.ts +1 -1
- package/es/components/ProForm/layouts/DrawerForm.js +1 -1
- package/es/components/ProForm/layouts/QueryFilter.d.ts +1 -1
- package/es/components/ProForm/layouts/QueryFilter.js +1 -1
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/es/components/ProForm/layouts/useOverlayForm.js +1 -1
- package/es/components/ProForm/utils.d.ts +8 -8
- package/es/components/ProForm/utils.js +1 -1
- package/es/index.css +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/lib/components/ProForm/ProForm.d.ts +1 -1
- package/lib/components/ProForm/ProForm.js +2 -3
- package/lib/components/ProForm/ProFormDependency.d.ts +2 -1
- package/lib/components/ProForm/ProFormDependency.js +1 -1
- package/lib/components/ProForm/ProFormItem.d.ts +7 -2
- package/lib/components/ProForm/ProFormItem.js +1 -1
- package/lib/components/ProForm/ProFormList.d.ts +6 -1
- package/lib/components/ProForm/ProFormList.js +13 -5
- package/lib/components/ProForm/SchemaForm.d.ts +1 -1
- package/lib/components/ProForm/SchemaForm.js +8 -5
- package/lib/components/ProForm/context.d.ts +8 -7
- package/lib/components/ProForm/context.js +1 -1
- package/lib/components/ProForm/core/constants.d.ts +1 -1
- package/lib/components/ProForm/core/constants.js +2 -2
- package/lib/components/ProForm/core/formStore.d.ts +4 -4
- package/lib/components/ProForm/core/formStore.js +1 -1
- package/lib/components/ProForm/core/hooks/useForm.d.ts +1 -1
- package/lib/components/ProForm/core/hooks/useForm.js +34 -9
- package/lib/components/ProForm/core/hooks/useFormCore.d.ts +2 -2
- package/lib/components/ProForm/core/hooks/useFormCore.js +16 -122
- package/lib/components/ProForm/core/interface.d.ts +70 -91
- package/lib/components/ProForm/core/namePathType.d.ts +25 -0
- package/lib/components/ProForm/core/namePathType.js +6 -0
- package/lib/components/ProForm/core/pathUtils.d.ts +5 -3
- package/lib/components/ProForm/core/pathUtils.js +20 -1
- package/lib/components/ProForm/core/runRules.d.ts +8 -17
- package/lib/components/ProForm/core/runRules.js +22 -130
- package/lib/components/ProForm/core/useFormItem.d.ts +1 -1
- package/lib/components/ProForm/core/useFormItem.js +17 -69
- package/lib/components/ProForm/core/validationError.d.ts +2 -2
- package/lib/components/ProForm/core/validationError.js +1 -1
- package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +1 -1
- package/lib/components/ProForm/fields/ProFormDatePicker.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormDatePicker.js +1 -1
- package/lib/components/ProForm/fields/ProFormFieldSet.d.ts +7 -2
- package/lib/components/ProForm/fields/ProFormFieldSet.js +5 -7
- package/lib/components/ProForm/fields/ProFormPassword.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormRadioGroup.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormRadioGroup.js +1 -1
- package/lib/components/ProForm/fields/ProFormSelect.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormSelect.js +1 -1
- package/lib/components/ProForm/fields/ProFormSlider.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormSwitch.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormText.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormTextArea.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormUpload.d.ts +1 -1
- package/lib/components/ProForm/fields/ProFormUpload.js +1 -1
- package/lib/components/ProForm/fields/createProFormField.d.ts +8 -2
- package/lib/components/ProForm/fields/createProFormField.js +3 -3
- package/lib/components/ProForm/hooks/useFieldRequest.d.ts +1 -1
- package/lib/components/ProForm/hooks/useFieldRequest.js +1 -1
- package/lib/components/ProForm/hooks/useUrlSync.d.ts +8 -7
- package/lib/components/ProForm/hooks/useUrlSync.js +1 -1
- package/lib/components/ProForm/index.d.ts +35 -26
- package/lib/components/ProForm/index.js +1 -1
- package/lib/components/ProForm/interface.d.ts +96 -91
- package/lib/components/ProForm/layouts/DialogForm.d.ts +1 -1
- package/lib/components/ProForm/layouts/DialogForm.js +1 -1
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +1 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +1 -1
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +1 -1
- package/lib/components/ProForm/layouts/QueryFilter.js +1 -1
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/lib/components/ProForm/layouts/useOverlayForm.js +1 -1
- package/lib/components/ProForm/utils.d.ts +8 -8
- package/lib/components/ProForm/utils.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +53 -17
- package/scripts/mcp-server/index.generated.json +1734 -160
|
@@ -65,11 +65,31 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
|
65
65
|
* them would only churn subscribers without ever being visible. Decided on
|
|
66
66
|
* RESOLVED rules: a function-form rule that resolves to builtin-only checks
|
|
67
67
|
* must not flicker the flag.
|
|
68
|
+
*
|
|
69
|
+
* The async engine awaits validators nested inside `fields` / `defaultField`
|
|
70
|
+
* too, so the decision must descend the same way — otherwise a deep-only
|
|
71
|
+
* validator (e.g. `{ defaultField: { validator } }`) runs pending with the
|
|
72
|
+
* flag stuck false, and `isFieldValidating(name)` under-reports for the whole
|
|
73
|
+
* window. Over-flagging when the deep validator won't actually fire (empty /
|
|
74
|
+
* primitive value) is acceptable: the flag is decided on rule SHAPE, exactly
|
|
75
|
+
* as the top-level case already over-flags a validator short-circuited by an
|
|
76
|
+
* earlier builtin failure; the run clears it on settle either way.
|
|
68
77
|
*/
|
|
78
|
+
var asRuleArray = function asRuleArray(rule) {
|
|
79
|
+
return rule ? Array.isArray(rule) ? rule : [rule] : [];
|
|
80
|
+
};
|
|
81
|
+
var _ruleHasValidator = function ruleHasValidator(rule) {
|
|
82
|
+
if (typeof rule.validator === 'function') return true;
|
|
83
|
+
if (asRuleArray(rule.defaultField).some(_ruleHasValidator)) return true;
|
|
84
|
+
if (rule.fields) {
|
|
85
|
+
return Object.values(rule.fields).some(function (sub) {
|
|
86
|
+
return asRuleArray(sub).some(_ruleHasValidator);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
};
|
|
69
91
|
var hasResolvedValidator = function hasResolvedValidator(resolved) {
|
|
70
|
-
return resolved.some(
|
|
71
|
-
return typeof rule.validator === 'function';
|
|
72
|
-
});
|
|
92
|
+
return resolved.some(_ruleHasValidator);
|
|
73
93
|
};
|
|
74
94
|
// ---------------------------------------------------------------------------
|
|
75
95
|
// useForm
|
|
@@ -454,7 +474,10 @@ var useForm = exports.useForm = function useForm() {
|
|
|
454
474
|
}
|
|
455
475
|
var applicable = (0, _runRules.filterRulesByTrigger)((0, _runRules.resolveRules)(rules, formCore.getFieldsValue(), formCore.getRuleContextInstance()), 'onChange', (0, _runRules.normalizeTriggers)(fieldOptions.validateTrigger, validateTrigger), name);
|
|
456
476
|
if (applicable.length > 0) {
|
|
457
|
-
|
|
477
|
+
// Async path (matching ProForm.Item) so a Promise-returning
|
|
478
|
+
// validator is honored on change instead of being silently
|
|
479
|
+
// skipped; fire-and-forget — the result lands on the store.
|
|
480
|
+
validateFieldAsync(name, value, applicable);
|
|
458
481
|
}
|
|
459
482
|
});
|
|
460
483
|
var handleBlur = (0, _useEventCallback["default"])(function () {
|
|
@@ -492,7 +515,7 @@ var useForm = exports.useForm = function useForm() {
|
|
|
492
515
|
}
|
|
493
516
|
// Element children receive only DOM-safe props — error/touched/
|
|
494
517
|
// validating are field META, not control props; spreading them onto
|
|
495
|
-
// a host element would leak
|
|
518
|
+
// a host element would leak any attributes. Render-prop and
|
|
496
519
|
// function children keep the full fieldProps.
|
|
497
520
|
var domSafeProps = Object.assign({
|
|
498
521
|
name: name,
|
|
@@ -715,8 +738,11 @@ var useForm = exports.useForm = function useForm() {
|
|
|
715
738
|
});
|
|
716
739
|
var formInstance = (0, _react.useMemo)(function () {
|
|
717
740
|
return Object.assign(Object.assign({}, formCore.formInstance), {
|
|
741
|
+
getFieldValue: formCore.getFieldValue,
|
|
742
|
+
getFieldsValue: formCore.getFieldsValue,
|
|
718
743
|
validateFields: validateFieldsAsync,
|
|
719
744
|
setFieldValue: formCore.setFieldValue,
|
|
745
|
+
setFieldsValue: formCore.setFieldsValue,
|
|
720
746
|
getFieldError: getFieldError,
|
|
721
747
|
getFieldWarning: getFieldWarning,
|
|
722
748
|
getFieldsError: getFieldsError,
|
|
@@ -733,7 +759,7 @@ var useForm = exports.useForm = function useForm() {
|
|
|
733
759
|
registerField: formCore.registerField,
|
|
734
760
|
unregisterField: formCore.unregisterField
|
|
735
761
|
});
|
|
736
|
-
}, [formCore.formInstance, formCore.setFieldValue, formCore.setFieldError, formCore.registerField, formCore.unregisterField, validateFieldsAsync, getFieldError, getFieldWarning, getFieldsError, isFieldTouched, isFieldsTouched, isFieldValidating, setFieldsError, setFieldTouched, setFieldsTouched, resetFormFields, submitWithValidation, defineField]);
|
|
762
|
+
}, [formCore.formInstance, formCore.getFieldValue, formCore.getFieldsValue, formCore.setFieldValue, formCore.setFieldsValue, formCore.setFieldError, formCore.registerField, formCore.unregisterField, validateFieldsAsync, getFieldError, getFieldWarning, getFieldsError, isFieldTouched, isFieldsTouched, isFieldValidating, setFieldsError, setFieldTouched, setFieldsTouched, resetFormFields, submitWithValidation, defineField]);
|
|
737
763
|
// Function-form rules get the FULL form instance (error getters, touched
|
|
738
764
|
// state, mutators) instead of the bare core methods. Ref write — cheap and
|
|
739
765
|
// idempotent per render.
|
|
@@ -763,7 +789,6 @@ var useForm = exports.useForm = function useForm() {
|
|
|
763
789
|
setFieldValue: formCore.setFieldValue,
|
|
764
790
|
setFieldError: formCore.setFieldError,
|
|
765
791
|
setFieldWarning: formCore.setFieldWarning,
|
|
766
|
-
validateField: formCore.validateField,
|
|
767
792
|
validateFieldAsync: validateFieldAsync,
|
|
768
793
|
registerField: formCore.registerField,
|
|
769
794
|
unregisterField: formCore.unregisterField,
|
|
@@ -772,7 +797,7 @@ var useForm = exports.useForm = function useForm() {
|
|
|
772
797
|
handleSubmit: handleSubmit,
|
|
773
798
|
handleReset: handleReset
|
|
774
799
|
};
|
|
775
|
-
}, [store, formCore.fieldRules, formCore.setFieldValue, formCore.setFieldError, formCore.setFieldWarning,
|
|
800
|
+
}, [store, formCore.fieldRules, formCore.setFieldValue, formCore.setFieldError, formCore.setFieldWarning, validateFieldAsync, formCore.registerField, formCore.unregisterField, formCore.retainField, formCore.releaseField, handleSubmit, handleReset]);
|
|
776
801
|
return {
|
|
777
802
|
formInstance: formInstance,
|
|
778
803
|
internals: internals,
|
|
@@ -780,4 +805,4 @@ var useForm = exports.useForm = function useForm() {
|
|
|
780
805
|
};
|
|
781
806
|
};
|
|
782
807
|
var _default = exports["default"] = useForm;
|
|
783
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtLnRzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfdXNlRXZlbnRDYWxsYmFjayIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlTWVtb2l6ZWRGbiIsIl91c2VGb3JtQ29yZSIsIl9wYXRoVXRpbHMiLCJfcnVuUnVsZXMiLCJfZm9ybVN0b3JlIiwiX3ZhbGlkYXRpb25FcnJvciIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJyZWplY3RlZCIsInJlc3VsdCIsInRoZW4iLCJhcHBseSIsIl9fcmVzdCIsInAiLCJwcm90b3R5cGUiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJoYXNSZXNvbHZlZFZhbGlkYXRvciIsInJlc29sdmVkIiwic29tZSIsInJ1bGUiLCJ2YWxpZGF0b3IiLCJ1c2VGb3JtIiwiZXhwb3J0cyIsImNvbmZpZyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIm9uRmluaXNoIiwib25GaW5pc2hGYWlsZWQiLCJvblJlc2V0IiwiX2NvbmZpZyR2YWxpZGF0ZVRyaWdnIiwidmFsaWRhdGVUcmlnZ2VyIiwiZm9ybUNvcmUiLCJ1c2VGb3JtQ29yZSIsInN0b3JlIiwibGFzdEFzeW5jRXBvY2hSZWYiLCJ1c2VSZWYiLCJtYXJrVmFsaWRhdGluZyIsInVzZU1lbW9pemVkRm4iLCJuYW1lcyIsImFzc2lnbiIsImdldFN0YXRlIiwidmFsaWRhdGluZyIsImZvckVhY2giLCJzZXRTdGF0ZSIsImNvbW1pdFJ1bGVPdXRjb21lcyIsIm91dGNvbWVzIiwiY2xlYXJWYWxpZGF0aW5nIiwic3RhdGUiLCJlcnJvcnNDaGFuZ2VkIiwid2FybmluZ3NDaGFuZ2VkIiwibmV3RXJyb3JzIiwiZXJyb3JzIiwibmV3V2FybmluZ3MiLCJ3YXJuaW5ncyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX3N0ZXAkdmFsdWUiLCJlcnJvciIsIndhcm5pbmciLCJzYW1lVmFsaWRhdGlvbk5vZGUiLCJlcnIiLCJmbGFnc1RvQ2xlYXIiLCJmaWx0ZXIiLCJwYXRjaCIsIm5ld1ZhbGlkYXRpbmciLCJrZXlzIiwidmFsaWRhdGVGaWVsZEFzeW5jIiwicnVsZXMiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9hIiwiZXBvY2giLCJ2YWx1ZXMiLCJmbGFnZ2VkIiwib3V0Y29tZSIsIl95aWVsZCRydW5SdWxlc0FzeW5jIiwiaXNDdXJyZW50IiwiY2xlYXJGbGFncyIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsImFicnVwdCIsImlzVmFsaWQiLCJiZWdpblZhbGlkYXRpb25SdW4iLCJnZXRGaWVsZHNWYWx1ZSIsInJlc29sdmVSdWxlcyIsImdldFJ1bGVDb250ZXh0SW5zdGFuY2UiLCJmbGFnZ2VkTmFtZSIsImN1cnJlbnQiLCJydW5SdWxlc0FzeW5jIiwic2VudCIsImNvZXJjZUZhaWx1cmVSZWFzb24iLCJpc1ZhbGlkYXRpb25SdW5DdXJyZW50IiwiZmluaXNoIiwic3RvcCIsImhhbmRsZUZpZWxkQmx1ciIsInVzZUV2ZW50Q2FsbGJhY2siLCJmaWVsZFRyaWdnZXIiLCJfY2FsbGVlMiIsInRvdWNoZWQiLCJhcHBsaWNhYmxlIiwiX2NvbnRleHQyIiwiX2RlZmluZVByb3BlcnR5MiIsImdldEZpZWxkUnVsZXMiLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsIm5vcm1hbGl6ZVRyaWdnZXJzIiwicmVzb2x2ZVZhbHVlIiwidmFsaWRhdGVGaWVsZHNBc3luYyIsIm5hbWVMaXN0IiwiX2NhbGxlZTQiLCJmaWVsZHNUb1ZhbGlkYXRlIiwiZmllbGRFcnJvcnMiLCJyZXNvbHZlZEJ5RmllbGQiLCJlcG9jaEJ5RmllbGQiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX2NvbnRleHQ0IiwiZmllbGRSdWxlcyIsIk1hcCIsImFsbCIsIm1hcCIsIl9jYWxsZWUzIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMyIiwiX3QyIiwiX2NvbnRleHQzIiwicHVzaCIsIkZvcm1WYWxpZGF0aW9uRXJyb3IiLCJyZWR1Y2UiLCJhY2MiLCJkZWZpbmVGaWVsZCIsImZpZWxkT3B0aW9ucyIsIl9maWVsZE9wdGlvbnMkcnVsZXMiLCJGaWVsZENvbXBvbmVudCIsIm1lbW8iLCJjaGlsZHJlbiIsInJlbmRlciIsInByb3BzIiwiX3VzZVN0b3JlU2VsZWN0b3IiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsQXJyYXlzIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZmllbGRWYWx1ZSIsImZpZWxkRXJyb3IiLCJmaWVsZFRvdWNoZWQiLCJmaWVsZFZhbGlkYXRpbmciLCJ1c2VFZmZlY3QiLCJyZXRhaW5GaWVsZCIsImV4aXN0aW5nUnVsZXMiLCJyZWdpc3RlckZpZWxkIiwicmVsZWFzZUZpZWxkIiwiaGFuZGxlRmllbGRDaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwidmFsaWRhdGVGaWVsZCIsImhhbmRsZUJsdXIiLCJmaWVsZFByb3BzIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVNZXJnZUNoYW5nZSIsIl90eXBlb2YyIiwidGFyZ2V0IiwiUmVhY3QiLCJpc1ZhbGlkRWxlbWVudCIsImhhbmRsZU1lcmdlQmx1ciIsImRvbVNhZmVQcm9wcyIsImNsb25lRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJjaGlsZCIsImluZGV4Iiwia2V5IiwiZGlzcGxheU5hbWUiLCJoYW5kbGVTdWJtaXQiLCJfY2FsbGVlNSIsInZhbGlkYXRlZFZhbHVlcyIsIl90MyIsIl9jb250ZXh0NSIsInByZXZlbnREZWZhdWx0IiwiY29uc29sZSIsImhhbmRsZVJlc2V0IiwicmVzZXRGaWVsZHMiLCJnZXRGaWVsZEVycm9yIiwiZ2V0RmllbGRXYXJuaW5nIiwiZ2V0RmllbGRzRXJyb3IiLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRzVG91Y2hlZCIsImFsbEZpZWxkc1RvdWNoZWQiLCJldmVyeSIsImlzRmllbGRWYWxpZGF0aW5nIiwic2V0RmllbGRzRXJyb3IiLCJmaWVsZHNFcnJvciIsImVudHJpZXMiLCJfcmVmIiwiX3JlZjIiLCJzZXRGaWVsZEVycm9yIiwic2V0RmllbGRUb3VjaGVkIiwiaXNUb3VjaGVkIiwic2V0RmllbGRzVG91Y2hlZCIsImZpZWxkc1RvdWNoIiwicmVzZXRGb3JtRmllbGRzIiwiZmllbGRzIiwiaW5pdGlhbFZhbHVlcyIsImdldEluaXRpYWxWYWx1ZXMiLCJuZXdWYWx1ZXMiLCJmaWVsZCIsImluaXRpYWwiLCJpbmNsdWRlcyIsInNldE5lc3RlZFZhbHVlIiwiaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zIiwibmV3VG91Y2hlZCIsInN1Ym1pdFdpdGhWYWxpZGF0aW9uIiwiY2FsbGJhY2siLCJfY2FsbGVlNiIsIl90NCIsIl90NSIsIl9jb250ZXh0NiIsImZvcm1JbnN0YW5jZSIsInVzZU1lbW8iLCJ2YWxpZGF0ZUZpZWxkcyIsInN1Ym1pdCIsInVucmVnaXN0ZXJGaWVsZCIsInNldFJ1bGVDb250ZXh0SW5zdGFuY2UiLCJpbnRlcm5hbHMiLCJzZXRGaWVsZFdhcm5pbmciLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxTQUFBLEdBQUFOLE9BQUE7QUFPQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxnQkFBQSxHQUFBUixPQUFBO0FBQXlELFNBQUFTLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBWCx3QkFBQVcsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxRQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENB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O01BQ3pDM0UsV0FBVyxFQUFFdEgsUUFBUSxDQUFDc0gsV0FBVztNQUNqQ0csWUFBWSxFQUFFekgsUUFBUSxDQUFDeUgsWUFBWTtNQUNuQ3dCLFlBQVksRUFBWkEsWUFBWTtNQUNaTyxXQUFXLEVBQVhBO0lDcElGLENEcUlDO0VBQUEsQ0FBQyxFQUNGLENBQ0V0SixLQUFLLEVBQ0xGLFFBQVEsQ0FBQ3dGLFVBQVUsRUFDbkJ4RixRQUFRLENBQUMySCxhQUFhLEVBQ3RCM0gsUUFBUSxDQUFDdUssYUFBYSxFQUN0QnZLLFFBQVEsQ0FBQ29NLGVBQWUsRUFDeEJwTSxRQUFRLENBQUM0SCxhQUFhLEVBQ3RCekYsa0JBQWtCLEVBQ2xCbkMsUUFBUSxDQUFDd0gsYUFBYSxFQUN0QnhILFFBQVEsQ0FBQ2lNLGVBQWUsRUFDeEJqTSxRQUFRLENBQUNzSCxXQUFXLEVBQ3BCdEgsUUFBUSxDQUFDeUgsWUFBWSxFQUNyQndCLFlBQVksRUFDWk8sV0FBVyxDQUNaLENBQ0Y7RUFFRCxPQUFPO0lBQUVxQyxZQUFZLEVBQVpBLFlBQVk7SUFBRU0sU0FBUyxFQUFUQSxTQUFTO0lBQUVqTSxLQUFLLEVBQUxBO0VBQUssQ0FBRTtBQUMzQyxDQUFDO0FBQUMsSUFBQW1NLFFBQUEsR0FBQTlNLE9BQUEsY0FFYUQsT0FBTyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IHVzZU1lbW8sIHVzZUVmZmVjdCwgdXNlUmVmLCBtZW1vLCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IHVzZUZvcm1Db3JlIH0gZnJvbSAnLi91c2VGb3JtQ29yZSc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUsIHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi4vcGF0aFV0aWxzJztcbmltcG9ydCB7IGNvZXJjZUZhaWx1cmVSZWFzb24sIGZpbHRlclJ1bGVzQnlUcmlnZ2VyLCBub3JtYWxpemVUcmlnZ2VycywgcmVzb2x2ZVJ1bGVzLCBydW5SdWxlc0FzeW5jLCB9IGZyb20gJy4uL3J1blJ1bGVzJztcbmltcG9ydCB7IHVzZVN0b3JlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbEFycmF5cywgc2FtZVZhbGlkYXRpb25Ob2RlIH0gZnJvbSAnLi4vZm9ybVN0b3JlJztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uRXJyb3InO1xuLyoqXG4gKiBPbmx5IHJ1bGVzIHdpdGggYSBjdXN0b20gYHZhbGlkYXRvcmAgY2FuIGJlIGdlbnVpbmVseSBhc3luY2hyb25vdXMg4oCUXG4gKiBidWlsdGluIHJ1bGVzIHJlc29sdmUgd2l0aGluIGEgbWljcm90YXNrLCBzbyBmbGlwcGluZyBgdmFsaWRhdGluZ2AgZm9yXG4gKiB0aGVtIHdvdWxkIG9ubHkgY2h1cm4gc3Vic2NyaWJlcnMgd2l0aG91dCBldmVyIGJlaW5nIHZpc2libGUuIERlY2lkZWQgb25cbiAqIFJFU09MVkVEIHJ1bGVzOiBhIGZ1bmN0aW9uLWZvcm0gcnVsZSB0aGF0IHJlc29sdmVzIHRvIGJ1aWx0aW4tb25seSBjaGVja3NcbiAqIG11c3Qgbm90IGZsaWNrZXIgdGhlIGZsYWcuXG4gKi9cbmNvbnN0IGhhc1Jlc29sdmVkVmFsaWRhdG9yID0gKHJlc29sdmVkKSA9PiByZXNvbHZlZC5zb21lKChydWxlKSA9PiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB1c2VGb3JtXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBjb25zdCB1c2VGb3JtID0gKGNvbmZpZyA9IHt9KSA9PiB7XG4gICAgY29uc3QgeyBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uUmVzZXQsIHZhbGlkYXRlVHJpZ2dlciA9ICdvbkNoYW5nZScsIH0gPSBjb25maWc7XG4gICAgY29uc3QgZm9ybUNvcmUgPSB1c2VGb3JtQ29yZShjb25maWcpO1xuICAgIGNvbnN0IHsgc3RvcmUgfSA9IGZvcm1Db3JlO1xuICAgIC8vIEVwb2NoIG9mIHRoZSBMQVRFU1QgYXN5bmMgcnVuIHRoYXQgcmFpc2VkIGVhY2ggZmllbGQncyBgdmFsaWRhdGluZ2AgZmxhZy5cbiAgICAvLyBBIHNldHRsaW5nIHJ1biBjbGVhcnMgdGhlIGZsYWcgb25seSB3aGlsZSBpdCBpcyBzdGlsbCB0aGUgbGF0ZXN0IHJhaXNlciDigJRcbiAgICAvLyBhbiBvbGRlciBydW4gbXVzdCBub3QgYmxhbmsgdGhlIHNwaW5uZXIgb2YgYSBuZXdlciBvbmUsIGFuZCBhIHJ1blxuICAgIC8vIHN1cGVyc2VkZWQgYnkgYSBTWU5DIGNvbW1pdCAod2hpY2ggbmV2ZXIgdG91Y2hlcyBmbGFncykgbXVzdCBzdGlsbCBjbGVhblxuICAgIC8vIHVwIGFmdGVyIGl0c2VsZi5cbiAgICBjb25zdCBsYXN0QXN5bmNFcG9jaFJlZiA9IHVzZVJlZih7fSk7XG4gICAgLy8gTWFyayBmaWVsZHMgYXMgdmFsaWRhdGluZyBpbiBPTkUgY29tbWl0LiB2YWxpZGF0aW5nIC8gdG91Y2hlZCBsaXZlIGluIHRoZVxuICAgIC8vIHN0b3JlIGFsb25nc2lkZSB2YWx1ZXMg4oCUIGZsaXBwaW5nIHRoZW0gKGUuZy4gYXN5bmMgdmFsaWRhdGlvbiBhcm91bmQgYVxuICAgIC8vIGJsdXIpIG11c3Qgbm90IHJlLXJlbmRlciB0aGUgZm9ybSByb290LCBvbmx5IHRoZSBmaWVsZHMgdGhhdCBzdWJzY3JpYmVkLlxuICAgIGNvbnN0IG1hcmtWYWxpZGF0aW5nID0gdXNlTWVtb2l6ZWRGbigobmFtZXMpID0+IHtcbiAgICAgICAgaWYgKG5hbWVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV4dCA9IE9iamVjdC5hc3NpZ24oe30sIHN0b3JlLmdldFN0YXRlKCkudmFsaWRhdGluZyk7XG4gICAgICAgIG5hbWVzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIG5leHRbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB2YWxpZGF0aW5nOiBuZXh0IH0pO1xuICAgIH0pO1xuICAgIC8vIEZvbGQgcGVyLWZpZWxkIHJ1bGUgb3V0Y29tZXMgaW50byBBVCBNT1NUIG9uZSBzdG9yZSBjb21taXQ6IGVycm9ycyBhbmRcbiAgICAvLyB3YXJuaW5ncyBhcmUgbWVyZ2VkIG92ZXIgdGhlIGN1cnJlbnQgbWFwcyBhbmQgdGhlIGBjbGVhclZhbGlkYXRpbmdgIGZsYWdzXG4gICAgLy8gYXJlIHJlbW92ZWQgaW4gdGhlIFNBTUUgcGF0Y2guIEEgbm8tb3Agb3V0Y29tZSBjb21taXRzIG5vdGhpbmcgYXQgYWxsIOKAlFxuICAgIC8vIHBlci1maWVsZCBjb21taXRzIGhlcmUgcHJldmlvdXNseSBtYWRlIHN1Ym1pdC10aW1lIHZhbGlkYXRpb24gc3dlZXAgZXZlcnlcbiAgICAvLyBzdWJzY3JpYmVyIE8oZmllbGRzKSB0aW1lcy5cbiAgICBjb25zdCBjb21taXRSdWxlT3V0Y29tZXMgPSB1c2VNZW1vaXplZEZuKChvdXRjb21lcywgY2xlYXJWYWxpZGF0aW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICAgICAgbGV0IGVycm9yc0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IHdhcm5pbmdzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5lcnJvcnMpO1xuICAgICAgICBjb25zdCBuZXdXYXJuaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLndhcm5pbmdzKTtcbiAgICAgICAgZm9yIChjb25zdCB7IG5hbWUsIGVycm9yLCB3YXJuaW5nIH0gb2Ygb3V0Y29tZXMpIHtcbiAgICAgICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIG5ld0Vycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnNDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghc2FtZVZhbGlkYXRpb25Ob2RlKG5ld0Vycm9yc1tuYW1lXSwgZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgbmV3RXJyb3JzW25hbWVdID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgZXJyb3JzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2FybmluZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChuYW1lIGluIG5ld1dhcm5pbmdzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tuYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgd2FybmluZ3NDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghc2FtZVZhbGlkYXRpb25Ob2RlKG5ld1dhcm5pbmdzW25hbWVdLCB3YXJuaW5nKSkge1xuICAgICAgICAgICAgICAgIG5ld1dhcm5pbmdzW25hbWVdID0gd2FybmluZztcbiAgICAgICAgICAgICAgICB3YXJuaW5nc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZsYWdzVG9DbGVhciA9IGNsZWFyVmFsaWRhdGluZy5maWx0ZXIoKG5hbWUpID0+IG5hbWUgaW4gc3RhdGUudmFsaWRhdGluZyk7XG4gICAgICAgIGNvbnN0IHBhdGNoID0ge307XG4gICAgICAgIGlmIChlcnJvcnNDaGFuZ2VkKVxuICAgICAgICAgICAgcGF0Y2guZXJyb3JzID0gbmV3RXJyb3JzO1xuICAgICAgICBpZiAod2FybmluZ3NDaGFuZ2VkKVxuICAgICAgICAgICAgcGF0Y2gud2FybmluZ3MgPSBuZXdXYXJuaW5ncztcbiAgICAgICAgaWYgKGZsYWdzVG9DbGVhci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWxpZGF0aW5nID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUudmFsaWRhdGluZyk7XG4gICAgICAgICAgICBmbGFnc1RvQ2xlYXIuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdWYWxpZGF0aW5nW25hbWVdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwYXRjaC52YWxpZGF0aW5nID0gbmV3VmFsaWRhdGluZztcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LmtleXMocGF0Y2gpLmxlbmd0aCA+IDApXG4gICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZShwYXRjaCk7XG4gICAgfSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQXN5bmMgZmllbGQgdmFsaWRhdGlvbiDigJMgZWFjaCBydWxlIGlzIHByb2Nlc3NlZCBleGFjdGx5IG9uY2VcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkQXN5bmMgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZSwgcnVsZXMpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghcnVsZXMgfHwgcnVsZXMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgZXJyb3I6IG51bGwgfTtcbiAgICAgICAgLy8gQ2FwdHVyZSB0aGlzIHJ1bidzIGVwb2NoOiBpZiBhIE5FV0VSIHJ1biAoc3luYyBvciBhc3luYykgc3RhcnRzIGZvclxuICAgICAgICAvLyB0aGUgZmllbGQgYmVmb3JlIHRoaXMgb25lIHNldHRsZXMsIHRoZSBvdXRjb21lIGJlbG93IGlzIHN0YWxlIGFuZCBpc1xuICAgICAgICAvLyBkaXNjYXJkZWQgaW5zdGVhZCBvZiBvdmVyd3JpdGluZyB0aGUgbmV3ZXIgcmVzdWx0LlxuICAgICAgICBjb25zdCBlcG9jaCA9IGZvcm1Db3JlLmJlZ2luVmFsaWRhdGlvblJ1bihuYW1lKTtcbiAgICAgICAgLy8gUmVzb2x2ZSBvbmNlOiB0aGUgZmxhZyBkZWNpc2lvbiBuZWVkcyByZXNvbHZlZCBydWxlcywgYW5kIHBhc3NpbmcgdGhlXG4gICAgICAgIC8vIHJlc29sdmVkIGFycmF5IG9ud2FyZCBzcGFyZXMgdGhlIGVuZ2luZSBhIHJlLXJlc29sdXRpb24uXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSk7XG4gICAgICAgIGNvbnN0IGZsYWdnZWQgPSBoYXNSZXNvbHZlZFZhbGlkYXRvcihyZXNvbHZlZCkgPyBbbmFtZV0gOiBbXTtcbiAgICAgICAgbWFya1ZhbGlkYXRpbmcoZmxhZ2dlZCk7XG4gICAgICAgIGZsYWdnZWQuZm9yRWFjaCgoZmxhZ2dlZE5hbWUpID0+IHtcbiAgICAgICAgICAgIGxhc3RBc3luY0Vwb2NoUmVmLmN1cnJlbnRbZmxhZ2dlZE5hbWVdID0gZXBvY2g7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgb3V0Y29tZSA9IHsgbmFtZSwgZXJyb3I6IG51bGwsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZXJyb3IsIHdhcm5pbmcgfSA9IHlpZWxkIHJ1blJ1bGVzQXN5bmMobmFtZSwgdmFsdWUsIHZhbHVlcywgcmVzb2x2ZWQsIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSk7XG4gICAgICAgICAgICBvdXRjb21lID0geyBuYW1lLCBlcnJvciwgd2FybmluZyB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIFRoZSBlbmdpbmUgY29udGFpbnMgcnVsZS1sZXZlbCB0aHJvd3MgaXRzZWxmOyB0aGlzIGlzIGEgbGFzdC1yZXNvcnRcbiAgICAgICAgICAgIC8vIG5ldCBzbyBhbiB1bmV4cGVjdGVkIGZhaWx1cmUgc3VyZmFjZXMgYXMgYSBmaWVsZCBlcnJvciBpbnN0ZWFkIG9mXG4gICAgICAgICAgICAvLyBsZWF2aW5nIHRoZSBmaWVsZCBtYXJrZWQgdmFsaWQuXG4gICAgICAgICAgICBvdXRjb21lID0geyBuYW1lLCBlcnJvcjogKF9hID0gY29lcmNlRmFpbHVyZVJlYXNvbihlcnIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnVmFsaWRhdGlvbiBmYWlsZWQnLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCBpc0N1cnJlbnQgPSBmb3JtQ29yZS5pc1ZhbGlkYXRpb25SdW5DdXJyZW50KG5hbWUsIGVwb2NoKTtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFyRmxhZ3MgPSBmbGFnZ2VkLmZpbHRlcigoZmxhZ2dlZE5hbWUpID0+IGxhc3RBc3luY0Vwb2NoUmVmLmN1cnJlbnRbZmxhZ2dlZE5hbWVdID09PSBlcG9jaCk7XG4gICAgICAgICAgICBjb21taXRSdWxlT3V0Y29tZXMoaXNDdXJyZW50ID8gW291dGNvbWVdIDogW10sIGNsZWFyRmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBDQUxMRVIgZ2V0cyB0aGlzIHJ1bidzIG93biByZXN1bHQgZWl0aGVyIHdheSAoaXRzIHByb21pc2UgaXNcbiAgICAgICAgLy8gYWJvdXQgdGhlIHZhbHVlIGl0IHdhcyBhc2tlZCB0byB2YWxpZGF0ZSk7IG9ubHkgdGhlIFNUT1JFIGNvbW1pdCBpc1xuICAgICAgICAvLyBzdGFsZW5lc3MtZ3VhcmRlZC5cbiAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogb3V0Y29tZS5lcnJvciA9PT0gbnVsbCwgZXJyb3I6IG91dGNvbWUuZXJyb3IgfTtcbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQXN5bmMgZmllbGQgYmx1ciBoYW5kbGVyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgaGFuZGxlRmllbGRCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygobmFtZSwgZmllbGRUcmlnZ2VyKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdG91Y2hlZCA9IHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZDtcbiAgICAgICAgaWYgKCF0b3VjaGVkW25hbWVdKSB7XG4gICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdG91Y2hlZCksIHsgW25hbWVdOiB0cnVlIH0pIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJ1bGVzID0gZm9ybUNvcmUuZ2V0RmllbGRSdWxlcyhuYW1lKTtcbiAgICAgICAgaWYgKCFydWxlcylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKTtcbiAgICAgICAgY29uc3QgYXBwbGljYWJsZSA9IGZpbHRlclJ1bGVzQnlUcmlnZ2VyKHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpLCAnb25CbHVyJywgbm9ybWFsaXplVHJpZ2dlcnMoZmllbGRUcmlnZ2VyLCB2YWxpZGF0ZVRyaWdnZXIpLCBuYW1lKTtcbiAgICAgICAgaWYgKGFwcGxpY2FibGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgeWllbGQgdmFsaWRhdGVGaWVsZEFzeW5jKG5hbWUsIHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpLCBhcHBsaWNhYmxlKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBWYWxpZGF0ZSBhbGwgZmllbGRzIGFzeW5jXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZHNBc3luYyA9IHVzZU1lbW9pemVkRm4oKG5hbWVMaXN0KSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgZmllbGRzVG9WYWxpZGF0ZSA9IG5hbWVMaXN0IHx8IE9iamVjdC5rZXlzKGZvcm1Db3JlLmZpZWxkUnVsZXMpO1xuICAgICAgICBjb25zdCBmaWVsZEVycm9ycyA9IHt9O1xuICAgICAgICAvLyBSZXNvbHZlIGV2ZXJ5IGZpZWxkIG9uY2UgdXAgZnJvbnQ6IHRoZSBmbGFnIGRlY2lzaW9uIG5lZWRzIHJlc29sdmVkXG4gICAgICAgIC8vIHJ1bGVzLCBhbmQgdGhlIHJlc29sdmVkIGFycmF5cyBhcmUgcmV1c2VkIGZvciB0aGUgYWN0dWFsIHJ1bnMuIEVhY2hcbiAgICAgICAgLy8gZmllbGQgYWxzbyBjYXB0dXJlcyBpdHMgdmFsaWRhdGlvbiBlcG9jaCDigJQgYSBmaWVsZCB3aG9zZSB2YWx1ZVxuICAgICAgICAvLyBjaGFuZ2VzIG1pZC1zdWJtaXQgZ2V0cyBhIG5ld2VyIHJ1biwgYW5kIHRoaXMgcnVuJ3Mgc3RhbGUgb3V0Y29tZVxuICAgICAgICAvLyBtdXN0IG5vdCBvdmVyd3JpdGUgaXQgaW4gdGhlIHN0b3JlLlxuICAgICAgICBjb25zdCByZXNvbHZlZEJ5RmllbGQgPSBuZXcgTWFwKCk7XG4gICAgICAgIGNvbnN0IGVwb2NoQnlGaWVsZCA9IG5ldyBNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGZpZWxkc1RvVmFsaWRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gZm9ybUNvcmUuZmllbGRSdWxlc1tuYW1lXTtcbiAgICAgICAgICAgIGlmIChydWxlcykge1xuICAgICAgICAgICAgICAgIGVwb2NoQnlGaWVsZC5zZXQobmFtZSwgZm9ybUNvcmUuYmVnaW5WYWxpZGF0aW9uUnVuKG5hbWUpKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlZEJ5RmllbGQuc2V0KG5hbWUsIHJlc29sdmVSdWxlcyhydWxlcywgZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gT25lIGNvbW1pdCB0byByYWlzZSB0aGUgdmFsaWRhdGluZyBmbGFncyAodmFsaWRhdG9yLWJlYXJpbmcgZmllbGRzXG4gICAgICAgIC8vIG9ubHkpLCBvbmUgY29tbWl0IHRvIGxhbmQgZXZlcnkgZXJyb3Ivd2FybmluZyBhbmQgY2xlYXIgdGhlIGZsYWdzLlxuICAgICAgICBjb25zdCBmbGFnZ2VkID0gZmllbGRzVG9WYWxpZGF0ZS5maWx0ZXIoKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZWRCeUZpZWxkLmdldChuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlZCA/IGhhc1Jlc29sdmVkVmFsaWRhdG9yKHJlc29sdmVkKSA6IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgbWFya1ZhbGlkYXRpbmcoZmxhZ2dlZCk7XG4gICAgICAgIGZsYWdnZWQuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgbGFzdEFzeW5jRXBvY2hSZWYuY3VycmVudFtuYW1lXSA9IGVwb2NoQnlGaWVsZC5nZXQobmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBvdXRjb21lcyA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgeWllbGQgUHJvbWlzZS5hbGwoZmllbGRzVG9WYWxpZGF0ZS5tYXAoKG5hbWUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVkQnlGaWVsZC5nZXQobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXNvbHZlZClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgICAgICAgICAgICAgbGV0IHdhcm5pbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICh7IGVycm9yLCB3YXJuaW5nIH0gPSB5aWVsZCBydW5SdWxlc0FzeW5jKG5hbWUsIHJlc29sdmVWYWx1ZShmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBuYW1lKSwgZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgcmVzb2x2ZWQsIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIExhc3QtcmVzb3J0IG5ldCAoc2VlIHZhbGlkYXRlRmllbGRBc3luYykg4oCUIGtlZXAgdGhlIG5vcm1hbFxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdHJ1Y3RlZC1lcnJvciBmbG93IHNvIG9uRmluaXNoRmFpbGVkIGdldHMgYSByZWFsIHBheWxvYWQuXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gKF9hID0gY29lcmNlRmFpbHVyZVJlYXNvbihlcnIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnVmFsaWRhdGlvbiBmYWlsZWQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBUaGUgc3RvcmUgY29tbWl0IGlzIHN0YWxlbmVzcy1ndWFyZGVkOyB0aGUgU1VCTUlUIGRlY2lzaW9uXG4gICAgICAgICAgICAgICAgLy8gKGZpZWxkRXJyb3JzIC8gdGhlIHRocm93biBGb3JtVmFsaWRhdGlvbkVycm9yKSBzdGlsbCByZWZsZWN0c1xuICAgICAgICAgICAgICAgIC8vIHRoaXMgcnVuJ3Mgb3duIHJlc3VsdHMgZm9yIHRoZSB2YWx1ZXMgaXQgdmFsaWRhdGVkLlxuICAgICAgICAgICAgICAgIGNvbnN0IGVwb2NoID0gZXBvY2hCeUZpZWxkLmdldChuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoZXBvY2ggIT09IHVuZGVmaW5lZCAmJiBmb3JtQ29yZS5pc1ZhbGlkYXRpb25SdW5DdXJyZW50KG5hbWUsIGVwb2NoKSkge1xuICAgICAgICAgICAgICAgICAgICBvdXRjb21lcy5wdXNoKHsgbmFtZSwgZXJyb3IsIHdhcm5pbmcgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZEVycm9yc1tuYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCBjbGVhckZsYWdzID0gZmxhZ2dlZC5maWx0ZXIoKG5hbWUpID0+IGxhc3RBc3luY0Vwb2NoUmVmLmN1cnJlbnRbbmFtZV0gPT09IGVwb2NoQnlGaWVsZC5nZXQobmFtZSkpO1xuICAgICAgICAgICAgY29tbWl0UnVsZU91dGNvbWVzKG91dGNvbWVzLCBjbGVhckZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZmllbGRFcnJvcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGb3JtVmFsaWRhdGlvbkVycm9yKGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIGZpZWxkRXJyb3JzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZUxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lTGlzdC5yZWR1Y2UoKGFjYywgbmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGFjY1tuYW1lXSA9IHJlc29sdmVWYWx1ZShmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBuYW1lKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpO1xuICAgIH0pKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBkZWZpbmVGaWVsZCDigJMgdXNlZCBieSBzdGFuZGFsb25lIChub24tUHJvRm9ybSkgY29uc3VtZXJzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgZGVmaW5lRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBmaWVsZE9wdGlvbnMgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCB7IHJ1bGVzID0gW10gfSA9IGZpZWxkT3B0aW9ucztcbiAgICAgICAgY29uc3QgRmllbGRDb21wb25lbnQgPSBtZW1vKChfYSkgPT4ge1xuICAgICAgICAgICAgdmFyIHsgY2hpbGRyZW4sIHJlbmRlciB9ID0gX2EsIHByb3BzID0gX19yZXN0KF9hLCBbXCJjaGlsZHJlblwiLCBcInJlbmRlclwiXSk7XG4gICAgICAgICAgICAvLyBQZXItZmllbGQgc3RvcmUgc3Vic2NyaXB0aW9uOiB0aGlzIGZpZWxkIHJlLXJlbmRlcnMgb25seSB3aGVuIGl0c1xuICAgICAgICAgICAgLy8gb3duIHZhbHVlL2Vycm9yL3RvdWNoZWQvdmFsaWRhdGluZyBzbGljZSBjaGFuZ2VzLiBEb3QtcGF0aHNcbiAgICAgICAgICAgIC8vIHJlc29sdmUgaW50byB0aGUgbmVzdGVkIHZhbHVlcyBsaWtlIGV2ZXJ5d2hlcmUgZWxzZS5cbiAgICAgICAgICAgIGNvbnN0IFtmaWVsZFZhbHVlLCBmaWVsZEVycm9yLCBmaWVsZFRvdWNoZWQsIGZpZWxkVmFsaWRhdGluZ10gPSB1c2VTdG9yZVNlbGVjdG9yKHN0b3JlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gcmVzb2x2ZVZhbHVlKHN0YXRlLnZhbHVlcywgbmFtZSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5lcnJvcnNbbmFtZV0sXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLnRvdWNoZWRbbmFtZV0sXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLnZhbGlkYXRpbmdbbmFtZV0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0sIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgICAgICAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIE1vdW50LWNvdW50ZWQ6IHJlbGVhc2VGaWVsZCByZW1vdmVzIHRoZSBydWxlcyBvbmx5IHdoZW4gdGhlXG4gICAgICAgICAgICAgICAgLy8gTEFTVCBzYW1lLW5hbWUgaW5zdGFuY2UgdW5tb3VudHMg4oCUIGFuIGluc3RhbmNlIHRoYXQgcGlnZ3liYWNrZWRcbiAgICAgICAgICAgICAgICAvLyBvbiBhbiBleGlzdGluZyByZWdpc3RyYXRpb24gKGUuZy4gYSBQcm9Gb3JtLkl0ZW0ncykgY2FuIG5ldmVyXG4gICAgICAgICAgICAgICAgLy8gd2lwZSBpdCBvbiBpdHMgb3duIHVubW91bnQuXG4gICAgICAgICAgICAgICAgZm9ybUNvcmUucmV0YWluRmllbGQobmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdSdWxlcyA9IGZvcm1Db3JlLmdldEZpZWxkUnVsZXMobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ1J1bGVzICYmIHJ1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUucmVnaXN0ZXJGaWVsZChuYW1lLCBydWxlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnJlbGVhc2VGaWVsZChuYW1lKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSwgW10pOyAvLyBPbmx5IHJlZ2lzdGVyIG9uIG1vdW50XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVGaWVsZENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybUNvcmUuc2V0RmllbGRWYWx1ZShuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gVG91Y2hlZCBpcyBzZXQgYnkgdGhlIHVzZXIgY2hhbmdlIHRyaWdnZXIgKG1hdGNoaW5nIHRoZVxuICAgICAgICAgICAgICAgIC8vIFByb0Zvcm0uSXRlbSBwYXRoKSDigJQgcHJvZ3JhbW1hdGljIHNldEZpZWxkc1ZhbHVlIGRvZXMgbm90LlxuICAgICAgICAgICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgICAgICAgICAgaWYgKCF0b3VjaGVkW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdG91Y2hlZDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0b3VjaGVkKSwgeyBbbmFtZV06IHRydWUgfSkgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGFwcGxpY2FibGUgPSBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihyZXNvbHZlUnVsZXMocnVsZXMsIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSksICdvbkNoYW5nZScsIG5vcm1hbGl6ZVRyaWdnZXJzKGZpZWxkT3B0aW9ucy52YWxpZGF0ZVRyaWdnZXIsIHZhbGlkYXRlVHJpZ2dlciksIG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChhcHBsaWNhYmxlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvcmUudmFsaWRhdGVGaWVsZChuYW1lLCBhcHBsaWNhYmxlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlRmllbGRCbHVyKG5hbWUsIGZpZWxkT3B0aW9ucy52YWxpZGF0ZVRyaWdnZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFByb3BzID0gT2JqZWN0LmFzc2lnbih7IG5hbWUsIHZhbHVlOiBmaWVsZFZhbHVlLCBlcnJvcjogZmllbGRFcnJvciwgdG91Y2hlZDogZmllbGRUb3VjaGVkLCB2YWxpZGF0aW5nOiBmaWVsZFZhbGlkYXRpbmcsIG9uQ2hhbmdlOiBoYW5kbGVGaWVsZENoYW5nZSwgb25CbHVyOiBoYW5kbGVCbHVyIH0sIHByb3BzKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZU1lcmdlQ2hhbmdlID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBlICYmIHR5cGVvZiBlID09PSAnb2JqZWN0JyAmJiAndGFyZ2V0JyBpbiBlXG4gICAgICAgICAgICAgICAgICAgID8gZS50YXJnZXQudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiBlO1xuICAgICAgICAgICAgICAgIGhhbmRsZUZpZWxkQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2EgPSBjaGlsZHJlbi5wcm9wcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZU1lcmdlQmx1ciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaGFuZGxlQmx1cigpO1xuICAgICAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiZcbiAgICAgICAgICAgICAgICAgICAgKChfYSA9IGNoaWxkcmVuLnByb3BzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub25CbHVyKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wcm9wcy5vbkJsdXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJlbmRlciAmJiB0eXBlb2YgcmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihmaWVsZFByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4oZmllbGRQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFbGVtZW50IGNoaWxkcmVuIHJlY2VpdmUgb25seSBET00tc2FmZSBwcm9wcyDigJQgZXJyb3IvdG91Y2hlZC9cbiAgICAgICAgICAgIC8vIHZhbGlkYXRpbmcgYXJlIGZpZWxkIE1FVEEsIG5vdCBjb250cm9sIHByb3BzOyBzcHJlYWRpbmcgdGhlbSBvbnRvXG4gICAgICAgICAgICAvLyBhIGhvc3QgZWxlbWVudCB3b3VsZCBsZWFrIHVua25vd24gYXR0cmlidXRlcy4gUmVuZGVyLXByb3AgYW5kXG4gICAgICAgICAgICAvLyBmdW5jdGlvbiBjaGlsZHJlbiBrZWVwIHRoZSBmdWxsIGZpZWxkUHJvcHMuXG4gICAgICAgICAgICBjb25zdCBkb21TYWZlUHJvcHMgPSBPYmplY3QuYXNzaWduKHsgbmFtZSwgdmFsdWU6IGZpZWxkVmFsdWUsIG9uQ2hhbmdlOiBoYW5kbGVNZXJnZUNoYW5nZSwgb25CbHVyOiBoYW5kbGVNZXJnZUJsdXIgfSwgcHJvcHMpO1xuICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIGRvbVNhZmVQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgLi4uY2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkb21TYWZlUHJvcHMpLCB7IGtleTogY2hpbGQua2V5IHx8IGluZGV4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgICBGaWVsZENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGBGaWVsZCgke25hbWV9KWA7XG4gICAgICAgIHJldHVybiBGaWVsZENvbXBvbmVudDtcbiAgICB9KTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBoYW5kbGVTdWJtaXQgLyBoYW5kbGVSZXNldCDigJMgZm9yIDxmb3JtPiBldmVudCBoYW5kbGVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZFZhbHVlcyA9IHlpZWxkIHZhbGlkYXRlRmllbGRzQXN5bmMoKTtcbiAgICAgICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWxpZGF0ZWRWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIE9ubHkgYSBWQUxJREFUSU9OIGZhaWx1cmUgcmVhY2hlcyBvbkZpbmlzaEZhaWxlZCDigJQgYW4gZXhjZXB0aW9uIG91dFxuICAgICAgICAgICAgLy8gb2YgdGhlIGNvbnN1bWVyJ3Mgb3duIG9uRmluaXNoIGlzIG5vdCBhIHZhbGlkYXRpb24gcmVzdWx0IGFuZCBpc1xuICAgICAgICAgICAgLy8gc3VyZmFjZWQgaW5zdGVhZCBvZiBiZWluZyBtaXNyZXBvcnRlZC5cbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBGb3JtVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgb25GaW5pc2hGYWlsZWQgPT09IG51bGwgfHwgb25GaW5pc2hGYWlsZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoRmFpbGVkKHsgdmFsdWVzOiBlcnIudmFsdWVzLCBlcnJvcnM6IGVyci5lcnJvcnMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbUHJvRm9ybV0gb25GaW5pc2ggdGhyZXcgZHVyaW5nIHN1Ym1pdDonLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZm9ybUNvcmUucmVzZXRGaWVsZHMoKTtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gRm9ybUluc3RhbmNlIOKAkyBlbmhhbmNlZCBBUEkgZm9yIGNvbnN1bWVycy5cbiAgICAvL1xuICAgIC8vIEV2ZXJ5IG1ldGhvZCBpcyB3cmFwcGVkIGluIHVzZU1lbW9pemVkRm4gKHN0YWJsZSBpZGVudGl0eSwgYWx3YXlzIHJlYWRzIHRoZVxuICAgIC8vIGxhdGVzdCBzdG9yZSBzdGF0ZSkgc28gdGhlIGluc3RhbmNlIG9iamVjdCBpdHNlbGYgaXMgSURFTlRJVFktU1RBQkxFIGZvclxuICAgIC8vIHRoZSBsaWZldGltZSBvZiB0aGUgZm9ybSDigJQgdGhpcyBpcyB3aGF0IGxldHMgUHJvRm9ybSBwdWJsaXNoIGl0IHRocm91Z2ggdGhlXG4gICAgLy8gc3RhYmxlIGNvbnRleHQgd2l0aG91dCByZS1yZW5kZXJpbmcgc3Vic2NyaWJlcnMgb24gZWFjaCBrZXlzdHJva2UuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgZ2V0RmllbGRFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzW25hbWVdKTtcbiAgICBjb25zdCBnZXRGaWVsZFdhcm5pbmcgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzW25hbWVdKTtcbiAgICBjb25zdCBnZXRGaWVsZHNFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWVMaXN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzO1xuICAgICAgICBpZiAoIW5hbWVMaXN0KVxuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIG5hbWVMaXN0LmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBlcnJvcnNbbmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICAgIGNvbnN0IGlzRmllbGRUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkW25hbWVdIHx8IGZhbHNlKTtcbiAgICBjb25zdCBpc0ZpZWxkc1RvdWNoZWQgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCwgYWxsRmllbGRzVG91Y2hlZCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIGlmICghbmFtZUxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0b3VjaGVkKS5zb21lKChrZXkpID0+IHRvdWNoZWRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbEZpZWxkc1RvdWNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lTGlzdC5ldmVyeSgobmFtZSkgPT4gdG91Y2hlZFtuYW1lXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWVMaXN0LnNvbWUoKG5hbWUpID0+IHRvdWNoZWRbbmFtZV0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGlzRmllbGRWYWxpZGF0aW5nID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS52YWxpZGF0aW5nW25hbWVdIHx8IGZhbHNlKTtcbiAgICBjb25zdCBzZXRGaWVsZHNFcnJvciA9IHVzZU1lbW9pemVkRm4oKGZpZWxkc0Vycm9yKSA9PiB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGZpZWxkc0Vycm9yKS5mb3JFYWNoKChbbmFtZSwgZXJyb3JdKSA9PiB7XG4gICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgaXNUb3VjaGVkID0gdHJ1ZSkgPT4ge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkKSwgeyBbbmFtZV06IGlzVG91Y2hlZCB9KSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZHNUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigoZmllbGRzVG91Y2gpID0+IHtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZCksIGZpZWxkc1RvdWNoKSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCByZXNldEZvcm1GaWVsZHMgPSB1c2VNZW1vaXplZEZuKChmaWVsZHMpID0+IHtcbiAgICAgICAgaWYgKCFmaWVsZHMpIHtcbiAgICAgICAgICAgIGZvcm1Db3JlLnJlc2V0RmllbGRzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gTW91bnQtZnJvemVuIGluaXRpYWxWYWx1ZXMg4oCUIGNvbnNpc3RlbnQgd2l0aCB0aGUgZnVsbCByZXNldEZpZWxkcy5cbiAgICAgICAgLy8gUmVhZHMgQU5EIHdyaXRlcyBhcmUgbmVzdGVkLXBhdGggYXdhcmUsIHNvIGRvdC1wYXRoIG5hbWVzXG4gICAgICAgIC8vIChgYWRkcmVzcy5jaXR5YCwgYGl0ZW1zLjAudGl0bGVgKSByZXNldCBjb3JyZWN0bHkgaW5zdGVhZCBvZiBwcm9iaW5nIGFcbiAgICAgICAgLy8gbGl0ZXJhbCBrZXkgYW5kIHNoYWxsb3ctbWVyZ2luZyBvbmUgYmFjay5cbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IGZvcm1Db3JlLmdldEluaXRpYWxWYWx1ZXMoKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBsZXQgbmV3VmFsdWVzID0gc3RhdGUudmFsdWVzO1xuICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWwgPSByZXNvbHZlVmFsdWUoaW5pdGlhbFZhbHVlcywgZmllbGQpO1xuICAgICAgICAgICAgbmV3VmFsdWVzID0gZmllbGQuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgICAgID8gc2V0TmVzdGVkVmFsdWUobmV3VmFsdWVzLCBmaWVsZCwgaW5pdGlhbClcbiAgICAgICAgICAgICAgICA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbmV3VmFsdWVzKSwgeyBbZmllbGRdOiBpbml0aWFsIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gTGlrZSB0aGUgZnVsbCByZXNldDogY2xlYXIgQUxMIHBlci1maWVsZCBtZXRhIChlcnJvcnMgQU5EIHdhcm5pbmdzIEFORFxuICAgICAgICAvLyB0b3VjaGVkL3ZhbGlkYXRpbmcpLCBpbnZhbGlkYXRlIGluLWZsaWdodCB2YWxpZGF0aW9uIHJ1bnMsIGFuZCBsYW5kXG4gICAgICAgIC8vIGV2ZXJ5dGhpbmcgaW4gT05FIGNvbW1pdC4gTm8gb25WYWx1ZXNDaGFuZ2Ug4oCUIHJlc2V0IGlzIG5vdCBhIGNoYW5nZVxuICAgICAgICAvLyBldmVudCBvbiBlaXRoZXIgcGF0aC5cbiAgICAgICAgZm9ybUNvcmUuaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zKGZpZWxkcyk7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmVycm9ycyk7XG4gICAgICAgIGNvbnN0IG5ld1dhcm5pbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUud2FybmluZ3MpO1xuICAgICAgICBjb25zdCBuZXdUb3VjaGVkID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUudG91Y2hlZCk7XG4gICAgICAgIGNvbnN0IG5ld1ZhbGlkYXRpbmcgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS52YWxpZGF0aW5nKTtcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW2ZpZWxkXTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tmaWVsZF07XG4gICAgICAgICAgICBkZWxldGUgbmV3VG91Y2hlZFtmaWVsZF07XG4gICAgICAgICAgICBkZWxldGUgbmV3VmFsaWRhdGluZ1tmaWVsZF07XG4gICAgICAgIH0pO1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB2YWx1ZXM6IG5ld1ZhbHVlcyxcbiAgICAgICAgICAgIGVycm9yczogbmV3RXJyb3JzLFxuICAgICAgICAgICAgd2FybmluZ3M6IG5ld1dhcm5pbmdzLFxuICAgICAgICAgICAgdG91Y2hlZDogbmV3VG91Y2hlZCxcbiAgICAgICAgICAgIHZhbGlkYXRpbmc6IG5ld1ZhbGlkYXRpbmcsXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHN1Ym1pdFdpdGhWYWxpZGF0aW9uID0gdXNlTWVtb2l6ZWRGbigoY2FsbGJhY2spID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgdmFsaWRhdGVkVmFsdWVzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsaWRhdGVkVmFsdWVzID0geWllbGQgdmFsaWRhdGVGaWVsZHNBc3luYygpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgLy8gVmFsaWRhdGlvbiBmYWlsdXJlIOKAlCB0aGUgZmllbGQgZXJyb3JzIGFyZSBhbHJlYWR5IGluIHRoZSBzdG9yZS5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGNhbGxiYWNrKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQSB0aHJvd2luZyBjYWxsYmFjayBpcyBhIGNvbnN1bWVyIGJ1Zywgbm90IGEgdmFsaWRhdGlvbiBmYWlsdXJlIOKAlFxuICAgICAgICAgICAgICAgIC8vIHN1cmZhY2UgaXQgKG1pcnJvcmluZyByYy1maWVsZC1mb3JtJ3Mgb25GaW5pc2ggaGFuZGxpbmcpIGluc3RlYWRcbiAgICAgICAgICAgICAgICAvLyBvZiBzd2FsbG93aW5nIGl0IHNpbGVudGx5LlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSBzdWJtaXQgY2FsbGJhY2sgdGhyZXc6JywgZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZWRWYWx1ZXM7XG4gICAgfSkpO1xuICAgIGNvbnN0IGZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUNvcmUuZm9ybUluc3RhbmNlKSwgeyB2YWxpZGF0ZUZpZWxkczogdmFsaWRhdGVGaWVsZHNBc3luYywgc2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSwgZ2V0RmllbGRFcnJvcixcbiAgICAgICAgZ2V0RmllbGRXYXJuaW5nLFxuICAgICAgICBnZXRGaWVsZHNFcnJvcixcbiAgICAgICAgaXNGaWVsZFRvdWNoZWQsXG4gICAgICAgIGlzRmllbGRzVG91Y2hlZCxcbiAgICAgICAgaXNGaWVsZFZhbGlkYXRpbmcsIHNldEZpZWxkRXJyb3I6IGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsIHNldEZpZWxkc0Vycm9yLFxuICAgICAgICBzZXRGaWVsZFRvdWNoZWQsXG4gICAgICAgIHNldEZpZWxkc1RvdWNoZWQsIHJlc2V0RmllbGRzOiByZXNldEZvcm1GaWVsZHMsIHN1Ym1pdDogc3VibWl0V2l0aFZhbGlkYXRpb24sIGRlZmluZUZpZWxkLCByZWdpc3RlckZpZWxkOiBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLCB1bnJlZ2lzdGVyRmllbGQ6IGZvcm1Db3JlLnVucmVnaXN0ZXJGaWVsZCB9KSksIFtcbiAgICAgICAgZm9ybUNvcmUuZm9ybUluc3RhbmNlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLFxuICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzQXN5bmMsXG4gICAgICAgIGdldEZpZWxkRXJyb3IsXG4gICAgICAgIGdldEZpZWxkV2FybmluZyxcbiAgICAgICAgZ2V0RmllbGRzRXJyb3IsXG4gICAgICAgIGlzRmllbGRUb3VjaGVkLFxuICAgICAgICBpc0ZpZWxkc1RvdWNoZWQsXG4gICAgICAgIGlzRmllbGRWYWxpZGF0aW5nLFxuICAgICAgICBzZXRGaWVsZHNFcnJvcixcbiAgICAgICAgc2V0RmllbGRUb3VjaGVkLFxuICAgICAgICBzZXRGaWVsZHNUb3VjaGVkLFxuICAgICAgICByZXNldEZvcm1GaWVsZHMsXG4gICAgICAgIHN1Ym1pdFdpdGhWYWxpZGF0aW9uLFxuICAgICAgICBkZWZpbmVGaWVsZCxcbiAgICBdKTtcbiAgICAvLyBGdW5jdGlvbi1mb3JtIHJ1bGVzIGdldCB0aGUgRlVMTCBmb3JtIGluc3RhbmNlIChlcnJvciBnZXR0ZXJzLCB0b3VjaGVkXG4gICAgLy8gc3RhdGUsIG11dGF0b3JzKSBpbnN0ZWFkIG9mIHRoZSBiYXJlIGNvcmUgbWV0aG9kcy4gUmVmIHdyaXRlIOKAlCBjaGVhcCBhbmRcbiAgICAvLyBpZGVtcG90ZW50IHBlciByZW5kZXIuXG4gICAgZm9ybUNvcmUuc2V0UnVsZUNvbnRleHRJbnN0YW5jZShmb3JtSW5zdGFuY2UpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEludGVybmFscyDigJMgZXhwb3NlZCBmb3IgUHJvRm9ybSBpbnRlZ3JhdGlvbi4gRGF0YSBmaWVsZHMgYXJlIEdFVFRFUlMgdGhhdFxuICAgIC8vIHJlYWQgdGhlIGxpdmUgc3RvcmUsIHNvIHRoZSBvYmplY3QgaXMgaWRlbnRpdHktc3RhYmxlIHlldCBuZXZlciBzdGFsZS5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBpbnRlcm5hbHMgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIGdldCB2YWx1ZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS52YWx1ZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvcnMoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS5lcnJvcnM7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB3YXJuaW5ncygpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdG91Y2hlZCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2YWxpZGF0aW5nKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkudmFsaWRhdGluZztcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRSdWxlczogZm9ybUNvcmUuZmllbGRSdWxlcyxcbiAgICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcjogZm9ybUNvcmUuc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nOiBmb3JtQ29yZS5zZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIHZhbGlkYXRlRmllbGQ6IGZvcm1Db3JlLnZhbGlkYXRlRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkOiBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHJldGFpbkZpZWxkOiBmb3JtQ29yZS5yZXRhaW5GaWVsZCxcbiAgICAgICAgcmVsZWFzZUZpZWxkOiBmb3JtQ29yZS5yZWxlYXNlRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgfSksIFtcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIGZvcm1Db3JlLmZpZWxkUnVsZXMsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgZm9ybUNvcmUudmFsaWRhdGVGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnJldGFpbkZpZWxkLFxuICAgICAgICBmb3JtQ29yZS5yZWxlYXNlRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgXSk7XG4gICAgcmV0dXJuIHsgZm9ybUluc3RhbmNlLCBpbnRlcm5hbHMsIHN0b3JlIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgdXNlRm9ybTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
808
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtLnRzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvaG9va3MvdXNlRm9ybS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfdXNlRXZlbnRDYWxsYmFjayIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlTWVtb2l6ZWRGbiIsIl91c2VGb3JtQ29yZSIsIl9wYXRoVXRpbHMiLCJfcnVuUnVsZXMiLCJfZm9ybVN0b3JlIiwiX3ZhbGlkYXRpb25FcnJvciIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJyZWplY3RlZCIsInJlc3VsdCIsInRoZW4iLCJhcHBseSIsIl9fcmVzdCIsInAiLCJwcm90b3R5cGUiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJhc1J1bGVBcnJheSIsInJ1bGUiLCJydWxlSGFzVmFsaWRhdG9yIiwidmFsaWRhdG9yIiwiZGVmYXVsdEZpZWxkIiwic29tZSIsImZpZWxkcyIsInZhbHVlcyIsInN1YiIsImhhc1Jlc29sdmVkVmFsaWRhdG9yIiwicmVzb2x2ZWQiLCJ1c2VGb3JtIiwiZXhwb3J0cyIsImNvbmZpZyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIm9uRmluaXNoIiwib25GaW5pc2hGYWlsZWQiLCJvblJlc2V0IiwiX2NvbmZpZyR2YWxpZGF0ZVRyaWdnIiwidmFsaWRhdGVUcmlnZ2VyIiwiZm9ybUNvcmUiLCJ1c2VGb3JtQ29yZSIsInN0b3JlIiwibGFzdEFzeW5jRXBvY2hSZWYiLCJ1c2VSZWYiLCJtYXJrVmFsaWRhdGluZyIsInVzZU1lbW9pemVkRm4iLCJuYW1lcyIsImFzc2lnbiIsImdldFN0YXRlIiwidmFsaWRhdGluZyIsImZvckVhY2giLCJzZXRTdGF0ZSIsImNvbW1pdFJ1bGVPdXRjb21lcyIsIm91dGNvbWVzIiwiY2xlYXJWYWxpZGF0aW5nIiwic3RhdGUiLCJlcnJvcnNDaGFuZ2VkIiwid2FybmluZ3NDaGFuZ2VkIiwibmV3RXJyb3JzIiwiZXJyb3JzIiwibmV3V2FybmluZ3MiLCJ3YXJuaW5ncyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX3N0ZXAkdmFsdWUiLCJlcnJvciIsIndhcm5pbmciLCJzYW1lVmFsaWRhdGlvbk5vZGUiLCJlcnIiLCJmbGFnc1RvQ2xlYXIiLCJmaWx0ZXIiLCJwYXRjaCIsIm5ld1ZhbGlkYXRpbmciLCJrZXlzIiwidmFsaWRhdGVGaWVsZEFzeW5jIiwicnVsZXMiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9hIiwiZXBvY2giLCJmbGFnZ2VkIiwib3V0Y29tZSIsIl95aWVsZCRydW5SdWxlc0FzeW5jIiwiaXNDdXJyZW50IiwiY2xlYXJGbGFncyIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsImFicnVwdCIsImlzVmFsaWQiLCJiZWdpblZhbGlkYXRpb25SdW4iLCJnZXRGaWVsZHNWYWx1ZSIsInJlc29sdmVSdWxlcyIsImdldFJ1bGVDb250ZXh0SW5zdGFuY2UiLCJmbGFnZ2VkTmFtZSIsImN1cnJlbnQiLCJydW5SdWxlc0FzeW5jIiwic2VudCIsImNvZXJjZUZhaWx1cmVSZWFzb24iLCJpc1ZhbGlkYXRpb25SdW5DdXJyZW50IiwiZmluaXNoIiwic3RvcCIsImhhbmRsZUZpZWxkQmx1ciIsInVzZUV2ZW50Q2FsbGJhY2siLCJmaWVsZFRyaWdnZXIiLCJfY2FsbGVlMiIsInRvdWNoZWQiLCJhcHBsaWNhYmxlIiwiX2NvbnRleHQyIiwiX2RlZmluZVByb3BlcnR5MiIsImdldEZpZWxkUnVsZXMiLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsIm5vcm1hbGl6ZVRyaWdnZXJzIiwicmVzb2x2ZVZhbHVlIiwidmFsaWRhdGVGaWVsZHNBc3luYyIsIm5hbWVMaXN0IiwiX2NhbGxlZTQiLCJmaWVsZHNUb1ZhbGlkYXRlIiwiZmllbGRFcnJvcnMiLCJyZXNvbHZlZEJ5RmllbGQiLCJlcG9jaEJ5RmllbGQiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX2NvbnRleHQ0IiwiZmllbGRSdWxlcyIsIk1hcCIsImFsbCIsIm1hcCIsIl9jYWxsZWUzIiwiX3lpZWxkJHJ1blJ1bGVzQXN5bmMyIiwiX3QyIiwiX2NvbnRleHQzIiwicHVzaCIsIkZvcm1WYWxpZGF0aW9uRXJyb3IiLCJyZWR1Y2UiLCJhY2MiLCJkZWZpbmVGaWVsZCIsImZpZWxkT3B0aW9ucyIsIl9maWVsZE9wdGlvbnMkcnVsZXMiLCJGaWVsZENvbXBvbmVudCIsIm1lbW8iLCJjaGlsZHJlbiIsInJlbmRlciIsInByb3BzIiwiX3VzZVN0b3JlU2VsZWN0b3IiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsQXJyYXlzIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZmllbGRWYWx1ZSIsImZpZWxkRXJyb3IiLCJmaWVsZFRvdWNoZWQiLCJmaWVsZFZhbGlkYXRpbmciLCJ1c2VFZmZlY3QiLCJyZXRhaW5GaWVsZCIsImV4aXN0aW5nUnVsZXMiLCJyZWdpc3RlckZpZWxkIiwicmVsZWFzZUZpZWxkIiwiaGFuZGxlRmllbGRDaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwiaGFuZGxlQmx1ciIsImZpZWxkUHJvcHMiLCJvbkNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZU1lcmdlQ2hhbmdlIiwiX3R5cGVvZjIiLCJ0YXJnZXQiLCJSZWFjdCIsImlzVmFsaWRFbGVtZW50IiwiaGFuZGxlTWVyZ2VCbHVyIiwiZG9tU2FmZVByb3BzIiwiY2xvbmVFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNoaWxkIiwiaW5kZXgiLCJrZXkiLCJkaXNwbGF5TmFtZSIsImhhbmRsZVN1Ym1pdCIsIl9jYWxsZWU1IiwidmFsaWRhdGVkVmFsdWVzIiwiX3QzIiwiX2NvbnRleHQ1IiwicHJldmVudERlZmF1bHQiLCJjb25zb2xlIiwiaGFuZGxlUmVzZXQiLCJyZXNldEZpZWxkcyIsImdldEZpZWxkRXJyb3IiLCJnZXRGaWVsZFdhcm5pbmciLCJnZXRGaWVsZHNFcnJvciIsImlzRmllbGRUb3VjaGVkIiwiaXNGaWVsZHNUb3VjaGVkIiwiYWxsRmllbGRzVG91Y2hlZCIsImV2ZXJ5IiwiaXNGaWVsZFZhbGlkYXRpbmciLCJzZXRGaWVsZHNFcnJvciIsImZpZWxkc0Vycm9yIiwiZW50cmllcyIsIl9yZWYiLCJfcmVmMiIsInNldEZpZWxkRXJyb3IiLCJzZXRGaWVsZFRvdWNoZWQiLCJpc1RvdWNoZWQiLCJzZXRGaWVsZHNUb3VjaGVkIiwiZmllbGRzVG91Y2giLCJyZXNldEZvcm1GaWVsZHMiLCJpbml0aWFsVmFsdWVzIiwiZ2V0SW5pdGlhbFZhbHVlcyIsIm5ld1ZhbHVlcyIsImZpZWxkIiwiaW5pdGlhbCIsImluY2x1ZGVzIiwic2V0TmVzdGVkVmFsdWUiLCJpbnZhbGlkYXRlVmFsaWRhdGlvblJ1bnMiLCJuZXdUb3VjaGVkIiwic3VibWl0V2l0aFZhbGlkYXRpb24iLCJjYWxsYmFjayIsIl9jYWxsZWU2IiwiX3Q0IiwiX3Q1IiwiX2NvbnRleHQ2IiwiZm9ybUluc3RhbmNlIiwidXNlTWVtbyIsImdldEZpZWxkVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkcyIsInNldEZpZWxkc1ZhbHVlIiwic3VibWl0IiwidW5yZWdpc3RlckZpZWxkIiwic2V0UnVsZUNvbnRleHRJbnN0YW5jZSIsImludGVybmFscyIsInNldEZpZWxkV2FybmluZyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFNBQUEsR0FBQU4sT0FBQTtBQU9BLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGdCQUFBLEdBQUFSLE9BQUE7QUFBeUQsU0FBQVMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFYLHdCQUFBVyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLFFBQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFB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QUFZLEVBQVpBLFlBQVk7TUFDWk8sV0FBVyxFQUFYQTtJQzVKRixDRDZKQztFQUFBLENBQUMsRUFDRixDQUNFcEosS0FBSyxFQUNMRixRQUFRLENBQUN1RixVQUFVLEVBQ25CdkYsUUFBUSxDQUFDMEgsYUFBYSxFQUN0QjFILFFBQVEsQ0FBQ3FLLGFBQWEsRUFDdEJySyxRQUFRLENBQUNtTSxlQUFlLEVBQ3hCaEssa0JBQWtCLEVBQ2xCbkMsUUFBUSxDQUFDdUgsYUFBYSxFQUN0QnZILFFBQVEsQ0FBQ2dNLGVBQWUsRUFDeEJoTSxRQUFRLENBQUNxSCxXQUFXLEVBQ3BCckgsUUFBUSxDQUFDd0gsWUFBWSxFQUNyQnVCLFlBQVksRUFDWk8sV0FBVyxDQUNaLENBQ0Y7RUFFRCxPQUFPO0lBQUVvQyxZQUFZLEVBQVpBLFlBQVk7SUFBRVEsU0FBUyxFQUFUQSxTQUFTO0lBQUVoTSxLQUFLLEVBQUxBO0VBQUssQ0FBRTtBQUMzQyxDQUFDO0FBQUMsSUFBQWtNLFFBQUEsR0FBQTdNLE9BQUEsY0FFYUQsT0FBTyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IHVzZU1lbW8sIHVzZUVmZmVjdCwgdXNlUmVmLCBtZW1vLCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IHVzZUZvcm1Db3JlIH0gZnJvbSAnLi91c2VGb3JtQ29yZSc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUsIHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi4vcGF0aFV0aWxzJztcbmltcG9ydCB7IGNvZXJjZUZhaWx1cmVSZWFzb24sIGZpbHRlclJ1bGVzQnlUcmlnZ2VyLCBub3JtYWxpemVUcmlnZ2VycywgcmVzb2x2ZVJ1bGVzLCBydW5SdWxlc0FzeW5jLCB9IGZyb20gJy4uL3J1blJ1bGVzJztcbmltcG9ydCB7IHVzZVN0b3JlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbEFycmF5cywgc2FtZVZhbGlkYXRpb25Ob2RlIH0gZnJvbSAnLi4vZm9ybVN0b3JlJztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uRXJyb3InO1xuLyoqXG4gKiBPbmx5IHJ1bGVzIHdpdGggYSBjdXN0b20gYHZhbGlkYXRvcmAgY2FuIGJlIGdlbnVpbmVseSBhc3luY2hyb25vdXMg4oCUXG4gKiBidWlsdGluIHJ1bGVzIHJlc29sdmUgd2l0aGluIGEgbWljcm90YXNrLCBzbyBmbGlwcGluZyBgdmFsaWRhdGluZ2AgZm9yXG4gKiB0aGVtIHdvdWxkIG9ubHkgY2h1cm4gc3Vic2NyaWJlcnMgd2l0aG91dCBldmVyIGJlaW5nIHZpc2libGUuIERlY2lkZWQgb25cbiAqIFJFU09MVkVEIHJ1bGVzOiBhIGZ1bmN0aW9uLWZvcm0gcnVsZSB0aGF0IHJlc29sdmVzIHRvIGJ1aWx0aW4tb25seSBjaGVja3NcbiAqIG11c3Qgbm90IGZsaWNrZXIgdGhlIGZsYWcuXG4gKlxuICogVGhlIGFzeW5jIGVuZ2luZSBhd2FpdHMgdmFsaWRhdG9ycyBuZXN0ZWQgaW5zaWRlIGBmaWVsZHNgIC8gYGRlZmF1bHRGaWVsZGBcbiAqIHRvbywgc28gdGhlIGRlY2lzaW9uIG11c3QgZGVzY2VuZCB0aGUgc2FtZSB3YXkg4oCUIG90aGVyd2lzZSBhIGRlZXAtb25seVxuICogdmFsaWRhdG9yIChlLmcuIGB7IGRlZmF1bHRGaWVsZDogeyB2YWxpZGF0b3IgfSB9YCkgcnVucyBwZW5kaW5nIHdpdGggdGhlXG4gKiBmbGFnIHN0dWNrIGZhbHNlLCBhbmQgYGlzRmllbGRWYWxpZGF0aW5nKG5hbWUpYCB1bmRlci1yZXBvcnRzIGZvciB0aGUgd2hvbGVcbiAqIHdpbmRvdy4gT3Zlci1mbGFnZ2luZyB3aGVuIHRoZSBkZWVwIHZhbGlkYXRvciB3b24ndCBhY3R1YWxseSBmaXJlIChlbXB0eSAvXG4gKiBwcmltaXRpdmUgdmFsdWUpIGlzIGFjY2VwdGFibGU6IHRoZSBmbGFnIGlzIGRlY2lkZWQgb24gcnVsZSBTSEFQRSwgZXhhY3RseVxuICogYXMgdGhlIHRvcC1sZXZlbCBjYXNlIGFscmVhZHkgb3Zlci1mbGFncyBhIHZhbGlkYXRvciBzaG9ydC1jaXJjdWl0ZWQgYnkgYW5cbiAqIGVhcmxpZXIgYnVpbHRpbiBmYWlsdXJlOyB0aGUgcnVuIGNsZWFycyBpdCBvbiBzZXR0bGUgZWl0aGVyIHdheS5cbiAqL1xuY29uc3QgYXNSdWxlQXJyYXkgPSAocnVsZSkgPT4gcnVsZSA/IChBcnJheS5pc0FycmF5KHJ1bGUpID8gcnVsZSA6IFtydWxlXSkgOiBbXTtcbmNvbnN0IHJ1bGVIYXNWYWxpZGF0b3IgPSAocnVsZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmIChhc1J1bGVBcnJheShydWxlLmRlZmF1bHRGaWVsZCkuc29tZShydWxlSGFzVmFsaWRhdG9yKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKHJ1bGUuZmllbGRzKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHJ1bGUuZmllbGRzKS5zb21lKChzdWIpID0+IGFzUnVsZUFycmF5KHN1Yikuc29tZShydWxlSGFzVmFsaWRhdG9yKSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5jb25zdCBoYXNSZXNvbHZlZFZhbGlkYXRvciA9IChyZXNvbHZlZCkgPT4gcmVzb2x2ZWQuc29tZShydWxlSGFzVmFsaWRhdG9yKTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gdXNlRm9ybVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgY29uc3QgdXNlRm9ybSA9IChjb25maWcgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHsgb25GaW5pc2gsIG9uRmluaXNoRmFpbGVkLCBvblJlc2V0LCB2YWxpZGF0ZVRyaWdnZXIgPSAnb25DaGFuZ2UnLCB9ID0gY29uZmlnO1xuICAgIGNvbnN0IGZvcm1Db3JlID0gdXNlRm9ybUNvcmUoY29uZmlnKTtcbiAgICBjb25zdCB7IHN0b3JlIH0gPSBmb3JtQ29yZTtcbiAgICAvLyBFcG9jaCBvZiB0aGUgTEFURVNUIGFzeW5jIHJ1biB0aGF0IHJhaXNlZCBlYWNoIGZpZWxkJ3MgYHZhbGlkYXRpbmdgIGZsYWcuXG4gICAgLy8gQSBzZXR0bGluZyBydW4gY2xlYXJzIHRoZSBmbGFnIG9ubHkgd2hpbGUgaXQgaXMgc3RpbGwgdGhlIGxhdGVzdCByYWlzZXIg4oCUXG4gICAgLy8gYW4gb2xkZXIgcnVuIG11c3Qgbm90IGJsYW5rIHRoZSBzcGlubmVyIG9mIGEgbmV3ZXIgb25lLCBhbmQgYSBydW5cbiAgICAvLyBzdXBlcnNlZGVkIGJ5IGEgU1lOQyBjb21taXQgKHdoaWNoIG5ldmVyIHRvdWNoZXMgZmxhZ3MpIG11c3Qgc3RpbGwgY2xlYW5cbiAgICAvLyB1cCBhZnRlciBpdHNlbGYuXG4gICAgY29uc3QgbGFzdEFzeW5jRXBvY2hSZWYgPSB1c2VSZWYoe30pO1xuICAgIC8vIE1hcmsgZmllbGRzIGFzIHZhbGlkYXRpbmcgaW4gT05FIGNvbW1pdC4gdmFsaWRhdGluZyAvIHRvdWNoZWQgbGl2ZSBpbiB0aGVcbiAgICAvLyBzdG9yZSBhbG9uZ3NpZGUgdmFsdWVzIOKAlCBmbGlwcGluZyB0aGVtIChlLmcuIGFzeW5jIHZhbGlkYXRpb24gYXJvdW5kIGFcbiAgICAvLyBibHVyKSBtdXN0IG5vdCByZS1yZW5kZXIgdGhlIGZvcm0gcm9vdCwgb25seSB0aGUgZmllbGRzIHRoYXQgc3Vic2NyaWJlZC5cbiAgICBjb25zdCBtYXJrVmFsaWRhdGluZyA9IHVzZU1lbW9pemVkRm4oKG5hbWVzKSA9PiB7XG4gICAgICAgIGlmIChuYW1lcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5leHQgPSBPYmplY3QuYXNzaWduKHt9LCBzdG9yZS5nZXRTdGF0ZSgpLnZhbGlkYXRpbmcpO1xuICAgICAgICBuYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBuZXh0W25hbWVdID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKHsgdmFsaWRhdGluZzogbmV4dCB9KTtcbiAgICB9KTtcbiAgICAvLyBGb2xkIHBlci1maWVsZCBydWxlIG91dGNvbWVzIGludG8gQVQgTU9TVCBvbmUgc3RvcmUgY29tbWl0OiBlcnJvcnMgYW5kXG4gICAgLy8gd2FybmluZ3MgYXJlIG1lcmdlZCBvdmVyIHRoZSBjdXJyZW50IG1hcHMgYW5kIHRoZSBgY2xlYXJWYWxpZGF0aW5nYCBmbGFnc1xuICAgIC8vIGFyZSByZW1vdmVkIGluIHRoZSBTQU1FIHBhdGNoLiBBIG5vLW9wIG91dGNvbWUgY29tbWl0cyBub3RoaW5nIGF0IGFsbCDigJRcbiAgICAvLyBwZXItZmllbGQgY29tbWl0cyBoZXJlIHByZXZpb3VzbHkgbWFkZSBzdWJtaXQtdGltZSB2YWxpZGF0aW9uIHN3ZWVwIGV2ZXJ5XG4gICAgLy8gc3Vic2NyaWJlciBPKGZpZWxkcykgdGltZXMuXG4gICAgY29uc3QgY29tbWl0UnVsZU91dGNvbWVzID0gdXNlTWVtb2l6ZWRGbigob3V0Y29tZXMsIGNsZWFyVmFsaWRhdGluZykgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGxldCBlcnJvcnNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGxldCB3YXJuaW5nc0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuZXJyb3JzKTtcbiAgICAgICAgY29uc3QgbmV3V2FybmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS53YXJuaW5ncyk7XG4gICAgICAgIGZvciAoY29uc3QgeyBuYW1lLCBlcnJvciwgd2FybmluZyB9IG9mIG91dGNvbWVzKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobmFtZSBpbiBuZXdFcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXNhbWVWYWxpZGF0aW9uTm9kZShuZXdFcnJvcnNbbmFtZV0sIGVycm9yKSkge1xuICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tuYW1lXSA9IGVycm9yO1xuICAgICAgICAgICAgICAgIGVycm9yc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhcm5pbmcgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobmFtZSBpbiBuZXdXYXJuaW5ncykge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3V2FybmluZ3NbbmFtZV07XG4gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXNhbWVWYWxpZGF0aW9uTm9kZShuZXdXYXJuaW5nc1tuYW1lXSwgd2FybmluZykpIHtcbiAgICAgICAgICAgICAgICBuZXdXYXJuaW5nc1tuYW1lXSA9IHdhcm5pbmc7XG4gICAgICAgICAgICAgICAgd2FybmluZ3NDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmbGFnc1RvQ2xlYXIgPSBjbGVhclZhbGlkYXRpbmcuZmlsdGVyKChuYW1lKSA9PiBuYW1lIGluIHN0YXRlLnZhbGlkYXRpbmcpO1xuICAgICAgICBjb25zdCBwYXRjaCA9IHt9O1xuICAgICAgICBpZiAoZXJyb3JzQ2hhbmdlZClcbiAgICAgICAgICAgIHBhdGNoLmVycm9ycyA9IG5ld0Vycm9ycztcbiAgICAgICAgaWYgKHdhcm5pbmdzQ2hhbmdlZClcbiAgICAgICAgICAgIHBhdGNoLndhcm5pbmdzID0gbmV3V2FybmluZ3M7XG4gICAgICAgIGlmIChmbGFnc1RvQ2xlYXIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsaWRhdGluZyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnZhbGlkYXRpbmcpO1xuICAgICAgICAgICAgZmxhZ3NUb0NsZWFyLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3VmFsaWRhdGluZ1tuYW1lXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcGF0Y2gudmFsaWRhdGluZyA9IG5ld1ZhbGlkYXRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHBhdGNoKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUocGF0Y2gpO1xuICAgIH0pO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFzeW5jIGZpZWxkIHZhbGlkYXRpb24g4oCTIGVhY2ggcnVsZSBpcyBwcm9jZXNzZWQgZXhhY3RseSBvbmNlXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZEFzeW5jID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWUsIHJ1bGVzKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIXJ1bGVzIHx8IHJ1bGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGVycm9yOiBudWxsIH07XG4gICAgICAgIC8vIENhcHR1cmUgdGhpcyBydW4ncyBlcG9jaDogaWYgYSBORVdFUiBydW4gKHN5bmMgb3IgYXN5bmMpIHN0YXJ0cyBmb3JcbiAgICAgICAgLy8gdGhlIGZpZWxkIGJlZm9yZSB0aGlzIG9uZSBzZXR0bGVzLCB0aGUgb3V0Y29tZSBiZWxvdyBpcyBzdGFsZSBhbmQgaXNcbiAgICAgICAgLy8gZGlzY2FyZGVkIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmcgdGhlIG5ld2VyIHJlc3VsdC5cbiAgICAgICAgY29uc3QgZXBvY2ggPSBmb3JtQ29yZS5iZWdpblZhbGlkYXRpb25SdW4obmFtZSk7XG4gICAgICAgIC8vIFJlc29sdmUgb25jZTogdGhlIGZsYWcgZGVjaXNpb24gbmVlZHMgcmVzb2x2ZWQgcnVsZXMsIGFuZCBwYXNzaW5nIHRoZVxuICAgICAgICAvLyByZXNvbHZlZCBhcnJheSBvbndhcmQgc3BhcmVzIHRoZSBlbmdpbmUgYSByZS1yZXNvbHV0aW9uLlxuICAgICAgICBjb25zdCB2YWx1ZXMgPSBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpO1xuICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpO1xuICAgICAgICBjb25zdCBmbGFnZ2VkID0gaGFzUmVzb2x2ZWRWYWxpZGF0b3IocmVzb2x2ZWQpID8gW25hbWVdIDogW107XG4gICAgICAgIG1hcmtWYWxpZGF0aW5nKGZsYWdnZWQpO1xuICAgICAgICBmbGFnZ2VkLmZvckVhY2goKGZsYWdnZWROYW1lKSA9PiB7XG4gICAgICAgICAgICBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W2ZsYWdnZWROYW1lXSA9IGVwb2NoO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IG91dGNvbWUgPSB7IG5hbWUsIGVycm9yOiBudWxsLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7IGVycm9yLCB3YXJuaW5nIH0gPSB5aWVsZCBydW5SdWxlc0FzeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXMsIHJlc29sdmVkLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpO1xuICAgICAgICAgICAgb3V0Y29tZSA9IHsgbmFtZSwgZXJyb3IsIHdhcm5pbmcgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBUaGUgZW5naW5lIGNvbnRhaW5zIHJ1bGUtbGV2ZWwgdGhyb3dzIGl0c2VsZjsgdGhpcyBpcyBhIGxhc3QtcmVzb3J0XG4gICAgICAgICAgICAvLyBuZXQgc28gYW4gdW5leHBlY3RlZCBmYWlsdXJlIHN1cmZhY2VzIGFzIGEgZmllbGQgZXJyb3IgaW5zdGVhZCBvZlxuICAgICAgICAgICAgLy8gbGVhdmluZyB0aGUgZmllbGQgbWFya2VkIHZhbGlkLlxuICAgICAgICAgICAgb3V0Y29tZSA9IHsgbmFtZSwgZXJyb3I6IChfYSA9IGNvZXJjZUZhaWx1cmVSZWFzb24oZXJyKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ1ZhbGlkYXRpb24gZmFpbGVkJywgd2FybmluZzogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50ID0gZm9ybUNvcmUuaXNWYWxpZGF0aW9uUnVuQ3VycmVudChuYW1lLCBlcG9jaCk7XG4gICAgICAgICAgICBjb25zdCBjbGVhckZsYWdzID0gZmxhZ2dlZC5maWx0ZXIoKGZsYWdnZWROYW1lKSA9PiBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W2ZsYWdnZWROYW1lXSA9PT0gZXBvY2gpO1xuICAgICAgICAgICAgY29tbWl0UnVsZU91dGNvbWVzKGlzQ3VycmVudCA/IFtvdXRjb21lXSA6IFtdLCBjbGVhckZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgQ0FMTEVSIGdldHMgdGhpcyBydW4ncyBvd24gcmVzdWx0IGVpdGhlciB3YXkgKGl0cyBwcm9taXNlIGlzXG4gICAgICAgIC8vIGFib3V0IHRoZSB2YWx1ZSBpdCB3YXMgYXNrZWQgdG8gdmFsaWRhdGUpOyBvbmx5IHRoZSBTVE9SRSBjb21taXQgaXNcbiAgICAgICAgLy8gc3RhbGVuZXNzLWd1YXJkZWQuXG4gICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IG91dGNvbWUuZXJyb3IgPT09IG51bGwsIGVycm9yOiBvdXRjb21lLmVycm9yIH07XG4gICAgfSkpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFzeW5jIGZpZWxkIGJsdXIgaGFuZGxlclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGhhbmRsZUZpZWxkQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKG5hbWUsIGZpZWxkVHJpZ2dlcikgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIGlmICghdG91Y2hlZFtuYW1lXSkge1xuICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRvdWNoZWQpLCB7IFtuYW1lXTogdHJ1ZSB9KSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBydWxlcyA9IGZvcm1Db3JlLmdldEZpZWxkUnVsZXMobmFtZSk7XG4gICAgICAgIGlmICghcnVsZXMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGFwcGxpY2FibGUgPSBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihyZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgZm9ybUNvcmUuZ2V0UnVsZUNvbnRleHRJbnN0YW5jZSgpKSwgJ29uQmx1cicsIG5vcm1hbGl6ZVRyaWdnZXJzKGZpZWxkVHJpZ2dlciwgdmFsaWRhdGVUcmlnZ2VyKSwgbmFtZSk7XG4gICAgICAgIGlmIChhcHBsaWNhYmxlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbGlkYXRlRmllbGRBc3luYyhuYW1lLCByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKSwgYXBwbGljYWJsZSk7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVmFsaWRhdGUgYWxsIGZpZWxkcyBhc3luY1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHZhbGlkYXRlRmllbGRzQXN5bmMgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkc1RvVmFsaWRhdGUgPSBuYW1lTGlzdCB8fCBPYmplY3Qua2V5cyhmb3JtQ29yZS5maWVsZFJ1bGVzKTtcbiAgICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSB7fTtcbiAgICAgICAgLy8gUmVzb2x2ZSBldmVyeSBmaWVsZCBvbmNlIHVwIGZyb250OiB0aGUgZmxhZyBkZWNpc2lvbiBuZWVkcyByZXNvbHZlZFxuICAgICAgICAvLyBydWxlcywgYW5kIHRoZSByZXNvbHZlZCBhcnJheXMgYXJlIHJldXNlZCBmb3IgdGhlIGFjdHVhbCBydW5zLiBFYWNoXG4gICAgICAgIC8vIGZpZWxkIGFsc28gY2FwdHVyZXMgaXRzIHZhbGlkYXRpb24gZXBvY2gg4oCUIGEgZmllbGQgd2hvc2UgdmFsdWVcbiAgICAgICAgLy8gY2hhbmdlcyBtaWQtc3VibWl0IGdldHMgYSBuZXdlciBydW4sIGFuZCB0aGlzIHJ1bidzIHN0YWxlIG91dGNvbWVcbiAgICAgICAgLy8gbXVzdCBub3Qgb3ZlcndyaXRlIGl0IGluIHRoZSBzdG9yZS5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRCeUZpZWxkID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBlcG9jaEJ5RmllbGQgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBmaWVsZHNUb1ZhbGlkYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IGZvcm1Db3JlLmZpZWxkUnVsZXNbbmFtZV07XG4gICAgICAgICAgICBpZiAocnVsZXMpIHtcbiAgICAgICAgICAgICAgICBlcG9jaEJ5RmllbGQuc2V0KG5hbWUsIGZvcm1Db3JlLmJlZ2luVmFsaWRhdGlvblJ1bihuYW1lKSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRCeUZpZWxkLnNldChuYW1lLCByZXNvbHZlUnVsZXMocnVsZXMsIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIGZvcm1Db3JlLmdldFJ1bGVDb250ZXh0SW5zdGFuY2UoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE9uZSBjb21taXQgdG8gcmFpc2UgdGhlIHZhbGlkYXRpbmcgZmxhZ3MgKHZhbGlkYXRvci1iZWFyaW5nIGZpZWxkc1xuICAgICAgICAvLyBvbmx5KSwgb25lIGNvbW1pdCB0byBsYW5kIGV2ZXJ5IGVycm9yL3dhcm5pbmcgYW5kIGNsZWFyIHRoZSBmbGFncy5cbiAgICAgICAgY29uc3QgZmxhZ2dlZCA9IGZpZWxkc1RvVmFsaWRhdGUuZmlsdGVyKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVkQnlGaWVsZC5nZXQobmFtZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWQgPyBoYXNSZXNvbHZlZFZhbGlkYXRvcihyZXNvbHZlZCkgOiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1hcmtWYWxpZGF0aW5nKGZsYWdnZWQpO1xuICAgICAgICBmbGFnZ2VkLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGxhc3RBc3luY0Vwb2NoUmVmLmN1cnJlbnRbbmFtZV0gPSBlcG9jaEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgb3V0Y29tZXMgPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKGZpZWxkc1RvVmFsaWRhdGUubWFwKChuYW1lKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlZEJ5RmllbGQuZ2V0KG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgICAgIGxldCB3YXJuaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAoeyBlcnJvciwgd2FybmluZyB9ID0geWllbGQgcnVuUnVsZXNBc3luYyhuYW1lLCByZXNvbHZlVmFsdWUoZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgbmFtZSksIGZvcm1Db3JlLmdldEZpZWxkc1ZhbHVlKCksIHJlc29sdmVkLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAvLyBMYXN0LXJlc29ydCBuZXQgKHNlZSB2YWxpZGF0ZUZpZWxkQXN5bmMpIOKAlCBrZWVwIHRoZSBub3JtYWxcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RydWN0ZWQtZXJyb3IgZmxvdyBzbyBvbkZpbmlzaEZhaWxlZCBnZXRzIGEgcmVhbCBwYXlsb2FkLlxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IChfYSA9IGNvZXJjZUZhaWx1cmVSZWFzb24oZXJyKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVGhlIHN0b3JlIGNvbW1pdCBpcyBzdGFsZW5lc3MtZ3VhcmRlZDsgdGhlIFNVQk1JVCBkZWNpc2lvblxuICAgICAgICAgICAgICAgIC8vIChmaWVsZEVycm9ycyAvIHRoZSB0aHJvd24gRm9ybVZhbGlkYXRpb25FcnJvcikgc3RpbGwgcmVmbGVjdHNcbiAgICAgICAgICAgICAgICAvLyB0aGlzIHJ1bidzIG93biByZXN1bHRzIGZvciB0aGUgdmFsdWVzIGl0IHZhbGlkYXRlZC5cbiAgICAgICAgICAgICAgICBjb25zdCBlcG9jaCA9IGVwb2NoQnlGaWVsZC5nZXQobmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGVwb2NoICE9PSB1bmRlZmluZWQgJiYgZm9ybUNvcmUuaXNWYWxpZGF0aW9uUnVuQ3VycmVudChuYW1lLCBlcG9jaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0Y29tZXMucHVzaCh7IG5hbWUsIGVycm9yLCB3YXJuaW5nIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRFcnJvcnNbbmFtZV0gPSBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgY2xlYXJGbGFncyA9IGZsYWdnZWQuZmlsdGVyKChuYW1lKSA9PiBsYXN0QXN5bmNFcG9jaFJlZi5jdXJyZW50W25hbWVdID09PSBlcG9jaEJ5RmllbGQuZ2V0KG5hbWUpKTtcbiAgICAgICAgICAgIGNvbW1pdFJ1bGVPdXRjb21lcyhvdXRjb21lcywgY2xlYXJGbGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGZpZWxkRXJyb3JzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybVZhbGlkYXRpb25FcnJvcihmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBmaWVsZEVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWVMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gbmFtZUxpc3QucmVkdWNlKChhY2MsIG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBhY2NbbmFtZV0gPSByZXNvbHZlVmFsdWUoZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKSwgbmFtZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUoKTtcbiAgICB9KSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gZGVmaW5lRmllbGQg4oCTIHVzZWQgYnkgc3RhbmRhbG9uZSAobm9uLVByb0Zvcm0pIGNvbnN1bWVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGRlZmluZUZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZmllbGRPcHRpb25zID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgeyBydWxlcyA9IFtdIH0gPSBmaWVsZE9wdGlvbnM7XG4gICAgICAgIGNvbnN0IEZpZWxkQ29tcG9uZW50ID0gbWVtbygoX2EpID0+IHtcbiAgICAgICAgICAgIHZhciB7IGNoaWxkcmVuLCByZW5kZXIgfSA9IF9hLCBwcm9wcyA9IF9fcmVzdChfYSwgW1wiY2hpbGRyZW5cIiwgXCJyZW5kZXJcIl0pO1xuICAgICAgICAgICAgLy8gUGVyLWZpZWxkIHN0b3JlIHN1YnNjcmlwdGlvbjogdGhpcyBmaWVsZCByZS1yZW5kZXJzIG9ubHkgd2hlbiBpdHNcbiAgICAgICAgICAgIC8vIG93biB2YWx1ZS9lcnJvci90b3VjaGVkL3ZhbGlkYXRpbmcgc2xpY2UgY2hhbmdlcy4gRG90LXBhdGhzXG4gICAgICAgICAgICAvLyByZXNvbHZlIGludG8gdGhlIG5lc3RlZCB2YWx1ZXMgbGlrZSBldmVyeXdoZXJlIGVsc2UuXG4gICAgICAgICAgICBjb25zdCBbZmllbGRWYWx1ZSwgZmllbGRFcnJvciwgZmllbGRUb3VjaGVkLCBmaWVsZFZhbGlkYXRpbmddID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIChfYSA9IHJlc29sdmVWYWx1ZShzdGF0ZS52YWx1ZXMsIG5hbWUpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZXJyb3JzW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS50b3VjaGVkW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS52YWxpZGF0aW5nW25hbWVdLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LCBzaGFsbG93RXF1YWxBcnJheXMpO1xuICAgICAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBNb3VudC1jb3VudGVkOiByZWxlYXNlRmllbGQgcmVtb3ZlcyB0aGUgcnVsZXMgb25seSB3aGVuIHRoZVxuICAgICAgICAgICAgICAgIC8vIExBU1Qgc2FtZS1uYW1lIGluc3RhbmNlIHVubW91bnRzIOKAlCBhbiBpbnN0YW5jZSB0aGF0IHBpZ2d5YmFja2VkXG4gICAgICAgICAgICAgICAgLy8gb24gYW4gZXhpc3RpbmcgcmVnaXN0cmF0aW9uIChlLmcuIGEgUHJvRm9ybS5JdGVtJ3MpIGNhbiBuZXZlclxuICAgICAgICAgICAgICAgIC8vIHdpcGUgaXQgb24gaXRzIG93biB1bm1vdW50LlxuICAgICAgICAgICAgICAgIGZvcm1Db3JlLnJldGFpbkZpZWxkKG5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUnVsZXMgPSBmb3JtQ29yZS5nZXRGaWVsZFJ1bGVzKG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdSdWxlcyAmJiBydWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db3JlLnJlZ2lzdGVyRmllbGQobmFtZSwgcnVsZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmb3JtQ29yZS5yZWxlYXNlRmllbGQobmFtZSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sIFtdKTsgLy8gT25seSByZWdpc3RlciBvbiBtb3VudFxuICAgICAgICAgICAgY29uc3QgaGFuZGxlRmllbGRDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIFRvdWNoZWQgaXMgc2V0IGJ5IHRoZSB1c2VyIGNoYW5nZSB0cmlnZ2VyIChtYXRjaGluZyB0aGVcbiAgICAgICAgICAgICAgICAvLyBQcm9Gb3JtLkl0ZW0gcGF0aCkg4oCUIHByb2dyYW1tYXRpYyBzZXRGaWVsZHNWYWx1ZSBkb2VzIG5vdC5cbiAgICAgICAgICAgICAgICBjb25zdCB0b3VjaGVkID0gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkO1xuICAgICAgICAgICAgICAgIGlmICghdG91Y2hlZFtuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdG91Y2hlZCksIHsgW25hbWVdOiB0cnVlIH0pIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhcHBsaWNhYmxlID0gZmlsdGVyUnVsZXNCeVRyaWdnZXIocmVzb2x2ZVJ1bGVzKHJ1bGVzLCBmb3JtQ29yZS5nZXRGaWVsZHNWYWx1ZSgpLCBmb3JtQ29yZS5nZXRSdWxlQ29udGV4dEluc3RhbmNlKCkpLCAnb25DaGFuZ2UnLCBub3JtYWxpemVUcmlnZ2VycyhmaWVsZE9wdGlvbnMudmFsaWRhdGVUcmlnZ2VyLCB2YWxpZGF0ZVRyaWdnZXIpLCBuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoYXBwbGljYWJsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFzeW5jIHBhdGggKG1hdGNoaW5nIFByb0Zvcm0uSXRlbSkgc28gYSBQcm9taXNlLXJldHVybmluZ1xuICAgICAgICAgICAgICAgICAgICAvLyB2YWxpZGF0b3IgaXMgaG9ub3JlZCBvbiBjaGFuZ2UgaW5zdGVhZCBvZiBiZWluZyBzaWxlbnRseVxuICAgICAgICAgICAgICAgICAgICAvLyBza2lwcGVkOyBmaXJlLWFuZC1mb3JnZXQg4oCUIHRoZSByZXN1bHQgbGFuZHMgb24gdGhlIHN0b3JlLlxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmMobmFtZSwgdmFsdWUsIGFwcGxpY2FibGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUZpZWxkQmx1cihuYW1lLCBmaWVsZE9wdGlvbnMudmFsaWRhdGVUcmlnZ2VyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZmllbGRQcm9wcyA9IE9iamVjdC5hc3NpZ24oeyBuYW1lLCB2YWx1ZTogZmllbGRWYWx1ZSwgZXJyb3I6IGZpZWxkRXJyb3IsIHRvdWNoZWQ6IGZpZWxkVG91Y2hlZCwgdmFsaWRhdGluZzogZmllbGRWYWxpZGF0aW5nLCBvbkNoYW5nZTogaGFuZGxlRmllbGRDaGFuZ2UsIG9uQmx1cjogaGFuZGxlQmx1ciB9LCBwcm9wcyk7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVNZXJnZUNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZSAmJiB0eXBlb2YgZSA9PT0gJ29iamVjdCcgJiYgJ3RhcmdldCcgaW4gZVxuICAgICAgICAgICAgICAgICAgICA/IGUudGFyZ2V0LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogZTtcbiAgICAgICAgICAgICAgICBoYW5kbGVGaWVsZENoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKF9hID0gY2hpbGRyZW4ucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVNZXJnZUJsdXIgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGhhbmRsZUJsdXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pICYmXG4gICAgICAgICAgICAgICAgICAgICgoX2EgPSBjaGlsZHJlbi5wcm9wcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9uQmx1cikpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHJvcHMub25CbHVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyZW5kZXIgJiYgdHlwZW9mIHJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXIoZmllbGRQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuKGZpZWxkUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRWxlbWVudCBjaGlsZHJlbiByZWNlaXZlIG9ubHkgRE9NLXNhZmUgcHJvcHMg4oCUIGVycm9yL3RvdWNoZWQvXG4gICAgICAgICAgICAvLyB2YWxpZGF0aW5nIGFyZSBmaWVsZCBNRVRBLCBub3QgY29udHJvbCBwcm9wczsgc3ByZWFkaW5nIHRoZW0gb250b1xuICAgICAgICAgICAgLy8gYSBob3N0IGVsZW1lbnQgd291bGQgbGVhayBhbnkgYXR0cmlidXRlcy4gUmVuZGVyLXByb3AgYW5kXG4gICAgICAgICAgICAvLyBmdW5jdGlvbiBjaGlsZHJlbiBrZWVwIHRoZSBmdWxsIGZpZWxkUHJvcHMuXG4gICAgICAgICAgICBjb25zdCBkb21TYWZlUHJvcHMgPSBPYmplY3QuYXNzaWduKHsgbmFtZSwgdmFsdWU6IGZpZWxkVmFsdWUsIG9uQ2hhbmdlOiBoYW5kbGVNZXJnZUNoYW5nZSwgb25CbHVyOiBoYW5kbGVNZXJnZUJsdXIgfSwgcHJvcHMpO1xuICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIGRvbVNhZmVQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgLi4uY2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkb21TYWZlUHJvcHMpLCB7IGtleTogY2hpbGQua2V5IHx8IGluZGV4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgICBGaWVsZENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGBGaWVsZCgke25hbWV9KWA7XG4gICAgICAgIHJldHVybiBGaWVsZENvbXBvbmVudDtcbiAgICB9KTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBoYW5kbGVTdWJtaXQgLyBoYW5kbGVSZXNldCDigJMgZm9yIDxmb3JtPiBldmVudCBoYW5kbGVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZFZhbHVlcyA9IHlpZWxkIHZhbGlkYXRlRmllbGRzQXN5bmMoKTtcbiAgICAgICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWxpZGF0ZWRWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIE9ubHkgYSBWQUxJREFUSU9OIGZhaWx1cmUgcmVhY2hlcyBvbkZpbmlzaEZhaWxlZCDigJQgYW4gZXhjZXB0aW9uIG91dFxuICAgICAgICAgICAgLy8gb2YgdGhlIGNvbnN1bWVyJ3Mgb3duIG9uRmluaXNoIGlzIG5vdCBhIHZhbGlkYXRpb24gcmVzdWx0IGFuZCBpc1xuICAgICAgICAgICAgLy8gc3VyZmFjZWQgaW5zdGVhZCBvZiBiZWluZyBtaXNyZXBvcnRlZC5cbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBGb3JtVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgb25GaW5pc2hGYWlsZWQgPT09IG51bGwgfHwgb25GaW5pc2hGYWlsZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoRmFpbGVkKHsgdmFsdWVzOiBlcnIudmFsdWVzLCBlcnJvcnM6IGVyci5lcnJvcnMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbUHJvRm9ybV0gb25GaW5pc2ggdGhyZXcgZHVyaW5nIHN1Ym1pdDonLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZm9ybUNvcmUucmVzZXRGaWVsZHMoKTtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gRm9ybUluc3RhbmNlIOKAkyBlbmhhbmNlZCBBUEkgZm9yIGNvbnN1bWVycy5cbiAgICAvL1xuICAgIC8vIEV2ZXJ5IG1ldGhvZCBpcyB3cmFwcGVkIGluIHVzZU1lbW9pemVkRm4gKHN0YWJsZSBpZGVudGl0eSwgYWx3YXlzIHJlYWRzIHRoZVxuICAgIC8vIGxhdGVzdCBzdG9yZSBzdGF0ZSkgc28gdGhlIGluc3RhbmNlIG9iamVjdCBpdHNlbGYgaXMgSURFTlRJVFktU1RBQkxFIGZvclxuICAgIC8vIHRoZSBsaWZldGltZSBvZiB0aGUgZm9ybSDigJQgdGhpcyBpcyB3aGF0IGxldHMgUHJvRm9ybSBwdWJsaXNoIGl0IHRocm91Z2ggdGhlXG4gICAgLy8gc3RhYmxlIGNvbnRleHQgd2l0aG91dCByZS1yZW5kZXJpbmcgc3Vic2NyaWJlcnMgb24gZWFjaCBrZXlzdHJva2UuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgZ2V0RmllbGRFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzW25hbWVdKTtcbiAgICBjb25zdCBnZXRGaWVsZFdhcm5pbmcgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzW25hbWVdKTtcbiAgICBjb25zdCBnZXRGaWVsZHNFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWVMaXN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN0b3JlLmdldFN0YXRlKCkuZXJyb3JzO1xuICAgICAgICBpZiAoIW5hbWVMaXN0KVxuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIG5hbWVMaXN0LmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSBlcnJvcnNbbmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICAgIGNvbnN0IGlzRmllbGRUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkW25hbWVdIHx8IGZhbHNlKTtcbiAgICBjb25zdCBpc0ZpZWxkc1RvdWNoZWQgPSB1c2VNZW1vaXplZEZuKChuYW1lTGlzdCwgYWxsRmllbGRzVG91Y2hlZCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIGlmICghbmFtZUxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0b3VjaGVkKS5zb21lKChrZXkpID0+IHRvdWNoZWRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbEZpZWxkc1RvdWNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lTGlzdC5ldmVyeSgobmFtZSkgPT4gdG91Y2hlZFtuYW1lXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWVMaXN0LnNvbWUoKG5hbWUpID0+IHRvdWNoZWRbbmFtZV0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGlzRmllbGRWYWxpZGF0aW5nID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4gc3RvcmUuZ2V0U3RhdGUoKS52YWxpZGF0aW5nW25hbWVdIHx8IGZhbHNlKTtcbiAgICBjb25zdCBzZXRGaWVsZHNFcnJvciA9IHVzZU1lbW9pemVkRm4oKGZpZWxkc0Vycm9yKSA9PiB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGZpZWxkc0Vycm9yKS5mb3JFYWNoKChbbmFtZSwgZXJyb3JdKSA9PiB7XG4gICAgICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgaXNUb3VjaGVkID0gdHJ1ZSkgPT4ge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RvcmUuZ2V0U3RhdGUoKS50b3VjaGVkKSwgeyBbbmFtZV06IGlzVG91Y2hlZCB9KSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGaWVsZHNUb3VjaGVkID0gdXNlTWVtb2l6ZWRGbigoZmllbGRzVG91Y2gpID0+IHtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoeyB0b3VjaGVkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN0b3JlLmdldFN0YXRlKCkudG91Y2hlZCksIGZpZWxkc1RvdWNoKSB9KTtcbiAgICB9KTtcbiAgICBjb25zdCByZXNldEZvcm1GaWVsZHMgPSB1c2VNZW1vaXplZEZuKChmaWVsZHMpID0+IHtcbiAgICAgICAgaWYgKCFmaWVsZHMpIHtcbiAgICAgICAgICAgIGZvcm1Db3JlLnJlc2V0RmllbGRzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gTW91bnQtZnJvemVuIGluaXRpYWxWYWx1ZXMg4oCUIGNvbnNpc3RlbnQgd2l0aCB0aGUgZnVsbCByZXNldEZpZWxkcy5cbiAgICAgICAgLy8gUmVhZHMgQU5EIHdyaXRlcyBhcmUgbmVzdGVkLXBhdGggYXdhcmUsIHNvIGRvdC1wYXRoIG5hbWVzXG4gICAgICAgIC8vIChgYWRkcmVzcy5jaXR5YCwgYGl0ZW1zLjAudGl0bGVgKSByZXNldCBjb3JyZWN0bHkgaW5zdGVhZCBvZiBwcm9iaW5nIGFcbiAgICAgICAgLy8gbGl0ZXJhbCBrZXkgYW5kIHNoYWxsb3ctbWVyZ2luZyBvbmUgYmFjay5cbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IGZvcm1Db3JlLmdldEluaXRpYWxWYWx1ZXMoKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBsZXQgbmV3VmFsdWVzID0gc3RhdGUudmFsdWVzO1xuICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWwgPSByZXNvbHZlVmFsdWUoaW5pdGlhbFZhbHVlcywgZmllbGQpO1xuICAgICAgICAgICAgbmV3VmFsdWVzID0gZmllbGQuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgICAgID8gc2V0TmVzdGVkVmFsdWUobmV3VmFsdWVzLCBmaWVsZCwgaW5pdGlhbClcbiAgICAgICAgICAgICAgICA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbmV3VmFsdWVzKSwgeyBbZmllbGRdOiBpbml0aWFsIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gTGlrZSB0aGUgZnVsbCByZXNldDogY2xlYXIgQUxMIHBlci1maWVsZCBtZXRhIChlcnJvcnMgQU5EIHdhcm5pbmdzIEFORFxuICAgICAgICAvLyB0b3VjaGVkL3ZhbGlkYXRpbmcpLCBpbnZhbGlkYXRlIGluLWZsaWdodCB2YWxpZGF0aW9uIHJ1bnMsIGFuZCBsYW5kXG4gICAgICAgIC8vIGV2ZXJ5dGhpbmcgaW4gT05FIGNvbW1pdC4gTm8gb25WYWx1ZXNDaGFuZ2Ug4oCUIHJlc2V0IGlzIG5vdCBhIGNoYW5nZVxuICAgICAgICAvLyBldmVudCBvbiBlaXRoZXIgcGF0aC5cbiAgICAgICAgZm9ybUNvcmUuaW52YWxpZGF0ZVZhbGlkYXRpb25SdW5zKGZpZWxkcyk7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmVycm9ycyk7XG4gICAgICAgIGNvbnN0IG5ld1dhcm5pbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUud2FybmluZ3MpO1xuICAgICAgICBjb25zdCBuZXdUb3VjaGVkID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUudG91Y2hlZCk7XG4gICAgICAgIGNvbnN0IG5ld1ZhbGlkYXRpbmcgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS52YWxpZGF0aW5nKTtcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW2ZpZWxkXTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdXYXJuaW5nc1tmaWVsZF07XG4gICAgICAgICAgICBkZWxldGUgbmV3VG91Y2hlZFtmaWVsZF07XG4gICAgICAgICAgICBkZWxldGUgbmV3VmFsaWRhdGluZ1tmaWVsZF07XG4gICAgICAgIH0pO1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB2YWx1ZXM6IG5ld1ZhbHVlcyxcbiAgICAgICAgICAgIGVycm9yczogbmV3RXJyb3JzLFxuICAgICAgICAgICAgd2FybmluZ3M6IG5ld1dhcm5pbmdzLFxuICAgICAgICAgICAgdG91Y2hlZDogbmV3VG91Y2hlZCxcbiAgICAgICAgICAgIHZhbGlkYXRpbmc6IG5ld1ZhbGlkYXRpbmcsXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHN1Ym1pdFdpdGhWYWxpZGF0aW9uID0gdXNlTWVtb2l6ZWRGbigoY2FsbGJhY2spID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgdmFsaWRhdGVkVmFsdWVzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsaWRhdGVkVmFsdWVzID0geWllbGQgdmFsaWRhdGVGaWVsZHNBc3luYygpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgLy8gVmFsaWRhdGlvbiBmYWlsdXJlIOKAlCB0aGUgZmllbGQgZXJyb3JzIGFyZSBhbHJlYWR5IGluIHRoZSBzdG9yZS5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGNhbGxiYWNrKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gQSB0aHJvd2luZyBjYWxsYmFjayBpcyBhIGNvbnN1bWVyIGJ1Zywgbm90IGEgdmFsaWRhdGlvbiBmYWlsdXJlIOKAlFxuICAgICAgICAgICAgICAgIC8vIHN1cmZhY2UgaXQgKG1pcnJvcmluZyByYy1maWVsZC1mb3JtJ3Mgb25GaW5pc2ggaGFuZGxpbmcpIGluc3RlYWRcbiAgICAgICAgICAgICAgICAvLyBvZiBzd2FsbG93aW5nIGl0IHNpbGVudGx5LlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSBzdWJtaXQgY2FsbGJhY2sgdGhyZXc6JywgZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZWRWYWx1ZXM7XG4gICAgfSkpO1xuICAgIGNvbnN0IGZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUNvcmUuZm9ybUluc3RhbmNlKSwgeyBnZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5nZXRGaWVsZFZhbHVlLCBnZXRGaWVsZHNWYWx1ZTogZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUsIHZhbGlkYXRlRmllbGRzOiB2YWxpZGF0ZUZpZWxkc0FzeW5jLCBzZXRGaWVsZFZhbHVlOiBmb3JtQ29yZS5zZXRGaWVsZFZhbHVlLCBzZXRGaWVsZHNWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRzVmFsdWUsIGdldEZpZWxkRXJyb3I6IGdldEZpZWxkRXJyb3IsIGdldEZpZWxkV2FybmluZzogZ2V0RmllbGRXYXJuaW5nLCBnZXRGaWVsZHNFcnJvcjogZ2V0RmllbGRzRXJyb3IsIGlzRmllbGRUb3VjaGVkOiBpc0ZpZWxkVG91Y2hlZCwgaXNGaWVsZHNUb3VjaGVkOiBpc0ZpZWxkc1RvdWNoZWQsIGlzRmllbGRWYWxpZGF0aW5nOiBpc0ZpZWxkVmFsaWRhdGluZywgc2V0RmllbGRFcnJvcjogZm9ybUNvcmUuc2V0RmllbGRFcnJvciwgc2V0RmllbGRzRXJyb3IsIHNldEZpZWxkVG91Y2hlZDogc2V0RmllbGRUb3VjaGVkLCBzZXRGaWVsZHNUb3VjaGVkLCByZXNldEZpZWxkczogcmVzZXRGb3JtRmllbGRzLCBzdWJtaXQ6IHN1Ym1pdFdpdGhWYWxpZGF0aW9uLCBkZWZpbmVGaWVsZCwgcmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCwgdW5yZWdpc3RlckZpZWxkOiBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQgfSkpLCBbXG4gICAgICAgIGZvcm1Db3JlLmZvcm1JbnN0YW5jZSxcbiAgICAgICAgZm9ybUNvcmUuZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZm9ybUNvcmUuZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBmb3JtQ29yZS5zZXRGaWVsZEVycm9yLFxuICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzQXN5bmMsXG4gICAgICAgIGdldEZpZWxkRXJyb3IsXG4gICAgICAgIGdldEZpZWxkV2FybmluZyxcbiAgICAgICAgZ2V0RmllbGRzRXJyb3IsXG4gICAgICAgIGlzRmllbGRUb3VjaGVkLFxuICAgICAgICBpc0ZpZWxkc1RvdWNoZWQsXG4gICAgICAgIGlzRmllbGRWYWxpZGF0aW5nLFxuICAgICAgICBzZXRGaWVsZHNFcnJvcixcbiAgICAgICAgc2V0RmllbGRUb3VjaGVkLFxuICAgICAgICBzZXRGaWVsZHNUb3VjaGVkLFxuICAgICAgICByZXNldEZvcm1GaWVsZHMsXG4gICAgICAgIHN1Ym1pdFdpdGhWYWxpZGF0aW9uLFxuICAgICAgICBkZWZpbmVGaWVsZCxcbiAgICBdKTtcbiAgICAvLyBGdW5jdGlvbi1mb3JtIHJ1bGVzIGdldCB0aGUgRlVMTCBmb3JtIGluc3RhbmNlIChlcnJvciBnZXR0ZXJzLCB0b3VjaGVkXG4gICAgLy8gc3RhdGUsIG11dGF0b3JzKSBpbnN0ZWFkIG9mIHRoZSBiYXJlIGNvcmUgbWV0aG9kcy4gUmVmIHdyaXRlIOKAlCBjaGVhcCBhbmRcbiAgICAvLyBpZGVtcG90ZW50IHBlciByZW5kZXIuXG4gICAgZm9ybUNvcmUuc2V0UnVsZUNvbnRleHRJbnN0YW5jZShmb3JtSW5zdGFuY2UpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEludGVybmFscyDigJMgZXhwb3NlZCBmb3IgUHJvRm9ybSBpbnRlZ3JhdGlvbi4gRGF0YSBmaWVsZHMgYXJlIEdFVFRFUlMgdGhhdFxuICAgIC8vIHJlYWQgdGhlIGxpdmUgc3RvcmUsIHNvIHRoZSBvYmplY3QgaXMgaWRlbnRpdHktc3RhYmxlIHlldCBuZXZlciBzdGFsZS5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBpbnRlcm5hbHMgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIGdldCB2YWx1ZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS52YWx1ZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvcnMoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKS5lcnJvcnM7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB3YXJuaW5ncygpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLndhcm5pbmdzO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdG91Y2hlZCgpIHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2YWxpZGF0aW5nKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmdldFN0YXRlKCkudmFsaWRhdGluZztcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRSdWxlczogZm9ybUNvcmUuZmllbGRSdWxlcyxcbiAgICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybUNvcmUuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcjogZm9ybUNvcmUuc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nOiBmb3JtQ29yZS5zZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIHZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZDogZm9ybUNvcmUucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkOiBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHJldGFpbkZpZWxkOiBmb3JtQ29yZS5yZXRhaW5GaWVsZCxcbiAgICAgICAgcmVsZWFzZUZpZWxkOiBmb3JtQ29yZS5yZWxlYXNlRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgfSksIFtcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIGZvcm1Db3JlLmZpZWxkUnVsZXMsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIGZvcm1Db3JlLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICBmb3JtQ29yZS5yZWdpc3RlckZpZWxkLFxuICAgICAgICBmb3JtQ29yZS51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGZvcm1Db3JlLnJldGFpbkZpZWxkLFxuICAgICAgICBmb3JtQ29yZS5yZWxlYXNlRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgXSk7XG4gICAgcmV0dXJuIHsgZm9ybUluc3RhbmNlLCBpbnRlcm5hbHMsIHN0b3JlIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgdXNlRm9ybTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FormStore } from '../formStore';
|
|
2
2
|
import type { UseFormCoreConfig, UseFormCoreReturn } from '../interface';
|
|
3
|
-
export declare const useFormCore: (config?: UseFormCoreConfig) => UseFormCoreReturn & {
|
|
3
|
+
export declare const useFormCore: <Values = Record<string, any>>(config?: UseFormCoreConfig<Values>) => UseFormCoreReturn<Values> & {
|
|
4
4
|
store: FormStore;
|
|
5
|
-
getInitialValues: () => Record<string,
|
|
5
|
+
getInitialValues: () => Record<string, any>;
|
|
6
6
|
};
|
|
7
7
|
export default useFormCore;
|