@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.
Files changed (103) hide show
  1. package/es/components/ProForm/ProForm.d.ts +10 -2
  2. package/es/components/ProForm/ProForm.js +241 -55
  3. package/es/components/ProForm/ProFormDependency.d.ts +11 -2
  4. package/es/components/ProForm/ProFormDependency.js +29 -133
  5. package/es/components/ProForm/ProFormItem.js +146 -52
  6. package/es/components/ProForm/ProFormList.js +114 -62
  7. package/es/components/ProForm/SchemaForm.d.ts +7 -0
  8. package/es/components/ProForm/SchemaForm.js +103 -0
  9. package/es/components/ProForm/Submitter.js +26 -5
  10. package/es/components/ProForm/context.d.ts +30 -3
  11. package/es/components/ProForm/context.js +69 -10
  12. package/es/components/ProForm/core/constants.d.ts +12 -3
  13. package/es/components/ProForm/core/constants.js +18 -7
  14. package/es/components/ProForm/core/formStore.d.ts +24 -0
  15. package/es/components/ProForm/core/formStore.js +101 -0
  16. package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
  17. package/es/components/ProForm/core/hooks/useForm.js +336 -212
  18. package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  19. package/es/components/ProForm/core/hooks/useFormCore.js +151 -93
  20. package/es/components/ProForm/core/interface.d.ts +33 -12
  21. package/es/components/ProForm/core/runRules.d.ts +20 -8
  22. package/es/components/ProForm/core/runRules.js +105 -50
  23. package/es/components/ProForm/core/useFormItem.d.ts +10 -1
  24. package/es/components/ProForm/core/useFormItem.js +141 -56
  25. package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
  26. package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
  27. package/es/components/ProForm/fields/createProFormField.js +61 -32
  28. package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  29. package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
  30. package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  31. package/es/components/ProForm/hooks/useUrlSync.js +170 -0
  32. package/es/components/ProForm/index.d.ts +12 -5
  33. package/es/components/ProForm/index.js +7 -2
  34. package/es/components/ProForm/interface.d.ts +185 -28
  35. package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
  36. package/es/components/ProForm/layouts/DialogForm.js +18 -7
  37. package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  38. package/es/components/ProForm/layouts/DrawerForm.js +17 -7
  39. package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  40. package/es/components/ProForm/layouts/QueryFilter.js +47 -71
  41. package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  42. package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
  43. package/es/components/ProForm/style/ProForm.css +4 -4
  44. package/es/components/ProForm/utils.d.ts +12 -1
  45. package/es/components/ProForm/utils.js +101 -28
  46. package/es/components/ProTable/ProTable.js +3 -3
  47. package/es/components/Tooltip/style/Tooltip.css +1 -0
  48. package/es/index.css +1 -1
  49. package/es/index.d.ts +2 -2
  50. package/es/index.js +2 -2
  51. package/lib/components/ProForm/ProForm.d.ts +10 -2
  52. package/lib/components/ProForm/ProForm.js +239 -53
  53. package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
  54. package/lib/components/ProForm/ProFormDependency.js +30 -135
  55. package/lib/components/ProForm/ProFormItem.js +143 -48
  56. package/lib/components/ProForm/ProFormList.js +112 -60
  57. package/lib/components/ProForm/SchemaForm.d.ts +7 -0
  58. package/lib/components/ProForm/SchemaForm.js +110 -0
  59. package/lib/components/ProForm/Submitter.js +26 -5
  60. package/lib/components/ProForm/context.d.ts +30 -3
  61. package/lib/components/ProForm/context.js +69 -10
  62. package/lib/components/ProForm/core/constants.d.ts +12 -3
  63. package/lib/components/ProForm/core/constants.js +19 -8
  64. package/lib/components/ProForm/core/formStore.d.ts +24 -0
  65. package/lib/components/ProForm/core/formStore.js +110 -0
  66. package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
  67. package/lib/components/ProForm/core/hooks/useForm.js +336 -212
  68. package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  69. package/lib/components/ProForm/core/hooks/useFormCore.js +150 -92
  70. package/lib/components/ProForm/core/interface.d.ts +33 -12
  71. package/lib/components/ProForm/core/runRules.d.ts +20 -8
  72. package/lib/components/ProForm/core/runRules.js +106 -50
  73. package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
  74. package/lib/components/ProForm/core/useFormItem.js +138 -53
  75. package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
  76. package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
  77. package/lib/components/ProForm/fields/createProFormField.js +61 -32
  78. package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  79. package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
  80. package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  81. package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
  82. package/lib/components/ProForm/index.d.ts +12 -5
  83. package/lib/components/ProForm/index.js +16 -1
  84. package/lib/components/ProForm/interface.d.ts +185 -28
  85. package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
  86. package/lib/components/ProForm/layouts/DialogForm.js +18 -7
  87. package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  88. package/lib/components/ProForm/layouts/DrawerForm.js +17 -7
  89. package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  90. package/lib/components/ProForm/layouts/QueryFilter.js +46 -70
  91. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  92. package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
  93. package/lib/components/ProForm/style/ProForm.css +4 -4
  94. package/lib/components/ProForm/utils.d.ts +12 -1
  95. package/lib/components/ProForm/utils.js +104 -28
  96. package/lib/components/ProTable/ProTable.js +3 -3
  97. package/lib/components/Tooltip/style/Tooltip.css +1 -0
  98. package/lib/index.css +1 -1
  99. package/lib/index.d.ts +2 -2
  100. package/lib/index.js +13 -1
  101. package/package.json +1 -1
  102. package/scripts/mcp-server/examples.generated.json +90 -0
  103. package/scripts/mcp-server/index.generated.json +1866 -212
@@ -1,14 +1,15 @@
1
1
  import _typeof from "@babel/runtime/helpers/esm/typeof";
2
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { memo, useEffect, useMemo, useRef } from 'react';
6
6
  import useMemoizedFn from '@1money/hooks/useMemoizedFn';
7
7
  import useSafeState from '@1money/hooks/useSafeState';
8
8
  import { default as classnames } from '../../utils/classnames';
9
9
  import { Button } from '../Button';
10
10
  import { TypographyLabel, TypographyBody } from '../Typography';
11
- import { FormListContext, useFormListContext, useProFormContext } from './context';
11
+ import { FormListContext, useFormListContext, useProFormStable, useProFormStore } from './context';
12
+ import { useStoreSelector } from './core/formStore';
12
13
  import { CSS_PREFIX, DEFAULT_TEXT, PROFORM_LIST_LABEL_SIZE, PROFORM_LIST_LABEL_COLOR } from './constants';
13
14
  import { extractButtonProps, getNestedValue } from './utils';
14
15
  var classes = classnames("".concat(CSS_PREFIX, "-list"));
@@ -16,6 +17,70 @@ var listKeyCounter = 0;
16
17
  var generateKey = function generateKey() {
17
18
  return "list_".concat(++listKeyCounter);
18
19
  };
20
+ // Stable empty result for the no-value case — a fresh [] per selector run
21
+ // would never compare equal and loop the subscription.
22
+ var EMPTY_LIST = [];
23
+ // Row-level memo boundary: setNestedValue clones ONLY the edited row, so
24
+ // untouched rows keep their record identity and bail out here while a
25
+ // sibling row is being edited.
26
+ var ListRowActionsBase = function ListRowActionsBase(_ref) {
27
+ var index = _ref.index,
28
+ record = _ref.record,
29
+ canAdd = _ref.canAdd,
30
+ canRemove = _ref.canRemove,
31
+ copyIconProps = _ref.copyIconProps,
32
+ deleteIconProps = _ref.deleteIconProps,
33
+ action = _ref.action,
34
+ actionRender = _ref.actionRender,
35
+ itemRender = _ref.itemRender,
36
+ onCopy = _ref.onCopy,
37
+ onRemove = _ref.onRemove;
38
+ var copyBtnProps = extractButtonProps(copyIconProps);
39
+ var deleteBtnProps = extractButtonProps(deleteIconProps);
40
+ var defaultDom = {
41
+ copy: copyIconProps !== false ? _jsx(Button, Object.assign({
42
+ type: "button",
43
+ color: "secondary",
44
+ size: "small"
45
+ }, copyBtnProps.rest, {
46
+ onClick: function onClick() {
47
+ return onCopy(index);
48
+ },
49
+ disabled: !canAdd || copyBtnProps.disabled,
50
+ children: DEFAULT_TEXT.copy
51
+ }), "copy-".concat(index)) : null,
52
+ "delete": deleteIconProps !== false ? _jsx(Button, Object.assign({
53
+ type: "button",
54
+ color: "secondary",
55
+ size: "small"
56
+ }, deleteBtnProps.rest, {
57
+ onClick: function onClick() {
58
+ return onRemove(index);
59
+ },
60
+ disabled: !canRemove || deleteBtnProps.disabled,
61
+ children: DEFAULT_TEXT["delete"]
62
+ }), "delete-".concat(index)) : null
63
+ };
64
+ var renderedActions = actionRender ? actionRender({
65
+ index: index,
66
+ record: record
67
+ }, action, defaultDom) : [defaultDom.copy, defaultDom["delete"]].filter(Boolean);
68
+ var rowNode = _jsx("div", {
69
+ className: classes('row-actions'),
70
+ children: renderedActions
71
+ });
72
+ if (itemRender) {
73
+ return _jsx(_Fragment, {
74
+ children: itemRender({
75
+ listDom: rowNode,
76
+ action: action
77
+ })
78
+ });
79
+ }
80
+ return rowNode;
81
+ };
82
+ ListRowActionsBase.displayName = 'ProFormListRowActions';
83
+ var ListRowActions = /*#__PURE__*/memo(ListRowActionsBase);
19
84
  var ProFormListBase = function ProFormListBase(props) {
20
85
  var _a, _b;
21
86
  var rawName = props.name,
@@ -37,19 +102,21 @@ var ProFormListBase = function ProFormListBase(props) {
37
102
  // ── Nested list: prepend parent list name ──
38
103
  var parentCtx = useFormListContext();
39
104
  var fullName = parentCtx.listName ? "".concat(parentCtx.listName, ".").concat(rawName) : rawName;
40
- var _useProFormContext = useProFormContext(),
41
- values = _useProFormContext.values,
42
- setFieldValue = _useProFormContext.setFieldValue;
105
+ var _useProFormStable = useProFormStable(),
106
+ setFieldValue = _useProFormStable.setFieldValue;
107
+ var store = useProFormStore();
43
108
  var initialApplied = useRef(false);
44
109
  var keysRef = useRef([]);
45
110
  var _useSafeState = useSafeState(null),
46
111
  _useSafeState2 = _slicedToArray(_useSafeState, 2),
47
112
  listError = _useSafeState2[0],
48
113
  setListError = _useSafeState2[1];
49
- var list = useMemo(function () {
50
- var raw = fullName.includes('.') ? getNestedValue(values, fullName) : values[fullName];
51
- return Array.isArray(raw) ? raw : [];
52
- }, [values, fullName]);
114
+ // Subscribe ONLY to this list's own value: typing elsewhere in the form
115
+ // leaves the array identity untouched and this component does not render.
116
+ var list = useStoreSelector(store, function (state) {
117
+ var raw = fullName.includes('.') ? getNestedValue(state.values, fullName) : state.values[fullName];
118
+ return Array.isArray(raw) ? raw : EMPTY_LIST;
119
+ });
53
120
  // Sync keys with list length
54
121
  while (keysRef.current.length < list.length) {
55
122
  keysRef.current.push(generateKey());
@@ -144,62 +211,47 @@ var ProFormListBase = function ProFormListBase(props) {
144
211
  getList: getList
145
212
  };
146
213
  }, [add, removeAt, move, copy, getList]);
214
+ // Per-key cache keeps each row's field object identity stable across list
215
+ // commits (e.g. typing in a sibling row), so memoized row content sees
216
+ // shallow-equal props and bails out.
217
+ var fieldObjCache = useRef(new Map());
147
218
  var mappedFields = useMemo(function () {
148
- return list.map(function (_item, index) {
149
- return {
150
- name: "".concat(fullName, ".").concat(index),
151
- key: keysRef.current[index] || "fallback_".concat(index)
219
+ var nextCache = new Map();
220
+ var fields = list.map(function (_item, index) {
221
+ var key = keysRef.current[index] || "fallback_".concat(index);
222
+ var fieldName = "".concat(fullName, ".").concat(index);
223
+ var cached = fieldObjCache.current.get(key);
224
+ var field = cached && cached.name === fieldName ? cached : {
225
+ name: fieldName,
226
+ key: key
152
227
  };
228
+ nextCache.set(key, field);
229
+ return field;
153
230
  });
231
+ fieldObjCache.current = nextCache;
232
+ return fields;
154
233
  }, [list, fullName]);
155
- // Render children
156
- var listDom = typeof children === 'function' ? children(mappedFields, action) : children;
157
- // Action buttons per row
158
- var actionRows = useMemo(function () {
159
- return list.map(function (record, index) {
160
- var copyBtnProps = extractButtonProps(copyIconProps);
161
- var deleteBtnProps = extractButtonProps(deleteIconProps);
162
- var defaultDom = {
163
- copy: copyIconProps !== false ? _jsx(Button, Object.assign({
164
- type: "button",
165
- color: "secondary",
166
- size: "small"
167
- }, copyBtnProps.rest, {
168
- onClick: function onClick() {
169
- return copy(index);
170
- },
171
- disabled: !canAdd || copyBtnProps.disabled,
172
- children: DEFAULT_TEXT.copy
173
- }), "copy-".concat(index)) : null,
174
- "delete": deleteIconProps !== false ? _jsx(Button, Object.assign({
175
- type: "button",
176
- color: "secondary",
177
- size: "small"
178
- }, deleteBtnProps.rest, {
179
- onClick: function onClick() {
180
- return removeAt(index);
181
- },
182
- disabled: !canRemove || deleteBtnProps.disabled,
183
- children: DEFAULT_TEXT["delete"]
184
- }), "delete-".concat(index)) : null
185
- };
186
- var renderedActions = actionRender ? actionRender({
187
- index: index,
188
- record: record
189
- }, action, defaultDom) : [defaultDom.copy, defaultDom["delete"]].filter(Boolean);
190
- var rowNode = _jsx("div", {
191
- className: classes('row-actions'),
192
- children: renderedActions
193
- }, keysRef.current[index] || index);
194
- if (itemRender) {
195
- return itemRender({
196
- listDom: rowNode,
197
- action: action
198
- });
199
- }
200
- return rowNode;
201
- });
202
- }, [list, copyIconProps, deleteIconProps, canAdd, canRemove, copy, removeAt, action, actionRender, itemRender]);
234
+ // Memoized so the row factory is re-invoked only when the list itself (or
235
+ // the consumer-provided children) changes never for unrelated commits.
236
+ var listDom = useMemo(function () {
237
+ return typeof children === 'function' ? children(mappedFields, action) : children;
238
+ }, [children, mappedFields, action]);
239
+ // Action buttons per row — ListRowActions is the memo boundary
240
+ var actionRows = list.map(function (record, index) {
241
+ return _jsx(ListRowActions, {
242
+ index: index,
243
+ record: record,
244
+ canAdd: canAdd,
245
+ canRemove: canRemove,
246
+ copyIconProps: copyIconProps,
247
+ deleteIconProps: deleteIconProps,
248
+ action: action,
249
+ actionRender: actionRender,
250
+ itemRender: itemRender,
251
+ onCopy: copy,
252
+ onRemove: removeAt
253
+ }, keysRef.current[index] || index);
254
+ });
203
255
  // Creator button
204
256
  var hasCreator = creatorButtonProps !== false;
205
257
  var creatorConfig = hasCreator && _typeof(creatorButtonProps) === 'object' ? creatorButtonProps : {};
@@ -250,4 +302,4 @@ var ProFormListBase = function ProFormListBase(props) {
250
302
  ProFormListBase.displayName = 'ProFormList';
251
303
  export var ProFormList = /*#__PURE__*/memo(ProFormListBase);
252
304
  export default ProFormList;
253
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlTWVtb2l6ZWRGbiIsInVzZVNhZmVTdGF0ZSIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiQnV0dG9uIiwiVHlwb2dyYXBoeUxhYmVsIiwiVHlwb2dyYXBoeUJvZHkiLCJGb3JtTGlzdENvbnRleHQiLCJ1c2VGb3JtTGlzdENvbnRleHQiLCJ1c2VQcm9Gb3JtQ29udGV4dCIsIkNTU19QUkVGSVgiLCJERUZBVUxUX1RFWFQiLCJQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSIsIlBST0ZPUk1fTElTVF9MQUJFTF9DT0xPUiIsImV4dHJhY3RCdXR0b25Qcm9wcyIsImdldE5lc3RlZFZhbHVlIiwiY2xhc3NlcyIsImNvbmNhdCIsImxpc3RLZXlDb3VudGVyIiwiZ2VuZXJhdGVLZXkiLCJQcm9Gb3JtTGlzdEJhc2UiLCJwcm9wcyIsIl9hIiwiX2IiLCJyYXdOYW1lIiwibmFtZSIsImxhYmVsIiwibWluIiwibWF4IiwicmVxdWlyZWQiLCJfcHJvcHMkcmVxdWlyZWRNZXNzYWciLCJyZXF1aXJlZE1lc3NhZ2UiLCJpbml0aWFsVmFsdWUiLCJjb3B5SWNvblByb3BzIiwiZGVsZXRlSWNvblByb3BzIiwiY3JlYXRvckJ1dHRvblByb3BzIiwiaXRlbVJlbmRlciIsImFjdGlvblJlbmRlciIsImNoaWxkcmVuIiwib25BZnRlckFkZCIsIm9uQWZ0ZXJSZW1vdmUiLCJwYXJlbnRDdHgiLCJmdWxsTmFtZSIsImxpc3ROYW1lIiwiX3VzZVByb0Zvcm1Db250ZXh0IiwidmFsdWVzIiwic2V0RmllbGRWYWx1ZSIsImluaXRpYWxBcHBsaWVkIiwia2V5c1JlZiIsIl91c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibGlzdEVycm9yIiwic2V0TGlzdEVycm9yIiwibGlzdCIsInJhdyIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudCIsImxlbmd0aCIsInB1c2giLCJzbGljZSIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hcCIsImNhbkFkZCIsImNhblJlbW92ZSIsInZhbGlkYXRlTGlzdCIsImFkZCIsImRlZmF1bHRWYWx1ZSIsImluZGV4IiwidmFsdWUiLCJuZXdMaXN0IiwibmV3S2V5cyIsImluc2VydEluZGV4Iiwic3BsaWNlIiwicmVtb3ZlQXQiLCJjb3B5IiwiT2JqZWN0IiwiYXNzaWduIiwibW92ZSIsImZyb20iLCJ0byIsIl9uZXdMaXN0JHNwbGljZSIsIl9uZXdMaXN0JHNwbGljZTIiLCJtb3ZlZEl0ZW0iLCJfbmV3S2V5cyRzcGxpY2UiLCJfbmV3S2V5cyRzcGxpY2UyIiwibW92ZWRLZXkiLCJnZXRMaXN0IiwiYWN0aW9uIiwicmVtb3ZlIiwibWFwcGVkRmllbGRzIiwiX2l0ZW0iLCJrZXkiLCJsaXN0RG9tIiwiYWN0aW9uUm93cyIsInJlY29yZCIsImNvcHlCdG5Qcm9wcyIsImRlbGV0ZUJ0blByb3BzIiwiZGVmYXVsdERvbSIsInR5cGUiLCJjb2xvciIsInNpemUiLCJyZXN0Iiwib25DbGljayIsImRpc2FibGVkIiwicmVuZGVyZWRBY3Rpb25zIiwiZmlsdGVyIiwiQm9vbGVhbiIsInJvd05vZGUiLCJjbGFzc05hbWUiLCJoYXNDcmVhdG9yIiwiY3JlYXRvckNvbmZpZyIsIl90eXBlb2YiLCJjcmVhdG9yUG9zaXRpb24iLCJwb3NpdGlvbiIsImNyZWF0b3JUZXh0IiwidGV4dCIsImNyZWF0b3JCdXR0b24iLCJmb3JtTGlzdENvbnRleHRWYWx1ZSIsIlByb3ZpZGVyIiwiYXMiLCJkaXNwbGF5TmFtZSIsIlByb0Zvcm1MaXN0Il0sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHVzZVNhZmVTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZVNhZmVTdGF0ZSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbic7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5TGFiZWwsIFR5cG9ncmFwaHlCb2R5IH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBGb3JtTGlzdENvbnRleHQsIHVzZUZvcm1MaXN0Q29udGV4dCwgdXNlUHJvRm9ybUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhULCBQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSwgUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdEJ1dHRvblByb3BzLCBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tbGlzdGApO1xubGV0IGxpc3RLZXlDb3VudGVyID0gMDtcbmNvbnN0IGdlbmVyYXRlS2V5ID0gKCkgPT4gYGxpc3RfJHsrK2xpc3RLZXlDb3VudGVyfWA7XG5jb25zdCBQcm9Gb3JtTGlzdEJhc2UgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHsgbmFtZTogcmF3TmFtZSwgbGFiZWwsIG1pbiwgbWF4LCByZXF1aXJlZCwgcmVxdWlyZWRNZXNzYWdlID0gJ1RoaXMgbGlzdCBjYW5ub3QgYmUgZW1wdHknLCBpbml0aWFsVmFsdWUsIGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wcywgY3JlYXRvckJ1dHRvblByb3BzLCBpdGVtUmVuZGVyLCBhY3Rpb25SZW5kZXIsIGNoaWxkcmVuLCBvbkFmdGVyQWRkLCBvbkFmdGVyUmVtb3ZlLCB9ID0gcHJvcHM7XG4gICAgLy8g4pSA4pSAIE5lc3RlZCBsaXN0OiBwcmVwZW5kIHBhcmVudCBsaXN0IG5hbWUg4pSA4pSAXG4gICAgY29uc3QgcGFyZW50Q3R4ID0gdXNlRm9ybUxpc3RDb250ZXh0KCk7XG4gICAgY29uc3QgZnVsbE5hbWUgPSBwYXJlbnRDdHgubGlzdE5hbWUgPyBgJHtwYXJlbnRDdHgubGlzdE5hbWV9LiR7cmF3TmFtZX1gIDogcmF3TmFtZTtcbiAgICBjb25zdCB7IHZhbHVlcywgc2V0RmllbGRWYWx1ZSB9ID0gdXNlUHJvRm9ybUNvbnRleHQoKTtcbiAgICBjb25zdCBpbml0aWFsQXBwbGllZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qga2V5c1JlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgW2xpc3RFcnJvciwgc2V0TGlzdEVycm9yXSA9IHVzZVNhZmVTdGF0ZShudWxsKTtcbiAgICBjb25zdCBsaXN0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGZ1bGxOYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUodmFsdWVzLCBmdWxsTmFtZSlcbiAgICAgICAgICAgIDogdmFsdWVzW2Z1bGxOYW1lXTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdyA6IFtdO1xuICAgIH0sIFt2YWx1ZXMsIGZ1bGxOYW1lXSk7XG4gICAgLy8gU3luYyBrZXlzIHdpdGggbGlzdCBsZW5ndGhcbiAgICB3aGlsZSAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA8IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudC5wdXNoKGdlbmVyYXRlS2V5KCkpO1xuICAgIH1cbiAgICBpZiAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA+IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGtleXNSZWYuY3VycmVudC5zbGljZSgwLCBsaXN0Lmxlbmd0aCk7XG4gICAgfVxuICAgIC8vIEFwcGx5IGluaXRpYWwgdmFsdWUgb25jZVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChpbml0aWFsQXBwbGllZC5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdC5sZW5ndGggIT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbml0aWFsVmFsdWUpIHx8IGluaXRpYWxWYWx1ZS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRpYWxBcHBsaWVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBbLi4uaW5pdGlhbFZhbHVlXSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGluaXRpYWxWYWx1ZS5tYXAoKCkgPT4gZ2VuZXJhdGVLZXkoKSk7XG4gICAgfSwgW2xpc3QubGVuZ3RoLCBpbml0aWFsVmFsdWUsIGZ1bGxOYW1lLCBzZXRGaWVsZFZhbHVlXSk7XG4gICAgLy8gQ2xlYXIgZXJyb3Igd2hlbiBsaXN0IGJlY29tZXMgbm9uLWVtcHR5XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHJlcXVpcmVkICYmIGxpc3QubGVuZ3RoID4gMCAmJiBsaXN0RXJyb3IpIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihudWxsKTtcbiAgICAgICAgfVxuICAgIH0sIFtsaXN0Lmxlbmd0aCwgcmVxdWlyZWQsIGxpc3RFcnJvciwgc2V0TGlzdEVycm9yXSk7XG4gICAgY29uc3QgY2FuQWRkID0gbWF4ID09IG51bGwgfHwgbGlzdC5sZW5ndGggPCBtYXg7XG4gICAgY29uc3QgY2FuUmVtb3ZlID0gbWluID09IG51bGwgfHwgbGlzdC5sZW5ndGggPiBtaW47XG4gICAgY29uc3QgdmFsaWRhdGVMaXN0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmICghcmVxdWlyZWQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRMaXN0RXJyb3IocmVxdWlyZWRNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzZXRMaXN0RXJyb3IobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGFkZCA9IHVzZU1lbW9pemVkRm4oKGRlZmF1bHRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjYW5BZGQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDoge307XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgaW5zZXJ0SW5kZXggPSB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gaW5kZXggOiBuZXdMaXN0Lmxlbmd0aDtcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIHZhbHVlKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIGdlbmVyYXRlS2V5KCkpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICAgICAgb25BZnRlckFkZCA9PT0gbnVsbCB8fCBvbkFmdGVyQWRkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFmdGVyQWRkKHZhbHVlLCBpbnNlcnRJbmRleCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVtb3ZlQXQgPSB1c2VNZW1vaXplZEZuKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhblJlbW92ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBuZXdMaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIG5ld0tleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgICAgIG9uQWZ0ZXJSZW1vdmUgPT09IG51bGwgfHwgb25BZnRlclJlbW92ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BZnRlclJlbW92ZShpbmRleCk7XG4gICAgICAgIC8vIFZhbGlkYXRlIGFmdGVyIHJlbW92ZVxuICAgICAgICBpZiAocmVxdWlyZWQgJiYgbmV3TGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihyZXF1aXJlZE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY29weSA9IHVzZU1lbW9pemVkRm4oKGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY2FuQWRkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGxpc3RbaW5kZXhdID8gT2JqZWN0LmFzc2lnbih7fSwgbGlzdFtpbmRleF0pIDoge307XG4gICAgICAgIGFkZCh2YWx1ZSwgaW5kZXggKyAxKTtcbiAgICB9KTtcbiAgICBjb25zdCBtb3ZlID0gdXNlTWVtb2l6ZWRGbigoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgaWYgKGZyb20gPT09IHRvKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoZnJvbSA8IDAgfHwgZnJvbSA+PSBsaXN0Lmxlbmd0aCB8fCB0byA8IDAgfHwgdG8gPj0gbGlzdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgW21vdmVkSXRlbV0gPSBuZXdMaXN0LnNwbGljZShmcm9tLCAxKTtcbiAgICAgICAgY29uc3QgW21vdmVkS2V5XSA9IG5ld0tleXMuc3BsaWNlKGZyb20sIDEpO1xuICAgICAgICBuZXdMaXN0LnNwbGljZSh0bywgMCwgbW92ZWRJdGVtKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UodG8sIDAsIG1vdmVkS2V5KTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0TGlzdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gbGlzdCk7XG4gICAgY29uc3QgYWN0aW9uID0gdXNlTWVtbygoKSA9PiAoeyBhZGQsIHJlbW92ZTogcmVtb3ZlQXQsIG1vdmUsIGNvcHksIGdldExpc3QgfSksIFthZGQsIHJlbW92ZUF0LCBtb3ZlLCBjb3B5LCBnZXRMaXN0XSk7XG4gICAgY29uc3QgbWFwcGVkRmllbGRzID0gdXNlTWVtbygoKSA9PiBsaXN0Lm1hcCgoX2l0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICBuYW1lOiBgJHtmdWxsTmFtZX0uJHtpbmRleH1gLFxuICAgICAgICBrZXk6IGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgYGZhbGxiYWNrXyR7aW5kZXh9YCxcbiAgICB9KSksIFtsaXN0LCBmdWxsTmFtZV0pO1xuICAgIC8vIFJlbmRlciBjaGlsZHJlblxuICAgIGNvbnN0IGxpc3REb20gPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjaGlsZHJlbihtYXBwZWRGaWVsZHMsIGFjdGlvbilcbiAgICAgICAgOiBjaGlsZHJlbjtcbiAgICAvLyBBY3Rpb24gYnV0dG9ucyBwZXIgcm93XG4gICAgY29uc3QgYWN0aW9uUm93cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbGlzdC5tYXAoKHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvcHlCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhjb3B5SWNvblByb3BzKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbGV0ZUJ0blByb3BzID0gZXh0cmFjdEJ1dHRvblByb3BzKGRlbGV0ZUljb25Qcm9wcyk7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0RG9tID0ge1xuICAgICAgICAgICAgICAgIGNvcHk6IGNvcHlJY29uUHJvcHMgIT09IGZhbHNlID8gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IFwic21hbGxcIiB9LCBjb3B5QnRuUHJvcHMucmVzdCwgeyBvbkNsaWNrOiAoKSA9PiBjb3B5KGluZGV4KSwgZGlzYWJsZWQ6ICFjYW5BZGQgfHwgY29weUJ0blByb3BzLmRpc2FibGVkLCBjaGlsZHJlbjogREVGQVVMVF9URVhULmNvcHkgfSksIGBjb3B5LSR7aW5kZXh9YCkpIDogbnVsbCxcbiAgICAgICAgICAgICAgICBkZWxldGU6IGRlbGV0ZUljb25Qcm9wcyAhPT0gZmFsc2UgPyAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiIH0sIGRlbGV0ZUJ0blByb3BzLnJlc3QsIHsgb25DbGljazogKCkgPT4gcmVtb3ZlQXQoaW5kZXgpLCBkaXNhYmxlZDogIWNhblJlbW92ZSB8fCBkZWxldGVCdG5Qcm9wcy5kaXNhYmxlZCwgY2hpbGRyZW46IERFRkFVTFRfVEVYVC5kZWxldGUgfSksIGBkZWxldGUtJHtpbmRleH1gKSkgOiBudWxsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRlcmVkQWN0aW9ucyA9IGFjdGlvblJlbmRlclxuICAgICAgICAgICAgICAgID8gYWN0aW9uUmVuZGVyKHsgaW5kZXgsIHJlY29yZCB9LCBhY3Rpb24sIGRlZmF1bHREb20pXG4gICAgICAgICAgICAgICAgOiBbZGVmYXVsdERvbS5jb3B5LCBkZWZhdWx0RG9tLmRlbGV0ZV0uZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgICAgY29uc3Qgcm93Tm9kZSA9IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdyb3ctYWN0aW9ucycpLCBjaGlsZHJlbjogcmVuZGVyZWRBY3Rpb25zIH0sIGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgaW5kZXgpKTtcbiAgICAgICAgICAgIGlmIChpdGVtUmVuZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1SZW5kZXIoeyBsaXN0RG9tOiByb3dOb2RlLCBhY3Rpb24gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcm93Tm9kZTtcbiAgICAgICAgfSk7XG4gICAgfSwgW2xpc3QsIGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wcywgY2FuQWRkLCBjYW5SZW1vdmUsIGNvcHksIHJlbW92ZUF0LCBhY3Rpb24sIGFjdGlvblJlbmRlciwgaXRlbVJlbmRlcl0pO1xuICAgIC8vIENyZWF0b3IgYnV0dG9uXG4gICAgY29uc3QgaGFzQ3JlYXRvciA9IGNyZWF0b3JCdXR0b25Qcm9wcyAhPT0gZmFsc2U7XG4gICAgY29uc3QgY3JlYXRvckNvbmZpZyA9IGhhc0NyZWF0b3IgJiYgdHlwZW9mIGNyZWF0b3JCdXR0b25Qcm9wcyA9PT0gJ29iamVjdCcgPyBjcmVhdG9yQnV0dG9uUHJvcHMgOiB7fTtcbiAgICBjb25zdCBjcmVhdG9yUG9zaXRpb24gPSAoX2EgPSBjcmVhdG9yQ29uZmlnID09PSBudWxsIHx8IGNyZWF0b3JDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0b3JDb25maWcucG9zaXRpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdib3R0b20nO1xuICAgIGNvbnN0IGNyZWF0b3JUZXh0ID0gKF9iID0gY3JlYXRvckNvbmZpZyA9PT0gbnVsbCB8fCBjcmVhdG9yQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjcmVhdG9yQ29uZmlnLnRleHQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IERFRkFVTFRfVEVYVC5hZGQ7XG4gICAgY29uc3QgY3JlYXRvckJ1dHRvbiA9IGhhc0NyZWF0b3IgPyAoX2pzeChCdXR0b24sIHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChjcmVhdG9yUG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgYWRkKHt9LCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBkaXNhYmxlZDogIWNhbkFkZCwgY2hpbGRyZW46IGNyZWF0b3JUZXh0IH0pKSA6IG51bGw7XG4gICAgY29uc3QgZm9ybUxpc3RDb250ZXh0VmFsdWUgPSB1c2VNZW1vKCgpID0+ICh7IGxpc3ROYW1lOiBmdWxsTmFtZSB9KSwgW2Z1bGxOYW1lXSk7XG4gICAgcmV0dXJuIChfanN4KEZvcm1MaXN0Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZm9ybUxpc3RDb250ZXh0VmFsdWUsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogW2xhYmVsICYmIF9qc3goVHlwb2dyYXBoeUxhYmVsLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnKSwgc2l6ZTogUFJPRk9STV9MSVNUX0xBQkVMX1NJWkUsIGNvbG9yOiBQUk9GT1JNX0xJU1RfTEFCRUxfQ09MT1IsIGNoaWxkcmVuOiBsYWJlbCB9KSwgY3JlYXRvclBvc2l0aW9uID09PSAndG9wJyAmJiBjcmVhdG9yQnV0dG9uLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBsaXN0RG9tIH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdhY3Rpb25zJyksIGNoaWxkcmVuOiBhY3Rpb25Sb3dzIH0pLCBjcmVhdG9yUG9zaXRpb24gPT09ICdib3R0b20nICYmIGNyZWF0b3JCdXR0b24sIGxpc3RFcnJvciAmJiBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBzaXplOiBcInNtXCIsIGNvbG9yOiBcImRhbmdlclwiLCBjaGlsZHJlbjogbGlzdEVycm9yIH0pXSB9KSB9KSk7XG59O1xuUHJvRm9ybUxpc3RCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1MaXN0JztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtTGlzdCA9IG1lbW8oUHJvRm9ybUxpc3RCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1MaXN0OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
305
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VNZW1vaXplZEZuIiwidXNlU2FmZVN0YXRlIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJCdXR0b24iLCJUeXBvZ3JhcGh5TGFiZWwiLCJUeXBvZ3JhcGh5Qm9keSIsIkZvcm1MaXN0Q29udGV4dCIsInVzZUZvcm1MaXN0Q29udGV4dCIsInVzZVByb0Zvcm1TdGFibGUiLCJ1c2VQcm9Gb3JtU3RvcmUiLCJ1c2VTdG9yZVNlbGVjdG9yIiwiQ1NTX1BSRUZJWCIsIkRFRkFVTFRfVEVYVCIsIlBST0ZPUk1fTElTVF9MQUJFTF9TSVpFIiwiUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SIiwiZXh0cmFjdEJ1dHRvblByb3BzIiwiZ2V0TmVzdGVkVmFsdWUiLCJjbGFzc2VzIiwiY29uY2F0IiwibGlzdEtleUNvdW50ZXIiLCJnZW5lcmF0ZUtleSIsIkVNUFRZX0xJU1QiLCJMaXN0Um93QWN0aW9uc0Jhc2UiLCJfcmVmIiwiaW5kZXgiLCJyZWNvcmQiLCJjYW5BZGQiLCJjYW5SZW1vdmUiLCJjb3B5SWNvblByb3BzIiwiZGVsZXRlSWNvblByb3BzIiwiYWN0aW9uIiwiYWN0aW9uUmVuZGVyIiwiaXRlbVJlbmRlciIsIm9uQ29weSIsIm9uUmVtb3ZlIiwiY29weUJ0blByb3BzIiwiZGVsZXRlQnRuUHJvcHMiLCJkZWZhdWx0RG9tIiwiY29weSIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJjb2xvciIsInNpemUiLCJyZXN0Iiwib25DbGljayIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJyZW5kZXJlZEFjdGlvbnMiLCJmaWx0ZXIiLCJCb29sZWFuIiwicm93Tm9kZSIsImNsYXNzTmFtZSIsImxpc3REb20iLCJkaXNwbGF5TmFtZSIsIkxpc3RSb3dBY3Rpb25zIiwiUHJvRm9ybUxpc3RCYXNlIiwicHJvcHMiLCJfYSIsIl9iIiwicmF3TmFtZSIsIm5hbWUiLCJsYWJlbCIsIm1pbiIsIm1heCIsInJlcXVpcmVkIiwiX3Byb3BzJHJlcXVpcmVkTWVzc2FnIiwicmVxdWlyZWRNZXNzYWdlIiwiaW5pdGlhbFZhbHVlIiwiY3JlYXRvckJ1dHRvblByb3BzIiwib25BZnRlckFkZCIsIm9uQWZ0ZXJSZW1vdmUiLCJwYXJlbnRDdHgiLCJmdWxsTmFtZSIsImxpc3ROYW1lIiwiX3VzZVByb0Zvcm1TdGFibGUiLCJzZXRGaWVsZFZhbHVlIiwic3RvcmUiLCJpbml0aWFsQXBwbGllZCIsImtleXNSZWYiLCJfdXNlU2FmZVN0YXRlIiwiX3VzZVNhZmVTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImxpc3RFcnJvciIsInNldExpc3RFcnJvciIsImxpc3QiLCJzdGF0ZSIsInJhdyIsImluY2x1ZGVzIiwidmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudCIsImxlbmd0aCIsInB1c2giLCJzbGljZSIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hcCIsInZhbGlkYXRlTGlzdCIsImFkZCIsImRlZmF1bHRWYWx1ZSIsInZhbHVlIiwibmV3TGlzdCIsIm5ld0tleXMiLCJpbnNlcnRJbmRleCIsInNwbGljZSIsInJlbW92ZUF0IiwibW92ZSIsImZyb20iLCJ0byIsIl9uZXdMaXN0JHNwbGljZSIsIl9uZXdMaXN0JHNwbGljZTIiLCJtb3ZlZEl0ZW0iLCJfbmV3S2V5cyRzcGxpY2UiLCJfbmV3S2V5cyRzcGxpY2UyIiwibW92ZWRLZXkiLCJnZXRMaXN0IiwicmVtb3ZlIiwiZmllbGRPYmpDYWNoZSIsIk1hcCIsIm1hcHBlZEZpZWxkcyIsIm5leHRDYWNoZSIsImZpZWxkcyIsIl9pdGVtIiwia2V5IiwiZmllbGROYW1lIiwiY2FjaGVkIiwiZ2V0IiwiZmllbGQiLCJzZXQiLCJhY3Rpb25Sb3dzIiwiaGFzQ3JlYXRvciIsImNyZWF0b3JDb25maWciLCJfdHlwZW9mIiwiY3JlYXRvclBvc2l0aW9uIiwicG9zaXRpb24iLCJjcmVhdG9yVGV4dCIsInRleHQiLCJjcmVhdG9yQnV0dG9uIiwiZm9ybUxpc3RDb250ZXh0VmFsdWUiLCJQcm92aWRlciIsImFzIiwiUHJvRm9ybUxpc3QiXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxRQUFRLElBQUlDLFNBQVMsRUFBRUMsSUFBSSxJQUFJQyxLQUFLLFFBQVEsbUJBQW1CO0FDQXJGLFNBQVNDLElBQUksRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBRXhELE9BQU9DLGFBQWEsTUFBTSw2QkFBNkI7QUFDdkQsT0FBT0MsWUFBWSxNQUFNLDRCQUE0QjtBQUNyRCxTQUFTQyxPQUFPLElBQUlDLFVBQVUsUUFBUSx3QkFBd0I7QUFDOUQsU0FBU0MsTUFBTSxRQUFRLFdBQVc7QUFDbEMsU0FBU0MsZUFBZSxFQUFFQyxjQUFjLFFBQVEsZUFBZTtBQUMvRCxTQUFTQyxlQUFlLEVBQUVDLGtCQUFrQixFQUFFQyxnQkFBZ0IsRUFBRUMsZUFBZSxRQUFRLFdBQVc7QUFDbEcsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyx1QkFBdUIsRUFBRUMsd0JBQXdCLFFBQVEsYUFBYTtBQUN6RyxTQUFTQyxrQkFBa0IsRUFBRUMsY0FBYyxRQUFRLFNBQVM7QUFHNUQsSUFBTUMsT0FBTyxHQUFHZixVQUFVLElBQUFnQixNQUFBLENBQUlQLFVBQVUsVUFBTyxDQUFDO0FBRWhELElBQUlRLGNBQWMsR0FBRyxDQUFDO0FBQ3RCLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBO0VBQUEsZUFBQUYsTUFBQSxDQUF5QixFQUFFQyxjQUFjO0FBQUEsQ0FBRTtBQUU1RDtBQUNBO0FBQ0EsSUFBTUUsVUFB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QUNjLGVBQWUsRUFBQTtRQUFDZ0QsU0FBUyxFQUFFbkMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUFFMEIsSUFBSSxFQUFFOUIsdUJBQXVCO1FBQUU2QixLQUFLLEVBQUU1Qix3QkFBd0I7UUFBQWlDLFFBQUEsRUFBR2U7TUFBSyxDQUFBLENBQW1CLEVBQ2hKd0UsZUFBZSxLQUFLLEtBQUssSUFBSUksYUFBYSxFQUMzQ3BKLElBQUEsQ0FBQSxLQUFBLEVBQUE7UUFBSzhELFNBQVMsRUFBRW5DLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFBQThCLFFBQUEsRUFBR007TUFBTyxDQUFBLENBQU8sRUFDbkQvRCxJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUs4RCxTQUFTLEVBQUVuQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQUE4QixRQUFBLEVBQUdtRjtNQUFVLENBQUEsQ0FBTyxFQUNyREksZUFBZSxLQUFLLFFBQVEsSUFBSUksYUFBYSxFQUM3Q3ZELFNBQVMsSUFBSTdGLElBQUEsQ0FBQ2UsY0FBYyxFQUFBO1FBQUN3SSxFQUFFLEVBQUMsS0FBSztRQUFDbEcsSUFBSSxFQUFDLElBQUk7UUFBQ0QsS0FBSyxFQUFDLFFBQVE7UUFBQUssUUFBQSxFQUFFb0M7TUFBUyxDQUFBLENBQWtCO0lBQUEsQ0FBQTtFQUN4RixDQUFBLENBQ21CO0FBRS9CLENBQUM7QUFFRDNCLGVBQWUsQ0FBQ0YsV0FBVyxHQUFHLGFBQWE7QUFFM0MsT0FBTyxJQUFNd0YsV0FBVyxnQkFBR25KLElBQUksQ0FBQzZELGVBQWUsQ0FBQztBQUVoRCxlQUFlc0YsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vUHJvRm9ybUxpc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgdXNlU2FmZVN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlU2FmZVN0YXRlJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJztcbmltcG9ydCB7IFR5cG9ncmFwaHlMYWJlbCwgVHlwb2dyYXBoeUJvZHkgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IEZvcm1MaXN0Q29udGV4dCwgdXNlRm9ybUxpc3RDb250ZXh0LCB1c2VQcm9Gb3JtU3RhYmxlLCB1c2VQcm9Gb3JtU3RvcmUgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3RvciB9IGZyb20gJy4vY29yZS9mb3JtU3RvcmUnO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhULCBQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSwgUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdEJ1dHRvblByb3BzLCBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tbGlzdGApO1xubGV0IGxpc3RLZXlDb3VudGVyID0gMDtcbmNvbnN0IGdlbmVyYXRlS2V5ID0gKCkgPT4gYGxpc3RfJHsrK2xpc3RLZXlDb3VudGVyfWA7XG4vLyBTdGFibGUgZW1wdHkgcmVzdWx0IGZvciB0aGUgbm8tdmFsdWUgY2FzZSDigJQgYSBmcmVzaCBbXSBwZXIgc2VsZWN0b3IgcnVuXG4vLyB3b3VsZCBuZXZlciBjb21wYXJlIGVxdWFsIGFuZCBsb29wIHRoZSBzdWJzY3JpcHRpb24uXG5jb25zdCBFTVBUWV9MSVNUID0gW107XG4vLyBSb3ctbGV2ZWwgbWVtbyBib3VuZGFyeTogc2V0TmVzdGVkVmFsdWUgY2xvbmVzIE9OTFkgdGhlIGVkaXRlZCByb3csIHNvXG4vLyB1bnRvdWNoZWQgcm93cyBrZWVwIHRoZWlyIHJlY29yZCBpZGVudGl0eSBhbmQgYmFpbCBvdXQgaGVyZSB3aGlsZSBhXG4vLyBzaWJsaW5nIHJvdyBpcyBiZWluZyBlZGl0ZWQuXG5jb25zdCBMaXN0Um93QWN0aW9uc0Jhc2UgPSAoeyBpbmRleCwgcmVjb3JkLCBjYW5BZGQsIGNhblJlbW92ZSwgY29weUljb25Qcm9wcywgZGVsZXRlSWNvblByb3BzLCBhY3Rpb24sIGFjdGlvblJlbmRlciwgaXRlbVJlbmRlciwgb25Db3B5LCBvblJlbW92ZSwgfSkgPT4ge1xuICAgIGNvbnN0IGNvcHlCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhjb3B5SWNvblByb3BzKTtcbiAgICBjb25zdCBkZWxldGVCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhkZWxldGVJY29uUHJvcHMpO1xuICAgIGNvbnN0IGRlZmF1bHREb20gPSB7XG4gICAgICAgIGNvcHk6IGNvcHlJY29uUHJvcHMgIT09IGZhbHNlID8gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IFwic21hbGxcIiB9LCBjb3B5QnRuUHJvcHMucmVzdCwgeyBvbkNsaWNrOiAoKSA9PiBvbkNvcHkoaW5kZXgpLCBkaXNhYmxlZDogIWNhbkFkZCB8fCBjb3B5QnRuUHJvcHMuZGlzYWJsZWQsIGNoaWxkcmVuOiBERUZBVUxUX1RFWFQuY29weSB9KSwgYGNvcHktJHtpbmRleH1gKSkgOiBudWxsLFxuICAgICAgICBkZWxldGU6IGRlbGV0ZUljb25Qcm9wcyAhPT0gZmFsc2UgPyAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiIH0sIGRlbGV0ZUJ0blByb3BzLnJlc3QsIHsgb25DbGljazogKCkgPT4gb25SZW1vdmUoaW5kZXgpLCBkaXNhYmxlZDogIWNhblJlbW92ZSB8fCBkZWxldGVCdG5Qcm9wcy5kaXNhYmxlZCwgY2hpbGRyZW46IERFRkFVTFRfVEVYVC5kZWxldGUgfSksIGBkZWxldGUtJHtpbmRleH1gKSkgOiBudWxsLFxuICAgIH07XG4gICAgY29uc3QgcmVuZGVyZWRBY3Rpb25zID0gYWN0aW9uUmVuZGVyXG4gICAgICAgID8gYWN0aW9uUmVuZGVyKHsgaW5kZXgsIHJlY29yZCB9LCBhY3Rpb24sIGRlZmF1bHREb20pXG4gICAgICAgIDogW2RlZmF1bHREb20uY29weSwgZGVmYXVsdERvbS5kZWxldGVdLmZpbHRlcihCb29sZWFuKTtcbiAgICBjb25zdCByb3dOb2RlID0gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3Jvdy1hY3Rpb25zJyksIGNoaWxkcmVuOiByZW5kZXJlZEFjdGlvbnMgfSkpO1xuICAgIGlmIChpdGVtUmVuZGVyKSB7XG4gICAgICAgIHJldHVybiBfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogaXRlbVJlbmRlcih7IGxpc3REb206IHJvd05vZGUsIGFjdGlvbiB9KSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd05vZGU7XG59O1xuTGlzdFJvd0FjdGlvbnNCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1MaXN0Um93QWN0aW9ucyc7XG5jb25zdCBMaXN0Um93QWN0aW9ucyA9IG1lbW8oTGlzdFJvd0FjdGlvbnNCYXNlKTtcbmNvbnN0IFByb0Zvcm1MaXN0QmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgeyBuYW1lOiByYXdOYW1lLCBsYWJlbCwgbWluLCBtYXgsIHJlcXVpcmVkLCByZXF1aXJlZE1lc3NhZ2UgPSAnVGhpcyBsaXN0IGNhbm5vdCBiZSBlbXB0eScsIGluaXRpYWxWYWx1ZSwgY29weUljb25Qcm9wcywgZGVsZXRlSWNvblByb3BzLCBjcmVhdG9yQnV0dG9uUHJvcHMsIGl0ZW1SZW5kZXIsIGFjdGlvblJlbmRlciwgY2hpbGRyZW4sIG9uQWZ0ZXJBZGQsIG9uQWZ0ZXJSZW1vdmUsIH0gPSBwcm9wcztcbiAgICAvLyDilIDilIAgTmVzdGVkIGxpc3Q6IHByZXBlbmQgcGFyZW50IGxpc3QgbmFtZSDilIDilIBcbiAgICBjb25zdCBwYXJlbnRDdHggPSB1c2VGb3JtTGlzdENvbnRleHQoKTtcbiAgICBjb25zdCBmdWxsTmFtZSA9IHBhcmVudEN0eC5saXN0TmFtZSA/IGAke3BhcmVudEN0eC5saXN0TmFtZX0uJHtyYXdOYW1lfWAgOiByYXdOYW1lO1xuICAgIGNvbnN0IHsgc2V0RmllbGRWYWx1ZSB9ID0gdXNlUHJvRm9ybVN0YWJsZSgpO1xuICAgIGNvbnN0IHN0b3JlID0gdXNlUHJvRm9ybVN0b3JlKCk7XG4gICAgY29uc3QgaW5pdGlhbEFwcGxpZWQgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGtleXNSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IFtsaXN0RXJyb3IsIHNldExpc3RFcnJvcl0gPSB1c2VTYWZlU3RhdGUobnVsbCk7XG4gICAgLy8gU3Vic2NyaWJlIE9OTFkgdG8gdGhpcyBsaXN0J3Mgb3duIHZhbHVlOiB0eXBpbmcgZWxzZXdoZXJlIGluIHRoZSBmb3JtXG4gICAgLy8gbGVhdmVzIHRoZSBhcnJheSBpZGVudGl0eSB1bnRvdWNoZWQgYW5kIHRoaXMgY29tcG9uZW50IGRvZXMgbm90IHJlbmRlci5cbiAgICBjb25zdCBsaXN0ID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGZ1bGxOYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUoc3RhdGUudmFsdWVzLCBmdWxsTmFtZSlcbiAgICAgICAgICAgIDogc3RhdGUudmFsdWVzW2Z1bGxOYW1lXTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdyA6IEVNUFRZX0xJU1Q7XG4gICAgfSk7XG4gICAgLy8gU3luYyBrZXlzIHdpdGggbGlzdCBsZW5ndGhcbiAgICB3aGlsZSAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA8IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudC5wdXNoKGdlbmVyYXRlS2V5KCkpO1xuICAgIH1cbiAgICBpZiAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA+IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGtleXNSZWYuY3VycmVudC5zbGljZSgwLCBsaXN0Lmxlbmd0aCk7XG4gICAgfVxuICAgIC8vIEFwcGx5IGluaXRpYWwgdmFsdWUgb25jZVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChpbml0aWFsQXBwbGllZC5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAobGlzdC5sZW5ndGggIT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbml0aWFsVmFsdWUpIHx8IGluaXRpYWxWYWx1ZS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRpYWxBcHBsaWVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBbLi4uaW5pdGlhbFZhbHVlXSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGluaXRpYWxWYWx1ZS5tYXAoKCkgPT4gZ2VuZXJhdGVLZXkoKSk7XG4gICAgfSwgW2xpc3QubGVuZ3RoLCBpbml0aWFsVmFsdWUsIGZ1bGxOYW1lLCBzZXRGaWVsZFZhbHVlXSk7XG4gICAgLy8gQ2xlYXIgZXJyb3Igd2hlbiBsaXN0IGJlY29tZXMgbm9uLWVtcHR5XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHJlcXVpcmVkICYmIGxpc3QubGVuZ3RoID4gMCAmJiBsaXN0RXJyb3IpIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihudWxsKTtcbiAgICAgICAgfVxuICAgIH0sIFtsaXN0Lmxlbmd0aCwgcmVxdWlyZWQsIGxpc3RFcnJvciwgc2V0TGlzdEVycm9yXSk7XG4gICAgY29uc3QgY2FuQWRkID0gbWF4ID09IG51bGwgfHwgbGlzdC5sZW5ndGggPCBtYXg7XG4gICAgY29uc3QgY2FuUmVtb3ZlID0gbWluID09IG51bGwgfHwgbGlzdC5sZW5ndGggPiBtaW47XG4gICAgY29uc3QgdmFsaWRhdGVMaXN0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmICghcmVxdWlyZWQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZXRMaXN0RXJyb3IocmVxdWlyZWRNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBzZXRMaXN0RXJyb3IobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGFkZCA9IHVzZU1lbW9pemVkRm4oKGRlZmF1bHRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjYW5BZGQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDoge307XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgaW5zZXJ0SW5kZXggPSB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gaW5kZXggOiBuZXdMaXN0Lmxlbmd0aDtcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIHZhbHVlKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIGdlbmVyYXRlS2V5KCkpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICAgICAgb25BZnRlckFkZCA9PT0gbnVsbCB8fCBvbkFmdGVyQWRkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFmdGVyQWRkKHZhbHVlLCBpbnNlcnRJbmRleCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVtb3ZlQXQgPSB1c2VNZW1vaXplZEZuKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhblJlbW92ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBuZXdMaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIG5ld0tleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgICAgIG9uQWZ0ZXJSZW1vdmUgPT09IG51bGwgfHwgb25BZnRlclJlbW92ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BZnRlclJlbW92ZShpbmRleCk7XG4gICAgICAgIC8vIFZhbGlkYXRlIGFmdGVyIHJlbW92ZVxuICAgICAgICBpZiAocmVxdWlyZWQgJiYgbmV3TGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihyZXF1aXJlZE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY29weSA9IHVzZU1lbW9pemVkRm4oKGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY2FuQWRkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGxpc3RbaW5kZXhdID8gT2JqZWN0LmFzc2lnbih7fSwgbGlzdFtpbmRleF0pIDoge307XG4gICAgICAgIGFkZCh2YWx1ZSwgaW5kZXggKyAxKTtcbiAgICB9KTtcbiAgICBjb25zdCBtb3ZlID0gdXNlTWVtb2l6ZWRGbigoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgaWYgKGZyb20gPT09IHRvKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoZnJvbSA8IDAgfHwgZnJvbSA+PSBsaXN0Lmxlbmd0aCB8fCB0byA8IDAgfHwgdG8gPj0gbGlzdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgW21vdmVkSXRlbV0gPSBuZXdMaXN0LnNwbGljZShmcm9tLCAxKTtcbiAgICAgICAgY29uc3QgW21vdmVkS2V5XSA9IG5ld0tleXMuc3BsaWNlKGZyb20sIDEpO1xuICAgICAgICBuZXdMaXN0LnNwbGljZSh0bywgMCwgbW92ZWRJdGVtKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UodG8sIDAsIG1vdmVkS2V5KTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0TGlzdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gbGlzdCk7XG4gICAgY29uc3QgYWN0aW9uID0gdXNlTWVtbygoKSA9PiAoeyBhZGQsIHJlbW92ZTogcmVtb3ZlQXQsIG1vdmUsIGNvcHksIGdldExpc3QgfSksIFthZGQsIHJlbW92ZUF0LCBtb3ZlLCBjb3B5LCBnZXRMaXN0XSk7XG4gICAgLy8gUGVyLWtleSBjYWNoZSBrZWVwcyBlYWNoIHJvdydzIGZpZWxkIG9iamVjdCBpZGVudGl0eSBzdGFibGUgYWNyb3NzIGxpc3RcbiAgICAvLyBjb21taXRzIChlLmcuIHR5cGluZyBpbiBhIHNpYmxpbmcgcm93KSwgc28gbWVtb2l6ZWQgcm93IGNvbnRlbnQgc2Vlc1xuICAgIC8vIHNoYWxsb3ctZXF1YWwgcHJvcHMgYW5kIGJhaWxzIG91dC5cbiAgICBjb25zdCBmaWVsZE9iakNhY2hlID0gdXNlUmVmKG5ldyBNYXAoKSk7XG4gICAgY29uc3QgbWFwcGVkRmllbGRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRDYWNoZSA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gbGlzdC5tYXAoKF9pdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1JlZi5jdXJyZW50W2luZGV4XSB8fCBgZmFsbGJhY2tfJHtpbmRleH1gO1xuICAgICAgICAgICAgY29uc3QgZmllbGROYW1lID0gYCR7ZnVsbE5hbWV9LiR7aW5kZXh9YDtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZCA9IGZpZWxkT2JqQ2FjaGUuY3VycmVudC5nZXQoa2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gY2FjaGVkICYmIGNhY2hlZC5uYW1lID09PSBmaWVsZE5hbWUgPyBjYWNoZWQgOiB7IG5hbWU6IGZpZWxkTmFtZSwga2V5IH07XG4gICAgICAgICAgICBuZXh0Q2FjaGUuc2V0KGtleSwgZmllbGQpO1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgZmllbGRPYmpDYWNoZS5jdXJyZW50ID0gbmV4dENhY2hlO1xuICAgICAgICByZXR1cm4gZmllbGRzO1xuICAgIH0sIFtsaXN0LCBmdWxsTmFtZV0pO1xuICAgIC8vIE1lbW9pemVkIHNvIHRoZSByb3cgZmFjdG9yeSBpcyByZS1pbnZva2VkIG9ubHkgd2hlbiB0aGUgbGlzdCBpdHNlbGYgKG9yXG4gICAgLy8gdGhlIGNvbnN1bWVyLXByb3ZpZGVkIGNoaWxkcmVuKSBjaGFuZ2VzIOKAlCBuZXZlciBmb3IgdW5yZWxhdGVkIGNvbW1pdHMuXG4gICAgY29uc3QgbGlzdERvbSA9IHVzZU1lbW8oKCkgPT4gKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkcmVuKG1hcHBlZEZpZWxkcywgYWN0aW9uKSA6IGNoaWxkcmVuKSwgW2NoaWxkcmVuLCBtYXBwZWRGaWVsZHMsIGFjdGlvbl0pO1xuICAgIC8vIEFjdGlvbiBidXR0b25zIHBlciByb3cg4oCUIExpc3RSb3dBY3Rpb25zIGlzIHRoZSBtZW1vIGJvdW5kYXJ5XG4gICAgY29uc3QgYWN0aW9uUm93cyA9IGxpc3QubWFwKChyZWNvcmQsIGluZGV4KSA9PiAoX2pzeChMaXN0Um93QWN0aW9ucywgeyBpbmRleDogaW5kZXgsIHJlY29yZDogcmVjb3JkLCBjYW5BZGQ6IGNhbkFkZCwgY2FuUmVtb3ZlOiBjYW5SZW1vdmUsIGNvcHlJY29uUHJvcHM6IGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wczogZGVsZXRlSWNvblByb3BzLCBhY3Rpb246IGFjdGlvbiwgYWN0aW9uUmVuZGVyOiBhY3Rpb25SZW5kZXIsIGl0ZW1SZW5kZXI6IGl0ZW1SZW5kZXIsIG9uQ29weTogY29weSwgb25SZW1vdmU6IHJlbW92ZUF0IH0sIGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgaW5kZXgpKSk7XG4gICAgLy8gQ3JlYXRvciBidXR0b25cbiAgICBjb25zdCBoYXNDcmVhdG9yID0gY3JlYXRvckJ1dHRvblByb3BzICE9PSBmYWxzZTtcbiAgICBjb25zdCBjcmVhdG9yQ29uZmlnID0gaGFzQ3JlYXRvciAmJiB0eXBlb2YgY3JlYXRvckJ1dHRvblByb3BzID09PSAnb2JqZWN0JyA/IGNyZWF0b3JCdXR0b25Qcm9wcyA6IHt9O1xuICAgIGNvbnN0IGNyZWF0b3JQb3NpdGlvbiA9IChfYSA9IGNyZWF0b3JDb25maWcgPT09IG51bGwgfHwgY3JlYXRvckNvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3JlYXRvckNvbmZpZy5wb3NpdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2JvdHRvbSc7XG4gICAgY29uc3QgY3JlYXRvclRleHQgPSAoX2IgPSBjcmVhdG9yQ29uZmlnID09PSBudWxsIHx8IGNyZWF0b3JDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0b3JDb25maWcudGV4dCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogREVGQVVMVF9URVhULmFkZDtcbiAgICBjb25zdCBjcmVhdG9yQnV0dG9uID0gaGFzQ3JlYXRvciA/IChfanN4KEJ1dHRvbiwgeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNyZWF0b3JQb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICBhZGQoe30sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWRkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGRpc2FibGVkOiAhY2FuQWRkLCBjaGlsZHJlbjogY3JlYXRvclRleHQgfSkpIDogbnVsbDtcbiAgICBjb25zdCBmb3JtTGlzdENvbnRleHRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHsgbGlzdE5hbWU6IGZ1bGxOYW1lIH0pLCBbZnVsbE5hbWVdKTtcbiAgICByZXR1cm4gKF9qc3goRm9ybUxpc3RDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBmb3JtTGlzdENvbnRleHRWYWx1ZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiBbbGFiZWwgJiYgX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcpLCBzaXplOiBQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSwgY29sb3I6IFBST0ZPUk1fTElTVF9MQUJFTF9DT0xPUiwgY2hpbGRyZW46IGxhYmVsIH0pLCBjcmVhdG9yUG9zaXRpb24gPT09ICd0b3AnICYmIGNyZWF0b3JCdXR0b24sIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRlbnQnKSwgY2hpbGRyZW46IGxpc3REb20gfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2FjdGlvbnMnKSwgY2hpbGRyZW46IGFjdGlvblJvd3MgfSksIGNyZWF0b3JQb3NpdGlvbiA9PT0gJ2JvdHRvbScgJiYgY3JlYXRvckJ1dHRvbiwgbGlzdEVycm9yICYmIF9qc3goVHlwb2dyYXBoeUJvZHksIHsgYXM6IFwiZGl2XCIsIHNpemU6IFwic21cIiwgY29sb3I6IFwiZGFuZ2VyXCIsIGNoaWxkcmVuOiBsaXN0RXJyb3IgfSldIH0pIH0pKTtcbn07XG5Qcm9Gb3JtTGlzdEJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUxpc3QnO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1MaXN0ID0gbWVtbyhQcm9Gb3JtTGlzdEJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybUxpc3Q7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,7 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { SchemaFormProps } from './interface';
3
+ /** Generic-aware export — keeps `<SchemaForm<MyValues> …>` fully typed. */
4
+ export declare const SchemaForm: (<Values = Record<string, unknown>>(props: SchemaFormProps<Values>) => ReactElement | null) & {
5
+ displayName?: string;
6
+ };
7
+ export default SchemaForm;
@@ -0,0 +1,103 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ var __rest = this && this.__rest || function (s, e) {
6
+ var t = {};
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
8
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
9
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ import { Fragment, memo, useMemo } from 'react';
15
+ import { ProForm } from './ProForm';
16
+ import { ProFormText, ProFormPassword, ProFormTextArea, ProFormSelect, ProFormCheckbox, ProFormCheckboxGroup, ProFormRadioGroup, ProFormSwitch, ProFormSlider, ProFormDatePicker, ProFormUpload } from './fields';
17
+ import { setNestedValue } from './core/pathUtils';
18
+ // valueType → ProForm field component. `digit` reuses the text field with a
19
+ // numeric input type (the library has no standalone InputNumber).
20
+ var VALUE_TYPE_FIELDS = {
21
+ text: ProFormText,
22
+ password: ProFormPassword,
23
+ textarea: ProFormTextArea,
24
+ digit: ProFormText,
25
+ select: ProFormSelect,
26
+ checkbox: ProFormCheckbox,
27
+ checkboxGroup: ProFormCheckboxGroup,
28
+ radioGroup: ProFormRadioGroup,
29
+ "switch": ProFormSwitch,
30
+ slider: ProFormSlider,
31
+ date: ProFormDatePicker,
32
+ dateTime: ProFormDatePicker,
33
+ upload: ProFormUpload
34
+ };
35
+ function renderColumn(column) {
36
+ var _a;
37
+ if (column.renderFormItem) {
38
+ return _jsx(Fragment, {
39
+ children: column.renderFormItem(column)
40
+ }, column.dataIndex);
41
+ }
42
+ var title = column.title,
43
+ dataIndex = column.dataIndex,
44
+ _column$valueType = column.valueType,
45
+ valueType = _column$valueType === void 0 ? 'text' : _column$valueType,
46
+ fieldProps = column.fieldProps,
47
+ _initialValue = column.initialValue,
48
+ _renderFormItem = column.renderFormItem,
49
+ rest = __rest(column, ["title", "dataIndex", "valueType", "fieldProps", "initialValue", "renderFormItem"]);
50
+ var Field = (_a = VALUE_TYPE_FIELDS[valueType]) !== null && _a !== void 0 ? _a : VALUE_TYPE_FIELDS.text;
51
+ var mergedFieldProps = fieldProps;
52
+ if (valueType === 'digit') {
53
+ mergedFieldProps = Object.assign({
54
+ type: 'number'
55
+ }, fieldProps);
56
+ } else if (valueType === 'dateTime') {
57
+ mergedFieldProps = Object.assign({
58
+ showTime: true
59
+ }, fieldProps);
60
+ }
61
+ return _jsx(Field, Object.assign({
62
+ name: dataIndex,
63
+ label: title,
64
+ fieldProps: mergedFieldProps
65
+ }, valueType === 'dateTime' ? {
66
+ valueType: 'dateTime'
67
+ } : {}, rest), dataIndex);
68
+ }
69
+ var SchemaFormBase = function SchemaFormBase(props) {
70
+ var columns = props.columns,
71
+ initialValues = props.initialValues,
72
+ formProps = __rest(props, ["columns", "initialValues"]);
73
+ // Column-level initialValue seeds the form; form-level initialValues win.
74
+ var mergedInitialValues = useMemo(function () {
75
+ var fromColumns = {};
76
+ var hasColumnValue = false;
77
+ var _iterator = _createForOfIteratorHelper(columns),
78
+ _step;
79
+ try {
80
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
81
+ var column = _step.value;
82
+ if (column.initialValue === undefined) continue;
83
+ hasColumnValue = true;
84
+ fromColumns = column.dataIndex.includes('.') ? setNestedValue(fromColumns, column.dataIndex, column.initialValue) : Object.assign(Object.assign({}, fromColumns), _defineProperty({}, column.dataIndex, column.initialValue));
85
+ }
86
+ } catch (err) {
87
+ _iterator.e(err);
88
+ } finally {
89
+ _iterator.f();
90
+ }
91
+ if (!hasColumnValue) return initialValues;
92
+ return Object.assign(Object.assign({}, fromColumns), initialValues);
93
+ }, [columns, initialValues]);
94
+ return _jsx(ProForm, Object.assign({}, formProps, {
95
+ initialValues: mergedInitialValues,
96
+ children: columns.map(renderColumn)
97
+ }));
98
+ };
99
+ SchemaFormBase.displayName = 'SchemaForm';
100
+ /** Generic-aware export — keeps `<SchemaForm<MyValues> …>` fully typed. */
101
+ export var SchemaForm = /*#__PURE__*/memo(SchemaFormBase);
102
+ export default SchemaForm;
103
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9TY2hlbWFGb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1NjaGVtYUZvcm0udHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsIkZyYWdtZW50IiwibWVtbyIsInVzZU1lbW8iLCJQcm9Gb3JtIiwiUHJvRm9ybVRleHQiLCJQcm9Gb3JtUGFzc3dvcmQiLCJQcm9Gb3JtVGV4dEFyZWEiLCJQcm9Gb3JtU2VsZWN0IiwiUHJvRm9ybUNoZWNrYm94IiwiUHJvRm9ybUNoZWNrYm94R3JvdXAiLCJQcm9Gb3JtUmFkaW9Hcm91cCIsIlByb0Zvcm1Td2l0Y2giLCJQcm9Gb3JtU2xpZGVyIiwiUHJvRm9ybURhdGVQaWNrZXIiLCJQcm9Gb3JtVXBsb2FkIiwic2V0TmVzdGVkVmFsdWUiLCJWQUxVRV9UWVBFX0ZJRUxEUyIsInRleHQiLCJwYXNzd29yZCIsInRleHRhcmVhIiwiZGlnaXQiLCJzZWxlY3QiLCJjaGVja2JveCIsImNoZWNrYm94R3JvdXAiLCJyYWRpb0dyb3VwIiwic2xpZGVyIiwiZGF0ZSIsImRhdGVUaW1lIiwidXBsb2FkIiwicmVuZGVyQ29sdW1uIiwiY29sdW1uIiwiX2EiLCJyZW5kZXJGb3JtSXRlbSIsImNoaWxkcmVuIiwiZGF0YUluZGV4IiwidGl0bGUiLCJfY29sdW1uJHZhbHVlVHlwZSIsInZhbHVlVHlwZSIsImZpZWxkUHJvcHMiLCJfaW5pdGlhbFZhbHVlIiwiaW5pdGlhbFZhbHVlIiwiX3JlbmRlckZvcm1JdGVtIiwicmVzdCIsIkZpZWxkIiwibWVyZ2VkRmllbGRQcm9wcyIsImFzc2lnbiIsInR5cGUiLCJzaG93VGltZSIsIm5hbWUiLCJsYWJlbCIsIlNjaGVtYUZvcm1CYXNlIiwicHJvcHMiLCJjb2x1bW5zIiwiaW5pdGlhbFZhbHVlcyIsImZvcm1Qcm9wcyIsIm1lcmdlZEluaXRpYWxWYWx1ZXMiLCJmcm9tQ29sdW1ucyIsImhhc0NvbHVtblZhbHVlIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsIm4iLCJkb25lIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsIl9kZWZpbmVQcm9wZXJ0eSIsImVyciIsImYiLCJtYXAiLCJkaXNwbGF5TmFtZSIsIlNjaGVtYUZvcm0iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFB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RUFBRTFCLE1BQU0sQ0FBQ0ksU0FBUyxFQUFFSixNQUFNLENBQUNVLFlBQVksQ0FBQyxHQUNuRW5ELE1BQUEsQ0FBQXdELE1BQUEsQ0FBQXhELE1BQUEsQ0FBQXdELE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTVcsV0FBVyxDQUFBLEVBQUFVLGVBQUEsS0FBR3BDLE1BQU0sQ0FBQ0ksU0FBUyxFQUFHSixNQUFNLENBQUNVLFlBQVksQ0FBQSxDQUFFO01BQ2pFO0lBQUMsU0FBQTJCLEdBQUE7TUFBQVQsU0FBQSxDQUFBeEUsQ0FBQSxDQUFBaUYsR0FBQTtJQUFBO01BQUFULFNBQUEsQ0FBQVUsQ0FBQTtJQUFBO0lBQ0QsSUFBSSxDQUFDWCxjQUFjLEVBQUUsT0FBT0osYUFBYTtJQUN6QyxPQUFBaEUsTUFBQSxDQUFBd0QsTUFBQSxDQUFBeEQsTUFBQSxDQUFBd0QsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFZVyxXQUFXLENBQUEsRUFBS0gsYUFBYSxDQUFBO0VBQzNDLENBQUMsRUFBRSxDQUFDRCxPQUFPLEVBQUVDLGFBQWEsQ0FBQyxDQUFDO0VBRTVCLE9BQ0V0RCxJQUFBLENBQUNJLE9BQU8sRUFBQWQsTUFBQSxDQUFBd0QsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFLUyxTQUFTLEVBQUE7SUFBRUQsYUFBYSxFQUFFRSxtQkFBbUI7SUFBQXRCLFFBQUEsRUFDdkRtQixPQUFPLENBQUNpQixHQUFHLENBQUN4QyxZQUFZO0VBQUMsQ0FBQSxDQUFBLENBQ2xCO0FBRWQsQ0FBQztBQUVEcUIsY0FBYyxDQUFDb0IsV0FBVyxHQUFHLFlBQVk7QUFFekM7QUFDQSxPQUFPLElBQU1DLFVBQVUsZ0JBQUd0RSxJQUFJLENBQUNpRCxjQUFjLENBRU87QUFFcEQsZUFBZXFCLFVBQVUiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1NjaGVtYUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgRnJhZ21lbnQsIG1lbW8sIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBQcm9Gb3JtIH0gZnJvbSAnLi9Qcm9Gb3JtJztcbmltcG9ydCB7IFByb0Zvcm1UZXh0LCBQcm9Gb3JtUGFzc3dvcmQsIFByb0Zvcm1UZXh0QXJlYSwgUHJvRm9ybVNlbGVjdCwgUHJvRm9ybUNoZWNrYm94LCBQcm9Gb3JtQ2hlY2tib3hHcm91cCwgUHJvRm9ybVJhZGlvR3JvdXAsIFByb0Zvcm1Td2l0Y2gsIFByb0Zvcm1TbGlkZXIsIFByb0Zvcm1EYXRlUGlja2VyLCBQcm9Gb3JtVXBsb2FkLCB9IGZyb20gJy4vZmllbGRzJztcbmltcG9ydCB7IHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi9jb3JlL3BhdGhVdGlscyc7XG4vLyB2YWx1ZVR5cGUg4oaSIFByb0Zvcm0gZmllbGQgY29tcG9uZW50LiBgZGlnaXRgIHJldXNlcyB0aGUgdGV4dCBmaWVsZCB3aXRoIGFcbi8vIG51bWVyaWMgaW5wdXQgdHlwZSAodGhlIGxpYnJhcnkgaGFzIG5vIHN0YW5kYWxvbmUgSW5wdXROdW1iZXIpLlxuY29uc3QgVkFMVUVfVFlQRV9GSUVMRFMgPSB7XG4gICAgdGV4dDogUHJvRm9ybVRleHQsXG4gICAgcGFzc3dvcmQ6IFByb0Zvcm1QYXNzd29yZCxcbiAgICB0ZXh0YXJlYTogUHJvRm9ybVRleHRBcmVhLFxuICAgIGRpZ2l0OiBQcm9Gb3JtVGV4dCxcbiAgICBzZWxlY3Q6IFByb0Zvcm1TZWxlY3QsXG4gICAgY2hlY2tib3g6IFByb0Zvcm1DaGVja2JveCxcbiAgICBjaGVja2JveEdyb3VwOiBQcm9Gb3JtQ2hlY2tib3hHcm91cCxcbiAgICByYWRpb0dyb3VwOiBQcm9Gb3JtUmFkaW9Hcm91cCxcbiAgICBzd2l0Y2g6IFByb0Zvcm1Td2l0Y2gsXG4gICAgc2xpZGVyOiBQcm9Gb3JtU2xpZGVyLFxuICAgIGRhdGU6IFByb0Zvcm1EYXRlUGlja2VyLFxuICAgIGRhdGVUaW1lOiBQcm9Gb3JtRGF0ZVBpY2tlcixcbiAgICB1cGxvYWQ6IFByb0Zvcm1VcGxvYWQsXG59O1xuZnVuY3Rpb24gcmVuZGVyQ29sdW1uKGNvbHVtbikge1xuICAgIHZhciBfYTtcbiAgICBpZiAoY29sdW1uLnJlbmRlckZvcm1JdGVtKSB7XG4gICAgICAgIHJldHVybiBfanN4KEZyYWdtZW50LCB7IGNoaWxkcmVuOiBjb2x1bW4ucmVuZGVyRm9ybUl0ZW0oY29sdW1uKSB9LCBjb2x1bW4uZGF0YUluZGV4KTtcbiAgICB9XG4gICAgY29uc3QgeyB0aXRsZSwgZGF0YUluZGV4LCB2YWx1ZVR5cGUgPSAndGV4dCcsIGZpZWxkUHJvcHMsIGluaXRpYWxWYWx1ZTogX2luaXRpYWxWYWx1ZSwgcmVuZGVyRm9ybUl0ZW06IF9yZW5kZXJGb3JtSXRlbSB9ID0gY29sdW1uLCByZXN0ID0gX19yZXN0KGNvbHVtbiwgW1widGl0bGVcIiwgXCJkYXRhSW5kZXhcIiwgXCJ2YWx1ZVR5cGVcIiwgXCJmaWVsZFByb3BzXCIsIFwiaW5pdGlhbFZhbHVlXCIsIFwicmVuZGVyRm9ybUl0ZW1cIl0pO1xuICAgIGNvbnN0IEZpZWxkID0gKF9hID0gVkFMVUVfVFlQRV9GSUVMRFNbdmFsdWVUeXBlXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogVkFMVUVfVFlQRV9GSUVMRFMudGV4dDtcbiAgICBsZXQgbWVyZ2VkRmllbGRQcm9wcyA9IGZpZWxkUHJvcHM7XG4gICAgaWYgKHZhbHVlVHlwZSA9PT0gJ2RpZ2l0Jykge1xuICAgICAgICBtZXJnZWRGaWVsZFByb3BzID0gT2JqZWN0LmFzc2lnbih7IHR5cGU6ICdudW1iZXInIH0sIGZpZWxkUHJvcHMpO1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdkYXRlVGltZScpIHtcbiAgICAgICAgbWVyZ2VkRmllbGRQcm9wcyA9IE9iamVjdC5hc3NpZ24oeyBzaG93VGltZTogdHJ1ZSB9LCBmaWVsZFByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4KEZpZWxkLCBPYmplY3QuYXNzaWduKHsgbmFtZTogZGF0YUluZGV4LCBsYWJlbDogdGl0bGUsIGZpZWxkUHJvcHM6IG1lcmdlZEZpZWxkUHJvcHMgfSwgKHZhbHVlVHlwZSA9PT0gJ2RhdGVUaW1lJyA/IHsgdmFsdWVUeXBlOiAnZGF0ZVRpbWUnIH0gOiB7fSksIHJlc3QpLCBkYXRhSW5kZXgpKTtcbn1cbmNvbnN0IFNjaGVtYUZvcm1CYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjb2x1bW5zLCBpbml0aWFsVmFsdWVzIH0gPSBwcm9wcywgZm9ybVByb3BzID0gX19yZXN0KHByb3BzLCBbXCJjb2x1bW5zXCIsIFwiaW5pdGlhbFZhbHVlc1wiXSk7XG4gICAgLy8gQ29sdW1uLWxldmVsIGluaXRpYWxWYWx1ZSBzZWVkcyB0aGUgZm9ybTsgZm9ybS1sZXZlbCBpbml0aWFsVmFsdWVzIHdpbi5cbiAgICBjb25zdCBtZXJnZWRJbml0aWFsVmFsdWVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBmcm9tQ29sdW1ucyA9IHt9O1xuICAgICAgICBsZXQgaGFzQ29sdW1uVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5pbml0aWFsVmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGhhc0NvbHVtblZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZyb21Db2x1bW5zID0gY29sdW1uLmRhdGFJbmRleC5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShmcm9tQ29sdW1ucywgY29sdW1uLmRhdGFJbmRleCwgY29sdW1uLmluaXRpYWxWYWx1ZSlcbiAgICAgICAgICAgICAgICA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZnJvbUNvbHVtbnMpLCB7IFtjb2x1bW4uZGF0YUluZGV4XTogY29sdW1uLmluaXRpYWxWYWx1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc0NvbHVtblZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZyb21Db2x1bW5zKSwgaW5pdGlhbFZhbHVlcyk7XG4gICAgfSwgW2NvbHVtbnMsIGluaXRpYWxWYWx1ZXNdKTtcbiAgICByZXR1cm4gKF9qc3goUHJvRm9ybSwgT2JqZWN0LmFzc2lnbih7fSwgZm9ybVByb3BzLCB7IGluaXRpYWxWYWx1ZXM6IG1lcmdlZEluaXRpYWxWYWx1ZXMsIGNoaWxkcmVuOiBjb2x1bW5zLm1hcChyZW5kZXJDb2x1bW4pIH0pKSk7XG59O1xuU2NoZW1hRm9ybUJhc2UuZGlzcGxheU5hbWUgPSAnU2NoZW1hRm9ybSc7XG4vKiogR2VuZXJpYy1hd2FyZSBleHBvcnQg4oCUIGtlZXBzIGA8U2NoZW1hRm9ybTxNeVZhbHVlcz4g4oCmPmAgZnVsbHkgdHlwZWQuICovXG5leHBvcnQgY29uc3QgU2NoZW1hRm9ybSA9IG1lbW8oU2NoZW1hRm9ybUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgU2NoZW1hRm9ybTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -62,28 +62,49 @@ var SubmitterBase = function SubmitterBase(props) {
62
62
  }, _callee);
63
63
  }));
64
64
  });
65
+ // Reset the values FIRST, then fire the callback chain,
66
+ // so onReset observes the already-reset state. resetFields() itself is a
67
+ // pure state API and fires no callbacks.
65
68
  var handleReset = useMemoizedFn(function () {
66
- onReset === null || onReset === void 0 ? void 0 : onReset();
67
69
  form.resetFields();
70
+ onReset === null || onReset === void 0 ? void 0 : onReset();
71
+ });
72
+ // Button onClick chains the consumer's resetButtonProps.onClick (mirroring
73
+ // handleSubmitClick). Overlay close does NOT depend on this — it rides the
74
+ // form-level onReset channel in DialogForm/DrawerForm.
75
+ var handleResetClick = useMemoizedFn(function (e) {
76
+ var _a;
77
+ handleReset();
78
+ (_a = resetButtonProps === null || resetButtonProps === void 0 ? void 0 : resetButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(resetButtonProps, e);
79
+ });
80
+ // The default submit button keeps type="submit" so the actual submission
81
+ // flows through the <form> onSubmit handler exactly once — this click
82
+ // handler only fires the user's onSubmit callback (plus any onClick they
83
+ // passed via submitButtonProps).
84
+ var handleSubmitClick = useMemoizedFn(function (e) {
85
+ var _a;
86
+ onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit();
87
+ (_a = submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(submitButtonProps, e);
68
88
  });
69
89
  var resetButton = useMemo(function () {
70
90
  return _jsx(Button, Object.assign({
71
91
  type: "button",
72
92
  color: "secondary"
73
93
  }, resetButtonProps, {
74
- onClick: handleReset,
94
+ onClick: handleResetClick,
75
95
  children: resetText
76
96
  }), "reset");
77
- }, [resetText, resetButtonProps, handleReset]);
97
+ }, [resetText, resetButtonProps, handleResetClick]);
78
98
  var submitButton = useMemo(function () {
79
99
  return _jsx(Button, Object.assign({
80
100
  type: "submit",
81
101
  color: "primary",
82
102
  loading: loading
83
103
  }, submitButtonProps, {
104
+ onClick: handleSubmitClick,
84
105
  children: submitText
85
106
  }), "submit");
86
- }, [submitText, submitButtonProps, loading]);
107
+ }, [submitText, submitButtonProps, loading, handleSubmitClick]);
87
108
  var dom = [resetButton, submitButton];
88
109
  if (render) {
89
110
  return _jsx("div", {
@@ -103,4 +124,4 @@ var SubmitterBase = function SubmitterBase(props) {
103
124
  SubmitterBase.displayName = 'Submitter';
104
125
  export var Submitter = /*#__PURE__*/memo(SubmitterBase);
105
126
  export default Submitter;
106
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9TdWJtaXR0ZXIuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vU3VibWl0dGVyLnRzeCJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZU1lbW8iLCJ1c2VNZW1vaXplZEZuIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJ1c2VGb3JtSW5zdGFuY2UiLCJCdXR0b24iLCJDU1NfUFJFRklYIiwiREVGQVVMVF9URVhUIiwiY2xhc3NlcyIsImNvbmNhdCIsIlN1Ym1pdHRlckJhc2UiLCJwcm9wcyIsIl9wcm9wcyRzdWJtaXRUZXh0Iiwic3VibWl0VGV4dCIsInN1Ym1pdCIsIl9wcm9wcyRyZXNldFRleHQiLCJyZXNldFRleHQiLCJyZXNldCIsInJlbmRlciIsIm9uU3VibWl0Iiwib25SZXNldCIsInN1Ym1pdEJ1dHRvblByb3BzIiwicmVzZXRCdXR0b25Qcm9wcyIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsImZvcm0iLCJoYW5kbGVTdWJtaXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2Iiwic3VibWl0Rm9ybSIsInN0b3AiLCJoYW5kbGVSZXNldCIsInJlc2V0RmllbGRzIiwicmVzZXRCdXR0b24iLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlIiwiY29sb3IiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJzdWJtaXRCdXR0b24iLCJkb20iLCJjbGFzc05hbWUiLCJkaXNwbGF5TmFtZSIsIlN1Ym1p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cm9Gb3JtL1N1Ym1pdHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB1c2VGb3JtSW5zdGFuY2UgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke0NTU19QUkVGSVh9LXN1Ym1pdHRlcmApO1xuY29uc3QgU3VibWl0dGVyQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgc3VibWl0VGV4dCA9IERFRkFVTFRfVEVYVC5zdWJtaXQsIHJlc2V0VGV4dCA9IERFRkFVTFRfVEVYVC5yZXNldCwgcmVuZGVyLCBvblN1Ym1pdCwgb25SZXNldCwgc3VibWl0QnV0dG9uUHJvcHMsIHJlc2V0QnV0dG9uUHJvcHMsIGxvYWRpbmcgPSBmYWxzZSwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGZvcm0gPSB1c2VGb3JtSW5zdGFuY2UoKTtcbiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBvblN1Ym1pdCA9PT0gbnVsbCB8fCBvblN1Ym1pdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TdWJtaXQoKTtcbiAgICAgICAgeWllbGQgZm9ybS5zdWJtaXRGb3JtKCk7XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgICAgICBmb3JtLnJlc2V0RmllbGRzKCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVzZXRCdXR0b24gPSB1c2VNZW1vKCgpID0+IChfanN4KEJ1dHRvbiwgT2JqZWN0LmFzc2lnbih7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiIH0sIHJlc2V0QnV0dG9uUHJvcHMsIHsgb25DbGljazogaGFuZGxlUmVzZXQsIGNoaWxkcmVuOiByZXNldFRleHQgfSksIFwicmVzZXRcIikpLCBbcmVzZXRUZXh0LCByZXNldEJ1dHRvblByb3BzLCBoYW5kbGVSZXNldF0pO1xuICAgIGNvbnN0IHN1Ym1pdEJ1dHRvbiA9IHVzZU1lbW8oKCkgPT4gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJzdWJtaXRcIiwgY29sb3I6IFwicHJpbWFyeVwiLCBsb2FkaW5nOiBsb2FkaW5nIH0sIHN1Ym1pdEJ1dHRvblByb3BzLCB7IGNoaWxkcmVuOiBzdWJtaXRUZXh0IH0pLCBcInN1Ym1pdFwiKSksIFtzdWJtaXRUZXh0LCBzdWJtaXRCdXR0b25Qcm9wcywgbG9hZGluZ10pO1xuICAgIGNvbnN0IGRvbSA9IFtyZXNldEJ1dHRvbiwgc3VibWl0QnV0dG9uXTtcbiAgICBpZiAocmVuZGVyKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogcmVuZGVyKHsgZm9ybSwgc3VibWl0OiBoYW5kbGVTdWJtaXQsIHJlc2V0OiBoYW5kbGVSZXNldCB9LCBkb20pIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogW3Jlc2V0QnV0dG9uLCBzdWJtaXRCdXR0b25dIH0pKTtcbn07XG5TdWJtaXR0ZXJCYXNlLmRpc3BsYXlOYW1lID0gJ1N1Ym1pdHRlcic7XG5leHBvcnQgY29uc3QgU3VibWl0dGVyID0gbWVtbyhTdWJtaXR0ZXJCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFN1Ym1pdHRlcjsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
127
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9TdWJtaXR0ZXIuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vU3VibWl0dGVyLnRzeCJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZU1lbW8iLCJ1c2VNZW1vaXplZEZuIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJ1c2VGb3JtSW5zdGFuY2UiLCJCdXR0b24iLCJDU1NfUFJFRklYIiwiREVGQVVMVF9URVhUIiwiY2xhc3NlcyIsImNvbmNhdCIsIlN1Ym1pdHRlckJhc2UiLCJwcm9wcyIsIl9wcm9wcyRzdWJtaXRUZXh0Iiwic3VibWl0VGV4dCIsInN1Ym1pdCIsIl9wcm9wcyRyZXNldFRleHQiLCJyZXNldFRleHQiLCJyZXNldCIsInJlbmRlciIsIm9uU3VibWl0Iiwib25SZXNldCIsInN1Ym1pdEJ1dHRvblByb3BzIiwicmVzZXRCdXR0b25Qcm9wcyIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsImZvcm0iLCJoYW5kbGVTdWJtaXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2Iiwic3VibWl0Rm9ybSIsInN0b3AiLCJoYW5kbGVSZXNldCIsInJlc2V0RmllbGRzIiwiaGFuZGxlUmVzZXRDbGljayIsIl9hIiwib25DbGljayIsImNhbGwiLCJoYW5kbGVTdWJtaXRDbGljayIsInJlc2V0QnV0dG9uIiwiT2JqZWN0IiwiYXNzaWduIiwidHlwZSIsImNvbG9yIiwiY2hpbGRyZW4iLCJz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aXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IHVzZUZvcm1JbnN0YW5jZSB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhUIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tc3VibWl0dGVyYCk7XG5jb25zdCBTdWJtaXR0ZXJCYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBzdWJtaXRUZXh0ID0gREVGQVVMVF9URVhULnN1Ym1pdCwgcmVzZXRUZXh0ID0gREVGQVVMVF9URVhULnJlc2V0LCByZW5kZXIsIG9uU3VibWl0LCBvblJlc2V0LCBzdWJtaXRCdXR0b25Qcm9wcywgcmVzZXRCdXR0b25Qcm9wcywgbG9hZGluZyA9IGZhbHNlLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgZm9ybSA9IHVzZUZvcm1JbnN0YW5jZSgpO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIG9uU3VibWl0ID09PSBudWxsIHx8IG9uU3VibWl0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblN1Ym1pdCgpO1xuICAgICAgICB5aWVsZCBmb3JtLnN1Ym1pdEZvcm0oKTtcbiAgICB9KSk7XG4gICAgLy8gUmVzZXQgdGhlIHZhbHVlcyBGSVJTVCwgdGhlbiBmaXJlIHRoZSBjYWxsYmFjayBjaGFpbixcbiAgICAvLyBzbyBvblJlc2V0IG9ic2VydmVzIHRoZSBhbHJlYWR5LXJlc2V0IHN0YXRlLiByZXNldEZpZWxkcygpIGl0c2VsZiBpcyBhXG4gICAgLy8gcHVyZSBzdGF0ZSBBUEkgYW5kIGZpcmVzIG5vIGNhbGxiYWNrcy5cbiAgICBjb25zdCBoYW5kbGVSZXNldCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBmb3JtLnJlc2V0RmllbGRzKCk7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIC8vIEJ1dHRvbiBvbkNsaWNrIGNoYWlucyB0aGUgY29uc3VtZXIncyByZXNldEJ1dHRvblByb3BzLm9uQ2xpY2sgKG1pcnJvcmluZ1xuICAgIC8vIGhhbmRsZVN1Ym1pdENsaWNrKS4gT3ZlcmxheSBjbG9zZSBkb2VzIE5PVCBkZXBlbmQgb24gdGhpcyDigJQgaXQgcmlkZXMgdGhlXG4gICAgLy8gZm9ybS1sZXZlbCBvblJlc2V0IGNoYW5uZWwgaW4gRGlhbG9nRm9ybS9EcmF3ZXJGb3JtLlxuICAgIGNvbnN0IGhhbmRsZVJlc2V0Q2xpY2sgPSB1c2VNZW1vaXplZEZuKChlKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaGFuZGxlUmVzZXQoKTtcbiAgICAgICAgKF9hID0gcmVzZXRCdXR0b25Qcm9wcyA9PT0gbnVsbCB8fCByZXNldEJ1dHRvblByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNldEJ1dHRvblByb3BzLm9uQ2xpY2spID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHJlc2V0QnV0dG9uUHJvcHMsIGUpO1xuICAgIH0pO1xuICAgIC8vIFRoZSBkZWZhdWx0IHN1Ym1pdCBidXR0b24ga2VlcHMgdHlwZT1cInN1Ym1pdFwiIHNvIHRoZSBhY3R1YWwgc3VibWlzc2lvblxuICAgIC8vIGZsb3dzIHRocm91Z2ggdGhlIDxmb3JtPiBvblN1Ym1pdCBoYW5kbGVyIGV4YWN0bHkgb25jZSDigJQgdGhpcyBjbGlja1xuICAgIC8vIGhhbmRsZXIgb25seSBmaXJlcyB0aGUgdXNlcidzIG9uU3VibWl0IGNhbGxiYWNrIChwbHVzIGFueSBvbkNsaWNrIHRoZXlcbiAgICAvLyBwYXNzZWQgdmlhIHN1Ym1pdEJ1dHRvblByb3BzKS5cbiAgICBjb25zdCBoYW5kbGVTdWJtaXRDbGljayA9IHVzZU1lbW9pemVkRm4oKGUpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBvblN1Ym1pdCA9PT0gbnVsbCB8fCBvblN1Ym1pdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TdWJtaXQoKTtcbiAgICAgICAgKF9hID0gc3VibWl0QnV0dG9uUHJvcHMgPT09IG51bGwgfHwgc3VibWl0QnV0dG9uUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN1Ym1pdEJ1dHRvblByb3BzLm9uQ2xpY2spID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHN1Ym1pdEJ1dHRvblByb3BzLCBlKTtcbiAgICB9KTtcbiAgICBjb25zdCByZXNldEJ1dHRvbiA9IHVzZU1lbW8oKCkgPT4gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIgfSwgcmVzZXRCdXR0b25Qcm9wcywgeyBvbkNsaWNrOiBoYW5kbGVSZXNldENsaWNrLCBjaGlsZHJlbjogcmVzZXRUZXh0IH0pLCBcInJlc2V0XCIpKSwgW3Jlc2V0VGV4dCwgcmVzZXRCdXR0b25Qcm9wcywgaGFuZGxlUmVzZXRDbGlja10pO1xuICAgIGNvbnN0IHN1Ym1pdEJ1dHRvbiA9IHVzZU1lbW8oKCkgPT4gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJzdWJtaXRcIiwgY29sb3I6IFwicHJpbWFyeVwiLCBsb2FkaW5nOiBsb2FkaW5nIH0sIHN1Ym1pdEJ1dHRvblByb3BzLCB7IG9uQ2xpY2s6IGhhbmRsZVN1Ym1pdENsaWNrLCBjaGlsZHJlbjogc3VibWl0VGV4dCB9KSwgXCJzdWJtaXRcIikpLCBbc3VibWl0VGV4dCwgc3VibWl0QnV0dG9uUHJvcHMsIGxvYWRpbmcsIGhhbmRsZVN1Ym1pdENsaWNrXSk7XG4gICAgY29uc3QgZG9tID0gW3Jlc2V0QnV0dG9uLCBzdWJtaXRCdXR0b25dO1xuICAgIGlmIChyZW5kZXIpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiByZW5kZXIoeyBmb3JtLCBzdWJtaXQ6IGhhbmRsZVN1Ym1pdCwgcmVzZXQ6IGhhbmRsZVJlc2V0IH0sIGRvbSkgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiBbcmVzZXRCdXR0b24sIHN1Ym1pdEJ1dHRvbl0gfSkpO1xufTtcblN1Ym1pdHRlckJhc2UuZGlzcGxheU5hbWUgPSAnU3VibWl0dGVyJztcbmV4cG9ydCBjb25zdCBTdWJtaXR0ZXIgPSBtZW1vKFN1Ym1pdHRlckJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgU3VibWl0dGVyOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==