@onepercentio/one-ui 0.21.3 → 0.21.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.d.ts +15 -0
  2. package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.js +37 -0
  3. package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.js.map +1 -0
  4. package/ai/hooks/ui/useAlternating.ai.d.ts +9 -0
  5. package/ai/hooks/ui/useAlternating.ai.js +17 -0
  6. package/ai/hooks/ui/useAlternating.ai.js.map +1 -0
  7. package/ai/hooks/useHero.ai.d.ts +9 -0
  8. package/ai/hooks/useHero.ai.js +21 -0
  9. package/ai/hooks/useHero.ai.js.map +1 -0
  10. package/ai/types.d.ts +9 -0
  11. package/ai/types.js +3 -0
  12. package/ai/types.js.map +1 -0
  13. package/dist/assets/styles/variables.scss +0 -5
  14. package/dist/components/AdaptiveButton/AdaptiveButton.d.ts +2 -2
  15. package/dist/components/AdaptiveContainer/AdaptiveContainer.d.ts +2 -2
  16. package/dist/components/AdaptiveDialog/AdaptiveDialog.d.ts +4 -3
  17. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +6 -3
  18. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.d.ts +3 -0
  19. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +7 -6
  20. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.d.ts +2 -0
  21. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +13 -0
  22. package/dist/components/AnchoredTooltip/AnchoredTooltip.d.ts +3 -0
  23. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +5 -5
  24. package/dist/components/AnimatedEntrance/AnimatedEntrance.d.ts +3 -3
  25. package/dist/components/AsyncWrapper/AsyncWrapper.d.ts +2 -2
  26. package/dist/components/Avatar/Avatar.d.ts +2 -1
  27. package/dist/components/BucketFill/BucketFill.d.ts +3 -3
  28. package/dist/components/Button/Button.d.ts +2 -2
  29. package/dist/components/Button/Button.js +5 -4
  30. package/dist/components/Button/Button.module.scss +5 -2
  31. package/dist/components/Card/Card.d.ts +2 -2
  32. package/dist/components/Chart/Chart.logic.d.ts +3 -1
  33. package/dist/components/Chart/Chart.logic.js +2 -1
  34. package/dist/components/Chart/Chart.view.d.ts +2 -1
  35. package/dist/components/CheckBox/CheckBox.d.ts +1 -1
  36. package/dist/components/CodeInput/CodeInput.d.ts +9 -0
  37. package/dist/components/CodeInput/CodeInput.js +85 -0
  38. package/dist/components/CodeInput/CodeInput.module.scss +5 -0
  39. package/dist/components/CodeInput/index.d.ts +1 -0
  40. package/dist/components/CodeInput/index.js +14 -0
  41. package/dist/components/Collapsable/Collapsable.d.ts +5 -2
  42. package/dist/components/Collapsable/Collapsable.js +22 -7
  43. package/dist/components/Countdown/Countdown.d.ts +2 -1
  44. package/dist/components/Divider/Divider.d.ts +2 -1
  45. package/dist/components/EmailInput/EmailInput.d.ts +3 -0
  46. package/dist/components/EmailInput/EmailInput.js +5 -5
  47. package/dist/components/FadeIn/FadeIn.d.ts +3 -0
  48. package/dist/components/FadeIn/FadeIn.js +5 -4
  49. package/dist/components/FileInput/FileInput.d.ts +1 -1
  50. package/dist/components/FileInput/View/BigFactory/BigFactory.d.ts +2 -2
  51. package/dist/components/FileInput/View/Compact/Compact.d.ts +2 -1
  52. package/dist/components/FlowController/FlowController.d.ts +2 -2
  53. package/dist/components/Form/v2/Form.d.ts +18 -0
  54. package/dist/components/Form/v2/Form.hook.d.ts +21 -0
  55. package/dist/components/Form/v2/Form.hook.js +214 -0
  56. package/dist/components/Form/v2/Form.js +69 -0
  57. package/dist/components/Form/v2/Form.module.scss +0 -0
  58. package/dist/components/Form/v2/Form.types.d.ts +97 -0
  59. package/dist/components/Form/v2/Form.types.js +45 -0
  60. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.d.ts +12 -0
  61. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.js +74 -0
  62. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.module.scss +0 -0
  63. package/dist/components/Form/v2/FormField/Extensions/DateField/index.d.ts +1 -0
  64. package/dist/components/Form/v2/FormField/Extensions/DateField/index.js +14 -0
  65. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.d.ts +10 -0
  66. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.js +92 -0
  67. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.module.scss +0 -0
  68. package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.d.ts +1 -0
  69. package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.js +14 -0
  70. package/dist/components/Form/v2/FormField/FormField.d.ts +6 -0
  71. package/dist/components/Form/v2/FormField/FormField.js +309 -0
  72. package/dist/components/Form/v2/FormField/FormField.module.scss +0 -0
  73. package/dist/components/Form/v2/FormField/FormField.types.d.ts +83 -0
  74. package/dist/components/Form/v2/FormField/FormField.types.js +13 -0
  75. package/dist/components/Form/v2/FormField/index.d.ts +1 -0
  76. package/dist/components/Form/v2/FormField/index.js +14 -0
  77. package/dist/components/Form/v2/index.d.ts +1 -0
  78. package/dist/components/Form/v2/index.js +14 -0
  79. package/dist/components/HSForms/HSForms.d.ts +2 -1
  80. package/dist/components/Header/Header.d.ts +2 -2
  81. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.d.ts +2 -1
  82. package/dist/components/InfinityScroll/InfinityScroll.d.ts +3 -0
  83. package/dist/components/InfinityScroll/InfinityScroll.js +5 -5
  84. package/dist/components/Input/Input.d.ts +3 -0
  85. package/dist/components/Input/Input.js +4 -4
  86. package/dist/components/InstantCounter/InstantCounter.d.ts +3 -0
  87. package/dist/components/InstantCounter/InstantCounter.js +5 -4
  88. package/dist/components/LavaLamp/LavaLamp.d.ts +2 -2
  89. package/dist/components/LavaLamp/LavaLamp.js +1 -1
  90. package/dist/components/LavaLamp/v2/LavaLamp.d.ts +2 -2
  91. package/dist/components/LinkToId/LinkToId.d.ts +2 -2
  92. package/dist/components/Loader/Loader.d.ts +1 -1
  93. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.d.ts +2 -1
  94. package/dist/components/LoopableVideo/LoopableVideo.d.ts +2 -2
  95. package/dist/components/MainGrid/MainGrid.d.ts +3 -0
  96. package/dist/components/MainGrid/MainGrid.js +5 -4
  97. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.d.ts +1 -1
  98. package/dist/components/Notification/Notification.d.ts +2 -2
  99. package/dist/components/OrderableList/OrderableList.d.ts +1 -1
  100. package/dist/components/PaginationIndicator/PaginationIndicator.d.ts +9 -6
  101. package/dist/components/PaginationIndicator/PaginationIndicator.js +49 -11
  102. package/dist/components/Parallax/Parallax.d.ts +3 -0
  103. package/dist/components/Parallax/Parallax.js +5 -4
  104. package/dist/components/PasswordInput/PasswordInput.d.ts +3 -0
  105. package/dist/components/PasswordInput/PasswordInput.js +5 -5
  106. package/dist/components/PingPongText/PingPongText.d.ts +2 -2
  107. package/dist/components/PixelatedScan/PixelatedScan.d.ts +2 -1
  108. package/dist/components/Portal/Portal.d.ts +1 -1
  109. package/dist/components/ProgressBar/ProgressBar.d.ts +3 -3
  110. package/dist/components/ProgressTexts/ProgressTexts.d.ts +1 -1
  111. package/dist/components/Radio/Radio.d.ts +1 -1
  112. package/dist/components/SectionContainer/SectionContainer.d.ts +3 -0
  113. package/dist/components/SectionContainer/SectionContainer.js +5 -4
  114. package/dist/components/Select/Select.d.ts +3 -3
  115. package/dist/components/Select/Select.js +1 -1
  116. package/dist/components/Skeleton/Skeleton.d.ts +2 -1
  117. package/dist/components/Spacing/Spacing.d.ts +2 -1
  118. package/dist/components/StaticScroller/StaticScroller.d.ts +3 -0
  119. package/dist/components/StaticScroller/StaticScroller.js +5 -4
  120. package/dist/components/Switch/Switch.d.ts +2 -2
  121. package/dist/components/Table/Table.d.ts +2 -1
  122. package/dist/components/Tabs/Tabs.d.ts +2 -2
  123. package/dist/components/Text/Text.d.ts +7 -5
  124. package/dist/components/Text/Text.js +5 -4
  125. package/dist/components/Text/Text.module.scss +4 -0
  126. package/dist/components/Transition/Transition.d.ts +8 -5
  127. package/dist/components/Transition/Transition.js +18 -16
  128. package/dist/components/Transition/Transition.module.scss +1 -1
  129. package/dist/components/UncontrolledTransition/UncontrolledTransition.d.ts +3 -0
  130. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +25 -13
  131. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.d.ts +2 -0
  132. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +44 -0
  133. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.d.ts +4 -1
  134. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +6 -5
  135. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.d.ts +2 -2
  136. package/dist/context/AsyncProcess.d.ts +2 -1
  137. package/dist/context/ContextAsyncControl.d.ts +24 -0
  138. package/dist/context/ContextAsyncControl.js +101 -0
  139. package/dist/context/CustomBrowserRouter.d.ts +2 -2
  140. package/dist/context/OneUIProvider.d.ts +29 -1
  141. package/dist/context/OneUIProvider.js +1 -1
  142. package/dist/hooks/persistence/useLocalStorage.d.ts +1 -1
  143. package/dist/hooks/persistence/useLocalStorage.js +5 -1
  144. package/dist/hooks/ui/useAlternating.d.ts +4 -0
  145. package/dist/hooks/ui/useAlternating.js +34 -0
  146. package/dist/hooks/ui/usePaginationControls.d.ts +2 -2
  147. package/dist/hooks/useAsyncControl.d.ts +15 -3
  148. package/dist/hooks/useAsyncControl.js +24 -20
  149. package/dist/hooks/useHero.d.ts +4 -2
  150. package/dist/hooks/useHero.js +39 -15
  151. package/dist/hooks/useHero.module.scss +1 -1
  152. package/dist/hooks/useShortIntl.d.ts +1 -1
  153. package/dist/hooks/useShortIntl.js +1 -1
  154. package/dist/models/GenericContract.d.ts +3 -3
  155. package/dist/models/GenericContract.js +5 -3
  156. package/dist/storybookUtils/index.d.ts +2 -2
  157. package/dist/type-utils.d.ts +5 -0
  158. package/dist/type-utils.js +1 -1
  159. package/dist/utility.d.js +1 -1
  160. package/package.json +16 -4
  161. package/src_ai/components/UncontrolledTransition/UncontrolledTransition.ai.ts +35 -0
  162. package/src_ai/hooks/ui/useAlternating.ai.ts +15 -0
  163. package/src_ai/hooks/useHero.ai.ts +18 -0
  164. package/src_ai/types.ts +10 -0
  165. package/tsconfig-ai.json +9 -0
@@ -1,4 +1,4 @@
1
- import { RefObject } from "react";
1
+ import React, { RefObject } from "react";
2
2
  /**
3
3
  * This hook handles the display of pagination controls for the user to move to another page
4
4
  */
@@ -9,6 +9,6 @@ export default function usePaginationControls(containerRef: RefObject<HTMLDivEle
9
9
  snapToCutElement?: boolean;
10
10
  "data-testid"?: [left: string, right: string];
11
11
  }): {
12
- controls: JSX.Element[];
12
+ controls: React.JSX.Element[];
13
13
  checkControlsRequirement: () => void;
14
14
  };
@@ -1,11 +1,23 @@
1
- /// <reference types="react" />
1
+ import { SetStateAction } from "react";
2
2
  import { Primitive } from "type-fest";
3
+ declare type Arr<X> = [X, React.Dispatch<SetStateAction<X>>];
4
+ export declare type FunctionMap = {
5
+ [f: string]: ((...args: any[]) => Promise<any>) | Object | Primitive;
6
+ };
7
+ export declare function useRawAsynControl<E = any, F extends FunctionMap = {}>(functionsToWrap: F | undefined, [error, setError]: Arr<E | undefined>, [loading, setLoading]: Arr<boolean>): {
8
+ process: (asyncFn: () => Promise<any>) => Promise<any>;
9
+ loading: boolean;
10
+ error: E | undefined;
11
+ setError: import("react").Dispatch<SetStateAction<E | undefined>>;
12
+ setLoading: import("react").Dispatch<SetStateAction<boolean>>;
13
+ } & F;
3
14
  export default function useAsyncControl<E = any, F extends {
4
15
  [f: string]: ((...args: any[]) => Promise<any>) | Object | Primitive;
5
16
  } = {}>(functionsToWrap?: F): {
6
17
  process: (asyncFn: () => Promise<any>) => Promise<any>;
7
18
  loading: boolean;
8
19
  error: Error | E | undefined;
9
- setError: import("react").Dispatch<import("react").SetStateAction<Error | E | undefined>>;
10
- setLoading: import("react").Dispatch<import("react").SetStateAction<boolean>>;
20
+ setError: import("react").Dispatch<SetStateAction<Error | E | undefined>>;
21
+ setLoading: import("react").Dispatch<SetStateAction<boolean>>;
11
22
  } & F;
23
+ export {};
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = useAsyncControl;
8
+ exports.useRawAsynControl = useRawAsynControl;
8
9
  var _react = require("react");
9
10
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
10
11
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -19,17 +20,15 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
19
20
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
20
21
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
21
22
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
- function useAsyncControl(functionsToWrap) {
23
- const _useState = (0, _react.useState)(),
24
- _useState2 = _slicedToArray(_useState, 2),
25
- error = _useState2[0],
26
- setError = _useState2[1];
27
- const _useState3 = (0, _react.useState)(false),
28
- _useState4 = _slicedToArray(_useState3, 2),
29
- loading = _useState4[0],
30
- setLoading = _useState4[1];
23
+ function useRawAsynControl(functionsToWrap, _ref, _ref2) {
24
+ let _ref3 = _slicedToArray(_ref, 2),
25
+ error = _ref3[0],
26
+ setError = _ref3[1];
27
+ let _ref4 = _slicedToArray(_ref2, 2),
28
+ loading = _ref4[0],
29
+ setLoading = _ref4[1];
31
30
  const _process = (0, _react.useCallback)( /*#__PURE__*/function () {
32
- var _ref = _asyncToGenerator(function* (asyncFn) {
31
+ var _ref5 = _asyncToGenerator(function* (asyncFn) {
33
32
  try {
34
33
  setLoading(true);
35
34
  setError(undefined);
@@ -43,13 +42,13 @@ function useAsyncControl(functionsToWrap) {
43
42
  }
44
43
  });
45
44
  return function (_x2) {
46
- return _ref.apply(this, arguments);
45
+ return _ref5.apply(this, arguments);
47
46
  };
48
47
  }(), []);
49
- const _Object$entries$reduc = Object.entries(functionsToWrap || {}).reduce(function (r, _ref2) {
50
- let _ref3 = _slicedToArray(_ref2, 2),
51
- k = _ref3[0],
52
- func = _ref3[1];
48
+ const _Object$entries$reduc = Object.entries(functionsToWrap || {}).reduce(function (r, _ref6) {
49
+ let _ref7 = _slicedToArray(_ref6, 2),
50
+ k = _ref7[0],
51
+ func = _ref7[1];
53
52
  return _objectSpread(_objectSpread({}, r), typeof func === "function" ? {
54
53
  functionsToMemoize: _objectSpread(_objectSpread({}, r.functionsToMemoize), {}, _defineProperty({}, k, func))
55
54
  } : {
@@ -67,10 +66,10 @@ function useAsyncControl(functionsToWrap) {
67
66
  error: error,
68
67
  setError: setError,
69
68
  setLoading: setLoading
70
- }, other), Object.entries(functionsToMemoize).reduce(function (r, _ref4) {
71
- let _ref5 = _slicedToArray(_ref4, 2),
72
- k = _ref5[0],
73
- v = _ref5[1];
69
+ }, other), Object.entries(functionsToMemoize).reduce(function (r, _ref8) {
70
+ let _ref9 = _slicedToArray(_ref8, 2),
71
+ k = _ref9[0],
72
+ v = _ref9[1];
74
73
  return _objectSpread(_objectSpread({}, r), {}, _defineProperty({}, k, (0, _react.useMemo)(function () {
75
74
  return function () {
76
75
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
@@ -83,4 +82,9 @@ function useAsyncControl(functionsToWrap) {
83
82
  }, [v])));
84
83
  }, {}));
85
84
  }
86
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwia2V5IiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIl90eXBlb2YiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJjYWxsIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVzb2x2ZSIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93IiwiaW5mbyIsImVycm9yIiwiZG9uZSIsIlByb21pc2UiLCJ0aGVuIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiZXJyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIl9pIiwiaXRlcmF0b3IiLCJfcyIsIl9lIiwiX3giLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwibmV4dCIsInJldHVybiIsImlzQXJyYXkiLCJ1c2VBc3luY0NvbnRyb2wiLCJmdW5jdGlvbnNUb1dyYXAiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfcHJvY2VzcyIsInVzZUNhbGxiYWNrIiwiX3JlZiIsImFzeW5jRm4iLCJlIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSIsIl94MiIsIl9PYmplY3QkZW50cmllcyRyZWR1YyIsImVudHJpZXMiLCJyZWR1Y2UiLCJyIiwiX3JlZjIiLCJfcmVmMyIsImsiLCJmdW5jIiwiZnVuY3Rpb25zVG9NZW1vaXplIiwib3RoZXIiLCJfcmVmNCIsIl9yZWY1IiwidiIsInVzZU1lbW8iLCJfbGVuIiwiX2tleSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VBc3luY0NvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBQcmltaXRpdmUgfSBmcm9tIFwidHlwZS1mZXN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUFzeW5jQ29udHJvbDxcbiAgRSA9IGFueSxcbiAgRiBleHRlbmRzIHtcbiAgICBbZjogc3RyaW5nXTogKCguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+KSB8IE9iamVjdCB8IFByaW1pdGl2ZTtcbiAgfSA9IHt9XG4+KGZ1bmN0aW9uc1RvV3JhcD86IEYpIHtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFIHwgRXJyb3I+KCk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdCBfcHJvY2VzcyA9IHVzZUNhbGxiYWNrKGFzeW5jIChhc3luY0ZuOiAoKSA9PiBQcm9taXNlPGFueT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHNldEVycm9yKHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm4gYXdhaXQgYXN5bmNGbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgc2V0RXJyb3IoZSBhcyBFKTtcbiAgICAgIHRocm93IGU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IHsgZnVuY3Rpb25zVG9NZW1vaXplLCBvdGhlciB9ID0gT2JqZWN0LmVudHJpZXMoXG4gICAgZnVuY3Rpb25zVG9XcmFwIHx8IHt9XG4gICkucmVkdWNlKFxuICAgIChyLCBbaywgZnVuY10pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnIsXG4gICAgICAgIC4uLih0eXBlb2YgZnVuYyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGZ1bmN0aW9uc1RvTWVtb2l6ZToge1xuICAgICAgICAgICAgICAgIC4uLnIuZnVuY3Rpb25zVG9NZW1vaXplLFxuICAgICAgICAgICAgICAgIFtrXTogZnVuYyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgb3RoZXI6IHtcbiAgICAgICAgICAgICAgICAuLi5yLm90aGVyLFxuICAgICAgICAgICAgICAgIFtrXTogZnVuYyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9LFxuICAgIHtcbiAgICAgIGZ1bmN0aW9uc1RvTWVtb2l6ZToge30sXG4gICAgICBvdGhlcjoge30sXG4gICAgfSBhcyB7XG4gICAgICBmdW5jdGlvbnNUb01lbW9pemU6IEY7XG4gICAgICBvdGhlcjogRjtcbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzOiBfcHJvY2VzcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIHNldEVycm9yLFxuICAgIHNldExvYWRpbmcsXG4gICAgLi4ub3RoZXIsXG4gICAgLi4uT2JqZWN0LmVudHJpZXMoZnVuY3Rpb25zVG9NZW1vaXplKS5yZWR1Y2UoXG4gICAgICAociwgW2ssIHZdKSA9PiAoe1xuICAgICAgICAuLi5yLFxuICAgICAgICBba106IHVzZU1lbW8oXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICguLi5hcmdzOiBhbnlbXSkgPT5cbiAgICAgICAgICAgICAgX3Byb2Nlc3MoKCkgPT4gKHYgYXMgYW55KSguLi5hcmdzKSksXG4gICAgICAgICAgW3ZdXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICAgIHt9IGFzIEZcbiAgICApLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQXVELFNBQUFDLFFBQUFDLE1BQUEsRUFBQUMsY0FBQSxRQUFBQyxJQUFBLEdBQUFDLE1BQUEsQ0FBQUQsSUFBQSxDQUFBRixNQUFBLE9BQUFHLE1BQUEsQ0FBQUMscUJBQUEsUUFBQUMsT0FBQSxHQUFBRixNQUFBLENBQUFDLHFCQUFBLENBQUFKLE1BQUEsR0FBQUMsY0FBQSxLQUFBSSxPQUFBLEdBQUFBLE9BQUEsQ0FBQUMsTUFBQSxXQUFBQyxHQUFBLFdBQUFKLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsTUFBQSxFQUFBTyxHQUFBLEVBQUFFLFVBQUEsT0FBQVAsSUFBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsSUFBQSxFQUFBRyxPQUFBLFlBQUFILElBQUE7QUFB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
85
+ function useAsyncControl(functionsToWrap) {
86
+ const error = (0, _react.useState)();
87
+ const loading = (0, _react.useState)(false);
88
+ return useRawAsynControl(functionsToWrap, error, loading);
89
+ }
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwia2V5IiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIl90eXBlb2YiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJjYWxsIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVzb2x2ZSIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93IiwiaW5mbyIsImVycm9yIiwiZG9uZSIsIlByb21pc2UiLCJ0aGVuIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiZXJyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIl9pIiwiaXRlcmF0b3IiLCJfcyIsIl9lIiwiX3giLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwibmV4dCIsInJldHVybiIsImlzQXJyYXkiLCJ1c2VSYXdBc3luQ29udHJvbCIsImZ1bmN0aW9uc1RvV3JhcCIsIl9yZWYiLCJfcmVmMiIsIl9yZWYzIiwic2V0RXJyb3IiLCJfcmVmNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3Byb2Nlc3MiLCJ1c2VDYWxsYmFjayIsIl9yZWY1IiwiYXN5bmNGbiIsImUiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwiX3gyIiwiX09iamVjdCRlbnRyaWVzJHJlZHVjIiwiZW50cmllcyIsInJlZHVjZSIsInIiLCJfcmVmNiIsIl9yZWY3IiwiayIsImZ1bmMiLCJmdW5jdGlvbnNUb01lbW9pemUiLCJvdGhlciIsIl9yZWY4IiwiX3JlZjkiLCJ2IiwidXNlTWVtbyIsIl9sZW4iLCJfa2V5IiwidXNlQXN5bmNDb250cm9sIiwidXNlU3RhdGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQXN5bmNDb250cm9sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNldFN0YXRlQWN0aW9uLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gXCJ0eXBlLWZlc3RcIjtcblxudHlwZSBBcnI8WD4gPSBbWCwgUmVhY3QuRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248WD4+XTtcbmV4cG9ydCB0eXBlIEZ1bmN0aW9uTWFwID0ge1xuICBbZjogc3RyaW5nXTogKCguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+KSB8IE9iamVjdCB8IFByaW1pdGl2ZTtcbn07XG5leHBvcnQgZnVuY3Rpb24gdXNlUmF3QXN5bkNvbnRyb2w8RSA9IGFueSwgRiBleHRlbmRzIEZ1bmN0aW9uTWFwID0ge30+KFxuICBmdW5jdGlvbnNUb1dyYXA6IEYgfCB1bmRlZmluZWQsXG4gIFtlcnJvciwgc2V0RXJyb3JdOiBBcnI8RSB8IHVuZGVmaW5lZD4sXG4gIFtsb2FkaW5nLCBzZXRMb2FkaW5nXTogQXJyPGJvb2xlYW4+XG4pIHtcbiAgY29uc3QgX3Byb2Nlc3MgPSB1c2VDYWxsYmFjayhhc3luYyAoYXN5bmNGbjogKCkgPT4gUHJvbWlzZTxhbnk+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICBzZXRFcnJvcih1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuIGF3YWl0IGFzeW5jRm4oKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIHNldEVycm9yKGUgYXMgRSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICBjb25zdCB7IGZ1bmN0aW9uc1RvTWVtb2l6ZSwgb3RoZXIgfSA9IE9iamVjdC5lbnRyaWVzKFxuICAgIGZ1bmN0aW9uc1RvV3JhcCB8fCB7fVxuICApLnJlZHVjZShcbiAgICAociwgW2ssIGZ1bmNdKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5yLFxuICAgICAgICAuLi4odHlwZW9mIGZ1bmMgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBmdW5jdGlvbnNUb01lbW9pemU6IHtcbiAgICAgICAgICAgICAgICAuLi5yLmZ1bmN0aW9uc1RvTWVtb2l6ZSxcbiAgICAgICAgICAgICAgICBba106IGZ1bmMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIG90aGVyOiB7XG4gICAgICAgICAgICAgICAgLi4uci5vdGhlcixcbiAgICAgICAgICAgICAgICBba106IGZ1bmMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSxcbiAgICB7XG4gICAgICBmdW5jdGlvbnNUb01lbW9pemU6IHt9LFxuICAgICAgb3RoZXI6IHt9LFxuICAgIH0gYXMge1xuICAgICAgZnVuY3Rpb25zVG9NZW1vaXplOiBGO1xuICAgICAgb3RoZXI6IEY7XG4gICAgfVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgcHJvY2VzczogX3Byb2Nlc3MsXG4gICAgbG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBzZXRFcnJvcixcbiAgICBzZXRMb2FkaW5nLFxuICAgIC4uLm90aGVyLFxuICAgIC4uLk9iamVjdC5lbnRyaWVzKGZ1bmN0aW9uc1RvTWVtb2l6ZSkucmVkdWNlKFxuICAgICAgKHIsIFtrLCB2XSkgPT4gKHtcbiAgICAgICAgLi4ucixcbiAgICAgICAgW2tdOiB1c2VNZW1vKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAoLi4uYXJnczogYW55W10pID0+XG4gICAgICAgICAgICAgIF9wcm9jZXNzKCgpID0+ICh2IGFzIGFueSkoLi4uYXJncykpLFxuICAgICAgICAgIFt2XVxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgICB7fSBhcyBGXG4gICAgKSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQXN5bmNDb250cm9sPFxuICBFID0gYW55LFxuICBGIGV4dGVuZHMge1xuICAgIFtmOiBzdHJpbmddOiAoKC4uLmFyZ3M6IGFueVtdKSA9PiBQcm9taXNlPGFueT4pIHwgT2JqZWN0IHwgUHJpbWl0aXZlO1xuICB9ID0ge31cbj4oZnVuY3Rpb25zVG9XcmFwPzogRikge1xuICBjb25zdCBlcnJvciA9IHVzZVN0YXRlPEUgfCBFcnJvcj4oKTtcbiAgY29uc3QgbG9hZGluZyA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuICByZXR1cm4gdXNlUmF3QXN5bkNvbnRyb2wo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
@@ -5,10 +5,12 @@ declare type Result = [
5
5
  targetContainer: Element | VisualViewport
6
6
  ];
7
7
  /**
8
- * This hook implements the logic for a hero animation between 2 elements
8
+ * This hook implements the logic for a hero animation between 2 elements sharing the same id
9
9
  */
10
10
  export default function useHero(id: string, options?: Partial<{
11
- propsToTransition: Omit<keyof CSSProperties, "width" | "height" | "top" | "left">[];
11
+ propsToTransition: Exclude<keyof CSSProperties, "width" | "height" | "top" | "left">[];
12
+ /** If set, the default properties (width, height, etc...) will not transition, and propsToTransition will be the only ones that will be transitioned */
13
+ overridePropsToTransition: boolean;
12
14
  "data-preffix": string;
13
15
  /** This indicates this hero animation will probably be repeated multiple time */
14
16
  repeatable: boolean;
@@ -30,8 +30,8 @@ const ID = function ID(id) {
30
30
  };
31
31
  const viewport = window.visualViewport;
32
32
  const DATA_TAG_HERO_COMPONENT = "data-hero-component";
33
- function triggerDynamicComponents(clone, componentsThatWillAppear) {
34
- const idsThatWillAppear = componentsThatWillAppear.map(function (a) {
33
+ function triggerDynamicComponents(clone, componentsFromOriginThatWillAppear, origin) {
34
+ const idsThatWillAppear = componentsFromOriginThatWillAppear.map(function (a) {
35
35
  return a.getAttribute(DATA_TAG_HERO_COMPONENT);
36
36
  });
37
37
  const preexistingComponents = Array.from(clone.querySelectorAll("[".concat(DATA_TAG_HERO_COMPONENT, "]")));
@@ -47,27 +47,41 @@ function triggerDynamicComponents(clone, componentsThatWillAppear) {
47
47
  elementThatIsBeingRemoved.style.opacity = "0";
48
48
  }
49
49
  }, 0);
50
- for (let componentThatWillAppear of componentsThatWillAppear) {
50
+ for (let componentThatWillAppear of componentsFromOriginThatWillAppear) {
51
51
  const alreadyInjectedElement = !!clone.querySelector("[".concat(DATA_TAG_HERO_COMPONENT, "=\"").concat(componentThatWillAppear.getAttribute(DATA_TAG_HERO_COMPONENT), "\"]"));
52
52
  if (!alreadyInjectedElement) {
53
+ let _recursiveBuildPath = function recursiveBuildPath(fromElement) {
54
+ let pathSuffix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
55
+ if (fromElement === origin) return pathSuffix;
56
+ const parent = fromElement.parentElement;
57
+ const parentChilds = Array.from(parent.children);
58
+ const elChildSelector = ":nth-child(".concat(parentChilds.indexOf(fromElement) + 1, ")");
59
+ if (componentThatWillAppear.getAttribute(DATA_TAG_HERO_COMPONENT) === "7-insideDiv") {
60
+ console.log(pathSuffix, fromElement, fromElement !== origin);
61
+ }
62
+ if (fromElement !== origin) return _recursiveBuildPath(parent, "".concat(elChildSelector).concat(pathSuffix ? ">".concat(pathSuffix) : ""));else return pathSuffix;
63
+ };
64
+ const whatIsTheElementPathFromCloneElement = _recursiveBuildPath(componentThatWillAppear.parentElement);
65
+ const insertAtIndex = Array.from(componentThatWillAppear.parentElement.children).indexOf(componentThatWillAppear);
53
66
  const targetElementClone = componentThatWillAppear.cloneNode(true);
54
67
  targetElementClone.style.height = "0px";
55
- const shouldBeInsrtedAtIndex = Array.from(componentThatWillAppear.parentElement.children).indexOf(componentThatWillAppear);
56
- const remainingIndexes = Array.from(clone.children).map(function (el, i) {
68
+ const shouldBeInsertedAtElement = whatIsTheElementPathFromCloneElement ? clone.querySelector(whatIsTheElementPathFromCloneElement) : clone;
69
+ const remainingIndexes = Array.from(shouldBeInsertedAtElement.children).map(function (el, i) {
57
70
  return removedElements.includes(el) ? undefined : i;
58
71
  }).filter(function (e) {
59
72
  return e !== undefined;
60
73
  });
61
- if (shouldBeInsrtedAtIndex === remainingIndexes.length) clone.append(targetElementClone);else clone.insertBefore(targetElementClone, clone.childNodes.item(remainingIndexes[shouldBeInsrtedAtIndex]));
74
+ if (insertAtIndex === remainingIndexes.length) shouldBeInsertedAtElement.append(targetElementClone);else shouldBeInsertedAtElement.insertBefore(targetElementClone, shouldBeInsertedAtElement.childNodes.item(remainingIndexes[insertAtIndex]));
62
75
  setTimeout(function () {
63
76
  targetElementClone.style.height = "".concat(componentThatWillAppear.clientHeight, "px");
64
77
  }, 0);
65
78
  }
66
79
  }
67
80
  }
81
+ const ALWAYS_TRANSITION = ["top", "left"];
68
82
 
69
83
  /**
70
- * This hook implements the logic for a hero animation between 2 elements
84
+ * This hook implements the logic for a hero animation between 2 elements sharing the same id
71
85
  */
72
86
  function useHero(id) {
73
87
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
@@ -75,9 +89,16 @@ function useHero(id) {
75
89
  };
76
90
  let events = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
77
91
  const _options$propsToTrans = options.propsToTransition,
78
- propsToTransition = _options$propsToTrans === void 0 ? [] : _options$propsToTrans,
92
+ _p = _options$propsToTrans === void 0 ? [] : _options$propsToTrans,
79
93
  dataPreffix = options["data-preffix"],
80
94
  repeatable = options.repeatable;
95
+ const propsToTransition = (0, _react.useMemo)(function () {
96
+ return _p.map(function (p) {
97
+ return p.replace(/([A-Z])/g, function (_, val) {
98
+ return "-".concat(val.toLowerCase());
99
+ });
100
+ });
101
+ }, [_p]);
81
102
  const _dataPreffix = dataPreffix ? "-".concat(dataPreffix) : "";
82
103
  const dataProperty = "data".concat(_dataPreffix, "-hero");
83
104
  const heroRef = (0, _react.useRef)(null);
@@ -91,14 +112,15 @@ function useHero(id) {
91
112
  return otherElements;
92
113
  }, [id]);
93
114
  function triggerHeroAnimation() {
94
- const allPropsToTransition = ["width", "height", "top", "left"].concat(_toConsumableArray(propsToTransition));
115
+ const allPropsToTransition = options.overridePropsToTransition ? [].concat(ALWAYS_TRANSITION, _toConsumableArray(propsToTransition)) : ["width", "height"].concat(ALWAYS_TRANSITION, _toConsumableArray(propsToTransition));
95
116
  const shouldHeroFn = events.onHeroDetect || function () {
96
117
  return true;
97
118
  };
98
119
  const otherElements = getHerosOnScreen().filter(function (el) {
99
120
  return shouldHeroFn(el, heroRef.current);
100
121
  });
101
- const currentElCoordinates = heroRef.current.getBoundingClientRect();
122
+ const currentElement = heroRef.current;
123
+ const currentElCoordinates = currentElement.getBoundingClientRect();
102
124
  if (process.env.NODE_ENV === "development" && otherElements.length > 2) console.warn("There are too many elements to transition to, I will transition to the first I find", otherElements);
103
125
  const otherElement = otherElements.find(function (el) {
104
126
  return el !== heroRef.current;
@@ -119,8 +141,8 @@ function useHero(id) {
119
141
  clone.style.position = "fixed";
120
142
  clone.style.top = "".concat(coordinates.top, "px");
121
143
  clone.style.left = "".concat(coordinates.left, "px");
122
- clone.style.width = "".concat(coordinates.width, "px");
123
- clone.style.height = "".concat(coordinates.height, "px");
144
+ if (allPropsToTransition.includes("width")) clone.style.width = "".concat(coordinates.width, "px");
145
+ if (allPropsToTransition.includes("height")) clone.style.height = "".concat(coordinates.height, "px");
124
146
  return willMove;
125
147
  };
126
148
  const _ref = events.onBeforeTransition ? events.onBeforeTransition(otherElement, heroRef.current) : [viewport, viewport],
@@ -162,7 +184,9 @@ function useHero(id) {
162
184
  heroRef.current.style.visibility = "hidden";
163
185
  otherElement.style.visibility = "hidden";
164
186
  clone.style.transition = "".concat(allPropsToTransition.map(function (prop) {
165
- return "".concat(prop, " var(--animation--speed-fast, 250ms) ease-out");
187
+ return "".concat(prop.replace(/[A-Z]/g, function (sub) {
188
+ return "-".concat(sub.toLowerCase());
189
+ }), " var(--animation--speed-fast, 250ms) ease-out");
166
190
  }).join(", "));
167
191
  setTimeout(function () {
168
192
  const el = heroRef.current;
@@ -179,7 +203,7 @@ function useHero(id) {
179
203
  if (events.onHeroStart) {
180
204
  events.onHeroStart(clone, otherElement, heroRef.current);
181
205
  }
182
- triggerDynamicComponents(clone, Array.from(heroRef.current.querySelectorAll("[".concat(DATA_TAG_HERO_COMPONENT, "]"))));
206
+ triggerDynamicComponents(clone, Array.from(heroRef.current.querySelectorAll("[".concat(DATA_TAG_HERO_COMPONENT, "]"))), currentElement);
183
207
  if (!el) {
184
208
  cleanup();
185
209
  return;
@@ -284,4 +308,4 @@ const TRANSITION_FACTORY = {
284
308
  }
285
309
  };
286
310
  exports.TRANSITION_FACTORY = TRANSITION_FACTORY;
287
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX293bkV2ZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VIZXJvTW9kdWxlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiX3R5cGVvZiIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsInVuZGVmaW5lZCIsInJlcyIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfaSIsIml0ZXJhdG9yIiwiX3MiLCJfZSIsIl94IiwiX3IiLCJfYXJyIiwiX24iLCJfZCIsIm5leHQiLCJkb25lIiwiZXJyIiwicmV0dXJuIiwiQXJyYXkiLCJpc0FycmF5IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIm8iLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJpdGVyIiwibGVuIiwiYXJyMiIsIklEIiwiaWQiLCJjb25jYXQiLCJ2aWV3cG9ydCIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0IiwiREFUQV9UQUdfSEVST19DT01QT05FTlQiLCJ0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMiLCJjbG9uZSIsImNvbXBvbmVudHNUaGF0V2lsbEFwcGVhciIsImlkc1RoYXRXaWxsQXBwZWFyIiwibWFwIiwiYSIsImdldEF0dHJpYnV0ZSIsInByZWV4aXN0aW5nQ29tcG9uZW50cyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJyZW1vdmVkRWxlbWVudHMiLCJlbCIsImluY2x1ZGVzIiwiZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZCIsInN0eWxlIiwiaGVpZ2h0IiwiY2xpZW50SGVpZ2h0Iiwic2V0VGltZW91dCIsIm9wYWNpdHkiLCJjb21wb25lbnRUaGF0V2lsbEFwcGVhciIsImFscmVhZHlJbmplY3RlZEVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwidGFyZ2V0RWxlbWVudENsb25lIiwiY2xvbmVOb2RlIiwic2hvdWxkQmVJbnNydGVkQXRJbmRleCIsInBhcmVudEVsZW1lbnQiLCJjaGlsZHJlbiIsImluZGV4T2YiLCJyZW1haW5pbmdJbmRleGVzIiwiZSIsImFwcGVuZCIsImluc2VydEJlZm9yZSIsImNoaWxkTm9kZXMiLCJpdGVtIiwidXNlSGVybyIsIm9wdGlvbnMiLCJwcm9wc1RvVHJhbnNpdGlvbiIsImV2ZW50cyIsIl9vcHRpb25zJHByb3BzVG9UcmFucyIsImRhdGFQcmVmZml4IiwicmVwZWF0YWJsZSIsIl9kYXRhUHJlZmZpeCIsImRhdGFQcm9wZXJ0eSIsImhlcm9SZWYiLCJ1c2VSZWYiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjdXJyZW50Iiwic2V0QXR0cmlidXRlIiwiZ2V0SGVyb3NPblNjcmVlbiIsInVzZUNhbGxiYWNrIiwib3RoZXJFbGVtZW50cyIsImRvY3VtZW50IiwidHJpZ2dlckhlcm9BbmltYXRpb24iLCJhbGxQcm9wc1RvVHJhbnNpdGlvbiIsInNob3VsZEhlcm9GbiIsIm9uSGVyb0RldGVjdCIsImN1cnJlbnRFbENvb3JkaW5hdGVzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSIsIndhcm4iLCJvdGhlckVsZW1lbnQiLCJmaW5kIiwid2lsbFRoZUhlcm9Nb3ZlIiwib3JpZ2luIiwidG9wIiwibGVmdCIsIndpZHRoIiwic2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2YiLCJjb29yZGluYXRlcyIsImN1cnJlbnRDb29yZGluYXRlcyIsIndpbGxNb3ZlIiwicG9zaXRpb24iLCJfcmVmIiwib25CZWZvcmVUcmFuc2l0aW9uIiwiX3JlZjIiLCJvcmlnaW5Db250YWluZXIiLCJ0YXJnZXRDb250YWluZXIiLCJzaG91bGRTa2lwIiwiaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lciIsIm9uSGVyb1NraXAiLCJfZXZlbnRzJG9uSGVyb1NraXBwZWQiLCJvbkhlcm9Ta2lwcGVkIiwib2xkQ2xvbmUiLCJvbkhlcm9DbG9uZWQiLCJ2aXNpYmlsaXR5IiwicmVtb3ZlQXR0cmlidXRlIiwiaXRXb250TW92ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInRyYW5zaXRpb24iLCJwcm9wIiwiam9pbiIsImNsZWFudXAiLCJvbkhlcm9FbmQiLCJyZW1vdmUiLCJvbkhlcm9TdGFydCIsInByb3BUb1RyYW5zaXRpb24iLCJnZXRDb21wdXRlZFN0eWxlIiwiaW5pdGlhbE9mZnNldCIsInMiLCJfcmVmMyIsImQiLCJjb250YWlucyIsInNjcm9sbFRvcCIsIm1hcmdpblRvcCIsInRyYW5zaXRpb25FbmRDYiIsIm93bkV2ZW50IiwiX3JlZjQiLCJjdXJyZW50VGFyZ2V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbkNhbmNlbENiIiwidXNlRWZmZWN0IiwidHJpZ2dlciIsImhlcm9Db21wb25lbnRSZWYiLCJjb21wb25lbnRJZCIsImVsUmVmIiwiY2xhc3NMaXN0IiwiYWRkIiwiU3R5bGVzIiwiY29tcG9uZW50IiwiaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0IiwiZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0IiwiZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydCIsImNvbnRhaW5lciIsIlZpc3VhbFZpZXdwb3J0IiwiY29udGFpbmVyQm91bmRzIiwiaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQiLCJjZW50ZXJQb2ludCIsInJlY3QiLCJhbmdsZSIsInBvaW50QSIsInBvaW50QiIsIk1hdGgiLCJhdGFuMiIsIlBJIiwidG9GaXhlZCIsIlRSQU5TSVRJT05fRkFDVE9SWSIsIkFDQ0VMRVJBVElPTiIsImFjY2VsZXJhdGlvbiIsImNlbnRlclBvaW50T3JpZ2luIiwiY2VudGVyUG9pbnREZXN0aW5hdGlvbiIsImFuZ2xlQmV0d2VlbkVsZW1lbnRzIiwidmVjdG9yWCIsInNpbiIsInZlY3RvclkiLCJjb3MiLCJyb3RhdGVZIiwib3JpZ2luWCIsInJvdGF0ZVgiLCJvcmlnaW5ZIiwic2V0UHJvcGVydHkiLCJwZXJzcGVjdGl2ZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlSGVyby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgQ1NTUHJvcGVydGllcyxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IG93bkV2ZW50IGZyb20gXCIuLi91dGlscy9vd25FdmVudFwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi91c2VIZXJvLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IElEID0gKGlkOiBzdHJpbmcpID0+IGAke2lkfS1oZXJvYDtcbnR5cGUgU2hvdWxkU2tpcCA9IGJvb2xlYW47XG50eXBlIFJlc3VsdCA9IFtcbiAgb3JpZ2luQ29udGFpbmVyOiBFbGVtZW50IHwgVmlzdWFsVmlld3BvcnQsXG4gIHRhcmdldENvbnRhaW5lcjogRWxlbWVudCB8IFZpc3VhbFZpZXdwb3J0XG5dO1xuY29uc3Qgdmlld3BvcnQgPSB3aW5kb3cudmlzdWFsVmlld3BvcnQhO1xuY29uc3QgREFUQV9UQUdfSEVST19DT01QT05FTlQgPSBcImRhdGEtaGVyby1jb21wb25lbnRcIjtcblxuZnVuY3Rpb24gdHJpZ2dlckR5bmFtaWNDb21wb25lbnRzKFxuICBjbG9uZTogSFRNTERpdkVsZW1lbnQsXG4gIGNvbXBvbmVudHNUaGF0V2lsbEFwcGVhcjogSFRNTERpdkVsZW1lbnRbXVxuKSB7XG4gIGNvbnN0IGlkc1RoYXRXaWxsQXBwZWFyID0gY29tcG9uZW50c1RoYXRXaWxsQXBwZWFyLm1hcCgoYSkgPT5cbiAgICBhLmdldEF0dHJpYnV0ZShEQVRBX1RBR19IRVJPX0NPTVBPTkVOVClcbiAgKTtcbiAgY29uc3QgcHJlZXhpc3RpbmdDb21wb25lbnRzID0gQXJyYXkuZnJvbShcbiAgICBjbG9uZS5xdWVyeVNlbGVjdG9yQWxsKGBbJHtEQVRBX1RBR19IRVJPX0NPTVBPTkVOVH1dYClcbiAgKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICBjb25zdCByZW1vdmVkRWxlbWVudHM6IEhUTUxEaXZFbGVtZW50W10gPSBwcmVleGlzdGluZ0NvbXBvbmVudHMuZmlsdGVyKFxuICAgIChlbCkgPT5cbiAgICAgICFpZHNUaGF0V2lsbEFwcGVhci5pbmNsdWRlcyhlbC5nZXRBdHRyaWJ1dGUoREFUQV9UQUdfSEVST19DT01QT05FTlQpKVxuICApO1xuXG4gIGZvciAobGV0IGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQgb2YgcmVtb3ZlZEVsZW1lbnRzKSB7XG4gICAgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5zdHlsZS5oZWlnaHQgPSBgJHtlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLmNsaWVudEhlaWdodH1weGA7XG4gIH1cbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZm9yIChsZXQgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZCBvZiByZW1vdmVkRWxlbWVudHMpIHtcbiAgICAgIGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQuc3R5bGUuaGVpZ2h0ID0gYDBweGA7XG4gICAgICBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLnN0eWxlLm9wYWNpdHkgPSBgMGA7XG4gICAgfVxuICB9LCAwKTtcblxuICBmb3IgKGxldCBjb21wb25lbnRUaGF0V2lsbEFwcGVhciBvZiBjb21wb25lbnRzVGhhdFdpbGxBcHBlYXIpIHtcbiAgICBjb25zdCBhbHJlYWR5SW5qZWN0ZWRFbGVtZW50ID0gISFjbG9uZS5xdWVyeVNlbGVjdG9yKFxuICAgICAgYFske0RBVEFfVEFHX0hFUk9fQ09NUE9ORU5UfT1cIiR7Y29tcG9uZW50VGhhdFdpbGxBcHBlYXIuZ2V0QXR0cmlidXRlKFxuICAgICAgICBEQVRBX1RBR19IRVJPX0NPTVBPTkVOVFxuICAgICAgKX1cIl1gXG4gICAgKTtcbiAgICBpZiAoIWFscmVhZHlJbmplY3RlZEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRDbG9uZSA9IGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyLmNsb25lTm9kZShcbiAgICAgICAgdHJ1ZVxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIHRhcmdldEVsZW1lbnRDbG9uZS5zdHlsZS5oZWlnaHQgPSBcIjBweFwiO1xuICAgICAgY29uc3Qgc2hvdWxkQmVJbnNydGVkQXRJbmRleCA9IEFycmF5LmZyb20oXG4gICAgICAgIGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyLnBhcmVudEVsZW1lbnQhLmNoaWxkcmVuXG4gICAgICApLmluZGV4T2YoY29tcG9uZW50VGhhdFdpbGxBcHBlYXIpO1xuICAgICAgY29uc3QgcmVtYWluaW5nSW5kZXhlcyA9IEFycmF5LmZyb20oY2xvbmUuY2hpbGRyZW4pXG4gICAgICAgIC5tYXAoKGVsLCBpKSA9PlxuICAgICAgICAgIHJlbW92ZWRFbGVtZW50cy5pbmNsdWRlcyhlbCBhcyBIVE1MRGl2RWxlbWVudCkgPyB1bmRlZmluZWQgOiBpXG4gICAgICAgIClcbiAgICAgICAgLmZpbHRlcigoZSkgPT4gZSAhPT0gdW5kZWZpbmVkKSBhcyBudW1iZXJbXTtcblxuICAgICAgaWYgKHNob3VsZEJlSW5zcnRlZEF0SW5kZXggPT09IHJlbWFpbmluZ0luZGV4ZXMubGVuZ3RoKVxuICAgICAgICBjbG9uZS5hcHBlbmQodGFyZ2V0RWxlbWVudENsb25lKTtcbiAgICAgIGVsc2VcbiAgICAgICAgY2xvbmUuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgIHRhcmdldEVsZW1lbnRDbG9uZSxcbiAgICAgICAgICBjbG9uZS5jaGlsZE5vZGVzLml0ZW0ocmVtYWluaW5nSW5kZXhlc1tzaG91bGRCZUluc3J0ZWRBdEluZGV4XSlcbiAgICAgICAgKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0YXJnZXRFbGVtZW50Q2xvbmUuc3R5bGUuaGVpZ2h0ID0gYCR7Y29tcG9uZW50VGhhdFdpbGxBcHBlYXIuY2xpZW50SGVpZ2h0fXB4YDtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaG9vayBpbXBsZW1lbnRzIHRoZSBsb2dpYyBmb3IgYSBoZXJvIGFuaW1hdGlvbiBiZXR3ZWVuIDIgZWxlbWVudHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSGVybyhcbiAgaWQ6IHN0cmluZyxcbiAgb3B0aW9uczogUGFydGlhbDx7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IE9taXQ8XG4gICAgICBrZXlvZiBDU1NQcm9wZXJ0aWVzLFxuICAgICAgXCJ3aWR0aFwiIHwgXCJoZWlnaHRcIiB8IFwidG9wXCIgfCBcImxlZnRcIlxuICAgID5bXTtcbiAgICBcImRhdGEtcHJlZmZpeFwiOiBzdHJpbmc7XG4gICAgLyoqIFRoaXMgaW5kaWNhdGVzIHRoaXMgaGVybyBhbmltYXRpb24gd2lsbCBwcm9iYWJseSBiZSByZXBlYXRlZCBtdWx0aXBsZSB0aW1lICovXG4gICAgcmVwZWF0YWJsZTogYm9vbGVhbjtcbiAgfT4gPSB7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IFtdLFxuICB9LFxuICBldmVudHM6IHtcbiAgICAvKipcbiAgICAgKiBTaG91bGQgcmV0dXJuIGlmIHRoZSBkZXRlY3RlZCBlbGVtZW50IHNob3VsZCBiZSBcImhlcm9lZFwiXG4gICAgICpcbiAgICAgKiBVc2VmdWxsIGZvciB3aGVuIHRoZSBoZXJvIGhhcyAyIHBvc3NpYmxlIG9yaWdpbnMuXG4gICAgICogRm9yIGV4YW1wbGUsIG9uZSBjb3VsZCBoZXJvIG9ubHkgdGhlIGN1cnJlbnQgaG92ZXJlZCBlbGVtZW50IHdpdGggZWwubWF0Y2hlcyhcIjpob3ZlclwiKVxuICAgICAqL1xuICAgIG9uSGVyb0RldGVjdD86IChvcmlnaW46IEhUTUxEaXZFbGVtZW50LCB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50KSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRG8gc29tZXRoaW5nIHdoZW4gdGhlIGhlcm8gZW5kc1xuICAgICAqXG4gICAgICogVXNlZnVsbCBmb3IgdHJpZ2dlcmluZyBzZWNvbmRhcnkgYW5pbWF0aW9uc1xuICAgICAqL1xuICAgIG9uSGVyb0VuZD86ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogRG8gc29tZXRoaWduIHdpdGggdGhlIGNsb25lIGJlZm9yZSBpdCBnb2VzIHRvIHRoZSBodG1sICovXG4gICAgb25IZXJvQ2xvbmVkPzogKGNsb25lOiBIVE1MRGl2RWxlbWVudCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIERvIHNvbWV0aGluZyB3aGVuIHRoZSBoZXJvIHN0YXJ0cyB0aGUgdHJhbnNpdGlvblxuICAgICAqIEhlcmUgaXQncyB1c2VmdWxsIHRvIHN3aXRjaCBjbGFzc05hbWVzIHdpdGggdGhlIHRhcmdldC5cbiAgICAgKlxuICAgICAqIElmIGRvbmUgY29ycmVjdGx5LCBpdCB3aWxsIHRyYW5zaXRpb24gZnJvbSBzdGF0ZSBhIHRvIGIgc21vb3RobHlcbiAgICAgKi9cbiAgICBvbkhlcm9TdGFydD86IChcbiAgICAgIGNsb25lOiBIVE1MRGl2RWxlbWVudCxcbiAgICAgIG9yaWdpbjogSFRNTERpdkVsZW1lbnQsXG4gICAgICB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50XG4gICAgKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW4gdGhlIGhlcm8gaXMgY29taW5nL2dvaW5nIG91dHNpZGUgdGhlIHZpZXdwb3J0XG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0IGl0J3Mgc2V0IHRvIHNraXAgYWxsIGhlcm9lcyB0aGF0IGhhdmUgdGhlc2UgY29uZGl0aW9uc1xuICAgICAqXG4gICAgICogQHJldHVybnMgSWYgdGhlIGhlcm8gc2hvdWxkIGJlIHNraXBwZWQgb3Igbm90XG4gICAgICovXG4gICAgb25IZXJvU2tpcD86IChvcmlnaW46IEhUTUxEaXZFbGVtZW50LCB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50KSA9PiBTaG91bGRTa2lwO1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gYSBoZXJvIGlzIHNraXBwZWRcbiAgICAgKi9cbiAgICBvbkhlcm9Ta2lwcGVkPzogKCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEJlZm9yZSB0cmFuc2l0aW9uIHN0YXJ0LCBzZXR1cCB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgaGVybyBhbmltYXRpb25cbiAgICAgKiBAcmV0dXJucyBUaGUgY29udGFpbmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBoZXJvIGlzIG91dCBvciBpbiB0aGUgdmlld1xuICAgICAqL1xuICAgIG9uQmVmb3JlVHJhbnNpdGlvbj86IChcbiAgICAgIG9yaWdpbjogSFRNTERpdkVsZW1lbnQsXG4gICAgICB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50XG4gICAgKSA9PiBSZXN1bHQgfCBSZWFkb25seTxSZXN1bHQ+O1xuICB9ID0ge31cbikge1xuICBjb25zdCB7XG4gICAgcHJvcHNUb1RyYW5zaXRpb24gPSBbXSxcbiAgICBcImRhdGEtcHJlZmZpeFwiOiBkYXRhUHJlZmZpeCxcbiAgICByZXBlYXRhYmxlLFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgX2RhdGFQcmVmZml4ID0gZGF0YVByZWZmaXggPyBgLSR7ZGF0YVByZWZmaXh9YCA6IFwiXCI7XG4gIGNvbnN0IGRhdGFQcm9wZXJ0eSA9IGBkYXRhJHtfZGF0YVByZWZmaXh9LWhlcm9gO1xuICBjb25zdCBoZXJvUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGhlcm9SZWYuY3VycmVudCEuc2V0QXR0cmlidXRlKGRhdGFQcm9wZXJ0eSwgaWQpO1xuICB9LCBbaWRdKTtcblxuICBjb25zdCBnZXRIZXJvc09uU2NyZWVuID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG90aGVyRWxlbWVudHMgPSAoXG4gICAgICBBcnJheS5mcm9tKFxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbJHtkYXRhUHJvcGVydHl9PVwiJHtpZH1cIl1gKVxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudFtdXG4gICAgKS5maWx0ZXIoKGVsKSA9PiBlbCAhPT0gaGVyb1JlZi5jdXJyZW50KTtcbiAgICByZXR1cm4gb3RoZXJFbGVtZW50cztcbiAgfSwgW2lkXSk7XG5cbiAgZnVuY3Rpb24gdHJpZ2dlckhlcm9BbmltYXRpb24oKSB7XG4gICAgY29uc3QgYWxsUHJvcHNUb1RyYW5zaXRpb24gPSBbXG4gICAgICBcIndpZHRoXCIsXG4gICAgICBcImhlaWdodFwiLFxuICAgICAgXCJ0b3BcIixcbiAgICAgIFwibGVmdFwiLFxuICAgICAgLi4ucHJvcHNUb1RyYW5zaXRpb24sXG4gICAgXTtcbiAgICBjb25zdCBzaG91bGRIZXJvRm4gPSBldmVudHMub25IZXJvRGV0ZWN0IHx8ICgoLi4uYTogYW55W10pID0+IHRydWUpO1xuICAgIGNvbnN0IG90aGVyRWxlbWVudHMgPSBnZXRIZXJvc09uU2NyZWVuKCkuZmlsdGVyKChlbCkgPT5cbiAgICAgIHNob3VsZEhlcm9GbihlbCwgaGVyb1JlZi5jdXJyZW50ISlcbiAgICApO1xuICAgIGNvbnN0IGN1cnJlbnRFbENvb3JkaW5hdGVzID0gaGVyb1JlZi5jdXJyZW50IS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiICYmIG90aGVyRWxlbWVudHMubGVuZ3RoID4gMilcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJUaGVyZSBhcmUgdG9vIG1hbnkgZWxlbWVudHMgdG8gdHJhbnNpdGlvbiB0bywgSSB3aWxsIHRyYW5zaXRpb24gdG8gdGhlIGZpcnN0IEkgZmluZFwiLFxuICAgICAgICBvdGhlckVsZW1lbnRzXG4gICAgICApO1xuICAgIGNvbnN0IG90aGVyRWxlbWVudCA9IG90aGVyRWxlbWVudHMuZmluZChcbiAgICAgIChlbCkgPT4gZWwgIT09IGhlcm9SZWYuY3VycmVudCFcbiAgICApIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgaWYgKG90aGVyRWxlbWVudCkge1xuICAgICAgY29uc3QgW29yaWdpbkNvbnRhaW5lciwgdGFyZ2V0Q29udGFpbmVyXSA9IGV2ZW50cy5vbkJlZm9yZVRyYW5zaXRpb25cbiAgICAgICAgPyBldmVudHMub25CZWZvcmVUcmFuc2l0aW9uKG90aGVyRWxlbWVudCwgaGVyb1JlZi5jdXJyZW50ISlcbiAgICAgICAgOiBbdmlld3BvcnQsIHZpZXdwb3J0XTtcbiAgICAgIGNvbnN0IHNob3VsZFNraXAgPVxuICAgICAgICBpc0VsZW1lbnRPdXRzaWRlQ29udGFpbmVyKHRhcmdldENvbnRhaW5lciwgY3VycmVudEVsQ29vcmRpbmF0ZXMpIHx8XG4gICAgICAgIGlzRWxlbWVudE91dHNpZGVDb250YWluZXIoXG4gICAgICAgICAgb3JpZ2luQ29udGFpbmVyLFxuICAgICAgICAgIG90aGVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICApXG4gICAgICAgICAgPyAoZXZlbnRzLm9uSGVyb1NraXAgfHwgKCgpID0+IHRydWUpKShvdGhlckVsZW1lbnQsIGhlcm9SZWYuY3VycmVudCEpXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgIGlmIChzaG91bGRTa2lwKSB7XG4gICAgICAgIGV2ZW50cy5vbkhlcm9Ta2lwcGVkPy4oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2xkQ2xvbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBgWyR7ZGF0YVByb3BlcnR5fS1jbG9uZT1cIiR7SUQoaWQpfVwiXWBcbiAgICAgICk7XG4gICAgICBjb25zdCBjbG9uZSA9IChvbGRDbG9uZSB8fFxuICAgICAgICBvdGhlckVsZW1lbnQuY2xvbmVOb2RlKHRydWUpKSBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgICAgaWYgKGV2ZW50cy5vbkhlcm9DbG9uZWQgJiYgIW9sZENsb25lKSBldmVudHMub25IZXJvQ2xvbmVkKGNsb25lKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgdGhvcyBwcm9wZXJ0aWVzIHRoYXQgY2FuIGNhdXNlIGNvbmZ1c2lvbiBzaW5jZSBpdCdzIGEgY2xvbmVcbiAgICAgIGNsb25lLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiO1xuICAgICAgY2xvbmUucmVtb3ZlQXR0cmlidXRlKGRhdGFQcm9wZXJ0eSk7XG5cbiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZShgJHtkYXRhUHJvcGVydHl9LWNsb25lYCwgSUQoaWQpKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBJZiBpdCdzIHJlcGVhdGFibGUsIHdlIHNob3VsZCBrZWVwIHRoZSBmbGFnIHRoYXQgaW5kaWNhdGVzIHRoZSBoZXJvIGV4aXN0YW5jZVxuICAgICAgICovXG4gICAgICBpZiAoIXJlcGVhdGFibGUpXG4gICAgICAgIC8vIFNpbmNlIGEgdHJhbnNpdGlvbiBpcyBub3cgdHJpZ2dlcmluZyBmcm9tIHRoZSBvbGQgZWxlbWVudCwgaGUgY2Fubm90IGJlIGNvbnNpZGVyZWQgZm9yIG90aGVyIHRyYW5zaXRpb25zXG4gICAgICAgIG90aGVyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoZGF0YVByb3BlcnR5KTtcblxuICAgICAgZnVuY3Rpb24gd2lsbFRoZUhlcm9Nb3ZlKG9yaWdpbjogRE9NUmVjdCwgdGFyZ2V0OiBET01SZWN0KSB7XG4gICAgICAgIHJldHVybiAhKFxuICAgICAgICAgIG9yaWdpbi50b3AgPT09IHRhcmdldC50b3AgJiZcbiAgICAgICAgICBvcmlnaW4ubGVmdCA9PT0gdGFyZ2V0LmxlZnQgJiZcbiAgICAgICAgICBvcmlnaW4ud2lkdGggPT09IHRhcmdldC53aWR0aCAmJlxuICAgICAgICAgIG9yaWdpbi5oZWlnaHQgPT09IHRhcmdldC5oZWlnaHRcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIGVsXG4gICAgICAgKiBAcmV0dXJucyBSZXR1cm5zIGlmIGl0IHdpbGwgbW92ZVxuICAgICAgICovXG4gICAgICBmdW5jdGlvbiBzZXRDbG9uZVRvQ29vcmRpbmF0ZXNPZihlbDogSFRNTERpdkVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgY3VycmVudENvb3JkaW5hdGVzID0gY2xvbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHdpbGxNb3ZlID0gd2lsbFRoZUhlcm9Nb3ZlKGNvb3JkaW5hdGVzLCBjdXJyZW50Q29vcmRpbmF0ZXMpO1xuXG4gICAgICAgIGNsb25lLnN0eWxlLnBvc2l0aW9uID0gXCJmaXhlZFwiO1xuICAgICAgICBjbG9uZS5zdHlsZS50b3AgPSBgJHtjb29yZGluYXRlcy50b3B9cHhgO1xuICAgICAgICBjbG9uZS5zdHlsZS5sZWZ0ID0gYCR7Y29vcmRpbmF0ZXMubGVmdH1weGA7XG4gICAgICAgIGNsb25lLnN0eWxlLndpZHRoID0gYCR7Y29vcmRpbmF0ZXMud2lkdGh9cHhgO1xuICAgICAgICBjbG9uZS5zdHlsZS5oZWlnaHQgPSBgJHtjb29yZGluYXRlcy5oZWlnaHR9cHhgO1xuXG4gICAgICAgIHJldHVybiB3aWxsTW92ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBvdGhlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjdXJyZW50Q29vcmRpbmF0ZXMgPSBoZXJvUmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgaXRXb250TW92ZSA9ICF3aWxsVGhlSGVyb01vdmUoY29vcmRpbmF0ZXMsIGN1cnJlbnRDb29yZGluYXRlcyk7XG4gICAgICBpZiAoaXRXb250TW92ZSkgcmV0dXJuO1xuXG4gICAgICBpZiAoIW9sZENsb25lKSB7XG4gICAgICAgIC8qKiBTZXQgdGhlIGNsb25lIG92ZXIgdGhlIHN0YXJ0aW5nIGVsZW1lbnQgKi9cbiAgICAgICAgc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2Yob3RoZXJFbGVtZW50KTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB9XG4gICAgICBoZXJvUmVmLmN1cnJlbnQhLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgb3RoZXJFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuXG4gICAgICBjbG9uZS5zdHlsZS50cmFuc2l0aW9uID0gYCR7YWxsUHJvcHNUb1RyYW5zaXRpb25cbiAgICAgICAgLm1hcCgocHJvcCkgPT4gYCR7cHJvcH0gdmFyKC0tYW5pbWF0aW9uLS1zcGVlZC1mYXN0LCAyNTBtcykgZWFzZS1vdXRgKVxuICAgICAgICAuam9pbihcIiwgXCIpfWA7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBlbCA9IGhlcm9SZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnRzLm9uSGVyb0VuZCkgZXZlbnRzLm9uSGVyb0VuZCgpO1xuICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgaWYgKHJlcGVhdGFibGUpIGVsIS5zZXRBdHRyaWJ1dGUoZGF0YVByb3BlcnR5LCBpZCk7XG4gICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjbG9uZS5yZW1vdmUoKTtcbiAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGV2ZW50cy5vbkhlcm9TdGFydCkge1xuICAgICAgICAgIGV2ZW50cy5vbkhlcm9TdGFydChjbG9uZSwgb3RoZXJFbGVtZW50LCBoZXJvUmVmLmN1cnJlbnQhKTtcbiAgICAgICAgfVxuICAgICAgICB0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMoXG4gICAgICAgICAgY2xvbmUsXG4gICAgICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgICAgIGhlcm9SZWYuY3VycmVudCEucXVlcnlTZWxlY3RvckFsbChgWyR7REFUQV9UQUdfSEVST19DT01QT05FTlR9XWApXG4gICAgICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudFtdXG4gICAgICAgICk7XG4gICAgICAgIGlmICghZWwpIHtcbiAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8qKiBTZXQgdGhlIGNsb25lIG92ZXIgdGhlIG5ldyBwb3NpdGlvbiAqL1xuICAgICAgICBjb25zdCB3aWxsTW92ZSA9IHNldENsb25lVG9Db29yZGluYXRlc09mKGVsKTtcbiAgICAgICAgaWYgKCF3aWxsTW92ZSkgY2xlYW51cCgpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBmb3IgKGxldCBwcm9wVG9UcmFuc2l0aW9uIG9mIHByb3BzVG9UcmFuc2l0aW9uKVxuICAgICAgICAgICAgY2xvbmUuc3R5bGVbcHJvcFRvVHJhbnNpdGlvbiBhcyBhbnldID1cbiAgICAgICAgICAgICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpW3Byb3BUb1RyYW5zaXRpb24gYXMgYW55XTtcbiAgICAgICAgICBsZXQgaW5pdGlhbE9mZnNldDogbnVtYmVyO1xuICAgICAgICAgIGNvbnN0IHMgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZCA9IHRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgIGlmIChkLmNvbnRhaW5zKGVsKSkge1xuICAgICAgICAgICAgICBpZiAoaW5pdGlhbE9mZnNldCA9PT0gdW5kZWZpbmVkKSBpbml0aWFsT2Zmc2V0ID0gZC5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjbG9uZS5zdHlsZS5tYXJnaW5Ub3AgPSBgJHstKGQuc2Nyb2xsVG9wIC0gaW5pdGlhbE9mZnNldCl9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgdHJhbnNpdGlvbkVuZENiID0gb3duRXZlbnQoXG4gICAgICAgICAgICAoeyB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfTogVHJhbnNpdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBzIGFzIGFueSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHMgYXMgYW55LCB0cnVlKTtcbiAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCB0cmFuc2l0aW9uRW5kQ2IpO1xuICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uc3RhcnRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb25DYW5jZWxDYiA9IG93bkV2ZW50KChlKSA9PiB7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIHRyYW5zaXRpb25FbmRDYik7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uY2FuY2VsXCIsIG9uQ2FuY2VsQ2IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmNhbmNlbFwiLCBvbkNhbmNlbENiKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB0cmlnZ2VySGVyb0FuaW1hdGlvbigpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBoZXJvUmVmLFxuICAgIGdldEhlcm9zT25TY3JlZW4sXG4gICAgdHJpZ2dlcjogdHJpZ2dlckhlcm9BbmltYXRpb24sXG4gICAgaGVyb0NvbXBvbmVudFJlZjpcbiAgICAgIChjb21wb25lbnRJZDogc3RyaW5nKSA9PiAoZWxSZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoZWxSZWYpIHtcbiAgICAgICAgICBlbFJlZi5zZXRBdHRyaWJ1dGUoREFUQV9UQUdfSEVST19DT01QT05FTlQsIGNvbXBvbmVudElkKTtcbiAgICAgICAgICBlbFJlZi5jbGFzc0xpc3QuYWRkKFN0eWxlcy5jb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRPdXRzaWRlVmlld3BvcnQoY29vcmRpbmF0ZXM6IERPTVJlY3QpIHtcbiAgY29uc3QgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0ID1cbiAgICBjb29yZGluYXRlcy5sZWZ0ID49IHZpZXdwb3J0LndpZHRoIHx8IGNvb3JkaW5hdGVzLnRvcCA+PSB2aWV3cG9ydC5oZWlnaHQ7XG4gIGNvbnN0IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgPVxuICAgIGNvb3JkaW5hdGVzLmxlZnQgPD0gLWNvb3JkaW5hdGVzLndpZHRoIHx8XG4gICAgY29vcmRpbmF0ZXMudG9wIDw9IC1jb29yZGluYXRlcy5oZWlnaHQ7XG4gIHJldHVybiBlbGVtZW50T3ZlcmZsb3dzVmlld3BvcnQgfHwgZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydDtcbn1cblxuZnVuY3Rpb24gaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lcihcbiAgY29udGFpbmVyOiBWaXN1YWxWaWV3cG9ydCB8IEVsZW1lbnQsXG4gIGNvb3JkaW5hdGVzOiBET01SZWN0XG4pIHtcbiAgaWYgKGNvbnRhaW5lciBpbnN0YW5jZW9mIFZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIGlzRWxlbWVudE91dHNpZGVWaWV3cG9ydChjb29yZGluYXRlcyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udGFpbmVyQm91bmRzID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQgPVxuICAgICAgaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0KGNvbnRhaW5lckJvdW5kcyk7XG5cbiAgICBpZiAoaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0ID1cbiAgICAgIGNvb3JkaW5hdGVzLmxlZnQgPj0gY29udGFpbmVyQm91bmRzLmxlZnQgKyBjb250YWluZXJCb3VuZHMud2lkdGggfHxcbiAgICAgIGNvb3JkaW5hdGVzLnRvcCA+PSBjb250YWluZXJCb3VuZHMudG9wICsgY29udGFpbmVyQm91bmRzLmhlaWdodDtcblxuICAgIGNvbnN0IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgPVxuICAgICAgY29udGFpbmVyQm91bmRzLmxlZnQgLSBjb29yZGluYXRlcy5sZWZ0ID49IGNvb3JkaW5hdGVzLndpZHRoIHx8XG4gICAgICBjb250YWluZXJCb3VuZHMudG9wIC0gY29vcmRpbmF0ZXMudG9wID49IGNvb3JkaW5hdGVzLmhlaWdodDtcblxuICAgIHJldHVybiBlbGVtZW50VW5kZXJmbG93c1ZpZXdwb3J0IHx8IGVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydDtcbiAgfVxufVxuXG50eXBlIEVWRU5UU19JTlRFUkZBQ0UgPSBQYXJhbWV0ZXJzPHR5cGVvZiB1c2VIZXJvPlsyXTtcbnR5cGUgVFJBTlNJVElPTl9UWVBFUyA9IFwiQUNDRUxFUkFUSU9OXCI7XG5mdW5jdGlvbiBjZW50ZXJQb2ludChyZWN0OiBET01SZWN0KSB7XG4gIHJldHVybiBbcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsIHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyXSBhcyBjb25zdDtcbn1cbmNvbnN0IGFuZ2xlID0gKFxuICBwb2ludEE6IHJlYWRvbmx5IFt4OiBudW1iZXIsIHk6IG51bWJlcl0sXG4gIHBvaW50QjogcmVhZG9ubHkgW3g6IG51bWJlciwgeTogbnVtYmVyXVxuKSA9PlxuICBOdW1iZXIoXG4gICAgKFxuICAgICAgTWF0aC5hdGFuMihwb2ludEFbMV0gLSBwb2ludEJbMV0sIHBvaW50QVswXSAtIHBvaW50QlswXSkgKlxuICAgICAgKDE3OS4wOCAvIE1hdGguUEkpXG4gICAgKS50b0ZpeGVkKDUpXG4gICk7XG5leHBvcnQgY29uc3QgVFJBTlNJVElPTl9GQUNUT1JZOiB7XG4gIFtuIGluIFRSQU5TSVRJT05fVFlQRVNdOiAoZXZlbnRzPzogRVZFTlRTX0lOVEVSRkFDRSkgPT4gRVZFTlRTX0lOVEVSRkFDRTtcbn0gPSB7XG4gIEFDQ0VMRVJBVElPTjogKGV2ZW50cykgPT4gKHtcbiAgICAuLi5ldmVudHMsXG4gICAgb25IZXJvU3RhcnQoY2xvbmUsIG9yaWdpbiwgdGFyZ2V0KSB7XG4gICAgICBpZiAoZXZlbnRzPy5vbkhlcm9TdGFydCkgZXZlbnRzLm9uSGVyb1N0YXJ0KGNsb25lLCBvcmlnaW4sIHRhcmdldCk7XG4gICAgICBjbG9uZS5jbGFzc0xpc3QuYWRkKFN0eWxlcy5hY2NlbGVyYXRpb24pO1xuICAgICAgY29uc3QgY2VudGVyUG9pbnRPcmlnaW4gPSBjZW50ZXJQb2ludChvcmlnaW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICAgICAgY29uc3QgY2VudGVyUG9pbnREZXN0aW5hdGlvbiA9IGNlbnRlclBvaW50KFxuICAgICAgICB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICk7XG4gICAgICBjb25zdCBhbmdsZUJldHdlZW5FbGVtZW50cyA9IGFuZ2xlKFxuICAgICAgICBjZW50ZXJQb2ludE9yaWdpbixcbiAgICAgICAgY2VudGVyUG9pbnREZXN0aW5hdGlvblxuICAgICAgKTtcbiAgICAgIGNvbnN0IHZlY3RvclggPSBNYXRoLnNpbihhbmdsZUJldHdlZW5FbGVtZW50cyk7XG4gICAgICBjb25zdCB2ZWN0b3JZID0gTWF0aC5jb3MoYW5nbGVCZXR3ZWVuRWxlbWVudHMpO1xuXG4gICAgICBjb25zdCByb3RhdGVZID0gKDEwICogdmVjdG9yWSkudG9GaXhlZCgwKTtcbiAgICAgIGNvbnN0IG9yaWdpblggPSAodmVjdG9yWSArIDEpICogNTA7XG5cbiAgICAgIGNvbnN0IHJvdGF0ZVggPSAtKDEwICogdmVjdG9yWCkudG9GaXhlZCgwKTtcbiAgICAgIGNvbnN0IG9yaWdpblkgPSAodmVjdG9yWCArIDEpICogNTA7XG5cbiAgICAgIGNsb25lLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tc3RhZ2UtMVwiLFxuICAgICAgICBgcm90YXRlWSgke3JvdGF0ZVl9ZGVnKSByb3RhdGVYKCR7LXJvdGF0ZVh9ZGVnKWBcbiAgICAgICk7XG4gICAgICBjbG9uZS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgXCItLXN0YWdlLTJcIixcbiAgICAgICAgYHJvdGF0ZVkoJHstcm90YXRlWSAqIDAuM31kZWcpIHJvdGF0ZVgoJHtyb3RhdGVYICogMC4zfWRlZylgXG4gICAgICApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXCItLW9yaWdpbi0xXCIsIGAke29yaWdpblh9JSAke29yaWdpbll9JWApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS1vcmlnaW4tMlwiLFxuICAgICAgICBgJHsxMDAgLSBvcmlnaW5YfSUgJHsxMDAgLSBvcmlnaW5ZfSVgXG4gICAgICApO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wZXJzcGVjdGl2ZSA9IFwiMTAwdndcIjtcbiAgICB9LFxuICAgIG9uSGVyb0VuZCgpIHtcbiAgICAgIGlmIChldmVudHM/Lm9uSGVyb0VuZCkgZXZlbnRzLm9uSGVyb0VuZCgpO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wZXJzcGVjdGl2ZSA9IFwiXCI7XG4gICAgfSxcbiAgfSksXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQU9BLElBQUFDLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUEyQyxTQUFBRSx1QkFBQUUsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUFBLFNBQUFHLFFBQUFDLE1BQUEsRUFBQUMs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
311
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX293bkV2ZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VIZXJvTW9kdWxlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiX3R5cGVvZiIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsInVuZGVmaW5lZCIsInJlcyIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfaSIsIml0ZXJhdG9yIiwiX3MiLCJfZSIsIl94IiwiX3IiLCJfYXJyIiwiX24iLCJfZCIsIm5leHQiLCJkb25lIiwiZXJyIiwicmV0dXJuIiwiQXJyYXkiLCJpc0FycmF5IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIm8iLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJpdGVyIiwibGVuIiwiYXJyMiIsIklEIiwiaWQiLCJjb25jYXQiLCJ2aWV3cG9ydCIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0IiwiREFUQV9UQUdfSEVST19DT01QT05FTlQiLCJ0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMiLCJjbG9uZSIsImNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIiLCJvcmlnaW4iLCJpZHNUaGF0V2lsbEFwcGVhciIsIm1hcCIsImEiLCJnZXRBdHRyaWJ1dGUiLCJwcmVleGlzdGluZ0NvbXBvbmVudHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwicmVtb3ZlZEVsZW1lbnRzIiwiZWwiLCJpbmNsdWRlcyIsImVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQiLCJzdHlsZSIsImhlaWdodCIsImNsaWVudEhlaWdodCIsInNldFRpbWVvdXQiLCJvcGFjaXR5IiwiY29tcG9uZW50VGhhdFdpbGxBcHBlYXIiLCJhbHJlYWR5SW5qZWN0ZWRFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInJlY3Vyc2l2ZUJ1aWxkUGF0aCIsImZyb21FbGVtZW50IiwicGF0aFN1ZmZpeCIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJwYXJlbnRDaGlsZHMiLCJjaGlsZHJlbiIsImVsQ2hpbGRTZWxlY3RvciIsImluZGV4T2YiLCJjb25zb2xlIiwibG9nIiwid2hhdElzVGhlRWxlbWVudFBhdGhGcm9tQ2xvbmVFbGVtZW50IiwiaW5zZXJ0QXRJbmRleCIsInRhcmdldEVsZW1lbnRDbG9uZSIsImNsb25lTm9kZSIsInNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQiLCJyZW1haW5pbmdJbmRleGVzIiwiZSIsImFwcGVuZCIsImluc2VydEJlZm9yZSIsImNoaWxkTm9kZXMiLCJpdGVtIiwiQUxXQVlTX1RSQU5TSVRJT04iLCJ1c2VIZXJvIiwib3B0aW9ucyIsInByb3BzVG9UcmFuc2l0aW9uIiwiZXZlbnRzIiwiX29wdGlvbnMkcHJvcHNUb1RyYW5zIiwiX3AiLCJkYXRhUHJlZmZpeCIsInJlcGVhdGFibGUiLCJ1c2VNZW1vIiwicCIsInJlcGxhY2UiLCJfIiwidmFsIiwidG9Mb3dlckNhc2UiLCJfZGF0YVByZWZmaXgiLCJkYXRhUHJvcGVydHkiLCJoZXJvUmVmIiwidXNlUmVmIiwidXNlTGF5b3V0RWZmZWN0IiwiY3VycmVudCIsInNldEF0dHJpYnV0ZSIsImdldEhlcm9zT25TY3JlZW4iLCJ1c2VDYWxsYmFjayIsIm90aGVyRWxlbWVudHMiLCJkb2N1bWVudCIsInRyaWdnZXJIZXJvQW5pbWF0aW9uIiwiYWxsUHJvcHNUb1RyYW5zaXRpb24iLCJvdmVycmlkZVByb3BzVG9UcmFuc2l0aW9uIiwic2hvdWxkSGVyb0ZuIiwib25IZXJvRGV0ZWN0IiwiY3VycmVudEVsZW1lbnQiLCJjdXJyZW50RWxDb29yZGluYXRlcyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIndhcm4iLCJvdGhlckVsZW1lbnQiLCJmaW5kIiwid2lsbFRoZUhlcm9Nb3ZlIiwidG9wIiwibGVmdCIsIndpZHRoIiwic2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2YiLCJjb29yZGluYXRlcyIsImN1cnJlbnRDb29yZGluYXRlcyIsIndpbGxNb3ZlIiwicG9zaXRpb24iLCJfcmVmIiwib25CZWZvcmVUcmFuc2l0aW9uIiwiX3JlZjIiLCJvcmlnaW5Db250YWluZXIiLCJ0YXJnZXRDb250YWluZXIiLCJzaG91bGRTa2lwIiwiaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lciIsIm9uSGVyb1NraXAiLCJfZXZlbnRzJG9uSGVyb1NraXBwZWQiLCJvbkhlcm9Ta2lwcGVkIiwib2xkQ2xvbmUiLCJvbkhlcm9DbG9uZWQiLCJ2aXNpYmlsaXR5IiwicmVtb3ZlQXR0cmlidXRlIiwiaXRXb250TW92ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInRyYW5zaXRpb24iLCJwcm9wIiwic3ViIiwiam9pbiIsImNsZWFudXAiLCJvbkhlcm9FbmQiLCJyZW1vdmUiLCJvbkhlcm9TdGFydCIsInByb3BUb1RyYW5zaXRpb24iLCJnZXRDb21wdXRlZFN0eWxlIiwiaW5pdGlhbE9mZnNldCIsInMiLCJfcmVmMyIsImQiLCJjb250YWlucyIsInNjcm9sbFRvcCIsIm1hcmdpblRvcCIsInRyYW5zaXRpb25FbmRDYiIsIm93bkV2ZW50IiwiX3JlZjQiLCJjdXJyZW50VGFyZ2V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbkNhbmNlbENiIiwidXNlRWZmZWN0IiwidHJpZ2dlciIsImhlcm9Db21wb25lbnRSZWYiLCJjb21wb25lbnRJZCIsImVsUmVmIiwiY2xhc3NMaXN0IiwiYWRkIiwiU3R5bGVzIiwiY29tcG9uZW50IiwiaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0IiwiZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0IiwiZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydCIsImNvbnRhaW5lciIsIlZpc3VhbFZpZXdwb3J0IiwiY29udGFpbmVyQm91bmRzIiwiaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQiLCJjZW50ZXJQb2ludCIsInJlY3QiLCJhbmdsZSIsInBvaW50QSIsInBvaW50QiIsIk1hdGgiLCJhdGFuMiIsIlBJIiwidG9GaXhlZCIsIlRSQU5TSVRJT05fRkFDVE9SWSIsIkFDQ0VMRVJBVElPTiIsImFjY2VsZXJhdGlvbiIsImNlbnRlclBvaW50T3JpZ2luIiwiY2VudGVyUG9pbnREZXN0aW5hdGlvbiIsImFuZ2xlQmV0d2VlbkVsZW1lbnRzIiwidmVjdG9yWCIsInNpbiIsInZlY3RvclkiLCJjb3MiLCJyb3RhdGVZIiwib3JpZ2luWCIsInJvdGF0ZVgiLCJvcmlnaW5ZIiwic2V0UHJvcGVydHkiLCJwZXJzcGVjdGl2ZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlSGVyby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgQ1NTUHJvcGVydGllcyxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IG93bkV2ZW50IGZyb20gXCIuLi91dGlscy9vd25FdmVudFwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi91c2VIZXJvLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IElEID0gKGlkOiBzdHJpbmcpID0+IGAke2lkfS1oZXJvYDtcbnR5cGUgU2hvdWxkU2tpcCA9IGJvb2xlYW47XG50eXBlIFJlc3VsdCA9IFtcbiAgb3JpZ2luQ29udGFpbmVyOiBFbGVtZW50IHwgVmlzdWFsVmlld3BvcnQsXG4gIHRhcmdldENvbnRhaW5lcjogRWxlbWVudCB8IFZpc3VhbFZpZXdwb3J0XG5dO1xuY29uc3Qgdmlld3BvcnQgPSB3aW5kb3cudmlzdWFsVmlld3BvcnQhO1xuY29uc3QgREFUQV9UQUdfSEVST19DT01QT05FTlQgPSBcImRhdGEtaGVyby1jb21wb25lbnRcIjtcblxuZnVuY3Rpb24gdHJpZ2dlckR5bmFtaWNDb21wb25lbnRzKFxuICBjbG9uZTogSFRNTERpdkVsZW1lbnQsXG4gIGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXI6IEhUTUxEaXZFbGVtZW50W10sXG4gIG9yaWdpbjogSFRNTERpdkVsZW1lbnRcbikge1xuICBjb25zdCBpZHNUaGF0V2lsbEFwcGVhciA9IGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIubWFwKChhKSA9PlxuICAgIGEuZ2V0QXR0cmlidXRlKERBVEFfVEFHX0hFUk9fQ09NUE9ORU5UKVxuICApO1xuICBjb25zdCBwcmVleGlzdGluZ0NvbXBvbmVudHMgPSBBcnJheS5mcm9tKFxuICAgIGNsb25lLnF1ZXJ5U2VsZWN0b3JBbGwoYFske0RBVEFfVEFHX0hFUk9fQ09NUE9ORU5UfV1gKVxuICApIGFzIEhUTUxEaXZFbGVtZW50W107XG4gIGNvbnN0IHJlbW92ZWRFbGVtZW50czogSFRNTERpdkVsZW1lbnRbXSA9IHByZWV4aXN0aW5nQ29tcG9uZW50cy5maWx0ZXIoXG4gICAgKGVsKSA9PlxuICAgICAgIWlkc1RoYXRXaWxsQXBwZWFyLmluY2x1ZGVzKGVsLmdldEF0dHJpYnV0ZShEQVRBX1RBR19IRVJPX0NPTVBPTkVOVCkpXG4gICk7XG5cbiAgZm9yIChsZXQgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZCBvZiByZW1vdmVkRWxlbWVudHMpIHtcbiAgICBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLnN0eWxlLmhlaWdodCA9IGAke2VsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQuY2xpZW50SGVpZ2h0fXB4YDtcbiAgfVxuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBmb3IgKGxldCBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkIG9mIHJlbW92ZWRFbGVtZW50cykge1xuICAgICAgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5zdHlsZS5oZWlnaHQgPSBgMHB4YDtcbiAgICAgIGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQuc3R5bGUub3BhY2l0eSA9IGAwYDtcbiAgICB9XG4gIH0sIDApO1xuXG4gIGZvciAobGV0IGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyIG9mIGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIpIHtcbiAgICBjb25zdCBhbHJlYWR5SW5qZWN0ZWRFbGVtZW50ID0gISFjbG9uZS5xdWVyeVNlbGVjdG9yKFxuICAgICAgYFske0RBVEFfVEFHX0hFUk9fQ09NUE9ORU5UfT1cIiR7Y29tcG9uZW50VGhhdFdpbGxBcHBlYXIuZ2V0QXR0cmlidXRlKFxuICAgICAgICBEQVRBX1RBR19IRVJPX0NPTVBPTkVOVFxuICAgICAgKX1cIl1gXG4gICAgKTtcbiAgICBpZiAoIWFscmVhZHlJbmplY3RlZEVsZW1lbnQpIHtcbiAgICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZUJ1aWxkUGF0aChcbiAgICAgICAgZnJvbUVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgICAgICBwYXRoU3VmZml4OiBzdHJpbmcgPSBcIlwiXG4gICAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoZnJvbUVsZW1lbnQgPT09IG9yaWdpbikgcmV0dXJuIHBhdGhTdWZmaXg7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGZyb21FbGVtZW50LnBhcmVudEVsZW1lbnQhO1xuICAgICAgICBjb25zdCBwYXJlbnRDaGlsZHMgPSBBcnJheS5mcm9tKHBhcmVudC5jaGlsZHJlbik7XG4gICAgICAgIGNvbnN0IGVsQ2hpbGRTZWxlY3RvciA9IGA6bnRoLWNoaWxkKCR7XG4gICAgICAgICAgcGFyZW50Q2hpbGRzLmluZGV4T2YoZnJvbUVsZW1lbnQpICsgMVxuICAgICAgICB9KWA7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyLmdldEF0dHJpYnV0ZShEQVRBX1RBR19IRVJPX0NPTVBPTkVOVCkgPT09XG4gICAgICAgICAgXCI3LWluc2lkZURpdlwiXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHBhdGhTdWZmaXgsIGZyb21FbGVtZW50LCBmcm9tRWxlbWVudCAhPT0gb3JpZ2luKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmcm9tRWxlbWVudCAhPT0gb3JpZ2luKVxuICAgICAgICAgIHJldHVybiByZWN1cnNpdmVCdWlsZFBhdGgoXG4gICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICBgJHtlbENoaWxkU2VsZWN0b3J9JHtwYXRoU3VmZml4ID8gYD4ke3BhdGhTdWZmaXh9YCA6IFwiXCJ9YFxuICAgICAgICAgICk7XG4gICAgICAgIGVsc2UgcmV0dXJuIHBhdGhTdWZmaXg7XG4gICAgICB9XG4gICAgICBjb25zdCB3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnQgPSByZWN1cnNpdmVCdWlsZFBhdGgoXG4gICAgICAgIGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyLnBhcmVudEVsZW1lbnQhXG4gICAgICApO1xuICAgICAgY29uc3QgaW5zZXJ0QXRJbmRleCA9IEFycmF5LmZyb20oXG4gICAgICAgIGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyLnBhcmVudEVsZW1lbnQhLmNoaWxkcmVuXG4gICAgICApLmluZGV4T2YoY29tcG9uZW50VGhhdFdpbGxBcHBlYXIpO1xuXG4gICAgICBjb25zdCB0YXJnZXRFbGVtZW50Q2xvbmUgPSBjb21wb25lbnRUaGF0V2lsbEFwcGVhci5jbG9uZU5vZGUoXG4gICAgICAgIHRydWVcbiAgICAgICkgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICB0YXJnZXRFbGVtZW50Q2xvbmUuc3R5bGUuaGVpZ2h0ID0gXCIwcHhcIjtcbiAgICAgIGNvbnN0IHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQgPSB3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnRcbiAgICAgICAgPyBjbG9uZS5xdWVyeVNlbGVjdG9yKHdoYXRJc1RoZUVsZW1lbnRQYXRoRnJvbUNsb25lRWxlbWVudCkhXG4gICAgICAgIDogY2xvbmU7XG4gICAgICBjb25zdCByZW1haW5pbmdJbmRleGVzID0gQXJyYXkuZnJvbShzaG91bGRCZUluc2VydGVkQXRFbGVtZW50LmNoaWxkcmVuKVxuICAgICAgICAubWFwKChlbCwgaSkgPT5cbiAgICAgICAgICByZW1vdmVkRWxlbWVudHMuaW5jbHVkZXMoZWwgYXMgSFRNTERpdkVsZW1lbnQpID8gdW5kZWZpbmVkIDogaVxuICAgICAgICApXG4gICAgICAgIC5maWx0ZXIoKGUpID0+IGUgIT09IHVuZGVmaW5lZCkgYXMgbnVtYmVyW107XG5cbiAgICAgIGlmIChpbnNlcnRBdEluZGV4ID09PSByZW1haW5pbmdJbmRleGVzLmxlbmd0aClcbiAgICAgICAgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5hcHBlbmQodGFyZ2V0RWxlbWVudENsb25lKTtcbiAgICAgIGVsc2VcbiAgICAgICAgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgdGFyZ2V0RWxlbWVudENsb25lLFxuICAgICAgICAgIHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQuY2hpbGROb2Rlcy5pdGVtKFxuICAgICAgICAgICAgcmVtYWluaW5nSW5kZXhlc1tpbnNlcnRBdEluZGV4XVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0YXJnZXRFbGVtZW50Q2xvbmUuc3R5bGUuaGVpZ2h0ID0gYCR7Y29tcG9uZW50VGhhdFdpbGxBcHBlYXIuY2xpZW50SGVpZ2h0fXB4YDtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBBTFdBWVNfVFJBTlNJVElPTiA9IFtcInRvcFwiLCBcImxlZnRcIl07XG5cbi8qKlxuICogVGhpcyBob29rIGltcGxlbWVudHMgdGhlIGxvZ2ljIGZvciBhIGhlcm8gYW5pbWF0aW9uIGJldHdlZW4gMiBlbGVtZW50cyBzaGFyaW5nIHRoZSBzYW1lIGlkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUhlcm8oXG4gIGlkOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFBhcnRpYWw8e1xuICAgIHByb3BzVG9UcmFuc2l0aW9uOiBFeGNsdWRlPFxuICAgICAga2V5b2YgQ1NTUHJvcGVydGllcyxcbiAgICAgIFwid2lkdGhcIiB8IFwiaGVpZ2h0XCIgfCBcInRvcFwiIHwgXCJsZWZ0XCJcbiAgICA+W107XG4gICAgLyoqIElmIHNldCwgdGhlIGRlZmF1bHQgcHJvcGVydGllcyAod2lkdGgsIGhlaWdodCwgZXRjLi4uKSB3aWxsIG5vdCB0cmFuc2l0aW9uLCBhbmQgcHJvcHNUb1RyYW5zaXRpb24gd2lsbCBiZSB0aGUgb25seSBvbmVzIHRoYXQgd2lsbCBiZSB0cmFuc2l0aW9uZWQgKi9cbiAgICBvdmVycmlkZVByb3BzVG9UcmFuc2l0aW9uOiBib29sZWFuO1xuXG4gICAgXCJkYXRhLXByZWZmaXhcIjogc3RyaW5nO1xuICAgIC8qKiBUaGlzIGluZGljYXRlcyB0aGlzIGhlcm8gYW5pbWF0aW9uIHdpbGwgcHJvYmFibHkgYmUgcmVwZWF0ZWQgbXVsdGlwbGUgdGltZSAqL1xuICAgIHJlcGVhdGFibGU6IGJvb2xlYW47XG4gIH0+ID0ge1xuICAgIHByb3BzVG9UcmFuc2l0aW9uOiBbXSxcbiAgfSxcbiAgZXZlbnRzOiB7XG4gICAgLyoqXG4gICAgICogU2hvdWxkIHJldHVybiBpZiB0aGUgZGV0ZWN0ZWQgZWxlbWVudCBzaG91bGQgYmUgXCJoZXJvZWRcIlxuICAgICAqXG4gICAgICogVXNlZnVsbCBmb3Igd2hlbiB0aGUgaGVybyBoYXMgMiBwb3NzaWJsZSBvcmlnaW5zLlxuICAgICAqIEZvciBleGFtcGxlLCBvbmUgY291bGQgaGVybyBvbmx5IHRoZSBjdXJyZW50IGhvdmVyZWQgZWxlbWVudCB3aXRoIGVsLm1hdGNoZXMoXCI6aG92ZXJcIilcbiAgICAgKi9cbiAgICBvbkhlcm9EZXRlY3Q/OiAob3JpZ2luOiBIVE1MRGl2RWxlbWVudCwgdGFyZ2V0OiBIVE1MRGl2RWxlbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERvIHNvbWV0aGluZyB3aGVuIHRoZSBoZXJvIGVuZHNcbiAgICAgKlxuICAgICAqIFVzZWZ1bGwgZm9yIHRyaWdnZXJpbmcgc2Vjb25kYXJ5IGFuaW1hdGlvbnNcbiAgICAgKi9cbiAgICBvbkhlcm9FbmQ/OiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqIERvIHNvbWV0aGlnbiB3aXRoIHRoZSBjbG9uZSBiZWZvcmUgaXQgZ29lcyB0byB0aGUgaHRtbCAqL1xuICAgIG9uSGVyb0Nsb25lZD86IChjbG9uZTogSFRNTERpdkVsZW1lbnQpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBEbyBzb21ldGhpbmcgd2hlbiB0aGUgaGVybyBzdGFydHMgdGhlIHRyYW5zaXRpb25cbiAgICAgKiBIZXJlIGl0J3MgdXNlZnVsbCB0byBzd2l0Y2ggY2xhc3NOYW1lcyB3aXRoIHRoZSB0YXJnZXQuXG4gICAgICpcbiAgICAgKiBJZiBkb25lIGNvcnJlY3RseSwgaXQgd2lsbCB0cmFuc2l0aW9uIGZyb20gc3RhdGUgYSB0byBiIHNtb290aGx5XG4gICAgICovXG4gICAgb25IZXJvU3RhcnQ/OiAoXG4gICAgICBjbG9uZTogSFRNTERpdkVsZW1lbnQsXG4gICAgICBvcmlnaW46IEhUTUxEaXZFbGVtZW50LFxuICAgICAgdGFyZ2V0OiBIVE1MRGl2RWxlbWVudFxuICAgICkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIElzIGNhbGxlZCB3aGVuIHRoZSBoZXJvIGlzIGNvbWluZy9nb2luZyBvdXRzaWRlIHRoZSB2aWV3cG9ydFxuICAgICAqXG4gICAgICogQnkgZGVmYXVsdCBpdCdzIHNldCB0byBza2lwIGFsbCBoZXJvZXMgdGhhdCBoYXZlIHRoZXNlIGNvbmRpdGlvbnNcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIElmIHRoZSBoZXJvIHNob3VsZCBiZSBza2lwcGVkIG9yIG5vdFxuICAgICAqL1xuICAgIG9uSGVyb1NraXA/OiAob3JpZ2luOiBIVE1MRGl2RWxlbWVudCwgdGFyZ2V0OiBIVE1MRGl2RWxlbWVudCkgPT4gU2hvdWxkU2tpcDtcblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIGEgaGVybyBpcyBza2lwcGVkXG4gICAgICovXG4gICAgb25IZXJvU2tpcHBlZD86ICgpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBCZWZvcmUgdHJhbnNpdGlvbiBzdGFydCwgc2V0dXAgdGhlIHByb3BlcnRpZXMgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGhlcm8gYW5pbWF0aW9uXG4gICAgICogQHJldHVybnMgVGhlIGNvbnRhaW5lciB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgaGVybyBpcyBvdXQgb3IgaW4gdGhlIHZpZXdcbiAgICAgKi9cbiAgICBvbkJlZm9yZVRyYW5zaXRpb24/OiAoXG4gICAgICBvcmlnaW46IEhUTUxEaXZFbGVtZW50LFxuICAgICAgdGFyZ2V0OiBIVE1MRGl2RWxlbWVudFxuICAgICkgPT4gUmVzdWx0IHwgUmVhZG9ubHk8UmVzdWx0PjtcbiAgfSA9IHt9XG4pIHtcbiAgY29uc3Qge1xuICAgIHByb3BzVG9UcmFuc2l0aW9uOiBfcCA9IFtdLFxuICAgIFwiZGF0YS1wcmVmZml4XCI6IGRhdGFQcmVmZml4LFxuICAgIHJlcGVhdGFibGUsXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBwcm9wc1RvVHJhbnNpdGlvbiA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIF9wLm1hcCgocCkgPT4gcC5yZXBsYWNlKC8oW0EtWl0pL2csIChfLCB2YWwpID0+IGAtJHt2YWwudG9Mb3dlckNhc2UoKX1gKSksXG4gICAgW19wXVxuICApO1xuICBjb25zdCBfZGF0YVByZWZmaXggPSBkYXRhUHJlZmZpeCA/IGAtJHtkYXRhUHJlZmZpeH1gIDogXCJcIjtcbiAgY29uc3QgZGF0YVByb3BlcnR5ID0gYGRhdGEke19kYXRhUHJlZmZpeH0taGVyb2A7XG4gIGNvbnN0IGhlcm9SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaGVyb1JlZi5jdXJyZW50IS5zZXRBdHRyaWJ1dGUoZGF0YVByb3BlcnR5LCBpZCk7XG4gIH0sIFtpZF0pO1xuXG4gIGNvbnN0IGdldEhlcm9zT25TY3JlZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgb3RoZXJFbGVtZW50cyA9IChcbiAgICAgIEFycmF5LmZyb20oXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFske2RhdGFQcm9wZXJ0eX09XCIke2lkfVwiXWApXG4gICAgICApIGFzIEhUTUxEaXZFbGVtZW50W11cbiAgICApLmZpbHRlcigoZWwpID0+IGVsICE9PSBoZXJvUmVmLmN1cnJlbnQpO1xuICAgIHJldHVybiBvdGhlckVsZW1lbnRzO1xuICB9LCBbaWRdKTtcblxuICBmdW5jdGlvbiB0cmlnZ2VySGVyb0FuaW1hdGlvbigpIHtcbiAgICBjb25zdCBhbGxQcm9wc1RvVHJhbnNpdGlvbiA9IG9wdGlvbnMub3ZlcnJpZGVQcm9wc1RvVHJhbnNpdGlvblxuICAgICAgPyBbLi4uQUxXQVlTX1RSQU5TSVRJT04sIC4uLnByb3BzVG9UcmFuc2l0aW9uXVxuICAgICAgOiBbXCJ3aWR0aFwiLCBcImhlaWdodFwiLCAuLi5BTFdBWVNfVFJBTlNJVElPTiwgLi4ucHJvcHNUb1RyYW5zaXRpb25dO1xuICAgIGNvbnN0IHNob3VsZEhlcm9GbiA9IGV2ZW50cy5vbkhlcm9EZXRlY3QgfHwgKCguLi5hOiBhbnlbXSkgPT4gdHJ1ZSk7XG4gICAgY29uc3Qgb3RoZXJFbGVtZW50cyA9IGdldEhlcm9zT25TY3JlZW4oKS5maWx0ZXIoKGVsKSA9PlxuICAgICAgc2hvdWxkSGVyb0ZuKGVsLCBoZXJvUmVmLmN1cnJlbnQhKVxuICAgICk7XG4gICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBoZXJvUmVmLmN1cnJlbnQhO1xuICAgIGNvbnN0IGN1cnJlbnRFbENvb3JkaW5hdGVzID0gY3VycmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIiAmJiBvdGhlckVsZW1lbnRzLmxlbmd0aCA+IDIpXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiVGhlcmUgYXJlIHRvbyBtYW55IGVsZW1lbnRzIHRvIHRyYW5zaXRpb24gdG8sIEkgd2lsbCB0cmFuc2l0aW9uIHRvIHRoZSBmaXJzdCBJIGZpbmRcIixcbiAgICAgICAgb3RoZXJFbGVtZW50c1xuICAgICAgKTtcbiAgICBjb25zdCBvdGhlckVsZW1lbnQgPSBvdGhlckVsZW1lbnRzLmZpbmQoXG4gICAgICAoZWwpID0+IGVsICE9PSBoZXJvUmVmLmN1cnJlbnQhXG4gICAgKSBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgIGlmIChvdGhlckVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IFtvcmlnaW5Db250YWluZXIsIHRhcmdldENvbnRhaW5lcl0gPSBldmVudHMub25CZWZvcmVUcmFuc2l0aW9uXG4gICAgICAgID8gZXZlbnRzLm9uQmVmb3JlVHJhbnNpdGlvbihvdGhlckVsZW1lbnQsIGhlcm9SZWYuY3VycmVudCEpXG4gICAgICAgIDogW3ZpZXdwb3J0LCB2aWV3cG9ydF07XG4gICAgICBjb25zdCBzaG91bGRTa2lwID1cbiAgICAgICAgaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lcih0YXJnZXRDb250YWluZXIsIGN1cnJlbnRFbENvb3JkaW5hdGVzKSB8fFxuICAgICAgICBpc0VsZW1lbnRPdXRzaWRlQ29udGFpbmVyKFxuICAgICAgICAgIG9yaWdpbkNvbnRhaW5lcixcbiAgICAgICAgICBvdGhlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgKVxuICAgICAgICAgID8gKGV2ZW50cy5vbkhlcm9Ta2lwIHx8ICgoKSA9PiB0cnVlKSkob3RoZXJFbGVtZW50LCBoZXJvUmVmLmN1cnJlbnQhKVxuICAgICAgICAgIDogZmFsc2U7XG4gICAgICBpZiAoc2hvdWxkU2tpcCkge1xuICAgICAgICBldmVudHMub25IZXJvU2tpcHBlZD8uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9sZENsb25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgYFske2RhdGFQcm9wZXJ0eX0tY2xvbmU9XCIke0lEKGlkKX1cIl1gXG4gICAgICApO1xuICAgICAgY29uc3QgY2xvbmUgPSAob2xkQ2xvbmUgfHxcbiAgICAgICAgb3RoZXJFbGVtZW50LmNsb25lTm9kZSh0cnVlKSkgYXMgSFRNTERpdkVsZW1lbnQ7XG5cbiAgICAgIGlmIChldmVudHMub25IZXJvQ2xvbmVkICYmICFvbGRDbG9uZSkgZXZlbnRzLm9uSGVyb0Nsb25lZChjbG9uZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHRob3MgcHJvcGVydGllcyB0aGF0IGNhbiBjYXVzZSBjb25mdXNpb24gc2luY2UgaXQncyBhIGNsb25lXG4gICAgICBjbG9uZS5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIjtcbiAgICAgIGNsb25lLnJlbW92ZUF0dHJpYnV0ZShkYXRhUHJvcGVydHkpO1xuXG4gICAgICBjbG9uZS5zZXRBdHRyaWJ1dGUoYCR7ZGF0YVByb3BlcnR5fS1jbG9uZWAsIElEKGlkKSk7XG5cbiAgICAgIC8qKlxuICAgICAgICogSWYgaXQncyByZXBlYXRhYmxlLCB3ZSBzaG91bGQga2VlcCB0aGUgZmxhZyB0aGF0IGluZGljYXRlcyB0aGUgaGVybyBleGlzdGFuY2VcbiAgICAgICAqL1xuICAgICAgaWYgKCFyZXBlYXRhYmxlKVxuICAgICAgICAvLyBTaW5jZSBhIHRyYW5zaXRpb24gaXMgbm93IHRyaWdnZXJpbmcgZnJvbSB0aGUgb2xkIGVsZW1lbnQsIGhlIGNhbm5vdCBiZSBjb25zaWRlcmVkIGZvciBvdGhlciB0cmFuc2l0aW9uc1xuICAgICAgICBvdGhlckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGRhdGFQcm9wZXJ0eSk7XG5cbiAgICAgIGZ1bmN0aW9uIHdpbGxUaGVIZXJvTW92ZShvcmlnaW46IERPTVJlY3QsIHRhcmdldDogRE9NUmVjdCkge1xuICAgICAgICByZXR1cm4gIShcbiAgICAgICAgICBvcmlnaW4udG9wID09PSB0YXJnZXQudG9wICYmXG4gICAgICAgICAgb3JpZ2luLmxlZnQgPT09IHRhcmdldC5sZWZ0ICYmXG4gICAgICAgICAgb3JpZ2luLndpZHRoID09PSB0YXJnZXQud2lkdGggJiZcbiAgICAgICAgICBvcmlnaW4uaGVpZ2h0ID09PSB0YXJnZXQuaGVpZ2h0XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSBlbFxuICAgICAgICogQHJldHVybnMgUmV0dXJucyBpZiBpdCB3aWxsIG1vdmVcbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2YoZWw6IEhUTUxEaXZFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb29yZGluYXRlcyA9IGNsb25lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB3aWxsTW92ZSA9IHdpbGxUaGVIZXJvTW92ZShjb29yZGluYXRlcywgY3VycmVudENvb3JkaW5hdGVzKTtcblxuICAgICAgICBjbG9uZS5zdHlsZS5wb3NpdGlvbiA9IFwiZml4ZWRcIjtcbiAgICAgICAgY2xvbmUuc3R5bGUudG9wID0gYCR7Y29vcmRpbmF0ZXMudG9wfXB4YDtcbiAgICAgICAgY2xvbmUuc3R5bGUubGVmdCA9IGAke2Nvb3JkaW5hdGVzLmxlZnR9cHhgO1xuICAgICAgICBpZiAoYWxsUHJvcHNUb1RyYW5zaXRpb24uaW5jbHVkZXMoXCJ3aWR0aFwiKSlcbiAgICAgICAgICBjbG9uZS5zdHlsZS53aWR0aCA9IGAke2Nvb3JkaW5hdGVzLndpZHRofXB4YDtcbiAgICAgICAgaWYgKGFsbFByb3BzVG9UcmFuc2l0aW9uLmluY2x1ZGVzKFwiaGVpZ2h0XCIpKVxuICAgICAgICAgIGNsb25lLnN0eWxlLmhlaWdodCA9IGAke2Nvb3JkaW5hdGVzLmhlaWdodH1weGA7XG5cbiAgICAgICAgcmV0dXJuIHdpbGxNb3ZlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb29yZGluYXRlcyA9IG90aGVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRDb29yZGluYXRlcyA9IGhlcm9SZWYuY3VycmVudCEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBpdFdvbnRNb3ZlID0gIXdpbGxUaGVIZXJvTW92ZShjb29yZGluYXRlcywgY3VycmVudENvb3JkaW5hdGVzKTtcbiAgICAgIGlmIChpdFdvbnRNb3ZlKSByZXR1cm47XG5cbiAgICAgIGlmICghb2xkQ2xvbmUpIHtcbiAgICAgICAgLyoqIFNldCB0aGUgY2xvbmUgb3ZlciB0aGUgc3RhcnRpbmcgZWxlbWVudCAqL1xuICAgICAgICBzZXRDbG9uZVRvQ29vcmRpbmF0ZXNPZihvdGhlckVsZW1lbnQpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNsb25lKTtcbiAgICAgIH1cbiAgICAgIGhlcm9SZWYuY3VycmVudCEuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gICAgICBvdGhlckVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG5cbiAgICAgIGNsb25lLnN0eWxlLnRyYW5zaXRpb24gPSBgJHthbGxQcm9wc1RvVHJhbnNpdGlvblxuICAgICAgICAubWFwKFxuICAgICAgICAgIChwcm9wKSA9PlxuICAgICAgICAgICAgYCR7cHJvcC5yZXBsYWNlKFxuICAgICAgICAgICAgICAvW0EtWl0vZyxcbiAgICAgICAgICAgICAgKHN1YikgPT4gYC0ke3N1Yi50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgICAgICl9IHZhcigtLWFuaW1hdGlvbi0tc3BlZWQtZmFzdCwgMjUwbXMpIGVhc2Utb3V0YFxuICAgICAgICApXG4gICAgICAgIC5qb2luKFwiLCBcIil9YDtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gaGVyb1JlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudHMub25IZXJvRW5kKSBldmVudHMub25IZXJvRW5kKCk7XG4gICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICBpZiAocmVwZWF0YWJsZSkgZWwhLnNldEF0dHJpYnV0ZShkYXRhUHJvcGVydHksIGlkKTtcbiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNsb25lLnJlbW92ZSgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoZXZlbnRzLm9uSGVyb1N0YXJ0KSB7XG4gICAgICAgICAgZXZlbnRzLm9uSGVyb1N0YXJ0KGNsb25lLCBvdGhlckVsZW1lbnQsIGhlcm9SZWYuY3VycmVudCEpO1xuICAgICAgICB9XG4gICAgICAgIHRyaWdnZXJEeW5hbWljQ29tcG9uZW50cyhcbiAgICAgICAgICBjbG9uZSxcbiAgICAgICAgICBBcnJheS5mcm9tKFxuICAgICAgICAgICAgaGVyb1JlZi5jdXJyZW50IS5xdWVyeVNlbGVjdG9yQWxsKGBbJHtEQVRBX1RBR19IRVJPX0NPTVBPTkVOVH1dYClcbiAgICAgICAgICApIGFzIEhUTUxEaXZFbGVtZW50W10sXG4gICAgICAgICAgY3VycmVudEVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFlbCkge1xuICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLyoqIFNldCB0aGUgY2xvbmUgb3ZlciB0aGUgbmV3IHBvc2l0aW9uICovXG4gICAgICAgIGNvbnN0IHdpbGxNb3ZlID0gc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2YoZWwpO1xuICAgICAgICBpZiAoIXdpbGxNb3ZlKSBjbGVhbnVwKCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZvciAobGV0IHByb3BUb1RyYW5zaXRpb24gb2YgcHJvcHNUb1RyYW5zaXRpb24pXG4gICAgICAgICAgICBjbG9uZS5zdHlsZVtwcm9wVG9UcmFuc2l0aW9uIGFzIGFueV0gPVxuICAgICAgICAgICAgICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbClbcHJvcFRvVHJhbnNpdGlvbiBhcyBhbnldO1xuICAgICAgICAgIGxldCBpbml0aWFsT2Zmc2V0OiBudW1iZXI7XG4gICAgICAgICAgY29uc3QgcyA9ICh7IHRhcmdldCB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkID0gdGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGQuY29udGFpbnMoZWwpKSB7XG4gICAgICAgICAgICAgIGlmIChpbml0aWFsT2Zmc2V0ID09PSB1bmRlZmluZWQpIGluaXRpYWxPZmZzZXQgPSBkLnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGNsb25lLnN0eWxlLm1hcmdpblRvcCA9IGAkey0oZC5zY3JvbGxUb3AgLSBpbml0aWFsT2Zmc2V0KX1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCB0cmFuc2l0aW9uRW5kQ2IgPSBvd25FdmVudChcbiAgICAgICAgICAgICh7IHRhcmdldCwgY3VycmVudFRhcmdldCB9OiBUcmFuc2l0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gY3VycmVudFRhcmdldCkgY2xlYW51cCgpO1xuICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHMgYXMgYW55LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgcyBhcyBhbnksIHRydWUpO1xuICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIHRyYW5zaXRpb25FbmRDYik7XG4gICAgICAgICAgY2xvbmUuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25zdGFydFwiLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvbkNhbmNlbENiID0gb3duRXZlbnQoKGUpID0+IHtcbiAgICAgICAgICAgICAgY2xvbmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgdHJhbnNpdGlvbkVuZENiKTtcbiAgICAgICAgICAgICAgY2xvbmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25jYW5jZWxcIiwgb25DYW5jZWxDYik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uY2FuY2VsXCIsIG9uQ2FuY2VsQ2IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHRyaWdnZXJIZXJvQW5pbWF0aW9uKCk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4ge1xuICAgIGhlcm9SZWYsXG4gICAgZ2V0SGVyb3NPblNjcmVlbixcbiAgICB0cmlnZ2VyOiB0cmlnZ2VySGVyb0FuaW1hdGlvbixcbiAgICBoZXJvQ29tcG9uZW50UmVmOlxuICAgICAgKGNvbXBvbmVudElkOiBzdHJpbmcpID0+IChlbFJlZjogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmIChlbFJlZikge1xuICAgICAgICAgIGVsUmVmLnNldEF0dHJpYnV0ZShEQVRBX1RBR19IRVJPX0NPTVBPTkVOVCwgY29tcG9uZW50SWQpO1xuICAgICAgICAgIGVsUmVmLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzRWxlbWVudE91dHNpZGVWaWV3cG9ydChjb29yZGluYXRlczogRE9NUmVjdCkge1xuICBjb25zdCBlbGVtZW50T3ZlcmZsb3dzVmlld3BvcnQgPVxuICAgIGNvb3JkaW5hdGVzLmxlZnQgPj0gdmlld3BvcnQud2lkdGggfHwgY29vcmRpbmF0ZXMudG9wID49IHZpZXdwb3J0LmhlaWdodDtcbiAgY29uc3QgZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydCA9XG4gICAgY29vcmRpbmF0ZXMubGVmdCA8PSAtY29vcmRpbmF0ZXMud2lkdGggfHxcbiAgICBjb29yZGluYXRlcy50b3AgPD0gLWNvb3JkaW5hdGVzLmhlaWdodDtcbiAgcmV0dXJuIGVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydCB8fCBlbGVtZW50VW5kZXJmbG93c1ZpZXdwb3J0O1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRPdXRzaWRlQ29udGFpbmVyKFxuICBjb250YWluZXI6IFZpc3VhbFZpZXdwb3J0IHwgRWxlbWVudCxcbiAgY29vcmRpbmF0ZXM6IERPTVJlY3Rcbikge1xuICBpZiAoY29udGFpbmVyIGluc3RhbmNlb2YgVmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0KGNvb3JkaW5hdGVzKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjb250YWluZXJCb3VuZHMgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBpc0NvbnRhaW5lck91dHNpZGVWaWV3cG9ydCA9XG4gICAgICBpc0VsZW1lbnRPdXRzaWRlVmlld3BvcnQoY29udGFpbmVyQm91bmRzKTtcblxuICAgIGlmIChpc0NvbnRhaW5lck91dHNpZGVWaWV3cG9ydCkgcmV0dXJuIHRydWU7XG5cbiAgICBjb25zdCBlbGVtZW50T3ZlcmZsb3dzVmlld3BvcnQgPVxuICAgICAgY29vcmRpbmF0ZXMubGVmdCA+PSBjb250YWluZXJCb3VuZHMubGVmdCArIGNvbnRhaW5lckJvdW5kcy53aWR0aCB8fFxuICAgICAgY29vcmRpbmF0ZXMudG9wID49IGNvbnRhaW5lckJvdW5kcy50b3AgKyBjb250YWluZXJCb3VuZHMuaGVpZ2h0O1xuXG4gICAgY29uc3QgZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydCA9XG4gICAgICBjb250YWluZXJCb3VuZHMubGVmdCAtIGNvb3JkaW5hdGVzLmxlZnQgPj0gY29vcmRpbmF0ZXMud2lkdGggfHxcbiAgICAgIGNvbnRhaW5lckJvdW5kcy50b3AgLSBjb29yZGluYXRlcy50b3AgPj0gY29vcmRpbmF0ZXMuaGVpZ2h0O1xuXG4gICAgcmV0dXJuIGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgfHwgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0O1xuICB9XG59XG5cbnR5cGUgRVZFTlRTX0lOVEVSRkFDRSA9IFBhcmFtZXRlcnM8dHlwZW9mIHVzZUhlcm8+WzJdO1xudHlwZSBUUkFOU0lUSU9OX1RZUEVTID0gXCJBQ0NFTEVSQVRJT05cIjtcbmZ1bmN0aW9uIGNlbnRlclBvaW50KHJlY3Q6IERPTVJlY3QpIHtcbiAgcmV0dXJuIFtyZWN0LmxlZnQgKyByZWN0LndpZHRoIC8gMiwgcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDJdIGFzIGNvbnN0O1xufVxuY29uc3QgYW5nbGUgPSAoXG4gIHBvaW50QTogcmVhZG9ubHkgW3g6IG51bWJlciwgeTogbnVtYmVyXSxcbiAgcG9pbnRCOiByZWFkb25seSBbeDogbnVtYmVyLCB5OiBudW1iZXJdXG4pID0+XG4gIE51bWJlcihcbiAgICAoXG4gICAgICBNYXRoLmF0YW4yKHBvaW50QVsxXSAtIHBvaW50QlsxXSwgcG9pbnRBWzBdIC0gcG9pbnRCWzBdKSAqXG4gICAgICAoMTc5LjA4IC8gTWF0aC5QSSlcbiAgICApLnRvRml4ZWQoNSlcbiAgKTtcbmV4cG9ydCBjb25zdCBUUkFOU0lUSU9OX0ZBQ1RPUlk6IHtcbiAgW24gaW4gVFJBTlNJVElPTl9UWVBFU106IChldmVudHM/OiBFVkVOVFNfSU5URVJGQUNFKSA9PiBFVkVOVFNfSU5URVJGQUNFO1xufSA9IHtcbiAgQUNDRUxFUkFUSU9OOiAoZXZlbnRzKSA9PiAoe1xuICAgIC4uLmV2ZW50cyxcbiAgICBvbkhlcm9TdGFydChjbG9uZSwgb3JpZ2luLCB0YXJnZXQpIHtcbiAgICAgIGlmIChldmVudHM/Lm9uSGVyb1N0YXJ0KSBldmVudHMub25IZXJvU3RhcnQoY2xvbmUsIG9yaWdpbiwgdGFyZ2V0KTtcbiAgICAgIGNsb25lLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmFjY2VsZXJhdGlvbik7XG4gICAgICBjb25zdCBjZW50ZXJQb2ludE9yaWdpbiA9IGNlbnRlclBvaW50KG9yaWdpbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgICBjb25zdCBjZW50ZXJQb2ludERlc3RpbmF0aW9uID0gY2VudGVyUG9pbnQoXG4gICAgICAgIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGFuZ2xlQmV0d2VlbkVsZW1lbnRzID0gYW5nbGUoXG4gICAgICAgIGNlbnRlclBvaW50T3JpZ2luLFxuICAgICAgICBjZW50ZXJQb2ludERlc3RpbmF0aW9uXG4gICAgICApO1xuICAgICAgY29uc3QgdmVjdG9yWCA9IE1hdGguc2luKGFuZ2xlQmV0d2VlbkVsZW1lbnRzKTtcbiAgICAgIGNvbnN0IHZlY3RvclkgPSBNYXRoLmNvcyhhbmdsZUJldHdlZW5FbGVtZW50cyk7XG5cbiAgICAgIGNvbnN0IHJvdGF0ZVkgPSAoMTAgKiB2ZWN0b3JZKS50b0ZpeGVkKDApO1xuICAgICAgY29uc3Qgb3JpZ2luWCA9ICh2ZWN0b3JZICsgMSkgKiA1MDtcblxuICAgICAgY29uc3Qgcm90YXRlWCA9IC0oMTAgKiB2ZWN0b3JYKS50b0ZpeGVkKDApO1xuICAgICAgY29uc3Qgb3JpZ2luWSA9ICh2ZWN0b3JYICsgMSkgKiA1MDtcblxuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS1zdGFnZS0xXCIsXG4gICAgICAgIGByb3RhdGVZKCR7cm90YXRlWX1kZWcpIHJvdGF0ZVgoJHstcm90YXRlWH1kZWcpYFxuICAgICAgKTtcbiAgICAgIGNsb25lLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tc3RhZ2UtMlwiLFxuICAgICAgICBgcm90YXRlWSgkey1yb3RhdGVZICogMC4zfWRlZykgcm90YXRlWCgke3JvdGF0ZVggKiAwLjN9ZGVnKWBcbiAgICAgICk7XG4gICAgICBjbG9uZS5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tb3JpZ2luLTFcIiwgYCR7b3JpZ2luWH0lICR7b3JpZ2luWX0lYCk7XG4gICAgICBjbG9uZS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgXCItLW9yaWdpbi0yXCIsXG4gICAgICAgIGAkezEwMCAtIG9yaWdpblh9JSAkezEwMCAtIG9yaWdpbll9JWBcbiAgICAgICk7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBlcnNwZWN0aXZlID0gXCIxMDB2d1wiO1xuICAgIH0sXG4gICAgb25IZXJvRW5kKCkge1xuICAgICAgaWYgKGV2ZW50cz8ub25IZXJvRW5kKSBldmVudHMub25IZXJvRW5kKCk7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBlcnNwZWN0aXZlID0gXCJcIjtcbiAgICB9LFxuICB9KSxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBUUEsSUFBQUMsU0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQTJDLFNBQUFFLHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBQUEsU0FBQUcsUUFBQUMsTUFBQSxFQUFBQyxjQUFBLFFBQUFDLElBQUEsR0FBQUMsTUFBQSxDQUFBRCxJQUFBLENBQUFGLE1BQUEsT0FBQUcsTUFBQSxDQUFBQyxxQkFBQSxRQUFBQyxPQUFBLEdBQUFGLE1BQUEsQ0FBQUMscUJBQUEsQ0FBQUosTUFBQSxHQUFBQyxjQUFBLEtBQUFJLE9BQUEsR0FBQUEsT0FBQSxDQUFBQyxNQUFBLFdBQUFDLEdBQUEsV0FBQUosTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixNQUFBLEVBQUFPLEdBQUEsRUFBQUUsVUFBQSxPQUFBUCxJQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxJQUFBLEVBQUFHLE9BQUEsWUFBQUgsSUFBQTtBQUFBLFNBQUFVLGNBQUFDLE1BQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUFBRixDQUFBLFVBQUFHLE1BQUEsV0FBQUYsU0FBQSxDQUFBRCxDQUFBLElBQUFDLFNBQUEsQ0FBQUQsQ0FBQSxRQUFBQSxDQUFBLE9BQUFmLE9BQUEsQ0FBQUksTUFBQSxDQUFBYyxNQUFBLE9BQUFDLE9BQUEsV0FBQUMsR0FBQSxJQUFBQyxlQUFBLENBQUFQLE1BQUEsRUFBQU0sR0FBQSxFQUFBRixNQUFBLENBQUFFLEdBQUEsU0FBQWhCLE1BQUEsQ0FBQWtCLHlCQUFBLEdBQUFsQixNQUFBLENBQUFtQixnQkFBQSxDQUFBVCxNQUFBLEVBQUFWLE1BQUEsQ0FBQWtCLHlCQUFBLENBQUFKLE1BQUEsS0FBQWxCLE9BQUEsQ0FBQUksTUFBQSxDQUFBYyxNQUFBLEdBQUFDLE9BQUEsV0FBQUMsR0FBQSxJQUFBaEIsTUFBQSxDQUFBb0IsY0FBQSxDQUFBVixNQUFBLEVBQUFNLEdBQUEsRUFBQWhCLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVMsTUFBQSxFQUFBRSxHQUFBLGlCQUFBTixNQUFBO0FBQUEsU0FBQU8sZ0JBQUF4QixHQUFBLEVBQUF1QixHQUFBLEVBQUFLLEtBQUEsSUFBQUwsR0FBQSxHQUFBTSxjQUFBLENBQUFOLEdBQUEsT0FBQUEsR0FBQSxJQUFBdkIsR0FBQSxJQUFBTyxNQUFBLENBQUFvQixjQUFBLENBQUEzQixHQUFBLEVBQUF1QixHQUFBLElBQUFLLEtBQUEsRUFBQUEsS0FBQSxFQUFBZixVQUFBLFFBQUFpQixZQUFBLFFBQUFDLFFBQUEsb0JBQUEvQixHQUFBLENBQUF1QixHQUFBLElBQUFLLEtBQUEsV0FBQTVCLEdBQUE7QUFBQSxTQUFBNkIsZUFBQUcsR0FBQSxRQUFBVCxHQUFBLEdBQUFVLFlBQUEsQ0FBQUQsR0FBQSxvQkFBQUUsT0FBQSxDQUFBWCxHQUFBLGlCQUFBQSxHQUFBLEdBQUFZLE1BQUEsQ0FBQVosR0FBQTtBQUFBLFNBQUFVLGFBQUFHLEtBQUEsRUFBQUMsSUFBQSxRQUFBSCxPQUFBLENBQUFFLEtBQUEsa0JBQUFBLEtBQUEsa0JBQUFBLEtBQUEsTUFBQUUsSUFBQSxHQUFBRixLQUFBLENBQUFHLE1BQUEsQ0FBQUMsV0FBQSxPQUFBRixJQUFBLEtBQUFHLFNBQUEsUUFBQUMsR0FBQSxHQUFBSixJQUFBLENBQUFLLElBQUEsQ0FBQVAsS0FBQSxFQUFBQyxJQUFBLG9CQUFBSCxPQUFBLENBQUFRLEdBQUEsdUJBQUFBLEdBQUEsWUFBQUUsU0FBQSw0REFBQVAsSUFBQSxnQkFBQUYsTUFBQSxHQUFBVSxNQUFBLEVBQUFULEtBQUE7QUFBQSxTQUFBVSxlQUFBQyxHQUFBLEVBQUE3QixDQUFBLFdBQUE4QixlQUFBLENBQUFELEdBQUEsS0FBQUUscUJBQUEsQ0FBQUYsR0FBQSxFQUFBN0IsQ0FBQSxLQUFBZ0MsMkJBQUEsQ0FBQUgsR0FBQSxFQUFBN0IsQ0FBQSxLQUFBaUMsZ0JBQUE7QUFBQSxTQUFBQSxpQkFBQSxjQUFBUCxTQUFBO0FBQUEsU0FBQUssc0JBQUFGLEdBQUEsRUFBQTdCLENBQUEsUUFBQWtDLEVBQUEsV0FBQUwsR0FBQSxnQ0FBQVIsTUFBQSxJQUFBUSxHQUFBLENBQUFSLE1BQUEsQ0FBQWMsUUFBQSxLQUFBTixHQUFBLDRCQUFBSyxFQUFBLFFBQUFFLEVBQUEsRUFBQUMsRUFBQSxFQUFBQyxFQUFBLEVBQUFDLEVBQUEsRUFBQUMsSUFBQSxPQUFBQyxFQUFBLE9BQUFDLEVBQUEsaUJBQUFKLEVBQUEsSUFBQUosRUFBQSxHQUFBQSxFQUFBLENBQUFULElBQUEsQ0FBQUksR0FBQSxHQUFBYyxJQUFBLFFBQUEzQyxDQUFBLFFBQUFYLE1BQUEsQ0FBQTZDLEVBQUEsTUFBQUEsRUFBQSxVQUFBTyxFQUFBLHVCQUFBQSxFQUFBLElBQUFMLEVBQUEsR0FBQUUsRUFBQSxDQUFBYixJQUFBLENBQUFTLEVBQUEsR0FBQVUsSUFBQSxNQUFBSixJQUFBLENBQUE1QyxJQUFBLENBQUF3QyxFQUFBLENBQUExQixLQUFBLEdBQUE4QixJQUFBLENBQUF0QyxNQUFBLEtBQUFGLENBQUEsR0FBQXlDLEVBQUEsaUJBQUFJLEdBQUEsSUFBQUgsRUFBQSxPQUFBTCxFQUFBLEdBQUFRLEdBQUEseUJBQUFKLEVBQUEsWUFBQVAsRUFBQSxDQUFBWSxNQUFBLEtBQUFQLEVBQUEsR0FBQUwsRUFBQSxDQUFBWSxNQUFBLElBQUF6RCxNQUFBLENBQUFrRCxFQUFBLE1BQUFBLEVBQUEsMkJBQUFHLEVBQUEsUUFBQUwsRUFBQSxhQUFBRyxJQUFBO0FBQUEsU0FBQVYsZ0JBQUFELEdBQUEsUUFBQWtCLEtBQUEsQ0FBQUMsT0FBQSxDQUFBbkIsR0FBQSxVQUFBQSxHQUFBO0FBQUEsU0FBQW9CLG1CQUFBcEIsR0FBQSxXQUFBcUIsa0JBQUEsQ0FBQXJCLEdBQUEsS0FBQXNCLGdCQUFBLENBQUF0QixHQUFBLEtBQUFHLDJCQUFBLENBQUFILEdBQUEsS0FBQXVCLGtCQUFBO0FBQUEsU0FBQUEsbUJBQUEsY0FBQTFCLFNBQUE7QUFBQSxTQUFBTSw0QkFBQXFCLENBQUEsRUFBQUMsTUFBQSxTQUFBRCxDQUFBLHFCQUFBQSxDQUFBLHNCQUFBRSxpQkFBQSxDQUFBRixDQUFBLEVBQUFDLE1BQUEsT0FBQUUsQ0FBQSxHQUFBbkUsTUFBQSxDQUFBb0UsU0FBQSxDQUFBQyxRQUFBLENBQUFqQyxJQUFBLENBQUE0QixDQUFBLEVBQUFNLEtBQUEsYUFBQUgsQ0FBQSxpQkFBQUgsQ0FBQSxDQUFBTyxXQUFBLEVBQUFKLENBQUEsR0FBQUgsQ0FBQSxDQUFBTyxXQUFBLENBQUFDLElBQUEsTUFBQUwsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBVCxLQUFBLENBQUFlLElBQUEsQ0FBQVQsQ0FBQSxPQUFBRyxDQUFBLCtEQUFBTyxJQUFBLENBQUFQLENBQUEsVUFBQUQsaUJBQUEsQ0FBQUYsQ0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUgsaUJBQUFhLElBQUEsZUFBQTNDLE1BQUEsb0JBQUEyQyxJQUFBLENBQUEzQyxNQUFBLENBQUFjLFFBQUEsYUFBQTZCLElBQUEsK0JBQUFqQixLQUFBLENBQUFlLElBQUEsQ0FBQUUsSUFBQTtBQUFBLFNBQUFkLG1CQUFBckIsR0FBQSxRQUFBa0IsS0FBQSxDQUFBQyxPQUFBLENBQUFuQixHQUFBLFVBQUEwQixpQkFBQSxDQUFBMUIsR0FBQTtBQUFBLFNBQUEwQixrQkFBQTFCLEdBQUEsRUFBQW9DLEdBQUEsUUFBQUEsR0FBQSxZQUFBQSxHQUFBLEdBQUFwQyxHQUFBLENBQUEzQixNQUFBLEVBQUErRCxHQUFBLEdBQUFwQyxHQUFBLENBQUEzQixNQUFBLFdBQUFGLENBQUEsTUFBQWtFLElBQUEsT0FBQW5CLEtBQUEsQ0FBQWtCLEdBQUEsR0FBQWpFLENBQUEsR0FBQWlFLEdBQUEsRUFBQWpFLENBQUEsSUFBQWtFLElBQUEsQ0FBQWxFLENBQUEsSUFBQTZCLEdBQUEsQ0FBQTdCLENBQUEsVUFBQWtFLElBQUE7QUFFM0MsTUFBTUMsRUFBRSxHQUFHLFNBQUxBLEVBQUVBLENBQUlDLEVBQVU7RUFBQSxVQUFBQyxNQUFBLENBQVFELEVBQUU7QUFBQSxDQUFPO0FBTXZDLE1BQU1FLFFBQVEsR0FBR0MsTUFBTSxDQUFDQyxjQUFlO0FBQ3ZDLE1BQU1DLHVCQUF1QixHQUFHLHFCQUFxQjtBQUVyRCxTQUFTQyx3QkFBd0JBLENBQy9CQyxLQUFxQixFQUNyQkMsa0NBQW9ELEVBQ3BEQyxNQUFzQixFQUN0QjtFQUNBLE1BQU1DLGlCQUFpQixHQUFHRixrQ0FBa0MsQ0FBQ0csR0FBRyxDQUFDLFVBQUNDLENBQUM7SUFBQSxPQUNqRUEsQ0FBQyxDQUFDQyxZQUFZLENBQUNSLHVCQUF1QixDQUFDO0VBQUEsQ0FDekMsQ0FBQztFQUNELE1BQU1TLHFCQUFxQixHQUFHbkMsS0FBSyxDQUFDZSxJQUFJLENBQ3RDYSxLQUFLLENBQUNRLGdCQUFnQixLQUFBZCxNQUFBLENBQUtJLHVCQUF1QixNQUFHLENBQ3ZELENBQXFCO0VBQ3JCLE1BQU1XLGVBQWlDLEdBQUdGLHFCQUFxQixDQUFDMUYsTUFBTSxDQUNwRSxVQUFDNkYsRUFBRTtJQUFBLE9BQ0QsQ0FBQ1AsaUJBQWlCLENBQUNRLFFBQVEsQ0FBQ0QsRUFBRSxDQUFDSixZQUFZLENBQUNSLHVCQUF1QixDQUFDLENBQUM7RUFBQSxDQUN6RSxDQUFDO0VBRUQsS0FBSyxJQUFJYyx5QkFBeUIsSUFBSUgsZUFBZSxFQUFFO0lBQ3JERyx5QkFBeUIsQ0FBQ0MsS0FBSyxDQUFDQyxNQUFNLE1BQUFwQixNQUFBLENBQU1rQix5QkFBeUIsQ0FBQ0csWUFBWSxPQUFJO0VBQ3hGO0VBQ0FDLFVBQVUsQ0FBQyxZQUFNO0lBQ2YsS0FBSyxJQUFJSix5QkFBeUIsSUFBSUgsZUFBZSxFQUFFO01BQ3JERyx5QkFBeUIsQ0FBQ0MsS0FBSyxDQUFDQyxNQUFNLFFBQVE7TUFDOUNGLHlCQUF5QixDQUFDQyxLQUFLLENBQUNJLE9BQU8sTUFBTTtJQUMvQztFQUNGLENBQUMsRUFBRSxDQUFDLENBQUM7RUFFTCxLQUFLLElBQUlDLHVCQUF1QixJQUFJakIsa0NBQWtDLEVBQUU7SUFDdEUsTUFBTWtCLHNCQUFzQixHQUFHLENBQUMsQ0FBQ25CLEtBQUssQ0FBQ29CLGFBQWEsS0FBQTFCLE1BQUEsQ0FDOUNJLHVCQUF1QixTQUFBSixNQUFBLENBQUt3Qix1QkFBdUIsQ0FBQ1osWUFBWSxDQUNsRVIsdUJBQ0YsQ0FBQyxRQUNILENBQUM7SUFDRCxJQUFJLENBQUNxQixzQkFBc0IsRUFBRTtNQUFBLElBQ2xCRSxtQkFBa0IsR0FBM0IsU0FBQUEsbUJBQ0VDLFdBQXdCLEVBRUo7UUFBQSxJQURwQkMsVUFBa0IsR0FBQWpHLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFzQixTQUFBLEdBQUF0QixTQUFBLE1BQUcsRUFBRTtRQUV2QixJQUFJZ0csV0FBVyxLQUFLcEIsTUFBTSxFQUFFLE9BQU9xQixVQUFVO1FBQzdDLE1BQU1DLE1BQU0sR0FBR0YsV0FBVyxDQUFDRyxhQUFjO1FBQ3pDLE1BQU1DLFlBQVksR0FBR3RELEtBQUssQ0FBQ2UsSUFBSSxDQUFDcUMsTUFBTSxDQUFDRyxRQUFRLENBQUM7UUFDaEQsTUFBTUMsZUFBZSxpQkFBQWxDLE1BQUEsQ0FDbkJnQyxZQUFZLENBQUNHLE9BQU8sQ0FBQ1AsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUNwQztRQUVILElBQ0VKLHVCQUF1QixDQUFDWixZQUFZLENBQUNSLHVCQUF1QixDQUFDLEtBQzdELGFBQWEsRUFDYjtVQUNBZ0MsT0FBTyxDQUFDQyxHQUFHLENBQUNSLFVBQVUsRUFBRUQsV0FBVyxFQUFFQSxXQUFXLEtBQUtwQixNQUFNLENBQUM7UUFDOUQ7UUFFQSxJQUFJb0IsV0FBVyxLQUFLcEIsTUFBTSxFQUN4QixPQUFPbUIsbUJBQWtCLENBQ3ZCRyxNQUFNLEtBQUE5QixNQUFBLENBQ0hrQyxlQUFlLEVBQUFsQyxNQUFBLENBQUc2QixVQUFVLE9BQUE3QixNQUFBLENBQU82QixVQUFVLElBQUssRUFBRSxDQUN6RCxDQUFDLENBQUMsS0FDQyxPQUFPQSxVQUFVO01BQ3hCLENBQUM7TUFDRCxNQUFNUyxvQ0FBb0MsR0FBR1gsbUJBQWtCLENBQzdESCx1QkFBdUIsQ0FBQ08sYUFDMUIsQ0FBQztNQUNELE1BQU1RLGFBQWEsR0FBRzdELEtBQUssQ0FBQ2UsSUFBSSxDQUM5QitCLHVCQUF1QixDQUFDTyxhQUFhLENBQUVFLFFBQ3pDLENBQUMsQ0FBQ0UsT0FBTyxDQUFDWCx1QkFBdUIsQ0FBQztNQUVsQyxNQUFNZ0Isa0JBQWtCLEdBQUdoQix1QkFBdUIsQ0FBQ2lCLFNBQVMsQ0FDMUQsSUFDRixDQUFtQjtNQUNuQkQsa0JBQWtCLENBQUNyQixLQUFLLENBQUNDLE1BQU0sR0FBRyxLQUFLO01BQ3ZDLE1BQU1zQix5QkFBeUIsR0FBR0osb0NBQW9DLEdBQ2xFaEMsS0FBSyxDQUFDb0IsYUFBYSxDQUFDWSxvQ0FBb0MsQ0FBQyxHQUN6RGhDLEtBQUs7TUFDVCxNQUFNcUMsZ0JBQWdCLEdBQUdqRSxLQUFLLENBQUNlLElBQUksQ0FBQ2lELHlCQUF5QixDQUFDVCxRQUFRLENBQUMsQ0FDcEV2QixHQUFHLENBQUMsVUFBQ00sRUFBRSxFQUFFckYsQ0FBQztRQUFBLE9BQ1RvRixlQUFlLENBQUNFLFFBQVEsQ0FBQ0QsRUFBb0IsQ0FBQyxHQUFHOUQsU0FBUyxHQUFHdkIsQ0FBQztNQUFBLENBQ2hFLENBQUMsQ0FDQVIsTUFBTSxDQUFDLFVBQUN5SCxDQUFDO1FBQUEsT0FBS0EsQ0FBQyxLQUFLMUYsU0FBUztNQUFBLEVBQWE7TUFFN0MsSUFBSXFGLGFBQWEsS0FBS0ksZ0JBQWdCLENBQUM5RyxNQUFNLEVBQzNDNkcseUJBQXlCLENBQUNHLE1BQU0sQ0FBQ0wsa0JBQWtCLENBQUMsQ0FBQyxLQUVyREUseUJBQXlCLENBQUNJLFlBQVksQ0FDcENOLGtCQUFrQixFQUNsQkUseUJBQXlCLENBQUNLLFVBQVUsQ0FBQ0MsSUFBSSxDQUN2Q0wsZ0JBQWdCLENBQUNKLGFBQWEsQ0FDaEMsQ0FDRixDQUFDO01BQ0hqQixVQUFVLENBQUMsWUFBTTtRQUNma0Isa0JBQWtCLENBQUNyQixLQUFLLENBQUNDLE1BQU0sTUFBQXBCLE1BQUEsQ0FBTXdCLHVCQUF1QixDQUFDSCxZQUFZLE9BQUk7TUFDL0UsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNQO0VBQ0Y7QUFDRjtBQUVBLE1BQU00QixpQkFBaUIsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNlLFNBQVNDLE9BQU9BLENBQzdCbkQsRUFBVSxFQXFFVjtFQUFBLElBcEVBb0QsT0FXRSxHQUFBdkgsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQXNCLFNBQUEsR0FBQXRCLFNBQUEsTUFBRztJQUNId0gsaUJBQWlCLEVBQUU7RUFDckIsQ0FBQztFQUFBLElBQ0RDLE1BcURDLEdBQUF6SCxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBc0IsU0FBQSxHQUFBdEIsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUVOLE1BQUEwSCxxQkFBQSxHQUlJSCxPQUFPLENBSFRDLGlCQUFpQjtJQUFFRyxFQUFFLEdBQUFELHFCQUFBLGNBQUcsRUFBRSxHQUFBQSxxQkFBQTtJQUNWRSxXQUFXLEdBRXpCTCxPQUFPLENBRlQsY0FBYztJQUNkTSxVQUFVLEdBQ1JOLE9BQU8sQ0FEVE0sVUFBVTtFQUVaLE1BQU1MLGlCQUFpQixHQUFHLElBQUFNLGNBQU8sRUFDL0I7SUFBQSxPQUNFSCxFQUFFLENBQUM3QyxHQUFHLENBQUMsVUFBQ2lELENBQUM7TUFBQSxPQUFLQSxDQUFDLENBQUNDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBQ0MsQ0FBQyxFQUFFQyxHQUFHO1FBQUEsV0FBQTlELE1BQUEsQ0FBUzhELEdBQUcsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7TUFBQSxDQUFFLENBQUM7SUFBQSxFQUFDO0VBQUEsR0FDM0UsQ0FBQ1IsRUFBRSxDQUNMLENBQUM7RUFDRCxNQUFNUyxZQUFZLEdBQUdSLFdBQVcsT0FBQXhELE1BQUEsQ0FBT3dELFdBQVcsSUFBSyxFQUFFO0VBQ3pELE1BQU1TLFlBQVksVUFBQWpFLE1BQUEsQ0FBVWdFLFlBQVksVUFBTztFQUMvQyxNQUFNRSxPQUFPLEdBQUcsSUFBQUMsYUFBTSxFQUFpQixJQUFJLENBQUM7RUFFNUMsSUFBQUMsc0JBQWUsRUFBQyxZQUFNO0lBQ3BCRixPQUFPLENBQUNHLE9BQU8sQ0FBRUMsWUFBWSxDQUFDTCxZQUFZLEVBQUVsRSxFQUFFLENBQUM7RUFDakQsQ0FBQyxFQUFFLENBQUNBLEVBQUUsQ0FBQyxDQUFDO0VBRVIsTUFBTXdFLGdCQUFnQixHQUFHLElBQUFDLGtCQUFXLEVBQUMsWUFBTTtJQUN6QyxNQUFNQyxhQUFhLEdBQ2pCL0YsS0FBSyxDQUFDZSxJQUFJLENBQ1JpRixRQUFRLENBQUM1RCxnQkFBZ0IsS0FBQWQsTUFBQSxDQUFLaUUsWUFBWSxTQUFBakUsTUFBQSxDQUFLRCxFQUFFLFFBQUksQ0FDdkQsQ0FBQyxDQUNENUUsTUFBTSxDQUFDLFVBQUM2RixFQUFFO01BQUEsT0FBS0EsRUFBRSxLQUFLa0QsT0FBTyxDQUFDRyxPQUFPO0lBQUEsRUFBQztJQUN4QyxPQUFPSSxhQUFhO0VBQ3RCLENBQUMsRUFBRSxDQUFDMUUsRUFBRSxDQUFDLENBQUM7RUFFUixTQUFTNEUsb0JBQW9CQSxDQUFBLEVBQUc7SUFDOUIsTUFBTUMsb0JBQW9CLEdBQUd6QixPQUFPLENBQUMwQix5QkFBeUIsTUFBQTdFLE1BQUEsQ0FDdERpRCxpQkFBaUIsRUFBQXJFLGtCQUFBLENBQUt3RSxpQkFBaUIsTUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBQXBELE1BQUEsQ0FBS2lELGlCQUFpQixFQUFBckUsa0JBQUEsQ0FBS3dFLGlCQUFpQixFQUFDO0lBQ25FLE1BQU0wQixZQUFZLEdBQUd6QixNQUFNLENBQUMwQixZQUFZLElBQUs7TUFBQSxPQUFpQixJQUFJO0lBQUEsQ0FBQztJQUNuRSxNQUFNTixhQUFhLEdBQUdGLGdCQUFnQixDQUFDLENBQUMsQ0FBQ3BKLE1BQU0sQ0FBQyxVQUFDNkYsRUFBRTtNQUFBLE9BQ2pEOEQsWUFBWSxDQUFDOUQsRUFBRSxFQUFFa0QsT0FBTyxDQUFDRyxPQUFRLENBQUM7SUFBQSxDQUNwQyxDQUFDO0lBQ0QsTUFBTVcsY0FBYyxHQUFHZCxPQUFPLENBQUNHLE9BQVE7SUFDdkMsTUFBTVksb0JBQW9CLEdBQUdELGNBQWMsQ0FBQ0UscUJBQXFCLENBQUMsQ0FBQztJQUVuRSxJQUFJQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLGFBQWEsSUFBSVosYUFBYSxDQUFDNUksTUFBTSxHQUFHLENBQUMsRUFDcEV1RyxPQUFPLENBQUNrRCxJQUFJLENBQ1YscUZBQXFGLEVBQ3JGYixhQUNGLENBQUM7SUFDSCxNQUFNYyxZQUFZLEdBQUdkLGFBQWEsQ0FBQ2UsSUFBSSxDQUNyQyxVQUFDeEUsRUFBRTtNQUFBLE9BQUtBLEVBQUUsS0FBS2tELE9BQU8sQ0FBQ0csT0FBUTtJQUFBLENBQ2pDLENBQW1CO0lBRW5CLElBQUlrQixZQUFZLEVBQUU7TUFBQSxJQXFDUEUsZUFBZSxHQUF4QixTQUFTQSxlQUFlQSxDQUFDakYsTUFBZSxFQUFFOUUsTUFBZSxFQUFFO1FBQ3pELE9BQU8sRUFDTDhFLE1BQU0sQ0FBQ2tGLEdBQUcsS0FBS2hLLE1BQU0sQ0FBQ2dLLEdBQUcsSUFDekJsRixNQUFNLENBQUNtRixJQUFJLEtBQUtqSyxNQUFNLENBQUNpSyxJQUFJLElBQzNCbkYsTUFBTSxDQUFDb0YsS0FBSyxLQUFLbEssTUFBTSxDQUFDa0ssS0FBSyxJQUM3QnBGLE1BQU0sQ0FBQ1ksTUFBTSxLQUFLMUYsTUFBTSxDQUFDMEYsTUFBTSxDQUNoQztNQUNILENBQUM7TUFFRDtBQUNOO0FBQ0E7QUFDQTtBQUNBO01BSk0sSUFLU3lFLHVCQUF1QixHQUFoQyxTQUFTQSx1QkFBdUJBLENBQUM3RSxFQUFrQixFQUFFO1FBQ25ELE1BQU04RSxXQUFXLEdBQUc5RSxFQUFFLENBQUNrRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzlDLE1BQU1hLGtCQUFrQixHQUFHekYsS0FBSyxDQUFDNEUscUJBQXFCLENBQUMsQ0FBQztRQUN4RCxNQUFNYyxRQUFRLEdBQUdQLGVBQWUsQ0FBQ0ssV0FBVyxFQUFFQyxrQkFBa0IsQ0FBQztRQUVqRXpGLEtBQUssQ0FBQ2EsS0FBSyxDQUFDOEUsUUFBUSxHQUFHLE9BQU87UUFDOUIzRixLQUFLLENBQUNhLEtBQUssQ0FBQ3VFLEdBQUcsTUFBQTFGLE1BQUEsQ0FBTThGLFdBQVcsQ0FBQ0osR0FBRyxPQUFJO1FBQ3hDcEYsS0FBSyxDQUFDYSxLQUFLLENBQUN3RSxJQUFJLE1BQUEzRixNQUFBLENBQU04RixXQUFXLENBQUNILElBQUksT0FBSTtRQUMxQyxJQUFJZixvQkFBb0IsQ0FBQzNELFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDeENYLEtBQUssQ0FBQ2EsS0FBSyxDQUFDeUUsS0FBSyxNQUFBNUYsTUFBQSxDQUFNOEYsV0FBVyxDQUFDRixLQUFLLE9BQUk7UUFDOUMsSUFBSWhCLG9CQUFvQixDQUFDM0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUN6Q1gsS0FBSyxDQUFDYSxLQUFLLENBQUNDLE1BQU0sTUFBQXBCLE1BQUEsQ0FBTThGLFdBQVcsQ0FBQzFFLE1BQU0sT0FBSTtRQUVoRCxPQUFPNEUsUUFBUTtNQUNqQixDQUFDO01BaEVELE1BQUFFLElBQUEsR0FBMkM3QyxNQUFNLENBQUM4QyxrQkFBa0IsR0FDaEU5QyxNQUFNLENBQUM4QyxrQkFBa0IsQ0FBQ1osWUFBWSxFQUFFckIsT0FBTyxDQUFDRyxPQUFRLENBQUMsR0FDekQsQ0FBQ3BFLFFBQVEsRUFBRUEsUUFBUSxDQUFDO1FBQUFtRyxLQUFBLEdBQUE3SSxjQUFBLENBQUEySSxJQUFBO1FBRmpCRyxlQUFlLEdBQUFELEtBQUE7UUFBRUUsZUFBZSxHQUFBRixLQUFBO01BR3ZDLE1BQU1HLFVBQVUsR0FDZEMseUJBQXlCLENBQUNGLGVBQWUsRUFBRXJCLG9CQUFvQixDQUFDLElBQ2hFdUIseUJBQXlCLENBQ3ZCSCxlQUFlLEVBQ2ZkLFlBQVksQ0FBQ0wscUJBQXFCLENBQUMsQ0FDckMsQ0FBQyxHQUNHLENBQUM3QixNQUFNLENBQUNvRCxVQUFVLElBQUs7UUFBQSxPQUFNLElBQUk7TUFBQSxDQUFDLEVBQUVsQixZQUFZLEVBQUVyQixPQUFPLENBQUNHLE9BQVEsQ0FBQyxHQUNuRSxLQUFLO01BQ1gsSUFBSWtDLFVBQVUsRUFBRTtRQUFBLElBQUFHLHFCQUFBO1FBQ2QsQ0FBQUEscUJBQUEsR0FBQXJELE1BQU0sQ0FBQ3NELGFBQWEsY0FBQUQscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFBdEosSUFBQSxDQUFBaUcsTUFBdUIsQ0FBQztRQUN4QjtNQUNGO01BQ0EsTUFBTXVELFFBQVEsR0FBR2xDLFFBQVEsQ0FBQ2hELGFBQWEsS0FBQTFCLE1BQUEsQ0FDakNpRSxZQUFZLGVBQUFqRSxNQUFBLENBQVdGLEVBQUUsQ0FBQ0MsRUFBRSxDQUFDLFFBQ25DLENBQUM7TUFDRCxNQUFNTyxLQUFLLEdBQUlzRyxRQUFRLElBQ3JCckIsWUFBWSxDQUFDOUMsU0FBUyxDQUFDLElBQUksQ0FBb0I7TUFFakQsSUFBSVksTUFBTSxDQUFDd0QsWUFBWSxJQUFJLENBQUNELFFBQVEsRUFBRXZELE1BQU0sQ0FBQ3dELFlBQVksQ0FBQ3ZHLEtBQUssQ0FBQzs7TUFFaEU7TUFDQUEsS0FBSyxDQUFDYSxLQUFLLENBQUMyRixVQUFVLEdBQUcsRUFBRTtNQUMzQnhHLEtBQUssQ0FBQ3lHLGVBQWUsQ0FBQzlDLFlBQVksQ0FBQztNQUVuQzNELEtBQUssQ0FBQ2dFLFlBQVksSUFBQXRFLE1BQUEsQ0FBSWlFLFlBQVksYUFBVW5FLEVBQUUsQ0FBQ0MsRUFBRSxDQUFDLENBQUM7O01BRW5EO0FBQ047QUFDQTtNQUNNLElBQUksQ0FBQzBELFVBQVU7UUFDYjtRQUNBOEIsWUFBWSxDQUFDd0IsZUFBZSxDQUFDOUMsWUFBWSxDQUFDO01BZ0M1QyxNQUFNNkIsV0FBVyxHQUFHUCxZQUFZLENBQUNMLHFCQUFxQixDQUFDLENBQUM7TUFDeEQsTUFBTWEsa0JBQWtCLEdBQUc3QixPQUFPLENBQUNHLE9BQU8sQ0FBRWEscUJBQXFCLENBQUMsQ0FBQztNQUNuRSxNQUFNOEIsVUFBVSxHQUFHLENBQUN2QixlQUFlLENBQUNLLFdBQVcsRUFBRUMsa0JBQWtCLENBQUM7TUFDcEUsSUFBSWlCLFVBQVUsRUFBRTtNQUVoQixJQUFJLENBQUNKLFFBQVEsRUFBRTtRQUNiO1FBQ0FmLHVCQUF1QixDQUFDTixZQUFZLENBQUM7UUFDckNiLFFBQVEsQ0FBQ3VDLElBQUksQ0FBQ0MsV0FBVyxDQUFDNUcsS0FBSyxDQUFDO01BQ2xDO01BQ0E0RCxPQUFPLENBQUNHLE9BQU8sQ0FBRWxELEtBQUssQ0FBQzJGLFVBQVUsR0FBRyxRQUFRO01BQzVDdkIsWUFBWSxDQUFDcEUsS0FBSyxDQUFDMkYsVUFBVSxHQUFHLFFBQVE7TUFFeEN4RyxLQUFLLENBQUNhLEtBQUssQ0FBQ2dHLFVBQVUsTUFBQW5ILE1BQUEsQ0FBTTRFLG9CQUFvQixDQUM3Q2xFLEdBQUcsQ0FDRixVQUFDMEcsSUFBSTtRQUFBLFVBQUFwSCxNQUFBLENBQ0FvSCxJQUFJLENBQUN4RCxPQUFPLENBQ2IsUUFBUSxFQUNSLFVBQUN5RCxHQUFHO1VBQUEsV0FBQXJILE1BQUEsQ0FBU3FILEdBQUcsQ0FBQ3RELFdBQVcsQ0FBQyxDQUFDO1FBQUEsQ0FDaEMsQ0FBQztNQUFBLENBQ0wsQ0FBQyxDQUNBdUQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFFO01BRWZoRyxVQUFVLENBQUMsWUFBTTtRQUNmLE1BQU1OLEVBQUUsR0FBR2tELE9BQU8sQ0FBQ0csT0FBTztRQUMxQixNQUFNa0QsT0FBTyxHQUFHLFNBQVZBLE9BQU9BLENBQUEsRUFBUztVQUNwQixJQUFJbEUsTUFBTSxDQUFDbUUsU0FBUyxFQUFFbkUsTUFBTSxDQUFDbUUsU0FBUyxDQUFDLENBQUM7VUFDeEMsSUFBSXhHLEVBQUUsRUFBRTtZQUNOLElBQUl5QyxVQUFVLEVBQUV6QyxFQUFFLENBQUVzRCxZQUFZLENBQUNMLFlBQVksRUFBRWxFLEVBQUUsQ0FBQztZQUNsRGlCLEVBQUUsQ0FBQ0csS0FBSyxDQUFDMkYsVUFBVSxHQUFHLEVBQUU7VUFDMUI7VUFDQXhGLFVBQVUsQ0FBQyxZQUFNO1lBQ2ZoQixLQUFLLENBQUNtSCxNQUFNLENBQUMsQ0FBQztVQUNoQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELElBQUlwRSxNQUFNLENBQUNxRSxXQUFXLEVBQUU7VUFDdEJyRSxNQUFNLENBQUNxRSxXQUFXLENBQUNwSCxLQUFLLEVBQUVpRixZQUFZLEVBQUVyQixPQUFPLENBQUNHLE9BQVEsQ0FBQztRQUMzRDtRQUNBaEUsd0JBQXdCLENBQ3RCQyxLQUFLLEVBQ0w1QixLQUFLLENBQUNlLElBQUksQ0FDUnlFLE9BQU8sQ0FBQ0csT0FBTyxDQUFFdkQsZ0JBQWdCLEtBQUFkLE1BQUEsQ0FBS0ksdUJBQXVCLE1BQUcsQ0FDbEUsQ0FBQyxFQUNENEUsY0FDRixDQUFDO1FBQ0QsSUFBSSxDQUFDaEUsRUFBRSxFQUFFO1VBQ1B1RyxPQUFPLENBQUMsQ0FBQztVQUNUO1FBQ0Y7UUFDQTtRQUNBLE1BQU12QixRQUFRLEdBQUdILHVCQUF1QixDQUFDN0UsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQ2dGLFFBQVEsRUFBRXVCLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FDcEI7VUFDSCxLQUFLLElBQUlJLGdCQUFnQixJQUFJdkUsaUJBQWlCLEVBQzVDOUMsS0FBSyxDQUFDYSxLQUFLLENBQUN3RyxnQkFBZ0IsQ0FBUSxHQUNsQ3pILE1BQU0sQ0FBQzBILGdCQUFnQixDQUFDNUcsRUFBRSxDQUFDLENBQUMyRyxnQkFBZ0IsQ0FBUTtVQUN4RCxJQUFJRSxhQUFxQjtVQUN6QixNQUFNQyxDQUFDLEdBQUcsU0FBSkEsQ0FBQ0EsQ0FBQUMsS0FBQSxFQUErQjtZQUFBLElBQXpCck0sTUFBTSxHQUFBcU0sS0FBQSxDQUFOck0sTUFBTTtZQUNqQixNQUFNc00sQ0FBQyxHQUFHdE0sTUFBd0I7WUFDbEMsSUFBSXNNLENBQUMsQ0FBQ0MsUUFBUSxDQUFDakgsRUFBRSxDQUFDLEVBQUU7Y0FDbEIsSUFBSTZHLGFBQWEsS0FBSzNLLFNBQVMsRUFBRTJLLGFBQWEsR0FBR0csQ0FBQyxDQUFDRSxTQUFTLENBQUMsS0FFM0Q1SCxLQUFLLENBQUNhLEtBQUssQ0FBQ2dILFNBQVMsTUFBQW5JLE1BQUEsQ0FBTSxFQUFFZ0ksQ0FBQyxDQUFDRSxTQUFTLEdBQUdMLGFBQWEsQ0FBQyxPQUFJO1lBQ2pFO1VBQ0YsQ0FBQztVQUNELE1BQU1PLGVBQWUsR0FBRyxJQUFBQyxpQkFBUSxFQUM5QixVQUFBQyxLQUFBLEVBQWdEO1lBQUEsSUFBN0M1TSxNQUFNLEdBQUE0TSxLQUFBLENBQU41TSxNQUFNO2NBQUU2TSxhQUFhLEdBQUFELEtBQUEsQ0FBYkMsYUFBYTtZQUN0QixJQUFJN00sTUFBTSxLQUFLNk0sYUFBYSxFQUFFaEIsT0FBTyxDQUFDLENBQUM7WUFDdkM3QyxRQUFRLENBQUM4RCxtQkFBbUIsQ0FBQyxRQUFRLEVBQUVWLENBQUMsRUFBUyxJQUFJLENBQUM7VUFDeEQsQ0FDRixDQUFDO1VBQ0RwRCxRQUFRLENBQUMrRCxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVYLENBQUMsRUFBUyxJQUFJLENBQUM7VUFDbkR4SCxLQUFLLENBQUNtSSxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUVMLGVBQWUsQ0FBQztVQUN4RDlILEtBQUssQ0FBQ21JLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLFlBQU07WUFDOUMsTUFBTUMsVUFBVSxHQUFHLElBQUFMLGlCQUFRLEVBQUMsVUFBQ3pGLENBQUMsRUFBSztjQUNqQ3RDLEtBQUssQ0FBQ2tJLG1CQUFtQixDQUFDLGVBQWUsRUFBRUosZUFBZSxDQUFDO2NBQzNEOUgsS0FBSyxDQUFDa0ksbUJBQW1CLENBQUMsa0JBQWtCLEVBQUVFLFVBQVUsQ0FBQztZQUMzRCxDQUFDLENBQUM7WUFDRnBJLEtBQUssQ0FBQ21JLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFQyxVQUFVLENBQUM7VUFDeEQsQ0FBQyxDQUFDO1FBQ0o7TUFDRixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1A7RUFDRjtFQUVBLElBQUFDLGdCQUFTLEVBQUMsWUFBTTtJQUNkaEUsb0JBQW9CLENBQUMsQ0FBQztFQUN4QixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sT0FBTztJQUNMVCxPQUFPLEVBQVBBLE9BQU87SUFDUEssZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7SUFDaEJxRSxPQUFPLEVBQUVqRSxvQkFBb0I7SUFDN0JrRSxnQkFBZ0IsRUFDZCxTQUFBQSxpQkFBQ0MsV0FBbUI7TUFBQSxPQUFLLFVBQUNDLEtBQTRCLEVBQUs7UUFDekQsSUFBSUEsS0FBSyxFQUFFO1VBQ1RBLEtBQUssQ0FBQ3pFLFlBQVksQ0FBQ2xFLHVCQUF1QixFQUFFMEksV0FBVyxDQUFDO1VBQ3hEQyxLQUFLLENBQUNDLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDQyxzQkFBTSxDQUFDQyxTQUFTLENBQUM7UUFDdkM7TUFDRixDQUFDO0lBQUE7RUFDTCxDQUFDO0FBQ0g7QUFFQSxTQUFTQyx3QkFBd0JBLENBQUN0RCxXQUFvQixFQUFFO0VBQ3RELE1BQU11RCx3QkFBd0IsR0FDNUJ2RCxXQUFXLENBQUNILElBQUksSUFBSTFGLFFBQVEsQ0FBQzJGLEtBQUssSUFBSUUsV0FBVyxDQUFDSixHQUFHLElBQUl6RixRQUFRLENBQUNtQixNQUFNO0VBQzFFLE1BQU1rSSx5QkFBeUIsR0FDN0J4RCxXQUFXLENBQUNILElBQUksSUFBSSxDQUFDRyxXQUFXLENBQUNGLEtBQUssSUFDdENFLFdBQVcsQ0FBQ0osR0FBRyxJQUFJLENBQUNJLFdBQVcsQ0FBQzFFLE1BQU07RUFDeEMsT0FBT2lJLHdCQUF3QixJQUFJQyx5QkFBeUI7QUFDOUQ7QUFFQSxTQUFTOUMseUJBQXlCQSxDQUNoQytDLFNBQW1DLEVBQ25DekQsV0FBb0IsRUFDcEI7RUFDQSxJQUFJeUQsU0FBUyxZQUFZQyxjQUFjLEVBQUU7SUFDdkMsT0FBT0osd0JBQXdCLENBQUN0RCxXQUFXLENBQUM7RUFDOUMsQ0FBQyxNQUFNO0lBQ0wsTUFBTTJELGVBQWUsR0FBR0YsU0FBUyxDQUFDckUscUJBQXFCLENBQUMsQ0FBQztJQUV6RCxNQUFNd0UsMEJBQTBCLEdBQzlCTix3QkFBd0IsQ0FBQ0ssZUFBZSxDQUFDO0lBRTNDLElBQUlDLDBCQUEwQixFQUFFLE9BQU8sSUFBSTtJQUUzQyxNQUFNTCx3QkFBd0IsR0FDNUJ2RCxXQUFXLENBQUNILElBQUksSUFBSThELGVBQWUsQ0FBQzlELElBQUksR0FBRzhELGVBQWUsQ0FBQzdELEtBQUssSUFDaEVFLFdBQVcsQ0FBQ0osR0FBRyxJQUFJK0QsZUFBZSxDQUFDL0QsR0FBRyxHQUFHK0QsZUFBZSxDQUFDckksTUFBTTtJQUVqRSxNQUFNa0kseUJBQXlCLEdBQzdCRyxlQUFlLENBQUM5RCxJQUFJLEdBQUdHLFdBQVcsQ0FBQ0gsSUFBSSxJQUFJRyxXQUFXLENBQUNGLEtBQUssSUFDNUQ2RCxlQUFlLENBQUMvRCxHQUFHLEdBQUdJLFdBQVcsQ0FBQ0osR0FBRyxJQUFJSSxXQUFXLENBQUMxRSxNQUFNO0lBRTdELE9BQU9rSSx5QkFBeUIsSUFBSUQsd0JBQXdCO0VBQzlEO0FBQ0Y7QUFJQSxTQUFTTSxXQUFXQSxDQUFDQyxJQUFhLEVBQUU7RUFDbEMsT0FBTyxDQUFDQSxJQUFJLENBQUNqRSxJQUFJLEdBQUdpRSxJQUFJLENBQUNoRSxLQUFLLEdBQUcsQ0FBQyxFQUFFZ0UsSUFBSSxDQUFDbEUsR0FBRyxHQUFHa0UsSUFBSSxDQUFDeEksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNqRTtBQUNBLE1BQU15SSxLQUFLLEdBQUcsU0FBUkEsS0FBS0EsQ0FDVEMsTUFBdUMsRUFDdkNDLE1BQXVDO0VBQUEsT0FFdkN6TSxNQUFNLENBQ0osQ0FDRTBNLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUdDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRUQsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFDdkQsTUFBTSxHQUFHQyxJQUFJLENBQUNFLEVBQUUsQ0FBQyxFQUNsQkMsT0FBTyxDQUFDLENBQUMsQ0FDYixDQUFDO0FBQUE7QUFDSSxNQUFNQyxrQkFFWixHQUFHO0VBQ0ZDLFlBQVksRUFBRSxTQUFBQSxhQUFDaEgsTUFBTTtJQUFBLE9BQUE1SCxhQUFBLENBQUFBLGFBQUEsS0FDaEI0SCxNQUFNO01BQ1RxRSxXQUFXLFdBQUFBLFlBQUNwSCxLQUFLLEVBQUVFLE1BQU0sRUFBRTlFLE1BQU0sRUFBRTtRQUNqQyxJQUFJMkgsTUFBTSxhQUFOQSxNQUFNLGVBQU5BLE1BQU0sQ0FBRXFFLFdBQVcsRUFBRXJFLE1BQU0sQ0FBQ3FFLFdBQVcsQ0FBQ3BILEtBQUssRUFBRUUsTUFBTSxFQUFFOUUsTUFBTSxDQUFDO1FBQ2xFNEUsS0FBSyxDQUFDMEksU0FBUyxDQUFDQyxHQUFHLENBQUNDLHNCQUFNLENBQUNvQixZQUFZLENBQUM7UUFDeEMsTUFBTUMsaUJBQWlCLEdBQUdaLFdBQVcsQ0FBQ25KLE1BQU0sQ0FBQzBFLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUNyRSxNQUFNc0Ysc0JBQXNCLEdBQUdiLFdBQVcsQ0FDeENqTyxNQUFNLENBQUN3SixxQkFBcUIsQ0FBQyxDQUMvQixDQUFDO1FBQ0QsTUFBTXVGLG9CQUFvQixHQUFHWixLQUFLLENBQ2hDVSxpQkFBaUIsRUFDakJDLHNCQUNGLENBQUM7UUFDRCxNQUFNRSxPQUFPLEdBQUdWLElBQUksQ0FBQ1csR0FBRyxDQUFDRixvQkFBb0IsQ0FBQztRQUM5QyxNQUFNRyxPQUFPLEdBQUdaLElBQUksQ0FBQ2EsR0FBRyxDQUFDSixvQkFBb0IsQ0FBQztRQUU5QyxNQUFNSyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEdBQUdGLE9BQU8sRUFBRVQsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNWSxPQUFPLEdBQUcsQ0FBQ0gsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFO1FBRWxDLE1BQU1JLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHTixPQUFPLEVBQUVQLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTWMsT0FBTyxHQUFHLENBQUNQLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRTtRQUVsQ3BLLEtBQUssQ0FBQ2EsS0FBSyxDQUFDK0osV0FBVyxDQUNyQixXQUFXLGFBQUFsTCxNQUFBLENBQ0E4SyxPQUFPLG1CQUFBOUssTUFBQSxDQUFnQixDQUFDZ0wsT0FBTyxTQUM1QyxDQUFDO1FBQ0QxSyxLQUFLLENBQUNhLEtBQUssQ0FBQytKLFdBQVcsQ0FDckIsV0FBVyxhQUFBbEwsTUFBQSxDQUNBLENBQUM4SyxPQUFPLEdBQUcsR0FBRyxtQkFBQTlLLE1BQUEsQ0FBZ0JnTCxPQUFPLEdBQUcsR0FBRyxTQUN4RCxDQUFDO1FBQ0QxSyxLQUFLLENBQUNhLEtBQUssQ0FBQytKLFdBQVcsQ0FBQyxZQUFZLEtBQUFsTCxNQUFBLENBQUsrSyxPQUFPLFFBQUEvSyxNQUFBLENBQUtpTCxPQUFPLE1BQUcsQ0FBQztRQUNoRTNLLEtBQUssQ0FBQ2EsS0FBSyxDQUFDK0osV0FBVyxDQUNyQixZQUFZLEtBQUFsTCxNQUFBLENBQ1QsR0FBRyxHQUFHK0ssT0FBTyxRQUFBL0ssTUFBQSxDQUFLLEdBQUcsR0FBR2lMLE9BQU8sTUFDcEMsQ0FBQztRQUNEdkcsUUFBUSxDQUFDdUMsSUFBSSxDQUFDOUYsS0FBSyxDQUFDZ0ssV0FBVyxHQUFHLE9BQU87TUFDM0MsQ0FBQztNQUNEM0QsU0FBUyxXQUFBQSxVQUFBLEVBQUc7UUFDVixJQUFJbkUsTUFBTSxhQUFOQSxNQUFNLGVBQU5BLE1BQU0sQ0FBRW1FLFNBQVMsRUFBRW5FLE1BQU0sQ0FBQ21FLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDOUMsUUFBUSxDQUFDdUMsSUFBSSxDQUFDOUYsS0FBSyxDQUFDZ0ssV0FBVyxHQUFHLEVBQUU7TUFDdEM7SUFBQztFQUFBO0FBRUwsQ0FBQztBQUFDQyxPQUFBLENBQUFoQixrQkFBQSxHQUFBQSxrQkFBQSJ9
@@ -35,6 +35,6 @@ $timing: cubic-bezier(0.5, -0.45, 0.44, 1.37);
35
35
  }
36
36
 
37
37
  .component {
38
- transition: height $fast linear, opacity $fast linear;
38
+ transition: height $fast linear, opacity $fast linear !important;
39
39
  overflow: hidden;
40
40
  }
@@ -2,7 +2,7 @@ import { IntlFormatters, IntlShape } from "react-intl";
2
2
  import { BigNumber } from "bignumber.js";
3
3
  import { ReactElement } from "react";
4
4
  export default function useShortIntl(): IntlShape & {
5
- txt: (id: OnepercentUtility.IntlIds, params?: Record<string, string | ReactElement>) => ReturnType<IntlFormatters["formatMessage"]>;
5
+ txt: <R extends ReturnType<IntlFormatters["formatMessage"]> = string>(id: OnepercentUtility.IntlIds, params?: Record<string, string | ReactElement>) => R;
6
6
  formatToDoubleDecimal(number: number, options?: Parameters<IntlFormatters["formatNumber"]>[1]): string;
7
7
  formatBigNumber(number: BigNumber, options?: Parameters<IntlFormatters["formatNumber"]>[1]): string;
8
8
  };