@1money/component-ui 0.0.42-alpha.1 → 0.0.42-alpha.2

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.
@@ -9,16 +9,24 @@ var __rest = this && this.__rest || function (s, e) {
9
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
10
  import Trigger from '../Trigger';
11
11
  import './style';
12
+ function withHeightDefault(animation) {
13
+ if (animation === false) return false;
14
+ return Object.assign({
15
+ kind: 'height'
16
+ }, animation !== null && animation !== void 0 ? animation : {});
17
+ }
12
18
  var Dropdown = function Dropdown(_a) {
13
19
  var _a$trigger = _a.trigger,
14
20
  trigger = _a$trigger === void 0 ? 'click' : _a$trigger,
15
21
  _a$role = _a.role,
16
22
  role = _a$role === void 0 ? 'dialog' : _a$role,
17
- rest = __rest(_a, ["trigger", "role"]);
23
+ animation = _a.animation,
24
+ rest = __rest(_a, ["trigger", "role", "animation"]);
18
25
  return _jsx(Trigger, Object.assign({
19
26
  trigger: trigger,
20
- role: role
27
+ role: role,
28
+ animation: withHeightDefault(animation)
21
29
  }, rest));
22
30
  };
23
31
  export default Dropdown;
24
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJUcmlnZ2VyIiwiRHJvcGRvd24iLCJfYSIsIl9hJHRyaWdnZXIiLCJ0cmlnZ2VyIiwiX2Ekcm9sZSIsInJvbGUiLCJyZXN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0csQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQztFQUN6QjtFQUNKLE9BQU9SLENBQUM7QUFDWixDQUFDO0FBQ0QsU0FBU1csR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FDWC9DLE9BQU9DLE9BQU8sTUFBTSxZQUFZO0FBR2hDLE9BQU8sU0FBUztBQUVoQixJQUFNQyxRQUFRLEdBQXNCLFNBQTlCQSxRQUFRQSxDQUF1QkMsRUFJcEMsRUFBSTtFRE1ELElBQUFDLFVBQUEsR0NSYUQsRUFFaEIsQ0FIQ0UsT0FBTztJQUFQQSxPQUFPLEdBQUFELFVBQUEsY0FBRyxPQUFPLEdBQUFBLFVBQUE7SUFBQUUsT0FBQSxHQUNGSCxFQUVoQixDQUZDSSxJQUFJO0lBQUpBLElBQUksR0FBQUQsT0FBQSxjQUFHLFFBQVEsR0FBQUEsT0FBQTtJQUNaRSxJQUFJLEdBQUF2QixNQUFBLENBQUFrQixFQUFBLEVBSDRCLENBQUEsU0FBQSxFQUFBLE1BQUEsQ0FJcEMsQ0FEUTtFQUNILE9BQUFILElBQUEsQ0FBQ0MsT0FBTyxFQUFBWCxNQUFBLENBQUFtQixNQUFBLENBQUE7SUFBQ0osT0FBTyxFQUFFQSxPQUFPO0lBQUVFLElBQUksRUFBRUE7RUFBSSxDQUFBLEVBQU1DLElBQUksQ0FBQSxDQUFJO0FEUXpELENDUnlEO0FBRXpELGVBQWVOLFFBQVEiLCJmaWxlIjoiY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgVHJpZ2dlciBmcm9tICcuLi9UcmlnZ2VyJztcbmltcG9ydCAnLi9zdHlsZSc7XG5jb25zdCBEcm9wZG93biA9IChfYSkgPT4ge1xuICAgIHZhciB7IHRyaWdnZXIgPSAnY2xpY2snLCByb2xlID0gJ2RpYWxvZycgfSA9IF9hLCByZXN0ID0gX19yZXN0KF9hLCBbXCJ0cmlnZ2VyXCIsIFwicm9sZVwiXSk7XG4gICAgcmV0dXJuIF9qc3goVHJpZ2dlciwgT2JqZWN0LmFzc2lnbih7IHRyaWdnZXI6IHRyaWdnZXIsIHJvbGU6IHJvbGUgfSwgcmVzdCkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
32
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duLnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJUcmlnZ2VyIiwid2l0aEhlaWdodERlZmF1bHQiLCJhbmltYXRpb24iLCJhc3NpZ24iLCJraW5kIiwiRHJvcGRvd24iLCJfYSIsIl9hJHRyaWdnZXIiLCJ0cmlnZ2VyIiwiX2Ekcm9sZSIsInJvbGUiLCJyZXN0Il0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0csQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQztFQUN6QjtFQUNKLE9BQU9SLENBQUM7QUFDWixDQUFDO0FBQ0QsU0FBU1csR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FDWC9DLE9BQU9DLE9BQU8sTUFBTSxZQUFZO0FBSWhDLE9BQU8sU0FBUztBQUVoQixTQUFTQyxpQkFBaUJBLENBQUNDLFNBQXdDLEVBQUE7RUFDakUsSUFBSUEsU0FBUyxLQUFLLEtBQUssRUFBRSxPQUFPLEtBQUs7RUFDckMsT0FBQWIsTUFBQSxDQUFBYyxNQUFBLENBQUE7SUFBU0MsSUFBSSxFQUFFO0VBQVEsQ0FBQSxFQUFNRixTQUFTLEtBQUEsSUFBQSxJQUFUQSxTQUFTLEtBQUEsS0FBQSxDQUFBLEdBQVRBLFNBQVMsR0FBSSxDQUFBLENBQUcsQ0FBQTtBQUMvQztBQUVBLElBQU1HLFFBQVEsR0FBc0IsU0FBOUJBLFFBQVFBLENBQXVCQyxFQUtwQyxFQUFJO0VESUQsSUFBQUMsVUFBQSxHQ05PRCxFQUVWLENBSkNFLE9BQU87SUFBUEEsT0FBTyxHQUFBRCxVQUFBLGNBQUcsT0FBTyxHQUFBQSxVQUFBO0lBQUFFLE9BQUEsR0FFUkgsRUFFVixDQUhDSSxJQUFJO0lBQUpBLElBQUksR0FBQUQsT0FBQSxjQUFHLFFBQVEsR0FBQUEsT0FBQTtJQUNmUCxTQUFTLEdBQUFJLEVBRVYsQ0FGQ0osU0FBUztJQUNOUyxJQUFJLEdBQUEzQixNQUFBLENBQUFzQixFQUFBLEVBSjRCLENBQUEsU0FBQSxFQUFBLE1BQUEsRUFBQSxXQUFBLENBS3BDLENBRFE7RUFDSCxPQUNKUCxJQUFBLENBQUNDLE9BQU8sRUFBQVgsTUFBQSxDQUFBYyxNQUFBLENBQUE7SUFDTkssT0FBTyxFQUFFQSxPQUFPO0lBQ2hCRSxJQUFJLEVBQUVBLElBQUk7SUFDVlIsU0FBUyxFQUFFRCxpQkFBaUIsQ0FBQ0MsU0FBUztFQUFDLENBQUEsRUFDbkNTLElBQUksQ0FBQSxDQUNSO0FEQUosQ0NDQztBQUVELGVBQWVOLFFBQVEiLCJmaWxlIjoiY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgVHJpZ2dlciBmcm9tICcuLi9UcmlnZ2VyJztcbmltcG9ydCAnLi9zdHlsZSc7XG5mdW5jdGlvbiB3aXRoSGVpZ2h0RGVmYXVsdChhbmltYXRpb24pIHtcbiAgICBpZiAoYW5pbWF0aW9uID09PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHsga2luZDogJ2hlaWdodCcgfSwgKGFuaW1hdGlvbiAhPT0gbnVsbCAmJiBhbmltYXRpb24gIT09IHZvaWQgMCA/IGFuaW1hdGlvbiA6IHt9KSk7XG59XG5jb25zdCBEcm9wZG93biA9IChfYSkgPT4ge1xuICAgIHZhciB7IHRyaWdnZXIgPSAnY2xpY2snLCByb2xlID0gJ2RpYWxvZycsIGFuaW1hdGlvbiB9ID0gX2EsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInRyaWdnZXJcIiwgXCJyb2xlXCIsIFwiYW5pbWF0aW9uXCJdKTtcbiAgICByZXR1cm4gKF9qc3goVHJpZ2dlciwgT2JqZWN0LmFzc2lnbih7IHRyaWdnZXI6IHRyaWdnZXIsIHJvbGU6IHJvbGUsIGFuaW1hdGlvbjogd2l0aEhlaWdodERlZmF1bHQoYW5pbWF0aW9uKSB9LCByZXN0KSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -7,6 +7,7 @@ import { Icons } from '../Icons';
7
7
  import { Spinner } from '../Spinner';
8
8
  import { TypographyBody, TypographyLabel } from '../Typography';
9
9
  import { joinCls, default as rootClassnames } from '../../utils/classnames';
10
+ import { useFloatingAnimation } from '../../hooks/useFloatingAnimation';
10
11
  import SelectFieldShell from './SelectFieldShell';
11
12
  import SelectOptionContent from './SelectOptionContent';
12
13
  import SelectSearchControl from './SelectSearchControl';
@@ -74,6 +75,7 @@ export var Select = function Select(props) {
74
75
  optionClassName = props.optionClassName,
75
76
  _props$listMaxHeight = props.listMaxHeight,
76
77
  listMaxHeight = _props$listMaxHeight === void 0 ? DEFAULT_MAX_HEIGHT : _props$listMaxHeight,
78
+ animation = props.animation,
77
79
  onChange = props.onChange,
78
80
  onOpenChange = props.onOpenChange,
79
81
  onSearchChange = props.onSearchChange,
@@ -151,6 +153,7 @@ export var Select = function Select(props) {
151
153
  onOpenChange: handleOpenChange,
152
154
  placement: 'bottom-start',
153
155
  whileElementsMounted: autoUpdate,
156
+ transform: false,
154
157
  middleware: [offset(0), flip({
155
158
  padding: 8
156
159
  }), shift({
@@ -170,7 +173,16 @@ export var Select = function Select(props) {
170
173
  }),
171
174
  refs = _useFloating.refs,
172
175
  floatingStyles = _useFloating.floatingStyles,
173
- context = _useFloating.context;
176
+ context = _useFloating.context,
177
+ resolvedPlacement = _useFloating.placement;
178
+ var resolvedAnimation = useMemo(function () {
179
+ return animation === false ? false : Object.assign({
180
+ kind: 'height'
181
+ }, animation !== null && animation !== void 0 ? animation : {});
182
+ }, [animation]);
183
+ var _useFloatingAnimation = useFloatingAnimation(context, resolvedPlacement, resolvedAnimation),
184
+ isMounted = _useFloatingAnimation.isMounted,
185
+ transitionStyles = _useFloatingAnimation.styles;
174
186
  var setReference = useEventCallback(function (node) {
175
187
  refs.setReference(node);
176
188
  handleTriggerRef(node);
@@ -476,7 +488,7 @@ export var Select = function Select(props) {
476
488
  color: "currentColor"
477
489
  })
478
490
  })]
479
- })), innerOpen && !disabled && function () {
491
+ })), isMounted && !disabled && function () {
480
492
  var panelNode = _jsx(FloatingFocusManager, {
481
493
  context: context,
482
494
  modal: false,
@@ -485,7 +497,7 @@ export var Select = function Select(props) {
485
497
  children: _jsxs("div", Object.assign({}, getFloatingProps({
486
498
  ref: setFloating,
487
499
  className: joinCls(classes('panel'), panelClassName),
488
- style: floatingStyles
500
+ style: Object.assign(Object.assign({}, floatingStyles), transitionStyles)
489
501
  }), {
490
502
  children: [searchable && _jsx(SelectSearchControl, {
491
503
  ref: searchInputRef,
@@ -572,4 +584,4 @@ export var Select = function Select(props) {
572
584
  };
573
585
  Select.displayName = 'Select';
574
586
  export default /*#__PURE__*/memo(Select);
575
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsImF1dG9VcGRhdGUiLCJmbGlwIiwiRmxvYXRpbmdGb2N1c01hbmFnZXIiLCJGbG9hdGluZ1BvcnRhbCIsIm9mZnNldCIsInNoaWZ0Iiwic2l6ZSIsImZsb2F0aW5nU2l6ZSIsInVzZUNsaWNrIiwidXNlRGlzbWlzcyIsInVzZUZsb2F0aW5nIiwidXNlSW50ZXJhY3Rpb25zIiwidXNlTGlzdE5hdmlnYXRpb24iLCJ1c2VSb2xlIiwidXNlVHlwZWFoZWFkIiwibWVtbyIsInVzZUVmZmVjdCIsInVzZUlkIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwidXNlRXZlbnRDYWxsYmFjayIsIkljb25zIiwiU3Bpbm5lciIsIlR5cG9ncmFwaHlCb2R5IiwiVHlwb2dyYXBoeUxhYmVsIiwiam9pbkNscyIsImRlZmF1bHQiLCJyb290Q2xhc3NuYW1lcyIsIlNlbGVjdEZpZWxkU2hlbGwiLCJTZWxlY3RPcHRpb25Db250ZW50IiwiU2VsZWN0U2VhcmNoQ29udHJvbCIsIlNlbGVjdFZhbHVlQ29udGVudCIsIktFWUJPQVJEIiwiU0VMRUNUX1RZUE9HUkFQSFkiLCJleHRyYWN0T3B0aW9uVGV4dCIsImZpbHRlck9wdGlvbkdyb3VwcyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJnZXRNdWx0aXBsZVZhbHVlIiwiZ2V0T3B0aW9uc0J5VmFsdWVzIiwiZ2V0U2VsZWN0ZWRPcHRpb25zIiwiaXNPcHRpb25TZWxlY3RlZCIsIm5vcm1hbGl6ZVNpemUiLCJub3JtYWxpemVPcHRpb25Hcm91cHMiLCJyZW1vdmVNdWx0aXBsZVZhbHVlIiwidG9nZ2xlTXVsdGlwbGVWYWx1ZSIsIkRFRkFVTFRfTUFYX0hFSUdIVCIsIlNlbGVjdCIsInByb3BzIiwiX3Byb3BzJGNsYXNzTmFtZSIsImNsYXNzTmFtZSIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJzdHlsZSIsImlkIiwibmFtZSIsImFyaWFMYWJlbCIsImFyaWFMYWJlbGxlZEJ5IiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcHJvcHMkb3B0aW9ucyIsIm9wdGlvbnMiLCJ2YWx1ZSIsImRlZmF1bHRWYWx1ZSIsIl9wcm9wcyRzaXplIiwiX3Byb3BzJHN0YXR1cyIsInN0YXR1cyIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwiZGlzYWJsZWRQcm9wIiwiX3Byb3BzJGxvYWRpbmciLCJsb2FkaW5nIiwiX3Byb3BzJG11bHRpcGxlIiwibXVsdGlwbGUiLCJtYXhWaXNpYmxlVmFsdWVzIiwiX3Byb3BzJHNlYXJjaGFibGUiLCJzZWFyY2hhYmxlIiwiX3Byb3BzJHNlYXJjaFBsYWNlaG9sIiwic2VhcmNoUGxhY2Vob2xkZXIiLCJzZWFyY2hWYWx1ZSIsIl9wcm9wcyRkZWZhdWx0U2VhcmNoViIsImRlZmF1bHRTZWFyY2hWYWx1ZSIsImxhYmVsIiwiaW5mbyIsImRlc2NyaXB0aW9uIiwiZmVlZGJhY2siLCJfcHJvcHMkcmVxdWlyZWQiLCJyZXF1aXJlZCIsInByZWZpeCIsIl9wcm9wcyRlbXB0eUNvbnRlbnQiLCJlbXB0eUNvbnRlbnQiLCJwYW5lbEZvb3RlciIsIm9wZW4iLCJfcHJvcHMkZGVmYXVsdE9wZW4iLCJkZWZhdWx0T3BlbiIsIl9wcm9wcyRwb3J0YWwiLCJwb3J0YWwiLCJfcHJvcHMkYWxsb3dEZXNlbGVjdCIsImFsbG93RGVzZWxlY3QiLCJfcHJvcHMkY2xlYXJhYmxlIiwiY2xlYXJhYmxlIiwicGFuZWxDbGFzc05hbWUiLCJvcHRpb25DbGFzc05hbWUiLCJfcHJvcHMkbGlzdE1heEhlaWdodCIsImxpc3RNYXhIZWlnaHQiLCJvbkNoYW5nZSIsIm9uT3BlbkNoYW5nZSIsIm9uU2VhcmNoQ2hhbmdlIiwib25CbHVyIiwiZmlsdGVyT3B0aW9uIiwicmVuZGVyT3B0aW9uIiwicmVuZGVyVmFsdWUiLCJyZWYiLCJjbGFzc2VzIiwiYXV0b0lkIiwidHJpZ2dlcklkIiwibGFiZWxJZCIsImRlc2NyaXB0aW9uSWQiLCJmZWVkYmFja0lkIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsInVuZGVmaW5lZCIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpbm5lclZhbHVlIiwic2V0SW5uZXJWYWx1ZSIsIl91c2VDb250cm9sbGVkU3RhdGUzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTQiLCJpbm5lck9wZW4iLCJzZXRJbm5lck9wZW4iLCJfdXNlQ29udHJvbGxlZFN0YXRlNSIsIl91c2VDb250cm9sbGVkU3RhdGU2IiwiaW5uZXJTZWFyY2hWYWx1ZSIsInNldElubmVyU2VhcmNoVmFsdWUiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsIm5vcm1hbGl6ZWRTaXplIiwiYWxsT3B0aW9uR3JvdXBzIiwiYWxsRmxhdE9wdGlvbnMiLCJ2aXNpYmxlT3B0aW9uR3JvdXBzIiwidmlzaWJsZUZsYXRPcHRpb25zIiwic2VsZWN0ZWRPcHRpb25zIiwic2VsZWN0ZWRJbmRleCIsImxlbmd0aCIsIm1hdGNoZWRJbmRleCIsImZpbmRJbmRleCIsIm9wdGlvbiIsImhhc1NlbGVjdGlvbiIsImxpc3RSZWYiLCJsaXN0Q29udGVudFJlZiIsImZsb2F0aW5nUmVmIiwidHJpZ2dlclJlZiIsInNlYXJjaElucHV0UmVmIiwiaGFuZGxlVHJpZ2dlclJlZiIsIm5vZGUiLCJjdXJyZW50IiwiaGFuZGxlT3BlbkNoYW5nZSIsIm5leHRPcGVuIiwiX3VzZUZsb2F0aW5nIiwicGxhY2VtZW50Iiwid2hpbGVFbGVtZW50c01vdW50ZWQiLCJtaWRkbGV3YXJlIiwicGFkZGluZyIsImFwcGx5IiwiX3JlZiIsInJlY3RzIiwiZWxlbWVudHMiLCJhdmFpbGFibGVIZWlnaHQiLCJuZXh0TWF4SGVpZ2h0IiwiTWF0aCIsIm1heCIsIm1pbiIsIk9iamVjdCIsImFzc2lnbiIsImZsb2F0aW5nIiwid2lkdGgiLCJjb25jYXQiLCJyZWZlcmVuY2UiLCJtYXhIZWlnaHQiLCJyZWZzIiwiZmxvYXRpbmdTdHlsZXMiLCJjb250ZXh0Iiwic2V0UmVmZXJlbmNlIiwic2V0RmxvYXRpbmciLCJjbGljayIsImVuYWJsZWQiLCJkaXNtaXNzIiwib3V0c2lkZVByZXNzRXZlbnQiLCJyb2xlIiwibGlzdE5hdmlnYXRpb24iLCJvbk5hdmlnYXRlIiwibG9vcCIsInR5cGVhaGVhZCIsIm9uTWF0Y2giLCJfdXNlSW50ZXJhY3Rpb25zIiwiZ2V0UmVmZXJlbmNlUHJvcHMiLCJnZXRGbG9hdGluZ1Byb3BzIiwiZ2V0SXRlbVByb3BzIiwiZmlyc3RFbmFibGVkSW5kZXgiLCJsYXN0RW5hYmxlZEluZGV4IiwiX2EiLCJpbmRleCIsInByZXYiLCJmb2N1cyIsInByZXZlbnRTY3JvbGwiLCJzbGljZSIsIm5vdGlmeUJsdXJJZk91dHNpZGUiLCJyZWxhdGVkVGFyZ2V0IiwiZXZlbnQiLCJfYiIsIm5leHRUYXJnZXQiLCJ3aXRoaW5UcmlnZ2VyIiwiY29udGFpbnMiLCJ3aXRoaW5GbG9hdGluZyIsImhhbmRsZVRyaWdnZXJCbHVyIiwiaGFuZGxlT3B0aW9uQmx1ciIsImNvbW1pdENoYW5nZSIsIm5leHRWYWx1ZSIsIm5leHRPcHRpb24iLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJuZXh0T3B0aW9ucyIsImhhbmRsZUNsZWFyIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlIiwib3B0aW9uVmFsdWUiLCJpbmNsdWRlcyIsImhhbmRsZVRyaWdnZXJLZXlEb3duIiwia2V5IiwiRU5URVIiLCJTUEFDRSIsIkFSUk9XX0RPV04iLCJBUlJPV19VUCIsImhhbmRsZUl0ZW1Nb3VzZUVudGVyIiwiaGFuZGxlVGFnUmVtb3ZlTW91c2VEb3duIiwiaGFuZGxlVGFnUmVtb3ZlQ2xpY2siLCJoYW5kbGVTZWFyY2hCbHVyIiwiaGFuZGxlU2VhcmNoQ2hhbmdlIiwiX2V2ZW50IiwiaGFuZGxlU2VhcmNoS2V5RG93biIsIl9jIiwiRVNDQVBFIiwicmVuZGVyVmFsdWVNZXRhIiwidmFsdWVMYWJlbENsYXNzIiwiaXNNdWx0aXBsZVZhbHVlRmlsbGVkIiwidHJpZ2dlckNsYXNzTmFtZSIsImljb25TaXplIiwiZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSIsImRlc2NyaWJlZEJ5SWRzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJjaGlsZHJlbiIsInR5cGUiLCJvbktleURvd24iLCJvblJlbW92ZSIsIm9uUmVtb3ZlQ2xpY2siLCJvblJlbW92ZU1vdXNlRG93biIsIm9uTW91c2VEb3duIiwib25DbGljayIsImNvbG9yIiwic3Ryb2tlV2lkdGgiLCJwYW5lbE5vZGUiLCJtb2RhbCIsImluaXRpYWxGb2N1cyIsInJldHVybkZvY3VzIiwiZW1wdHkiLCJmbGF0SW5kZXgiLCJtYXAiLCJncm91cCIsImdyb3VwTGFiZWwiLCJzdHJvbmciLCJvcHRpb25GbGF0SW5kZXgiLCJzZWxlY3RlZCIsImFjdGl2ZSIsIm9wdGlvbk1ldGEiLCJvbk1vdXNlRW50ZXIiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFBbUI7QUNBOUQsU0FDRUMsVUFBVSxFQUNWQyxJQUFJLEVBQ0pDLG9CQUFvQixFQUNwQkMsY0FBYyxFQUNkQyxNQUFNLEVBQ05DLEtBQUssRUFDTEMsSUFBSSxJQUFJQyxZQUFZLEVBQ3BCQyxRQUFRLEVBQ1JDLFVBQVUsRUFDVkMsV0FBVyxFQUNYQyxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsT0FBTyxFQUNQQyxZQUFZLFFBQ1Asb0JBQW9CO0FBQzNCLFNBQVNDLElBQUksRUFBRUMsU0FBUyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxR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QUEsQ0FDUCxDQUFDO1lBQ0osQ0FBQyxDQUFDO1VBQ0gsQ0FBQSxDQUNHLEVBQ0wxSSxXQUFXLElBQUksSUFBSSxJQUNsQmpHLElBQUEsQ0FBQSxLQUFBLEVBQUE7WUFBS3NELFNBQVMsRUFBRWlFLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFBQTRJLFFBQUEsRUFBR2xLO1VBQVcsQ0FBQSxDQUN0RDtRQUFBLENBQUEsQ0FBQTtNQUNHLENBQUEsQ0FFVDtNQUVELE9BQU9LLE1BQU0sR0FBR3RHLElBQUEsQ0FBQ00sY0FBYyxFQUFBO1FBQUE2UCxRQUFBLEVBQUVVO01BQVMsQ0FBQSxDQUFrQixHQUFHQSxTQUFTO0lBQzFFLENBQUMsQ0FBQyxDQUFFO0VBQUEsQ0FBQSxDQUNhO0FBRXZCLENBQUM7QUFFRDFOLE1BQU0sQ0FBQ3lPLFdBQVcsR0FBRyxRQUFRO0FBRTdCLDRCQUFlMVEsSUFBSSxDQUFDaUMsTUFBTSxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBhdXRvVXBkYXRlLCBmbGlwLCBGbG9hdGluZ0ZvY3VzTWFuYWdlciwgRmxvYXRpbmdQb3J0YWwsIG9mZnNldCwgc2hpZnQsIHNpemUgYXMgZmxvYXRpbmdTaXplLCB1c2VDbGljaywgdXNlRGlzbWlzcywgdXNlRmxvYXRpbmcsIHVzZUludGVyYWN0aW9ucywgdXNlTGlzdE5hdmlnYXRpb24sIHVzZVJvbGUsIHVzZVR5cGVhaGVhZCwgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VJZCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRyb2xsZWRTdGF0ZSwgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi9JY29ucyc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5Qm9keSwgVHlwb2dyYXBoeUxhYmVsIH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBqb2luQ2xzLCBkZWZhdWx0IGFzIHJvb3RDbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgU2VsZWN0RmllbGRTaGVsbCBmcm9tICcuL1NlbGVjdEZpZWxkU2hlbGwnO1xuaW1wb3J0IFNlbGVjdE9wdGlvbkNvbnRlbnQgZnJvbSAnLi9TZWxlY3RPcHRpb25Db250ZW50JztcbmltcG9ydCBTZWxlY3RTZWFyY2hDb250cm9sIGZyb20gJy4vU2VsZWN0U2VhcmNoQ29udHJvbCc7XG5pbXBvcnQgU2VsZWN0VmFsdWVDb250ZW50IGZyb20gJy4vU2VsZWN0VmFsdWVDb250ZW50JztcbmltcG9ydCB7IEtFWUJPQVJELCBTRUxFQ1RfVFlQT0dSQVBIWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGV4dHJhY3RPcHRpb25UZXh0LCBmaWx0ZXJPcHRpb25Hcm91cHMsIGZsYXR0ZW5PcHRpb25Hcm91cHMsIGdldE11bHRpcGxlVmFsdWUsIGdldE9wdGlvbnNCeVZhbHVlcywgZ2V0U2VsZWN0ZWRPcHRpb25zLCBpc09wdGlvblNlbGVjdGVkLCBub3JtYWxpemVTaXplLCBub3JtYWxpemVPcHRpb25Hcm91cHMsIHJlbW92ZU11bHRpcGxlVmFsdWUsIHRvZ2dsZU11bHRpcGxlVmFsdWUsIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgREVGQVVMVF9NQVhfSEVJR0hUID0gMzIwO1xuZXhwb3J0IGNvbnN0IFNlbGVjdCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9ICdzZWxlY3QnLCBzdHlsZSwgaWQsIG5hbWUsICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLCAnYXJpYS1sYWJlbGxlZGJ5JzogYXJpYUxhYmVsbGVkQnksIHBsYWNlaG9sZGVyID0gJ1ZhbHVlJywgb3B0aW9ucyA9IFtdLCB2YWx1ZSwgZGVmYXVsdFZhbHVlLCBzaXplID0gJ2xhcmdlJywgc3RhdHVzID0gJ2RlZmF1bHQnLCB2YXJpYW50ID0gJ2ZpbGwnLCBkaXNhYmxlZDogZGlzYWJsZWRQcm9wID0gZmFsc2UsIGxvYWRpbmcgPSBmYWxzZSwgbXVsdGlwbGUgPSBmYWxzZSwgbWF4VmlzaWJsZVZhbHVlcywgc2VhcmNoYWJsZSA9IGZhbHNlLCBzZWFyY2hQbGFjZWhvbGRlciA9ICdTZWFyY2gnLCBzZWFyY2hWYWx1ZSwgZGVmYXVsdFNlYXJjaFZhbHVlID0gJycsIGxhYmVsLCBpbmZvLCBkZXNjcmlwdGlvbiwgZmVlZGJhY2ssIHJlcXVpcmVkID0gZmFsc2UsIHByZWZpeCwgZW1wdHlDb250ZW50ID0gJ05vIG9wdGlvbnMnLCBwYW5lbEZvb3Rlciwgb3BlbiwgZGVmYXVsdE9wZW4gPSBmYWxzZSwgcG9ydGFsID0gdHJ1ZSwgYWxsb3dEZXNlbGVjdCA9IGZhbHNlLCBjbGVhcmFibGUgPSBmYWxzZSwgcGFuZWxDbGFzc05hbWUsIG9wdGlvbkNsYXNzTmFtZSwgbGlzdE1heEhlaWdodCA9IERFRkFVTFRfTUFYX0hFSUdIVCwgb25DaGFuZ2UsIG9uT3BlbkNoYW5nZSwgb25TZWFyY2hDaGFuZ2UsIG9uQmx1ciwgZmlsdGVyT3B0aW9uLCByZW5kZXJPcHRpb24sIHJlbmRlclZhbHVlLCByZWYsIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaXNhYmxlZCA9IGRpc2FibGVkUHJvcCB8fCBsb2FkaW5nO1xuICAgIGNvbnN0IGNsYXNzZXMgPSByb290Q2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGF1dG9JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgdHJpZ2dlcklkID0gaWQgIT09IG51bGwgJiYgaWQgIT09IHZvaWQgMCA/IGlkIDogYXV0b0lkO1xuICAgIGNvbnN0IGxhYmVsSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGZlZWRiYWNrSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IFtpbm5lclZhbHVlLCBzZXRJbm5lclZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB2b2lkIDAgPyBkZWZhdWx0VmFsdWUgOiAobXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZCksIHZhbHVlKTtcbiAgICBjb25zdCBbaW5uZXJPcGVuLCBzZXRJbm5lck9wZW5dID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRPcGVuLCBvcGVuKTtcbiAgICBjb25zdCBbaW5uZXJTZWFyY2hWYWx1ZSwgc2V0SW5uZXJTZWFyY2hWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFNlYXJjaFZhbHVlLCBzZWFyY2hWYWx1ZSk7XG4gICAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBub3JtYWxpemVkU2l6ZSA9IG5vcm1hbGl6ZVNpemUoc2l6ZSk7XG4gICAgY29uc3QgYWxsT3B0aW9uR3JvdXBzID0gdXNlTWVtbygoKSA9PiBub3JtYWxpemVPcHRpb25Hcm91cHMob3B0aW9ucyksIFtvcHRpb25zXSk7XG4gICAgY29uc3QgYWxsRmxhdE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGZsYXR0ZW5PcHRpb25Hcm91cHMoYWxsT3B0aW9uR3JvdXBzKSwgW2FsbE9wdGlvbkdyb3Vwc10pO1xuICAgIGNvbnN0IHZpc2libGVPcHRpb25Hcm91cHMgPSB1c2VNZW1vKCgpID0+IChzZWFyY2hhYmxlXG4gICAgICAgID8gZmlsdGVyT3B0aW9uR3JvdXBzKGFsbE9wdGlvbkdyb3VwcywgaW5uZXJTZWFyY2hWYWx1ZSwgZmlsdGVyT3B0aW9uKVxuICAgICAgICA6IGFsbE9wdGlvbkdyb3VwcyksIFthbGxPcHRpb25Hcm91cHMsIGZpbHRlck9wdGlvbiwgaW5uZXJTZWFyY2hWYWx1ZSwgc2VhcmNoYWJsZV0pO1xuICAgIGNvbnN0IHZpc2libGVGbGF0T3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbk9wdGlvbkdyb3Vwcyh2aXNpYmxlT3B0aW9uR3JvdXBzKSwgW3Zpc2libGVPcHRpb25Hcm91cHNdKTtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGdldFNlbGVjdGVkT3B0aW9ucyhhbGxGbGF0T3B0aW9ucywgaW5uZXJWYWx1ZSwgbXVsdGlwbGUpLCBbYWxsRmxhdE9wdGlvbnMsIGlubmVyVmFsdWUsIG11bHRpcGxlXSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF0Y2hlZEluZGV4ID0gdmlzaWJsZUZsYXRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkT3B0aW9uc1swXS52YWx1ZSk7XG4gICAgICAgIHJldHVybiBtYXRjaGVkSW5kZXggPj0gMCA/IG1hdGNoZWRJbmRleCA6IG51bGw7XG4gICAgfSwgW3NlbGVjdGVkT3B0aW9ucywgdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgY29uc3QgaGFzU2VsZWN0aW9uID0gc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgbGlzdFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgbGlzdENvbnRlbnRSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IGZsb2F0aW5nUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2VhcmNoSW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlclJlZiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlT3BlbkNoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRPcGVuKSA9PiB7XG4gICAgICAgIHNldElubmVyT3BlbihuZXh0T3Blbik7XG4gICAgICAgIG9uT3BlbkNoYW5nZSA9PT0gbnVsbCB8fCBvbk9wZW5DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uT3BlbkNoYW5nZShuZXh0T3Blbik7XG4gICAgfSk7XG4gICAgY29uc3QgeyByZWZzLCBmbG9hdGluZ1N0eWxlcywgY29udGV4dCwgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICAgICAgb3BlbjogaW5uZXJPcGVuLFxuICAgICAgICBvbk9wZW5DaGFuZ2U6IGhhbmRsZU9wZW5DaGFuZ2UsXG4gICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gICAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICAgICAgICBtaWRkbGV3YXJlOiBbXG4gICAgICAgICAgICBvZmZzZXQoMCksXG4gICAgICAgICAgICBmbGlwKHsgcGFkZGluZzogOCB9KSxcbiAgICAgICAgICAgIHNoaWZ0KHsgcGFkZGluZzogOCB9KSxcbiAgICAgICAgICAgIGZsb2F0aW5nU2l6ZSh7XG4gICAgICAgICAgICAgICAgYXBwbHkoeyByZWN0cywgZWxlbWVudHMsIGF2YWlsYWJsZUhlaWdodCB9KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRNYXhIZWlnaHQgPSBNYXRoLm1heCgxMjAsIE1hdGgubWluKGxpc3RNYXhIZWlnaHQsIGF2YWlsYWJsZUhlaWdodCkpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnRzLmZsb2F0aW5nLnN0eWxlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYCR7cmVjdHMucmVmZXJlbmNlLndpZHRofXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogYCR7bmV4dE1heEhlaWdodH1weGAsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICB9KTtcbiAgICBjb25zdCBzZXRSZWZlcmVuY2UgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0UmVmZXJlbmNlKG5vZGUpO1xuICAgICAgICBoYW5kbGVUcmlnZ2VyUmVmKG5vZGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZsb2F0aW5nID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICByZWZzLnNldEZsb2F0aW5nKG5vZGUpO1xuICAgICAgICBmbG9hdGluZ1JlZi5jdXJyZW50ID0gbm9kZTtcbiAgICB9KTtcbiAgICBjb25zdCBjbGljayA9IHVzZUNsaWNrKGNvbnRleHQsIHsgZW5hYmxlZDogIWRpc2FibGVkIH0pO1xuICAgIGNvbnN0IGRpc21pc3MgPSB1c2VEaXNtaXNzKGNvbnRleHQsIHsgZW5hYmxlZDogIWRpc2FibGVkLCBvdXRzaWRlUHJlc3NFdmVudDogJ21vdXNlZG93bicgfSk7XG4gICAgY29uc3Qgcm9sZSA9IHVzZVJvbGUoY29udGV4dCwgeyByb2xlOiAnc2VsZWN0JyB9KTtcbiAgICBjb25zdCBsaXN0TmF2aWdhdGlvbiA9IHVzZUxpc3ROYXZpZ2F0aW9uKGNvbnRleHQsIHtcbiAgICAgICAgbGlzdFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIG9uTmF2aWdhdGU6IHNldEFjdGl2ZUluZGV4LFxuICAgICAgICBlbmFibGVkOiBpbm5lck9wZW4sXG4gICAgICAgIGxvb3A6IHRydWUsXG4gICAgfSk7XG4gICAgY29uc3QgdHlwZWFoZWFkID0gdXNlVHlwZWFoZWFkKGNvbnRleHQsIHtcbiAgICAgICAgbGlzdFJlZjogbGlzdENvbnRlbnRSZWYsXG4gICAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICBlbmFibGVkOiBpbm5lck9wZW4gJiYgIXNlYXJjaGFibGUsXG4gICAgICAgIG9uTWF0Y2g6IHNldEFjdGl2ZUluZGV4LFxuICAgIH0pO1xuICAgIGNvbnN0IHsgZ2V0UmVmZXJlbmNlUHJvcHMsIGdldEZsb2F0aW5nUHJvcHMsIGdldEl0ZW1Qcm9wcyB9ID0gdXNlSW50ZXJhY3Rpb25zKFtcbiAgICAgICAgY2xpY2ssXG4gICAgICAgIGRpc21pc3MsXG4gICAgICAgIHJvbGUsXG4gICAgICAgIGxpc3ROYXZpZ2F0aW9uLFxuICAgICAgICB0eXBlYWhlYWQsXG4gICAgXSk7XG4gICAgY29uc3QgZmlyc3RFbmFibGVkSW5kZXggPSB1c2VNZW1vKCgpID0+IHZpc2libGVGbGF0T3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gIW9wdGlvbi5kaXNhYmxlZCksIFt2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICBjb25zdCBsYXN0RW5hYmxlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXggLT0gMSkge1xuICAgICAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2luZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9LCBbdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4pIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEFjdGl2ZUluZGV4KChwcmV2KSA9PiB7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCAmJiB2aXNpYmxlRmxhdE9wdGlvbnNbcHJldl0gJiYgIXZpc2libGVGbGF0T3B0aW9uc1twcmV2XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW3NlbGVjdGVkSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RFbmFibGVkSW5kZXggPj0gMCA/IGZpcnN0RW5hYmxlZEluZGV4IDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfSwgW2ZpcnN0RW5hYmxlZEluZGV4LCBpbm5lck9wZW4sIHNlbGVjdGVkSW5kZXgsIHZpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4gfHwgYWN0aXZlSW5kZXggPT09IG51bGwgfHwgc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudFthY3RpdmVJbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSwgW2FjdGl2ZUluZGV4LCBpbm5lck9wZW4sIHNlYXJjaGFibGVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsaXN0UmVmLmN1cnJlbnQgPSBsaXN0UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgICAgIGxpc3RDb250ZW50UmVmLmN1cnJlbnQgPSBsaXN0Q29udGVudFJlZi5jdXJyZW50LnNsaWNlKDAsIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGgpO1xuICAgIH0sIFt2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaW5uZXJPcGVuICYmIHNlYXJjaGFibGUpIHtcbiAgICAgICAgICAgIChfYSA9IHNlYXJjaElucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9LCBbaW5uZXJPcGVuLCBzZWFyY2hhYmxlXSk7XG4gICAgY29uc3Qgbm90aWZ5Qmx1cklmT3V0c2lkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHJlbGF0ZWRUYXJnZXQsIGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IG5leHRUYXJnZXQgPSByZWxhdGVkVGFyZ2V0O1xuICAgICAgICBjb25zdCB3aXRoaW5UcmlnZ2VyID0gISEobmV4dFRhcmdldCAmJiAoKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgY29uc3Qgd2l0aGluRmxvYXRpbmcgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2IgPSBmbG9hdGluZ1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgaWYgKCF3aXRoaW5UcmlnZ2VyICYmICF3aXRoaW5GbG9hdGluZykge1xuICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlT3B0aW9uQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbW1pdENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRWYWx1ZSwgbmV4dE9wdGlvbikgPT4ge1xuICAgICAgICBzZXRJbm5lclZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb24pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvbikgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAob3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0b2dnbGVNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dEZXNlbGVjdCAmJiBpbm5lclZhbHVlID09PSBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZSh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbW1pdENoYW5nZShvcHRpb24udmFsdWUsIG9wdGlvbik7XG4gICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKTtcbiAgICAgICAgKF9iID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUNsZWFyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgY29tbWl0Q2hhbmdlKFtdLCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb21taXRDaGFuZ2UodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvblZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWdldE11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSkuaW5jbHVkZXMob3B0aW9uVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gcmVtb3ZlTXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlLCBvcHRpb25WYWx1ZSk7XG4gICAgICAgIGNvbnN0IG5leHRPcHRpb25zID0gZ2V0T3B0aW9uc0J5VmFsdWVzKGFsbEZsYXRPcHRpb25zLCBuZXh0VmFsdWUpO1xuICAgICAgICBjb21taXRDaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlcktleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FTlRFUiB8fCBldmVudC5rZXkgPT09IEtFWUJPQVJELlNQQUNFKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSghaW5uZXJPcGVuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19ET1dOIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfVVApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoIWlubmVyT3Blbikge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVJdGVtTW91c2VFbnRlciA9IHVzZUV2ZW50Q2FsbGJhY2soKGluZGV4KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2luZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlTW91c2VEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVGFnUmVtb3ZlQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFZhbHVlLCBfZXZlbnQpID0+IHtcbiAgICAgICAgc2V0SW5uZXJTZWFyY2hWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgICBvblNlYXJjaENoYW5nZSA9PT0gbnVsbCB8fCBvblNlYXJjaENoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWFyY2hDaGFuZ2UobmV4dFZhbHVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04gJiYgZmlyc3RFbmFibGVkSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KGZpcnN0RW5hYmxlZEluZGV4KTtcbiAgICAgICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudFtmaXJzdEVuYWJsZWRJbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfVVAgJiYgbGFzdEVuYWJsZWRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KGxhc3RFbmFibGVkSW5kZXgpO1xuICAgICAgICAgICAgKF9iID0gbGlzdFJlZi5jdXJyZW50W2xhc3RFbmFibGVkSW5kZXhdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVTQ0FQRSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgKF9jID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgcmVuZGVyVmFsdWVNZXRhID0ge1xuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIG1heFZpc2libGVWYWx1ZXMsXG4gICAgICAgIG9wZW46IGlubmVyT3BlbixcbiAgICAgICAgcGxhY2Vob2xkZXI6ICFoYXNTZWxlY3Rpb24sXG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucyxcbiAgICB9O1xuICAgIGNvbnN0IHZhbHVlTGFiZWxDbGFzcyA9IGhhc1NlbGVjdGlvbiA/ICd2YWx1ZScgOiAncGxhY2Vob2xkZXInO1xuICAgIGNvbnN0IGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCA9IChtdWx0aXBsZSAmJlxuICAgICAgICBoYXNTZWxlY3Rpb24gJiZcbiAgICAgICAgbWF4VmlzaWJsZVZhbHVlcyA9PT0gdW5kZWZpbmVkKTtcbiAgICBjb25zdCB0cmlnZ2VyQ2xhc3NOYW1lID0gY2xhc3NlcygndHJpZ2dlcicsIGpvaW5DbHMoY2xhc3NlcyhgdHJpZ2dlci0ke25vcm1hbGl6ZWRTaXplfWApLCBjbGFzc2VzKGB0cmlnZ2VyLSR7dmFyaWFudH1gKSwgaW5uZXJPcGVuICYmIGNsYXNzZXMoJ3RyaWdnZXItb3BlbicpLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1tdWx0aXBsZS1maWxsZWQnKSwgaGFzU2VsZWN0aW9uID8gY2xhc3NlcygndHJpZ2dlci1maWxsZWQnKSA6IGNsYXNzZXMoJ3RyaWdnZXItcGxhY2Vob2xkZXInKSwgc3RhdHVzICE9PSAnZGVmYXVsdCcgJiYgY2xhc3NlcyhgdHJpZ2dlci0ke3N0YXR1c31gKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1kaXNhYmxlZCcpKSk7XG4gICAgY29uc3QgaWNvblNpemUgPSBub3JtYWxpemVkU2l6ZSA9PT0gJ3NtYWxsJyA/IDE2IDogMjA7XG4gICAgY29uc3QgZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSA9IGFyaWFMYWJlbGxlZEJ5ICE9PSBudWxsICYmIGFyaWFMYWJlbGxlZEJ5ICE9PSB2b2lkIDAgPyBhcmlhTGFiZWxsZWRCeSA6IChsYWJlbCA/IGxhYmVsSWQgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlc2NyaWJlZEJ5SWRzID0gW1xuICAgICAgICBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uSWQgOiBudWxsLFxuICAgICAgICBmZWVkYmFjayA/IGZlZWRiYWNrSWQgOiBudWxsLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB8fCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4cyhTZWxlY3RGaWVsZFNoZWxsLCB7IGNsYXNzZXM6IGNsYXNzZXMsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgdmFyaWFudDogdmFyaWFudCwgc3RhdHVzOiBzdGF0dXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgbG9hZGluZzogbG9hZGluZywgbGFiZWw6IGxhYmVsLCBpbmZvOiBpbmZvLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sIGZlZWRiYWNrOiBmZWVkYmFjaywgcmVxdWlyZWQ6IHJlcXVpcmVkLCBsYWJlbElkOiBsYWJlbElkLCBkZXNjcmlwdGlvbklkOiBkZXNjcmlwdGlvbklkLCBmZWVkYmFja0lkOiBmZWVkYmFja0lkLCBjaGlsZHJlbjogW19qc3hzKFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIGdldFJlZmVyZW5jZVByb3BzKHtcbiAgICAgICAgICAgICAgICByZWY6IHNldFJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgICBpZDogdHJpZ2dlcklkLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0cmlnZ2VyQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgIG9uS2V5RG93bjogaGFuZGxlVHJpZ2dlcktleURvd24sXG4gICAgICAgICAgICAgICAgb25CbHVyOiBoYW5kbGVUcmlnZ2VyQmx1cixcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSxcbiAgICAgICAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGRlc2NyaWJlZEJ5SWRzLFxuICAgICAgICAgICAgfSksIHsgY2hpbGRyZW46IFtfanN4cyhcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRlbnQnKSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcyh2YWx1ZUxhYmVsQ2xhc3MsIGpvaW5DbHMoY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LSR7bm9ybWFsaXplZFNpemV9YCksIGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCAmJiBjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tbXVsdGlwbGVgKSwgZGlzYWJsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LWRpc2FibGVkYCkpKSwgY2hpbGRyZW46IF9qc3goU2VsZWN0VmFsdWVDb250ZW50LCB7IGNsYXNzZXM6IGNsYXNzZXMsIGhhc1NlbGVjdGlvbjogaGFzU2VsZWN0aW9uLCBtdWx0aXBsZTogbXVsdGlwbGUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVuZGVyVmFsdWU6IHJlbmRlclZhbHVlLCByZW5kZXJWYWx1ZU1ldGE6IHJlbmRlclZhbHVlTWV0YSwgc2VsZWN0ZWRPcHRpb25zOiBzZWxlY3RlZE9wdGlvbnMsIG1heFZpc2libGVWYWx1ZXM6IG1heFZpc2libGVWYWx1ZXMsIG9uUmVtb3ZlOiBoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlLCBvblJlbW92ZUNsaWNrOiBoYW5kbGVUYWdSZW1vdmVDbGljaywgb25SZW1vdmVNb3VzZURvd246IGhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biB9KSB9KV0gfSksIGNsZWFyYWJsZSAmJiBoYXNTZWxlY3Rpb24gJiYgIWRpc2FibGVkICYmICFsb2FkaW5nICYmIChfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY2xlYXInKSwgcm9sZTogXCJidXR0b25cIiwgXCJhcmlhLWxhYmVsXCI6IFwiQ2xlYXJcIiwgb25Nb3VzZURvd246IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBvbkNsaWNrOiBoYW5kbGVDbGVhciwgY2hpbGRyZW46IF9qc3goSWNvbnMsIHsgbmFtZTogXCJjcm9zc1wiLCBzaXplOiBpY29uU2l6ZSwgY29sb3I6IFwiY3VycmVudENvbG9yXCIgfSkgfSkpLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnaWNvbicpLCBjaGlsZHJlbjogbG9hZGluZyA/IChfanN4KFNwaW5uZXIsIHsgc2l6ZTogaWNvblNpemUsIHN0cm9rZVdpZHRoOiAyIH0pKSA6IChfanN4KEljb25zLCB7IG5hbWU6IGlubmVyT3BlbiA/ICdjaGV2cm9uVXAnIDogJ2NoZXZyb25Eb3duJywgc2l6ZTogaWNvblNpemUsIGNvbG9yOiBcImN1cnJlbnRDb2xvclwiIH0pKSB9KV0gfSkpLCBpbm5lck9wZW4gJiYgIWRpc2FibGVkICYmICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxOb2RlID0gKF9qc3goRmxvYXRpbmdGb2N1c01hbmFnZXIsIHsgY29udGV4dDogY29udGV4dCwgbW9kYWw6IGZhbHNlLCBpbml0aWFsRm9jdXM6IC0xLCByZXR1cm5Gb2N1czogZmFsc2UsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRGbG9hdGluZ1Byb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogc2V0RmxvYXRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGpvaW5DbHMoY2xhc3NlcygncGFuZWwnKSwgcGFuZWxDbGFzc05hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IGZsb2F0aW5nU3R5bGVzLFxuICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW3NlYXJjaGFibGUgJiYgKF9qc3goU2VsZWN0U2VhcmNoQ29udHJvbCwgeyByZWY6IHNlYXJjaElucHV0UmVmLCBjbGFzc2VzOiBjbGFzc2VzLCBwbGFjZWhvbGRlcjogc2VhcmNoUGxhY2Vob2xkZXIsIHZhbHVlOiBpbm5lclNlYXJjaFZhbHVlLCBvbkJsdXI6IGhhbmRsZVNlYXJjaEJsdXIsIG9uQ2hhbmdlOiBoYW5kbGVTZWFyY2hDaGFuZ2UsIG9uS2V5RG93bjogaGFuZGxlU2VhcmNoS2V5RG93biB9KSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWJvZHknKSwgY2hpbGRyZW46IHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGggPT09IDAgPyAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZW1wdHknKSwgY2hpbGRyZW46IF9qc3goVHlwb2dyYXBoeUJvZHksIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuc2l6ZSwgY29sb3I6IFNFTEVDVF9UWVBPR1JBUEhZLmVtcHR5LmNvbG9yLCBjaGlsZHJlbjogZW1wdHlDb250ZW50IH0pIH0pKSA6ICgoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsYXRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlzaWJsZU9wdGlvbkdyb3Vwcy5tYXAoKGdyb3VwKSA9PiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2dyb3VwJyksIGNoaWxkcmVuOiBbZ3JvdXAubGFiZWwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2dyb3VwLWxhYmVsJyksIGNoaWxkcmVuOiBfanN4KFR5cG9ncmFwaHlMYWJlbCwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5ncm91cExhYmVsLnNpemUsIHN0cm9uZzogdHJ1ZSwgY2hpbGRyZW46IGdyb3VwLmxhYmVsIH0pIH0pKSwgZ3JvdXAub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uRmxhdEluZGV4ID0gZmxhdEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdEluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IGlzT3B0aW9uU2VsZWN0ZWQoaW5uZXJWYWx1ZSwgbXVsdGlwbGUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBhY3RpdmVJbmRleCA9PT0gb3B0aW9uRmxhdEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uTWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvcHRpb25GbGF0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbjogaW5uZXJPcGVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RDb250ZW50UmVmLmN1cnJlbnRbb3B0aW9uRmxhdEluZGV4XSA9IGV4dHJhY3RPcHRpb25UZXh0KG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0UmVmLmN1cnJlbnRbb3B0aW9uRmxhdEluZGV4XSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMoJ29wdGlvbicsIGpvaW5DbHMoYWN0aXZlICYmIGNsYXNzZXMoJ29wdGlvbi1hY3RpdmUnKSwgc2VsZWN0ZWQgJiYgY2xhc3Nlcygnb3B0aW9uLXNlbGVjdGVkJyksIG9wdGlvbi5kaXNhYmxlZCAmJiBjbGFzc2VzKCdvcHRpb24tZGlzYWJsZWQnKSwgb3B0aW9uQ2xhc3NOYW1lKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gaGFuZGxlSXRlbU1vdXNlRW50ZXIob3B0aW9uRmxhdEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6IGhhbmRsZU9wdGlvbkJsdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogcmVuZGVyT3B0aW9uID8gKHJlbmRlck9wdGlvbihvcHRpb24sIG9wdGlvbk1ldGEpKSA6IChfanN4KFNlbGVjdE9wdGlvbkNvbnRlbnQsIHsgY2xhc3NlczogY2xhc3Nlcywgb3B0aW9uOiBvcHRpb24sIHNlbGVjdGVkOiBzZWxlY3RlZCB9KSkgfSksIGAke2dyb3VwLmtleX0tJHtvcHRpb24udmFsdWV9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV0gfSwgZ3JvdXAua2V5KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpKSB9KSwgcGFuZWxGb290ZXIgIT0gbnVsbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtZm9vdGVyJyksIGNoaWxkcmVuOiBwYW5lbEZvb3RlciB9KSldIH0pKSB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvcnRhbCA/IF9qc3goRmxvYXRpbmdQb3J0YWwsIHsgY2hpbGRyZW46IHBhbmVsTm9kZSB9KSA6IHBhbmVsTm9kZTtcbiAgICAgICAgICAgIH0pKCldIH0pKTtcbn07XG5TZWxlY3QuZGlzcGxheU5hbWUgPSAnU2VsZWN0JztcbmV4cG9ydCBkZWZhdWx0IG1lbW8oU2VsZWN0KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
587
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsImF1dG9VcGRhdGUiLCJmbGlwIiwiRmxvYXRpbmdGb2N1c01hbmFnZXIiLCJGbG9hdGluZ1BvcnRhbCIsIm9mZnNldCIsInNoaWZ0Iiwic2l6ZSIsImZsb2F0aW5nU2l6ZSIsInVzZUNsaWNrIiwidXNlRGlzbWlzcyIsInVzZUZsb2F0aW5nIiwidXNlSW50ZXJhY3Rpb25zIiwidXNlTGlzdE5hdmlnYXRpb24iLCJ1c2VSb2xlIiwidXNlVHlwZWFoZWFkIiwibWVtbyIsInVzZUVmZmVjdCIsInVzZUlkIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwidXNlRXZlbnRDYWxsYmFjayIsIkljb25zIiwiU3Bpbm5lciIsIlR5cG9ncmFwaHlCb2R5IiwiVHlwb2dyYXBoeUxhYmVsIiwiam9pbkNscyIsImRlZmF1bHQiLCJyb290Q2xhc3NuYW1lcyIsInVzZUZsb2F0aW5nQW5pbWF0aW9uIiwiU2VsZWN0RmllbGRTaGVsbCIsIlNlbGVjdE9wdGlvbkNvbnRlbnQiLCJTZWxlY3RTZWFyY2hDb250cm9sIiwiU2VsZWN0VmFsdWVDb250ZW50IiwiS0VZQk9BUkQiLCJTRUxFQ1RfVFlQT0dSQVBIWSIsImV4dHJhY3RPcHRpb25UZXh0IiwiZmlsdGVyT3B0aW9uR3JvdXBzIiwiZmxhdHRlbk9wdGlvbkdyb3VwcyIsImdldE11bHRpcGxlVmFsdWUiLCJnZXRPcHRpb25zQnlWYWx1ZXMiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJpc09wdGlvblNlbGVjdGVkIiwibm9ybWFsaXplU2l6ZSIsIm5vcm1hbGl6ZU9wdGlvbkdyb3VwcyIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJ0b2dnbGVNdWx0aXBsZVZhbHVlIiwiREVGQVVMVF9NQVhfSEVJR0hUIiwiU2VsZWN0IiwicHJvcHMiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsInN0eWxlIiwiaWQiLCJuYW1lIiwiYXJpYUxhYmVsIiwiYXJpYUxhYmVsbGVkQnkiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRvcHRpb25zIiwib3B0aW9ucyIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiX3Byb3BzJHNpemUiLCJfcHJvcHMkc3RhdHVzIiwic3RhdHVzIiwiX3Byb3BzJHZhcmlhbnQiLCJ2YXJpYW50IiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJkaXNhYmxlZFByb3AiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJfcHJvcHMkbXVsdGlwbGUiLCJtdWx0aXBsZSIsIm1heFZpc2libGVWYWx1ZXMiLCJfcHJvcHMkc2VhcmNoYWJsZSIsInNlYXJjaGFibGUiLCJfcHJvcHMkc2VhcmNoUGxhY2Vob2wiLCJzZWFyY2hQbGFjZWhvbGRlciIsInNlYXJjaFZhbHVlIiwiX3Byb3BzJGRlZmF1bHRTZWFyY2hWIiwiZGVmYXVsdFNlYXJjaFZhbHVlIiwibGFiZWwiLCJpbmZvIiwiZGVzY3JpcHRpb24iLCJmZWVkYmFjayIsIl9wcm9wcyRyZXF1aXJlZCIsInJlcXVpcmVkIiwicHJlZml4IiwiX3Byb3BzJGVtcHR5Q29udGVudCIsImVtcHR5Q29udGVudCIsInBhbmVsRm9vdGVyIiwib3BlbiIsIl9wcm9wcyRkZWZhdWx0T3BlbiIsImRlZmF1bHRPcGVuIiwiX3Byb3BzJHBvcnRhbCIsInBvcnRhbCIsIl9wcm9wcyRhbGxvd0Rlc2VsZWN0IiwiYWxsb3dEZXNlbGVjdCIsIl9wcm9wcyRjbGVhcmFibGUiLCJjbGVhcmFibGUiLCJwYW5lbENsYXNzTmFtZSIsIm9wdGlvbkNsYXNzTmFtZSIsIl9wcm9wcyRsaXN0TWF4SGVpZ2h0IiwibGlzdE1heEhlaWdodCIsImFuaW1hdGlvbiIsIm9uQ2hhbmdlIiwib25PcGVuQ2hhbmdlIiwib25TZWFyY2hDaGFuZ2UiLCJvbkJsdXIiLCJmaWx0ZXJPcHRpb24iLCJyZW5kZXJPcHRpb24iLCJyZW5kZXJWYWx1ZSIsInJlZiIsImNsYXNzZXMiLCJhdXRvSWQiLCJ0cmlnZ2VySWQiLCJsYWJlbElkIiwiZGVzY3JpcHRpb25JZCIsImZlZWRiYWNrSWQiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidW5kZWZpbmVkIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsImlubmVyT3BlbiIsInNldElubmVyT3BlbiIsIl91c2VDb250cm9sbGVkU3RhdGU1IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTYiLCJpbm5lclNlYXJjaFZhbHVlIiwic2V0SW5uZXJTZWFyY2hWYWx1ZSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVJbmRleCIsInNldEFjdGl2ZUluZGV4Iiwibm9ybWFsaXplZFNpemUiLCJhbGxPcHRpb25Hcm91cHMiLCJhbGxGbGF0T3B0aW9ucyIsInZpc2libGVPcHRpb25Hcm91cHMiLCJ2aXNpYmxlRmxhdE9wdGlvbnMiLCJzZWxlY3RlZE9wdGlvbnMiLCJzZWxlY3RlZEluZGV4IiwibGVuZ3RoIiwibWF0Y2hlZEluZGV4IiwiZmluZEluZGV4Iiwib3B0aW9uIiwiaGFzU2VsZWN0aW9uIiwibGlzdFJlZiIsImxpc3RDb250ZW50UmVmIiwiZmxvYXRpbmdSZWYiLCJ0cmlnZ2VyUmVmIiwic2VhcmNoSW5wdXRSZWYiLCJoYW5kbGVUcmlnZ2VyUmVmIiwibm9kZSIsImN1cnJlbnQiLCJoYW5kbGVPcGVuQ2hhbmdlIiwibmV4dE9wZW4iLCJfdXNlRmxvYXRpbmciLCJwbGFjZW1lbnQiLCJ3aGlsZUVsZW1lbnRzTW91bnRlZCIsInRyYW5zZm9ybSIsIm1pZGRsZXdhcmUiLCJwYWRkaW5nIiwiYXBwbHkiLCJfcmVmIiwicmVjdHMiLCJlbGVtZW50cyIsImF2YWlsYWJsZUhlaWdodCIsIm5leHRNYXhIZWlnaHQiLCJNYXRoIiwibWF4IiwibWluIiwiT2JqZWN0IiwiYXNzaWduIiwiZmxvYXRpbmciLCJ3aWR0aCIsImNvbmNhdCIsInJlZmVyZW5jZSIsIm1heEhlaWdodCIsInJlZnMiLCJmbG9hdGluZ1N0eWxlcyIsImNvbnRleHQiLCJyZXNvbHZlZFBsYWNlbWVudCIsInJlc29sdmVkQW5pbWF0aW9uIiwia2luZCIsIl91c2VGbG9hdGluZ0FuaW1hdGlvbiIsImlzTW91bnRlZCIsInRyYW5zaXRpb25TdHlsZXMiLCJzdHlsZXMiLCJzZXRSZWZlcmVuY2UiLCJzZXRGbG9hdGluZyIsImNsaWNrIiwiZW5hYmxlZCIsImRpc21pc3MiLCJvdXRzaWRlUHJlc3NFdmVudCIsInJvbGUiLCJsaXN0TmF2aWdhdGlvbiIsIm9uTmF2aWdhdGUiLCJsb29wIiwidHlwZWFoZWFkIiwib25NYXRjaCIsIl91c2VJbnRlcmFjdGlvbnMiLCJnZXRSZWZlcmVuY2VQcm9wcyIsImdldEZsb2F0aW5nUHJvcHMiLCJnZXRJdGVtUHJvcHMiLCJmaXJzdEVuYWJsZWRJbmRleCIsImxhc3RFbmFibGVkSW5kZXgiLCJfYSIsImluZGV4IiwicHJldiIsImZvY3VzIiwicHJldmVudFNjcm9sbCIsInNsaWNlIiwibm90aWZ5Qmx1cklmT3V0c2lkZSIsInJlbGF0ZWRUYXJnZXQiLCJldmVudCIsIl9iIiwibmV4dFRhcmdldCIsIndpdGhpblRyaWdnZXIiLCJjb250YWlucyIsIndpdGhpbkZsb2F0aW5nIiwiaGFuZGxlVHJpZ2dlckJsdXIiLCJoYW5kbGVPcHRpb25CbHVyIiwiY29tbWl0Q2hhbmdlIiwibmV4dFZhbHVlIiwibmV4dE9wdGlvbiIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIm5leHRPcHRpb25zIiwiaGFuZGxlQ2xlYXIiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUiLCJvcHRpb25WYWx1ZSIsImluY2x1ZGVzIiwiaGFuZGxlVHJpZ2dlcktleURvd24iLCJrZXkiLCJFTlRFUiIsIlNQQUNFIiwiQVJST1dfRE9XTiIsIkFSUk9XX1VQIiwiaGFuZGxlSXRlbU1vdXNlRW50ZXIiLCJoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24iLCJoYW5kbGVUYWdSZW1vdmVDbGljayIsImhhbmRsZVNlYXJjaEJsdXIiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCJfZXZlbnQiLCJoYW5kbGVTZWFyY2hLZXlEb3duIiwiX2MiLCJFU0NBUEUiLCJyZW5kZXJWYWx1ZU1ldGEiLCJ2YWx1ZUxhYmVsQ2xhc3MiLCJpc011bHRpcGxlVmFsdWVGaWxsZWQiLCJ0cmlnZ2VyQ2xhc3NOYW1lIiwiaWNvblNpemUiLCJmbG9hdGluZ0FyaWFMYWJlbGxlZEJ5IiwiZGVzY3JpYmVkQnlJZHMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsImNoaWxkcmVuIiwidHlwZSIsIm9uS2V5RG93biIsIm9uUmVtb3ZlIiwib25SZW1vdmVDbGljayIsIm9uUmVtb3ZlTW91c2VEb3duIiwib25Nb3VzZURvd24iLCJvbkNsaWNrIiwiY29sb3IiLCJzdHJva2VXaWR0aCIsInBhbmVsTm9kZSIsIm1vZGFsIiwiaW5pdGlhbEZvY3VzIiwicmV0dXJuRm9jdXMiLCJlbXB0eSIsImZsYXRJbmRleCIsIm1hcCIsImdyb3VwIiwiZ3JvdXBMYWJlbCIsInN0cm9uZyIsIm9wdGlvbkZsYXRJbmRleCIsInNlbGVjdGVkIiwiYWN0aXZlIiwib3B0aW9uTWV0YSIsIm9uTW91c2VFbnRlciIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLEVBQUVDLElBQUksSUFBSUMsS0FBSyxRQUFRLG1CQUFtQjtBQ0E5RCxTQUNFQyxVQUFVLEVBQ1ZDLElBQUksRUFDSkMsb0JBQW9CLEVBQ3BCQyxjQUFjLEVBQ2RDLE1BQU0sRUFDTkMsS0FBSyxFQUNMQyxJQUFJLElBQUlDLFlBQVksRUFD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b0osUUFBQSxFQUFHM0s7VUFBVyxDQUFBLENBQ3REO1FBQUEsQ0FBQSxDQUFBO01BQ0csQ0FBQSxDQUVUO01BRUQsT0FBT0ssTUFBTSxHQUFHdkcsSUFBQSxDQUFDTSxjQUFjLEVBQUE7UUFBQXVRLFFBQUEsRUFBRVU7TUFBUyxDQUFBLENBQWtCLEdBQUdBLFNBQVM7SUFDMUUsQ0FBQyxDQUFDLENBQUU7RUFBQSxDQUFBLENBQ2E7QUFFdkIsQ0FBQztBQUVEbk8sTUFBTSxDQUFDa1AsV0FBVyxHQUFHLFFBQVE7QUFFN0IsNEJBQWVwUixJQUFJLENBQUNrQyxNQUFNLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGF1dG9VcGRhdGUsIGZsaXAsIEZsb2F0aW5nRm9jdXNNYW5hZ2VyLCBGbG9hdGluZ1BvcnRhbCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSBhcyBmbG9hdGluZ1NpemUsIHVzZUNsaWNrLCB1c2VEaXNtaXNzLCB1c2VGbG9hdGluZywgdXNlSW50ZXJhY3Rpb25zLCB1c2VMaXN0TmF2aWdhdGlvbiwgdXNlUm9sZSwgdXNlVHlwZWFoZWFkLCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyBtZW1vLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL0ljb25zJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5LCBUeXBvZ3JhcGh5TGFiZWwgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMsIGRlZmF1bHQgYXMgcm9vdENsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IHVzZUZsb2F0aW5nQW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlRmxvYXRpbmdBbmltYXRpb24nO1xuaW1wb3J0IFNlbGVjdEZpZWxkU2hlbGwgZnJvbSAnLi9TZWxlY3RGaWVsZFNoZWxsJztcbmltcG9ydCBTZWxlY3RPcHRpb25Db250ZW50IGZyb20gJy4vU2VsZWN0T3B0aW9uQ29udGVudCc7XG5pbXBvcnQgU2VsZWN0U2VhcmNoQ29udHJvbCBmcm9tICcuL1NlbGVjdFNlYXJjaENvbnRyb2wnO1xuaW1wb3J0IFNlbGVjdFZhbHVlQ29udGVudCBmcm9tICcuL1NlbGVjdFZhbHVlQ29udGVudCc7XG5pbXBvcnQgeyBLRVlCT0FSRCwgU0VMRUNUX1RZUE9HUkFQSFkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0T3B0aW9uVGV4dCwgZmlsdGVyT3B0aW9uR3JvdXBzLCBmbGF0dGVuT3B0aW9uR3JvdXBzLCBnZXRNdWx0aXBsZVZhbHVlLCBnZXRPcHRpb25zQnlWYWx1ZXMsIGdldFNlbGVjdGVkT3B0aW9ucywgaXNPcHRpb25TZWxlY3RlZCwgbm9ybWFsaXplU2l6ZSwgbm9ybWFsaXplT3B0aW9uR3JvdXBzLCByZW1vdmVNdWx0aXBsZVZhbHVlLCB0b2dnbGVNdWx0aXBsZVZhbHVlLCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICcuL3N0eWxlJztcbmNvbnN0IERFRkFVTFRfTUFYX0hFSUdIVCA9IDMyMDtcbmV4cG9ydCBjb25zdCBTZWxlY3QgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnc2VsZWN0Jywgc3R5bGUsIGlkLCBuYW1lLCAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCwgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZEJ5LCBwbGFjZWhvbGRlciA9ICdWYWx1ZScsIG9wdGlvbnMgPSBbXSwgdmFsdWUsIGRlZmF1bHRWYWx1ZSwgc2l6ZSA9ICdsYXJnZScsIHN0YXR1cyA9ICdkZWZhdWx0JywgdmFyaWFudCA9ICdmaWxsJywgZGlzYWJsZWQ6IGRpc2FibGVkUHJvcCA9IGZhbHNlLCBsb2FkaW5nID0gZmFsc2UsIG11bHRpcGxlID0gZmFsc2UsIG1heFZpc2libGVWYWx1ZXMsIHNlYXJjaGFibGUgPSBmYWxzZSwgc2VhcmNoUGxhY2Vob2xkZXIgPSAnU2VhcmNoJywgc2VhcmNoVmFsdWUsIGRlZmF1bHRTZWFyY2hWYWx1ZSA9ICcnLCBsYWJlbCwgaW5mbywgZGVzY3JpcHRpb24sIGZlZWRiYWNrLCByZXF1aXJlZCA9IGZhbHNlLCBwcmVmaXgsIGVtcHR5Q29udGVudCA9ICdObyBvcHRpb25zJywgcGFuZWxGb290ZXIsIG9wZW4sIGRlZmF1bHRPcGVuID0gZmFsc2UsIHBvcnRhbCA9IHRydWUsIGFsbG93RGVzZWxlY3QgPSBmYWxzZSwgY2xlYXJhYmxlID0gZmFsc2UsIHBhbmVsQ2xhc3NOYW1lLCBvcHRpb25DbGFzc05hbWUsIGxpc3RNYXhIZWlnaHQgPSBERUZBVUxUX01BWF9IRUlHSFQsIGFuaW1hdGlvbiwgb25DaGFuZ2UsIG9uT3BlbkNoYW5nZSwgb25TZWFyY2hDaGFuZ2UsIG9uQmx1ciwgZmlsdGVyT3B0aW9uLCByZW5kZXJPcHRpb24sIHJlbmRlclZhbHVlLCByZWYsIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaXNhYmxlZCA9IGRpc2FibGVkUHJvcCB8fCBsb2FkaW5nO1xuICAgIGNvbnN0IGNsYXNzZXMgPSByb290Q2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGF1dG9JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgdHJpZ2dlcklkID0gaWQgIT09IG51bGwgJiYgaWQgIT09IHZvaWQgMCA/IGlkIDogYXV0b0lkO1xuICAgIGNvbnN0IGxhYmVsSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGZlZWRiYWNrSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IFtpbm5lclZhbHVlLCBzZXRJbm5lclZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB2b2lkIDAgPyBkZWZhdWx0VmFsdWUgOiAobXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZCksIHZhbHVlKTtcbiAgICBjb25zdCBbaW5uZXJPcGVuLCBzZXRJbm5lck9wZW5dID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRPcGVuLCBvcGVuKTtcbiAgICBjb25zdCBbaW5uZXJTZWFyY2hWYWx1ZSwgc2V0SW5uZXJTZWFyY2hWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFNlYXJjaFZhbHVlLCBzZWFyY2hWYWx1ZSk7XG4gICAgY29uc3QgW2FjdGl2ZUluZGV4LCBzZXRBY3RpdmVJbmRleF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBub3JtYWxpemVkU2l6ZSA9IG5vcm1hbGl6ZVNpemUoc2l6ZSk7XG4gICAgY29uc3QgYWxsT3B0aW9uR3JvdXBzID0gdXNlTWVtbygoKSA9PiBub3JtYWxpemVPcHRpb25Hcm91cHMob3B0aW9ucyksIFtvcHRpb25zXSk7XG4gICAgY29uc3QgYWxsRmxhdE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGZsYXR0ZW5PcHRpb25Hcm91cHMoYWxsT3B0aW9uR3JvdXBzKSwgW2FsbE9wdGlvbkdyb3Vwc10pO1xuICAgIGNvbnN0IHZpc2libGVPcHRpb25Hcm91cHMgPSB1c2VNZW1vKCgpID0+IChzZWFyY2hhYmxlXG4gICAgICAgID8gZmlsdGVyT3B0aW9uR3JvdXBzKGFsbE9wdGlvbkdyb3VwcywgaW5uZXJTZWFyY2hWYWx1ZSwgZmlsdGVyT3B0aW9uKVxuICAgICAgICA6IGFsbE9wdGlvbkdyb3VwcyksIFthbGxPcHRpb25Hcm91cHMsIGZpbHRlck9wdGlvbiwgaW5uZXJTZWFyY2hWYWx1ZSwgc2VhcmNoYWJsZV0pO1xuICAgIGNvbnN0IHZpc2libGVGbGF0T3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbk9wdGlvbkdyb3Vwcyh2aXNpYmxlT3B0aW9uR3JvdXBzKSwgW3Zpc2libGVPcHRpb25Hcm91cHNdKTtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGdldFNlbGVjdGVkT3B0aW9ucyhhbGxGbGF0T3B0aW9ucywgaW5uZXJWYWx1ZSwgbXVsdGlwbGUpLCBbYWxsRmxhdE9wdGlvbnMsIGlubmVyVmFsdWUsIG11bHRpcGxlXSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF0Y2hlZEluZGV4ID0gdmlzaWJsZUZsYXRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHNlbGVjdGVkT3B0aW9uc1swXS52YWx1ZSk7XG4gICAgICAgIHJldHVybiBtYXRjaGVkSW5kZXggPj0gMCA/IG1hdGNoZWRJbmRleCA6IG51bGw7XG4gICAgfSwgW3NlbGVjdGVkT3B0aW9ucywgdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgY29uc3QgaGFzU2VsZWN0aW9uID0gc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgbGlzdFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgbGlzdENvbnRlbnRSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IGZsb2F0aW5nUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2VhcmNoSW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlclJlZiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlT3BlbkNoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRPcGVuKSA9PiB7XG4gICAgICAgIHNldElubmVyT3BlbihuZXh0T3Blbik7XG4gICAgICAgIG9uT3BlbkNoYW5nZSA9PT0gbnVsbCB8fCBvbk9wZW5DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uT3BlbkNoYW5nZShuZXh0T3Blbik7XG4gICAgfSk7XG4gICAgY29uc3QgeyByZWZzLCBmbG9hdGluZ1N0eWxlcywgY29udGV4dCwgcGxhY2VtZW50OiByZXNvbHZlZFBsYWNlbWVudCwgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICAgICAgb3BlbjogaW5uZXJPcGVuLFxuICAgICAgICBvbk9wZW5DaGFuZ2U6IGhhbmRsZU9wZW5DaGFuZ2UsXG4gICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gICAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICAgICAgICB0cmFuc2Zvcm06IGZhbHNlLFxuICAgICAgICBtaWRkbGV3YXJlOiBbXG4gICAgICAgICAgICBvZmZzZXQoMCksXG4gICAgICAgICAgICBmbGlwKHsgcGFkZGluZzogOCB9KSxcbiAgICAgICAgICAgIHNoaWZ0KHsgcGFkZGluZzogOCB9KSxcbiAgICAgICAgICAgIGZsb2F0aW5nU2l6ZSh7XG4gICAgICAgICAgICAgICAgYXBwbHkoeyByZWN0cywgZWxlbWVudHMsIGF2YWlsYWJsZUhlaWdodCB9KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRNYXhIZWlnaHQgPSBNYXRoLm1heCgxMjAsIE1hdGgubWluKGxpc3RNYXhIZWlnaHQsIGF2YWlsYWJsZUhlaWdodCkpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnRzLmZsb2F0aW5nLnN0eWxlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYCR7cmVjdHMucmVmZXJlbmNlLndpZHRofXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogYCR7bmV4dE1heEhlaWdodH1weGAsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICB9KTtcbiAgICBjb25zdCByZXNvbHZlZEFuaW1hdGlvbiA9IHVzZU1lbW8oKCkgPT4gKGFuaW1hdGlvbiA9PT0gZmFsc2UgPyBmYWxzZSA6IE9iamVjdC5hc3NpZ24oeyBraW5kOiAnaGVpZ2h0JyB9LCAoYW5pbWF0aW9uICE9PSBudWxsICYmIGFuaW1hdGlvbiAhPT0gdm9pZCAwID8gYW5pbWF0aW9uIDoge30pKSksIFthbmltYXRpb25dKTtcbiAgICBjb25zdCB7IGlzTW91bnRlZCwgc3R5bGVzOiB0cmFuc2l0aW9uU3R5bGVzIH0gPSB1c2VGbG9hdGluZ0FuaW1hdGlvbihjb250ZXh0LCByZXNvbHZlZFBsYWNlbWVudCwgcmVzb2x2ZWRBbmltYXRpb24pO1xuICAgIGNvbnN0IHNldFJlZmVyZW5jZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgcmVmcy5zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgICAgIGhhbmRsZVRyaWdnZXJSZWYobm9kZSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmxvYXRpbmcgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgIH0pO1xuICAgIGNvbnN0IGNsaWNrID0gdXNlQ2xpY2soY29udGV4dCwgeyBlbmFibGVkOiAhZGlzYWJsZWQgfSk7XG4gICAgY29uc3QgZGlzbWlzcyA9IHVzZURpc21pc3MoY29udGV4dCwgeyBlbmFibGVkOiAhZGlzYWJsZWQsIG91dHNpZGVQcmVzc0V2ZW50OiAnbW91c2Vkb3duJyB9KTtcbiAgICBjb25zdCByb2xlID0gdXNlUm9sZShjb250ZXh0LCB7IHJvbGU6ICdzZWxlY3QnIH0pO1xuICAgIGNvbnN0IGxpc3ROYXZpZ2F0aW9uID0gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgb25OYXZpZ2F0ZTogc2V0QWN0aXZlSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbixcbiAgICAgICAgbG9vcDogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCB0eXBlYWhlYWQgPSB1c2VUeXBlYWhlYWQoY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmOiBsaXN0Q29udGVudFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbiAmJiAhc2VhcmNoYWJsZSxcbiAgICAgICAgb25NYXRjaDogc2V0QWN0aXZlSW5kZXgsXG4gICAgfSk7XG4gICAgY29uc3QgeyBnZXRSZWZlcmVuY2VQcm9wcywgZ2V0RmxvYXRpbmdQcm9wcywgZ2V0SXRlbVByb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW1xuICAgICAgICBjbGljayxcbiAgICAgICAgZGlzbWlzcyxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgbGlzdE5hdmlnYXRpb24sXG4gICAgICAgIHR5cGVhaGVhZCxcbiAgICBdKTtcbiAgICBjb25zdCBmaXJzdEVuYWJsZWRJbmRleCA9IHVzZU1lbW8oKCkgPT4gdmlzaWJsZUZsYXRPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKSwgW3Zpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIGNvbnN0IGxhc3RFbmFibGVkSW5kZXggPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sIFt2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWlubmVyT3Blbikge1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoc2VsZWN0ZWRJbmRleCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0QWN0aXZlSW5kZXgoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBudWxsICYmIHZpc2libGVGbGF0T3B0aW9uc1twcmV2XSAmJiAhdmlzaWJsZUZsYXRPcHRpb25zW3ByZXZdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1tzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXJzdEVuYWJsZWRJbmRleCA+PSAwID8gZmlyc3RFbmFibGVkSW5kZXggOiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9LCBbZmlyc3RFbmFibGVkSW5kZXgsIGlubmVyT3Blbiwgc2VsZWN0ZWRJbmRleCwgdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIWlubmVyT3BlbiB8fCBhY3RpdmVJbmRleCA9PT0gbnVsbCB8fCBzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50W2FjdGl2ZUluZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9LCBbYWN0aXZlSW5kZXgsIGlubmVyT3Blbiwgc2VhcmNoYWJsZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxpc3RSZWYuY3VycmVudCA9IGxpc3RSZWYuY3VycmVudC5zbGljZSgwLCB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoKTtcbiAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudCA9IGxpc3RDb250ZW50UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgfSwgW3Zpc2libGVGbGF0T3B0aW9ucy5sZW5ndGhdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpbm5lck9wZW4gJiYgc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgKF9hID0gc2VhcmNoSW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtpbm5lck9wZW4sIHNlYXJjaGFibGVdKTtcbiAgICBjb25zdCBub3RpZnlCbHVySWZPdXRzaWRlID0gdXNlRXZlbnRDYWxsYmFjaygocmVsYXRlZFRhcmdldCwgZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgbmV4dFRhcmdldCA9IHJlbGF0ZWRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IHdpdGhpblRyaWdnZXIgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb250YWlucyhuZXh0VGFyZ2V0KSkpO1xuICAgICAgICBjb25zdCB3aXRoaW5GbG9hdGluZyA9ICEhKG5leHRUYXJnZXQgJiYgKChfYiA9IGZsb2F0aW5nUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jb250YWlucyhuZXh0VGFyZ2V0KSkpO1xuICAgICAgICBpZiAoIXdpdGhpblRyaWdnZXIgJiYgIXdpdGhpbkZsb2F0aW5nKSB7XG4gICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlckJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVPcHRpb25CbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgY29tbWl0Q2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFZhbHVlLCBuZXh0T3B0aW9uKSA9PiB7XG4gICAgICAgIHNldElubmVyVmFsdWUobmV4dFZhbHVlKTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbik7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlRXZlbnRDYWxsYmFjaygob3B0aW9uKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHRvZ2dsZU11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSwgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRPcHRpb25zID0gZ2V0T3B0aW9uc0J5VmFsdWVzKGFsbEZsYXRPcHRpb25zLCBuZXh0VmFsdWUpO1xuICAgICAgICAgICAgY29tbWl0Q2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Rlc2VsZWN0ICYmIGlubmVyVmFsdWUgPT09IG9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgY29tbWl0Q2hhbmdlKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKCk7XG4gICAgICAgICAgICAoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0Q2hhbmdlKG9wdGlvbi52YWx1ZSwgb3B0aW9uKTtcbiAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAoX2IgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQ2xlYXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb21taXRDaGFuZ2UoW10sIFtdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZSh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVSZW1vdmVTZWxlY3RlZFZhbHVlID0gdXNlRXZlbnRDYWxsYmFjaygob3B0aW9uVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKCFtdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZ2V0TXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlKS5pbmNsdWRlcyhvcHRpb25WYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSByZW1vdmVNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUsIG9wdGlvblZhbHVlKTtcbiAgICAgICAgY29uc3QgbmV4dE9wdGlvbnMgPSBnZXRPcHRpb25zQnlWYWx1ZXMoYWxsRmxhdE9wdGlvbnMsIG5leHRWYWx1ZSk7XG4gICAgICAgIGNvbW1pdENoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb25zKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyS2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVOVEVSIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuU1BBQ0UpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKCFpbm5lck9wZW4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04gfHwgZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19VUCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICghaW5uZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1Nb3VzZUVudGVyID0gdXNlRXZlbnRDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBzZXRBY3RpdmVJbmRleChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0VmFsdWUsIF9ldmVudCkgPT4ge1xuICAgICAgICBzZXRJbm5lclNlYXJjaFZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uU2VhcmNoQ2hhbmdlID09PSBudWxsIHx8IG9uU2VhcmNoQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNlYXJjaENoYW5nZShuZXh0VmFsdWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfRE9XTiAmJiBmaXJzdEVuYWJsZWRJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoZmlyc3RFbmFibGVkSW5kZXgpO1xuICAgICAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50W2ZpcnN0RW5hYmxlZEluZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19VUCAmJiBsYXN0RW5hYmxlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgobGFzdEVuYWJsZWRJbmRleCk7XG4gICAgICAgICAgICAoX2IgPSBsaXN0UmVmLmN1cnJlbnRbbGFzdEVuYWJsZWRJbmRleF0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRVNDQVBFKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgICAgICAoX2MgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCByZW5kZXJWYWx1ZU1ldGEgPSB7XG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBtdWx0aXBsZSxcbiAgICAgICAgbWF4VmlzaWJsZVZhbHVlcyxcbiAgICAgICAgb3BlbjogaW5uZXJPcGVuLFxuICAgICAgICBwbGFjZWhvbGRlcjogIWhhc1NlbGVjdGlvbixcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zLFxuICAgIH07XG4gICAgY29uc3QgdmFsdWVMYWJlbENsYXNzID0gaGFzU2VsZWN0aW9uID8gJ3ZhbHVlJyA6ICdwbGFjZWhvbGRlcic7XG4gICAgY29uc3QgaXNNdWx0aXBsZVZhbHVlRmlsbGVkID0gKG11bHRpcGxlICYmXG4gICAgICAgIGhhc1NlbGVjdGlvbiAmJlxuICAgICAgICBtYXhWaXNpYmxlVmFsdWVzID09PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IHRyaWdnZXJDbGFzc05hbWUgPSBjbGFzc2VzKCd0cmlnZ2VyJywgam9pbkNscyhjbGFzc2VzKGB0cmlnZ2VyLSR7bm9ybWFsaXplZFNpemV9YCksIGNsYXNzZXMoYHRyaWdnZXItJHt2YXJpYW50fWApLCBpbm5lck9wZW4gJiYgY2xhc3NlcygndHJpZ2dlci1vcGVuJyksIGlzTXVsdGlwbGVWYWx1ZUZpbGxlZCAmJiBjbGFzc2VzKCd0cmlnZ2VyLW11bHRpcGxlLWZpbGxlZCcpLCBoYXNTZWxlY3Rpb24gPyBjbGFzc2VzKCd0cmlnZ2VyLWZpbGxlZCcpIDogY2xhc3NlcygndHJpZ2dlci1wbGFjZWhvbGRlcicpLCBzdGF0dXMgIT09ICdkZWZhdWx0JyAmJiBjbGFzc2VzKGB0cmlnZ2VyLSR7c3RhdHVzfWApLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCd0cmlnZ2VyLWRpc2FibGVkJykpKTtcbiAgICBjb25zdCBpY29uU2l6ZSA9IG5vcm1hbGl6ZWRTaXplID09PSAnc21hbGwnID8gMTYgOiAyMDtcbiAgICBjb25zdCBmbG9hdGluZ0FyaWFMYWJlbGxlZEJ5ID0gYXJpYUxhYmVsbGVkQnkgIT09IG51bGwgJiYgYXJpYUxhYmVsbGVkQnkgIT09IHZvaWQgMCA/IGFyaWFMYWJlbGxlZEJ5IDogKGxhYmVsID8gbGFiZWxJZCA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZGVzY3JpYmVkQnlJZHMgPSBbXG4gICAgICAgIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb25JZCA6IG51bGwsXG4gICAgICAgIGZlZWRiYWNrID8gZmVlZGJhY2tJZCA6IG51bGwsXG4gICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpIHx8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKF9qc3hzKFNlbGVjdEZpZWxkU2hlbGwsIHsgY2xhc3NlczogY2xhc3NlcywgY2xhc3NOYW1lOiBjbGFzc05hbWUsIHNpemU6IG5vcm1hbGl6ZWRTaXplLCB2YXJpYW50OiB2YXJpYW50LCBzdGF0dXM6IHN0YXR1cywgZGlzYWJsZWQ6IGRpc2FibGVkLCBsb2FkaW5nOiBsb2FkaW5nLCBsYWJlbDogbGFiZWwsIGluZm86IGluZm8sIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgZmVlZGJhY2s6IGZlZWRiYWNrLCByZXF1aXJlZDogcmVxdWlyZWQsIGxhYmVsSWQ6IGxhYmVsSWQsIGRlc2NyaXB0aW9uSWQ6IGRlc2NyaXB0aW9uSWQsIGZlZWRiYWNrSWQ6IGZlZWRiYWNrSWQsIGNoaWxkcmVuOiBbX2pzeHMoXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0UmVmZXJlbmNlUHJvcHMoe1xuICAgICAgICAgICAgICAgIHJlZjogc2V0UmVmZXJlbmNlLFxuICAgICAgICAgICAgICAgIGlkOiB0cmlnZ2VySWQsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRyaWdnZXJDbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgb25LZXlEb3duOiBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgICAgICAgICAgICAgICBvbkJsdXI6IGhhbmRsZVRyaWdnZXJCbHVyLFxuICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBmbG9hdGluZ0FyaWFMYWJlbGxlZEJ5LFxuICAgICAgICAgICAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogZGVzY3JpYmVkQnlJZHMsXG4gICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW19qc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udGVudCcpLCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JyksIGNoaWxkcmVuOiBwcmVmaXggfSksIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKHZhbHVlTGFiZWxDbGFzcywgam9pbkNscyhjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tJHtub3JtYWxpemVkU2l6ZX1gKSwgaXNNdWx0aXBsZVZhbHVlRmlsbGVkICYmIGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS1tdWx0aXBsZWApLCBkaXNhYmxlZCAmJiBjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tZGlzYWJsZWRgKSkpLCBjaGlsZHJlbjogX2pzeChTZWxlY3RWYWx1ZUNvbnRlbnQsIHsgY2xhc3NlczogY2xhc3NlcywgaGFzU2VsZWN0aW9uOiBoYXNTZWxlY3Rpb24sIG11bHRpcGxlOiBtdWx0aXBsZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZW5kZXJWYWx1ZTogcmVuZGVyVmFsdWUsIHJlbmRlclZhbHVlTWV0YTogcmVuZGVyVmFsdWVNZXRhLCBzZWxlY3RlZE9wdGlvbnM6IHNlbGVjdGVkT3B0aW9ucywgbWF4VmlzaWJsZVZhbHVlczogbWF4VmlzaWJsZVZhbHVlcywgb25SZW1vdmU6IGhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUsIG9uUmVtb3ZlQ2xpY2s6IGhhbmRsZVRhZ1JlbW92ZUNsaWNrLCBvblJlbW92ZU1vdXNlRG93bjogaGFuZGxlVGFnUmVtb3ZlTW91c2VEb3duIH0pIH0pXSB9KSwgY2xlYXJhYmxlICYmIGhhc1NlbGVjdGlvbiAmJiAhZGlzYWJsZWQgJiYgIWxvYWRpbmcgJiYgKF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjbGVhcicpLCByb2xlOiBcImJ1dHRvblwiLCBcImFyaWEtbGFiZWxcIjogXCJDbGVhclwiLCBvbk1vdXNlRG93bjogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQ2xpY2s6IGhhbmRsZUNsZWFyLCBjaGlsZHJlbjogX2pzeChJY29ucywgeyBuYW1lOiBcImNyb3NzXCIsIHNpemU6IGljb25TaXplLCBjb2xvcjogXCJjdXJyZW50Q29sb3JcIiB9KSB9KSksIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdpY29uJyksIGNoaWxkcmVuOiBsb2FkaW5nID8gKF9qc3goU3Bpbm5lciwgeyBzaXplOiBpY29uU2l6ZSwgc3Ryb2tlV2lkdGg6IDIgfSkpIDogKF9qc3goSWNvbnMsIHsgbmFtZTogaW5uZXJPcGVuID8gJ2NoZXZyb25VcCcgOiAnY2hldnJvbkRvd24nLCBzaXplOiBpY29uU2l6ZSwgY29sb3I6IFwiY3VycmVudENvbG9yXCIgfSkpIH0pXSB9KSksIGlzTW91bnRlZCAmJiAhZGlzYWJsZWQgJiYgKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbE5vZGUgPSAoX2pzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0OiBjb250ZXh0LCBtb2RhbDogZmFsc2UsIGluaXRpYWxGb2N1czogLTEsIHJldHVybkZvY3VzOiBmYWxzZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIGdldEZsb2F0aW5nUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBzZXRGbG9hdGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdwYW5lbCcpLCBwYW5lbENsYXNzTmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmbG9hdGluZ1N0eWxlcyksIHRyYW5zaXRpb25TdHlsZXMpLFxuICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW3NlYXJjaGFibGUgJiYgKF9qc3goU2VsZWN0U2VhcmNoQ29udHJvbCwgeyByZWY6IHNlYXJjaElucHV0UmVmLCBjbGFzc2VzOiBjbGFzc2VzLCBwbGFjZWhvbGRlcjogc2VhcmNoUGxhY2Vob2xkZXIsIHZhbHVlOiBpbm5lclNlYXJjaFZhbHVlLCBvbkJsdXI6IGhhbmRsZVNlYXJjaEJsdXIsIG9uQ2hhbmdlOiBoYW5kbGVTZWFyY2hDaGFuZ2UsIG9uS2V5RG93bjogaGFuZGxlU2VhcmNoS2V5RG93biB9KSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWJvZHknKSwgY2hpbGRyZW46IHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGggPT09IDAgPyAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZW1wdHknKSwgY2hpbGRyZW46IF9qc3goVHlwb2dyYXBoeUJvZHksIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuc2l6ZSwgY29sb3I6IFNFTEVDVF9UWVBPR1JBUEhZLmVtcHR5LmNvbG9yLCBjaGlsZHJlbjogZW1wdHlDb250ZW50IH0pIH0pKSA6ICgoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsYXRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlzaWJsZU9wdGlvbkdyb3Vwcy5tYXAoKGdyb3VwKSA9PiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2dyb3VwJyksIGNoaWxkcmVuOiBbZ3JvdXAubGFiZWwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2dyb3VwLWxhYmVsJyksIGNoaWxkcmVuOiBfanN4KFR5cG9ncmFwaHlMYWJlbCwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5ncm91cExhYmVsLnNpemUsIHN0cm9uZzogdHJ1ZSwgY2hpbGRyZW46IGdyb3VwLmxhYmVsIH0pIH0pKSwgZ3JvdXAub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uRmxhdEluZGV4ID0gZmxhdEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdEluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IGlzT3B0aW9uU2VsZWN0ZWQoaW5uZXJWYWx1ZSwgbXVsdGlwbGUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBhY3RpdmVJbmRleCA9PT0gb3B0aW9uRmxhdEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uTWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvcHRpb25GbGF0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbjogaW5uZXJPcGVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RDb250ZW50UmVmLmN1cnJlbnRbb3B0aW9uRmxhdEluZGV4XSA9IGV4dHJhY3RPcHRpb25UZXh0KG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0UmVmLmN1cnJlbnRbb3B0aW9uRmxhdEluZGV4XSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMoJ29wdGlvbicsIGpvaW5DbHMoYWN0aXZlICYmIGNsYXNzZXMoJ29wdGlvbi1hY3RpdmUnKSwgc2VsZWN0ZWQgJiYgY2xhc3Nlcygnb3B0aW9uLXNlbGVjdGVkJyksIG9wdGlvbi5kaXNhYmxlZCAmJiBjbGFzc2VzKCdvcHRpb24tZGlzYWJsZWQnKSwgb3B0aW9uQ2xhc3NOYW1lKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gaGFuZGxlSXRlbU1vdXNlRW50ZXIob3B0aW9uRmxhdEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6IGhhbmRsZU9wdGlvbkJsdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogcmVuZGVyT3B0aW9uID8gKHJlbmRlck9wdGlvbihvcHRpb24sIG9wdGlvbk1ldGEpKSA6IChfanN4KFNlbGVjdE9wdGlvbkNvbnRlbnQsIHsgY2xhc3NlczogY2xhc3Nlcywgb3B0aW9uOiBvcHRpb24sIHNlbGVjdGVkOiBzZWxlY3RlZCB9KSkgfSksIGAke2dyb3VwLmtleX0tJHtvcHRpb24udmFsdWV9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV0gfSwgZ3JvdXAua2V5KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpKSB9KSwgcGFuZWxGb290ZXIgIT0gbnVsbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtZm9vdGVyJyksIGNoaWxkcmVuOiBwYW5lbEZvb3RlciB9KSldIH0pKSB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvcnRhbCA/IF9qc3goRmxvYXRpbmdQb3J0YWwsIHsgY2hpbGRyZW46IHBhbmVsTm9kZSB9KSA6IHBhbmVsTm9kZTtcbiAgICAgICAgICAgIH0pKCldIH0pKTtcbn07XG5TZWxlY3QuZGlzcGxheU5hbWUgPSAnU2VsZWN0JztcbmV4cG9ydCBkZWZhdWx0IG1lbW8oU2VsZWN0KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -1,4 +1,5 @@
1
1
  import type { CSSProperties, FocusEvent, HTMLAttributes, ReactNode, RefObject } from 'react';
2
+ import type { FloatingAnimation } from "../../hooks/useFloatingAnimation";
2
3
  export declare const SELECT_SIZES: readonly ["large", "small"];
3
4
  export declare const SELECT_STATUSES: readonly ["default", "error", "warning", "success"];
4
5
  export declare const SELECT_VARIANTS: readonly ["fill", "stroke", "frameless"];
@@ -79,6 +80,11 @@ export interface SelectProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defau
79
80
  panelClassName?: string;
80
81
  optionClassName?: string;
81
82
  listMaxHeight?: number;
83
+ /**
84
+ * Open/close animation. Default `{ duration: { open: 150, close: 100 }, initialScale: 0.96 }`.
85
+ * Set to `false` to disable animation entirely (panel appears/disappears instantly).
86
+ */
87
+ animation?: FloatingAnimation;
82
88
  onChange?: (value: SelectValue, option?: SelectOption | SelectOption[]) => void;
83
89
  onOpenChange?: (open: boolean) => void;
84
90
  onSearchChange?: (value: string) => void;
@@ -1,4 +1,4 @@
1
1
  export var SELECT_SIZES = ['large', 'small'];
2
2
  export var SELECT_STATUSES = ['default', 'error', 'warning', 'success'];
3
3
  export var SELECT_VARIANTS = ['fill', 'stroke', 'frameless'];
4
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L2ludGVyZmFjZS50cyJdLCJuYW1lcyI6WyJTRUxFQ1RfU0laRVMiLCJTRUxFQ1RfU1RBVFVTRVMiLCJTRUxFQ1RfVkFSSUFOVFMiXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sSUFBTUEsWUFBWSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBVTtBQUN2RCxPQUFPLElBQU1DLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBVTtBQUNsRixPQUFPLElBQU1DLGVBQWUsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFVIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L2ludGVyZmFjZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L2ludGVyZmFjZS50cyJdLCJuYW1lcyI6WyJTRUxFQ1RfU0laRVMiLCJTRUxFQ1RfU1RBVFVTRVMiLCJTRUxFQ1RfVkFSSUFOVFMiXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sSUFBTUEsWUFBWSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBVTtBQUN2RCxPQUFPLElBQU1DLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBVTtBQUNsRixPQUFPLElBQU1DLGVBQWUsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFVIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L2ludGVyZmFjZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -6,6 +6,7 @@ import { arrow, autoUpdate, flip, FloatingArrow, FloatingPortal, offset as float
6
6
  import React, { cloneElement, useCallback, useMemo, useRef } from 'react';
7
7
  import { useControlledState, useEventCallback } from '@1money/hooks';
8
8
  import { joinCls } from '../../utils/classnames';
9
+ import { useFloatingAnimation } from '../../hooks/useFloatingAnimation';
9
10
  import './style';
10
11
  var PREFIX = 'om-trigger';
11
12
  function normalizeTrigger(trigger) {
@@ -50,6 +51,7 @@ var Trigger = function Trigger(_ref) {
50
51
  autoReposition = _ref$autoReposition === void 0 ? true : _ref$autoReposition,
51
52
  _ref$matchTriggerWidt = _ref.matchTriggerWidth,
52
53
  matchTriggerWidth = _ref$matchTriggerWidt === void 0 ? false : _ref$matchTriggerWidt,
54
+ animation = _ref.animation,
53
55
  ref = _ref.ref;
54
56
  var arrowRef = useRef(null);
55
57
  var triggers = useMemo(function () {
@@ -100,7 +102,8 @@ var Trigger = function Trigger(_ref) {
100
102
  onOpenChange: handleOpenChange,
101
103
  placement: placement,
102
104
  whileElementsMounted: autoReposition ? autoUpdate : undefined,
103
- middleware: middleware
105
+ middleware: middleware,
106
+ transform: false
104
107
  }),
105
108
  refs = _useFloating.refs,
106
109
  floatingStyles = _useFloating.floatingStyles,
@@ -145,6 +148,9 @@ var Trigger = function Trigger(_ref) {
145
148
  var closePanel = useCallback(function () {
146
149
  return handleOpenChange(false);
147
150
  }, [handleOpenChange]);
151
+ var _useFloatingAnimation = useFloatingAnimation(context, resolvedPlacement, animation),
152
+ isMounted = _useFloatingAnimation.isMounted,
153
+ transitionStyles = _useFloatingAnimation.styles;
148
154
  var arrowData = context.middlewareData.arrow;
149
155
  var arrowVars = Object.assign(Object.assign({}, (arrowData === null || arrowData === void 0 ? void 0 : arrowData.x) != null && {
150
156
  '--arrow-x': "".concat(arrowData.x, "px")
@@ -153,7 +159,7 @@ var Trigger = function Trigger(_ref) {
153
159
  });
154
160
  var panel = _jsxs("div", Object.assign({
155
161
  ref: refs.setFloating,
156
- style: Object.assign(Object.assign(Object.assign({}, floatingStyles), arrowVars), overlayStyle),
162
+ style: Object.assign(Object.assign(Object.assign(Object.assign({}, floatingStyles), arrowVars), transitionStyles), overlayStyle),
157
163
  className: joinCls("".concat(PREFIX, "-panel"), overlayClassName),
158
164
  "data-placement": resolvedPlacement,
159
165
  "data-side": placementMeta.side,
@@ -178,10 +184,10 @@ var Trigger = function Trigger(_ref) {
178
184
  }) : content]
179
185
  }));
180
186
  return _jsxs(_Fragment, {
181
- children: [/*#__PURE__*/cloneElement(children, referenceProps), innerOpen && (portal ? _jsx(FloatingPortal, {
187
+ children: [/*#__PURE__*/cloneElement(children, referenceProps), isMounted && (portal ? _jsx(FloatingPortal, {
182
188
  children: panel
183
189
  }) : panel)]
184
190
  });
185
191
  };
186
192
  export default Trigger;
187
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVHJpZ2dlci9UcmlnZ2VyLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9UcmlnZ2VyL1RyaWdnZXIudHN4Il0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImFycm93IiwiYXV0b1VwZGF0ZSIsImZsaXAiLCJGbG9hdGluZ0Fycm93IiwiRmxvYXRpbmdQb3J0YWwiLCJvZmZzZXQiLCJmbG9hdGluZ09mZnNldCIsInNoaWZ0Iiwic2l6ZSIsImZsb2F0aW5nU2l6ZSIsInVzZUNsaWNrIiwidXNlRGlzbWlzcyIsInVzZUZsb2F0aW5nIiwidXNlRm9jdXMiLCJ1c2VIb3ZlciIsInVzZUludGVyYWN0aW9ucyIsInVzZVJvbGUiLCJSZWFjdCIsImNsb25lRWxlbWVudCIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJqb2luQ2xzIiwiUFJFRklYIiwibm9ybWFsaXplVHJpZ2dlciIsInRyaWdnZXIiLCJBcnJheSIsImlzQXJyYXkiLCJzZXRSZWYiLCJyZWYiLCJub2RlIiwiX3R5cGVvZiIsImN1cnJlbnQiLCJUcmlnZ2VyIiwiX3JlZiIsImNvbnRlbnQiLCJfcmVmJHRyaWdnZXIiLCJfcmVmJHBsYWNlbWVudCIsInBsYWNlbWVudCIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJfcmVmJGRlZmF1bHRPcGVuIiwiZGVmYXVsdE9wZW4iLCJfcmVmJHNob3dBcnJvdyIsInNob3dBcnJvdyIsIl9yZWYkb2Zmc2V0IiwiX3JlZiRwb3J0YWwiLCJwb3J0YWwiLCJfcmVmJGRpc21pc3NpYmxlIiwiZGlzbWlzc2libGUiLCJob3ZlckRlbGF5Iiwib3ZlcmxheUNsYXNzTmFtZSIsIm92ZXJsYXlTdHlsZSIsImNoaWxkcmVuIiwiX3JlZiRkaXNhYmxlZCIsImRpc2FibGVkIiwib25PcGVuIiwib25DbG9zZSIsIl9yZWYkcm9sZSIsInJvbGUiLCJfcmVmJGF1dG9SZXBvc2l0aW9uIiwiYXV0b1JlcG9zaXRpb24iLCJfcmVmJG1hdGNoVHJpZ2dlcldpZHQiLCJtYXRjaFRyaWdnZXJXaWR0aCIsImFycm93UmVmIiwidHJpZ2dlcnMiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlubmVyT3BlbiIsInNldElubmVyT3BlbiIsImhhbmRsZU9wZW5DaGFuZ2UiLCJuZXh0T3BlbiIsIm9mZnNldElzT2JqZWN0Iiwib2Zmc2V0TWFpbkF4aXMiLCJtYWluQXhpcyIsIm9mZnNldENyb3NzQXhpcyIsImNyb3NzQXhpcyIsInVuZGVmaW5lZCIsIm9mZnNldEFsaWdubWVudEF4aXMiLCJhbGlnbm1lbnRBeGlzIiwibWlkZGxld2FyZSIsInBhZGRpbmciLCJlbGVtZW50IiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXBwbHkiLCJfcmVmMiIsInJlY3RzIiwiZWxlbWVudHMiLCJPYmplY3QiLCJhc3NpZ24iLCJmbG9hdGluZyIsInN0eWxlIiwid2lkdGgiLCJyZWZlcmVuY2UiLCJfdXNlRmxvYXRpbmciLCJ3aGlsZUVsZW1lbnRzTW91bnRlZCIsInJlZnMiLCJmbG9hdGluZ1N0eWxlcyIsImNvbnRleHQiLCJyZXNvbHZlZFBsYWNlbWVudCIsImNsaWNrSW50ZXJhY3Rpb24iLCJlbmFibGVkIiwiaW5jbHVkZXMiLCJob3ZlckludGVyYWN0aW9uIiwiZGVsYXkiLCJmb2N1c0ludGVyYWN0aW9uIiwiZGlzbWlzc0ludGVyYWN0aW9uIiwicm9sZUludGVyYWN0aW9uIiwiX3VzZUludGVyYWN0aW9ucyIsImdldFJlZmVyZW5jZVByb3BzIiwiZ2V0RmxvYXRpbmdQcm9wcyIsImNvbXBvc2VkUmVmIiwic2V0UmVmZXJlbmNlIiwicmVmZXJlbmNlUHJvcHMiLCJwbGFjZW1lbnRNZXRhIiwiX3NwbGl0Iiwic3BsaXQiLCJfc3BsaXQyIiwic2lkZSIsImFsaWduIiwiY2xvc2VQYW5lbCIsImFycm93RGF0YSIsIm1pZGRsZXdhcmVEYXRhIiwiYXJyb3dWYXJzIiwieCIsInkiLCJwYW5lbCIsInNldEZsb2F0aW5nIiwiY2xhc3NOYW1lIiwicG9zaXRpb24iLCJoZWlnaHQiLCJwb2ludGVyRXZlbnRzIiwidmlzaWJpbGl0eSIsImNsb3NlIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFBSSxJQUFJQyxLQUFLLEVBQUVDLFFBQVEsSUFBSUMsU0FBUyxRQUFRLG1CQUFtQjtBQ0FyRixTQUNFQyxLQUFLLEVBQ0xDLFVBQVUsRUFDVkMsSUFBSSxFQUNKQyxhQUFhLEVBQ2JDLGNBQWMsRUFDZEMsTUFBTSxJQUFJQyxjQUFjLEVBQ3hCQyxLQUFLLEVBQ0xDLElBQUksSUFBSUMsWUFBWSxFQUNwQkMsUUFBUSxFQUNSQyxVQUFVLEVBQ1ZDLFdBQVcsRUFDWEMsUUFBUSxFQUNSQyxRQUFRLEVBQ1JDLGVBQWUsRUFDZkMsT0FBTyxRQUNGLG9CQUFvQjtBQUMzQixPQUFPQyxLQUFLLElBQUlDLFlBQVksRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLGtCQUFrQixFQUFFQyxnQkFBZ0IsUUFBUSxlQUFlO0FBQ3BFLFNBQVNDLE9BQU8sUUFBUSx3QkFBd0I7QUFHaEQsT0FBTyxTQUFTO0FBRWhCLElBQU1DLE1BQU0sR0FBRyxZQUFZO0FBRTNCLFNBQVNDLGdCQUFnQkEsQ0FDdkJDLE9BQXdDLEVBQUE7RUFFeEMsT0FBT0MsS0FBSyxDQUFDQyxPQUFPLENBQUNGLE9BQU8sQ0FBQyxHQUFHQSxPQUFPLEdBQUcsQ0FBQ0EsT0FBTyxDQUFDO0FBQ3JEO0FBRUEsU0FBU0csTUFBTUEsQ0FBSUMsR0FBb0MsRUFBRUMsSUFBYyxFQUFBO0VBQ3JFLElBQUksT0FBT0QsR0FBRyxLQUFLLFVBQVUsRUFBRTtJQUM3QkEsR0FBRyxDQUFDQyxJQUFJLENBQUM7RUFDWCxDQUFDLE1BQU0sSUFBSUQs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Q0FFZDtFQUVELE9BQ0V4QyxLQUFBLENBQUFFLFNBQUEsRUFBQTtJQUFBd0QsUUFBQSxFQUFBLGNBQ0dyQyxZQUFZLENBQUNxQyxRQUFRLEVBQUU4RCxjQUFjLENBQUMsRUFDdEM5QyxTQUFTLEtBQUt0QixNQUFNLEdBQUd0RCxJQUFBLENBQUNTLGNBQWMsRUFBQTtNQUFBbUQsUUFBQSxFQUFFMkU7SUFBSyxDQUFBLENBQWtCLEdBQUdBLEtBQUssQ0FBQztFQUFBLENBQUEsQ0FDeEU7QUFFUCxDQUFDO0FBRUQsZUFBZS9GLE9BQU8iLCJmaWxlIjoiY29tcG9uZW50cy9UcmlnZ2VyL1RyaWdnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cywgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBhcnJvdywgYXV0b1VwZGF0ZSwgZmxpcCwgRmxvYXRpbmdBcnJvdywgRmxvYXRpbmdQb3J0YWwsIG9mZnNldCBhcyBmbG9hdGluZ09mZnNldCwgc2hpZnQsIHNpemUgYXMgZmxvYXRpbmdTaXplLCB1c2VDbGljaywgdXNlRGlzbWlzcywgdXNlRmxvYXRpbmcsIHVzZUZvY3VzLCB1c2VIb3ZlciwgdXNlSW50ZXJhY3Rpb25zLCB1c2VSb2xlLCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHsgY2xvbmVFbGVtZW50LCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgUFJFRklYID0gJ29tLXRyaWdnZXInO1xuZnVuY3Rpb24gbm9ybWFsaXplVHJpZ2dlcih0cmlnZ2VyKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHJpZ2dlcikgPyB0cmlnZ2VyIDogW3RyaWdnZXJdO1xufVxuZnVuY3Rpb24gc2V0UmVmKHJlZiwgbm9kZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlZihub2RlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocmVmICYmIHR5cGVvZiByZWYgPT09ICdvYmplY3QnICYmICdjdXJyZW50JyBpbiByZWYpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgIH1cbn1cbmNvbnN0IFRyaWdnZXIgPSAoeyBjb250ZW50LCB0cmlnZ2VyID0gJ2NsaWNrJywgcGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCcsIG9wZW4sIG9uT3BlbkNoYW5nZSwgZGVmYXVsdE9wZW4gPSBmYWxzZSwgc2hvd0Fycm93ID0gZmFsc2UsIG9mZnNldCA9IDQsIHBvcnRhbCA9IHRydWUsIGRpc21pc3NpYmxlID0gdHJ1ZSwgaG92ZXJEZWxheSwgb3ZlcmxheUNsYXNzTmFtZSwgb3ZlcmxheVN0eWxlLCBjaGlsZHJlbiwgZGlzYWJsZWQgPSBmYWxzZSwgb25PcGVuLCBvbkNsb3NlLCByb2xlID0gJ2RpYWxvZycsIGF1dG9SZXBvc2l0aW9uID0gdHJ1ZSwgbWF0Y2hUcmlnZ2VyV2lkdGggPSBmYWxzZSwgcmVmLCB9KSA9PiB7XG4gICAgY29uc3QgYXJyb3dSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdHJpZ2dlcnMgPSB1c2VNZW1vKCgpID0+IG5vcm1hbGl6ZVRyaWdnZXIodHJpZ2dlciksIFt0cmlnZ2VyXSk7XG4gICAgY29uc3QgW2lubmVyT3Blbiwgc2V0SW5uZXJPcGVuXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0T3Blbiwgb3Blbik7XG4gICAgY29uc3QgaGFuZGxlT3BlbkNoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRPcGVuKSA9PiB7XG4gICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0SW5uZXJPcGVuKG5leHRPcGVuKTtcbiAgICAgICAgb25PcGVuQ2hhbmdlID09PSBudWxsIHx8IG9uT3BlbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25PcGVuQ2hhbmdlKG5leHRPcGVuKTtcbiAgICAgICAgaWYgKG5leHRPcGVuKSB7XG4gICAgICAgICAgICBvbk9wZW4gPT09IG51bGwgfHwgb25PcGVuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbk9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9uQ2xvc2UgPT09IG51bGwgfHwgb25DbG9zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbG9zZSgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgb2Zmc2V0SXNPYmplY3QgPSB0eXBlb2Ygb2Zmc2V0ID09PSAnb2JqZWN0JyAmJiBvZmZzZXQgIT09IG51bGw7XG4gICAgY29uc3Qgb2Zmc2V0TWFpbkF4aXMgPSBvZmZzZXRJc09iamVjdCA/IG9mZnNldC5tYWluQXhpcyA6IG9mZnNldDtcbiAgICBjb25zdCBvZmZzZXRDcm9zc0F4aXMgPSBvZmZzZXRJc09iamVjdCA/IG9mZnNldC5jcm9zc0F4aXMgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb2Zmc2V0QWxpZ25tZW50QXhpcyA9IG9mZnNldElzT2JqZWN0ID8gb2Zmc2V0LmFsaWdubWVudEF4aXMgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWlkZGxld2FyZSA9IHVzZU1lbW8oKCkgPT4gW1xuICAgICAgICBmbG9hdGluZ09mZnNldCh7XG4gICAgICAgICAgICBtYWluQXhpczogb2Zmc2V0TWFpbkF4aXMsXG4gICAgICAgICAgICBjcm9zc0F4aXM6IG9mZnNldENyb3NzQXhpcyxcbiAgICAgICAgICAgIGFsaWdubWVudEF4aXM6IG9mZnNldEFsaWdubWVudEF4aXMsXG4gICAgICAgIH0pLFxuICAgICAgICBmbGlwKHsgcGFkZGluZzogOCB9KSxcbiAgICAgICAgc2hpZnQoeyBwYWRkaW5nOiA4IH0pLFxuICAgICAgICBhcnJvdyh7IGVsZW1lbnQ6IGFycm93UmVmLCBwYWRkaW5nOiA4IH0pLFxuICAgICAgICAuLi4obWF0Y2hUcmlnZ2VyV2lkdGhcbiAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgIGZsb2F0aW5nU2l6ZSh7XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5KHsgcmVjdHMsIGVsZW1lbnRzIH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudHMuZmxvYXRpbmcuc3R5bGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYCR7cmVjdHMucmVmZXJlbmNlLndpZHRofXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgXSwgW29mZnNldE1haW5BeGlzLCBvZmZzZXRDcm9zc0F4aXMsIG9mZnNldEFsaWdubWVudEF4aXMsIG1hdGNoVHJpZ2dlcldpZHRoXSk7XG4gICAgY29uc3QgeyByZWZzLCBmbG9hdGluZ1N0eWxlcywgY29udGV4dCwgcGxhY2VtZW50OiByZXNvbHZlZFBsYWNlbWVudCB9ID0gdXNlRmxvYXRpbmcoe1xuICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgIG9uT3BlbkNoYW5nZTogaGFuZGxlT3BlbkNoYW5nZSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1JlcG9zaXRpb24gPyBhdXRvVXBkYXRlIDogdW5kZWZpbmVkLFxuICAgICAgICBtaWRkbGV3YXJlLFxuICAgIH0pO1xuICAgIGNvbnN0IGNsaWNrSW50ZXJhY3Rpb24gPSB1c2VDbGljayhjb250ZXh0LCB7XG4gICAgICAgIGVuYWJsZWQ6IHRyaWdnZXJzLmluY2x1ZGVzKCdjbGljaycpICYmICFkaXNhYmxlZCxcbiAgICB9KTtcbiAgICBjb25zdCBob3ZlckludGVyYWN0aW9uID0gdXNlSG92ZXIoY29udGV4dCwge1xuICAgICAgICBlbmFibGVkOiB0cmlnZ2Vycy5pbmNsdWRlcygnaG92ZXInKSAmJiAhZGlzYWJsZWQsXG4gICAgICAgIGRlbGF5OiBob3ZlckRlbGF5LFxuICAgIH0pO1xuICAgIGNvbnN0IGZvY3VzSW50ZXJhY3Rpb24gPSB1c2VGb2N1cyhjb250ZXh0LCB7XG4gICAgICAgIGVuYWJsZWQ6IHRyaWdnZXJzLmluY2x1ZGVzKCdmb2N1cycpICYmICFkaXNhYmxlZCxcbiAgICB9KTtcbiAgICBjb25zdCBkaXNtaXNzSW50ZXJhY3Rpb24gPSB1c2VEaXNtaXNzKGNvbnRleHQsIHtcbiAgICAgICAgZW5hYmxlZDogZGlzbWlzc2libGUsXG4gICAgfSk7XG4gICAgY29uc3Qgcm9sZUludGVyYWN0aW9uID0gdXNlUm9sZShjb250ZXh0LCB7IHJvbGUgfSk7XG4gICAgY29uc3QgeyBnZXRSZWZlcmVuY2VQcm9wcywgZ2V0RmxvYXRpbmdQcm9wcyB9ID0gdXNlSW50ZXJhY3Rpb25zKFtcbiAgICAgICAgY2xpY2tJbnRlcmFjdGlvbixcbiAgICAgICAgaG92ZXJJbnRlcmFjdGlvbixcbiAgICAgICAgZm9jdXNJbnRlcmFjdGlvbixcbiAgICAgICAgZGlzbWlzc0ludGVyYWN0aW9uLFxuICAgICAgICByb2xlSW50ZXJhY3Rpb24sXG4gICAgXSk7XG4gICAgY29uc3QgY29tcG9zZWRSZWYgPSB1c2VDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICByZWZzLnNldFJlZmVyZW5jZShub2RlKTtcbiAgICAgICAgc2V0UmVmKHJlZiwgbm9kZSk7XG4gICAgfSwgW3JlZnMuc2V0UmVmZXJlbmNlLCByZWZdKTtcbiAgICBjb25zdCByZWZlcmVuY2VQcm9wcyA9IGdldFJlZmVyZW5jZVByb3BzKHsgcmVmOiBjb21wb3NlZFJlZiB9KTtcbiAgICBjb25zdCBwbGFjZW1lbnRNZXRhID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IFtzaWRlLCBhbGlnbl0gPSAocmVzb2x2ZWRQbGFjZW1lbnQgIT09IG51bGwgJiYgcmVzb2x2ZWRQbGFjZW1lbnQgIT09IHZvaWQgMCA/IHJlc29sdmVkUGxhY2VtZW50IDogJ2JvdHRvbS1zdGFydCcpLnNwbGl0KCctJyk7XG4gICAgICAgIHJldHVybiB7IHNpZGUsIGFsaWduIH07XG4gICAgfSwgW3Jlc29sdmVkUGxhY2VtZW50XSk7XG4gICAgY29uc3QgY2xvc2VQYW5lbCA9IHVzZUNhbGxiYWNrKCgpID0+IGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpLCBbaGFuZGxlT3BlbkNoYW5nZV0pO1xuICAgIGNvbnN0IGFycm93RGF0YSA9IGNvbnRleHQubWlkZGxld2FyZURhdGEuYXJyb3c7XG4gICAgY29uc3QgYXJyb3dWYXJzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCAoKGFycm93RGF0YSA9PT0gbnVsbCB8fCBhcnJvd0RhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFycm93RGF0YS54KSAhPSBudWxsICYmIHsgJy0tYXJyb3cteCc6IGAke2Fycm93RGF0YS54fXB4YCB9KSksICgoYXJyb3dEYXRhID09PSBudWxsIHx8IGFycm93RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJyb3dEYXRhLnkpICE9IG51bGwgJiYgeyAnLS1hcnJvdy15JzogYCR7YXJyb3dEYXRhLnl9cHhgIH0pKTtcbiAgICBjb25zdCBwYW5lbCA9IChfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHsgcmVmOiByZWZzLnNldEZsb2F0aW5nLCBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGZsb2F0aW5nU3R5bGVzKSwgYXJyb3dWYXJzKSwgb3ZlcmxheVN0eWxlKSwgY2xhc3NOYW1lOiBqb2luQ2xzKGAke1BSRUZJWH0tcGFuZWxgLCBvdmVybGF5Q2xhc3NOYW1lKSwgXCJkYXRhLXBsYWNlbWVudFwiOiByZXNvbHZlZFBsYWNlbWVudCwgXCJkYXRhLXNpZGVcIjogcGxhY2VtZW50TWV0YS5zaWRlLCBcImRhdGEtYWxpZ25cIjogcGxhY2VtZW50TWV0YS5hbGlnbiB9LCBnZXRGbG9hdGluZ1Byb3BzKCksIHsgY2hpbGRyZW46IFtzaG93QXJyb3cgPyAoX2pzeChGbG9hdGluZ0Fycm93LCB7IHJlZjogYXJyb3dSZWYsIGNvbnRleHQ6IGNvbnRleHQsIGNsYXNzTmFtZTogYCR7UFJFRklYfS1hcnJvd2AgfSkpIDogKF9qc3goXCJzcGFuXCIsIHsgcmVmOiBhcnJvd1JlZiwgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgfSB9KSksIHR5cGVvZiBjb250ZW50ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyBjb250ZW50KHsgY2xvc2U6IGNsb3NlUGFuZWwsIG9wZW46IGlubmVyT3BlbiB9KVxuICAgICAgICAgICAgICAgIDogY29udGVudF0gfSkpKTtcbiAgICByZXR1cm4gKF9qc3hzKF9GcmFnbWVudCwgeyBjaGlsZHJlbjogW2Nsb25lRWxlbWVudChjaGlsZHJlbiwgcmVmZXJlbmNlUHJvcHMpLCBpbm5lck9wZW4gJiYgKHBvcnRhbCA/IF9qc3goRmxvYXRpbmdQb3J0YWwsIHsgY2hpbGRyZW46IHBhbmVsIH0pIDogcGFuZWwpXSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgVHJpZ2dlcjsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
193
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVHJpZ2dlci9UcmlnZ2VyLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9UcmlnZ2VyL1RyaWdnZXIudHN4Il0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImFycm93IiwiYXV0b1VwZGF0ZSIsImZsaXAiLCJGbG9hdGluZ0Fycm93IiwiRmxvYXRpbmdQb3J0YWwiLCJvZmZzZXQiLCJmbG9hdGluZ09mZnNldCIsInNoaWZ0Iiwic2l6ZSIsImZsb2F0aW5nU2l6ZSIsInVzZUNsaWNrIiwidXNlRGlzbWlzcyIsInVzZUZsb2F0aW5nIiwidXNlRm9jdXMiLCJ1c2VIb3ZlciIsInVzZUludGVyYWN0aW9ucyIsInVzZVJvbGUiLCJSZWFjdCIsImNsb25lRWxlbWVudCIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJqb2luQ2xzIiwidXNlRmxvYXRpbmdBbmltYXRpb24iLCJQUkVGSVgiLCJub3JtYWxpemVUcmlnZ2VyIiwidHJpZ2dlciIsIkFycmF5IiwiaXNBcnJheSIsInNldFJlZiIsInJlZiIsIm5vZGUiLCJfdHlwZW9mIiwiY3VycmVudCIsIlRyaWdnZXIiLCJfcmVmIiwiY29udGVudCIsIl9yZWYkdHJpZ2dlciIsIl9yZWYkcGxhY2VtZW50IiwicGxhY2VtZW50Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsIl9yZWYkZGVmYXVsdE9wZW4iLCJkZWZhdWx0T3BlbiIsIl9yZWYkc2hvd0Fycm93Iiwic2hvd0Fycm93IiwiX3JlZiRvZmZzZXQiLCJfcmVmJHBvcnRhbCIsInBvcnRhbCIsIl9yZWYkZGlzbWlzc2libGUiLCJkaXNtaXNzaWJsZSIsImhvdmVyRGVsYXkiLCJvdmVybGF5Q2xhc3NOYW1lIiwib3ZlcmxheVN0eWxlIiwiY2hpbGRyZW4iLCJfcmVmJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJvbk9wZW4iLCJvbkNsb3NlIiwiX3JlZiRyb2xlIiwicm9sZSIsIl9yZWYkYXV0b1JlcG9zaXRpb24iLCJhdXRvUmVwb3NpdGlvbiIsIl9yZWYkbWF0Y2hUcmlnZ2VyV2lkdCIsIm1hdGNoVHJpZ2dlcldpZHRoIiwiYW5pbWF0aW9uIiwiYXJyb3dSZWYiLCJ0cmlnZ2VycyIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaW5uZXJPcGVuIiwic2V0SW5uZXJPcGVuIiwiaGFuZGxlT3BlbkNoYW5nZSIsIm5leHRPcGVuIiwib2Zmc2V0SXNPYmplY3QiLCJvZmZzZXRNYWluQXhpcyIsIm1haW5BeGlzIiwib2Zmc2V0Q3Jvc3NBeGlzIiwiY3Jvc3NBeGlzIiwidW5kZWZpbmVkIiwib2Zmc2V0QWxpZ25tZW50QXhpcyIsImFsaWdubWVudEF4aXMiLCJtaWRkbGV3YXJlIiwicGFkZGluZyIsImVsZW1lbnQiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcHBseSIsIl9yZWYyIiwicmVjdHMiLCJlbGVtZW50cyIsIk9iamVjdCIsImFzc2lnbiIsImZsb2F0aW5nIiwic3R5bGUiLCJ3aWR0aCIsInJlZmVyZW5jZSIsIl91c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkIiwidHJhbnNmb3JtIiwicmVmcyIsImZsb2F0aW5nU3R5bGVzIiwiY29udGV4dCIsInJlc29sdmVkUGxhY2VtZW50IiwiY2xpY2tJbnRlcmFjdGlvbiIsImVuYWJsZWQiLCJpbmNsdWRlcyIsImhvdmVySW50ZXJhY3Rpb24iLCJkZWxheSIsImZvY3VzSW50ZXJhY3Rpb24iLCJkaXNtaXNzSW50ZXJhY3Rpb24iLCJyb2xlSW50ZXJhY3Rpb24iLCJfdXNlSW50ZXJhY3Rpb25zIiwiZ2V0UmVmZXJlbmNlUHJvcHMiLCJnZXRGbG9hdGluZ1Byb3BzIiwiY29tcG9zZWRSZWYiLCJzZXRSZWZlcmVuY2UiLCJyZWZlcmVuY2VQcm9wcyIsInBsYWNlbWVudE1ldGEiLCJfc3BsaXQiLCJzcGxpdCIsIl9zcGxpdDIiLCJzaWRlIiwiYWxpZ24iLCJjbG9zZVBhbmVsIiwiX3VzZUZsb2F0aW5nQW5pbWF0aW9uIiwiaXNNb3VudGVkIiwidHJhbnNpdGlvblN0eWxlcyIsInN0eWxlcyIsImFycm93RGF0YSIsIm1pZGRsZXdhcmVEYXRhIiwiYXJyb3dWYXJzIiwieCIsInkiLCJwYW5lbCIsInNldEZsb2F0aW5nIiwiY2xhc3NOYW1lIiwicG9zaXRpb24iLCJoZWlnaHQiLCJwb2ludGVyRXZlbnRzIiwidmlzaWJpbGl0eSIsImNsb3NlIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFBSSxJQUFJQyxLQUFLLEVBQUVDLFFBQVEsSUFBSUMsU0FBUyxRQUFRLG1CQUFtQjtBQ0FyRixTQUNFQyxLQUFLLEVBQ0xDLFVBQVUsRUFDVkMsSUFBSSxFQUNKQyxhQUFhLEVBQ2JDLGNBQWMsRUFDZEMsTUFBTSxJQUFJQyxjQUFjLEVBQ3hCQyxLQUFLLEVBQ0xDLElBQUksSUFBSUMsWUFBWSxFQUNwQkMsUUFBUSxFQUNSQyxVQUFVLEVBQ1ZDLFdBQVcsRUFDWEMsUUFBUSxFQUNSQyxRQUFRLEVBQ1JDLGVBQWUsRUFDZkMsT0FBTyxRQUNGLG9CQUFvQjtBQUMzQixPQUFPQyxLQUFLLElBQUlDLFlBQVksRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLGtCQUFrQixFQUFFQyxnQkFBZ0IsUUFBUSxlQUFlO0FBQ3BFLFNBQVNDLE9BQU8sUUFBUSx3QkFBd0I7QUFDaEQsU0FBU0Msb0JBQW9CLFFBQVEsa0NBQWtDO0FBR3ZFLE9BQU8sU0FBUztBQUVoQixJQUFNQyxNQUFNLEdBQUcsWUFBWTtBQUUzQixTQUFTQyxnQkFBZ0JBLENBQ3ZCQyxPQUF3QyxFQUFBO0VBRXhDLE9BQU9DLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixPQUFPLENBQUMsR0FBR0EsT0FBTyxHQUFHLENBQUNBLE9BQU8s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QUVBLE9BQU87TUFDaEJrQyxTQUFTLEtBQUFuRCxNQUFBLENBQUs5RCxNQUFNO0lBQVEsQ0FBQSxDQUM1QixHQUVGL0IsSUFBQSxDQUFBLE1BQUEsRUFBQTtNQUNFcUMsR0FBRyxFQUFFb0MsUUFBbUQ7TUFDeEQ2QixLQUFLLEVBQUU7UUFDTDJDLFFBQVEsRUFBRSxVQUFVO1FBQ3BCMUMsS0FBSyxFQUFFLENBQUM7UUFDUjJDLE1BQU0sRUFBRSxDQUFDO1FBQ1RDLGFBQWEsRUFBRSxNQUFNO1FBQ3JCQyxVQUFVLEVBQUU7TUQ1RlI7SUM2RkwsQ0FBQSxDQUVKLEVBQ0EsT0FBT3pHLE9BQU8sS0FBSyxVQUFVLEdBQzFCQSxPQUFPLENBQUM7TUFBRTBHLEtBQUssRUFBRWpCLFVBQVU7TUFBRXJGLElBQUksRUFBRStCO0lBQVMsQ0FBRSxDQUFDLEdBQy9DbkMsT0FBTztFQUFBLENBQUEsQ0FBQSxDQUVkO0VBRUQsT0FDRXpDLEtBQUEsQ0FBQUUsU0FBQSxFQUFBO0lBQUF5RCxRQUFBLEVBQUEsY0FDR3RDLFlBQVksQ0FBQ3NDLFFBQVEsRUFBRWdFLGNBQWMsQ0FBQyxFQUN0Q1MsU0FBUyxLQUFLL0UsTUFBTSxHQUFHdkQsSUFBQSxDQUFDUyxjQUFjLEVBQUE7TUFBQW9ELFFBQUEsRUFBRWlGO0lBQUssQ0FBQSxDQUFrQixHQUFHQSxLQUFLLENBQUM7RUFBQSxDQUFBLENBQ3hFO0FBRVAsQ0FBQztBQUVELGVBQWVyRyxPQUFPIiwiZmlsZSI6ImNvbXBvbmVudHMvVHJpZ2dlci9UcmlnZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMsIEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgYXJyb3csIGF1dG9VcGRhdGUsIGZsaXAsIEZsb2F0aW5nQXJyb3csIEZsb2F0aW5nUG9ydGFsLCBvZmZzZXQgYXMgZmxvYXRpbmdPZmZzZXQsIHNoaWZ0LCBzaXplIGFzIGZsb2F0aW5nU2l6ZSwgdXNlQ2xpY2ssIHVzZURpc21pc3MsIHVzZUZsb2F0aW5nLCB1c2VGb2N1cywgdXNlSG92ZXIsIHVzZUludGVyYWN0aW9ucywgdXNlUm9sZSwgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuaW1wb3J0IFJlYWN0LCB7IGNsb25lRWxlbWVudCwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRyb2xsZWRTdGF0ZSwgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuaW1wb3J0IHsgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgdXNlRmxvYXRpbmdBbmltYXRpb24gfSBmcm9tICcuLi8uLi9ob29rcy91c2VGbG9hdGluZ0FuaW1hdGlvbic7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgUFJFRklYID0gJ29tLXRyaWdnZXInO1xuZnVuY3Rpb24gbm9ybWFsaXplVHJpZ2dlcih0cmlnZ2VyKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHJpZ2dlcikgPyB0cmlnZ2VyIDogW3RyaWdnZXJdO1xufVxuZnVuY3Rpb24gc2V0UmVmKHJlZiwgbm9kZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlZihub2RlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocmVmICYmIHR5cGVvZiByZWYgPT09ICdvYmplY3QnICYmICdjdXJyZW50JyBpbiByZWYpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgIH1cbn1cbmNvbnN0IFRyaWdnZXIgPSAoeyBjb250ZW50LCB0cmlnZ2VyID0gJ2NsaWNrJywgcGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCcsIG9wZW4sIG9uT3BlbkNoYW5nZSwgZGVmYXVsdE9wZW4gPSBmYWxzZSwgc2hvd0Fycm93ID0gZmFsc2UsIG9mZnNldCA9IDQsIHBvcnRhbCA9IHRydWUsIGRpc21pc3NpYmxlID0gdHJ1ZSwgaG92ZXJEZWxheSwgb3ZlcmxheUNsYXNzTmFtZSwgb3ZlcmxheVN0eWxlLCBjaGlsZHJlbiwgZGlzYWJsZWQgPSBmYWxzZSwgb25PcGVuLCBvbkNsb3NlLCByb2xlID0gJ2RpYWxvZycsIGF1dG9SZXBvc2l0aW9uID0gdHJ1ZSwgbWF0Y2hUcmlnZ2VyV2lkdGggPSBmYWxzZSwgYW5pbWF0aW9uLCByZWYsIH0pID0+IHtcbiAgICBjb25zdCBhcnJvd1JlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCB0cmlnZ2VycyA9IHVzZU1lbW8oKCkgPT4gbm9ybWFsaXplVHJpZ2dlcih0cmlnZ2VyKSwgW3RyaWdnZXJdKTtcbiAgICBjb25zdCBbaW5uZXJPcGVuLCBzZXRJbm5lck9wZW5dID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRPcGVuLCBvcGVuKTtcbiAgICBjb25zdCBoYW5kbGVPcGVuQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dE9wZW4pID0+IHtcbiAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRJbm5lck9wZW4obmV4dE9wZW4pO1xuICAgICAgICBvbk9wZW5DaGFuZ2UgPT09IG51bGwgfHwgb25PcGVuQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbk9wZW5DaGFuZ2UobmV4dE9wZW4pO1xuICAgICAgICBpZiAobmV4dE9wZW4pIHtcbiAgICAgICAgICAgIG9uT3BlbiA9PT0gbnVsbCB8fCBvbk9wZW4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uT3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb25DbG9zZSA9PT0gbnVsbCB8fCBvbkNsb3NlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBvZmZzZXRJc09iamVjdCA9IHR5cGVvZiBvZmZzZXQgPT09ICdvYmplY3QnICYmIG9mZnNldCAhPT0gbnVsbDtcbiAgICBjb25zdCBvZmZzZXRNYWluQXhpcyA9IG9mZnNldElzT2JqZWN0ID8gb2Zmc2V0Lm1haW5BeGlzIDogb2Zmc2V0O1xuICAgIGNvbnN0IG9mZnNldENyb3NzQXhpcyA9IG9mZnNldElzT2JqZWN0ID8gb2Zmc2V0LmNyb3NzQXhpcyA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvZmZzZXRBbGlnbm1lbnRBeGlzID0gb2Zmc2V0SXNPYmplY3QgPyBvZmZzZXQuYWxpZ25tZW50QXhpcyA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtaWRkbGV3YXJlID0gdXNlTWVtbygoKSA9PiBbXG4gICAgICAgIGZsb2F0aW5nT2Zmc2V0KHtcbiAgICAgICAgICAgIG1haW5BeGlzOiBvZmZzZXRNYWluQXhpcyxcbiAgICAgICAgICAgIGNyb3NzQXhpczogb2Zmc2V0Q3Jvc3NBeGlzLFxuICAgICAgICAgICAgYWxpZ25tZW50QXhpczogb2Zmc2V0QWxpZ25tZW50QXhpcyxcbiAgICAgICAgfSksXG4gICAgICAgIGZsaXAoeyBwYWRkaW5nOiA4IH0pLFxuICAgICAgICBzaGlmdCh7IHBhZGRpbmc6IDggfSksXG4gICAgICAgIGFycm93KHsgZWxlbWVudDogYXJyb3dSZWYsIHBhZGRpbmc6IDggfSksXG4gICAgICAgIC4uLihtYXRjaFRyaWdnZXJXaWR0aFxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgZmxvYXRpbmdTaXplKHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHkoeyByZWN0cywgZWxlbWVudHMgfSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50cy5mbG9hdGluZy5zdHlsZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBgJHtyZWN0cy5yZWZlcmVuY2Uud2lkdGh9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICA6IFtdKSxcbiAgICBdLCBbb2Zmc2V0TWFpbkF4aXMsIG9mZnNldENyb3NzQXhpcywgb2Zmc2V0QWxpZ25tZW50QXhpcywgbWF0Y2hUcmlnZ2VyV2lkdGhdKTtcbiAgICBjb25zdCB7IHJlZnMsIGZsb2F0aW5nU3R5bGVzLCBjb250ZXh0LCBwbGFjZW1lbnQ6IHJlc29sdmVkUGxhY2VtZW50IH0gPSB1c2VGbG9hdGluZyh7XG4gICAgICAgIG9wZW46IGlubmVyT3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlOiBoYW5kbGVPcGVuQ2hhbmdlLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvUmVwb3NpdGlvbiA/IGF1dG9VcGRhdGUgOiB1bmRlZmluZWQsXG4gICAgICAgIG1pZGRsZXdhcmUsXG4gICAgICAgIHRyYW5zZm9ybTogZmFsc2UsXG4gICAgfSk7XG4gICAgY29uc3QgY2xpY2tJbnRlcmFjdGlvbiA9IHVzZUNsaWNrKGNvbnRleHQsIHtcbiAgICAgICAgZW5hYmxlZDogdHJpZ2dlcnMuaW5jbHVkZXMoJ2NsaWNrJykgJiYgIWRpc2FibGVkLFxuICAgIH0pO1xuICAgIGNvbnN0IGhvdmVySW50ZXJhY3Rpb24gPSB1c2VIb3Zlcihjb250ZXh0LCB7XG4gICAgICAgIGVuYWJsZWQ6IHRyaWdnZXJzLmluY2x1ZGVzKCdob3ZlcicpICYmICFkaXNhYmxlZCxcbiAgICAgICAgZGVsYXk6IGhvdmVyRGVsYXksXG4gICAgfSk7XG4gICAgY29uc3QgZm9jdXNJbnRlcmFjdGlvbiA9IHVzZUZvY3VzKGNvbnRleHQsIHtcbiAgICAgICAgZW5hYmxlZDogdHJpZ2dlcnMuaW5jbHVkZXMoJ2ZvY3VzJykgJiYgIWRpc2FibGVkLFxuICAgIH0pO1xuICAgIGNvbnN0IGRpc21pc3NJbnRlcmFjdGlvbiA9IHVzZURpc21pc3MoY29udGV4dCwge1xuICAgICAgICBlbmFibGVkOiBkaXNtaXNzaWJsZSxcbiAgICB9KTtcbiAgICBjb25zdCByb2xlSW50ZXJhY3Rpb24gPSB1c2VSb2xlKGNvbnRleHQsIHsgcm9sZSB9KTtcbiAgICBjb25zdCB7IGdldFJlZmVyZW5jZVByb3BzLCBnZXRGbG9hdGluZ1Byb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW1xuICAgICAgICBjbGlja0ludGVyYWN0aW9uLFxuICAgICAgICBob3ZlckludGVyYWN0aW9uLFxuICAgICAgICBmb2N1c0ludGVyYWN0aW9uLFxuICAgICAgICBkaXNtaXNzSW50ZXJhY3Rpb24sXG4gICAgICAgIHJvbGVJbnRlcmFjdGlvbixcbiAgICBdKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZiA9IHVzZUNhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0UmVmZXJlbmNlKG5vZGUpO1xuICAgICAgICBzZXRSZWYocmVmLCBub2RlKTtcbiAgICB9LCBbcmVmcy5zZXRSZWZlcmVuY2UsIHJlZl0pO1xuICAgIGNvbnN0IHJlZmVyZW5jZVByb3BzID0gZ2V0UmVmZXJlbmNlUHJvcHMoeyByZWY6IGNvbXBvc2VkUmVmIH0pO1xuICAgIGNvbnN0IHBsYWNlbWVudE1ldGEgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgW3NpZGUsIGFsaWduXSA9IChyZXNvbHZlZFBsYWNlbWVudCAhPT0gbnVsbCAmJiByZXNvbHZlZFBsYWNlbWVudCAhPT0gdm9pZCAwID8gcmVzb2x2ZWRQbGFjZW1lbnQgOiAnYm90dG9tLXN0YXJ0Jykuc3BsaXQoJy0nKTtcbiAgICAgICAgcmV0dXJuIHsgc2lkZSwgYWxpZ24gfTtcbiAgICB9LCBbcmVzb2x2ZWRQbGFjZW1lbnRdKTtcbiAgICBjb25zdCBjbG9zZVBhbmVsID0gdXNlQ2FsbGJhY2soKCkgPT4gaGFuZGxlT3BlbkNoYW5nZShmYWxzZSksIFtoYW5kbGVPcGVuQ2hhbmdlXSk7XG4gICAgY29uc3QgeyBpc01vdW50ZWQsIHN0eWxlczogdHJhbnNpdGlvblN0eWxlcyB9ID0gdXNlRmxvYXRpbmdBbmltYXRpb24oY29udGV4dCwgcmVzb2x2ZWRQbGFjZW1lbnQsIGFuaW1hdGlvbik7XG4gICAgY29uc3QgYXJyb3dEYXRhID0gY29udGV4dC5taWRkbGV3YXJlRGF0YS5hcnJvdztcbiAgICBjb25zdCBhcnJvd1ZhcnMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sICgoYXJyb3dEYXRhID09PSBudWxsIHx8IGFycm93RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJyb3dEYXRhLngpICE9IG51bGwgJiYgeyAnLS1hcnJvdy14JzogYCR7YXJyb3dEYXRhLnh9cHhgIH0pKSwgKChhcnJvd0RhdGEgPT09IG51bGwgfHwgYXJyb3dEYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcnJvd0RhdGEueSkgIT0gbnVsbCAmJiB7ICctLWFycm93LXknOiBgJHthcnJvd0RhdGEueX1weGAgfSkpO1xuICAgIGNvbnN0IHBhbmVsID0gKF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oeyByZWY6IHJlZnMuc2V0RmxvYXRpbmcsIHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmbG9hdGluZ1N0eWxlcyksIGFycm93VmFycyksIHRyYW5zaXRpb25TdHlsZXMpLCBvdmVybGF5U3R5bGUpLCBjbGFzc05hbWU6IGpvaW5DbHMoYCR7UFJFRklYfS1wYW5lbGAsIG92ZXJsYXlDbGFzc05hbWUpLCBcImRhdGEtcGxhY2VtZW50XCI6IHJlc29sdmVkUGxhY2VtZW50LCBcImRhdGEtc2lkZVwiOiBwbGFjZW1lbnRNZXRhLnNpZGUsIFwiZGF0YS1hbGlnblwiOiBwbGFjZW1lbnRNZXRhLmFsaWduIH0sIGdldEZsb2F0aW5nUHJvcHMoKSwgeyBjaGlsZHJlbjogW3Nob3dBcnJvdyA/IChfanN4KEZsb2F0aW5nQXJyb3csIHsgcmVmOiBhcnJvd1JlZiwgY29udGV4dDogY29udGV4dCwgY2xhc3NOYW1lOiBgJHtQUkVGSVh9LWFycm93YCB9KSkgOiAoX2pzeChcInNwYW5cIiwgeyByZWY6IGFycm93UmVmLCBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICB9IH0pKSwgdHlwZW9mIGNvbnRlbnQgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IGNvbnRlbnQoeyBjbG9zZTogY2xvc2VQYW5lbCwgb3BlbjogaW5uZXJPcGVuIH0pXG4gICAgICAgICAgICAgICAgOiBjb250ZW50XSB9KSkpO1xuICAgIHJldHVybiAoX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbY2xvbmVFbGVtZW50KGNoaWxkcmVuLCByZWZlcmVuY2VQcm9wcyksIGlzTW91bnRlZCAmJiAocG9ydGFsID8gX2pzeChGbG9hdGluZ1BvcnRhbCwgeyBjaGlsZHJlbjogcGFuZWwgfSkgOiBwYW5lbCldIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCBUcmlnZ2VyOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -1,5 +1,7 @@
1
1
  import type { CSSProperties, ReactElement, ReactNode, Ref } from 'react';
2
2
  import type { Placement } from '@floating-ui/react';
3
+ import type { FloatingAnimation } from "../../hooks/useFloatingAnimation";
4
+ export type { FloatingAnimation, FloatingAnimationKind } from "../../hooks/useFloatingAnimation";
3
5
  export type TriggerAction = 'click' | 'hover' | 'focus';
4
6
  export interface TriggerContentContext {
5
7
  close: () => void;
@@ -49,6 +51,13 @@ export interface TriggerProps {
49
51
  autoReposition?: boolean;
50
52
  /** Sync the floating panel width to the trigger element's width. Default false. */
51
53
  matchTriggerWidth?: boolean;
54
+ /**
55
+ * Open/close animation. Default `{ duration: { open: 150, close: 100 }, initialScale: 0.96 }`.
56
+ * Set to `false` to disable animation entirely (panel appears/disappears instantly).
57
+ * - `duration`: ms; pass a number for symmetric, or an object for separate open/close timings.
58
+ * - `initialScale`: starting scale on enter / ending scale on exit (`1` = no scale, `0` = collapsed).
59
+ */
60
+ animation?: FloatingAnimation;
52
61
  /** Custom class for floating panel */
53
62
  overlayClassName?: string;
54
63
  /** Custom style for floating panel */
@@ -0,0 +1,2 @@
1
+ export { useFloatingAnimation } from './useFloatingAnimation';
2
+ export type { FloatingAnimation, FloatingAnimationKind } from './useFloatingAnimation';