@openmrs/esm-app-shell 4.4.2-pre.732 → 4.4.2-pre.733

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 (147) hide show
  1. package/.turbo/turbo-build.log +19 -21
  2. package/dist/c2bec8aeaf031bb2.js +1 -0
  3. package/dist/{c3c8f6de7c502b77.js.map → c2bec8aeaf031bb2.js.map} +1 -1
  4. package/dist/index.html +1 -1
  5. package/dist/{openmrs.73542e4d53a4bf11.js → openmrs.69595499820267ed.js} +2 -2
  6. package/dist/{openmrs.73542e4d53a4bf11.js.map → openmrs.69595499820267ed.js.map} +1 -1
  7. package/dist/service-worker.js +1 -1
  8. package/lib/esm-devtools-app/988.js +1 -1
  9. package/lib/esm-devtools-app/main.js +1 -1
  10. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -1
  11. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +3 -3
  12. package/lib/esm-devtools-app/openmrs-esm-devtools-app.old +1 -1
  13. package/lib/esm-implementer-tools-app/807.js +1 -1
  14. package/lib/esm-implementer-tools-app/main.js +1 -1
  15. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -1
  16. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +3 -3
  17. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.old +1 -1
  18. package/lib/esm-primary-navigation-app/363.js +1 -1
  19. package/lib/esm-primary-navigation-app/main.js +1 -1
  20. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
  21. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +3 -3
  22. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.old +1 -1
  23. package/lib/index.html +1 -1
  24. package/lib/openmrs.js +7 -18
  25. package/lib/service-worker.js +1 -1
  26. package/package.json +4 -4
  27. package/src/load-modules.ts +0 -11
  28. package/src/run.ts +0 -4
  29. package/dist/c3c8f6de7c502b77.js +0 -1
  30. package/lib/esm-login-app/236.js +0 -1
  31. package/lib/esm-login-app/240.js +0 -1
  32. package/lib/esm-login-app/261.js +0 -1
  33. package/lib/esm-login-app/261.js.map +0 -1
  34. package/lib/esm-login-app/263.js +0 -1
  35. package/lib/esm-login-app/263.js.map +0 -1
  36. package/lib/esm-login-app/272.js +0 -1
  37. package/lib/esm-login-app/319.js +0 -1
  38. package/lib/esm-login-app/336.js +0 -1
  39. package/lib/esm-login-app/337.js +0 -1
  40. package/lib/esm-login-app/337.js.map +0 -1
  41. package/lib/esm-login-app/390.js +0 -1
  42. package/lib/esm-login-app/390.js.map +0 -1
  43. package/lib/esm-login-app/438.js +0 -2
  44. package/lib/esm-login-app/438.js.LICENSE.txt +0 -9
  45. package/lib/esm-login-app/438.js.map +0 -1
  46. package/lib/esm-login-app/539.js +0 -1
  47. package/lib/esm-login-app/574.js +0 -1
  48. package/lib/esm-login-app/610.js +0 -1
  49. package/lib/esm-login-app/610.js.map +0 -1
  50. package/lib/esm-login-app/611.js +0 -1
  51. package/lib/esm-login-app/611.js.map +0 -1
  52. package/lib/esm-login-app/63.js +0 -2
  53. package/lib/esm-login-app/63.js.LICENSE.txt +0 -32
  54. package/lib/esm-login-app/63.js.map +0 -1
  55. package/lib/esm-login-app/642.js +0 -1
  56. package/lib/esm-login-app/642.js.map +0 -1
  57. package/lib/esm-login-app/644.js +0 -1
  58. package/lib/esm-login-app/673.js +0 -1
  59. package/lib/esm-login-app/735.js +0 -2
  60. package/lib/esm-login-app/735.js.LICENSE.txt +0 -9
  61. package/lib/esm-login-app/735.js.map +0 -1
  62. package/lib/esm-login-app/737.js +0 -2
  63. package/lib/esm-login-app/737.js.LICENSE.txt +0 -5
  64. package/lib/esm-login-app/737.js.map +0 -1
  65. package/lib/esm-login-app/757.js +0 -1
  66. package/lib/esm-login-app/788.js +0 -2
  67. package/lib/esm-login-app/788.js.LICENSE.txt +0 -19
  68. package/lib/esm-login-app/788.js.map +0 -1
  69. package/lib/esm-login-app/829.js +0 -1
  70. package/lib/esm-login-app/829.js.map +0 -1
  71. package/lib/esm-login-app/889.js +0 -2
  72. package/lib/esm-login-app/889.js.LICENSE.txt +0 -3
  73. package/lib/esm-login-app/889.js.map +0 -1
  74. package/lib/esm-login-app/main.js +0 -1
  75. package/lib/esm-login-app/main.js.map +0 -1
  76. package/lib/esm-login-app/openmrs-esm-login-app.js +0 -1
  77. package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +0 -680
  78. package/lib/esm-login-app/openmrs-esm-login-app.js.map +0 -1
  79. package/lib/esm-login-app/openmrs-esm-login-app.old +0 -1
  80. package/lib/esm-offline-tools-app/1584c81d564cacde.svg +0 -8
  81. package/lib/esm-offline-tools-app/206.js +0 -1
  82. package/lib/esm-offline-tools-app/206.js.map +0 -1
  83. package/lib/esm-offline-tools-app/263.js +0 -1
  84. package/lib/esm-offline-tools-app/263.js.map +0 -1
  85. package/lib/esm-offline-tools-app/264.js +0 -1
  86. package/lib/esm-offline-tools-app/264.js.map +0 -1
  87. package/lib/esm-offline-tools-app/281.js +0 -1
  88. package/lib/esm-offline-tools-app/281.js.map +0 -1
  89. package/lib/esm-offline-tools-app/290.js +0 -1
  90. package/lib/esm-offline-tools-app/290.js.map +0 -1
  91. package/lib/esm-offline-tools-app/316.js +0 -1
  92. package/lib/esm-offline-tools-app/316.js.map +0 -1
  93. package/lib/esm-offline-tools-app/391.js +0 -1
  94. package/lib/esm-offline-tools-app/391.js.map +0 -1
  95. package/lib/esm-offline-tools-app/412.js +0 -1
  96. package/lib/esm-offline-tools-app/412.js.map +0 -1
  97. package/lib/esm-offline-tools-app/47.js +0 -1
  98. package/lib/esm-offline-tools-app/47.js.map +0 -1
  99. package/lib/esm-offline-tools-app/501.js +0 -1
  100. package/lib/esm-offline-tools-app/501.js.map +0 -1
  101. package/lib/esm-offline-tools-app/526.js +0 -1
  102. package/lib/esm-offline-tools-app/526.js.map +0 -1
  103. package/lib/esm-offline-tools-app/538.js +0 -1
  104. package/lib/esm-offline-tools-app/538.js.map +0 -1
  105. package/lib/esm-offline-tools-app/541.js +0 -1
  106. package/lib/esm-offline-tools-app/541.js.map +0 -1
  107. package/lib/esm-offline-tools-app/574.js +0 -1
  108. package/lib/esm-offline-tools-app/594.js +0 -1
  109. package/lib/esm-offline-tools-app/594.js.map +0 -1
  110. package/lib/esm-offline-tools-app/63.js +0 -2
  111. package/lib/esm-offline-tools-app/63.js.LICENSE.txt +0 -32
  112. package/lib/esm-offline-tools-app/63.js.map +0 -1
  113. package/lib/esm-offline-tools-app/697.js +0 -2
  114. package/lib/esm-offline-tools-app/697.js.LICENSE.txt +0 -9
  115. package/lib/esm-offline-tools-app/697.js.map +0 -1
  116. package/lib/esm-offline-tools-app/733.js +0 -1
  117. package/lib/esm-offline-tools-app/733.js.map +0 -1
  118. package/lib/esm-offline-tools-app/735.js +0 -2
  119. package/lib/esm-offline-tools-app/735.js.LICENSE.txt +0 -9
  120. package/lib/esm-offline-tools-app/735.js.map +0 -1
  121. package/lib/esm-offline-tools-app/752.js +0 -1
  122. package/lib/esm-offline-tools-app/752.js.map +0 -1
  123. package/lib/esm-offline-tools-app/757.js +0 -1
  124. package/lib/esm-offline-tools-app/78.js +0 -1
  125. package/lib/esm-offline-tools-app/78.js.map +0 -1
  126. package/lib/esm-offline-tools-app/788.js +0 -2
  127. package/lib/esm-offline-tools-app/788.js.LICENSE.txt +0 -19
  128. package/lib/esm-offline-tools-app/788.js.map +0 -1
  129. package/lib/esm-offline-tools-app/82.js +0 -2
  130. package/lib/esm-offline-tools-app/82.js.LICENSE.txt +0 -5
  131. package/lib/esm-offline-tools-app/82.js.map +0 -1
  132. package/lib/esm-offline-tools-app/889.js +0 -2
  133. package/lib/esm-offline-tools-app/889.js.LICENSE.txt +0 -3
  134. package/lib/esm-offline-tools-app/889.js.map +0 -1
  135. package/lib/esm-offline-tools-app/937.js +0 -1
  136. package/lib/esm-offline-tools-app/937.js.map +0 -1
  137. package/lib/esm-offline-tools-app/967.js +0 -1
  138. package/lib/esm-offline-tools-app/967.js.map +0 -1
  139. package/lib/esm-offline-tools-app/main.js +0 -2
  140. package/lib/esm-offline-tools-app/main.js.LICENSE.txt +0 -5
  141. package/lib/esm-offline-tools-app/main.js.map +0 -1
  142. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +0 -1
  143. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +0 -754
  144. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.map +0 -1
  145. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.old +0 -1
  146. package/src/dependencies.ts +0 -37
  147. /package/dist/{openmrs.73542e4d53a4bf11.js.LICENSE.txt → openmrs.69595499820267ed.js.LICENSE.txt} +0 -0
package/lib/openmrs.js CHANGED
@@ -2601,7 +2601,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2601
2601
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2602
2602
 
2603
2603
  "use strict";
2604
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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NkwseUJBQXlCLGVBQWV6SyxpRUFBYUE7QUFFNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3JlYWN0L2VzL2NvbXBvbmVudHMvVGlsZS9UaWxlLmpzPzBjYTYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMTYsIDIwMjJcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IHsgaW5oZXJpdHMgYXMgX2luaGVyaXRzLCBjcmVhdGVTdXBlciBhcyBfY3JlYXRlU3VwZXIsIGNsYXNzQ2FsbENoZWNrIGFzIF9jbGFzc0NhbGxDaGVjaywgY3JlYXRlQ2xhc3MgYXMgX2NyZWF0ZUNsYXNzLCBvYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMsIGRlZmluZVByb3BlcnR5IGFzIF9kZWZpbmVQcm9wZXJ0eSwgZXh0ZW5kcyBhcyBfZXh0ZW5kcywgYXNzZXJ0VGhpc0luaXRpYWxpemVkIGFzIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIHNsaWNlZFRvQXJyYXkgYXMgX3NsaWNlZFRvQXJyYXkgfSBmcm9tICcuLi8uLi9fdmlydHVhbC9fcm9sbHVwUGx1Z2luQmFiZWxIZWxwZXJzLmpzJztcbmltcG9ydCBSZWFjdF9fZGVmYXVsdCwgeyBDb21wb25lbnQsIHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgTGluayBmcm9tICcuLi9MaW5rL0xpbmsuanMnO1xuaW1wb3J0IHsgQ2hlY2tib3hDaGVja2VkRmlsbGVkLCBDaGVja2JveCwgQ2hldnJvbkRvd24gfSBmcm9tICdAY2FyYm9uL2ljb25zLXJlYWN0JztcbmltcG9ydCBkZXByZWNhdGUgZnJvbSAnLi4vLi4vcHJvcC10eXBlcy9kZXByZWNhdGUuanMnO1xuaW1wb3J0IHsgY29tcG9zZUV2ZW50SGFuZGxlcnMgfSBmcm9tICcuLi8uLi90b29scy9ldmVudHMuanMnO1xuaW1wb3J0IHsgUHJlZml4Q29udGV4dCwgdXNlUHJlZml4IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvdXNlUHJlZml4LmpzJztcbmltcG9ydCB7IG1hdGNoZXMgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9rZXlib2FyZC9tYXRjaC5qcyc7XG5pbXBvcnQgeyBFbnRlciwgU3BhY2UgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9rZXlib2FyZC9rZXlzLmpzJztcblxudmFyIF9DaGVja2JveENoZWNrZWRGaWxsZSwgX0NoZWNrYm94LCBfQ2hldnJvbkRvd247XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImxpZ2h0XCJdLFxuICAgIF9leGNsdWRlZDIgPSBbXCJjaGlsZHJlblwiLCBcImhyZWZcIiwgXCJjbGFzc05hbWVcIiwgXCJoYW5kbGVDbGlja1wiLCBcImhhbmRsZUtleURvd25cIiwgXCJvbkNsaWNrXCIsIFwib25LZXlEb3duXCIsIFwiY2xpY2tlZFwiLCBcImxpZ2h0XCJdLFxuICAgIF9leGNsdWRlZDMgPSBbXCJjaGlsZHJlblwiLCBcImlkXCIsIFwidGFiSW5kZXhcIiwgXCJ2YWx1ZVwiLCBcIm5hbWVcIiwgXCJ0aXRsZVwiLCBcImljb25EZXNjcmlwdGlvblwiLCBcImNsYXNzTmFtZVwiLCBcImhhbmRsZUNsaWNrXCIsIFwiaGFuZGxlS2V5RG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbkNoYW5nZVwiLCBcIm9uS2V5RG93blwiLCBcImxpZ2h0XCIsIFwiZGlzYWJsZWRcIiwgXCJzZWxlY3RlZFwiXSxcbiAgICBfZXhjbHVkZWQ0ID0gW1widGFiSW5kZXhcIiwgXCJjbGFzc05hbWVcIiwgXCJleHBhbmRlZFwiLCBcInRpbGVNYXhIZWlnaHRcIiwgXCJ0aWxlUGFkZGluZ1wiLCBcImhhbmRsZUNsaWNrXCIsIFwib25LZXlVcFwiLCBcInRpbGVDb2xsYXBzZWRJY29uVGV4dFwiLCBcInRpbGVFeHBhbmRlZEljb25UZXh0XCIsIFwidGlsZUNvbGxhcHNlZExhYmVsXCIsIFwidGlsZUV4cGFuZGVkTGFiZWxcIiwgXCJvbkJlZm9yZUNsaWNrXCIsIFwibGlnaHRcIl07XG52YXIgVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVGlsZSwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUaWxlKTtcblxuICBmdW5jdGlvbiBUaWxlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlKTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcblxuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICBsaWdodCA9IF90aGlzJHByb3BzLmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgICAgIHZhciB0aWxlQ2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICAgIGNsYXNzTmFtZTogdGlsZUNsYXNzZXNcbiAgICAgIH0sIHJlc3QpLCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2xcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxudmFyIENsaWNrYWJsZVRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQyKSB7XG4gIF9pbmhlcml0cyhDbGlja2FibGVUaWxlLCBfQ29tcG9uZW50Mik7XG5cbiAgdmFyIF9zdXBlcjIgPSBfY3JlYXRlU3VwZXIoQ2xpY2thYmxlVGlsZSk7XG5cbiAgZnVuY3Rpb24gQ2xpY2thYmxlVGlsZSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2xpY2thYmxlVGlsZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIyLmNhbGwuYXBwbHkoX3N1cGVyMiwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3RhdGVcIiwge30pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUNsaWNrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2xpY2tlZDogIV90aGlzLnN0YXRlLmNsaWNrZWRcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUNsaSwgX3RoaXMkcHJvcHMyLCBfdGhpcyRwcm9wcyRvbkNsaWNrLCBfdGhpcyRwcm9wczM7XG5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUNsaWNrIHByb3Agd2hlbiBoYW5kbGVDbGljayBpcyBkZXByZWNhdGVkXG4gICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlQ2xpID0gKF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzKS5oYW5kbGVDbGljaykgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlQ2xpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVDbGkuY2FsbChfdGhpcyRwcm9wczIsIGV2dCkpIHx8ICgoX3RoaXMkcHJvcHMkb25DbGljayA9IChfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcykub25DbGljaykgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkb25DbGljay5jYWxsKF90aGlzJHByb3BzMywgZXZ0KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVLZXlEb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjbGlja2VkOiAhX3RoaXMuc3RhdGUuY2xpY2tlZFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUtleSwgX3RoaXMkcHJvcHM0O1xuXG4gICAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUtleURvd24gcHJvcCB3aGVuIGhhbmRsZUtleURvd24gaXMgZGVwcmVjYXRlZFxuICAgICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlS2V5ID0gKF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzKS5oYW5kbGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVLZXkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUtleS5jYWxsKF90aGlzJHByb3BzNCwgZXZ0KSkgfHwgX3RoaXMucHJvcHMub25LZXlEb3duKGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUtleTIsIF90aGlzJHByb3BzNTtcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlS2V5RG93biBwcm9wIHdoZW4gaGFuZGxlS2V5RG93biBpcyBkZXByZWNhdGVkXG4gICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiA9IChfdGhpcyRwcm9wczUgPSBfdGhpcy5wcm9wcykuaGFuZGxlS2V5RG93bikgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlS2V5Mi5jYWxsKF90aGlzJHByb3BzNSwgZXZ0KSkgfHwgX3RoaXMucHJvcHMub25LZXlEb3duKGV2dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ2xpY2thYmxlVGlsZSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY3gyO1xuXG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNi5jaGlsZHJlbixcbiAgICAgICAgICBocmVmID0gX3RoaXMkcHJvcHM2LmhyZWYsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM2LmNsYXNzTmFtZTtcbiAgICAgICAgICBfdGhpcyRwcm9wczYuaGFuZGxlQ2xpY2s7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmhhbmRsZUtleURvd247XG4gICAgICAgICAgX3RoaXMkcHJvcHM2Lm9uQ2xpY2s7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2Lm9uS2V5RG93bjtcbiAgICAgICAgICBfdGhpcyRwcm9wczYuY2xpY2tlZDtcbiAgICAgICAgICB2YXIgbGlnaHQgPSBfdGhpcyRwcm9wczYubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczYsIF9leGNsdWRlZDIpO1xuXG4gICAgICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWNsaWNrYWJsZVwiKSwgKF9jeDIgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDIsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLWNsaWNrZWRcIiksIHRoaXMuc3RhdGUuY2xpY2tlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3gyLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfY3gyKSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChMaW5rLCBfZXh0ZW5kcyh7XG4gICAgICAgIGhyZWY6IGhyZWYsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlc1xuICAgICAgfSwgcmVzdCwge1xuICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLFxuICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlS2V5RG93blxuICAgICAgfSksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoX3JlZiwgc3RhdGUpIHtcbiAgICAgIHZhciBjbGlja2VkID0gX3JlZi5jbGlja2VkO1xuICAgICAgdmFyIHByZXZDbGlja2VkID0gc3RhdGUucHJldkNsaWNrZWQ7XG4gICAgICByZXR1cm4gcHJldkNsaWNrZWQgPT09IGNsaWNrZWQgPyBudWxsIDoge1xuICAgICAgICBjbGlja2VkOiBjbGlja2VkLFxuICAgICAgICBwcmV2Q2xpY2tlZDogY2xpY2tlZFxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2xpY2thYmxlVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogRGVwcmVjYXRlZCBpbiB2MTEuIFVzZSAnb25DbGljaycgaW5zdGVhZC5cbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlQ2xpY2sgcHJvcCBmb3IgQ2xpY2thYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uQ2xpY2suIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIGhhbmRsZUtleURvd246IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVLZXlEb3duIHByb3AgZm9yIENsaWNrYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbktleURvd24uIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgaHJlZiBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICBocmVmOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBUaGUgcmVsIHByb3BlcnR5IGZvciB0aGUgbGluay5cbiAgICovXG4gIHJlbDogUHJvcFR5cGVzLnN0cmluZ1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBjbGlja2VkOiBmYWxzZSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bigpIHt9LFxuICBsaWdodDogZmFsc2Vcbn0pO1xuXG5mdW5jdGlvbiBTZWxlY3RhYmxlVGlsZShwcm9wcykge1xuICB2YXIgX2N4MztcblxuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGlkID0gcHJvcHMuaWQsXG4gICAgICB0YWJJbmRleCA9IHByb3BzLnRhYkluZGV4LFxuICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgIG5hbWUgPSBwcm9wcy5uYW1lLFxuICAgICAgdGl0bGUgPSBwcm9wcy50aXRsZTtcbiAgICAgIHByb3BzLmljb25EZXNjcmlwdGlvbjtcbiAgICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBoYW5kbGVDbGljayA9IHByb3BzLmhhbmRsZUNsaWNrLFxuICAgICAgaGFuZGxlS2V5RG93biA9IHByb3BzLmhhbmRsZUtleURvd24sXG4gICAgICBvbkNsaWNrID0gcHJvcHMub25DbGljayxcbiAgICAgIG9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2UsXG4gICAgICBvbktleURvd24gPSBwcm9wcy5vbktleURvd24sXG4gICAgICBsaWdodCA9IHByb3BzLmxpZ2h0LFxuICAgICAgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIHNlbGVjdGVkID0gcHJvcHMuc2VsZWN0ZWQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQzKTtcblxuICB2YXIgcHJlZml4ID0gdXNlUHJlZml4KCk7IC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBvbkNsaWNrIHdoZW4gaGFuZGxlQ2xpY2sgcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgdmFyIGNsaWNrSGFuZGxlciA9IGhhbmRsZUNsaWNrIHx8IG9uQ2xpY2s7IC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBvbktleURvd24gd2hlbiBoYW5kbGVLZXlEb3duIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIHZhciBrZXlEb3duSGFuZGxlciA9IGhhbmRsZUtleURvd24gfHwgb25LZXlEb3duO1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShzZWxlY3RlZCksXG4gICAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIGlzU2VsZWN0ZWQgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0SXNTZWxlY3RlZCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIGlucHV0ID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLXNlbGVjdGFibGVcIiksIChfY3gzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1zZWxlY3RlZFwiKSwgaXNTZWxlY3RlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tZGlzYWJsZWRcIiksIGRpc2FibGVkKSwgX2N4MyksIGNsYXNzTmFtZSk7XG4gIHZhciBpbnB1dENsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWlucHV0XCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtaW5wdXQtLWNoZWNrZWRcIiksIGlzU2VsZWN0ZWQpKTsgLy8gVE9ETzogcmVuYW1lIHRvIGhhbmRsZUNsaWNrIHdoZW4gaGFuZGxlQ2xpY2sgcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgZnVuY3Rpb24gaGFuZGxlT25DbGljayhldnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQucGVyc2lzdCgpO1xuICAgIHNldElzU2VsZWN0ZWQoIWlzU2VsZWN0ZWQpO1xuICAgIGNsaWNrSGFuZGxlcihldnQpO1xuICAgIG9uQ2hhbmdlKGV2dCk7XG4gIH0gLy8gVE9ETzogcmVuYW1lIHRvIGhhbmRsZUtleURvd24gd2hlbiBoYW5kbGVLZXlEb3duIHByb3AgaXMgZGVwcmVjYXRlZFxuXG5cbiAgZnVuY3Rpb24gaGFuZGxlT25LZXlEb3duKGV2dCkge1xuICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBzZXRJc1NlbGVjdGVkKCFpc1NlbGVjdGVkKTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfVxuXG4gICAga2V5RG93bkhhbmRsZXIoZXZ0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldmVudCkge1xuICAgIHNldElzU2VsZWN0ZWQoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgIG9uQ2hhbmdlKGV2ZW50KTtcbiAgfVxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgc2V0SXNTZWxlY3RlZChzZWxlY3RlZCk7XG4gIH0sIFtzZWxlY3RlZF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoUmVhY3RfX2RlZmF1bHQuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgIHJlZjogaW5wdXQsXG4gICAgdGFiSW5kZXg6IC0xLFxuICAgIGlkOiBpZCxcbiAgICBjbGFzc05hbWU6IGlucHV0Q2xhc3NlcyxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgb25DaGFuZ2U6ICFkaXNhYmxlZCA/IGhhbmRsZUNoYW5nZSA6IG51bGwsXG4gICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRpdGxlOiB0aXRsZSxcbiAgICBjaGVja2VkOiBpc1NlbGVjdGVkXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIF9leHRlbmRzKHtcbiAgICBodG1sRm9yOiBpZCxcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLXRhYmluZGV4XG4gICAgLFxuICAgIHRhYkluZGV4OiAhZGlzYWJsZWQgPyB0YWJJbmRleCA6IG51bGxcbiAgfSwgcmVzdCwge1xuICAgIG9uQ2xpY2s6ICFkaXNhYmxlZCA/IGhhbmRsZU9uQ2xpY2sgOiBudWxsLFxuICAgIG9uS2V5RG93bjogIWRpc2FibGVkID8gaGFuZGxlT25LZXlEb3duIDogbnVsbFxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZWNrbWFyayBcIikuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZWNrbWFyay0tcGVyc2lzdGVudFwiKVxuICB9LCBpc1NlbGVjdGVkID8gX0NoZWNrYm94Q2hlY2tlZEZpbGxlIHx8IChfQ2hlY2tib3hDaGVja2VkRmlsbGUgPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGVja2JveENoZWNrZWRGaWxsZWQsIG51bGwpKSA6IF9DaGVja2JveCB8fCAoX0NoZWNrYm94ID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIG51bGwpKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgfSwgY2hpbGRyZW4pKSk7XG59XG5TZWxlY3RhYmxlVGlsZS5kZWZhdWx0UHJvcHMgPSB7XG4gIHZhbHVlOiAndmFsdWUnLFxuICB0aXRsZTogJ3RpdGxlJyxcbiAgc2VsZWN0ZWQ6IGZhbHNlLFxuICB0YWJJbmRleDogMCxcbiAgbGlnaHQ6IGZhbHNlLFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bigpIHt9XG59O1xuU2VsZWN0YWJsZVRpbGUucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdGhlIFNlbGVjdGFibGVUaWxlIHNob3VsZCBiZSBkaXNhYmxlZFxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBgaGFuZGxlQ2xpY2tgIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgb25DbGlja2AuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgYGhhbmRsZUtleURvd25gIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgb25LZXlEb3duYC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY2hlY2ttYXJrIGljb24uXG4gICAqL1xuICBpY29uRGVzY3JpcHRpb246IGRlcHJlY2F0ZShQcm9wVHlwZXMuc3RyaW5nLCAnVGhlIGBpY29uRGVzY3JpcHRpb25gIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgaGFzICcgKyAnYmVlbiBkZXByZWNhdGVkLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogVGhlIGBuYW1lYCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIGVtcHR5IGhhbmRsZXIgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gc2VsZWN0IHRoaXMgdGlsZS5cbiAgICovXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgdGFiIGluZGV4IG9mIHRoZSB3cmFwcGVyIGVsZW1lbnRcbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgYHRpdGxlYCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKS5pc1JlcXVpcmVkXG59O1xudmFyIEV4cGFuZGFibGVUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50Mykge1xuICBfaW5oZXJpdHMoRXhwYW5kYWJsZVRpbGUsIF9Db21wb25lbnQzKTtcblxuICB2YXIgX3N1cGVyMyA9IF9jcmVhdGVTdXBlcihFeHBhbmRhYmxlVGlsZSk7XG5cbiAgZnVuY3Rpb24gRXhwYW5kYWJsZVRpbGUoKSB7XG4gICAgdmFyIF90aGlzMjtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFeHBhbmRhYmxlVGlsZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICBfdGhpczIgPSBfc3VwZXIzLmNhbGwuYXBwbHkoX3N1cGVyMywgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInN0YXRlXCIsIHt9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwicmVzaXplT2JzZXJ2ZXJcIiwgbnVsbCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImNvbXBvbmVudERpZE1vdW50XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMi5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xuICAgICAgICB2YXIgX2VudHJpZXMgPSBfc2xpY2VkVG9BcnJheShlbnRyaWVzLCAxKSxcbiAgICAgICAgICAgIGFib3ZlVGhlRm9sZCA9IF9lbnRyaWVzWzBdO1xuXG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgdGlsZU1heEhlaWdodDogYWJvdmVUaGVGb2xkLmNvbnRlbnRSZWN0LmhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoX3RoaXMyLnRpbGUpIHtcbiAgICAgICAgdmFyIGdldFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoX3RoaXMyLnRpbGUsIG51bGwpO1xuXG4gICAgICAgIGlmIChfdGhpczIuYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoX3RoaXMyLmFib3ZlVGhlRm9sZCk7XG5cbiAgICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgICAgdGlsZU1heEhlaWdodDogX3RoaXMyLmFib3ZlVGhlRm9sZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsXG4gICAgICAgICAgICB0aWxlUGFkZGluZzogcGFyc2VJbnQoZ2V0U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKSwgMTApICsgcGFyc2VJbnQoZ2V0U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1ib3R0b20nKSwgMTApXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiY29tcG9uZW50RGlkVXBkYXRlXCIsIGZ1bmN0aW9uIChwcmV2UHJvcHMpIHtcbiAgICAgIGlmIChwcmV2UHJvcHMuZXhwYW5kZWQgIT09IF90aGlzMi5wcm9wcy5leHBhbmRlZCkge1xuICAgICAgICBfdGhpczIuc2V0TWF4SGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInNldE1heEhlaWdodFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMyLnN0YXRlLmV4cGFuZGVkID8gX3RoaXMyLnRpbGVDb250ZW50IDogX3RoaXMyLmFib3ZlVGhlRm9sZCkge1xuICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IF90aGlzMi5zdGF0ZS5leHBhbmRlZCA/IF90aGlzMi50aWxlQ29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgOiBfdGhpczIuYWJvdmVUaGVGb2xkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiaGFuZGxlQ2xpY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKCFfdGhpczIucHJvcHMub25CZWZvcmVDbGljayhldnQpIHx8IGV2dC50YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgIGV4cGFuZGVkOiAhX3RoaXMyLnN0YXRlLmV4cGFuZGVkXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpczIkcHJvcHMkaGFuZGxlQ2wsIF90aGlzMiRwcm9wcywgX3RoaXMyJHByb3BzJG9uQ2xpY2ssIF90aGlzMiRwcm9wczI7XG5cbiAgICAgICAgX3RoaXMyLnNldE1heEhlaWdodCgpOyAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlQ2xpY2sgcHJvcCB3aGVuIGhhbmRsZUNsaWNrIGlzIGRlcHJlY2F0ZWRcblxuXG4gICAgICAgICgoX3RoaXMyJHByb3BzJGhhbmRsZUNsID0gKF90aGlzMiRwcm9wcyA9IF90aGlzMi5wcm9wcykuaGFuZGxlQ2xpY2spID09PSBudWxsIHx8IF90aGlzMiRwcm9wcyRoYW5kbGVDbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHByb3BzJGhhbmRsZUNsLmNhbGwoX3RoaXMyJHByb3BzLCBldnQpKSB8fCAoKF90aGlzMiRwcm9wcyRvbkNsaWNrID0gKF90aGlzMiRwcm9wczIgPSBfdGhpczIucHJvcHMpLm9uQ2xpY2spID09PSBudWxsIHx8IF90aGlzMiRwcm9wcyRvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkcHJvcHMkb25DbGljay5jYWxsKF90aGlzMiRwcm9wczIsIGV2dCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImhhbmRsZUtleVVwXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmIChldnQudGFyZ2V0ICE9PSBfdGhpczIudGlsZSkge1xuICAgICAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImdldENoaWxkcmVuXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBSZWFjdF9fZGVmYXVsdC5DaGlsZHJlbi50b0FycmF5KF90aGlzMi5wcm9wcy5jaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXMyO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEV4cGFuZGFibGVUaWxlLCBbe1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jeDUsXG4gICAgICAgICAgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgdGFiSW5kZXggPSBfdGhpcyRwcm9wczcudGFiSW5kZXgsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM3LmNsYXNzTmFtZTtcbiAgICAgICAgICBfdGhpcyRwcm9wczcuZXhwYW5kZWQ7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LnRpbGVNYXhIZWlnaHQ7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LnRpbGVQYWRkaW5nO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5oYW5kbGVDbGljaztcbiAgICAgICAgICB2YXIgb25LZXlVcCA9IF90aGlzJHByb3BzNy5vbktleVVwLFxuICAgICAgICAgIHRpbGVDb2xsYXBzZWRJY29uVGV4dCA9IF90aGlzJHByb3BzNy50aWxlQ29sbGFwc2VkSWNvblRleHQsXG4gICAgICAgICAgdGlsZUV4cGFuZGVkSWNvblRleHQgPSBfdGhpcyRwcm9wczcudGlsZUV4cGFuZGVkSWNvblRleHQsXG4gICAgICAgICAgdGlsZUNvbGxhcHNlZExhYmVsID0gX3RoaXMkcHJvcHM3LnRpbGVDb2xsYXBzZWRMYWJlbCxcbiAgICAgICAgICB0aWxlRXhwYW5kZWRMYWJlbCA9IF90aGlzJHByb3BzNy50aWxlRXhwYW5kZWRMYWJlbDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcub25CZWZvcmVDbGljaztcbiAgICAgICAgICB2YXIgbGlnaHQgPSBfdGhpcyRwcm9wczcubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczcsIF9leGNsdWRlZDQpO1xuXG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGlzRXhwYW5kZWQgPSB0aGlzLnN0YXRlLmV4cGFuZGVkO1xuICAgICAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1leHBhbmRhYmxlXCIpLCAoX2N4NSA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4NSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtZXhwYW5kZWRcIiksIGlzRXhwYW5kZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4NSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2N4NSksIGNsYXNzTmFtZSk7XG4gICAgICB2YXIgdGlsZVN0eWxlID0ge1xuICAgICAgICBtYXhIZWlnaHQ6IGlzRXhwYW5kZWQgPyBudWxsIDogdGhpcy5zdGF0ZS50aWxlTWF4SGVpZ2h0ICsgdGhpcy5zdGF0ZS50aWxlUGFkZGluZ1xuICAgICAgfTtcbiAgICAgIHZhciBjaGlsZHJlbkFzQXJyYXkgPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIF9leHRlbmRzKHtcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHRpbGUpIHtcbiAgICAgICAgICAgIF90aGlzMy50aWxlID0gdGlsZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0eWxlOiB0aWxlU3R5bGUsXG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLFxuICAgICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBpc0V4cGFuZGVkLFxuICAgICAgICAgIHRpdGxlOiBpc0V4cGFuZGVkID8gdGlsZUV4cGFuZGVkSWNvblRleHQgOiB0aWxlQ29sbGFwc2VkSWNvblRleHRcbiAgICAgICAgfSwgcmVzdCwge1xuICAgICAgICAgIG9uS2V5VXA6IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtvbktleVVwLCB0aGlzLmhhbmRsZUtleVVwXSksXG4gICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgICB0YWJJbmRleDogdGFiSW5kZXhcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZih0aWxlQ29udGVudCkge1xuICAgICAgICAgICAgX3RoaXMzLnRpbGVDb250ZW50ID0gdGlsZUNvbnRlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYoYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgICAgICBfdGhpczMuYWJvdmVUaGVGb2xkID0gYWJvdmVUaGVGb2xkO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgICAgICAgfSwgY2hpbGRyZW5Bc0FycmF5WzBdKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hldnJvblwiKVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgaXNFeHBhbmRlZCA/IHRpbGVFeHBhbmRlZExhYmVsIDogdGlsZUNvbGxhcHNlZExhYmVsKSwgX0NoZXZyb25Eb3duIHx8IChfQ2hldnJvbkRvd24gPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGV2cm9uRG93biwgbnVsbCkpKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gICAgICAgIH0sIGNoaWxkcmVuQXNBcnJheVsxXSkpKVxuICAgICAgKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgIF9yZWYyLCBzdGF0ZSkge1xuICAgICAgdmFyIGV4cGFuZGVkID0gX3JlZjIuZXhwYW5kZWQsXG4gICAgICAgICAgdGlsZU1heEhlaWdodCA9IF9yZWYyLnRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgdGlsZVBhZGRpbmcgPSBfcmVmMi50aWxlUGFkZGluZztcbiAgICAgIHZhciBwcmV2RXhwYW5kZWQgPSBzdGF0ZS5wcmV2RXhwYW5kZWQsXG4gICAgICAgICAgcHJldlRpbGVNYXhIZWlnaHQgPSBzdGF0ZS5wcmV2VGlsZU1heEhlaWdodCxcbiAgICAgICAgICBwcmV2VGlsZVBhZGRpbmcgPSBzdGF0ZS5wcmV2VGlsZVBhZGRpbmcsXG4gICAgICAgICAgY3VycmVudEV4cGFuZGVkID0gc3RhdGUuZXhwYW5kZWQsXG4gICAgICAgICAgY3VycmVudFRpbGVNYXhIZWlnaHQgPSBzdGF0ZS50aWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIGN1cnJlbnRUaWxlUGFkZGluZyA9IHN0YXRlLnRpbGVQYWRkaW5nO1xuICAgICAgdmFyIGV4cGFuZGVkQ2hhbmdlZCA9IHByZXZFeHBhbmRlZCAhPT0gZXhwYW5kZWQ7XG4gICAgICB2YXIgdGlsZU1heEhlaWdodENoYW5nZWQgPSBwcmV2VGlsZU1heEhlaWdodCAhPT0gdGlsZU1heEhlaWdodDtcbiAgICAgIHZhciB0aWxlUGFkZGluZ0NoYW5nZWQgPSBwcmV2VGlsZVBhZGRpbmcgIT09IHRpbGVQYWRkaW5nO1xuICAgICAgcmV0dXJuICFleHBhbmRlZENoYW5nZWQgJiYgIXRpbGVNYXhIZWlnaHRDaGFuZ2VkICYmICF0aWxlUGFkZGluZ0NoYW5nZWQgPyBudWxsIDoge1xuICAgICAgICBleHBhbmRlZDogIWV4cGFuZGVkQ2hhbmdlZCA/IGN1cnJlbnRFeHBhbmRlZCA6IGV4cGFuZGVkLFxuICAgICAgICB0aWxlTWF4SGVpZ2h0OiAhdGlsZU1heEhlaWdodENoYW5nZWQgPyBjdXJyZW50VGlsZU1heEhlaWdodCA6IHRpbGVNYXhIZWlnaHQsXG4gICAgICAgIHRpbGVQYWRkaW5nOiAhdGlsZVBhZGRpbmdDaGFuZ2VkID8gY3VycmVudFRpbGVQYWRkaW5nIDogdGlsZVBhZGRpbmcsXG4gICAgICAgIHByZXZFeHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICAgIHByZXZUaWxlTWF4SGVpZ2h0OiB0aWxlTWF4SGVpZ2h0LFxuICAgICAgICBwcmV2VGlsZVBhZGRpbmc6IHRpbGVQYWRkaW5nXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBFeHBhbmRhYmxlVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCBpZiB0aGUgdGlsZSBpcyBleHBhbmRlZC5cbiAgICovXG4gIGV4cGFuZGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRGVwcmVjYXRlZCBpbiB2MTEuIFVzZSAnb25DbGljaycgaW5zdGVhZC5cbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlQ2xpY2sgcHJvcCBmb3IgRXhwYW5kYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbkNsaWNrLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogQW4gSUQgdGhhdCBjYW4gYmUgcHJvdmlkZWQgdG8gYXJpYS1sYWJlbGxlZGJ5XG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogb3B0aW9uYWwgaGFuZGxlciB0byBkZWNpZGUgd2hldGhlciB0byBpZ25vcmUgYSBjbGljay4gcmV0dXJucyBmYWxzZSBpZiBjbGljayBzaG91bGQgYmUgaWdub3JlZFxuICAgKi9cbiAgb25CZWZvcmVDbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBFeHBhbmRhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9wdGlvbmFsIGhhbmRsZXIgdG8gdHJpZ2dlciBhIGZ1bmN0aW9uIHdoZW4gYSBrZXkgaXMgcHJlc3NlZFxuICAgKi9cbiAgb25LZXlVcDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSBgdGFiaW5kZXhgIGF0dHJpYnV0ZS5cbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIFwiY29sbGFwc2VkXCIgaWNvbiB0aGF0IGNhbiBiZSByZWFkIGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgdGlsZUNvbGxhcHNlZEljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGVuIFwiY29sbGFwc2VkXCIsIGEgbGFiZWwgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGNoZXZyb24gKGUuZy4sIFwiVmlldyBtb3JlXCIpLlxuICAgKi9cbiAgdGlsZUNvbGxhcHNlZExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIFwiZXhwYW5kZWRcIiBpY29uIHRoYXQgY2FuIGJlIHJlYWQgYnkgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB0aWxlRXhwYW5kZWRJY29uVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogV2hlbiBcImV4cGFuZGVkXCIsIGEgbGFiZWwgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGNoZXZyb24gKGUuZy4sIFwiVmlldyBsZXNzXCIpLlxuICAgKi9cbiAgdGlsZUV4cGFuZGVkTGFiZWw6IFByb3BUeXBlcy5zdHJpbmdcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICB0YWJJbmRleDogMCxcbiAgZXhwYW5kZWQ6IGZhbHNlLFxuICB0aWxlTWF4SGVpZ2h0OiAwLFxuICB0aWxlUGFkZGluZzogMCxcbiAgb25CZWZvcmVDbGljazogZnVuY3Rpb24gb25CZWZvcmVDbGljaygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICB0aWxlQ29sbGFwc2VkSWNvblRleHQ6ICdJbnRlcmFjdCB0byBleHBhbmQgVGlsZScsXG4gIHRpbGVFeHBhbmRlZEljb25UZXh0OiAnSW50ZXJhY3QgdG8gY29sbGFwc2UgVGlsZScsXG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbnZhciBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDQpIHtcbiAgX2luaGVyaXRzKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBfQ29tcG9uZW50NCk7XG5cbiAgdmFyIF9zdXBlcjQgPSBfY3JlYXRlU3VwZXIoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQpO1xuXG4gIGZ1bmN0aW9uIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCk7XG5cbiAgICByZXR1cm4gX3N1cGVyNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRfX2Fib3ZlLXRoZS1mb2xkXCIpXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50O1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxudmFyIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50NSkge1xuICBfaW5oZXJpdHMoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIF9Db21wb25lbnQ1KTtcblxuICB2YXIgX3N1cGVyNSA9IF9jcmVhdGVTdXBlcihUaWxlQmVsb3dUaGVGb2xkQ29udGVudCk7XG5cbiAgZnVuY3Rpb24gVGlsZUJlbG93VGhlRm9sZENvbnRlbnQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KTtcblxuICAgIHJldHVybiBfc3VwZXI1LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudF9fYmVsb3ctdGhlLWZvbGRcIilcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZUJlbG93VGhlRm9sZENvbnRlbnQ7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5leHBvcnQgeyBDbGlja2FibGVUaWxlLCBFeHBhbmRhYmxlVGlsZSwgU2VsZWN0YWJsZVRpbGUsIFRpbGUsIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCB9O1xuIl0sIm5hbWVzIjpbImluaGVyaXRzIiwiX2luaGVyaXRzIiwiY3JlYXRlU3VwZXIiLCJfY3JlYXRlU3VwZXIiLCJjbGFzc0NhbGxDaGVjayIsIl9jbGFzc0NhbGxDaGVjayIsImNyZWF0ZUNsYXNzIiwiX2NyZWF0ZUNsYXNzIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9kZWZpbmVQcm9wZXJ0eSIsImV4dGVuZHMiLCJfZXh0ZW5kcyIsImFzc2VydFRoaXNJbml0aWFsaXplZCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJzbGljZWRUb0FycmF5IiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdF9fZGVmYXVsdCIsIkNvbXBvbmVudCIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiUHJvcFR5cGVzIiwiY3giLCJMaW5rIiwiQ2hlY2tib3hDaGVja2VkRmlsbGVkIiwiQ2hlY2tib3giLCJDaGV2cm9uRG93biIsImRlcHJlY2F0ZSIsImNvbXBvc2VFdmVudEhhbmRsZXJzIiwiUHJlZml4Q29udGV4dCIsInVzZVByZWZpeCIsIm1hdGNoZXMiLCJFbnRlciIsIlNwYWNlIiwiX0NoZWNrYm94Q2hlY2tlZEZpbGxlIiwiX0NoZWNrYm94IiwiX0NoZXZyb25Eb3duIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9leGNsdWRlZDMiLCJfZXhjbHVkZWQ0IiwiVGlsZSIsIl9Db21wb25lbnQiLCJfc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsImtleSIsInZhbHVlIiwicmVuZGVyIiwicHJlZml4IiwiY29udGV4dCIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImxpZ2h0IiwicmVzdCIsInRpbGVDbGFzc2VzIiwiY29uY2F0IiwiY3JlYXRlRWxlbWVudCIsIm5vZGUiLCJzdHJpbmciLCJib29sIiwiQ2xpY2thYmxlVGlsZSIsIl9Db21wb25lbnQyIiwiX3N1cGVyMiIsIl90aGlzIiwiX2xlbiIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiZXZ0IiwicGVyc2lzdCIsInNldFN0YXRlIiwiY2xpY2tlZCIsInN0YXRlIiwiX3RoaXMkcHJvcHMkaGFuZGxlQ2xpIiwiX3RoaXMkcHJvcHMyIiwiX3RoaXMkcHJvcHMkb25DbGljayIsIl90aGlzJHByb3BzMyIsImhhbmRsZUNsaWNrIiwib25DbGljayIsIl90aGlzJHByb3BzJGhhbmRsZUtleSIsIl90aGlzJHByb3BzNCIsImhhbmRsZUtleURvd24iLCJvbktleURvd24iLCJfdGhpcyRwcm9wcyRoYW5kbGVLZXkyIiwiX3RoaXMkcHJvcHM1IiwiX2N4MiIsIl90aGlzJHByb3BzNiIsImhyZWYiLCJjbGFzc2VzIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiX3JlZiIsInByZXZDbGlja2VkIiwiZnVuYyIsInJlbCIsIlNlbGVjdGFibGVUaWxlIiwiaGFuZGxlT25DbGljayIsInByZXZlbnREZWZhdWx0Iiwic2V0SXNTZWxlY3RlZCIsImlzU2VsZWN0ZWQiLCJjbGlja0hhbmRsZXIiLCJvbkNoYW5nZSIsImhhbmRsZU9uS2V5RG93biIsImtleURvd25IYW5kbGVyIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJ0YXJnZXQiLCJjaGVja2VkIiwiX2N4MyIsImlkIiwidGFiSW5kZXgiLCJuYW1lIiwidGl0bGUiLCJpY29uRGVzY3JpcHRpb24iLCJkaXNhYmxlZCIsInNlbGVjdGVkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImlucHV0IiwiaW5wdXRDbGFzc2VzIiwiRnJhZ21lbnQiLCJyZWYiLCJ0eXBlIiwiaHRtbEZvciIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIm51bWJlciIsIm9uZU9mVHlwZSIsImlzUmVxdWlyZWQiLCJFeHBhbmRhYmxlVGlsZSIsIl9Db21wb25lbnQzIiwiX3N1cGVyMyIsIl90aGlzMiIsIl9sZW4yIiwiX2tleTIiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsIl9lbnRyaWVzIiwiYWJvdmVUaGVGb2xkIiwidGlsZU1heEhlaWdodCIsImNvbnRlbnRSZWN0IiwiaGVpZ2h0IiwidGlsZSIsImdldFN0eWxlIiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIm9ic2VydmUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0aWxlUGFkZGluZyIsInBhcnNlSW50IiwiZ2V0UHJvcGVydHlWYWx1ZSIsInByZXZQcm9wcyIsImV4cGFuZGVkIiwic2V0TWF4SGVpZ2h0IiwidGlsZUNvbnRlbnQiLCJvbkJlZm9yZUNsaWNrIiwidGFnTmFtZSIsIl90aGlzMiRwcm9wcyRoYW5kbGVDbCIsIl90aGlzMiRwcm9wcyIsIl90aGlzMiRwcm9wcyRvbkNsaWNrIiwiX3RoaXMyJHByb3BzMiIsIkNoaWxkcmVuIiwidG9BcnJheSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiZGlzY29ubmVjdCIsIl9jeDUiLCJfdGhpczMiLCJfdGhpcyRwcm9wczciLCJvbktleVVwIiwidGlsZUNvbGxhcHNlZEljb25UZXh0IiwidGlsZUV4cGFuZGVkSWNvblRleHQiLCJ0aWxlQ29sbGFwc2VkTGFiZWwiLCJ0aWxlRXhwYW5kZWRMYWJlbCIsImlzRXhwYW5kZWQiLCJ0aWxlU3R5bGUiLCJtYXhIZWlnaHQiLCJjaGlsZHJlbkFzQXJyYXkiLCJnZXRDaGlsZHJlbiIsInN0eWxlIiwiaGFuZGxlS2V5VXAiLCJfcmVmMiIsInByZXZFeHBhbmRlZCIsInByZXZUaWxlTWF4SGVpZ2h0IiwicHJldlRpbGVQYWRkaW5nIiwiY3VycmVudEV4cGFuZGVkIiwiY3VycmVudFRpbGVNYXhIZWlnaHQiLCJjdXJyZW50VGlsZVBhZGRpbmciLCJleHBhbmRlZENoYW5nZWQiLCJ0aWxlTWF4SGVpZ2h0Q2hhbmdlZCIsInRpbGVQYWRkaW5nQ2hhbmdlZCIsIlRpbGVBYm92ZVRoZUZvbGRDb250ZW50IiwiX0NvbXBvbmVudDQiLCJfc3VwZXI0IiwiVGlsZUJlbG93VGhlRm9sZENvbnRlbnQiLCJfQ29tcG9uZW50NSIsIl9zdXBlcjUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
2604
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n (// TODO: Remove handleClick prop when handleClick is deprecated\n (_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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QzZMLHlCQUF5QixlQUFlekssaUVBQWFBO0FBRTRDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGNhcmJvbi9yZWFjdC9lcy9jb21wb25lbnRzL1RpbGUvVGlsZS5qcz8wY2E2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE2LCAyMDIyXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCB7IGluaGVyaXRzIGFzIF9pbmhlcml0cywgY3JlYXRlU3VwZXIgYXMgX2NyZWF0ZVN1cGVyLCBjbGFzc0NhbGxDaGVjayBhcyBfY2xhc3NDYWxsQ2hlY2ssIGNyZWF0ZUNsYXNzIGFzIF9jcmVhdGVDbGFzcywgb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgYXMgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBkZWZpbmVQcm9wZXJ0eSBhcyBfZGVmaW5lUHJvcGVydHksIGV4dGVuZHMgYXMgX2V4dGVuZHMsIGFzc2VydFRoaXNJbml0aWFsaXplZCBhcyBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBzbGljZWRUb0FycmF5IGFzIF9zbGljZWRUb0FycmF5IH0gZnJvbSAnLi4vLi4vX3ZpcnR1YWwvX3JvbGx1cFBsdWdpbkJhYmVsSGVscGVycy5qcyc7XG5pbXBvcnQgUmVhY3RfX2RlZmF1bHQsIHsgQ29tcG9uZW50LCB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGN4IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IExpbmsgZnJvbSAnLi4vTGluay9MaW5rLmpzJztcbmltcG9ydCB7IENoZWNrYm94Q2hlY2tlZEZpbGxlZCwgQ2hlY2tib3gsIENoZXZyb25Eb3duIH0gZnJvbSAnQGNhcmJvbi9pY29ucy1yZWFjdCc7XG5pbXBvcnQgZGVwcmVjYXRlIGZyb20gJy4uLy4uL3Byb3AtdHlwZXMvZGVwcmVjYXRlLmpzJztcbmltcG9ydCB7IGNvbXBvc2VFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZXZlbnRzLmpzJztcbmltcG9ydCB7IFByZWZpeENvbnRleHQsIHVzZVByZWZpeCB9IGZyb20gJy4uLy4uL2ludGVybmFsL3VzZVByZWZpeC5qcyc7XG5pbXBvcnQgeyBtYXRjaGVzIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwva2V5Ym9hcmQvbWF0Y2guanMnO1xuaW1wb3J0IHsgRW50ZXIsIFNwYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwva2V5Ym9hcmQva2V5cy5qcyc7XG5cbnZhciBfQ2hlY2tib3hDaGVja2VkRmlsbGUsIF9DaGVja2JveCwgX0NoZXZyb25Eb3duO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJsaWdodFwiXSxcbiAgICBfZXhjbHVkZWQyID0gW1wiY2hpbGRyZW5cIiwgXCJocmVmXCIsIFwiY2xhc3NOYW1lXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJoYW5kbGVLZXlEb3duXCIsIFwib25DbGlja1wiLCBcIm9uS2V5RG93blwiLCBcImNsaWNrZWRcIiwgXCJsaWdodFwiXSxcbiAgICBfZXhjbHVkZWQzID0gW1wiY2hpbGRyZW5cIiwgXCJpZFwiLCBcInRhYkluZGV4XCIsIFwidmFsdWVcIiwgXCJuYW1lXCIsIFwidGl0bGVcIiwgXCJpY29uRGVzY3JpcHRpb25cIiwgXCJjbGFzc05hbWVcIiwgXCJoYW5kbGVDbGlja1wiLCBcImhhbmRsZUtleURvd25cIiwgXCJvbkNsaWNrXCIsIFwib25DaGFuZ2VcIiwgXCJvbktleURvd25cIiwgXCJsaWdodFwiLCBcImRpc2FibGVkXCIsIFwic2VsZWN0ZWRcIl0sXG4gICAgX2V4Y2x1ZGVkNCA9IFtcInRhYkluZGV4XCIsIFwiY2xhc3NOYW1lXCIsIFwiZXhwYW5kZWRcIiwgXCJ0aWxlTWF4SGVpZ2h0XCIsIFwidGlsZVBhZGRpbmdcIiwgXCJoYW5kbGVDbGlja1wiLCBcIm9uS2V5VXBcIiwgXCJ0aWxlQ29sbGFwc2VkSWNvblRleHRcIiwgXCJ0aWxlRXhwYW5kZWRJY29uVGV4dFwiLCBcInRpbGVDb2xsYXBzZWRMYWJlbFwiLCBcInRpbGVFeHBhbmRlZExhYmVsXCIsIFwib25CZWZvcmVDbGlja1wiLCBcImxpZ2h0XCJdO1xudmFyIFRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRpbGUsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVGlsZSk7XG5cbiAgZnVuY3Rpb24gVGlsZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZSk7XG5cbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgbGlnaHQgPSBfdGhpcyRwcm9wcy5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzLCBfZXhjbHVkZWQpO1xuXG4gICAgICB2YXIgdGlsZUNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIGNsYXNzTmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgICAgICBjbGFzc05hbWU6IHRpbGVDbGFzc2VzXG4gICAgICB9LCByZXN0KSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbnZhciBDbGlja2FibGVUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50Mikge1xuICBfaW5oZXJpdHMoQ2xpY2thYmxlVGlsZSwgX0NvbXBvbmVudDIpO1xuXG4gIHZhciBfc3VwZXIyID0gX2NyZWF0ZVN1cGVyKENsaWNrYWJsZVRpbGUpO1xuXG4gIGZ1bmN0aW9uIENsaWNrYWJsZVRpbGUoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENsaWNrYWJsZVRpbGUpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyMi5jYWxsLmFwcGx5KF9zdXBlcjIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN0YXRlXCIsIHt9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsaWNrZWQ6ICFfdGhpcy5zdGF0ZS5jbGlja2VkXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVDbGksIF90aGlzJHByb3BzMiwgX3RoaXMkcHJvcHMkb25DbGljaywgX3RoaXMkcHJvcHMzO1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVDbGljayBwcm9wIHdoZW4gaGFuZGxlQ2xpY2sgaXMgZGVwcmVjYXRlZFxuICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUNsaSA9IChfdGhpcyRwcm9wczIgPSBfdGhpcy5wcm9wcykuaGFuZGxlQ2xpY2spID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUNsaSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlQ2xpLmNhbGwoX3RoaXMkcHJvcHMyLCBldnQpKSB8fCAoKF90aGlzJHByb3BzJG9uQ2xpY2sgPSAoX3RoaXMkcHJvcHMzID0gX3RoaXMucHJvcHMpLm9uQ2xpY2spID09PSBudWxsIHx8IF90aGlzJHByb3BzJG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJG9uQ2xpY2suY2FsbChfdGhpcyRwcm9wczMsIGV2dCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlS2V5RG93blwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgY2xpY2tlZDogIV90aGlzLnN0YXRlLmNsaWNrZWRcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVLZXksIF90aGlzJHByb3BzNDtcblxuICAgICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVLZXlEb3duIHByb3Agd2hlbiBoYW5kbGVLZXlEb3duIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUtleSA9IChfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcykuaGFuZGxlS2V5RG93bikgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlS2V5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVLZXkuY2FsbChfdGhpcyRwcm9wczQsIGV2dCkpIHx8IF90aGlzLnByb3BzLm9uS2V5RG93bihldnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyLCBfdGhpcyRwcm9wczU7XG5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUtleURvd24gcHJvcCB3aGVuIGhhbmRsZUtleURvd24gaXMgZGVwcmVjYXRlZFxuICAgICAgICAoKF90aGlzJHByb3BzJGhhbmRsZUtleTIgPSAoX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMpLmhhbmRsZUtleURvd24pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUtleTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUtleTIuY2FsbChfdGhpcyRwcm9wczUsIGV2dCkpIHx8IF90aGlzLnByb3BzLm9uS2V5RG93bihldnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENsaWNrYWJsZVRpbGUsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2N4MjtcblxuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcblxuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczYuY2hpbGRyZW4sXG4gICAgICAgICAgaHJlZiA9IF90aGlzJHByb3BzNi5ocmVmLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNi5jbGFzc05hbWU7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmhhbmRsZUNsaWNrO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5oYW5kbGVLZXlEb3duO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5vbkNsaWNrO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5vbktleURvd247XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmNsaWNrZWQ7XG4gICAgICAgICAgdmFyIGxpZ2h0ID0gX3RoaXMkcHJvcHM2LmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM2LCBfZXhjbHVkZWQyKTtcblxuICAgICAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1jbGlja2FibGVcIiksIChfY3gyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3gyLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1jbGlja2VkXCIpLCB0aGlzLnN0YXRlLmNsaWNrZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MiwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2N4MiksIGNsYXNzTmFtZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTGluaywgX2V4dGVuZHMoe1xuICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXNcbiAgICAgIH0sIHJlc3QsIHtcbiAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgb25LZXlEb3duOiB0aGlzLmhhbmRsZUtleURvd25cbiAgICAgIH0pLCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKF9yZWYsIHN0YXRlKSB7XG4gICAgICB2YXIgY2xpY2tlZCA9IF9yZWYuY2xpY2tlZDtcbiAgICAgIHZhciBwcmV2Q2xpY2tlZCA9IHN0YXRlLnByZXZDbGlja2VkO1xuICAgICAgcmV0dXJuIHByZXZDbGlja2VkID09PSBjbGlja2VkID8gbnVsbCA6IHtcbiAgICAgICAgY2xpY2tlZDogY2xpY2tlZCxcbiAgICAgICAgcHJldkNsaWNrZWQ6IGNsaWNrZWRcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENsaWNrYWJsZVRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQgaW4gdjExLiBVc2UgJ29uQ2xpY2snIGluc3RlYWQuXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUNsaWNrIHByb3AgZm9yIENsaWNrYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbkNsaWNrLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlS2V5RG93biBwcm9wIGZvciBDbGlja2FibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25LZXlEb3duLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIGhyZWYgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgaHJlZjogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogVGhlIHJlbCBwcm9wZXJ0eSBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICByZWw6IFByb3BUeXBlcy5zdHJpbmdcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgY2xpY2tlZDogZmFsc2UsXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oKSB7fSxcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxuZnVuY3Rpb24gU2VsZWN0YWJsZVRpbGUocHJvcHMpIHtcbiAgdmFyIF9jeDM7XG5cbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBpZCA9IHByb3BzLmlkLFxuICAgICAgdGFiSW5kZXggPSBwcm9wcy50YWJJbmRleCxcbiAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgICBuYW1lID0gcHJvcHMubmFtZSxcbiAgICAgIHRpdGxlID0gcHJvcHMudGl0bGU7XG4gICAgICBwcm9wcy5pY29uRGVzY3JpcHRpb247XG4gICAgICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgaGFuZGxlQ2xpY2sgPSBwcm9wcy5oYW5kbGVDbGljayxcbiAgICAgIGhhbmRsZUtleURvd24gPSBwcm9wcy5oYW5kbGVLZXlEb3duLFxuICAgICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssXG4gICAgICBvbkNoYW5nZSA9IHByb3BzLm9uQ2hhbmdlLFxuICAgICAgb25LZXlEb3duID0gcHJvcHMub25LZXlEb3duLFxuICAgICAgbGlnaHQgPSBwcm9wcy5saWdodCxcbiAgICAgIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQsXG4gICAgICBzZWxlY3RlZCA9IHByb3BzLnNlbGVjdGVkLFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkMyk7XG5cbiAgdmFyIHByZWZpeCA9IHVzZVByZWZpeCgpOyAvLyBUT0RPOiByZXBsYWNlIHdpdGggb25DbGljayB3aGVuIGhhbmRsZUNsaWNrIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIHZhciBjbGlja0hhbmRsZXIgPSBoYW5kbGVDbGljayB8fCBvbkNsaWNrOyAvLyBUT0RPOiByZXBsYWNlIHdpdGggb25LZXlEb3duIHdoZW4gaGFuZGxlS2V5RG93biBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICB2YXIga2V5RG93bkhhbmRsZXIgPSBoYW5kbGVLZXlEb3duIHx8IG9uS2V5RG93bjtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoc2VsZWN0ZWQpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICBpc1NlbGVjdGVkID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldElzU2VsZWN0ZWQgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBpbnB1dCA9IHVzZVJlZihudWxsKTtcbiAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1zZWxlY3RhYmxlXCIpLCAoX2N4MyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtc2VsZWN0ZWRcIiksIGlzU2VsZWN0ZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWRpc2FibGVkXCIpLCBkaXNhYmxlZCksIF9jeDMpLCBjbGFzc05hbWUpO1xuICB2YXIgaW5wdXRDbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1pbnB1dFwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWlucHV0LS1jaGVja2VkXCIpLCBpc1NlbGVjdGVkKSk7IC8vIFRPRE86IHJlbmFtZSB0byBoYW5kbGVDbGljayB3aGVuIGhhbmRsZUNsaWNrIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uQ2xpY2soZXZ0KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnBlcnNpc3QoKTtcbiAgICBzZXRJc1NlbGVjdGVkKCFpc1NlbGVjdGVkKTtcbiAgICBjbGlja0hhbmRsZXIoZXZ0KTtcbiAgICBvbkNoYW5nZShldnQpO1xuICB9IC8vIFRPRE86IHJlbmFtZSB0byBoYW5kbGVLZXlEb3duIHdoZW4gaGFuZGxlS2V5RG93biBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uS2V5RG93bihldnQpIHtcbiAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgc2V0SXNTZWxlY3RlZCghaXNTZWxlY3RlZCk7XG4gICAgICBvbkNoYW5nZShldnQpO1xuICAgIH1cblxuICAgIGtleURvd25IYW5kbGVyKGV2dCk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBzZXRJc1NlbGVjdGVkKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcbiAgICBvbkNoYW5nZShldmVudCk7XG4gIH1cblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHNldElzU2VsZWN0ZWQoc2VsZWN0ZWQpO1xuICB9LCBbc2VsZWN0ZWRdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFJlYWN0X19kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICByZWY6IGlucHV0LFxuICAgIHRhYkluZGV4OiAtMSxcbiAgICBpZDogaWQsXG4gICAgY2xhc3NOYW1lOiBpbnB1dENsYXNzZXMsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9uQ2hhbmdlOiAhZGlzYWJsZWQgPyBoYW5kbGVDaGFuZ2UgOiBudWxsLFxuICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgbmFtZTogbmFtZSxcbiAgICB0aXRsZTogdGl0bGUsXG4gICAgY2hlY2tlZDogaXNTZWxlY3RlZFxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCBfZXh0ZW5kcyh7XG4gICAgaHRtbEZvcjogaWQsXG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9uby1ub25pbnRlcmFjdGl2ZS10YWJpbmRleFxuICAgICxcbiAgICB0YWJJbmRleDogIWRpc2FibGVkID8gdGFiSW5kZXggOiBudWxsXG4gIH0sIHJlc3QsIHtcbiAgICBvbkNsaWNrOiAhZGlzYWJsZWQgPyBoYW5kbGVPbkNsaWNrIDogbnVsbCxcbiAgICBvbktleURvd246ICFkaXNhYmxlZCA/IGhhbmRsZU9uS2V5RG93biA6IG51bGxcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGVja21hcmsgXCIpLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGVja21hcmstLXBlcnNpc3RlbnRcIilcbiAgfSwgaXNTZWxlY3RlZCA/IF9DaGVja2JveENoZWNrZWRGaWxsZSB8fCAoX0NoZWNrYm94Q2hlY2tlZEZpbGxlID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3hDaGVja2VkRmlsbGVkLCBudWxsKSkgOiBfQ2hlY2tib3ggfHwgKF9DaGVja2JveCA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZWNrYm94LCBudWxsKSkpLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gIH0sIGNoaWxkcmVuKSkpO1xufVxuU2VsZWN0YWJsZVRpbGUuZGVmYXVsdFByb3BzID0ge1xuICB2YWx1ZTogJ3ZhbHVlJyxcbiAgdGl0bGU6ICd0aXRsZScsXG4gIHNlbGVjdGVkOiBmYWxzZSxcbiAgdGFiSW5kZXg6IDAsXG4gIGxpZ2h0OiBmYWxzZSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoKSB7fSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oKSB7fVxufTtcblNlbGVjdGFibGVUaWxlLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRoZSBTZWxlY3RhYmxlVGlsZSBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgYGhhbmRsZUNsaWNrYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYG9uQ2xpY2tgLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGBoYW5kbGVLZXlEb3duYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYG9uS2V5RG93bmAuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGNoZWNrbWFyayBpY29uLlxuICAgKi9cbiAgaWNvbkRlc2NyaXB0aW9uOiBkZXByZWNhdGUoUHJvcFR5cGVzLnN0cmluZywgJ1RoZSBgaWNvbkRlc2NyaXB0aW9uYCBwcm9wIGZvciBgU2VsZWN0YWJsZVRpbGVgIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIGhhcyAnICsgJ2JlZW4gZGVwcmVjYXRlZC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFRoZSBgbmFtZWAgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBlbXB0eSBoYW5kbGVyIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHNlbGVjdCB0aGlzIHRpbGUuXG4gICAqL1xuICBzZWxlY3RlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHRhYiBpbmRleCBvZiB0aGUgd3JhcHBlciBlbGVtZW50XG4gICAqL1xuICB0YWJJbmRleDogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogVGhlIGB0aXRsZWAgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSkuaXNSZXF1aXJlZFxufTtcbnZhciBFeHBhbmRhYmxlVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDMpIHtcbiAgX2luaGVyaXRzKEV4cGFuZGFibGVUaWxlLCBfQ29tcG9uZW50Myk7XG5cbiAgdmFyIF9zdXBlcjMgPSBfY3JlYXRlU3VwZXIoRXhwYW5kYWJsZVRpbGUpO1xuXG4gIGZ1bmN0aW9uIEV4cGFuZGFibGVUaWxlKCkge1xuICAgIHZhciBfdGhpczI7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXhwYW5kYWJsZVRpbGUpO1xuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgX3RoaXMyID0gX3N1cGVyMy5jYWxsLmFwcGx5KF9zdXBlcjMsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJzdGF0ZVwiLCB7fSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInJlc2l6ZU9ic2VydmVyXCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJjb21wb25lbnREaWRNb3VudFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczIucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICAgICAgdmFyIF9lbnRyaWVzID0gX3NsaWNlZFRvQXJyYXkoZW50cmllcywgMSksXG4gICAgICAgICAgICBhYm92ZVRoZUZvbGQgPSBfZW50cmllc1swXTtcblxuICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IGFib3ZlVGhlRm9sZC5jb250ZW50UmVjdC5oZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKF90aGlzMi50aWxlKSB7XG4gICAgICAgIHZhciBnZXRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKF90aGlzMi50aWxlLCBudWxsKTtcblxuICAgICAgICBpZiAoX3RoaXMyLmFib3ZlVGhlRm9sZCkge1xuICAgICAgICAgIF90aGlzMi5yZXNpemVPYnNlcnZlci5vYnNlcnZlKF90aGlzMi5hYm92ZVRoZUZvbGQpO1xuXG4gICAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IF90aGlzMi5hYm92ZVRoZUZvbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICAgICAgdGlsZVBhZGRpbmc6IHBhcnNlSW50KGdldFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJyksIDEwKSArIHBhcnNlSW50KGdldFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJyksIDEwKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImNvbXBvbmVudERpZFVwZGF0ZVwiLCBmdW5jdGlvbiAocHJldlByb3BzKSB7XG4gICAgICBpZiAocHJldlByb3BzLmV4cGFuZGVkICE9PSBfdGhpczIucHJvcHMuZXhwYW5kZWQpIHtcbiAgICAgICAgX3RoaXMyLnNldE1heEhlaWdodCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJzZXRNYXhIZWlnaHRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzMi5zdGF0ZS5leHBhbmRlZCA/IF90aGlzMi50aWxlQ29udGVudCA6IF90aGlzMi5hYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBfdGhpczIuc3RhdGUuZXhwYW5kZWQgPyBfdGhpczIudGlsZUNvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IDogX3RoaXMyLmFib3ZlVGhlRm9sZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImhhbmRsZUNsaWNrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmICghX3RoaXMyLnByb3BzLm9uQmVmb3JlQ2xpY2soZXZ0KSB8fCBldnQudGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBldnQucGVyc2lzdCgpO1xuXG4gICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICBleHBhbmRlZDogIV90aGlzMi5zdGF0ZS5leHBhbmRlZFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMyJHByb3BzJGhhbmRsZUNsLCBfdGhpczIkcHJvcHMsIF90aGlzMiRwcm9wcyRvbkNsaWNrLCBfdGhpczIkcHJvcHMyO1xuXG4gICAgICAgIF90aGlzMi5zZXRNYXhIZWlnaHQoKTsgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUNsaWNrIHByb3Agd2hlbiBoYW5kbGVDbGljayBpcyBkZXByZWNhdGVkXG5cblxuICAgICAgICAoKF90aGlzMiRwcm9wcyRoYW5kbGVDbCA9IChfdGhpczIkcHJvcHMgPSBfdGhpczIucHJvcHMpLmhhbmRsZUNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpczIkcHJvcHMkaGFuZGxlQ2wgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiRwcm9wcyRoYW5kbGVDbC5jYWxsKF90aGlzMiRwcm9wcywgZXZ0KSkgfHwgKChfdGhpczIkcHJvcHMkb25DbGljayA9IChfdGhpczIkcHJvcHMyID0gX3RoaXMyLnByb3BzKS5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpczIkcHJvcHMkb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHByb3BzJG9uQ2xpY2suY2FsbChfdGhpczIkcHJvcHMyLCBldnQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJoYW5kbGVLZXlVcFwiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoZXZ0LnRhcmdldCAhPT0gX3RoaXMyLnRpbGUpIHtcbiAgICAgICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJnZXRDaGlsZHJlblwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gUmVhY3RfX2RlZmF1bHQuQ2hpbGRyZW4udG9BcnJheShfdGhpczIucHJvcHMuY2hpbGRyZW4pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzMjtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhFeHBhbmRhYmxlVGlsZSwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcikge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY3g1LFxuICAgICAgICAgIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHRhYkluZGV4ID0gX3RoaXMkcHJvcHM3LnRhYkluZGV4LFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNy5jbGFzc05hbWU7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LmV4cGFuZGVkO1xuICAgICAgICAgIF90aGlzJHByb3BzNy50aWxlTWF4SGVpZ2h0O1xuICAgICAgICAgIF90aGlzJHByb3BzNy50aWxlUGFkZGluZztcbiAgICAgICAgICBfdGhpcyRwcm9wczcuaGFuZGxlQ2xpY2s7XG4gICAgICAgICAgdmFyIG9uS2V5VXAgPSBfdGhpcyRwcm9wczcub25LZXlVcCxcbiAgICAgICAgICB0aWxlQ29sbGFwc2VkSWNvblRleHQgPSBfdGhpcyRwcm9wczcudGlsZUNvbGxhcHNlZEljb25UZXh0LFxuICAgICAgICAgIHRpbGVFeHBhbmRlZEljb25UZXh0ID0gX3RoaXMkcHJvcHM3LnRpbGVFeHBhbmRlZEljb25UZXh0LFxuICAgICAgICAgIHRpbGVDb2xsYXBzZWRMYWJlbCA9IF90aGlzJHByb3BzNy50aWxlQ29sbGFwc2VkTGFiZWwsXG4gICAgICAgICAgdGlsZUV4cGFuZGVkTGFiZWwgPSBfdGhpcyRwcm9wczcudGlsZUV4cGFuZGVkTGFiZWw7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3Lm9uQmVmb3JlQ2xpY2s7XG4gICAgICAgICAgdmFyIGxpZ2h0ID0gX3RoaXMkcHJvcHM3LmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM3LCBfZXhjbHVkZWQ0KTtcblxuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHZhciBpc0V4cGFuZGVkID0gdGhpcy5zdGF0ZS5leHBhbmRlZDtcbiAgICAgIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tZXhwYW5kYWJsZVwiKSwgKF9jeDUgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDUsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLWV4cGFuZGVkXCIpLCBpc0V4cGFuZGVkKSwgX2RlZmluZVByb3BlcnR5KF9jeDUsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9jeDUpLCBjbGFzc05hbWUpO1xuICAgICAgdmFyIHRpbGVTdHlsZSA9IHtcbiAgICAgICAgbWF4SGVpZ2h0OiBpc0V4cGFuZGVkID8gbnVsbCA6IHRoaXMuc3RhdGUudGlsZU1heEhlaWdodCArIHRoaXMuc3RhdGUudGlsZVBhZGRpbmdcbiAgICAgIH07XG4gICAgICB2YXIgY2hpbGRyZW5Bc0FycmF5ID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgLyojX19QVVJFX18qL1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyxqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnNcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBfZXh0ZW5kcyh7XG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZih0aWxlKSB7XG4gICAgICAgICAgICBfdGhpczMudGlsZSA9IHRpbGU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHlsZTogdGlsZVN0eWxlLFxuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NlcyxcbiAgICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogaXNFeHBhbmRlZCxcbiAgICAgICAgICB0aXRsZTogaXNFeHBhbmRlZCA/IHRpbGVFeHBhbmRlZEljb25UZXh0IDogdGlsZUNvbGxhcHNlZEljb25UZXh0XG4gICAgICAgIH0sIHJlc3QsIHtcbiAgICAgICAgICBvbktleVVwOiBjb21wb3NlRXZlbnRIYW5kbGVycyhbb25LZXlVcCwgdGhpcy5oYW5kbGVLZXlVcF0pLFxuICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYodGlsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgIF90aGlzMy50aWxlQ29udGVudCA9IHRpbGVDb250ZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKGFib3ZlVGhlRm9sZCkge1xuICAgICAgICAgICAgX3RoaXMzLmFib3ZlVGhlRm9sZCA9IGFib3ZlVGhlRm9sZDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gICAgICAgIH0sIGNoaWxkcmVuQXNBcnJheVswXSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZXZyb25cIilcbiAgICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGlzRXhwYW5kZWQgPyB0aWxlRXhwYW5kZWRMYWJlbCA6IHRpbGVDb2xsYXBzZWRMYWJlbCksIF9DaGV2cm9uRG93biB8fCAoX0NoZXZyb25Eb3duID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hldnJvbkRvd24sIG51bGwpKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICAgICAgICB9LCBjaGlsZHJlbkFzQXJyYXlbMV0pKSlcbiAgICAgICk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyggLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICBfcmVmMiwgc3RhdGUpIHtcbiAgICAgIHZhciBleHBhbmRlZCA9IF9yZWYyLmV4cGFuZGVkLFxuICAgICAgICAgIHRpbGVNYXhIZWlnaHQgPSBfcmVmMi50aWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIHRpbGVQYWRkaW5nID0gX3JlZjIudGlsZVBhZGRpbmc7XG4gICAgICB2YXIgcHJldkV4cGFuZGVkID0gc3RhdGUucHJldkV4cGFuZGVkLFxuICAgICAgICAgIHByZXZUaWxlTWF4SGVpZ2h0ID0gc3RhdGUucHJldlRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgcHJldlRpbGVQYWRkaW5nID0gc3RhdGUucHJldlRpbGVQYWRkaW5nLFxuICAgICAgICAgIGN1cnJlbnRFeHBhbmRlZCA9IHN0YXRlLmV4cGFuZGVkLFxuICAgICAgICAgIGN1cnJlbnRUaWxlTWF4SGVpZ2h0ID0gc3RhdGUudGlsZU1heEhlaWdodCxcbiAgICAgICAgICBjdXJyZW50VGlsZVBhZGRpbmcgPSBzdGF0ZS50aWxlUGFkZGluZztcbiAgICAgIHZhciBleHBhbmRlZENoYW5nZWQgPSBwcmV2RXhwYW5kZWQgIT09IGV4cGFuZGVkO1xuICAgICAgdmFyIHRpbGVNYXhIZWlnaHRDaGFuZ2VkID0gcHJldlRpbGVNYXhIZWlnaHQgIT09IHRpbGVNYXhIZWlnaHQ7XG4gICAgICB2YXIgdGlsZVBhZGRpbmdDaGFuZ2VkID0gcHJldlRpbGVQYWRkaW5nICE9PSB0aWxlUGFkZGluZztcbiAgICAgIHJldHVybiAhZXhwYW5kZWRDaGFuZ2VkICYmICF0aWxlTWF4SGVpZ2h0Q2hhbmdlZCAmJiAhdGlsZVBhZGRpbmdDaGFuZ2VkID8gbnVsbCA6IHtcbiAgICAgICAgZXhwYW5kZWQ6ICFleHBhbmRlZENoYW5nZWQgPyBjdXJyZW50RXhwYW5kZWQgOiBleHBhbmRlZCxcbiAgICAgICAgdGlsZU1heEhlaWdodDogIXRpbGVNYXhIZWlnaHRDaGFuZ2VkID8gY3VycmVudFRpbGVNYXhIZWlnaHQgOiB0aWxlTWF4SGVpZ2h0LFxuICAgICAgICB0aWxlUGFkZGluZzogIXRpbGVQYWRkaW5nQ2hhbmdlZCA/IGN1cnJlbnRUaWxlUGFkZGluZyA6IHRpbGVQYWRkaW5nLFxuICAgICAgICBwcmV2RXhwYW5kZWQ6IGV4cGFuZGVkLFxuICAgICAgICBwcmV2VGlsZU1heEhlaWdodDogdGlsZU1heEhlaWdodCxcbiAgICAgICAgcHJldlRpbGVQYWRkaW5nOiB0aWxlUGFkZGluZ1xuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRXhwYW5kYWJsZVRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgaWYgdGhlIHRpbGUgaXMgZXhwYW5kZWQuXG4gICAqL1xuICBleHBhbmRlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWQgaW4gdjExLiBVc2UgJ29uQ2xpY2snIGluc3RlYWQuXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUNsaWNrIHByb3AgZm9yIEV4cGFuZGFibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25DbGljay4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIEFuIElEIHRoYXQgY2FuIGJlIHByb3ZpZGVkIHRvIGFyaWEtbGFiZWxsZWRieVxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIG9wdGlvbmFsIGhhbmRsZXIgdG8gZGVjaWRlIHdoZXRoZXIgdG8gaWdub3JlIGEgY2xpY2suIHJldHVybnMgZmFsc2UgaWYgY2xpY2sgc2hvdWxkIGJlIGlnbm9yZWRcbiAgICovXG4gIG9uQmVmb3JlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgRXhwYW5kYWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvcHRpb25hbCBoYW5kbGVyIHRvIHRyaWdnZXIgYSBmdW5jdGlvbiB3aGVuIGEga2V5IGlzIHByZXNzZWRcbiAgICovXG4gIG9uS2V5VXA6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBUaGUgYHRhYmluZGV4YCBhdHRyaWJ1dGUuXG4gICAqL1xuICB0YWJJbmRleDogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBcImNvbGxhcHNlZFwiIGljb24gdGhhdCBjYW4gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIHRpbGVDb2xsYXBzZWRJY29uVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogV2hlbiBcImNvbGxhcHNlZFwiLCBhIGxhYmVsIHRvIGFwcGVhciBuZXh0IHRvIHRoZSBjaGV2cm9uIChlLmcuLCBcIlZpZXcgbW9yZVwiKS5cbiAgICovXG4gIHRpbGVDb2xsYXBzZWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBcImV4cGFuZGVkXCIgaWNvbiB0aGF0IGNhbiBiZSByZWFkIGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgdGlsZUV4cGFuZGVkSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFdoZW4gXCJleHBhbmRlZFwiLCBhIGxhYmVsIHRvIGFwcGVhciBuZXh0IHRvIHRoZSBjaGV2cm9uIChlLmcuLCBcIlZpZXcgbGVzc1wiKS5cbiAgICovXG4gIHRpbGVFeHBhbmRlZExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgdGFiSW5kZXg6IDAsXG4gIGV4cGFuZGVkOiBmYWxzZSxcbiAgdGlsZU1heEhlaWdodDogMCxcbiAgdGlsZVBhZGRpbmc6IDAsXG4gIG9uQmVmb3JlQ2xpY2s6IGZ1bmN0aW9uIG9uQmVmb3JlQ2xpY2soKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgdGlsZUNvbGxhcHNlZEljb25UZXh0OiAnSW50ZXJhY3QgdG8gZXhwYW5kIFRpbGUnLFxuICB0aWxlRXhwYW5kZWRJY29uVGV4dDogJ0ludGVyYWN0IHRvIGNvbGxhcHNlIFRpbGUnLFxuICBsaWdodDogZmFsc2Vcbn0pO1xuXG52YXIgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQ0KSB7XG4gIF9pbmhlcml0cyhUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgX0NvbXBvbmVudDQpO1xuXG4gIHZhciBfc3VwZXI0ID0gX2NyZWF0ZVN1cGVyKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KTtcblxuICBmdW5jdGlvbiBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQpO1xuXG4gICAgcmV0dXJuIF9zdXBlcjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50X19hYm92ZS10aGUtZm9sZFwiKVxuICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlQWJvdmVUaGVGb2xkQ29udGVudDtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbnZhciBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDUpIHtcbiAgX2luaGVyaXRzKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBfQ29tcG9uZW50NSk7XG5cbiAgdmFyIF9zdXBlcjUgPSBfY3JlYXRlU3VwZXIoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQpO1xuXG4gIGZ1bmN0aW9uIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCk7XG5cbiAgICByZXR1cm4gX3N1cGVyNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRfX2JlbG93LXRoZS1mb2xkXCIpXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50O1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuZXhwb3J0IHsgQ2xpY2thYmxlVGlsZSwgRXhwYW5kYWJsZVRpbGUsIFNlbGVjdGFibGVUaWxlLCBUaWxlLCBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQgfTtcbiJdLCJuYW1lcyI6WyJpbmhlcml0cyIsIl9pbmhlcml0cyIsImNyZWF0ZVN1cGVyIiwiX2NyZWF0ZVN1cGVyIiwiY2xhc3NDYWxsQ2hlY2siLCJfY2xhc3NDYWxsQ2hlY2siLCJjcmVhdGVDbGFzcyIsIl9jcmVhdGVDbGFzcyIsIm9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfZGVmaW5lUHJvcGVydHkiLCJleHRlbmRzIiwiX2V4dGVuZHMiLCJhc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwic2xpY2VkVG9BcnJheSIsIl9zbGljZWRUb0FycmF5IiwiUmVhY3RfX2RlZmF1bHQiLCJDb21wb25lbnQiLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsIlByb3BUeXBlcyIsImN4IiwiTGluayIsIkNoZWNrYm94Q2hlY2tlZEZpbGxlZCIsIkNoZWNrYm94IiwiQ2hldnJvbkRvd24iLCJkZXByZWNhdGUiLCJjb21wb3NlRXZlbnRIYW5kbGVycyIsIlByZWZpeENvbnRleHQiLCJ1c2VQcmVmaXgiLCJtYXRjaGVzIiwiRW50ZXIiLCJTcGFjZSIsIl9DaGVja2JveENoZWNrZWRGaWxsZSIsIl9DaGVja2JveCIsIl9DaGV2cm9uRG93biIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfZXhjbHVkZWQzIiwiX2V4Y2x1ZGVkNCIsIlRpbGUiLCJfQ29tcG9uZW50IiwiX3N1cGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJrZXkiLCJ2YWx1ZSIsInJlbmRlciIsInByZWZpeCIsImNvbnRleHQiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJsaWdodCIsInJlc3QiLCJ0aWxlQ2xhc3NlcyIsImNvbmNhdCIsImNyZWF0ZUVsZW1lbnQiLCJub2RlIiwic3RyaW5nIiwiYm9vbCIsIkNsaWNrYWJsZVRpbGUiLCJfQ29tcG9uZW50MiIsIl9zdXBlcjIiLCJfdGhpcyIsIl9sZW4iLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsImV2dCIsInBlcnNpc3QiLCJzZXRTdGF0ZSIsImNsaWNrZWQiLCJzdGF0ZSIsIl90aGlzJHByb3BzJGhhbmRsZUNsaSIsIl90aGlzJHByb3BzMiIsIl90aGlzJHByb3BzJG9uQ2xpY2siLCJfdGhpcyRwcm9wczMiLCJoYW5kbGVDbGljayIsIm9uQ2xpY2siLCJfdGhpcyRwcm9wcyRoYW5kbGVLZXkiLCJfdGhpcyRwcm9wczQiLCJoYW5kbGVLZXlEb3duIiwib25LZXlEb3duIiwiX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiIsIl90aGlzJHByb3BzNSIsIl9jeDIiLCJfdGhpcyRwcm9wczYiLCJocmVmIiwiY2xhc3NlcyIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIl9yZWYiLCJwcmV2Q2xpY2tlZCIsImZ1bmMiLCJyZWwiLCJTZWxlY3RhYmxlVGlsZSIsImhhbmRsZU9uQ2xpY2siLCJwcmV2ZW50RGVmYXVsdCIsInNldElzU2VsZWN0ZWQiLCJpc1NlbGVjdGVkIiwiY2xpY2tIYW5kbGVyIiwib25DaGFuZ2UiLCJoYW5kbGVPbktleURvd24iLCJrZXlEb3duSGFuZGxlciIsImhhbmRsZUNoYW5nZSIsImV2ZW50IiwidGFyZ2V0IiwiY2hlY2tlZCIsIl9jeDMiLCJpZCIsInRhYkluZGV4IiwibmFtZSIsInRpdGxlIiwiaWNvbkRlc2NyaXB0aW9uIiwiZGlzYWJsZWQiLCJzZWxlY3RlZCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJpbnB1dCIsImlucHV0Q2xhc3NlcyIsIkZyYWdtZW50IiwicmVmIiwidHlwZSIsImh0bWxGb3IiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJudW1iZXIiLCJvbmVPZlR5cGUiLCJpc1JlcXVpcmVkIiwiRXhwYW5kYWJsZVRpbGUiLCJfQ29tcG9uZW50MyIsIl9zdXBlcjMiLCJfdGhpczIiLCJfbGVuMiIsIl9rZXkyIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImVudHJpZXMiLCJfZW50cmllcyIsImFib3ZlVGhlRm9sZCIsInRpbGVNYXhIZWlnaHQiLCJjb250ZW50UmVjdCIsImhlaWdodCIsInRpbGUiLCJnZXRTdHlsZSIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJvYnNlcnZlIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidGlsZVBhZGRpbmciLCJwYXJzZUludCIsImdldFByb3BlcnR5VmFsdWUiLCJwcmV2UHJvcHMiLCJleHBhbmRlZCIsInNldE1heEhlaWdodCIsInRpbGVDb250ZW50Iiwib25CZWZvcmVDbGljayIsInRhZ05hbWUiLCJfdGhpczIkcHJvcHMkaGFuZGxlQ2wiLCJfdGhpczIkcHJvcHMiLCJfdGhpczIkcHJvcHMkb25DbGljayIsIl90aGlzMiRwcm9wczIiLCJDaGlsZHJlbiIsInRvQXJyYXkiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImRpc2Nvbm5lY3QiLCJfY3g1IiwiX3RoaXMzIiwiX3RoaXMkcHJvcHM3Iiwib25LZXlVcCIsInRpbGVDb2xsYXBzZWRJY29uVGV4dCIsInRpbGVFeHBhbmRlZEljb25UZXh0IiwidGlsZUNvbGxhcHNlZExhYmVsIiwidGlsZUV4cGFuZGVkTGFiZWwiLCJpc0V4cGFuZGVkIiwidGlsZVN0eWxlIiwibWF4SGVpZ2h0IiwiY2hpbGRyZW5Bc0FycmF5IiwiZ2V0Q2hpbGRyZW4iLCJzdHlsZSIsImhhbmRsZUtleVVwIiwiX3JlZjIiLCJwcmV2RXhwYW5kZWQiLCJwcmV2VGlsZU1heEhlaWdodCIsInByZXZUaWxlUGFkZGluZyIsImN1cnJlbnRFeHBhbmRlZCIsImN1cnJlbnRUaWxlTWF4SGVpZ2h0IiwiY3VycmVudFRpbGVQYWRkaW5nIiwiZXhwYW5kZWRDaGFuZ2VkIiwidGlsZU1heEhlaWdodENoYW5nZWQiLCJ0aWxlUGFkZGluZ0NoYW5nZWQiLCJUaWxlQWJvdmVUaGVGb2xkQ29udGVudCIsIl9Db21wb25lbnQ0IiwiX3N1cGVyNCIsIlRpbGVCZWxvd1RoZUZvbGRDb250ZW50IiwiX0NvbXBvbmVudDUiLCJfc3VwZXI1Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
2605
2605
 
2606
2606
  /***/ }),
2607
2607
 
@@ -6895,7 +6895,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
6895
6895
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6896
6896
 
6897
6897
  "use strict";
6898
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setupPaths\": () => (/* binding */ setupPaths),\n/* harmony export */ \"setupUtils\": () => (/* binding */ setupUtils)\n/* harmony export */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.4.2-pre.732-20230522\";\n window.getOpenmrsSpaBase = function() {\n return \"\".concat(window.spaBase, \"/\");\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1nbG9iYWxzL3NyYy9nbG9iYWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sU0FBU0EsV0FBV0MsTUFBaUIsRUFBRTtJQUM1Q0MsT0FBT0MsV0FBVyxHQUFHRixPQUFPRyxNQUFNO0lBQ2xDRixPQUFPRyxPQUFPLEdBQUdKLE9BQU9LLE9BQU87SUFDL0JKLE9BQU9LLE1BQU0sR0FBR04sT0FBT08sR0FBRyxJQUFJO0lBQzlCTixPQUFPTyxVQUFVLEdBQUdDLHdCQUF5QjtJQUM3Q1IsT0FBT1UsaUJBQWlCLEdBQUc7ZUFBTSxHQUFrQixPQUFmVixPQUFPRyxPQUFPLEVBQUM7O0FBQ3JELENBQUM7QUFFTSxTQUFTUSxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWdsb2JhbHMvc3JjL2dsb2JhbHMudHM/NDFiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8IFwicHJvZHVjdGlvblwiO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSA9ICgpID0+IGAke3dpbmRvdy5zcGFCYXNlfS9gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVdGlscygpIHtcbiAgd2luZG93LmNvcHlUZXh0ID0gKHNvdXJjZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsKSB7XG4gICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHIpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJzZXR1cFBhdGhzIiwiY29uZmlnIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJhcGlVcmwiLCJzcGFCYXNlIiwic3BhUGF0aCIsInNwYUVudiIsImVudiIsInNwYVZlcnNpb24iLCJwcm9jZXNzIiwiQlVJTERfVkVSU0lPTiIsImdldE9wZW5tcnNTcGFCYXNlIiwic2V0dXBVdGlscyIsImNvcHlUZXh0Iiwic291cmNlIiwic2VsIiwiZ2V0U2VsZWN0aW9uIiwiciIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJleGVjQ29tbWFuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-globals/src/globals.ts\n");
6898
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setupPaths\": () => (/* binding */ setupPaths),\n/* harmony export */ \"setupUtils\": () => (/* binding */ setupUtils)\n/* harmony export */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.4.2-pre.733-20230522\";\n window.getOpenmrsSpaBase = function() {\n return \"\".concat(window.spaBase, \"/\");\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1nbG9iYWxzL3NyYy9nbG9iYWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sU0FBU0EsV0FBV0MsTUFBaUIsRUFBRTtJQUM1Q0MsT0FBT0MsV0FBVyxHQUFHRixPQUFPRyxNQUFNO0lBQ2xDRixPQUFPRyxPQUFPLEdBQUdKLE9BQU9LLE9BQU87SUFDL0JKLE9BQU9LLE1BQU0sR0FBR04sT0FBT08sR0FBRyxJQUFJO0lBQzlCTixPQUFPTyxVQUFVLEdBQUdDLHdCQUF5QjtJQUM3Q1IsT0FBT1UsaUJBQWlCLEdBQUc7ZUFBTSxHQUFrQixPQUFmVixPQUFPRyxPQUFPLEVBQUM7O0FBQ3JELENBQUM7QUFFTSxTQUFTUSxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWdsb2JhbHMvc3JjL2dsb2JhbHMudHM/NDFiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8IFwicHJvZHVjdGlvblwiO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSA9ICgpID0+IGAke3dpbmRvdy5zcGFCYXNlfS9gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVdGlscygpIHtcbiAgd2luZG93LmNvcHlUZXh0ID0gKHNvdXJjZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsKSB7XG4gICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHIpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJzZXR1cFBhdGhzIiwiY29uZmlnIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJhcGlVcmwiLCJzcGFCYXNlIiwic3BhUGF0aCIsInNwYUVudiIsImVudiIsInNwYVZlcnNpb24iLCJwcm9jZXNzIiwiQlVJTERfVkVSU0lPTiIsImdldE9wZW5tcnNTcGFCYXNlIiwic2V0dXBVdGlscyIsImNvcHlUZXh0Iiwic291cmNlIiwic2VsIiwiZ2V0U2VsZWN0aW9uIiwiciIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJleGVjQ29tbWFuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-globals/src/globals.ts\n");
6899
6899
 
6900
6900
  /***/ }),
6901
6901
 
@@ -7713,17 +7713,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
7713
7713
 
7714
7714
  /***/ }),
7715
7715
 
7716
- /***/ "./src/dependencies.ts":
7717
- /*!*****************************!*\
7718
- !*** ./src/dependencies.ts ***!
7719
- \*****************************/
7720
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7721
-
7722
- "use strict";
7723
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"registerModules\": () => (/* binding */ registerModules),\n/* harmony export */ \"sharedDependencies\": () => (/* binding */ sharedDependencies)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_1__);\n// THIS IS A SHIM TO SUPPORT LOADING esm-form-app ONLY IT SHOULD BE REMOVED\n// WHEN esm-form-app IS ABLE TO BE LOADED AS A STANDARD MODULE\n// Load @openmrs/esm-framework/src/internal because it is a superset\n// of @openmrs/esm-framework. There's no point loading both.\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\n\n\nvar sharedDependencies = {\n \"@openmrs/esm-framework\": _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_0__,\n rxjs: rxjs__WEBPACK_IMPORTED_MODULE_1__\n};\nfunction registerModules(modules) {\n Object.keys(modules).forEach(function(name) {\n return registerModule(name, modules[name]);\n });\n}\nfunction registerModule(name, module) {\n System.register(name, [], function(_exports) {\n return {\n execute: function execute() {\n if (_instanceof(module, Promise)) {\n return module.then(function(innerContent) {\n return _exports(innerContent);\n });\n } else {\n _exports(module);\n if (typeof module === \"function\") {\n _exports(\"__esModule\", true);\n _exports(\"default\", module);\n } else if (typeof module === \"object\") {\n if (!(\"default\" in module)) {\n _exports(\"default\", module);\n }\n }\n }\n }\n };\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvZGVwZW5kZW5jaWVzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDJFQUEyRTtBQUMzRSw4REFBOEQ7QUFFOUQsb0VBQW9FO0FBQ3BFLDREQUE0RDtBQUM1RDs7Ozs7OztBQUFtRjtBQUN0RDtBQUV0QixJQUFNRSxxQkFBcUI7SUFDaEMsMEJBQTBCRixnRUFBMkJBO0lBQ3JEQyxNQUFBQSxpQ0FBSUE7QUFDTixFQUFFO0FBRUssU0FBU0UsZ0JBQWdCQyxPQUE0QixFQUFFO0lBQzVEQyxPQUFPQyxJQUFJLENBQUNGLFNBQVNHLE9BQU8sQ0FBQyxTQUFDQztlQUFTQyxlQUFlRCxNQUFNSixPQUFPLENBQUNJLEtBQUs7O0FBQzNFLENBQUM7QUFFRCxTQUFTQyxlQUFlRCxJQUFZLEVBQUVFLE1BQVcsRUFBRTtJQUNqREMsT0FBT0MsUUFBUSxDQUFDSixNQUFNLEVBQUUsRUFBRSxTQUFDSztlQUFjO1lBQ3ZDQyxTQUFBQSxTQUFBQSxVQUFVO2dCQUNSLElBQUlKLFlBQUFBLFFBQWtCSyxVQUFTO29CQUM3QixPQUFPTCxPQUFPTSxJQUFJLENBQUMsU0FBQ0M7K0JBQWlCSixTQUFTSTs7Z0JBQ2hELE9BQU87b0JBQ0xKLFNBQVNIO29CQUVULElBQUksT0FBT0EsV0FBVyxZQUFZO3dCQUNoQ0csU0FBUyxjQUFjLElBQUk7d0JBQzNCQSxTQUFTLFdBQVdIO29CQUN0QixPQUFPLElBQUksT0FBT0EsV0FBVyxVQUFVO3dCQUNyQyxJQUFJLENBQUUsY0FBYUEsTUFBSyxHQUFJOzRCQUMxQkcsU0FBUyxXQUFXSDt3QkFDdEIsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSDtRQUNGOztBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uL3NyYy9kZXBlbmRlbmNpZXMudHM/ZDhhNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUSElTIElTIEEgU0hJTSBUTyBTVVBQT1JUIExPQURJTkcgZXNtLWZvcm0tYXBwIE9OTFkgSVQgU0hPVUxEIEJFIFJFTU9WRURcbi8vIFdIRU4gZXNtLWZvcm0tYXBwIElTIEFCTEUgVE8gQkUgTE9BREVEIEFTIEEgU1RBTkRBUkQgTU9EVUxFXG5cbi8vIExvYWQgQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwgYmVjYXVzZSBpdCBpcyBhIHN1cGVyc2V0XG4vLyBvZiBAb3Blbm1ycy9lc20tZnJhbWV3b3JrLiBUaGVyZSdzIG5vIHBvaW50IGxvYWRpbmcgYm90aC5cbmltcG9ydCAqIGFzIG9wZW5tcnNFc21GcmFtZXdvcmtJbnRlcm5hbCBmcm9tIFwiQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWxcIjtcbmltcG9ydCAqIGFzIHJ4anMgZnJvbSBcInJ4anNcIjtcblxuZXhwb3J0IGNvbnN0IHNoYXJlZERlcGVuZGVuY2llcyA9IHtcbiAgXCJAb3Blbm1ycy9lc20tZnJhbWV3b3JrXCI6IG9wZW5tcnNFc21GcmFtZXdvcmtJbnRlcm5hbCxcbiAgcnhqcyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck1vZHVsZXMobW9kdWxlczogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICBPYmplY3Qua2V5cyhtb2R1bGVzKS5mb3JFYWNoKChuYW1lKSA9PiByZWdpc3Rlck1vZHVsZShuYW1lLCBtb2R1bGVzW25hbWVdKSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyTW9kdWxlKG5hbWU6IHN0cmluZywgbW9kdWxlOiBhbnkpIHtcbiAgU3lzdGVtLnJlZ2lzdGVyKG5hbWUsIFtdLCAoX2V4cG9ydHMpID0+ICh7XG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgIGlmIChtb2R1bGUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiBtb2R1bGUudGhlbigoaW5uZXJDb250ZW50KSA9PiBfZXhwb3J0cyhpbm5lckNvbnRlbnQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9leHBvcnRzKG1vZHVsZSk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIF9leHBvcnRzKFwiX19lc01vZHVsZVwiLCB0cnVlKTtcbiAgICAgICAgICBfZXhwb3J0cyhcImRlZmF1bHRcIiwgbW9kdWxlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgaWYgKCEoXCJkZWZhdWx0XCIgaW4gbW9kdWxlKSkge1xuICAgICAgICAgICAgX2V4cG9ydHMoXCJkZWZhdWx0XCIsIG1vZHVsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfSkpO1xufVxuIl0sIm5hbWVzIjpbIm9wZW5tcnNFc21GcmFtZXdvcmtJbnRlcm5hbCIsInJ4anMiLCJzaGFyZWREZXBlbmRlbmNpZXMiLCJyZWdpc3Rlck1vZHVsZXMiLCJtb2R1bGVzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJuYW1lIiwicmVnaXN0ZXJNb2R1bGUiLCJtb2R1bGUiLCJTeXN0ZW0iLCJyZWdpc3RlciIsIl9leHBvcnRzIiwiZXhlY3V0ZSIsIlByb21pc2UiLCJ0aGVuIiwiaW5uZXJDb250ZW50Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/dependencies.ts\n");
7724
-
7725
- /***/ }),
7726
-
7727
7716
  /***/ "./src/helpers.ts":
7728
7717
  /*!************************!*\
7729
7718
  !*** ./src/helpers.ts ***!
@@ -7753,7 +7742,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ope
7753
7742
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7754
7743
 
7755
7744
  "use strict";
7756
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"loadModules\": () => (/* binding */ loadModules),\n/* harmony export */ \"slugify\": () => (/* binding */ slugify)\n/* harmony export */ });\n/**\n * Loads all provided modules into the webpack runtime so that they\n * may be used.\n *\n * Our module loading system is based on Webpack Module Federation.\n * We have a \"dynamic remote containers\" system. The \"entry point\" of\n * the application is `@openmrs-esm-app-shell`. The list of remotes\n * to be loaded is supplied in import maps, which are loaded by\n * SystemJS. We are not using the SystemJS registry at all, only WMF.\n *\n * Each module (\"remote\") is provided as a name and URL. For each URL,\n * a `<script>` element is appended to the DOM. Because those scripts have webpack\n * library type == 'var', when they are loaded, they create a new\n * global variable which has the Webpack Container Interface for that\n * module: the `init` and `get` methods. We use those to obtain the\n * actual module exports.\n *\n * @param modules A mapping from module names to URLs.\n * @returns The interfaces of those modules.\n */ function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nfunction loadModules(modules) {\n return _loadModules.apply(this, arguments);\n}\nfunction _loadModules() {\n _loadModules = _asyncToGenerator(function(modules) {\n return __generator(this, function(_state) {\n return [\n 2,\n Promise.all(Object.entries(modules).map(function() {\n var _ref = _asyncToGenerator(function(param) {\n var _param, name, url, e, app, module, error, start, moduleExports;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _param = _slicedToArray(param, 2), name = _param[0], url = _param[1];\n if (!url || !url.match(/\\.js$/)) {\n return [\n 2,\n [\n name,\n {}\n ]\n ];\n }\n if (url.startsWith(\"./\")) {\n url = window.spaBase + url.substring(1);\n }\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 3,\n ,\n 4\n ]);\n return [\n 4,\n new Promise(function(resolve, reject) {\n loadScript(name, url, resolve, reject);\n })\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 4\n ];\n case 3:\n e = _state.sent();\n // on an error, loadScript will log an appropriate message\n // we bail here so we don't break the application\n return [\n 2,\n [\n name,\n {}\n ]\n ];\n case 4:\n app = window[slugify(name)];\n if (!!app) return [\n 3,\n 8\n ];\n console.warn(\"\".concat(name, \" failed to be loaded into the webpack container. Perhaps it has been built using openmrs@3.x (or @openmrs/webpack-config@3.x). The current app shell version is 4.x (\").concat(window.spaVersion, \"), therefore frontend modules will need to be built with openmrs@4 (or @openmrs/webpack-config@4). Check the version in \").concat(name, \"'s package dependencies.\"));\n _state.label = 5;\n case 5:\n _state.trys.push([\n 5,\n 7,\n ,\n 8\n ]);\n return [\n 4,\n System.import(name)\n ];\n case 6:\n module = _state.sent();\n return [\n 2,\n [\n name,\n module\n ]\n ];\n case 7:\n error = _state.sent();\n console.error(\"Failed to load module \".concat(name, \" using either the supported mechanism or the legacy loading mechanism.\"), error);\n return [\n 2,\n [\n name,\n {}\n ]\n ];\n case 8:\n if (!isFederatedModule(app)) return [\n 3,\n 10\n ];\n app.init(__webpack_require__.S.default);\n return [\n 4,\n app.get(\"./start\")\n ];\n case 9:\n start = _state.sent();\n moduleExports = start();\n return [\n 2,\n [\n name,\n moduleExports\n ]\n ];\n case 10:\n console.error(\"\".concat(name, \" did not resolve to a federated module as expected; instead got:\"), app);\n return [\n 2,\n [\n name,\n {}\n ]\n ];\n case 11:\n return [\n 2\n ];\n }\n });\n });\n return function(_) {\n return _ref.apply(this, arguments);\n };\n }()))\n ];\n });\n });\n return _loadModules.apply(this, arguments);\n}\nfunction isFederatedModule(a) {\n return typeof a === \"object\" && a !== null && \"init\" in a && typeof a[\"init\"] === \"function\" && \"get\" in a && typeof a[\"get\"] === \"function\";\n}\n/**\n * Appends a `<script>` to the DOM with the given URL.\n */ function loadScript(name, url, resolve, reject) {\n if (!document.head.querySelector('script[src=\"'.concat(url, '\"]'))) {\n var element = document.createElement(\"script\");\n // Webpack uses this attribute to check whether a module has already\n // been loaded into the application.\n element.setAttribute(\"data-webpack\", slugify(name));\n element.src = url;\n element.type = \"text/javascript\";\n element.async = true;\n element.onload = function() {\n resolve(null);\n };\n element.onerror = function(ev) {\n console.error(\"Failed to load script from \".concat(url));\n console.error(ev);\n reject(ev.message);\n };\n document.head.appendChild(element);\n } else {\n console.warn(\"Script already loaded. Not loading it again.\", url);\n resolve(null);\n }\n}\nfunction slugify(name) {\n return name.replace(/[\\/\\-@]/g, \"_\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbG9hZC1tb2R1bGVzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFlQSxZQUFZQyxPQUErQjtXQUEzQ0Q7Q0FzRHJCO1NBdERxQkE7SUFBQUEsZUFBZiwyQkFBMkJDLE9BQStCLEVBQUU7O1lBQ2pFOztnQkFBT0MsUUFBUUMsR0FBRyxDQUNoQkMsT0FBT0MsT0FBTyxDQUFDSixTQUFTSyxHQUFHOytCQUFDLGtDQUF1QjtvQ0FBZkMsTUFBTUMsUUFtQmxDQyxLQU9JQyxRQUVDQyxPQVdIQyxPQUNBQzs7Ozt1RUF4QzBCTixrQkFBTUM7b0NBQ3hDLElBQUksQ0FBQ0EsT0FBTyxDQUFDQSxJQUFJTSxLQUFLLENBQUMsVUFBVTt3Q0FDL0I7OztnREFBUVA7Z0RBQU0sQ0FBQzs7O29DQUNqQixDQUFDO29DQUVELElBQUlDLElBQUlPLFVBQVUsQ0FBQyxPQUFPO3dDQUN4QlAsTUFBTVEsT0FBT0MsT0FBTyxHQUFHVCxJQUFJVSxTQUFTLENBQUM7b0NBQ3ZDLENBQUM7Ozs7Ozs7OztvQ0FHQzs7d0NBQU0sSUFBSWhCLFFBQVEsU0FBQ2lCLFNBQVNDLFFBQVc7NENBQ3JDQyxXQUFXZCxNQUFNQyxLQUFLVyxTQUFTQzt3Q0FDakM7OztvQ0FGQTs7Ozs7OztvQ0FJQSwwREFBMEQ7b0NBQzFELGlEQUFpRDtvQ0FDakQ7Ozs0Q0FBUWI7NENBQU0sQ0FBQzs7OztvQ0FHWEUsTUFBZU8sTUFBTSxDQUFDTSxRQUFRZixNQUFNO3lDQUN0QyxDQUFDRSxLQUFEOzs7O29DQUNGYyxRQUFRQyxJQUFJLENBQ1YsR0FBK0tSLE9BQTVLVCxNQUFLLHlLQUFtVEEsT0FBNUlTLE9BQU9TLFVBQVUsRUFBQyw0SEFBK0gsT0FBTGxCLE1BQUs7Ozs7Ozs7OztvQ0FJalQ7O3dDQUFNbUIsT0FBT0MsTUFBTSxDQUFDcEI7OztvQ0FBN0JHLFNBQVM7b0NBQ2Y7Ozs0Q0FBUUg7NENBQU1HOzs7O29DQUNQQztvQ0FDUFksUUFBUVosS0FBSyxDQUNYLHlCQUE4QixPQUFMSixNQUFLLDJFQUM5Qkk7b0NBRUY7Ozs0Q0FBUUo7NENBQU0sQ0FBQzs7Ozt5Q0FJZnFCLGtCQUFrQm5CLE1BQWxCbUI7Ozs7b0NBQ0ZuQixJQUFJb0IsSUFBSSxDQUFDQyxxQkFBd0JBLENBQUNDLE9BQU87b0NBQzNCOzt3Q0FBTXRCLElBQUl1QixHQUFHLENBQUM7OztvQ0FBdEJwQixRQUFRO29DQUNSQyxnQkFBZ0JEO29DQUN0Qjs7OzRDQUFRTDs0Q0FBTU07Ozs7b0NBRWRVLFFBQVFaLEtBQUssQ0FDWCxHQUFRLE9BQUxKLE1BQUsscUVBQ1JFO29DQUdGOzs7NENBQVFGOzRDQUFNLENBQUM7Ozs7Ozs7OztvQkFFbkI7Ozs7Ozs7SUFFSjtXQXREc0JQOztBQTZEdEIsU0FBUzRCLGtCQUFrQkssQ0FBVSxFQUF3QjtJQUMzRCxPQUNFLE9BQU9BLE1BQU0sWUFDYkEsTUFBTSxJQUFJLElBQ1YsVUFBVUEsS0FDVixPQUFPQSxDQUFDLENBQUMsT0FBTyxLQUFLLGNBQ3JCLFNBQVNBLEtBQ1QsT0FBT0EsQ0FBQyxDQUFDLE1BQU0sS0FBSztBQUV4QjtBQUVBOztDQUVDLEdBQ0QsU0FBU1osV0FDUGQsSUFBWSxFQUNaQyxHQUFXLEVBQ1hXLE9BQWlDLEVBQ2pDQyxNQUE4QixFQUM5QjtJQUNBLElBQUksQ0FBQ2MsU0FBU0MsSUFBSSxDQUFDQyxhQUFhLENBQUMsZUFBbUIsT0FBSjVCLEtBQUksUUFBTTtRQUN4RCxJQUFNNkIsVUFBVUgsU0FBU0ksYUFBYSxDQUFDO1FBQ3ZDLG9FQUFvRTtRQUNwRSxvQ0FBb0M7UUFDcENELFFBQVFFLFlBQVksQ0FBQyxnQkFBZ0JqQixRQUFRZjtRQUM3QzhCLFFBQVFHLEdBQUcsR0FBR2hDO1FBQ2Q2QixRQUFRSSxJQUFJLEdBQUc7UUFDZkosUUFBUUssS0FBSyxHQUFHLElBQUk7UUFDcEJMLFFBQVFNLE1BQU0sR0FBRyxXQUFNO1lBQ3JCeEIsUUFBUSxJQUFJO1FBQ2Q7UUFFQWtCLFFBQVFPLE9BQU8sR0FBRyxTQUFDQyxJQUFtQjtZQUNwQ3RCLFFBQVFaLEtBQUssQ0FBQyw4QkFBa0MsT0FBSkg7WUFDNUNlLFFBQVFaLEtBQUssQ0FBQ2tDO1lBQ2R6QixPQUFPeUIsR0FBR0MsT0FBTztRQUNuQjtRQUVBWixTQUFTQyxJQUFJLENBQUNZLFdBQVcsQ0FBQ1Y7SUFDNUIsT0FBTztRQUNMZCxRQUFRQyxJQUFJLENBQUMsZ0RBQWdEaEI7UUFDN0RXLFFBQVEsSUFBSTtJQUNkLENBQUM7QUFDSDtBQUVPLFNBQVNHLFFBQVFmLElBQVksRUFBRTtJQUNwQyxPQUFPQSxLQUFLeUMsT0FBTyxDQUFDLFlBQVk7QUFDbEMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvbG9hZC1tb2R1bGVzLnRzPzkyNzUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMb2FkcyBhbGwgcHJvdmlkZWQgbW9kdWxlcyBpbnRvIHRoZSB3ZWJwYWNrIHJ1bnRpbWUgc28gdGhhdCB0aGV5XG4gKiBtYXkgYmUgdXNlZC5cbiAqXG4gKiBPdXIgbW9kdWxlIGxvYWRpbmcgc3lzdGVtIGlzIGJhc2VkIG9uIFdlYnBhY2sgTW9kdWxlIEZlZGVyYXRpb24uXG4gKiBXZSBoYXZlIGEgXCJkeW5hbWljIHJlbW90ZSBjb250YWluZXJzXCIgc3lzdGVtLiBUaGUgXCJlbnRyeSBwb2ludFwiIG9mXG4gKiB0aGUgYXBwbGljYXRpb24gaXMgYEBvcGVubXJzLWVzbS1hcHAtc2hlbGxgLiBUaGUgbGlzdCBvZiByZW1vdGVzXG4gKiB0byBiZSBsb2FkZWQgaXMgc3VwcGxpZWQgaW4gaW1wb3J0IG1hcHMsIHdoaWNoIGFyZSBsb2FkZWQgYnlcbiAqIFN5c3RlbUpTLiBXZSBhcmUgbm90IHVzaW5nIHRoZSBTeXN0ZW1KUyByZWdpc3RyeSBhdCBhbGwsIG9ubHkgV01GLlxuICpcbiAqIEVhY2ggbW9kdWxlIChcInJlbW90ZVwiKSBpcyBwcm92aWRlZCBhcyBhIG5hbWUgYW5kIFVSTC4gRm9yIGVhY2ggVVJMLFxuICogYSBgPHNjcmlwdD5gIGVsZW1lbnQgaXMgYXBwZW5kZWQgdG8gdGhlIERPTS4gQmVjYXVzZSB0aG9zZSBzY3JpcHRzIGhhdmUgd2VicGFja1xuICogbGlicmFyeSB0eXBlID09ICd2YXInLCB3aGVuIHRoZXkgYXJlIGxvYWRlZCwgdGhleSBjcmVhdGUgYSBuZXdcbiAqIGdsb2JhbCB2YXJpYWJsZSB3aGljaCBoYXMgdGhlIFdlYnBhY2sgQ29udGFpbmVyIEludGVyZmFjZSBmb3IgdGhhdFxuICogbW9kdWxlOiB0aGUgYGluaXRgIGFuZCBgZ2V0YCBtZXRob2RzLiBXZSB1c2UgdGhvc2UgdG8gb2J0YWluIHRoZVxuICogYWN0dWFsIG1vZHVsZSBleHBvcnRzLlxuICpcbiAqIEBwYXJhbSBtb2R1bGVzIEEgbWFwcGluZyBmcm9tIG1vZHVsZSBuYW1lcyB0byBVUkxzLlxuICogQHJldHVybnMgVGhlIGludGVyZmFjZXMgb2YgdGhvc2UgbW9kdWxlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRNb2R1bGVzKG1vZHVsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgIE9iamVjdC5lbnRyaWVzKG1vZHVsZXMpLm1hcChhc3luYyAoW25hbWUsIHVybF0pID0+IHtcbiAgICAgIGlmICghdXJsIHx8ICF1cmwubWF0Y2goL1xcLmpzJC8pKSB7XG4gICAgICAgIHJldHVybiBbbmFtZSwge31dO1xuICAgICAgfVxuXG4gICAgICBpZiAodXJsLnN0YXJ0c1dpdGgoXCIuL1wiKSkge1xuICAgICAgICB1cmwgPSB3aW5kb3cuc3BhQmFzZSArIHVybC5zdWJzdHJpbmcoMSk7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBsb2FkU2NyaXB0KG5hbWUsIHVybCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gb24gYW4gZXJyb3IsIGxvYWRTY3JpcHQgd2lsbCBsb2cgYW4gYXBwcm9wcmlhdGUgbWVzc2FnZVxuICAgICAgICAvLyB3ZSBiYWlsIGhlcmUgc28gd2UgZG9uJ3QgYnJlYWsgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgIHJldHVybiBbbmFtZSwge31dO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhcHA6IHVua25vd24gPSB3aW5kb3dbc2x1Z2lmeShuYW1lKV07XG4gICAgICBpZiAoIWFwcCkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYCR7bmFtZX0gZmFpbGVkIHRvIGJlIGxvYWRlZCBpbnRvIHRoZSB3ZWJwYWNrIGNvbnRhaW5lci4gUGVyaGFwcyBpdCBoYXMgYmVlbiBidWlsdCB1c2luZyBvcGVubXJzQDMueCAob3IgQG9wZW5tcnMvd2VicGFjay1jb25maWdAMy54KS4gVGhlIGN1cnJlbnQgYXBwIHNoZWxsIHZlcnNpb24gaXMgNC54ICgke3dpbmRvdy5zcGFWZXJzaW9ufSksIHRoZXJlZm9yZSBmcm9udGVuZCBtb2R1bGVzIHdpbGwgbmVlZCB0byBiZSBidWlsdCB3aXRoIG9wZW5tcnNANCAob3IgQG9wZW5tcnMvd2VicGFjay1jb25maWdANCkuIENoZWNrIHRoZSB2ZXJzaW9uIGluICR7bmFtZX0ncyBwYWNrYWdlIGRlcGVuZGVuY2llcy5gXG4gICAgICAgICk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBtb2R1bGUgPSBhd2FpdCBTeXN0ZW0uaW1wb3J0KG5hbWUpO1xuICAgICAgICAgIHJldHVybiBbbmFtZSwgbW9kdWxlXTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYEZhaWxlZCB0byBsb2FkIG1vZHVsZSAke25hbWV9IHVzaW5nIGVpdGhlciB0aGUgc3VwcG9ydGVkIG1lY2hhbmlzbSBvciB0aGUgbGVnYWN5IGxvYWRpbmcgbWVjaGFuaXNtLmAsXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIFtuYW1lLCB7fV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzRmVkZXJhdGVkTW9kdWxlKGFwcCkpIHtcbiAgICAgICAgYXBwLmluaXQoX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fLmRlZmF1bHQpO1xuICAgICAgICBjb25zdCBzdGFydCA9IGF3YWl0IGFwcC5nZXQoXCIuL3N0YXJ0XCIpO1xuICAgICAgICBjb25zdCBtb2R1bGVFeHBvcnRzID0gc3RhcnQoKTtcbiAgICAgICAgcmV0dXJuIFtuYW1lLCBtb2R1bGVFeHBvcnRzXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYCR7bmFtZX0gZGlkIG5vdCByZXNvbHZlIHRvIGEgZmVkZXJhdGVkIG1vZHVsZSBhcyBleHBlY3RlZDsgaW5zdGVhZCBnb3Q6YCxcbiAgICAgICAgICBhcHBcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gW25hbWUsIHt9XTtcbiAgICAgIH1cbiAgICB9KVxuICApO1xufVxuXG5pbnRlcmZhY2UgRmVkZXJhdGVkTW9kdWxlIHtcbiAgaW5pdDogKHNjb3BlOiB0eXBlb2YgX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fLmRlZmF1bHQpID0+IHZvaWQ7XG4gIGdldDogKF9leHBvcnQ6IHN0cmluZykgPT4gUHJvbWlzZTwoKSA9PiB1bmtub3duPjtcbn1cblxuZnVuY3Rpb24gaXNGZWRlcmF0ZWRNb2R1bGUoYTogdW5rbm93bik6IGEgaXMgRmVkZXJhdGVkTW9kdWxlIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgYSA9PT0gXCJvYmplY3RcIiAmJlxuICAgIGEgIT09IG51bGwgJiZcbiAgICBcImluaXRcIiBpbiBhICYmXG4gICAgdHlwZW9mIGFbXCJpbml0XCJdID09PSBcImZ1bmN0aW9uXCIgJiZcbiAgICBcImdldFwiIGluIGEgJiZcbiAgICB0eXBlb2YgYVtcImdldFwiXSA9PT0gXCJmdW5jdGlvblwiXG4gICk7XG59XG5cbi8qKlxuICogQXBwZW5kcyBhIGA8c2NyaXB0PmAgdG8gdGhlIERPTSB3aXRoIHRoZSBnaXZlbiBVUkwuXG4gKi9cbmZ1bmN0aW9uIGxvYWRTY3JpcHQoXG4gIG5hbWU6IHN0cmluZyxcbiAgdXJsOiBzdHJpbmcsXG4gIHJlc29sdmU6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCxcbiAgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkXG4pIHtcbiAgaWYgKCFkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3VybH1cIl1gKSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgIC8vIFdlYnBhY2sgdXNlcyB0aGlzIGF0dHJpYnV0ZSB0byBjaGVjayB3aGV0aGVyIGEgbW9kdWxlIGhhcyBhbHJlYWR5XG4gICAgLy8gYmVlbiBsb2FkZWQgaW50byB0aGUgYXBwbGljYXRpb24uXG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXdlYnBhY2tcIiwgc2x1Z2lmeShuYW1lKSk7XG4gICAgZWxlbWVudC5zcmMgPSB1cmw7XG4gICAgZWxlbWVudC50eXBlID0gXCJ0ZXh0L2phdmFzY3JpcHRcIjtcbiAgICBlbGVtZW50LmFzeW5jID0gdHJ1ZTtcbiAgICBlbGVtZW50Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgfTtcblxuICAgIGVsZW1lbnQub25lcnJvciA9IChldjogRXJyb3JFdmVudCkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGxvYWQgc2NyaXB0IGZyb20gJHt1cmx9YCk7XG4gICAgICBjb25zb2xlLmVycm9yKGV2KTtcbiAgICAgIHJlamVjdChldi5tZXNzYWdlKTtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLndhcm4oXCJTY3JpcHQgYWxyZWFkeSBsb2FkZWQuIE5vdCBsb2FkaW5nIGl0IGFnYWluLlwiLCB1cmwpO1xuICAgIHJlc29sdmUobnVsbCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNsdWdpZnkobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBuYW1lLnJlcGxhY2UoL1tcXC9cXC1AXS9nLCBcIl9cIik7XG59XG4iXSwibmFtZXMiOlsibG9hZE1vZHVsZXMiLCJtb2R1bGVzIiwiUHJvbWlzZSIsImFsbCIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJuYW1lIiwidXJsIiwiYXBwIiwibW9kdWxlIiwiZXJyb3IiLCJzdGFydCIsIm1vZHVsZUV4cG9ydHMiLCJtYXRjaCIsInN0YXJ0c1dpdGgiLCJ3aW5kb3ciLCJzcGFCYXNlIiwic3Vic3RyaW5nIiwicmVzb2x2ZSIsInJlamVjdCIsImxvYWRTY3JpcHQiLCJzbHVnaWZ5IiwiY29uc29sZSIsIndhcm4iLCJzcGFWZXJzaW9uIiwiU3lzdGVtIiwiaW1wb3J0IiwiaXNGZWRlcmF0ZWRNb2R1bGUiLCJpbml0IiwiX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fIiwiZGVmYXVsdCIsImdldCIsImEiLCJkb2N1bWVudCIsImhlYWQiLCJxdWVyeVNlbGVjdG9yIiwiZWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJzcmMiLCJ0eXBlIiwiYXN5bmMiLCJvbmxvYWQiLCJvbmVycm9yIiwiZXYiLCJtZXNzYWdlIiwiYXBwZW5kQ2hpbGQiLCJyZXBsYWNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/load-modules.ts\n");
7745
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"loadModules\": () => (/* binding */ loadModules),\n/* harmony export */ \"slugify\": () => (/* binding */ slugify)\n/* harmony export */ });\n/**\n * Loads all provided modules into the webpack runtime so that they\n * may be used.\n *\n * Our module loading system is based on Webpack Module Federation.\n * We have a \"dynamic remote containers\" system. The \"entry point\" of\n * the application is `@openmrs-esm-app-shell`. The list of remotes\n * to be loaded is supplied in import maps, which are loaded by\n * SystemJS. We are not using the SystemJS registry at all, only WMF.\n *\n * Each module (\"remote\") is provided as a name and URL. For each URL,\n * a `<script>` element is appended to the DOM. Because those scripts have webpack\n * library type == 'var', when they are loaded, they create a new\n * global variable which has the Webpack Container Interface for that\n * module: the `init` and `get` methods. We use those to obtain the\n * actual module exports.\n *\n * @param modules A mapping from module names to URLs.\n * @returns The interfaces of those modules.\n */ function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nfunction loadModules(modules) {\n return _loadModules.apply(this, arguments);\n}\nfunction _loadModules() {\n _loadModules = _asyncToGenerator(function(modules) {\n return __generator(this, function(_state) {\n return [\n 2,\n Promise.all(Object.entries(modules).map(function() {\n var _ref = _asyncToGenerator(function(param) {\n var _param, name, url, e, app, start, moduleExports;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _param = _slicedToArray(param, 2), name = _param[0], url = _param[1];\n if (!url || !url.match(/\\.js$/)) {\n return [\n 2,\n [\n name,\n {}\n ]\n ];\n }\n if (url.startsWith(\"./\")) {\n url = window.spaBase + url.substring(1);\n }\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 3,\n ,\n 4\n ]);\n return [\n 4,\n new Promise(function(resolve, reject) {\n loadScript(name, url, resolve, reject);\n })\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 4\n ];\n case 3:\n e = _state.sent();\n // on an error, loadScript will log an appropriate message\n // we bail here so we don't break the application\n return [\n 2,\n [\n name,\n {}\n ]\n ];\n case 4:\n app = window[slugify(name)];\n if (!app) {\n console.warn(\"\".concat(name, \" failed to be loaded into the webpack container. Perhaps it has been built using openmrs@3.x (or @openmrs/webpack-config@3.x). The current app shell version is 4.x (\").concat(window.spaVersion, \"), therefore frontend modules will need to be built with openmrs@4 (or @openmrs/webpack-config@4). Check the version in \").concat(name, \"'s package dependencies.\"));\n }\n if (!isFederatedModule(app)) return [\n 3,\n 6\n ];\n app.init(__webpack_require__.S.default);\n return [\n 4,\n app.get(\"./start\")\n ];\n case 5:\n start = _state.sent();\n moduleExports = start();\n return [\n 2,\n [\n name,\n moduleExports\n ]\n ];\n case 6:\n console.error(\"\".concat(name, \" did not resolve to a federated module as expected; instead got:\"), app);\n return [\n 2,\n [\n name,\n {}\n ]\n ];\n case 7:\n return [\n 2\n ];\n }\n });\n });\n return function(_) {\n return _ref.apply(this, arguments);\n };\n }()))\n ];\n });\n });\n return _loadModules.apply(this, arguments);\n}\nfunction isFederatedModule(a) {\n return typeof a === \"object\" && a !== null && \"init\" in a && typeof a[\"init\"] === \"function\" && \"get\" in a && typeof a[\"get\"] === \"function\";\n}\n/**\n * Appends a `<script>` to the DOM with the given URL.\n */ function loadScript(name, url, resolve, reject) {\n if (!document.head.querySelector('script[src=\"'.concat(url, '\"]'))) {\n var element = document.createElement(\"script\");\n // Webpack uses this attribute to check whether a module has already\n // been loaded into the application.\n element.setAttribute(\"data-webpack\", slugify(name));\n element.src = url;\n element.type = \"text/javascript\";\n element.async = true;\n element.onload = function() {\n resolve(null);\n };\n element.onerror = function(ev) {\n console.error(\"Failed to load script from \".concat(url));\n console.error(ev);\n reject(ev.message);\n };\n document.head.appendChild(element);\n } else {\n console.warn(\"Script already loaded. Not loading it again.\", url);\n resolve(null);\n }\n}\nfunction slugify(name) {\n return name.replace(/[\\/\\-@]/g, \"_\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbG9hZC1tb2R1bGVzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFlQSxZQUFZQyxPQUErQjtXQUEzQ0Q7Q0EyQ3JCO1NBM0NxQkE7SUFBQUEsZUFBZiwyQkFBMkJDLE9BQStCLEVBQUU7O1lBQ2pFOztnQkFBT0MsUUFBUUMsR0FBRyxDQUNoQkMsT0FBT0MsT0FBTyxDQUFDSixTQUFTSyxHQUFHOytCQUFDLGtDQUF1QjtvQ0FBZkMsTUFBTUMsUUFtQmxDQyxLQVNFQyxPQUNBQzs7Ozt1RUE3QjBCSixrQkFBTUM7b0NBQ3hDLElBQUksQ0FBQ0EsT0FBTyxDQUFDQSxJQUFJSSxLQUFLLENBQUMsVUFBVTt3Q0FDL0I7OztnREFBUUw7Z0RBQU0sQ0FBQzs7O29DQUNqQixDQUFDO29DQUVELElBQUlDLElBQUlLLFVBQVUsQ0FBQyxPQUFPO3dDQUN4QkwsTUFBTU0sT0FBT0MsT0FBTyxHQUFHUCxJQUFJUSxTQUFTLENBQUM7b0NBQ3ZDLENBQUM7Ozs7Ozs7OztvQ0FHQzs7d0NBQU0sSUFBSWQsUUFBUSxTQUFDZSxTQUFTQyxRQUFXOzRDQUNyQ0MsV0FBV1osTUFBTUMsS0FBS1MsU0FBU0M7d0NBQ2pDOzs7b0NBRkE7Ozs7Ozs7b0NBSUEsMERBQTBEO29DQUMxRCxpREFBaUQ7b0NBQ2pEOzs7NENBQVFYOzRDQUFNLENBQUM7Ozs7b0NBR1hFLE1BQWVLLE1BQU0sQ0FBQ00sUUFBUWIsTUFBTTtvQ0FDMUMsSUFBSSxDQUFDRSxLQUFLO3dDQUNSWSxRQUFRQyxJQUFJLENBQ1YsR0FBK0tSLE9BQTVLUCxNQUFLLHlLQUFtVEEsT0FBNUlPLE9BQU9TLFVBQVUsRUFBQyw0SEFBK0gsT0FBTGhCLE1BQUs7b0NBRXBVLENBQUM7eUNBRUdpQixrQkFBa0JmLE1BQWxCZTs7OztvQ0FDRmYsSUFBSWdCLElBQUksQ0FBQ0MscUJBQXdCQSxDQUFDQyxPQUFPO29DQUMzQjs7d0NBQU1sQixJQUFJbUIsR0FBRyxDQUFDOzs7b0NBQXRCbEIsUUFBUTtvQ0FDUkMsZ0JBQWdCRDtvQ0FDdEI7Ozs0Q0FBUUg7NENBQU1JOzs7O29DQUVkVSxRQUFRUSxLQUFLLENBQ1gsR0FBUSxPQUFMdEIsTUFBSyxxRUFDUkU7b0NBR0Y7Ozs0Q0FBUUY7NENBQU0sQ0FBQzs7Ozs7Ozs7O29CQUVuQjs7Ozs7OztJQUVKO1dBM0NzQlA7O0FBa0R0QixTQUFTd0Isa0JBQWtCTSxDQUFVLEVBQXdCO0lBQzNELE9BQ0UsT0FBT0EsTUFBTSxZQUNiQSxNQUFNLElBQUksSUFDVixVQUFVQSxLQUNWLE9BQU9BLENBQUMsQ0FBQyxPQUFPLEtBQUssY0FDckIsU0FBU0EsS0FDVCxPQUFPQSxDQUFDLENBQUMsTUFBTSxLQUFLO0FBRXhCO0FBRUE7O0NBRUMsR0FDRCxTQUFTWCxXQUNQWixJQUFZLEVBQ1pDLEdBQVcsRUFDWFMsT0FBaUMsRUFDakNDLE1BQThCLEVBQzlCO0lBQ0EsSUFBSSxDQUFDYSxTQUFTQyxJQUFJLENBQUNDLGFBQWEsQ0FBQyxlQUFtQixPQUFKekIsS0FBSSxRQUFNO1FBQ3hELElBQU0wQixVQUFVSCxTQUFTSSxhQUFhLENBQUM7UUFDdkMsb0VBQW9FO1FBQ3BFLG9DQUFvQztRQUNwQ0QsUUFBUUUsWUFBWSxDQUFDLGdCQUFnQmhCLFFBQVFiO1FBQzdDMkIsUUFBUUcsR0FBRyxHQUFHN0I7UUFDZDBCLFFBQVFJLElBQUksR0FBRztRQUNmSixRQUFRSyxLQUFLLEdBQUcsSUFBSTtRQUNwQkwsUUFBUU0sTUFBTSxHQUFHLFdBQU07WUFDckJ2QixRQUFRLElBQUk7UUFDZDtRQUVBaUIsUUFBUU8sT0FBTyxHQUFHLFNBQUNDLElBQW1CO1lBQ3BDckIsUUFBUVEsS0FBSyxDQUFDLDhCQUFrQyxPQUFKckI7WUFDNUNhLFFBQVFRLEtBQUssQ0FBQ2E7WUFDZHhCLE9BQU93QixHQUFHQyxPQUFPO1FBQ25CO1FBRUFaLFNBQVNDLElBQUksQ0FBQ1ksV0FBVyxDQUFDVjtJQUM1QixPQUFPO1FBQ0xiLFFBQVFDLElBQUksQ0FBQyxnREFBZ0RkO1FBQzdEUyxRQUFRLElBQUk7SUFDZCxDQUFDO0FBQ0g7QUFFTyxTQUFTRyxRQUFRYixJQUFZLEVBQUU7SUFDcEMsT0FBT0EsS0FBS3NDLE9BQU8sQ0FBQyxZQUFZO0FBQ2xDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4vc3JjL2xvYWQtbW9kdWxlcy50cz85Mjc1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTG9hZHMgYWxsIHByb3ZpZGVkIG1vZHVsZXMgaW50byB0aGUgd2VicGFjayBydW50aW1lIHNvIHRoYXQgdGhleVxuICogbWF5IGJlIHVzZWQuXG4gKlxuICogT3VyIG1vZHVsZSBsb2FkaW5nIHN5c3RlbSBpcyBiYXNlZCBvbiBXZWJwYWNrIE1vZHVsZSBGZWRlcmF0aW9uLlxuICogV2UgaGF2ZSBhIFwiZHluYW1pYyByZW1vdGUgY29udGFpbmVyc1wiIHN5c3RlbS4gVGhlIFwiZW50cnkgcG9pbnRcIiBvZlxuICogdGhlIGFwcGxpY2F0aW9uIGlzIGBAb3Blbm1ycy1lc20tYXBwLXNoZWxsYC4gVGhlIGxpc3Qgb2YgcmVtb3Rlc1xuICogdG8gYmUgbG9hZGVkIGlzIHN1cHBsaWVkIGluIGltcG9ydCBtYXBzLCB3aGljaCBhcmUgbG9hZGVkIGJ5XG4gKiBTeXN0ZW1KUy4gV2UgYXJlIG5vdCB1c2luZyB0aGUgU3lzdGVtSlMgcmVnaXN0cnkgYXQgYWxsLCBvbmx5IFdNRi5cbiAqXG4gKiBFYWNoIG1vZHVsZSAoXCJyZW1vdGVcIikgaXMgcHJvdmlkZWQgYXMgYSBuYW1lIGFuZCBVUkwuIEZvciBlYWNoIFVSTCxcbiAqIGEgYDxzY3JpcHQ+YCBlbGVtZW50IGlzIGFwcGVuZGVkIHRvIHRoZSBET00uIEJlY2F1c2UgdGhvc2Ugc2NyaXB0cyBoYXZlIHdlYnBhY2tcbiAqIGxpYnJhcnkgdHlwZSA9PSAndmFyJywgd2hlbiB0aGV5IGFyZSBsb2FkZWQsIHRoZXkgY3JlYXRlIGEgbmV3XG4gKiBnbG9iYWwgdmFyaWFibGUgd2hpY2ggaGFzIHRoZSBXZWJwYWNrIENvbnRhaW5lciBJbnRlcmZhY2UgZm9yIHRoYXRcbiAqIG1vZHVsZTogdGhlIGBpbml0YCBhbmQgYGdldGAgbWV0aG9kcy4gV2UgdXNlIHRob3NlIHRvIG9idGFpbiB0aGVcbiAqIGFjdHVhbCBtb2R1bGUgZXhwb3J0cy5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlcyBBIG1hcHBpbmcgZnJvbSBtb2R1bGUgbmFtZXMgdG8gVVJMcy5cbiAqIEByZXR1cm5zIFRoZSBpbnRlcmZhY2VzIG9mIHRob3NlIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkTW9kdWxlcyhtb2R1bGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICBPYmplY3QuZW50cmllcyhtb2R1bGVzKS5tYXAoYXN5bmMgKFtuYW1lLCB1cmxdKSA9PiB7XG4gICAgICBpZiAoIXVybCB8fCAhdXJsLm1hdGNoKC9cXC5qcyQvKSkge1xuICAgICAgICByZXR1cm4gW25hbWUsIHt9XTtcbiAgICAgIH1cblxuICAgICAgaWYgKHVybC5zdGFydHNXaXRoKFwiLi9cIikpIHtcbiAgICAgICAgdXJsID0gd2luZG93LnNwYUJhc2UgKyB1cmwuc3Vic3RyaW5nKDEpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgbG9hZFNjcmlwdChuYW1lLCB1cmwsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIG9uIGFuIGVycm9yLCBsb2FkU2NyaXB0IHdpbGwgbG9nIGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2VcbiAgICAgICAgLy8gd2UgYmFpbCBoZXJlIHNvIHdlIGRvbid0IGJyZWFrIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICByZXR1cm4gW25hbWUsIHt9XTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXBwOiB1bmtub3duID0gd2luZG93W3NsdWdpZnkobmFtZSldO1xuICAgICAgaWYgKCFhcHApIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGAke25hbWV9IGZhaWxlZCB0byBiZSBsb2FkZWQgaW50byB0aGUgd2VicGFjayBjb250YWluZXIuIFBlcmhhcHMgaXQgaGFzIGJlZW4gYnVpbHQgdXNpbmcgb3Blbm1yc0AzLnggKG9yIEBvcGVubXJzL3dlYnBhY2stY29uZmlnQDMueCkuIFRoZSBjdXJyZW50IGFwcCBzaGVsbCB2ZXJzaW9uIGlzIDQueCAoJHt3aW5kb3cuc3BhVmVyc2lvbn0pLCB0aGVyZWZvcmUgZnJvbnRlbmQgbW9kdWxlcyB3aWxsIG5lZWQgdG8gYmUgYnVpbHQgd2l0aCBvcGVubXJzQDQgKG9yIEBvcGVubXJzL3dlYnBhY2stY29uZmlnQDQpLiBDaGVjayB0aGUgdmVyc2lvbiBpbiAke25hbWV9J3MgcGFja2FnZSBkZXBlbmRlbmNpZXMuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNGZWRlcmF0ZWRNb2R1bGUoYXBwKSkge1xuICAgICAgICBhcHAuaW5pdChfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdCk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gYXdhaXQgYXBwLmdldChcIi4vc3RhcnRcIik7XG4gICAgICAgIGNvbnN0IG1vZHVsZUV4cG9ydHMgPSBzdGFydCgpO1xuICAgICAgICByZXR1cm4gW25hbWUsIG1vZHVsZUV4cG9ydHNdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgJHtuYW1lfSBkaWQgbm90IHJlc29sdmUgdG8gYSBmZWRlcmF0ZWQgbW9kdWxlIGFzIGV4cGVjdGVkOyBpbnN0ZWFkIGdvdDpgLFxuICAgICAgICAgIGFwcFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBbbmFtZSwge31dO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG59XG5cbmludGVyZmFjZSBGZWRlcmF0ZWRNb2R1bGUge1xuICBpbml0OiAoc2NvcGU6IHR5cGVvZiBfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdCkgPT4gdm9pZDtcbiAgZ2V0OiAoX2V4cG9ydDogc3RyaW5nKSA9PiBQcm9taXNlPCgpID0+IHVua25vd24+O1xufVxuXG5mdW5jdGlvbiBpc0ZlZGVyYXRlZE1vZHVsZShhOiB1bmtub3duKTogYSBpcyBGZWRlcmF0ZWRNb2R1bGUge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBhID09PSBcIm9iamVjdFwiICYmXG4gICAgYSAhPT0gbnVsbCAmJlxuICAgIFwiaW5pdFwiIGluIGEgJiZcbiAgICB0eXBlb2YgYVtcImluaXRcIl0gPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgIFwiZ2V0XCIgaW4gYSAmJlxuICAgIHR5cGVvZiBhW1wiZ2V0XCJdID09PSBcImZ1bmN0aW9uXCJcbiAgKTtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIGEgYDxzY3JpcHQ+YCB0byB0aGUgRE9NIHdpdGggdGhlIGdpdmVuIFVSTC5cbiAqL1xuZnVuY3Rpb24gbG9hZFNjcmlwdChcbiAgbmFtZTogc3RyaW5nLFxuICB1cmw6IHN0cmluZyxcbiAgcmVzb2x2ZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkLFxuICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWRcbikge1xuICBpZiAoIWRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7dXJsfVwiXWApKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgLy8gV2VicGFjayB1c2VzIHRoaXMgYXR0cmlidXRlIHRvIGNoZWNrIHdoZXRoZXIgYSBtb2R1bGUgaGFzIGFscmVhZHlcbiAgICAvLyBiZWVuIGxvYWRlZCBpbnRvIHRoZSBhcHBsaWNhdGlvbi5cbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShcImRhdGEtd2VicGFja1wiLCBzbHVnaWZ5KG5hbWUpKTtcbiAgICBlbGVtZW50LnNyYyA9IHVybDtcbiAgICBlbGVtZW50LnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiO1xuICAgIGVsZW1lbnQuYXN5bmMgPSB0cnVlO1xuICAgIGVsZW1lbnQub25sb2FkID0gKCkgPT4ge1xuICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICB9O1xuXG4gICAgZWxlbWVudC5vbmVycm9yID0gKGV2OiBFcnJvckV2ZW50KSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gbG9hZCBzY3JpcHQgZnJvbSAke3VybH1gKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXYpO1xuICAgICAgcmVqZWN0KGV2Lm1lc3NhZ2UpO1xuICAgIH07XG5cbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUud2FybihcIlNjcmlwdCBhbHJlYWR5IGxvYWRlZC4gTm90IGxvYWRpbmcgaXQgYWdhaW4uXCIsIHVybCk7XG4gICAgcmVzb2x2ZShudWxsKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG5hbWUucmVwbGFjZSgvW1xcL1xcLUBdL2csIFwiX1wiKTtcbn1cbiJdLCJuYW1lcyI6WyJsb2FkTW9kdWxlcyIsIm1vZHVsZXMiLCJQcm9taXNlIiwiYWxsIiwiT2JqZWN0IiwiZW50cmllcyIsIm1hcCIsIm5hbWUiLCJ1cmwiLCJhcHAiLCJzdGFydCIsIm1vZHVsZUV4cG9ydHMiLCJtYXRjaCIsInN0YXJ0c1dpdGgiLCJ3aW5kb3ciLCJzcGFCYXNlIiwic3Vic3RyaW5nIiwicmVzb2x2ZSIsInJlamVjdCIsImxvYWRTY3JpcHQiLCJzbHVnaWZ5IiwiY29uc29sZSIsIndhcm4iLCJzcGFWZXJzaW9uIiwiaXNGZWRlcmF0ZWRNb2R1bGUiLCJpbml0IiwiX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fIiwiZGVmYXVsdCIsImdldCIsImVycm9yIiwiYSIsImRvY3VtZW50IiwiaGVhZCIsInF1ZXJ5U2VsZWN0b3IiLCJlbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsInNyYyIsInR5cGUiLCJhc3luYyIsIm9ubG9hZCIsIm9uZXJyb3IiLCJldiIsIm1lc3NhZ2UiLCJhcHBlbmRDaGlsZCIsInJlcGxhY2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/load-modules.ts\n");
7757
7746
 
7758
7747
  /***/ }),
7759
7748
 
@@ -7775,7 +7764,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
7775
7764
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7776
7765
 
7777
7766
  "use strict";
7778
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"run\": () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var import_map_overrides__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! import-map-overrides */ \"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\n/* harmony import */ var systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! systemjs/dist/system */ \"../../../node_modules/systemjs/dist/system.js\");\n/* harmony import */ var systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! systemjs/dist/extras/amd */ \"../../../node_modules/systemjs/dist/extras/amd.js\");\n/* harmony import */ var systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! systemjs/dist/extras/named-exports */ \"../../../node_modules/systemjs/dist/extras/named-exports.js\");\n/* harmony import */ var systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! systemjs/dist/extras/named-register */ \"../../../node_modules/systemjs/dist/extras/named-register.js\");\n/* harmony import */ var systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! systemjs/dist/extras/use-default */ \"../../../node_modules/systemjs/dist/extras/use-default.js\");\n/* harmony import */ var systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! single-spa */ \"../../../node_modules/single-spa/lib/esm/single-spa.min.js\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _apps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./locale */ \"./src/locale.ts\");\n/* harmony import */ var _load_modules__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./load-modules */ \"./src/load-modules.ts\");\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ui */ \"./src/ui/index.ts\");\n/* harmony import */ var _dependencies__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./dependencies */ \"./src/dependencies.ts\");\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Loads the frontend modules (apps and widgets). Should be done *after*\n * the import maps initialized, i.e., after modules loaded.\n *\n * By convention we call frontend modules registering activation functions\n * apps, and all others widgets. This is not enforced technically.\n */ function loadApps() {\n return window.importMapOverrides.getCurrentPageMap().then(function(importMap) {\n return (0,_load_modules__WEBPACK_IMPORTED_MODULE_10__.loadModules)(importMap.imports);\n });\n}\n/**\n * Registers the extensions already coming from the app shell itself.\n */ function registerCoreExtensions() {\n var extensions = (0,_ui__WEBPACK_IMPORTED_MODULE_11__.getCoreExtensions)();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = extensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n (0,_apps__WEBPACK_IMPORTED_MODULE_8__.tryRegisterExtension)(_ui__WEBPACK_IMPORTED_MODULE_11__.appName, extension);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nfunction setupApps(modules) {\n return _setupApps.apply(this, arguments);\n}\nfunction _setupApps() {\n _setupApps = /**\n * Sets up the frontend modules (apps). Uses the defined export\n * from the root modules of the apps, which should export a\n * special function called \"setupOpenMRS\".\n * That function returns an object that is used to feed Single\n * SPA.\n */ _asyncToGenerator(function(modules) {\n return __generator(this, function(_state) {\n modules.forEach(function(param) {\n var _param = _slicedToArray(param, 2), appName = _param[0], appExports = _param[1];\n return (0,_apps__WEBPACK_IMPORTED_MODULE_8__.registerApp)(appName, appExports);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(/*#__PURE__*/ _asyncToGenerator(function() {\n var appNames;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n appNames = (0,single_spa__WEBPACK_IMPORTED_MODULE_6__.getAppNames)();\n return [\n 4,\n Promise.all(appNames.map(single_spa__WEBPACK_IMPORTED_MODULE_6__.unregisterApplication))\n ];\n case 1:\n _state.sent();\n (0,_apps__WEBPACK_IMPORTED_MODULE_8__.finishRegisteringAllApps)();\n return [\n 2\n ];\n }\n });\n }));\n window.installedModules = modules;\n return [\n 2\n ];\n });\n });\n return _setupApps.apply(this, arguments);\n}\nfunction loadConfigs(configs) {\n return _loadConfigs.apply(this, arguments);\n}\nfunction _loadConfigs() {\n _loadConfigs = /**\n * Loads the provided configurations and sets them in the system.\n */ _asyncToGenerator(function(configs) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, config;\n return __generator(this, function(_state) {\n _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(_iterator = configs[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n config = _step.value;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.provide)(config.value, config.name);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return [\n 2\n ];\n });\n });\n return _loadConfigs.apply(this, arguments);\n}\n/**\n * Invoked when the connectivity is changed.\n */ function connectivityChanged() {\n var online = navigator.onLine;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.dispatchConnectivityChanged)(online);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showToast)({\n critical: true,\n description: \"Connection: \".concat(online ? \"online\" : \"offline\"),\n title: \"App\",\n kind: online ? \"success\" : \"warning\"\n });\n}\n/**\n * Runs the shell by importing the translations and starting single SPA.\n */ function runShell() {\n window.addEventListener(\"offline\", connectivityChanged);\n window.addEventListener(\"online\", connectivityChanged);\n return (0,_locale__WEBPACK_IMPORTED_MODULE_9__.setupI18n)().catch(function(err) {\n return console.error(\"Failed to initialize translations\", err);\n }).then(function() {\n return (0,single_spa__WEBPACK_IMPORTED_MODULE_6__.start)();\n });\n}\nfunction handleInitFailure(e) {\n console.error(e);\n renderFatalErrorPage(e);\n}\nfunction renderFatalErrorPage(e) {\n var template = document.querySelector(\"#app-error\");\n if (template) {\n var fragment = template.content.cloneNode(true);\n var messageContainer = fragment.querySelector('[data-var=\"message\"]');\n if (messageContainer) {\n messageContainer.textContent = (e === null || e === void 0 ? void 0 : e.message) || \"No additional information available.\";\n }\n if (localStorage.getItem(\"openmrs:devtools\") && Object.keys(localStorage).some(function(k) {\n return k.startsWith(\"import-map-override:\");\n })) {\n var appErrorActionButtons = fragment === null || fragment === void 0 ? void 0 : fragment.querySelector(\"#buttons\");\n if (appErrorActionButtons) {\n var clearDevOverridesButton = document.createElement(\"button\");\n clearDevOverridesButton.className = \"cds--btn\";\n clearDevOverridesButton.innerHTML = \"Clear dev overrides\";\n clearDevOverridesButton.onclick = clearDevOverrides;\n appErrorActionButtons.appendChild(clearDevOverridesButton);\n }\n }\n document.body.appendChild(fragment);\n }\n}\nfunction clearDevOverrides() {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(localStorage)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n if (key.startsWith(\"import-map-override:\") && ![\n \"import-map-override:react\",\n \"import-map-override:react-dom\"\n ].includes(key)) {\n localStorage.removeItem(key);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n location.reload();\n}\nfunction isAbsoluteUrl(url) {\n var absoluteUrlPattern = /^https?:\\/\\//i;\n return absoluteUrlPattern.test(url);\n}\nfunction createConfigLoader(configUrls) {\n var loadingConfigs = Promise.all(configUrls.map(function(configUrl) {\n var interpolatedUrl = \"\".concat((0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.interpolateUrl)(\"${openmrsSpaBase}\".concat(configUrl)));\n var url = isAbsoluteUrl(configUrl) ? configUrl : \"\".concat(window.location.origin).concat(interpolatedUrl);\n return fetch(url).then(function(res) {\n return res.json();\n }).then(function(config) {\n return {\n name: configUrl,\n value: config\n };\n }).catch(function(err) {\n console.error('Loading the config from \"'.concat(configUrl, '\" failed.'), err);\n return {\n name: configUrl,\n value: {}\n };\n });\n }));\n return function() {\n return loadingConfigs.then(loadConfigs);\n };\n}\nfunction showNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderInlineNotifications)(document.querySelector(\".omrs-inline-notifications-container\"));\n return;\n}\nfunction showActionableNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderActionableNotifications)(document.querySelector(\".omrs-actionable-notifications-container\"));\n return;\n}\nfunction showToasts() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderToasts)(document.querySelector(\".omrs-toasts-container\"));\n return;\n}\nfunction showModals() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderModals)(document.querySelector(\".omrs-modals-container\"));\n return;\n}\nfunction showLoadingSpinner() {\n return (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderLoadingSpinner)(document.body);\n}\nfunction setupOffline() {\n return _setupOffline.apply(this, arguments);\n}\nfunction _setupOffline() {\n _setupOffline = _asyncToGenerator(function() {\n var error;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 3,\n ,\n 4\n ]);\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.registerOmrsServiceWorker)(\"\".concat(window.getOpenmrsSpaBase(), \"service-worker.js\"))\n ];\n case 1:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.activateOfflineCapability)()\n ];\n case 2:\n _state.sent();\n setupOfflineStaticDependencyPrecaching();\n return [\n 3,\n 4\n ];\n case 3:\n error = _state.sent();\n console.error(\"Error while setting up offline mode.\", error);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showNotification)({\n kind: \"error\",\n title: \"Offline Setup Error\",\n description: error.message\n });\n return [\n 3,\n 4\n ];\n case 4:\n return [\n 2\n ];\n }\n });\n });\n return _setupOffline.apply(this, arguments);\n}\nfunction setupOfflineStaticDependencyPrecaching() {\n var precacheDelay = 1000 * 60 * 5;\n var lastPrecache = null;\n subscribeOnlineAndLoginChange(function(online, hasLoggedInUser) {\n var hasExceededPrecacheDelay = !lastPrecache || new Date().getTime() - lastPrecache.getTime() > precacheDelay;\n if (hasLoggedInUser && online && hasExceededPrecacheDelay) {\n lastPrecache = new Date();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.dispatchPrecacheStaticDependencies)();\n }\n });\n}\nfunction subscribeOnlineAndLoginChange(cb) {\n var isOnline = false;\n var hasLoggedInUser = false;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.getCurrentUser)({\n includeAuthStatus: false\n }).subscribe(function(user) {\n hasLoggedInUser = !!user;\n cb(isOnline, hasLoggedInUser);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(function(param) {\n var online = param.online;\n isOnline = online;\n cb(online, hasLoggedInUser);\n });\n}\nfunction precacheGlobalStaticDependencies() {\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction _precacheGlobalStaticDependencies() {\n _precacheGlobalStaticDependencies = _asyncToGenerator(function() {\n var sessionPathUrl;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n precacheImportMap()\n ];\n case 1:\n _state.sent();\n sessionPathUrl = new URL(\"\".concat(window.openmrsBase, \"/ws/rest/v1/session\"), window.location.origin).href;\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.messageOmrsServiceWorker)({\n type: \"registerDynamicRoute\",\n url: sessionPathUrl,\n strategy: \"network-first\"\n })\n ];\n case 2:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.openmrsFetch)(\"/ws/rest/v1/session\").catch(function(e) {\n return console.warn(\"Failed to precache the user session data from the app shell. MFs depending on this data may run into problems while offline.\", e);\n })\n ];\n case 3:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction precacheImportMap() {\n return _precacheImportMap.apply(this, arguments);\n}\nfunction _precacheImportMap() {\n _precacheImportMap = _asyncToGenerator(function() {\n var importMap;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n window.importMapOverrides.getCurrentPageMap()\n ];\n case 1:\n importMap = _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.messageOmrsServiceWorker)({\n type: \"onImportMapChanged\",\n importMap: importMap\n })\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheImportMap.apply(this, arguments);\n}\nfunction setupOfflineCssClasses() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(function(param) {\n var online = param.online;\n var body = document.querySelector(\"body\");\n if (online) {\n body.classList.remove(\"omrs-offline\");\n } else {\n body.classList.add(\"omrs-offline\");\n }\n });\n}\nfunction run(configUrls, offline) {\n var closeLoading = showLoadingSpinner();\n var provideConfigs = createConfigLoader(configUrls);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.integrateBreakpoints)();\n showToasts();\n showModals();\n showNotifications();\n showActionableNotifications();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.createAppState)({});\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeActionableNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showActionableNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeToastShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showToast);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribePrecacheStaticDependencies)(precacheGlobalStaticDependencies);\n // FIXME this is part of a hack to load esm-form-app which depends on the legacy loading for now\n // Once esm-form-app can be upgraded to Angular 12 and Module Federation, we should be able to ditch this\n (0,_dependencies__WEBPACK_IMPORTED_MODULE_12__.registerModules)(_dependencies__WEBPACK_IMPORTED_MODULE_12__.sharedDependencies);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.setupApiModule)();\n registerCoreExtensions();\n return loadApps().then(setupApps).then(setupOfflineCssClasses).then(provideConfigs).then(runShell).catch(handleInitFailure).then(closeLoading).then(function() {\n return offline ? setupOffline() : undefined;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFDcEI4RztJQUNBQztJQUNBSDtJQUNBQztJQUNBckgsbUZBQWNBLENBQUMsQ0FBQztJQUNoQlUsK0ZBQTBCQSxDQUFDUixpRkFBZ0JBO0lBQzNDUyx5R0FBb0NBLENBQUNSLDJGQUEwQkE7SUFDL0RTLHdGQUFtQkEsQ0FBQ1IsMEVBQVNBO0lBQzdCZ0Isd0dBQW1DQSxDQUFDb0g7SUFDcEMsZ0dBQWdHO0lBQ2hHLHlHQUF5RztJQUN6RzFHLCtEQUFlQSxDQUFDQyw4REFBa0JBO0lBQ2xDakMsbUZBQWNBO0lBQ2R5QztJQUVBLE9BQU9QLFdBQ0pJLElBQUksQ0FBQ00sV0FDTE4sSUFBSSxDQUFDNkcsd0JBQ0w3RyxJQUFJLENBQUNvSCxnQkFDTHBILElBQUksQ0FBQzRCLFVBQ0xFLEtBQUssQ0FBQ0ksbUJBQ05sQyxJQUFJLENBQUNtSCxjQUNMbkgsSUFBSSxDQUFDO2VBQU9rSCxVQUFVN0IsaUJBQWlCZ0MsU0FBUzs7QUFDckQsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvcnVuLnRzP2JjMjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiaW1wb3J0LW1hcC1vdmVycmlkZXNcIjtcbmltcG9ydCBcInN5c3RlbWpzL2Rpc3Qvc3lzdGVtXCI7XG5pbXBvcnQgXCJzeXN0ZW1qcy9kaXN0L2V4dHJhcy9hbWRcIjtcbmltcG9ydCBcInN5c3RlbWpzL2Rpc3QvZXh0cmFzL25hbWVkLWV4cG9ydHNcIjtcbmltcG9ydCBcInN5c3RlbWpzL2Rpc3QvZXh0cmFzL25hbWVkLXJlZ2lzdGVyXCI7XG5pbXBvcnQgXCJzeXN0ZW1qcy9kaXN0L2V4dHJhcy91c2UtZGVmYXVsdFwiO1xuaW1wb3J0IHsgc3RhcnQsIHVucmVnaXN0ZXJBcHBsaWNhdGlvbiwgZ2V0QXBwTmFtZXMgfSBmcm9tIFwic2luZ2xlLXNwYVwiO1xuaW1wb3J0IHtcbiAgc2V0dXBBcGlNb2R1bGUsXG4gIHJlbmRlckxvYWRpbmdTcGlubmVyLFxuICBjcmVhdGVBcHBTdGF0ZSxcbiAgQ29uZmlnLFxuICBwcm92aWRlLFxuICBzaG93Tm90aWZpY2F0aW9uLFxuICBzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbixcbiAgc2hvd1RvYXN0LFxuICByZW5kZXJJbmxpbmVOb3RpZmljYXRpb25zLFxuICByZW5kZXJBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyxcbiAgcmVuZGVyVG9hc3RzLFxuICBpbnRlZ3JhdGVCcmVha3BvaW50cyxcbiAgZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkLFxuICBzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93bixcbiAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duLFxuICBzdWJzY3JpYmVUb2FzdFNob3duLFxuICByZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyLFxuICBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIsXG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eSxcbiAgZ2V0Q3VycmVudFVzZXIsXG4gIHJlbmRlck1vZGFscyxcbiAgZGlzcGF0Y2hQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyxcbiAgYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSxcbiAgc3Vic2NyaWJlUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMsXG4gIG9wZW5tcnNGZXRjaCxcbiAgaW50ZXJwb2xhdGVVcmwsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbFwiO1xuaW1wb3J0IHtcbiAgZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzLFxuICByZWdpc3RlckFwcCxcbiAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24sXG59IGZyb20gXCIuL2FwcHNcIjtcbmltcG9ydCB7IHNldHVwSTE4biB9IGZyb20gXCIuL2xvY2FsZVwiO1xuaW1wb3J0IHsgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9sb2FkLW1vZHVsZXNcIjtcbmltcG9ydCB7IGFwcE5hbWUsIGdldENvcmVFeHRlbnNpb25zIH0gZnJvbSBcIi4vdWlcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTW9kdWxlcywgc2hhcmVkRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vZGVwZW5kZW5jaWVzXCI7XG5cbi8qKlxuICogTG9hZHMgdGhlIGZyb250ZW5kIG1vZHVsZXMgKGFwcHMgYW5kIHdpZGdldHMpLiBTaG91bGQgYmUgZG9uZSAqYWZ0ZXIqXG4gKiB0aGUgaW1wb3J0IG1hcHMgaW5pdGlhbGl6ZWQsIGkuZS4sIGFmdGVyIG1vZHVsZXMgbG9hZGVkLlxuICpcbiAqIEJ5IGNvbnZlbnRpb24gd2UgY2FsbCBmcm9udGVuZCBtb2R1bGVzIHJlZ2lzdGVyaW5nIGFjdGl2YXRpb24gZnVuY3Rpb25zXG4gKiBhcHBzLCBhbmQgYWxsIG90aGVycyB3aWRnZXRzLiBUaGlzIGlzIG5vdCBlbmZvcmNlZCB0ZWNobmljYWxseS5cbiAqL1xuZnVuY3Rpb24gbG9hZEFwcHMoKSB7XG4gIHJldHVybiB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzXG4gICAgLmdldEN1cnJlbnRQYWdlTWFwKClcbiAgICAudGhlbigoaW1wb3J0TWFwKSA9PiBsb2FkTW9kdWxlcyhpbXBvcnRNYXAuaW1wb3J0cykpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9ucyBhbHJlYWR5IGNvbWluZyBmcm9tIHRoZSBhcHAgc2hlbGwgaXRzZWxmLlxuICovXG5mdW5jdGlvbiByZWdpc3RlckNvcmVFeHRlbnNpb25zKCkge1xuICBjb25zdCBleHRlbnNpb25zID0gZ2V0Q29yZUV4dGVuc2lvbnMoKTtcblxuICBmb3IgKGNvbnN0IGV4dGVuc2lvbiBvZiBleHRlbnNpb25zKSB7XG4gICAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24oYXBwTmFtZSwgZXh0ZW5zaW9uKTtcbiAgfVxufVxuXG4vKipcbiAqIFNldHMgdXAgdGhlIGZyb250ZW5kIG1vZHVsZXMgKGFwcHMpLiBVc2VzIHRoZSBkZWZpbmVkIGV4cG9ydFxuICogZnJvbSB0aGUgcm9vdCBtb2R1bGVzIG9mIHRoZSBhcHBzLCB3aGljaCBzaG91bGQgZXhwb3J0IGFcbiAqIHNwZWNpYWwgZnVuY3Rpb24gY2FsbGVkIFwic2V0dXBPcGVuTVJTXCIuXG4gKiBUaGF0IGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaXMgdXNlZCB0byBmZWVkIFNpbmdsZVxuICogU1BBLlxuICovXG5hc3luYyBmdW5jdGlvbiBzZXR1cEFwcHMobW9kdWxlczogQXJyYXk8W3N0cmluZywgU3lzdGVtLk1vZHVsZV0+KSB7XG4gIG1vZHVsZXMuZm9yRWFjaCgoW2FwcE5hbWUsIGFwcEV4cG9ydHNdKSA9PiByZWdpc3RlckFwcChhcHBOYW1lLCBhcHBFeHBvcnRzKSk7XG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eShhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYXBwTmFtZXMgPSBnZXRBcHBOYW1lcygpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGFwcE5hbWVzLm1hcCh1bnJlZ2lzdGVyQXBwbGljYXRpb24pKTtcbiAgICBmaW5pc2hSZWdpc3RlcmluZ0FsbEFwcHMoKTtcbiAgfSk7XG4gIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzID0gbW9kdWxlcztcbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnMgYW5kIHNldHMgdGhlbSBpbiB0aGUgc3lzdGVtLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlncyhjb25maWdzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IENvbmZpZyB9Pikge1xuICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XG4gICAgcHJvdmlkZShjb25maWcudmFsdWUsIGNvbmZpZy5uYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZWQgd2hlbiB0aGUgY29ubmVjdGl2aXR5IGlzIGNoYW5nZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbm5lY3Rpdml0eUNoYW5nZWQoKSB7XG4gIGNvbnN0IG9ubGluZSA9IG5hdmlnYXRvci5vbkxpbmU7XG4gIGRpc3BhdGNoQ29ubmVjdGl2aXR5Q2hhbmdlZChvbmxpbmUpO1xuICBzaG93VG9hc3Qoe1xuICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOiBgQ29ubmVjdGlvbjogJHtvbmxpbmUgPyBcIm9ubGluZVwiIDogXCJvZmZsaW5lXCJ9YCxcbiAgICB0aXRsZTogXCJBcHBcIixcbiAgICBraW5kOiBvbmxpbmUgPyBcInN1Y2Nlc3NcIiA6IFwid2FybmluZ1wiLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBzaGVsbCBieSBpbXBvcnRpbmcgdGhlIHRyYW5zbGF0aW9ucyBhbmQgc3RhcnRpbmcgc2luZ2xlIFNQQS5cbiAqL1xuZnVuY3Rpb24gcnVuU2hlbGwoKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCBjb25uZWN0aXZpdHlDaGFuZ2VkKTtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIiwgY29ubmVjdGl2aXR5Q2hhbmdlZCk7XG4gIHJldHVybiBzZXR1cEkxOG4oKVxuICAgIC5jYXRjaCgoZXJyKSA9PiBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0cmFuc2xhdGlvbnNgLCBlcnIpKVxuICAgIC50aGVuKCgpID0+IHN0YXJ0KCkpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVJbml0RmFpbHVyZShlOiBFcnJvcikge1xuICBjb25zb2xlLmVycm9yKGUpO1xuICByZW5kZXJGYXRhbEVycm9yUGFnZShlKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRmF0YWxFcnJvclBhZ2UoZT86IEVycm9yKSB7XG4gIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MVGVtcGxhdGVFbGVtZW50PihcIiNhcHAtZXJyb3JcIik7XG5cbiAgaWYgKHRlbXBsYXRlKSB7XG4gICAgY29uc3QgZnJhZ21lbnQgPSB0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSBhcyBEb2N1bWVudEZyYWdtZW50O1xuICAgIGNvbnN0IG1lc3NhZ2VDb250YWluZXIgPSBmcmFnbWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS12YXI9XCJtZXNzYWdlXCJdJyk7XG5cbiAgICBpZiAobWVzc2FnZUNvbnRhaW5lcikge1xuICAgICAgbWVzc2FnZUNvbnRhaW5lci50ZXh0Q29udGVudCA9XG4gICAgICAgIGU/Lm1lc3NhZ2UgfHwgXCJObyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGF2YWlsYWJsZS5cIjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm9wZW5tcnM6ZGV2dG9vbHNcIikgJiZcbiAgICAgIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkuc29tZSgoaykgPT5cbiAgICAgICAgay5zdGFydHNXaXRoKFwiaW1wb3J0LW1hcC1vdmVycmlkZTpcIilcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGNvbnN0IGFwcEVycm9yQWN0aW9uQnV0dG9ucyA9IGZyYWdtZW50Py5xdWVyeVNlbGVjdG9yKFwiI2J1dHRvbnNcIik7XG4gICAgICBpZiAoYXBwRXJyb3JBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgIGNvbnN0IGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcbiAgICAgICAgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24uY2xhc3NOYW1lID0gXCJjZHMtLWJ0blwiO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5pbm5lckhUTUwgPSBcIkNsZWFyIGRldiBvdmVycmlkZXNcIjtcbiAgICAgICAgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24ub25jbGljayA9IGNsZWFyRGV2T3ZlcnJpZGVzO1xuICAgICAgICBhcHBFcnJvckFjdGlvbkJ1dHRvbnMuYXBwZW5kQ2hpbGQoY2xlYXJEZXZPdmVycmlkZXNCdXR0b24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFyRGV2T3ZlcnJpZGVzKCkge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpKSB7XG4gICAgaWYgKFxuICAgICAga2V5LnN0YXJ0c1dpdGgoXCJpbXBvcnQtbWFwLW92ZXJyaWRlOlwiKSAmJlxuICAgICAgIVtcImltcG9ydC1tYXAtb3ZlcnJpZGU6cmVhY3RcIiwgXCJpbXBvcnQtbWFwLW92ZXJyaWRlOnJlYWN0LWRvbVwiXS5pbmNsdWRlcyhcbiAgICAgICAga2V5XG4gICAgICApXG4gICAgKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIH1cbiAgfVxuICBsb2NhdGlvbi5yZWxvYWQoKTtcbn1cblxuZnVuY3Rpb24gaXNBYnNvbHV0ZVVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBhYnNvbHV0ZVVybFBhdHRlcm4gPSAvXmh0dHBzPzpcXC9cXC8vaTtcbiAgcmV0dXJuIGFic29sdXRlVXJsUGF0dGVybi50ZXN0KHVybCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ0xvYWRlcihjb25maWdVcmxzOiBBcnJheTxzdHJpbmc+KSB7XG4gIGNvbnN0IGxvYWRpbmdDb25maWdzID0gUHJvbWlzZS5hbGwoXG4gICAgY29uZmlnVXJscy5tYXAoKGNvbmZpZ1VybCkgPT4ge1xuICAgICAgY29uc3QgaW50ZXJwb2xhdGVkVXJsID0gYCR7aW50ZXJwb2xhdGVVcmwoXG4gICAgICAgIGBcXCR7b3Blbm1yc1NwYUJhc2V9JHtjb25maWdVcmx9YFxuICAgICAgKX1gO1xuICAgICAgY29uc3QgdXJsID0gaXNBYnNvbHV0ZVVybChjb25maWdVcmwpXG4gICAgICAgID8gY29uZmlnVXJsXG4gICAgICAgIDogYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0ke2ludGVycG9sYXRlZFVybH1gO1xuICAgICAgcmV0dXJuIGZldGNoKHVybClcbiAgICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNvbmZpZykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgdmFsdWU6IGNvbmZpZyxcbiAgICAgICAgfSkpXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgTG9hZGluZyB0aGUgY29uZmlnIGZyb20gXCIke2NvbmZpZ1VybH1cIiBmYWlsZWQuYCwgZXJyKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogY29uZmlnVXJsLFxuICAgICAgICAgICAgdmFsdWU6IHt9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH0pXG4gICk7XG4gIHJldHVybiAoKSA9PiBsb2FkaW5nQ29uZmlncy50aGVuKGxvYWRDb25maWdzKTtcbn1cblxuZnVuY3Rpb24gc2hvd05vdGlmaWNhdGlvbnMoKSB7XG4gIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMoXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLWlubGluZS1ub3RpZmljYXRpb25zLWNvbnRhaW5lclwiKVxuICApO1xuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucygpIHtcbiAgcmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLWFjdGlvbmFibGUtbm90aWZpY2F0aW9ucy1jb250YWluZXJcIilcbiAgKTtcbiAgcmV0dXJuO1xufVxuXG5mdW5jdGlvbiBzaG93VG9hc3RzKCkge1xuICByZW5kZXJUb2FzdHMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLXRvYXN0cy1jb250YWluZXJcIikpO1xuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHNob3dNb2RhbHMoKSB7XG4gIHJlbmRlck1vZGFscyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLm9tcnMtbW9kYWxzLWNvbnRhaW5lclwiKSk7XG4gIHJldHVybjtcbn1cblxuZnVuY3Rpb24gc2hvd0xvYWRpbmdTcGlubmVyKCkge1xuICByZXR1cm4gcmVuZGVyTG9hZGluZ1NwaW5uZXIoZG9jdW1lbnQuYm9keSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldHVwT2ZmbGluZSgpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCByZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyKFxuICAgICAgYCR7d2luZG93LmdldE9wZW5tcnNTcGFCYXNlKCl9c2VydmljZS13b3JrZXIuanNgXG4gICAgKTtcbiAgICBhd2FpdCBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5KCk7XG4gICAgc2V0dXBPZmZsaW5lU3RhdGljRGVwZW5kZW5jeVByZWNhY2hpbmcoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igd2hpbGUgc2V0dGluZyB1cCBvZmZsaW5lIG1vZGUuXCIsIGVycm9yKTtcbiAgICBzaG93Tm90aWZpY2F0aW9uKHtcbiAgICAgIGtpbmQ6IFwiZXJyb3JcIixcbiAgICAgIHRpdGxlOiBcIk9mZmxpbmUgU2V0dXAgRXJyb3JcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nKCkge1xuICBjb25zdCBwcmVjYWNoZURlbGF5ID0gMTAwMCAqIDYwICogNTtcbiAgbGV0IGxhc3RQcmVjYWNoZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlKChvbmxpbmUsIGhhc0xvZ2dlZEluVXNlcikgPT4ge1xuICAgIGNvbnN0IGhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSA9XG4gICAgICAhbGFzdFByZWNhY2hlIHx8XG4gICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGxhc3RQcmVjYWNoZS5nZXRUaW1lKCkgPiBwcmVjYWNoZURlbGF5O1xuXG4gICAgaWYgKGhhc0xvZ2dlZEluVXNlciAmJiBvbmxpbmUgJiYgaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5KSB7XG4gICAgICBsYXN0UHJlY2FjaGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgZGlzcGF0Y2hQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcygpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlKFxuICBjYjogKG9ubGluZTogYm9vbGVhbiwgaGFzTG9nZ2VkSW5Vc2VyOiBib29sZWFuKSA9PiB2b2lkXG4pIHtcbiAgbGV0IGlzT25saW5lID0gZmFsc2U7XG4gIGxldCBoYXNMb2dnZWRJblVzZXIgPSBmYWxzZTtcblxuICBnZXRDdXJyZW50VXNlcih7IGluY2x1ZGVBdXRoU3RhdHVzOiBmYWxzZSB9KS5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICBoYXNMb2dnZWRJblVzZXIgPSAhIXVzZXI7XG4gICAgY2IoaXNPbmxpbmUsIGhhc0xvZ2dlZEluVXNlcik7XG4gIH0pO1xuXG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eSgoeyBvbmxpbmUgfSkgPT4ge1xuICAgIGlzT25saW5lID0gb25saW5lO1xuICAgIGNiKG9ubGluZSwgaGFzTG9nZ2VkSW5Vc2VyKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByZWNhY2hlR2xvYmFsU3RhdGljRGVwZW5kZW5jaWVzKCkge1xuICBhd2FpdCBwcmVjYWNoZUltcG9ydE1hcCgpO1xuXG4gIC8vIEJ5IGRlZmF1bHQsIGNhY2hlIHRoZSBzZXNzaW9uIGVuZHBvaW50LlxuICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBhIGxvdCBvZiB1c2VyL3Nlc3Npb24gcmVsYXRlZCBmdW5jdGlvbnMgYWxzbyB3b3JrIG9mZmxpbmUuXG4gIGNvbnN0IHNlc3Npb25QYXRoVXJsID0gbmV3IFVSTChcbiAgICBgJHt3aW5kb3cub3Blbm1yc0Jhc2V9L3dzL3Jlc3QvdjEvc2Vzc2lvbmAsXG4gICAgd2luZG93LmxvY2F0aW9uLm9yaWdpblxuICApLmhyZWY7XG5cbiAgYXdhaXQgbWVzc2FnZU9tcnNTZXJ2aWNlV29ya2VyKHtcbiAgICB0eXBlOiBcInJlZ2lzdGVyRHluYW1pY1JvdXRlXCIsXG4gICAgdXJsOiBzZXNzaW9uUGF0aFVybCxcbiAgICBzdHJhdGVneTogXCJuZXR3b3JrLWZpcnN0XCIsXG4gIH0pO1xuXG4gIGF3YWl0IG9wZW5tcnNGZXRjaChcIi93cy9yZXN0L3YxL3Nlc3Npb25cIikuY2F0Y2goKGUpID0+XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJGYWlsZWQgdG8gcHJlY2FjaGUgdGhlIHVzZXIgc2Vzc2lvbiBkYXRhIGZyb20gdGhlIGFwcCBzaGVsbC4gTUZzIGRlcGVuZGluZyBvbiB0aGlzIGRhdGEgbWF5IHJ1biBpbnRvIHByb2JsZW1zIHdoaWxlIG9mZmxpbmUuXCIsXG4gICAgICBlXG4gICAgKVxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmVjYWNoZUltcG9ydE1hcCgpIHtcbiAgY29uc3QgaW1wb3J0TWFwID0gYXdhaXQgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXRDdXJyZW50UGFnZU1hcCgpO1xuICBhd2FpdCBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIoe1xuICAgIHR5cGU6IFwib25JbXBvcnRNYXBDaGFuZ2VkXCIsXG4gICAgaW1wb3J0TWFwLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0dXBPZmZsaW5lQ3NzQ2xhc3NlcygpIHtcbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5KCh7IG9ubGluZSB9KSA9PiB7XG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJib2R5XCIpITtcbiAgICBpZiAob25saW5lKSB7XG4gICAgICBib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJvbXJzLW9mZmxpbmVcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvZHkuY2xhc3NMaXN0LmFkZChcIm9tcnMtb2ZmbGluZVwiKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuKGNvbmZpZ1VybHM6IEFycmF5PHN0cmluZz4sIG9mZmxpbmU6IGJvb2xlYW4pIHtcbiAgY29uc3QgY2xvc2VMb2FkaW5nID0gc2hvd0xvYWRpbmdTcGlubmVyKCk7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdzID0gY3JlYXRlQ29uZmlnTG9hZGVyKGNvbmZpZ1VybHMpO1xuXG4gIGludGVncmF0ZUJyZWFrcG9pbnRzKCk7XG4gIHNob3dUb2FzdHMoKTtcbiAgc2hvd01vZGFscygpO1xuICBzaG93Tm90aWZpY2F0aW9ucygpO1xuICBzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoKTtcbiAgY3JlYXRlQXBwU3RhdGUoe30pO1xuICBzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93bihzaG93Tm90aWZpY2F0aW9uKTtcbiAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duKHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uKTtcbiAgc3Vic2NyaWJlVG9hc3RTaG93bihzaG93VG9hc3QpO1xuICBzdWJzY3JpYmVQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyhwcmVjYWNoZUdsb2JhbFN0YXRpY0RlcGVuZGVuY2llcyk7XG4gIC8vIEZJWE1FIHRoaXMgaXMgcGFydCBvZiBhIGhhY2sgdG8gbG9hZCBlc20tZm9ybS1hcHAgd2hpY2ggZGVwZW5kcyBvbiB0aGUgbGVnYWN5IGxvYWRpbmcgZm9yIG5vd1xuICAvLyBPbmNlIGVzbS1mb3JtLWFwcCBjYW4gYmUgdXBncmFkZWQgdG8gQW5ndWxhciAxMiBhbmQgTW9kdWxlIEZlZGVyYXRpb24sIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRpdGNoIHRoaXNcbiAgcmVnaXN0ZXJNb2R1bGVzKHNoYXJlZERlcGVuZGVuY2llcyk7XG4gIHNldHVwQXBpTW9kdWxlKCk7XG4gIHJlZ2lzdGVyQ29yZUV4dGVuc2lvbnMoKTtcblxuICByZXR1cm4gbG9hZEFwcHMoKVxuICAgIC50aGVuKHNldHVwQXBwcylcbiAgICAudGhlbihzZXR1cE9mZmxpbmVDc3NDbGFzc2VzKVxuICAgIC50aGVuKHByb3ZpZGVDb25maWdzKVxuICAgIC50aGVuKHJ1blNoZWxsKVxuICAgIC5jYXRjaChoYW5kbGVJbml0RmFpbHVyZSlcbiAgICAudGhlbihjbG9zZUxvYWRpbmcpXG4gICAgLnRoZW4oKCkgPT4gKG9mZmxpbmUgPyBzZXR1cE9mZmxpbmUoKSA6IHVuZGVmaW5lZCkpO1xufVxuIl0sIm5hbWVzIjpbInN0YXJ0IiwidW5yZWdpc3RlckFwcGxpY2F0aW9uIiwiZ2V0QXBwTmFtZXMiLCJzZXR1cEFwaU1vZHVsZSIsInJlbmRlckxvYWRpbmdTcGlubmVyIiwiY3JlYXRlQXBwU3RhdGUiLCJwcm92aWRlIiwic2hvd05vdGlmaWNhdGlvbiIsInNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uIiwic2hvd1RvYXN0IiwicmVuZGVySW5saW5lTm90aWZpY2F0aW9ucyIsInJlbmRlckFjdGlvbmFibGVOb3RpZmljYXRpb25zIiwicmVuZGVyVG9hc3RzIiwiaW50ZWdyYXRlQnJlYWtwb2ludHMiLCJkaXNwYXRjaENvbm5lY3Rpdml0eUNoYW5nZWQiLCJzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93biIsInN1YnNjcmliZUFjdGlvbmFibGVOb3RpZmljYXRpb25TaG93biIsInN1YnNjcmliZVRvYXN0U2hvd24iLCJyZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyIiwibWVzc2FnZU9tcnNTZXJ2aWNlV29ya2VyIiwic3Vic2NyaWJlQ29ubmVjdGl2aXR5IiwiZ2V0Q3VycmVudFVzZXIiLCJyZW5kZXJNb2RhbHMiLCJkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwiYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSIsInN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwib3Blbm1yc0ZldGNoIiwiaW50ZXJwb2xhdGVVcmwiLCJmaW5pc2hSZWdpc3RlcmluZ0FsbEFwcHMiLCJyZWdpc3RlckFwcCIsInRyeVJlZ2lzdGVyRXh0ZW5zaW9uIiwic2V0dXBJMThuIiwibG9hZE1vZHVsZXMiLCJhcHBOYW1lIiwiZ2V0Q29yZUV4dGVuc2lvbnMiLCJyZWdpc3Rlck1vZHVsZXMiLCJzaGFyZWREZXBlbmRlbmNpZXMiLCJsb2FkQXBwcyIsIndpbmRvdyIsImltcG9ydE1hcE92ZXJyaWRlcyIsImdldEN1cnJlbnRQYWdlTWFwIiwidGhlbiIsImltcG9ydE1hcCIsImltcG9ydHMiLCJyZWdpc3RlckNvcmVFeHRlbnNpb25zIiwiZXh0ZW5zaW9ucyIsImV4dGVuc2lvbiIsInNldHVwQXBwcyIsIm1vZHVsZXMiLCJmb3JFYWNoIiwiYXBwRXhwb3J0cyIsImFwcE5hbWVzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImluc3RhbGxlZE1vZHVsZXMiLCJsb2FkQ29uZmlncyIsImNvbmZpZ3MiLCJjb25maWciLCJ2YWx1ZSIsIm5hbWUiLCJjb25uZWN0aXZpdHlDaGFuZ2VkIiwib25saW5lIiwibmF2aWdhdG9yIiwib25MaW5lIiwiY3JpdGljYWwiLCJkZXNjcmlwdGlvbiIsInRpdGxlIiwia2luZCIsInJ1blNoZWxsIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNhdGNoIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwiaGFuZGxlSW5pdEZhaWx1cmUiLCJlIiwicmVuZGVyRmF0YWxFcnJvclBhZ2UiLCJ0ZW1wbGF0ZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImZyYWdtZW50IiwiY29udGVudCIsImNsb25lTm9kZSIsIm1lc3NhZ2VDb250YWluZXIiLCJ0ZXh0Q29udGVudCIsIm1lc3NhZ2UiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwiT2JqZWN0Iiwia2V5cyIsInNvbWUiLCJrIiwic3RhcnRzV2l0aCIsImFwcEVycm9yQWN0aW9uQnV0dG9ucyIsImNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImlubmVySFRNTCIsIm9uY2xpY2siLCJjbGVhckRldk92ZXJyaWRlcyIsImFwcGVuZENoaWxkIiwiYm9keSIsImtleSIsImluY2x1ZGVzIiwicmVtb3ZlSXRlbSIsImxvY2F0aW9uIiwicmVsb2FkIiwiaXNBYnNvbHV0ZVVybCIsInVybCIsImFic29sdXRlVXJsUGF0dGVybiIsInRlc3QiLCJjcmVhdGVDb25maWdMb2FkZXIiLCJjb25maWdVcmxzIiwibG9hZGluZ0NvbmZpZ3MiLCJjb25maWdVcmwiLCJpbnRlcnBvbGF0ZWRVcmwiLCJvcmlnaW4iLCJmZXRjaCIsInJlcyIsImpzb24iLCJzaG93Tm90aWZpY2F0aW9ucyIsInNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyIsInNob3dUb2FzdHMiLCJzaG93TW9kYWxzIiwic2hvd0xvYWRpbmdTcGlubmVyIiwic2V0dXBPZmZsaW5lIiwiZ2V0T3Blbm1yc1NwYUJhc2UiLCJzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZyIsInByZWNhY2hlRGVsYXkiLCJsYXN0UHJlY2FjaGUiLCJzdWJzY3JpYmVPbmxpbmVBbmRMb2dpbkNoYW5nZSIsImhhc0xvZ2dlZEluVXNlciIsImhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSIsIkRhdGUiLCJnZXRUaW1lIiwiY2IiLCJpc09ubGluZSIsImluY2x1ZGVBdXRoU3RhdHVzIiwic3Vic2NyaWJlIiwidXNlciIsInByZWNhY2hlR2xvYmFsU3RhdGljRGVwZW5kZW5jaWVzIiwic2Vzc2lvblBhdGhVcmwiLCJwcmVjYWNoZUltcG9ydE1hcCIsIlVSTCIsIm9wZW5tcnNCYXNlIiwiaHJlZiIsInR5cGUiLCJzdHJhdGVneSIsIndhcm4iLCJzZXR1cE9mZmxpbmVDc3NDbGFzc2VzIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkIiwicnVuIiwib2ZmbGluZSIsImNsb3NlTG9hZGluZyIsInByb3ZpZGVDb25maWdzIiwidW5kZWZpbmVkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/run.ts\n");
7767
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"run\": () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var import_map_overrides__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! import-map-overrides */ \"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\n/* harmony import */ var systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! systemjs/dist/system */ \"../../../node_modules/systemjs/dist/system.js\");\n/* harmony import */ var systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_system__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! systemjs/dist/extras/amd */ \"../../../node_modules/systemjs/dist/extras/amd.js\");\n/* harmony import */ var systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_amd__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! systemjs/dist/extras/named-exports */ \"../../../node_modules/systemjs/dist/extras/named-exports.js\");\n/* harmony import */ var systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_named_exports__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! systemjs/dist/extras/named-register */ \"../../../node_modules/systemjs/dist/extras/named-register.js\");\n/* harmony import */ var systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_named_register__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! systemjs/dist/extras/use-default */ \"../../../node_modules/systemjs/dist/extras/use-default.js\");\n/* harmony import */ var systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(systemjs_dist_extras_use_default__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! single-spa */ \"../../../node_modules/single-spa/lib/esm/single-spa.min.js\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _apps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./locale */ \"./src/locale.ts\");\n/* harmony import */ var _load_modules__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./load-modules */ \"./src/load-modules.ts\");\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ui */ \"./src/ui/index.ts\");\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Loads the frontend modules (apps and widgets). Should be done *after*\n * the import maps initialized, i.e., after modules loaded.\n *\n * By convention we call frontend modules registering activation functions\n * apps, and all others widgets. This is not enforced technically.\n */ function loadApps() {\n return window.importMapOverrides.getCurrentPageMap().then(function(importMap) {\n return (0,_load_modules__WEBPACK_IMPORTED_MODULE_10__.loadModules)(importMap.imports);\n });\n}\n/**\n * Registers the extensions already coming from the app shell itself.\n */ function registerCoreExtensions() {\n var extensions = (0,_ui__WEBPACK_IMPORTED_MODULE_11__.getCoreExtensions)();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = extensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n (0,_apps__WEBPACK_IMPORTED_MODULE_8__.tryRegisterExtension)(_ui__WEBPACK_IMPORTED_MODULE_11__.appName, extension);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nfunction setupApps(modules) {\n return _setupApps.apply(this, arguments);\n}\nfunction _setupApps() {\n _setupApps = /**\n * Sets up the frontend modules (apps). Uses the defined export\n * from the root modules of the apps, which should export a\n * special function called \"setupOpenMRS\".\n * That function returns an object that is used to feed Single\n * SPA.\n */ _asyncToGenerator(function(modules) {\n return __generator(this, function(_state) {\n modules.forEach(function(param) {\n var _param = _slicedToArray(param, 2), appName = _param[0], appExports = _param[1];\n return (0,_apps__WEBPACK_IMPORTED_MODULE_8__.registerApp)(appName, appExports);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(/*#__PURE__*/ _asyncToGenerator(function() {\n var appNames;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n appNames = (0,single_spa__WEBPACK_IMPORTED_MODULE_6__.getAppNames)();\n return [\n 4,\n Promise.all(appNames.map(single_spa__WEBPACK_IMPORTED_MODULE_6__.unregisterApplication))\n ];\n case 1:\n _state.sent();\n (0,_apps__WEBPACK_IMPORTED_MODULE_8__.finishRegisteringAllApps)();\n return [\n 2\n ];\n }\n });\n }));\n window.installedModules = modules;\n return [\n 2\n ];\n });\n });\n return _setupApps.apply(this, arguments);\n}\nfunction loadConfigs(configs) {\n return _loadConfigs.apply(this, arguments);\n}\nfunction _loadConfigs() {\n _loadConfigs = /**\n * Loads the provided configurations and sets them in the system.\n */ _asyncToGenerator(function(configs) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, config;\n return __generator(this, function(_state) {\n _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(_iterator = configs[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n config = _step.value;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.provide)(config.value, config.name);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return [\n 2\n ];\n });\n });\n return _loadConfigs.apply(this, arguments);\n}\n/**\n * Invoked when the connectivity is changed.\n */ function connectivityChanged() {\n var online = navigator.onLine;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.dispatchConnectivityChanged)(online);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showToast)({\n critical: true,\n description: \"Connection: \".concat(online ? \"online\" : \"offline\"),\n title: \"App\",\n kind: online ? \"success\" : \"warning\"\n });\n}\n/**\n * Runs the shell by importing the translations and starting single SPA.\n */ function runShell() {\n window.addEventListener(\"offline\", connectivityChanged);\n window.addEventListener(\"online\", connectivityChanged);\n return (0,_locale__WEBPACK_IMPORTED_MODULE_9__.setupI18n)().catch(function(err) {\n return console.error(\"Failed to initialize translations\", err);\n }).then(function() {\n return (0,single_spa__WEBPACK_IMPORTED_MODULE_6__.start)();\n });\n}\nfunction handleInitFailure(e) {\n console.error(e);\n renderFatalErrorPage(e);\n}\nfunction renderFatalErrorPage(e) {\n var template = document.querySelector(\"#app-error\");\n if (template) {\n var fragment = template.content.cloneNode(true);\n var messageContainer = fragment.querySelector('[data-var=\"message\"]');\n if (messageContainer) {\n messageContainer.textContent = (e === null || e === void 0 ? void 0 : e.message) || \"No additional information available.\";\n }\n if (localStorage.getItem(\"openmrs:devtools\") && Object.keys(localStorage).some(function(k) {\n return k.startsWith(\"import-map-override:\");\n })) {\n var appErrorActionButtons = fragment === null || fragment === void 0 ? void 0 : fragment.querySelector(\"#buttons\");\n if (appErrorActionButtons) {\n var clearDevOverridesButton = document.createElement(\"button\");\n clearDevOverridesButton.className = \"cds--btn\";\n clearDevOverridesButton.innerHTML = \"Clear dev overrides\";\n clearDevOverridesButton.onclick = clearDevOverrides;\n appErrorActionButtons.appendChild(clearDevOverridesButton);\n }\n }\n document.body.appendChild(fragment);\n }\n}\nfunction clearDevOverrides() {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(localStorage)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n if (key.startsWith(\"import-map-override:\") && ![\n \"import-map-override:react\",\n \"import-map-override:react-dom\"\n ].includes(key)) {\n localStorage.removeItem(key);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n location.reload();\n}\nfunction isAbsoluteUrl(url) {\n var absoluteUrlPattern = /^https?:\\/\\//i;\n return absoluteUrlPattern.test(url);\n}\nfunction createConfigLoader(configUrls) {\n var loadingConfigs = Promise.all(configUrls.map(function(configUrl) {\n var interpolatedUrl = \"\".concat((0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.interpolateUrl)(\"${openmrsSpaBase}\".concat(configUrl)));\n var url = isAbsoluteUrl(configUrl) ? configUrl : \"\".concat(window.location.origin).concat(interpolatedUrl);\n return fetch(url).then(function(res) {\n return res.json();\n }).then(function(config) {\n return {\n name: configUrl,\n value: config\n };\n }).catch(function(err) {\n console.error('Loading the config from \"'.concat(configUrl, '\" failed.'), err);\n return {\n name: configUrl,\n value: {}\n };\n });\n }));\n return function() {\n return loadingConfigs.then(loadConfigs);\n };\n}\nfunction showNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderInlineNotifications)(document.querySelector(\".omrs-inline-notifications-container\"));\n return;\n}\nfunction showActionableNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderActionableNotifications)(document.querySelector(\".omrs-actionable-notifications-container\"));\n return;\n}\nfunction showToasts() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderToasts)(document.querySelector(\".omrs-toasts-container\"));\n return;\n}\nfunction showModals() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderModals)(document.querySelector(\".omrs-modals-container\"));\n return;\n}\nfunction showLoadingSpinner() {\n return (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.renderLoadingSpinner)(document.body);\n}\nfunction setupOffline() {\n return _setupOffline.apply(this, arguments);\n}\nfunction _setupOffline() {\n _setupOffline = _asyncToGenerator(function() {\n var error;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 3,\n ,\n 4\n ]);\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.registerOmrsServiceWorker)(\"\".concat(window.getOpenmrsSpaBase(), \"service-worker.js\"))\n ];\n case 1:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.activateOfflineCapability)()\n ];\n case 2:\n _state.sent();\n setupOfflineStaticDependencyPrecaching();\n return [\n 3,\n 4\n ];\n case 3:\n error = _state.sent();\n console.error(\"Error while setting up offline mode.\", error);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showNotification)({\n kind: \"error\",\n title: \"Offline Setup Error\",\n description: error.message\n });\n return [\n 3,\n 4\n ];\n case 4:\n return [\n 2\n ];\n }\n });\n });\n return _setupOffline.apply(this, arguments);\n}\nfunction setupOfflineStaticDependencyPrecaching() {\n var precacheDelay = 1000 * 60 * 5;\n var lastPrecache = null;\n subscribeOnlineAndLoginChange(function(online, hasLoggedInUser) {\n var hasExceededPrecacheDelay = !lastPrecache || new Date().getTime() - lastPrecache.getTime() > precacheDelay;\n if (hasLoggedInUser && online && hasExceededPrecacheDelay) {\n lastPrecache = new Date();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.dispatchPrecacheStaticDependencies)();\n }\n });\n}\nfunction subscribeOnlineAndLoginChange(cb) {\n var isOnline = false;\n var hasLoggedInUser = false;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.getCurrentUser)({\n includeAuthStatus: false\n }).subscribe(function(user) {\n hasLoggedInUser = !!user;\n cb(isOnline, hasLoggedInUser);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(function(param) {\n var online = param.online;\n isOnline = online;\n cb(online, hasLoggedInUser);\n });\n}\nfunction precacheGlobalStaticDependencies() {\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction _precacheGlobalStaticDependencies() {\n _precacheGlobalStaticDependencies = _asyncToGenerator(function() {\n var sessionPathUrl;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n precacheImportMap()\n ];\n case 1:\n _state.sent();\n sessionPathUrl = new URL(\"\".concat(window.openmrsBase, \"/ws/rest/v1/session\"), window.location.origin).href;\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.messageOmrsServiceWorker)({\n type: \"registerDynamicRoute\",\n url: sessionPathUrl,\n strategy: \"network-first\"\n })\n ];\n case 2:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.openmrsFetch)(\"/ws/rest/v1/session\").catch(function(e) {\n return console.warn(\"Failed to precache the user session data from the app shell. MFs depending on this data may run into problems while offline.\", e);\n })\n ];\n case 3:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction precacheImportMap() {\n return _precacheImportMap.apply(this, arguments);\n}\nfunction _precacheImportMap() {\n _precacheImportMap = _asyncToGenerator(function() {\n var importMap;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n window.importMapOverrides.getCurrentPageMap()\n ];\n case 1:\n importMap = _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.messageOmrsServiceWorker)({\n type: \"onImportMapChanged\",\n importMap: importMap\n })\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheImportMap.apply(this, arguments);\n}\nfunction setupOfflineCssClasses() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeConnectivity)(function(param) {\n var online = param.online;\n var body = document.querySelector(\"body\");\n if (online) {\n body.classList.remove(\"omrs-offline\");\n } else {\n body.classList.add(\"omrs-offline\");\n }\n });\n}\nfunction run(configUrls, offline) {\n var closeLoading = showLoadingSpinner();\n var provideConfigs = createConfigLoader(configUrls);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.integrateBreakpoints)();\n showToasts();\n showModals();\n showNotifications();\n showActionableNotifications();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.createAppState)({});\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeActionableNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showActionableNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribeToastShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.showToast);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.subscribePrecacheStaticDependencies)(precacheGlobalStaticDependencies);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_7__.setupApiModule)();\n registerCoreExtensions();\n return loadApps().then(setupApps).then(setupOfflineCssClasses).then(provideConfigs).then(runShell).catch(handleInitFailure).then(closeLoading).then(function() {\n return offline ? setupOffline() : undefined;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvcnVuLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBOEI7QUFDQTtBQUNJO0FBQ1U7QUFDQztBQUNIO0FBQzZCO0FBNEIxQjtBQUs3QjtBQUNxQjtBQUNRO0FBQ0s7QUFFbEQ7Ozs7OztDQU1DLEdBQ0QsU0FBU21DLFdBQVc7SUFDbEIsT0FBT0MsT0FBT0Msa0JBQWtCLENBQzdCQyxpQkFBaUIsR0FDakJDLElBQUksQ0FBQyxTQUFDQztlQUFjUiwyREFBV0EsQ0FBQ1EsVUFBVUMsT0FBTzs7QUFDdEQ7QUFFQTs7Q0FFQyxHQUNELFNBQVNDLHlCQUF5QjtJQUNoQyxJQUFNQyxhQUFhVCx1REFBaUJBO1FBRS9COztRQUFMLFFBQUssWUFBbUJTLCtCQUFuQix3R0FBK0I7WUFBL0IsSUFBTUMsWUFBTjtZQUNIZCwyREFBb0JBLENBQUNHLHlDQUFPQSxFQUFFVztRQUNoQzs7UUFGSztRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztBQUdQO1NBU2VDLFVBQVVDLE9BQXVDO1dBQWpERDs7U0FBQUE7SUFBQUEsYUFQZjs7Ozs7O0NBTUMsR0FDRCwyQkFBeUJDLE9BQXVDLEVBQUU7O1lBQ2hFQSxRQUFRQyxPQUFPLENBQUM7dURBQUVkLHFCQUFTZTt1QkFBZ0JuQixrREFBV0EsQ0FBQ0ksU0FBU2U7O1lBQ2hFNUIsMEZBQXFCQSxlQUFDLDZCQUFZO29CQUMxQjZCOzs7OzRCQUFBQSxXQUFXL0MsdURBQVdBOzRCQUM1Qjs7Z0NBQU1nRCxRQUFRQyxHQUFHLENBQUNGLFNBQVNHLEdBQUcsQ0FBQ25ELDZEQUFxQkE7Ozs0QkFBcEQ7NEJBQ0EyQiwrREFBd0JBOzs7Ozs7WUFDMUI7WUFDQVEsT0FBT2lCLGdCQUFnQixHQUFHUDs7Ozs7SUFDNUI7V0FSZUQ7O1NBYUFTLFlBQVlDLE9BQStDO1dBQTNERDs7U0FBQUE7SUFBQUEsZUFIZjs7Q0FFQyxHQUNELDJCQUEyQkMsT0FBK0MsRUFBRTtZQUNyRSxnRkFBTUM7O1lBQU47O2dCQUFMLElBQUssWUFBZ0JELDhCQUFoQiwrRkFBeUI7b0JBQW5CQyxTQUFOO29CQUNIbEQsNEVBQU9BLENBQUNrRCxPQUFPQyxLQUFLLEVBQUVELE9BQU9FLElBQUk7Z0JBQ25DOztnQkFGSztnQkFBQTs7O3lCQUFBO3dCQUFBOzs7d0JBQUE7OEJBQUE7Ozs7Ozs7O0lBR1A7V0FKZUo7O0FBTWY7O0NBRUMsR0FDRCxTQUFTSyxzQkFBc0I7SUFDN0IsSUFBTUMsU0FBU0MsVUFBVUMsTUFBTTtJQUMvQmhELGdHQUEyQkEsQ0FBQzhDO0lBQzVCbkQsOEVBQVNBLENBQUM7UUFDUnNELFVBQVUsSUFBSTtRQUNkQyxhQUFhLGVBQTZDLE9BQTlCSixTQUFTLFdBQVcsU0FBUztRQUN6REssT0FBTztRQUNQQyxNQUFNTixTQUFTLFlBQVksU0FBUztJQUN0QztBQUNGO0FBRUE7O0NBRUMsR0FDRCxTQUFTTyxXQUFXO0lBQ2xCL0IsT0FBT2dDLGdCQUFnQixDQUFDLFdBQVdUO0lBQ25DdkIsT0FBT2dDLGdCQUFnQixDQUFDLFVBQVVUO0lBQ2xDLE9BQU81QixrREFBU0EsR0FDYnNDLEtBQUssQ0FBQyxTQUFDQztlQUFRQyxRQUFRQyxLQUFLLENBQUUscUNBQW9DRjtPQUNsRS9CLElBQUksQ0FBQztlQUFNdkMsaURBQUtBOztBQUNyQjtBQUVBLFNBQVN5RSxrQkFBa0JDLENBQVEsRUFBRTtJQUNuQ0gsUUFBUUMsS0FBSyxDQUFDRTtJQUNkQyxxQkFBcUJEO0FBQ3ZCO0FBRUEsU0FBU0MscUJBQXFCRCxDQUFTLEVBQUU7SUFDdkMsSUFBTUUsV0FBV0MsU0FBU0MsYUFBYSxDQUFzQjtJQUU3RCxJQUFJRixVQUFVO1FBQ1osSUFBTUcsV0FBV0gsU0FBU0ksT0FBTyxDQUFDQyxTQUFTLENBQUMsSUFBSTtRQUNoRCxJQUFNQyxtQkFBbUJILFNBQVNELGFBQWEsQ0FBQztRQUVoRCxJQUFJSSxrQkFBa0I7WUFDcEJBLGlCQUFpQkMsV0FBVyxHQUMxQlQsQ0FBQUEsY0FBQUEsZUFBQUEsS0FBQUEsSUFBQUEsRUFBR1UsT0FBTyxLQUFJO1FBQ2xCLENBQUM7UUFFRCxJQUNFQyxhQUFhQyxPQUFPLENBQUMsdUJBQ3JCQyxPQUFPQyxJQUFJLENBQUNILGNBQWNJLElBQUksQ0FBQyxTQUFDQzttQkFDOUJBLEVBQUVDLFVBQVUsQ0FBQztZQUVmO1lBQ0EsSUFBTUMsd0JBQXdCYixxQkFBQUEsc0JBQUFBLEtBQUFBLElBQUFBLFNBQVVELGFBQWEsQ0FBQztZQUN0RCxJQUFJYyx1QkFBdUI7Z0JBQ3pCLElBQU1DLDBCQUEwQmhCLFNBQVNpQixhQUFhLENBQUM7Z0JBQ3ZERCx3QkFBd0JFLFNBQVMsR0FBRztnQkFDcENGLHdCQUF3QkcsU0FBUyxHQUFHO2dCQUNwQ0gsd0JBQXdCSSxPQUFPLEdBQUdDO2dCQUNsQ04sc0JBQXNCTyxXQUFXLENBQUNOO1lBQ3BDLENBQUM7UUFDSCxDQUFDO1FBRURoQixTQUFTdUIsSUFBSSxDQUFDRCxXQUFXLENBQUNwQjtJQUM1QixDQUFDO0FBQ0g7QUFFQSxTQUFTbUIsb0JBQW9CO1FBQ3RCOztRQUFMLFFBQUssWUFBYVgsT0FBT0MsSUFBSSxDQUFDSCxrQ0FBekIsd0dBQXdDO1lBQXhDLElBQU1nQixNQUFOO1lBQ0gsSUFDRUEsSUFBSVYsVUFBVSxDQUFDLDJCQUNmLENBQUM7Z0JBQUM7Z0JBQTZCO2FBQWdDLENBQUNXLFFBQVEsQ0FDdEVELE1BRUY7Z0JBQ0FoQixhQUFha0IsVUFBVSxDQUFDRjtZQUMxQixDQUFDO1FBQ0g7O1FBVEs7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7SUFVTEcsU0FBU0MsTUFBTTtBQUNqQjtBQUVBLFNBQVNDLGNBQWNDLEdBQVcsRUFBVztJQUMzQyxJQUFNQyxxQkFBcUI7SUFDM0IsT0FBT0EsbUJBQW1CQyxJQUFJLENBQUNGO0FBQ2pDO0FBRUEsU0FBU0csbUJBQW1CQyxVQUF5QixFQUFFO0lBQ3JELElBQU1DLGlCQUFpQjlELFFBQVFDLEdBQUcsQ0FDaEM0RCxXQUFXM0QsR0FBRyxDQUFDLFNBQUM2RCxXQUFjO1FBQzVCLElBQU1DLGtCQUFrQixHQUV0QixPQUZ5QnZGLG1GQUFjQSxDQUN2QyxvQkFBK0IsT0FBVnNGO1FBRXZCLElBQU1OLE1BQU1ELGNBQWNPLGFBQ3RCQSxZQUNBLEdBQTRCQyxPQUF6QjlFLE9BQU9vRSxRQUFRLENBQUNXLE1BQU0sRUFBbUIsT0FBaEJELGdCQUFpQjtRQUNqRCxPQUFPRSxNQUFNVCxLQUNWcEUsSUFBSSxDQUFDLFNBQUM4RTttQkFBUUEsSUFBSUMsSUFBSTtXQUN0Qi9FLElBQUksQ0FBQyxTQUFDaUI7bUJBQVk7Z0JBQ2pCRSxNQUFNdUQ7Z0JBQ054RCxPQUFPRDtZQUNUO1dBQ0NhLEtBQUssQ0FBQyxTQUFDQyxLQUFRO1lBQ2RDLFFBQVFDLEtBQUssQ0FBQyw0QkFBc0MsT0FBVnlDLFdBQVUsY0FBWTNDO1lBQ2hFLE9BQU87Z0JBQ0xaLE1BQU11RDtnQkFDTnhELE9BQU8sQ0FBQztZQUNWO1FBQ0Y7SUFDSjtJQUVGLE9BQU87ZUFBTXVELGVBQWV6RSxJQUFJLENBQUNlOztBQUNuQztBQUVBLFNBQVNpRSxvQkFBb0I7SUFDM0I3Ryw4RkFBeUJBLENBQ3ZCbUUsU0FBU0MsYUFBYSxDQUFDO0lBRXpCO0FBQ0Y7QUFFQSxTQUFTMEMsOEJBQThCO0lBQ3JDN0csa0dBQTZCQSxDQUMzQmtFLFNBQVNDLGFBQWEsQ0FBQztJQUV6QjtBQUNGO0FBRUEsU0FBUzJDLGFBQWE7SUFDcEI3RyxpRkFBWUEsQ0FBQ2lFLFNBQVNDLGFBQWEsQ0FBQztJQUNwQztBQUNGO0FBRUEsU0FBUzRDLGFBQWE7SUFDcEJwRyxpRkFBWUEsQ0FBQ3VELFNBQVNDLGFBQWEsQ0FBQztJQUNwQztBQUNGO0FBRUEsU0FBUzZDLHFCQUFxQjtJQUM1QixPQUFPdkgseUZBQW9CQSxDQUFDeUUsU0FBU3VCLElBQUk7QUFDM0M7U0FFZXdCO1dBQUFBOztTQUFBQTtJQUFBQSxnQkFBZiw2QkFBOEI7WUFPbkJwRDs7Ozs7Ozs7OztvQkFMUDs7d0JBQU10RCw4RkFBeUJBLENBQzdCLEdBQThCLE9BQTNCa0IsT0FBT3lGLGlCQUFpQixJQUFHOzs7b0JBRGhDO29CQUdBOzt3QkFBTXJHLDhGQUF5QkE7OztvQkFBL0I7b0JBQ0FzRzs7Ozs7O29CQUNPdEQ7b0JBQ1BELFFBQVFDLEtBQUssQ0FBQyx3Q0FBd0NBO29CQUN0RGpFLHFGQUFnQkEsQ0FBQzt3QkFDZjJELE1BQU07d0JBQ05ELE9BQU87d0JBQ1BELGFBQWFRLE1BQU1ZLE9BQU87b0JBQzVCOzs7Ozs7Ozs7OztJQUVKO1dBZmV3Qzs7QUFpQmYsU0FBU0UseUNBQXlDO0lBQ2hELElBQU1DLGdCQUFnQixPQUFPLEtBQUs7SUFDbEMsSUFBSUMsZUFBNEIsSUFBSTtJQUVwQ0MsOEJBQThCLFNBQUNyRSxRQUFRc0UsaUJBQW9CO1FBQ3pELElBQU1DLDJCQUNKLENBQUNILGdCQUNELElBQUlJLE9BQU9DLE9BQU8sS0FBS0wsYUFBYUssT0FBTyxLQUFLTjtRQUVsRCxJQUFJRyxtQkFBbUJ0RSxVQUFVdUUsMEJBQTBCO1lBQ3pESCxlQUFlLElBQUlJO1lBQ25CN0csdUdBQWtDQTtRQUNwQyxDQUFDO0lBQ0g7QUFDRjtBQUVBLFNBQVMwRyw4QkFDUEssRUFBdUQsRUFDdkQ7SUFDQSxJQUFJQyxXQUFXLEtBQUs7SUFDcEIsSUFBSUwsa0JBQWtCLEtBQUs7SUFFM0I3RyxtRkFBY0EsQ0FBQztRQUFFbUgsbUJBQW1CLEtBQUs7SUFBQyxHQUFHQyxTQUFTLENBQUMsU0FBQ0MsTUFBUztRQUMvRFIsa0JBQWtCLENBQUMsQ0FBQ1E7UUFDcEJKLEdBQUdDLFVBQVVMO0lBQ2Y7SUFFQTlHLDBGQUFxQkEsQ0FBQyxnQkFBZ0I7WUFBYndDLGVBQUFBO1FBQ3ZCMkUsV0FBVzNFO1FBQ1gwRSxHQUFHMUUsUUFBUXNFO0lBQ2I7QUFDRjtTQUVlUztXQUFBQTs7U0FBQUE7SUFBQUEsb0NBQWYsNkJBQWtEO1lBSzFDQzs7OztvQkFKTjs7d0JBQU1DOzs7b0JBQU47b0JBSU1ELGlCQUFpQixJQUFJRSxJQUN6QixHQUFzQixPQUFuQjFHLE9BQU8yRyxXQUFXLEVBQUMsd0JBQ3RCM0csT0FBT29FLFFBQVEsQ0FBQ1csTUFBTSxFQUN0QjZCLElBQUk7b0JBRU47O3dCQUFNN0gsNkZBQXdCQSxDQUFDOzRCQUM3QjhILE1BQU07NEJBQ050QyxLQUFLaUM7NEJBQ0xNLFVBQVU7d0JBQ1o7OztvQkFKQTtvQkFNQTs7d0JBQU14SCxpRkFBWUEsQ0FBQyx1QkFBdUIyQyxLQUFLLENBQUMsU0FBQ0s7bUNBQy9DSCxRQUFRNEUsSUFBSSxDQUNWLGdJQUNBekU7Ozs7b0JBSEo7Ozs7OztJQU1GO1dBdEJlaUU7O1NBd0JBRTtXQUFBQTs7U0FBQUE7SUFBQUEscUJBQWYsNkJBQW1DO1lBQzNCckc7Ozs7b0JBQVk7O3dCQUFNSixPQUFPQyxrQkFBa0IsQ0FBQ0MsaUJBQWlCOzs7b0JBQTdERSxZQUFZO29CQUNsQjs7d0JBQU1yQiw2RkFBd0JBLENBQUM7NEJBQzdCOEgsTUFBTTs0QkFDTnpHLFdBQUFBO3dCQUNGOzs7b0JBSEE7Ozs7OztJQUlGO1dBTmVxRzs7QUFRZixTQUFTTyx5QkFBeUI7SUFDaENoSSwwRkFBcUJBLENBQUMsZ0JBQWdCO1lBQWJ3QyxlQUFBQTtRQUN2QixJQUFNd0MsT0FBT3ZCLFNBQVNDLGFBQWEsQ0FBQztRQUNwQyxJQUFJbEIsUUFBUTtZQUNWd0MsS0FBS2lELFNBQVMsQ0FBQ0MsTUFBTSxDQUFDO1FBQ3hCLE9BQU87WUFDTGxELEtBQUtpRCxTQUFTLENBQUNFLEdBQUcsQ0FBQztRQUNyQixDQUFDO0lBQ0g7QUFDRjtBQUVPLFNBQVNDLElBQUl6QyxVQUF5QixFQUFFMEMsT0FBZ0IsRUFBRTtJQUMvRCxJQUFNQyxlQUFlL0I7SUFDckIsSUFBTWdDLGlCQUFpQjdDLG1CQUFtQkM7SUFFMUNsRyx5RkFBb0JBO0lBQ3BCNEc7SUFDQUM7SUFDQUg7SUFDQUM7SUFDQW5ILG1GQUFjQSxDQUFDLENBQUM7SUFDaEJVLCtGQUEwQkEsQ0FBQ1IsaUZBQWdCQTtJQUMzQ1MseUdBQW9DQSxDQUFDUiwyRkFBMEJBO0lBQy9EUyx3RkFBbUJBLENBQUNSLDBFQUFTQTtJQUM3QmdCLHdHQUFtQ0EsQ0FBQ2tIO0lBQ3BDeEksbUZBQWNBO0lBQ2R1QztJQUVBLE9BQU9QLFdBQ0pJLElBQUksQ0FBQ00sV0FDTE4sSUFBSSxDQUFDNkcsd0JBQ0w3RyxJQUFJLENBQUNvSCxnQkFDTHBILElBQUksQ0FBQzRCLFVBQ0xFLEtBQUssQ0FBQ0ksbUJBQ05sQyxJQUFJLENBQUNtSCxjQUNMbkgsSUFBSSxDQUFDO2VBQU9rSCxVQUFVN0IsaUJBQWlCZ0MsU0FBUzs7QUFDckQsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvcnVuLnRzP2JjMjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiaW1wb3J0LW1hcC1vdmVycmlkZXNcIjtcbmltcG9ydCBcInN5c3RlbWpzL2Rpc3Qvc3lzdGVtXCI7XG5pbXBvcnQgXCJzeXN0ZW1qcy9kaXN0L2V4dHJhcy9hbWRcIjtcbmltcG9ydCBcInN5c3RlbWpzL2Rpc3QvZXh0cmFzL25hbWVkLWV4cG9ydHNcIjtcbmltcG9ydCBcInN5c3RlbWpzL2Rpc3QvZXh0cmFzL25hbWVkLXJlZ2lzdGVyXCI7XG5pbXBvcnQgXCJzeXN0ZW1qcy9kaXN0L2V4dHJhcy91c2UtZGVmYXVsdFwiO1xuaW1wb3J0IHsgc3RhcnQsIHVucmVnaXN0ZXJBcHBsaWNhdGlvbiwgZ2V0QXBwTmFtZXMgfSBmcm9tIFwic2luZ2xlLXNwYVwiO1xuaW1wb3J0IHtcbiAgc2V0dXBBcGlNb2R1bGUsXG4gIHJlbmRlckxvYWRpbmdTcGlubmVyLFxuICBjcmVhdGVBcHBTdGF0ZSxcbiAgQ29uZmlnLFxuICBwcm92aWRlLFxuICBzaG93Tm90aWZpY2F0aW9uLFxuICBzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbixcbiAgc2hvd1RvYXN0LFxuICByZW5kZXJJbmxpbmVOb3RpZmljYXRpb25zLFxuICByZW5kZXJBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyxcbiAgcmVuZGVyVG9hc3RzLFxuICBpbnRlZ3JhdGVCcmVha3BvaW50cyxcbiAgZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkLFxuICBzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93bixcbiAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duLFxuICBzdWJzY3JpYmVUb2FzdFNob3duLFxuICByZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyLFxuICBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIsXG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eSxcbiAgZ2V0Q3VycmVudFVzZXIsXG4gIHJlbmRlck1vZGFscyxcbiAgZGlzcGF0Y2hQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyxcbiAgYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSxcbiAgc3Vic2NyaWJlUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMsXG4gIG9wZW5tcnNGZXRjaCxcbiAgaW50ZXJwb2xhdGVVcmwsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbFwiO1xuaW1wb3J0IHtcbiAgZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzLFxuICByZWdpc3RlckFwcCxcbiAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24sXG59IGZyb20gXCIuL2FwcHNcIjtcbmltcG9ydCB7IHNldHVwSTE4biB9IGZyb20gXCIuL2xvY2FsZVwiO1xuaW1wb3J0IHsgbG9hZE1vZHVsZXMgfSBmcm9tIFwiLi9sb2FkLW1vZHVsZXNcIjtcbmltcG9ydCB7IGFwcE5hbWUsIGdldENvcmVFeHRlbnNpb25zIH0gZnJvbSBcIi4vdWlcIjtcblxuLyoqXG4gKiBMb2FkcyB0aGUgZnJvbnRlbmQgbW9kdWxlcyAoYXBwcyBhbmQgd2lkZ2V0cykuIFNob3VsZCBiZSBkb25lICphZnRlcipcbiAqIHRoZSBpbXBvcnQgbWFwcyBpbml0aWFsaXplZCwgaS5lLiwgYWZ0ZXIgbW9kdWxlcyBsb2FkZWQuXG4gKlxuICogQnkgY29udmVudGlvbiB3ZSBjYWxsIGZyb250ZW5kIG1vZHVsZXMgcmVnaXN0ZXJpbmcgYWN0aXZhdGlvbiBmdW5jdGlvbnNcbiAqIGFwcHMsIGFuZCBhbGwgb3RoZXJzIHdpZGdldHMuIFRoaXMgaXMgbm90IGVuZm9yY2VkIHRlY2huaWNhbGx5LlxuICovXG5mdW5jdGlvbiBsb2FkQXBwcygpIHtcbiAgcmV0dXJuIHdpbmRvdy5pbXBvcnRNYXBPdmVycmlkZXNcbiAgICAuZ2V0Q3VycmVudFBhZ2VNYXAoKVxuICAgIC50aGVuKChpbXBvcnRNYXApID0+IGxvYWRNb2R1bGVzKGltcG9ydE1hcC5pbXBvcnRzKSk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBleHRlbnNpb25zIGFscmVhZHkgY29taW5nIGZyb20gdGhlIGFwcCBzaGVsbCBpdHNlbGYuXG4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyQ29yZUV4dGVuc2lvbnMoKSB7XG4gIGNvbnN0IGV4dGVuc2lvbnMgPSBnZXRDb3JlRXh0ZW5zaW9ucygpO1xuXG4gIGZvciAoY29uc3QgZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbnMpIHtcbiAgICB0cnlSZWdpc3RlckV4dGVuc2lvbihhcHBOYW1lLCBleHRlbnNpb24pO1xuICB9XG59XG5cbi8qKlxuICogU2V0cyB1cCB0aGUgZnJvbnRlbmQgbW9kdWxlcyAoYXBwcykuIFVzZXMgdGhlIGRlZmluZWQgZXhwb3J0XG4gKiBmcm9tIHRoZSByb290IG1vZHVsZXMgb2YgdGhlIGFwcHMsIHdoaWNoIHNob3VsZCBleHBvcnQgYVxuICogc3BlY2lhbCBmdW5jdGlvbiBjYWxsZWQgXCJzZXR1cE9wZW5NUlNcIi5cbiAqIFRoYXQgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3QgdGhhdCBpcyB1c2VkIHRvIGZlZWQgU2luZ2xlXG4gKiBTUEEuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNldHVwQXBwcyhtb2R1bGVzOiBBcnJheTxbc3RyaW5nLCBTeXN0ZW0uTW9kdWxlXT4pIHtcbiAgbW9kdWxlcy5mb3JFYWNoKChbYXBwTmFtZSwgYXBwRXhwb3J0c10pID0+IHJlZ2lzdGVyQXBwKGFwcE5hbWUsIGFwcEV4cG9ydHMpKTtcbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBhcHBOYW1lcyA9IGdldEFwcE5hbWVzKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoYXBwTmFtZXMubWFwKHVucmVnaXN0ZXJBcHBsaWNhdGlvbikpO1xuICAgIGZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcygpO1xuICB9KTtcbiAgd2luZG93Lmluc3RhbGxlZE1vZHVsZXMgPSBtb2R1bGVzO1xufVxuXG4vKipcbiAqIExvYWRzIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9ucyBhbmQgc2V0cyB0aGVtIGluIHRoZSBzeXN0ZW0uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRDb25maWdzKGNvbmZpZ3M6IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogQ29uZmlnIH0+KSB7XG4gIGZvciAoY29uc3QgY29uZmlnIG9mIGNvbmZpZ3MpIHtcbiAgICBwcm92aWRlKGNvbmZpZy52YWx1ZSwgY29uZmlnLm5hbWUpO1xuICB9XG59XG5cbi8qKlxuICogSW52b2tlZCB3aGVuIHRoZSBjb25uZWN0aXZpdHkgaXMgY2hhbmdlZC5cbiAqL1xuZnVuY3Rpb24gY29ubmVjdGl2aXR5Q2hhbmdlZCgpIHtcbiAgY29uc3Qgb25saW5lID0gbmF2aWdhdG9yLm9uTGluZTtcbiAgZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkKG9ubGluZSk7XG4gIHNob3dUb2FzdCh7XG4gICAgY3JpdGljYWw6IHRydWUsXG4gICAgZGVzY3JpcHRpb246IGBDb25uZWN0aW9uOiAke29ubGluZSA/IFwib25saW5lXCIgOiBcIm9mZmxpbmVcIn1gLFxuICAgIHRpdGxlOiBcIkFwcFwiLFxuICAgIGtpbmQ6IG9ubGluZSA/IFwic3VjY2Vzc1wiIDogXCJ3YXJuaW5nXCIsXG4gIH0pO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHNoZWxsIGJ5IGltcG9ydGluZyB0aGUgdHJhbnNsYXRpb25zIGFuZCBzdGFydGluZyBzaW5nbGUgU1BBLlxuICovXG5mdW5jdGlvbiBydW5TaGVsbCgpIHtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJvZmZsaW5lXCIsIGNvbm5lY3Rpdml0eUNoYW5nZWQpO1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCBjb25uZWN0aXZpdHlDaGFuZ2VkKTtcbiAgcmV0dXJuIHNldHVwSTE4bigpXG4gICAgLmNhdGNoKChlcnIpID0+IGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBpbml0aWFsaXplIHRyYW5zbGF0aW9uc2AsIGVycikpXG4gICAgLnRoZW4oKCkgPT4gc3RhcnQoKSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUluaXRGYWlsdXJlKGU6IEVycm9yKSB7XG4gIGNvbnNvbGUuZXJyb3IoZSk7XG4gIHJlbmRlckZhdGFsRXJyb3JQYWdlKGUpO1xufVxuXG5mdW5jdGlvbiByZW5kZXJGYXRhbEVycm9yUGFnZShlPzogRXJyb3IpIHtcbiAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KFwiI2FwcC1lcnJvclwiKTtcblxuICBpZiAodGVtcGxhdGUpIHtcbiAgICBjb25zdCBmcmFnbWVudCA9IHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpIGFzIERvY3VtZW50RnJhZ21lbnQ7XG4gICAgY29uc3QgbWVzc2FnZUNvbnRhaW5lciA9IGZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXZhcj1cIm1lc3NhZ2VcIl0nKTtcblxuICAgIGlmIChtZXNzYWdlQ29udGFpbmVyKSB7XG4gICAgICBtZXNzYWdlQ29udGFpbmVyLnRleHRDb250ZW50ID1cbiAgICAgICAgZT8ubWVzc2FnZSB8fCBcIk5vIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXZhaWxhYmxlLlwiO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwib3Blbm1yczpkZXZ0b29sc1wiKSAmJlxuICAgICAgT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5zb21lKChrKSA9PlxuICAgICAgICBrLnN0YXJ0c1dpdGgoXCJpbXBvcnQtbWFwLW92ZXJyaWRlOlwiKVxuICAgICAgKVxuICAgICkge1xuICAgICAgY29uc3QgYXBwRXJyb3JBY3Rpb25CdXR0b25zID0gZnJhZ21lbnQ/LnF1ZXJ5U2VsZWN0b3IoXCIjYnV0dG9uc1wiKTtcbiAgICAgIGlmIChhcHBFcnJvckFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgY29uc3QgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIpO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5jbGFzc05hbWUgPSBcImNkcy0tYnRuXCI7XG4gICAgICAgIGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uLmlubmVySFRNTCA9IFwiQ2xlYXIgZGV2IG92ZXJyaWRlc1wiO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5vbmNsaWNrID0gY2xlYXJEZXZPdmVycmlkZXM7XG4gICAgICAgIGFwcEVycm9yQWN0aW9uQnV0dG9ucy5hcHBlbmRDaGlsZChjbGVhckRldk92ZXJyaWRlc0J1dHRvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFnbWVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2xlYXJEZXZPdmVycmlkZXMoKSB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkpIHtcbiAgICBpZiAoXG4gICAgICBrZXkuc3RhcnRzV2l0aChcImltcG9ydC1tYXAtb3ZlcnJpZGU6XCIpICYmXG4gICAgICAhW1wiaW1wb3J0LW1hcC1vdmVycmlkZTpyZWFjdFwiLCBcImltcG9ydC1tYXAtb3ZlcnJpZGU6cmVhY3QtZG9tXCJdLmluY2x1ZGVzKFxuICAgICAgICBrZXlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfVxuICB9XG4gIGxvY2F0aW9uLnJlbG9hZCgpO1xufVxuXG5mdW5jdGlvbiBpc0Fic29sdXRlVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGFic29sdXRlVXJsUGF0dGVybiA9IC9eaHR0cHM/OlxcL1xcLy9pO1xuICByZXR1cm4gYWJzb2x1dGVVcmxQYXR0ZXJuLnRlc3QodXJsKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29uZmlnTG9hZGVyKGNvbmZpZ1VybHM6IEFycmF5PHN0cmluZz4pIHtcbiAgY29uc3QgbG9hZGluZ0NvbmZpZ3MgPSBQcm9taXNlLmFsbChcbiAgICBjb25maWdVcmxzLm1hcCgoY29uZmlnVXJsKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcnBvbGF0ZWRVcmwgPSBgJHtpbnRlcnBvbGF0ZVVybChcbiAgICAgICAgYFxcJHtvcGVubXJzU3BhQmFzZX0ke2NvbmZpZ1VybH1gXG4gICAgICApfWA7XG4gICAgICBjb25zdCB1cmwgPSBpc0Fic29sdXRlVXJsKGNvbmZpZ1VybClcbiAgICAgICAgPyBjb25maWdVcmxcbiAgICAgICAgOiBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufSR7aW50ZXJwb2xhdGVkVXJsfWA7XG4gICAgICByZXR1cm4gZmV0Y2godXJsKVxuICAgICAgICAudGhlbigocmVzKSA9PiByZXMuanNvbigpKVxuICAgICAgICAudGhlbigoY29uZmlnKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGNvbmZpZ1VybCxcbiAgICAgICAgICB2YWx1ZTogY29uZmlnLFxuICAgICAgICB9KSlcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBMb2FkaW5nIHRoZSBjb25maWcgZnJvbSBcIiR7Y29uZmlnVXJsfVwiIGZhaWxlZC5gLCBlcnIpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgICB2YWx1ZToge30sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSlcbiAgKTtcbiAgcmV0dXJuICgpID0+IGxvYWRpbmdDb25maWdzLnRoZW4obG9hZENvbmZpZ3MpO1xufVxuXG5mdW5jdGlvbiBzaG93Tm90aWZpY2F0aW9ucygpIHtcbiAgcmVuZGVySW5saW5lTm90aWZpY2F0aW9ucyhcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLm9tcnMtaW5saW5lLW5vdGlmaWNhdGlvbnMtY29udGFpbmVyXCIpXG4gICk7XG4gIHJldHVybjtcbn1cblxuZnVuY3Rpb24gc2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb25zKCkge1xuICByZW5kZXJBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyhcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLm9tcnMtYWN0aW9uYWJsZS1ub3RpZmljYXRpb25zLWNvbnRhaW5lclwiKVxuICApO1xuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHNob3dUb2FzdHMoKSB7XG4gIHJlbmRlclRvYXN0cyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLm9tcnMtdG9hc3RzLWNvbnRhaW5lclwiKSk7XG4gIHJldHVybjtcbn1cblxuZnVuY3Rpb24gc2hvd01vZGFscygpIHtcbiAgcmVuZGVyTW9kYWxzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIub21ycy1tb2RhbHMtY29udGFpbmVyXCIpKTtcbiAgcmV0dXJuO1xufVxuXG5mdW5jdGlvbiBzaG93TG9hZGluZ1NwaW5uZXIoKSB7XG4gIHJldHVybiByZW5kZXJMb2FkaW5nU3Bpbm5lcihkb2N1bWVudC5ib2R5KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2V0dXBPZmZsaW5lKCkge1xuICB0cnkge1xuICAgIGF3YWl0IHJlZ2lzdGVyT21yc1NlcnZpY2VXb3JrZXIoXG4gICAgICBgJHt3aW5kb3cuZ2V0T3Blbm1yc1NwYUJhc2UoKX1zZXJ2aWNlLXdvcmtlci5qc2BcbiAgICApO1xuICAgIGF3YWl0IGFjdGl2YXRlT2ZmbGluZUNhcGFiaWxpdHkoKTtcbiAgICBzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB3aGlsZSBzZXR0aW5nIHVwIG9mZmxpbmUgbW9kZS5cIiwgZXJyb3IpO1xuICAgIHNob3dOb3RpZmljYXRpb24oe1xuICAgICAga2luZDogXCJlcnJvclwiLFxuICAgICAgdGl0bGU6IFwiT2ZmbGluZSBTZXR1cCBFcnJvclwiLFxuICAgICAgZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2UsXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0dXBPZmZsaW5lU3RhdGljRGVwZW5kZW5jeVByZWNhY2hpbmcoKSB7XG4gIGNvbnN0IHByZWNhY2hlRGVsYXkgPSAxMDAwICogNjAgKiA1O1xuICBsZXQgbGFzdFByZWNhY2hlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgc3Vic2NyaWJlT25saW5lQW5kTG9naW5DaGFuZ2UoKG9ubGluZSwgaGFzTG9nZ2VkSW5Vc2VyKSA9PiB7XG4gICAgY29uc3QgaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5ID1cbiAgICAgICFsYXN0UHJlY2FjaGUgfHxcbiAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gbGFzdFByZWNhY2hlLmdldFRpbWUoKSA+IHByZWNhY2hlRGVsYXk7XG5cbiAgICBpZiAoaGFzTG9nZ2VkSW5Vc2VyICYmIG9ubGluZSAmJiBoYXNFeGNlZWRlZFByZWNhY2hlRGVsYXkpIHtcbiAgICAgIGxhc3RQcmVjYWNoZSA9IG5ldyBEYXRlKCk7XG4gICAgICBkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlT25saW5lQW5kTG9naW5DaGFuZ2UoXG4gIGNiOiAob25saW5lOiBib29sZWFuLCBoYXNMb2dnZWRJblVzZXI6IGJvb2xlYW4pID0+IHZvaWRcbikge1xuICBsZXQgaXNPbmxpbmUgPSBmYWxzZTtcbiAgbGV0IGhhc0xvZ2dlZEluVXNlciA9IGZhbHNlO1xuXG4gIGdldEN1cnJlbnRVc2VyKHsgaW5jbHVkZUF1dGhTdGF0dXM6IGZhbHNlIH0pLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgIGhhc0xvZ2dlZEluVXNlciA9ICEhdXNlcjtcbiAgICBjYihpc09ubGluZSwgaGFzTG9nZ2VkSW5Vc2VyKTtcbiAgfSk7XG5cbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5KCh7IG9ubGluZSB9KSA9PiB7XG4gICAgaXNPbmxpbmUgPSBvbmxpbmU7XG4gICAgY2Iob25saW5lLCBoYXNMb2dnZWRJblVzZXIpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMoKSB7XG4gIGF3YWl0IHByZWNhY2hlSW1wb3J0TWFwKCk7XG5cbiAgLy8gQnkgZGVmYXVsdCwgY2FjaGUgdGhlIHNlc3Npb24gZW5kcG9pbnQuXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGEgbG90IG9mIHVzZXIvc2Vzc2lvbiByZWxhdGVkIGZ1bmN0aW9ucyBhbHNvIHdvcmsgb2ZmbGluZS5cbiAgY29uc3Qgc2Vzc2lvblBhdGhVcmwgPSBuZXcgVVJMKFxuICAgIGAke3dpbmRvdy5vcGVubXJzQmFzZX0vd3MvcmVzdC92MS9zZXNzaW9uYCxcbiAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICkuaHJlZjtcblxuICBhd2FpdCBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIoe1xuICAgIHR5cGU6IFwicmVnaXN0ZXJEeW5hbWljUm91dGVcIixcbiAgICB1cmw6IHNlc3Npb25QYXRoVXJsLFxuICAgIHN0cmF0ZWd5OiBcIm5ldHdvcmstZmlyc3RcIixcbiAgfSk7XG5cbiAgYXdhaXQgb3Blbm1yc0ZldGNoKFwiL3dzL3Jlc3QvdjEvc2Vzc2lvblwiKS5jYXRjaCgoZSkgPT5cbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIkZhaWxlZCB0byBwcmVjYWNoZSB0aGUgdXNlciBzZXNzaW9uIGRhdGEgZnJvbSB0aGUgYXBwIHNoZWxsLiBNRnMgZGVwZW5kaW5nIG9uIHRoaXMgZGF0YSBtYXkgcnVuIGludG8gcHJvYmxlbXMgd2hpbGUgb2ZmbGluZS5cIixcbiAgICAgIGVcbiAgICApXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByZWNhY2hlSW1wb3J0TWFwKCkge1xuICBjb25zdCBpbXBvcnRNYXAgPSBhd2FpdCB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldEN1cnJlbnRQYWdlTWFwKCk7XG4gIGF3YWl0IG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcih7XG4gICAgdHlwZTogXCJvbkltcG9ydE1hcENoYW5nZWRcIixcbiAgICBpbXBvcnRNYXAsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXR1cE9mZmxpbmVDc3NDbGFzc2VzKCkge1xuICBzdWJzY3JpYmVDb25uZWN0aXZpdHkoKHsgb25saW5lIH0pID0+IHtcbiAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImJvZHlcIikhO1xuICAgIGlmIChvbmxpbmUpIHtcbiAgICAgIGJvZHkuY2xhc3NMaXN0LnJlbW92ZShcIm9tcnMtb2ZmbGluZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKFwib21ycy1vZmZsaW5lXCIpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW4oY29uZmlnVXJsczogQXJyYXk8c3RyaW5nPiwgb2ZmbGluZTogYm9vbGVhbikge1xuICBjb25zdCBjbG9zZUxvYWRpbmcgPSBzaG93TG9hZGluZ1NwaW5uZXIoKTtcbiAgY29uc3QgcHJvdmlkZUNvbmZpZ3MgPSBjcmVhdGVDb25maWdMb2FkZXIoY29uZmlnVXJscyk7XG5cbiAgaW50ZWdyYXRlQnJlYWtwb2ludHMoKTtcbiAgc2hvd1RvYXN0cygpO1xuICBzaG93TW9kYWxzKCk7XG4gIHNob3dOb3RpZmljYXRpb25zKCk7XG4gIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucygpO1xuICBjcmVhdGVBcHBTdGF0ZSh7fSk7XG4gIHN1YnNjcmliZU5vdGlmaWNhdGlvblNob3duKHNob3dOb3RpZmljYXRpb24pO1xuICBzdWJzY3JpYmVBY3Rpb25hYmxlTm90aWZpY2F0aW9uU2hvd24oc2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb24pO1xuICBzdWJzY3JpYmVUb2FzdFNob3duKHNob3dUb2FzdCk7XG4gIHN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzKHByZWNhY2hlR2xvYmFsU3RhdGljRGVwZW5kZW5jaWVzKTtcbiAgc2V0dXBBcGlNb2R1bGUoKTtcbiAgcmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucygpO1xuXG4gIHJldHVybiBsb2FkQXBwcygpXG4gICAgLnRoZW4oc2V0dXBBcHBzKVxuICAgIC50aGVuKHNldHVwT2ZmbGluZUNzc0NsYXNzZXMpXG4gICAgLnRoZW4ocHJvdmlkZUNvbmZpZ3MpXG4gICAgLnRoZW4ocnVuU2hlbGwpXG4gICAgLmNhdGNoKGhhbmRsZUluaXRGYWlsdXJlKVxuICAgIC50aGVuKGNsb3NlTG9hZGluZylcbiAgICAudGhlbigoKSA9PiAob2ZmbGluZSA/IHNldHVwT2ZmbGluZSgpIDogdW5kZWZpbmVkKSk7XG59XG4iXSwibmFtZXMiOlsic3RhcnQiLCJ1bnJlZ2lzdGVyQXBwbGljYXRpb24iLCJnZXRBcHBOYW1lcyIsInNldHVwQXBpTW9kdWxlIiwicmVuZGVyTG9hZGluZ1NwaW5uZXIiLCJjcmVhdGVBcHBTdGF0ZSIsInByb3ZpZGUiLCJzaG93Tm90aWZpY2F0aW9uIiwic2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb24iLCJzaG93VG9hc3QiLCJyZW5kZXJJbmxpbmVOb3RpZmljYXRpb25zIiwicmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMiLCJyZW5kZXJUb2FzdHMiLCJpbnRlZ3JhdGVCcmVha3BvaW50cyIsImRpc3BhdGNoQ29ubmVjdGl2aXR5Q2hhbmdlZCIsInN1YnNjcmliZU5vdGlmaWNhdGlvblNob3duIiwic3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duIiwic3Vic2NyaWJlVG9hc3RTaG93biIsInJlZ2lzdGVyT21yc1NlcnZpY2VXb3JrZXIiLCJtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIiLCJzdWJzY3JpYmVDb25uZWN0aXZpdHkiLCJnZXRDdXJyZW50VXNlciIsInJlbmRlck1vZGFscyIsImRpc3BhdGNoUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMiLCJhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5Iiwic3Vic2NyaWJlUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMiLCJvcGVubXJzRmV0Y2giLCJpbnRlcnBvbGF0ZVVybCIsImZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcyIsInJlZ2lzdGVyQXBwIiwidHJ5UmVnaXN0ZXJFeHRlbnNpb24iLCJzZXR1cEkxOG4iLCJsb2FkTW9kdWxlcyIsImFwcE5hbWUiLCJnZXRDb3JlRXh0ZW5zaW9ucyIsImxvYWRBcHBzIiwid2luZG93IiwiaW1wb3J0TWFwT3ZlcnJpZGVzIiwiZ2V0Q3VycmVudFBhZ2VNYXAiLCJ0aGVuIiwiaW1wb3J0TWFwIiwiaW1wb3J0cyIsInJlZ2lzdGVyQ29yZUV4dGVuc2lvbnMiLCJleHRlbnNpb25zIiwiZXh0ZW5zaW9uIiwic2V0dXBBcHBzIiwibW9kdWxlcyIsImZvckVhY2giLCJhcHBFeHBvcnRzIiwiYXBwTmFtZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiaW5zdGFsbGVkTW9kdWxlcyIsImxvYWRDb25maWdzIiwiY29uZmlncyIsImNvbmZpZyIsInZhbHVlIiwibmFtZSIsImNvbm5lY3Rpdml0eUNoYW5nZWQiLCJvbmxpbmUiLCJuYXZpZ2F0b3IiLCJvbkxpbmUiLCJjcml0aWNhbCIsImRlc2NyaXB0aW9uIiwidGl0bGUiLCJraW5kIiwicnVuU2hlbGwiLCJhZGRFdmVudExpc3RlbmVyIiwiY2F0Y2giLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJoYW5kbGVJbml0RmFpbHVyZSIsImUiLCJyZW5kZXJGYXRhbEVycm9yUGFnZSIsInRlbXBsYXRlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZnJhZ21lbnQiLCJjb250ZW50IiwiY2xvbmVOb2RlIiwibWVzc2FnZUNvbnRhaW5lciIsInRleHRDb250ZW50IiwibWVzc2FnZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJPYmplY3QiLCJrZXlzIiwic29tZSIsImsiLCJzdGFydHNXaXRoIiwiYXBwRXJyb3JBY3Rpb25CdXR0b25zIiwiY2xlYXJEZXZPdmVycmlkZXNCdXR0b24iLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiaW5uZXJIVE1MIiwib25jbGljayIsImNsZWFyRGV2T3ZlcnJpZGVzIiwiYXBwZW5kQ2hpbGQiLCJib2R5Iiwia2V5IiwiaW5jbHVkZXMiLCJyZW1vdmVJdGVtIiwibG9jYXRpb24iLCJyZWxvYWQiLCJpc0Fic29sdXRlVXJsIiwidXJsIiwiYWJzb2x1dGVVcmxQYXR0ZXJuIiwidGVzdCIsImNyZWF0ZUNvbmZpZ0xvYWRlciIsImNvbmZpZ1VybHMiLCJsb2FkaW5nQ29uZmlncyIsImNvbmZpZ1VybCIsImludGVycG9sYXRlZFVybCIsIm9yaWdpbiIsImZldGNoIiwicmVzIiwianNvbiIsInNob3dOb3RpZmljYXRpb25zIiwic2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb25zIiwic2hvd1RvYXN0cyIsInNob3dNb2RhbHMiLCJzaG93TG9hZGluZ1NwaW5uZXIiLCJzZXR1cE9mZmxpbmUiLCJnZXRPcGVubXJzU3BhQmFzZSIsInNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nIiwicHJlY2FjaGVEZWxheSIsImxhc3RQcmVjYWNoZSIsInN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlIiwiaGFzTG9nZ2VkSW5Vc2VyIiwiaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5IiwiRGF0ZSIsImdldFRpbWUiLCJjYiIsImlzT25saW5lIiwiaW5jbHVkZUF1dGhTdGF0dXMiLCJzdWJzY3JpYmUiLCJ1c2VyIiwicHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMiLCJzZXNzaW9uUGF0aFVybCIsInByZWNhY2hlSW1wb3J0TWFwIiwiVVJMIiwib3Blbm1yc0Jhc2UiLCJocmVmIiwidHlwZSIsInN0cmF0ZWd5Iiwid2FybiIsInNldHVwT2ZmbGluZUNzc0NsYXNzZXMiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJhZGQiLCJydW4iLCJvZmZsaW5lIiwiY2xvc2VMb2FkaW5nIiwicHJvdmlkZUNvbmZpZ3MiLCJ1bmRlZmluZWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/run.ts\n");
7779
7768
 
7780
7769
  /***/ }),
7781
7770
 
@@ -11952,8 +11941,8 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
11952
11941
  /******/ var promises = [];
11953
11942
  /******/ switch(name) {
11954
11943
  /******/ case "default": {
11955
- /******/ register("@openmrs/esm-framework/src/internal", "4.4.2-pre.732", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
11956
- /******/ register("@openmrs/esm-framework", "4.4.2-pre.732", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
11944
+ /******/ register("@openmrs/esm-framework/src/internal", "4.4.2-pre.733", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
11945
+ /******/ register("@openmrs/esm-framework", "4.4.2-pre.733", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
11957
11946
  /******/ register("dayjs", "1.11.5", () => (() => (__webpack_require__(/*! ../../../node_modules/dayjs/dayjs.min.js */ "../../../node_modules/dayjs/dayjs.min.js"))), 1);
11958
11947
  /******/ register("i18next", "19.9.2", () => (() => (__webpack_require__(/*! ../../../node_modules/i18next/dist/esm/i18next.js */ "../../../node_modules/i18next/dist/esm/i18next.js"))), 1);
11959
11948
  /******/ register("react-dom", "18.2.0", () => (() => (__webpack_require__(/*! ../../../node_modules/react-dom/index.js */ "../../../node_modules/react-dom/index.js"))), 1);
@@ -12115,7 +12104,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
12115
12104
  /******/ "webpack/sharing/consume/default/i18next/i18next": () => (loadSingletonVersionCheckFallback("default", "i18next", [1,19,6,0], () => (() => (__webpack_require__(/*! i18next */ "../../../node_modules/i18next/dist/esm/i18next.js"))))),
12116
12105
  /******/ "webpack/sharing/consume/default/react-i18next/react-i18next": () => (loadSingletonVersionCheckFallback("default", "react-i18next", [1,11,7,0], () => (() => (__webpack_require__(/*! react-i18next */ "../../../node_modules/react-i18next/dist/es/index.js"))))),
12117
12106
  /******/ "webpack/sharing/consume/default/dayjs/dayjs": () => (loadSingletonVersionCheckFallback("default", "dayjs", [1,1,10,4], () => (() => (__webpack_require__(/*! dayjs */ "../../../node_modules/dayjs/dayjs.min.js"))))),
12118
- /******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,4,2,,"pre",732], () => (() => (__webpack_require__(/*! @openmrs/esm-framework */ "../../framework/esm-framework/src/index.ts")))))
12107
+ /******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,4,2,,"pre",733], () => (() => (__webpack_require__(/*! @openmrs/esm-framework */ "../../framework/esm-framework/src/index.ts")))))
12119
12108
  /******/ };
12120
12109
  /******/ var initialConsumes = ["webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal","webpack/sharing/consume/default/rxjs/rxjs","webpack/sharing/consume/default/react/react","webpack/sharing/consume/default/react-dom/react-dom","webpack/sharing/consume/default/i18next/i18next","webpack/sharing/consume/default/react-i18next/react-i18next","webpack/sharing/consume/default/dayjs/dayjs","webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework"];
12121
12110
  /******/ initialConsumes.forEach((id) => {