@onepercentio/one-ui 0.28.6 → 0.28.8

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 (220) hide show
  1. package/dist/components/AdaptiveButton/AdaptiveButton.js +12 -8
  2. package/dist/components/AdaptiveButton/index.js +2 -2
  3. package/dist/components/AdaptiveContainer/AdaptiveContainer.d.ts +2 -2
  4. package/dist/components/AdaptiveContainer/AdaptiveContainer.js +58 -30
  5. package/dist/components/AdaptiveContainer/AdaptiveContainer.module.scss +2 -2
  6. package/dist/components/AdaptiveContainer/index.js +2 -2
  7. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +8 -9
  8. package/dist/components/AdaptiveDialog/index.js +2 -2
  9. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +19 -18
  10. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +2 -2
  11. package/dist/components/AdaptiveSidebar/index.js +2 -2
  12. package/dist/components/AnchoredTooltip/AnchoredTooltip.d.ts +1 -1
  13. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +20 -21
  14. package/dist/components/AnchoredTooltip/index.js +2 -2
  15. package/dist/components/AnimatedEntrance/AnimatedEntrance.js +9 -11
  16. package/dist/components/AnimatedEntrance/index.js +2 -3
  17. package/dist/components/AsyncWrapper/AsyncWrapper.js +2 -2
  18. package/dist/components/AsyncWrapper/index.js +2 -2
  19. package/dist/components/Avatar/Avatar.js +5 -6
  20. package/dist/components/Avatar/index.js +2 -2
  21. package/dist/components/BucketFill/BucketFill.js +6 -7
  22. package/dist/components/BucketFill/index.js +2 -2
  23. package/dist/components/Button/Button.js +13 -15
  24. package/dist/components/Button/index.js +2 -2
  25. package/dist/components/Card/Card.js +3 -3
  26. package/dist/components/Card/index.js +2 -2
  27. package/dist/components/Chart/Chart.logic.js +2 -2
  28. package/dist/components/Chart/Chart.types.js +1 -1
  29. package/dist/components/Chart/Chart.view.js +7 -8
  30. package/dist/components/Chart/index.js +2 -2
  31. package/dist/components/CheckBox/CheckBox.js +17 -14
  32. package/dist/components/CheckBox/index.js +2 -2
  33. package/dist/components/CodeInput/CodeInput.js +5 -6
  34. package/dist/components/CodeInput/index.js +2 -2
  35. package/dist/components/Collapsable/Collapsable.js +33 -29
  36. package/dist/components/Collapsable/index.js +2 -2
  37. package/dist/components/Countdown/Countdown.js +7 -8
  38. package/dist/components/Countdown/index.js +2 -2
  39. package/dist/components/CurrencyInput/CurrencyInput.hook.js +2 -2
  40. package/dist/components/CurrencyInput/CurrencyInput.js +14 -11
  41. package/dist/components/CurrencyInput/index.js +2 -2
  42. package/dist/components/Divider/Divider.js +3 -3
  43. package/dist/components/Divider/index.js +2 -2
  44. package/dist/components/EmailInput/EmailInput.js +5 -7
  45. package/dist/components/EmailInput/index.js +2 -3
  46. package/dist/components/FadeIn/FadeIn.js +16 -15
  47. package/dist/components/FadeIn/index.js +2 -2
  48. package/dist/components/FileInput/FileInput.js +11 -10
  49. package/dist/components/FileInput/View/BigFactory/BigFactory.js +3 -3
  50. package/dist/components/FileInput/View/BigFactory/index.js +2 -2
  51. package/dist/components/FileInput/View/Compact/Compact.js +7 -9
  52. package/dist/components/FileInput/View/Compact/index.js +2 -3
  53. package/dist/components/FileInput/View/View.types.js +1 -1
  54. package/dist/components/FileInput/index.js +2 -2
  55. package/dist/components/FlowController/FlowController.d.ts +1 -1
  56. package/dist/components/FlowController/FlowController.js +3 -3
  57. package/dist/components/FlowController/index.js +2 -2
  58. package/dist/components/Form/Form.js +16 -16
  59. package/dist/components/Form/index.js +2 -2
  60. package/dist/components/Form/v2/Form.hook.js +16 -21
  61. package/dist/components/Form/v2/Form.js +11 -10
  62. package/dist/components/Form/v2/Form.types.js +6 -11
  63. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.js +4 -4
  64. package/dist/components/Form/v2/FormField/Extensions/DateField/index.js +2 -2
  65. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.js +3 -4
  66. package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.js +2 -2
  67. package/dist/components/Form/v2/FormField/FormField.js +13 -9
  68. package/dist/components/Form/v2/FormField/FormField.types.js +2 -3
  69. package/dist/components/Form/v2/FormField/index.js +2 -2
  70. package/dist/components/Form/v2/index.js +2 -2
  71. package/dist/components/Freeze/Freeze.js +2 -2
  72. package/dist/components/Freeze/index.js +2 -2
  73. package/dist/components/HSForms/HSForms.js +5 -16
  74. package/dist/components/HSForms/index.js +2 -2
  75. package/dist/components/Header/Header.js +8 -9
  76. package/dist/components/Header/index.js +2 -2
  77. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +3 -3
  78. package/dist/components/HeaderCloseBtn/index.js +2 -2
  79. package/dist/components/InfinityScroll/InfinityScroll.js +14 -13
  80. package/dist/components/InfinityScroll/index.js +2 -2
  81. package/dist/components/Input/Input.js +24 -24
  82. package/dist/components/Input/index.js +2 -2
  83. package/dist/components/InstantCounter/InstantCounter.js +3 -5
  84. package/dist/components/InstantCounter/index.js +2 -2
  85. package/dist/components/LavaLamp/LavaLamp.data.js +3 -4
  86. package/dist/components/LavaLamp/LavaLamp.js +11 -12
  87. package/dist/components/LavaLamp/index.js +2 -2
  88. package/dist/components/LavaLamp/v2/LavaLamp.js +9 -9
  89. package/dist/components/LinkToId/LinkToId.js +2 -2
  90. package/dist/components/LinkToId/index.js +2 -3
  91. package/dist/components/Loader/Loader.js +10 -7
  92. package/dist/components/Loader/index.js +2 -2
  93. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +2 -3
  94. package/dist/components/LoaderDotsIndicator/index.js +2 -2
  95. package/dist/components/LoopableVideo/LoopableVideo.js +11 -8
  96. package/dist/components/LoopableVideo/index.js +2 -2
  97. package/dist/components/MainGrid/MainGrid.js +4 -6
  98. package/dist/components/MainGrid/index.js +2 -2
  99. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +13 -10
  100. package/dist/components/MutableHamburgerButton/index.js +2 -2
  101. package/dist/components/Notification/Notification.js +3 -3
  102. package/dist/components/Notification/index.js +2 -2
  103. package/dist/components/OrderableList/OrderableList.js +47 -44
  104. package/dist/components/OrderableList/index.js +2 -2
  105. package/dist/components/PaginationIndicator/PaginationIndicator.js +23 -26
  106. package/dist/components/PaginationIndicator/index.js +2 -2
  107. package/dist/components/Parallax/Parallax.js +25 -24
  108. package/dist/components/Parallax/index.js +2 -2
  109. package/dist/components/Parallax/math/helpers.js +2 -3
  110. package/dist/components/PasswordInput/PasswordInput.js +5 -7
  111. package/dist/components/PasswordInput/index.js +2 -2
  112. package/dist/components/PingPongText/PingPongText.js +7 -9
  113. package/dist/components/PingPongText/index.js +2 -2
  114. package/dist/components/PixelatedScan/PixelatedScan.js +19 -16
  115. package/dist/components/PixelatedScan/index.js +2 -2
  116. package/dist/components/Portal/Portal.js +14 -13
  117. package/dist/components/Portal/index.js +2 -3
  118. package/dist/components/ProgressBar/ProgressBar.js +28 -25
  119. package/dist/components/ProgressBar/index.js +2 -3
  120. package/dist/components/ProgressTexts/ProgressTexts.js +3 -3
  121. package/dist/components/ProgressTexts/index.js +2 -2
  122. package/dist/components/Radio/Radio.js +17 -14
  123. package/dist/components/Radio/index.js +2 -2
  124. package/dist/components/SectionContainer/SectionContainer.d.ts +1 -1
  125. package/dist/components/SectionContainer/SectionContainer.js +7 -9
  126. package/dist/components/SectionContainer/index.js +2 -2
  127. package/dist/components/Select/Select.js +24 -23
  128. package/dist/components/Select/index.js +2 -2
  129. package/dist/components/Skeleton/Skeleton.js +5 -5
  130. package/dist/components/Skeleton/index.js +2 -2
  131. package/dist/components/Spacing/Spacing.js +4 -5
  132. package/dist/components/Spacing/index.js +2 -2
  133. package/dist/components/StaticScroller/StaticScroller.js +12 -11
  134. package/dist/components/StaticScroller/index.js +2 -2
  135. package/dist/components/Switch/Switch.js +14 -11
  136. package/dist/components/Switch/index.js +2 -2
  137. package/dist/components/Table/Table.js +5 -6
  138. package/dist/components/Table/index.js +2 -2
  139. package/dist/components/Tabs/Tabs.js +6 -8
  140. package/dist/components/Tabs/index.js +2 -2
  141. package/dist/components/Text/Text.js +14 -13
  142. package/dist/components/Text/index.js +2 -2
  143. package/dist/components/Transition/MasksFactory/DiagonalReveal.js +11 -11
  144. package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +16 -17
  145. package/dist/components/Transition/MasksFactory/PhysicsSquares.js +5 -5
  146. package/dist/components/Transition/MasksFactory/SquareToBalls.js +15 -16
  147. package/dist/components/Transition/MasksFactory/utils.js +1 -1
  148. package/dist/components/Transition/Transition.js +45 -48
  149. package/dist/components/Transition/index.js +2 -3
  150. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +37 -39
  151. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +4 -5
  152. package/dist/components/UncontrolledTransition/index.js +2 -3
  153. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +8 -11
  154. package/dist/components/WalletConnectionWrapper/index.js +2 -3
  155. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +3 -4
  156. package/dist/components/utilitary/ScrollAndFocusLock/index.js +2 -2
  157. package/dist/context/AsyncProcess.js +12 -10
  158. package/dist/context/ContextAsyncControl.js +10 -7
  159. package/dist/context/CustomBrowserRouter.js +5 -6
  160. package/dist/context/OneUIProvider.d.ts +3 -2
  161. package/dist/context/OneUIProvider.js +7 -28
  162. package/dist/hooks/logs/useDependencyChangeDetection.js +2 -2
  163. package/dist/hooks/logs/useIsMounting.js +1 -1
  164. package/dist/hooks/persistence/useLocalStorage.js +1 -1
  165. package/dist/hooks/shims/ObjectWatchShim.js +1 -1
  166. package/dist/hooks/ui/useAdaptiveImage.js +3 -4
  167. package/dist/hooks/ui/useAlternating.js +1 -1
  168. package/dist/hooks/ui/useBreakpoint.js +2 -2
  169. package/dist/hooks/ui/useCustomScrollbar.js +2 -2
  170. package/dist/hooks/ui/useEffectIf.js +1 -1
  171. package/dist/hooks/ui/useMouseHover.js +2 -2
  172. package/dist/hooks/ui/usePaginationControls.js +26 -21
  173. package/dist/hooks/ui/useSnapToViewport.js +6 -6
  174. package/dist/hooks/ui/useTilt.js +7 -5
  175. package/dist/hooks/ui/useZoomable.js +8 -9
  176. package/dist/hooks/useAsyncControl.js +28 -32
  177. package/dist/hooks/useContainedRepositioning.js +6 -6
  178. package/dist/hooks/useCustomHistory.js +8 -4
  179. package/dist/hooks/useElementFit.js +2 -2
  180. package/dist/hooks/useFirestoreWatch.js +1 -1
  181. package/dist/hooks/useForm.js +9 -6
  182. package/dist/hooks/useFreeze.js +1 -1
  183. package/dist/hooks/useHero.js +36 -33
  184. package/dist/hooks/useIntersection.js +1 -1
  185. package/dist/hooks/useMergeRefs.js +1 -1
  186. package/dist/hooks/useObserve.js +1 -1
  187. package/dist/hooks/usePagination.js +21 -12
  188. package/dist/hooks/usePooledOperation.js +2 -2
  189. package/dist/hooks/usePooling.js +1 -1
  190. package/dist/hooks/useRebound.js +1 -1
  191. package/dist/hooks/useShortIntl.ai.md +5 -0
  192. package/dist/hooks/useShortIntl.js +19 -19
  193. package/dist/hooks/utility/useAsyncMemo.js +12 -8
  194. package/dist/hooks/utility/useDepChange.js +1 -1
  195. package/dist/hooks/utility/useEvents.js +1 -1
  196. package/dist/hooks/utility/useImmediate.js +2 -2
  197. package/dist/hooks/utility/useManualInit.js +2 -2
  198. package/dist/hooks/utility/useModule.js +1 -1
  199. package/dist/hooks/utility/useQuery.js +1 -1
  200. package/dist/hooks/utility/useUniqueEffect.js +1 -1
  201. package/dist/index.js +1 -1
  202. package/dist/models/DebugLogger.js +2 -2
  203. package/dist/models/GenericContract.js +2 -3
  204. package/dist/models/Orbs.js +1 -1
  205. package/dist/reac-app-env.d.js +1 -1
  206. package/dist/storybookUtils/index.js +2 -2
  207. package/dist/type-utils.js +1 -1
  208. package/dist/types.js +1 -1
  209. package/dist/utility.d.js +1 -1
  210. package/dist/utils/blockchain.js +1 -1
  211. package/dist/utils/flatten.js +3 -3
  212. package/dist/utils/formatters.js +3 -4
  213. package/dist/utils/html.utils.js +1 -1
  214. package/dist/utils/ownEvent.js +1 -1
  215. package/dist/utils/test.js +3 -3
  216. package/package.json +24 -16
  217. package/src_ai/components/UncontrolledTransition/UncontrolledTransition.ai.ts +0 -35
  218. package/src_ai/hooks/ui/useAlternating.ai.ts +0 -15
  219. package/src_ai/hooks/useHero.ai.ts +0 -18
  220. package/src_ai/types.ts +0 -10
@@ -6,24 +6,27 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = MutableHamburgerButton;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _MutableHamburgerButtonModule = _interopRequireDefault(require("./MutableHamburgerButton.module.scss"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
9
+ const _excluded = ["state", "size", "className"];
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
12
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
13
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
11
14
  /**
12
15
  * A hamburger button that mutates according to it's state
13
16
  **/
14
17
  function MutableHamburgerButton(_ref) {
15
18
  let {
16
- state = "default",
17
- size,
18
- className = "",
19
- ...props
20
- } = _ref;
19
+ state = "default",
20
+ size,
21
+ className = ""
22
+ } = _ref,
23
+ props = _objectWithoutProperties(_ref, _excluded);
21
24
  const stateClass = state in _MutableHamburgerButtonModule.default ? _MutableHamburgerButtonModule.default[state] : "";
22
25
  return /*#__PURE__*/_react.default.createElement("div", _extends({}, props, {
23
- className: `${_MutableHamburgerButtonModule.default.container} ${stateClass} ${className}`,
26
+ className: "".concat(_MutableHamburgerButtonModule.default.container, " ").concat(stateClass, " ").concat(className),
24
27
  style: {
25
- fontSize: `${size}px`
28
+ fontSize: "".concat(size, "px")
26
29
  }
27
30
  }), /*#__PURE__*/_react.default.createElement("div", null), /*#__PURE__*/_react.default.createElement("div", null), /*#__PURE__*/_react.default.createElement("div", null));
28
31
  }
29
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9NdXRhYmxlSGFtYnVyZ2VyQnV0dG9uTW9kdWxlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJNdXRhYmxlSGFtYnVyZ2VyQnV0dG9uIiwiX3JlZiIsInN0YXRlIiwic2l6ZSIsImNsYXNzTmFtZSIsInByb3BzIiwic3RhdGVDbGFzcyIsIlN0eWxlcyIsImNyZWF0ZUVsZW1lbnQiLCJjb250YWluZXIiLCJzdHlsZSIsImZvbnRTaXplIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTXV0YWJsZUhhbWJ1cmdlckJ1dHRvbi9NdXRhYmxlSGFtYnVyZ2VyQnV0dG9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL011dGFibGVIYW1idXJnZXJCdXR0b24ubW9kdWxlLnNjc3NcIjtcblxuLyoqXG4gKiBBIGhhbWJ1cmdlciBidXR0b24gdGhhdCBtdXRhdGVzIGFjY29yZGluZyB0byBpdCdzIHN0YXRlXG4gKiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNdXRhYmxlSGFtYnVyZ2VyQnV0dG9uKHtcbiAgc3RhdGUgPSBcImRlZmF1bHRcIixcbiAgc2l6ZSxcbiAgY2xhc3NOYW1lID0gXCJcIixcbiAgLi4ucHJvcHNcbn06IHtcbiAgc3RhdGU/OlxuICAgIHwgXCJkZWZhdWx0XCJcbiAgICB8IFwiY2xvc2VkXCJcbiAgICB8IFwiYXJyb3ctdXBcIlxuICAgIHwgXCJhcnJvdy1kb3duXCJcbiAgICB8IFwic2VhcmNoXCJcbiAgICB8IFwibG9hZGluZ1wiXG4gICAgfCBcImNoZWNrbWFya1wiXG4gICAgfCBcInBlbmNpbFwiXG4gICAgfCBcImhhbWJ1cmdlclwiO1xuICBzaXplOiBudW1iZXI7XG59ICYgUmVhY3QuSFRNTFByb3BzPEhUTUxEaXZFbGVtZW50Pikge1xuICBjb25zdCBzdGF0ZUNsYXNzID0gc3RhdGUgaW4gU3R5bGVzID8gU3R5bGVzW3N0YXRlXSA6IFwiXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2Ake1N0eWxlcy5jb250YWluZXJ9ICR7c3RhdGVDbGFzc30gJHtjbGFzc05hbWV9YH1cbiAgICAgIHN0eWxlPXt7IGZvbnRTaXplOiBgJHtzaXplfXB4YCB9fVxuICAgID5cbiAgICAgIDxkaXYgLz5cbiAgICAgIDxkaXYgLz5cbiAgICAgIDxkaXYgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsNkJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUEwRCxTQUFBRCx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUFBLFNBQUFHLFNBQUEsSUFBQUEsUUFBQSxHQUFBQyxNQUFBLENBQUFDLE1BQUEsR0FBQUQsTUFBQSxDQUFBQyxNQUFBLENBQUFDLElBQUEsZUFBQUMsTUFBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQUFGLENBQUEsVUFBQUcsTUFBQSxHQUFBRixTQUFBLENBQUFELENBQUEsWUFBQUksR0FBQSxJQUFBRCxNQUFBLFFBQUFQLE1BQUEsQ0FBQVMsU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQUosTUFBQSxFQUFBQyxHQUFBLEtBQUFMLE1BQUEsQ0FBQUssR0FBQSxJQUFBRCxNQUFBLENBQUFDLEdBQUEsZ0JBQUFMLE1BQUEsWUFBQUosUUFBQSxDQUFBYSxLQUFBLE9BQUFQLFNBQUE7QUFFMUQ7QUFDQTtBQUNBO0FBQ2UsU0FBU1Esc0JBQXNCQSxDQUFBQyxJQUFBLEVBaUJUO0VBQUEsSUFqQlU7SUFDN0NDLEtBQUssR0FBRyxTQUFTO0lBQ2pCQyxJQUFJO0lBQ0pDLFNBQVMsR0FBRyxFQUFFO0lBQ2QsR0FBR0M7RUFhNkIsQ0FBQyxHQUFBSixJQUFBO0VBQ2pDLE1BQU1LLFVBQVUsR0FBR0osS0FBSyxJQUFJSyxxQ0FBTSxHQUFHQSxxQ0FBTSxDQUFDTCxLQUFLLENBQUMsR0FBRyxFQUFFO0VBRXZELG9CQUNFdkIsTUFBQSxDQUFBTSxPQUFBLENBQUF1QixhQUFBLFFBQUF0QixRQUFBLEtBQ01tQixLQUFLO0lBQ1RELFNBQVMsRUFBRyxHQUFFRyxxQ0FBTSxDQUFDRSxTQUFVLElBQUdILFVBQVcsSUFBR0YsU0FBVSxFQUFFO0lBQzVETSxLQUFLLEVBQUU7TUFBRUMsUUFBUSxFQUFHLEdBQUVSLElBQUs7SUFBSTtFQUFFLGlCQUVqQ3hCLE1BQUEsQ0FBQU0sT0FBQSxDQUFBdUIsYUFBQSxZQUFNLENBQUMsZUFDUDdCLE1BQUEsQ0FBQU0sT0FBQSxDQUFBdUIsYUFBQSxZQUFNLENBQUMsZUFDUDdCLE1BQUEsQ0FBQU0sT0FBQSxDQUFBdUIsYUFBQSxZQUFNLENBQ0gsQ0FBQztBQUVWIn0=
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9NdXRhYmxlSGFtYnVyZ2VyQnV0dG9uTW9kdWxlIiwiX2V4Y2x1ZGVkIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInQiLCJyIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJvIiwiaSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTXV0YWJsZUhhbWJ1cmdlckJ1dHRvbiIsIl9yZWYiLCJzdGF0ZSIsInNpemUiLCJjbGFzc05hbWUiLCJwcm9wcyIsInN0YXRlQ2xhc3MiLCJTdHlsZXMiLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0IiwiY29udGFpbmVyIiwic3R5bGUiLCJmb250U2l6ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL011dGFibGVIYW1idXJnZXJCdXR0b24vTXV0YWJsZUhhbWJ1cmdlckJ1dHRvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi9NdXRhYmxlSGFtYnVyZ2VyQnV0dG9uLm1vZHVsZS5zY3NzXCI7XG5cbi8qKlxuICogQSBoYW1idXJnZXIgYnV0dG9uIHRoYXQgbXV0YXRlcyBhY2NvcmRpbmcgdG8gaXQncyBzdGF0ZVxuICoqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTXV0YWJsZUhhbWJ1cmdlckJ1dHRvbih7XG4gIHN0YXRlID0gXCJkZWZhdWx0XCIsXG4gIHNpemUsXG4gIGNsYXNzTmFtZSA9IFwiXCIsXG4gIC4uLnByb3BzXG59OiB7XG4gIHN0YXRlPzpcbiAgICB8IFwiZGVmYXVsdFwiXG4gICAgfCBcImNsb3NlZFwiXG4gICAgfCBcImFycm93LXVwXCJcbiAgICB8IFwiYXJyb3ctZG93blwiXG4gICAgfCBcInNlYXJjaFwiXG4gICAgfCBcImxvYWRpbmdcIlxuICAgIHwgXCJjaGVja21hcmtcIlxuICAgIHwgXCJwZW5jaWxcIlxuICAgIHwgXCJoYW1idXJnZXJcIjtcbiAgc2l6ZTogbnVtYmVyO1xufSAmIFJlYWN0LkhUTUxQcm9wczxIVE1MRGl2RWxlbWVudD4pIHtcbiAgY29uc3Qgc3RhdGVDbGFzcyA9IHN0YXRlIGluIFN0eWxlcyA/IFN0eWxlc1tzdGF0ZV0gOiBcIlwiO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgey4uLnByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZXMuY29udGFpbmVyfSAke3N0YXRlQ2xhc3N9ICR7Y2xhc3NOYW1lfWB9XG4gICAgICBzdHlsZT17eyBmb250U2l6ZTogYCR7c2l6ZX1weGAgfX1cbiAgICA+XG4gICAgICA8ZGl2IC8+XG4gICAgICA8ZGl2IC8+XG4gICAgICA8ZGl2IC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLDZCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFBMEQsTUFBQUUsU0FBQTtBQUFBLFNBQUFILHVCQUFBSSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsU0FBQSxXQUFBQSxRQUFBLEdBQUFDLE1BQUEsQ0FBQUMsTUFBQSxHQUFBRCxNQUFBLENBQUFDLE1BQUEsQ0FBQUMsSUFBQSxlQUFBQyxDQUFBLGFBQUFQLENBQUEsTUFBQUEsQ0FBQSxHQUFBUSxTQUFBLENBQUFDLE1BQUEsRUFBQVQsQ0FBQSxVQUFBVSxDQUFBLEdBQUFGLFNBQUEsQ0FBQVIsQ0FBQSxZQUFBVyxDQUFBLElBQUFELENBQUEsT0FBQUUsY0FBQSxDQUFBQyxJQUFBLENBQUFILENBQUEsRUFBQUMsQ0FBQSxNQUFBSixDQUFBLENBQUFJLENBQUEsSUFBQUQsQ0FBQSxDQUFBQyxDQUFBLGFBQUFKLENBQUEsS0FBQUosUUFBQSxDQUFBVyxLQUFBLE9BQUFOLFNBQUE7QUFBQSxTQUFBTyx5QkFBQWYsQ0FBQSxFQUFBVSxDQUFBLGdCQUFBVixDQUFBLGlCQUFBZ0IsQ0FBQSxFQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQUMsNkJBQUEsQ0FBQWxCLENBQUEsRUFBQVUsQ0FBQSxPQUFBTixNQUFBLENBQUFlLHFCQUFBLFFBQUFaLENBQUEsR0FBQUgsTUFBQSxDQUFBZSxxQkFBQSxDQUFBbkIsQ0FBQSxRQUFBVyxDQUFBLE1BQUFBLENBQUEsR0FBQUosQ0FBQSxDQUFBRSxNQUFBLEVBQUFFLENBQUEsSUFBQUssQ0FBQSxHQUFBVCxDQUFBLENBQUFJLENBQUEsVUFBQUQsQ0FBQSxDQUFBVSxPQUFBLENBQUFKLENBQUEsUUFBQUssb0JBQUEsQ0FBQVIsSUFBQSxDQUFBYixDQUFBLEVBQUFnQixDQUFBLE1BQUFDLENBQUEsQ0FBQUQsQ0FBQSxJQUFBaEIsQ0FBQSxDQUFBZ0IsQ0FBQSxhQUFBQyxDQUFBO0FBQUEsU0FBQUMsOEJBQUFQLENBQUEsRUFBQVgsQ0FBQSxnQkFBQVcsQ0FBQSxpQkFBQUQsQ0FBQSxnQkFBQUgsQ0FBQSxJQUFBSSxDQUFBLFNBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBRixDQUFBLEVBQUFKLENBQUEsZ0JBQUFQLENBQUEsQ0FBQW9CLE9BQUEsQ0FBQWIsQ0FBQSxhQUFBRyxDQUFBLENBQUFILENBQUEsSUFBQUksQ0FBQSxDQUFBSixDQUFBLFlBQUFHLENBQUE7QUFFMUQ7QUFDQTtBQUNBO0FBQ2UsU0FBU1ksc0JBQXNCQSxDQUFBQyxJQUFBLEVBaUJUO0VBQUEsSUFqQlU7TUFDN0NDLEtBQUssR0FBRyxTQUFTO01BQ2pCQyxJQUFJO01BQ0pDLFNBQVMsR0FBRztJQWNvQixDQUFDLEdBQUFILElBQUE7SUFiOUJJLEtBQUssR0FBQVosd0JBQUEsQ0FBQVEsSUFBQSxFQUFBeEIsU0FBQTtFQWNSLE1BQU02QixVQUFVLEdBQUdKLEtBQUssSUFBSUsscUNBQU0sR0FBR0EscUNBQU0sQ0FBQ0wsS0FBSyxDQUFDLEdBQUcsRUFBRTtFQUV2RCxvQkFDRTdCLE1BQUEsQ0FBQU8sT0FBQSxDQUFBNEIsYUFBQSxRQUFBM0IsUUFBQSxLQUNNd0IsS0FBSztJQUNURCxTQUFTLEtBQUFLLE1BQUEsQ0FBS0YscUNBQU0sQ0FBQ0csU0FBUyxPQUFBRCxNQUFBLENBQUlILFVBQVUsT0FBQUcsTUFBQSxDQUFJTCxTQUFTLENBQUc7SUFDNURPLEtBQUssRUFBRTtNQUFFQyxRQUFRLEtBQUFILE1BQUEsQ0FBS04sSUFBSTtJQUFLO0VBQUUsaUJBRWpDOUIsTUFBQSxDQUFBTyxPQUFBLENBQUE0QixhQUFBLFlBQU0sQ0FBQyxlQUNQbkMsTUFBQSxDQUFBTyxPQUFBLENBQUE0QixhQUFBLFlBQU0sQ0FBQyxlQUNQbkMsTUFBQSxDQUFBTyxPQUFBLENBQUE0QixhQUFBLFlBQU0sQ0FDSCxDQUFDO0FBRVYiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -10,5 +10,5 @@ Object.defineProperty(exports, "default", {
10
10
  }
11
11
  });
12
12
  var _MutableHamburgerButton = _interopRequireDefault(require("./MutableHamburgerButton"));
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTXV0YWJsZUhhbWJ1cmdlckJ1dHRvbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9NdXRhYmxlSGFtYnVyZ2VyQnV0dG9uL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IH0gZnJvbSAnLi9NdXRhYmxlSGFtYnVyZ2VyQnV0dG9uJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQW1ELFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBIn0=
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTXV0YWJsZUhhbWJ1cmdlckJ1dHRvbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTXV0YWJsZUhhbWJ1cmdlckJ1dHRvbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gJy4vTXV0YWJsZUhhbWJ1cmdlckJ1dHRvbic7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFtRCxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -7,7 +7,7 @@ exports.default = Notification;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _Card = _interopRequireDefault(require("../Card"));
9
9
  var _NotificationModule = _interopRequireDefault(require("./Notification.module.scss"));
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
11
  /**
12
12
  * A layout for the notification card
13
13
  **/
@@ -17,7 +17,7 @@ function Notification(_ref) {
17
17
  children
18
18
  } = _ref;
19
19
  return /*#__PURE__*/_react.default.createElement(_Card.default, {
20
- className: `${_NotificationModule.default.container} ${_NotificationModule.default[type]}`
20
+ className: "".concat(_NotificationModule.default.container, " ").concat(_NotificationModule.default[type])
21
21
  }, children);
22
22
  }
23
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9DYXJkIiwiX05vdGlmaWNhdGlvbk1vZHVsZSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiTm90aWZpY2F0aW9uIiwiX3JlZiIsInR5cGUiLCJjaGlsZHJlbiIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJTdHlsZXMiLCJjb250YWluZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Ob3RpZmljYXRpb24vTm90aWZpY2F0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBDYXJkIGZyb20gXCIuLi9DYXJkXCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL05vdGlmaWNhdGlvbi5tb2R1bGUuc2Nzc1wiO1xuXG4vKipcbiAqIEEgbGF5b3V0IGZvciB0aGUgbm90aWZpY2F0aW9uIGNhcmRcbiAqKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE5vdGlmaWNhdGlvbih7XG4gIHR5cGUsXG4gIGNoaWxkcmVuXG59OiBQcm9wc1dpdGhDaGlsZHJlbjx7IHR5cGU6IFwic3VjY2Vzc1wiIH0+KSB7XG4gIHJldHVybiA8Q2FyZCBjbGFzc05hbWU9e2Ake1N0eWxlcy5jb250YWluZXJ9ICR7U3R5bGVzW3R5cGVdfWB9PntjaGlsZHJlbn08L0NhcmQ+O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxtQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQWdELFNBQUFELHVCQUFBSSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWhEO0FBQ0E7QUFDQTtBQUNlLFNBQVNHLFlBQVlBLENBQUFDLElBQUEsRUFHTztFQUFBLElBSE47SUFDbkNDLElBQUk7SUFDSkM7RUFDc0MsQ0FBQyxHQUFBRixJQUFBO0VBQ3ZDLG9CQUFPVCxNQUFBLENBQUFPLE9BQUEsQ0FBQUssYUFBQSxDQUFDVCxLQUFBLENBQUFJLE9BQUk7SUFBQ00sU0FBUyxFQUFHLEdBQUVDLDJCQUFNLENBQUNDLFNBQVUsSUFBR0QsMkJBQU0sQ0FBQ0osSUFBSSxDQUFFO0VBQUUsR0FBRUMsUUFBZSxDQUFDO0FBQ2xGIn0=
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9DYXJkIiwiX05vdGlmaWNhdGlvbk1vZHVsZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk5vdGlmaWNhdGlvbiIsIl9yZWYiLCJ0eXBlIiwiY2hpbGRyZW4iLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiY29uY2F0IiwiU3R5bGVzIiwiY29udGFpbmVyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTm90aWZpY2F0aW9uL05vdGlmaWNhdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgQ2FyZCBmcm9tIFwiLi4vQ2FyZFwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi9Ob3RpZmljYXRpb24ubW9kdWxlLnNjc3NcIjtcblxuLyoqXG4gKiBBIGxheW91dCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBjYXJkXG4gKiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBOb3RpZmljYXRpb24oe1xuICB0eXBlLFxuICBjaGlsZHJlblxufTogUHJvcHNXaXRoQ2hpbGRyZW48eyB0eXBlOiBcInN1Y2Nlc3NcIiB9Pikge1xuICByZXR1cm4gPENhcmQgY2xhc3NOYW1lPXtgJHtTdHlsZXMuY29udGFpbmVyfSAke1N0eWxlc1t0eXBlXX1gfT57Y2hpbGRyZW59PC9DYXJkPjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsbUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUFnRCxTQUFBRCx1QkFBQUksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVoRDtBQUNBO0FBQ0E7QUFDZSxTQUFTRyxZQUFZQSxDQUFBQyxJQUFBLEVBR087RUFBQSxJQUhOO0lBQ25DQyxJQUFJO0lBQ0pDO0VBQ3NDLENBQUMsR0FBQUYsSUFBQTtFQUN2QyxvQkFBT1QsTUFBQSxDQUFBTyxPQUFBLENBQUFLLGFBQUEsQ0FBQ1QsS0FBQSxDQUFBSSxPQUFJO0lBQUNNLFNBQVMsS0FBQUMsTUFBQSxDQUFLQywyQkFBTSxDQUFDQyxTQUFTLE9BQUFGLE1BQUEsQ0FBSUMsMkJBQU0sQ0FBQ0wsSUFBSSxDQUFDO0VBQUcsR0FBRUMsUUFBZSxDQUFDO0FBQ2xGIiwiaWdub3JlTGlzdCI6W119
@@ -10,5 +10,5 @@ Object.defineProperty(exports, "default", {
10
10
  }
11
11
  });
12
12
  var _Notification = _interopRequireDefault(require("./Notification"));
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTm90aWZpY2F0aW9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL05vdGlmaWNhdGlvbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gJy4vTm90aWZpY2F0aW9uJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxhQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBeUMsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUEifQ==
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTm90aWZpY2F0aW9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Ob3RpZmljYXRpb24vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tICcuL05vdGlmaWNhdGlvbic7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsYUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQXlDLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -8,26 +8,32 @@ exports.default = OrderableList;
8
8
  exports.useOrderableEvents = useOrderableEvents;
9
9
  exports.useOrderableListAnchor = useOrderableListAnchor;
10
10
  var _throttle = _interopRequireDefault(require("lodash/throttle"));
11
+ var _react = _interopRequireWildcard(require("react"));
11
12
  var _UncontrolledTransition = _interopRequireDefault(require("../UncontrolledTransition"));
12
13
  var _TransitionModule = _interopRequireDefault(require("../Transition/Transition.module.scss"));
13
- var _react = _interopRequireWildcard(require("react"));
14
14
  var _useHero = _interopRequireDefault(require("../../hooks/useHero"));
15
15
  var _AnimatedEntrance = _interopRequireDefault(require("../AnimatedEntrance"));
16
16
  var _Transition = require("../Transition");
17
17
  var _OrderableListModule = _interopRequireDefault(require("./OrderableList.module.scss"));
18
18
  var _useEvents = _interopRequireDefault(require("../../hooks/utility/useEvents"));
19
19
  var _ownEvent = _interopRequireDefault(require("../../utils/ownEvent"));
20
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
20
+ const _excluded = ["children", "className", "mode", "shrinkToOnOrder", "reorderingClassName", "cloneClassName"];
21
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
22
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
23
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
24
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
27
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
28
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
29
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
30
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
24
31
  const OrderableListContext = /*#__PURE__*/(0, _react.createContext)(null);
25
- let OrderableListReorderMode = /*#__PURE__*/function (OrderableListReorderMode) {
32
+ let OrderableListReorderMode = exports.OrderableListReorderMode = /*#__PURE__*/function (OrderableListReorderMode) {
26
33
  OrderableListReorderMode["VERTICAL"] = "v";
27
34
  OrderableListReorderMode["TWO_DIMENSIONS"] = "hv";
28
35
  return OrderableListReorderMode;
29
36
  }({});
30
- exports.OrderableListReorderMode = OrderableListReorderMode;
31
37
  function cleanKeys(keys) {
32
38
  return keys.map(a => a.split(";")[0]);
33
39
  }
@@ -37,14 +43,14 @@ function cleanKeys(keys) {
37
43
  **/
38
44
  function OrderableList(_ref) {
39
45
  let {
40
- children,
41
- className = "",
42
- mode = OrderableListReorderMode.VERTICAL,
43
- shrinkToOnOrder,
44
- reorderingClassName,
45
- cloneClassName,
46
- ...props
47
- } = _ref;
46
+ children,
47
+ className = "",
48
+ mode = OrderableListReorderMode.VERTICAL,
49
+ shrinkToOnOrder,
50
+ reorderingClassName,
51
+ cloneClassName
52
+ } = _ref,
53
+ props = _objectWithoutProperties(_ref, _excluded);
48
54
  const availableKeys = children.map(a => a.key);
49
55
  const availableKeysDep = availableKeys.join(",");
50
56
  const initializeOrder = (0, _react.useCallback)(() => {
@@ -79,7 +85,7 @@ function OrderableList(_ref) {
79
85
  return parent;
80
86
  };
81
87
  (0, _react.useLayoutEffect)(() => {
82
- if (shrinkToOnOrder) rootEl().style.setProperty("--shrink-to", `${shrinkToOnOrder}px`);
88
+ if (shrinkToOnOrder) rootEl().style.setProperty("--shrink-to", "".concat(shrinkToOnOrder, "px"));
83
89
  }, [shrinkToOnOrder]);
84
90
  const calculateReordering = (0, _react.useMemo)(() => {
85
91
  return (0, _throttle.default)((e, els, currentOrder) => {
@@ -128,10 +134,10 @@ function OrderableList(_ref) {
128
134
  let indexOfTheNewElement = indexOfKeyInProvidedOrder + (isBefore ? -1 : 0);
129
135
  if (previousIndex > indexOfTheNewElement) indexOfTheNewElement++;
130
136
  const orderWithoutCurrent = p.filter(a => {
131
- if (a.startsWith(`${currentWorkingKey.current};`)) return false;
137
+ if (a.startsWith("".concat(currentWorkingKey.current, ";"))) return false;
132
138
  return a !== currentWorkingKey.current;
133
139
  });
134
- orderWithoutCurrent.splice(indexOfTheNewElement, 0, `${currentWorkingKey.current};${Date.now()}`);
140
+ orderWithoutCurrent.splice(indexOfTheNewElement, 0, "".concat(currentWorkingKey.current, ";").concat(Date.now()));
135
141
  return orderWithoutCurrent;
136
142
  });
137
143
  }
@@ -183,15 +189,15 @@ function OrderableList(_ref) {
183
189
  currentClone.current = clone;
184
190
  if (process.env.NODE_ENV === "development") clone.setAttribute("data-testid", "orderable-list-clone");
185
191
  clone.setAttribute("data-orderableid", "orderable-list-clone");
186
- clone.style.width = `${box.width}px`;
187
- clone.style.height = `${box.height}px`;
188
- clone.style.top = `${box.top}px`;
189
- clone.style.left = `${box.left}px`;
192
+ clone.style.width = "".concat(box.width, "px");
193
+ clone.style.height = "".concat(box.height, "px");
194
+ clone.style.top = "".concat(box.top, "px");
195
+ clone.style.left = "".concat(box.left, "px");
190
196
  clone.classList.add(_OrderableListModule.default.clone);
191
- if (shrinkToOnOrder) clone.style.maxHeight = `${box.height}px`;
197
+ if (shrinkToOnOrder) clone.style.maxHeight = "".concat(box.height, "px");
192
198
  setTimeout(() => {
193
199
  if (cloneClassName) clone.classList.add(cloneClassName);
194
- if (shrinkToOnOrder) clone.style.maxHeight = `${shrinkToOnOrder}px`;
200
+ if (shrinkToOnOrder) clone.style.maxHeight = "".concat(shrinkToOnOrder, "px");
195
201
  }, 0);
196
202
  orderableListItemForAnchor.classList.add(_OrderableListModule.default.currentOrdering);
197
203
  orderableListItemForAnchor.classList.remove(_OrderableListModule.default.visible);
@@ -205,8 +211,8 @@ function OrderableList(_ref) {
205
211
  } : e;
206
212
  if (!offset) offset = [x1 - box.left, y1 - box.top];
207
213
  const [offsetX, offsetY] = offset;
208
- clone.style.top = `${y1 - offsetY}px`;
209
- clone.style.left = `${x1 - offsetX}px`;
214
+ clone.style.top = "".concat(y1 - offsetY, "px");
215
+ clone.style.left = "".concat(x1 - offsetX, "px");
210
216
  };
211
217
  document.body.appendChild(clone);
212
218
  const deleteClone = () => {
@@ -222,11 +228,11 @@ function OrderableList(_ref) {
222
228
  const elInvisible = els.find(a => !a.classList.contains(_OrderableListModule.default.visible) && a.style.maxHeight !== "0px");
223
229
  if (shrinkToOnOrder) {
224
230
  const child = elInvisible.lastElementChild;
225
- child.style.maxHeight = `${child.scrollHeight}px`;
231
+ child.style.maxHeight = "".concat(child.scrollHeight, "px");
226
232
  child.classList.add(_OrderableListModule.default.transitionHeight);
227
233
  const onEnd = (0, _ownEvent.default)(() => {
228
234
  child.removeEventListener("transitionend", onEnd);
229
- child.style.maxHeight = `initial`;
235
+ child.style.maxHeight = "initial";
230
236
  child.classList.remove(_OrderableListModule.default.transitionHeight);
231
237
  });
232
238
  child.addEventListener("transitionend", onEnd);
@@ -248,9 +254,9 @@ function OrderableList(_ref) {
248
254
  if (clone.style.top.startsWith(Math.floor(box.top).toString()) && clone.style.left.startsWith(Math.floor(box.left).toString())) {
249
255
  cleanUp();
250
256
  } else {
251
- clone.style.top = `${box.top}px`;
252
- clone.style.left = `${box.left}px`;
253
- clone.style.transition = `top 500ms linear, left 500ms linear`;
257
+ clone.style.top = "".concat(box.top, "px");
258
+ clone.style.left = "".concat(box.left, "px");
259
+ clone.style.transition = "top 500ms linear, left 500ms linear";
254
260
  clone.addEventListener("transitionend", () => {
255
261
  cleanUp();
256
262
  });
@@ -261,12 +267,12 @@ function OrderableList(_ref) {
261
267
  el.classList.add(_OrderableListModule.default.visible);
262
268
  }
263
269
  if (shrinkToOnOrder) {
264
- for (let el of els) el.style.maxHeight = `${el.scrollHeight}px`;
270
+ for (let el of els) el.style.maxHeight = "".concat(el.scrollHeight, "px");
265
271
  const targetHeight = elIndex * shrinkToOnOrder;
266
272
  const currentHeight = orderableListItemForAnchor.offsetTop - els[0].offsetTop;
267
273
  const paddingTop = currentHeight - targetHeight;
268
- rootEl().style.paddingTop = `${paddingTop}px`;
269
- rootEl().style.minHeight = `${rootEl().clientHeight}px`;
274
+ rootEl().style.paddingTop = "".concat(paddingTop, "px");
275
+ rootEl().style.minHeight = "".concat(rootEl().clientHeight, "px");
270
276
  }
271
277
  orderableListItemForAnchor.style.visibility = "hidden";
272
278
  orderableListItemForAnchor.classList.remove(_OrderableListModule.default.visible);
@@ -284,19 +290,16 @@ function OrderableList(_ref) {
284
290
  if (currentClone.current) {
285
291
  const els = Array.from(rootEl().children);
286
292
  const elInvisible = els.find(a => !a.classList.contains(_OrderableListModule.default.visible) && a.style.maxHeight !== "0px");
287
- elInvisible.children[0].style.height = `${currentClone.current.clientHeight}px`;
293
+ elInvisible.children[0].style.height = "".concat(currentClone.current.clientHeight, "px");
288
294
  setTimeout(() => {
289
- elInvisible.children[1].style.height = `${currentClone.current.clientHeight}px`;
295
+ elInvisible.children[1].style.height = "".concat(currentClone.current.clientHeight, "px");
290
296
  }, 150);
291
297
  }
292
298
  }, [cleanOrder]);
293
- const toSpread = {
294
- ...props
295
- };
299
+ const toSpread = _objectSpread({}, props);
296
300
  delete toSpread.keyOrder;
297
301
  delete toSpread.onChangeKeyOrder;
298
- const childrenToRender = [...children].filter(a => cleanOrder.includes(a.key)).sort((a, b) => cleanOrder.indexOf(a.key) - cleanOrder.indexOf(b.key)).map((a, i) => ({
299
- ...a,
302
+ const childrenToRender = [...children].filter(a => cleanOrder.includes(a.key)).sort((a, b) => cleanOrder.indexOf(a.key) - cleanOrder.indexOf(b.key)).map((a, i) => _objectSpread(_objectSpread({}, a), {}, {
300
303
  key: order[i]
301
304
  }));
302
305
  (0, _react.useLayoutEffect)(() => {
@@ -356,7 +359,7 @@ function OrderableList(_ref) {
356
359
  value: e
357
360
  }, /*#__PURE__*/_react.default.createElement("div", _extends({
358
361
  ref: rootRef,
359
- className: `${_OrderableListModule.default.root} ${className} ${shrinkToOnOrder ? _OrderableListModule.default.shrinkable : ""}`
362
+ className: "".concat(_OrderableListModule.default.root, " ").concat(className, " ").concat(shrinkToOnOrder ? _OrderableListModule.default.shrinkable : "")
360
363
  }, toSpread), mode === OrderableListReorderMode.VERTICAL ? /*#__PURE__*/_react.default.createElement(_AnimatedEntrance.default, null, childrenToRender) : /*#__PURE__*/_react.default.createElement(_UncontrolledTransition.default, {
361
364
  className: _OrderableListModule.default.transition,
362
365
  transitionType: _Transition.TransitionAnimationTypes.CUSTOM,
@@ -370,7 +373,7 @@ function OrderableList(_ref) {
370
373
  elementExiting: _TransitionModule.default.fadeOut
371
374
  }
372
375
  },
373
- contentClassName: `${className}`
376
+ contentClassName: "".concat(className)
374
377
  }, /*#__PURE__*/_react.default.createElement(_react.Fragment, {
375
378
  key: orderId
376
379
  }, [...children].filter(a => cleanOrder.includes(a.key)).sort((a, b) => cleanOrder.indexOf(a.key) - cleanOrder.indexOf(b.key)).map((a, i) => /*#__PURE__*/_react.default.createElement(HeroWrapper, {
@@ -430,4 +433,4 @@ function useOrderableEvents(events) {
430
433
  };
431
434
  }, [events]);
432
435
  }
433
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGhyb3R0bGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VbmNvbnRyb2xsZWRUcmFuc2l0aW9uIiwiX1RyYW5zaXRpb25Nb2R1bGUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl91c2VIZXJvIiwiX0FuaW1hdGVkRW50cmFuY2UiLCJfVHJhbnNpdGlvbiIsIl9PcmRlcmFibGVMaXN0TW9kdWxlIiwiX3VzZUV2ZW50cyIsIl9vd25FdmVudCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwiYXBwbHkiLCJPcmRlcmFibGVMaXN0Q29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUiLCJleHBvcnRzIiwiY2xlYW5LZXlzIiwia2V5cyIsIm1hcCIsImEiLCJzcGxpdCIsIk9yZGVyYWJsZUxpc3QiLCJfcmVmIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJtb2RlIiwiVkVSVElDQUwiLCJzaHJpbmtUb09uT3JkZXIiLCJyZW9yZGVyaW5nQ2xhc3NOYW1lIiwiY2xvbmVDbGFzc05hbWUiLCJwcm9wcyIsImF2YWlsYWJsZUtleXMiLCJhdmFpbGFibGVLZXlzRGVwIiwiam9pbiIsImluaXRpYWxpemVPcmRlciIsInVzZUNhbGxiYWNrIiwibWlzc2luZ09yZGVyS2V5cyIsImtleU9yZGVyIiwiZmlsdGVyIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWQiLCJjdXJyZW50IiwiYW5jaG9yc0xpc3QiLCJ1c2VSZWYiLCJldmVudEVtaXR0ZXIiLCJ1c2VFdmVudHMiLCJjdXJyZW50Q2xvbmUiLCJjdXJyZW50V29ya2luZ0tleSIsInJvb3RSZWYiLCJfb3JkZXIiLCJzZXRPcmRlciIsInVzZVN0YXRlIiwidXNlRWZmZWN0Iiwib3JkZXIiLCJ1c2VNZW1vIiwiY3VycmVudE9yZGVyIiwibyIsImNsZWFuT3JkZXIiLCJvcmRlcklkIiwicm9vdEVsIiwiVFdPX0RJTUVOU0lPTlMiLCJsYXN0RWxlbWVudENoaWxkIiwiZmluZFBhcmVudEVsZW1lbnQiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiRXJyb3IiLCJ1c2VMYXlvdXRFZmZlY3QiLCJzdHlsZSIsInNldFByb3BlcnR5IiwiY2FsY3VsYXRlUmVvcmRlcmluZyIsInRocm90dGxlIiwiZSIsImVscyIsImluZGV4T2ZLZXlJbkNsZWFuT3JkZXIiLCJpbmRleE9mIiwia2V5T2ZUaGVPdmVyRWxlbWVudCIsImlzRHJhZ2dpbmdPd25FbGVtZW50IiwiaXNBZnRlciIsImlzQmVmb3JlIiwiZGlzdGFuY2VGcm9tTGVmdCIsIm9mZnNldFgiLCJ3aWR0aE9mRWwiLCJjbGllbnRXaWR0aCIsIm9mZnNldCIsImRpc3RhbmNlRnJvbVRvcCIsIm9mZnNldFkiLCJoZWlnaHRPZkVsIiwiY2xpZW50SGVpZ2h0IiwiY2hlY2tJZkNhbk1vdmUiLCJrZXlPZk92ZXJFbGVtZW50IiwiaW5kZXhPZlRoZU5ld0VsZW1lbnQiLCJzaG91bGRUcmlnZ2VyUmVvcmRlcmluZyIsInAiLCJwcmV2aW91c0luZGV4IiwiaW5kZXhPZktleUluUHJvdmlkZWRPcmRlciIsIm9yZGVyV2l0aG91dEN1cnJlbnQiLCJzdGFydHNXaXRoIiwic3BsaWNlIiwiRGF0ZSIsIm5vdyIsInJlZ2lzdGVyTGlzdGVuZXJzIiwiQXJyYXkiLCJmcm9tIiwiY2FsY3VsYXRlUmVvcmRlcmluZ0NhbGwiLCJlbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5zdWJzY3JpYmUiLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIm9uQ2hhbmdlS2V5T3JkZXIiLCJjbGVhbk9yZGVyUmVmIiwib25BbmNob3JDbGljayIsIl9yZWYyIiwiYW5jaG9yIiwib3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IiLCJib3giLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJlbEluZGV4IiwiY2xvbmUiLCJjbG9uZU5vZGUiLCJzZXRBdHRyaWJ1dGUiLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJTdHlsZXMiLCJtYXhIZWlnaHQiLCJjdXJyZW50T3JkZXJpbmciLCJyZW1vdmUiLCJ2aXNpYmxlIiwibW92ZW1lbnRDb250cm9sIiwieCIsIngxIiwieSIsInkxIiwidG91Y2hlcyIsInBhZ2VYIiwicGFnZVkiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImRlbGV0ZUNsb25lIiwid2luZG93IiwidmlzaWJpbGl0eSIsInVuc2VsZWN0YWJsZSIsImVsSW52aXNpYmxlIiwiZmluZCIsImNvbnRhaW5zIiwiY2hpbGQiLCJzY3JvbGxIZWlnaHQiLCJ0cmFuc2l0aW9uSGVpZ2h0Iiwib25FbmQiLCJvd25FdmVudCIsImNsZWFuVXAiLCJyZW1vdmVQcm9wZXJ0eSIsImRpc3BhdGNoZXIiLCJvcmRlcmluZyIsIk1hdGgiLCJmbG9vciIsInRvU3RyaW5nIiwidHJhbnNpdGlvbiIsInRhcmdldEhlaWdodCIsImN1cnJlbnRIZWlnaHQiLCJvZmZzZXRUb3AiLCJwYWRkaW5nVG9wIiwibWluSGVpZ2h0IiwidG9TcHJlYWQiLCJjaGlsZHJlblRvUmVuZGVyIiwic29ydCIsImIiLCJyZWxhdGVkQW5jaG9yIiwicHJldmVudERlZmF1bHQiLCJtb3ZlQ2IiLCJ0b3VjaCIsImNsaWVudFgiLCJjbGllbnRZIiwiY3VycmVudEVsZW1lbnRJZHgiLCJmaW5kSW5kZXgiLCJjIiwicmVjdCIsInQiLCJ0b3VjaE1vdmVDYiIsInN0b3BQcm9wYWdhdGlvbiIsImRpc3BhdGNoRXZlbnQiLCJUb3VjaEV2ZW50IiwidHlwZSIsInJlbW92ZUNiIiwiYmluZEFuY2hvciIsInB1c2giLCJ1bmJpbmRBbmNob3IiLCJvbiIsInN1YnNjcmliZXIiLCJjcmVhdGVFbGVtZW50IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInJlZiIsInJvb3QiLCJzaHJpbmthYmxlIiwidHJhbnNpdGlvblR5cGUiLCJUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMiLCJDVVNUT00iLCJjb25maWciLCJiYWNrd2FyZCIsImVsZW1lbnRFbnRlcmluZyIsImVsZW1lbnRFeGl0aW5nIiwiZm9yd2FyZCIsInN0dWJFbnRlcmluZyIsIlRyYW5zaXRpb25TdHlsZXMiLCJmYWRlT3V0IiwiY29udGVudENsYXNzTmFtZSIsIkZyYWdtZW50IiwiSGVyb1dyYXBwZXIiLCJpZCIsIl9yZWYzIiwiaGVyb1JlZiIsInVzZUhlcm8iLCJvbkhlcm9TdGFydCIsIl9jIiwiX28iLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImltZyIsIm9uSGVyb0Nsb25lZCIsIm9uSGVyb0VuZCIsInVzZU9yZGVyYWJsZUxpc3RBbmNob3IiLCJhbmNob3JSZWYiLCJjdHgiLCJ1c2VDb250ZXh0IiwidXNlT3JkZXJhYmxlRXZlbnRzIiwiZXZlbnRzIiwidW5zdWJzY3JpYmVycyIsImV2ZW50TmFtZSIsInUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9PcmRlcmFibGVMaXN0L09yZGVyYWJsZUxpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0aHJvdHRsZSBmcm9tIFwibG9kYXNoL3Rocm90dGxlXCI7XG5pbXBvcnQgVW5jb250cm9sbGVkVHJhbnNpdGlvbiBmcm9tIFwiLi4vVW5jb250cm9sbGVkVHJhbnNpdGlvblwiO1xuaW1wb3J0IFRyYW5zaXRpb25TdHlsZXMgZnJvbSBcIi4uL1RyYW5zaXRpb24vVHJhbnNpdGlvbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlYWN0LCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIERldGFpbGVkSFRNTFByb3BzLFxuICBGcmFnbWVudCxcbiAgSFRNTEF0dHJpYnV0ZXMsXG4gIFByb3BzV2l0aENoaWxkcmVuLFxuICBSZWFjdEVsZW1lbnQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdXNlSGVybyBmcm9tIFwiLi4vLi4vaG9va3MvdXNlSGVyb1wiO1xuaW1wb3J0IEFuaW1hdGVkRW50cmFuY2UgZnJvbSBcIi4uL0FuaW1hdGVkRW50cmFuY2VcIjtcbmltcG9ydCB7IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcyB9IGZyb20gXCIuLi9UcmFuc2l0aW9uXCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL09yZGVyYWJsZUxpc3QubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB1c2VFdmVudHMgZnJvbSBcIi4uLy4uL2hvb2tzL3V0aWxpdHkvdXNlRXZlbnRzXCI7XG5pbXBvcnQgb3duRXZlbnQgZnJvbSBcIi4uLy4uL3V0aWxzL293bkV2ZW50XCI7XG5cbnR5cGUgRXZlbnRzID0gXCJvcmRlci1zdG9wXCIgfCBcIm9yZGVyLXN0YXJ0XCI7XG5cbmNvbnN0IE9yZGVyYWJsZUxpc3RDb250ZXh0ID0gY3JlYXRlQ29udGV4dDx7XG4gIGJpbmRBbmNob3I6IChiaW5kRWxlbWVudDogSFRNTERpdkVsZW1lbnQpID0+IHZvaWQ7XG4gIHVuYmluZEFuY2hvcjogKGJpbmRFbGVtZW50OiBIVE1MRGl2RWxlbWVudCkgPT4gdm9pZDtcbiAgb246IChldmVudE5hbWU6IEV2ZW50cywgY2I6ICgpID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG59PihudWxsIGFzIGFueSk7XG5cbmV4cG9ydCBlbnVtIE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZSB7XG4gIFZFUlRJQ0FMID0gXCJ2XCIsXG4gIFRXT19ESU1FTlNJT05TID0gXCJodlwiLFxufVxuXG5mdW5jdGlvbiBjbGVhbktleXMoa2V5czogc3RyaW5nW10pIHtcbiAgcmV0dXJuIGtleXMubWFwKChhKSA9PiBhLnNwbGl0KFwiO1wiKVswXSk7XG59XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgcmVjZWl2ZXMgYSBsaXN0IG9mIGtleWVkIGVsZW1lbnRzIGFuZCBvcmRlcnMgaXQgYmFzZWQgb2YgdGhlIG9yZGVyIHByb3ZpZGVkIHZpYSB0aGUgcHJvcCBcImtleU9yZGVyXCJcbiAqKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE9yZGVyYWJsZUxpc3Qoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lID0gXCJcIixcbiAgbW9kZSA9IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZS5WRVJUSUNBTCxcbiAgc2hyaW5rVG9Pbk9yZGVyLFxuICByZW9yZGVyaW5nQ2xhc3NOYW1lLFxuICBjbG9uZUNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0RWxlbWVudFtdO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vZGU/OiBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGU7XG4gIC8qKlxuICAgKiBJZiBwcm92aWRlZCwgbWFrZXMgdGhlIGVsZW1lbnRzIHNocmluayB0byB0aGlzIHZhbHVlIGluIHB4IHdoZW4gb3JkZXJpbmcgZWxlbWVudHNcbiAgICovXG4gIHNocmlua1RvT25PcmRlcj86IG51bWJlcjtcblxuICAvKipcbiAgICogQSBjbGFzcyB0byBhcHBseSB3aGVuIHJlb3JkZXJpbmdcbiAgICovXG4gIHJlb3JkZXJpbmdDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGNsb25lIGVsXG4gICAqL1xuICBjbG9uZUNsYXNzTmFtZT86IHN0cmluZztcbn0gJiAoXG4gIHwge1xuICAgICAga2V5T3JkZXI/OiBzdHJpbmdbXTtcbiAgICAgIG9uQ2hhbmdlS2V5T3JkZXI6IChuZXdPcmRlcjogc3RyaW5nW10pID0+IHZvaWQ7XG4gICAgfVxuICB8IHtcbiAgICAgIGN1cnJlbnRPcmRlcj86IHN0cmluZ1tdO1xuICAgIH1cbikgJlxuICBEZXRhaWxlZEhUTUxQcm9wczxIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIEhUTUxEaXZFbGVtZW50Pikge1xuICBjb25zdCBhdmFpbGFibGVLZXlzID0gY2hpbGRyZW4ubWFwKChhKSA9PiBhLmtleSBhcyBzdHJpbmcpO1xuICBjb25zdCBhdmFpbGFibGVLZXlzRGVwID0gYXZhaWxhYmxlS2V5cy5qb2luKFwiLFwiKTtcbiAgY29uc3QgaW5pdGlhbGl6ZU9yZGVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG1pc3NpbmdPcmRlcktleXMgPVxuICAgICAgXCJrZXlPcmRlclwiIGluIHByb3BzICYmIHByb3BzLmtleU9yZGVyXG4gICAgICAgID8gYXZhaWxhYmxlS2V5cy5maWx0ZXIoKGEpID0+ICFwcm9wcy5rZXlPcmRlciEuaW5jbHVkZXMoYSkpXG4gICAgICAgIDogW107XG5cbiAgICByZXR1cm4gKFxuICAgICAgKFwia2V5T3JkZXJcIiBpbiBwcm9wcyAmJiBwcm9wcy5rZXlPcmRlclxuICAgICAgICA/IFsuLi5wcm9wcy5rZXlPcmRlciwgLi4ubWlzc2luZ09yZGVyS2V5c11cbiAgICAgICAgOiB1bmRlZmluZWQpIHx8IGF2YWlsYWJsZUtleXNcbiAgICApO1xuICB9LCBbYXZhaWxhYmxlS2V5c0RlcCwgKHByb3BzIGFzIGFueSkua2V5T3JkZXJdKTtcbiAgY29uc3QgeyBjdXJyZW50OiBhbmNob3JzTGlzdCB9ID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50W10+KFtdKTtcbiAgY29uc3QgZXZlbnRFbWl0dGVyID0gdXNlRXZlbnRzPEV2ZW50cywgeyBbayBpbiBFdmVudHNdOiBbXSB9PigpO1xuICBjb25zdCBjdXJyZW50Q2xvbmUgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY3VycmVudFdvcmtpbmdLZXkgPSB1c2VSZWY8c3RyaW5nPih1bmRlZmluZWQpO1xuICBjb25zdCByb290UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsIGFzIGFueSk7XG4gIGNvbnN0IFtfb3JkZXIsIHNldE9yZGVyXSA9IHVzZVN0YXRlKGluaXRpYWxpemVPcmRlcik7XG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRPcmRlcihpbml0aWFsaXplT3JkZXIoKSksIFtpbml0aWFsaXplT3JkZXJdKTtcblxuICBjb25zdCBvcmRlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBcImN1cnJlbnRPcmRlclwiIGluIHByb3BzID8gcHJvcHMuY3VycmVudE9yZGVyIHx8IF9vcmRlciA6IF9vcmRlclxuICAgICkuZmlsdGVyKChvKSA9PiBvLmluY2x1ZGVzKFwiO1wiKSB8fCBhdmFpbGFibGVLZXlzLmluY2x1ZGVzKG8pKTtcbiAgfSwgWyhwcm9wcyBhcyBhbnkpLmN1cnJlbnRPcmRlciwgX29yZGVyLCBhdmFpbGFibGVLZXlzRGVwXSk7XG4gIGNvbnN0IGNsZWFuT3JkZXIgPSB1c2VNZW1vKCgpID0+IG9yZGVyLm1hcCgoYSkgPT4gYS5zcGxpdChcIjtcIilbMF0pLCBbb3JkZXJdKTtcbiAgY29uc3Qgb3JkZXJJZCA9IHVzZU1lbW8oKCkgPT4gXCJrZXktXCIgKyBjbGVhbk9yZGVyLmpvaW4oXCJcIiksIFtjbGVhbk9yZGVyXSk7XG4gIGZ1bmN0aW9uIHJvb3RFbCgpIHtcbiAgICBpZiAobW9kZSA9PT0gT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlLlRXT19ESU1FTlNJT05TKVxuICAgICAgcmV0dXJuIHJvb3RSZWYuY3VycmVudCEubGFzdEVsZW1lbnRDaGlsZCFcbiAgICAgICAgLmxhc3RFbGVtZW50Q2hpbGQhIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgIHJldHVybiByb290UmVmLmN1cnJlbnQhIGFzIEhUTUxEaXZFbGVtZW50O1xuICB9XG5cbiAgY29uc3QgZmluZFBhcmVudEVsZW1lbnQgPSAodGFyZ2V0OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xuICAgIGxldCBwYXJlbnQ6IEhUTUxEaXZFbGVtZW50ID0gdGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50O1xuICAgIHdoaWxlIChwYXJlbnQucGFyZW50RWxlbWVudCAhPT0gcm9vdEVsKCkpIHtcbiAgICAgIGlmIChwYXJlbnQucGFyZW50RWxlbWVudCA9PT0gbnVsbCkgYnJlYWs7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudCBhcyBhbnk7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiICYmIHBhcmVudCA9PT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJJdCBzZWVtcyBsaWtlIHdlIGNvdWxkIG5vdCBmaW5kIGEgcmVsYXRpb24gYmV0d2VlbiB0aGlzIGVsZW1lbnQgYW5kIHRoZSByb290IGxpc3QuIEFyZSB5b3UgdXNpbmcgcG9ydGFscyBtYXliZT9cIlxuICAgICAgKTtcbiAgICByZXR1cm4gcGFyZW50O1xuICB9O1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNocmlua1RvT25PcmRlcilcbiAgICAgIHJvb3RFbCgpLnN0eWxlLnNldFByb3BlcnR5KFwiLS1zaHJpbmstdG9cIiwgYCR7c2hyaW5rVG9Pbk9yZGVyfXB4YCk7XG4gIH0sIFtzaHJpbmtUb09uT3JkZXJdKTtcblxuICBjb25zdCBjYWxjdWxhdGVSZW9yZGVyaW5nID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRocm90dGxlKChlOiBhbnksIGVsczogSFRNTERpdkVsZW1lbnRbXSwgY3VycmVudE9yZGVyOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgaWYgKGVscy5sZW5ndGggPiBjdXJyZW50T3JkZXIubGVuZ3RoIHx8ICFjdXJyZW50V29ya2luZ0tleS5jdXJyZW50KVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBwYXJlbnQgPSBmaW5kUGFyZW50RWxlbWVudChlLnRhcmdldCk7XG4gICAgICBjb25zdCBpbmRleE9mS2V5SW5DbGVhbk9yZGVyID0gZWxzLmluZGV4T2YocGFyZW50KTtcbiAgICAgIGNvbnN0IGtleU9mVGhlT3ZlckVsZW1lbnQgPSBjdXJyZW50T3JkZXJbaW5kZXhPZktleUluQ2xlYW5PcmRlcl07XG4gICAgICBjb25zdCBpc0RyYWdnaW5nT3duRWxlbWVudCA9XG4gICAgICAgIGN1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnQgPT09IGtleU9mVGhlT3ZlckVsZW1lbnQ7XG4gICAgICBpZiAoaW5kZXhPZktleUluQ2xlYW5PcmRlciA9PT0gLTEgfHwga2V5T2ZUaGVPdmVyRWxlbWVudCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWlzRHJhZ2dpbmdPd25FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHsgaXNBZnRlciwgaXNCZWZvcmUgfSA9ICgoKSA9PiB7XG4gICAgICAgICAgaWYgKG1vZGUgPT09IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZS5UV09fRElNRU5TSU9OUykge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tTGVmdCA9IGUub2Zmc2V0WDtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoT2ZFbCA9IHBhcmVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IHdpZHRoT2ZFbCAqIDAuMjU7XG4gICAgICAgICAgICBjb25zdCBpc0FmdGVyID0gZGlzdGFuY2VGcm9tTGVmdCA+IHdpZHRoT2ZFbCAtIG9mZnNldDtcbiAgICAgICAgICAgIGNvbnN0IGlzQmVmb3JlID0gZGlzdGFuY2VGcm9tTGVmdCA8IG9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiB7IGlzQWZ0ZXIsIGlzQmVmb3JlIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbVRvcCA9IGUub2Zmc2V0WTtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodE9mRWwgPSBwYXJlbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaGVpZ2h0T2ZFbCAqIDAuMjU7XG4gICAgICAgICAgICBjb25zdCBpc0FmdGVyID0gZGlzdGFuY2VGcm9tVG9wID4gaGVpZ2h0T2ZFbCAtIG9mZnNldDtcbiAgICAgICAgICAgIGNvbnN0IGlzQmVmb3JlID0gZGlzdGFuY2VGcm9tVG9wIDwgb2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIHsgaXNBZnRlciwgaXNCZWZvcmUgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKCk7XG5cbiAgICAgICAgY29uc3QgY2hlY2tJZkNhbk1vdmUgPSAoa2V5T2ZPdmVyRWxlbWVudD86IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBrZXlPZk92ZXJFbGVtZW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGtleU9mT3ZlckVsZW1lbnQgIT09IGN1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnRcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBpbmRleE9mVGhlTmV3RWxlbWVudCA9XG4gICAgICAgICAgaW5kZXhPZktleUluQ2xlYW5PcmRlciArIChpc0FmdGVyID8gMSA6IC0xKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkVHJpZ2dlclJlb3JkZXJpbmcgPVxuICAgICAgICAgIChpc0FmdGVyIHx8IGlzQmVmb3JlKSAmJlxuICAgICAgICAgIGNoZWNrSWZDYW5Nb3ZlKGN1cnJlbnRPcmRlcltpbmRleE9mVGhlTmV3RWxlbWVudF0pO1xuICAgICAgICBpZiAoc2hvdWxkVHJpZ2dlclJlb3JkZXJpbmcpIHtcbiAgICAgICAgICBzZXRPcmRlcigocCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNJbmRleCA9IGN1cnJlbnRPcmRlci5pbmRleE9mKFxuICAgICAgICAgICAgICBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50IVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZLZXlJblByb3ZpZGVkT3JkZXIgPVxuICAgICAgICAgICAgICBjbGVhbktleXMocCkuaW5kZXhPZihrZXlPZlRoZU92ZXJFbGVtZW50KTtcbiAgICAgICAgICAgIGxldCBpbmRleE9mVGhlTmV3RWxlbWVudCA9XG4gICAgICAgICAgICAgIGluZGV4T2ZLZXlJblByb3ZpZGVkT3JkZXIgKyAoaXNCZWZvcmUgPyAtMSA6IDApO1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzSW5kZXggPiBpbmRleE9mVGhlTmV3RWxlbWVudCkgaW5kZXhPZlRoZU5ld0VsZW1lbnQrKztcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyV2l0aG91dEN1cnJlbnQgPSBwLmZpbHRlcigoYSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoYS5zdGFydHNXaXRoKGAke2N1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnR9O2ApKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBhICE9PSBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBvcmRlcldpdGhvdXRDdXJyZW50LnNwbGljZShcbiAgICAgICAgICAgICAgaW5kZXhPZlRoZU5ld0VsZW1lbnQsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIGAke2N1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnR9OyR7RGF0ZS5ub3coKX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIG9yZGVyV2l0aG91dEN1cnJlbnQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAxMDAwIC8gNjApO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiByZWdpc3Rlckxpc3RlbmVycygpIHtcbiAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkhLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgY29uc3QgY2FsY3VsYXRlUmVvcmRlcmluZ0NhbGwgPSAoZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkhLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgICBjYWxjdWxhdGVSZW9yZGVyaW5nKGUsIGVscywgY2xlYW5PcmRlcik7XG4gICAgICB9O1xuICAgICAgZm9yIChsZXQgZWwgb2YgZWxzKVxuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIGNhbGN1bGF0ZVJlb3JkZXJpbmdDYWxsKTtcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgZWwgb2YgZWxzKVxuICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgY2FsY3VsYXRlUmVvcmRlcmluZ0NhbGwpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PT0gT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlLlZFUlRJQ0FMKSB7XG4gICAgICByZXR1cm4gcmVnaXN0ZXJMaXN0ZW5lcnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkO1xuICAgICAgbGV0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdW5zdWJzY3JpYmUgPSByZWdpc3Rlckxpc3RlbmVycygpO1xuICAgICAgfSwgMjUwKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgaWYgKHVuc3Vic2NyaWJlKSB1bnN1YnNjcmliZSgpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtjbGVhbk9yZGVyXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoXCJvbkNoYW5nZUtleU9yZGVyXCIgaW4gcHJvcHMpIHByb3BzLm9uQ2hhbmdlS2V5T3JkZXIoY2xlYW5LZXlzKF9vcmRlcikpO1xuICB9LCBbX29yZGVyXSk7XG5cbiAgY29uc3QgY2xlYW5PcmRlclJlZiA9IHVzZVJlZihjbGVhbk9yZGVyKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjbGVhbk9yZGVyUmVmLmN1cnJlbnQgPSBjbGVhbk9yZGVyO1xuICB9LCBbY2xlYW5PcmRlcl0pO1xuICBjb25zdCBvbkFuY2hvckNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgdGFyZ2V0OiBhbmNob3IgfTogUGljazxNb3VzZUV2ZW50LCBcInRhcmdldFwiPikgPT4ge1xuICAgICAgbGV0IG9mZnNldDogW3g6IG51bWJlciwgeTogbnVtYmVyXTtcbiAgICAgIGNvbnN0IG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yID0gZmluZFBhcmVudEVsZW1lbnQoXG4gICAgICAgIGFuY2hvciBhcyBIVE1MRGl2RWxlbWVudFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGJveCA9IG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgZWxzID0gQXJyYXkuZnJvbShyb290RWwoKSEuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W107XG4gICAgICBjb25zdCBlbEluZGV4ID0gZWxzLmluZGV4T2Yob3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IpO1xuXG4gICAgICBjb25zdCBjbG9uZSA9IG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLmNsb25lTm9kZShcbiAgICAgICAgdHJ1ZVxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGN1cnJlbnRDbG9uZS5jdXJyZW50ID0gY2xvbmU7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIilcbiAgICAgICAgY2xvbmUuc2V0QXR0cmlidXRlKFwiZGF0YS10ZXN0aWRcIiwgXCJvcmRlcmFibGUtbGlzdC1jbG9uZVwiKTtcbiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZShcImRhdGEtb3JkZXJhYmxlaWRcIiwgXCJvcmRlcmFibGUtbGlzdC1jbG9uZVwiKTtcbiAgICAgIGNsb25lLnN0eWxlLndpZHRoID0gYCR7Ym94LndpZHRofXB4YDtcbiAgICAgIGNsb25lLnN0eWxlLmhlaWdodCA9IGAke2JveC5oZWlnaHR9cHhgO1xuICAgICAgY2xvbmUuc3R5bGUudG9wID0gYCR7Ym94LnRvcH1weGA7XG4gICAgICBjbG9uZS5zdHlsZS5sZWZ0ID0gYCR7Ym94LmxlZnR9cHhgO1xuICAgICAgY2xvbmUuY2xhc3NMaXN0LmFkZChTdHlsZXMuY2xvbmUpO1xuICAgICAgaWYgKHNocmlua1RvT25PcmRlcikgY2xvbmUuc3R5bGUubWF4SGVpZ2h0ID0gYCR7Ym94LmhlaWdodH1weGA7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKGNsb25lQ2xhc3NOYW1lKSBjbG9uZS5jbGFzc0xpc3QuYWRkKGNsb25lQ2xhc3NOYW1lKTtcbiAgICAgICAgaWYgKHNocmlua1RvT25PcmRlcikgY2xvbmUuc3R5bGUubWF4SGVpZ2h0ID0gYCR7c2hyaW5rVG9Pbk9yZGVyfXB4YDtcbiAgICAgIH0sIDApO1xuXG4gICAgICBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5jbGFzc0xpc3QuYWRkKFN0eWxlcy5jdXJyZW50T3JkZXJpbmcpO1xuICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMudmlzaWJsZSk7XG5cbiAgICAgIGNvbnN0IG1vdmVtZW50Q29udHJvbCA9IChlOiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7IHg6IHgxLCB5OiB5MSB9ID1cbiAgICAgICAgICBcInRvdWNoZXNcIiBpbiBlID8geyB4OiBlLnRvdWNoZXNbMF0ucGFnZVgsIHk6IGUudG91Y2hlc1swXS5wYWdlWSB9IDogZTtcbiAgICAgICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IFt4MSAtIGJveC5sZWZ0LCB5MSAtIGJveC50b3BdO1xuXG4gICAgICAgIGNvbnN0IFtvZmZzZXRYLCBvZmZzZXRZXSA9IG9mZnNldDtcbiAgICAgICAgY2xvbmUuc3R5bGUudG9wID0gYCR7eTEgLSBvZmZzZXRZfXB4YDtcbiAgICAgICAgY2xvbmUuc3R5bGUubGVmdCA9IGAke3gxIC0gb2Zmc2V0WH1weGA7XG4gICAgICB9O1xuXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNsb25lKTtcbiAgICAgIGNvbnN0IGRlbGV0ZUNsb25lID0gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBtb3ZlbWVudENvbnRyb2wpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCBtb3ZlbWVudENvbnRyb2wpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIGRlbGV0ZUNsb25lKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGRlbGV0ZUNsb25lKTtcbiAgICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3Iuc3R5bGUudmlzaWJpbGl0eSA9IFwiaW5pdGlhbFwiO1xuICAgICAgICBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy51bnNlbGVjdGFibGUpO1xuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgZWxzID0gQXJyYXkuZnJvbShyb290RWwoKSEuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W107XG4gICAgICAgICAgY29uc3QgZWxJbnZpc2libGUgPSBlbHMuZmluZChcbiAgICAgICAgICAgIChhKSA9PlxuICAgICAgICAgICAgICAhYS5jbGFzc0xpc3QuY29udGFpbnMoU3R5bGVzLnZpc2libGUpICYmXG4gICAgICAgICAgICAgIGEuc3R5bGUubWF4SGVpZ2h0ICE9PSBcIjBweFwiXG4gICAgICAgICAgKSE7XG4gICAgICAgICAgaWYgKHNocmlua1RvT25PcmRlcikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBlbEludmlzaWJsZS5sYXN0RWxlbWVudENoaWxkIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICAgICAgY2hpbGQuc3R5bGUubWF4SGVpZ2h0ID0gYCR7Y2hpbGQuc2Nyb2xsSGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIGNoaWxkLmNsYXNzTGlzdC5hZGQoU3R5bGVzLnRyYW5zaXRpb25IZWlnaHQpO1xuICAgICAgICAgICAgY29uc3Qgb25FbmQgPSBvd25FdmVudCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNoaWxkLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIG9uRW5kKTtcbiAgICAgICAgICAgICAgY2hpbGQuc3R5bGUubWF4SGVpZ2h0ID0gYGluaXRpYWxgO1xuICAgICAgICAgICAgICBjaGlsZC5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy50cmFuc2l0aW9uSGVpZ2h0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2hpbGQuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgb25FbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBib3ggPSBlbEludmlzaWJsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICBmdW5jdGlvbiBjbGVhblVwKCkge1xuICAgICAgICAgICAgaWYgKHNocmlua1RvT25PcmRlcikge1xuICAgICAgICAgICAgICByb290RWwoKS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInBhZGRpbmctdG9wXCIpO1xuICAgICAgICAgICAgICByb290RWwoKS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcIm1pbi1oZWlnaHRcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50RW1pdHRlci5kaXNwYXRjaGVyKFwib3JkZXItc3RvcFwiKTtcbiAgICAgICAgICAgIHJvb3RFbCgpLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLm9yZGVyaW5nKTtcbiAgICAgICAgICAgIGlmIChyZW9yZGVyaW5nQ2xhc3NOYW1lKVxuICAgICAgICAgICAgICByb290RWwoKS5jbGFzc0xpc3QucmVtb3ZlKHJlb3JkZXJpbmdDbGFzc05hbWUpO1xuICAgICAgICAgICAgZm9yIChsZXQgZWwgb2YgZWxzKSBlbC5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy52aXNpYmxlKTtcbiAgICAgICAgICAgIGNsb25lLnJlbW92ZSgpO1xuICAgICAgICAgICAgY3VycmVudENsb25lLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgZm9yIChsZXQgZWwgb2YgQXJyYXkuZnJvbShlbEludmlzaWJsZS5jaGlsZHJlbikgYXMgSFRNTERpdkVsZW1lbnRbXSlcbiAgICAgICAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gXCJcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY2xvbmUuc3R5bGUudG9wLnN0YXJ0c1dpdGgoTWF0aC5mbG9vcihib3gudG9wKS50b1N0cmluZygpKSAmJlxuICAgICAgICAgICAgY2xvbmUuc3R5bGUubGVmdC5zdGFydHNXaXRoKE1hdGguZmxvb3IoYm94LmxlZnQpLnRvU3RyaW5nKCkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjbGVhblVwKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsb25lLnN0eWxlLnRvcCA9IGAke2JveC50b3B9cHhgO1xuICAgICAgICAgICAgY2xvbmUuc3R5bGUubGVmdCA9IGAke2JveC5sZWZ0fXB4YDtcbiAgICAgICAgICAgIGNsb25lLnN0eWxlLnRyYW5zaXRpb24gPSBgdG9wIDUwMG1zIGxpbmVhciwgbGVmdCA1MDBtcyBsaW5lYXJgO1xuICAgICAgICAgICAgY2xvbmUuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICBjbGVhblVwKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBmb3IgKGxldCBlbCBvZiBlbHMpIHtcbiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZChTdHlsZXMudmlzaWJsZSk7XG4gICAgICB9XG4gICAgICBpZiAoc2hyaW5rVG9Pbk9yZGVyKSB7XG4gICAgICAgIGZvciAobGV0IGVsIG9mIGVscykgZWwuc3R5bGUubWF4SGVpZ2h0ID0gYCR7ZWwuc2Nyb2xsSGVpZ2h0fXB4YDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SGVpZ2h0ID0gZWxJbmRleCAqIHNocmlua1RvT25PcmRlcjtcbiAgICAgICAgY29uc3QgY3VycmVudEhlaWdodCA9XG4gICAgICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3Iub2Zmc2V0VG9wIC0gZWxzWzBdLm9mZnNldFRvcDtcbiAgICAgICAgY29uc3QgcGFkZGluZ1RvcCA9IGN1cnJlbnRIZWlnaHQgLSB0YXJnZXRIZWlnaHQ7XG4gICAgICAgIHJvb3RFbCgpLnN0eWxlLnBhZGRpbmdUb3AgPSBgJHtwYWRkaW5nVG9wfXB4YDtcbiAgICAgICAgcm9vdEVsKCkuc3R5bGUubWluSGVpZ2h0ID0gYCR7cm9vdEVsKCkuY2xpZW50SGVpZ2h0fXB4YDtcbiAgICAgIH1cbiAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMudmlzaWJsZSk7XG4gICAgICByb290RWwoKS5jbGFzc0xpc3QuYWRkKFN0eWxlcy5vcmRlcmluZyk7XG4gICAgICBpZiAocmVvcmRlcmluZ0NsYXNzTmFtZSkgcm9vdEVsKCkuY2xhc3NMaXN0LmFkZChyZW9yZGVyaW5nQ2xhc3NOYW1lKTtcbiAgICAgIGN1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnQgPSBjbGVhbk9yZGVyUmVmLmN1cnJlbnRbZWxJbmRleF07XG4gICAgICBldmVudEVtaXR0ZXIuZGlzcGF0Y2hlcihcIm9yZGVyLXN0YXJ0XCIpO1xuICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChTdHlsZXMudW5zZWxlY3RhYmxlKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBkZWxldGVDbG9uZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBtb3ZlbWVudENvbnRyb2wpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCBkZWxldGVDbG9uZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCBtb3ZlbWVudENvbnRyb2wpO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50Q2xvbmUuY3VycmVudCkge1xuICAgICAgY29uc3QgZWxzID0gQXJyYXkuZnJvbShyb290RWwoKSEuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W107XG4gICAgICBjb25zdCBlbEludmlzaWJsZSA9IGVscy5maW5kKFxuICAgICAgICAoYSkgPT5cbiAgICAgICAgICAhYS5jbGFzc0xpc3QuY29udGFpbnMoU3R5bGVzLnZpc2libGUpICYmIGEuc3R5bGUubWF4SGVpZ2h0ICE9PSBcIjBweFwiXG4gICAgICApITtcbiAgICAgIChlbEludmlzaWJsZS5jaGlsZHJlblswXSBhcyBIVE1MRGl2RWxlbWVudCkuc3R5bGUuaGVpZ2h0ID0gYCR7XG4gICAgICAgIGN1cnJlbnRDbG9uZS5jdXJyZW50IS5jbGllbnRIZWlnaHRcbiAgICAgIH1weGA7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgKGVsSW52aXNpYmxlLmNoaWxkcmVuWzFdIGFzIEhUTUxEaXZFbGVtZW50KS5zdHlsZS5oZWlnaHQgPSBgJHtcbiAgICAgICAgICBjdXJyZW50Q2xvbmUuY3VycmVudCEuY2xpZW50SGVpZ2h0XG4gICAgICAgIH1weGA7XG4gICAgICB9LCAxNTApO1xuICAgIH1cbiAgfSwgW2NsZWFuT3JkZXJdKTtcblxuICBjb25zdCB0b1NwcmVhZCA9IHsgLi4ucHJvcHMgfSBhcyBhbnk7XG4gIGRlbGV0ZSB0b1NwcmVhZC5rZXlPcmRlcjtcbiAgZGVsZXRlIHRvU3ByZWFkLm9uQ2hhbmdlS2V5T3JkZXI7XG5cbiAgY29uc3QgY2hpbGRyZW5Ub1JlbmRlciA9IFsuLi5jaGlsZHJlbl1cbiAgICAuZmlsdGVyKChhKSA9PiBjbGVhbk9yZGVyLmluY2x1ZGVzKGEua2V5IGFzIHN0cmluZykpXG4gICAgLnNvcnQoXG4gICAgICAoYSwgYikgPT5cbiAgICAgICAgY2xlYW5PcmRlci5pbmRleE9mKGEua2V5IGFzIHN0cmluZykgLVxuICAgICAgICBjbGVhbk9yZGVyLmluZGV4T2YoYi5rZXkgYXMgc3RyaW5nKVxuICAgIClcbiAgICAubWFwKChhOiBSZWFjdEVsZW1lbnQsIGkpID0+ICh7XG4gICAgICAuLi5hLFxuICAgICAga2V5OiBvcmRlcltpXSxcbiAgICB9KSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICByb290RWwoKSEuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIiwgKGUpID0+IHtcbiAgICAgIGNvbnN0IHJlbGF0ZWRBbmNob3IgPSBhbmNob3JzTGlzdC5maW5kKChhbmNob3IpID0+XG4gICAgICAgIGFuY2hvci5jb250YWlucyhlLnRhcmdldCBhcyBhbnkpXG4gICAgICApO1xuICAgICAgaWYgKHJlbGF0ZWRBbmNob3IpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkFuY2hvckNsaWNrKHtcbiAgICAgICAgICB0YXJnZXQ6IHJlbGF0ZWRBbmNob3IsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IG1vdmVDYiA9IHRocm90dGxlKChlOiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgdG91Y2ggPSBlLnRvdWNoZXNbMF07XG4gICAgICAgICAgY29uc3QgW3gsIHldID0gW3RvdWNoLmNsaWVudFgsIHRvdWNoLmNsaWVudFldO1xuICAgICAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W107XG4gICAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnRJZHggPSBlbHMuZmluZEluZGV4KChjLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWN0ID0gYz8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBpZiAoIXJlY3QpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiByZWN0LnRvcCA8IHkgJiYgcmVjdC50b3AgKyByZWN0LmhlaWdodCA+IHk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50SWR4ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgZWwgPSBlbHNbY3VycmVudEVsZW1lbnRJZHhdO1xuICAgICAgICAgICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY2FsY3VsYXRlUmVvcmRlcmluZyhcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRhcmdldDogZWwsXG4gICAgICAgICAgICAgICAgb2Zmc2V0WTogeSAtIHJlY3QudG9wLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbHMsXG4gICAgICAgICAgICAgIGNsZWFuT3JkZXJSZWYuY3VycmVudFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICAgIGNvbnN0IHQgPSBlLnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgY29uc3QgdG91Y2hNb3ZlQ2IgPSAoZTogVG91Y2hFdmVudCkgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IFRvdWNoRXZlbnQoZS50eXBlLCBlIGFzIGFueSkpO1xuICAgICAgICAgIG1vdmVDYihlKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVtb3ZlQ2IgPSAoZTogVG91Y2hFdmVudCkgPT4ge1xuICAgICAgICAgIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0b3VjaE1vdmVDYik7XG4gICAgICAgICAgdC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgcmVtb3ZlQ2IpO1xuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBUb3VjaEV2ZW50KGUudHlwZSwgZSBhcyBhbnkpKTtcbiAgICAgICAgfTtcbiAgICAgICAgdC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRvdWNoTW92ZUNiKTtcbiAgICAgICAgdC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgcmVtb3ZlQ2IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGJpbmRBbmNob3I6IChlbDogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCBvbkFuY2hvckNsaWNrKTtcbiAgICAgICAgYW5jaG9yc0xpc3QucHVzaChlbCk7XG4gICAgICB9LFxuICAgICAgdW5iaW5kQW5jaG9yOiAoZWw6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgb25BbmNob3JDbGljayk7XG4gICAgICAgIGFuY2hvcnNMaXN0LnNwbGljZShhbmNob3JzTGlzdC5pbmRleE9mKGVsKSwgMSk7XG4gICAgICB9LFxuICAgICAgb246IGV2ZW50RW1pdHRlci5zdWJzY3JpYmVyLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8T3JkZXJhYmxlTGlzdENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2V9PlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3Jvb3RSZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17YCR7U3R5bGVzLnJvb3R9ICR7Y2xhc3NOYW1lfSAke1xuICAgICAgICAgIHNocmlua1RvT25PcmRlciA/IFN0eWxlcy5zaHJpbmthYmxlIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgey4uLnRvU3ByZWFkfVxuICAgICAgPlxuICAgICAgICB7bW9kZSA9PT0gT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlLlZFUlRJQ0FMID8gKFxuICAgICAgICAgIDxBbmltYXRlZEVudHJhbmNlPntjaGlsZHJlblRvUmVuZGVyfTwvQW5pbWF0ZWRFbnRyYW5jZT5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8VW5jb250cm9sbGVkVHJhbnNpdGlvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtTdHlsZXMudHJhbnNpdGlvbn1cbiAgICAgICAgICAgIHRyYW5zaXRpb25UeXBlPXtUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuQ1VTVE9NfVxuICAgICAgICAgICAgY29uZmlnPXt7XG4gICAgICAgICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBcIlwiLFxuICAgICAgICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBcIlwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmb3J3YXJkOiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuc3R1YkVudGVyaW5nLFxuICAgICAgICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBUcmFuc2l0aW9uU3R5bGVzLmZhZGVPdXQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY29udGVudENsYXNzTmFtZT17YCR7Y2xhc3NOYW1lfWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEZyYWdtZW50IGtleT17b3JkZXJJZH0+XG4gICAgICAgICAgICAgIHtbLi4uY2hpbGRyZW5dXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoYSkgPT4gY2xlYW5PcmRlci5pbmNsdWRlcyhhLmtleSBhcyBzdHJpbmcpKVxuICAgICAgICAgICAgICAgIC5zb3J0KFxuICAgICAgICAgICAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuT3JkZXIuaW5kZXhPZihhLmtleSBhcyBzdHJpbmcpIC1cbiAgICAgICAgICAgICAgICAgICAgY2xlYW5PcmRlci5pbmRleE9mKGIua2V5IGFzIHN0cmluZylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLm1hcCgoYSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPEhlcm9XcmFwcGVyIGtleT17aX0gaWQ9e2Eua2V5IGFzIHN0cmluZ30+XG4gICAgICAgICAgICAgICAgICAgIHthfVxuICAgICAgICAgICAgICAgICAgPC9IZXJvV3JhcHBlcj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgPC9VbmNvbnRyb2xsZWRUcmFuc2l0aW9uPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9PcmRlcmFibGVMaXN0Q29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gSGVyb1dyYXBwZXIoeyBjaGlsZHJlbiwgaWQgfTogUHJvcHNXaXRoQ2hpbGRyZW48eyBpZDogc3RyaW5nIH0+KSB7XG4gIGNvbnN0IHsgaGVyb1JlZiB9ID0gdXNlSGVybyhpZCwgdW5kZWZpbmVkLCB7XG4gICAgb25IZXJvU3RhcnQ6IChfYywgX28sIHQpID0+IHtcbiAgICAgIHQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKS5mb3JFYWNoKFxuICAgICAgICAoaW1nKSA9PiAoaW1nLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiKVxuICAgICAgKTtcbiAgICB9LFxuICAgIG9uSGVyb0Nsb25lZChjbG9uZSkge1xuICAgICAgLy8gaWYgKCFjbG9uZS5jbGFzc0xpc3QuY29udGFpbnMoU3R5bGVzLnZpc2libGUpKSBjbG9uZS5zdHlsZS5vcGFjaXR5ID0gXCIwXCI7XG4gICAgfSxcbiAgICBvbkhlcm9FbmQ6ICgpID0+IHtcbiAgICAgIGlmIChoZXJvUmVmLmN1cnJlbnQpXG4gICAgICAgIGhlcm9SZWYuY3VycmVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpXG4gICAgICAgICAgLmZvckVhY2goKGltZykgPT4gKGltZy5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIikpO1xuICAgIH0sXG4gIH0pO1xuICByZXR1cm4gPGRpdiByZWY9e2hlcm9SZWZ9PntjaGlsZHJlbn08L2Rpdj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VPcmRlcmFibGVMaXN0QW5jaG9yKCkge1xuICBjb25zdCBhbmNob3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChPcmRlcmFibGVMaXN0Q29udGV4dCk7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjdHgpIHJldHVybjtcbiAgICBjb25zdCB7IGJpbmRBbmNob3IsIHVuYmluZEFuY2hvciB9ID0gY3R4O1xuICAgIGJpbmRBbmNob3IoYW5jaG9yUmVmLmN1cnJlbnQhKTtcbiAgICByZXR1cm4gKCkgPT4gdW5iaW5kQW5jaG9yKGFuY2hvclJlZi5jdXJyZW50ISk7XG4gIH0sIFtdKTtcbiAgcmV0dXJuIHtcbiAgICBhbmNob3JSZWY6IGN0eCA/IGFuY2hvclJlZiA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU9yZGVyYWJsZUV2ZW50cyhcbiAgZXZlbnRzOiB7XG4gICAgW2sgaW4gRXZlbnRzXTogKCkgPT4gdm9pZDtcbiAgfVxuKSB7XG4gIGNvbnN0IHsgb24gfSA9IHVzZUNvbnRleHQoT3JkZXJhYmxlTGlzdENvbnRleHQpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHVuc3Vic2NyaWJlcnM6IGFueVtdID0gW107XG4gICAgZm9yIChsZXQgZXZlbnROYW1lIGluIGV2ZW50cykge1xuICAgICAgdW5zdWJzY3JpYmVycy5wdXNoKG9uKGV2ZW50TmFtZSBhcyBFdmVudHMsIGV2ZW50c1tldmVudE5hbWUgYXMgRXZlbnRzXSkpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdW5zdWJzY3JpYmVycy5mb3JFYWNoKCh1KSA9PiB1KCkpO1xuICAgIH07XG4gIH0sIFtldmVudHNdKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsU0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsdUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFlQSxJQUFBSyxRQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxpQkFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsb0JBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNB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
436
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGhyb3R0bGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX1VuY29udHJvbGxlZFRyYW5zaXRpb24iLCJfVHJhbnNpdGlvbk1vZHVsZSIsIl91c2VIZXJvIiwiX0FuaW1hdGVkRW50cmFuY2UiLCJfVHJhbnNpdGlvbiIsIl9PcmRlcmFibGVMaXN0TW9kdWxlIiwiX3VzZUV2ZW50cyIsIl9vd25FdmVudCIsIl9leGNsdWRlZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFwcGx5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiT3JkZXJhYmxlTGlzdENvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlIiwiZXhwb3J0cyIsImNsZWFuS2V5cyIsIm1hcCIsImEiLCJzcGxpdCIsIk9yZGVyYWJsZUxpc3QiLCJfcmVmIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJtb2RlIiwiVkVSVElDQUwiLCJzaHJpbmtUb09uT3JkZXIiLCJyZW9yZGVyaW5nQ2xhc3NOYW1lIiwiY2xvbmVDbGFzc05hbWUiLCJwcm9wcyIsImF2YWlsYWJsZUtleXMiLCJrZXkiLCJhdmFpbGFibGVLZXlzRGVwIiwiam9pbiIsImluaXRpYWxpemVPcmRlciIsInVzZUNhbGxiYWNrIiwibWlzc2luZ09yZGVyS2V5cyIsImtleU9yZGVyIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWQiLCJjdXJyZW50IiwiYW5jaG9yc0xpc3QiLCJ1c2VSZWYiLCJldmVudEVtaXR0ZXIiLCJ1c2VFdmVudHMiLCJjdXJyZW50Q2xvbmUiLCJjdXJyZW50V29ya2luZ0tleSIsInJvb3RSZWYiLCJfb3JkZXIiLCJzZXRPcmRlciIsInVzZVN0YXRlIiwidXNlRWZmZWN0Iiwib3JkZXIiLCJ1c2VNZW1vIiwiY3VycmVudE9yZGVyIiwiY2xlYW5PcmRlciIsIm9yZGVySWQiLCJyb290RWwiLCJUV09fRElNRU5TSU9OUyIsImxhc3RFbGVtZW50Q2hpbGQiLCJmaW5kUGFyZW50RWxlbWVudCIsInRhcmdldCIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJFcnJvciIsInVzZUxheW91dEVmZmVjdCIsInN0eWxlIiwic2V0UHJvcGVydHkiLCJjb25jYXQiLCJjYWxjdWxhdGVSZW9yZGVyaW5nIiwidGhyb3R0bGUiLCJlbHMiLCJpbmRleE9mS2V5SW5DbGVhbk9yZGVyIiwia2V5T2ZUaGVPdmVyRWxlbWVudCIsImlzRHJhZ2dpbmdPd25FbGVtZW50IiwiaXNBZnRlciIsImlzQmVmb3JlIiwiZGlzdGFuY2VGcm9tTGVmdCIsIm9mZnNldFgiLCJ3aWR0aE9mRWwiLCJjbGllbnRXaWR0aCIsIm9mZnNldCIsImRpc3RhbmNlRnJvbVRvcCIsIm9mZnNldFkiLCJoZWlnaHRPZkVsIiwiY2xpZW50SGVpZ2h0IiwiY2hlY2tJZkNhbk1vdmUiLCJrZXlPZk92ZXJFbGVtZW50IiwiaW5kZXhPZlRoZU5ld0VsZW1lbnQiLCJzaG91bGRUcmlnZ2VyUmVvcmRlcmluZyIsInAiLCJwcmV2aW91c0luZGV4IiwiaW5kZXhPZktleUluUHJvdmlkZWRPcmRlciIsIm9yZGVyV2l0aG91dEN1cnJlbnQiLCJzdGFydHNXaXRoIiwic3BsaWNlIiwiRGF0ZSIsIm5vdyIsInJlZ2lzdGVyTGlzdGVuZXJzIiwiQXJyYXkiLCJmcm9tIiwiY2FsY3VsYXRlUmVvcmRlcmluZ0NhbGwiLCJlbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5zdWJzY3JpYmUiLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIm9uQ2hhbmdlS2V5T3JkZXIiLCJjbGVhbk9yZGVyUmVmIiwib25BbmNob3JDbGljayIsIl9yZWYyIiwiYW5jaG9yIiwib3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IiLCJib3giLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJlbEluZGV4IiwiY2xvbmUiLCJjbG9uZU5vZGUiLCJzZXRBdHRyaWJ1dGUiLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJTdHlsZXMiLCJtYXhIZWlnaHQiLCJjdXJyZW50T3JkZXJpbmciLCJyZW1vdmUiLCJ2aXNpYmxlIiwibW92ZW1lbnRDb250cm9sIiwieCIsIngxIiwieSIsInkxIiwidG91Y2hlcyIsInBhZ2VYIiwicGFnZVkiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImRlbGV0ZUNsb25lIiwid2luZG93IiwidmlzaWJpbGl0eSIsInVuc2VsZWN0YWJsZSIsImVsSW52aXNpYmxlIiwiZmluZCIsImNvbnRhaW5zIiwiY2hpbGQiLCJzY3JvbGxIZWlnaHQiLCJ0cmFuc2l0aW9uSGVpZ2h0Iiwib25FbmQiLCJvd25FdmVudCIsImNsZWFuVXAiLCJyZW1vdmVQcm9wZXJ0eSIsImRpc3BhdGNoZXIiLCJvcmRlcmluZyIsIk1hdGgiLCJmbG9vciIsInRvU3RyaW5nIiwidHJhbnNpdGlvbiIsInRhcmdldEhlaWdodCIsImN1cnJlbnRIZWlnaHQiLCJvZmZzZXRUb3AiLCJwYWRkaW5nVG9wIiwibWluSGVpZ2h0IiwidG9TcHJlYWQiLCJjaGlsZHJlblRvUmVuZGVyIiwic29ydCIsImIiLCJyZWxhdGVkQW5jaG9yIiwicHJldmVudERlZmF1bHQiLCJtb3ZlQ2IiLCJ0b3VjaCIsImNsaWVudFgiLCJjbGllbnRZIiwiY3VycmVudEVsZW1lbnRJZHgiLCJmaW5kSW5kZXgiLCJjIiwicmVjdCIsInRvdWNoTW92ZUNiIiwic3RvcFByb3BhZ2F0aW9uIiwiZGlzcGF0Y2hFdmVudCIsIlRvdWNoRXZlbnQiLCJ0eXBlIiwicmVtb3ZlQ2IiLCJiaW5kQW5jaG9yIiwidW5iaW5kQW5jaG9yIiwib24iLCJzdWJzY3JpYmVyIiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIiwicmVmIiwicm9vdCIsInNocmlua2FibGUiLCJ0cmFuc2l0aW9uVHlwZSIsIlRyYW5zaXRpb25BbmltYXRpb25UeXBlcyIsIkNVU1RPTSIsImNvbmZpZyIsImJhY2t3YXJkIiwiZWxlbWVudEVudGVyaW5nIiwiZWxlbWVudEV4aXRpbmciLCJmb3J3YXJkIiwic3R1YkVudGVyaW5nIiwiVHJhbnNpdGlvblN0eWxlcyIsImZhZGVPdXQiLCJjb250ZW50Q2xhc3NOYW1lIiwiRnJhZ21lbnQiLCJIZXJvV3JhcHBlciIsImlkIiwiX3JlZjMiLCJoZXJvUmVmIiwidXNlSGVybyIsIm9uSGVyb1N0YXJ0IiwiX2MiLCJfbyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpbWciLCJvbkhlcm9DbG9uZWQiLCJvbkhlcm9FbmQiLCJ1c2VPcmRlcmFibGVMaXN0QW5jaG9yIiwiYW5jaG9yUmVmIiwiY3R4IiwidXNlQ29udGV4dCIsInVzZU9yZGVyYWJsZUV2ZW50cyIsImV2ZW50cyIsInVuc3Vic2NyaWJlcnMiLCJldmVudE5hbWUiLCJ1Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvT3JkZXJhYmxlTGlzdC9PcmRlcmFibGVMaXN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xuaW1wb3J0IFJlYWN0LCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIERldGFpbGVkSFRNTFByb3BzLFxuICBGcmFnbWVudCxcbiAgSFRNTEF0dHJpYnV0ZXMsXG4gIFByb3BzV2l0aENoaWxkcmVuLFxuICBSZWFjdEVsZW1lbnQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgVW5jb250cm9sbGVkVHJhbnNpdGlvbiBmcm9tIFwiLi4vVW5jb250cm9sbGVkVHJhbnNpdGlvblwiO1xuaW1wb3J0IFRyYW5zaXRpb25TdHlsZXMgZnJvbSBcIi4uL1RyYW5zaXRpb24vVHJhbnNpdGlvbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHVzZUhlcm8gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUhlcm9cIjtcbmltcG9ydCBBbmltYXRlZEVudHJhbmNlIGZyb20gXCIuLi9BbmltYXRlZEVudHJhbmNlXCI7XG5pbXBvcnQgeyBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMgfSBmcm9tIFwiLi4vVHJhbnNpdGlvblwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi9PcmRlcmFibGVMaXN0Lm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdXNlRXZlbnRzIGZyb20gXCIuLi8uLi9ob29rcy91dGlsaXR5L3VzZUV2ZW50c1wiO1xuaW1wb3J0IG93bkV2ZW50IGZyb20gXCIuLi8uLi91dGlscy9vd25FdmVudFwiO1xuXG50eXBlIEV2ZW50cyA9IFwib3JkZXItc3RvcFwiIHwgXCJvcmRlci1zdGFydFwiO1xuXG5jb25zdCBPcmRlcmFibGVMaXN0Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8e1xuICBiaW5kQW5jaG9yOiAoYmluZEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkO1xuICB1bmJpbmRBbmNob3I6IChiaW5kRWxlbWVudDogSFRNTERpdkVsZW1lbnQpID0+IHZvaWQ7XG4gIG9uOiAoZXZlbnROYW1lOiBFdmVudHMsIGNiOiAoKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xufT4obnVsbCBhcyBhbnkpO1xuXG5leHBvcnQgZW51bSBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUge1xuICBWRVJUSUNBTCA9IFwidlwiLFxuICBUV09fRElNRU5TSU9OUyA9IFwiaHZcIixcbn1cblxuZnVuY3Rpb24gY2xlYW5LZXlzKGtleXM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiBrZXlzLm1hcCgoYSkgPT4gYS5zcGxpdChcIjtcIilbMF0pO1xufVxuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHJlY2VpdmVzIGEgbGlzdCBvZiBrZXllZCBlbGVtZW50cyBhbmQgb3JkZXJzIGl0IGJhc2VkIG9mIHRoZSBvcmRlciBwcm92aWRlZCB2aWEgdGhlIHByb3AgXCJrZXlPcmRlclwiXG4gKiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBPcmRlcmFibGVMaXN0KHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSA9IFwiXCIsXG4gIG1vZGUgPSBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUuVkVSVElDQUwsXG4gIHNocmlua1RvT25PcmRlcixcbiAgcmVvcmRlcmluZ0NsYXNzTmFtZSxcbiAgY2xvbmVDbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdEVsZW1lbnRbXTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBtb2RlPzogT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlO1xuICAvKipcbiAgICogSWYgcHJvdmlkZWQsIG1ha2VzIHRoZSBlbGVtZW50cyBzaHJpbmsgdG8gdGhpcyB2YWx1ZSBpbiBweCB3aGVuIG9yZGVyaW5nIGVsZW1lbnRzXG4gICAqL1xuICBzaHJpbmtUb09uT3JkZXI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgY2xhc3MgdG8gYXBwbHkgd2hlbiByZW9yZGVyaW5nXG4gICAqL1xuICByZW9yZGVyaW5nQ2xhc3NOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBjbG9uZSBlbFxuICAgKi9cbiAgY2xvbmVDbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgKFxuICB8IHtcbiAgICAgIGtleU9yZGVyPzogc3RyaW5nW107XG4gICAgICBvbkNoYW5nZUtleU9yZGVyOiAobmV3T3JkZXI6IHN0cmluZ1tdKSA9PiB2b2lkO1xuICAgIH1cbiAgfCB7XG4gICAgICBjdXJyZW50T3JkZXI/OiBzdHJpbmdbXTtcbiAgICB9XG4pICZcbiAgRGV0YWlsZWRIVE1MUHJvcHM8SFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBIVE1MRGl2RWxlbWVudD4pIHtcbiAgY29uc3QgYXZhaWxhYmxlS2V5cyA9IGNoaWxkcmVuLm1hcCgoYSkgPT4gYS5rZXkgYXMgc3RyaW5nKTtcbiAgY29uc3QgYXZhaWxhYmxlS2V5c0RlcCA9IGF2YWlsYWJsZUtleXMuam9pbihcIixcIik7XG4gIGNvbnN0IGluaXRpYWxpemVPcmRlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBtaXNzaW5nT3JkZXJLZXlzID1cbiAgICAgIFwia2V5T3JkZXJcIiBpbiBwcm9wcyAmJiBwcm9wcy5rZXlPcmRlclxuICAgICAgICA/IGF2YWlsYWJsZUtleXMuZmlsdGVyKChhKSA9PiAhcHJvcHMua2V5T3JkZXIhLmluY2x1ZGVzKGEpKVxuICAgICAgICA6IFtdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIChcImtleU9yZGVyXCIgaW4gcHJvcHMgJiYgcHJvcHMua2V5T3JkZXJcbiAgICAgICAgPyBbLi4ucHJvcHMua2V5T3JkZXIsIC4uLm1pc3NpbmdPcmRlcktleXNdXG4gICAgICAgIDogdW5kZWZpbmVkKSB8fCBhdmFpbGFibGVLZXlzXG4gICAgKTtcbiAgfSwgW2F2YWlsYWJsZUtleXNEZXAsIChwcm9wcyBhcyBhbnkpLmtleU9yZGVyXSk7XG4gIGNvbnN0IHsgY3VycmVudDogYW5jaG9yc0xpc3QgfSA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudFtdPihbXSk7XG4gIGNvbnN0IGV2ZW50RW1pdHRlciA9IHVzZUV2ZW50czxFdmVudHMsIHsgW2sgaW4gRXZlbnRzXTogW10gfT4oKTtcbiAgY29uc3QgY3VycmVudENsb25lID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGN1cnJlbnRXb3JraW5nS2V5ID0gdXNlUmVmPHN0cmluZz4odW5kZWZpbmVkKTtcbiAgY29uc3Qgcm9vdFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCBhcyBhbnkpO1xuICBjb25zdCBbX29yZGVyLCBzZXRPcmRlcl0gPSB1c2VTdGF0ZShpbml0aWFsaXplT3JkZXIpO1xuICB1c2VFZmZlY3QoKCkgPT4gc2V0T3JkZXIoaW5pdGlhbGl6ZU9yZGVyKCkpLCBbaW5pdGlhbGl6ZU9yZGVyXSk7XG5cbiAgY29uc3Qgb3JkZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgXCJjdXJyZW50T3JkZXJcIiBpbiBwcm9wcyA/IHByb3BzLmN1cnJlbnRPcmRlciB8fCBfb3JkZXIgOiBfb3JkZXJcbiAgICApLmZpbHRlcigobykgPT4gby5pbmNsdWRlcyhcIjtcIikgfHwgYXZhaWxhYmxlS2V5cy5pbmNsdWRlcyhvKSk7XG4gIH0sIFsocHJvcHMgYXMgYW55KS5jdXJyZW50T3JkZXIsIF9vcmRlciwgYXZhaWxhYmxlS2V5c0RlcF0pO1xuICBjb25zdCBjbGVhbk9yZGVyID0gdXNlTWVtbygoKSA9PiBvcmRlci5tYXAoKGEpID0+IGEuc3BsaXQoXCI7XCIpWzBdKSwgW29yZGVyXSk7XG4gIGNvbnN0IG9yZGVySWQgPSB1c2VNZW1vKCgpID0+IFwia2V5LVwiICsgY2xlYW5PcmRlci5qb2luKFwiXCIpLCBbY2xlYW5PcmRlcl0pO1xuICBmdW5jdGlvbiByb290RWwoKSB7XG4gICAgaWYgKG1vZGUgPT09IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZS5UV09fRElNRU5TSU9OUylcbiAgICAgIHJldHVybiByb290UmVmLmN1cnJlbnQhLmxhc3RFbGVtZW50Q2hpbGQhXG4gICAgICAgIC5sYXN0RWxlbWVudENoaWxkISBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICByZXR1cm4gcm9vdFJlZi5jdXJyZW50ISBhcyBIVE1MRGl2RWxlbWVudDtcbiAgfVxuXG4gIGNvbnN0IGZpbmRQYXJlbnRFbGVtZW50ID0gKHRhcmdldDogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICBsZXQgcGFyZW50OiBIVE1MRGl2RWxlbWVudCA9IHRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICB3aGlsZSAocGFyZW50LnBhcmVudEVsZW1lbnQgIT09IHJvb3RFbCgpKSB7XG4gICAgICBpZiAocGFyZW50LnBhcmVudEVsZW1lbnQgPT09IG51bGwpIGJyZWFrO1xuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQgYXMgYW55O1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIiAmJiBwYXJlbnQgPT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiSXQgc2VlbXMgbGlrZSB3ZSBjb3VsZCBub3QgZmluZCBhIHJlbGF0aW9uIGJldHdlZW4gdGhpcyBlbGVtZW50IGFuZCB0aGUgcm9vdCBsaXN0LiBBcmUgeW91IHVzaW5nIHBvcnRhbHMgbWF5YmU/XCJcbiAgICAgICk7XG4gICAgcmV0dXJuIHBhcmVudDtcbiAgfTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaHJpbmtUb09uT3JkZXIpXG4gICAgICByb290RWwoKS5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tc2hyaW5rLXRvXCIsIGAke3Nocmlua1RvT25PcmRlcn1weGApO1xuICB9LCBbc2hyaW5rVG9Pbk9yZGVyXSk7XG5cbiAgY29uc3QgY2FsY3VsYXRlUmVvcmRlcmluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aHJvdHRsZSgoZTogYW55LCBlbHM6IEhUTUxEaXZFbGVtZW50W10sIGN1cnJlbnRPcmRlcjogc3RyaW5nW10pID0+IHtcbiAgICAgIGlmIChlbHMubGVuZ3RoID4gY3VycmVudE9yZGVyLmxlbmd0aCB8fCAhY3VycmVudFdvcmtpbmdLZXkuY3VycmVudClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY29uc3QgcGFyZW50ID0gZmluZFBhcmVudEVsZW1lbnQoZS50YXJnZXQpO1xuICAgICAgY29uc3QgaW5kZXhPZktleUluQ2xlYW5PcmRlciA9IGVscy5pbmRleE9mKHBhcmVudCk7XG4gICAgICBjb25zdCBrZXlPZlRoZU92ZXJFbGVtZW50ID0gY3VycmVudE9yZGVyW2luZGV4T2ZLZXlJbkNsZWFuT3JkZXJdO1xuICAgICAgY29uc3QgaXNEcmFnZ2luZ093bkVsZW1lbnQgPVxuICAgICAgICBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50ID09PSBrZXlPZlRoZU92ZXJFbGVtZW50O1xuICAgICAgaWYgKGluZGV4T2ZLZXlJbkNsZWFuT3JkZXIgPT09IC0xIHx8IGtleU9mVGhlT3ZlckVsZW1lbnQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFpc0RyYWdnaW5nT3duRWxlbWVudCkge1xuICAgICAgICBjb25zdCB7IGlzQWZ0ZXIsIGlzQmVmb3JlIH0gPSAoKCkgPT4ge1xuICAgICAgICAgIGlmIChtb2RlID09PSBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUuVFdPX0RJTUVOU0lPTlMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUxlZnQgPSBlLm9mZnNldFg7XG4gICAgICAgICAgICBjb25zdCB3aWR0aE9mRWwgPSBwYXJlbnQuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB3aWR0aE9mRWwgKiAwLjI1O1xuICAgICAgICAgICAgY29uc3QgaXNBZnRlciA9IGRpc3RhbmNlRnJvbUxlZnQgPiB3aWR0aE9mRWwgLSBvZmZzZXQ7XG4gICAgICAgICAgICBjb25zdCBpc0JlZm9yZSA9IGRpc3RhbmNlRnJvbUxlZnQgPCBvZmZzZXQ7XG4gICAgICAgICAgICByZXR1cm4geyBpc0FmdGVyLCBpc0JlZm9yZSB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21Ub3AgPSBlLm9mZnNldFk7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHRPZkVsID0gcGFyZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IGhlaWdodE9mRWwgKiAwLjI1O1xuICAgICAgICAgICAgY29uc3QgaXNBZnRlciA9IGRpc3RhbmNlRnJvbVRvcCA+IGhlaWdodE9mRWwgLSBvZmZzZXQ7XG4gICAgICAgICAgICBjb25zdCBpc0JlZm9yZSA9IGRpc3RhbmNlRnJvbVRvcCA8IG9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiB7IGlzQWZ0ZXIsIGlzQmVmb3JlIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuXG4gICAgICAgIGNvbnN0IGNoZWNrSWZDYW5Nb3ZlID0gKGtleU9mT3ZlckVsZW1lbnQ/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAga2V5T2ZPdmVyRWxlbWVudCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBrZXlPZk92ZXJFbGVtZW50ICE9PSBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgaW5kZXhPZlRoZU5ld0VsZW1lbnQgPVxuICAgICAgICAgIGluZGV4T2ZLZXlJbkNsZWFuT3JkZXIgKyAoaXNBZnRlciA/IDEgOiAtMSk7XG4gICAgICAgIGNvbnN0IHNob3VsZFRyaWdnZXJSZW9yZGVyaW5nID1cbiAgICAgICAgICAoaXNBZnRlciB8fCBpc0JlZm9yZSkgJiZcbiAgICAgICAgICBjaGVja0lmQ2FuTW92ZShjdXJyZW50T3JkZXJbaW5kZXhPZlRoZU5ld0VsZW1lbnRdKTtcbiAgICAgICAgaWYgKHNob3VsZFRyaWdnZXJSZW9yZGVyaW5nKSB7XG4gICAgICAgICAgc2V0T3JkZXIoKHApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSBjdXJyZW50T3JkZXIuaW5kZXhPZihcbiAgICAgICAgICAgICAgY3VycmVudFdvcmtpbmdLZXkuY3VycmVudCFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBpbmRleE9mS2V5SW5Qcm92aWRlZE9yZGVyID1cbiAgICAgICAgICAgICAgY2xlYW5LZXlzKHApLmluZGV4T2Yoa2V5T2ZUaGVPdmVyRWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgaW5kZXhPZlRoZU5ld0VsZW1lbnQgPVxuICAgICAgICAgICAgICBpbmRleE9mS2V5SW5Qcm92aWRlZE9yZGVyICsgKGlzQmVmb3JlID8gLTEgOiAwKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c0luZGV4ID4gaW5kZXhPZlRoZU5ld0VsZW1lbnQpIGluZGV4T2ZUaGVOZXdFbGVtZW50Kys7XG4gICAgICAgICAgICBjb25zdCBvcmRlcldpdGhvdXRDdXJyZW50ID0gcC5maWx0ZXIoKGEpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGEuc3RhcnRzV2l0aChgJHtjdXJyZW50V29ya2luZ0tleS5jdXJyZW50fTtgKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gYSAhPT0gY3VycmVudFdvcmtpbmdLZXkuY3VycmVudDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgb3JkZXJXaXRob3V0Q3VycmVudC5zcGxpY2UoXG4gICAgICAgICAgICAgIGluZGV4T2ZUaGVOZXdFbGVtZW50LFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICBgJHtjdXJyZW50V29ya2luZ0tleS5jdXJyZW50fTske0RhdGUubm93KCl9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBvcmRlcldpdGhvdXRDdXJyZW50O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMTAwMCAvIDYwKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gcmVnaXN0ZXJMaXN0ZW5lcnMoKSB7XG4gICAgICBjb25zdCBlbHMgPSBBcnJheS5mcm9tKHJvb3RFbCgpIS5jaGlsZHJlbikgYXMgSFRNTERpdkVsZW1lbnRbXTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZVJlb3JkZXJpbmdDYWxsID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBlbHMgPSBBcnJheS5mcm9tKHJvb3RFbCgpIS5jaGlsZHJlbikgYXMgSFRNTERpdkVsZW1lbnRbXTtcbiAgICAgICAgY2FsY3VsYXRlUmVvcmRlcmluZyhlLCBlbHMsIGNsZWFuT3JkZXIpO1xuICAgICAgfTtcbiAgICAgIGZvciAobGV0IGVsIG9mIGVscylcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBjYWxjdWxhdGVSZW9yZGVyaW5nQ2FsbCk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGVsIG9mIGVscylcbiAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIGNhbGN1bGF0ZVJlb3JkZXJpbmdDYWxsKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT09IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZS5WRVJUSUNBTCkge1xuICAgICAgcmV0dXJuIHJlZ2lzdGVyTGlzdGVuZXJzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB1bnN1YnNjcmliZTogKCkgPT4gdm9pZDtcbiAgICAgIGxldCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHVuc3Vic2NyaWJlID0gcmVnaXN0ZXJMaXN0ZW5lcnMoKTtcbiAgICAgIH0sIDI1MCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIGlmICh1bnN1YnNjcmliZSkgdW5zdWJzY3JpYmUoKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbY2xlYW5PcmRlcl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKFwib25DaGFuZ2VLZXlPcmRlclwiIGluIHByb3BzKSBwcm9wcy5vbkNoYW5nZUtleU9yZGVyKGNsZWFuS2V5cyhfb3JkZXIpKTtcbiAgfSwgW19vcmRlcl0pO1xuXG4gIGNvbnN0IGNsZWFuT3JkZXJSZWYgPSB1c2VSZWYoY2xlYW5PcmRlcik7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY2xlYW5PcmRlclJlZi5jdXJyZW50ID0gY2xlYW5PcmRlcjtcbiAgfSwgW2NsZWFuT3JkZXJdKTtcbiAgY29uc3Qgb25BbmNob3JDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHRhcmdldDogYW5jaG9yIH06IFBpY2s8TW91c2VFdmVudCwgXCJ0YXJnZXRcIj4pID0+IHtcbiAgICAgIGxldCBvZmZzZXQ6IFt4OiBudW1iZXIsIHk6IG51bWJlcl07XG4gICAgICBjb25zdCBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvciA9IGZpbmRQYXJlbnRFbGVtZW50KFxuICAgICAgICBhbmNob3IgYXMgSFRNTERpdkVsZW1lbnRcbiAgICAgICk7XG4gICAgICBjb25zdCBib3ggPSBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkhLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgY29uc3QgZWxJbmRleCA9IGVscy5pbmRleE9mKG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yKTtcblxuICAgICAgY29uc3QgY2xvbmUgPSBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5jbG9uZU5vZGUoXG4gICAgICAgIHRydWVcbiAgICAgICkgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBjdXJyZW50Q2xvbmUuY3VycmVudCA9IGNsb25lO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpXG4gICAgICAgIGNsb25lLnNldEF0dHJpYnV0ZShcImRhdGEtdGVzdGlkXCIsIFwib3JkZXJhYmxlLWxpc3QtY2xvbmVcIik7XG4gICAgICBjbG9uZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLW9yZGVyYWJsZWlkXCIsIFwib3JkZXJhYmxlLWxpc3QtY2xvbmVcIik7XG4gICAgICBjbG9uZS5zdHlsZS53aWR0aCA9IGAke2JveC53aWR0aH1weGA7XG4gICAgICBjbG9uZS5zdHlsZS5oZWlnaHQgPSBgJHtib3guaGVpZ2h0fXB4YDtcbiAgICAgIGNsb25lLnN0eWxlLnRvcCA9IGAke2JveC50b3B9cHhgO1xuICAgICAgY2xvbmUuc3R5bGUubGVmdCA9IGAke2JveC5sZWZ0fXB4YDtcbiAgICAgIGNsb25lLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmNsb25lKTtcbiAgICAgIGlmIChzaHJpbmtUb09uT3JkZXIpIGNsb25lLnN0eWxlLm1heEhlaWdodCA9IGAke2JveC5oZWlnaHR9cHhgO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChjbG9uZUNsYXNzTmFtZSkgY2xvbmUuY2xhc3NMaXN0LmFkZChjbG9uZUNsYXNzTmFtZSk7XG4gICAgICAgIGlmIChzaHJpbmtUb09uT3JkZXIpIGNsb25lLnN0eWxlLm1heEhlaWdodCA9IGAke3Nocmlua1RvT25PcmRlcn1weGA7XG4gICAgICB9LCAwKTtcblxuICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IuY2xhc3NMaXN0LmFkZChTdHlsZXMuY3VycmVudE9yZGVyaW5nKTtcbiAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLnZpc2libGUpO1xuXG4gICAgICBjb25zdCBtb3ZlbWVudENvbnRyb2wgPSAoZTogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyB4OiB4MSwgeTogeTEgfSA9XG4gICAgICAgICAgXCJ0b3VjaGVzXCIgaW4gZSA/IHsgeDogZS50b3VjaGVzWzBdLnBhZ2VYLCB5OiBlLnRvdWNoZXNbMF0ucGFnZVkgfSA6IGU7XG4gICAgICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSBbeDEgLSBib3gubGVmdCwgeTEgLSBib3gudG9wXTtcblxuICAgICAgICBjb25zdCBbb2Zmc2V0WCwgb2Zmc2V0WV0gPSBvZmZzZXQ7XG4gICAgICAgIGNsb25lLnN0eWxlLnRvcCA9IGAke3kxIC0gb2Zmc2V0WX1weGA7XG4gICAgICAgIGNsb25lLnN0eWxlLmxlZnQgPSBgJHt4MSAtIG9mZnNldFh9cHhgO1xuICAgICAgfTtcblxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICBjb25zdCBkZWxldGVDbG9uZSA9ICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgbW92ZW1lbnRDb250cm9sKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgbW92ZW1lbnRDb250cm9sKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCBkZWxldGVDbG9uZSk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBkZWxldGVDbG9uZSk7XG4gICAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLnN0eWxlLnZpc2liaWxpdHkgPSBcImluaXRpYWxcIjtcbiAgICAgICAgY3VycmVudFdvcmtpbmdLZXkuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMudW5zZWxlY3RhYmxlKTtcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkhLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgICAgIGNvbnN0IGVsSW52aXNpYmxlID0gZWxzLmZpbmQoXG4gICAgICAgICAgICAoYSkgPT5cbiAgICAgICAgICAgICAgIWEuY2xhc3NMaXN0LmNvbnRhaW5zKFN0eWxlcy52aXNpYmxlKSAmJlxuICAgICAgICAgICAgICBhLnN0eWxlLm1heEhlaWdodCAhPT0gXCIwcHhcIlxuICAgICAgICAgICkhO1xuICAgICAgICAgIGlmIChzaHJpbmtUb09uT3JkZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gZWxJbnZpc2libGUubGFzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgIGNoaWxkLnN0eWxlLm1heEhlaWdodCA9IGAke2NoaWxkLnNjcm9sbEhlaWdodH1weGA7XG4gICAgICAgICAgICBjaGlsZC5jbGFzc0xpc3QuYWRkKFN0eWxlcy50cmFuc2l0aW9uSGVpZ2h0KTtcbiAgICAgICAgICAgIGNvbnN0IG9uRW5kID0gb3duRXZlbnQoKCkgPT4ge1xuICAgICAgICAgICAgICBjaGlsZC5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCBvbkVuZCk7XG4gICAgICAgICAgICAgIGNoaWxkLnN0eWxlLm1heEhlaWdodCA9IGBpbml0aWFsYDtcbiAgICAgICAgICAgICAgY2hpbGQuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMudHJhbnNpdGlvbkhlaWdodCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNoaWxkLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIG9uRW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYm94ID0gZWxJbnZpc2libGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgZnVuY3Rpb24gY2xlYW5VcCgpIHtcbiAgICAgICAgICAgIGlmIChzaHJpbmtUb09uT3JkZXIpIHtcbiAgICAgICAgICAgICAgcm9vdEVsKCkuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJwYWRkaW5nLXRvcFwiKTtcbiAgICAgICAgICAgICAgcm9vdEVsKCkuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJtaW4taGVpZ2h0XCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBldmVudEVtaXR0ZXIuZGlzcGF0Y2hlcihcIm9yZGVyLXN0b3BcIik7XG4gICAgICAgICAgICByb290RWwoKS5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy5vcmRlcmluZyk7XG4gICAgICAgICAgICBpZiAocmVvcmRlcmluZ0NsYXNzTmFtZSlcbiAgICAgICAgICAgICAgcm9vdEVsKCkuY2xhc3NMaXN0LnJlbW92ZShyZW9yZGVyaW5nQ2xhc3NOYW1lKTtcbiAgICAgICAgICAgIGZvciAobGV0IGVsIG9mIGVscykgZWwuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMudmlzaWJsZSk7XG4gICAgICAgICAgICBjbG9uZS5yZW1vdmUoKTtcbiAgICAgICAgICAgIGN1cnJlbnRDbG9uZS5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIGZvciAobGV0IGVsIG9mIEFycmF5LmZyb20oZWxJbnZpc2libGUuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W10pXG4gICAgICAgICAgICAgIGVsLnN0eWxlLmhlaWdodCA9IFwiXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNsb25lLnN0eWxlLnRvcC5zdGFydHNXaXRoKE1hdGguZmxvb3IoYm94LnRvcCkudG9TdHJpbmcoKSkgJiZcbiAgICAgICAgICAgIGNsb25lLnN0eWxlLmxlZnQuc3RhcnRzV2l0aChNYXRoLmZsb29yKGJveC5sZWZ0KS50b1N0cmluZygpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2xlYW5VcCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbG9uZS5zdHlsZS50b3AgPSBgJHtib3gudG9wfXB4YDtcbiAgICAgICAgICAgIGNsb25lLnN0eWxlLmxlZnQgPSBgJHtib3gubGVmdH1weGA7XG4gICAgICAgICAgICBjbG9uZS5zdHlsZS50cmFuc2l0aW9uID0gYHRvcCA1MDBtcyBsaW5lYXIsIGxlZnQgNTAwbXMgbGluZWFyYDtcbiAgICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgY2xlYW5VcCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgZm9yIChsZXQgZWwgb2YgZWxzKSB7XG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoU3R5bGVzLnZpc2libGUpO1xuICAgICAgfVxuICAgICAgaWYgKHNocmlua1RvT25PcmRlcikge1xuICAgICAgICBmb3IgKGxldCBlbCBvZiBlbHMpIGVsLnN0eWxlLm1heEhlaWdodCA9IGAke2VsLnNjcm9sbEhlaWdodH1weGA7XG4gICAgICAgIGNvbnN0IHRhcmdldEhlaWdodCA9IGVsSW5kZXggKiBzaHJpbmtUb09uT3JkZXI7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPVxuICAgICAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLm9mZnNldFRvcCAtIGVsc1swXS5vZmZzZXRUb3A7XG4gICAgICAgIGNvbnN0IHBhZGRpbmdUb3AgPSBjdXJyZW50SGVpZ2h0IC0gdGFyZ2V0SGVpZ2h0O1xuICAgICAgICByb290RWwoKS5zdHlsZS5wYWRkaW5nVG9wID0gYCR7cGFkZGluZ1RvcH1weGA7XG4gICAgICAgIHJvb3RFbCgpLnN0eWxlLm1pbkhlaWdodCA9IGAke3Jvb3RFbCgpLmNsaWVudEhlaWdodH1weGA7XG4gICAgICB9XG4gICAgICBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLnZpc2libGUpO1xuICAgICAgcm9vdEVsKCkuY2xhc3NMaXN0LmFkZChTdHlsZXMub3JkZXJpbmcpO1xuICAgICAgaWYgKHJlb3JkZXJpbmdDbGFzc05hbWUpIHJvb3RFbCgpLmNsYXNzTGlzdC5hZGQocmVvcmRlcmluZ0NsYXNzTmFtZSk7XG4gICAgICBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50ID0gY2xlYW5PcmRlclJlZi5jdXJyZW50W2VsSW5kZXhdO1xuICAgICAgZXZlbnRFbWl0dGVyLmRpc3BhdGNoZXIoXCJvcmRlci1zdGFydFwiKTtcbiAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoU3R5bGVzLnVuc2VsZWN0YWJsZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgZGVsZXRlQ2xvbmUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgbW92ZW1lbnRDb250cm9sKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgZGVsZXRlQ2xvbmUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgbW92ZW1lbnRDb250cm9sKTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY3VycmVudENsb25lLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkhLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgY29uc3QgZWxJbnZpc2libGUgPSBlbHMuZmluZChcbiAgICAgICAgKGEpID0+XG4gICAgICAgICAgIWEuY2xhc3NMaXN0LmNvbnRhaW5zKFN0eWxlcy52aXNpYmxlKSAmJiBhLnN0eWxlLm1heEhlaWdodCAhPT0gXCIwcHhcIlxuICAgICAgKSE7XG4gICAgICAoZWxJbnZpc2libGUuY2hpbGRyZW5bMF0gYXMgSFRNTERpdkVsZW1lbnQpLnN0eWxlLmhlaWdodCA9IGAke1xuICAgICAgICBjdXJyZW50Q2xvbmUuY3VycmVudCEuY2xpZW50SGVpZ2h0XG4gICAgICB9cHhgO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIChlbEludmlzaWJsZS5jaGlsZHJlblsxXSBhcyBIVE1MRGl2RWxlbWVudCkuc3R5bGUuaGVpZ2h0ID0gYCR7XG4gICAgICAgICAgY3VycmVudENsb25lLmN1cnJlbnQhLmNsaWVudEhlaWdodFxuICAgICAgICB9cHhgO1xuICAgICAgfSwgMTUwKTtcbiAgICB9XG4gIH0sIFtjbGVhbk9yZGVyXSk7XG5cbiAgY29uc3QgdG9TcHJlYWQgPSB7IC4uLnByb3BzIH0gYXMgYW55O1xuICBkZWxldGUgdG9TcHJlYWQua2V5T3JkZXI7XG4gIGRlbGV0ZSB0b1NwcmVhZC5vbkNoYW5nZUtleU9yZGVyO1xuXG4gIGNvbnN0IGNoaWxkcmVuVG9SZW5kZXIgPSBbLi4uY2hpbGRyZW5dXG4gICAgLmZpbHRlcigoYSkgPT4gY2xlYW5PcmRlci5pbmNsdWRlcyhhLmtleSBhcyBzdHJpbmcpKVxuICAgIC5zb3J0KFxuICAgICAgKGEsIGIpID0+XG4gICAgICAgIGNsZWFuT3JkZXIuaW5kZXhPZihhLmtleSBhcyBzdHJpbmcpIC1cbiAgICAgICAgY2xlYW5PcmRlci5pbmRleE9mKGIua2V5IGFzIHN0cmluZylcbiAgICApXG4gICAgLm1hcCgoYTogUmVhY3RFbGVtZW50LCBpKSA9PiAoe1xuICAgICAgLi4uYSxcbiAgICAgIGtleTogb3JkZXJbaV0sXG4gICAgfSkpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgcm9vdEVsKCkhLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIChlKSA9PiB7XG4gICAgICBjb25zdCByZWxhdGVkQW5jaG9yID0gYW5jaG9yc0xpc3QuZmluZCgoYW5jaG9yKSA9PlxuICAgICAgICBhbmNob3IuY29udGFpbnMoZS50YXJnZXQgYXMgYW55KVxuICAgICAgKTtcbiAgICAgIGlmIChyZWxhdGVkQW5jaG9yKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25BbmNob3JDbGljayh7XG4gICAgICAgICAgdGFyZ2V0OiByZWxhdGVkQW5jaG9yLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBtb3ZlQ2IgPSB0aHJvdHRsZSgoZTogVG91Y2hFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRvdWNoID0gZS50b3VjaGVzWzBdO1xuICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IFt0b3VjaC5jbGllbnRYLCB0b3VjaC5jbGllbnRZXTtcbiAgICAgICAgICBjb25zdCBlbHMgPSBBcnJheS5mcm9tKHJvb3RFbCgpLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50SWR4ID0gZWxzLmZpbmRJbmRleCgoYywgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVjdCA9IGM/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgaWYgKCFyZWN0KSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gcmVjdC50b3AgPCB5ICYmIHJlY3QudG9wICsgcmVjdC5oZWlnaHQgPiB5O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudElkeCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gZWxzW2N1cnJlbnRFbGVtZW50SWR4XTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNhbGN1bGF0ZVJlb3JkZXJpbmcoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IGVsLFxuICAgICAgICAgICAgICAgIG9mZnNldFk6IHkgLSByZWN0LnRvcCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZWxzLFxuICAgICAgICAgICAgICBjbGVhbk9yZGVyUmVmLmN1cnJlbnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCA1MDApO1xuICAgICAgICBjb25zdCB0ID0gZS50YXJnZXQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRvdWNoTW92ZUNiID0gKGU6IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBUb3VjaEV2ZW50KGUudHlwZSwgZSBhcyBhbnkpKTtcbiAgICAgICAgICBtb3ZlQ2IoZSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlbW92ZUNiID0gKGU6IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgICB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdG91Y2hNb3ZlQ2IpO1xuICAgICAgICAgIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIHJlbW92ZUNiKTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgVG91Y2hFdmVudChlLnR5cGUsIGUgYXMgYW55KSk7XG4gICAgICAgIH07XG4gICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0b3VjaE1vdmVDYik7XG4gICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIHJlbW92ZUNiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBiaW5kQW5jaG9yOiAoZWw6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgb25BbmNob3JDbGljayk7XG4gICAgICAgIGFuY2hvcnNMaXN0LnB1c2goZWwpO1xuICAgICAgfSxcbiAgICAgIHVuYmluZEFuY2hvcjogKGVsOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIG9uQW5jaG9yQ2xpY2spO1xuICAgICAgICBhbmNob3JzTGlzdC5zcGxpY2UoYW5jaG9yc0xpc3QuaW5kZXhPZihlbCksIDEpO1xuICAgICAgfSxcbiAgICAgIG9uOiBldmVudEVtaXR0ZXIuc3Vic2NyaWJlcixcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPE9yZGVyYWJsZUxpc3RDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtlfT5cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtyb290UmVmfVxuICAgICAgICBjbGFzc05hbWU9e2Ake1N0eWxlcy5yb290fSAke2NsYXNzTmFtZX0gJHtcbiAgICAgICAgICBzaHJpbmtUb09uT3JkZXIgPyBTdHlsZXMuc2hyaW5rYWJsZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHsuLi50b1NwcmVhZH1cbiAgICAgID5cbiAgICAgICAge21vZGUgPT09IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZS5WRVJUSUNBTCA/IChcbiAgICAgICAgICA8QW5pbWF0ZWRFbnRyYW5jZT57Y2hpbGRyZW5Ub1JlbmRlcn08L0FuaW1hdGVkRW50cmFuY2U+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFVuY29udHJvbGxlZFRyYW5zaXRpb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17U3R5bGVzLnRyYW5zaXRpb259XG4gICAgICAgICAgICB0cmFuc2l0aW9uVHlwZT17VHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTX1cbiAgICAgICAgICAgIGNvbmZpZz17e1xuICAgICAgICAgICAgICBiYWNrd2FyZDoge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogXCJcIixcbiAgICAgICAgICAgICAgICBlbGVtZW50RXhpdGluZzogXCJcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLnN0dWJFbnRlcmluZyxcbiAgICAgICAgICAgICAgICBlbGVtZW50RXhpdGluZzogVHJhbnNpdGlvblN0eWxlcy5mYWRlT3V0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNvbnRlbnRDbGFzc05hbWU9e2Ake2NsYXNzTmFtZX1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e29yZGVySWR9PlxuICAgICAgICAgICAgICB7Wy4uLmNoaWxkcmVuXVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGEpID0+IGNsZWFuT3JkZXIuaW5jbHVkZXMoYS5rZXkgYXMgc3RyaW5nKSlcbiAgICAgICAgICAgICAgICAuc29ydChcbiAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICBjbGVhbk9yZGVyLmluZGV4T2YoYS5rZXkgYXMgc3RyaW5nKSAtXG4gICAgICAgICAgICAgICAgICAgIGNsZWFuT3JkZXIuaW5kZXhPZihiLmtleSBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5tYXAoKGEsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxIZXJvV3JhcHBlciBrZXk9e2l9IGlkPXthLmtleSBhcyBzdHJpbmd9PlxuICAgICAgICAgICAgICAgICAgICB7YX1cbiAgICAgICAgICAgICAgICAgIDwvSGVyb1dyYXBwZXI+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgIDwvVW5jb250cm9sbGVkVHJhbnNpdGlvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvT3JkZXJhYmxlTGlzdENvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEhlcm9XcmFwcGVyKHsgY2hpbGRyZW4sIGlkIH06IFByb3BzV2l0aENoaWxkcmVuPHsgaWQ6IHN0cmluZyB9Pikge1xuICBjb25zdCB7IGhlcm9SZWYgfSA9IHVzZUhlcm8oaWQsIHVuZGVmaW5lZCwge1xuICAgIG9uSGVyb1N0YXJ0OiAoX2MsIF9vLCB0KSA9PiB7XG4gICAgICB0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIikuZm9yRWFjaChcbiAgICAgICAgKGltZykgPT4gKGltZy5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIilcbiAgICAgICk7XG4gICAgfSxcbiAgICBvbkhlcm9DbG9uZWQoY2xvbmUpIHtcbiAgICAgIC8vIGlmICghY2xvbmUuY2xhc3NMaXN0LmNvbnRhaW5zKFN0eWxlcy52aXNpYmxlKSkgY2xvbmUuc3R5bGUub3BhY2l0eSA9IFwiMFwiO1xuICAgIH0sXG4gICAgb25IZXJvRW5kOiAoKSA9PiB7XG4gICAgICBpZiAoaGVyb1JlZi5jdXJyZW50KVxuICAgICAgICBoZXJvUmVmLmN1cnJlbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVxuICAgICAgICAgIC5mb3JFYWNoKChpbWcpID0+IChpbWcuc3R5bGUudmlzaWJpbGl0eSA9IFwiXCIpKTtcbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIDxkaXYgcmVmPXtoZXJvUmVmfT57Y2hpbGRyZW59PC9kaXY+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlT3JkZXJhYmxlTGlzdEFuY2hvcigpIHtcbiAgY29uc3QgYW5jaG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN0eCA9IHVzZUNvbnRleHQoT3JkZXJhYmxlTGlzdENvbnRleHQpO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY3R4KSByZXR1cm47XG4gICAgY29uc3QgeyBiaW5kQW5jaG9yLCB1bmJpbmRBbmNob3IgfSA9IGN0eDtcbiAgICBiaW5kQW5jaG9yKGFuY2hvclJlZi5jdXJyZW50ISk7XG4gICAgcmV0dXJuICgpID0+IHVuYmluZEFuY2hvcihhbmNob3JSZWYuY3VycmVudCEpO1xuICB9LCBbXSk7XG4gIHJldHVybiB7XG4gICAgYW5jaG9yUmVmOiBjdHggPyBhbmNob3JSZWYgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VPcmRlcmFibGVFdmVudHMoXG4gIGV2ZW50czoge1xuICAgIFtrIGluIEV2ZW50c106ICgpID0+IHZvaWQ7XG4gIH1cbikge1xuICBjb25zdCB7IG9uIH0gPSB1c2VDb250ZXh0KE9yZGVyYWJsZUxpc3RDb250ZXh0KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB1bnN1YnNjcmliZXJzOiBhbnlbXSA9IFtdO1xuICAgIGZvciAobGV0IGV2ZW50TmFtZSBpbiBldmVudHMpIHtcbiAgICAgIHVuc3Vic2NyaWJlcnMucHVzaChvbihldmVudE5hbWUgYXMgRXZlbnRzLCBldmVudHNbZXZlbnROYW1lIGFzIEV2ZW50c10pKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHVuc3Vic2NyaWJlcnMuZm9yRWFjaCgodSkgPT4gdSgpKTtcbiAgICB9O1xuICB9LCBbZXZlbnRzXSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUFBLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQWVBLElBQUFHLHVCQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0saUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLG9CQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxTQUFBLEdBQUFYLHNCQUFBLENBQUFDLE9BQUE7QUFBNEMsTUFBQVcsU0FBQTtBQUFBLFNBQUFULHdCQUFBVSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBWix1QkFBQSxZQUFBQSxDQUFBVSxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQUMsT0FBQSxFQUFBVixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGdCQUFBUCxDQUFBLElBQUFELENBQUEsZ0JBQUFDLENBQUEsT0FBQWEsY0FBQSxDQUFBQyxJQUFBLENBQUFmLENBQUEsRUFBQUMsQ0FBQSxPQUFBTSxDQUFBLElBQUFELENBQUEsR0FBQVUsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWxCLENBQUEsRUFBQUMsQ0FBQSxPQUFBTSxDQUFBLENBQUFLLEdBQUEsSUFBQUwsQ0FBQSxDQUFBTSxHQUFBLElBQUFQLENBQUEsQ0FBQUUsQ0FBQSxFQUFBUCxDQUFBLEVBQUFNLENBQUEsSUFBQUMsQ0FBQSxDQUFBUCxDQUFBLElBQUFELENBQUEsQ0FBQUMsQ0FBQSxXQUFBTyxDQUFBLEtBQUFSLENBQUEsRUFBQUMsQ0FBQTtBQUFBLFNBQUFkLHVCQUFBYSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLEdBQUFMLENBQUEsS0FBQVUsT0FBQSxFQUFBVixDQUFBO0FBQUEsU0FBQW1CLFNBQUEsV0FBQUEsUUFBQSxHQUFBSCxNQUFBLENBQUFJLE1BQUEsR0FBQUosTUFBQSxDQUFBSSxNQUFBLENBQUFDLElBQUEsZUFBQWpCLENBQUEsYUFBQUosQ0FBQSxNQUFBQSxDQUFBLEdBQUFzQixTQUFBLENBQUFDLE1BQUEsRUFBQXZCLENBQUEsVUFBQUMsQ0FBQSxHQUFBcUIsU0FBQSxDQUFBdEIsQ0FBQSxZQUFBRyxDQUFBLElBQUFGLENBQUEsT0FBQWEsY0FBQSxDQUFBQyxJQUFBLENBQUFkLENBQUEsRUFBQUUsQ0FBQSxNQUFBQyxDQUFBLENBQUFELENBQUEsSUFBQUYsQ0FBQSxDQUFBRSxDQUFBLGFBQUFDLENBQUEsS0FBQWUsUUFBQSxDQUFBSyxLQUFBLE9BQUFGLFNBQUE7QUFBQSxTQUFBRyxRQUFBekIsQ0FBQSxFQUFBRyxDQUFBLFFBQUFGLENBQUEsR0FBQWUsTUFBQSxDQUFBVSxJQUFBLENBQUExQixDQUFBLE9BQUFnQixNQUFBLENBQUFXLHFCQUFBLFFBQUFyQixDQUFBLEdBQUFVLE1BQUEsQ0FBQVcscUJBQUEsQ0FBQTNCLENBQUEsR0FBQUcsQ0FBQSxLQUFBRyxDQUFBLEdBQUFBLENBQUEsQ0FBQXNCLE1BQUEsV0FBQXpCLENBQUEsV0FBQWEsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbEIsQ0FBQSxFQUFBRyxDQUFBLEVBQUEwQixVQUFBLE9BQUE1QixDQUFBLENBQUE2QixJQUFBLENBQUFOLEtBQUEsQ0FBQXZCLENBQUEsRUFBQUssQ0FBQSxZQUFBTCxDQUFBO0FBQUEsU0FBQThCLGNBQUEvQixDQUFBLGFBQUFHLENBQUEsTUFBQUEsQ0FBQSxHQUFBbUIsU0FBQSxDQUFBQyxNQUFBLEVBQUFwQixDQUFBLFVBQUFGLENBQUEsV0FBQXFCLFNBQUEsQ0FBQW5CLENBQUEsSUFBQW1CLFNBQUEsQ0FBQW5CLENBQUEsUUFBQUEsQ0FBQSxPQUFBc0IsT0FBQSxDQUFBVCxNQUFBLENBQUFmLENBQUEsT0FBQStCLE9BQUEsV0FBQTdCLENBQUEsSUFBQThCLGVBQUEsQ0FBQWpDLENBQUEsRUFBQUcsQ0FBQSxFQUFBRixDQUFBLENBQUFFLENBQUEsU0FBQWEsTUFBQSxDQUFBa0IseUJBQUEsR0FBQWxCLE1BQUEsQ0FBQW1CLGdCQUFBLENBQUFuQyxDQUFBLEVBQUFnQixNQUFBLENBQUFrQix5QkFBQSxDQUFBakMsQ0FBQSxLQUFBd0IsT0FBQSxDQUFBVCxNQUFBLENBQUFmLENBQUEsR0FBQStCLE9BQUEsV0FBQTdCLENBQUEsSUFBQWEsTUFBQSxDQUFBQyxjQUFBLENBQUFqQixDQUFBLEVBQUFHLENBQUEsRUFBQWEsTUFBQSxDQUFBRSx3QkFBQSxDQUFBakIsQ0FBQSxFQUFBRSxDQUFBLGlCQUFBSCxDQUFBO0FBQUEsU0FBQWlDLGdCQUFBakMsQ0FBQSxFQUFBRyxDQUFBLEVBQUFGLENBQUEsWUFBQUUsQ0FBQSxHQUFBaUMsY0FBQSxDQUFBakMsQ0FBQSxNQUFBSCxDQUFBLEdBQUFnQixNQUFBLENBQUFDLGNBQUEsQ0FBQWpCLENBQUEsRUFBQUcsQ0FBQSxJQUFBa0MsS0FBQSxFQUFBcEMsQ0FBQSxFQUFBNEIsVUFBQSxNQUFBUyxZQUFBLE1BQUFDLFFBQUEsVUFBQXZDLENBQUEsQ0FBQUcsQ0FBQSxJQUFBRixDQUFBLEVBQUFELENBQUE7QUFBQSxTQUFBb0MsZUFBQW5DLENBQUEsUUFBQU0sQ0FBQSxHQUFBaUMsWUFBQSxDQUFBdkMsQ0FBQSx1Q0FBQU0sQ0FBQSxHQUFBQSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBaUMsYUFBQXZDLENBQUEsRUFBQUUsQ0FBQSwyQkFBQUYsQ0FBQSxLQUFBQSxDQUFBLFNBQUFBLENBQUEsTUFBQUQsQ0FBQSxHQUFBQyxDQUFBLENBQUF3QyxNQUFBLENBQUFDLFdBQUEsa0JBQUExQyxDQUFBLFFBQUFPLENBQUEsR0FBQVAsQ0FBQSxDQUFBZSxJQUFBLENBQUFkLENBQUEsRUFBQUUsQ0FBQSx1Q0FBQUksQ0FBQSxTQUFBQSxDQUFBLFlBQUFvQyxTQUFBLHlFQUFBeEMsQ0FBQSxHQUFBeUMsTUFBQSxHQUFBQyxNQUFBLEVBQUE1QyxDQUFBO0FBQUEsU0FBQTZDLHlCQUFBOUMsQ0FBQSxFQUFBQyxDQUFBLGdCQUFBRCxDQUFBLGlCQUFBTSxDQUFBLEVBQUFILENBQUEsRUFBQUksQ0FBQSxHQUFBd0MsNkJBQUEsQ0FBQS9DLENBQUEsRUFBQUMsQ0FBQSxPQUFBZSxNQUFBLENBQUFXLHFCQUFBLFFBQUF2QixDQUFBLEdBQUFZLE1BQUEsQ0FBQVcscUJBQUEsQ0FBQTNCLENBQUEsUUFBQUcsQ0FBQSxNQUFBQSxDQUFBLEdBQUFDLENBQUEsQ0FBQW1CLE1BQUEsRUFBQXBCLENBQUEsSUFBQUcsQ0FBQSxHQUFBRixDQUFBLENBQUFELENBQUEsVUFBQUYsQ0FBQSxDQUFBK0MsT0FBQSxDQUFBMUMsQ0FBQSxRQUFBMkMsb0JBQUEsQ0FBQWxDLElBQUEsQ0FBQWYsQ0FBQSxFQUFBTSxDQUFBLE1BQUFDLENBQUEsQ0FBQUQsQ0FBQSxJQUFBTixDQUFBLENBQUFNLENBQUEsYUFBQUMsQ0FBQTtBQUFBLFNBQUF3Qyw4QkFBQTVDLENBQUEsRUFBQUgsQ0FBQSxnQkFBQUcsQ0FBQSxpQkFBQUYsQ0FBQSxnQkFBQUcsQ0FBQSxJQUFBRCxDQUFBLFNBQUFXLGNBQUEsQ0FBQUMsSUFBQSxDQUFBWixDQUFBLEVBQUFDLENBQUEsZ0JBQUFKLENBQUEsQ0FBQWdELE9BQUEsQ0FBQTVDLENBQUEsYUFBQUgsQ0FBQSxDQUFBRyxDQUFBLElBQUFELENBQUEsQ0FBQUMsQ0FBQSxZQUFBSCxDQUFBO0FBSTVDLE1BQU1pRCxvQkFBb0IsZ0JBQUcsSUFBQUMsb0JBQWEsRUFJdkMsSUFBVyxDQUFDO0FBQUMsSUFFSkMsd0JBQXdCLEdBQUFDLE9BQUEsQ0FBQUQsd0JBQUEsMEJBQXhCQSx3QkFBd0I7RUFBeEJBLHdCQUF3QjtFQUF4QkEsd0JBQXdCO0VBQUEsT0FBeEJBLHdCQUF3QjtBQUFBO0FBS3BDLFNBQVNFLFNBQVNBLENBQUM1QixJQUFjLEVBQUU7RUFDakMsT0FBT0EsSUFBSSxDQUFDNkIsR0FBRyxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNlLFNBQVNDLGFBQWFBLENBQUFDLElBQUEsRUFtQ2dDO0VBQUEsSUFuQy9CO01BQ3BDQyxRQUFRO01BQ1JDLFNBQVMsR0FBRyxFQUFFO01BQ2RDLElBQUksR0FBR1Ysd0JBQXdCLENBQUNXLFFBQVE7TUFDeENDLGVBQWU7TUFDZkMsbUJBQW1CO01BQ25CQztJQTZCZ0UsQ0FBQyxHQUFBUCxJQUFBO0lBNUI5RFEsS0FBSyxHQUFBckIsd0JBQUEsQ0FBQWEsSUFBQSxFQUFBNUQsU0FBQTtFQTZCUixNQUFNcUUsYUFBYSxHQUFHUixRQUFRLENBQUNMLEdBQUcsQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLENBQUNhLEdBQWEsQ0FBQztFQUMxRCxNQUFNQyxnQkFBZ0IsR0FBR0YsYUFBYSxDQUFDRyxJQUFJLENBQUMsR0FBRyxDQUFDO0VBQ2hELE1BQU1DLGVBQWUsR0FBRyxJQUFBQyxrQkFBVyxFQUFDLE1BQU07SUFDeEMsTUFBTUMsZ0JBQWdCLEdBQ3BCLFVBQVUsSUFBSVAsS0FBSyxJQUFJQSxLQUFLLENBQUNRLFFBQVEsR0FDakNQLGFBQWEsQ0FBQ3hDLE1BQU0sQ0FBRTRCLENBQUMsSUFBSyxDQUFDVyxLQUFLLENBQUNRLFFBQVEsQ0FBRUMsUUFBUSxDQUFDcEIsQ0FBQyxDQUFDLENBQUMsR0FDekQsRUFBRTtJQUVSLE9BQ0UsQ0FBQyxVQUFVLElBQUlXLEtBQUssSUFBSUEsS0FBSyxDQUFDUSxRQUFRLEdBQ2xDLENBQUMsR0FBR1IsS0FBSyxDQUFDUSxRQUFRLEVBQUUsR0FBR0QsZ0JBQWdCLENBQUMsR0FDeENHLFNBQVMsS0FBS1QsYUFBYTtFQUVuQyxDQUFDLEVBQUUsQ0FBQ0UsZ0JBQWdCLEVBQUdILEtBQUssQ0FBU1EsUUFBUSxDQUFDLENBQUM7RUFDL0MsTUFBTTtJQUFFRyxPQUFPLEVBQUVDO0VBQVksQ0FBQyxHQUFHLElBQUFDLGFBQU0sRUFBbUIsRUFBRSxDQUFDO0VBQzdELE1BQU1DLFlBQVksR0FBRyxJQUFBQyxrQkFBUyxFQUFnQyxDQUFDO0VBQy9ELE1BQU1DLFlBQVksR0FBRyxJQUFBSCxhQUFNLEVBQXdCLElBQUksQ0FBQztFQUN4RCxNQUFNSSxpQkFBaUIsR0FBRyxJQUFBSixhQUFNLEVBQVNILFNBQVMsQ0FBQztFQUNuRCxNQUFNUSxPQUFPLEdBQUcsSUFBQUwsYUFBTSxFQUFpQixJQUFXLENBQUM7RUFDbkQsTUFBTSxDQUFDTSxNQUFNLEVBQUVDLFFBQVEsQ0FBQyxHQUFHLElBQUFDLGVBQVEsRUFBQ2hCLGVBQWUsQ0FBQztFQUNwRCxJQUFBaUIsZ0JBQVMsRUFBQyxNQUFNRixRQUFRLENBQUNmLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDQSxlQUFlLENBQUMsQ0FBQztFQUUvRCxNQUFNa0IsS0FBSyxHQUFHLElBQUFDLGNBQU8sRUFBQyxNQUFNO0lBQzFCLE9BQU8sQ0FDTCxjQUFjLElBQUl4QixLQUFLLEdBQUdBLEtBQUssQ0FBQ3lCLFlBQVksSUFBSU4sTUFBTSxHQUFHQSxNQUFNLEVBQy9EMUQsTUFBTSxDQUFFdEIsQ0FBQyxJQUFLQSxDQUFDLENBQUNzRSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUlSLGFBQWEsQ0FBQ1EsUUFBUSxDQUFDdEUsQ0FBQyxDQUFDLENBQUM7RUFDL0QsQ0FBQyxFQUFFLENBQUU2RCxLQUFLLENBQVN5QixZQUFZLEVBQUVOLE1BQU0sRUFBRWhCLGdCQUFnQixDQUFDLENBQUM7RUFDM0QsTUFBTXVCLFVBQVUsR0FBRyxJQUFBRixjQUFPLEVBQUMsTUFBTUQsS0FBSyxDQUFDbkMsR0FBRyxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQ2lDLEtBQUssQ0FBQyxDQUFDO0VBQzVFLE1BQU1JLE9BQU8sR0FBRyxJQUFBSCxjQUFPLEVBQUMsTUFBTSxNQUFNLEdBQUdFLFVBQVUsQ0FBQ3RCLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDc0IsVUFBVSxDQUFDLENBQUM7RUFDekUsU0FBU0UsTUFBTUEsQ0FBQSxFQUFHO0lBQ2hCLElBQUlqQyxJQUFJLEtBQUtWLHdCQUF3QixDQUFDNEMsY0FBYyxFQUNsRCxPQUFPWCxPQUFPLENBQUNQLE9BQU8sQ0FBRW1CLGdCQUFnQixDQUNyQ0EsZ0JBQWdCO0lBQ3JCLE9BQU9aLE9BQU8sQ0FBQ1AsT0FBTztFQUN4QjtFQUVBLE1BQU1vQixpQkFBaUIsR0FBSUMsTUFBc0IsSUFBSztJQUNwRCxJQUFJQyxNQUFzQixHQUFHRCxNQUF3QjtJQUNyRCxPQUFPQyxNQUFNLENBQUNDLGFBQWEsS0FBS04sTUFBTSxDQUFDLENBQUMsRUFBRTtNQUN4QyxJQUFJSyxNQUFNLENBQUNDLGFBQWEsS0FBSyxJQUFJLEVBQUU7TUFDbkNELE1BQU0sR0FBR0EsTUFBTSxDQUFDQyxhQUFvQjtJQUN0QztJQUNBLElBQUlDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssYUFBYSxJQUFJSixNQUFNLEtBQUssSUFBSSxFQUMzRCxNQUFNLElBQUlLLEtBQUssQ0FDYixpSEFDRixDQUFDO0lBQ0gsT0FBT0wsTUFBTTtFQUNmLENBQUM7RUFFRCxJQUFBTSxzQkFBZSxFQUFDLE1BQU07SUFDcEIsSUFBSTFDLGVBQWUsRUFDakIrQixNQUFNLENBQUMsQ0FBQyxDQUFDWSxLQUFLLENBQUNDLFdBQVcsQ0FBQyxhQUFhLEtBQUFDLE1BQUEsQ0FBSzdDLGVBQWUsT0FBSSxDQUFDO0VBQ3JFLENBQUMsRUFBRSxDQUFDQSxlQUFlLENBQUMsQ0FBQztFQUVyQixNQUFNOEMsbUJBQW1CLEdBQUcsSUFBQW5CLGNBQU8sRUFBQyxNQUFNO0lBQ3hDLE9BQU8sSUFBQW9CLGlCQUFRLEVBQUMsQ0FBQy9HLENBQU0sRUFBRWdILEdBQXFCLEVBQUVwQixZQUFzQixLQUFLO01BQ3pFLElBQUlvQixHQUFHLENBQUN6RixNQUFNLEdBQUdxRSxZQUFZLENBQUNyRSxNQUFNLElBQUksQ0FBQzZELGlCQUFpQixDQUFDTixPQUFPLEVBQ2hFO01BQ0YsTUFBTXNCLE1BQU0sR0FBR0YsaUJBQWlCLENBQUNsRyxDQUFDLENBQUNtRyxNQUFNLENBQUM7TUFDMUMsTUFBTWMsc0JBQXNCLEdBQUdELEdBQUcsQ0FBQ2hFLE9BQU8sQ0FBQ29ELE1BQU0sQ0FBQztNQUNsRCxNQUFNYyxtQkFBbUIsR0FBR3RCLFlBQVksQ0FBQ3FCLHNCQUFzQixDQUFDO01BQ2hFLE1BQU1FLG9CQUFvQixHQUN4Qi9CLGlCQUFpQixDQUFDTixPQUFPLEtBQUtvQyxtQkFBbUI7TUFDbkQsSUFBSUQsc0JBQXNCLEtBQUssQ0FBQyxDQUFDLElBQUlDLG1CQUFtQixLQUFLckMsU0FBUyxFQUNwRTtNQUNGLElBQUksQ0FBQ3NDLG9CQUFvQixFQUFFO1FBQ3pCLE1BQU07VUFBRUMsT0FBTztVQUFFQztRQUFTLENBQUMsR0FBRyxDQUFDLE1BQU07VUFDbkMsSUFBSXZELElBQUksS0FBS1Ysd0JBQXdCLENBQUM0QyxjQUFjLEVBQUU7WUFDcEQsTUFBTXNCLGdCQUFnQixHQUFHdEgsQ0FBQyxDQUFDdUgsT0FBTztZQUNsQyxNQUFNQyxTQUFTLEdBQUdwQixNQUFNLENBQUNxQixXQUFXO1lBQ3BDLE1BQU1DLE1BQU0sR0FBR0YsU0FBUyxHQUFHLElBQUk7WUFDL0IsTUFBTUosT0FBTyxHQUFHRSxnQkFBZ0IsR0FBR0UsU0FBUyxHQUFHRSxNQUFNO1lBQ3JELE1BQU1MLFFBQVEsR0FBR0MsZ0JBQWdCLEdBQUdJLE1BQU07WUFDMUMsT0FBTztjQUFFTixPQUFPO2NBQUVDO1lBQVMsQ0FBQztVQUM5QixDQUFDLE1BQU07WUFDTCxNQUFNTSxlQUFlLEdBQUczSCxDQUFDLENBQUM0SCxPQUFPO1lBQ2pDLE1BQU1DLFVBQVUsR0FBR3pCLE1BQU0sQ0FBQzBCLFlBQVk7WUFDdEMsTUFBTUosTUFBTSxHQUFHRyxVQUFVLEdBQUcsSUFBSTtZQUNoQyxNQUFNVCxPQUFPLEdBQUdPLGVBQWUsR0FBR0UsVUFBVSxHQUFHSCxNQUFNO1lBQ3JELE1BQU1MLFFBQVEsR0FBR00sZUFBZSxHQUFHRCxNQUFNO1lBQ3pDLE9BQU87Y0FBRU4sT0FBTztjQUFFQztZQUFTLENBQUM7VUFDOUI7UUFDRixDQUFDLEVBQUUsQ0FBQztRQUVKLE1BQU1VLGNBQWMsR0FBSUMsZ0JBQXlCLElBQUs7VUFDcEQsT0FDRUEsZ0JBQWdCLEtBQUtuRCxTQUFTLElBQzlCbUQsZ0JBQWdCLEtBQUs1QyxpQkFBaUIsQ0FBQ04sT0FBTztRQUVsRCxDQUFDO1FBQ0QsTUFBTW1ELG9CQUFvQixHQUN4QmhCLHNCQUFzQixJQUFJRyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdDLE1BQU1jLHVCQUF1QixHQUMzQixDQUFDZCxPQUFPLElBQUlDLFFBQVEsS0FDcEJVLGNBQWMsQ0FBQ25DLFlBQVksQ0FBQ3FDLG9CQUFvQixDQUFDLENBQUM7UUFDcEQsSUFBSUMsdUJBQXVCLEVBQUU7VUFDM0IzQyxRQUFRLENBQUU0QyxDQUFDLElBQUs7WUFDZCxNQUFNQyxhQUFhLEdBQUd4QyxZQUFZLENBQUM1QyxPQUFPLENBQ3hDb0MsaUJBQWlCLENBQUNOLE9BQ3BCLENBQUM7WUFDRCxNQUFNdUQseUJBQXlCLEdBQzdCL0UsU0FBUyxDQUFDNkUsQ0FBQyxDQUFDLENBQUNuRixPQUFPLENBQUNrRSxtQkFBbUIsQ0FBQztZQUMzQyxJQUFJZSxvQkFBb0IsR0FDdEJJLHlCQUF5QixJQUFJaEIsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJZSxhQUFhLEdBQUdILG9CQUFvQixFQUFFQSxvQkFBb0IsRUFBRTtZQUNoRSxNQUFNSyxtQkFBbUIsR0FBR0gsQ0FBQyxDQUFDdkcsTUFBTSxDQUFFNEIsQ0FBQyxJQUFLO2NBQzFDLElBQUlBLENBQUMsQ0FBQytFLFVBQVUsSUFBQTFCLE1BQUEsQ0FBSXpCLGlCQUFpQixDQUFDTixPQUFPLE1BQUcsQ0FBQyxFQUFFLE9BQU8sS0FBSztjQUMvRCxPQUFPdEIsQ0FBQyxLQUFLNEIsaUJBQWlCLENBQUNOLE9BQU87WUFDeEMsQ0FBQyxDQUFDO1lBQ0Z3RCxtQkFBbUIsQ0FBQ0UsTUFBTSxDQUN4QlAsb0JBQW9CLEVBQ3BCLENBQUMsS0FBQXBCLE1BQUEsQ0FDRXpCLGlCQUFpQixDQUFDTixPQUFPLE9BQUErQixNQUFBLENBQUk0QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLENBQzVDLENBQUM7WUFDRCxPQUFPSixtQkFBbUI7VUFDNUIsQ0FBQyxDQUFDO1FBQ0o7TUFDRjtJQUNGLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO0VBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQUE3QyxnQkFBUyxFQUFDLE1BQU07SUFDZCxTQUFTa0QsaUJBQWlCQSxDQUFBLEVBQUc7TUFDM0IsTUFBTTNCLEdBQUcsR0FBRzRCLEtBQUssQ0FBQ0MsSUFBSSxDQUFDOUMsTUFBTSxDQUFDLENBQUMsQ0FBRW5DLFFBQVEsQ0FBcUI7TUFDOUQsTUFBTWtGLHVCQUF1QixHQUFJOUksQ0FBTSxJQUFLO1FBQzFDLE1BQU1nSCxHQUFHLEdBQUc0QixLQUFLLENBQUNDLElBQUksQ0FBQzlDLE1BQU0sQ0FBQyxDQUFDLENBQUVuQyxRQUFRLENBQXFCO1FBQzlEa0QsbUJBQW1CLENBQUM5RyxDQUFDLEVBQUVnSCxHQUFHLEVBQUVuQixVQUFVLENBQUM7TUFDekMsQ0FBQztNQUNELEtBQUssSUFBSWtELEVBQUUsSUFBSS9CLEdBQUcsRUFDaEIrQixFQUFFLENBQUNDLGdCQUFnQixDQUFDLFdBQVcsRUFBRUYsdUJBQXVCLENBQUM7TUFFM0QsT0FBTyxNQUFNO1FBQ1gsS0FBSyxJQUFJQyxFQUFFLElBQUkvQixHQUFHLEVBQ2hCK0IsRUFBRSxDQUFDRSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUVILHVCQUF1QixDQUFDO01BQ2hFLENBQUM7SUFDSDtJQUVBLElBQUloRixJQUFJLEtBQUtWLHdCQUF3QixDQUFDVyxRQUFRLEVBQUU7TUFDOUMsT0FBTzRFLGlCQUFpQixDQUFDLENBQUM7SUFDNUIsQ0FBQyxNQUFNO01BQ0wsSUFBSU8sV0FBdUI7TUFDM0IsSUFBSUMsT0FBTyxHQUFHQyxVQUFVLENBQUMsTUFBTTtRQUM3QkYsV0FBVyxHQUFHUCxpQkFBaUIsQ0FBQyxDQUFDO01BQ25DLENBQUMsRUFBRSxHQUFHLENBQUM7TUFDUCxPQUFPLE1BQU07UUFDWFUsWUFBWSxDQUFDRixPQUFPLENBQUM7UUFDckIsSUFBSUQsV0FBVyxFQUFFQSxXQUFXLENBQUMsQ0FBQztNQUNoQyxDQUFDO0lBQ0g7RUFDRixDQUFDLEVBQUUsQ0FBQ3JELFVBQVUsQ0FBQyxDQUFDO0VBRWhCLElBQUFKLGdCQUFTLEVBQUMsTUFBTTtJQUNkLElBQUksa0JBQWtCLElBQUl0QixLQUFLLEVBQUVBLEtBQUssQ0FBQ21GLGdCQUFnQixDQUFDaEcsU0FBUyxDQUFDZ0MsTUFBTSxDQUFDLENBQUM7RUFDNUUsQ0FBQyxFQUFFLENBQUNBLE1BQU0sQ0FBQyxDQUFDO0VBRVosTUFBTWlFLGFBQWEsR0FBRyxJQUFBdkUsYUFBTSxFQUFDYSxVQUFVLENBQUM7RUFDeEMsSUFBQUosZ0JBQVMsRUFBQyxNQUFNO0lBQ2Q4RCxhQUFhLENBQUN6RSxPQUFPLEdBQUdlLFVBQVU7RUFDcEMsQ0FBQyxFQUFFLENBQUNBLFVBQVUsQ0FBQyxDQUFDO0VBQ2hCLE1BQU0yRCxhQUFhLEdBQUcsSUFBQS9FLGtCQUFXLEVBQy9CZ0YsS0FBQSxJQUFvRDtJQUFBLElBQW5EO01BQUV0RCxNQUFNLEVBQUV1RDtJQUFtQyxDQUFDLEdBQUFELEtBQUE7SUFDN0MsSUFBSS9CLE1BQThCO0lBQ2xDLE1BQU1pQywwQkFBMEIsR0FBR3pELGlCQUFpQixDQUNsRHdELE1BQ0YsQ0FBQztJQUNELE1BQU1FLEdBQUcsR0FBR0QsMEJBQTBCLENBQUNFLHFCQUFxQixDQUFDLENBQUM7SUFDOUQsTUFBTTdDLEdBQUcsR0FBRzRCLEtBQUssQ0FBQ0MsSUFBSSxDQUFDOUMsTUFBTSxDQUFDLENBQUMsQ0FBRW5DLFFBQVEsQ0FBcUI7SUFDOUQsTUFBTWtHLE9BQU8sR0FBRzlDLEdBQUcsQ0FBQ2hFLE9BQU8sQ0FBQzJHLDBCQUEwQixDQUFDO0lBRXZELE1BQU1JLEtBQUssR0FBR0osMEJBQTBCLENBQUNLLFNBQVMsQ0FDaEQsSUFDRixDQUFtQjtJQUNuQjdFLFlBQVksQ0FBQ0wsT0FBTyxHQUFHaUYsS0FBSztJQUM1QixJQUFJekQsT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxhQUFhLEVBQ3hDdUQsS0FBSyxDQUFDRSxZQUFZLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDO0lBQzNERixLQUFLLENBQUNFLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxzQkFBc0IsQ0FBQztJQUM5REYsS0FBSyxDQUFDcEQsS0FBSyxDQUFDdUQsS0FBSyxNQUFBckQsTUFBQSxDQUFNK0MsR0FBRyxDQUFDTSxLQUFLLE9BQUk7SUFDcENILEtBQUssQ0FBQ3BELEtBQUssQ0FBQ3dELE1BQU0sTUFBQXRELE1BQUEsQ0FBTStDLEdBQUcsQ0FBQ08sTUFBTSxPQUFJO0lBQ3RDSixLQUFLLENBQUNwRCxLQUFLLENBQUN5RCxHQUFHLE1BQUF2RCxNQUFBLENBQU0rQyxHQUFHLENBQUNRLEdBQUcsT0FBSTtJQUNoQ0wsS0FBSyxDQUFDcEQsS0FBSyxDQUFDMEQsSUFBSSxNQUFBeEQsTUFBQSxDQUFNK0MsR0FBRyxDQUFDUyxJQUFJLE9BQUk7SUFDbENOLEtBQUssQ0FBQ08sU0FBUyxDQUFDQyxHQUFHLENBQUNDLDRCQUFNLENBQUNULEtBQUssQ0FBQztJQUNqQyxJQUFJL0YsZUFBZSxFQUFFK0YsS0FBSyxDQUFDcEQsS0FBSyxDQUFDOEQsU0FBUyxNQUFBNUQsTUFBQSxDQUFNK0MsR0FBRyxDQUFDTyxNQUFNLE9BQUk7SUFDOURmLFVBQVUsQ0FBQyxNQUFNO01BQ2YsSUFBSWxGLGNBQWMsRUFBRTZGLEtBQUssQ0FBQ08sU0FBUyxDQUFDQyxHQUFHLENBQUNyRyxjQUFjLENBQUM7TUFDdkQsSUFBSUYsZUFBZSxFQUFFK0YsS0FBSyxDQUFDcEQsS0FBSyxDQUFDOEQsU0FBUyxNQUFBNUQsTUFBQSxDQUFNN0MsZUFBZSxPQUFJO0lBQ3JFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFTDJGLDBCQUEwQixDQUFDVyxTQUFTLENBQUNDLEdBQUcsQ0FBQ0MsNEJBQU0sQ0FBQ0UsZUFBZSxDQUFDO0lBQ2hFZiwwQkFBMEIsQ0FBQ1csU0FBUyxDQUFDSyxNQUFNLENBQUNILDRCQUFNLENBQUNJLE9BQU8sQ0FBQztJQUUzRCxNQUFNQyxlQUFlLEdBQUk3SyxDQUEwQixJQUFLO01BQ3RELE1BQU07UUFBRThLLENBQUMsRUFBRUMsRUFBRTtRQUFFQyxDQUFDLEVBQUVDO01BQUcsQ0FBQyxHQUNwQixTQUFTLElBQUlqTCxDQUFDLEdBQUc7UUFBRThLLENBQUMsRUFBRTlLLENBQUMsQ0FBQ2tMLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsS0FBSztRQUFFSCxDQUFDLEVBQUVoTCxDQUFDLENBQUNrTCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNFO01BQU0sQ0FBQyxHQUFHcEwsQ0FBQztNQUN2RSxJQUFJLENBQUMwSCxNQUFNLEVBQUVBLE1BQU0sR0FBRyxDQUFDcUQsRUFBRSxHQUFHbkIsR0FBRyxDQUFDUyxJQUFJLEVBQUVZLEVBQUUsR0FBR3JCLEdBQUcsQ0FBQ1EsR0FBRyxDQUFDO01BRW5ELE1BQU0sQ0FBQzdDLE9BQU8sRUFBRUssT0FBTyxDQUFDLEdBQUdGLE1BQU07TUFDakNxQyxLQUFLLENBQUNwRCxLQUFLLENBQUN5RCxHQUFHLE1BQUF2RCxNQUFBLENBQU1vRSxFQUFFLEdBQUdyRCxPQUFPLE9BQUk7TUFDckNtQyxLQUFLLENBQUNwRCxLQUFLLENBQUMwRCxJQUFJLE1BQUF4RCxNQUFBLENBQU1rRSxFQUFFLEdBQUd4RCxPQUFPLE9BQUk7SUFDeEMsQ0FBQztJQUVEOEQsUUFBUSxDQUFDQyxJQUFJLENBQUNDLFdBQVcsQ0FBQ3hCLEtBQUssQ0FBQztJQUNoQyxNQUFNeUIsV0FBVyxHQUFHQSxDQUFBLEtBQU07TUFDeEJDLE1BQU0sQ0FBQ3hDLG1CQUFtQixDQUFDLFdBQVcsRUFBRTRCLGVBQWUsQ0FBQztNQUN4RFksTUFBTSxDQUFDeEMsbUJBQW1CLENBQUMsV0FBVyxFQUFFNEIsZUFBZSxDQUFDO01BQ3hEWSxNQUFNLENBQUN4QyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUV1QyxXQUFXLENBQUM7TUFDbkRDLE1BQU0sQ0FBQ3hDLG1CQUFtQixDQUFDLFNBQVMsRUFBRXVDLFdBQVcsQ0FBQztNQUNsRDdCLDBCQUEwQixDQUFDaEQsS0FBSyxDQUFDK0UsVUFBVSxHQUFHLFNBQVM7TUFDdkR0RyxpQkFBaUIsQ0FBQ04sT0FBTyxHQUFHRCxTQUFTO01BQ3JDNEcsTUFBTSxDQUFDSixRQUFRLENBQUNDLElBQUksQ0FBQ2hCLFNBQVMsQ0FBQ0ssTUFBTSxDQUFDSCw0QkFBTSxDQUFDbUIsWUFBWSxDQUFDO01BQzFEO1FBQ0UsTUFBTTNFLEdBQUcsR0FBRzRCLEtBQUssQ0FBQ0MsSUFBSSxDQUFDOUMsTUFBTSxDQUFDLENBQUMsQ0FBRW5DLFFBQVEsQ0FBcUI7UUFDOUQsTUFBTWdJLFdBQVcsR0FBRzVFLEdBQUcsQ0FBQzZFLElBQUksQ0FDekJySSxDQUFDLElBQ0EsQ0FBQ0EsQ0FBQyxDQUFDOEcsU0FBUyxDQUFDd0IsUUFBUSxDQUFDdEIsNEJBQU0sQ0FBQ0ksT0FBTyxDQUFDLElBQ3JDcEgsQ0FBQyxDQUFDbUQsS0FBSyxDQUFDOEQsU0FBUyxLQUFLLEtBQzFCLENBQUU7UUFDRixJQUFJekcsZUFBZSxFQUFFO1VBQ25CLE1BQU0rSCxLQUFLLEdBQUdILFdBQVcsQ0FBQzNGLGdCQUFrQztVQUM1RDhGLEtBQUssQ0FBQ3BGLEtBQUssQ0FBQzhELFNBQVMsTUFBQTVELE1BQUEsQ0FBTWtGLEtBQUssQ0FBQ0MsWUFBWSxPQUFJO1VBQ2pERCxLQUFLLENBQUN6QixTQUFTLENBQUNDLEdBQUcsQ0FBQ0MsNEJBQU0sQ0FBQ3lCLGdCQUFnQixDQUFDO1VBQzVDLE1BQU1DLEtBQUssR0FBRyxJQUFBQyxpQkFBUSxFQUFDLE1BQU07WUFDM0JKLEtBQUssQ0FBQzlDLG1CQUFtQixDQUFDLGVBQWUsRUFBRWlELEtBQUssQ0FBQztZQUNqREgsS0FBSyxDQUFDcEYsS0FBSyxDQUFDOEQsU0FBUyxZQUFZO1lBQ2pDc0IsS0FBSyxDQUFDekIsU0FBUyxDQUFDSyxNQUFNLENBQUNILDRCQUFNLENBQUN5QixnQkFBZ0IsQ0FBQztVQUNqRCxDQUFDLENBQUM7VUFDRkYsS0FBSyxDQUFDL0MsZ0JBQWdCLENBQUMsZUFBZSxFQUFFa0QsS0FBSyxDQUFDO1FBQ2hEO1FBQ0EsTUFBTXRDLEdBQUcsR0FBR2dDLFdBQVcsQ0FBQy9CLHFCQUFxQixDQUFDLENBQUM7UUFDL0MsU0FBU3VDLE9BQU9BLENBQUEsRUFBRztVQUNqQixJQUFJcEksZUFBZSxFQUFFO1lBQ25CK0IsTUFBTSxDQUFDLENBQUMsQ0FBQ1ksS0FBSyxDQUFDMEYsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUM1Q3RHLE1BQU0sQ0FBQyxDQUFDLENBQUNZLEtBQUssQ0FBQzBGLGNBQWMsQ0FBQyxZQUFZLENBQUM7VUFDN0M7VUFFQXBILFlBQVksQ0FBQ3FILFVBQVUsQ0FBQyxZQUFZLENBQUM7VUFDckN2RyxNQUFNLENBQUMsQ0FBQyxDQUFDdUUsU0FBUyxDQUFDSyxNQUFNLENBQUNILDRCQUFNLENBQUMrQixRQUFRLENBQUM7VUFDMUMsSUFBSXRJLG1CQUFtQixFQUNyQjhCLE1BQU0sQ0FBQyxDQUFDLENBQUN1RSxTQUFTLENBQUNLLE1BQU0sQ0FBQzFHLG1CQUFtQixDQUFDO1VBQ2hELEtBQUssSUFBSThFLEVBQUUsSUFBSS9CLEdBQUcsRUFBRStCLEVBQUUsQ0FBQ3VCLFNBQVMsQ0FBQ0ssTUFBTSxDQUFDSCw0QkFBTSxDQUFDSSxPQUFPLENBQUM7VUFDdkRiLEtBQUssQ0FBQ1ksTUFBTSxDQUFDLENBQUM7VUFDZHhGLFlBQVksQ0FBQ0wsT0FBTyxHQUFHLElBQUk7VUFDM0IsS0FBSyxJQUFJaUUsRUFBRSxJQUFJSCxLQUFLLENBQUNDLElBQUksQ0FBQytDLFdBQVcsQ0FBQ2hJLFFBQVEsQ0FBQyxFQUM3Q21GLEVBQUUsQ0FBQ3BDLEtBQUssQ0FBQ3dELE1BQU0sR0FBRyxFQUFFO1FBQ3hCO1FBQ0EsSUFDRUosS0FBSyxDQUFDcEQsS0FBSyxDQUFDeUQsR0FBRyxDQUFDN0IsVUFBVSxDQUFDaUUsSUFBSSxDQUFDQyxLQUFLLENBQUM3QyxHQUFHLENBQUNRLEdBQUcsQ0FBQyxDQUFDc0MsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUMxRDNDLEtBQUssQ0FBQ3BELEtBQUssQ0FBQzBELElBQUksQ0FBQzlCLFVBQVUsQ0FBQ2lFLElBQUksQ0FBQ0MsS0FBSyxDQUFDN0MsR0FBRyxDQUFDUyxJQUFJLENBQUMsQ0FBQ3FDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFDNUQ7VUFDQU4sT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLE1BQU07VUFDTHJDLEtBQUssQ0FBQ3BELEtBQUssQ0FBQ3lELEdBQUcsTUFBQXZELE1BQUEsQ0FBTStDLEdBQUcsQ0FBQ1EsR0FBRyxPQUFJO1VBQ2hDTCxLQUFLLENBQUNwRCxLQUFLLENBQUMwRCxJQUFJLE1BQUF4RCxNQUFBLENBQU0rQyxHQUFHLENBQUNTLElBQUksT0FBSTtVQUNsQ04sS0FBSyxDQUFDcEQsS0FBSyxDQUFDZ0csVUFBVSx3Q0FBd0M7VUFDOUQ1QyxLQUFLLENBQUNmLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxNQUFNO1lBQzVDb0QsT0FBTyxDQUFDLENBQUM7VUFDWCxDQUFDLENBQUM7UUFDSjtNQUNGO0lBQ0YsQ0FBQztJQUNELEtBQUssSUFBSXJELEVBQUUsSUFBSS9CLEdBQUcsRUFBRTtNQUNsQitCLEVBQUUsQ0FBQ3VCLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDQyw0QkFBTSxDQUFDSSxPQUFPLENBQUM7SUFDbEM7SUFDQSxJQUFJNUcsZUFBZSxFQUFFO01BQ25CLEtBQUssSUFBSStFLEVBQUUsSUFBSS9CLEdBQUcsRUFBRStCLEVBQUUsQ0FBQ3BDLEtBQUssQ0FBQzhELFNBQVMsTUFBQTVELE1BQUEsQ0FBTWtDLEVBQUUsQ0FBQ2lELFlBQVksT0FBSTtNQUMvRCxNQUFNWSxZQUFZLEdBQUc5QyxPQUFPLEdBQUc5RixlQUFlO01BQzlDLE1BQU02SSxhQUFhLEdBQ2pCbEQsMEJBQTBCLENBQUNtRCxTQUFTLEdBQUc5RixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM4RixTQUFTO01BQ3pELE1BQU1DLFVBQVUsR0FBR0YsYUFBYSxHQUFHRCxZQUFZO01BQy9DN0csTUFBTSxDQUFDLENBQUMsQ0FBQ1ksS0FBSyxDQUFDb0csVUFBVSxNQUFBbEcsTUFBQSxDQUFNa0csVUFBVSxPQUFJO01BQzdDaEgsTUFBTSxDQUFDLENBQUMsQ0FBQ1ksS0FBSyxDQUFDcUcsU0FBUyxNQUFBbkcsTUFBQSxDQUFNZCxNQUFNLENBQUMsQ0FBQyxDQUFDK0IsWUFBWSxPQUFJO0lBQ3pEO0lBQ0E2QiwwQkFBMEIsQ0FBQ2hELEtBQUssQ0FBQytFLFVBQVUsR0FBRyxRQUFRO0lBQ3REL0IsMEJBQTBCLENBQUNXLFNBQVMsQ0FBQ0ssTUFBTSxDQUFDSCw0QkFBTSxDQUFDSSxPQUFPLENBQUM7SUFDM0Q3RSxNQUFNLENBQUMsQ0FBQyxDQUFDdUUsU0FBUyxDQUFDQyxHQUFHLENBQUNDLDRCQUFNLENBQUMrQixRQUFRLENBQUM7SUFDdkMsSUFBSXRJLG1CQUFtQixFQUFFOEIsTUFBTSxDQUFDLENBQUMsQ0FBQ3VFLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDdEcsbUJBQW1CLENBQUM7SUFDcEVtQixpQkFBaUIsQ0FBQ04sT0FBTyxHQUFHeUUsYUFBYSxDQUFDekUsT0FBTyxDQUFDZ0YsT0FBTyxDQUFDO0lBQzFEN0UsWUFBWSxDQUFDcUgsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN0Q2IsTUFBTSxDQUFDSixRQUFRLENBQUNDLElBQUksQ0FBQ2hCLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDQyw0QkFBTSxDQUFDbUIsWUFBWSxDQUFDO0lBQ3ZERixNQUFNLENBQUN6QyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUV3QyxXQUFXLENBQUM7SUFDL0NDLE1BQU0sQ0FBQ3pDLGdCQUFnQixDQUFDLFdBQVcsRUFBRTZCLGVBQWUsQ0FBQztJQUNyRFksTUFBTSxDQUFDekMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFd0MsV0FBVyxDQUFDO0lBQ2hEQyxNQUFNLENBQUN6QyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUU2QixlQUFlLENBQUM7RUFDdkQsQ0FBQyxFQUNELEVBQ0YsQ0FBQztFQUVELElBQUFuRSxzQkFBZSxFQUFDLE1BQU07SUFDcEIsSUFBSXZCLFlBQVksQ0FBQ0wsT0FBTyxFQUFFO01BQ3hCLE1BQU1rQyxHQUFHLEdBQUc0QixLQUFLLENBQUNDLElBQUksQ0FBQzlDLE1BQU0sQ0FBQyxDQUFDLENBQUVuQyxRQUFRLENBQXFCO01BQzlELE1BQU1nSSxXQUFXLEdBQUc1RSxHQUFHLENBQUM2RSxJQUFJLENBQ3pCckksQ0FBQyxJQUNBLENBQUNBLENBQUMsQ0FBQzhHLFNBQVMsQ0FBQ3dCLFFBQVEsQ0FBQ3RCLDRCQUFNLENBQUNJLE9BQU8sQ0FBQyxJQUFJcEgsQ0FBQyxDQUFDbUQsS0FBSyxDQUFDOEQsU0FBUyxLQUFLLEtBQ25FLENBQUU7TUFDRG1CLFdBQVcsQ0FBQ2hJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBb0IrQyxLQUFLLENBQUN3RCxNQUFNLE1BQUF0RCxNQUFBLENBQ3REMUIsWUFBWSxDQUFDTCxPQUFPLENBQUVnRCxZQUFZLE9BQ2hDO01BQ0pzQixVQUFVLENBQUMsTUFBTTtRQUNkd0MsV0FBVyxDQUFDaEksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFvQitDLEtBQUssQ0FBQ3dELE1BQU0sTUFBQXRELE1BQUEsQ0FDdEQxQixZQUFZLENBQUNMLE9BQU8sQ0FBRWdELFlBQVksT0FDaEM7TUFDTixDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ1Q7RUFDRixDQUFDLEVBQUUsQ0FBQ2pDLFVBQVUsQ0FBQyxDQUFDO0VBRWhCLE1BQU1vSCxRQUFRLEdBQUFsTCxhQUFBLEtBQVFvQyxLQUFLLENBQVM7RUFDcEMsT0FBTzhJLFFBQVEsQ0FBQ3RJLFFBQVE7RUFDeEIsT0FBT3NJLFFBQVEsQ0FBQzNELGdCQUFnQjtFQUVoQyxNQUFNNEQsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHdEosUUFBUSxDQUFDLENBQ25DaEMsTUFBTSxDQUFFNEIsQ0FBQyxJQUFLcUMsVUFBVSxDQUFDakIsUUFBUSxDQUFDcEIsQ0FBQyxDQUFDYSxHQUFhLENBQUMsQ0FBQyxDQUNuRDhJLElBQUksQ0FDSCxDQUFDM0osQ0FBQyxFQUFFNEosQ0FBQyxLQUNIdkgsVUFBVSxDQUFDN0MsT0FBTyxDQUFDUSxDQUFDLENBQUNhLEdBQWEsQ0FBQyxHQUNuQ3dCLFVBQVUsQ0FBQzdDLE9BQU8sQ0FBQ29LLENBQUMsQ0FBQy9JLEdBQWEsQ0FDdEMsQ0FBQyxDQUNBZCxHQUFHLENBQUMsQ0FBQ0MsQ0FBZSxFQUFFakQsQ0FBQyxLQUFBd0IsYUFBQSxDQUFBQSxhQUFBLEtBQ25CeUIsQ0FBQztJQUNKYSxHQUFHLEVBQUVxQixLQUFLLENBQUNuRixDQUFDO0VBQUMsRUFDYixDQUFDO0VBRUwsSUFBQW1HLHNCQUFlLEVBQUMsTUFBTTtJQUNwQlgsTUFBTSxDQUFDLENBQUMsQ0FBRWlELGdCQUFnQixDQUFDLFlBQVksRUFBR2hKLENBQUMsSUFBSztNQUM5QyxNQUFNcU4sYUFBYSxHQUFHdEksV0FBVyxDQUFDOEcsSUFBSSxDQUFFbkMsTUFBTSxJQUM1Q0EsTUFBTSxDQUFDb0MsUUFBUSxDQUFDOUwsQ0FBQyxDQUFDbUcsTUFBYSxDQUNqQyxDQUFDO01BQ0QsSUFBSWtILGFBQWEsRUFBRTtRQUNqQnJOLENBQUMsQ0FBQ3NOLGNBQWMsQ0FBQyxDQUFDO1FBQ2xCOUQsYUFBYSxDQUFDO1VBQ1pyRCxNQUFNLEVBQUVrSDtRQUNWLENBQUMsQ0FBQztRQUVGLE1BQU1FLE1BQU0sR0FBRyxJQUFBeEcsaUJBQVEsRUFBRS9HLENBQWEsSUFBSztVQUN6QyxNQUFNd04sS0FBSyxHQUFHeE4sQ0FBQyxDQUFDa0wsT0FBTyxDQUFDLENBQUMsQ0FBQztVQUMxQixNQUFNLENBQUNKLENBQUMsRUFBRUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQ3dDLEtBQUssQ0FBQ0MsT0FBTyxFQUFFRCxLQUFLLENBQUNFLE9BQU8sQ0FBQztVQUM3QyxNQUFNMUcsR0FBRyxHQUFHNEIsS0FBSyxDQUFDQyxJQUFJLENBQUM5QyxNQUFNLENBQUMsQ0FBQyxDQUFDbkMsUUFBUSxDQUFxQjtVQUM3RCxNQUFNK0osaUJBQWlCLEdBQUczRyxHQUFHLENBQUM0RyxTQUFTLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFdE4sQ0FBQyxLQUFLO1lBQ2hELE1BQU11TixJQUFJLEdBQUdELENBQUMsYUFBREEsQ0FBQyx1QkFBREEsQ0FBQyxDQUFFaEUscUJBQXFCLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUNpRSxJQUFJLEVBQUUsT0FBTyxLQUFLO1lBQ3ZCLE9BQU9BLElBQUksQ0FBQzFELEdBQUcsR0FBR1ksQ0FBQyxJQUFJOEMsSUFBSSxDQUFDMUQsR0FBRyxHQUFHMEQsSUFBSSxDQUFDM0QsTUFBTSxHQUFHYSxDQUFDO1VBQ25ELENBQUMsQ0FBQztVQUNGLElBQUkyQyxpQkFBaUIsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM1QixNQUFNNUUsRUFBRSxHQUFHL0IsR0FBRyxDQUFDMkcsaUJBQWlCLENBQUM7WUFDakMsTUFBTUcsSUFBSSxHQUFHL0UsRUFBRSxDQUFDYyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3ZDL0MsbUJBQW1CLENBQ2pCO2NBQ0VYLE1BQU0sRUFBRTRDLEVBQUU7Y0FDVm5CLE9BQU8sRUFBRW9ELENBQUMsR0FBRzhDLElBQUksQ0FBQzFEO1lBQ3BCLENBQUMsRUFDRHBELEdBQUcsRUFDSHVDLGFBQWEsQ0FBQ3pFLE9BQ2hCLENBQUM7VUFDSDtRQUNGLENBQUMsRUFBRSxHQUFHLENBQUM7UUFDUCxNQUFNN0UsQ0FBQyxHQUFHRCxDQUFDLENBQUNtRyxNQUF3QjtRQUNwQyxNQUFNNEgsV0FBVyxHQUFJL04sQ0FBYSxJQUFLO1VBQ3JDQSxDQUFDLENBQUNnTyxlQUFlLENBQUMsQ0FBQztVQUNuQnZDLE1BQU0sQ0FBQ3dDLGFBQWEsQ0FBQyxJQUFJQyxVQUFVLENBQUNsTyxDQUFDLENBQUNtTyxJQUFJLEVBQUVuTyxDQUFRLENBQUMsQ0FBQztVQUN0RHVOLE1BQU0sQ0FBQ3ZOLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxNQUFNb08sUUFBUSxHQUFJcE8sQ0FBYSxJQUFLO1VBQ2xDQyxDQUFDLENBQUNnSixtQkFBbUIsQ0FBQyxXQUFXLEVBQUU4RSxXQUFXLENBQUM7VUFDL0M5TixDQUFDLENBQUNnSixtQkFBbUIsQ0FBQyxVQUFVLEVBQUVtRixRQUFRLENBQUM7VUFDM0MzQyxNQUFNLENBQUN3QyxhQUFhLENBQUMsSUFBSUMsVUFBVSxDQUFDbE8sQ0FBQyxDQUFDbU8sSUFBSSxFQUFFbk8sQ0FBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNEQyxDQUFDLENBQUMrSSxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUrRSxXQUFXLENBQUM7UUFDNUM5TixDQUFDLENBQUMrSSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUVvRixRQUFRLENBQUM7TUFDMUM7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sTUFBTXBPLENBQUMsR0FBRyxJQUFBMkYsY0FBTyxFQUNmLE9BQU87SUFDTDBJLFVBQVUsRUFBR3RGLEVBQWtCLElBQUs7TUFDbENBLEVBQUUsQ0FBQ0MsZ0JBQWdCLENBQUMsV0FBVyxFQUFFUSxhQUFhLENBQUM7TUFDL0N6RSxXQUFXLENBQUNqRCxJQUFJLENBQUNpSCxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNEdUYsWUFBWSxFQUFHdkYsRUFBa0IsSUFBSztNQUNwQ0EsRUFBRSxDQUFDRSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUVPLGFBQWEsQ0FBQztNQUNsRHpFLFdBQVcsQ0FBQ3lELE1BQU0sQ0FBQ3pELFdBQVcsQ0FBQy9CLE9BQU8sQ0FBQytGLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0R3RixFQUFFLEVBQUV0SixZQUFZLENBQUN1SjtFQUNuQixDQUFDLENBQUMsRUFDRixFQUNGLENBQUM7RUFFRCxvQkFDRW5QLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQStOLGFBQUEsQ0FBQ3ZMLG9CQUFvQixDQUFDd0wsUUFBUTtJQUFDck0sS0FBSyxFQUFFckM7RUFBRSxnQkFDdENYLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQStOLGFBQUEsUUFBQXROLFFBQUE7SUFDRXdOLEdBQUcsRUFBRXRKLE9BQVE7SUFDYnhCLFNBQVMsS0FBQWdELE1BQUEsQ0FBSzJELDRCQUFNLENBQUNvRSxJQUFJLE9BQUEvSCxNQUFBLENBQUloRCxTQUFTLE9BQUFnRCxNQUFBLENBQ3BDN0MsZUFBZSxHQUFHd0csNEJBQU0sQ0FBQ3FFLFVBQVUsR0FBRyxFQUFFO0VBQ3ZDLEdBQ0M1QixRQUFRLEdBRVhuSixJQUFJLEtBQUtWLHdCQUF3QixDQUFDVyxRQUFRLGdCQUN6QzFFLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQStOLGFBQUEsQ0FBQy9PLGlCQUFBLENBQUFnQixPQUFnQixRQUFFd00sZ0JBQW1DLENBQUMsZ0JBRXZEN04sTUFBQSxDQUFBcUIsT0FBQSxDQUFBK04sYUFBQSxDQUFDbFAsdUJBQUEsQ0FBQW1CLE9BQXNCO0lBQ3JCbUQsU0FBUyxFQUFFMkcsNEJBQU0sQ0FBQ21DLFVBQVc7SUFDN0JtQyxjQUFjLEVBQUVDLG9DQUF3QixDQUFDQyxNQUFPO0lBQ2hEQyxNQUFNLEVBQUU7TUFDTkMsUUFBUSxFQUFFO1FBQ1JDLGVBQWUsRUFBRSxFQUFFO1FBQ25CQyxjQUFjLEVBQUU7TUFDbEIsQ0FBQztNQUNEQyxPQUFPLEVBQUU7UUFDUEYsZUFBZSxFQUFFM0UsNEJBQU0sQ0FBQzhFLFlBQVk7UUFDcENGLGNBQWMsRUFBRUcseUJBQWdCLENBQUNDO01BQ25DO0lBQ0YsQ0FBRTtJQUNGQyxnQkFBZ0IsS0FBQTVJLE1BQUEsQ0FBS2hELFNBQVM7RUFBRyxnQkFFakN4RSxNQUFBLENBQUFxQixPQUFBLENBQUErTixhQUFBLENBQUNwUCxNQUFBLENBQUFxUSxRQUFRO0lBQUNyTCxHQUFHLEVBQUV5QjtFQUFRLEdBQ3BCLENBQUMsR0FBR2xDLFFBQVEsQ0FBQyxDQUNYaEMsTUFBTSxDQUFFNEIsQ0FBQyxJQUFLcUMsVUFBVSxDQUFDakIsUUFBUSxDQUFDcEIsQ0FBQyxDQUFDYSxHQUFhLENBQUMsQ0FBQyxDQUNuRDhJLElBQUksQ0FDSCxDQUFDM0osQ0FBQyxFQUFFNEosQ0FBQyxLQUNIdkgsVUFBVSxDQUFDN0MsT0FBTyxDQUFDUSxDQUFDLENBQUNhLEdBQWEsQ0FBQyxHQUNuQ3dCLFVBQVUsQ0FBQzdDLE9BQU8sQ0FBQ29LLENBQUMsQ0FBQy9JLEdBQWEsQ0FDdEMsQ0FBQyxDQUNBZCxHQUFHLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFakQsQ0FBQyxrQkFDUmxCLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQStOLGFBQUEsQ0FBQ2tCLFdBQVc7SUFBQ3RMLEdBQUcsRUFBRTlELENBQUU7SUFBQ3FQLEVBQUUsRUFBRXBNLENBQUMsQ0FBQ2E7RUFBYyxHQUN0Q2IsQ0FDVSxDQUNkLENBQ0ssQ0FDWSxDQUV2QixDQUN3QixDQUFDO0FBRXBDO0FBRUEsU0FBU21NLFdBQVdBLENBQUFFLEtBQUEsRUFBc0Q7RUFBQSxJQUFyRDtJQUFFak0sUUFBUTtJQUFFZ007RUFBc0MsQ0FBQyxHQUFBQyxLQUFBO0VBQ3RFLE1BQU07SUFBRUM7RUFBUSxDQUFDLEdBQUcsSUFBQUMsZ0JBQU8sRUFBQ0gsRUFBRSxFQUFFL0ssU0FBUyxFQUFFO0lBQ3pDbUwsV0FBVyxFQUFFQSxDQUFDQyxFQUFFLEVBQUVDLEVBQUUsRUFBRWpRLENBQUMsS0FBSztNQUMxQkEsQ0FBQyxDQUFDa1EsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUNuTyxPQUFPLENBQzlCb08sR0FBRyxJQUFNQSxHQUFHLENBQUN6SixLQUFLLENBQUMrRSxVQUFVLEdBQUcsUUFDbkMsQ0FBQztJQUNILENBQUM7SUFDRDJFLFlBQVlBLENBQUN0RyxLQUFLLEVBQUU7TUFDbEI7SUFBQSxDQUNEO0lBQ0R1RyxTQUFTLEVBQUVBLENBQUEsS0FBTTtNQUNmLElBQUlSLE9BQU8sQ0FBQ2hMLE9BQU8sRUFDakJnTCxPQUFPLENBQUNoTCxPQUFPLENBQ1pxTCxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FDdkJuTyxPQUFPLENBQUVvTyxHQUFHLElBQU1BLEdBQUcsQ0FBQ3pKLEtBQUssQ0FBQytFLFVBQVUsR0FBRyxFQUFHLENBQUM7SUFDcEQ7RUFDRixDQUFDLENBQUM7RUFDRixvQkFBT3JNLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQStOLGFBQUE7SUFBS0UsR0FBRyxFQUFFbUI7RUFBUSxHQUFFbE0sUUFBYyxDQUFDO0FBQzVDO0FBRU8sU0FBUzJNLHNCQUFzQkEsQ0FBQSxFQUFHO0VBQ3ZDLE1BQU1DLFNBQVMsR0FBRyxJQUFBeEwsYUFBTSxFQUFpQixJQUFXLENBQUM7RUFDckQsTUFBTXlMLEdBQUcsR0FBRyxJQUFBQyxpQkFBVSxFQUFDeE4sb0JBQW9CLENBQUM7RUFDNUMsSUFBQXdELHNCQUFlLEVBQUMsTUFBTTtJQUNwQixJQUFJLENBQUMrSixHQUFHLEVBQUU7SUFDVixNQUFNO01BQUVwQyxVQUFVO01BQUVDO0lBQWEsQ0FBQyxHQUFHbUMsR0FBRztJQUN4Q3BDLFVBQVUsQ0FBQ21DLFNBQVMsQ0FBQzFMLE9BQVEsQ0FBQztJQUM5QixPQUFPLE1BQU13SixZQUFZLENBQUNrQyxTQUFTLENBQUMxTCxPQUFRLENBQUM7RUFDL0MsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUNOLE9BQU87SUFDTDBMLFNBQVMsRUFBRUMsR0FBRyxHQUFHRCxTQUFTLEdBQUczTDtFQUMvQixDQUFDO0FBQ0g7QUFFTyxTQUFTOEwsa0JBQWtCQSxDQUNoQ0MsTUFFQyxFQUNEO0VBQ0EsTUFBTTtJQUFFckM7RUFBRyxDQUFDLEdBQUcsSUFBQW1DLGlCQUFVLEVBQUN4TixvQkFBb0IsQ0FBQztFQUMvQyxJQUFBdUMsZ0JBQVMsRUFBQyxNQUFNO0lBQ2QsTUFBTW9MLGFBQW9CLEdBQUcsRUFBRTtJQUMvQixLQUFLLElBQUlDLFNBQVMsSUFBSUYsTUFBTSxFQUFFO01BQzVCQyxhQUFhLENBQUMvTyxJQUFJLENBQUN5TSxFQUFFLENBQUN1QyxTQUFTLEVBQVlGLE1BQU0sQ0FBQ0UsU0FBUyxDQUFXLENBQUMsQ0FBQztJQUMxRTtJQUNBLE9BQU8sTUFBTTtNQUNYRCxhQUFhLENBQUM3TyxPQUFPLENBQUUrTyxDQUFDLElBQUtBLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDSCxNQUFNLENBQUMsQ0FBQztBQUNkIiwiaWdub3JlTGlzdCI6W119