@1money/component-ui 0.0.71 → 0.0.74
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 +10 -2
- package/es/components/ProForm/ProForm.js +241 -55
- package/es/components/ProForm/ProFormDependency.d.ts +11 -2
- package/es/components/ProForm/ProFormDependency.js +29 -133
- package/es/components/ProForm/ProFormItem.js +146 -52
- package/es/components/ProForm/ProFormList.js +114 -62
- package/es/components/ProForm/SchemaForm.d.ts +7 -0
- package/es/components/ProForm/SchemaForm.js +103 -0
- package/es/components/ProForm/Submitter.js +26 -5
- package/es/components/ProForm/context.d.ts +30 -3
- package/es/components/ProForm/context.js +69 -10
- package/es/components/ProForm/core/constants.d.ts +12 -3
- package/es/components/ProForm/core/constants.js +18 -7
- package/es/components/ProForm/core/formStore.d.ts +24 -0
- package/es/components/ProForm/core/formStore.js +101 -0
- package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
- package/es/components/ProForm/core/hooks/useForm.js +336 -212
- package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
- package/es/components/ProForm/core/hooks/useFormCore.js +151 -93
- package/es/components/ProForm/core/interface.d.ts +33 -12
- package/es/components/ProForm/core/runRules.d.ts +20 -8
- package/es/components/ProForm/core/runRules.js +105 -50
- package/es/components/ProForm/core/useFormItem.d.ts +10 -1
- package/es/components/ProForm/core/useFormItem.js +141 -56
- package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
- package/es/components/ProForm/fields/createProFormField.js +61 -32
- package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
- package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
- package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
- package/es/components/ProForm/hooks/useUrlSync.js +170 -0
- package/es/components/ProForm/index.d.ts +12 -5
- package/es/components/ProForm/index.js +7 -2
- package/es/components/ProForm/interface.d.ts +185 -28
- package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DialogForm.js +18 -7
- package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DrawerForm.js +17 -7
- package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/es/components/ProForm/layouts/QueryFilter.js +47 -71
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
- package/es/components/ProForm/style/ProForm.css +4 -4
- package/es/components/ProForm/utils.d.ts +12 -1
- package/es/components/ProForm/utils.js +101 -28
- package/es/components/ProTable/ProTable.js +3 -3
- package/es/components/Tooltip/style/Tooltip.css +1 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/lib/components/ProForm/ProForm.d.ts +10 -2
- package/lib/components/ProForm/ProForm.js +239 -53
- package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
- package/lib/components/ProForm/ProFormDependency.js +30 -135
- package/lib/components/ProForm/ProFormItem.js +143 -48
- package/lib/components/ProForm/ProFormList.js +112 -60
- package/lib/components/ProForm/SchemaForm.d.ts +7 -0
- package/lib/components/ProForm/SchemaForm.js +110 -0
- package/lib/components/ProForm/Submitter.js +26 -5
- package/lib/components/ProForm/context.d.ts +30 -3
- package/lib/components/ProForm/context.js +69 -10
- package/lib/components/ProForm/core/constants.d.ts +12 -3
- package/lib/components/ProForm/core/constants.js +19 -8
- package/lib/components/ProForm/core/formStore.d.ts +24 -0
- package/lib/components/ProForm/core/formStore.js +110 -0
- package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
- package/lib/components/ProForm/core/hooks/useForm.js +336 -212
- package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
- package/lib/components/ProForm/core/hooks/useFormCore.js +150 -92
- package/lib/components/ProForm/core/interface.d.ts +33 -12
- package/lib/components/ProForm/core/runRules.d.ts +20 -8
- package/lib/components/ProForm/core/runRules.js +106 -50
- package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
- package/lib/components/ProForm/core/useFormItem.js +138 -53
- package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
- package/lib/components/ProForm/fields/createProFormField.js +61 -32
- package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
- package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
- package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
- package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
- package/lib/components/ProForm/index.d.ts +12 -5
- package/lib/components/ProForm/index.js +16 -1
- package/lib/components/ProForm/interface.d.ts +185 -28
- package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DialogForm.js +18 -7
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +17 -7
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/lib/components/ProForm/layouts/QueryFilter.js +46 -70
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
- package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
- package/lib/components/ProForm/style/ProForm.css +4 -4
- package/lib/components/ProForm/utils.d.ts +12 -1
- package/lib/components/ProForm/utils.js +104 -28
- package/lib/components/ProTable/ProTable.js +3 -3
- package/lib/components/Tooltip/style/Tooltip.css +1 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +13 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +90 -0
- package/scripts/mcp-server/index.generated.json +1866 -212
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
1
3
|
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
2
4
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
5
|
var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
@@ -27,14 +29,32 @@ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, gene
|
|
|
27
29
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
30
|
});
|
|
29
31
|
};
|
|
30
|
-
import React, { useEffect } from 'react';
|
|
32
|
+
import React, { useEffect, useRef } from 'react';
|
|
31
33
|
import useEventCallback from '@1money/hooks/useEventCallback';
|
|
32
|
-
import
|
|
34
|
+
import useDebouncedCallback from '@1money/hooks/useDebouncedCallback';
|
|
35
|
+
import { useProFormStable, useProFormStore } from '../context';
|
|
36
|
+
import { useStoreSelector, shallowEqualArrays } from './formStore';
|
|
33
37
|
import { getNestedValue } from './pathUtils';
|
|
34
|
-
import {
|
|
35
|
-
|
|
38
|
+
import { filterRulesByTrigger } from './runRules';
|
|
39
|
+
import { FORM_COMPONENT_NAMES, SIZE_AWARE_COMPONENT_NAMES, TEXT_LIKE_COMPONENT_NAMES } from './constants';
|
|
40
|
+
/**
|
|
41
|
+
* Normalise a change-handler argument: unwrap `e.target[valuePropName]` /
|
|
42
|
+
* `e[valuePropName]` (e.g. Checkbox emits `{ checked }`), else `e.target.value`,
|
|
43
|
+
* else pass the value through (e.g. Switch emits the boolean directly).
|
|
44
|
+
*/
|
|
36
45
|
function extractEventValue(e) {
|
|
37
|
-
|
|
46
|
+
var valuePropName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'value';
|
|
47
|
+
if (e === null || _typeof(e) !== 'object') return e;
|
|
48
|
+
var event = e;
|
|
49
|
+
if (valuePropName !== 'value' && valuePropName in event) {
|
|
50
|
+
return event[valuePropName];
|
|
51
|
+
}
|
|
52
|
+
if ('target' in event && event.target && _typeof(event.target) === 'object') {
|
|
53
|
+
var target = event.target;
|
|
54
|
+
if (valuePropName in target) return target[valuePropName];
|
|
55
|
+
if ('value' in target) return target.value;
|
|
56
|
+
}
|
|
57
|
+
return e;
|
|
38
58
|
}
|
|
39
59
|
export function useFormItem(options) {
|
|
40
60
|
var _this = this;
|
|
@@ -42,60 +62,134 @@ export function useFormItem(options) {
|
|
|
42
62
|
_options$rules = options.rules,
|
|
43
63
|
rules = _options$rules === void 0 ? [] : _options$rules,
|
|
44
64
|
required = options.required,
|
|
45
|
-
validateStatus = options.validateStatus
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
setFieldValue =
|
|
51
|
-
validateField =
|
|
52
|
-
validateFieldAsync =
|
|
53
|
-
registerField =
|
|
54
|
-
unregisterField =
|
|
55
|
-
size =
|
|
56
|
-
labelAlign =
|
|
57
|
-
requiredMark =
|
|
58
|
-
validateTrigger =
|
|
65
|
+
validateStatus = options.validateStatus,
|
|
66
|
+
_options$valuePropNam = options.valuePropName,
|
|
67
|
+
valuePropName = _options$valuePropNam === void 0 ? 'value' : _options$valuePropNam,
|
|
68
|
+
validateDebounce = options.validateDebounce;
|
|
69
|
+
var _useProFormStable = useProFormStable(),
|
|
70
|
+
setFieldValue = _useProFormStable.setFieldValue,
|
|
71
|
+
validateField = _useProFormStable.validateField,
|
|
72
|
+
validateFieldAsync = _useProFormStable.validateFieldAsync,
|
|
73
|
+
registerField = _useProFormStable.registerField,
|
|
74
|
+
unregisterField = _useProFormStable.unregisterField,
|
|
75
|
+
size = _useProFormStable.size,
|
|
76
|
+
labelAlign = _useProFormStable.labelAlign,
|
|
77
|
+
requiredMark = _useProFormStable.requiredMark,
|
|
78
|
+
validateTrigger = _useProFormStable.validateTrigger,
|
|
79
|
+
formDisabled = _useProFormStable.disabled;
|
|
80
|
+
var store = useProFormStore();
|
|
59
81
|
var isRequired = Boolean(required || rules.some(function (rule) {
|
|
60
82
|
return rule.required;
|
|
61
83
|
}));
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
84
|
+
// Per-field store subscription: this item re-renders ONLY when its own
|
|
85
|
+
// value/error/warning/validating slice changes — typing in a sibling field
|
|
86
|
+
// produces an equal tuple and the selector short-circuits.
|
|
87
|
+
// Errors/warnings are stored FLAT, keyed by the full (possibly dotted) field
|
|
88
|
+
// name — never resolve them as nested paths or dotted names would miss.
|
|
89
|
+
var _useStoreSelector = useStoreSelector(store, function (state) {
|
|
90
|
+
return [name ? name.includes('.') ? getNestedValue(state.values, name) : state.values[name] : undefined, name ? state.errors[name] : undefined, name ? state.warnings[name] : undefined, name ? state.validating[name] || false : false];
|
|
91
|
+
}, shallowEqualArrays),
|
|
92
|
+
_useStoreSelector2 = _slicedToArray(_useStoreSelector, 4),
|
|
93
|
+
fieldValue = _useStoreSelector2[0],
|
|
94
|
+
fieldError = _useStoreSelector2[1],
|
|
95
|
+
fieldWarning = _useStoreSelector2[2],
|
|
96
|
+
fieldValidating = _useStoreSelector2[3];
|
|
97
|
+
var finalStatus = validateStatus || (fieldError ? 'error' : fieldWarning ? 'warning' : undefined);
|
|
98
|
+
// Run only the rules applicable to the given interactive trigger; rules
|
|
99
|
+
// without an explicit validateTrigger follow the form-level setting.
|
|
100
|
+
var runValidate = useEventCallback(function (value, trigger) {
|
|
101
|
+
if (!name || rules.length === 0) return true;
|
|
102
|
+
var applicable = filterRulesByTrigger(rules, trigger, validateTrigger);
|
|
103
|
+
if (applicable.length === 0) return true;
|
|
104
|
+
return validateField(name, applicable, value);
|
|
69
105
|
});
|
|
70
|
-
var runValidateAsync = useEventCallback(function (value) {
|
|
106
|
+
var runValidateAsync = useEventCallback(function (value, trigger) {
|
|
71
107
|
return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
108
|
+
var applicable;
|
|
72
109
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
73
110
|
while (1) switch (_context.prev = _context.next) {
|
|
74
111
|
case 0:
|
|
75
|
-
if (!(name
|
|
112
|
+
if (!(!name || rules.length === 0)) {
|
|
76
113
|
_context.next = 1;
|
|
77
114
|
break;
|
|
78
115
|
}
|
|
79
|
-
_context.
|
|
80
|
-
return validateFieldAsync(name, value, rules);
|
|
116
|
+
return _context.abrupt("return");
|
|
81
117
|
case 1:
|
|
118
|
+
applicable = filterRulesByTrigger(rules, trigger, validateTrigger);
|
|
119
|
+
if (!(applicable.length === 0)) {
|
|
120
|
+
_context.next = 2;
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
return _context.abrupt("return");
|
|
124
|
+
case 2:
|
|
125
|
+
_context.next = 3;
|
|
126
|
+
return validateFieldAsync(name, value, applicable);
|
|
127
|
+
case 3:
|
|
82
128
|
case "end":
|
|
83
129
|
return _context.stop();
|
|
84
130
|
}
|
|
85
131
|
}, _callee);
|
|
86
132
|
}));
|
|
87
133
|
});
|
|
134
|
+
var _useDebouncedCallback = useDebouncedCallback(function (value) {
|
|
135
|
+
runValidate(value, 'onChange');
|
|
136
|
+
}, validateDebounce),
|
|
137
|
+
debouncedValidate = _useDebouncedCallback.run;
|
|
88
138
|
var handleChange = useEventCallback(function (value) {
|
|
89
139
|
if (name) {
|
|
90
140
|
setFieldValue(name, value);
|
|
91
|
-
|
|
141
|
+
// touched is set by the user change trigger —
|
|
142
|
+
// programmatic setFieldsValue does not mark fields touched.
|
|
143
|
+
var touched = store.getState().touched;
|
|
144
|
+
if (!touched[name]) {
|
|
145
|
+
store.setState({
|
|
146
|
+
touched: Object.assign(Object.assign({}, touched), _defineProperty({}, name, true))
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (validateDebounce && validateDebounce > 0) {
|
|
150
|
+
debouncedValidate(value);
|
|
151
|
+
} else {
|
|
152
|
+
runValidate(value, 'onChange');
|
|
153
|
+
}
|
|
92
154
|
}
|
|
93
155
|
});
|
|
94
156
|
var handleBlur = useEventCallback(function () {
|
|
95
|
-
|
|
157
|
+
// Read the LIVE value from the store — a change committed in the same
|
|
158
|
+
// tick (change → immediate blur) must be validated, not the render-time
|
|
159
|
+
// snapshot.
|
|
160
|
+
var currentValue = name ? name.includes('.') ? getNestedValue(store.getState().values, name) : store.getState().values[name] : undefined;
|
|
161
|
+
runValidateAsync(currentValue, 'onBlur');
|
|
162
|
+
});
|
|
163
|
+
// Latest child-provided callbacks, captured at injectField time. The STABLE
|
|
164
|
+
// injected handlers below delegate through this ref instead of being
|
|
165
|
+
// recreated per render — so a memoized field component sees shallow-equal
|
|
166
|
+
// props across renders and can bail out while another field is typing.
|
|
167
|
+
var childCallbacksRef = useRef({});
|
|
168
|
+
var injectedOnChange = useEventCallback(function (e) {
|
|
169
|
+
var _b2;
|
|
170
|
+
var _a, _b;
|
|
171
|
+
handleChange(extractEventValue(e, valuePropName));
|
|
172
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
173
|
+
args[_key - 1] = arguments[_key];
|
|
174
|
+
}
|
|
175
|
+
(_b = (_a = childCallbacksRef.current).onChange) === null || _b === void 0 ? void 0 : (_b2 = _b).call.apply(_b2, [_a, e].concat(args));
|
|
96
176
|
});
|
|
177
|
+
var injectedOnBlur = useEventCallback(function () {
|
|
178
|
+
var _b3;
|
|
179
|
+
var _a, _b;
|
|
180
|
+
handleBlur();
|
|
181
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
182
|
+
args[_key2] = arguments[_key2];
|
|
183
|
+
}
|
|
184
|
+
(_b = (_a = childCallbacksRef.current).onBlur) === null || _b === void 0 ? void 0 : (_b3 = _b).call.apply(_b3, [_a].concat(args));
|
|
185
|
+
});
|
|
186
|
+
// Keep the registry in sync with the LATEST rules every render (registration
|
|
187
|
+
// is a cheap ref mutation): dynamic rules (e.g. required toggled by another
|
|
188
|
+
// field) must be visible to submit-time validation, not just onChange.
|
|
97
189
|
useEffect(function () {
|
|
98
190
|
if (name && registerField) registerField(name, rules);
|
|
191
|
+
});
|
|
192
|
+
useEffect(function () {
|
|
99
193
|
return function () {
|
|
100
194
|
if (name && unregisterField) unregisterField(name);
|
|
101
195
|
};
|
|
@@ -105,44 +199,35 @@ export function useFormItem(options) {
|
|
|
105
199
|
if (!name || ! /*#__PURE__*/React.isValidElement(child)) return child;
|
|
106
200
|
var childProps = child.props;
|
|
107
201
|
var displayName = (_a = child.type) === null || _a === void 0 ? void 0 : _a.displayName;
|
|
108
|
-
var isFormComponent = FORM_COMPONENT_NAMES.includes(displayName) || childProps.placeholder !== undefined || childProps.value !== undefined;
|
|
202
|
+
var isFormComponent = FORM_COMPONENT_NAMES.includes(displayName) || childProps.placeholder !== undefined || childProps.value !== undefined || childProps[valuePropName] !== undefined;
|
|
109
203
|
if (!isFormComponent) return child;
|
|
110
204
|
var safeValue = fieldValue;
|
|
111
205
|
if (safeValue === null || safeValue === undefined) {
|
|
112
|
-
if (
|
|
113
|
-
safeValue = '';
|
|
114
|
-
} else if (['Checkbox', 'Switch'].includes(displayName || '')) {
|
|
206
|
+
if (valuePropName === 'checked' || ['Checkbox', 'Switch'].includes(displayName || '')) {
|
|
115
207
|
safeValue = false;
|
|
208
|
+
} else if (TEXT_LIKE_COMPONENT_NAMES.includes(displayName || '') || childProps.placeholder !== undefined) {
|
|
209
|
+
safeValue = '';
|
|
116
210
|
}
|
|
117
211
|
} else if (TEXT_LIKE_COMPONENT_NAMES.includes(displayName || '') && typeof safeValue !== 'string' && typeof safeValue !== 'number') {
|
|
118
212
|
safeValue = '';
|
|
119
213
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
126
|
-
args[_key - 1] = arguments[_key];
|
|
127
|
-
}
|
|
128
|
-
childProps.onChange.apply(childProps, [e].concat(args));
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
onBlur: function onBlur() {
|
|
132
|
-
handleBlur();
|
|
133
|
-
if (typeof childProps.onBlur === 'function') {
|
|
134
|
-
childProps.onBlur.apply(childProps, arguments);
|
|
135
|
-
}
|
|
136
|
-
},
|
|
137
|
-
size: childProps.size || size
|
|
138
|
-
}, finalStatus === 'error' && {
|
|
214
|
+
childCallbacksRef.current = {
|
|
215
|
+
onChange: typeof childProps.onChange === 'function' ? childProps.onChange : undefined,
|
|
216
|
+
onBlur: typeof childProps.onBlur === 'function' ? childProps.onBlur : undefined
|
|
217
|
+
};
|
|
218
|
+
var injectedProps = Object.assign(Object.assign(Object.assign(_defineProperty(_defineProperty(_defineProperty({}, valuePropName, safeValue), "onChange", injectedOnChange), "onBlur", injectedOnBlur), finalStatus === 'error' && {
|
|
139
219
|
status: 'error'
|
|
220
|
+
}), formDisabled && childProps.disabled === undefined && {
|
|
221
|
+
disabled: true
|
|
222
|
+
}), SIZE_AWARE_COMPONENT_NAMES.includes(displayName || '') && childProps.size === undefined && {
|
|
223
|
+
size: size
|
|
140
224
|
});
|
|
141
225
|
return /*#__PURE__*/React.cloneElement(child, injectedProps);
|
|
142
226
|
};
|
|
143
227
|
return {
|
|
144
228
|
fieldValue: fieldValue,
|
|
145
229
|
fieldError: fieldError,
|
|
230
|
+
fieldWarning: fieldWarning,
|
|
146
231
|
fieldValidating: fieldValidating,
|
|
147
232
|
validateStatus: finalStatus,
|
|
148
233
|
isRequired: isRequired,
|
|
@@ -152,4 +237,4 @@ export function useFormItem(options) {
|
|
|
152
237
|
injectField: injectField
|
|
153
238
|
};
|
|
154
239
|
}
|
|
155
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3VzZUZvcm1JdGVtLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS91c2VGb3JtSXRlbS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VQcm9Gb3JtQ29udGV4dCIsImdldE5lc3RlZFZhbHVlIiwiRk9STV9DT01QT05FTlRfTkFNRVMiLCJURVhUX0xJS0VfQ09NUE9ORU5UX05BTUVTIiwiZXh0cmFjdEV2ZW50VmFsdWUiLCJfdHlwZW9mIiwidGFyZ2V0IiwidXNlRm9ybUl0ZW0iLCJvcHRpb25zIiwiX3RoaXMiLCJuYW1lIiwiX29wdGlvbnMkcnVsZXMiLCJydWxlcyIsInJlcXVpcmVkIiwidmFsaWRhdGVTdGF0dXMiLCJjdHgiLCJ2YWx1ZXMiLCJlcnJvcnMiLCJ2YWxpZGF0aW5nIiwic2V0RmllbGRWYWx1ZSIsInZhbGlkYXRlRmllbGQiLCJ2YWxpZGF0ZUZpZWxkQXN5bmMiLCJyZWdpc3RlckZpZWxkIiwidW5yZWdpc3RlckZpZWxkIiwic2l6ZSIsImxhYmVsQWxpZ24iLCJyZXF1aXJlZE1hcmsiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJpc1JlcXVpcmVkIiwiQm9vbGVhbiIsInNvbWUiLCJydWxlIiwiZmllbGRWYWx1ZSIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwiZmllbGRFcnJvciIsImZpZWxkVmFsaWRhdGluZyIsImZpbmFsU3RhdHVzIiwicnVuVmFsaWRhdGUiLCJsZW5ndGgiLCJydW5WYWxpZGF0ZUFzeW5jIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsInN0b3AiLCJoYW5kbGVDaGFuZ2UiLCJoYW5kbGVCbHVyIiwiaW5qZWN0RmllbGQiLCJjaGlsZCIsIl9hIiwiaXNWYWxpZEVsZW1lbnQiLCJjaGlsZFByb3BzIiwicHJvcHMiLCJkaXNwbGF5TmFtZSIsInR5cGUiLCJpc0Zvcm1Db21wb25lbnQiLCJwbGFjZWhvbGRlciIsInNhZmVWYWx1ZSIsImluamVjdGVkUHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJvbkNoYW5nZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0Iiwib25CbHVyIiwic3RhdHVzIiwiY2xvbmVFbGVtZW50Il0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUlBLFNBQVMsR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVNDLEtBQUtBLENBQUNDLEtBQUssRUFBRTtJQUFFLE9BQU9BLEtBQUssWUFBWUgsQ0FBQyxHQUFHRyxLQUFLLEdBQUcsSUFBSUgsQ0FBQyxDQUFDLFVBQVVJLE9BQU8sRUFBRTtNQUFFQSxPQUFPLENBQUNELEtBQUssQ0FBQztJQUFFLENBQUMsQ0FBQztFQUFFO0VBQzNHLE9BQU8sS0FBS0gsQ0FBQyxLQUFLQSxDQUFDLEdBQUdLLE9BQU8sQ0FBQyxFQUFFLFVBQVVELE9BQU8sRUFBRUUsTUFBTSxFQUFFO0lBQ3ZELFNBQVNDLFNBQVNBLENBQUNKLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUNRLElBQUksQ0FBQ04sS0FBSyxDQUFDLENBQUM7TUFBRSxDQUFDLENBQUMsT0FBT08sQ0FBQyxFQUFFO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBQyxDQUFDO01BQUU7SUFBRTtJQUMxRixTQUFTQyxRQUFRQSxDQUFD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QUEsT0FBQUEsSUFBQSxXQUFBSSxJQUFBLE1BQUFBLElBQUEsR0FBQUosSUFBQSxFQUFBSSxJQUFBO1lBQWZGLElBQWUsQ0FBQUUsSUFBQSxRQUFBSCxTQUFBLENBQUFHLElBQUE7VUFBQTtVQUdwQ2YsVUFBVSxDQUFDVSxRQUFzQyxDQUFBcEUsS0FBQSxDQUFqRDBELFVBQVUsR0FBd0MvRCxDQUFDLEVBQUErRSxNQUFBLENBQUtILElBQUksRUFBQztRQUNoRTtNQUNGLENBQUM7TUFDREksTUFBTSxFQUFFLFNBQVJBLE1BQU1BLENBQUEsRUFBeUI7UUFDN0J0QixVQUFVLENBQUEsQ0FBRTtRQUNaLElBQUksT0FBT0ssVUFBVSxDQUFDaUIsTUFBTSxLQUFLLFVBQVUsRUFBRTtVQUMxQ2pCLFVBQVUsQ0FBQ2lCLE1BQW9DLENBQUEzRSxLQUFBLENBQS9DMEQsVUFBVSxFQUFBWSxTQUE2QyxDQUFDO1FBQzNEO01BQ0YsQ0FBQztNQUNEMUMsSUFBSSxFQUFFOEIsVUFBVSxDQUFDOUIsSUFBSSxJQUFJQTtJQUFJLENBQUEsRUFDekJhLFdBQVcsS0FBSyxPQUFPLElBQUk7TUFBRW1DLE1BQU0sRUFBRTtJQUFPLENBQUcsQ0FDcEQ7SUFFRCxvQkFBTzNFLEtBQUssQ0FBQzRFLFlBQVksQ0FBQ3RCLEtBQUssRUFBRVUsYUFBYSxDQUFDO0VBQ2pELENBQUM7RUFFRCxPQUFPO0lBQ0w3QixVQUFVLEVBQVZBLFVBQVU7SUFDVkcsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZDLGVBQWUsRUFBZkEsZUFBZTtJQUNmdEIsY0FBYyxFQUFFdUIsV0FBVztJQUMzQlQsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZKLElBQUksRUFBSkEsSUFBSTtJQUNKQyxVQUFVLEVBQVZBLFVBQVU7SUFDVkMsWUFBWSxFQUFaQSxZQUFZO0lBQ1p3QixXQUFXLEVBQVhBO0VEMUNBLENDMkNEO0FBQ0giLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvdXNlRm9ybUl0ZW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgdXNlUHJvRm9ybUNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IGdldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgRk9STV9DT01QT05FTlRfTkFNRVMsIFRFWFRfTElLRV9DT01QT05FTlRfTkFNRVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKiogTm9ybWFsaXNlIGEgY2hhbmdlLWhhbmRsZXIgYXJndW1lbnQ6IHVud3JhcCBgZS50YXJnZXQudmFsdWVgLCBlbHNlIHBhc3MgdGhlIHZhbHVlIHRocm91Z2guICovXG5mdW5jdGlvbiBleHRyYWN0RXZlbnRWYWx1ZShlKSB7XG4gICAgcmV0dXJuIGUgJiYgdHlwZW9mIGUgPT09ICdvYmplY3QnICYmICd0YXJnZXQnIGluIGVcbiAgICAgICAgPyBlLnRhcmdldC52YWx1ZVxuICAgICAgICA6IGU7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlRm9ybUl0ZW0ob3B0aW9ucykge1xuICAgIGNvbnN0IHsgbmFtZSwgcnVsZXMgPSBbXSwgcmVxdWlyZWQsIHZhbGlkYXRlU3RhdHVzIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGN0eCA9IHVzZVByb0Zvcm1Db250ZXh0KCk7XG4gICAgY29uc3QgeyB2YWx1ZXMsIGVycm9ycywgdmFsaWRhdGluZywgc2V0RmllbGRWYWx1ZSwgdmFsaWRhdGVGaWVsZCwgdmFsaWRhdGVGaWVsZEFzeW5jLCByZWdpc3RlckZpZWxkLCB1bnJlZ2lzdGVyRmllbGQsIHNpemUsIGxhYmVsQWxpZ24sIHJlcXVpcmVkTWFyaywgdmFsaWRhdGVUcmlnZ2VyLCB9ID0gY3R4O1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBCb29sZWFuKHJlcXVpcmVkIHx8IHJ1bGVzLnNvbWUoKHJ1bGUpID0+IHJ1bGUucmVxdWlyZWQpKTtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gbmFtZVxuICAgICAgICA/IChuYW1lLmluY2x1ZGVzKCcuJykgPyBnZXROZXN0ZWRWYWx1ZSh2YWx1ZXMsIG5hbWUpIDogdmFsdWVzW25hbWVdKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaWVsZEVycm9yID0gbmFtZVxuICAgICAgICA/IChuYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUoZXJyb3JzLCBuYW1lKVxuICAgICAgICAgICAgOiBlcnJvcnNbbmFtZV0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZpZWxkVmFsaWRhdGluZyA9IG5hbWUgPyAodmFsaWRhdGluZ1tuYW1lXSB8fCBmYWxzZSkgOiBmYWxzZTtcbiAgICBjb25zdCBmaW5hbFN0YXR1cyA9IHZhbGlkYXRlU3RhdHVzIHx8IChmaWVsZEVycm9yID8gJ2Vycm9yJyA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgcnVuVmFsaWRhdGUgPSB1c2VFdmVudENhbGxiYWNrKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAobmFtZSAmJiBydWxlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlRmllbGQobmFtZSwgcnVsZXMsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgcnVuVmFsaWRhdGVBc3luYyA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmIChuYW1lICYmIHJ1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbGlkYXRlRmllbGRBc3luYyhuYW1lLCB2YWx1ZSwgcnVsZXMpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZVRyaWdnZXIgPT09ICdvbkNoYW5nZScpXG4gICAgICAgICAgICAgICAgcnVuVmFsaWRhdGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAodmFsaWRhdGVUcmlnZ2VyID09PSAnb25CbHVyJylcbiAgICAgICAgICAgIHJ1blZhbGlkYXRlQXN5bmMoZmllbGRWYWx1ZSk7XG4gICAgfSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG5hbWUgJiYgcmVnaXN0ZXJGaWVsZClcbiAgICAgICAgICAgIHJlZ2lzdGVyRmllbGQobmFtZSwgcnVsZXMpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgJiYgdW5yZWdpc3RlckZpZWxkKVxuICAgICAgICAgICAgICAgIHVucmVnaXN0ZXJGaWVsZChuYW1lKTtcbiAgICAgICAgfTtcbiAgICB9LCBbbmFtZV0pO1xuICAgIGNvbnN0IGluamVjdEZpZWxkID0gKGNoaWxkKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFuYW1lIHx8ICFSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpXG4gICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgIGNvbnN0IGNoaWxkUHJvcHMgPSBjaGlsZC5wcm9wcztcbiAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSAoX2EgPSBjaGlsZC50eXBlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzcGxheU5hbWU7XG4gICAgICAgIGNvbnN0IGlzRm9ybUNvbXBvbmVudCA9IEZPUk1fQ09NUE9ORU5UX05BTUVTLmluY2x1ZGVzKGRpc3BsYXlOYW1lKSB8fFxuICAgICAgICAgICAgY2hpbGRQcm9wcy5wbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBjaGlsZFByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghaXNGb3JtQ29tcG9uZW50KVxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICBsZXQgc2FmZVZhbHVlID0gZmllbGRWYWx1ZTtcbiAgICAgICAgaWYgKHNhZmVWYWx1ZSA9PT0gbnVsbCB8fCBzYWZlVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKFRFWFRfTElLRV9DT01QT05FTlRfTkFNRVMuaW5jbHVkZXMoZGlzcGxheU5hbWUgfHwgJycpIHx8XG4gICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5wbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2FmZVZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChbJ0NoZWNrYm94JywgJ1N3aXRjaCddLmluY2x1ZGVzKGRpc3BsYXlOYW1lIHx8ICcnKSkge1xuICAgICAgICAgICAgICAgIHNhZmVWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFRFWFRfTElLRV9DT01QT05FTlRfTkFNRVMuaW5jbHVkZXMoZGlzcGxheU5hbWUgfHwgJycpICYmXG4gICAgICAgICAgICB0eXBlb2Ygc2FmZVZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHNhZmVWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHNhZmVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluamVjdGVkUHJvcHMgPSBPYmplY3QuYXNzaWduKHsgdmFsdWU6IHNhZmVWYWx1ZSwgb25DaGFuZ2U6IChlLCAuLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlKGV4dHJhY3RFdmVudFZhbHVlKGUpKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkUHJvcHMub25DaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5vbkNoYW5nZShlLCAuLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvbkJsdXI6ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQmx1cigpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRQcm9wcy5vbkJsdXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5vbkJsdXIoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgc2l6ZTogY2hpbGRQcm9wcy5zaXplIHx8IHNpemUgfSwgKGZpbmFsU3RhdHVzID09PSAnZXJyb3InICYmIHsgc3RhdHVzOiAnZXJyb3InIH0pKTtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgaW5qZWN0ZWRQcm9wcyk7XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZFZhbHVlLFxuICAgICAgICBmaWVsZEVycm9yLFxuICAgICAgICBmaWVsZFZhbGlkYXRpbmcsXG4gICAgICAgIHZhbGlkYXRlU3RhdHVzOiBmaW5hbFN0YXR1cyxcbiAgICAgICAgaXNSZXF1aXJlZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICBpbmplY3RGaWVsZCxcbiAgICB9O1xufSIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
240
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3VzZUZvcm1JdGVtLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS91c2VGb3JtSXRlbS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZUV2ZW50Q2FsbGJhY2siLCJ1c2VEZWJvdW5jZWRDYWxsYmFjayIsInVzZVByb0Zvcm1TdGFibGUiLCJ1c2VQcm9Gb3JtU3RvcmUiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsQXJyYXlzIiwiZ2V0TmVzdGVkVmFsdWUiLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsIkZPUk1fQ09NUE9ORU5UX05BTUVTIiwiU0laRV9BV0FSRV9DT01QT05FTlRfTkFNRVMiLCJURVhUX0xJS0VfQ09NUE9ORU5UX05BTUVTIiwiZXh0cmFjdEV2ZW50VmFsdWUiLCJ2YWx1ZVByb3BOYW1lIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX3R5cGVvZiIsImV2ZW50IiwidGFyZ2V0IiwidXNlRm9ybUl0ZW0iLCJvcHRpb25zIiwiX3RoaXMiLCJuYW1lIiwiX29wdGlvbnMkcnVsZXMiLCJydWxlcyIsInJlcXVpcmVkIiwidmFsaWRhdGVTdGF0dXMiLCJfb3B0aW9ucyR2YWx1ZVByb3BOYW0iLCJ2YWxpZGF0ZURlYm91bmNlIiwiX3VzZVByb0Zvcm1TdGFibGUiLCJzZXRGaWVsZFZhbHVlIiwidmFsaWRhdGVGaWVsZCIsInZhbGlkYXRlRmllbGRBc3luYyIsInJlZ2lzdGVyRmllbGQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJzaXplIiwibGFiZWxBbGlnbiIsInJlcXVpcmVkTWFyayIsInZhbGlkYXRlVHJpZ2dlciIsImZvcm1EaXNhYmxlZCIsImRpc2FibGVkIiwic3RvcmUiLCJpc1JlcXVpcmVkIiwiQm9vbGVhbiIsInNvbWUiLCJydWxlIiwiX3VzZVN0b3JlU2VsZWN0b3IiLCJzdGF0ZSIsImluY2x1ZGVzIiwidmFsdWVzIiwiZXJyb3JzIiwid2FybmluZ3MiLCJ2YWxpZGF0aW5nIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkiLCJmaWVsZFZhbHVlIiwiZmllbGRFcnJvciIsImZpZWxkV2FybmluZyIsImZpZWxkVmFsaWRhdGluZyIsImZpbmFsU3RhdHVzIiwicnVuVmFsaWRhdGUiLCJ0cmlnZ2VyIiwiYXBwbGljYWJsZSIsInJ1blZhbGlkYXRlQXN5bmMiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0Iiwic3RvcCIsIl91c2VEZWJvdW5jZWRDYWxsYmFjayIsImRlYm91bmNlZFZhbGlkYXRlIiwicnVuIiwiaGFuZGxlQ2hhbmdlIiwidG91Y2hlZCIsImdldFN0YXRlIiwic2V0U3RhdGUiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVCbHVyIiwiY3VycmVudFZhbHVlIiwiY2hpbGRDYWxsYmFja3NSZWYiLCJpbmplY3RlZE9uQ2hhbmdlIiwiX2IyIiwiX2EiLCJfYiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY3VycmVudCIsIm9uQ2hhbmdlIiwiY2FsbCIsImNvbmNhdCIsImluamVjdGVkT25CbHVyIiwiX2IzIiwiX2xlbjIiLCJfa2V5MiIsIm9uQmx1ciIsImluamVjdEZpZWxkIiwiY2hpbGQiLCJpc1ZhbGlkRWxlbWVudCIsImNoaWxkUHJvcHMiLCJwcm9wcyIsImRpc3BsYXlOYW1lIiwidHlwZSIsImlzRm9ybUNvbXBvbmVudCIsInBsYWNl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O0lBQ1ZDLFlBQVksRUFBWkEsWUFBWTtJQUNaQyxlQUFlLEVBQWZBLGVBQWU7SUFDZmhDLGNBQWMsRUFBRWlDLFdBQVc7SUFDM0JqQixVQUFVLEVBQVZBLFVBQVU7SUFDVlAsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLFVBQVUsRUFBVkEsVUFBVTtJQUNWQyxZQUFZLEVBQVpBLFlBQVk7SUFDWmlFLFdBQVcsRUFBWEE7RUQzRUEsQ0M0RUQ7QUFDSCIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS91c2VGb3JtSXRlbS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB1c2VEZWJvdW5jZWRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZURlYm91bmNlZENhbGxiYWNrJztcbmltcG9ydCB7IHVzZVByb0Zvcm1TdGFibGUsIHVzZVByb0Zvcm1TdG9yZSB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3Rvciwgc2hhbGxvd0VxdWFsQXJyYXlzIH0gZnJvbSAnLi9mb3JtU3RvcmUnO1xuaW1wb3J0IHsgZ2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJSdWxlc0J5VHJpZ2dlciB9IGZyb20gJy4vcnVuUnVsZXMnO1xuaW1wb3J0IHsgRk9STV9DT01QT05FTlRfTkFNRVMsIFNJWkVfQVdBUkVfQ09NUE9ORU5UX05BTUVTLCBURVhUX0xJS0VfQ09NUE9ORU5UX05BTUVTLCB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKlxuICogTm9ybWFsaXNlIGEgY2hhbmdlLWhhbmRsZXIgYXJndW1lbnQ6IHVud3JhcCBgZS50YXJnZXRbdmFsdWVQcm9wTmFtZV1gIC9cbiAqIGBlW3ZhbHVlUHJvcE5hbWVdYCAoZS5nLiBDaGVja2JveCBlbWl0cyBgeyBjaGVja2VkIH1gKSwgZWxzZSBgZS50YXJnZXQudmFsdWVgLFxuICogZWxzZSBwYXNzIHRoZSB2YWx1ZSB0aHJvdWdoIChlLmcuIFN3aXRjaCBlbWl0cyB0aGUgYm9vbGVhbiBkaXJlY3RseSkuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RFdmVudFZhbHVlKGUsIHZhbHVlUHJvcE5hbWUgPSAndmFsdWUnKSB7XG4gICAgaWYgKGUgPT09IG51bGwgfHwgdHlwZW9mIGUgIT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gZTtcbiAgICBjb25zdCBldmVudCA9IGU7XG4gICAgaWYgKHZhbHVlUHJvcE5hbWUgIT09ICd2YWx1ZScgJiYgdmFsdWVQcm9wTmFtZSBpbiBldmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnRbdmFsdWVQcm9wTmFtZV07XG4gICAgfVxuICAgIGlmICgndGFyZ2V0JyBpbiBldmVudCAmJiBldmVudC50YXJnZXQgJiYgdHlwZW9mIGV2ZW50LnRhcmdldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBpZiAodmFsdWVQcm9wTmFtZSBpbiB0YXJnZXQpXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3ZhbHVlUHJvcE5hbWVdO1xuICAgICAgICBpZiAoJ3ZhbHVlJyBpbiB0YXJnZXQpXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VGb3JtSXRlbShvcHRpb25zKSB7XG4gICAgY29uc3QgeyBuYW1lLCBydWxlcyA9IFtdLCByZXF1aXJlZCwgdmFsaWRhdGVTdGF0dXMsIHZhbHVlUHJvcE5hbWUgPSAndmFsdWUnLCB2YWxpZGF0ZURlYm91bmNlLCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCB7IHNldEZpZWxkVmFsdWUsIHZhbGlkYXRlRmllbGQsIHZhbGlkYXRlRmllbGRBc3luYywgcmVnaXN0ZXJGaWVsZCwgdW5yZWdpc3RlckZpZWxkLCBzaXplLCBsYWJlbEFsaWduLCByZXF1aXJlZE1hcmssIHZhbGlkYXRlVHJpZ2dlciwgZGlzYWJsZWQ6IGZvcm1EaXNhYmxlZCwgfSA9IHVzZVByb0Zvcm1TdGFibGUoKTtcbiAgICBjb25zdCBzdG9yZSA9IHVzZVByb0Zvcm1TdG9yZSgpO1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBCb29sZWFuKHJlcXVpcmVkIHx8IHJ1bGVzLnNvbWUoKHJ1bGUpID0+IHJ1bGUucmVxdWlyZWQpKTtcbiAgICAvLyBQZXItZmllbGQgc3RvcmUgc3Vic2NyaXB0aW9uOiB0aGlzIGl0ZW0gcmUtcmVuZGVycyBPTkxZIHdoZW4gaXRzIG93blxuICAgIC8vIHZhbHVlL2Vycm9yL3dhcm5pbmcvdmFsaWRhdGluZyBzbGljZSBjaGFuZ2VzIOKAlCB0eXBpbmcgaW4gYSBzaWJsaW5nIGZpZWxkXG4gICAgLy8gcHJvZHVjZXMgYW4gZXF1YWwgdHVwbGUgYW5kIHRoZSBzZWxlY3RvciBzaG9ydC1jaXJjdWl0cy5cbiAgICAvLyBFcnJvcnMvd2FybmluZ3MgYXJlIHN0b3JlZCBGTEFULCBrZXllZCBieSB0aGUgZnVsbCAocG9zc2libHkgZG90dGVkKSBmaWVsZFxuICAgIC8vIG5hbWUg4oCUIG5ldmVyIHJlc29sdmUgdGhlbSBhcyBuZXN0ZWQgcGF0aHMgb3IgZG90dGVkIG5hbWVzIHdvdWxkIG1pc3MuXG4gICAgY29uc3QgW2ZpZWxkVmFsdWUsIGZpZWxkRXJyb3IsIGZpZWxkV2FybmluZywgZmllbGRWYWxpZGF0aW5nXSA9IHVzZVN0b3JlU2VsZWN0b3Ioc3RvcmUsIChzdGF0ZSkgPT4gW1xuICAgICAgICBuYW1lXG4gICAgICAgICAgICA/IChuYW1lLmluY2x1ZGVzKCcuJykgPyBnZXROZXN0ZWRWYWx1ZShzdGF0ZS52YWx1ZXMsIG5hbWUpIDogc3RhdGUudmFsdWVzW25hbWVdKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIG5hbWUgPyBzdGF0ZS5lcnJvcnNbbmFtZV0gOiB1bmRlZmluZWQsXG4gICAgICAgIG5hbWUgPyBzdGF0ZS53YXJuaW5nc1tuYW1lXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZSA/IChzdGF0ZS52YWxpZGF0aW5nW25hbWVdIHx8IGZhbHNlKSA6IGZhbHNlLFxuICAgIF0sIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgY29uc3QgZmluYWxTdGF0dXMgPSB2YWxpZGF0ZVN0YXR1cyB8fCAoZmllbGRFcnJvciA/ICdlcnJvcicgOiBmaWVsZFdhcm5pbmcgPyAnd2FybmluZycgOiB1bmRlZmluZWQpO1xuICAgIC8vIFJ1biBvbmx5IHRoZSBydWxlcyBhcHBsaWNhYmxlIHRvIHRoZSBnaXZlbiBpbnRlcmFjdGl2ZSB0cmlnZ2VyOyBydWxlc1xuICAgIC8vIHdpdGhvdXQgYW4gZXhwbGljaXQgdmFsaWRhdGVUcmlnZ2VyIGZvbGxvdyB0aGUgZm9ybS1sZXZlbCBzZXR0aW5nLlxuICAgIGNvbnN0IHJ1blZhbGlkYXRlID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWUsIHRyaWdnZXIpID0+IHtcbiAgICAgICAgaWYgKCFuYW1lIHx8IHJ1bGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCBhcHBsaWNhYmxlID0gZmlsdGVyUnVsZXNCeVRyaWdnZXIocnVsZXMsIHRyaWdnZXIsIHZhbGlkYXRlVHJpZ2dlcik7XG4gICAgICAgIGlmIChhcHBsaWNhYmxlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVGaWVsZChuYW1lLCBhcHBsaWNhYmxlLCB2YWx1ZSk7XG4gICAgfSk7XG4gICAgY29uc3QgcnVuVmFsaWRhdGVBc3luYyA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlLCB0cmlnZ2VyKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICghbmFtZSB8fCBydWxlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGFwcGxpY2FibGUgPSBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihydWxlcywgdHJpZ2dlciwgdmFsaWRhdGVUcmlnZ2VyKTtcbiAgICAgICAgaWYgKGFwcGxpY2FibGUubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB5aWVsZCB2YWxpZGF0ZUZpZWxkQXN5bmMobmFtZSwgdmFsdWUsIGFwcGxpY2FibGUpO1xuICAgIH0pKTtcbiAgICBjb25zdCB7IHJ1bjogZGVib3VuY2VkVmFsaWRhdGUgfSA9IHVzZURlYm91bmNlZENhbGxiYWNrKCh2YWx1ZSkgPT4ge1xuICAgICAgICBydW5WYWxpZGF0ZSh2YWx1ZSwgJ29uQ2hhbmdlJyk7XG4gICAgfSwgdmFsaWRhdGVEZWJvdW5jZSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgLy8gdG91Y2hlZCBpcyBzZXQgYnkgdGhlIHVzZXIgY2hhbmdlIHRyaWdnZXIg4oCUXG4gICAgICAgICAgICAvLyBwcm9ncmFtbWF0aWMgc2V0RmllbGRzVmFsdWUgZG9lcyBub3QgbWFyayBmaWVsZHMgdG91Y2hlZC5cbiAgICAgICAgICAgIGNvbnN0IHRvdWNoZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLnRvdWNoZWQ7XG4gICAgICAgICAgICBpZiAoIXRvdWNoZWRbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7IHRvdWNoZWQ6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdG91Y2hlZCksIHsgW25hbWVdOiB0cnVlIH0pIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbGlkYXRlRGVib3VuY2UgJiYgdmFsaWRhdGVEZWJvdW5jZSA+IDApIHtcbiAgICAgICAgICAgICAgICBkZWJvdW5jZWRWYWxpZGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBydW5WYWxpZGF0ZSh2YWx1ZSwgJ29uQ2hhbmdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIC8vIFJlYWQgdGhlIExJVkUgdmFsdWUgZnJvbSB0aGUgc3RvcmUg4oCUIGEgY2hhbmdlIGNvbW1pdHRlZCBpbiB0aGUgc2FtZVxuICAgICAgICAvLyB0aWNrIChjaGFuZ2Ug4oaSIGltbWVkaWF0ZSBibHVyKSBtdXN0IGJlIHZhbGlkYXRlZCwgbm90IHRoZSByZW5kZXItdGltZVxuICAgICAgICAvLyBzbmFwc2hvdC5cbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gbmFtZVxuICAgICAgICAgICAgPyAobmFtZS5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBnZXROZXN0ZWRWYWx1ZShzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcywgbmFtZSlcbiAgICAgICAgICAgICAgICA6IHN0b3JlLmdldFN0YXRlKCkudmFsdWVzW25hbWVdKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHJ1blZhbGlkYXRlQXN5bmMoY3VycmVudFZhbHVlLCAnb25CbHVyJyk7XG4gICAgfSk7XG4gICAgLy8gTGF0ZXN0IGNoaWxkLXByb3ZpZGVkIGNhbGxiYWNrcywgY2FwdHVyZWQgYXQgaW5qZWN0RmllbGQgdGltZS4gVGhlIFNUQUJMRVxuICAgIC8vIGluamVjdGVkIGhhbmRsZXJzIGJlbG93IGRlbGVnYXRlIHRocm91Z2ggdGhpcyByZWYgaW5zdGVhZCBvZiBiZWluZ1xuICAgIC8vIHJlY3JlYXRlZCBwZXIgcmVuZGVyIOKAlCBzbyBhIG1lbW9pemVkIGZpZWxkIGNvbXBvbmVudCBzZWVzIHNoYWxsb3ctZXF1YWxcbiAgICAvLyBwcm9wcyBhY3Jvc3MgcmVuZGVycyBhbmQgY2FuIGJhaWwgb3V0IHdoaWxlIGFub3RoZXIgZmllbGQgaXMgdHlwaW5nLlxuICAgIGNvbnN0IGNoaWxkQ2FsbGJhY2tzUmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCBpbmplY3RlZE9uQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygoZSwgLi4uYXJncykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBoYW5kbGVDaGFuZ2UoZXh0cmFjdEV2ZW50VmFsdWUoZSwgdmFsdWVQcm9wTmFtZSkpO1xuICAgICAgICAoX2IgPSAoX2EgPSBjaGlsZENhbGxiYWNrc1JlZi5jdXJyZW50KS5vbkNoYW5nZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIGUsIC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIGNvbnN0IGluamVjdGVkT25CbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoLi4uYXJncykgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBoYW5kbGVCbHVyKCk7XG4gICAgICAgIChfYiA9IChfYSA9IGNoaWxkQ2FsbGJhY2tzUmVmLmN1cnJlbnQpLm9uQmx1cikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIC8vIEtlZXAgdGhlIHJlZ2lzdHJ5IGluIHN5bmMgd2l0aCB0aGUgTEFURVNUIHJ1bGVzIGV2ZXJ5IHJlbmRlciAocmVnaXN0cmF0aW9uXG4gICAgLy8gaXMgYSBjaGVhcCByZWYgbXV0YXRpb24pOiBkeW5hbWljIHJ1bGVzIChlLmcuIHJlcXVpcmVkIHRvZ2dsZWQgYnkgYW5vdGhlclxuICAgIC8vIGZpZWxkKSBtdXN0IGJlIHZpc2libGUgdG8gc3VibWl0LXRpbWUgdmFsaWRhdGlvbiwgbm90IGp1c3Qgb25DaGFuZ2UuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG5hbWUgJiYgcmVnaXN0ZXJGaWVsZClcbiAgICAgICAgICAgIHJlZ2lzdGVyRmllbGQobmFtZSwgcnVsZXMpO1xuICAgIH0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAobmFtZSAmJiB1bnJlZ2lzdGVyRmllbGQpXG4gICAgICAgICAgICAgICAgdW5yZWdpc3RlckZpZWxkKG5hbWUpO1xuICAgICAgICB9O1xuICAgIH0sIFtuYW1lXSk7XG4gICAgY29uc3QgaW5qZWN0RmllbGQgPSAoY2hpbGQpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIW5hbWUgfHwgIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSlcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgY29uc3QgY2hpbGRQcm9wcyA9IGNoaWxkLnByb3BzO1xuICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IChfYSA9IGNoaWxkLnR5cGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNwbGF5TmFtZTtcbiAgICAgICAgY29uc3QgaXNGb3JtQ29tcG9uZW50ID0gRk9STV9DT01QT05FTlRfTkFNRVMuaW5jbHVkZXMoZGlzcGxheU5hbWUpIHx8XG4gICAgICAgICAgICBjaGlsZFByb3BzLnBsYWNlaG9sZGVyICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGNoaWxkUHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgY2hpbGRQcm9wc1t2YWx1ZVByb3BOYW1lXSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIWlzRm9ybUNvbXBvbmVudClcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgbGV0IHNhZmVWYWx1ZSA9IGZpZWxkVmFsdWU7XG4gICAgICAgIGlmIChzYWZlVmFsdWUgPT09IG51bGwgfHwgc2FmZVZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZVByb3BOYW1lID09PSAnY2hlY2tlZCcgfHwgWydDaGVja2JveCcsICdTd2l0Y2gnXS5pbmNsdWRlcyhkaXNwbGF5TmFtZSB8fCAnJykpIHtcbiAgICAgICAgICAgICAgICBzYWZlVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFRFWFRfTElLRV9DT01QT05FTlRfTkFNRVMuaW5jbHVkZXMoZGlzcGxheU5hbWUgfHwgJycpIHx8XG4gICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5wbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2FmZVZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoVEVYVF9MSUtFX0NPTVBPTkVOVF9OQU1FUy5pbmNsdWRlcyhkaXNwbGF5TmFtZSB8fCAnJykgJiZcbiAgICAgICAgICAgIHR5cGVvZiBzYWZlVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICB0eXBlb2Ygc2FmZVZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc2FmZVZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY2hpbGRDYWxsYmFja3NSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0eXBlb2YgY2hpbGRQcm9wcy5vbkNoYW5nZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgID8gY2hpbGRQcm9wcy5vbkNoYW5nZVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgb25CbHVyOiB0eXBlb2YgY2hpbGRQcm9wcy5vbkJsdXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IGNoaWxkUHJvcHMub25CbHVyXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGluamVjdGVkUHJvcHMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IFt2YWx1ZVByb3BOYW1lXTogc2FmZVZhbHVlLCBvbkNoYW5nZTogaW5qZWN0ZWRPbkNoYW5nZSwgb25CbHVyOiBpbmplY3RlZE9uQmx1ciB9LCAoZmluYWxTdGF0dXMgPT09ICdlcnJvcicgJiYgeyBzdGF0dXM6ICdlcnJvcicgfSkpLCAoZm9ybURpc2FibGVkICYmIGNoaWxkUHJvcHMuZGlzYWJsZWQgPT09IHVuZGVmaW5lZCAmJiB7IGRpc2FibGVkOiB0cnVlIH0pKSwgKFNJWkVfQVdBUkVfQ09NUE9ORU5UX05BTUVTLmluY2x1ZGVzKGRpc3BsYXlOYW1lIHx8ICcnKSAmJlxuICAgICAgICAgICAgY2hpbGRQcm9wcy5zaXplID09PSB1bmRlZmluZWQgJiYgeyBzaXplIH0pKTtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgaW5qZWN0ZWRQcm9wcyk7XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZFZhbHVlLFxuICAgICAgICBmaWVsZEVycm9yLFxuICAgICAgICBmaWVsZFdhcm5pbmcsXG4gICAgICAgIGZpZWxkVmFsaWRhdGluZyxcbiAgICAgICAgdmFsaWRhdGVTdGF0dXM6IGZpbmFsU3RhdHVzLFxuICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIGluamVjdEZpZWxkLFxuICAgIH07XG59IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -16,8 +16,11 @@ function renderDateReadonly(value) {
|
|
|
16
16
|
}
|
|
17
17
|
export var ProFormDatePicker = createProFormField({
|
|
18
18
|
component: Calendar,
|
|
19
|
+
// Registers into the form's valueType registry so dateFormatter formats this
|
|
20
|
+
// field as a date; pass valueType="dateTime" per field for time-of-day output.
|
|
21
|
+
valueType: 'date',
|
|
19
22
|
renderReadonly: renderDateReadonly
|
|
20
23
|
});
|
|
21
24
|
ProFormDatePicker.displayName = 'ProFormDatePicker';
|
|
22
25
|
export default ProFormDatePicker;
|
|
23
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2ZpZWxkcy9Qcm9Gb3JtRGF0ZVBpY2tlci50c3giLCJjb21wb25lbnRzL1Byb0Zvcm0vZmllbGRzL1Byb0Zvcm1EYXRlUGlja2VyLmpzIl0sIm5hbWVzIjpbIkNhbGVuZGFyIiwiY3JlYXRlUHJvRm9ybUZpZWxkIiwicmVuZGVyRGF0ZVJlYWRvbmx5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwidiIsIm1hcCIsImQiLCJqb2luIiwiU3RyaW5nIiwiUHJvRm9ybURhdGVQaWNrZXIiLCJjb21wb25lbnQiLCJ2YWx1ZVR5cGUiLCJyZW5kZXJSZWFkb25seSIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxRQUFRLFFBQVEsZ0JBQWdCO0FBRXpDLFNBQVNDLGtCQUFrQixRQUFRLHNCQUFzQjtBQUV6RCxTQUFTQyxrQkFBa0JBLENBQUNDLEtBQWMsRUFBQTtFQUN4QyxJQUFJQSxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLEtBQUtDLFNBQVMsRUFBRSxPQUFPLEdBQUc7RUFFckQsSUFBSUQsS0FBSyxZQUFZRSxJQUFJLEVBQUU7SUFDekIsT0FBT0YsS0FBSyxDQUFDRyxrQkFBa0IsQ0FBQSxDQUFFO0VBQ25DO0VBRUEsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNMLEtBQUssQ0FBQyxFQUFFO0lBQ3hCLE9BQU9BLEtBQUssQ0FDVE0sTUFBTSxDQUFDLFVBQUNDLENBQUM7TUFBQSxPQUFnQkEsQ0FBQyxZQUFZTCxJQUFJO0lBQUEsRUFBQyxDQUMzQ00sR0FBRyxDQUFDLFVBQUNDLENBQUM7TUFBQSxPQUFLQSxDQUFDLENBQUNOLGtCQUFrQixDQUFBLENBQUU7SUFBQSxFQUFDLENBQ2xDTyxJQUFJLENBQUMsS0FBSyxDQUFDO0VBQ2hCO0VBRUEsT0FBT0MsTUFBTSxDQUFDWCxLQUFLLENBQUM7QUFDdEI7QUFFQSxPQUFPLElBQU1ZLGlCQUFpQixHQUFHZCxrQkFBa0IsQ0FBZ0I7RUFDakVlLFNBQVMsRUFBRWhCLFFBQVE7RUFDbkI7RUFDQTtFQUNBaUIsU0FBUyxFQUFFLE1BQU07RUFDakJDLGNBQWMsRUFBRWhCO0FDSmxCLENES0MsQ0FBQztBQUVGYSxpQkFBaUIsQ0FBQ0ksV0FBVyxHQUFHLG1CQUFtQjtBQUVuRCxlQUFlSixpQkFBaUIiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2ZpZWxkcy9Qcm9Gb3JtRGF0ZVBpY2tlci5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9DYWxlbmRhcic7XG5pbXBvcnQgeyBjcmVhdGVQcm9Gb3JtRmllbGQgfSBmcm9tICcuL2NyZWF0ZVByb0Zvcm1GaWVsZCc7XG5mdW5jdGlvbiByZW5kZXJEYXRlUmVhZG9ubHkodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuICctJztcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLmZpbHRlcigodikgPT4gdiBpbnN0YW5jZW9mIERhdGUpXG4gICAgICAgICAgICAubWFwKChkKSA9PiBkLnRvTG9jYWxlRGF0ZVN0cmluZygpKVxuICAgICAgICAgICAgLmpvaW4oJyB+ICcpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydCBjb25zdCBQcm9Gb3JtRGF0ZVBpY2tlciA9IGNyZWF0ZVByb0Zvcm1GaWVsZCh7XG4gICAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgICAvLyBSZWdpc3RlcnMgaW50byB0aGUgZm9ybSdzIHZhbHVlVHlwZSByZWdpc3RyeSBzbyBkYXRlRm9ybWF0dGVyIGZvcm1hdHMgdGhpc1xuICAgIC8vIGZpZWxkIGFzIGEgZGF0ZTsgcGFzcyB2YWx1ZVR5cGU9XCJkYXRlVGltZVwiIHBlciBmaWVsZCBmb3IgdGltZS1vZi1kYXkgb3V0cHV0LlxuICAgIHZhbHVlVHlwZTogJ2RhdGUnLFxuICAgIHJlbmRlclJlYWRvbmx5OiByZW5kZXJEYXRlUmVhZG9ubHksXG59KTtcblByb0Zvcm1EYXRlUGlja2VyLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1EYXRlUGlja2VyJztcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1EYXRlUGlja2VyOyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -3,7 +3,8 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
import React, { memo } from 'react';
|
|
5
5
|
import { ProFormItem } from '../ProFormItem';
|
|
6
|
-
import {
|
|
6
|
+
import { useProFormStable, useProFormStore } from '../context';
|
|
7
|
+
import { useStoreSelector } from '../core/formStore';
|
|
7
8
|
import { default as classnames } from '../../../utils/classnames';
|
|
8
9
|
import { CSS_PREFIX } from '../constants';
|
|
9
10
|
var classes = classnames("".concat(CSS_PREFIX, "-fieldset"));
|
|
@@ -18,22 +19,34 @@ var ProFormFieldSetBase = function ProFormFieldSetBase(props) {
|
|
|
18
19
|
gap = _props$gap === void 0 ? 8 : _props$gap,
|
|
19
20
|
style = props.style,
|
|
20
21
|
children = props.children;
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
var
|
|
22
|
+
var _useProFormStable = useProFormStable(),
|
|
23
|
+
setFieldValue = _useProFormStable.setFieldValue,
|
|
24
|
+
formInstance = _useProFormStable.formInstance;
|
|
25
|
+
var store = useProFormStore();
|
|
26
|
+
// Per-field subscription: re-render only when THIS set's array changes.
|
|
27
|
+
var rawValue = useStoreSelector(store, function (state) {
|
|
28
|
+
return name ? state.values[name] : undefined;
|
|
29
|
+
});
|
|
30
|
+
var value = Array.isArray(rawValue) ? rawValue : [];
|
|
25
31
|
var itemIndex = -1;
|
|
26
32
|
var list = React.Children.map(children, function (child) {
|
|
33
|
+
var _a;
|
|
27
34
|
if (! /*#__PURE__*/React.isValidElement(child)) return child;
|
|
28
35
|
itemIndex += 1;
|
|
29
36
|
var index = itemIndex;
|
|
30
37
|
return /*#__PURE__*/React.cloneElement(child, {
|
|
31
|
-
|
|
38
|
+
// '' (not undefined) for empty slots — an input must not switch from
|
|
39
|
+
// uncontrolled to controlled on its first edit.
|
|
40
|
+
value: (_a = value[index]) !== null && _a !== void 0 ? _a : '',
|
|
32
41
|
onChange: function onChange(val) {
|
|
33
42
|
if (!name) return;
|
|
34
43
|
var newValue = _toConsumableArray(value);
|
|
35
44
|
newValue[index] = val && _typeof(val) === 'object' && 'target' in val ? val.target.value : val;
|
|
36
45
|
setFieldValue(name, newValue);
|
|
46
|
+
// A slot edit is a user change trigger — mark touched like any field.
|
|
47
|
+
if (!formInstance.isFieldTouched(name)) {
|
|
48
|
+
formInstance.setFieldTouched(name, true);
|
|
49
|
+
}
|
|
37
50
|
}
|
|
38
51
|
});
|
|
39
52
|
});
|
|
@@ -62,4 +75,4 @@ var ProFormFieldSetBase = function ProFormFieldSetBase(props) {
|
|
|
62
75
|
ProFormFieldSetBase.displayName = 'ProFormFieldSet';
|
|
63
76
|
export var ProFormFieldSet = /*#__PURE__*/memo(ProFormFieldSetBase);
|
|
64
77
|
export default ProFormFieldSet;
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9maWVsZHMvUHJvRm9ybUZpZWxkU2V0LmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vZmllbGRzL1Byb0Zvcm1GaWVsZFNldC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsIlJlYWN0IiwibWVtbyIsIlByb0Zvcm1JdGVtIiwidXNlUHJvRm9ybVN0YWJsZSIsInVzZVByb0Zvcm1TdG9yZSIsInVzZVN0b3JlU2VsZWN0b3IiLCJkZWZhdWx0IiwiY2xhc3NuYW1lcyIsIkNTU19QUkVGSVgiLCJjbGFzc2VzIiwiY29uY2F0IiwiUHJvRm9ybUZpZWxkU2V0QmFzZSIsInByb3BzIiwibmFtZSIsImxhYmVsIiwiZGVzY3JpcHRpb24iLCJydWxlcyIsInJlcXVpcmVkIiwiZmVlZGJhY2siLCJfcHJvcHMkZ2FwIiwiZ2FwIiwic3R5bGUiLCJjaGlsZHJlbiIsIl91c2VQcm9Gb3JtU3RhYmxlIiwic2V0RmllbGRWYWx1ZSIsImZvcm1JbnN0YW5jZSIsInN0b3JlIiwicmF3VmFsdWUiLCJzdGF0ZSIsInZhbHVlcyIsInVuZGVmaW5lZCIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwiaXRlbUluZGV4IiwibGlzdCIsIkNoaWxkcmVuIiwibWFwIiwiY2hpbGQiLCJfYSIsImlzVmFsaWRFbGVtZW50IiwiaW5kZXgiLCJjbG9uZUVsZW1lbnQiLCJvbkNoYW5nZSIsInZhbCIsIm5ld1ZhbHVlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX3R5cGVvZiIsInRhcmdldCIsImlzRmllbGRUb3VjaGVkIiwic2V0RmllbGRUb3VjaGVkIiwiY29udGVudCIsImNsYXNzTmFtZSIsIk9iamVjdCIsImFzc2lnbiIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtRmllbGRTZXQiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FD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QUNwQyxJQUFJLENBQUMsRUFBRTtVQUN0Q1ksWUFBWSxDQUFDeUIsZUFBZSxDQUFDckMsSUFBSSxFQUFFLElBQUksQ0FBQztRQUMxQztNQUNGO0lEYkUsQ0NjSCxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUYsSUFBTXNDLE9BQU8sR0FDWHBELElBQUEsQ0FBQSxLQUFBLEVBQUE7SUFBS3FELFNBQVMsRUFBRTNDLE9BQU8sQ0FBQSxDQUFFO0lBQUVZLEtBQUssRUFBQWdDLE1BQUEsQ0FBQUMsTUFBQSxDQUFBO01BQUlDLE9BQU8sRUFBRSxNQUFNO01BQUVuQyxHQUFHLEVBQUhBLEdBQUc7TUFBRW9DLFVBQVUsRUFBRTtJQUFZLENBQUEsRUFBS25DLEtBQUssQ0FBQTtJQUFBQyxRQUFBLEVBQ3pGYTtFQUFJLENBQUEsQ0FFUjtFQUVELElBQUl0QixJQUFJLEVBQUU7SUFDUixPQUNFZCxJQUFBLENBQUNHLFdBQVcsRUFBQTtNQUFDWSxLQUFLLEVBQUVBLEtBQUs7TUFBRUMsV0FBVyxFQUFFQSxXQUFXO01BQUVGLElBQUksRUFBRUEsSUFBSTtNQUFFRyxLQUFLLEVBQUVBLEtBQUs7TUFBRUMsUUFBUSxFQUFFQSxRQUFRO01BQUVDLFFBQVEsRUFBRUEsUUFBUTtNQUFBSSxRQUFBLEVBQ2xINkI7SUFBTyxDQUFBLENBQ0k7RUFFbEI7RUFFQSxPQUFPQSxPQUFPO0FBQ2hCLENBQUM7QUFFRHhDLG1CQUFtQixDQUFDOEMsV0FBVyxHQUFHLGlCQUFpQjtBQUVuRCxPQUFPLElBQU1DLGVBQWUsZ0JBQUd6RCxJQUFJLENBQUNVLG1CQUFtQixDQUFDO0FBRXhELGVBQWUrQyxlQUFlIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9maWVsZHMvUHJvRm9ybUZpZWxkU2V0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUHJvRm9ybUl0ZW0gfSBmcm9tICcuLi9Qcm9Gb3JtSXRlbSc7XG5pbXBvcnQgeyB1c2VQcm9Gb3JtU3RhYmxlLCB1c2VQcm9Gb3JtU3RvcmUgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IHVzZVN0b3JlU2VsZWN0b3IgfSBmcm9tICcuLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IENTU19QUkVGSVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tZmllbGRzZXRgKTtcbmNvbnN0IFByb0Zvcm1GaWVsZFNldEJhc2UgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IG5hbWUsIGxhYmVsLCBkZXNjcmlwdGlvbiwgcnVsZXMsIHJlcXVpcmVkLCBmZWVkYmFjaywgZ2FwID0gOCwgc3R5bGUsIGNoaWxkcmVuLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBzZXRGaWVsZFZhbHVlLCBmb3JtSW5zdGFuY2UgfSA9IHVzZVByb0Zvcm1TdGFibGUoKTtcbiAgICBjb25zdCBzdG9yZSA9IHVzZVByb0Zvcm1TdG9yZSgpO1xuICAgIC8vIFBlci1maWVsZCBzdWJzY3JpcHRpb246IHJlLXJlbmRlciBvbmx5IHdoZW4gVEhJUyBzZXQncyBhcnJheSBjaGFuZ2VzLlxuICAgIGNvbnN0IHJhd1ZhbHVlID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiAobmFtZSA/IHN0YXRlLnZhbHVlc1tuYW1lXSA6IHVuZGVmaW5lZCkpO1xuICAgIGNvbnN0IHZhbHVlID0gQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkgPyByYXdWYWx1ZSA6IFtdO1xuICAgIGxldCBpdGVtSW5kZXggPSAtMTtcbiAgICBjb25zdCBsaXN0ID0gUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSlcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgaXRlbUluZGV4ICs9IDE7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gaXRlbUluZGV4O1xuICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAgICAvLyAnJyAobm90IHVuZGVmaW5lZCkgZm9yIGVtcHR5IHNsb3RzIOKAlCBhbiBpbnB1dCBtdXN0IG5vdCBzd2l0Y2ggZnJvbVxuICAgICAgICAgICAgLy8gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgb24gaXRzIGZpcnN0IGVkaXQuXG4gICAgICAgICAgICB2YWx1ZTogKF9hID0gdmFsdWVbaW5kZXhdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAodmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFuYW1lKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBbLi4udmFsdWVdO1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlW2luZGV4XSA9IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAndGFyZ2V0JyBpbiB2YWxcbiAgICAgICAgICAgICAgICAgICAgPyB2YWwudGFyZ2V0LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogdmFsO1xuICAgICAgICAgICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIEEgc2xvdCBlZGl0IGlzIGEgdXNlciBjaGFuZ2UgdHJpZ2dlciDigJQgbWFyayB0b3VjaGVkIGxpa2UgYW55IGZpZWxkLlxuICAgICAgICAgICAgICAgIGlmICghZm9ybUluc3RhbmNlLmlzRmllbGRUb3VjaGVkKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1JbnN0YW5jZS5zZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgY29udGVudCA9IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIHN0eWxlOiBPYmplY3QuYXNzaWduKHsgZGlzcGxheTogJ2ZsZXgnLCBnYXAsIGFsaWduSXRlbXM6ICdmbGV4LXN0YXJ0JyB9LCBzdHlsZSksIGNoaWxkcmVuOiBsaXN0IH0pKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4gKF9qc3goUHJvRm9ybUl0ZW0sIHsgbGFiZWw6IGxhYmVsLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIG5hbWU6IG5hbWUsIHJ1bGVzOiBydWxlcywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBmZWVkYmFjazogZmVlZGJhY2ssIGNoaWxkcmVuOiBjb250ZW50IH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG59O1xuUHJvRm9ybUZpZWxkU2V0QmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtRmllbGRTZXQnO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1GaWVsZFNldCA9IG1lbW8oUHJvRm9ybUZpZWxkU2V0QmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtRmllbGRTZXQ7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|