@1money/component-ui 0.0.73 → 0.0.75

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 (91) hide show
  1. package/es/components/Dialog/Dialog.js +7 -39
  2. package/es/components/Dialog/constants.d.ts +0 -3
  3. package/es/components/Dialog/constants.js +1 -4
  4. package/es/components/Dialog/style/Dialog.css +0 -21
  5. package/es/components/ProForm/ProForm.js +201 -48
  6. package/es/components/ProForm/ProFormDependency.d.ts +11 -2
  7. package/es/components/ProForm/ProFormDependency.js +29 -136
  8. package/es/components/ProForm/ProFormItem.js +81 -24
  9. package/es/components/ProForm/ProFormList.js +114 -62
  10. package/es/components/ProForm/Submitter.js +15 -4
  11. package/es/components/ProForm/context.d.ts +11 -3
  12. package/es/components/ProForm/context.js +32 -12
  13. package/es/components/ProForm/core/constants.d.ts +10 -2
  14. package/es/components/ProForm/core/constants.js +17 -3
  15. package/es/components/ProForm/core/formStore.d.ts +24 -0
  16. package/es/components/ProForm/core/formStore.js +101 -0
  17. package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
  18. package/es/components/ProForm/core/hooks/useForm.js +220 -120
  19. package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  20. package/es/components/ProForm/core/hooks/useFormCore.js +114 -90
  21. package/es/components/ProForm/core/runRules.d.ts +5 -3
  22. package/es/components/ProForm/core/runRules.js +13 -5
  23. package/es/components/ProForm/core/useFormItem.d.ts +2 -2
  24. package/es/components/ProForm/core/useFormItem.js +46 -23
  25. package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
  26. package/es/components/ProForm/fields/createProFormField.js +14 -4
  27. package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  28. package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
  29. package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  30. package/es/components/ProForm/hooks/useUrlSync.js +170 -0
  31. package/es/components/ProForm/index.d.ts +2 -2
  32. package/es/components/ProForm/index.js +1 -1
  33. package/es/components/ProForm/interface.d.ts +105 -23
  34. package/es/components/ProForm/layouts/DialogForm.js +17 -7
  35. package/es/components/ProForm/layouts/DrawerForm.js +16 -7
  36. package/es/components/ProForm/layouts/QueryFilter.js +46 -135
  37. package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  38. package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
  39. package/es/components/ProForm/style/ProForm.css +0 -7
  40. package/es/components/ProForm/utils.js +32 -8
  41. package/es/components/ProTable/ProTable.js +3 -3
  42. package/es/index.css +1 -1
  43. package/es/index.d.ts +1 -1
  44. package/es/index.js +1 -1
  45. package/lib/components/Dialog/Dialog.js +6 -38
  46. package/lib/components/Dialog/constants.d.ts +0 -3
  47. package/lib/components/Dialog/constants.js +1 -4
  48. package/lib/components/Dialog/style/Dialog.css +0 -21
  49. package/lib/components/ProForm/ProForm.js +201 -48
  50. package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
  51. package/lib/components/ProForm/ProFormDependency.js +30 -138
  52. package/lib/components/ProForm/ProFormItem.js +78 -21
  53. package/lib/components/ProForm/ProFormList.js +112 -60
  54. package/lib/components/ProForm/Submitter.js +15 -4
  55. package/lib/components/ProForm/context.d.ts +11 -3
  56. package/lib/components/ProForm/context.js +33 -13
  57. package/lib/components/ProForm/core/constants.d.ts +10 -2
  58. package/lib/components/ProForm/core/constants.js +18 -4
  59. package/lib/components/ProForm/core/formStore.d.ts +24 -0
  60. package/lib/components/ProForm/core/formStore.js +110 -0
  61. package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
  62. package/lib/components/ProForm/core/hooks/useForm.js +220 -120
  63. package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  64. package/lib/components/ProForm/core/hooks/useFormCore.js +113 -89
  65. package/lib/components/ProForm/core/runRules.d.ts +5 -3
  66. package/lib/components/ProForm/core/runRules.js +13 -5
  67. package/lib/components/ProForm/core/useFormItem.d.ts +2 -2
  68. package/lib/components/ProForm/core/useFormItem.js +44 -21
  69. package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
  70. package/lib/components/ProForm/fields/createProFormField.js +14 -4
  71. package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  72. package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
  73. package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  74. package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
  75. package/lib/components/ProForm/index.d.ts +2 -2
  76. package/lib/components/ProForm/index.js +1 -1
  77. package/lib/components/ProForm/interface.d.ts +105 -23
  78. package/lib/components/ProForm/layouts/DialogForm.js +17 -7
  79. package/lib/components/ProForm/layouts/DrawerForm.js +16 -7
  80. package/lib/components/ProForm/layouts/QueryFilter.js +45 -134
  81. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  82. package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
  83. package/lib/components/ProForm/style/ProForm.css +0 -7
  84. package/lib/components/ProForm/utils.js +32 -8
  85. package/lib/components/ProTable/ProTable.js +3 -3
  86. package/lib/index.css +1 -1
  87. package/lib/index.d.ts +1 -1
  88. package/lib/index.js +1 -1
  89. package/package.json +1 -1
  90. package/scripts/mcp-server/examples.generated.json +36 -0
  91. package/scripts/mcp-server/index.generated.json +538 -16
@@ -8,7 +8,7 @@ var __rest = this && this.__rest || function (s, e) {
8
8
  return t;
9
9
  };
10
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
- import { memo, useMemo, useRef } from 'react';
11
+ import { memo, useMemo } from 'react';
12
12
  import useControlledState from '@1money/hooks/useControlledState';
13
13
  import useMemoizedFn from '@1money/hooks/useMemoizedFn';
14
14
  import { default as classnames } from '../../../utils/classnames';
@@ -17,46 +17,20 @@ import { ProForm } from '../ProForm';
17
17
  import { CSS_PREFIX, DEFAULT_TEXT } from '../constants';
18
18
  import React from 'react';
19
19
  var classes = classnames("".concat(CSS_PREFIX, "-query-filter"));
20
+ var HIDDEN_STYLE = {
21
+ display: 'none'
22
+ };
23
+ // Keeps the wrapper layout-neutral: the field stays a direct flex item.
24
+ var CONTENTS_STYLE = {
25
+ display: 'contents'
26
+ };
20
27
  // ---------------------------------------------------------------------------
21
- // URL sync helpers
22
- // ---------------------------------------------------------------------------
23
- function getUrlParams() {
24
- if (typeof window === 'undefined') return {};
25
- var params = {};
26
- new URLSearchParams(window.location.search).forEach(function (v, k) {
27
- params[k] = v;
28
- });
29
- return params;
30
- }
31
- /**
32
- * Write the filter values into the URL while PRESERVING unrelated query params
33
- * (e.g. `?tab=...`). Only keys previously written by this filter (tracked in
34
- * `managedKeys`) are cleared before writing, so reset removes exactly what the
35
- * filter added. Returns the new set of managed keys.
36
- */
37
- function setUrlParams(params, managedKeys) {
38
- if (typeof window === 'undefined') return new Set(managedKeys);
39
- var sp = new URLSearchParams(window.location.search);
40
- managedKeys.forEach(function (k) {
41
- return sp["delete"](k);
42
- });
43
- var written = new Set();
44
- for (var _i = 0, _Object$entries = Object.entries(params); _i < _Object$entries.length; _i++) {
45
- var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
46
- k = _Object$entries$_i[0],
47
- v = _Object$entries$_i[1];
48
- if (v !== null && v !== undefined && v !== '') {
49
- sp.set(k, String(v));
50
- written.add(k);
51
- }
52
- }
53
- var search = sp.toString();
54
- var url = search ? "".concat(window.location.pathname, "?").concat(search) : window.location.pathname;
55
- window.history.replaceState(null, '', url);
56
- return written;
57
- }
58
- // ---------------------------------------------------------------------------
59
- // QueryFilter
28
+ // QueryFilter a compact filter bar on top of ProForm.
29
+ //
30
+ // URL synchronization is handled by ProForm itself (`syncToUrl`); QueryFilter
31
+ // only flips the default of `syncToUrlAsImportant` to true: a filter's reason
32
+ // to sync is restoring state from the URL on refresh, so URL params win over
33
+ // `initialValues` here (plain ProForm keeps the opposite default).
60
34
  // ---------------------------------------------------------------------------
61
35
  var QueryFilterBase = function QueryFilterBase(props) {
62
36
  var _a, _b;
@@ -70,99 +44,37 @@ var QueryFilterBase = function QueryFilterBase(props) {
70
44
  _props$split = props.split,
71
45
  split = _props$split === void 0 ? false : _props$split,
72
46
  searchConfig = props.searchConfig,
73
- syncToUrl = props.syncToUrl,
74
- onFinish = props.onFinish,
75
- onReset = props.onReset,
47
+ _props$syncToUrlAsImp = props.syncToUrlAsImportant,
48
+ syncToUrlAsImportant = _props$syncToUrlAsImp === void 0 ? true : _props$syncToUrlAsImp,
76
49
  children = props.children,
77
- _props$submitter = props.submitter,
78
- submitter = _props$submitter === void 0 ? false : _props$submitter,
79
- initialValuesProp = props.initialValues,
80
- formProps = __rest(props, ["defaultCollapsed", "collapsed", "onCollapse", "defaultColsNumber", "labelWidth", "split", "searchConfig", "syncToUrl", "onFinish", "onReset", "children", "submitter", "initialValues"]);
50
+ onFinishFailed = props.onFinishFailed,
51
+ _submitter = props.submitter,
52
+ formProps = __rest(props, ["defaultCollapsed", "collapsed", "onCollapse", "defaultColsNumber", "labelWidth", "split", "searchConfig", "syncToUrlAsImportant", "children", "onFinishFailed", "submitter"]);
81
53
  var _useControlledState = useControlledState(defaultCollapsed, controlledCollapsed),
82
54
  _useControlledState2 = _slicedToArray(_useControlledState, 2),
83
55
  collapsed = _useControlledState2[0],
84
56
  setCollapsed = _useControlledState2[1];
85
- // ── syncToUrl: merge URL params into initial values on mount ──
86
- // One-time snapshot of the URL params at mount. Lazy ref init is IDEMPOTENT,
87
- // so it is safe under StrictMode's double render (an impure "first run" flag
88
- // inside useMemo would return the unmerged value on the replay invocation).
89
- var urlParamsAtMountRef = useRef(null);
90
- if (urlParamsAtMountRef.current === null) {
91
- urlParamsAtMountRef.current = syncToUrl ? getUrlParams() : {};
92
- }
93
- // Keys this filter has WRITTEN to the URL — the only keys submit/reset is
94
- // allowed to clear. The function form of syncToUrl also seeds this from its
95
- // filtered 'get' result (those keys are the filter's own by definition).
96
- var managedKeysRef = useRef(new Set());
97
- // Boolean-mode only: URL params merged into initialValues but NOT yet
98
- // claimed. The boolean form cannot tell its own params from foreign ones
99
- // (?tab=…), so a seeded key is claimed only once its value changes (or it
100
- // disappears from the submitted values, i.e. the user cleared the field).
101
- var urlSeededRef = useRef({});
102
- var initialValues = useMemo(function () {
103
- var _a;
104
- if (!syncToUrl) return initialValuesProp;
105
- var urlParams = (_a = urlParamsAtMountRef.current) !== null && _a !== void 0 ? _a : {};
106
- if (typeof syncToUrl === 'function') {
107
- var fromUrl = syncToUrl(urlParams, 'get');
108
- // Idempotent ref writes — same input on every invocation.
109
- managedKeysRef.current = new Set(Object.keys(fromUrl));
110
- return Object.assign(Object.assign({}, initialValuesProp), fromUrl);
111
- }
112
- urlSeededRef.current = Object.assign({}, urlParams);
113
- return Object.assign(Object.assign({}, initialValuesProp), urlParams);
114
- }, []);
115
- var handleSyncSet = useMemoizedFn(function (values) {
116
- if (!syncToUrl) return;
117
- var toWrite;
118
- var toClear = new Set(managedKeysRef.current);
119
- if (typeof syncToUrl === 'function') {
120
- toWrite = syncToUrl(values, 'set');
121
- } else {
122
- // Skip URL-seeded keys we never wrote whose value is unchanged — they
123
- // may belong to someone else (?tab=…); leave them in the URL untouched.
124
- // A seeded key whose value DID change is claimed from now on.
125
- toWrite = {};
126
- for (var _i2 = 0, _Object$entries2 = Object.entries(values); _i2 < _Object$entries2.length; _i2++) {
127
- var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
128
- key = _Object$entries2$_i[0],
129
- value = _Object$entries2$_i[1];
130
- var seeded = urlSeededRef.current[key];
131
- if (seeded !== undefined && !managedKeysRef.current.has(key) && String(value) === seeded) {
132
- continue;
133
- }
134
- delete urlSeededRef.current[key];
135
- toClear.add(key);
136
- toWrite[key] = value;
137
- }
138
- // Seeded keys missing from the submitted values were cleared by the
139
- // user (omitNil strips empty values) — claim them and remove their
140
- // stale params from the URL.
141
- for (var _i3 = 0, _Object$keys = Object.keys(urlSeededRef.current); _i3 < _Object$keys.length; _i3++) {
142
- var _key = _Object$keys[_i3];
143
- if (!(_key in values)) {
144
- delete urlSeededRef.current[_key];
145
- toClear.add(_key);
146
- }
147
- }
148
- }
149
- managedKeysRef.current = setUrlParams(toWrite, toClear);
150
- });
151
- var handleFinish = useMemoizedFn(function (values) {
152
- handleSyncSet(values);
153
- onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
154
- });
155
- var handleReset = useMemoizedFn(function () {
156
- if (syncToUrl) {
157
- managedKeysRef.current = setUrlParams({}, managedKeysRef.current);
158
- }
159
- onReset === null || onReset === void 0 ? void 0 : onReset();
160
- });
161
57
  var handleCollapse = useMemoizedFn(function () {
162
58
  var next = !collapsed;
163
59
  setCollapsed(next);
164
60
  onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(next);
165
61
  });
62
+ // A collapsed (display:none) field failing validation would block Search
63
+ // with an INVISIBLE error — auto-expand so the user can see and fix it.
64
+ var handleFinishFailed = useMemoizedFn(function (errorInfo) {
65
+ if (collapsed) {
66
+ var overflowHasError = React.Children.toArray(children).slice(defaultColsNumber).some(function (child) {
67
+ if (! /*#__PURE__*/React.isValidElement(child)) return false;
68
+ var childName = child.props.name;
69
+ return childName !== undefined && errorInfo.errors[childName] !== undefined;
70
+ });
71
+ if (overflowHasError) {
72
+ setCollapsed(false);
73
+ onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(false);
74
+ }
75
+ }
76
+ onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed(errorInfo);
77
+ });
166
78
  // Count children and split visible/hidden
167
79
  var childArray = useMemo(function () {
168
80
  var arr = [];
@@ -173,7 +85,6 @@ var QueryFilterBase = function QueryFilterBase(props) {
173
85
  });
174
86
  return arr;
175
87
  }, [children]);
176
- var visibleChildren = collapsed ? childArray.slice(0, defaultColsNumber) : childArray;
177
88
  var hasMore = childArray.length > defaultColsNumber;
178
89
  var searchText = (_a = searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchText) !== null && _a !== void 0 ? _a : DEFAULT_TEXT.search;
179
90
  var resetText = (_b = searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.resetText) !== null && _b !== void 0 ? _b : DEFAULT_TEXT.reset;
@@ -182,20 +93,21 @@ var QueryFilterBase = function QueryFilterBase(props) {
182
93
  width: labelWidth
183
94
  } : undefined;
184
95
  return _jsx(ProForm, Object.assign({}, formProps, {
185
- initialValues: initialValues,
186
- onFinish: handleFinish,
187
- onReset: handleReset,
96
+ syncToUrlAsImportant: syncToUrlAsImportant,
97
+ formComponentType: "QueryFilter",
98
+ onFinishFailed: handleFinishFailed,
188
99
  submitter: false,
189
100
  children: _jsxs("div", {
190
101
  className: classes(),
191
- children: [visibleChildren.map(function (child, index) {
102
+ children: [childArray.map(function (child, index) {
103
+ var hiddenByCollapse = collapsed && index >= defaultColsNumber;
192
104
  return _jsxs(React.Fragment, {
193
- children: [split && index > 0 && _jsx("div", {
105
+ children: [split && index > 0 && !hiddenByCollapse && _jsx("div", {
194
106
  className: classes('split')
195
- }), labelStyle ? _jsx("div", {
196
- style: labelStyle,
107
+ }), _jsx("div", {
108
+ style: hiddenByCollapse ? HIDDEN_STYLE : labelStyle !== null && labelStyle !== void 0 ? labelStyle : CONTENTS_STYLE,
197
109
  children: child
198
- }) : child]
110
+ })]
199
111
  }, index);
200
112
  }), _jsxs("div", {
201
113
  className: classes('actions'),
@@ -205,10 +117,9 @@ var QueryFilterBase = function QueryFilterBase(props) {
205
117
  size: buttonSize,
206
118
  children: searchText
207
119
  }), _jsx(Button, {
208
- type: "button",
120
+ type: "reset",
209
121
  color: "secondary",
210
122
  size: buttonSize,
211
- onClick: handleReset,
212
123
  children: resetText
213
124
  }), hasMore && _jsx(Button, {
214
125
  type: "button",
@@ -225,4 +136,4 @@ QueryFilterBase.displayName = 'QueryFilter';
225
136
  /** Generic-aware export — keeps `<QueryFilter<MyValues> …>` fully typed. */
226
137
  export var QueryFilter = /*#__PURE__*/memo(QueryFilterBase);
227
138
  export default QueryFilter;
228
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VNZW1vaXplZEZuIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJCdXR0b24iLCJQcm9Gb3JtIiwiQ1NTX1BSRUZJWCIsIkRFRkFVTFRfVEVYVCIsIlJlYWN0IiwiY2xhc3NlcyIsImNvbmNhdCIsImdldFVybFBhcmFtcyIsIndpbmRvdyIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImxvY2F0aW9uIiwic2VhcmNoIiwiZm9yRWFjaCIsInYiLCJrIiwic2V0VXJsUGFyYW1zIiwibWFuYWdlZEtleXMiLCJTZXQiLCJzcCIsIndyaXR0ZW4iLCJfaSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheSIsInVuZGVmaW5lZCIsInNldCIsIlN0cmluZyIsImFkZCIsInRvU3RyaW5nIiwidXJsIiwicGF0aG5hbWUiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwiUXVlcnlGaWx0ZXJCYXNlIiwicHJvcHMiLCJfYSIsIl9iIiwiX3Byb3BzJGRlZmF1bHRDb2xsYXBzIiwiZGVmYXVsdENvbGxhcHNlZCIsImNvbnRyb2xsZWRDb2xsYXBzZWQiLCJjb2xsYXBzZWQiLCJvbkNvbGxhcHNlIiwiX3Byb3BzJGRlZmF1bHRDb2xzTnVtIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwiX3Byb3BzJHNwbGl0Iiwic3BsaXQiLCJzZWFyY2hDb25maWciLCJzeW5jVG9VcmwiLCJvbkZpbmlzaCIsIm9uUmVzZXQiLCJjaGlsZHJlbiIsIl9wcm9wcyRzdWJtaXR0ZXIiLCJzdWJtaXR0ZXIiLCJpbml0aWFsVmFsdWVzUHJvcCIsImluaXRpYWxWYWx1ZXMiLCJmb3JtUHJvcHMiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJzZXRDb2xsYXBzZWQiLCJ1cmxQYXJhbXNBdE1vdW50UmVmIiwiY3VycmVudCIsIm1hbmFnZWRLZXlzUmVmIiwidXJsU2VlZGVkUmVmIiwidXJsUGFyYW1zIiwiZnJvbVVybCIsImtleXMiLCJhc3NpZ24iLCJoYW5kbGVTeW5jU2V0IiwidmFsdWVzIiwidG9Xcml0ZSIsInRvQ2xlYXIiLCJfaTIiLCJfT2JqZWN0JGVudHJpZXMyIiwiX09iamVjdCRlbnRyaWVzMiRfaSIsImtleSIsInZhbHVlIiwic2VlZGVkIiwiaGFzIiwiX2kzIiwiX09iamVjdCRrZXlzIiwiaGFuZGxlRmluaXNoIiwiaGFuZGxlUmVzZXQiLCJoYW5kbGVDb2xsYXBzZSIsIm5leHQiLCJjaGlsZEFycmF5IiwiYXJyIiwiQ2hpbGRyZW4iLCJjaGlsZCIsImlzVmFsaWRFbGVtZW50IiwicHVzaCIsInZpc2libGVDaGlsZHJlbiIsInNsaWNlIiwiaGFzTW9yZSIsInNlYXJjaFRleHQiLCJyZXNldFRleHQiLCJyZXNldCIsImJ1dHRvblNpemUiLCJzaXplIiwibGFiZWxTdHlsZSIsIndpZHRoIiwiY2xhc3NOYW1lIiwibWFwIiwiaW5kZXgiLCJGcmFnbWVudCIsInN0eWxlIiwidHlwZSIsImNvbG9yIiwib25DbGljayIsInZhcmlhbnQiLCJleHBhbmQiLCJjb2xsYXBzZSIsImRpc3BsYXlOYW1lIiwiUXVlcnlGaWx0ZXIiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFN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eW91dHMvUXVlcnlGaWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUNvbnRyb2xsZWRTdGF0ZSc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi9CdXR0b24nO1xuaW1wb3J0IHsgUHJvRm9ybSB9IGZyb20gJy4uL1Byb0Zvcm0nO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhUIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtDU1NfUFJFRklYfS1xdWVyeS1maWx0ZXJgKTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVVJMIHN5bmMgaGVscGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBnZXRVcmxQYXJhbXMoKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICByZXR1cm4ge307XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgIHBhcmFtc1trXSA9IHY7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcmFtcztcbn1cbi8qKlxuICogV3JpdGUgdGhlIGZpbHRlciB2YWx1ZXMgaW50byB0aGUgVVJMIHdoaWxlIFBSRVNFUlZJTkcgdW5yZWxhdGVkIHF1ZXJ5IHBhcmFtc1xuICogKGUuZy4gYD90YWI9Li4uYCkuIE9ubHkga2V5cyBwcmV2aW91c2x5IHdyaXR0ZW4gYnkgdGhpcyBmaWx0ZXIgKHRyYWNrZWQgaW5cbiAqIGBtYW5hZ2VkS2V5c2ApIGFyZSBjbGVhcmVkIGJlZm9yZSB3cml0aW5nLCBzbyByZXNldCByZW1vdmVzIGV4YWN0bHkgd2hhdCB0aGVcbiAqIGZpbHRlciBhZGRlZC4gUmV0dXJucyB0aGUgbmV3IHNldCBvZiBtYW5hZ2VkIGtleXMuXG4gKi9cbmZ1bmN0aW9uIHNldFVybFBhcmFtcyhwYXJhbXMsIG1hbmFnZWRLZXlzKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICByZXR1cm4gbmV3IFNldChtYW5hZ2VkS2V5cyk7XG4gICAgY29uc3Qgc3AgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIG1hbmFnZWRLZXlzLmZvckVhY2goKGspID0+IHNwLmRlbGV0ZShrKSk7XG4gICAgY29uc3Qgd3JpdHRlbiA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgICAgIGlmICh2ICE9PSBudWxsICYmIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSAnJykge1xuICAgICAgICAgICAgc3Auc2V0KGssIFN0cmluZyh2KSk7XG4gICAgICAgICAgICB3cml0dGVuLmFkZChrKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzZWFyY2ggPSBzcC50b1N0cmluZygpO1xuICAgIGNvbnN0IHVybCA9IHNlYXJjaCA/IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0/JHtzZWFyY2h9YCA6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIHVybCk7XG4gICAgcmV0dXJuIHdyaXR0ZW47XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFF1ZXJ5RmlsdGVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IFF1ZXJ5RmlsdGVyQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgeyBkZWZhdWx0Q29sbGFwc2VkID0gdHJ1ZSwgY29sbGFwc2VkOiBjb250cm9sbGVkQ29sbGFwc2VkLCBvbkNvbGxhcHNlLCBkZWZhdWx0Q29sc051bWJlciA9IDMsIGxhYmVsV2lkdGgsIHNwbGl0ID0gZmFsc2UsIHNlYXJjaENvbmZpZywgc3luY1RvVXJsLCBvbkZpbmlzaCwgb25SZXNldCwgY2hpbGRyZW4sIHN1Ym1pdHRlciA9IGZhbHNlLCBpbml0aWFsVmFsdWVzOiBpbml0aWFsVmFsdWVzUHJvcCB9ID0gcHJvcHMsIGZvcm1Qcm9wcyA9IF9fcmVzdChwcm9wcywgW1wiZGVmYXVsdENvbGxhcHNlZFwiLCBcImNvbGxhcHNlZFwiLCBcIm9uQ29sbGFwc2VcIiwgXCJkZWZhdWx0Q29sc051bWJlclwiLCBcImxhYmVsV2lkdGhcIiwgXCJzcGxpdFwiLCBcInNlYXJjaENvbmZpZ1wiLCBcInN5bmNUb1VybFwiLCBcIm9uRmluaXNoXCIsIFwib25SZXNldFwiLCBcImNoaWxkcmVuXCIsIFwic3VibWl0dGVyXCIsIFwiaW5pdGlhbFZhbHVlc1wiXSk7XG4gICAgY29uc3QgW2NvbGxhcHNlZCwgc2V0Q29sbGFwc2VkXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0Q29sbGFwc2VkLCBjb250cm9sbGVkQ29sbGFwc2VkKTtcbiAgICAvLyDilIDilIAgc3luY1RvVXJsOiBtZXJnZSBVUkwgcGFyYW1zIGludG8gaW5pdGlhbCB2YWx1ZXMgb24gbW91bnQg4pSA4pSAXG4gICAgLy8gT25lLXRpbWUgc25hcHNob3Qgb2YgdGhlIFVSTCBwYXJhbXMgYXQgbW91bnQuIExhenkgcmVmIGluaXQgaXMgSURFTVBPVEVOVCxcbiAgICAvLyBzbyBpdCBpcyBzYWZlIHVuZGVyIFN0cmljdE1vZGUncyBkb3VibGUgcmVuZGVyIChhbiBpbXB1cmUgXCJmaXJzdCBydW5cIiBmbGFnXG4gICAgLy8gaW5zaWRlIHVzZU1lbW8gd291bGQgcmV0dXJuIHRoZSB1bm1lcmdlZCB2YWx1ZSBvbiB0aGUgcmVwbGF5IGludm9jYXRpb24pLlxuICAgIGNvbnN0IHVybFBhcmFtc0F0TW91bnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgaWYgKHVybFBhcmFtc0F0TW91bnRSZWYuY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICB1cmxQYXJhbXNBdE1vdW50UmVmLmN1cnJlbnQgPSBzeW5jVG9VcmwgPyBnZXRVcmxQYXJhbXMoKSA6IHt9O1xuICAgIH1cbiAgICAvLyBLZXlzIHRoaXMgZmlsdGVyIGhhcyBXUklUVEVOIHRvIHRoZSBVUkwg4oCUIHRoZSBvbmx5IGtleXMgc3VibWl0L3Jlc2V0IGlzXG4gICAgLy8gYWxsb3dlZCB0byBjbGVhci4gVGhlIGZ1bmN0aW9uIGZvcm0gb2Ygc3luY1RvVXJsIGFsc28gc2VlZHMgdGhpcyBmcm9tIGl0c1xuICAgIC8vIGZpbHRlcmVkICdnZXQnIHJlc3VsdCAodGhvc2Uga2V5cyBhcmUgdGhlIGZpbHRlcidzIG93biBieSBkZWZpbml0aW9uKS5cbiAgICBjb25zdCBtYW5hZ2VkS2V5c1JlZiA9IHVzZVJlZihuZXcgU2V0KCkpO1xuICAgIC8vIEJvb2xlYW4tbW9kZSBvbmx5OiBVUkwgcGFyYW1zIG1lcmdlZCBpbnRvIGluaXRpYWxWYWx1ZXMgYnV0IE5PVCB5ZXRcbiAgICAvLyBjbGFpbWVkLiBUaGUgYm9vbGVhbiBmb3JtIGNhbm5vdCB0ZWxsIGl0cyBvd24gcGFyYW1zIGZyb20gZm9yZWlnbiBvbmVzXG4gICAgLy8gKD90YWI94oCmKSwgc28gYSBzZWVkZWQga2V5IGlzIGNsYWltZWQgb25seSBvbmNlIGl0cyB2YWx1ZSBjaGFuZ2VzIChvciBpdFxuICAgIC8vIGRpc2FwcGVhcnMgZnJvbSB0aGUgc3VibWl0dGVkIHZhbHVlcywgaS5lLiB0aGUgdXNlciBjbGVhcmVkIHRoZSBmaWVsZCkuXG4gICAgY29uc3QgdXJsU2VlZGVkUmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCBpbml0aWFsVmFsdWVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFzeW5jVG9VcmwpXG4gICAgICAgICAgICByZXR1cm4gaW5pdGlhbFZhbHVlc1Byb3A7XG4gICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IChfYSA9IHVybFBhcmFtc0F0TW91bnRSZWYuY3VycmVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge307XG4gICAgICAgIGlmICh0eXBlb2Ygc3luY1RvVXJsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zdCBmcm9tVXJsID0gc3luY1RvVXJsKHVybFBhcmFtcywgJ2dldCcpO1xuICAgICAgICAgICAgLy8gSWRlbXBvdGVudCByZWYgd3JpdGVzIOKAlCBzYW1lIGlucHV0IG9uIGV2ZXJ5IGludm9jYXRpb24uXG4gICAgICAgICAgICBtYW5hZ2VkS2V5c1JlZi5jdXJyZW50ID0gbmV3IFNldChPYmplY3Qua2V5cyhmcm9tVXJsKSk7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpbml0aWFsVmFsdWVzUHJvcCksIGZyb21VcmwpO1xuICAgICAgICB9XG4gICAgICAgIHVybFNlZWRlZFJlZi5jdXJyZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgdXJsUGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5pdGlhbFZhbHVlc1Byb3ApLCB1cmxQYXJhbXMpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBoYW5kbGVTeW5jU2V0ID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGlmICghc3luY1RvVXJsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgdG9Xcml0ZTtcbiAgICAgICAgY29uc3QgdG9DbGVhciA9IG5ldyBTZXQobWFuYWdlZEtleXNSZWYuY3VycmVudCk7XG4gICAgICAgIGlmICh0eXBlb2Ygc3luY1RvVXJsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0b1dyaXRlID0gc3luY1RvVXJsKHZhbHVlcywgJ3NldCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gU2tpcCBVUkwtc2VlZGVkIGtleXMgd2UgbmV2ZXIgd3JvdGUgd2hvc2UgdmFsdWUgaXMgdW5jaGFuZ2VkIOKAlCB0aGV5XG4gICAgICAgICAgICAvLyBtYXkgYmVsb25nIHRvIHNvbWVvbmUgZWxzZSAoP3RhYj3igKYpOyBsZWF2ZSB0aGVtIGluIHRoZSBVUkwgdW50b3VjaGVkLlxuICAgICAgICAgICAgLy8gQSBzZWVkZWQga2V5IHdob3NlIHZhbHVlIERJRCBjaGFuZ2UgaXMgY2xhaW1lZCBmcm9tIG5vdyBvbi5cbiAgICAgICAgICAgIHRvV3JpdGUgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWVkZWQgPSB1cmxTZWVkZWRSZWYuY3VycmVudFtrZXldO1xuICAgICAgICAgICAgICAgIGlmIChzZWVkZWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAhbWFuYWdlZEtleXNSZWYuY3VycmVudC5oYXMoa2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcodmFsdWUpID09PSBzZWVkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlbGV0ZSB1cmxTZWVkZWRSZWYuY3VycmVudFtrZXldO1xuICAgICAgICAgICAgICAgIHRvQ2xlYXIuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgdG9Xcml0ZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTZWVkZWQga2V5cyBtaXNzaW5nIGZyb20gdGhlIHN1Ym1pdHRlZCB2YWx1ZXMgd2VyZSBjbGVhcmVkIGJ5IHRoZVxuICAgICAgICAgICAgLy8gdXNlciAob21pdE5pbCBzdHJpcHMgZW1wdHkgdmFsdWVzKSDigJQgY2xhaW0gdGhlbSBhbmQgcmVtb3ZlIHRoZWlyXG4gICAgICAgICAgICAvLyBzdGFsZSBwYXJhbXMgZnJvbSB0aGUgVVJMLlxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModXJsU2VlZGVkUmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEoa2V5IGluIHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHVybFNlZWRlZFJlZi5jdXJyZW50W2tleV07XG4gICAgICAgICAgICAgICAgICAgIHRvQ2xlYXIuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQgPSBzZXRVcmxQYXJhbXModG9Xcml0ZSwgdG9DbGVhcik7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlRmluaXNoID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGhhbmRsZVN5bmNTZXQodmFsdWVzKTtcbiAgICAgICAgb25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVzZXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgaWYgKHN5bmNUb1VybCkge1xuICAgICAgICAgICAgbWFuYWdlZEtleXNSZWYuY3VycmVudCA9IHNldFVybFBhcmFtcyh7fSwgbWFuYWdlZEtleXNSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQ29sbGFwc2UgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9ICFjb2xsYXBzZWQ7XG4gICAgICAgIHNldENvbGxhcHNlZChuZXh0KTtcbiAgICAgICAgb25Db2xsYXBzZSA9PT0gbnVsbCB8fCBvbkNvbGxhcHNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNvbGxhcHNlKG5leHQpO1xuICAgIH0pO1xuICAgIC8vIENvdW50IGNoaWxkcmVuIGFuZCBzcGxpdCB2aXNpYmxlL2hpZGRlblxuICAgIGNvbnN0IGNoaWxkQXJyYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICAgICAgICAgIGFyci5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfSwgW2NoaWxkcmVuXSk7XG4gICAgY29uc3QgdmlzaWJsZUNoaWxkcmVuID0gY29sbGFwc2VkXG4gICAgICAgID8gY2hpbGRBcnJheS5zbGljZSgwLCBkZWZhdWx0Q29sc051bWJlcilcbiAgICAgICAgOiBjaGlsZEFycmF5O1xuICAgIGNvbnN0IGhhc01vcmUgPSBjaGlsZEFycmF5Lmxlbmd0aCA+IGRlZmF1bHRDb2xzTnVtYmVyO1xuICAgIGNvbnN0IHNlYXJjaFRleHQgPSAoX2EgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcuc2VhcmNoVGV4dCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogREVGQVVMVF9URVhULnNlYXJjaDtcbiAgICBjb25zdCByZXNldFRleHQgPSAoX2IgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcucmVzZXRUZXh0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBERUZBVUxUX1RFWFQucmVzZXQ7XG4gICAgY29uc3QgYnV0dG9uU2l6ZSA9IHNlYXJjaENvbmZpZyA9PT0gbnVsbCB8fCBzZWFyY2hDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENvbmZpZy5zaXplO1xuICAgIGNvbnN0IGxhYmVsU3R5bGUgPSBsYWJlbFdpZHRoICE9PSB1bmRlZmluZWQgJiYgbGFiZWxXaWR0aCAhPT0gJ2F1dG8nXG4gICAgICAgID8geyB3aWR0aDogbGFiZWxXaWR0aCB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAoX2pzeChQcm9Gb3JtLCBPYmplY3QuYXNzaWduKHt9LCBmb3JtUHJvcHMsIHsgaW5pdGlhbFZhbHVlczogaW5pdGlhbFZhbHVlcywgb25GaW5pc2g6IGhhbmRsZUZpbmlzaCwgb25SZXNldDogaGFuZGxlUmVzZXQsIHN1Ym1pdHRlcjogZmFsc2UsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogW3Zpc2libGVDaGlsZHJlbi5tYXAoKGNoaWxkLCBpbmRleCkgPT4gKF9qc3hzKFJlYWN0LkZyYWdtZW50LCB7IGNoaWxkcmVuOiBbc3BsaXQgJiYgaW5kZXggPiAwICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3NwbGl0JykgfSksIGxhYmVsU3R5bGUgPyAoX2pzeChcImRpdlwiLCB7IHN0eWxlOiBsYWJlbFN0eWxlLCBjaGlsZHJlbjogY2hpbGQgfSkpIDogKGNoaWxkKV0gfSwgaW5kZXgpKSksIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdhY3Rpb25zJyksIGNoaWxkcmVuOiBbX2pzeChCdXR0b24sIHsgdHlwZTogXCJzdWJtaXRcIiwgY29sb3I6IFwicHJpbWFyeVwiLCBzaXplOiBidXR0b25TaXplLCBjaGlsZHJlbjogc2VhcmNoVGV4dCB9KSwgX2pzeChCdXR0b24sIHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IGJ1dHRvblNpemUsIG9uQ2xpY2s6IGhhbmRsZVJlc2V0LCBjaGlsZHJlbjogcmVzZXRUZXh0IH0pLCBoYXNNb3JlICYmIChfanN4KEJ1dHRvbiwgeyB0eXBlOiBcImJ1dHRvblwiLCB2YXJpYW50OiBcInRleHRcIiwgc2l6ZTogYnV0dG9uU2l6ZSwgb25DbGljazogaGFuZGxlQ29sbGFwc2UsIGNoaWxkcmVuOiBjb2xsYXBzZWQgPyBERUZBVUxUX1RFWFQuZXhwYW5kIDogREVGQVVMVF9URVhULmNvbGxhcHNlIH0pKV0gfSldIH0pIH0pKSk7XG59O1xuUXVlcnlGaWx0ZXJCYXNlLmRpc3BsYXlOYW1lID0gJ1F1ZXJ5RmlsdGVyJztcbi8qKiBHZW5lcmljLWF3YXJlIGV4cG9ydCDigJQga2VlcHMgYDxRdWVyeUZpbHRlcjxNeVZhbHVlcz4g4oCmPmAgZnVsbHkgdHlwZWQuICovXG5leHBvcnQgY29uc3QgUXVlcnlGaWx0ZXIgPSBtZW1vKFF1ZXJ5RmlsdGVyQmFzZSk7XG5leHBvcnQgZGVmYXVsdCBRdWVyeUZpbHRlcjsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
139
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZU1lbW8iLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VNZW1vaXplZEZuIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJCdXR0b24iLCJQcm9Gb3JtIiwiQ1NTX1BSRUZJWCIsIkRFRkFVTFRfVEVYVCIsIlJlYWN0IiwiY2xhc3NlcyIsImNvbmNhdCIsIkhJRERFTl9TVFlMRSIsImRpc3BsYXkiLCJDT05URU5UU19TVFlMRSIsIlF1ZXJ5RmlsdGVyQmFzZSIsInByb3BzIiwiX2EiLCJfYiIsIl9wcm9wcyRkZWZhdWx0Q29sbGFwcyIsImRlZmF1bHRDb2xsYXBzZWQiLCJjb250cm9sbGVkQ29sbGFwc2VkIiwiY29sbGFwc2VkIiwib25Db2xsYXBzZSIsIl9wcm9wcyRkZWZhdWx0Q29sc051bSIsImRlZmF1bHRDb2xzTnVtYmVyIiwibGFiZWxXaWR0aCIsIl9wcm9wcyRzcGxpdCIsInNwbGl0Iiwic2VhcmNoQ29uZmlnIiwiX3Byb3BzJHN5bmNUb1VybEFzSW1wIiwic3luY1RvVXJsQXNJbXBvcnRhbnQiLCJjaGlsZHJlbiIsIm9uRmluaXNoRmFpbGVkIiwiX3N1Ym1pdHRlciIsInN1Ym1pdHRlciIsImZvcm1Qcm9wcyIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2V0Q29sbGFwc2VkIiwiaGFuZGxlQ29sbGFwc2UiLCJuZXh0IiwiaGFuZGxlRmluaXNoRmFpbGVkIiwiZXJyb3JJbmZvIiwib3ZlcmZsb3dIYXNFcnJvciIsIkNoaWxkcmVuIiwidG9BcnJheSIsInNsaWNlIiwic29tZSIsImNoaWxkIiwiaXNWYWxpZEVsZW1lbnQiLCJjaGlsZE5hbWUiLCJuYW1lIiwidW5kZWZpbmVkIiwiZXJyb3JzIiwiY2hpbGRBcnJheSIsImFyciIsImZvckVhY2giLCJwdXNoIiwiaGFzTW9yZSIsInNlYXJjaFRleHQiLCJzZWFyY2giLCJyZXNldFRleHQiLCJyZXNldCIsImJ1dHRvblNpemUiLCJzaXplIiwibGFiZWxTdHlsZSIsIndpZHRoIiwiYXNzaWduIiwiZm9ybUNvbXBvbmVudFR5cGUiLCJjbGFzc05hbWUiLCJtYXAiLCJpbmRleCIsImhpZGRlbkJ5Q29sbGFwc2UiLCJGcmFnbWVudCIsInN0eWxlIiwidHlwZSIsImNvbG9yIiwidmFyaWFudCIsIm9uQ2xpY2siLCJleHBhbmQiLCJjb2xsYXBzZSIsImRpc3BsYXlOYW1lIiwiUXVlcnlGaWx0ZXIiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUs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O1VBQUssQ0FBQSxDQUNGO1FBQUEsQ0FBQSxFQUphdUIsS0FBSyxDQUtUO01BRXJCLENBQUMsQ0FBQyxFQUVGM0UsS0FBQSxDQUFBLEtBQUEsRUFBQTtRQUFLeUUsU0FBUyxFQUFFN0QsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUFBc0IsUUFBQSxFQUFBLENBQ2hDcEMsSUFBQSxDQUFDUyxNQUFNLEVBQUE7VUFBQ3dFLElBQUksRUFBQyxRQUFRO1VBQUNDLEtBQUssRUFBQyxTQUFTO1VBQUNaLElBQUksRUFBRUQsVUFBVTtVQUFBakMsUUFBQSxFQUNuRDZCO1FBQVUsQ0FBQSxDQUNKLEVBR1RqRSxJQUFBLENBQUNTLE1BQU0sRUFBQTtVQUFDd0UsSUFBSSxFQUFDLE9BQU87VUFBQ0MsS0FBSyxFQUFDLFdBQVc7VUFBQ1osSUFBSSxFQUFFRCxVQUFVO1VBQUFqQyxRQUFBLEVBQ3BEK0I7UUFBUyxDQUFBLENBQ0gsRUFDUkgsT0FBTyxJQUNOaEUsSUFBQSxDQUFDUyxNQUFNLEVBQUE7VUFBQ3dFLElBQUksRUFBQyxRQUFRO1VBQUNFLE9BQU8sRUFBQyxNQUFNO1VBQUNiLElBQUksRUFBRUQsVUFBVTtVQUFFZSxPQUFPLEVBQUV2QyxjQUFjO1VBQUFULFFBQUEsRUFDM0VWLFNBQVMsR0FBR2QsWUFBWSxDQUFDeUUsTUFBTSxHQUFHekUsWUFBWSxDQUFDMEU7UUFBUSxDQUFBLENBRTNEO01BQUEsQ0FBQSxDQUNHO0lBQUEsQ0FBQTtFQUNGLENBQUEsQ0FBQSxDQUNFO0FBRWQsQ0FBQztBQUVEbkUsZUFBZSxDQUFDb0UsV0FBVyxHQUFHLGFBQWE7QUFFM0M7QUFDQSxPQUFPLElBQU1DLFdBQVcsZ0JBQUdyRixJQUFJLENBQUNnQixlQUFlLENBRUs7QUFFcEQsZUFBZXFFLFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvUXVlcnlGaWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IFByb0Zvcm0gfSBmcm9tICcuLi9Qcm9Gb3JtJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tcXVlcnktZmlsdGVyYCk7XG5jb25zdCBISURERU5fU1RZTEUgPSB7IGRpc3BsYXk6ICdub25lJyB9O1xuLy8gS2VlcHMgdGhlIHdyYXBwZXIgbGF5b3V0LW5ldXRyYWw6IHRoZSBmaWVsZCBzdGF5cyBhIGRpcmVjdCBmbGV4IGl0ZW0uXG5jb25zdCBDT05URU5UU19TVFlMRSA9IHsgZGlzcGxheTogJ2NvbnRlbnRzJyB9O1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBRdWVyeUZpbHRlciDigJQgYSBjb21wYWN0IGZpbHRlciBiYXIgb24gdG9wIG9mIFByb0Zvcm0uXG4vL1xuLy8gVVJMIHN5bmNocm9uaXphdGlvbiBpcyBoYW5kbGVkIGJ5IFByb0Zvcm0gaXRzZWxmIChgc3luY1RvVXJsYCk7IFF1ZXJ5RmlsdGVyXG4vLyBvbmx5IGZsaXBzIHRoZSBkZWZhdWx0IG9mIGBzeW5jVG9VcmxBc0ltcG9ydGFudGAgdG8gdHJ1ZTogYSBmaWx0ZXIncyByZWFzb25cbi8vIHRvIHN5bmMgaXMgcmVzdG9yaW5nIHN0YXRlIGZyb20gdGhlIFVSTCBvbiByZWZyZXNoLCBzbyBVUkwgcGFyYW1zIHdpbiBvdmVyXG4vLyBgaW5pdGlhbFZhbHVlc2AgaGVyZSAocGxhaW4gUHJvRm9ybSBrZWVwcyB0aGUgb3Bwb3NpdGUgZGVmYXVsdCkuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IFF1ZXJ5RmlsdGVyQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgeyBkZWZhdWx0Q29sbGFwc2VkID0gdHJ1ZSwgY29sbGFwc2VkOiBjb250cm9sbGVkQ29sbGFwc2VkLCBvbkNvbGxhcHNlLCBkZWZhdWx0Q29sc051bWJlciA9IDMsIGxhYmVsV2lkdGgsIHNwbGl0ID0gZmFsc2UsIHNlYXJjaENvbmZpZywgc3luY1RvVXJsQXNJbXBvcnRhbnQgPSB0cnVlLCBjaGlsZHJlbiwgb25GaW5pc2hGYWlsZWQsIFxuICAgIC8vIFF1ZXJ5RmlsdGVyIGFsd2F5cyByZW5kZXJzIGl0cyBvd24gU2VhcmNoL1Jlc2V0L0V4cGFuZCBidXR0b25zLlxuICAgIHN1Ym1pdHRlcjogX3N1Ym1pdHRlciB9ID0gcHJvcHMsIGZvcm1Qcm9wcyA9IF9fcmVzdChwcm9wcywgW1wiZGVmYXVsdENvbGxhcHNlZFwiLCBcImNvbGxhcHNlZFwiLCBcIm9uQ29sbGFwc2VcIiwgXCJkZWZhdWx0Q29sc051bWJlclwiLCBcImxhYmVsV2lkdGhcIiwgXCJzcGxpdFwiLCBcInNlYXJjaENvbmZpZ1wiLCBcInN5bmNUb1VybEFzSW1wb3J0YW50XCIsIFwiY2hpbGRyZW5cIiwgXCJvbkZpbmlzaEZhaWxlZFwiLCBcInN1Ym1pdHRlclwiXSk7XG4gICAgY29uc3QgW2NvbGxhcHNlZCwgc2V0Q29sbGFwc2VkXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0Q29sbGFwc2VkLCBjb250cm9sbGVkQ29sbGFwc2VkKTtcbiAgICBjb25zdCBoYW5kbGVDb2xsYXBzZSA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gIWNvbGxhcHNlZDtcbiAgICAgICAgc2V0Q29sbGFwc2VkKG5leHQpO1xuICAgICAgICBvbkNvbGxhcHNlID09PSBudWxsIHx8IG9uQ29sbGFwc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ29sbGFwc2UobmV4dCk7XG4gICAgfSk7XG4gICAgLy8gQSBjb2xsYXBzZWQgKGRpc3BsYXk6bm9uZSkgZmllbGQgZmFpbGluZyB2YWxpZGF0aW9uIHdvdWxkIGJsb2NrIFNlYXJjaFxuICAgIC8vIHdpdGggYW4gSU5WSVNJQkxFIGVycm9yIOKAlCBhdXRvLWV4cGFuZCBzbyB0aGUgdXNlciBjYW4gc2VlIGFuZCBmaXggaXQuXG4gICAgY29uc3QgaGFuZGxlRmluaXNoRmFpbGVkID0gdXNlTWVtb2l6ZWRGbigoZXJyb3JJbmZvKSA9PiB7XG4gICAgICAgIGlmIChjb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93SGFzRXJyb3IgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKVxuICAgICAgICAgICAgICAgIC5zbGljZShkZWZhdWx0Q29sc051bWJlcilcbiAgICAgICAgICAgICAgICAuc29tZSgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkTmFtZSA9IGNoaWxkLnByb3BzLm5hbWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkTmFtZSAhPT0gdW5kZWZpbmVkICYmIGVycm9ySW5mby5lcnJvcnNbY2hpbGROYW1lXSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3ZlcmZsb3dIYXNFcnJvcikge1xuICAgICAgICAgICAgICAgIHNldENvbGxhcHNlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgb25Db2xsYXBzZSA9PT0gbnVsbCB8fCBvbkNvbGxhcHNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNvbGxhcHNlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoZXJyb3JJbmZvKTtcbiAgICB9KTtcbiAgICAvLyBDb3VudCBjaGlsZHJlbiBhbmQgc3BsaXQgdmlzaWJsZS9oaWRkZW5cbiAgICBjb25zdCBjaGlsZEFycmF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICBhcnIucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH0sIFtjaGlsZHJlbl0pO1xuICAgIGNvbnN0IGhhc01vcmUgPSBjaGlsZEFycmF5Lmxlbmd0aCA+IGRlZmF1bHRDb2xzTnVtYmVyO1xuICAgIGNvbnN0IHNlYXJjaFRleHQgPSAoX2EgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcuc2VhcmNoVGV4dCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogREVGQVVMVF9URVhULnNlYXJjaDtcbiAgICBjb25zdCByZXNldFRleHQgPSAoX2IgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcucmVzZXRUZXh0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBERUZBVUxUX1RFWFQucmVzZXQ7XG4gICAgY29uc3QgYnV0dG9uU2l6ZSA9IHNlYXJjaENvbmZpZyA9PT0gbnVsbCB8fCBzZWFyY2hDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENvbmZpZy5zaXplO1xuICAgIGNvbnN0IGxhYmVsU3R5bGUgPSBsYWJlbFdpZHRoICE9PSB1bmRlZmluZWQgJiYgbGFiZWxXaWR0aCAhPT0gJ2F1dG8nXG4gICAgICAgID8geyB3aWR0aDogbGFiZWxXaWR0aCB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAoX2pzeChQcm9Gb3JtLCBPYmplY3QuYXNzaWduKHt9LCBmb3JtUHJvcHMsIHsgc3luY1RvVXJsQXNJbXBvcnRhbnQ6IHN5bmNUb1VybEFzSW1wb3J0YW50LCBmb3JtQ29tcG9uZW50VHlwZTogXCJRdWVyeUZpbHRlclwiLCBvbkZpbmlzaEZhaWxlZDogaGFuZGxlRmluaXNoRmFpbGVkLCBzdWJtaXR0ZXI6IGZhbHNlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoKSwgY2hpbGRyZW46IFtjaGlsZEFycmF5Lm1hcCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZGRlbkJ5Q29sbGFwc2UgPSBjb2xsYXBzZWQgJiYgaW5kZXggPj0gZGVmYXVsdENvbHNOdW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeHMoUmVhY3QuRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtzcGxpdCAmJiBpbmRleCA+IDAgJiYgIWhpZGRlbkJ5Q29sbGFwc2UgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc3BsaXQnKSB9KSwgX2pzeChcImRpdlwiLCB7IHN0eWxlOiBoaWRkZW5CeUNvbGxhcHNlID8gSElEREVOX1NUWUxFIDogKGxhYmVsU3R5bGUgIT09IG51bGwgJiYgbGFiZWxTdHlsZSAhPT0gdm9pZCAwID8gbGFiZWxTdHlsZSA6IENPTlRFTlRTX1NUWUxFKSwgY2hpbGRyZW46IGNoaWxkIH0pXSB9LCBpbmRleCkpO1xuICAgICAgICAgICAgICAgIH0pLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnYWN0aW9ucycpLCBjaGlsZHJlbjogW19qc3goQnV0dG9uLCB7IHR5cGU6IFwic3VibWl0XCIsIGNvbG9yOiBcInByaW1hcnlcIiwgc2l6ZTogYnV0dG9uU2l6ZSwgY2hpbGRyZW46IHNlYXJjaFRleHQgfSksIF9qc3goQnV0dG9uLCB7IHR5cGU6IFwicmVzZXRcIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IGJ1dHRvblNpemUsIGNoaWxkcmVuOiByZXNldFRleHQgfSksIGhhc01vcmUgJiYgKF9qc3goQnV0dG9uLCB7IHR5cGU6IFwiYnV0dG9uXCIsIHZhcmlhbnQ6IFwidGV4dFwiLCBzaXplOiBidXR0b25TaXplLCBvbkNsaWNrOiBoYW5kbGVDb2xsYXBzZSwgY2hpbGRyZW46IGNvbGxhcHNlZCA/IERFRkFVTFRfVEVYVC5leHBhbmQgOiBERUZBVUxUX1RFWFQuY29sbGFwc2UgfSkpXSB9KV0gfSkgfSkpKTtcbn07XG5RdWVyeUZpbHRlckJhc2UuZGlzcGxheU5hbWUgPSAnUXVlcnlGaWx0ZXInO1xuLyoqIEdlbmVyaWMtYXdhcmUgZXhwb3J0IOKAlCBrZWVwcyBgPFF1ZXJ5RmlsdGVyPE15VmFsdWVzPiDigKY+YCBmdWxseSB0eXBlZC4gKi9cbmV4cG9ydCBjb25zdCBRdWVyeUZpbHRlciA9IG1lbW8oUXVlcnlGaWx0ZXJCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFF1ZXJ5RmlsdGVyOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -9,9 +9,9 @@ interface UseOverlayFormOptions {
9
9
  interface UseOverlayFormReturn {
10
10
  mergedOpen: boolean;
11
11
  triggerNode: ReactElement | null;
12
- handleFinish: (values: Record<string, unknown>) => Promise<void>;
12
+ handleFinish: (values: Record<string, unknown>) => Promise<void | boolean>;
13
13
  handleHide: () => void;
14
14
  handleShow: () => void;
15
15
  }
16
- export declare function useOverlayForm(options: UseOverlayFormOptions, onFinish?: (values: Record<string, unknown>) => void | Promise<void>): UseOverlayFormReturn;
16
+ export declare function useOverlayForm(options: UseOverlayFormOptions, onFinish?: (values: Record<string, unknown>) => void | boolean | Promise<void | boolean>): UseOverlayFormReturn;
17
17
  export default useOverlayForm;
@@ -27,7 +27,7 @@ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, gene
27
27
  step((generator = generator.apply(thisArg, _arguments || [])).next());
28
28
  });
29
29
  };
30
- import React from 'react';
30
+ import React, { useEffect, useRef } from 'react';
31
31
  import useControlledState from '@1money/hooks/useControlledState';
32
32
  import useDebouncedCallback from '@1money/hooks/useDebouncedCallback';
33
33
  import useEventCallback from '@1money/hooks/useEventCallback';
@@ -45,18 +45,30 @@ export function useOverlayForm(options, onFinish) {
45
45
  _useControlledState2 = _slicedToArray(_useControlledState, 2),
46
46
  mergedOpen = _useControlledState2[0],
47
47
  setMergedOpen = _useControlledState2[1];
48
+ // Session generation — every open-state change starts a new session, so a
49
+ // STALE in-flight submit (started in a previous session) can't auto-close
50
+ // the overlay the user has since closed and reopened.
51
+ var sessionRef = useRef(0);
48
52
  var setOpen = useEventCallback(function (nextOpen) {
53
+ sessionRef.current += 1;
49
54
  setMergedOpen(nextOpen);
50
55
  onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(nextOpen);
51
56
  });
52
- // Deferred auto-close after submit. `cancel` clears any pending close (e.g.
53
- // when the overlay is hidden first); the timer is also auto-cancelled on
57
+ // Deferred auto-close after submit. The fire-time session check makes a
58
+ // STALE timer (scheduled in a previous open/close session) a no-op;
59
+ // `cancel` clears any pending close and the timer also auto-cancels on
54
60
  // unmount.
55
- var _useDebouncedCallback = useDebouncedCallback(function () {
56
- return setOpen(false);
61
+ var _useDebouncedCallback = useDebouncedCallback(function (session) {
62
+ if (session === sessionRef.current) setOpen(false);
57
63
  }, submitTimeout),
58
64
  scheduleClose = _useDebouncedCallback.run,
59
65
  cancelScheduledClose = _useDebouncedCallback.cancel;
66
+ // Any open-state transition — including CONTROLLED `open` prop flips that
67
+ // bypass setOpen — starts a new session and discards a pending close.
68
+ useEffect(function () {
69
+ sessionRef.current += 1;
70
+ cancelScheduledClose();
71
+ }, [mergedOpen, cancelScheduledClose]);
60
72
  var handleShow = useEventCallback(function () {
61
73
  setOpen(true);
62
74
  });
@@ -64,21 +76,28 @@ export function useOverlayForm(options, onFinish) {
64
76
  cancelScheduledClose();
65
77
  setOpen(false);
66
78
  });
79
+ // Propagate the consumer's return value — ProForm gates URL sync on it,
80
+ // and autoClose honors it too: an explicit `false` means the submit FAILED,
81
+ // so the overlay stays open instead of discarding the user's input.
67
82
  var handleFinish = useEventCallback(function (values) {
68
83
  return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
84
+ var session, result;
69
85
  return _regeneratorRuntime.wrap(function (_context) {
70
86
  while (1) switch (_context.prev = _context.next) {
71
87
  case 0:
88
+ session = sessionRef.current;
72
89
  _context.next = 1;
73
90
  return onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
74
91
  case 1:
75
- if (autoClose) {
92
+ result = _context.sent;
93
+ if (autoClose && result !== false && session === sessionRef.current) {
76
94
  if (submitTimeout && submitTimeout > 0) {
77
- scheduleClose();
95
+ scheduleClose(session);
78
96
  } else {
79
97
  setOpen(false);
80
98
  }
81
99
  }
100
+ return _context.abrupt("return", result);
82
101
  case 2:
83
102
  case "end":
84
103
  return _context.stop();
@@ -106,4 +125,4 @@ export function useOverlayForm(options, onFinish) {
106
125
  };
107
126
  }
108
127
  export default useOverlayForm;
109
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL3VzZU92ZXJsYXlGb3JtLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJSZWFjdCIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZURlYm91bmNlZENhbGxiYWNrIiwidXNlRXZlbnRDYWxsYmFjayIsInVzZU92ZXJsYXlGb3JtIiwib3B0aW9ucyIsIm9uRmluaXNoIiwiX3RoaXMiLCJjb250cm9sbGVkT3BlbiIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJ0cmlnZ2VyIiwiX29wdGlvbnMkYXV0b0Nsb3NlIiwiYXV0b0Nsb3NlIiwic3VibWl0VGltZW91dCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibWVyZ2VkT3BlbiIsInNldE1lcmdlZE9wZW4iLCJzZXRPcGVuIiwibmV4dE9wZW4iLCJfdXNlRGVib3VuY2VkQ2FsbGJhY2siLCJzY2hlZHVsZUNsb3NlIiwicnVuIiwiY2FuY2VsU2NoZWR1bGVkQ2xvc2UiLCJjYW5jZWwiLCJoYW5kbGVTaG93IiwiaGFuZGxlSGlkZSIsImhhbmRsZUZpbmlzaCIsInZhbHVlcyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzdG9wIiwidHJpZ2dlck5vZGUiLCJjbG9uZUVsZW1lbnQiLCJvbkNsaWNrIiwiX2EiLCJvcmlnaW5hbE9u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TUFBQSxHQUFBSixPQUFBO0lBQUEsQ0FDRixFQUFBO0VBQUEsRUFBQztFQUVGO0VBQ0EsSUFBTUssV0FBVyxHQUFHM0IsT0FBTyxnQkFDdkJYLEtBQUssQ0FBQ3VDLFlBQVksQ0FBQzVCLE9BQXNELEVBQUU7SUFDekU2QixPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUF5QjtNRDNCeEIsSUFBSUMsRUFBRTtNQzRCWmQsVUFBVSxDQUFBLENBQUU7TUFDWixJQUFNZSxlQUFlLEdBQUcsQ0FBQUQsRUFBQSxHQUFDOUIsT0FBTyxDQUFDZ0MsS0FBaUMsTUFBQSxJQUFBLElBQUFGLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFRCxPQUFPO01BQzNFLElBQUksT0FBT0UsZUFBZSxLQUFLLFVBQVUsRUFBRTtRQUN4Q0EsZUFBNkMsQ0FBQTNDLEtBQUEsU0FBQTZDLFNBQVEsQ0FBQztNQUN6RDtJQUNGO0VEMUJBLENDMkJELENBQUMsR0FDRixJQUFJO0VBRVIsT0FBTztJQUNMMUIsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZvQixXQUFXLEVBQVhBLFdBQVc7SUFDWFQsWUFBWSxFQUFaQSxZQUFZO0lBQ1pELFVBQVUsRUFBVkEsVUFBVTtJQUNWRCxVQUFVLEVBQVZBO0VEM0JBLENDNEJEO0FBQ0g7QUFFQSxlQUFldkIsY0FBYyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZURlYm91bmNlZENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRGVib3VuY2VkQ2FsbGJhY2snO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmV4cG9ydCBmdW5jdGlvbiB1c2VPdmVybGF5Rm9ybShvcHRpb25zLCBvbkZpbmlzaCkge1xuICAgIGNvbnN0IHsgb3BlbjogY29udHJvbGxlZE9wZW4sIG9uT3BlbkNoYW5nZSwgdHJpZ2dlciwgYXV0b0Nsb3NlID0gdHJ1ZSwgc3VibWl0VGltZW91dCwgfSA9IG9wdGlvbnM7XG4gICAgLy8gQ29udHJvbGxlZCB3aGVuIGBjb250cm9sbGVkT3BlbmAgaXMgcGFzc2VkLCBpbnRlcm5hbCBvdGhlcndpc2Ug4oCUIGFuZCBhbHdheXNcbiAgICAvLyBmb3J3YXJkIHRoZSBjaGFuZ2UgdG8gYG9uT3BlbkNoYW5nZWAuXG4gICAgY29uc3QgW21lcmdlZE9wZW4sIHNldE1lcmdlZE9wZW5dID0gdXNlQ29udHJvbGxlZFN0YXRlKGZhbHNlLCBjb250cm9sbGVkT3Blbik7XG4gICAgY29uc3Qgc2V0T3BlbiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRPcGVuKSA9PiB7XG4gICAgICAgIHNldE1lcmdlZE9wZW4obmV4dE9wZW4pO1xuICAgICAgICBvbk9wZW5DaGFuZ2UgPT09IG51bGwgfHwgb25PcGVuQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbk9wZW5DaGFuZ2UobmV4dE9wZW4pO1xuICAgIH0pO1xuICAgIC8vIERlZmVycmVkIGF1dG8tY2xvc2UgYWZ0ZXIgc3VibWl0LiBgY2FuY2VsYCBjbGVhcnMgYW55IHBlbmRpbmcgY2xvc2UgKGUuZy5cbiAgICAvLyB3aGVuIHRoZSBvdmVybGF5IGlzIGhpZGRlbiBmaXJzdCk7IHRoZSB0aW1lciBpcyBhbHNvIGF1dG8tY2FuY2VsbGVkIG9uXG4gICAgLy8gdW5tb3VudC5cbiAgICBjb25zdCB7IHJ1bjogc2NoZWR1bGVDbG9zZSwgY2FuY2VsOiBjYW5jZWxTY2hlZHVsZWRDbG9zZSB9ID0gdXNlRGVib3VuY2VkQ2FsbGJhY2soKCkgPT4gc2V0T3BlbihmYWxzZSksIHN1Ym1pdFRpbWVvdXQpO1xuICAgIGNvbnN0IGhhbmRsZVNob3cgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVIaWRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGNhbmNlbFNjaGVkdWxlZENsb3NlKCk7XG4gICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZpbmlzaCA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlcykgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB5aWVsZCAob25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbHVlcykpO1xuICAgICAgICBpZiAoYXV0b0Nsb3NlKSB7XG4gICAgICAgICAgICBpZiAoc3VibWl0VGltZW91dCAmJiBzdWJtaXRUaW1lb3V0ID4gMCkge1xuICAgICAgICAgICAgICAgIHNjaGVkdWxlQ2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIENsb25lIHRyaWdnZXIgd2l0aCBvbkNsaWNrIGhhbmRsZXJcbiAgICBjb25zdCB0cmlnZ2VyTm9kZSA9IHRyaWdnZXJcbiAgICAgICAgPyBSZWFjdC5jbG9uZUVsZW1lbnQodHJpZ2dlciwge1xuICAgICAgICAgICAgb25DbGljazogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2hvdygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsT25DbGljayA9IChfYSA9IHRyaWdnZXIucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNsaWNrO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxPbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsT25DbGljayguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWVyZ2VkT3BlbixcbiAgICAgICAgdHJpZ2dlck5vZGUsXG4gICAgICAgIGhhbmRsZUZpbmlzaCxcbiAgICAgICAgaGFuZGxlSGlkZSxcbiAgICAgICAgaGFuZGxlU2hvdyxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlT3ZlcmxheUZvcm07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
128
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL3VzZU92ZXJsYXlGb3JtLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZURlYm91bmNlZENhbGxiYWNrIiwidXNlRXZlbnRDYWxsYmFjayIsInVzZU92ZXJsYXlGb3JtIiwib3B0aW9ucyIsIm9uRmluaXNoIiwiX3RoaXMiLCJjb250cm9sbGVkT3BlbiIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJ0cmlnZ2VyIiwiX29wdGlvbnMkYXV0b0Nsb3NlIiwiYXV0b0Nsb3NlIiwic3VibWl0VGltZW91dCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibWVyZ2VkT3BlbiIsInNldE1lcmdlZE9wZW4iLCJzZXNzaW9uUmVmIiwic2V0T3BlbiIsIm5leHRPcGVuIiwiY3VycmVudCIsIl91c2VEZWJvdW5jZWRDYWxsYmFjayIsInNlc3Npb24iLCJzY2hlZHVsZUNsb3NlIiwicnVuIiwiY2FuY2VsU2NoZWR1bGVkQ2xvc2UiLCJjYW5jZWwiLCJoYW5kbGVTaG93IiwiaGFuZGxlSGlkZSIsImhhbmRsZUZpbmlzaCIsInZhbHVlcyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzZW50IiwiYWJydXB0Iiwic3RvcCIsInRyaWdnZXJOb2RlIiwiY2xvbmVFbGVtZW50Iiwib25DbGljayIsIl9hIiwib3JpZ2luYWxPbkNsaWNrIiwicHJvcHMiLCJhcmd1bWVudHMiXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FBR0ssT0FBTyxDQUFDLEVBQUUsVUFBVUQsT0FBTyxFQUFFRSxNQUFNLEVBQUU7SUFDdkQsU0FBU0MsU0FBU0EsQ0FBQ0osS0FBSyxFQUFFO01BQUUsSUFBSTtRQUFFSyxJQUFJLENBQUNQLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDTixLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzFGLFNBQVNDLFFBQVFBLENBQUNSLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUNFLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENBQUMsQ0FBQztNQUFFO0lBQUU7SUFDN0YsU0FBU0YsSUFBSUEsQ0FBQ0ksTUFBTSxFQUFFO01BQUVBLE1BQU0sQ0FBQ0MsSUFBSSxHQUFHVCxPQUFPLENBQUNRLE1BQU0sQ0FBQ1QsS0FBSyxDQUFDLEdBQUdELEtBQUssQ0FBQ1UsTUFB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S0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRUQsT0FBTztNQUMzRSxJQUFJLE9BQU9FLGVBQWUsS0FBSyxVQUFVLEVBQUU7UUFDeENBLGVBQTZDLENBQUFsRCxLQUFBLFNBQUFvRCxTQUFRLENBQUM7TUFDekQ7SUFDRjtFRDNCQSxDQzRCRCxDQUFDLEdBQ0YsSUFBSTtFQUVSLE9BQU87SUFDTC9CLFVBQVUsRUFBVkEsVUFBVTtJQUNWeUIsV0FBVyxFQUFYQSxXQUFXO0lBQ1hYLFlBQVksRUFBWkEsWUFBWTtJQUNaRCxVQUFVLEVBQVZBLFVBQVU7SUFDVkQsVUFBVSxFQUFWQTtFRDVCQSxDQzZCRDtBQUNIO0FBRUEsZUFBZTFCLGNBQWMiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvdXNlT3ZlcmxheUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZURlYm91bmNlZENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRGVib3VuY2VkQ2FsbGJhY2snO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmV4cG9ydCBmdW5jdGlvbiB1c2VPdmVybGF5Rm9ybShvcHRpb25zLCBvbkZpbmlzaCkge1xuICAgIGNvbnN0IHsgb3BlbjogY29udHJvbGxlZE9wZW4sIG9uT3BlbkNoYW5nZSwgdHJpZ2dlciwgYXV0b0Nsb3NlID0gdHJ1ZSwgc3VibWl0VGltZW91dCwgfSA9IG9wdGlvbnM7XG4gICAgLy8gQ29udHJvbGxlZCB3aGVuIGBjb250cm9sbGVkT3BlbmAgaXMgcGFzc2VkLCBpbnRlcm5hbCBvdGhlcndpc2Ug4oCUIGFuZCBhbHdheXNcbiAgICAvLyBmb3J3YXJkIHRoZSBjaGFuZ2UgdG8gYG9uT3BlbkNoYW5nZWAuXG4gICAgY29uc3QgW21lcmdlZE9wZW4sIHNldE1lcmdlZE9wZW5dID0gdXNlQ29udHJvbGxlZFN0YXRlKGZhbHNlLCBjb250cm9sbGVkT3Blbik7XG4gICAgLy8gU2Vzc2lvbiBnZW5lcmF0aW9uIOKAlCBldmVyeSBvcGVuLXN0YXRlIGNoYW5nZSBzdGFydHMgYSBuZXcgc2Vzc2lvbiwgc28gYVxuICAgIC8vIFNUQUxFIGluLWZsaWdodCBzdWJtaXQgKHN0YXJ0ZWQgaW4gYSBwcmV2aW91cyBzZXNzaW9uKSBjYW4ndCBhdXRvLWNsb3NlXG4gICAgLy8gdGhlIG92ZXJsYXkgdGhlIHVzZXIgaGFzIHNpbmNlIGNsb3NlZCBhbmQgcmVvcGVuZWQuXG4gICAgY29uc3Qgc2Vzc2lvblJlZiA9IHVzZVJlZigwKTtcbiAgICBjb25zdCBzZXRPcGVuID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dE9wZW4pID0+IHtcbiAgICAgICAgc2Vzc2lvblJlZi5jdXJyZW50ICs9IDE7XG4gICAgICAgIHNldE1lcmdlZE9wZW4obmV4dE9wZW4pO1xuICAgICAgICBvbk9wZW5DaGFuZ2UgPT09IG51bGwgfHwgb25PcGVuQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbk9wZW5DaGFuZ2UobmV4dE9wZW4pO1xuICAgIH0pO1xuICAgIC8vIERlZmVycmVkIGF1dG8tY2xvc2UgYWZ0ZXIgc3VibWl0LiBUaGUgZmlyZS10aW1lIHNlc3Npb24gY2hlY2sgbWFrZXMgYVxuICAgIC8vIFNUQUxFIHRpbWVyIChzY2hlZHVsZWQgaW4gYSBwcmV2aW91cyBvcGVuL2Nsb3NlIHNlc3Npb24pIGEgbm8tb3A7XG4gICAgLy8gYGNhbmNlbGAgY2xlYXJzIGFueSBwZW5kaW5nIGNsb3NlIGFuZCB0aGUgdGltZXIgYWxzbyBhdXRvLWNhbmNlbHMgb25cbiAgICAvLyB1bm1vdW50LlxuICAgIGNvbnN0IHsgcnVuOiBzY2hlZHVsZUNsb3NlLCBjYW5jZWw6IGNhbmNlbFNjaGVkdWxlZENsb3NlIH0gPSB1c2VEZWJvdW5jZWRDYWxsYmFjaygoc2Vzc2lvbikgPT4ge1xuICAgICAgICBpZiAoc2Vzc2lvbiA9PT0gc2Vzc2lvblJlZi5jdXJyZW50KVxuICAgICAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgfSwgc3VibWl0VGltZW91dCk7XG4gICAgLy8gQW55IG9wZW4tc3RhdGUgdHJhbnNpdGlvbiDigJQgaW5jbHVkaW5nIENPTlRST0xMRUQgYG9wZW5gIHByb3AgZmxpcHMgdGhhdFxuICAgIC8vIGJ5cGFzcyBzZXRPcGVuIOKAlCBzdGFydHMgYSBuZXcgc2Vzc2lvbiBhbmQgZGlzY2FyZHMgYSBwZW5kaW5nIGNsb3NlLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNlc3Npb25SZWYuY3VycmVudCArPSAxO1xuICAgICAgICBjYW5jZWxTY2hlZHVsZWRDbG9zZSgpO1xuICAgIH0sIFttZXJnZWRPcGVuLCBjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuICAgIGNvbnN0IGhhbmRsZVNob3cgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVIaWRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGNhbmNlbFNjaGVkdWxlZENsb3NlKCk7XG4gICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgIH0pO1xuICAgIC8vIFByb3BhZ2F0ZSB0aGUgY29uc3VtZXIncyByZXR1cm4gdmFsdWUg4oCUIFByb0Zvcm0gZ2F0ZXMgVVJMIHN5bmMgb24gaXQsXG4gICAgLy8gYW5kIGF1dG9DbG9zZSBob25vcnMgaXQgdG9vOiBhbiBleHBsaWNpdCBgZmFsc2VgIG1lYW5zIHRoZSBzdWJtaXQgRkFJTEVELFxuICAgIC8vIHNvIHRoZSBvdmVybGF5IHN0YXlzIG9wZW4gaW5zdGVhZCBvZiBkaXNjYXJkaW5nIHRoZSB1c2VyJ3MgaW5wdXQuXG4gICAgY29uc3QgaGFuZGxlRmluaXNoID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWVzKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBzZXNzaW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIChvbkZpbmlzaCA9PT0gbnVsbCB8fCBvbkZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2godmFsdWVzKSk7XG4gICAgICAgIGlmIChhdXRvQ2xvc2UgJiYgcmVzdWx0ICE9PSBmYWxzZSAmJiBzZXNzaW9uID09PSBzZXNzaW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlmIChzdWJtaXRUaW1lb3V0ICYmIHN1Ym1pdFRpbWVvdXQgPiAwKSB7XG4gICAgICAgICAgICAgICAgc2NoZWR1bGVDbG9zZShzZXNzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkpO1xuICAgIC8vIENsb25lIHRyaWdnZXIgd2l0aCBvbkNsaWNrIGhhbmRsZXJcbiAgICBjb25zdCB0cmlnZ2VyTm9kZSA9IHRyaWdnZXJcbiAgICAgICAgPyBSZWFjdC5jbG9uZUVsZW1lbnQodHJpZ2dlciwge1xuICAgICAgICAgICAgb25DbGljazogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2hvdygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsT25DbGljayA9IChfYSA9IHRyaWdnZXIucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNsaWNrO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxPbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsT25DbGljayguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWVyZ2VkT3BlbixcbiAgICAgICAgdHJpZ2dlck5vZGUsXG4gICAgICAgIGhhbmRsZUZpbmlzaCxcbiAgICAgICAgaGFuZGxlSGlkZSxcbiAgICAgICAgaGFuZGxlU2hvdyxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlT3ZlcmxheUZvcm07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -25,14 +25,8 @@
25
25
  }
26
26
 
27
27
  .om-component-ui-form-item {
28
- margin-bottom: var(--om-spacing-300, 12px);
29
- }
30
- .om-component-ui-form-item-large {
31
28
  margin-bottom: var(--om-spacing-600, 24px);
32
29
  }
33
- .om-component-ui-form-item-small {
34
- margin-bottom: var(--om-spacing-200, 8px);
35
- }
36
30
 
37
31
  .om-component-ui-form-item-label-wrapper-vertical {
38
32
  margin-bottom: var(--om-spacing-200, 8px);
@@ -72,7 +66,6 @@
72
66
  display: flex;
73
67
  gap: var(--om-spacing-200, 8px);
74
68
  align-items: center;
75
- padding-top: var(--om-spacing-300, 12px);
76
69
  }
77
70
 
78
71
  .om-component-ui-proform-list {