@openmrs/esm-app-shell 10.0.1-pre.5263 → 10.0.1-pre.5299

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.
@@ -1720,7 +1720,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
1720
1720
  },
1721
1721
  "../../framework/esm-styleguide/dist/modals/index.js"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
1722
1722
  "use strict";
1723
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n setupModals: () => (setupModals),\n showModal: () => (showModal)\n});\n/* import */ var _openmrs_esm_state__rspack_import_0 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/* import */ var _openmrs_esm_extensions__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _openmrs_esm_error_handling__rspack_import_2 = __webpack_require__(\"../../framework/esm-error-handling/dist/index.js\");\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(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 _async_to_generator(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 _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\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(g && (g = 0, op[0] && (_ = 0)), _)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/** @module @category UI */ \n\n\nvar modalStore = (0,_openmrs_esm_state__rspack_import_0.createGlobalStore)('modalState', {\n modalContainer: null,\n modalStack: []\n});\nfunction createModalFrame(param) {\n var size = param.size;\n var modalFrame = document.createElement('div');\n modalFrame.className = \"cds--modal-container cds--modal-container--\".concat(size);\n modalFrame.setAttribute('role', 'dialog');\n modalFrame.setAttribute('tabindex', '-1');\n modalFrame.setAttribute('aria-modal', 'true');\n return modalFrame;\n}\nvar parcelCount = 0;\n/**\n * Mounts the named modal into the specified DOM element\n */ function renderModalIntoDOM(_0, _1) {\n return _async_to_generator(function(domElement, modalName) {\n var additionalProps, modalRegistration, parcel, load, lifecycle, id;\n var _arguments = arguments;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n additionalProps = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};\n modalRegistration = (0,_openmrs_esm_extensions__rspack_import_1.getModalRegistration)(modalName);\n parcel = null;\n if (!domElement) return [\n 3,\n 3\n ];\n if (!modalRegistration) {\n throw Error(\"No modal named '\".concat(modalName, \"' has been registered.\"));\n }\n load = modalRegistration.load;\n return [\n 4,\n load()\n ];\n case 1:\n lifecycle = _state.sent();\n id = parcelCount++;\n return [\n 4,\n (0,_openmrs_esm_extensions__rspack_import_1.renderParcel)(_object_spread_props(_object_spread({}, lifecycle), {\n name: \"\".concat(modalName, \"-\").concat(id)\n }), _object_spread_props(_object_spread({}, additionalProps), {\n domElement: domElement\n }))\n ];\n case 2:\n parcel = _state.sent();\n return [\n 3,\n 4\n ];\n case 3:\n (0,_openmrs_esm_error_handling__rspack_import_2.reportError)(\"Failed to launch modal. Please notify your administrator. Modal name: \".concat(modalName));\n _state.label = 4;\n case 4:\n return [\n 2,\n parcel\n ];\n }\n });\n }).apply(this, arguments);\n}\nvar original = window.getComputedStyle(document.body).overflow;\nfunction handleModalStateUpdate(param) {\n var modalStack = param.modalStack, modalContainer = param.modalContainer;\n if (!modalContainer) {\n return;\n }\n if (modalStack.length) {\n // ensure the container is visible\n if (!modalContainer.style.visibility) {\n addEventListener('keydown', handleEscKey);\n document.body.style.overflow = 'hidden';\n modalContainer.style.visibility = 'unset';\n }\n modalStack.forEach(function(instance, index) {\n switch(instance.state){\n case 'NEW':\n {\n var _ref;\n var _instance_props;\n var modalFrame = createModalFrame({\n size: (_ref = (_instance_props = instance.props) === null || _instance_props === void 0 ? void 0 : _instance_props.size) !== null && _ref !== void 0 ? _ref : 'md'\n });\n instance.container = modalFrame;\n renderModalIntoDOM(modalFrame, instance.modalName, instance.props).then(function(parcel) {\n instance.parcel = parcel;\n instance.state = 'MOUNTED';\n modalContainer.prepend(modalFrame);\n modalFrame.style.visibility = 'unset';\n });\n break;\n }\n case 'MOUNTED':\n if (instance.container) {\n instance.container.style.visibility = index ? 'hidden' : 'unset';\n }\n break;\n case 'TO_BE_DELETED':\n var _instance_parcel_unmount, _instance_parcel, _instance_container;\n instance.onClose();\n (_instance_parcel = instance.parcel) === null || _instance_parcel === void 0 ? void 0 : (_instance_parcel_unmount = _instance_parcel.unmount) === null || _instance_parcel_unmount === void 0 ? void 0 : _instance_parcel_unmount.call(_instance_parcel);\n (_instance_container = instance.container) === null || _instance_container === void 0 ? void 0 : _instance_container.remove();\n setTimeout(function() {\n modalStore.setState({\n modalContainer: modalContainer,\n modalStack: modalStack.filter(function(x) {\n return x !== instance;\n })\n });\n }, 0);\n break;\n }\n });\n } else {\n modalContainer.style.removeProperty('visibility');\n document.body.style.overflow = original;\n removeEventListener('keydown', handleEscKey);\n }\n}\nfunction openInstance(instance) {\n var state = modalStore.getState();\n var modalStack = [\n instance\n ].concat(_to_consumable_array(state.modalStack));\n modalStore.setState(_object_spread_props(_object_spread({}, state), {\n modalStack: modalStack\n }));\n}\nfunction closeInstance(instance) {\n var state = modalStore.getState();\n var modalStack = state.modalStack.map(function(x) {\n return x === instance ? _object_spread_props(_object_spread({}, x), {\n state: 'TO_BE_DELETED'\n }) : x;\n });\n modalStore.setState(_object_spread_props(_object_spread({}, state), {\n modalStack: modalStack\n }));\n}\nfunction closeHighestInstance() {\n var state = modalStore.getState();\n var _state_modalStack = _sliced_to_array(state.modalStack, 1), top = _state_modalStack[0];\n if (top) {\n closeInstance(top);\n }\n}\nfunction handleEscKey(e) {\n if (e.key === 'Escape') {\n closeHighestInstance();\n }\n}\n/**\n * @internal\n * Sets up the modals system. Should be called in the app shell during initialization.\n */ function setupModals(modalContainer) {\n modalStore.subscribe(handleModalStateUpdate);\n modalStore.setState(_object_spread_props(_object_spread({}, modalStore.getState()), {\n modalContainer: modalContainer\n }));\n}\n/**\n * Shows a modal dialog.\n *\n * The modal must have been registered by name. This should be done in the `routes.json` file of the\n * app that defines the modal. Note that both the `<ModalHeader>` and `<ModalBody>` should be at the\n * top level of the modal component (wrapped in a React.Fragment), or else the content of the modal\n * body might not vertical-scroll properly.\n *\n * @param modalName The name of the modal to show.\n * @param props The optional props to provide to the modal.\n * @param onClose The optional callback to call when the modal is closed.\n * @returns The dispose function to force closing the modal dialog.\n */ function showModal(modalName) {\n var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, onClose = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() {};\n var close = function close() {\n var state = modalStore.getState();\n var item = state.modalStack.find(function(m) {\n return m.onClose === onClose;\n });\n if (item) {\n closeInstance(item);\n }\n };\n var modalRegistration = (0,_openmrs_esm_extensions__rspack_import_1.getModalRegistration)(modalName);\n if (!modalRegistration) {\n (0,_openmrs_esm_error_handling__rspack_import_2.reportError)('Failed to launch modal. Please notify your administrator. Modal name: \"'.concat(modalName, '\"'));\n } else {\n openInstance({\n state: 'NEW',\n onClose: onClose,\n modalName: modalName,\n props: _object_spread({\n close: close\n }, props)\n });\n }\n return close;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC9tb2RhbHMvaW5kZXguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9kaXN0L21vZGFscy9pbmRleC5qcz9hZTI0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBVSSAqLyBpbXBvcnQgeyBjcmVhdGVHbG9iYWxTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmltcG9ydCB7IGdldE1vZGFsUmVnaXN0cmF0aW9uLCByZW5kZXJQYXJjZWwgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IHJlcG9ydEVycm9yIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1lcnJvci1oYW5kbGluZ1wiO1xuY29uc3QgbW9kYWxTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlKCdtb2RhbFN0YXRlJywge1xuICAgIG1vZGFsQ29udGFpbmVyOiBudWxsLFxuICAgIG1vZGFsU3RhY2s6IFtdXG59KTtcbmZ1bmN0aW9uIGNyZWF0ZU1vZGFsRnJhbWUoeyBzaXplIH0pIHtcbiAgICBjb25zdCBtb2RhbEZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbW9kYWxGcmFtZS5jbGFzc05hbWUgPSBgY2RzLS1tb2RhbC1jb250YWluZXIgY2RzLS1tb2RhbC1jb250YWluZXItLSR7c2l6ZX1gO1xuICAgIG1vZGFsRnJhbWUuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2RpYWxvZycpO1xuICAgIG1vZGFsRnJhbWUuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgIG1vZGFsRnJhbWUuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgJ3RydWUnKTtcbiAgICByZXR1cm4gbW9kYWxGcmFtZTtcbn1cbmxldCBwYXJjZWxDb3VudCA9IDA7XG4vKipcbiAqIE1vdW50cyB0aGUgbmFtZWQgbW9kYWwgaW50byB0aGUgc3BlY2lmaWVkIERPTSBlbGVtZW50XG4gKi8gYXN5bmMgZnVuY3Rpb24gcmVuZGVyTW9kYWxJbnRvRE9NKGRvbUVsZW1lbnQsIG1vZGFsTmFtZSwgYWRkaXRpb25hbFByb3BzID0ge30pIHtcbiAgICBjb25zdCBtb2RhbFJlZ2lzdHJhdGlvbiA9IGdldE1vZGFsUmVnaXN0cmF0aW9uKG1vZGFsTmFtZSk7XG4gICAgbGV0IHBhcmNlbCA9IG51bGw7XG4gICAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCFtb2RhbFJlZ2lzdHJhdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYE5vIG1vZGFsIG5hbWVkICcke21vZGFsTmFtZX0nIGhhcyBiZWVuIHJlZ2lzdGVyZWQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBsb2FkIH0gPSBtb2RhbFJlZ2lzdHJhdGlvbjtcbiAgICAgICAgY29uc3QgbGlmZWN5Y2xlID0gYXdhaXQgbG9hZCgpO1xuICAgICAgICBjb25zdCBpZCA9IHBhcmNlbENvdW50Kys7XG4gICAgICAgIHBhcmNlbCA9IGF3YWl0IHJlbmRlclBhcmNlbCh7XG4gICAgICAgICAgICAuLi5saWZlY3ljbGUsXG4gICAgICAgICAgICBuYW1lOiBgJHttb2RhbE5hbWV9LSR7aWR9YFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICAuLi5hZGRpdGlvbmFsUHJvcHMsXG4gICAgICAgICAgICBkb21FbGVtZW50XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcG9ydEVycm9yKGBGYWlsZWQgdG8gbGF1bmNoIG1vZGFsLiBQbGVhc2Ugbm90aWZ5IHlvdXIgYWRtaW5pc3RyYXRvci4gTW9kYWwgbmFtZTogJHttb2RhbE5hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJjZWw7XG59XG5jb25zdCBvcmlnaW5hbCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm92ZXJmbG93O1xuZnVuY3Rpb24gaGFuZGxlTW9kYWxTdGF0ZVVwZGF0ZSh7IG1vZGFsU3RhY2ssIG1vZGFsQ29udGFpbmVyIH0pIHtcbiAgICBpZiAoIW1vZGFsQ29udGFpbmVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG1vZGFsU3RhY2subGVuZ3RoKSB7XG4gICAgICAgIC8vIGVuc3VyZSB0aGUgY29udGFpbmVyIGlzIHZpc2libGVcbiAgICAgICAgaWYgKCFtb2RhbENvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5KSB7XG4gICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlRXNjS2V5KTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIG1vZGFsQ29udGFpbmVyLnN0eWxlLnZpc2liaWxpdHkgPSAndW5zZXQnO1xuICAgICAgICB9XG4gICAgICAgIG1vZGFsU3RhY2suZm9yRWFjaCgoaW5zdGFuY2UsIGluZGV4KT0+e1xuICAgICAgICAgICAgc3dpdGNoKGluc3RhbmNlLnN0YXRlKXtcbiAgICAgICAgICAgICAgICBjYXNlICdORVcnOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RhbEZyYW1lID0gY3JlYXRlTW9kYWxGcmFtZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogaW5zdGFuY2UucHJvcHM/LnNpemUgPz8gJ21kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb250YWluZXIgPSBtb2RhbEZyYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyTW9kYWxJbnRvRE9NKG1vZGFsRnJhbWUsIGluc3RhbmNlLm1vZGFsTmFtZSwgaW5zdGFuY2UucHJvcHMpLnRoZW4oKHBhcmNlbCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYXJjZWwgPSBwYXJjZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RhdGUgPSAnTU9VTlRFRCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxDb250YWluZXIucHJlcGVuZChtb2RhbEZyYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbEZyYW1lLnN0eWxlLnZpc2liaWxpdHkgPSAndW5zZXQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ01PVU5URUQnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eSA9IGluZGV4ID8gJ2hpZGRlbicgOiAndW5zZXQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1RPX0JFX0RFTEVURUQnOlxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5vbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnBhcmNlbD8udW5tb3VudD8uKCk7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbnRhaW5lcj8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsQ29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsU3RhY2s6IG1vZGFsU3RhY2suZmlsdGVyKCh4KT0+eCAhPT0gaW5zdGFuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBtb2RhbENvbnRhaW5lci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgndmlzaWJpbGl0eScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gb3JpZ2luYWw7XG4gICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVFc2NLZXkpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG9wZW5JbnN0YW5jZShpbnN0YW5jZSkge1xuICAgIGNvbnN0IHN0YXRlID0gbW9kYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IG1vZGFsU3RhY2sgPSBbXG4gICAgICAgIGluc3RhbmNlLFxuICAgICAgICAuLi5zdGF0ZS5tb2RhbFN0YWNrXG4gICAgXTtcbiAgICBtb2RhbFN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1vZGFsU3RhY2tcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNsb3NlSW5zdGFuY2UoaW5zdGFuY2UpIHtcbiAgICBjb25zdCBzdGF0ZSA9IG1vZGFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBtb2RhbFN0YWNrID0gc3RhdGUubW9kYWxTdGFjay5tYXAoKHgpPT54ID09PSBpbnN0YW5jZSA/IHtcbiAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICBzdGF0ZTogJ1RPX0JFX0RFTEVURUQnXG4gICAgICAgIH0gOiB4KTtcbiAgICBtb2RhbFN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1vZGFsU3RhY2tcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNsb3NlSGlnaGVzdEluc3RhbmNlKCkge1xuICAgIGNvbnN0IHN0YXRlID0gbW9kYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IFt0b3BdID0gc3RhdGUubW9kYWxTdGFjaztcbiAgICBpZiAodG9wKSB7XG4gICAgICAgIGNsb3NlSW5zdGFuY2UodG9wKTtcbiAgICB9XG59XG5mdW5jdGlvbiBoYW5kbGVFc2NLZXkoZSkge1xuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgY2xvc2VIaWdoZXN0SW5zdGFuY2UoKTtcbiAgICB9XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICogU2V0cyB1cCB0aGUgbW9kYWxzIHN5c3RlbS4gU2hvdWxkIGJlIGNhbGxlZCBpbiB0aGUgYXBwIHNoZWxsIGR1cmluZyBpbml0aWFsaXphdGlvbi5cbiAqLyBleHBvcnQgZnVuY3Rpb24gc2V0dXBNb2RhbHMobW9kYWxDb250YWluZXIpIHtcbiAgICBtb2RhbFN0b3JlLnN1YnNjcmliZShoYW5kbGVNb2RhbFN0YXRlVXBkYXRlKTtcbiAgICBtb2RhbFN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgLi4ubW9kYWxTdG9yZS5nZXRTdGF0ZSgpLFxuICAgICAgICBtb2RhbENvbnRhaW5lclxuICAgIH0pO1xufVxuLyoqXG4gKiBTaG93cyBhIG1vZGFsIGRpYWxvZy5cbiAqXG4gKiBUaGUgbW9kYWwgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBieSBuYW1lLiBUaGlzIHNob3VsZCBiZSBkb25lIGluIHRoZSBgcm91dGVzLmpzb25gIGZpbGUgb2YgdGhlXG4gKiBhcHAgdGhhdCBkZWZpbmVzIHRoZSBtb2RhbC4gTm90ZSB0aGF0IGJvdGggdGhlIGA8TW9kYWxIZWFkZXI+YCBhbmQgYDxNb2RhbEJvZHk+YCBzaG91bGQgYmUgYXQgdGhlXG4gKiB0b3AgbGV2ZWwgb2YgdGhlIG1vZGFsIGNvbXBvbmVudCAod3JhcHBlZCBpbiBhIFJlYWN0LkZyYWdtZW50KSwgb3IgZWxzZSB0aGUgY29udGVudCBvZiB0aGUgbW9kYWxcbiAqIGJvZHkgbWlnaHQgbm90IHZlcnRpY2FsLXNjcm9sbCBwcm9wZXJseS5cbiAqXG4gKiBAcGFyYW0gbW9kYWxOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2RhbCB0byBzaG93LlxuICogQHBhcmFtIHByb3BzIFRoZSBvcHRpb25hbCBwcm9wcyB0byBwcm92aWRlIHRvIHRoZSBtb2RhbC5cbiAqIEBwYXJhbSBvbkNsb3NlIFRoZSBvcHRpb25hbCBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAqIEByZXR1cm5zIFRoZSBkaXNwb3NlIGZ1bmN0aW9uIHRvIGZvcmNlIGNsb3NpbmcgdGhlIG1vZGFsIGRpYWxvZy5cbiAqLyBleHBvcnQgZnVuY3Rpb24gc2hvd01vZGFsKG1vZGFsTmFtZSwgcHJvcHMgPSB7fSwgb25DbG9zZSA9ICgpPT57fSkge1xuICAgIGNvbnN0IGNsb3NlID0gKCk9PntcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBtb2RhbFN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS5tb2RhbFN0YWNrLmZpbmQoKG0pPT5tLm9uQ2xvc2UgPT09IG9uQ2xvc2UpO1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgY2xvc2VJbnN0YW5jZShpdGVtKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgbW9kYWxSZWdpc3RyYXRpb24gPSBnZXRNb2RhbFJlZ2lzdHJhdGlvbihtb2RhbE5hbWUpO1xuICAgIGlmICghbW9kYWxSZWdpc3RyYXRpb24pIHtcbiAgICAgICAgcmVwb3J0RXJyb3IoYEZhaWxlZCB0byBsYXVuY2ggbW9kYWwuIFBsZWFzZSBub3RpZnkgeW91ciBhZG1pbmlzdHJhdG9yLiBNb2RhbCBuYW1lOiBcIiR7bW9kYWxOYW1lfVwiYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgb3Blbkluc3RhbmNlKHtcbiAgICAgICAgICAgIHN0YXRlOiAnTkVXJyxcbiAgICAgICAgICAgIG9uQ2xvc2UsXG4gICAgICAgICAgICBtb2RhbE5hbWUsXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIGNsb3NlLFxuICAgICAgICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2xvc2U7XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlR2xvYmFsU3RvcmUiLCJnZXRNb2RhbFJlZ2lzdHJhdGlvbiIsInJlbmRlclBhcmNlbCIsInJlcG9ydEVycm9yIiwibW9kYWxTdG9yZSIsImNyZWF0ZU1vZGFsRnJhbWUiLCJwYXJhbSIsInNpemUiLCJtb2RhbEZyYW1lIiwiZG9jdW1lbnQiLCJwYXJjZWxDb3VudCIsInJlbmRlck1vZGFsSW50b0RPTSIsImRvbUVsZW1lbnQiLCJtb2RhbE5hbWUiLCJhZGRpdGlvbmFsUHJvcHMiLCJtb2RhbFJlZ2lzdHJhdGlvbiIsInBhcmNlbCIsImxvYWQiLCJsaWZlY3ljbGUiLCJpZCIsIkVycm9yIiwib3JpZ2luYWwiLCJ3aW5kb3ciLCJoYW5kbGVNb2RhbFN0YXRlVXBkYXRlIiwibW9kYWxTdGFjayIsIm1vZGFsQ29udGFpbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsImhhbmRsZUVzY0tleSIsImluc3RhbmNlIiwiaW5kZXgiLCJfaW5zdGFuY2VfcHJvcHMiLCJfaW5zdGFuY2VfcGFyY2VsIiwiX2luc3RhbmNlX2NvbnRhaW5lciIsInNldFRpbWVvdXQiLCJ4IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9wZW5JbnN0YW5jZSIsInN0YXRlIiwiY2xvc2VJbnN0YW5jZSIsImNsb3NlSGlnaGVzdEluc3RhbmNlIiwiX3N0YXRlX21vZGFsU3RhY2siLCJ0b3AiLCJlIiwic2V0dXBNb2RhbHMiLCJzaG93TW9kYWwiLCJwcm9wcyIsIm9uQ2xvc2UiLCJjbG9zZSIsIml0ZW0iLCJtIl0sIm1hcHBp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\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/dist/modals/index.js\n\n}");
1723
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n setupModals: () => (setupModals),\n showModal: () => (showModal)\n});\n/* import */ var _openmrs_esm_state__rspack_import_0 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/* import */ var _openmrs_esm_extensions__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _openmrs_esm_error_handling__rspack_import_2 = __webpack_require__(\"../../framework/esm-error-handling/dist/index.js\");\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(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 _async_to_generator(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 _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\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(g && (g = 0, op[0] && (_ = 0)), _)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/** @module @category UI */ \n\n\nvar modalStore = (0,_openmrs_esm_state__rspack_import_0.createGlobalStore)('modalState', {\n modalContainer: null,\n modalStack: []\n});\nfunction createModalFrame(param) {\n var size = param.size;\n var modalFrame = document.createElement('div');\n modalFrame.className = \"cds--modal-container cds--modal-container--\".concat(size);\n modalFrame.setAttribute('role', 'dialog');\n modalFrame.setAttribute('tabindex', '-1');\n modalFrame.setAttribute('aria-modal', 'true');\n return modalFrame;\n}\nvar parcelCount = 0;\n/**\n * Mounts the named modal into the specified DOM element\n */ function renderModalIntoDOM(_0, _1) {\n return _async_to_generator(function(domElement, modalName) {\n var additionalProps, modalRegistration, parcel, load, lifecycle, id;\n var _arguments = arguments;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n additionalProps = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};\n modalRegistration = (0,_openmrs_esm_extensions__rspack_import_1.getModalRegistration)(modalName);\n parcel = null;\n if (!domElement) return [\n 3,\n 3\n ];\n if (!modalRegistration) {\n throw Error(\"No modal named '\".concat(modalName, \"' has been registered.\"));\n }\n load = modalRegistration.load;\n return [\n 4,\n load()\n ];\n case 1:\n lifecycle = _state.sent();\n id = parcelCount++;\n return [\n 4,\n (0,_openmrs_esm_extensions__rspack_import_1.renderParcel)(_object_spread_props(_object_spread({}, lifecycle), {\n name: \"\".concat(modalName, \"-\").concat(id)\n }), _object_spread_props(_object_spread({}, additionalProps), {\n domElement: domElement\n }))\n ];\n case 2:\n parcel = _state.sent();\n return [\n 3,\n 4\n ];\n case 3:\n (0,_openmrs_esm_error_handling__rspack_import_2.reportError)(\"Failed to launch modal. Please notify your administrator. Modal name: \".concat(modalName));\n _state.label = 4;\n case 4:\n return [\n 2,\n parcel\n ];\n }\n });\n }).apply(this, arguments);\n}\nfunction isClosing(instance) {\n return instance.state === 'TO_BE_DELETED' || instance.state === 'DELETED';\n}\nfunction unmountModalParcel(modalName, parcel) {\n var // A failed unmount rejects `unmountPromise` as well as the promise the call returns. They are\n // separate promises, so leaving either without a handler is an unhandled rejection, but one\n // failure is worth reporting only once.\n _parcel_unmountPromise;\n if (!(parcel === null || parcel === void 0 ? void 0 : parcel.unmount)) {\n return;\n }\n (_parcel_unmountPromise = parcel.unmountPromise) === null || _parcel_unmountPromise === void 0 ? void 0 : _parcel_unmountPromise.catch(function() {});\n parcel.unmount().catch(function(err) {\n console.error(\"The modal '\".concat(modalName, \"' failed to unmount\"), err);\n });\n}\n/**\n * The modal the user is looking at: the frontmost one that isn't on its way out. Modals being torn\n * down are skipped rather than counted, since their frames are already gone — counting them would\n * leave the modal underneath hidden behind nothing until they finally left the stack.\n */ function frontmostModal(modalStack) {\n return modalStack.find(function(instance) {\n return !isClosing(instance);\n });\n}\n/**\n * Only the frontmost modal is shown; the ones it was opened over stay in the DOM behind it. Applied\n * both as the stack changes and as a frame is inserted, since a frame inserted after the last\n * change to the stack would otherwise never be told.\n */ function applyModalVisibility(instance, isFrontmost) {\n if (instance.container) {\n instance.container.style.visibility = isFrontmost ? 'unset' : 'hidden';\n }\n}\nvar original = window.getComputedStyle(document.body).overflow;\nfunction handleModalStateUpdate(param) {\n var modalStack = param.modalStack, modalContainer = param.modalContainer;\n if (!modalContainer) {\n return;\n }\n if (modalStack.length) {\n // ensure the container is visible\n if (!modalContainer.style.visibility) {\n addEventListener('keydown', handleEscKey);\n document.body.style.overflow = 'hidden';\n modalContainer.style.visibility = 'unset';\n }\n // Stable across the pass below: the only states it changes are `NEW` to `MOUNTING` and\n // `TO_BE_DELETED` to `DELETED`, neither of which moves a modal in or out of the running.\n var frontmost = frontmostModal(modalStack);\n modalStack.forEach(function(instance) {\n switch(instance.state){\n case 'NEW':\n {\n var _ref;\n var _instance_props;\n var modalFrame = createModalFrame({\n size: (_ref = (_instance_props = instance.props) === null || _instance_props === void 0 ? void 0 : _instance_props.size) !== null && _ref !== void 0 ? _ref : 'md'\n });\n instance.container = modalFrame;\n instance.state = 'MOUNTING';\n renderModalIntoDOM(modalFrame, instance.modalName, instance.props).then(function(parcel) {\n // Release the parcel if it's been closed while mounting\n if (isClosing(instance)) {\n unmountModalParcel(instance.modalName, parcel);\n return;\n }\n if (!parcel) {\n // `renderModalIntoDOM` only returns without one when it had nowhere to render it,\n // which it has already reported.\n closeInstance(instance);\n return;\n }\n instance.parcel = parcel;\n modalContainer.prepend(modalFrame);\n // The stack decides which modal is frontmost, not the DOM order this prepend just\n // established: another modal opened while this one loaded belongs on top of it.\n applyModalVisibility(instance, frontmostModal(modalStore.getState().modalStack) === instance);\n // The parcel is handed back before it has mounted, so this is where the modal is\n // really on screen.\n parcel.mountPromise.then(function() {\n if (!isClosing(instance)) {\n instance.state = 'MOUNTED';\n }\n }, function(err) {\n (0,_openmrs_esm_error_handling__rspack_import_2.reportError)(err);\n instance.parcel = null;\n closeInstance(instance);\n });\n }, function(err) {\n // Nothing is chained to this, so without a handler a modal that fails to load is\n // only an unhandled rejection — and its instance holds the overlay open over a\n // page the user can no longer reach.\n (0,_openmrs_esm_error_handling__rspack_import_2.reportError)(err);\n closeInstance(instance);\n });\n break;\n }\n // A frame is inserted as soon as the parcel exists, which is before it has mounted, so a\n // modal opened over one still mounting has to hide it just the same.\n case 'MOUNTING':\n case 'MOUNTED':\n applyModalVisibility(instance, instance === frontmost);\n break;\n case 'TO_BE_DELETED':\n var _instance_container;\n instance.state = 'DELETED';\n instance.onClose();\n unmountModalParcel(instance.modalName, instance.parcel);\n (_instance_container = instance.container) === null || _instance_container === void 0 ? void 0 : _instance_container.remove();\n setTimeout(function() {\n // Read now rather than closed over: modals opened since this was scheduled are in the\n // store's stack but not in the one this pass saw, and would be dropped with it.\n var current = modalStore.getState();\n modalStore.setState(_object_spread_props(_object_spread({}, current), {\n modalStack: current.modalStack.filter(function(x) {\n return x !== instance;\n })\n }));\n }, 0);\n break;\n }\n });\n } else {\n modalContainer.style.removeProperty('visibility');\n document.body.style.overflow = original;\n removeEventListener('keydown', handleEscKey);\n }\n}\nfunction openInstance(instance) {\n var state = modalStore.getState();\n var modalStack = [\n instance\n ].concat(_to_consumable_array(state.modalStack));\n modalStore.setState(_object_spread_props(_object_spread({}, state), {\n modalStack: modalStack\n }));\n}\nfunction closeInstance(instance) {\n if (isClosing(instance)) {\n return;\n }\n // Mutated rather than replaced by a copy as an in-flight mount will close over this property\n instance.state = 'TO_BE_DELETED';\n var state = modalStore.getState();\n modalStore.setState(_object_spread_props(_object_spread({}, state), {\n modalStack: _to_consumable_array(state.modalStack)\n }));\n}\nfunction closeHighestInstance() {\n var state = modalStore.getState();\n var _state_modalStack = _sliced_to_array(state.modalStack, 1), top = _state_modalStack[0];\n if (top) {\n closeInstance(top);\n }\n}\nfunction handleEscKey(e) {\n if (e.key === 'Escape') {\n closeHighestInstance();\n }\n}\n/**\n * @internal\n * Sets up the modals system. Should be called in the app shell during initialization.\n */ function setupModals(modalContainer) {\n modalStore.subscribe(handleModalStateUpdate);\n modalStore.setState(_object_spread_props(_object_spread({}, modalStore.getState()), {\n modalContainer: modalContainer\n }));\n}\n/**\n * Shows a modal dialog.\n *\n * The modal must have been registered by name. This should be done in the `routes.json` file of the\n * app that defines the modal. Note that both the `<ModalHeader>` and `<ModalBody>` should be at the\n * top level of the modal component (wrapped in a React.Fragment), or else the content of the modal\n * body might not vertical-scroll properly.\n *\n * @param modalName The name of the modal to show.\n * @param props The optional props to provide to the modal.\n * @param onClose The optional callback to call when the modal is closed.\n * @returns The dispose function to force closing the modal dialog.\n */ function showModal(modalName) {\n var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, onClose = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() {};\n var close = function close() {\n var state = modalStore.getState();\n var item = state.modalStack.find(function(m) {\n return m.onClose === onClose;\n });\n if (item) {\n closeInstance(item);\n }\n };\n var modalRegistration = (0,_openmrs_esm_extensions__rspack_import_1.getModalRegistration)(modalName);\n if (!modalRegistration) {\n (0,_openmrs_esm_error_handling__rspack_import_2.reportError)('Failed to launch modal. Please notify your administrator. Modal name: \"'.concat(modalName, '\"'));\n } else {\n openInstance({\n state: 'NEW',\n onClose: onClose,\n modalName: modalName,\n props: _object_spread({\n close: close\n }, props)\n });\n }\n return close;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC9tb2RhbHMvaW5kZXguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9kaXN0L21vZGFscy9pbmRleC5qcz9hZTI0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBVSSAqLyBpbXBvcnQgeyBjcmVhdGVHbG9iYWxTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmltcG9ydCB7IGdldE1vZGFsUmVnaXN0cmF0aW9uLCByZW5kZXJQYXJjZWwgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IHJlcG9ydEVycm9yIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1lcnJvci1oYW5kbGluZ1wiO1xuY29uc3QgbW9kYWxTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlKCdtb2RhbFN0YXRlJywge1xuICAgIG1vZGFsQ29udGFpbmVyOiBudWxsLFxuICAgIG1vZGFsU3RhY2s6IFtdXG59KTtcbmZ1bmN0aW9uIGNyZWF0ZU1vZGFsRnJhbWUoeyBzaXplIH0pIHtcbiAgICBjb25zdCBtb2RhbEZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbW9kYWxGcmFtZS5jbGFzc05hbWUgPSBgY2RzLS1tb2RhbC1jb250YWluZXIgY2RzLS1tb2RhbC1jb250YWluZXItLSR7c2l6ZX1gO1xuICAgIG1vZGFsRnJhbWUuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2RpYWxvZycpO1xuICAgIG1vZGFsRnJhbWUuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgIG1vZGFsRnJhbWUuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgJ3RydWUnKTtcbiAgICByZXR1cm4gbW9kYWxGcmFtZTtcbn1cbmxldCBwYXJjZWxDb3VudCA9IDA7XG4vKipcbiAqIE1vdW50cyB0aGUgbmFtZWQgbW9kYWwgaW50byB0aGUgc3BlY2lmaWVkIERPTSBlbGVtZW50XG4gKi8gYXN5bmMgZnVuY3Rpb24gcmVuZGVyTW9kYWxJbnRvRE9NKGRvbUVsZW1lbnQsIG1vZGFsTmFtZSwgYWRkaXRpb25hbFByb3BzID0ge30pIHtcbiAgICBjb25zdCBtb2RhbFJlZ2lzdHJhdGlvbiA9IGdldE1vZGFsUmVnaXN0cmF0aW9uKG1vZGFsTmFtZSk7XG4gICAgbGV0IHBhcmNlbCA9IG51bGw7XG4gICAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCFtb2RhbFJlZ2lzdHJhdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYE5vIG1vZGFsIG5hbWVkICcke21vZGFsTmFtZX0nIGhhcyBiZWVuIHJlZ2lzdGVyZWQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBsb2FkIH0gPSBtb2RhbFJlZ2lzdHJhdGlvbjtcbiAgICAgICAgY29uc3QgbGlmZWN5Y2xlID0gYXdhaXQgbG9hZCgpO1xuICAgICAgICBjb25zdCBpZCA9IHBhcmNlbENvdW50Kys7XG4gICAgICAgIHBhcmNlbCA9IGF3YWl0IHJlbmRlclBhcmNlbCh7XG4gICAgICAgICAgICAuLi5saWZlY3ljbGUsXG4gICAgICAgICAgICBuYW1lOiBgJHttb2RhbE5hbWV9LSR7aWR9YFxuICAgICAgICB9LCB7XG4gICAgICAgICAgICAuLi5hZGRpdGlvbmFsUHJvcHMsXG4gICAgICAgICAgICBkb21FbGVtZW50XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcG9ydEVycm9yKGBGYWlsZWQgdG8gbGF1bmNoIG1vZGFsLiBQbGVhc2Ugbm90aWZ5IHlvdXIgYWRtaW5pc3RyYXRvci4gTW9kYWwgbmFtZTogJHttb2RhbE5hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJjZWw7XG59XG5mdW5jdGlvbiBpc0Nsb3NpbmcoaW5zdGFuY2UpIHtcbiAgICByZXR1cm4gaW5zdGFuY2Uuc3RhdGUgPT09ICdUT19CRV9ERUxFVEVEJyB8fCBpbnN0YW5jZS5zdGF0ZSA9PT0gJ0RFTEVURUQnO1xufVxuZnVuY3Rpb24gdW5tb3VudE1vZGFsUGFyY2VsKG1vZGFsTmFtZSwgcGFyY2VsKSB7XG4gICAgaWYgKCFwYXJjZWw/LnVubW91bnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBBIGZhaWxlZCB1bm1vdW50IHJlamVjdHMgYHVubW91bnRQcm9taXNlYCBhcyB3ZWxsIGFzIHRoZSBwcm9taXNlIHRoZSBjYWxsIHJldHVybnMuIFRoZXkgYXJlXG4gICAgLy8gc2VwYXJhdGUgcHJvbWlzZXMsIHNvIGxlYXZpbmcgZWl0aGVyIHdpdGhvdXQgYSBoYW5kbGVyIGlzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24sIGJ1dCBvbmVcbiAgICAvLyBmYWlsdXJlIGlzIHdvcnRoIHJlcG9ydGluZyBvbmx5IG9uY2UuXG4gICAgcGFyY2VsLnVubW91bnRQcm9taXNlPy5jYXRjaCgoKT0+e30pO1xuICAgIHBhcmNlbC51bm1vdW50KCkuY2F0Y2goKGVycik9PntcbiAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIG1vZGFsICcke21vZGFsTmFtZX0nIGZhaWxlZCB0byB1bm1vdW50YCwgZXJyKTtcbiAgICB9KTtcbn1cbi8qKlxuICogVGhlIG1vZGFsIHRoZSB1c2VyIGlzIGxvb2tpbmcgYXQ6IHRoZSBmcm9udG1vc3Qgb25lIHRoYXQgaXNuJ3Qgb24gaXRzIHdheSBvdXQuIE1vZGFscyBiZWluZyB0b3JuXG4gKiBkb3duIGFyZSBza2lwcGVkIHJhdGhlciB0aGFuIGNvdW50ZWQsIHNpbmNlIHRoZWlyIGZyYW1lcyBhcmUgYWxyZWFkeSBnb25lIOKAlCBjb3VudGluZyB0aGVtIHdvdWxkXG4gKiBsZWF2ZSB0aGUgbW9kYWwgdW5kZXJuZWF0aCBoaWRkZW4gYmVoaW5kIG5vdGhpbmcgdW50aWwgdGhleSBmaW5hbGx5IGxlZnQgdGhlIHN0YWNrLlxuICovIGZ1bmN0aW9uIGZyb250bW9zdE1vZGFsKG1vZGFsU3RhY2spIHtcbiAgICByZXR1cm4gbW9kYWxTdGFjay5maW5kKChpbnN0YW5jZSk9PiFpc0Nsb3NpbmcoaW5zdGFuY2UpKTtcbn1cbi8qKlxuICogT25seSB0aGUgZnJvbnRtb3N0IG1vZGFsIGlzIHNob3duOyB0aGUgb25lcyBpdCB3YXMgb3BlbmVkIG92ZXIgc3RheSBpbiB0aGUgRE9NIGJlaGluZCBpdC4gQXBwbGllZFxuICogYm90aCBhcyB0aGUgc3RhY2sgY2hhbmdlcyBhbmQgYXMgYSBmcmFtZSBpcyBpbnNlcnRlZCwgc2luY2UgYSBmcmFtZSBpbnNlcnRlZCBhZnRlciB0aGUgbGFzdFxuICogY2hhbmdlIHRvIHRoZSBzdGFjayB3b3VsZCBvdGhlcndpc2UgbmV2ZXIgYmUgdG9sZC5cbiAqLyBmdW5jdGlvbiBhcHBseU1vZGFsVmlzaWJpbGl0eShpbnN0YW5jZSwgaXNGcm9udG1vc3QpIHtcbiAgICBpZiAoaW5zdGFuY2UuY29udGFpbmVyKSB7XG4gICAgICAgIGluc3RhbmNlLmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gaXNGcm9udG1vc3QgPyAndW5zZXQnIDogJ2hpZGRlbic7XG4gICAgfVxufVxuY29uc3Qgb3JpZ2luYWwgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5vdmVyZmxvdztcbmZ1bmN0aW9uIGhhbmRsZU1vZGFsU3RhdGVVcGRhdGUoeyBtb2RhbFN0YWNrLCBtb2RhbENvbnRhaW5lciB9KSB7XG4gICAgaWYgKCFtb2RhbENvbnRhaW5lcikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChtb2RhbFN0YWNrLmxlbmd0aCkge1xuICAgICAgICAvLyBlbnN1cmUgdGhlIGNvbnRhaW5lciBpcyB2aXNpYmxlXG4gICAgICAgIGlmICghbW9kYWxDb250YWluZXIuc3R5bGUudmlzaWJpbGl0eSkge1xuICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUVzY0tleSk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICBtb2RhbENvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gJ3Vuc2V0JztcbiAgICAgICAgfVxuICAgICAgICAvLyBTdGFibGUgYWNyb3NzIHRoZSBwYXNzIGJlbG93OiB0aGUgb25seSBzdGF0ZXMgaXQgY2hhbmdlcyBhcmUgYE5FV2AgdG8gYE1PVU5USU5HYCBhbmRcbiAgICAgICAgLy8gYFRPX0JFX0RFTEVURURgIHRvIGBERUxFVEVEYCwgbmVpdGhlciBvZiB3aGljaCBtb3ZlcyBhIG1vZGFsIGluIG9yIG91dCBvZiB0aGUgcnVubmluZy5cbiAgICAgICAgY29uc3QgZnJvbnRtb3N0ID0gZnJvbnRtb3N0TW9kYWwobW9kYWxTdGFjayk7XG4gICAgICAgIG1vZGFsU3RhY2suZm9yRWFjaCgoaW5zdGFuY2UpPT57XG4gICAgICAgICAgICBzd2l0Y2goaW5zdGFuY2Uuc3RhdGUpe1xuICAgICAgICAgICAgICAgIGNhc2UgJ05FVyc6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGFsRnJhbWUgPSBjcmVhdGVNb2RhbEZyYW1lKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBpbnN0YW5jZS5wcm9wcz8uc2l6ZSA/PyAnbWQnXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbnRhaW5lciA9IG1vZGFsRnJhbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdGF0ZSA9ICdNT1VOVElORyc7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJNb2RhbEludG9ET00obW9kYWxGcmFtZSwgaW5zdGFuY2UubW9kYWxOYW1lLCBpbnN0YW5jZS5wcm9wcykudGhlbigocGFyY2VsKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbGVhc2UgdGhlIHBhcmNlbCBpZiBpdCdzIGJlZW4gY2xvc2VkIHdoaWxlIG1vdW50aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2xvc2luZyhpbnN0YW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5tb3VudE1vZGFsUGFyY2VsKGluc3RhbmNlLm1vZGFsTmFtZSwgcGFyY2VsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmNlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcmVuZGVyTW9kYWxJbnRvRE9NYCBvbmx5IHJldHVybnMgd2l0aG91dCBvbmUgd2hlbiBpdCBoYWQgbm93aGVyZSB0byByZW5kZXIgaXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGl0IGhhcyBhbHJlYWR5IHJlcG9ydGVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUluc3RhbmNlKGluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5wYXJjZWwgPSBwYXJjZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxDb250YWluZXIucHJlcGVuZChtb2RhbEZyYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgc3RhY2sgZGVjaWRlcyB3aGljaCBtb2RhbCBpcyBmcm9udG1vc3QsIG5vdCB0aGUgRE9NIG9yZGVyIHRoaXMgcHJlcGVuZCBqdXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXN0YWJsaXNoZWQ6IGFub3RoZXIgbW9kYWwgb3BlbmVkIHdoaWxlIHRoaXMgb25lIGxvYWRlZCBiZWxvbmdzIG9uIHRvcCBvZiBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseU1vZGFsVmlzaWJpbGl0eShpbnN0YW5jZSwgZnJvbnRtb3N0TW9kYWwobW9kYWxTdG9yZS5nZXRTdGF0ZSgpLm1vZGFsU3RhY2spID09PSBpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBhcmNlbCBpcyBoYW5kZWQgYmFjayBiZWZvcmUgaXQgaGFzIG1vdW50ZWQsIHNvIHRoaXMgaXMgd2hlcmUgdGhlIG1vZGFsIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhbGx5IG9uIHNjcmVlbi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJjZWwubW91bnRQcm9taXNlLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Nsb3NpbmcoaW5zdGFuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdGF0ZSA9ICdNT1VOVEVEJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIChlcnIpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnBhcmNlbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlSW5zdGFuY2UoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgKGVycik9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RoaW5nIGlzIGNoYWluZWQgdG8gdGhpcywgc28gd2l0aG91dCBhIGhhbmRsZXIgYSBtb2RhbCB0aGF0IGZhaWxzIHRvIGxvYWQgaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGFuIHVuaGFuZGxlZCByZWplY3Rpb24g4oCUIGFuZCBpdHMgaW5zdGFuY2UgaG9sZHMgdGhlIG92ZXJsYXkgb3BlbiBvdmVyIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYWdlIHRoZSB1c2VyIGNhbiBubyBsb25nZXIgcmVhY2guXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUluc3RhbmNlKGluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBBIGZyYW1lIGlzIGluc2VydGVkIGFzIHNvb24gYXMgdGhlIHBhcmNlbCBleGlzdHMsIHdoaWNoIGlzIGJlZm9yZSBpdCBoYXMgbW91bnRlZCwgc28gYVxuICAgICAgICAgICAgICAgIC8vIG1vZGFsIG9wZW5lZCBvdmVyIG9uZSBzdGlsbCBtb3VudGluZyBoYXMgdG8gaGlkZSBpdCBqdXN0IHRoZSBzYW1lLlxuICAgICAgICAgICAgICAgIGNhc2UgJ01PVU5USU5HJzpcbiAgICAgICAgICAgICAgICBjYXNlICdNT1VOVEVEJzpcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlNb2RhbFZpc2liaWxpdHkoaW5zdGFuY2UsIGluc3RhbmNlID09PSBmcm9udG1vc3QpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdUT19CRV9ERUxFVEVEJzpcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RhdGUgPSAnREVMRVRFRCc7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLm9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdW5tb3VudE1vZGFsUGFyY2VsKGluc3RhbmNlLm1vZGFsTmFtZSwgaW5zdGFuY2UucGFyY2VsKTtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29udGFpbmVyPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhZCBub3cgcmF0aGVyIHRoYW4gY2xvc2VkIG92ZXI6IG1vZGFscyBvcGVuZWQgc2luY2UgdGhpcyB3YXMgc2NoZWR1bGVkIGFyZSBpbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0b3JlJ3Mgc3RhY2sgYnV0IG5vdCBpbiB0aGUgb25lIHRoaXMgcGFzcyBzYXcsIGFuZCB3b3VsZCBiZSBkcm9wcGVkIHdpdGggaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gbW9kYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFN0YWNrOiBjdXJyZW50Lm1vZGFsU3RhY2suZmlsdGVyKCh4KT0+eCAhPT0gaW5zdGFuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBtb2RhbENvbnRhaW5lci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgndmlzaWJpbGl0eScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gb3JpZ2luYWw7XG4gICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVFc2NLZXkpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG9wZW5JbnN0YW5jZShpbnN0YW5jZSkge1xuICAgIGNvbnN0IHN0YXRlID0gbW9kYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IG1vZGFsU3RhY2sgPSBbXG4gICAgICAgIGluc3RhbmNlLFxuICAgICAgICAuLi5zdGF0ZS5tb2RhbFN0YWNrXG4gICAgXTtcbiAgICBtb2RhbFN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1vZGFsU3RhY2tcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNsb3NlSW5zdGFuY2UoaW5zdGFuY2UpIHtcbiAgICBpZiAoaXNDbG9zaW5nKGluc3RhbmNlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIE11dGF0ZWQgcmF0aGVyIHRoYW4gcmVwbGFjZWQgYnkgYSBjb3B5IGFzIGFuIGluLWZsaWdodCBtb3VudCB3aWxsIGNsb3NlIG92ZXIgdGhpcyBwcm9wZXJ0eVxuICAgIGluc3RhbmNlLnN0YXRlID0gJ1RPX0JFX0RFTEVURUQnO1xuICAgIGNvbnN0IHN0YXRlID0gbW9kYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIG1vZGFsU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbW9kYWxTdGFjazogW1xuICAgICAgICAgICAgLi4uc3RhdGUubW9kYWxTdGFja1xuICAgICAgICBdXG4gICAgfSk7XG59XG5mdW5jdGlvbiBjbG9zZUhpZ2hlc3RJbnN0YW5jZSgpIHtcbiAgICBjb25zdCBzdGF0ZSA9IG1vZGFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBbdG9wXSA9IHN0YXRlLm1vZGFsU3RhY2s7XG4gICAgaWYgKHRvcCkge1xuICAgICAgICBjbG9zZUluc3RhbmNlKHRvcCk7XG4gICAgfVxufVxuZnVuY3Rpb24gaGFuZGxlRXNjS2V5KGUpIHtcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGNsb3NlSGlnaGVzdEluc3RhbmNlKCk7XG4gICAgfVxufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIFNldHMgdXAgdGhlIG1vZGFscyBzeXN0ZW0uIFNob3VsZCBiZSBjYWxsZWQgaW4gdGhlIGFwcCBzaGVsbCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHNldHVwTW9kYWxzKG1vZGFsQ29udGFpbmVyKSB7XG4gICAgbW9kYWxTdG9yZS5zdWJzY3JpYmUoaGFuZGxlTW9kYWxTdGF0ZVVwZGF0ZSk7XG4gICAgbW9kYWxTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgIC4uLm1vZGFsU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICAgICAgbW9kYWxDb250YWluZXJcbiAgICB9KTtcbn1cbi8qKlxuICogU2hvd3MgYSBtb2RhbCBkaWFsb2cuXG4gKlxuICogVGhlIG1vZGFsIG11c3QgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgYnkgbmFtZS4gVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgYHJvdXRlcy5qc29uYCBmaWxlIG9mIHRoZVxuICogYXBwIHRoYXQgZGVmaW5lcyB0aGUgbW9kYWwuIE5vdGUgdGhhdCBib3RoIHRoZSBgPE1vZGFsSGVhZGVyPmAgYW5kIGA8TW9kYWxCb2R5PmAgc2hvdWxkIGJlIGF0IHRoZVxuICogdG9wIGxldmVsIG9mIHRoZSBtb2RhbCBjb21wb25lbnQgKHdyYXBwZWQgaW4gYSBSZWFjdC5GcmFnbWVudCksIG9yIGVsc2UgdGhlIGNvbnRlbnQgb2YgdGhlIG1vZGFsXG4gKiBib2R5IG1pZ2h0IG5vdCB2ZXJ0aWNhbC1zY3JvbGwgcHJvcGVybHkuXG4gKlxuICogQHBhcmFtIG1vZGFsTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kYWwgdG8gc2hvdy5cbiAqIEBwYXJhbSBwcm9wcyBUaGUgb3B0aW9uYWwgcHJvcHMgdG8gcHJvdmlkZSB0byB0aGUgbW9kYWwuXG4gKiBAcGFyYW0gb25DbG9zZSBUaGUgb3B0aW9uYWwgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBtb2RhbCBpcyBjbG9zZWQuXG4gKiBAcmV0dXJucyBUaGUgZGlzcG9zZSBmdW5jdGlvbiB0byBmb3JjZSBjbG9zaW5nIHRoZSBtb2RhbCBkaWFsb2cuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHNob3dNb2RhbChtb2RhbE5hbWUsIHByb3BzID0ge30sIG9uQ2xvc2UgPSAoKT0+e30pIHtcbiAgICBjb25zdCBjbG9zZSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHN0YXRlID0gbW9kYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBjb25zdCBpdGVtID0gc3RhdGUubW9kYWxTdGFjay5maW5kKChtKT0+bS5vbkNsb3NlID09PSBvbkNsb3NlKTtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIGNsb3NlSW5zdGFuY2UoaXRlbSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsUmVnaXN0cmF0aW9uID0gZ2V0TW9kYWxSZWdpc3RyYXRpb24obW9kYWxOYW1lKTtcbiAgICBpZiAoIW1vZGFsUmVnaXN0cmF0aW9uKSB7XG4gICAgICAgIHJlcG9ydEVycm9yKGBGYWlsZWQgdG8gbGF1bmNoIG1vZGFsLiBQbGVhc2Ugbm90aWZ5IHlvdXIgYWRtaW5pc3RyYXRvci4gTW9kYWwgbmFtZTogXCIke21vZGFsTmFtZX1cImApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9wZW5JbnN0YW5jZSh7XG4gICAgICAgICAgICBzdGF0ZTogJ05FVycsXG4gICAgICAgICAgICBvbkNsb3NlLFxuICAgICAgICAgICAgbW9kYWxOYW1lLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICBjbG9zZSxcbiAgICAgICAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb3NlO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUdsb2JhbFN0b3JlIiwiZ2V0TW9kYWxSZWdpc3RyYXRpb24iLCJyZW5kZXJQYXJjZWwiLCJyZXBvcnRFcnJvciIsIm1vZGFsU3RvcmUiLCJjcmVhdGVNb2RhbEZyYW1lIiwicGFyYW0iLCJzaXplIiwibW9kYWxGcmFtZSIsImRvY3VtZW50IiwicGFyY2VsQ291bnQiLCJyZW5kZXJNb2RhbEludG9ET00iLCJkb21FbGVtZW50IiwibW9kYWxOYW1lIiwiYWRkaXRpb25hbFByb3BzIiwibW9kYWxSZWdpc3RyYXRpb24iLCJwYXJjZWwiLCJsb2FkIiwibGlmZWN5Y2xlIiwiaWQiLCJFcnJvciIsImlzQ2xvc2luZyIsImluc3RhbmNlIiwidW5tb3VudE1vZGFsUGFyY2VsIiwiX3BhcmNlbF91bm1vdW50UHJvbWlzZSIsImVyciIsImNvbnNvbGUiLCJmcm9udG1vc3RNb2RhbCIsIm1vZGFsU3RhY2siLCJhcHBseU1vZGFsVmlzaWJpbGl0eSIsImlzRnJvbnRtb3N0Iiwib3JpZ2luYWwiLCJ3aW5kb3ciLCJoYW5kbGVNb2RhbFN0YXRlVXBkYXRlIiwibW9kYWxDb250YWluZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiaGFuZGxlRXNjS2V5IiwiZnJvbnRtb3N0IiwiX2luc3RhbmNlX3Byb3BzIiwiY2xvc2VJbnN0YW5jZSIsIl9pbnN0YW5jZV9jb250YWluZXIiLCJzZXRUaW1lb3V0IiwiY3VycmVudCIsIngiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib3Blbkluc3RhbmNlIiwic3RhdGUiLCJjbG9zZUhpZ2hlc3RJbnN0YW5jZSIsIl9zdGF0ZV9tb2RhbFN0YWNrIiwidG9wIiwiZSIsInNldHVwTW9kYWxzIiwic2hvd01vZGFsIiwicHJvcHMiLCJvbkNsb3NlIiwiY2xvc2UiLCJpdGVtIiwibSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/dist/modals/index.js\n\n}");
1724
1724
 
1725
1725
  },
1726
1726
  "../../framework/esm-styleguide/dist/notifications/actionable-notification.component.js"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
@@ -5575,17 +5575,17 @@ eval("{__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceMappingURL=dat
5575
5575
  },
5576
5576
  "../../framework/esm-config/dist/index.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5577
5577
  "use strict";
5578
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n Type: () => (/* reexport safe */ _types_js__rspack_import_4.Type),\n clearConfigErrors: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.clearConfigErrors),\n configExtensionStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.configExtensionStore),\n configInternalStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.configInternalStore),\n defineConfigSchema: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.defineConfigSchema),\n defineExtensionConfigSchema: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.defineExtensionConfigSchema),\n getConfig: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.getConfig),\n getConfigStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getConfigStore),\n getExtensionConfig: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionConfig),\n getExtensionConfigFromExtensionSlotStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionConfigFromExtensionSlotStore),\n getExtensionConfigFromStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionConfigFromStore),\n getExtensionSlotConfig: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionSlotConfig),\n getExtensionSlotConfigFromStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionSlotConfigFromStore),\n getExtensionSlotsConfigStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionSlotsConfigStore),\n getExtensionsConfigStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionsConfigStore),\n getTranslationOverrides: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.getTranslationOverrides),\n implementerToolsConfigStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.implementerToolsConfigStore),\n inRange: () => (/* reexport safe */ _validators_validators_js__rspack_import_3.inRange),\n isUrl: () => (/* reexport safe */ _validators_validators_js__rspack_import_3.isUrl),\n isUrlWithTemplateParameters: () => (/* reexport safe */ _validators_validators_js__rspack_import_3.isUrlWithTemplateParameters),\n oneOf: () => (/* reexport safe */ _validators_validators_js__rspack_import_3.oneOf),\n processConfig: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.processConfig),\n provide: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.provide),\n registerModuleLoad: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.registerModuleLoad),\n registerModuleWithConfigSystem: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.registerModuleWithConfigSystem),\n registerTranslationNamespace: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.registerTranslationNamespace),\n resetConfigSystem: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.resetConfigSystem),\n temporaryConfigStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.temporaryConfigStore),\n validator: () => (/* reexport safe */ _validators_validator_js__rspack_import_2.validator),\n validators: () => (/* reexport safe */ _validators_validators_js__rspack_import_3.validators)\n});\n/* import */ var _module_config_module_config_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-config/dist/module-config/module-config.js\");\n/* import */ var _module_config_state_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/module-config/state.js\");\n/* import */ var _validators_validator_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-config/dist/validators/validator.js\");\n/* import */ var _validators_validators_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-config/dist/validators/validators.js\");\n/* import */ var _types_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-config/dist/types.js\");\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWNvbmZpZy9kaXN0L2luZGV4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWNvbmZpZy9kaXN0L2luZGV4LmpzPzE4Y2EiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbW9kdWxlLWNvbmZpZy9tb2R1bGUtY29uZmlnLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2R1bGUtY29uZmlnL3N0YXRlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0b3JzL3ZhbGlkYXRvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdG9ycy92YWxpZGF0b3JzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWlEO0FBQ1I7QUFDQztBQUNDO0FBQ2hCIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-config/dist/index.js\n\n}");
5578
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n Type: () => (/* reexport safe */ _types_js__rspack_import_4.Type),\n clearConfigDerivationError: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.clearConfigDerivationError),\n clearConfigErrors: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.clearConfigErrors),\n configExtensionStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.configExtensionStore),\n configInternalStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.configInternalStore),\n defineConfigSchema: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.defineConfigSchema),\n defineExtensionConfigSchema: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.defineExtensionConfigSchema),\n getConfig: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.getConfig),\n getConfigStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getConfigStore),\n getExtensionConfig: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionConfig),\n getExtensionConfigFromExtensionSlotStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionConfigFromExtensionSlotStore),\n getExtensionConfigFromStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionConfigFromStore),\n getExtensionSlotConfig: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionSlotConfig),\n getExtensionSlotConfigFromStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionSlotConfigFromStore),\n getExtensionSlotsConfigStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionSlotsConfigStore),\n getExtensionsConfigStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.getExtensionsConfigStore),\n getTranslationOverrides: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.getTranslationOverrides),\n implementerToolsConfigStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.implementerToolsConfigStore),\n inRange: () => (/* reexport safe */ _validators_validators_js__rspack_import_3.inRange),\n invalidateImplementerToolsConfig: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.invalidateImplementerToolsConfig),\n isUrl: () => (/* reexport safe */ _validators_validators_js__rspack_import_3.isUrl),\n isUrlWithTemplateParameters: () => (/* reexport safe */ _validators_validators_js__rspack_import_3.isUrlWithTemplateParameters),\n oneOf: () => (/* reexport safe */ _validators_validators_js__rspack_import_3.oneOf),\n processConfig: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.processConfig),\n provide: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.provide),\n recordConfigDerivationError: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.recordConfigDerivationError),\n registerModuleLoad: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.registerModuleLoad),\n registerModuleWithConfigSystem: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.registerModuleWithConfigSystem),\n registerTranslationNamespace: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.registerTranslationNamespace),\n resetConfigSystem: () => (/* reexport safe */ _module_config_module_config_js__rspack_import_0.resetConfigSystem),\n setImplementerToolsConfigRecomputer: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.setImplementerToolsConfigRecomputer),\n temporaryConfigStore: () => (/* reexport safe */ _module_config_state_js__rspack_import_1.temporaryConfigStore),\n validator: () => (/* reexport safe */ _validators_validator_js__rspack_import_2.validator),\n validators: () => (/* reexport safe */ _validators_validators_js__rspack_import_3.validators)\n});\n/* import */ var _module_config_module_config_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-config/dist/module-config/module-config.js\");\n/* import */ var _module_config_state_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/module-config/state.js\");\n/* import */ var _validators_validator_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-config/dist/validators/validator.js\");\n/* import */ var _validators_validators_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-config/dist/validators/validators.js\");\n/* import */ var _types_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-config/dist/types.js\");\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWNvbmZpZy9kaXN0L2luZGV4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWNvbmZpZy9kaXN0L2luZGV4LmpzPzE4Y2EiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbW9kdWxlLWNvbmZpZy9tb2R1bGUtY29uZmlnLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2R1bGUtY29uZmlnL3N0YXRlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0b3JzL3ZhbGlkYXRvci5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdG9ycy92YWxpZGF0b3JzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy5qc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFpRDtBQUNSO0FBQ0M7QUFDQztBQUNoQiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-config/dist/index.js\n\n}");
5579
5579
 
5580
5580
  },
5581
5581
  "../../framework/esm-config/dist/module-config/module-config.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5582
5582
  "use strict";
5583
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n clearConfigErrors: () => (clearConfigErrors),\n defineConfigSchema: () => (defineConfigSchema),\n defineExtensionConfigSchema: () => (defineExtensionConfigSchema),\n getConfig: () => (getConfig),\n getTranslationOverrides: () => (getTranslationOverrides),\n processConfig: () => (processConfig),\n provide: () => (provide),\n registerModuleLoad: () => (registerModuleLoad),\n registerModuleWithConfigSystem: () => (registerModuleWithConfigSystem),\n registerTranslationNamespace: () => (registerTranslationNamespace),\n resetConfigSystem: () => (resetConfigSystem)\n});\n/* import */ var lodash_es__rspack_import_4 = __webpack_require__(\"../../../node_modules/lodash-es/mergeWith.js\");\n/* import */ var lodash_es__rspack_import_5 = __webpack_require__(\"../../../node_modules/lodash-es/isEqual.js\");\n/* import */ var lodash_es__rspack_import_6 = __webpack_require__(\"../../../node_modules/lodash-es/omit.js\");\n/* import */ var lodash_es__rspack_import_7 = __webpack_require__(\"../../../node_modules/lodash-es/cloneDeep.js\");\n/* import */ var _types_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-config/dist/types.js\");\n/* import */ var _validators_type_validators_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/validators/type-validators.js\");\n/* import */ var _validators_validator_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-config/dist/validators/validator.js\");\n/* import */ var _state_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-config/dist/module-config/state.js\");\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category Config */ \n\n\n\n\n/**\n * Deep merge two objects, with right-side values taking precedence.\n * Arrays are replaced entirely (not merged by index), matching the\n * behavior of ramda's mergeDeepRight.\n */ function mergeDeepReplace(left, right) {\n return (0,lodash_es__rspack_import_4[\"default\"])({}, left, right, function(_objValue, srcValue) {\n if (Array.isArray(srcValue)) {\n return srcValue;\n }\n });\n}\n/**\n * Store setup\n *\n *\n * Set up stores and subscriptions so that inputs get processed appropriately.\n *\n * There are *input* stores and *output* stores. The *input* stores\n * are configInternalStore, temporaryConfigStore, and configExtensionStore. The\n * output stores are set in the `compute...` functions. They are the module\n * config stores, the extension slot config stores (by module), the extension\n * config stores, and the implementer tools config store.\n *\n * This code sets up the subscriptions so that when an input store changes,\n * the correct set of output stores are updated.\n *\n * All `compute...` functions except `computeExtensionConfigs` are pure\n * (or are supposed to be), other than the fact that they all `setState`\n * store values at the end. `computeExtensionConfigs` calls `getGlobalStore`,\n * which creates stores.\n */ // Store unsubscribe functions to allow cleanup (e.g., in tests or hot module reloading)\nvar configSubscriptions = [];\n/**\n * Recomputes all configuration derived stores based on current state of input stores.\n * Called whenever any input store (configInternalStore, temporaryConfigStore, configExtensionStore) changes.\n */ function recomputeAllConfigs() {\n var configState = _state_js__rspack_import_3.configInternalStore.getState();\n var tempConfigState = _state_js__rspack_import_3.temporaryConfigStore.getState();\n var extensionState = _state_js__rspack_import_3.configExtensionStore.getState();\n computeModuleConfig(configState, tempConfigState);\n computeImplementerToolsConfig(configState, tempConfigState);\n computeExtensionSlotConfigs(configState, tempConfigState);\n computeExtensionConfigs(configState, extensionState, tempConfigState);\n}\nfunction setupConfigSubscriptions() {\n // Initial computation\n recomputeAllConfigs();\n // Subscribe to all input stores with a single handler\n // This ensures we only recompute once even if multiple stores change simultaneously\n configSubscriptions.push(_state_js__rspack_import_3.configInternalStore.subscribe(recomputeAllConfigs));\n configSubscriptions.push(_state_js__rspack_import_3.temporaryConfigStore.subscribe(recomputeAllConfigs));\n configSubscriptions.push(_state_js__rspack_import_3.configExtensionStore.subscribe(recomputeAllConfigs));\n}\n// Set up subscriptions at module load time\nsetupConfigSubscriptions();\nfunction computeModuleConfig(state, tempState) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(state.schemas)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var moduleName = _step.value;\n // At this point the schema could be either just the implicit schema or the actually\n // defined schema. We run with just the implicit schema because we want to populate\n // the config store with the translation overrides as soon as possible. In fact, the\n // translation system will throw for Suspense until the translation overrides are\n // available, which as of this writing blocks the schema definition from occurring\n // for modules loaded based on their extensions.\n var moduleStore = (0,_state_js__rspack_import_3.getConfigStore)(moduleName);\n var newState = void 0;\n if (state.moduleLoaded[moduleName]) {\n var config = getConfigForModule(moduleName, state, tempState);\n newState = {\n translationOverridesLoaded: true,\n loaded: true,\n config: config\n };\n } else {\n var config1 = getConfigForModuleImplicitSchema(moduleName, state, tempState);\n newState = {\n translationOverridesLoaded: true,\n loaded: false,\n config: config1\n };\n }\n moduleStore.setState(newState);\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 computeExtensionSlotConfigs(state, tempState) {\n var slotConfigs = getExtensionSlotConfigs(state, tempState);\n var newSlotStoreEntries = Object.fromEntries(Object.entries(slotConfigs).map(function(param) {\n var _param = _sliced_to_array(param, 2), slotName = _param[0], config = _param[1];\n return [\n slotName,\n {\n loaded: true,\n config: config\n }\n ];\n }));\n var slotStore = (0,_state_js__rspack_import_3.getExtensionSlotsConfigStore)();\n var oldState = slotStore.getState();\n var newState = {\n slots: _object_spread({}, oldState.slots, newSlotStoreEntries)\n };\n if (!(0,lodash_es__rspack_import_5[\"default\"])(oldState.slots, newState.slots)) {\n slotStore.setState(newState);\n }\n}\nfunction computeImplementerToolsConfig(state, tempConfigState) {\n var oldState = _state_js__rspack_import_3.implementerToolsConfigStore.getState();\n var config = getImplementerToolsConfig(state, tempConfigState);\n var newState = {\n config: config\n };\n // Use deep equality on the actual config content, not the wrapper object\n if (!(0,lodash_es__rspack_import_5[\"default\"])(oldState.config, newState.config)) {\n _state_js__rspack_import_3.implementerToolsConfigStore.setState(newState);\n }\n}\nfunction computeExtensionConfigs(configState, extensionState, tempConfigState) {\n var configs = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n // We assume that the module schema has already been defined, since the extension\n // it contains is mounted.\n for(var _iterator = extensionState.mountedExtensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n var config = computeExtensionConfig(extension.slotModuleName, extension.extensionModuleName, extension.slotName, extension.extensionId, configState, tempConfigState);\n if (!configs[extension.slotName]) {\n configs[extension.slotName] = {};\n }\n configs[extension.slotName][extension.extensionId] = {\n config: config,\n loaded: true\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 var extensionsConfigStore = (0,_state_js__rspack_import_3.getExtensionsConfigStore)();\n var oldState = extensionsConfigStore.getState();\n var newState = {\n configs: configs\n };\n // Use deep equality to only update if configs actually changed\n if (!(0,lodash_es__rspack_import_5[\"default\"])(oldState.configs, newState.configs)) {\n extensionsConfigStore.setState(newState);\n }\n}\n/*\n * API\n *\n */ /**\n * This defines a configuration schema for a module. The schema tells the\n * configuration system how the module can be configured. It specifies\n * what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/en-US/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param moduleName Name of the module the schema is being defined for. Generally\n * should be the one in which the `defineConfigSchema` call takes place.\n * @param schema The config schema for the module\n */ function defineConfigSchema(moduleName, schema) {\n validateConfigSchema(moduleName, schema);\n var enhancedSchema = mergeDeepReplace(schema, implicitConfigSchema);\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, moduleName, enhancedSchema)),\n moduleLoaded: _object_spread_props(_object_spread({}, state.moduleLoaded), _define_property({}, moduleName, true))\n });\n });\n}\n/**\n * This alerts the configuration system that a module exists. This allows config to be\n * processed, while still allowing the extension system to know whether the module has\n * actually had its front bundle executed yet.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param moduleName\n */ function registerModuleWithConfigSystem(moduleName) {\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, moduleName, implicitConfigSchema))\n });\n });\n}\n/**\n * This alerts the configuration system that a module has been loaded.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param moduleName\n */ function registerModuleLoad(moduleName) {\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n moduleLoaded: _object_spread_props(_object_spread({}, state.moduleLoaded), _define_property({}, moduleName, true))\n });\n });\n}\n/**\n * This allows the config system to support translation overrides for namespaces that\n * do not correspond to modules.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param namespace\n */ function registerTranslationNamespace(namespace) {\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, namespace, translationOverridesSchema))\n });\n });\n}\n/**\n * This defines a configuration schema for an extension. When a schema is defined\n * for an extension, that extension will receive the configuration corresponding\n * to that schema, rather than the configuration corresponding to the module\n * in which it is defined.\n *\n * The schema tells the configuration system how the module can be configured.\n * It specifies what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/en-US/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param extensionName Name of the extension the schema is being defined for.\n * Should match the `name` of one of the `extensions` entries defined in\n * the app's `routes.json` file.\n * @param schema The config schema for the extension\n */ function defineExtensionConfigSchema(extensionName, schema) {\n validateConfigSchema(extensionName, schema);\n var enhancedSchema = mergeDeepReplace(schema, implicitConfigSchema);\n var state = _state_js__rspack_import_3.configInternalStore.getState();\n if (state.schemas[extensionName]) {\n console.error(\"Config schema for extension \".concat(extensionName, \" already exists. If there are multiple extensions with this same name, one will probably crash.\"));\n }\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, extensionName, enhancedSchema))\n });\n });\n}\n/**\n * Provides configuration values programmatically. This is an alternative to\n * providing configuration through the config-file. Configuration provided this\n * way will be merged with configuration from other sources.\n *\n * @param config A configuration object to merge into the existing configuration.\n * @param sourceName An optional name to identify the source of this configuration,\n * used for debugging purposes. Defaults to 'provided'.\n */ function provide(config) {\n var sourceName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'provided';\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n providedConfigs: _to_consumable_array(state.providedConfigs).concat([\n {\n source: sourceName,\n config: config\n }\n ])\n });\n });\n}\n/**\n * A promise-based way to access the config as soon as it is fully loaded.\n * If it is already loaded, resolves the config in its present state.\n *\n * This is a useful function if you need to get the config in the course\n * of the execution of a function.\n *\n * @param moduleName The name of the module for which to look up the config\n */ function getConfig(moduleName) {\n return new Promise(function(resolve) {\n var update = function update(state) {\n if (state.loaded && state.config) {\n var config = (0,lodash_es__rspack_import_6[\"default\"])(state.config, [\n 'Display conditions',\n 'Translation overrides'\n ]);\n resolve(config);\n if (unsubscribe) {\n unsubscribe();\n }\n }\n };\n var store = (0,_state_js__rspack_import_3.getConfigStore)(moduleName);\n update(store.getState());\n var unsubscribe = store.subscribe(update);\n });\n}\n/**\n * Retrieves translation overrides for an extension, optionally scoped to a specific\n * extension slot. When called with only a module name, retrieves module-level overrides.\n * Translation overrides allow customizing translated strings without modifying the\n * original translation files.\n *\n * @param moduleName The name of the module providing the translation context.\n * @param slotName Optional extension slot name to include slot-specific overrides.\n * @param extensionId Optional extension ID to include extension-specific overrides.\n * @returns A Promise resolving to an array of translation override objects.\n *\n * @internal\n */ function getTranslationOverrides(moduleName, slotName, extensionId) {\n var promises = [\n new Promise(function(resolve) {\n var update = function update(state) {\n if (state.translationOverridesLoaded && state.config) {\n var _state_config_Translationoverrides;\n var translationOverrides = (_state_config_Translationoverrides = state.config['Translation overrides']) !== null && _state_config_Translationoverrides !== void 0 ? _state_config_Translationoverrides : {};\n resolve(translationOverrides);\n if (unsubscribe) {\n unsubscribe();\n }\n }\n };\n var configStore = (0,_state_js__rspack_import_3.getConfigStore)(moduleName);\n update(configStore.getState());\n var unsubscribe = configStore.subscribe(update);\n })\n ];\n if (slotName && extensionId) {\n promises.push(new Promise(function(resolve) {\n var update = function update(state) {\n if (state.loaded && state.config) {\n var _state_config_Translationoverrides;\n var translationOverrides = (_state_config_Translationoverrides = state.config['Translation overrides']) !== null && _state_config_Translationoverrides !== void 0 ? _state_config_Translationoverrides : {};\n resolve(translationOverrides);\n if (unsubscribe) {\n unsubscribe();\n }\n }\n };\n var configStore = (0,_state_js__rspack_import_3.getExtensionConfig)(slotName, extensionId);\n update(configStore.getState());\n var unsubscribe = configStore.subscribe(update);\n }));\n }\n return Promise.all(promises);\n}\n/**\n * Validate and interpolate defaults for `providedConfig` according to `schema`\n *\n * @param schema a configuration schema\n * @param providedConfig an object of config values (without the top-level module name)\n * @param keyPathContext a dot-separated string which helps the user figure out where\n * the provided config came from\n * @returns The validated and processed configuration object with defaults applied.\n * @internal\n */ function processConfig(schema, providedConfig, keyPathContext) {\n validateStructure(schema, providedConfig, keyPathContext);\n var config = setDefaults(schema, providedConfig);\n runAllValidatorsInConfigTree(schema, config, keyPathContext);\n return config;\n}\n/*\n * Helper functions\n *\n */ /**\n * Returns the configuration for an extension. This configuration is specific\n * to the slot in which it is mounted, and its ID within that slot.\n *\n * The schema for that configuration is the extension schema. If no extension\n * schema has been provided, the schema used is the schema of the module in\n * which the extension is defined.\n *\n * @param slotModuleName The name of the module which defines the extension slot\n * @param extensionModuleName The name of the module which defines the extension (and therefore the config schema)\n * @param slotName The name of the extension slot where the extension is mounted\n * @param extensionId The ID of the extension in its slot\n */ function computeExtensionConfig(slotModuleName, extensionModuleName, slotName, extensionId, configState, tempConfigState) {\n var _ref;\n var _slotModuleConfig_extensionSlots_slotName_configure, _slotModuleConfig_extensionSlots_slotName, _slotModuleConfig_extensionSlots;\n var extensionName = getExtensionNameFromId(extensionId);\n var extensionConfigSchema = configState.schemas[extensionName];\n var nameOfSchemaSource = extensionConfigSchema ? extensionName : extensionModuleName;\n var providedConfigs = getProvidedConfigs(configState, tempConfigState);\n var slotModuleConfig = mergeConfigsFor(slotModuleName, providedConfigs);\n var configOverride = (_ref = slotModuleConfig === null || slotModuleConfig === void 0 ? void 0 : (_slotModuleConfig_extensionSlots = slotModuleConfig.extensionSlots) === null || _slotModuleConfig_extensionSlots === void 0 ? void 0 : (_slotModuleConfig_extensionSlots_slotName = _slotModuleConfig_extensionSlots[slotName]) === null || _slotModuleConfig_extensionSlots_slotName === void 0 ? void 0 : (_slotModuleConfig_extensionSlots_slotName_configure = _slotModuleConfig_extensionSlots_slotName.configure) === null || _slotModuleConfig_extensionSlots_slotName_configure === void 0 ? void 0 : _slotModuleConfig_extensionSlots_slotName_configure[extensionId]) !== null && _ref !== void 0 ? _ref : {};\n var extensionConfig = mergeConfigsFor(nameOfSchemaSource, providedConfigs);\n var combinedConfig = mergeConfigs([\n extensionConfig,\n configOverride\n ]);\n var schema = extensionConfigSchema !== null && extensionConfigSchema !== void 0 ? extensionConfigSchema : configState.schemas[extensionModuleName];\n validateStructure(schema, combinedConfig, nameOfSchemaSource);\n var config = setDefaults(schema, combinedConfig);\n runAllValidatorsInConfigTree(schema, config, nameOfSchemaSource);\n delete config.extensionSlots;\n return config;\n}\nfunction getImplementerToolsConfig(configState, tempConfigState) {\n var result = getSchemaWithValuesAndSources((0,lodash_es__rspack_import_7[\"default\"])(configState.schemas));\n var configsAndSources = _to_consumable_array(configState.providedConfigs.map(function(c) {\n return [\n c.config,\n c.source\n ];\n })).concat([\n [\n tempConfigState.config,\n 'temporary config'\n ]\n ]);\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = configsAndSources[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), config = _step_value[0], source = _step_value[1];\n result = mergeConfigs([\n result,\n createValuesAndSourcesTree(config, source)\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 return result;\n}\nfunction getSchemaWithValuesAndSources(schema) {\n if (schema.hasOwnProperty('_default')) {\n return _object_spread_props(_object_spread({}, schema), {\n _value: schema._default,\n _source: 'default'\n });\n } else if (isOrdinaryObject(schema)) {\n return Object.keys(schema).reduce(function(obj, key) {\n obj[key] = getSchemaWithValuesAndSources(schema[key]);\n return obj;\n }, {});\n } else {\n // at this point, the schema is bad and an error will have been logged during schema validation\n return {};\n }\n}\nfunction createValuesAndSourcesTree(config, source) {\n if (isOrdinaryObject(config)) {\n return Object.keys(config).reduce(function(obj, key) {\n obj[key] = createValuesAndSourcesTree(config[key], source);\n return obj;\n }, {});\n } else {\n return {\n _value: config,\n _source: source\n };\n }\n}\nfunction getExtensionSlotConfigs(configState, tempConfigState) {\n var allConfigs = mergeConfigs(getProvidedConfigs(configState, tempConfigState));\n var slotConfigPerModule = Object.keys(allConfigs).reduce(function(obj, key) {\n var _allConfigs_key;\n if ((_allConfigs_key = allConfigs[key]) === null || _allConfigs_key === void 0 ? void 0 : _allConfigs_key.extensionSlots) {\n var _allConfigs_key1;\n obj[key] = (_allConfigs_key1 = allConfigs[key]) === null || _allConfigs_key1 === void 0 ? void 0 : _allConfigs_key1.extensionSlots;\n }\n return obj;\n }, {});\n validateAllExtensionSlotConfigs(slotConfigPerModule);\n var slotConfigs = Object.keys(slotConfigPerModule).reduce(function(obj, key) {\n obj = _object_spread({}, obj, slotConfigPerModule[key]);\n return obj;\n }, {});\n return slotConfigs;\n}\nfunction validateAllExtensionSlotConfigs(slotConfigPerModule) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(slotConfigPerModule)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), moduleName = _step_value[0], configBySlotName = _step_value[1];\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = Object.entries(configBySlotName)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var _step_value1 = _sliced_to_array(_step1.value, 2), slotName = _step_value1[0], config = _step_value1[1];\n validateExtensionSlotConfig(config, moduleName, slotName);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\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}\nfunction validateExtensionSlotConfig(config, moduleName, slotName) {\n var keyPath = \"\".concat(moduleName, \".extensionSlots.\").concat(slotName);\n var errorPrefix = \"Extension slot config '\".concat(keyPath, \"'\");\n var invalidKeys = Object.keys(config).filter(function(k) {\n return ![\n 'add',\n 'remove',\n 'order',\n 'configure'\n ].includes(k);\n });\n if (invalidKeys.length) {\n logError(keyPath, errorPrefix + \"' contains invalid keys '\".concat(invalidKeys.join(\"', '\"), \"'\"));\n }\n if (config.add) {\n if (!Array.isArray(config.add) || !config.add.every(function(n) {\n return typeof n === 'string';\n })) {\n logError(keyPath, errorPrefix + \".add' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.remove) {\n if (!Array.isArray(config.remove) || !config.remove.every(function(n) {\n return typeof n === 'string';\n })) {\n logError(keyPath, errorPrefix + \".remove' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.order) {\n if (!Array.isArray(config.order) || !config.order.every(function(n) {\n return typeof n === 'string';\n })) {\n logError(keyPath, errorPrefix + \".order' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.configure) {\n if (!isOrdinaryObject(config.configure)) {\n logError(keyPath, errorPrefix + \".configure' is invalid. Must be an object with extension IDs for keys\");\n }\n }\n}\nfunction getProvidedConfigs(configState, tempConfigState) {\n return _to_consumable_array(configState.providedConfigs.map(function(c) {\n return c.config;\n })).concat([\n tempConfigState.config\n ]);\n}\n/**\n * Validates the config schema for a module. Since problems identified here are programming errors\n * that hopefully will be caught during development, this function logs errors to the console directly;\n * it's fine if we spam the user with these errors.\n */ function validateConfigSchema(moduleName, schema) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n var updateMessage = \"Please verify that you are running the latest version and, if so, alert the maintainer.\";\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(schema).filter(function(k) {\n return !k.startsWith('_');\n })[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var thisKeyPath = keyPath + (keyPath && '.') + key;\n var schemaPart = schema[key];\n if (thisKeyPath === 'Display conditions') {\n console.error(\"\".concat(moduleName, ' declares a configuration option called \"Display conditions\"; the \"Display conditions\" option is a reserved name. ').concat(updateMessage));\n }\n if (thisKeyPath === 'Translation overrides') {\n console.error(\"\".concat(moduleName, ' declares a configuration option called \"Translation overrides\"; the \"Translation overrides\" option is a reserved name. ').concat(updateMessage));\n }\n if (!isOrdinaryObject(schemaPart)) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage));\n continue;\n }\n if (!schemaPart.hasOwnProperty('_default')) {\n // recurse for nested config keys\n validateConfigSchema(moduleName, schemaPart, thisKeyPath);\n }\n var elements = schemaPart._elements;\n if (hasObjectSchema(elements)) {\n validateConfigSchema(moduleName, elements, thisKeyPath + '._elements');\n }\n if (schemaPart._validators) {\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = schemaPart._validators[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var _$validator = _step1.value;\n if (typeof _$validator !== 'function') {\n console.error(\"\".concat(moduleName, \" has invalid validator for key '\").concat(thisKeyPath, \"' \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: validators must be functions that return either \" + \"undefined or an error string. Received \".concat(_$validator, \".\"));\n }\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n var valueType = schemaPart._type;\n if (valueType && !Object.values(_types_js__rspack_import_0.Type).includes(valueType)) {\n console.error(\"\".concat(moduleName, \" has invalid type for key '\").concat(thisKeyPath, \"' \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: the allowed types are \".concat(Object.values(_types_js__rspack_import_0.Type).join(', '), \". \") + \"Received '\".concat(valueType, \"'\"));\n }\n if (Object.keys(schemaPart).every(function(k) {\n return [\n '_description',\n '_validators',\n '_elements',\n '_type'\n ].includes(k);\n }) && !keyPath.includes('._elements')) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: all config elements must have a default. \" + \"Received \".concat(JSON.stringify(schemaPart)));\n }\n if (elements && valueType && ![\n _types_js__rspack_import_0.Type.Array,\n _types_js__rspack_import_0.Type.Object\n ].includes(valueType)) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: the 'elements' key only works with '_type' equal to 'Array' or 'Object'. \" + \"Received \".concat(JSON.stringify(valueType)));\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}\nfunction getConfigForModule(moduleName, configState, tempConfigState) {\n var schema = configState.schemas[moduleName];\n var inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n validateStructure(schema, inputConfig, moduleName);\n var config = setDefaults(schema, inputConfig);\n runAllValidatorsInConfigTree(schema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction getConfigForModuleImplicitSchema(moduleName, configState, tempConfigState) {\n var inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n var config = setDefaults(implicitConfigSchema, inputConfig);\n runAllValidatorsInConfigTree(implicitConfigSchema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction mergeConfigsFor(moduleName, allConfigs) {\n var allConfigsForModule = allConfigs.map(function(param) {\n var c = param[moduleName];\n return c;\n }).filter(function(c) {\n return !!c;\n });\n return mergeConfigs(allConfigsForModule);\n}\nfunction mergeConfigs(configs) {\n return configs.reduce(function(acc, config) {\n return mergeDeepReplace(acc, config);\n }, {});\n}\n/**\n * Recursively check the provided config tree to make sure that all\n * of the provided properties exist in the schema, and that types are\n * correct. Does not run validators yet, since those will be run on\n * the config with the defaults filled in.\n */ function validateStructure(schema, config) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n // validate each constituent element\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n var thisKeyPath = keyPath + '.' + key;\n var schemaPart = schema[key];\n if (!schema.hasOwnProperty(key)) {\n if (!(key === 'extensionSlots' && keyPath !== '')) {\n logError(thisKeyPath, \"Unknown config key '\".concat(thisKeyPath, \"' provided. Ignoring.\"));\n }\n continue;\n }\n validateBranchStructure(schemaPart, value, thisKeyPath);\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 validateBranchStructure(schemaPart, value, keyPath) {\n checkType(keyPath, schemaPart._type, value);\n if (isOrdinaryObject(value)) {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Object) {\n // validate as freeform object\n validateFreeformObjectStructure(schemaPart, value, keyPath);\n } else if (!(schemaPart.hasOwnProperty('_default') || schemaPart.hasOwnProperty('_type'))) {\n // validate as normal nested config\n validateStructure(schemaPart, value, keyPath);\n }\n } else {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Array) {\n validateArrayStructure(schemaPart, value, keyPath);\n }\n }\n}\nfunction validateFreeformObjectStructure(freeformObjectSchema, config, keyPath) {\n if (freeformObjectSchema._elements) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n validateBranchStructure(freeformObjectSchema._elements, value, \"\".concat(keyPath, \".\").concat(key));\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 }\n}\nfunction validateArrayStructure(arraySchema, value, keyPath) {\n var validatedAsArray = checkType(keyPath, _types_js__rspack_import_0.Type.Array, value);\n if (!validatedAsArray) {\n return;\n }\n // if there is an array element object schema, verify that elements match it\n if (hasObjectSchema(arraySchema._elements)) {\n for(var i = 0; i < value.length; i++){\n validateBranchStructure(arraySchema._elements, value[i], \"\".concat(keyPath, \"[\").concat(i, \"]\"));\n }\n }\n for(var i1 = 0; i1 < value.length; i1++){\n var _arraySchema__elements;\n checkType(\"\".concat(keyPath, \"[\").concat(i1, \"]\"), (_arraySchema__elements = arraySchema._elements) === null || _arraySchema__elements === void 0 ? void 0 : _arraySchema__elements._type, value[i1]);\n }\n}\n/**\n * Run all the validators in the config tree. This should be run\n * on the config object after it has been filled in with all the defaults, since\n * higher-level validators may refer to default values.\n */ function runAllValidatorsInConfigTree(schema, config) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n // If `!schema`, there should have been a structural validation error printed already.\n if (schema) {\n if (config !== schema._default) {\n runValidators(keyPath, schema._validators, config);\n }\n if (isOrdinaryObject(config)) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n var thisKeyPath = keyPath + '.' + key;\n var schemaPart = schema[key];\n if (schema._type === _types_js__rspack_import_0.Type.Object && schema._elements) {\n runAllValidatorsInConfigTree(schema._elements, value, thisKeyPath);\n } else {\n runAllValidatorsInConfigTree(schemaPart, value, thisKeyPath);\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 } else if (Array.isArray(config) && schema._elements) {\n for(var i = 0; i < config.length; i++){\n runAllValidatorsInConfigTree(schema._elements, config[i], \"\".concat(keyPath, \"[\").concat(i, \"]\"));\n }\n }\n }\n}\n/**\n * Run type validation for the value, logging any errors.\n * @returns true if validation passes, false otherwise\n */ function checkType(keyPath, _type, value) {\n if (_type) {\n var _$validator = {\n Array: _validators_type_validators_js__rspack_import_1.isArray,\n Boolean: _validators_type_validators_js__rspack_import_1.isBoolean,\n ConceptUuid: _validators_type_validators_js__rspack_import_1.isUuid,\n Number: _validators_type_validators_js__rspack_import_1.isNumber,\n Object: _validators_type_validators_js__rspack_import_1.isObject,\n String: _validators_type_validators_js__rspack_import_1.isString,\n UUID: _validators_type_validators_js__rspack_import_1.isUuid,\n PersonAttributeTypeUuid: _validators_type_validators_js__rspack_import_1.isUuid,\n PatientIdentifierTypeUuid: _validators_type_validators_js__rspack_import_1.isUuid\n };\n return runValidators(keyPath, [\n _$validator[_type]\n ], value);\n }\n return true;\n}\n/**\n * Runs validators, logging errors.\n * @returns true if all pass, false otherwise.\n */ function runValidators(keyPath, validators, value) {\n var returnValue = true;\n if (validators) {\n try {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = validators[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _$validator = _step.value;\n var validatorResult = _$validator(value);\n if (typeof validatorResult === 'string') {\n var message = (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === 'object' ? \"Invalid configuration for \".concat(keyPath, \": \").concat(validatorResult) : \"Invalid configuration value \".concat(value, \" for \").concat(keyPath, \": \").concat(validatorResult);\n logError(keyPath, message);\n returnValue = false;\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 } catch (e) {\n console.error('Skipping invalid validator at \"'.concat(keyPath, '\". Encountered error\\n\t').concat(e));\n }\n }\n return returnValue;\n}\n// Recursively fill in the config with values from the schema.\nvar setDefaults = function setDefaults1(schema, inputConfig) {\n var config = structuredClone(inputConfig);\n if (!schema) {\n return config;\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n var _loop = function() {\n var key = _step.value;\n var configPart = config[key];\n var schemaPart = schema[key];\n // The `schemaPart &&` clause of this `if` statement will only fail\n // if the schema is very invalid. It is there to prevent the app from\n // crashing completely, though it will produce unexpected behavior.\n // If this happens, there should be legible errors in the console from\n // the schema validator.\n if (schemaPart && (schemaPart.hasOwnProperty('_type') || schemaPart.hasOwnProperty('_default'))) {\n // We assume that schemaPart defines a config value, since it has\n // a property `_type` or `_default`.\n if (!config.hasOwnProperty(key)) {\n config[key] = schemaPart['_default'];\n }\n // We also check if it is an object or array with object elements, in which case we recurse\n var elements = schemaPart._elements;\n if (configPart && hasObjectSchema(elements)) {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Array && Array.isArray(configPart)) {\n var configWithDefaults = configPart.map(function(conf) {\n return setDefaults(elements, conf);\n });\n config[key] = configWithDefaults;\n } else if (schemaPart._type === _types_js__rspack_import_0.Type.Object) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(configPart)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator.next()).done); _iteratorNormalCompletion = true){\n var objectKey = _step1.value;\n configPart[objectKey] = setDefaults(elements, configPart[objectKey]);\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 }\n }\n } else if (isOrdinaryObject(schemaPart)) {\n // Since schemaPart has no property \"_type\", if it's an ordinary object\n // (unlike, importantly, the validators array), we assume it is a parent config property.\n // We recurse to config[key] and schema[key]. Default config[key] to {}.\n var selectedConfigPart = configPart !== null && configPart !== void 0 ? configPart : {};\n // There will have been a validation error already if configPart is not a plain object.\n if (isOrdinaryObject(selectedConfigPart)) {\n config[key] = setDefaults(schemaPart, selectedConfigPart);\n }\n }\n };\n for(var _iterator = Object.keys(schema)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();\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 config;\n};\nfunction hasObjectSchema(elementsSchema) {\n return !!elementsSchema && Object.keys(elementsSchema).filter(function(e) {\n return ![\n '_default',\n '_validators'\n ].includes(e);\n }).length > 0;\n}\nfunction isOrdinaryObject(value) {\n return (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === 'object' && !Array.isArray(value) && value !== null;\n}\n/** Keep track of which validation errors we have displayed. Each one should only be displayed once. */ var displayedValidationMessages = new Set();\nfunction logError(keyPath, message) {\n var key = \"\".concat(keyPath, \":::\").concat(message);\n // technically, this should not be possible, but because of how things wind-up transpiled, this isn't impossible\n if (!displayedValidationMessages) {\n displayedValidationMessages = new Set();\n }\n if (!displayedValidationMessages.has(key)) {\n console.error(message);\n displayedValidationMessages.add(key);\n }\n}\n/**\n * Normally, configuration errors are only displayed once. This function clears the list of\n * displayed errors, so that they will be displayed again.\n *\n * @internal\n */ function clearConfigErrors(keyPath) {\n if (keyPath) {\n displayedValidationMessages.forEach(function(key) {\n if (key.startsWith(keyPath)) {\n displayedValidationMessages.delete(key);\n }\n });\n } else {\n displayedValidationMessages.clear();\n }\n}\n/**\n * Cleans up all config store subscriptions and re-establishes them. This is primarily\n * useful for testing, where subscriptions set up at module load time need to be cleared\n * between tests to prevent infinite update loops. After clearing, subscriptions are\n * re-established so the config system continues to work normally.\n *\n * @internal\n */ function resetConfigSystem() {\n configSubscriptions.forEach(function(unsubscribe) {\n return unsubscribe();\n });\n configSubscriptions.length = 0;\n setupConfigSubscriptions();\n}\n/**\n * Copied over from esm-extensions. It rightly belongs to that module, but esm-config\n * cannot depend on esm-extensions.\n */ function getExtensionNameFromId(extensionId) {\n var _extensionId_split = _sliced_to_array(extensionId.split('#'), 1), extensionName = _extensionId_split[0];\n return extensionName;\n}\n/**\n * The translation overrides schema is used in the implicit schema given to every module;\n * plus any additional translation namespaces (at time of writing, this is just 'core').\n */ var translationOverridesSchema = {\n 'Translation overrides': {\n _description: 'Per-language overrides for frontend translations should be keyed by language code and each language dictionary contains the translation key and the display value',\n _type: _types_js__rspack_import_0.Type.Object,\n _default: {},\n _validators: [\n (0,_validators_validator_js__rspack_import_2.validator)(function(o) {\n return Object.keys(o).every(function(k) {\n return /^[a-z]{2,3}(-[A-Z]{2,3})?$/.test(k);\n });\n }, function(o) {\n var badKeys = Object.keys(o).filter(function(k) {\n return !/^[a-z]{2,3}(-[A-Z]{2,3})?$/.test(k);\n });\n return \"The 'Translation overrides' object should have language codes for keys. Language codes must be in the form of a two-to-three letter language code optionally followed by a hyphen and a two-to-three letter country code. The following keys do not conform: \".concat(badKeys.join(', '), \".\");\n })\n ]\n }\n};\n/**\n * The implicitConfigSchema is implicitly included in every configuration schema\n */ var implicitConfigSchema = _object_spread({\n 'Display conditions': {\n privileges: {\n _description: 'The privilege(s) the user must have to use this extension',\n _type: _types_js__rspack_import_0.Type.Array,\n _default: []\n },\n expression: {\n _description: 'The expression that determines whether the extension is displayed',\n _type: _types_js__rspack_import_0.Type.String,\n _default: undefined\n }\n }\n}, translationOverridesSchema);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWNvbmZpZy9kaXN0L21vZHVsZS1jb25maWcvbW9kdWxlLWNvbmZpZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1jb25maWcvZGlzdC9tb2R1bGUtY29uZmlnL21vZHVsZS1jb25maWcuanM/YzNhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQ29uZmlnICovIGltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCwgbWVyZ2VXaXRoLCBvbWl0IGFzIGxvZGFzaE9taXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBpc0FycmF5LCBpc0Jvb2xlYW4sIGlzVXVpZCwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gXCIuLi92YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9ycy5qc1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4uL3ZhbGlkYXRvcnMvdmFsaWRhdG9yLmpzXCI7XG5pbXBvcnQgeyBjb25maWdFeHRlbnNpb25TdG9yZSwgY29uZmlnSW50ZXJuYWxTdG9yZSwgZ2V0Q29uZmlnU3RvcmUsIGdldEV4dGVuc2lvbkNvbmZpZywgZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSwgZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLCBpbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUsIHRlbXBvcmFyeUNvbmZpZ1N0b3JlIH0gZnJvbSBcIi4vc3RhdGUuanNcIjtcbi8qKlxuICogRGVlcCBtZXJnZSB0d28gb2JqZWN0cywgd2l0aCByaWdodC1zaWRlIHZhbHVlcyB0YWtpbmcgcHJlY2VkZW5jZS5cbiAqIEFycmF5cyBhcmUgcmVwbGFjZWQgZW50aXJlbHkgKG5vdCBtZXJnZWQgYnkgaW5kZXgpLCBtYXRjaGluZyB0aGVcbiAqIGJlaGF2aW9yIG9mIHJhbWRhJ3MgbWVyZ2VEZWVwUmlnaHQuXG4gKi8gZnVuY3Rpb24gbWVyZ2VEZWVwUmVwbGFjZShsZWZ0LCByaWdodCkge1xuICAgIHJldHVybiBtZXJnZVdpdGgoe30sIGxlZnQsIHJpZ2h0LCAoX29ialZhbHVlLCBzcmNWYWx1ZSk9PntcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3JjVmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogU3RvcmUgc2V0dXBcbiAqXG4gKlxuICogU2V0IHVwIHN0b3JlcyBhbmQgc3Vic2NyaXB0aW9ucyBzbyB0aGF0IGlucHV0cyBnZXQgcHJvY2Vzc2VkIGFwcHJvcHJpYXRlbHkuXG4gKlxuICogVGhlcmUgYXJlICppbnB1dCogc3RvcmVzIGFuZCAqb3V0cHV0KiBzdG9yZXMuIFRoZSAqaW5wdXQqIHN0b3Jlc1xuICogYXJlIGNvbmZpZ0ludGVybmFsU3RvcmUsIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLCBhbmQgY29uZmlnRXh0ZW5zaW9uU3RvcmUuIFRoZVxuICogb3V0cHV0IHN0b3JlcyBhcmUgc2V0IGluIHRoZSBgY29tcHV0ZS4uLmAgZnVuY3Rpb25zLiBUaGV5IGFyZSB0aGUgbW9kdWxlXG4gKiBjb25maWcgc3RvcmVzLCB0aGUgZXh0ZW5zaW9uIHNsb3QgY29uZmlnIHN0b3JlcyAoYnkgbW9kdWxlKSwgdGhlIGV4dGVuc2lvblxuICogY29uZmlnIHN0b3JlcywgYW5kIHRoZSBpbXBsZW1lbnRlciB0b29scyBjb25maWcgc3RvcmUuXG4gKlxuICogVGhpcyBjb2RlIHNldHMgdXAgdGhlIHN1YnNjcmlwdGlvbnMgc28gdGhhdCB3aGVuIGFuIGlucHV0IHN0b3JlIGNoYW5nZXMsXG4gKiB0aGUgY29ycmVjdCBzZXQgb2Ygb3V0cHV0IHN0b3JlcyBhcmUgdXBkYXRlZC5cbiAqXG4gKiBBbGwgYGNvbXB1dGUuLi5gIGZ1bmN0aW9ucyBleGNlcHQgYGNvbXB1dGVFeHRlbnNpb25Db25maWdzYCBhcmUgcHVyZVxuICogKG9yIGFyZSBzdXBwb3NlZCB0byBiZSksIG90aGVyIHRoYW4gdGhlIGZhY3QgdGhhdCB0aGV5IGFsbCBgc2V0U3RhdGVgXG4gKiBzdG9yZSB2YWx1ZXMgYXQgdGhlIGVuZC4gYGNvbXB1dGVFeHRlbnNpb25Db25maWdzYCBjYWxscyBgZ2V0R2xvYmFsU3RvcmVgLFxuICogd2hpY2ggY3JlYXRlcyBzdG9yZXMuXG4gKi8gLy8gU3RvcmUgdW5zdWJzY3JpYmUgZnVuY3Rpb25zIHRvIGFsbG93IGNsZWFudXAgKGUuZy4sIGluIHRlc3RzIG9yIGhvdCBtb2R1bGUgcmVsb2FkaW5nKVxuY29uc3QgY29uZmlnU3Vic2NyaXB0aW9ucyA9IFtdO1xuLyoqXG4gKiBSZWNvbXB1dGVzIGFsbCBjb25maWd1cmF0aW9uIGRlcml2ZWQgc3RvcmVzIGJhc2VkIG9uIGN1cnJlbnQgc3RhdGUgb2YgaW5wdXQgc3RvcmVzLlxuICogQ2FsbGVkIHdoZW5ldmVyIGFueSBpbnB1dCBzdG9yZSAoY29uZmlnSW50ZXJuYWxTdG9yZSwgdGVtcG9yYXJ5Q29uZmlnU3RvcmUsIGNvbmZpZ0V4dGVuc2lvblN0b3JlKSBjaGFuZ2VzLlxuICovIGZ1bmN0aW9uIHJlY29tcHV0ZUFsbENvbmZpZ3MoKSB7XG4gICAgY29uc3QgY29uZmlnU3RhdGUgPSBjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3QgdGVtcENvbmZpZ1N0YXRlID0gdGVtcG9yYXJ5Q29uZmlnU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBleHRlbnNpb25TdGF0ZSA9IGNvbmZpZ0V4dGVuc2lvblN0b3JlLmdldFN0YXRlKCk7XG4gICAgY29tcHV0ZU1vZHVsZUNvbmZpZyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKTtcbiAgICBjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKTtcbiAgICBjb21wdXRlRXh0ZW5zaW9uU2xvdENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSk7XG4gICAgY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MoY29uZmlnU3RhdGUsIGV4dGVuc2lvblN0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpO1xufVxuZnVuY3Rpb24gc2V0dXBDb25maWdTdWJzY3JpcHRpb25zKCkge1xuICAgIC8vIEluaXRpYWwgY29tcHV0YXRpb25cbiAgICByZWNvbXB1dGVBbGxDb25maWdzKCk7XG4gICAgLy8gU3Vic2NyaWJlIHRvIGFsbCBpbnB1dCBzdG9yZXMgd2l0aCBhIHNpbmdsZSBoYW5kbGVyXG4gICAgLy8gVGhpcyBlbnN1cmVzIHdlIG9ubHkgcmVjb21wdXRlIG9uY2UgZXZlbiBpZiBtdWx0aXBsZSBzdG9yZXMgY2hhbmdlIHNpbXVsdGFuZW91c2x5XG4gICAgY29uZmlnU3Vic2NyaXB0aW9ucy5wdXNoKGNvbmZpZ0ludGVybmFsU3RvcmUuc3Vic2NyaWJlKHJlY29tcHV0ZUFsbENvbmZpZ3MpKTtcbiAgICBjb25maWdTdWJzY3JpcHRpb25zLnB1c2godGVtcG9yYXJ5Q29uZmlnU3RvcmUuc3Vic2NyaWJlKHJlY29tcHV0ZUFsbENvbmZpZ3MpKTtcbiAgICBjb25maWdTdWJzY3JpcHRpb25zLnB1c2goY29uZmlnRXh0ZW5zaW9uU3RvcmUuc3Vic2NyaWJlKHJlY29tcHV0ZUFsbENvbmZpZ3MpKTtcbn1cbi8vIFNldCB1cCBzdWJzY3JpcHRpb25zIGF0IG1vZHVsZSBsb2FkIHRpbWVcbnNldHVwQ29uZmlnU3Vic2NyaXB0aW9ucygpO1xuZnVuY3Rpb24gY29tcHV0ZU1vZHVsZUNvbmZpZyhzdGF0ZSwgdGVtcFN0YXRlKSB7XG4gICAgZm9yIChsZXQgbW9kdWxlTmFtZSBvZiBPYmplY3Qua2V5cyhzdGF0ZS5zY2hlbWFzKSl7XG4gICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHNjaGVtYSBjb3VsZCBiZSBlaXRoZXIganVzdCB0aGUgaW1wbGljaXQgc2NoZW1hIG9yIHRoZSBhY3R1YWxseVxuICAgICAgICAvLyBkZWZpbmVkIHNjaGVtYS4gV2UgcnVuIHdpdGgganVzdCB0aGUgaW1wbGljaXQgc2NoZW1hIGJlY2F1c2Ugd2Ugd2FudCB0byBwb3B1bGF0ZVxuICAgICAgICAvLyB0aGUgY29uZmlnIHN0b3JlIHdpdGggdGhlIHRyYW5zbGF0aW9uIG92ZXJyaWRlcyBhcyBzb29uIGFzIHBvc3NpYmxlLiBJbiBmYWN0LCB0aGVcbiAgICAgICAgLy8gdHJhbnNsYXRpb24gc3lzdGVtIHdpbGwgdGhyb3cgZm9yIFN1c3BlbnNlIHVudGlsIHRoZSB0cmFuc2xhdGlvbiBvdmVycmlkZXMgYXJlXG4gICAgICAgIC8vIGF2YWlsYWJsZSwgd2hpY2ggYXMgb2YgdGhpcyB3cml0aW5nIGJsb2NrcyB0aGUgc2NoZW1hIGRlZmluaXRpb24gZnJvbSBvY2N1cnJpbmdcbiAgICAgICAgLy8gZm9yIG1vZHVsZXMgbG9hZGVkIGJhc2VkIG9uIHRoZWlyIGV4dGVuc2lvbnMuXG4gICAgICAgIGNvbnN0IG1vZHVsZVN0b3JlID0gZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZSk7XG4gICAgICAgIGxldCBuZXdTdGF0ZTtcbiAgICAgICAgaWYgKHN0YXRlLm1vZHVsZUxvYWRlZFttb2R1bGVOYW1lXSkge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRm9yTW9kdWxlKG1vZHVsZU5hbWUsIHN0YXRlLCB0ZW1wU3RhdGUpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PdmVycmlkZXNMb2FkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zvck1vZHVsZUltcGxpY2l0U2NoZW1hKG1vZHVsZU5hbWUsIHN0YXRlLCB0ZW1wU3RhdGUpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PdmVycmlkZXNMb2FkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgbG9hZGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjb25maWdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgbW9kdWxlU3RvcmUuc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNvbXB1dGVFeHRlbnNpb25TbG90Q29uZmlncyhzdGF0ZSwgdGVtcFN0YXRlKSB7XG4gICAgY29uc3Qgc2xvdENvbmZpZ3MgPSBnZXRFeHRlbnNpb25TbG90Q29uZmlncyhzdGF0ZSwgdGVtcFN0YXRlKTtcbiAgICBjb25zdCBuZXdTbG90U3RvcmVFbnRyaWVzID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHNsb3RDb25maWdzKS5tYXAoKFtzbG90TmFtZSwgY29uZmlnXSk9PltcbiAgICAgICAgICAgIHNsb3ROYW1lLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb25maWdcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSkpO1xuICAgIGNvbnN0IHNsb3RTdG9yZSA9IGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUoKTtcbiAgICBjb25zdCBvbGRTdGF0ZSA9IHNsb3RTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBzbG90czoge1xuICAgICAgICAgICAgLi4ub2xkU3RhdGUuc2xvdHMsXG4gICAgICAgICAgICAuLi5uZXdTbG90U3RvcmVFbnRyaWVzXG4gICAgICAgIH1cbiAgICB9O1xuICAgIGlmICghaXNFcXVhbChvbGRTdGF0ZS5zbG90cywgbmV3U3RhdGUuc2xvdHMpKSB7XG4gICAgICAgIHNsb3RTdG9yZS5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gY29tcHV0ZUltcGxlbWVudGVyVG9vbHNDb25maWcoc3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IG9sZFN0YXRlID0gaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0SW1wbGVtZW50ZXJUb29sc0NvbmZpZyhzdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgY29uZmlnXG4gICAgfTtcbiAgICAvLyBVc2UgZGVlcCBlcXVhbGl0eSBvbiB0aGUgYWN0dWFsIGNvbmZpZyBjb250ZW50LCBub3QgdGhlIHdyYXBwZXIgb2JqZWN0XG4gICAgaWYgKCFpc0VxdWFsKG9sZFN0YXRlLmNvbmZpZywgbmV3U3RhdGUuY29uZmlnKSkge1xuICAgICAgICBpbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUuc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNvbXB1dGVFeHRlbnNpb25Db25maWdzKGNvbmZpZ1N0YXRlLCBleHRlbnNpb25TdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSB7XG4gICAgY29uc3QgY29uZmlncyA9IHt9O1xuICAgIC8vIFdlIGFzc3VtZSB0aGF0IHRoZSBtb2R1bGUgc2NoZW1hIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCwgc2luY2UgdGhlIGV4dGVuc2lvblxuICAgIC8vIGl0IGNvbnRhaW5zIGlzIG1vdW50ZWQuXG4gICAgZm9yIChsZXQgZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblN0YXRlLm1vdW50ZWRFeHRlbnNpb25zKXtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY29tcHV0ZUV4dGVuc2lvbkNvbmZpZyhleHRlbnNpb24uc2xvdE1vZHVsZU5hbWUsIGV4dGVuc2lvbi5leHRlbnNpb25Nb2R1bGVOYW1lLCBleHRlbnNpb24uc2xvdE5hbWUsIGV4dGVuc2lvbi5leHRlbnNpb25JZCwgY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSk7XG4gICAgICAgIGlmICghY29uZmlnc1tleHRlbnNpb24uc2xvdE5hbWVdKSB7XG4gICAgICAgICAgICBjb25maWdzW2V4dGVuc2lvbi5zbG90TmFtZV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25maWdzW2V4dGVuc2lvbi5zbG90TmFtZV1bZXh0ZW5zaW9uLmV4dGVuc2lvbklkXSA9IHtcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGxvYWRlZDogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBleHRlbnNpb25zQ29uZmlnU3RvcmUgPSBnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUoKTtcbiAgICBjb25zdCBvbGRTdGF0ZSA9IGV4dGVuc2lvbnNDb25maWdTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBjb25maWdzXG4gICAgfTtcbiAgICAvLyBVc2UgZGVlcCBlcXVhbGl0eSB0byBvbmx5IHVwZGF0ZSBpZiBjb25maWdzIGFjdHVhbGx5IGNoYW5nZWRcbiAgICBpZiAoIWlzRXF1YWwob2xkU3RhdGUuY29uZmlncywgbmV3U3RhdGUuY29uZmlncykpIHtcbiAgICAgICAgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICB9XG59XG4vKlxuICogQVBJXG4gKlxuICovIC8qKlxuICogVGhpcyBkZWZpbmVzIGEgY29uZmlndXJhdGlvbiBzY2hlbWEgZm9yIGEgbW9kdWxlLiBUaGUgc2NoZW1hIHRlbGxzIHRoZVxuICogY29uZmlndXJhdGlvbiBzeXN0ZW0gaG93IHRoZSBtb2R1bGUgY2FuIGJlIGNvbmZpZ3VyZWQuIEl0IHNwZWNpZmllc1xuICogd2hhdCBtYWtlcyBjb25maWd1cmF0aW9uIHZhbGlkIG9yIGludmFsaWQuXG4gKlxuICogU2VlIFtDb25maWd1cmF0aW9uIFN5c3RlbV0oaHR0cHM6Ly9vMy1kb2NzLm9wZW5tcnMub3JnL2VuLVVTL2RvY3MvY29uZmlndXJhdGlvbi1zeXN0ZW0pXG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkZWZpbmluZyBhIGNvbmZpZyBzY2hlbWEuXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgTmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBzY2hlbWEgaXMgYmVpbmcgZGVmaW5lZCBmb3IuIEdlbmVyYWxseVxuICogICBzaG91bGQgYmUgdGhlIG9uZSBpbiB3aGljaCB0aGUgYGRlZmluZUNvbmZpZ1NjaGVtYWAgY2FsbCB0YWtlcyBwbGFjZS5cbiAqIEBwYXJhbSBzY2hlbWEgVGhlIGNvbmZpZyBzY2hlbWEgZm9yIHRoZSBtb2R1bGVcbiAqLyBleHBvcnQgZnVuY3Rpb24gZGVmaW5lQ29uZmlnU2NoZW1hKG1vZHVsZU5hbWUsIHNjaGVtYSkge1xuICAgIHZhbGlkYXRlQ29uZmlnU2NoZW1hKG1vZHVsZU5hbWUsIHNjaGVtYSk7XG4gICAgY29uc3QgZW5oYW5jZWRTY2hlbWEgPSBtZXJnZURlZXBSZXBsYWNlKHNjaGVtYSwgaW1wbGljaXRDb25maWdTY2hlbWEpO1xuICAgIGNvbmZpZ0ludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgc2NoZW1hczoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNjaGVtYXMsXG4gICAgICAgICAgICAgICAgW21vZHVsZU5hbWVdOiBlbmhhbmNlZFNjaGVtYVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vZHVsZUxvYWRlZDoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLm1vZHVsZUxvYWRlZCxcbiAgICAgICAgICAgICAgICBbbW9kdWxlTmFtZV06IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xufVxuLyoqXG4gKiBUaGlzIGFsZXJ0cyB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0gdGhhdCBhIG1vZHVsZSBleGlzdHMuIFRoaXMgYWxsb3dzIGNvbmZpZyB0byBiZVxuICogcHJvY2Vzc2VkLCB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUgZXh0ZW5zaW9uIHN5c3RlbSB0byBrbm93IHdoZXRoZXIgdGhlIG1vZHVsZSBoYXNcbiAqIGFjdHVhbGx5IGhhZCBpdHMgZnJvbnQgYnVuZGxlIGV4ZWN1dGVkIHlldC5cbiAqXG4gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gZXNtLWFwcC1zaGVsbC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBtb2R1bGVOYW1lXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTW9kdWxlV2l0aENvbmZpZ1N5c3RlbShtb2R1bGVOYW1lKSB7XG4gICAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBzY2hlbWFzOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUuc2NoZW1hcyxcbiAgICAgICAgICAgICAgICBbbW9kdWxlTmFtZV06IGltcGxpY2l0Q29uZmlnU2NoZW1hXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbn1cbi8qKlxuICogVGhpcyBhbGVydHMgdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtIHRoYXQgYSBtb2R1bGUgaGFzIGJlZW4gbG9hZGVkLlxuICpcbiAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBlc20tYXBwLXNoZWxsLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIG1vZHVsZU5hbWVcbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGVMb2FkKG1vZHVsZU5hbWUpIHtcbiAgICBjb25maWdJbnRlcm5hbFN0b3JlLnNldFN0YXRlKChzdGF0ZSk9Pih7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIG1vZHVsZUxvYWRlZDoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLm1vZHVsZUxvYWRlZCxcbiAgICAgICAgICAgICAgICBbbW9kdWxlTmFtZV06IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xufVxuLyoqXG4gKiBUaGlzIGFsbG93cyB0aGUgY29uZmlnIHN5c3RlbSB0byBzdXBwb3J0IHRyYW5zbGF0aW9uIG92ZXJyaWRlcyBmb3IgbmFtZXNwYWNlcyB0aGF0XG4gKiBkbyBub3QgY29ycmVzcG9uZCB0byBtb2R1bGVzLlxuICpcbiAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBlc20tYXBwLXNoZWxsLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIG5hbWVzcGFjZVxuICovIGV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclRyYW5zbGF0aW9uTmFtZXNwYWNlKG5hbWVzcGFjZSkge1xuICAgIGNvbmZpZ0ludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgc2NoZW1hczoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNjaGVtYXMsXG4gICAgICAgICAgICAgICAgW25hbWVzcGFjZV06IHRyYW5zbGF0aW9uT3ZlcnJpZGVzU2NoZW1hXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbn1cbi8qKlxuICogVGhpcyBkZWZpbmVzIGEgY29uZmlndXJhdGlvbiBzY2hlbWEgZm9yIGFuIGV4dGVuc2lvbi4gV2hlbiBhIHNjaGVtYSBpcyBkZWZpbmVkXG4gKiBmb3IgYW4gZXh0ZW5zaW9uLCB0aGF0IGV4dGVuc2lvbiB3aWxsIHJlY2VpdmUgdGhlIGNvbmZpZ3VyYXRpb24gY29ycmVzcG9uZGluZ1xuICogdG8gdGhhdCBzY2hlbWEsIHJhdGhlciB0aGFuIHRoZSBjb25maWd1cmF0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1vZHVsZVxuICogaW4gd2hpY2ggaXQgaXMgZGVmaW5lZC5cbiAqXG4gKiBUaGUgc2NoZW1hIHRlbGxzIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbSBob3cgdGhlIG1vZHVsZSBjYW4gYmUgY29uZmlndXJlZC5cbiAqIEl0IHNwZWNpZmllcyB3aGF0IG1ha2VzIGNvbmZpZ3VyYXRpb24gdmFsaWQgb3IgaW52YWxpZC5cbiAqXG4gKiBTZWUgW0NvbmZpZ3VyYXRpb24gU3lzdGVtXShodHRwczovL28zLWRvY3Mub3Blbm1ycy5vcmcvZW4tVVMvZG9jcy9jb25maWd1cmF0aW9uLXN5c3RlbSlcbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGRlZmluaW5nIGEgY29uZmlnIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gZXh0ZW5zaW9uTmFtZSBOYW1lIG9mIHRoZSBleHRlbnNpb24gdGhlIHNjaGVtYSBpcyBiZWluZyBkZWZpbmVkIGZvci5cbiAqICAgU2hvdWxkIG1hdGNoIHRoZSBgbmFtZWAgb2Ygb25lIG9mIHRoZSBgZXh0ZW5zaW9uc2AgZW50cmllcyBkZWZpbmVkIGluXG4gKiAgIHRoZSBhcHAncyBgcm91dGVzLmpzb25gIGZpbGUuXG4gKiBAcGFyYW0gc2NoZW1hIFRoZSBjb25maWcgc2NoZW1hIGZvciB0aGUgZXh0ZW5zaW9uXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUV4dGVuc2lvbkNvbmZpZ1NjaGVtYShleHRlbnNpb25OYW1lLCBzY2hlbWEpIHtcbiAgICB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShleHRlbnNpb25OYW1lLCBzY2hlbWEpO1xuICAgIGNvbnN0IGVuaGFuY2VkU2NoZW1hID0gbWVyZ2VEZWVwUmVwbGFjZShzY2hlbWEsIGltcGxpY2l0Q29uZmlnU2NoZW1hKTtcbiAgICBjb25zdCBzdGF0ZSA9IGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBpZiAoc3RhdGUuc2NoZW1hc1tleHRlbnNpb25OYW1lXSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDb25maWcgc2NoZW1hIGZvciBleHRlbnNpb24gJHtleHRlbnNpb25OYW1lfSBhbHJlYWR5IGV4aXN0cy4gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGV4dGVuc2lvbnMgd2l0aCB0aGlzIHNhbWUgbmFtZSwgb25lIHdpbGwgcHJvYmFibHkgY3Jhc2guYCk7XG4gICAgfVxuICAgIGNvbmZpZ0ludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgc2NoZW1hczoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNjaGVtYXMsXG4gICAgICAgICAgICAgICAgW2V4dGVuc2lvbk5hbWVdOiBlbmhhbmNlZFNjaGVtYVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGNvbmZpZ3VyYXRpb24gdmFsdWVzIHByb2dyYW1tYXRpY2FsbHkuIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgdG9cbiAqIHByb3ZpZGluZyBjb25maWd1cmF0aW9uIHRocm91Z2ggdGhlIGNvbmZpZy1maWxlLiBDb25maWd1cmF0aW9uIHByb3ZpZGVkIHRoaXNcbiAqIHdheSB3aWxsIGJlIG1lcmdlZCB3aXRoIGNvbmZpZ3VyYXRpb24gZnJvbSBvdGhlciBzb3VyY2VzLlxuICpcbiAqIEBwYXJhbSBjb25maWcgQSBjb25maWd1cmF0aW9uIG9iamVjdCB0byBtZXJnZSBpbnRvIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uLlxuICogQHBhcmFtIHNvdXJjZU5hbWUgQW4gb3B0aW9uYWwgbmFtZSB0byBpZGVudGlmeSB0aGUgc291cmNlIG9mIHRoaXMgY29uZmlndXJhdGlvbixcbiAqICAgdXNlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiBEZWZhdWx0cyB0byAncHJvdmlkZWQnLlxuICovIGV4cG9ydCBmdW5jdGlvbiBwcm92aWRlKGNvbmZpZywgc291cmNlTmFtZSA9ICdwcm92aWRlZCcpIHtcbiAgICBjb25maWdJbnRlcm5hbFN0b3JlLnNldFN0YXRlKChzdGF0ZSk9Pih7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHByb3ZpZGVkQ29uZmlnczogW1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnByb3ZpZGVkQ29uZmlncyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogc291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9KSk7XG59XG4vKipcbiAqIEEgcHJvbWlzZS1iYXNlZCB3YXkgdG8gYWNjZXNzIHRoZSBjb25maWcgYXMgc29vbiBhcyBpdCBpcyBmdWxseSBsb2FkZWQuXG4gKiBJZiBpdCBpcyBhbHJlYWR5IGxvYWRlZCwgcmVzb2x2ZXMgdGhlIGNvbmZpZyBpbiBpdHMgcHJlc2VudCBzdGF0ZS5cbiAqXG4gKiBUaGlzIGlzIGEgdXNlZnVsIGZ1bmN0aW9uIGlmIHlvdSBuZWVkIHRvIGdldCB0aGUgY29uZmlnIGluIHRoZSBjb3Vyc2VcbiAqIG9mIHRoZSBleGVjdXRpb24gb2YgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIGZvciB3aGljaCB0byBsb29rIHVwIHRoZSBjb25maWdcbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnKG1vZHVsZU5hbWUpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIGNvbnN0IHN0b3JlID0gZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZSk7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZShzdGF0ZSkge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBsb2Rhc2hPbWl0KHN0YXRlLmNvbmZpZywgW1xuICAgICAgICAgICAgICAgICAgICAnRGlzcGxheSBjb25kaXRpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgJ1RyYW5zbGF0aW9uIG92ZXJyaWRlcydcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgaWYgKHVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcbiAgICAgICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUodXBkYXRlKTtcbiAgICB9KTtcbn1cbi8qKlxuICogUmV0cmlldmVzIHRyYW5zbGF0aW9uIG92ZXJyaWRlcyBmb3IgYW4gZXh0ZW5zaW9uLCBvcHRpb25hbGx5IHNjb3BlZCB0byBhIHNwZWNpZmljXG4gKiBleHRlbnNpb24gc2xvdC4gV2hlbiBjYWxsZWQgd2l0aCBvbmx5IGEgbW9kdWxlIG5hbWUsIHJldHJpZXZlcyBtb2R1bGUtbGV2ZWwgb3ZlcnJpZGVzLlxuICogVHJhbnNsYXRpb24gb3ZlcnJpZGVzIGFsbG93IGN1c3RvbWl6aW5nIHRyYW5zbGF0ZWQgc3RyaW5ncyB3aXRob3V0IG1vZGlmeWluZyB0aGVcbiAqIG9yaWdpbmFsIHRyYW5zbGF0aW9uIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBtb2R1bGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgcHJvdmlkaW5nIHRoZSB0cmFuc2xhdGlvbiBjb250ZXh0LlxuICogQHBhcmFtIHNsb3ROYW1lIE9wdGlvbmFsIGV4dGVuc2lvbiBzbG90IG5hbWUgdG8gaW5jbHVkZSBzbG90LXNwZWNpZmljIG92ZXJyaWRlcy5cbiAqIEBwYXJhbSBleHRlbnNpb25JZCBPcHRpb25hbCBleHRlbnNpb24gSUQgdG8gaW5jbHVkZSBleHRlbnNpb24tc3BlY2lmaWMgb3ZlcnJpZGVzLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byBhbiBhcnJheSBvZiB0cmFuc2xhdGlvbiBvdmVycmlkZSBvYmplY3RzLlxuICpcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2xhdGlvbk92ZXJyaWRlcyhtb2R1bGVOYW1lLCBzbG90TmFtZSwgZXh0ZW5zaW9uSWQpIHtcbiAgICBjb25zdCBwcm9taXNlcyA9IFtcbiAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgICAgICBjb25zdCBjb25maWdTdG9yZSA9IGdldENvbmZpZ1N0b3JlKG1vZHVsZU5hbWUpO1xuICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlKHN0YXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLnRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkICYmIHN0YXRlLmNvbmZpZykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbk92ZXJyaWRlcyA9IHN0YXRlLmNvbmZpZ1snVHJhbnNsYXRpb24gb3ZlcnJpZGVzJ10gPz8ge307XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJhbnNsYXRpb25PdmVycmlkZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5zdWJzY3JpYmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGUoY29uZmlnU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgICAgICAgICBjb25zdCB1bnN1YnNjcmliZSA9IGNvbmZpZ1N0b3JlLnN1YnNjcmliZSh1cGRhdGUpO1xuICAgICAgICB9KVxuICAgIF07XG4gICAgaWYgKHNsb3ROYW1lICYmIGV4dGVuc2lvbklkKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2gobmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgICAgICBjb25zdCBjb25maWdTdG9yZSA9IGdldEV4dGVuc2lvbkNvbmZpZyhzbG90TmFtZSwgZXh0ZW5zaW9uSWQpO1xuICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlKHN0YXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb25PdmVycmlkZXMgPSBzdGF0ZS5jb25maWdbJ1RyYW5zbGF0aW9uIG92ZXJyaWRlcyddID8/IHt9O1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRyYW5zbGF0aW9uT3ZlcnJpZGVzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXBkYXRlKGNvbmZpZ1N0b3JlLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgY29uc3QgdW5zdWJzY3JpYmUgPSBjb25maWdTdG9yZS5zdWJzY3JpYmUodXBkYXRlKTtcbiAgICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuLyoqXG4gKiBWYWxpZGF0ZSBhbmQgaW50ZXJwb2xhdGUgZGVmYXVsdHMgZm9yIGBwcm92aWRlZENvbmZpZ2AgYWNjb3JkaW5nIHRvIGBzY2hlbWFgXG4gKlxuICogQHBhcmFtIHNjaGVtYSAgYSBjb25maWd1cmF0aW9uIHNjaGVtYVxuICogQHBhcmFtIHByb3ZpZGVkQ29uZmlnICBhbiBvYmplY3Qgb2YgY29uZmlnIHZhbHVlcyAod2l0aG91dCB0aGUgdG9wLWxldmVsIG1vZHVsZSBuYW1lKVxuICogQHBhcmFtIGtleVBhdGhDb250ZXh0ICBhIGRvdC1zZXBhcmF0ZWQgc3RyaW5nIHdoaWNoIGhlbHBzIHRoZSB1c2VyIGZpZ3VyZSBvdXQgd2hlcmVcbiAqICAgICB0aGUgcHJvdmlkZWQgY29uZmlnIGNhbWUgZnJvbVxuICogQHJldHVybnMgVGhlIHZhbGlkYXRlZCBhbmQgcHJvY2Vzc2VkIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggZGVmYXVsdHMgYXBwbGllZC5cbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzQ29uZmlnKHNjaGVtYSwgcHJvdmlkZWRDb25maWcsIGtleVBhdGhDb250ZXh0KSB7XG4gICAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBwcm92aWRlZENvbmZpZywga2V5UGF0aENvbnRleHQpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHNldERlZmF1bHRzKHNjaGVtYSwgcHJvdmlkZWRDb25maWcpO1xuICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLCBjb25maWcsIGtleVBhdGhDb250ZXh0KTtcbiAgICByZXR1cm4gY29uZmlnO1xufVxuLypcbiAqIEhlbHBlciBmdW5jdGlvbnNcbiAqXG4gKi8gLyoqXG4gKiBSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIGZvciBhbiBleHRlbnNpb24uIFRoaXMgY29uZmlndXJhdGlvbiBpcyBzcGVjaWZpY1xuICogdG8gdGhlIHNsb3QgaW4gd2hpY2ggaXQgaXMgbW91bnRlZCwgYW5kIGl0cyBJRCB3aXRoaW4gdGhhdCBzbG90LlxuICpcbiAqIFRoZSBzY2hlbWEgZm9yIHRoYXQgY29uZmlndXJhdGlvbiBpcyB0aGUgZXh0ZW5zaW9uIHNjaGVtYS4gSWYgbm8gZXh0ZW5zaW9uXG4gKiBzY2hlbWEgaGFzIGJlZW4gcHJvdmlkZWQsIHRoZSBzY2hlbWEgdXNlZCBpcyB0aGUgc2NoZW1hIG9mIHRoZSBtb2R1bGUgaW5cbiAqIHdoaWNoIHRoZSBleHRlbnNpb24gaXMgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gc2xvdE1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB3aGljaCBkZWZpbmVzIHRoZSBleHRlbnNpb24gc2xvdFxuICogQHBhcmFtIGV4dGVuc2lvbk1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB3aGljaCBkZWZpbmVzIHRoZSBleHRlbnNpb24gKGFuZCB0aGVyZWZvcmUgdGhlIGNvbmZpZyBzY2hlbWEpXG4gKiBAcGFyYW0gc2xvdE5hbWUgVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBzbG90IHdoZXJlIHRoZSBleHRlbnNpb24gaXMgbW91bnRlZFxuICogQHBhcmFtIGV4dGVuc2lvbklkIFRoZSBJRCBvZiB0aGUgZXh0ZW5zaW9uIGluIGl0cyBzbG90XG4gKi8gZnVuY3Rpb24gY29tcHV0ZUV4dGVuc2lvbkNvbmZpZyhzbG90TW9kdWxlTmFtZSwgZXh0ZW5zaW9uTW9kdWxlTmFtZSwgc2xvdE5hbWUsIGV4dGVuc2lvbklkLCBjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uTmFtZSA9IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpO1xuICAgIGNvbnN0IGV4dGVuc2lvbkNvbmZpZ1NjaGVtYSA9IGNvbmZpZ1N0YXRlLnNjaGVtYXNbZXh0ZW5zaW9uTmFtZV07XG4gICAgY29uc3QgbmFtZU9mU2NoZW1hU291cmNlID0gZXh0ZW5zaW9uQ29uZmlnU2NoZW1hID8gZXh0ZW5zaW9uTmFtZSA6IGV4dGVuc2lvbk1vZHVsZU5hbWU7XG4gICAgY29uc3QgcHJvdmlkZWRDb25maWdzID0gZ2V0UHJvdmlkZWRDb25maWdzKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpO1xuICAgIGNvbnN0IHNsb3RNb2R1bGVDb25maWcgPSBtZXJnZUNvbmZpZ3NGb3Ioc2xvdE1vZHVsZU5hbWUsIHByb3ZpZGVkQ29uZmlncyk7XG4gICAgY29uc3QgY29uZmlnT3ZlcnJpZGUgPSBzbG90TW9kdWxlQ29uZmlnPy5leHRlbnNpb25TbG90cz8uW3Nsb3ROYW1lXT8uY29uZmlndXJlPy5bZXh0ZW5zaW9uSWRdID8/IHt9O1xuICAgIGNvbnN0IGV4dGVuc2lvbkNvbmZpZyA9IG1lcmdlQ29uZmlnc0ZvcihuYW1lT2ZTY2hlbWFTb3VyY2UsIHByb3ZpZGVkQ29uZmlncyk7XG4gICAgY29uc3QgY29tYmluZWRDb25maWcgPSBtZXJnZUNvbmZpZ3MoW1xuICAgICAgICBleHRlbnNpb25Db25maWcsXG4gICAgICAgIGNvbmZpZ092ZXJyaWRlXG4gICAgXSk7XG4gICAgY29uc3Qgc2NoZW1hID0gZXh0ZW5zaW9uQ29uZmlnU2NoZW1hID8/IGNvbmZpZ1N0YXRlLnNjaGVtYXNbZXh0ZW5zaW9uTW9kdWxlTmFtZV07XG4gICAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBjb21iaW5lZENvbmZpZywgbmFtZU9mU2NoZW1hU291cmNlKTtcbiAgICBjb25zdCBjb25maWcgPSBzZXREZWZhdWx0cyhzY2hlbWEsIGNvbWJpbmVkQ29uZmlnKTtcbiAgICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYSwgY29uZmlnLCBuYW1lT2ZTY2hlbWFTb3VyY2UpO1xuICAgIGRlbGV0ZSBjb25maWcuZXh0ZW5zaW9uU2xvdHM7XG4gICAgcmV0dXJuIGNvbmZpZztcbn1cbmZ1bmN0aW9uIGdldEltcGxlbWVudGVyVG9vbHNDb25maWcoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGxldCByZXN1bHQgPSBnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyhjbG9uZURlZXAoY29uZmlnU3RhdGUuc2NoZW1hcykpO1xuICAgIGNvbnN0IGNvbmZpZ3NBbmRTb3VyY2VzID0gW1xuICAgICAgICAuLi5jb25maWdTdGF0ZS5wcm92aWRlZENvbmZpZ3MubWFwKChjKT0+W1xuICAgICAgICAgICAgICAgIGMuY29uZmlnLFxuICAgICAgICAgICAgICAgIGMuc291cmNlXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgW1xuICAgICAgICAgICAgdGVtcENvbmZpZ1N0YXRlLmNvbmZpZyxcbiAgICAgICAgICAgICd0ZW1wb3JhcnkgY29uZmlnJ1xuICAgICAgICBdXG4gICAgXTtcbiAgICBmb3IgKGxldCBbY29uZmlnLCBzb3VyY2VdIG9mIGNvbmZpZ3NBbmRTb3VyY2VzKXtcbiAgICAgICAgcmVzdWx0ID0gbWVyZ2VDb25maWdzKFtcbiAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgIGNyZWF0ZVZhbHVlc0FuZFNvdXJjZXNUcmVlKGNvbmZpZywgc291cmNlKVxuICAgICAgICBdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldFNjaGVtYVdpdGhWYWx1ZXNBbmRTb3VyY2VzKHNjaGVtYSkge1xuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ19kZWZhdWx0JykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnNjaGVtYSxcbiAgICAgICAgICAgIF92YWx1ZTogc2NoZW1hLl9kZWZhdWx0LFxuICAgICAgICAgICAgX3NvdXJjZTogJ2RlZmF1bHQnXG4gICAgICAgIH07XG4gICAgfSBlbHNlIGlmIChpc09yZGluYXJ5T2JqZWN0KHNjaGVtYSkpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHNjaGVtYSkucmVkdWNlKChvYmosIGtleSk9PntcbiAgICAgICAgICAgIG9ialtrZXldID0gZ2V0U2NoZW1hV2l0aFZhbHVlc0FuZFNvdXJjZXMoc2NoZW1hW2tleV0pO1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfSwge30pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHRoZSBzY2hlbWEgaXMgYmFkIGFuZCBhbiBlcnJvciB3aWxsIGhhdmUgYmVlbiBsb2dnZWQgZHVyaW5nIHNjaGVtYSB2YWxpZGF0aW9uXG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG59XG5mdW5jdGlvbiBjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZShjb25maWcsIHNvdXJjZSkge1xuICAgIGlmIChpc09yZGluYXJ5T2JqZWN0KGNvbmZpZykpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbmZpZykucmVkdWNlKChvYmosIGtleSk9PntcbiAgICAgICAgICAgIG9ialtrZXldID0gY3JlYXRlVmFsdWVzQW5kU291cmNlc1RyZWUoY29uZmlnW2tleV0sIHNvdXJjZSk7XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9LCB7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIF92YWx1ZTogY29uZmlnLFxuICAgICAgICAgICAgX3NvdXJjZTogc291cmNlXG4gICAgICAgIH07XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IGFsbENvbmZpZ3MgPSBtZXJnZUNvbmZpZ3MoZ2V0UHJvdmlkZWRDb25maWdzKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpKTtcbiAgICBjb25zdCBzbG90Q29uZmlnUGVyTW9kdWxlID0gT2JqZWN0LmtleXMoYWxsQ29uZmlncykucmVkdWNlKChvYmosIGtleSk9PntcbiAgICAgICAgaWYgKGFsbENvbmZpZ3Nba2V5XT8uZXh0ZW5zaW9uU2xvdHMpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gYWxsQ29uZmlnc1trZXldPy5leHRlbnNpb25TbG90cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH0sIHt9KTtcbiAgICB2YWxpZGF0ZUFsbEV4dGVuc2lvblNsb3RDb25maWdzKHNsb3RDb25maWdQZXJNb2R1bGUpO1xuICAgIGNvbnN0IHNsb3RDb25maWdzID0gT2JqZWN0LmtleXMoc2xvdENvbmZpZ1Blck1vZHVsZSkucmVkdWNlKChvYmosIGtleSk9PntcbiAgICAgICAgb2JqID0ge1xuICAgICAgICAgICAgLi4ub2JqLFxuICAgICAgICAgICAgLi4uc2xvdENvbmZpZ1Blck1vZHVsZVtrZXldXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfSwge30pO1xuICAgIHJldHVybiBzbG90Q29uZmlncztcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlQWxsRXh0ZW5zaW9uU2xvdENvbmZpZ3Moc2xvdENvbmZpZ1Blck1vZHVsZSkge1xuICAgIGZvciAobGV0IFttb2R1bGVOYW1lLCBjb25maWdCeVNsb3ROYW1lXSBvZiBPYmplY3QuZW50cmllcyhzbG90Q29uZmlnUGVyTW9kdWxlKSl7XG4gICAgICAgIGZvciAobGV0IFtzbG90TmFtZSwgY29uZmlnXSBvZiBPYmplY3QuZW50cmllcyhjb25maWdCeVNsb3ROYW1lKSl7XG4gICAgICAgICAgICB2YWxpZGF0ZUV4dGVuc2lvblNsb3RDb25maWcoY29uZmlnLCBtb2R1bGVOYW1lLCBzbG90TmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZUV4dGVuc2lvblNsb3RDb25maWcoY29uZmlnLCBtb2R1bGVOYW1lLCBzbG90TmFtZSkge1xuICAgIGNvbnN0IGtleVBhdGggPSBgJHttb2R1bGVOYW1lfS5leHRlbnNpb25TbG90cy4ke3Nsb3ROYW1lfWA7XG4gICAgY29uc3QgZXJyb3JQcmVmaXggPSBgRXh0ZW5zaW9uIHNsb3QgY29uZmlnICcke2tleVBhdGh9J2A7XG4gICAgY29uc3QgaW52YWxpZEtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpLmZpbHRlcigoayk9PiFbXG4gICAgICAgICAgICAnYWRkJyxcbiAgICAgICAgICAgICdyZW1vdmUnLFxuICAgICAgICAgICAgJ29yZGVyJyxcbiAgICAgICAgICAgICdjb25maWd1cmUnXG4gICAgICAgIF0uaW5jbHVkZXMoaykpO1xuICAgIGlmIChpbnZhbGlkS2V5cy5sZW5ndGgpIHtcbiAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgJyBjb250YWlucyBpbnZhbGlkIGtleXMgJyR7aW52YWxpZEtleXMuam9pbihcIicsICdcIil9J2ApO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmFkZCkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLmFkZCkgfHwgIWNvbmZpZy5hZGQuZXZlcnkoKG4pPT50eXBlb2YgbiA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgICBsb2dFcnJvcihrZXlQYXRoLCBlcnJvclByZWZpeCArIGAuYWRkJyBpcyBpbnZhbGlkLiBNdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MgKGV4dGVuc2lvbiBJRHMpYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbmZpZy5yZW1vdmUpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy5yZW1vdmUpIHx8ICFjb25maWcucmVtb3ZlLmV2ZXJ5KChuKT0+dHlwZW9mIG4gPT09ICdzdHJpbmcnKSkge1xuICAgICAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLnJlbW92ZScgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzIChleHRlbnNpb24gSURzKWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb25maWcub3JkZXIpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy5vcmRlcikgfHwgIWNvbmZpZy5vcmRlci5ldmVyeSgobik9PnR5cGVvZiBuID09PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICAgIGxvZ0Vycm9yKGtleVBhdGgsIGVycm9yUHJlZml4ICsgYC5vcmRlcicgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzIChleHRlbnNpb24gSURzKWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb25maWcuY29uZmlndXJlKSB7XG4gICAgICAgIGlmICghaXNPcmRpbmFyeU9iamVjdChjb25maWcuY29uZmlndXJlKSkge1xuICAgICAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLmNvbmZpZ3VyZScgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBvYmplY3Qgd2l0aCBleHRlbnNpb24gSURzIGZvciBrZXlzYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBnZXRQcm92aWRlZENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIHJldHVybiBbXG4gICAgICAgIC4uLmNvbmZpZ1N0YXRlLnByb3ZpZGVkQ29uZmlncy5tYXAoKGMpPT5jLmNvbmZpZyksXG4gICAgICAgIHRlbXBDb25maWdTdGF0ZS5jb25maWdcbiAgICBdO1xufVxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIGNvbmZpZyBzY2hlbWEgZm9yIGEgbW9kdWxlLiBTaW5jZSBwcm9ibGVtcyBpZGVudGlmaWVkIGhlcmUgYXJlIHByb2dyYW1taW5nIGVycm9yc1xuICogdGhhdCBob3BlZnVsbHkgd2lsbCBiZSBjYXVnaHQgZHVyaW5nIGRldmVsb3BtZW50LCB0aGlzIGZ1bmN0aW9uIGxvZ3MgZXJyb3JzIHRvIHRoZSBjb25zb2xlIGRpcmVjdGx5O1xuICogaXQncyBmaW5lIGlmIHdlIHNwYW0gdGhlIHVzZXIgd2l0aCB0aGVzZSBlcnJvcnMuXG4gKi8gZnVuY3Rpb24gdmFsaWRhdGVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hLCBrZXlQYXRoID0gJycpIHtcbiAgICBjb25zdCB1cGRhdGVNZXNzYWdlID0gYFBsZWFzZSB2ZXJpZnkgdGhhdCB5b3UgYXJlIHJ1bm5pbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIGFuZCwgaWYgc28sIGFsZXJ0IHRoZSBtYWludGFpbmVyLmA7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc2NoZW1hKS5maWx0ZXIoKGspPT4hay5zdGFydHNXaXRoKCdfJykpKXtcbiAgICAgICAgY29uc3QgdGhpc0tleVBhdGggPSBrZXlQYXRoICsgKGtleVBhdGggJiYgJy4nKSArIGtleTtcbiAgICAgICAgY29uc3Qgc2NoZW1hUGFydCA9IHNjaGVtYVtrZXldO1xuICAgICAgICBpZiAodGhpc0tleVBhdGggPT09ICdEaXNwbGF5IGNvbmRpdGlvbnMnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke21vZHVsZU5hbWV9IGRlY2xhcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24gY2FsbGVkIFwiRGlzcGxheSBjb25kaXRpb25zXCI7IHRoZSBcIkRpc3BsYXkgY29uZGl0aW9uc1wiIG9wdGlvbiBpcyBhIHJlc2VydmVkIG5hbWUuICR7dXBkYXRlTWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpc0tleVBhdGggPT09ICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke21vZHVsZU5hbWV9IGRlY2xhcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24gY2FsbGVkIFwiVHJhbnNsYXRpb24gb3ZlcnJpZGVzXCI7IHRoZSBcIlRyYW5zbGF0aW9uIG92ZXJyaWRlc1wiIG9wdGlvbiBpcyBhIHJlc2VydmVkIG5hbWUuICR7dXBkYXRlTWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzT3JkaW5hcnlPYmplY3Qoc2NoZW1hUGFydCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGJhZCBjb25maWcgc2NoZW1hIGRlZmluaXRpb24gZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nLiAke3VwZGF0ZU1lc3NhZ2V9YCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNjaGVtYVBhcnQuaGFzT3duUHJvcGVydHkoJ19kZWZhdWx0JykpIHtcbiAgICAgICAgICAgIC8vIHJlY3Vyc2UgZm9yIG5lc3RlZCBjb25maWcga2V5c1xuICAgICAgICAgICAgdmFsaWRhdGVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hUGFydCwgdGhpc0tleVBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gc2NoZW1hUGFydC5fZWxlbWVudHM7XG4gICAgICAgIGlmIChoYXNPYmplY3RTY2hlbWEoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lLCBlbGVtZW50cywgdGhpc0tleVBhdGggKyAnLl9lbGVtZW50cycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWFQYXJ0Ll92YWxpZGF0b3JzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCB2YWxpZGF0b3Igb2Ygc2NoZW1hUGFydC5fdmFsaWRhdG9ycyl7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHttb2R1bGVOYW1lfSBoYXMgaW52YWxpZCB2YWxpZGF0b3IgZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nICR7dXBkYXRlTWVzc2FnZX0uYCArIGBcXG5cXG5JZiB5b3UncmUgdGhlIG1haW50YWluZXI6IHZhbGlkYXRvcnMgbXVzdCBiZSBmdW5jdGlvbnMgdGhhdCByZXR1cm4gZWl0aGVyIGAgKyBgdW5kZWZpbmVkIG9yIGFuIGVycm9yIHN0cmluZy4gUmVjZWl2ZWQgJHt2YWxpZGF0b3J9LmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSBzY2hlbWFQYXJ0Ll90eXBlO1xuICAgICAgICBpZiAodmFsdWVUeXBlICYmICFPYmplY3QudmFsdWVzKFR5cGUpLmluY2x1ZGVzKHZhbHVlVHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGludmFsaWQgdHlwZSBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScgJHt1cGRhdGVNZXNzYWdlfS5gICsgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogdGhlIGFsbG93ZWQgdHlwZXMgYXJlICR7T2JqZWN0LnZhbHVlcyhUeXBlKS5qb2luKCcsICcpfS4gYCArIGBSZWNlaXZlZCAnJHt2YWx1ZVR5cGV9J2ApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhzY2hlbWFQYXJ0KS5ldmVyeSgoayk9PltcbiAgICAgICAgICAgICAgICAnX2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAnX3ZhbGlkYXRvcnMnLFxuICAgICAgICAgICAgICAgICdfZWxlbWVudHMnLFxuICAgICAgICAgICAgICAgICdfdHlwZSdcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoaykpICYmICFrZXlQYXRoLmluY2x1ZGVzKCcuX2VsZW1lbnRzJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGJhZCBjb25maWcgc2NoZW1hIGRlZmluaXRpb24gZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nLiAke3VwZGF0ZU1lc3NhZ2V9LmAgKyBgXFxuXFxuSWYgeW91J3JlIHRoZSBtYWludGFpbmVyOiBhbGwgY29uZmlnIGVsZW1lbnRzIG11c3QgaGF2ZSBhIGRlZmF1bHQuIGAgKyBgUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShzY2hlbWFQYXJ0KX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudHMgJiYgdmFsdWVUeXBlICYmICFbXG4gICAgICAgICAgICBUeXBlLkFycmF5LFxuICAgICAgICAgICAgVHlwZS5PYmplY3RcbiAgICAgICAgXS5pbmNsdWRlcyh2YWx1ZVR5cGUpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke21vZHVsZU5hbWV9IGhhcyBiYWQgY29uZmlnIHNjaGVtYSBkZWZpbml0aW9uIGZvciBrZXkgJyR7dGhpc0tleVBhdGh9Jy4gJHt1cGRhdGVNZXNzYWdlfS5gICsgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogdGhlICdlbGVtZW50cycga2V5IG9ubHkgd29ya3Mgd2l0aCAnX3R5cGUnIGVxdWFsIHRvICdBcnJheScgb3IgJ09iamVjdCcuIGAgKyBgUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh2YWx1ZVR5cGUpfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0Q29uZmlnRm9yTW9kdWxlKG1vZHVsZU5hbWUsIGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpIHtcbiAgICBjb25zdCBzY2hlbWEgPSBjb25maWdTdGF0ZS5zY2hlbWFzW21vZHVsZU5hbWVdO1xuICAgIGNvbnN0IGlucHV0Q29uZmlnID0gbWVyZ2VDb25maWdzRm9yKG1vZHVsZU5hbWUsIGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSk7XG4gICAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBpbnB1dENvbmZpZywgbW9kdWxlTmFtZSk7XG4gICAgY29uc3QgY29uZmlnID0gc2V0RGVmYXVsdHMoc2NoZW1hLCBpbnB1dENvbmZpZyk7XG4gICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEsIGNvbmZpZywgbW9kdWxlTmFtZSk7XG4gICAgZGVsZXRlIGNvbmZpZy5leHRlbnNpb25TbG90cztcbiAgICByZXR1cm4gY29uZmlnO1xufVxuZnVuY3Rpb24gZ2V0Q29uZmlnRm9yTW9kdWxlSW1wbGljaXRTY2hlbWEobW9kdWxlTmFtZSwgY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IGlucHV0Q29uZmlnID0gbWVyZ2VDb25maWdzRm9yKG1vZHVsZU5hbWUsIGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSk7XG4gICAgY29uc3QgY29uZmlnID0gc2V0RGVmYXVsdHMoaW1wbGljaXRDb25maWdTY2hlbWEsIGlucHV0Q29uZmlnKTtcbiAgICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKGltcGxpY2l0Q29uZmlnU2NoZW1hLCBjb25maWcsIG1vZHVsZU5hbWUpO1xuICAgIGRlbGV0ZSBjb25maWcuZXh0ZW5zaW9uU2xvdHM7XG4gICAgcmV0dXJuIGNvbmZpZztcbn1cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnc0Zvcihtb2R1bGVOYW1lLCBhbGxDb25maWdzKSB7XG4gICAgY29uc3QgYWxsQ29uZmlnc0Zvck1vZHVsZSA9IGFsbENvbmZpZ3MubWFwKCh7IFttb2R1bGVOYW1lXTogYyB9KT0+YykuZmlsdGVyKChjKT0+ISFjKTtcbiAgICByZXR1cm4gbWVyZ2VDb25maWdzKGFsbENvbmZpZ3NGb3JNb2R1bGUpO1xufVxuZnVuY3Rpb24gbWVyZ2VDb25maWdzKGNvbmZpZ3MpIHtcbiAgICByZXR1cm4gY29uZmlncy5yZWR1Y2UoKGFjYywgY29uZmlnKT0+bWVyZ2VEZWVwUmVwbGFjZShhY2MsIGNvbmZpZyksIHt9KTtcbn1cbi8qKlxuICogUmVjdXJzaXZlbHkgY2hlY2sgdGhlIHByb3ZpZGVkIGNvbmZpZyB0cmVlIHRvIG1ha2Ugc3VyZSB0aGF0IGFsbFxuICogb2YgdGhlIHByb3ZpZGVkIHByb3BlcnRpZXMgZXhpc3QgaW4gdGhlIHNjaGVtYSwgYW5kIHRoYXQgdHlwZXMgYXJlXG4gKiBjb3JyZWN0LiBEb2VzIG5vdCBydW4gdmFsaWRhdG9ycyB5ZXQsIHNpbmNlIHRob3NlIHdpbGwgYmUgcnVuIG9uXG4gKiB0aGUgY29uZmlnIHdpdGggdGhlIGRlZmF1bHRzIGZpbGxlZCBpbi5cbiAqLyBmdW5jdGlvbiB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWEsIGNvbmZpZywga2V5UGF0aCA9ICcnKSB7XG4gICAgLy8gdmFsaWRhdGUgZWFjaCBjb25zdGl0dWVudCBlbGVtZW50XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnKSl7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29uZmlnW2tleV07XG4gICAgICAgIGNvbnN0IHRoaXNLZXlQYXRoID0ga2V5UGF0aCArICcuJyArIGtleTtcbiAgICAgICAgY29uc3Qgc2NoZW1hUGFydCA9IHNjaGVtYVtrZXldO1xuICAgICAgICBpZiAoIXNjaGVtYS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBpZiAoIShrZXkgPT09ICdleHRlbnNpb25TbG90cycgJiYga2V5UGF0aCAhPT0gJycpKSB7XG4gICAgICAgICAgICAgICAgbG9nRXJyb3IodGhpc0tleVBhdGgsIGBVbmtub3duIGNvbmZpZyBrZXkgJyR7dGhpc0tleVBhdGh9JyBwcm92aWRlZC4gSWdub3JpbmcuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZShzY2hlbWFQYXJ0LCB2YWx1ZSwgdGhpc0tleVBhdGgpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlQnJhbmNoU3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKSB7XG4gICAgY2hlY2tUeXBlKGtleVBhdGgsIHNjaGVtYVBhcnQuX3R5cGUsIHZhbHVlKTtcbiAgICBpZiAoaXNPcmRpbmFyeU9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKHNjaGVtYVBhcnQuX3R5cGUgPT09IFR5cGUuT2JqZWN0KSB7XG4gICAgICAgICAgICAvLyB2YWxpZGF0ZSBhcyBmcmVlZm9ybSBvYmplY3RcbiAgICAgICAgICAgIHZhbGlkYXRlRnJlZWZvcm1PYmplY3RTdHJ1Y3R1cmUoc2NoZW1hUGFydCwgdmFsdWUsIGtleVBhdGgpO1xuICAgICAgICB9IGVsc2UgaWYgKCEoc2NoZW1hUGFydC5oYXNPd25Qcm9wZXJ0eSgnX2RlZmF1bHQnKSB8fCBzY2hlbWFQYXJ0Lmhhc093blByb3BlcnR5KCdfdHlwZScpKSkge1xuICAgICAgICAgICAgLy8gdmFsaWRhdGUgYXMgbm9ybWFsIG5lc3RlZCBjb25maWdcbiAgICAgICAgICAgIHZhbGlkYXRlU3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzY2hlbWFQYXJ0Ll90eXBlID09PSBUeXBlLkFycmF5KSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUFycmF5U3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlRnJlZWZvcm1PYmplY3RTdHJ1Y3R1cmUoZnJlZWZvcm1PYmplY3RTY2hlbWEsIGNvbmZpZywga2V5UGF0aCkge1xuICAgIGlmIChmcmVlZm9ybU9iamVjdFNjaGVtYS5fZWxlbWVudHMpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnKSl7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1trZXldO1xuICAgICAgICAgICAgdmFsaWRhdGVCcmFuY2hTdHJ1Y3R1cmUoZnJlZWZvcm1PYmplY3RTY2hlbWEuX2VsZW1lbnRzLCB2YWx1ZSwgYCR7a2V5UGF0aH0uJHtrZXl9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZUFycmF5U3RydWN0dXJlKGFycmF5U2NoZW1hLCB2YWx1ZSwga2V5UGF0aCkge1xuICAgIGNvbnN0IHZhbGlkYXRlZEFzQXJyYXkgPSBjaGVja1R5cGUoa2V5UGF0aCwgVHlwZS5BcnJheSwgdmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGVkQXNBcnJheSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGlmIHRoZXJlIGlzIGFuIGFycmF5IGVsZW1lbnQgb2JqZWN0IHNjaGVtYSwgdmVyaWZ5IHRoYXQgZWxlbWVudHMgbWF0Y2ggaXRcbiAgICBpZiAoaGFzT2JqZWN0U2NoZW1hKGFycmF5U2NoZW1hLl9lbGVtZW50cykpIHtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIHZhbGlkYXRlQnJhbmNoU3RydWN0dXJlKGFycmF5U2NoZW1hLl9lbGVtZW50cywgdmFsdWVbaV0sIGAke2tleVBhdGh9WyR7aX1dYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgY2hlY2tUeXBlKGAke2tleVBhdGh9WyR7aX1dYCwgYXJyYXlTY2hlbWEuX2VsZW1lbnRzPy5fdHlwZSwgdmFsdWVbaV0pO1xuICAgIH1cbn1cbi8qKlxuICogUnVuIGFsbCB0aGUgdmFsaWRhdG9ycyBpbiB0aGUgY29uZmlnIHRyZWUuIFRoaXMgc2hvdWxkIGJlIHJ1blxuICogb24gdGhlIGNvbmZpZyBvYmplY3QgYWZ0ZXIgaXQgaGFzIGJlZW4gZmlsbGVkIGluIHdpdGggYWxsIHRoZSBkZWZhdWx0cywgc2luY2VcbiAqIGhpZ2hlci1sZXZlbCB2YWxpZGF0b3JzIG1heSByZWZlciB0byBkZWZhdWx0IHZhbHVlcy5cbiAqLyBmdW5jdGlvbiBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYSwgY29uZmlnLCBrZXlQYXRoID0gJycpIHtcbiAgICAvLyBJZiBgIXNjaGVtYWAsIHRoZXJlIHNob3VsZCBoYXZlIGJlZW4gYSBzdHJ1Y3R1cmFsIHZhbGlkYXRpb24gZXJyb3IgcHJpbnRlZCBhbHJlYWR5LlxuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPT0gc2NoZW1hLl9kZWZhdWx0KSB7XG4gICAgICAgICAgICBydW5WYWxpZGF0b3JzKGtleVBhdGgsIHNjaGVtYS5fdmFsaWRhdG9ycywgY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPcmRpbmFyeU9iamVjdChjb25maWcpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcpKXtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1trZXldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoaXNLZXlQYXRoID0ga2V5UGF0aCArICcuJyArIGtleTtcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFQYXJ0ID0gc2NoZW1hW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5fdHlwZSA9PT0gVHlwZS5PYmplY3QgJiYgc2NoZW1hLl9lbGVtZW50cykge1xuICAgICAgICAgICAgICAgICAgICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYS5fZWxlbWVudHMsIHZhbHVlLCB0aGlzS2V5UGF0aCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWFQYXJ0LCB2YWx1ZSwgdGhpc0tleVBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZykgJiYgc2NoZW1hLl9lbGVtZW50cykge1xuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGNvbmZpZy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEuX2VsZW1lbnRzLCBjb25maWdbaV0sIGAke2tleVBhdGh9WyR7aX1dYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIFJ1biB0eXBlIHZhbGlkYXRpb24gZm9yIHRoZSB2YWx1ZSwgbG9nZ2luZyBhbnkgZXJyb3JzLlxuICogQHJldHVybnMgdHJ1ZSBpZiB2YWxpZGF0aW9uIHBhc3NlcywgZmFsc2Ugb3RoZXJ3aXNlXG4gKi8gZnVuY3Rpb24gY2hlY2tUeXBlKGtleVBhdGgsIF90eXBlLCB2YWx1ZSkge1xuICAgIGlmIChfdHlwZSkge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSB7XG4gICAgICAgICAgICBBcnJheTogaXNBcnJheSxcbiAgICAgICAgICAgIEJvb2xlYW46IGlzQm9vbGVhbixcbiAgICAgICAgICAgIENvbmNlcHRVdWlkOiBpc1V1aWQsXG4gICAgICAgICAgICBOdW1iZXI6IGlzTnVtYmVyLFxuICAgICAgICAgICAgT2JqZWN0OiBpc09iamVjdCxcbiAgICAgICAgICAgIFN0cmluZzogaXNTdHJpbmcsXG4gICAgICAgICAgICBVVUlEOiBpc1V1aWQsXG4gICAgICAgICAgICBQZXJzb25BdHRyaWJ1dGVUeXBlVXVpZDogaXNVdWlkLFxuICAgICAgICAgICAgUGF0aWVudElkZW50aWZpZXJUeXBlVXVpZDogaXNVdWlkXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBydW5WYWxpZGF0b3JzKGtleVBhdGgsIFtcbiAgICAgICAgICAgIHZhbGlkYXRvcltfdHlwZV1cbiAgICAgICAgXSwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8qKlxuICogUnVucyB2YWxpZGF0b3JzLCBsb2dnaW5nIGVycm9ycy5cbiAqIEByZXR1cm5zIHRydWUgaWYgYWxsIHBhc3MsIGZhbHNlIG90aGVyd2lzZS5cbiAqLyBmdW5jdGlvbiBydW5WYWxpZGF0b3JzKGtleVBhdGgsIHZhbGlkYXRvcnMsIHZhbHVlKSB7XG4gICAgbGV0IHJldHVyblZhbHVlID0gdHJ1ZTtcbiAgICBpZiAodmFsaWRhdG9ycykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yIChsZXQgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvclJlc3VsdCA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0b3JSZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gYEludmFsaWQgY29uZmlndXJhdGlvbiBmb3IgJHtrZXlQYXRofTogJHt2YWxpZGF0b3JSZXN1bHR9YCA6IGBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gdmFsdWUgJHt2YWx1ZX0gZm9yICR7a2V5UGF0aH06ICR7dmFsaWRhdG9yUmVzdWx0fWA7XG4gICAgICAgICAgICAgICAgICAgIGxvZ0Vycm9yKGtleVBhdGgsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgU2tpcHBpbmcgaW52YWxpZCB2YWxpZGF0b3IgYXQgXCIke2tleVBhdGh9XCIuIEVuY291bnRlcmVkIGVycm9yXFxuXFx0JHtlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cbi8vIFJlY3Vyc2l2ZWx5IGZpbGwgaW4gdGhlIGNvbmZpZyB3aXRoIHZhbHVlcyBmcm9tIHRoZSBzY2hlbWEuXG5jb25zdCBzZXREZWZhdWx0cyA9IChzY2hlbWEsIGlucHV0Q29uZmlnKT0+e1xuICAgIGNvbnN0IGNvbmZpZyA9IHN0cnVjdHVyZWRDbG9uZShpbnB1dENvbmZpZyk7XG4gICAgaWYgKCFzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc2NoZW1hKSl7XG4gICAgICAgIGNvbnN0IGNvbmZpZ1BhcnQgPSBjb25maWdba2V5XTtcbiAgICAgICAgY29uc3Qgc2NoZW1hUGFydCA9IHNjaGVtYVtrZXldO1xuICAgICAgICAvLyBUaGUgYHNjaGVtYVBhcnQgJiZgIGNsYXVzZSBvZiB0aGlzIGBpZmAgc3RhdGVtZW50IHdpbGwgb25seSBmYWlsXG4gICAgICAgIC8vIGlmIHRoZSBzY2hlbWEgaXMgdmVyeSBpbnZhbGlkLiBJdCBpcyB0aGVyZSB0byBwcmV2ZW50IHRoZSBhcHAgZnJvbVxuICAgICAgICAvLyBjcmFzaGluZyBjb21wbGV0ZWx5LCB0aG91Z2ggaXQgd2lsbCBwcm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4gICAgICAgIC8vIElmIHRoaXMgaGFwcGVucywgdGhlcmUgc2hvdWxkIGJlIGxlZ2libGUgZXJyb3JzIGluIHRoZSBjb25zb2xlIGZyb21cbiAgICAgICAgLy8gdGhlIHNjaGVtYSB2YWxpZGF0b3IuXG4gICAgICAgIGlmIChzY2hlbWFQYXJ0ICYmIChzY2hlbWFQYXJ0Lmhhc093blByb3BlcnR5KCdfdHlwZScpIHx8IHNjaGVtYVBhcnQuaGFzT3duUHJvcGVydHkoJ19kZWZhdWx0JykpKSB7XG4gICAgICAgICAgICAvLyBXZSBhc3N1bWUgdGhhdCBzY2hlbWFQYXJ0IGRlZmluZXMgYSBjb25maWcgdmFsdWUsIHNpbmNlIGl0IGhhc1xuICAgICAgICAgICAgLy8gYSBwcm9wZXJ0eSBgX3R5cGVgIG9yIGBfZGVmYXVsdGAuXG4gICAgICAgICAgICBpZiAoIWNvbmZpZy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnW2tleV0gPSBzY2hlbWFQYXJ0WydfZGVmYXVsdCddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gV2UgYWxzbyBjaGVjayBpZiBpdCBpcyBhbiBvYmplY3Qgb3IgYXJyYXkgd2l0aCBvYmplY3QgZWxlbWVudHMsIGluIHdoaWNoIGNhc2Ugd2UgcmVjdXJzZVxuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBzY2hlbWFQYXJ0Ll9lbGVtZW50cztcbiAgICAgICAgICAgIGlmIChjb25maWdQYXJ0ICYmIGhhc09iamVjdFNjaGVtYShlbGVtZW50cykpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hUGFydC5fdHlwZSA9PT0gVHlwZS5BcnJheSAmJiBBcnJheS5pc0FycmF5KGNvbmZpZ1BhcnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ1dpdGhEZWZhdWx0cyA9IGNvbmZpZ1BhcnQubWFwKChjb25mKT0+c2V0RGVmYXVsdHMoZWxlbWVudHMsIGNvbmYpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnW2tleV0gPSBjb25maWdXaXRoRGVmYXVsdHM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzY2hlbWFQYXJ0Ll90eXBlID09PSBUeXBlLk9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBvYmplY3RLZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnUGFydCkpe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnUGFydFtvYmplY3RLZXldID0gc2V0RGVmYXVsdHMoZWxlbWVudHMsIGNvbmZpZ1BhcnRbb2JqZWN0S2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPcmRpbmFyeU9iamVjdChzY2hlbWFQYXJ0KSkge1xuICAgICAgICAgICAgLy8gU2luY2Ugc2NoZW1hUGFydCBoYXMgbm8gcHJvcGVydHkgXCJfdHlwZVwiLCBpZiBpdCdzIGFuIG9yZGluYXJ5IG9iamVjdFxuICAgICAgICAgICAgLy8gKHVubGlrZSwgaW1wb3J0YW50bHksIHRoZSB2YWxpZGF0b3JzIGFycmF5KSwgd2UgYXNzdW1lIGl0IGlzIGEgcGFyZW50IGNvbmZpZyBwcm9wZXJ0eS5cbiAgICAgICAgICAgIC8vIFdlIHJlY3Vyc2UgdG8gY29uZmlnW2tleV0gYW5kIHNjaGVtYVtrZXldLiBEZWZhdWx0IGNvbmZpZ1trZXldIHRvIHt9LlxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb25maWdQYXJ0ID0gY29uZmlnUGFydCA/PyB7fTtcbiAgICAgICAgICAgIC8vIFRoZXJlIHdpbGwgaGF2ZSBiZWVuIGEgdmFsaWRhdGlvbiBlcnJvciBhbHJlYWR5IGlmIGNvbmZpZ1BhcnQgaXMgbm90IGEgcGxhaW4gb2JqZWN0LlxuICAgICAgICAgICAgaWYgKGlzT3JkaW5hcnlPYmplY3Qoc2VsZWN0ZWRDb25maWdQYXJ0KSkge1xuICAgICAgICAgICAgICAgIGNvbmZpZ1trZXldID0gc2V0RGVmYXVsdHMoc2NoZW1hUGFydCwgc2VsZWN0ZWRDb25maWdQYXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29uZmlnO1xufTtcbmZ1bmN0aW9uIGhhc09iamVjdFNjaGVtYShlbGVtZW50c1NjaGVtYSkge1xuICAgIHJldHVybiAhIWVsZW1lbnRzU2NoZW1hICYmIE9iamVjdC5rZXlzKGVsZW1lbnRzU2NoZW1hKS5maWx0ZXIoKGUpPT4hW1xuICAgICAgICAgICAgJ19kZWZhdWx0JyxcbiAgICAgICAgICAgICdfdmFsaWRhdG9ycydcbiAgICAgICAgXS5pbmNsdWRlcyhlKSkubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIGlzT3JkaW5hcnlPYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUgIT09IG51bGw7XG59XG4vKiogS2VlcCB0cmFjayBvZiB3aGljaCB2YWxpZGF0aW9uIGVycm9ycyB3ZSBoYXZlIGRpc3BsYXllZC4gRWFjaCBvbmUgc2hvdWxkIG9ubHkgYmUgZGlzcGxheWVkIG9uY2UuICovIGxldCBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMgPSBuZXcgU2V0KCk7XG5mdW5jdGlvbiBsb2dFcnJvcihrZXlQYXRoLCBtZXNzYWdlKSB7XG4gICAgY29uc3Qga2V5ID0gYCR7a2V5UGF0aH06Ojoke21lc3NhZ2V9YDtcbiAgICAvLyB0ZWNobmljYWxseSwgdGhpcyBzaG91bGQgbm90IGJlIHBvc3NpYmxlLCBidXQgYmVjYXVzZSBvZiBob3cgdGhpbmdzIHdpbmQtdXAgdHJhbnNwaWxlZCwgdGhpcyBpc24ndCBpbXBvc3NpYmxlXG4gICAgaWYgKCFkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMpIHtcbiAgICAgICAgZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzID0gbmV3IFNldCgpO1xuICAgIH1cbiAgICBpZiAoIWRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcy5oYXMoa2V5KSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuYWRkKGtleSk7XG4gICAgfVxufVxuLyoqXG4gKiBOb3JtYWxseSwgY29uZmlndXJhdGlvbiBlcnJvcnMgYXJlIG9ubHkgZGlzcGxheWVkIG9uY2UuIFRoaXMgZnVuY3Rpb24gY2xlYXJzIHRoZSBsaXN0IG9mXG4gKiBkaXNwbGF5ZWQgZXJyb3JzLCBzbyB0aGF0IHRoZXkgd2lsbCBiZSBkaXNwbGF5ZWQgYWdhaW4uXG4gKlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ29uZmlnRXJyb3JzKGtleVBhdGgpIHtcbiAgICBpZiAoa2V5UGF0aCkge1xuICAgICAgICBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGtleVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuY2xlYXIoKTtcbiAgICB9XG59XG4vKipcbiAqIENsZWFucyB1cCBhbGwgY29uZmlnIHN0b3JlIHN1YnNjcmlwdGlvbnMgYW5kIHJlLWVzdGFibGlzaGVzIHRoZW0uIFRoaXMgaXMgcHJpbWFyaWx5XG4gKiB1c2VmdWwgZm9yIHRlc3RpbmcsIHdoZXJlIHN1YnNjcmlwdGlvbnMgc2V0IHVwIGF0IG1vZHVsZSBsb2FkIHRpbWUgbmVlZCB0byBiZSBjbGVhcmVkXG4gKiBiZXR3ZWVuIHRlc3RzIHRvIHByZXZlbnQgaW5maW5pdGUgdXBkYXRlIGxvb3BzLiBBZnRlciBjbGVhcmluZywgc3Vic2NyaXB0aW9ucyBhcmVcbiAqIHJlLWVzdGFibGlzaGVkIHNvIHRoZSBjb25maWcgc3lzdGVtIGNvbnRpbnVlcyB0byB3b3JrIG5vcm1hbGx5LlxuICpcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiByZXNldENvbmZpZ1N5c3RlbSgpIHtcbiAgICBjb25maWdTdWJzY3JpcHRpb25zLmZvckVhY2goKHVuc3Vic2NyaWJlKT0+dW5zdWJzY3JpYmUoKSk7XG4gICAgY29uZmlnU3Vic2NyaXB0aW9ucy5sZW5ndGggPSAwO1xuICAgIHNldHVwQ29uZmlnU3Vic2NyaXB0aW9ucygpO1xufVxuLyoqXG4gKiBDb3BpZWQgb3ZlciBmcm9tIGVzbS1leHRlbnNpb25zLiBJdCByaWdodGx5IGJlbG9uZ3MgdG8gdGhhdCBtb2R1bGUsIGJ1dCBlc20tY29uZmlnXG4gKiBjYW5ub3QgZGVwZW5kIG9uIGVzbS1leHRlbnNpb25zLlxuICovIGZ1bmN0aW9uIGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpIHtcbiAgICBjb25zdCBbZXh0ZW5zaW9uTmFtZV0gPSBleHRlbnNpb25JZC5zcGxpdCgnIycpO1xuICAgIHJldHVybiBleHRlbnNpb25OYW1lO1xufVxuLyoqXG4gKiBUaGUgdHJhbnNsYXRpb24gb3ZlcnJpZGVzIHNjaGVtYSBpcyB1c2VkIGluIHRoZSBpbXBsaWNpdCBzY2hlbWEgZ2l2ZW4gdG8gZXZlcnkgbW9kdWxlO1xuICogcGx1cyBhbnkgYWRkaXRpb25hbCB0cmFuc2xhdGlvbiBuYW1lc3BhY2VzIChhdCB0aW1lIG9mIHdyaXRpbmcsIHRoaXMgaXMganVzdCAnY29yZScpLlxuICovIGNvbnN0IHRyYW5zbGF0aW9uT3ZlcnJpZGVzU2NoZW1hID0ge1xuICAgICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnOiB7XG4gICAgICAgIF9kZXNjcmlwdGlvbjogJ1Blci1sYW5ndWFnZSBvdmVycmlkZXMgZm9yIGZyb250ZW5kIHRyYW5zbGF0aW9ucyBzaG91bGQgYmUga2V5ZWQgYnkgbGFuZ3VhZ2UgY29kZSBhbmQgZWFjaCBsYW5ndWFnZSBkaWN0aW9uYXJ5IGNvbnRhaW5zIHRoZSB0cmFuc2xhdGlvbiBrZXkgYW5kIHRoZSBkaXNwbGF5IHZhbHVlJyxcbiAgICAgICAgX3R5cGU6IFR5cGUuT2JqZWN0LFxuICAgICAgICBfZGVmYXVsdDoge30sXG4gICAgICAgIF92YWxpZGF0b3JzOiBbXG4gICAgICAgICAgICB2YWxpZGF0b3IoKG8pPT5PYmplY3Qua2V5cyhvKS5ldmVyeSgoayk9Pi9eW2Etel17MiwzfSgtW0EtWl17MiwzfSk/JC8udGVzdChrKSksIChvKT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhZEtleXMgPSBPYmplY3Qua2V5cyhvKS5maWx0ZXIoKGspPT4hL15bYS16XXsyLDN9KC1bQS1aXXsyLDN9KT8kLy50ZXN0KGspKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFRoZSAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJyBvYmplY3Qgc2hvdWxkIGhhdmUgbGFuZ3VhZ2UgY29kZXMgZm9yIGtleXMuIExhbmd1YWdlIGNvZGVzIG11c3QgYmUgaW4gdGhlIGZvcm0gb2YgYSB0d28tdG8tdGhyZWUgbGV0dGVyIGxhbmd1YWdlIGNvZGUgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIGh5cGhlbiBhbmQgYSB0d28tdG8tdGhyZWUgbGV0dGVyIGNvdW50cnkgY29kZS4gVGhlIGZvbGxvd2luZyBrZXlzIGRvIG5vdCBjb25mb3JtOiAke2JhZEtleXMuam9pbignLCAnKX0uYDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICB9XG59O1xuLyoqXG4gKiBUaGUgaW1wbGljaXRDb25maWdTY2hlbWEgaXMgaW1wbGljaXRseSBpbmNsdWRlZCBpbiBldmVyeSBjb25maWd1cmF0aW9uIHNjaGVtYVxuICovIGNvbnN0IGltcGxpY2l0Q29uZmlnU2NoZW1hID0ge1xuICAgICdEaXNwbGF5IGNvbmRpdGlvbnMnOiB7XG4gICAgICAgIHByaXZpbGVnZXM6IHtcbiAgICAgICAgICAgIF9kZXNjcmlwdGlvbjogJ1RoZSBwcml2aWxlZ2UocykgdGhlIHVzZXIgbXVzdCBoYXZlIHRvIHVzZSB0aGlzIGV4dGVuc2lvbicsXG4gICAgICAgICAgICBfdHlwZTogVHlwZS5BcnJheSxcbiAgICAgICAgICAgIF9kZWZhdWx0OiBbXVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uOiB7XG4gICAgICAgICAgICBfZGVzY3JpcHRpb246ICdUaGUgZXhwcmVzc2lvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgZXh0ZW5zaW9uIGlzIGRpc3BsYXllZCcsXG4gICAgICAgICAgICBfdHlwZTogVHlwZS5TdHJpbmcsXG4gICAgICAgICAgICBfZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICB9LFxuICAgIC4uLnRyYW5zbGF0aW9uT3ZlcnJpZGVzU2NoZW1hXG59O1xuIl0sIm5hbWVzIjpbImNsb25lRGVlcCIsImlzRXF1YWwiLCJtZXJnZVdpdGgiLCJvbWl0IiwibG9kYXNoT21pdCIsIlR5cGUiLCJpc0FycmF5IiwiaXNCb29sZWFuIiwiaXNVdWlkIiwiaXNOdW1iZXIiLCJpc09iamVjdCIsImlzU3RyaW5nIiwidmFsaWRhdG9yIiwiY29uZmlnRXh0ZW5zaW9uU3RvcmUiLCJjb25maWdJbnRlcm5hbFN0b3JlIiwiZ2V0Q29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25Db25maWciLCJnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlIiwiZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlIiwiaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlIiwidGVtcG9yYXJ5Q29uZmlnU3RvcmUiLCJtZXJnZURlZXBSZXBsYWNlIiwibGVmdCIsInJpZ2h0IiwiX29ialZhbHVlIiwic3JjVmFsdWUiLCJBcnJheSIsImNvbmZpZ1N1YnNjcmlwdGlvbnMiLCJyZWNvbXB1dGVBbGxDb25maWdzIiwiY29uZmlnU3RhdGUiLCJ0ZW1wQ29uZmlnU3RhdGUiLCJleHRlbnNpb25TdGF0ZSIsImNvbXB1dGVNb2R1bGVDb25maWciLCJjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyIsImNvbXB1dGVFeHRlbnNpb25TbG90Q29uZmlncyIsImNvbXB1dGVFeHRlbnNpb25Db25maWdzIiwic2V0dXBDb25maWdTdWJzY3JpcHRpb25zIiwic3RhdGUiLCJ0ZW1wU3RhdGUiLCJfaXRlcmF0b3JFcnJvciIsIk9iamVjdCIsIm1vZHVsZU5hbWUiLCJtb2R1bGVTdG9yZSIsIm5ld1N0YXRlIiwiY29uZmlnIiwiZ2V0Q29uZmlnRm9yTW9kdWxlIiwiY29uZmlnMSIsImdldENvbmZpZ0Zvck1vZHVsZUltcGxpY2l0U2NoZW1hIiwic2xvdENvbmZpZ3MiLCJnZXRFeHRlbnNpb25TbG90Q29uZmlncyIsIm5ld1Nsb3RTdG9yZUVudHJpZXMiLCJzbG90TmFtZSIsInNsb3RTdG9yZSIsIm9sZFN0YXRlIiwiZ2V0SW1wbGVtZW50ZXJUb29sc0NvbmZpZyIsImNvbmZpZ3MiLCJleHRlbnNpb24iLCJjb21wdXRlRXh0ZW5zaW9uQ29uZmlnIiwiZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlIiwiZGVmaW5lQ29uZmlnU2NoZW1hIiwic2NoZW1hIiwidmFsaWRhdGVDb25maWdTY2hlbWEiLCJlbmhhbmNlZFNjaGVtYSIsImltcGxpY2l0Q29uZmlnU2NoZW1hIiwicmVnaXN0ZXJNb2R1bGVXaXRoQ29uZmlnU3lzdGVtIiwicmVnaXN0ZXJNb2R1bGVMb2FkIiwicmVnaXN0ZXJUcmFuc2xhdGlvbk5hbWVzcGFjZSIsIm5hbWVzcGFjZSIsInRyYW5zbGF0aW9uT3ZlcnJpZGVzU2NoZW1hIiwiZGVmaW5lRXh0ZW5zaW9uQ29uZmlnU2NoZW1hIiwiZXh0ZW5zaW9uTmFtZSIsImNvbnNvbGUiLCJwcm92aWRlIiwic291cmNlTmFtZSIsImdldENvbmZpZyIsIlByb21pc2UiLCJyZXNvbHZlIiwidXBkYXRlIiwidW5zdWJzY3JpYmUiLCJzdG9yZSIsImdldFRyYW5zbGF0aW9uT3ZlcnJpZGVzIiwiZXh0ZW5zaW9uSWQiLCJwcm9taXNlcyIsIl9zdGF0ZV9jb25maWdfVHJhbnNsYXRpb25vdmVycmlkZXMiLCJ0cmFuc2xhdGlvbk92ZXJyaWRlcyIsImNvbmZpZ1N0b3JlIiwicHJvY2Vzc0NvbmZpZyIsInByb3ZpZGVkQ29uZmlnIiwia2V5UGF0aENvbnRleHQiLCJ2YWxpZGF0ZVN0cnVjdHVyZSIsInNldERlZmF1bHRzIiwicnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZSIsInNsb3RNb2R1bGVOYW1lIiwiZXh0ZW5zaW9uTW9kdWxlTmFtZSIsIl9zbG90TW9kdWxlQ29uZmlnX2V4dGVuc2lvblNsb3RzX3Nsb3ROYW1lX2NvbmZpZ3VyZSIsImdldEV4dGVuc2lvbk5hbWVGcm9tSWQiLCJleHRlbnNpb25Db25maWdTY2hlbWEiLCJuYW1lT2ZTY2hlbWFTb3VyY2UiLCJwcm92aWRlZENvbmZpZ3MiLCJnZXRQcm92aWRlZENvbmZpZ3MiLCJzbG90TW9kdWxlQ29uZmlnIiwibWVyZ2VDb25maWdzRm9yIiwiY29uZmlnT3ZlcnJpZGUiLCJleHRlbnNpb25Db25maWciLCJjb21iaW5lZENvbmZpZyIsIm1lcmdlQ29uZmlncyIsInJlc3VsdCIsImdldFNjaGVtYVdpdGhWYWx1ZXNBbmRTb3VyY2VzIiwiY29uZmlnc0FuZFNvdXJjZXMiLCJjIiwic291cmNlIiwiY3JlYXRlVmFsdWVzQW5kU291cmNlc1RyZWUiLCJpc09yZGluYXJ5T2JqZWN0Iiwib2JqIiwia2V5IiwiYWxsQ29uZmlncyIsInNsb3RDb25maWdQZXJNb2R1bGUiLCJfYWxsQ29uZmlnc19rZXkiLCJfYWxsQ29uZmlnc19rZXkxIiwidmFsaWRhdGVBbGxFeHRlbnNpb25TbG90Q29uZmlncyIsImNvbmZpZ0J5U2xvdE5hbWUiLCJfaXRlcmF0b3JFcnJvcjEiLCJ2YWxpZGF0ZUV4dGVuc2lvblNsb3RDb25maWciLCJrZXlQYXRoIiwiZXJyb3JQcmVmaXgiLCJpbnZhbGlkS2V5cyIsImsiLCJsb2dFcnJvciIsIm4iLCJ1cGRhdGVNZXNzYWdlIiwidGhpc0tleVBhdGgiLCJzY2hlbWFQYXJ0IiwiZWxlbWVudHMiLCJoYXNPYmplY3RTY2hlbWEiLCJfJHZhbGlkYXRvciIsInZhbHVlVHlwZSIsIkpTT04iLCJpbnB1dENvbmZpZyIsImFsbENvbmZpZ3NGb3JNb2R1bGUiLCJhY2MiLCJ2YWx1ZSIsInZhbGlkYXRlQnJhbmNoU3RydWN0dXJlIiwiY2hlY2tUeXBlIiwidmFsaWRhdGVGcmVlZm9ybU9iamVjdFN0cnVjdHVyZSIsInZhbGlkYXRlQXJyYXlTdHJ1Y3R1cmUiLCJmcmVlZm9ybU9iamVjdFNjaGVtYSIsImFycmF5U2NoZW1hIiwidmFsaWRhdGVkQXNBcnJheSIsImkiLCJpMSIsIl9hcnJheVNjaGVtYV9fZWxlbWVudHMiLCJydW5WYWxpZGF0b3JzIiwiX3R5cGUiLCJ2YWxpZGF0b3JzIiwicmV0dXJuVmFsdWUiLCJ2YWxpZGF0b3JSZXN1bHQiLCJtZXNzYWdlIiwiX3R5cGVfb2YiLCJlIiwic3RydWN0dXJlZENsb25lIiwiY29uZmlnUGFydCIsImNvbmZpZ1dpdGhEZWZhdWx0cyIsImNvbmYiLCJvYmplY3RLZXkiLCJzZWxlY3RlZENvbmZpZ1BhcnQiLCJlbGVtZW50c1NjaGVtYSIsImRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcyIsIlNldCIsImNsZWFyQ29uZmlnRXJyb3JzIiwicmVzZXRDb25maWdTeXN0ZW0iLCJfZXh0ZW5zaW9uSWRfc3BsaXQiLCJvIiwiYmFkS2V5cyIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZCQUE2QixHQUFpRjtBQUMzRTtBQUN5RTtBQUNyRDtBQUMrSjtBQUN0Tjs7OztDQUlDLEdBQUcsU0FBU3FCLGlCQUFpQkMsSUFBSSxFQUFFQyxLQUFLO0lBQ3JDLE9BQU9yQix5Q0FBU0EsQ0FBQyxDQUFDLEdBQUdvQixNQUFNQyxPQUFPLFNBQUNDLFdBQVdDO1FBQzFDLElBQUlDLE1BQU0sT0FBTyxDQUFDRCxXQUFXO1lBQ3pCLE9BQU9BO1FBQ1g7SUFDSjtBQUNKO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FBRyx3RkFBd0Y7QUFDNUYsSUFBTUUs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\n//# sourceURL=webpack-internal:///../../framework/esm-config/dist/module-config/module-config.js\n\n}");
5583
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n clearConfigErrors: () => (clearConfigErrors),\n defineConfigSchema: () => (defineConfigSchema),\n defineExtensionConfigSchema: () => (defineExtensionConfigSchema),\n getConfig: () => (getConfig),\n getTranslationOverrides: () => (getTranslationOverrides),\n processConfig: () => (processConfig),\n provide: () => (provide),\n registerModuleLoad: () => (registerModuleLoad),\n registerModuleWithConfigSystem: () => (registerModuleWithConfigSystem),\n registerTranslationNamespace: () => (registerTranslationNamespace),\n resetConfigSystem: () => (resetConfigSystem)\n});\n/* import */ var lodash_es__rspack_import_4 = __webpack_require__(\"../../../node_modules/lodash-es/mergeWith.js\");\n/* import */ var lodash_es__rspack_import_5 = __webpack_require__(\"../../../node_modules/lodash-es/isEqual.js\");\n/* import */ var lodash_es__rspack_import_6 = __webpack_require__(\"../../../node_modules/lodash-es/omit.js\");\n/* import */ var lodash_es__rspack_import_7 = __webpack_require__(\"../../../node_modules/lodash-es/cloneDeep.js\");\n/* import */ var _types_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-config/dist/types.js\");\n/* import */ var _validators_type_validators_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/validators/type-validators.js\");\n/* import */ var _validators_validator_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-config/dist/validators/validator.js\");\n/* import */ var _state_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-config/dist/module-config/state.js\");\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category Config */ \n\n\n\n\n/**\n * Deep merge two objects, with right-side values taking precedence.\n * Arrays are replaced entirely (not merged by index), matching the\n * behavior of ramda's mergeDeepRight.\n */ function mergeDeepReplace(left, right) {\n return (0,lodash_es__rspack_import_4[\"default\"])({}, left, right, function(_objValue, srcValue) {\n if (Array.isArray(srcValue)) {\n return srcValue;\n }\n });\n}\n/**\n * Store setup\n *\n *\n * Set up stores and subscriptions so that inputs get processed appropriately.\n *\n * There are *input* stores and *output* stores. The *input* stores\n * are configInternalStore, temporaryConfigStore, and configExtensionStore. The\n * output stores are set in the `compute...` functions. They are the module\n * config stores, the extension slot config stores (by module), the extension\n * config stores, and the implementer tools config store.\n *\n * This code sets up the subscriptions so that when an input store changes,\n * the correct set of output stores are updated.\n *\n * All `compute...` functions except `computeExtensionConfigs` are pure\n * (or are supposed to be), other than the fact that they all `setState`\n * store values at the end. `computeExtensionConfigs` calls `getGlobalStore`,\n * which creates stores.\n */ // Store unsubscribe functions to allow cleanup (e.g., in tests or hot module reloading)\nvar configSubscriptions = [];\n/**\n * Recomputes all configuration derived stores based on current state of input stores.\n * Called whenever any input store (configInternalStore, temporaryConfigStore, configExtensionStore) changes.\n */ function recomputeAllConfigs() {\n var configState = _state_js__rspack_import_3.configInternalStore.getState();\n var tempConfigState = _state_js__rspack_import_3.temporaryConfigStore.getState();\n var extensionState = _state_js__rspack_import_3.configExtensionStore.getState();\n computeModuleConfig(configState, tempConfigState);\n computeExtensionSlotConfigs(configState, tempConfigState);\n computeExtensionConfigs(configState, extensionState, tempConfigState);\n // Last, because a failure here must not skip the outputs above. Only kept current while the\n // implementer tools are watching it; otherwise derived on read.\n (0,_state_js__rspack_import_3.invalidateImplementerToolsConfig)();\n}\nfunction setupConfigSubscriptions() {\n // Registered here rather than at module load so that `resetConfigSystem` restores it.\n (0,_state_js__rspack_import_3.setImplementerToolsConfigRecomputer)(function() {\n return computeImplementerToolsConfig(_state_js__rspack_import_3.configInternalStore.getState(), _state_js__rspack_import_3.temporaryConfigStore.getState());\n });\n // Initial computation\n recomputeAllConfigs();\n // Subscribe to all input stores with a single handler\n // This ensures we only recompute once even if multiple stores change simultaneously\n configSubscriptions.push(_state_js__rspack_import_3.configInternalStore.subscribe(recomputeAllConfigsSafely), _state_js__rspack_import_3.temporaryConfigStore.subscribe(recomputeAllConfigsSafely), _state_js__rspack_import_3.configExtensionStore.subscribe(recomputeAllConfigsSafely));\n}\n/** Ensure that we do not throw during a store subscription */ function recomputeAllConfigsSafely() {\n (0,_state_js__rspack_import_3.clearConfigDerivationError)();\n try {\n recomputeAllConfigs();\n } catch (e) {\n (0,_state_js__rspack_import_3.recordConfigDerivationError)(e);\n console.error('Failed to recompute the configuration', e);\n }\n}\n// Set up subscriptions at module load time\nsetupConfigSubscriptions();\nvar moduleConfigCache = new Map();\nfunction computeModuleConfig(state, tempState) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(state.schemas)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var moduleName = _step.value;\n // At this point the schema could be either just the implicit schema or the actually\n // defined schema. We run with just the implicit schema because we want to populate\n // the config store with the translation overrides as soon as possible. In fact, the\n // translation system will throw for Suspense until the translation overrides are\n // available, which as of this writing blocks the schema definition from occurring\n // for modules loaded based on their extensions.\n var moduleStore = (0,_state_js__rspack_import_3.getConfigStore)(moduleName);\n var schema = state.schemas[moduleName];\n var moduleLoaded = Boolean(state.moduleLoaded[moduleName]);\n var cached = moduleConfigCache.get(moduleName);\n var newState = void 0;\n if (cached && cached.schema === schema && cached.moduleLoaded === moduleLoaded && cached.providedConfigs === state.providedConfigs && cached.temporaryConfig === tempState.config) {\n newState = cached.state;\n } else {\n var config = moduleLoaded ? getConfigForModule(moduleName, state, tempState) : getConfigForModuleImplicitSchema(moduleName, state, tempState);\n newState = {\n translationOverridesLoaded: true,\n loaded: moduleLoaded,\n config: config\n };\n moduleConfigCache.set(moduleName, {\n schema: schema,\n moduleLoaded: moduleLoaded,\n providedConfigs: state.providedConfigs,\n temporaryConfig: tempState.config,\n state: newState\n });\n }\n // Writing unconditionally would hand every `useConfig` consumer in the application a new\n // object — and a re-render — whenever any module or extension anywhere is loaded.\n var oldState = moduleStore.getState();\n if (oldState.loaded !== newState.loaded || oldState.translationOverridesLoaded !== newState.translationOverridesLoaded || !(0,lodash_es__rspack_import_5[\"default\"])(oldState.config, newState.config)) {\n moduleStore.setState(newState);\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}\nfunction computeExtensionSlotConfigs(state, tempState) {\n var slotConfigs = getExtensionSlotConfigs(state, tempState);\n var slotStore = (0,_state_js__rspack_import_3.getExtensionSlotsConfigStore)();\n var oldSlots = slotStore.getState().slots;\n var slots = {};\n var changed = false;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(slotConfigs)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), slotName = _step_value[0], config = _step_value[1];\n var previous = oldSlots[slotName];\n // Entries keep their identity when the configuration behind them hasn't changed, so that\n // changing one slot's configuration doesn't invalidate every other configured slot.\n if ((previous === null || previous === void 0 ? void 0 : previous.loaded) && (0,lodash_es__rspack_import_5[\"default\"])(previous.config, config)) {\n slots[slotName] = previous;\n } else {\n slots[slotName] = {\n loaded: true,\n config: config\n };\n changed = true;\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 // Built from scratch rather than merged over the previous state: a slot whose configuration\n // has been removed — clearing the temporary config, say — has to lose its entry, or the old\n // configuration stays in force until the page is reloaded.\n if (changed || Object.keys(oldSlots).length !== Object.keys(slots).length) {\n slotStore.setState({\n slots: slots\n });\n }\n}\nfunction computeImplementerToolsConfig(state, tempConfigState) {\n var oldState = _state_js__rspack_import_3.implementerToolsConfigStore.getState();\n var config = getImplementerToolsConfig(state, tempConfigState);\n var newState = {\n config: config\n };\n // Use deep equality on the actual config content, not the wrapper object\n if (!(0,lodash_es__rspack_import_5[\"default\"])(oldState.config, newState.config)) {\n _state_js__rspack_import_3.implementerToolsConfigStore.setState(newState);\n }\n}\nfunction computeExtensionConfigs(configState, extensionState, tempConfigState) {\n var extensionsConfigStore = (0,_state_js__rspack_import_3.getExtensionsConfigStore)();\n var oldConfigs = extensionsConfigStore.getState().configs;\n var configs = {};\n var changed = false;\n var entryCount = 0;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n // We assume that the module schema has already been defined, since the extension\n // it contains is mounted.\n for(var _iterator = extensionState.mountedExtensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n var _oldConfigs_extension_slotName;\n var config = computeExtensionConfig(extension.slotModuleName, extension.extensionModuleName, extension.slotName, extension.extensionId, configState, tempConfigState);\n var previous = (_oldConfigs_extension_slotName = oldConfigs[extension.slotName]) === null || _oldConfigs_extension_slotName === void 0 ? void 0 : _oldConfigs_extension_slotName[extension.extensionId];\n // Entries keep their identity when the configuration behind them hasn't changed, so that\n // mounting one extension doesn't hand every other mounted extension a new config object.\n var entry = (previous === null || previous === void 0 ? void 0 : previous.loaded) && (0,lodash_es__rspack_import_5[\"default\"])(previous.config, config) ? previous : {\n config: config,\n loaded: true\n };\n if (entry !== previous) {\n changed = true;\n }\n if (!configs[extension.slotName]) {\n configs[extension.slotName] = {};\n }\n configs[extension.slotName][extension.extensionId] = entry;\n entryCount++;\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 var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n var _loop = function() {\n var _step_value = _sliced_to_array(_step1.value, 2), slotName = _step_value[0], slotConfigs = _step_value[1];\n var previousSlot = oldConfigs[slotName];\n if (previousSlot && Object.keys(previousSlot).length === Object.keys(slotConfigs).length && Object.entries(slotConfigs).every(function(param) {\n var _param = _sliced_to_array(param, 2), extensionId = _param[0], entry = _param[1];\n return previousSlot[extensionId] === entry;\n })) {\n configs[slotName] = previousSlot;\n }\n };\n // Slots keep their identity too when none of their entries changed. Subscribers compare these\n // per-slot objects to work out which slots to re-derive, so handing out a fresh one for every\n // slot on every write would mark every slot with a mounted extension dirty.\n for(var _iterator1 = Object.entries(configs)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true)_loop();\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n if (!changed) {\n // Nothing was added or altered, but an extension may have unmounted, which only shows up as a\n // missing entry.\n changed = Object.keys(oldConfigs).length !== Object.keys(configs).length || Object.values(oldConfigs).reduce(function(total, slot) {\n return total + Object.keys(slot).length;\n }, 0) !== entryCount;\n }\n if (changed) {\n extensionsConfigStore.setState({\n configs: configs\n });\n }\n}\n/*\n * API\n *\n */ /**\n * This defines a configuration schema for a module. The schema tells the\n * configuration system how the module can be configured. It specifies\n * what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/en-US/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param moduleName Name of the module the schema is being defined for. Generally\n * should be the one in which the `defineConfigSchema` call takes place.\n * @param schema The config schema for the module\n */ function defineConfigSchema(moduleName, schema) {\n validateConfigSchema(moduleName, schema);\n var enhancedSchema = mergeDeepReplace(schema, implicitConfigSchema);\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, moduleName, enhancedSchema)),\n moduleLoaded: _object_spread_props(_object_spread({}, state.moduleLoaded), _define_property({}, moduleName, true))\n });\n });\n}\n/**\n * This alerts the configuration system that a module exists. This allows config to be\n * processed, while still allowing the extension system to know whether the module has\n * actually had its front bundle executed yet.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param moduleName\n */ function registerModuleWithConfigSystem(moduleName) {\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, moduleName, implicitConfigSchema))\n });\n });\n}\n/**\n * This alerts the configuration system that a module has been loaded.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param moduleName\n */ function registerModuleLoad(moduleName) {\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n moduleLoaded: _object_spread_props(_object_spread({}, state.moduleLoaded), _define_property({}, moduleName, true))\n });\n });\n}\n/**\n * This allows the config system to support translation overrides for namespaces that\n * do not correspond to modules.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param namespace\n */ function registerTranslationNamespace(namespace) {\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, namespace, translationOverridesSchema))\n });\n });\n}\n/**\n * This defines a configuration schema for an extension. When a schema is defined\n * for an extension, that extension will receive the configuration corresponding\n * to that schema, rather than the configuration corresponding to the module\n * in which it is defined.\n *\n * The schema tells the configuration system how the module can be configured.\n * It specifies what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/en-US/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param extensionName Name of the extension the schema is being defined for.\n * Should match the `name` of one of the `extensions` entries defined in\n * the app's `routes.json` file.\n * @param schema The config schema for the extension\n */ function defineExtensionConfigSchema(extensionName, schema) {\n validateConfigSchema(extensionName, schema);\n var enhancedSchema = mergeDeepReplace(schema, implicitConfigSchema);\n var state = _state_js__rspack_import_3.configInternalStore.getState();\n if (state.schemas[extensionName]) {\n console.error(\"Config schema for extension \".concat(extensionName, \" already exists. If there are multiple extensions with this same name, one will probably crash.\"));\n }\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, extensionName, enhancedSchema))\n });\n });\n}\n/**\n * Provides configuration values programmatically. This is an alternative to\n * providing configuration through the config-file. Configuration provided this\n * way will be merged with configuration from other sources.\n *\n * @param config A configuration object to merge into the existing configuration.\n * @param sourceName An optional name to identify the source of this configuration,\n * used for debugging purposes. Defaults to 'provided'.\n */ function provide(config) {\n var sourceName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'provided';\n _state_js__rspack_import_3.configInternalStore.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n providedConfigs: _to_consumable_array(state.providedConfigs).concat([\n {\n source: sourceName,\n config: config\n }\n ])\n });\n });\n}\n/**\n * Resolves with `select(state)` as soon as the store's state satisfies `ready`, leaving no\n * subscription behind: nothing subscribes at all when the store is already ready. That matters\n * because `getConfig` runs on every HTTP request, and a subscription that outlives its promise\n * both retains its closure forever and slows down every later write to that store.\n */ function whenStoreReady(store, ready, select) {\n return new Promise(function(resolve) {\n var update = function update(state) {\n if (!resolved && ready(state)) {\n resolved = true;\n resolve(select(state));\n unsubscribe === null || unsubscribe === void 0 ? void 0 : unsubscribe();\n }\n };\n var unsubscribe;\n var resolved = false;\n update(store.getState());\n if (!resolved) {\n unsubscribe = store.subscribe(update);\n }\n });\n}\n/**\n * A promise-based way to access the config as soon as it is fully loaded.\n * If it is already loaded, resolves the config in its present state.\n *\n * This is a useful function if you need to get the config in the course\n * of the execution of a function.\n *\n * @param moduleName The name of the module for which to look up the config\n */ function getConfig(moduleName) {\n return whenStoreReady((0,_state_js__rspack_import_3.getConfigStore)(moduleName), function(state) {\n return Boolean(state.loaded && state.config);\n }, function(state) {\n return (0,lodash_es__rspack_import_6[\"default\"])(state.config, [\n 'Display conditions',\n 'Translation overrides'\n ]);\n });\n}\n/**\n * Retrieves translation overrides for an extension, optionally scoped to a specific\n * extension slot. When called with only a module name, retrieves module-level overrides.\n * Translation overrides allow customizing translated strings without modifying the\n * original translation files.\n *\n * @param moduleName The name of the module providing the translation context.\n * @param slotName Optional extension slot name to include slot-specific overrides.\n * @param extensionId Optional extension ID to include extension-specific overrides.\n * @returns A Promise resolving to an array of translation override objects.\n *\n * @internal\n */ function getTranslationOverrides(moduleName, slotName, extensionId) {\n var promises = [\n whenStoreReady((0,_state_js__rspack_import_3.getConfigStore)(moduleName), function(state) {\n return Boolean(state.translationOverridesLoaded && state.config);\n }, function(state) {\n var _state_config_Translationoverrides;\n return (_state_config_Translationoverrides = state.config['Translation overrides']) !== null && _state_config_Translationoverrides !== void 0 ? _state_config_Translationoverrides : {};\n })\n ];\n if (slotName && extensionId) {\n promises.push(whenStoreReady((0,_state_js__rspack_import_3.getExtensionConfig)(slotName, extensionId), function(state) {\n return Boolean(state.loaded && state.config);\n }, function(state) {\n var _state_config_Translationoverrides;\n return (_state_config_Translationoverrides = state.config['Translation overrides']) !== null && _state_config_Translationoverrides !== void 0 ? _state_config_Translationoverrides : {};\n }));\n }\n return Promise.all(promises);\n}\n/**\n * Validate and interpolate defaults for `providedConfig` according to `schema`\n *\n * @param schema a configuration schema\n * @param providedConfig an object of config values (without the top-level module name)\n * @param keyPathContext a dot-separated string which helps the user figure out where\n * the provided config came from\n * @returns The validated and processed configuration object with defaults applied.\n * @internal\n */ function processConfig(schema, providedConfig, keyPathContext) {\n validateStructure(schema, providedConfig, keyPathContext);\n var config = setDefaults(schema, providedConfig);\n runAllValidatorsInConfigTree(schema, config, keyPathContext);\n return config;\n}\nvar extensionConfigCache = new Map();\n/**\n * Returns the configuration for an extension. This configuration is specific\n * to the slot in which it is mounted, and its ID within that slot.\n *\n * The schema for that configuration is the extension schema. If no extension\n * schema has been provided, the schema used is the schema of the module in\n * which the extension is defined.\n *\n * @param slotModuleName The name of the module which defines the extension slot\n * @param extensionModuleName The name of the module which defines the extension (and therefore the config schema)\n * @param slotName The name of the extension slot where the extension is mounted\n * @param extensionId The ID of the extension in its slot\n */ function computeExtensionConfig(slotModuleName, extensionModuleName, slotName, extensionId, configState, tempConfigState) {\n var _ref;\n var _slotModuleConfig_extensionSlots_slotName_configure, _slotModuleConfig_extensionSlots_slotName, _slotModuleConfig_extensionSlots;\n var extensionName = getExtensionNameFromId(extensionId);\n var extensionConfigSchema = configState.schemas[extensionName];\n // JSON string of these elements should be unique-per-extension\n var cacheKey = JSON.stringify([\n slotName,\n extensionId,\n slotModuleName,\n extensionModuleName\n ]);\n var cached = extensionConfigCache.get(cacheKey);\n if (cached && cached.extensionSchema === extensionConfigSchema && cached.extensionModuleSchema === configState.schemas[extensionModuleName] && cached.providedConfigs === configState.providedConfigs && cached.temporaryConfig === tempConfigState.config) {\n return cached.config;\n }\n var nameOfSchemaSource = extensionConfigSchema ? extensionName : extensionModuleName;\n var providedConfigs = getProvidedConfigs(configState, tempConfigState);\n var slotModuleConfig = mergeConfigsFor(slotModuleName, providedConfigs);\n var configOverride = (_ref = slotModuleConfig === null || slotModuleConfig === void 0 ? void 0 : (_slotModuleConfig_extensionSlots = slotModuleConfig.extensionSlots) === null || _slotModuleConfig_extensionSlots === void 0 ? void 0 : (_slotModuleConfig_extensionSlots_slotName = _slotModuleConfig_extensionSlots[slotName]) === null || _slotModuleConfig_extensionSlots_slotName === void 0 ? void 0 : (_slotModuleConfig_extensionSlots_slotName_configure = _slotModuleConfig_extensionSlots_slotName.configure) === null || _slotModuleConfig_extensionSlots_slotName_configure === void 0 ? void 0 : _slotModuleConfig_extensionSlots_slotName_configure[extensionId]) !== null && _ref !== void 0 ? _ref : {};\n var extensionConfig = mergeConfigsFor(nameOfSchemaSource, providedConfigs);\n var combinedConfig = mergeConfigs([\n extensionConfig,\n configOverride\n ]);\n var schema = extensionConfigSchema !== null && extensionConfigSchema !== void 0 ? extensionConfigSchema : configState.schemas[extensionModuleName];\n validateStructure(schema, combinedConfig, nameOfSchemaSource);\n var config = setDefaults(schema, combinedConfig);\n runAllValidatorsInConfigTree(schema, config, nameOfSchemaSource);\n delete config.extensionSlots;\n extensionConfigCache.set(cacheKey, {\n extensionSchema: extensionConfigSchema,\n extensionModuleSchema: configState.schemas[extensionModuleName],\n providedConfigs: configState.providedConfigs,\n temporaryConfig: tempConfigState.config,\n config: config\n });\n return config;\n}\nvar implementerToolsModuleCache = new Map();\nfunction getImplementerToolsConfig(configState, tempConfigState) {\n var annotatedSchemas = getAllSchemasWithValuesAndSources(configState.schemas);\n var configsAndSources = _to_consumable_array(configState.providedConfigs.map(function(c) {\n return [\n c.config,\n c.source\n ];\n })).concat([\n [\n tempConfigState.config,\n 'temporary config'\n ]\n ]);\n // A module can be configured without having declared a schema, so the module list is the union\n // of both rather than just the schemas.\n var moduleNames = new Set(Object.keys(annotatedSchemas));\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = configsAndSources[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 1), config = _step_value[0];\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = Object.keys(config)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var moduleName = _step1.value;\n moduleNames.add(moduleName);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\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 var result = {};\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;\n try {\n var _loop = function() {\n var moduleName = _step2.value;\n var annotatedSchema = annotatedSchemas[moduleName];\n var configSlices = configsAndSources.map(function(param) {\n var _param = _sliced_to_array(param, 1), config = _param[0];\n return config[moduleName];\n });\n var sources = configsAndSources.map(function(param) {\n var _param = _sliced_to_array(param, 2), source = _param[1];\n return source;\n });\n var cached = implementerToolsModuleCache.get(moduleName);\n if (cached && cached.annotatedSchema === annotatedSchema && cached.configSlices.length === configSlices.length && cached.configSlices.every(function(slice, i) {\n return slice === configSlices[i];\n }) && cached.sources.every(function(source, i) {\n return source === sources[i];\n })) {\n result[moduleName] = cached.result;\n return \"continue\";\n }\n var merged = annotatedSchema !== null && annotatedSchema !== void 0 ? annotatedSchema : {};\n configsAndSources.forEach(function(param, i) {\n var _param = _sliced_to_array(param, 2), source = _param[1];\n var slice = configSlices[i];\n if (slice !== undefined) {\n merged = mergeDeepReplace(merged, createValuesAndSourcesTree(slice, source));\n }\n });\n implementerToolsModuleCache.set(moduleName, {\n annotatedSchema: annotatedSchema,\n configSlices: configSlices,\n sources: sources,\n result: merged\n });\n result[moduleName] = merged;\n };\n for(var _iterator2 = moduleNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true)_loop();\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally{\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n return result;\n}\n/**\n * Caching per module is what stops the walk being quadratic: defining one module's schema\n * recomputes every module.\n *\n * A module with no configuration of its own is published straight from this cache, so nothing may\n * mutate a tree it reads out of the implementer tools config — it is the cache entry.\n */ var schemaValuesAndSourcesCache = new Map();\nfunction getAllSchemasWithValuesAndSources(schemas) {\n var result = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(schemas)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), moduleName = _step_value[0], schema = _step_value[1];\n var cached = schemaValuesAndSourcesCache.get(moduleName);\n if (cached && cached.schema === schema) {\n result[moduleName] = cached.annotated;\n } else {\n var annotated = getSchemaWithValuesAndSources((0,lodash_es__rspack_import_7[\"default\"])(schema));\n schemaValuesAndSourcesCache.set(moduleName, {\n schema: schema,\n annotated: annotated\n });\n result[moduleName] = annotated;\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 return result;\n}\nfunction getSchemaWithValuesAndSources(schema) {\n if (schema.hasOwnProperty('_default')) {\n return _object_spread_props(_object_spread({}, schema), {\n _value: schema._default,\n _source: 'default'\n });\n } else if (isOrdinaryObject(schema)) {\n return Object.keys(schema).reduce(function(obj, key) {\n obj[key] = getSchemaWithValuesAndSources(schema[key]);\n return obj;\n }, {});\n } else {\n // at this point, the schema is bad and an error will have been logged during schema validation\n return {};\n }\n}\nfunction createValuesAndSourcesTree(config, source) {\n if (isOrdinaryObject(config)) {\n return Object.keys(config).reduce(function(obj, key) {\n obj[key] = createValuesAndSourcesTree(config[key], source);\n return obj;\n }, {});\n } else {\n return {\n _value: config,\n _source: source\n };\n }\n}\nfunction getExtensionSlotConfigs(configState, tempConfigState) {\n var allConfigs = mergeConfigs(getProvidedConfigs(configState, tempConfigState));\n var slotConfigPerModule = Object.keys(allConfigs).reduce(function(obj, key) {\n var _allConfigs_key;\n if ((_allConfigs_key = allConfigs[key]) === null || _allConfigs_key === void 0 ? void 0 : _allConfigs_key.extensionSlots) {\n var _allConfigs_key1;\n obj[key] = (_allConfigs_key1 = allConfigs[key]) === null || _allConfigs_key1 === void 0 ? void 0 : _allConfigs_key1.extensionSlots;\n }\n return obj;\n }, {});\n validateAllExtensionSlotConfigs(slotConfigPerModule);\n var slotConfigs = Object.keys(slotConfigPerModule).reduce(function(obj, key) {\n obj = _object_spread({}, obj, slotConfigPerModule[key]);\n return obj;\n }, {});\n return slotConfigs;\n}\nfunction validateAllExtensionSlotConfigs(slotConfigPerModule) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(slotConfigPerModule)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), moduleName = _step_value[0], configBySlotName = _step_value[1];\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = Object.entries(configBySlotName)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var _step_value1 = _sliced_to_array(_step1.value, 2), slotName = _step_value1[0], config = _step_value1[1];\n validateExtensionSlotConfig(config, moduleName, slotName);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\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}\nfunction validateExtensionSlotConfig(config, moduleName, slotName) {\n var keyPath = \"\".concat(moduleName, \".extensionSlots.\").concat(slotName);\n var errorPrefix = \"Extension slot config '\".concat(keyPath, \"'\");\n var invalidKeys = Object.keys(config).filter(function(k) {\n return ![\n 'add',\n 'remove',\n 'order',\n 'configure'\n ].includes(k);\n });\n if (invalidKeys.length) {\n logError(keyPath, errorPrefix + \"' contains invalid keys '\".concat(invalidKeys.join(\"', '\"), \"'\"));\n }\n if (config.add) {\n if (!Array.isArray(config.add) || !config.add.every(function(n) {\n return typeof n === 'string';\n })) {\n logError(keyPath, errorPrefix + \".add' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.remove) {\n if (!Array.isArray(config.remove) || !config.remove.every(function(n) {\n return typeof n === 'string';\n })) {\n logError(keyPath, errorPrefix + \".remove' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.order) {\n if (!Array.isArray(config.order) || !config.order.every(function(n) {\n return typeof n === 'string';\n })) {\n logError(keyPath, errorPrefix + \".order' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.configure) {\n if (!isOrdinaryObject(config.configure)) {\n logError(keyPath, errorPrefix + \".configure' is invalid. Must be an object with extension IDs for keys\");\n }\n }\n}\nfunction getProvidedConfigs(configState, tempConfigState) {\n return _to_consumable_array(configState.providedConfigs.map(function(c) {\n return c.config;\n })).concat([\n tempConfigState.config\n ]);\n}\n/**\n * Validates the config schema for a module. Since problems identified here are programming errors\n * that hopefully will be caught during development, this function logs errors to the console directly;\n * it's fine if we spam the user with these errors.\n */ function validateConfigSchema(moduleName, schema) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n var updateMessage = \"Please verify that you are running the latest version and, if so, alert the maintainer.\";\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(schema).filter(function(k) {\n return !k.startsWith('_');\n })[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var thisKeyPath = keyPath + (keyPath && '.') + key;\n var schemaPart = schema[key];\n if (thisKeyPath === 'Display conditions') {\n console.error(\"\".concat(moduleName, ' declares a configuration option called \"Display conditions\"; the \"Display conditions\" option is a reserved name. ').concat(updateMessage));\n }\n if (thisKeyPath === 'Translation overrides') {\n console.error(\"\".concat(moduleName, ' declares a configuration option called \"Translation overrides\"; the \"Translation overrides\" option is a reserved name. ').concat(updateMessage));\n }\n if (!isOrdinaryObject(schemaPart)) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage));\n continue;\n }\n if (!schemaPart.hasOwnProperty('_default')) {\n // recurse for nested config keys\n validateConfigSchema(moduleName, schemaPart, thisKeyPath);\n }\n var elements = schemaPart._elements;\n if (hasObjectSchema(elements)) {\n validateConfigSchema(moduleName, elements, thisKeyPath + '._elements');\n }\n if (schemaPart._validators) {\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = schemaPart._validators[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var _$validator = _step1.value;\n if (typeof _$validator !== 'function') {\n console.error(\"\".concat(moduleName, \" has invalid validator for key '\").concat(thisKeyPath, \"' \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: validators must be functions that return either \" + \"undefined or an error string. Received \".concat(_$validator, \".\"));\n }\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n var valueType = schemaPart._type;\n if (valueType && !Object.values(_types_js__rspack_import_0.Type).includes(valueType)) {\n console.error(\"\".concat(moduleName, \" has invalid type for key '\").concat(thisKeyPath, \"' \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: the allowed types are \".concat(Object.values(_types_js__rspack_import_0.Type).join(', '), \". \") + \"Received '\".concat(valueType, \"'\"));\n }\n if (Object.keys(schemaPart).every(function(k) {\n return [\n '_description',\n '_validators',\n '_elements',\n '_type'\n ].includes(k);\n }) && !keyPath.includes('._elements')) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: all config elements must have a default. \" + \"Received \".concat(JSON.stringify(schemaPart)));\n }\n if (elements && valueType && ![\n _types_js__rspack_import_0.Type.Array,\n _types_js__rspack_import_0.Type.Object\n ].includes(valueType)) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: the 'elements' key only works with '_type' equal to 'Array' or 'Object'. \" + \"Received \".concat(JSON.stringify(valueType)));\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}\nfunction getConfigForModule(moduleName, configState, tempConfigState) {\n var schema = configState.schemas[moduleName];\n var inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n validateStructure(schema, inputConfig, moduleName);\n var config = setDefaults(schema, inputConfig);\n runAllValidatorsInConfigTree(schema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction getConfigForModuleImplicitSchema(moduleName, configState, tempConfigState) {\n var inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n var config = setDefaults(implicitConfigSchema, inputConfig);\n runAllValidatorsInConfigTree(implicitConfigSchema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction mergeConfigsFor(moduleName, allConfigs) {\n var allConfigsForModule = allConfigs.map(function(param) {\n var c = param[moduleName];\n return c;\n }).filter(function(c) {\n return !!c;\n });\n return mergeConfigs(allConfigsForModule);\n}\nfunction mergeConfigs(configs) {\n return configs.reduce(function(acc, config) {\n return mergeDeepReplace(acc, config);\n }, {});\n}\n/**\n * Recursively check the provided config tree to make sure that all\n * of the provided properties exist in the schema, and that types are\n * correct. Does not run validators yet, since those will be run on\n * the config with the defaults filled in.\n */ function validateStructure(schema, config) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n // validate each constituent element\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n var thisKeyPath = keyPath + '.' + key;\n var schemaPart = schema[key];\n if (!schema.hasOwnProperty(key)) {\n if (!(key === 'extensionSlots' && keyPath !== '')) {\n logError(thisKeyPath, \"Unknown config key '\".concat(thisKeyPath, \"' provided. Ignoring.\"));\n }\n continue;\n }\n validateBranchStructure(schemaPart, value, thisKeyPath);\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 validateBranchStructure(schemaPart, value, keyPath) {\n checkType(keyPath, schemaPart._type, value);\n if (isOrdinaryObject(value)) {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Object) {\n // validate as freeform object\n validateFreeformObjectStructure(schemaPart, value, keyPath);\n } else if (!(schemaPart.hasOwnProperty('_default') || schemaPart.hasOwnProperty('_type'))) {\n // validate as normal nested config\n validateStructure(schemaPart, value, keyPath);\n }\n } else {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Array) {\n validateArrayStructure(schemaPart, value, keyPath);\n }\n }\n}\nfunction validateFreeformObjectStructure(freeformObjectSchema, config, keyPath) {\n if (freeformObjectSchema._elements) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n validateBranchStructure(freeformObjectSchema._elements, value, \"\".concat(keyPath, \".\").concat(key));\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 }\n}\nfunction validateArrayStructure(arraySchema, value, keyPath) {\n var validatedAsArray = checkType(keyPath, _types_js__rspack_import_0.Type.Array, value);\n if (!validatedAsArray) {\n return;\n }\n // if there is an array element object schema, verify that elements match it\n if (hasObjectSchema(arraySchema._elements)) {\n for(var i = 0; i < value.length; i++){\n validateBranchStructure(arraySchema._elements, value[i], \"\".concat(keyPath, \"[\").concat(i, \"]\"));\n }\n }\n for(var i1 = 0; i1 < value.length; i1++){\n var _arraySchema__elements;\n checkType(\"\".concat(keyPath, \"[\").concat(i1, \"]\"), (_arraySchema__elements = arraySchema._elements) === null || _arraySchema__elements === void 0 ? void 0 : _arraySchema__elements._type, value[i1]);\n }\n}\n/**\n * Run all the validators in the config tree. This should be run\n * on the config object after it has been filled in with all the defaults, since\n * higher-level validators may refer to default values.\n */ function runAllValidatorsInConfigTree(schema, config) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n // If `!schema`, there should have been a structural validation error printed already.\n if (schema) {\n if (config !== schema._default) {\n runValidators(keyPath, schema._validators, config);\n }\n if (isOrdinaryObject(config)) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n var thisKeyPath = keyPath + '.' + key;\n var schemaPart = schema[key];\n if (schema._type === _types_js__rspack_import_0.Type.Object && schema._elements) {\n runAllValidatorsInConfigTree(schema._elements, value, thisKeyPath);\n } else {\n runAllValidatorsInConfigTree(schemaPart, value, thisKeyPath);\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 } else if (Array.isArray(config) && schema._elements) {\n for(var i = 0; i < config.length; i++){\n runAllValidatorsInConfigTree(schema._elements, config[i], \"\".concat(keyPath, \"[\").concat(i, \"]\"));\n }\n }\n }\n}\n/**\n * Run type validation for the value, logging any errors.\n * @returns true if validation passes, false otherwise\n */ function checkType(keyPath, _type, value) {\n if (_type) {\n var _$validator = {\n Array: _validators_type_validators_js__rspack_import_1.isArray,\n Boolean: _validators_type_validators_js__rspack_import_1.isBoolean,\n ConceptUuid: _validators_type_validators_js__rspack_import_1.isUuid,\n Number: _validators_type_validators_js__rspack_import_1.isNumber,\n Object: _validators_type_validators_js__rspack_import_1.isObject,\n String: _validators_type_validators_js__rspack_import_1.isString,\n UUID: _validators_type_validators_js__rspack_import_1.isUuid,\n PersonAttributeTypeUuid: _validators_type_validators_js__rspack_import_1.isUuid,\n PatientIdentifierTypeUuid: _validators_type_validators_js__rspack_import_1.isUuid\n };\n return runValidators(keyPath, [\n _$validator[_type]\n ], value);\n }\n return true;\n}\n/**\n * Runs validators, logging errors.\n * @returns true if all pass, false otherwise.\n */ function runValidators(keyPath, validators, value) {\n var returnValue = true;\n if (validators) {\n try {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = validators[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _$validator = _step.value;\n var validatorResult = _$validator(value);\n if (typeof validatorResult === 'string') {\n var message = (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === 'object' ? \"Invalid configuration for \".concat(keyPath, \": \").concat(validatorResult) : \"Invalid configuration value \".concat(value, \" for \").concat(keyPath, \": \").concat(validatorResult);\n logError(keyPath, message);\n returnValue = false;\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 } catch (e) {\n console.error('Skipping invalid validator at \"'.concat(keyPath, '\". Encountered error\\n\t').concat(e));\n }\n }\n return returnValue;\n}\n// Recursively fill in the config with values from the schema.\nvar setDefaults = function setDefaults1(schema, inputConfig) {\n var config = structuredClone(inputConfig);\n if (!schema) {\n return config;\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n var _loop = function() {\n var key = _step.value;\n var configPart = config[key];\n var schemaPart = schema[key];\n // The `schemaPart &&` clause of this `if` statement will only fail\n // if the schema is very invalid. It is there to prevent the app from\n // crashing completely, though it will produce unexpected behavior.\n // If this happens, there should be legible errors in the console from\n // the schema validator.\n if (schemaPart && (schemaPart.hasOwnProperty('_type') || schemaPart.hasOwnProperty('_default'))) {\n // We assume that schemaPart defines a config value, since it has\n // a property `_type` or `_default`.\n if (!config.hasOwnProperty(key)) {\n config[key] = schemaPart['_default'];\n }\n // We also check if it is an object or array with object elements, in which case we recurse\n var elements = schemaPart._elements;\n if (configPart && hasObjectSchema(elements)) {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Array && Array.isArray(configPart)) {\n var configWithDefaults = configPart.map(function(conf) {\n return setDefaults(elements, conf);\n });\n config[key] = configWithDefaults;\n } else if (schemaPart._type === _types_js__rspack_import_0.Type.Object) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(configPart)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator.next()).done); _iteratorNormalCompletion = true){\n var objectKey = _step1.value;\n configPart[objectKey] = setDefaults(elements, configPart[objectKey]);\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 }\n }\n } else if (isOrdinaryObject(schemaPart)) {\n // Since schemaPart has no property \"_type\", if it's an ordinary object\n // (unlike, importantly, the validators array), we assume it is a parent config property.\n // We recurse to config[key] and schema[key]. Default config[key] to {}.\n var selectedConfigPart = configPart !== null && configPart !== void 0 ? configPart : {};\n // There will have been a validation error already if configPart is not a plain object.\n if (isOrdinaryObject(selectedConfigPart)) {\n config[key] = setDefaults(schemaPart, selectedConfigPart);\n }\n }\n };\n for(var _iterator = Object.keys(schema)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();\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 config;\n};\nfunction hasObjectSchema(elementsSchema) {\n return !!elementsSchema && Object.keys(elementsSchema).filter(function(e) {\n return ![\n '_default',\n '_validators'\n ].includes(e);\n }).length > 0;\n}\nfunction isOrdinaryObject(value) {\n return (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === 'object' && !Array.isArray(value) && value !== null;\n}\n/** Keep track of which validation errors we have displayed. Each one should only be displayed once. */ var displayedValidationMessages = new Set();\nfunction logError(keyPath, message) {\n var key = \"\".concat(keyPath, \":::\").concat(message);\n // technically, this should not be possible, but because of how things wind-up transpiled, this isn't impossible\n if (!displayedValidationMessages) {\n displayedValidationMessages = new Set();\n }\n if (!displayedValidationMessages.has(key)) {\n console.error(message);\n displayedValidationMessages.add(key);\n }\n}\n/**\n * Normally, configuration errors are only displayed once. This function clears the list of\n * displayed errors, so that they will be displayed again.\n *\n * @internal\n */ function clearConfigErrors(keyPath) {\n if (keyPath) {\n displayedValidationMessages.forEach(function(key) {\n if (key.startsWith(keyPath)) {\n displayedValidationMessages.delete(key);\n }\n });\n } else {\n displayedValidationMessages.clear();\n }\n}\n/**\n * Cleans up all config store subscriptions and re-establishes them. This is primarily\n * useful for testing, where subscriptions set up at module load time need to be cleared\n * between tests to prevent infinite update loops. After clearing, subscriptions are\n * re-established so the config system continues to work normally.\n *\n * @internal\n */ function resetConfigSystem() {\n configSubscriptions.forEach(function(unsubscribe) {\n return unsubscribe();\n });\n configSubscriptions.length = 0;\n // Cached configs are keyed on input identity, so a test that reuses the same schema or config\n // objects across cases would otherwise be served the previous case's result.\n moduleConfigCache.clear();\n extensionConfigCache.clear();\n schemaValuesAndSourcesCache.clear();\n implementerToolsModuleCache.clear();\n setupConfigSubscriptions();\n}\n/**\n * Copied over from esm-extensions. It rightly belongs to that module, but esm-config\n * cannot depend on esm-extensions.\n */ function getExtensionNameFromId(extensionId) {\n var _extensionId_split = _sliced_to_array(extensionId.split('#'), 1), extensionName = _extensionId_split[0];\n return extensionName;\n}\n/**\n * The translation overrides schema is used in the implicit schema given to every module;\n * plus any additional translation namespaces (at time of writing, this is just 'core').\n */ var translationOverridesSchema = {\n 'Translation overrides': {\n _description: 'Per-language overrides for frontend translations should be keyed by language code and each language dictionary contains the translation key and the display value',\n _type: _types_js__rspack_import_0.Type.Object,\n _default: {},\n _validators: [\n (0,_validators_validator_js__rspack_import_2.validator)(function(o) {\n return Object.keys(o).every(function(k) {\n return /^[a-z]{2,3}(-[A-Z]{2,3})?$/.test(k);\n });\n }, function(o) {\n var badKeys = Object.keys(o).filter(function(k) {\n return !/^[a-z]{2,3}(-[A-Z]{2,3})?$/.test(k);\n });\n return \"The 'Translation overrides' object should have language codes for keys. Language codes must be in the form of a two-to-three letter language code optionally followed by a hyphen and a two-to-three letter country code. The following keys do not conform: \".concat(badKeys.join(', '), \".\");\n })\n ]\n }\n};\n/**\n * The implicitConfigSchema is implicitly included in every configuration schema\n */ var implicitConfigSchema = _object_spread({\n 'Display conditions': {\n privileges: {\n _description: 'The privilege(s) the user must have to use this extension',\n _type: _types_js__rspack_import_0.Type.Array,\n _default: []\n },\n expression: {\n _description: 'The expression that determines whether the extension is displayed',\n _type: _types_js__rspack_import_0.Type.String,\n _default: undefined\n }\n }\n}, translationOverridesSchema);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWNvbmZpZy9kaXN0L21vZHVsZS1jb25maWcvbW9kdWxlLWNvbmZpZy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1jb25maWcvZGlzdC9tb2R1bGUtY29uZmlnL21vZHVsZS1jb25maWcuanM/YzNhNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQ29uZmlnICovIGltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCwgbWVyZ2VXaXRoLCBvbWl0IGFzIGxvZGFzaE9taXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBpc0FycmF5LCBpc0Jvb2xlYW4sIGlzVXVpZCwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gXCIuLi92YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9ycy5qc1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4uL3ZhbGlkYXRvcnMvdmFsaWRhdG9yLmpzXCI7XG5pbXBvcnQgeyBjb25maWdFeHRlbnNpb25TdG9yZSwgY29uZmlnSW50ZXJuYWxTdG9yZSwgZ2V0Q29uZmlnU3RvcmUsIGdldEV4dGVuc2lvbkNvbmZpZywgZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSwgZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLCBjbGVhckNvbmZpZ0Rlcml2YXRpb25FcnJvciwgaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlLCBpbnZhbGlkYXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZywgcmVjb3JkQ29uZmlnRGVyaXZhdGlvbkVycm9yLCBzZXRJbXBsZW1lbnRlclRvb2xzQ29uZmlnUmVjb21wdXRlciwgdGVtcG9yYXJ5Q29uZmlnU3RvcmUgfSBmcm9tIFwiLi9zdGF0ZS5qc1wiO1xuLyoqXG4gKiBEZWVwIG1lcmdlIHR3byBvYmplY3RzLCB3aXRoIHJpZ2h0LXNpZGUgdmFsdWVzIHRha2luZyBwcmVjZWRlbmNlLlxuICogQXJyYXlzIGFyZSByZXBsYWNlZCBlbnRpcmVseSAobm90IG1lcmdlZCBieSBpbmRleCksIG1hdGNoaW5nIHRoZVxuICogYmVoYXZpb3Igb2YgcmFtZGEncyBtZXJnZURlZXBSaWdodC5cbiAqLyBmdW5jdGlvbiBtZXJnZURlZXBSZXBsYWNlKGxlZnQsIHJpZ2h0KSB7XG4gICAgcmV0dXJuIG1lcmdlV2l0aCh7fSwgbGVmdCwgcmlnaHQsIChfb2JqVmFsdWUsIHNyY1ZhbHVlKT0+e1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzcmNWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzcmNWYWx1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBTdG9yZSBzZXR1cFxuICpcbiAqXG4gKiBTZXQgdXAgc3RvcmVzIGFuZCBzdWJzY3JpcHRpb25zIHNvIHRoYXQgaW5wdXRzIGdldCBwcm9jZXNzZWQgYXBwcm9wcmlhdGVseS5cbiAqXG4gKiBUaGVyZSBhcmUgKmlucHV0KiBzdG9yZXMgYW5kICpvdXRwdXQqIHN0b3Jlcy4gVGhlICppbnB1dCogc3RvcmVzXG4gKiBhcmUgY29uZmlnSW50ZXJuYWxTdG9yZSwgdGVtcG9yYXJ5Q29uZmlnU3RvcmUsIGFuZCBjb25maWdFeHRlbnNpb25TdG9yZS4gVGhlXG4gKiBvdXRwdXQgc3RvcmVzIGFyZSBzZXQgaW4gdGhlIGBjb21wdXRlLi4uYCBmdW5jdGlvbnMuIFRoZXkgYXJlIHRoZSBtb2R1bGVcbiAqIGNvbmZpZyBzdG9yZXMsIHRoZSBleHRlbnNpb24gc2xvdCBjb25maWcgc3RvcmVzIChieSBtb2R1bGUpLCB0aGUgZXh0ZW5zaW9uXG4gKiBjb25maWcgc3RvcmVzLCBhbmQgdGhlIGltcGxlbWVudGVyIHRvb2xzIGNvbmZpZyBzdG9yZS5cbiAqXG4gKiBUaGlzIGNvZGUgc2V0cyB1cCB0aGUgc3Vic2NyaXB0aW9ucyBzbyB0aGF0IHdoZW4gYW4gaW5wdXQgc3RvcmUgY2hhbmdlcyxcbiAqIHRoZSBjb3JyZWN0IHNldCBvZiBvdXRwdXQgc3RvcmVzIGFyZSB1cGRhdGVkLlxuICpcbiAqIEFsbCBgY29tcHV0ZS4uLmAgZnVuY3Rpb25zIGV4Y2VwdCBgY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3NgIGFyZSBwdXJlXG4gKiAob3IgYXJlIHN1cHBvc2VkIHRvIGJlKSwgb3RoZXIgdGhhbiB0aGUgZmFjdCB0aGF0IHRoZXkgYWxsIGBzZXRTdGF0ZWBcbiAqIHN0b3JlIHZhbHVlcyBhdCB0aGUgZW5kLiBgY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3NgIGNhbGxzIGBnZXRHbG9iYWxTdG9yZWAsXG4gKiB3aGljaCBjcmVhdGVzIHN0b3Jlcy5cbiAqLyAvLyBTdG9yZSB1bnN1YnNjcmliZSBmdW5jdGlvbnMgdG8gYWxsb3cgY2xlYW51cCAoZS5nLiwgaW4gdGVzdHMgb3IgaG90IG1vZHVsZSByZWxvYWRpbmcpXG5jb25zdCBjb25maWdTdWJzY3JpcHRpb25zID0gW107XG4vKipcbiAqIFJlY29tcHV0ZXMgYWxsIGNvbmZpZ3VyYXRpb24gZGVyaXZlZCBzdG9yZXMgYmFzZWQgb24gY3VycmVudCBzdGF0ZSBvZiBpbnB1dCBzdG9yZXMuXG4gKiBDYWxsZWQgd2hlbmV2ZXIgYW55IGlucHV0IHN0b3JlIChjb25maWdJbnRlcm5hbFN0b3JlLCB0ZW1wb3JhcnlDb25maWdTdG9yZSwgY29uZmlnRXh0ZW5zaW9uU3RvcmUpIGNoYW5nZXMuXG4gKi8gZnVuY3Rpb24gcmVjb21wdXRlQWxsQ29uZmlncygpIHtcbiAgICBjb25zdCBjb25maWdTdGF0ZSA9IGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB0ZW1wQ29uZmlnU3RhdGUgPSB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IGV4dGVuc2lvblN0YXRlID0gY29uZmlnRXh0ZW5zaW9uU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb21wdXRlTW9kdWxlQ29uZmlnKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpO1xuICAgIGNvbXB1dGVFeHRlbnNpb25TbG90Q29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKTtcbiAgICBjb21wdXRlRXh0ZW5zaW9uQ29uZmlncyhjb25maWdTdGF0ZSwgZXh0ZW5zaW9uU3RhdGUsIHRlbXBDb25maWdTdGF0ZSk7XG4gICAgLy8gTGFzdCwgYmVjYXVzZSBhIGZhaWx1cmUgaGVyZSBtdXN0IG5vdCBza2lwIHRoZSBvdXRwdXRzIGFib3ZlLiBPbmx5IGtlcHQgY3VycmVudCB3aGlsZSB0aGVcbiAgICAvLyBpbXBsZW1lbnRlciB0b29scyBhcmUgd2F0Y2hpbmcgaXQ7IG90aGVyd2lzZSBkZXJpdmVkIG9uIHJlYWQuXG4gICAgaW52YWxpZGF0ZUltcGxlbWVudGVyVG9vbHNDb25maWcoKTtcbn1cbmZ1bmN0aW9uIHNldHVwQ29uZmlnU3Vic2NyaXB0aW9ucygpIHtcbiAgICAvLyBSZWdpc3RlcmVkIGhlcmUgcmF0aGVyIHRoYW4gYXQgbW9kdWxlIGxvYWQgc28gdGhhdCBgcmVzZXRDb25maWdTeXN0ZW1gIHJlc3RvcmVzIGl0LlxuICAgIHNldEltcGxlbWVudGVyVG9vbHNDb25maWdSZWNvbXB1dGVyKCgpPT5jb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyhjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLmdldFN0YXRlKCkpKTtcbiAgICAvLyBJbml0aWFsIGNvbXB1dGF0aW9uXG4gICAgcmVjb21wdXRlQWxsQ29uZmlncygpO1xuICAgIC8vIFN1YnNjcmliZSB0byBhbGwgaW5wdXQgc3RvcmVzIHdpdGggYSBzaW5nbGUgaGFuZGxlclxuICAgIC8vIFRoaXMgZW5zdXJlcyB3ZSBvbmx5IHJlY29tcHV0ZSBvbmNlIGV2ZW4gaWYgbXVsdGlwbGUgc3RvcmVzIGNoYW5nZSBzaW11bHRhbmVvdXNseVxuICAgIGNvbmZpZ1N1YnNjcmlwdGlvbnMucHVzaChjb25maWdJbnRlcm5hbFN0b3JlLnN1YnNjcmliZShyZWNvbXB1dGVBbGxDb25maWdzU2FmZWx5KSwgdGVtcG9yYXJ5Q29uZmlnU3RvcmUuc3Vic2NyaWJlKHJlY29tcHV0ZUFsbENvbmZpZ3NTYWZlbHkpLCBjb25maWdFeHRlbnNpb25TdG9yZS5zdWJzY3JpYmUocmVjb21wdXRlQWxsQ29uZmlnc1NhZmVseSkpO1xufVxuLyoqIEVuc3VyZSB0aGF0IHdlIGRvIG5vdCB0aHJvdyBkdXJpbmcgYSBzdG9yZSBzdWJzY3JpcHRpb24gKi8gZnVuY3Rpb24gcmVjb21wdXRlQWxsQ29uZmlnc1NhZmVseSgpIHtcbiAgICBjbGVhckNvbmZpZ0Rlcml2YXRpb25FcnJvcigpO1xuICAgIHRyeSB7XG4gICAgICAgIHJlY29tcHV0ZUFsbENvbmZpZ3MoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlY29yZENvbmZpZ0Rlcml2YXRpb25FcnJvcihlKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHJlY29tcHV0ZSB0aGUgY29uZmlndXJhdGlvbicsIGUpO1xuICAgIH1cbn1cbi8vIFNldCB1cCBzdWJzY3JpcHRpb25zIGF0IG1vZHVsZSBsb2FkIHRpbWVcbnNldHVwQ29uZmlnU3Vic2NyaXB0aW9ucygpO1xuY29uc3QgbW9kdWxlQ29uZmlnQ2FjaGUgPSBuZXcgTWFwKCk7XG5mdW5jdGlvbiBjb21wdXRlTW9kdWxlQ29uZmlnKHN0YXRlLCB0ZW1wU3RhdGUpIHtcbiAgICBmb3IgKGxldCBtb2R1bGVOYW1lIG9mIE9iamVjdC5rZXlzKHN0YXRlLnNjaGVtYXMpKXtcbiAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgc2NoZW1hIGNvdWxkIGJlIGVpdGhlciBqdXN0IHRoZSBpbXBsaWNpdCBzY2hlbWEgb3IgdGhlIGFjdHVhbGx5XG4gICAgICAgIC8vIGRlZmluZWQgc2NoZW1hLiBXZSBydW4gd2l0aCBqdXN0IHRoZSBpbXBsaWNpdCBzY2hlbWEgYmVjYXVzZSB3ZSB3YW50IHRvIHBvcHVsYXRlXG4gICAgICAgIC8vIHRoZSBjb25maWcgc3RvcmUgd2l0aCB0aGUgdHJhbnNsYXRpb24gb3ZlcnJpZGVzIGFzIHNvb24gYXMgcG9zc2libGUuIEluIGZhY3QsIHRoZVxuICAgICAgICAvLyB0cmFuc2xhdGlvbiBzeXN0ZW0gd2lsbCB0aHJvdyBmb3IgU3VzcGVuc2UgdW50aWwgdGhlIHRyYW5zbGF0aW9uIG92ZXJyaWRlcyBhcmVcbiAgICAgICAgLy8gYXZhaWxhYmxlLCB3aGljaCBhcyBvZiB0aGlzIHdyaXRpbmcgYmxvY2tzIHRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmcm9tIG9jY3VycmluZ1xuICAgICAgICAvLyBmb3IgbW9kdWxlcyBsb2FkZWQgYmFzZWQgb24gdGhlaXIgZXh0ZW5zaW9ucy5cbiAgICAgICAgY29uc3QgbW9kdWxlU3RvcmUgPSBnZXRDb25maWdTdG9yZShtb2R1bGVOYW1lKTtcbiAgICAgICAgY29uc3Qgc2NoZW1hID0gc3RhdGUuc2NoZW1hc1ttb2R1bGVOYW1lXTtcbiAgICAgICAgY29uc3QgbW9kdWxlTG9hZGVkID0gQm9vbGVhbihzdGF0ZS5tb2R1bGVMb2FkZWRbbW9kdWxlTmFtZV0pO1xuICAgICAgICBjb25zdCBjYWNoZWQgPSBtb2R1bGVDb25maWdDYWNoZS5nZXQobW9kdWxlTmFtZSk7XG4gICAgICAgIGxldCBuZXdTdGF0ZTtcbiAgICAgICAgaWYgKGNhY2hlZCAmJiBjYWNoZWQuc2NoZW1hID09PSBzY2hlbWEgJiYgY2FjaGVkLm1vZHVsZUxvYWRlZCA9PT0gbW9kdWxlTG9hZGVkICYmIGNhY2hlZC5wcm92aWRlZENvbmZpZ3MgPT09IHN0YXRlLnByb3ZpZGVkQ29uZmlncyAmJiBjYWNoZWQudGVtcG9yYXJ5Q29uZmlnID09PSB0ZW1wU3RhdGUuY29uZmlnKSB7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IGNhY2hlZC5zdGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IG1vZHVsZUxvYWRlZCA/IGdldENvbmZpZ0Zvck1vZHVsZShtb2R1bGVOYW1lLCBzdGF0ZSwgdGVtcFN0YXRlKSA6IGdldENvbmZpZ0Zvck1vZHVsZUltcGxpY2l0U2NoZW1hKG1vZHVsZU5hbWUsIHN0YXRlLCB0ZW1wU3RhdGUpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PdmVycmlkZXNMb2FkZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgbG9hZGVkOiBtb2R1bGVMb2FkZWQsXG4gICAgICAgICAgICAgICAgY29uZmlnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbW9kdWxlQ29uZmlnQ2FjaGUuc2V0KG1vZHVsZU5hbWUsIHtcbiAgICAgICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVkLFxuICAgICAgICAgICAgICAgIHByb3ZpZGVkQ29uZmlnczogc3RhdGUucHJvdmlkZWRDb25maWdzLFxuICAgICAgICAgICAgICAgIHRlbXBvcmFyeUNvbmZpZzogdGVtcFN0YXRlLmNvbmZpZyxcbiAgICAgICAgICAgICAgICBzdGF0ZTogbmV3U3RhdGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdyaXRpbmcgdW5jb25kaXRpb25hbGx5IHdvdWxkIGhhbmQgZXZlcnkgYHVzZUNvbmZpZ2AgY29uc3VtZXIgaW4gdGhlIGFwcGxpY2F0aW9uIGEgbmV3XG4gICAgICAgIC8vIG9iamVjdCDigJQgYW5kIGEgcmUtcmVuZGVyIOKAlCB3aGVuZXZlciBhbnkgbW9kdWxlIG9yIGV4dGVuc2lvbiBhbnl3aGVyZSBpcyBsb2FkZWQuXG4gICAgICAgIGNvbnN0IG9sZFN0YXRlID0gbW9kdWxlU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICAgICAgaWYgKG9sZFN0YXRlLmxvYWRlZCAhPT0gbmV3U3RhdGUubG9hZGVkIHx8IG9sZFN0YXRlLnRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkICE9PSBuZXdTdGF0ZS50cmFuc2xhdGlvbk92ZXJyaWRlc0xvYWRlZCB8fCAhaXNFcXVhbChvbGRTdGF0ZS5jb25maWcsIG5ld1N0YXRlLmNvbmZpZykpIHtcbiAgICAgICAgICAgIG1vZHVsZVN0b3JlLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGNvbXB1dGVFeHRlbnNpb25TbG90Q29uZmlncyhzdGF0ZSwgdGVtcFN0YXRlKSB7XG4gICAgY29uc3Qgc2xvdENvbmZpZ3MgPSBnZXRFeHRlbnNpb25TbG90Q29uZmlncyhzdGF0ZSwgdGVtcFN0YXRlKTtcbiAgICBjb25zdCBzbG90U3RvcmUgPSBnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlKCk7XG4gICAgY29uc3Qgb2xkU2xvdHMgPSBzbG90U3RvcmUuZ2V0U3RhdGUoKS5zbG90cztcbiAgICBjb25zdCBzbG90cyA9IHt9O1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBbc2xvdE5hbWUsIGNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXMoc2xvdENvbmZpZ3MpKXtcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBvbGRTbG90c1tzbG90TmFtZV07XG4gICAgICAgIC8vIEVudHJpZXMga2VlcCB0aGVpciBpZGVudGl0eSB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGJlaGluZCB0aGVtIGhhc24ndCBjaGFuZ2VkLCBzbyB0aGF0XG4gICAgICAgIC8vIGNoYW5naW5nIG9uZSBzbG90J3MgY29uZmlndXJhdGlvbiBkb2Vzbid0IGludmFsaWRhdGUgZXZlcnkgb3RoZXIgY29uZmlndXJlZCBzbG90LlxuICAgICAgICBpZiAocHJldmlvdXM/LmxvYWRlZCAmJiBpc0VxdWFsKHByZXZpb3VzLmNvbmZpZywgY29uZmlnKSkge1xuICAgICAgICAgICAgc2xvdHNbc2xvdE5hbWVdID0gcHJldmlvdXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzbG90c1tzbG90TmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJ1aWx0IGZyb20gc2NyYXRjaCByYXRoZXIgdGhhbiBtZXJnZWQgb3ZlciB0aGUgcHJldmlvdXMgc3RhdGU6IGEgc2xvdCB3aG9zZSBjb25maWd1cmF0aW9uXG4gICAgLy8gaGFzIGJlZW4gcmVtb3ZlZCDigJQgY2xlYXJpbmcgdGhlIHRlbXBvcmFyeSBjb25maWcsIHNheSDigJQgaGFzIHRvIGxvc2UgaXRzIGVudHJ5LCBvciB0aGUgb2xkXG4gICAgLy8gY29uZmlndXJhdGlvbiBzdGF5cyBpbiBmb3JjZSB1bnRpbCB0aGUgcGFnZSBpcyByZWxvYWRlZC5cbiAgICBpZiAoY2hhbmdlZCB8fCBPYmplY3Qua2V5cyhvbGRTbG90cykubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhzbG90cykubGVuZ3RoKSB7XG4gICAgICAgIHNsb3RTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBzbG90c1xuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyhzdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSB7XG4gICAgY29uc3Qgb2xkU3RhdGUgPSBpbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBjb25maWcgPSBnZXRJbXBsZW1lbnRlclRvb2xzQ29uZmlnKHN0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpO1xuICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBjb25maWdcbiAgICB9O1xuICAgIC8vIFVzZSBkZWVwIGVxdWFsaXR5IG9uIHRoZSBhY3R1YWwgY29uZmlnIGNvbnRlbnQsIG5vdCB0aGUgd3JhcHBlciBvYmplY3RcbiAgICBpZiAoIWlzRXF1YWwob2xkU3RhdGUuY29uZmlnLCBuZXdTdGF0ZS5jb25maWcpKSB7XG4gICAgICAgIGltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZS5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MoY29uZmlnU3RhdGUsIGV4dGVuc2lvblN0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpIHtcbiAgICBjb25zdCBleHRlbnNpb25zQ29uZmlnU3RvcmUgPSBnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUoKTtcbiAgICBjb25zdCBvbGRDb25maWdzID0gZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLmdldFN0YXRlKCkuY29uZmlncztcbiAgICBjb25zdCBjb25maWdzID0ge307XG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBsZXQgZW50cnlDb3VudCA9IDA7XG4gICAgLy8gV2UgYXNzdW1lIHRoYXQgdGhlIG1vZHVsZSBzY2hlbWEgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkLCBzaW5jZSB0aGUgZXh0ZW5zaW9uXG4gICAgLy8gaXQgY29udGFpbnMgaXMgbW91bnRlZC5cbiAgICBmb3IgKGxldCBleHRlbnNpb24gb2YgZXh0ZW5zaW9uU3RhdGUubW91bnRlZEV4dGVuc2lvbnMpe1xuICAgICAgICBjb25zdCBjb25maWcgPSBjb21wdXRlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbi5zbG90TW9kdWxlTmFtZSwgZXh0ZW5zaW9uLmV4dGVuc2lvbk1vZHVsZU5hbWUsIGV4dGVuc2lvbi5zbG90TmFtZSwgZXh0ZW5zaW9uLmV4dGVuc2lvbklkLCBjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBvbGRDb25maWdzW2V4dGVuc2lvbi5zbG90TmFtZV0/LltleHRlbnNpb24uZXh0ZW5zaW9uSWRdO1xuICAgICAgICAvLyBFbnRyaWVzIGtlZXAgdGhlaXIgaWRlbnRpdHkgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBiZWhpbmQgdGhlbSBoYXNuJ3QgY2hhbmdlZCwgc28gdGhhdFxuICAgICAgICAvLyBtb3VudGluZyBvbmUgZXh0ZW5zaW9uIGRvZXNuJ3QgaGFuZCBldmVyeSBvdGhlciBtb3VudGVkIGV4dGVuc2lvbiBhIG5ldyBjb25maWcgb2JqZWN0LlxuICAgICAgICBjb25zdCBlbnRyeSA9IHByZXZpb3VzPy5sb2FkZWQgJiYgaXNFcXVhbChwcmV2aW91cy5jb25maWcsIGNvbmZpZykgPyBwcmV2aW91cyA6IHtcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGxvYWRlZDogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZW50cnkgIT09IHByZXZpb3VzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvbmZpZ3NbZXh0ZW5zaW9uLnNsb3ROYW1lXSkge1xuICAgICAgICAgICAgY29uZmlnc1tleHRlbnNpb24uc2xvdE5hbWVdID0ge307XG4gICAgICAgIH1cbiAgICAgICAgY29uZmlnc1tleHRlbnNpb24uc2xvdE5hbWVdW2V4dGVuc2lvbi5leHRlbnNpb25JZF0gPSBlbnRyeTtcbiAgICAgICAgZW50cnlDb3VudCsrO1xuICAgIH1cbiAgICAvLyBTbG90cyBrZWVwIHRoZWlyIGlkZW50aXR5IHRvbyB3aGVuIG5vbmUgb2YgdGhlaXIgZW50cmllcyBjaGFuZ2VkLiBTdWJzY3JpYmVycyBjb21wYXJlIHRoZXNlXG4gICAgLy8gcGVyLXNsb3Qgb2JqZWN0cyB0byB3b3JrIG91dCB3aGljaCBzbG90cyB0byByZS1kZXJpdmUsIHNvIGhhbmRpbmcgb3V0IGEgZnJlc2ggb25lIGZvciBldmVyeVxuICAgIC8vIHNsb3Qgb24gZXZlcnkgd3JpdGUgd291bGQgbWFyayBldmVyeSBzbG90IHdpdGggYSBtb3VudGVkIGV4dGVuc2lvbiBkaXJ0eS5cbiAgICBmb3IgKGNvbnN0IFtzbG90TmFtZSwgc2xvdENvbmZpZ3NdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZ3MpKXtcbiAgICAgICAgY29uc3QgcHJldmlvdXNTbG90ID0gb2xkQ29uZmlnc1tzbG90TmFtZV07XG4gICAgICAgIGlmIChwcmV2aW91c1Nsb3QgJiYgT2JqZWN0LmtleXMocHJldmlvdXNTbG90KS5sZW5ndGggPT09IE9iamVjdC5rZXlzKHNsb3RDb25maWdzKS5sZW5ndGggJiYgT2JqZWN0LmVudHJpZXMoc2xvdENvbmZpZ3MpLmV2ZXJ5KChbZXh0ZW5zaW9uSWQsIGVudHJ5XSk9PnByZXZpb3VzU2xvdFtleHRlbnNpb25JZF0gPT09IGVudHJ5KSkge1xuICAgICAgICAgICAgY29uZmlnc1tzbG90TmFtZV0gPSBwcmV2aW91c1Nsb3Q7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjaGFuZ2VkKSB7XG4gICAgICAgIC8vIE5vdGhpbmcgd2FzIGFkZGVkIG9yIGFsdGVyZWQsIGJ1dCBhbiBleHRlbnNpb24gbWF5IGhhdmUgdW5tb3VudGVkLCB3aGljaCBvbmx5IHNob3dzIHVwIGFzIGFcbiAgICAgICAgLy8gbWlzc2luZyBlbnRyeS5cbiAgICAgICAgY2hhbmdlZCA9IE9iamVjdC5rZXlzKG9sZENvbmZpZ3MpLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoY29uZmlncykubGVuZ3RoIHx8IE9iamVjdC52YWx1ZXMob2xkQ29uZmlncykucmVkdWNlKCh0b3RhbCwgc2xvdCk9PnRvdGFsICsgT2JqZWN0LmtleXMoc2xvdCkubGVuZ3RoLCAwKSAhPT0gZW50cnlDb3VudDtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGNvbmZpZ3NcbiAgICAgICAgfSk7XG4gICAgfVxufVxuLypcbiAqIEFQSVxuICpcbiAqLyAvKipcbiAqIFRoaXMgZGVmaW5lcyBhIGNvbmZpZ3VyYXRpb24gc2NoZW1hIGZvciBhIG1vZHVsZS4gVGhlIHNjaGVtYSB0ZWxscyB0aGVcbiAqIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGhvdyB0aGUgbW9kdWxlIGNhbiBiZSBjb25maWd1cmVkLiBJdCBzcGVjaWZpZXNcbiAqIHdoYXQgbWFrZXMgY29uZmlndXJhdGlvbiB2YWxpZCBvciBpbnZhbGlkLlxuICpcbiAqIFNlZSBbQ29uZmlndXJhdGlvbiBTeXN0ZW1dKGh0dHBzOi8vbzMtZG9jcy5vcGVubXJzLm9yZy9lbi1VUy9kb2NzL2NvbmZpZ3VyYXRpb24tc3lzdGVtKVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZGVmaW5pbmcgYSBjb25maWcgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBtb2R1bGVOYW1lIE5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgc2NoZW1hIGlzIGJlaW5nIGRlZmluZWQgZm9yLiBHZW5lcmFsbHlcbiAqICAgc2hvdWxkIGJlIHRoZSBvbmUgaW4gd2hpY2ggdGhlIGBkZWZpbmVDb25maWdTY2hlbWFgIGNhbGwgdGFrZXMgcGxhY2UuXG4gKiBAcGFyYW0gc2NoZW1hIFRoZSBjb25maWcgc2NoZW1hIGZvciB0aGUgbW9kdWxlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lLCBzY2hlbWEpIHtcbiAgICB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lLCBzY2hlbWEpO1xuICAgIGNvbnN0IGVuaGFuY2VkU2NoZW1hID0gbWVyZ2VEZWVwUmVwbGFjZShzY2hlbWEsIGltcGxpY2l0Q29uZmlnU2NoZW1hKTtcbiAgICBjb25maWdJbnRlcm5hbFN0b3JlLnNldFN0YXRlKChzdGF0ZSk9Pih7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zY2hlbWFzLFxuICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXTogZW5oYW5jZWRTY2hlbWFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb2R1bGVMb2FkZWQ6IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5tb2R1bGVMb2FkZWQsXG4gICAgICAgICAgICAgICAgW21vZHVsZU5hbWVdOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbn1cbi8qKlxuICogVGhpcyBhbGVydHMgdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtIHRoYXQgYSBtb2R1bGUgZXhpc3RzLiBUaGlzIGFsbG93cyBjb25maWcgdG8gYmVcbiAqIHByb2Nlc3NlZCwgd2hpbGUgc3RpbGwgYWxsb3dpbmcgdGhlIGV4dGVuc2lvbiBzeXN0ZW0gdG8ga25vdyB3aGV0aGVyIHRoZSBtb2R1bGUgaGFzXG4gKiBhY3R1YWxseSBoYWQgaXRzIGZyb250IGJ1bmRsZSBleGVjdXRlZCB5ZXQuXG4gKlxuICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGluIGVzbS1hcHAtc2hlbGwuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gbW9kdWxlTmFtZVxuICovIGV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck1vZHVsZVdpdGhDb25maWdTeXN0ZW0obW9kdWxlTmFtZSkge1xuICAgIGNvbmZpZ0ludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgc2NoZW1hczoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNjaGVtYXMsXG4gICAgICAgICAgICAgICAgW21vZHVsZU5hbWVdOiBpbXBsaWNpdENvbmZpZ1NjaGVtYVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG59XG4vKipcbiAqIFRoaXMgYWxlcnRzIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbSB0aGF0IGEgbW9kdWxlIGhhcyBiZWVuIGxvYWRlZC5cbiAqXG4gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gZXNtLWFwcC1zaGVsbC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBtb2R1bGVOYW1lXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTW9kdWxlTG9hZChtb2R1bGVOYW1lKSB7XG4gICAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBtb2R1bGVMb2FkZWQ6IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5tb2R1bGVMb2FkZWQsXG4gICAgICAgICAgICAgICAgW21vZHVsZU5hbWVdOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbn1cbi8qKlxuICogVGhpcyBhbGxvd3MgdGhlIGNvbmZpZyBzeXN0ZW0gdG8gc3VwcG9ydCB0cmFuc2xhdGlvbiBvdmVycmlkZXMgZm9yIG5hbWVzcGFjZXMgdGhhdFxuICogZG8gbm90IGNvcnJlc3BvbmQgdG8gbW9kdWxlcy5cbiAqXG4gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gZXNtLWFwcC1zaGVsbC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSBuYW1lc3BhY2VcbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJUcmFuc2xhdGlvbk5hbWVzcGFjZShuYW1lc3BhY2UpIHtcbiAgICBjb25maWdJbnRlcm5hbFN0b3JlLnNldFN0YXRlKChzdGF0ZSk9Pih7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zY2hlbWFzLFxuICAgICAgICAgICAgICAgIFtuYW1lc3BhY2VdOiB0cmFuc2xhdGlvbk92ZXJyaWRlc1NjaGVtYVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG59XG4vKipcbiAqIFRoaXMgZGVmaW5lcyBhIGNvbmZpZ3VyYXRpb24gc2NoZW1hIGZvciBhbiBleHRlbnNpb24uIFdoZW4gYSBzY2hlbWEgaXMgZGVmaW5lZFxuICogZm9yIGFuIGV4dGVuc2lvbiwgdGhhdCBleHRlbnNpb24gd2lsbCByZWNlaXZlIHRoZSBjb25maWd1cmF0aW9uIGNvcnJlc3BvbmRpbmdcbiAqIHRvIHRoYXQgc2NoZW1hLCByYXRoZXIgdGhhbiB0aGUgY29uZmlndXJhdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBtb2R1bGVcbiAqIGluIHdoaWNoIGl0IGlzIGRlZmluZWQuXG4gKlxuICogVGhlIHNjaGVtYSB0ZWxscyB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0gaG93IHRoZSBtb2R1bGUgY2FuIGJlIGNvbmZpZ3VyZWQuXG4gKiBJdCBzcGVjaWZpZXMgd2hhdCBtYWtlcyBjb25maWd1cmF0aW9uIHZhbGlkIG9yIGludmFsaWQuXG4gKlxuICogU2VlIFtDb25maWd1cmF0aW9uIFN5c3RlbV0oaHR0cHM6Ly9vMy1kb2NzLm9wZW5tcnMub3JnL2VuLVVTL2RvY3MvY29uZmlndXJhdGlvbi1zeXN0ZW0pXG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkZWZpbmluZyBhIGNvbmZpZyBzY2hlbWEuXG4gKlxuICogQHBhcmFtIGV4dGVuc2lvbk5hbWUgTmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHRoZSBzY2hlbWEgaXMgYmVpbmcgZGVmaW5lZCBmb3IuXG4gKiAgIFNob3VsZCBtYXRjaCB0aGUgYG5hbWVgIG9mIG9uZSBvZiB0aGUgYGV4dGVuc2lvbnNgIGVudHJpZXMgZGVmaW5lZCBpblxuICogICB0aGUgYXBwJ3MgYHJvdXRlcy5qc29uYCBmaWxlLlxuICogQHBhcmFtIHNjaGVtYSBUaGUgY29uZmlnIHNjaGVtYSBmb3IgdGhlIGV4dGVuc2lvblxuICovIGV4cG9ydCBmdW5jdGlvbiBkZWZpbmVFeHRlbnNpb25Db25maWdTY2hlbWEoZXh0ZW5zaW9uTmFtZSwgc2NoZW1hKSB7XG4gICAgdmFsaWRhdGVDb25maWdTY2hlbWEoZXh0ZW5zaW9uTmFtZSwgc2NoZW1hKTtcbiAgICBjb25zdCBlbmhhbmNlZFNjaGVtYSA9IG1lcmdlRGVlcFJlcGxhY2Uoc2NoZW1hLCBpbXBsaWNpdENvbmZpZ1NjaGVtYSk7XG4gICAgY29uc3Qgc3RhdGUgPSBjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCk7XG4gICAgaWYgKHN0YXRlLnNjaGVtYXNbZXh0ZW5zaW9uTmFtZV0pIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgQ29uZmlnIHNjaGVtYSBmb3IgZXh0ZW5zaW9uICR7ZXh0ZW5zaW9uTmFtZX0gYWxyZWFkeSBleGlzdHMuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBleHRlbnNpb25zIHdpdGggdGhpcyBzYW1lIG5hbWUsIG9uZSB3aWxsIHByb2JhYmx5IGNyYXNoLmApO1xuICAgIH1cbiAgICBjb25maWdJbnRlcm5hbFN0b3JlLnNldFN0YXRlKChzdGF0ZSk9Pih7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zY2hlbWFzLFxuICAgICAgICAgICAgICAgIFtleHRlbnNpb25OYW1lXTogZW5oYW5jZWRTY2hlbWFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xufVxuLyoqXG4gKiBQcm92aWRlcyBjb25maWd1cmF0aW9uIHZhbHVlcyBwcm9ncmFtbWF0aWNhbGx5LiBUaGlzIGlzIGFuIGFsdGVybmF0aXZlIHRvXG4gKiBwcm92aWRpbmcgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBjb25maWctZmlsZS4gQ29uZmlndXJhdGlvbiBwcm92aWRlZCB0aGlzXG4gKiB3YXkgd2lsbCBiZSBtZXJnZWQgd2l0aCBjb25maWd1cmF0aW9uIGZyb20gb3RoZXIgc291cmNlcy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIEEgY29uZmlndXJhdGlvbiBvYmplY3QgdG8gbWVyZ2UgaW50byB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSBzb3VyY2VOYW1lIEFuIG9wdGlvbmFsIG5hbWUgdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBvZiB0aGlzIGNvbmZpZ3VyYXRpb24sXG4gKiAgIHVzZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gRGVmYXVsdHMgdG8gJ3Byb3ZpZGVkJy5cbiAqLyBleHBvcnQgZnVuY3Rpb24gcHJvdmlkZShjb25maWcsIHNvdXJjZU5hbWUgPSAncHJvdmlkZWQnKSB7XG4gICAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBwcm92aWRlZENvbmZpZ3M6IFtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5wcm92aWRlZENvbmZpZ3MsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSkpO1xufVxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGBzZWxlY3Qoc3RhdGUpYCBhcyBzb29uIGFzIHRoZSBzdG9yZSdzIHN0YXRlIHNhdGlzZmllcyBgcmVhZHlgLCBsZWF2aW5nIG5vXG4gKiBzdWJzY3JpcHRpb24gYmVoaW5kOiBub3RoaW5nIHN1YnNjcmliZXMgYXQgYWxsIHdoZW4gdGhlIHN0b3JlIGlzIGFscmVhZHkgcmVhZHkuIFRoYXQgbWF0dGVyc1xuICogYmVjYXVzZSBgZ2V0Q29uZmlnYCBydW5zIG9uIGV2ZXJ5IEhUVFAgcmVxdWVzdCwgYW5kIGEgc3Vic2NyaXB0aW9uIHRoYXQgb3V0bGl2ZXMgaXRzIHByb21pc2VcbiAqIGJvdGggcmV0YWlucyBpdHMgY2xvc3VyZSBmb3JldmVyIGFuZCBzbG93cyBkb3duIGV2ZXJ5IGxhdGVyIHdyaXRlIHRvIHRoYXQgc3RvcmUuXG4gKi8gZnVuY3Rpb24gd2hlblN0b3JlUmVhZHkoc3RvcmUsIHJlYWR5LCBzZWxlY3QpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIGxldCB1bnN1YnNjcmliZTtcbiAgICAgICAgbGV0IHJlc29sdmVkID0gZmFsc2U7XG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZShzdGF0ZSkge1xuICAgICAgICAgICAgaWYgKCFyZXNvbHZlZCAmJiByZWFkeShzdGF0ZSkpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShzZWxlY3Qoc3RhdGUpKTtcbiAgICAgICAgICAgICAgICB1bnN1YnNjcmliZT8uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlKHN0b3JlLmdldFN0YXRlKCkpO1xuICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZSA9IHN0b3JlLnN1YnNjcmliZSh1cGRhdGUpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKipcbiAqIEEgcHJvbWlzZS1iYXNlZCB3YXkgdG8gYWNjZXNzIHRoZSBjb25maWcgYXMgc29vbiBhcyBpdCBpcyBmdWxseSBsb2FkZWQuXG4gKiBJZiBpdCBpcyBhbHJlYWR5IGxvYWRlZCwgcmVzb2x2ZXMgdGhlIGNvbmZpZyBpbiBpdHMgcHJlc2VudCBzdGF0ZS5cbiAqXG4gKiBUaGlzIGlzIGEgdXNlZnVsIGZ1bmN0aW9uIGlmIHlvdSBuZWVkIHRvIGdldCB0aGUgY29uZmlnIGluIHRoZSBjb3Vyc2VcbiAqIG9mIHRoZSBleGVjdXRpb24gb2YgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIGZvciB3aGljaCB0byBsb29rIHVwIHRoZSBjb25maWdcbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnKG1vZHVsZU5hbWUpIHtcbiAgICByZXR1cm4gd2hlblN0b3JlUmVhZHkoZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZSksIChzdGF0ZSk9PkJvb2xlYW4oc3RhdGUubG9hZGVkICYmIHN0YXRlLmNvbmZpZyksIChzdGF0ZSk9PmxvZGFzaE9taXQoc3RhdGUuY29uZmlnLCBbXG4gICAgICAgICAgICAnRGlzcGxheSBjb25kaXRpb25zJyxcbiAgICAgICAgICAgICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnXG4gICAgICAgIF0pKTtcbn1cbi8qKlxuICogUmV0cmlldmVzIHRyYW5zbGF0aW9uIG92ZXJyaWRlcyBmb3IgYW4gZXh0ZW5zaW9uLCBvcHRpb25hbGx5IHNjb3BlZCB0byBhIHNwZWNpZmljXG4gKiBleHRlbnNpb24gc2xvdC4gV2hlbiBjYWxsZWQgd2l0aCBvbmx5IGEgbW9kdWxlIG5hbWUsIHJldHJpZXZlcyBtb2R1bGUtbGV2ZWwgb3ZlcnJpZGVzLlxuICogVHJhbnNsYXRpb24gb3ZlcnJpZGVzIGFsbG93IGN1c3RvbWl6aW5nIHRyYW5zbGF0ZWQgc3RyaW5ncyB3aXRob3V0IG1vZGlmeWluZyB0aGVcbiAqIG9yaWdpbmFsIHRyYW5zbGF0aW9uIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBtb2R1bGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgcHJvdmlkaW5nIHRoZSB0cmFuc2xhdGlvbiBjb250ZXh0LlxuICogQHBhcmFtIHNsb3ROYW1lIE9wdGlvbmFsIGV4dGVuc2lvbiBzbG90IG5hbWUgdG8gaW5jbHVkZSBzbG90LXNwZWNpZmljIG92ZXJyaWRlcy5cbiAqIEBwYXJhbSBleHRlbnNpb25JZCBPcHRpb25hbCBleHRlbnNpb24gSUQgdG8gaW5jbHVkZSBleHRlbnNpb24tc3BlY2lmaWMgb3ZlcnJpZGVzLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byBhbiBhcnJheSBvZiB0cmFuc2xhdGlvbiBvdmVycmlkZSBvYmplY3RzLlxuICpcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2xhdGlvbk92ZXJyaWRlcyhtb2R1bGVOYW1lLCBzbG90TmFtZSwgZXh0ZW5zaW9uSWQpIHtcbiAgICBjb25zdCBwcm9taXNlcyA9IFtcbiAgICAgICAgd2hlblN0b3JlUmVhZHkoZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZSksIChzdGF0ZSk9PkJvb2xlYW4oc3RhdGUudHJhbnNsYXRpb25PdmVycmlkZXNMb2FkZWQgJiYgc3RhdGUuY29uZmlnKSwgKHN0YXRlKT0+c3RhdGUuY29uZmlnWydUcmFuc2xhdGlvbiBvdmVycmlkZXMnXSA/PyB7fSlcbiAgICBdO1xuICAgIGlmIChzbG90TmFtZSAmJiBleHRlbnNpb25JZCkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKHdoZW5TdG9yZVJlYWR5KGdldEV4dGVuc2lvbkNvbmZpZyhzbG90TmFtZSwgZXh0ZW5zaW9uSWQpLCAoc3RhdGUpPT5Cb29sZWFuKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpLCAoc3RhdGUpPT5zdGF0ZS5jb25maWdbJ1RyYW5zbGF0aW9uIG92ZXJyaWRlcyddID8/IHt9KSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59XG4vKipcbiAqIFZhbGlkYXRlIGFuZCBpbnRlcnBvbGF0ZSBkZWZhdWx0cyBmb3IgYHByb3ZpZGVkQ29uZmlnYCBhY2NvcmRpbmcgdG8gYHNjaGVtYWBcbiAqXG4gKiBAcGFyYW0gc2NoZW1hICBhIGNvbmZpZ3VyYXRpb24gc2NoZW1hXG4gKiBAcGFyYW0gcHJvdmlkZWRDb25maWcgIGFuIG9iamVjdCBvZiBjb25maWcgdmFsdWVzICh3aXRob3V0IHRoZSB0b3AtbGV2ZWwgbW9kdWxlIG5hbWUpXG4gKiBAcGFyYW0ga2V5UGF0aENvbnRleHQgIGEgZG90LXNlcGFyYXRlZCBzdHJpbmcgd2hpY2ggaGVscHMgdGhlIHVzZXIgZmlndXJlIG91dCB3aGVyZVxuICogICAgIHRoZSBwcm92aWRlZCBjb25maWcgY2FtZSBmcm9tXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGFuZCBwcm9jZXNzZWQgY29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCBkZWZhdWx0cyBhcHBsaWVkLlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NDb25maWcoc2NoZW1hLCBwcm92aWRlZENvbmZpZywga2V5UGF0aENvbnRleHQpIHtcbiAgICB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWEsIHByb3ZpZGVkQ29uZmlnLCBrZXlQYXRoQ29udGV4dCk7XG4gICAgY29uc3QgY29uZmlnID0gc2V0RGVmYXVsdHMoc2NoZW1hLCBwcm92aWRlZENvbmZpZyk7XG4gICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEsIGNvbmZpZywga2V5UGF0aENvbnRleHQpO1xuICAgIHJldHVybiBjb25maWc7XG59XG5jb25zdCBleHRlbnNpb25Db25maWdDYWNoZSA9IG5ldyBNYXAoKTtcbi8qKlxuICogUmV0dXJucyB0aGUgY29uZmlndXJhdGlvbiBmb3IgYW4gZXh0ZW5zaW9uLiBUaGlzIGNvbmZpZ3VyYXRpb24gaXMgc3BlY2lmaWNcbiAqIHRvIHRoZSBzbG90IGluIHdoaWNoIGl0IGlzIG1vdW50ZWQsIGFuZCBpdHMgSUQgd2l0aGluIHRoYXQgc2xvdC5cbiAqXG4gKiBUaGUgc2NoZW1hIGZvciB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgdGhlIGV4dGVuc2lvbiBzY2hlbWEuIElmIG5vIGV4dGVuc2lvblxuICogc2NoZW1hIGhhcyBiZWVuIHByb3ZpZGVkLCB0aGUgc2NoZW1hIHVzZWQgaXMgdGhlIHNjaGVtYSBvZiB0aGUgbW9kdWxlIGluXG4gKiB3aGljaCB0aGUgZXh0ZW5zaW9uIGlzIGRlZmluZWQuXG4gKlxuICogQHBhcmFtIHNsb3RNb2R1bGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgd2hpY2ggZGVmaW5lcyB0aGUgZXh0ZW5zaW9uIHNsb3RcbiAqIEBwYXJhbSBleHRlbnNpb25Nb2R1bGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgd2hpY2ggZGVmaW5lcyB0aGUgZXh0ZW5zaW9uIChhbmQgdGhlcmVmb3JlIHRoZSBjb25maWcgc2NoZW1hKVxuICogQHBhcmFtIHNsb3ROYW1lIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gc2xvdCB3aGVyZSB0aGUgZXh0ZW5zaW9uIGlzIG1vdW50ZWRcbiAqIEBwYXJhbSBleHRlbnNpb25JZCBUaGUgSUQgb2YgdGhlIGV4dGVuc2lvbiBpbiBpdHMgc2xvdFxuICovIGZ1bmN0aW9uIGNvbXB1dGVFeHRlbnNpb25Db25maWcoc2xvdE1vZHVsZU5hbWUsIGV4dGVuc2lvbk1vZHVsZU5hbWUsIHNsb3ROYW1lLCBleHRlbnNpb25JZCwgY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IGV4dGVuc2lvbk5hbWUgPSBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKGV4dGVuc2lvbklkKTtcbiAgICBjb25zdCBleHRlbnNpb25Db25maWdTY2hlbWEgPSBjb25maWdTdGF0ZS5zY2hlbWFzW2V4dGVuc2lvbk5hbWVdO1xuICAgIC8vIEpTT04gc3RyaW5nIG9mIHRoZXNlIGVsZW1lbnRzIHNob3VsZCBiZSB1bmlxdWUtcGVyLWV4dGVuc2lvblxuICAgIGNvbnN0IGNhY2hlS2V5ID0gSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICBzbG90TmFtZSxcbiAgICAgICAgZXh0ZW5zaW9uSWQsXG4gICAgICAgIHNsb3RNb2R1bGVOYW1lLFxuICAgICAgICBleHRlbnNpb25Nb2R1bGVOYW1lXG4gICAgXSk7XG4gICAgY29uc3QgY2FjaGVkID0gZXh0ZW5zaW9uQ29uZmlnQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICBpZiAoY2FjaGVkICYmIGNhY2hlZC5leHRlbnNpb25TY2hlbWEgPT09IGV4dGVuc2lvbkNvbmZpZ1NjaGVtYSAmJiBjYWNoZWQuZXh0ZW5zaW9uTW9kdWxlU2NoZW1hID09PSBjb25maWdTdGF0ZS5zY2hlbWFzW2V4dGVuc2lvbk1vZHVsZU5hbWVdICYmIGNhY2hlZC5wcm92aWRlZENvbmZpZ3MgPT09IGNvbmZpZ1N0YXRlLnByb3ZpZGVkQ29uZmlncyAmJiBjYWNoZWQudGVtcG9yYXJ5Q29uZmlnID09PSB0ZW1wQ29uZmlnU3RhdGUuY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWQuY29uZmlnO1xuICAgIH1cbiAgICBjb25zdCBuYW1lT2ZTY2hlbWFTb3VyY2UgPSBleHRlbnNpb25Db25maWdTY2hlbWEgPyBleHRlbnNpb25OYW1lIDogZXh0ZW5zaW9uTW9kdWxlTmFtZTtcbiAgICBjb25zdCBwcm92aWRlZENvbmZpZ3MgPSBnZXRQcm92aWRlZENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSk7XG4gICAgY29uc3Qgc2xvdE1vZHVsZUNvbmZpZyA9IG1lcmdlQ29uZmlnc0ZvcihzbG90TW9kdWxlTmFtZSwgcHJvdmlkZWRDb25maWdzKTtcbiAgICBjb25zdCBjb25maWdPdmVycmlkZSA9IHNsb3RNb2R1bGVDb25maWc/LmV4dGVuc2lvblNsb3RzPy5bc2xvdE5hbWVdPy5jb25maWd1cmU/LltleHRlbnNpb25JZF0gPz8ge307XG4gICAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnID0gbWVyZ2VDb25maWdzRm9yKG5hbWVPZlNjaGVtYVNvdXJjZSwgcHJvdmlkZWRDb25maWdzKTtcbiAgICBjb25zdCBjb21iaW5lZENvbmZpZyA9IG1lcmdlQ29uZmlncyhbXG4gICAgICAgIGV4dGVuc2lvbkNvbmZpZyxcbiAgICAgICAgY29uZmlnT3ZlcnJpZGVcbiAgICBdKTtcbiAgICBjb25zdCBzY2hlbWEgPSBleHRlbnNpb25Db25maWdTY2hlbWEgPz8gY29uZmlnU3RhdGUuc2NoZW1hc1tleHRlbnNpb25Nb2R1bGVOYW1lXTtcbiAgICB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWEsIGNvbWJpbmVkQ29uZmlnLCBuYW1lT2ZTY2hlbWFTb3VyY2UpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHNldERlZmF1bHRzKHNjaGVtYSwgY29tYmluZWRDb25maWcpO1xuICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLCBjb25maWcsIG5hbWVPZlNjaGVtYVNvdXJjZSk7XG4gICAgZGVsZXRlIGNvbmZpZy5leHRlbnNpb25TbG90cztcbiAgICBleHRlbnNpb25Db25maWdDYWNoZS5zZXQoY2FjaGVLZXksIHtcbiAgICAgICAgZXh0ZW5zaW9uU2NoZW1hOiBleHRlbnNpb25Db25maWdTY2hlbWEsXG4gICAgICAgIGV4dGVuc2lvbk1vZHVsZVNjaGVtYTogY29uZmlnU3RhdGUuc2NoZW1hc1tleHRlbnNpb25Nb2R1bGVOYW1lXSxcbiAgICAgICAgcHJvdmlkZWRDb25maWdzOiBjb25maWdTdGF0ZS5wcm92aWRlZENvbmZpZ3MsXG4gICAgICAgIHRlbXBvcmFyeUNvbmZpZzogdGVtcENvbmZpZ1N0YXRlLmNvbmZpZyxcbiAgICAgICAgY29uZmlnXG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbmZpZztcbn1cbmNvbnN0IGltcGxlbWVudGVyVG9vbHNNb2R1bGVDYWNoZSA9IG5ldyBNYXAoKTtcbmZ1bmN0aW9uIGdldEltcGxlbWVudGVyVG9vbHNDb25maWcoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IGFubm90YXRlZFNjaGVtYXMgPSBnZXRBbGxTY2hlbWFzV2l0aFZhbHVlc0FuZFNvdXJjZXMoY29uZmlnU3RhdGUuc2NoZW1hcyk7XG4gICAgY29uc3QgY29uZmlnc0FuZFNvdXJjZXMgPSBbXG4gICAgICAgIC4uLmNvbmZpZ1N0YXRlLnByb3ZpZGVkQ29uZmlncy5tYXAoKGMpPT5bXG4gICAgICAgICAgICAgICAgYy5jb25maWcsXG4gICAgICAgICAgICAgICAgYy5zb3VyY2VcbiAgICAgICAgICAgIF0pLFxuICAgICAgICBbXG4gICAgICAgICAgICB0ZW1wQ29uZmlnU3RhdGUuY29uZmlnLFxuICAgICAgICAgICAgJ3RlbXBvcmFyeSBjb25maWcnXG4gICAgICAgIF1cbiAgICBdO1xuICAgIC8vIEEgbW9kdWxlIGNhbiBiZSBjb25maWd1cmVkIHdpdGhvdXQgaGF2aW5nIGRlY2xhcmVkIGEgc2NoZW1hLCBzbyB0aGUgbW9kdWxlIGxpc3QgaXMgdGhlIHVuaW9uXG4gICAgLy8gb2YgYm90aCByYXRoZXIgdGhhbiBqdXN0IHRoZSBzY2hlbWFzLlxuICAgIGNvbnN0IG1vZHVsZU5hbWVzID0gbmV3IFNldChPYmplY3Qua2V5cyhhbm5vdGF0ZWRTY2hlbWFzKSk7XG4gICAgZm9yIChjb25zdCBbY29uZmlnXSBvZiBjb25maWdzQW5kU291cmNlcyl7XG4gICAgICAgIGZvciAoY29uc3QgbW9kdWxlTmFtZSBvZiBPYmplY3Qua2V5cyhjb25maWcpKXtcbiAgICAgICAgICAgIG1vZHVsZU5hbWVzLmFkZChtb2R1bGVOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IG1vZHVsZU5hbWUgb2YgbW9kdWxlTmFtZXMpe1xuICAgICAgICBjb25zdCBhbm5vdGF0ZWRTY2hlbWEgPSBhbm5vdGF0ZWRTY2hlbWFzW21vZHVsZU5hbWVdO1xuICAgICAgICBjb25zdCBjb25maWdTbGljZXMgPSBjb25maWdzQW5kU291cmNlcy5tYXAoKFtjb25maWddKT0+Y29uZmlnW21vZHVsZU5hbWVdKTtcbiAgICAgICAgY29uc3Qgc291cmNlcyA9IGNvbmZpZ3NBbmRTb3VyY2VzLm1hcCgoWywgc291cmNlXSk9PnNvdXJjZSk7XG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IGltcGxlbWVudGVyVG9vbHNNb2R1bGVDYWNoZS5nZXQobW9kdWxlTmFtZSk7XG4gICAgICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLmFubm90YXRlZFNjaGVtYSA9PT0gYW5ub3RhdGVkU2NoZW1hICYmIGNhY2hlZC5jb25maWdTbGljZXMubGVuZ3RoID09PSBjb25maWdTbGljZXMubGVuZ3RoICYmIGNhY2hlZC5jb25maWdTbGljZXMuZXZlcnkoKHNsaWNlLCBpKT0+c2xpY2UgPT09IGNvbmZpZ1NsaWNlc1tpXSkgJiYgY2FjaGVkLnNvdXJjZXMuZXZlcnkoKHNvdXJjZSwgaSk9PnNvdXJjZSA9PT0gc291cmNlc1tpXSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFttb2R1bGVOYW1lXSA9IGNhY2hlZC5yZXN1bHQ7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWVyZ2VkID0gYW5ub3RhdGVkU2NoZW1hID8/IHt9O1xuICAgICAgICBjb25maWdzQW5kU291cmNlcy5mb3JFYWNoKChbLCBzb3VyY2VdLCBpKT0+e1xuICAgICAgICAgICAgY29uc3Qgc2xpY2UgPSBjb25maWdTbGljZXNbaV07XG4gICAgICAgICAgICBpZiAoc2xpY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG1lcmdlZCA9IG1lcmdlRGVlcFJlcGxhY2UobWVyZ2VkLCBjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZShzbGljZSwgc291cmNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpbXBsZW1lbnRlclRvb2xzTW9kdWxlQ2FjaGUuc2V0KG1vZHVsZU5hbWUsIHtcbiAgICAgICAgICAgIGFubm90YXRlZFNjaGVtYSxcbiAgICAgICAgICAgIGNvbmZpZ1NsaWNlcyxcbiAgICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgICByZXN1bHQ6IG1lcmdlZFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0W21vZHVsZU5hbWVdID0gbWVyZ2VkO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBDYWNoaW5nIHBlciBtb2R1bGUgaXMgd2hhdCBzdG9wcyB0aGUgd2FsayBiZWluZyBxdWFkcmF0aWM6IGRlZmluaW5nIG9uZSBtb2R1bGUncyBzY2hlbWFcbiAqIHJlY29tcHV0ZXMgZXZlcnkgbW9kdWxlLlxuICpcbiAqIEEgbW9kdWxlIHdpdGggbm8gY29uZmlndXJhdGlvbiBvZiBpdHMgb3duIGlzIHB1Ymxpc2hlZCBzdHJhaWdodCBmcm9tIHRoaXMgY2FjaGUsIHNvIG5vdGhpbmcgbWF5XG4gKiBtdXRhdGUgYSB0cmVlIGl0IHJlYWRzIG91dCBvZiB0aGUgaW1wbGVtZW50ZXIgdG9vbHMgY29uZmlnIOKAlCBpdCBpcyB0aGUgY2FjaGUgZW50cnkuXG4gKi8gY29uc3Qgc2NoZW1hVmFsdWVzQW5kU291cmNlc0NhY2hlID0gbmV3IE1hcCgpO1xuZnVuY3Rpb24gZ2V0QWxsU2NoZW1hc1dpdGhWYWx1ZXNBbmRTb3VyY2VzKHNjaGVtYXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFttb2R1bGVOYW1lLCBzY2hlbWFdIG9mIE9iamVjdC5lbnRyaWVzKHNjaGVtYXMpKXtcbiAgICAgICAgY29uc3QgY2FjaGVkID0gc2NoZW1hVmFsdWVzQW5kU291cmNlc0NhY2hlLmdldChtb2R1bGVOYW1lKTtcbiAgICAgICAgaWYgKGNhY2hlZCAmJiBjYWNoZWQuc2NoZW1hID09PSBzY2hlbWEpIHtcbiAgICAgICAgICAgIHJlc3VsdFttb2R1bGVOYW1lXSA9IGNhY2hlZC5hbm5vdGF0ZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhbm5vdGF0ZWQgPSBnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyhjbG9uZURlZXAoc2NoZW1hKSk7XG4gICAgICAgICAgICBzY2hlbWFWYWx1ZXNBbmRTb3VyY2VzQ2FjaGUuc2V0KG1vZHVsZU5hbWUsIHtcbiAgICAgICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICAgICAgYW5ub3RhdGVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc3VsdFttb2R1bGVOYW1lXSA9IGFubm90YXRlZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0U2NoZW1hV2l0aFZhbHVlc0FuZFNvdXJjZXMoc2NoZW1hKSB7XG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnX2RlZmF1bHQnKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uc2NoZW1hLFxuICAgICAgICAgICAgX3ZhbHVlOiBzY2hlbWEuX2RlZmF1bHQsXG4gICAgICAgICAgICBfc291cmNlOiAnZGVmYXVsdCdcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGlzT3JkaW5hcnlPYmplY3Qoc2NoZW1hKSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoc2NoZW1hKS5yZWR1Y2UoKG9iaiwga2V5KT0+e1xuICAgICAgICAgICAgb2JqW2tleV0gPSBnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyhzY2hlbWFba2V5XSk7XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9LCB7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gYXQgdGhpcyBwb2ludCwgdGhlIHNjaGVtYSBpcyBiYWQgYW5kIGFuIGVycm9yIHdpbGwgaGF2ZSBiZWVuIGxvZ2dlZCBkdXJpbmcgc2NoZW1hIHZhbGlkYXRpb25cbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZVZhbHVlc0FuZFNvdXJjZXNUcmVlKGNvbmZpZywgc291cmNlKSB7XG4gICAgaWYgKGlzT3JkaW5hcnlPYmplY3QoY29uZmlnKSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoY29uZmlnKS5yZWR1Y2UoKG9iaiwga2V5KT0+e1xuICAgICAgICAgICAgb2JqW2tleV0gPSBjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZShjb25maWdba2V5XSwgc291cmNlKTtcbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX3ZhbHVlOiBjb25maWcsXG4gICAgICAgICAgICBfc291cmNlOiBzb3VyY2VcbiAgICAgICAgfTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRFeHRlbnNpb25TbG90Q29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSB7XG4gICAgY29uc3QgYWxsQ29uZmlncyA9IG1lcmdlQ29uZmlncyhnZXRQcm92aWRlZENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkpO1xuICAgIGNvbnN0IHNsb3RDb25maWdQZXJNb2R1bGUgPSBPYmplY3Qua2V5cyhhbGxDb25maWdzKS5yZWR1Y2UoKG9iaiwga2V5KT0+e1xuICAgICAgICBpZiAoYWxsQ29uZmlnc1trZXldPy5leHRlbnNpb25TbG90cykge1xuICAgICAgICAgICAgb2JqW2tleV0gPSBhbGxDb25maWdzW2tleV0/LmV4dGVuc2lvblNsb3RzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfSwge30pO1xuICAgIHZhbGlkYXRlQWxsRXh0ZW5zaW9uU2xvdENvbmZpZ3Moc2xvdENvbmZpZ1Blck1vZHVsZSk7XG4gICAgY29uc3Qgc2xvdENvbmZpZ3MgPSBPYmplY3Qua2V5cyhzbG90Q29uZmlnUGVyTW9kdWxlKS5yZWR1Y2UoKG9iaiwga2V5KT0+e1xuICAgICAgICBvYmogPSB7XG4gICAgICAgICAgICAuLi5vYmosXG4gICAgICAgICAgICAuLi5zbG90Q29uZmlnUGVyTW9kdWxlW2tleV1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCB7fSk7XG4gICAgcmV0dXJuIHNsb3RDb25maWdzO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVBbGxFeHRlbnNpb25TbG90Q29uZmlncyhzbG90Q29uZmlnUGVyTW9kdWxlKSB7XG4gICAgZm9yIChsZXQgW21vZHVsZU5hbWUsIGNvbmZpZ0J5U2xvdE5hbWVdIG9mIE9iamVjdC5lbnRyaWVzKHNsb3RDb25maWdQZXJNb2R1bGUpKXtcbiAgICAgICAgZm9yIChsZXQgW3Nsb3ROYW1lLCBjb25maWddIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZ0J5U2xvdE5hbWUpKXtcbiAgICAgICAgICAgIHZhbGlkYXRlRXh0ZW5zaW9uU2xvdENvbmZpZyhjb25maWcsIG1vZHVsZU5hbWUsIHNsb3ROYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlRXh0ZW5zaW9uU2xvdENvbmZpZyhjb25maWcsIG1vZHVsZU5hbWUsIHNsb3ROYW1lKSB7XG4gICAgY29uc3Qga2V5UGF0aCA9IGAke21vZHVsZU5hbWV9LmV4dGVuc2lvblNsb3RzLiR7c2xvdE5hbWV9YDtcbiAgICBjb25zdCBlcnJvclByZWZpeCA9IGBFeHRlbnNpb24gc2xvdCBjb25maWcgJyR7a2V5UGF0aH0nYDtcbiAgICBjb25zdCBpbnZhbGlkS2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykuZmlsdGVyKChrKT0+IVtcbiAgICAgICAgICAgICdhZGQnLFxuICAgICAgICAgICAgJ3JlbW92ZScsXG4gICAgICAgICAgICAnb3JkZXInLFxuICAgICAgICAgICAgJ2NvbmZpZ3VyZSdcbiAgICAgICAgXS5pbmNsdWRlcyhrKSk7XG4gICAgaWYgKGludmFsaWRLZXlzLmxlbmd0aCkge1xuICAgICAgICBsb2dFcnJvcihrZXlQYXRoLCBlcnJvclByZWZpeCArIGAnIGNvbnRhaW5zIGludmFsaWQga2V5cyAnJHtpbnZhbGlkS2V5cy5qb2luKFwiJywgJ1wiKX0nYCk7XG4gICAgfVxuICAgIGlmIChjb25maWcuYWRkKSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcuYWRkKSB8fCAhY29uZmlnLmFkZC5ldmVyeSgobik9PnR5cGVvZiBuID09PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICAgIGxvZ0Vycm9yKGtleVBhdGgsIGVycm9yUHJlZml4ICsgYC5hZGQnIGlzIGludmFsaWQuIE11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncyAoZXh0ZW5zaW9uIElEcylgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29uZmlnLnJlbW92ZSkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLnJlbW92ZSkgfHwgIWNvbmZpZy5yZW1vdmUuZXZlcnkoKG4pPT50eXBlb2YgbiA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgICBsb2dFcnJvcihrZXlQYXRoLCBlcnJvclByZWZpeCArIGAucmVtb3ZlJyBpcyBpbnZhbGlkLiBNdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MgKGV4dGVuc2lvbiBJRHMpYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbmZpZy5vcmRlcikge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLm9yZGVyKSB8fCAhY29uZmlnLm9yZGVyLmV2ZXJ5KChuKT0+dHlwZW9mIG4gPT09ICdzdHJpbmcnKSkge1xuICAgICAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLm9yZGVyJyBpcyBpbnZhbGlkLiBNdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MgKGV4dGVuc2lvbiBJRHMpYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbmZpZy5jb25maWd1cmUpIHtcbiAgICAgICAgaWYgKCFpc09yZGluYXJ5T2JqZWN0KGNvbmZpZy5jb25maWd1cmUpKSB7XG4gICAgICAgICAgICBsb2dFcnJvcihrZXlQYXRoLCBlcnJvclByZWZpeCArIGAuY29uZmlndXJlJyBpcyBpbnZhbGlkLiBNdXN0IGJlIGFuIG9iamVjdCB3aXRoIGV4dGVuc2lvbiBJRHMgZm9yIGtleXNgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgLi4uY29uZmlnU3RhdGUucHJvdmlkZWRDb25maWdzLm1hcCgoYyk9PmMuY29uZmlnKSxcbiAgICAgICAgdGVtcENvbmZpZ1N0YXRlLmNvbmZpZ1xuICAgIF07XG59XG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgY29uZmlnIHNjaGVtYSBmb3IgYSBtb2R1bGUuIFNpbmNlIHByb2JsZW1zIGlkZW50aWZpZWQgaGVyZSBhcmUgcHJvZ3JhbW1pbmcgZXJyb3JzXG4gKiB0aGF0IGhvcGVmdWxseSB3aWxsIGJlIGNhdWdodCBkdXJpbmcgZGV2ZWxvcG1lbnQsIHRoaXMgZnVuY3Rpb24gbG9ncyBlcnJvcnMgdG8gdGhlIGNvbnNvbGUgZGlyZWN0bHk7XG4gKiBpdCdzIGZpbmUgaWYgd2Ugc3BhbSB0aGUgdXNlciB3aXRoIHRoZXNlIGVycm9ycy5cbiAqLyBmdW5jdGlvbiB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lLCBzY2hlbWEsIGtleVBhdGggPSAnJykge1xuICAgIGNvbnN0IHVwZGF0ZU1lc3NhZ2UgPSBgUGxlYXNlIHZlcmlmeSB0aGF0IHlvdSBhcmUgcnVubmluZyB0aGUgbGF0ZXN0IHZlcnNpb24gYW5kLCBpZiBzbywgYWxlcnQgdGhlIG1haW50YWluZXIuYDtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzY2hlbWEpLmZpbHRlcigoayk9PiFrLnN0YXJ0c1dpdGgoJ18nKSkpe1xuICAgICAgICBjb25zdCB0aGlzS2V5UGF0aCA9IGtleVBhdGggKyAoa2V5UGF0aCAmJiAnLicpICsga2V5O1xuICAgICAgICBjb25zdCBzY2hlbWFQYXJ0ID0gc2NoZW1hW2tleV07XG4gICAgICAgIGlmICh0aGlzS2V5UGF0aCA9PT0gJ0Rpc3BsYXkgY29uZGl0aW9ucycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gZGVjbGFyZXMgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBjYWxsZWQgXCJEaXNwbGF5IGNvbmRpdGlvbnNcIjsgdGhlIFwiRGlzcGxheSBjb25kaXRpb25zXCIgb3B0aW9uIGlzIGEgcmVzZXJ2ZWQgbmFtZS4gJHt1cGRhdGVNZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzS2V5UGF0aCA9PT0gJ1RyYW5zbGF0aW9uIG92ZXJyaWRlcycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gZGVjbGFyZXMgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBjYWxsZWQgXCJUcmFuc2xhdGlvbiBvdmVycmlkZXNcIjsgdGhlIFwiVHJhbnNsYXRpb24gb3ZlcnJpZGVzXCIgb3B0aW9uIGlzIGEgcmVzZXJ2ZWQgbmFtZS4gJHt1cGRhdGVNZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNPcmRpbmFyeU9iamVjdChzY2hlbWFQYXJ0KSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHttb2R1bGVOYW1lfSBoYXMgYmFkIGNvbmZpZyBzY2hlbWEgZGVmaW5pdGlvbiBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScuICR7dXBkYXRlTWVzc2FnZX1gKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2NoZW1hUGFydC5oYXNPd25Qcm9wZXJ0eSgnX2RlZmF1bHQnKSkge1xuICAgICAgICAgICAgLy8gcmVjdXJzZSBmb3IgbmVzdGVkIGNvbmZpZyBrZXlzXG4gICAgICAgICAgICB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lLCBzY2hlbWFQYXJ0LCB0aGlzS2V5UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBzY2hlbWFQYXJ0Ll9lbGVtZW50cztcbiAgICAgICAgaWYgKGhhc09iamVjdFNjaGVtYShlbGVtZW50cykpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlQ29uZmlnU2NoZW1hKG1vZHVsZU5hbWUsIGVsZW1lbnRzLCB0aGlzS2V5UGF0aCArICcuX2VsZW1lbnRzJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjaGVtYVBhcnQuX3ZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IHZhbGlkYXRvciBvZiBzY2hlbWFQYXJ0Ll92YWxpZGF0b3JzKXtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke21vZHVsZU5hbWV9IGhhcyBpbnZhbGlkIHZhbGlkYXRvciBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScgJHt1cGRhdGVNZXNzYWdlfS5gICsgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogdmFsaWRhdG9ycyBtdXN0IGJlIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBlaXRoZXIgYCArIGB1bmRlZmluZWQgb3IgYW4gZXJyb3Igc3RyaW5nLiBSZWNlaXZlZCAke3ZhbGlkYXRvcn0uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlVHlwZSA9IHNjaGVtYVBhcnQuX3R5cGU7XG4gICAgICAgIGlmICh2YWx1ZVR5cGUgJiYgIU9iamVjdC52YWx1ZXMoVHlwZSkuaW5jbHVkZXModmFsdWVUeXBlKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHttb2R1bGVOYW1lfSBoYXMgaW52YWxpZCB0eXBlIGZvciBrZXkgJyR7dGhpc0tleVBhdGh9JyAke3VwZGF0ZU1lc3NhZ2V9LmAgKyBgXFxuXFxuSWYgeW91J3JlIHRoZSBtYWludGFpbmVyOiB0aGUgYWxsb3dlZCB0eXBlcyBhcmUgJHtPYmplY3QudmFsdWVzKFR5cGUpLmpvaW4oJywgJyl9LiBgICsgYFJlY2VpdmVkICcke3ZhbHVlVHlwZX0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHNjaGVtYVBhcnQpLmV2ZXJ5KChrKT0+W1xuICAgICAgICAgICAgICAgICdfZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgICdfdmFsaWRhdG9ycycsXG4gICAgICAgICAgICAgICAgJ19lbGVtZW50cycsXG4gICAgICAgICAgICAgICAgJ190eXBlJ1xuICAgICAgICAgICAgXS5pbmNsdWRlcyhrKSkgJiYgIWtleVBhdGguaW5jbHVkZXMoJy5fZWxlbWVudHMnKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHttb2R1bGVOYW1lfSBoYXMgYmFkIGNvbmZpZyBzY2hlbWEgZGVmaW5pdGlvbiBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScuICR7dXBkYXRlTWVzc2FnZX0uYCArIGBcXG5cXG5JZiB5b3UncmUgdGhlIG1haW50YWluZXI6IGFsbCBjb25maWcgZWxlbWVudHMgbXVzdCBoYXZlIGEgZGVmYXVsdC4gYCArIGBSZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHNjaGVtYVBhcnQpfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50cyAmJiB2YWx1ZVR5cGUgJiYgIVtcbiAgICAgICAgICAgIFR5cGUuQXJyYXksXG4gICAgICAgICAgICBUeXBlLk9iamVjdFxuICAgICAgICBdLmluY2x1ZGVzKHZhbHVlVHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGJhZCBjb25maWcgc2NoZW1hIGRlZmluaXRpb24gZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nLiAke3VwZGF0ZU1lc3NhZ2V9LmAgKyBgXFxuXFxuSWYgeW91J3JlIHRoZSBtYWludGFpbmVyOiB0aGUgJ2VsZW1lbnRzJyBrZXkgb25seSB3b3JrcyB3aXRoICdfdHlwZScgZXF1YWwgdG8gJ0FycmF5JyBvciAnT2JqZWN0Jy4gYCArIGBSZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHZhbHVlVHlwZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBnZXRDb25maWdGb3JNb2R1bGUobW9kdWxlTmFtZSwgY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IHNjaGVtYSA9IGNvbmZpZ1N0YXRlLnNjaGVtYXNbbW9kdWxlTmFtZV07XG4gICAgY29uc3QgaW5wdXRDb25maWcgPSBtZXJnZUNvbmZpZ3NGb3IobW9kdWxlTmFtZSwgZ2V0UHJvdmlkZWRDb25maWdzKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpKTtcbiAgICB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWEsIGlucHV0Q29uZmlnLCBtb2R1bGVOYW1lKTtcbiAgICBjb25zdCBjb25maWcgPSBzZXREZWZhdWx0cyhzY2hlbWEsIGlucHV0Q29uZmlnKTtcbiAgICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYSwgY29uZmlnLCBtb2R1bGVOYW1lKTtcbiAgICBkZWxldGUgY29uZmlnLmV4dGVuc2lvblNsb3RzO1xuICAgIHJldHVybiBjb25maWc7XG59XG5mdW5jdGlvbiBnZXRDb25maWdGb3JNb2R1bGVJbXBsaWNpdFNjaGVtYShtb2R1bGVOYW1lLCBjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSB7XG4gICAgY29uc3QgaW5wdXRDb25maWcgPSBtZXJnZUNvbmZpZ3NGb3IobW9kdWxlTmFtZSwgZ2V0UHJvdmlkZWRDb25maWdzKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpKTtcbiAgICBjb25zdCBjb25maWcgPSBzZXREZWZhdWx0cyhpbXBsaWNpdENvbmZpZ1NjaGVtYSwgaW5wdXRDb25maWcpO1xuICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoaW1wbGljaXRDb25maWdTY2hlbWEsIGNvbmZpZywgbW9kdWxlTmFtZSk7XG4gICAgZGVsZXRlIGNvbmZpZy5leHRlbnNpb25TbG90cztcbiAgICByZXR1cm4gY29uZmlnO1xufVxuZnVuY3Rpb24gbWVyZ2VDb25maWdzRm9yKG1vZHVsZU5hbWUsIGFsbENvbmZpZ3MpIHtcbiAgICBjb25zdCBhbGxDb25maWdzRm9yTW9kdWxlID0gYWxsQ29uZmlncy5tYXAoKHsgW21vZHVsZU5hbWVdOiBjIH0pPT5jKS5maWx0ZXIoKGMpPT4hIWMpO1xuICAgIHJldHVybiBtZXJnZUNvbmZpZ3MoYWxsQ29uZmlnc0Zvck1vZHVsZSk7XG59XG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3MoY29uZmlncykge1xuICAgIHJldHVybiBjb25maWdzLnJlZHVjZSgoYWNjLCBjb25maWcpPT5tZXJnZURlZXBSZXBsYWNlKGFjYywgY29uZmlnKSwge30pO1xufVxuLyoqXG4gKiBSZWN1cnNpdmVseSBjaGVjayB0aGUgcHJvdmlkZWQgY29uZmlnIHRyZWUgdG8gbWFrZSBzdXJlIHRoYXQgYWxsXG4gKiBvZiB0aGUgcHJvdmlkZWQgcHJvcGVydGllcyBleGlzdCBpbiB0aGUgc2NoZW1hLCBhbmQgdGhhdCB0eXBlcyBhcmVcbiAqIGNvcnJlY3QuIERvZXMgbm90IHJ1biB2YWxpZGF0b3JzIHlldCwgc2luY2UgdGhvc2Ugd2lsbCBiZSBydW4gb25cbiAqIHRoZSBjb25maWcgd2l0aCB0aGUgZGVmYXVsdHMgZmlsbGVkIGluLlxuICovIGZ1bmN0aW9uIHZhbGlkYXRlU3RydWN0dXJlKHNjaGVtYSwgY29uZmlnLCBrZXlQYXRoID0gJycpIHtcbiAgICAvLyB2YWxpZGF0ZSBlYWNoIGNvbnN0aXR1ZW50IGVsZW1lbnRcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcpKXtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjb25maWdba2V5XTtcbiAgICAgICAgY29uc3QgdGhpc0tleVBhdGggPSBrZXlQYXRoICsgJy4nICsga2V5O1xuICAgICAgICBjb25zdCBzY2hlbWFQYXJ0ID0gc2NoZW1hW2tleV07XG4gICAgICAgIGlmICghc2NoZW1hLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGlmICghKGtleSA9PT0gJ2V4dGVuc2lvblNsb3RzJyAmJiBrZXlQYXRoICE9PSAnJykpIHtcbiAgICAgICAgICAgICAgICBsb2dFcnJvcih0aGlzS2V5UGF0aCwgYFVua25vd24gY29uZmlnIGtleSAnJHt0aGlzS2V5UGF0aH0nIHByb3ZpZGVkLiBJZ25vcmluZy5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhbGlkYXRlQnJhbmNoU3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCB0aGlzS2V5UGF0aCk7XG4gICAgfVxufVxuZnVuY3Rpb24gdmFsaWRhdGVCcmFuY2hTdHJ1Y3R1cmUoc2NoZW1hUGFydCwgdmFsdWUsIGtleVBhdGgpIHtcbiAgICBjaGVja1R5cGUoa2V5UGF0aCwgc2NoZW1hUGFydC5fdHlwZSwgdmFsdWUpO1xuICAgIGlmIChpc09yZGluYXJ5T2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBpZiAoc2NoZW1hUGFydC5fdHlwZSA9PT0gVHlwZS5PYmplY3QpIHtcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIGFzIGZyZWVmb3JtIG9iamVjdFxuICAgICAgICAgICAgdmFsaWRhdGVGcmVlZm9ybU9iamVjdFN0cnVjdHVyZShzY2hlbWFQYXJ0LCB2YWx1ZSwga2V5UGF0aCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIShzY2hlbWFQYXJ0Lmhhc093blByb3BlcnR5KCdfZGVmYXVsdCcpIHx8IHNjaGVtYVBhcnQuaGFzT3duUHJvcGVydHkoJ190eXBlJykpKSB7XG4gICAgICAgICAgICAvLyB2YWxpZGF0ZSBhcyBub3JtYWwgbmVzdGVkIGNvbmZpZ1xuICAgICAgICAgICAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hUGFydCwgdmFsdWUsIGtleVBhdGgpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNjaGVtYVBhcnQuX3R5cGUgPT09IFR5cGUuQXJyYXkpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlQXJyYXlTdHJ1Y3R1cmUoc2NoZW1hUGFydCwgdmFsdWUsIGtleVBhdGgpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gdmFsaWRhdGVGcmVlZm9ybU9iamVjdFN0cnVjdHVyZShmcmVlZm9ybU9iamVjdFNjaGVtYSwgY29uZmlnLCBrZXlQYXRoKSB7XG4gICAgaWYgKGZyZWVmb3JtT2JqZWN0U2NoZW1hLl9lbGVtZW50cykge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcpKXtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY29uZmlnW2tleV07XG4gICAgICAgICAgICB2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZShmcmVlZm9ybU9iamVjdFNjaGVtYS5fZWxlbWVudHMsIHZhbHVlLCBgJHtrZXlQYXRofS4ke2tleX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlQXJyYXlTdHJ1Y3R1cmUoYXJyYXlTY2hlbWEsIHZhbHVlLCBrZXlQYXRoKSB7XG4gICAgY29uc3QgdmFsaWRhdGVkQXNBcnJheSA9IGNoZWNrVHlwZShrZXlQYXRoLCBUeXBlLkFycmF5LCB2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0ZWRBc0FycmF5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gaWYgdGhlcmUgaXMgYW4gYXJyYXkgZWxlbWVudCBvYmplY3Qgc2NoZW1hLCB2ZXJpZnkgdGhhdCBlbGVtZW50cyBtYXRjaCBpdFxuICAgIGlmIChoYXNPYmplY3RTY2hlbWEoYXJyYXlTY2hlbWEuX2VsZW1lbnRzKSkge1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgdmFsaWRhdGVCcmFuY2hTdHJ1Y3R1cmUoYXJyYXlTY2hlbWEuX2VsZW1lbnRzLCB2YWx1ZVtpXSwgYCR7a2V5UGF0aH1bJHtpfV1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspe1xuICAgICAgICBjaGVja1R5cGUoYCR7a2V5UGF0aH1bJHtpfV1gLCBhcnJheVNjaGVtYS5fZWxlbWVudHM/Ll90eXBlLCB2YWx1ZVtpXSk7XG4gICAgfVxufVxuLyoqXG4gKiBSdW4gYWxsIHRoZSB2YWxpZGF0b3JzIGluIHRoZSBjb25maWcgdHJlZS4gVGhpcyBzaG91bGQgYmUgcnVuXG4gKiBvbiB0aGUgY29uZmlnIG9iamVjdCBhZnRlciBpdCBoYXMgYmVlbiBmaWxsZWQgaW4gd2l0aCBhbGwgdGhlIGRlZmF1bHRzLCBzaW5jZVxuICogaGlnaGVyLWxldmVsIHZhbGlkYXRvcnMgbWF5IHJlZmVyIHRvIGRlZmF1bHQgdmFsdWVzLlxuICovIGZ1bmN0aW9uIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLCBjb25maWcsIGtleVBhdGggPSAnJykge1xuICAgIC8vIElmIGAhc2NoZW1hYCwgdGhlcmUgc2hvdWxkIGhhdmUgYmVlbiBhIHN0cnVjdHVyYWwgdmFsaWRhdGlvbiBlcnJvciBwcmludGVkIGFscmVhZHkuXG4gICAgaWYgKHNjaGVtYSkge1xuICAgICAgICBpZiAoY29uZmlnICE9PSBzY2hlbWEuX2RlZmF1bHQpIHtcbiAgICAgICAgICAgIHJ1blZhbGlkYXRvcnMoa2V5UGF0aCwgc2NoZW1hLl92YWxpZGF0b3JzLCBjb25maWcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc09yZGluYXJ5T2JqZWN0KGNvbmZpZykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbmZpZykpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY29uZmlnW2tleV07XG4gICAgICAgICAgICAgICAgY29uc3QgdGhpc0tleVBhdGggPSBrZXlQYXRoICsgJy4nICsga2V5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVtYVBhcnQgPSBzY2hlbWFba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLl90eXBlID09PSBUeXBlLk9iamVjdCAmJiBzY2hlbWEuX2VsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLl9lbGVtZW50cywgdmFsdWUsIHRoaXNLZXlQYXRoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYVBhcnQsIHZhbHVlLCB0aGlzS2V5UGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlnKSAmJiBzY2hlbWEuX2VsZW1lbnRzKSB7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgY29uZmlnLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgICAgICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYS5fZWxlbWVudHMsIGNvbmZpZ1tpXSwgYCR7a2V5UGF0aH1bJHtpfV1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8qKlxuICogUnVuIHR5cGUgdmFsaWRhdGlvbiBmb3IgdGhlIHZhbHVlLCBsb2dnaW5nIGFueSBlcnJvcnMuXG4gKiBAcmV0dXJucyB0cnVlIGlmIHZhbGlkYXRpb24gcGFzc2VzLCBmYWxzZSBvdGhlcndpc2VcbiAqLyBmdW5jdGlvbiBjaGVja1R5cGUoa2V5UGF0aCwgX3R5cGUsIHZhbHVlKSB7XG4gICAgaWYgKF90eXBlKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IHtcbiAgICAgICAgICAgIEFycmF5OiBpc0FycmF5LFxuICAgICAgICAgICAgQm9vbGVhbjogaXNCb29sZWFuLFxuICAgICAgICAgICAgQ29uY2VwdFV1aWQ6IGlzVXVpZCxcbiAgICAgICAgICAgIE51bWJlcjogaXNOdW1iZXIsXG4gICAgICAgICAgICBPYmplY3Q6IGlzT2JqZWN0LFxuICAgICAgICAgICAgU3RyaW5nOiBpc1N0cmluZyxcbiAgICAgICAgICAgIFVVSUQ6IGlzVXVpZCxcbiAgICAgICAgICAgIFBlcnNvbkF0dHJpYnV0ZVR5cGVVdWlkOiBpc1V1aWQsXG4gICAgICAgICAgICBQYXRpZW50SWRlbnRpZmllclR5cGVVdWlkOiBpc1V1aWRcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJ1blZhbGlkYXRvcnMoa2V5UGF0aCwgW1xuICAgICAgICAgICAgdmFsaWRhdG9yW190eXBlXVxuICAgICAgICBdLCB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLyoqXG4gKiBSdW5zIHZhbGlkYXRvcnMsIGxvZ2dpbmcgZXJyb3JzLlxuICogQHJldHVybnMgdHJ1ZSBpZiBhbGwgcGFzcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICovIGZ1bmN0aW9uIHJ1blZhbGlkYXRvcnMoa2V5UGF0aCwgdmFsaWRhdG9ycywgdmFsdWUpIHtcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSB0cnVlO1xuICAgIGlmICh2YWxpZGF0b3JzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKGxldCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycyl7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yUmVzdWx0ID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRvclJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyBgSW52YWxpZCBjb25maWd1cmF0aW9uIGZvciAke2tleVBhdGh9OiAke3ZhbGlkYXRvclJlc3VsdH1gIDogYEludmFsaWQgY29uZmlndXJhdGlvbiB2YWx1ZSAke3ZhbHVlfSBmb3IgJHtrZXlQYXRofTogJHt2YWxpZGF0b3JSZXN1bHR9YDtcbiAgICAgICAgICAgICAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBTa2lwcGluZyBpbnZhbGlkIHZhbGlkYXRvciBhdCBcIiR7a2V5UGF0aH1cIi4gRW5jb3VudGVyZWQgZXJyb3JcXG5cXHQke2V9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuLy8gUmVjdXJzaXZlbHkgZmlsbCBpbiB0aGUgY29uZmlnIHdpdGggdmFsdWVzIGZyb20gdGhlIHNjaGVtYS5cbmNvbnN0IHNldERlZmF1bHRzID0gKHNjaGVtYSwgaW5wdXRDb25maWcpPT57XG4gICAgY29uc3QgY29uZmlnID0gc3RydWN0dXJlZENsb25lKGlucHV0Q29uZmlnKTtcbiAgICBpZiAoIXNjaGVtYSkge1xuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzY2hlbWEpKXtcbiAgICAgICAgY29uc3QgY29uZmlnUGFydCA9IGNvbmZpZ1trZXldO1xuICAgICAgICBjb25zdCBzY2hlbWFQYXJ0ID0gc2NoZW1hW2tleV07XG4gICAgICAgIC8vIFRoZSBgc2NoZW1hUGFydCAmJmAgY2xhdXNlIG9mIHRoaXMgYGlmYCBzdGF0ZW1lbnQgd2lsbCBvbmx5IGZhaWxcbiAgICAgICAgLy8gaWYgdGhlIHNjaGVtYSBpcyB2ZXJ5IGludmFsaWQuIEl0IGlzIHRoZXJlIHRvIHByZXZlbnQgdGhlIGFwcCBmcm9tXG4gICAgICAgIC8vIGNyYXNoaW5nIGNvbXBsZXRlbHksIHRob3VnaCBpdCB3aWxsIHByb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvci5cbiAgICAgICAgLy8gSWYgdGhpcyBoYXBwZW5zLCB0aGVyZSBzaG91bGQgYmUgbGVnaWJsZSBlcnJvcnMgaW4gdGhlIGNvbnNvbGUgZnJvbVxuICAgICAgICAvLyB0aGUgc2NoZW1hIHZhbGlkYXRvci5cbiAgICAgICAgaWYgKHNjaGVtYVBhcnQgJiYgKHNjaGVtYVBhcnQuaGFzT3duUHJvcGVydHkoJ190eXBlJykgfHwgc2NoZW1hUGFydC5oYXNPd25Qcm9wZXJ0eSgnX2RlZmF1bHQnKSkpIHtcbiAgICAgICAgICAgIC8vIFdlIGFzc3VtZSB0aGF0IHNjaGVtYVBhcnQgZGVmaW5lcyBhIGNvbmZpZyB2YWx1ZSwgc2luY2UgaXQgaGFzXG4gICAgICAgICAgICAvLyBhIHByb3BlcnR5IGBfdHlwZWAgb3IgYF9kZWZhdWx0YC5cbiAgICAgICAgICAgIGlmICghY29uZmlnLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25maWdba2V5XSA9IHNjaGVtYVBhcnRbJ19kZWZhdWx0J107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXZSBhbHNvIGNoZWNrIGlmIGl0IGlzIGFuIG9iamVjdCBvciBhcnJheSB3aXRoIG9iamVjdCBlbGVtZW50cywgaW4gd2hpY2ggY2FzZSB3ZSByZWN1cnNlXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IHNjaGVtYVBhcnQuX2VsZW1lbnRzO1xuICAgICAgICAgICAgaWYgKGNvbmZpZ1BhcnQgJiYgaGFzT2JqZWN0U2NoZW1hKGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWFQYXJ0Ll90eXBlID09PSBUeXBlLkFycmF5ICYmIEFycmF5LmlzQXJyYXkoY29uZmlnUGFydCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29uZmlnV2l0aERlZmF1bHRzID0gY29uZmlnUGFydC5tYXAoKGNvbmYpPT5zZXREZWZhdWx0cyhlbGVtZW50cywgY29uZikpO1xuICAgICAgICAgICAgICAgICAgICBjb25maWdba2V5XSA9IGNvbmZpZ1dpdGhEZWZhdWx0cztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYVBhcnQuX3R5cGUgPT09IFR5cGUuT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG9iamVjdEtleSBvZiBPYmplY3Qua2V5cyhjb25maWdQYXJ0KSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWdQYXJ0W29iamVjdEtleV0gPSBzZXREZWZhdWx0cyhlbGVtZW50cywgY29uZmlnUGFydFtvYmplY3RLZXldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpc09yZGluYXJ5T2JqZWN0KHNjaGVtYVBhcnQpKSB7XG4gICAgICAgICAgICAvLyBTaW5jZSBzY2hlbWFQYXJ0IGhhcyBubyBwcm9wZXJ0eSBcIl90eXBlXCIsIGlmIGl0J3MgYW4gb3JkaW5hcnkgb2JqZWN0XG4gICAgICAgICAgICAvLyAodW5saWtlLCBpbXBvcnRhbnRseSwgdGhlIHZhbGlkYXRvcnMgYXJyYXkpLCB3ZSBhc3N1bWUgaXQgaXMgYSBwYXJlbnQgY29uZmlnIHByb3BlcnR5LlxuICAgICAgICAgICAgLy8gV2UgcmVjdXJzZSB0byBjb25maWdba2V5XSBhbmQgc2NoZW1hW2tleV0uIERlZmF1bHQgY29uZmlnW2tleV0gdG8ge30uXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZENvbmZpZ1BhcnQgPSBjb25maWdQYXJ0ID8/IHt9O1xuICAgICAgICAgICAgLy8gVGhlcmUgd2lsbCBoYXZlIGJlZW4gYSB2YWxpZGF0aW9uIGVycm9yIGFscmVhZHkgaWYgY29uZmlnUGFydCBpcyBub3QgYSBwbGFpbiBvYmplY3QuXG4gICAgICAgICAgICBpZiAoaXNPcmRpbmFyeU9iamVjdChzZWxlY3RlZENvbmZpZ1BhcnQpKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnW2tleV0gPSBzZXREZWZhdWx0cyhzY2hlbWFQYXJ0LCBzZWxlY3RlZENvbmZpZ1BhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb25maWc7XG59O1xuZnVuY3Rpb24gaGFzT2JqZWN0U2NoZW1hKGVsZW1lbnRzU2NoZW1hKSB7XG4gICAgcmV0dXJuICEhZWxlbWVudHNTY2hlbWEgJiYgT2JqZWN0LmtleXMoZWxlbWVudHNTY2hlbWEpLmZpbHRlcigoZSk9PiFbXG4gICAgICAgICAgICAnX2RlZmF1bHQnLFxuICAgICAgICAgICAgJ192YWxpZGF0b3JzJ1xuICAgICAgICBdLmluY2x1ZGVzKGUpKS5sZW5ndGggPiAwO1xufVxuZnVuY3Rpb24gaXNPcmRpbmFyeU9iamVjdCh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZSAhPT0gbnVsbDtcbn1cbi8qKiBLZWVwIHRyYWNrIG9mIHdoaWNoIHZhbGlkYXRpb24gZXJyb3JzIHdlIGhhdmUgZGlzcGxheWVkLiBFYWNoIG9uZSBzaG91bGQgb25seSBiZSBkaXNwbGF5ZWQgb25jZS4gKi8gbGV0IGRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcyA9IG5ldyBTZXQoKTtcbmZ1bmN0aW9uIGxvZ0Vycm9yKGtleVBhdGgsIG1lc3NhZ2UpIHtcbiAgICBjb25zdCBrZXkgPSBgJHtrZXlQYXRofTo6OiR7bWVzc2FnZX1gO1xuICAgIC8vIHRlY2huaWNhbGx5LCB0aGlzIHNob3VsZCBub3QgYmUgcG9zc2libGUsIGJ1dCBiZWNhdXNlIG9mIGhvdyB0aGluZ3Mgd2luZC11cCB0cmFuc3BpbGVkLCB0aGlzIGlzbid0IGltcG9zc2libGVcbiAgICBpZiAoIWRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcykge1xuICAgICAgICBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMgPSBuZXcgU2V0KCk7XG4gICAgfVxuICAgIGlmICghZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzLmhhcyhrZXkpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgICAgIGRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcy5hZGQoa2V5KTtcbiAgICB9XG59XG4vKipcbiAqIE5vcm1hbGx5LCBjb25maWd1cmF0aW9uIGVycm9ycyBhcmUgb25seSBkaXNwbGF5ZWQgb25jZS4gVGhpcyBmdW5jdGlvbiBjbGVhcnMgdGhlIGxpc3Qgb2ZcbiAqIGRpc3BsYXllZCBlcnJvcnMsIHNvIHRoYXQgdGhleSB3aWxsIGJlIGRpc3BsYXllZCBhZ2Fpbi5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqLyBleHBvcnQgZnVuY3Rpb24gY2xlYXJDb25maWdFcnJvcnMoa2V5UGF0aCkge1xuICAgIGlmIChrZXlQYXRoKSB7XG4gICAgICAgIGRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcy5mb3JFYWNoKChrZXkpPT57XG4gICAgICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoa2V5UGF0aCkpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcy5jbGVhcigpO1xuICAgIH1cbn1cbi8qKlxuICogQ2xlYW5zIHVwIGFsbCBjb25maWcgc3RvcmUgc3Vic2NyaXB0aW9ucyBhbmQgcmUtZXN0YWJsaXNoZXMgdGhlbS4gVGhpcyBpcyBwcmltYXJpbHlcbiAqIHVzZWZ1bCBmb3IgdGVzdGluZywgd2hlcmUgc3Vic2NyaXB0aW9ucyBzZXQgdXAgYXQgbW9kdWxlIGxvYWQgdGltZSBuZWVkIHRvIGJlIGNsZWFyZWRcbiAqIGJldHdlZW4gdGVzdHMgdG8gcHJldmVudCBpbmZpbml0ZSB1cGRhdGUgbG9vcHMuIEFmdGVyIGNsZWFyaW5nLCBzdWJzY3JpcHRpb25zIGFyZVxuICogcmUtZXN0YWJsaXNoZWQgc28gdGhlIGNvbmZpZyBzeXN0ZW0gY29udGludWVzIHRvIHdvcmsgbm9ybWFsbHkuXG4gKlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlc2V0Q29uZmlnU3lzdGVtKCkge1xuICAgIGNvbmZpZ1N1YnNjcmlwdGlvbnMuZm9yRWFjaCgodW5zdWJzY3JpYmUpPT51bnN1YnNjcmliZSgpKTtcbiAgICBjb25maWdTdWJzY3JpcHRpb25zLmxlbmd0aCA9IDA7XG4gICAgLy8gQ2FjaGVkIGNvbmZpZ3MgYXJlIGtleWVkIG9uIGlucHV0IGlkZW50aXR5LCBzbyBhIHRlc3QgdGhhdCByZXVzZXMgdGhlIHNhbWUgc2NoZW1hIG9yIGNvbmZpZ1xuICAgIC8vIG9iamVjdHMgYWNyb3NzIGNhc2VzIHdvdWxkIG90aGVyd2lzZSBiZSBzZXJ2ZWQgdGhlIHByZXZpb3VzIGNhc2UncyByZXN1bHQuXG4gICAgbW9kdWxlQ29uZmlnQ2FjaGUuY2xlYXIoKTtcbiAgICBleHRlbnNpb25Db25maWdDYWNoZS5jbGVhcigpO1xuICAgIHNjaGVtYVZhbHVlc0FuZFNvdXJjZXNDYWNoZS5jbGVhcigpO1xuICAgIGltcGxlbWVudGVyVG9vbHNNb2R1bGVDYWNoZS5jbGVhcigpO1xuICAgIHNldHVwQ29uZmlnU3Vic2NyaXB0aW9ucygpO1xufVxuLyoqXG4gKiBDb3BpZWQgb3ZlciBmcm9tIGVzbS1leHRlbnNpb25zLiBJdCByaWdodGx5IGJlbG9uZ3MgdG8gdGhhdCBtb2R1bGUsIGJ1dCBlc20tY29uZmlnXG4gKiBjYW5ub3QgZGVwZW5kIG9uIGVzbS1leHRlbnNpb25zLlxuICovIGZ1bmN0aW9uIGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpIHtcbiAgICBjb25zdCBbZXh0ZW5zaW9uTmFtZV0gPSBleHRlbnNpb25JZC5zcGxpdCgnIycpO1xuICAgIHJldHVybiBleHRlbnNpb25OYW1lO1xufVxuLyoqXG4gKiBUaGUgdHJhbnNsYXRpb24gb3ZlcnJpZGVzIHNjaGVtYSBpcyB1c2VkIGluIHRoZSBpbXBsaWNpdCBzY2hlbWEgZ2l2ZW4gdG8gZXZlcnkgbW9kdWxlO1xuICogcGx1cyBhbnkgYWRkaXRpb25hbCB0cmFuc2xhdGlvbiBuYW1lc3BhY2VzIChhdCB0aW1lIG9mIHdyaXRpbmcsIHRoaXMgaXMganVzdCAnY29yZScpLlxuICovIGNvbnN0IHRyYW5zbGF0aW9uT3ZlcnJpZGVzU2NoZW1hID0ge1xuICAgICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnOiB7XG4gICAgICAgIF9kZXNjcmlwdGlvbjogJ1Blci1sYW5ndWFnZSBvdmVycmlkZXMgZm9yIGZyb250ZW5kIHRyYW5zbGF0aW9ucyBzaG91bGQgYmUga2V5ZWQgYnkgbGFuZ3VhZ2UgY29kZSBhbmQgZWFjaCBsYW5ndWFnZSBkaWN0aW9uYXJ5IGNvbnRhaW5zIHRoZSB0cmFuc2xhdGlvbiBrZXkgYW5kIHRoZSBkaXNwbGF5IHZhbHVlJyxcbiAgICAgICAgX3R5cGU6IFR5cGUuT2JqZWN0LFxuICAgICAgICBfZGVmYXVsdDoge30sXG4gICAgICAgIF92YWxpZGF0b3JzOiBbXG4gICAgICAgICAgICB2YWxpZGF0b3IoKG8pPT5PYmplY3Qua2V5cyhvKS5ldmVyeSgoayk9Pi9eW2Etel17MiwzfSgtW0EtWl17MiwzfSk/JC8udGVzdChrKSksIChvKT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhZEtleXMgPSBPYmplY3Qua2V5cyhvKS5maWx0ZXIoKGspPT4hL15bYS16XXsyLDN9KC1bQS1aXXsyLDN9KT8kLy50ZXN0KGspKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFRoZSAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJyBvYmplY3Qgc2hvdWxkIGhhdmUgbGFuZ3VhZ2UgY29kZXMgZm9yIGtleXMuIExhbmd1YWdlIGNvZGVzIG11c3QgYmUgaW4gdGhlIGZvcm0gb2YgYSB0d28tdG8tdGhyZWUgbGV0dGVyIGxhbmd1YWdlIGNvZGUgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIGh5cGhlbiBhbmQgYSB0d28tdG8tdGhyZWUgbGV0dGVyIGNvdW50cnkgY29kZS4gVGhlIGZvbGxvd2luZyBrZXlzIGRvIG5vdCBjb25mb3JtOiAke2JhZEtleXMuam9pbignLCAnKX0uYDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICB9XG59O1xuLyoqXG4gKiBUaGUgaW1wbGljaXRDb25maWdTY2hlbWEgaXMgaW1wbGljaXRseSBpbmNsdWRlZCBpbiBldmVyeSBjb25maWd1cmF0aW9uIHNjaGVtYVxuICovIGNvbnN0IGltcGxpY2l0Q29uZmlnU2NoZW1hID0ge1xuICAgICdEaXNwbGF5IGNvbmRpdGlvbnMnOiB7XG4gICAgICAgIHByaXZpbGVnZXM6IHtcbiAgICAgICAgICAgIF9kZXNjcmlwdGlvbjogJ1RoZSBwcml2aWxlZ2UocykgdGhlIHVzZXIgbXVzdCBoYXZlIHRvIHVzZSB0aGlzIGV4dGVuc2lvbicsXG4gICAgICAgICAgICBfdHlwZTogVHlwZS5BcnJheSxcbiAgICAgICAgICAgIF9kZWZhdWx0OiBbXVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uOiB7XG4gICAgICAgICAgICBfZGVzY3JpcHRpb246ICdUaGUgZXhwcmVzc2lvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgZXh0ZW5zaW9uIGlzIGRpc3BsYXllZCcsXG4gICAgICAgICAgICBfdHlwZTogVHlwZS5TdHJpbmcsXG4gICAgICAgICAgICBfZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICB9LFxuICAgIC4uLnRyYW5zbGF0aW9uT3ZlcnJpZGVzU2NoZW1hXG59O1xuIl0sIm5hbWVzIjpbImNsb25lRGVlcCIsImlzRXF1YWwiLCJtZXJnZVdpdGgiLCJvbWl0IiwibG9kYXNoT21pdCIsIlR5cGUiLCJpc0FycmF5IiwiaXNCb29sZWFuIiwiaXNVdWlkIiwiaXNOdW1iZXIiLCJpc09iamVjdCIsImlzU3RyaW5nIiwidmFsaWRhdG9yIiwiY29uZmlnRXh0ZW5zaW9uU3RvcmUiLCJjb25maWdJbnRlcm5hbFN0b3JlIiwiZ2V0Q29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25Db25maWciLCJnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlIiwiZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlIiwiY2xlYXJDb25maWdEZXJpdmF0aW9uRXJyb3IiLCJpbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUiLCJpbnZhbGlkYXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyIsInJlY29yZENvbmZpZ0Rlcml2YXRpb25FcnJvciIsInNldEltcGxlbWVudGVyVG9vbHNDb25maWdSZWNvbXB1dGVyIiwidGVtcG9yYXJ5Q29uZmlnU3RvcmUiLCJtZXJnZURlZXBSZXBsYWNlIiwibGVmdCIsInJpZ2h0IiwiX29ialZhbHVlIiwic3JjVmFsdWUiLCJBcnJheSIsImNvbmZpZ1N1YnNjcmlwdGlvbnMiLCJyZWNvbXB1dGVBbGxDb25maWdzIiwiY29uZmlnU3RhdGUiLCJ0ZW1wQ29uZmlnU3RhdGUiLCJleHRlbnNpb25TdGF0ZSIsImNvbXB1dGVNb2R1bGVDb25maWciLCJjb21wdXRlRXh0ZW5zaW9uU2xvdENvbmZpZ3MiLCJjb21wdXRlRXh0ZW5zaW9uQ29uZmlncyIsInNldHVwQ29uZmlnU3Vic2NyaXB0aW9ucyIsImNvbXB1dGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnIiwicmVjb21wdXRlQWxsQ29uZmlnc1NhZmVseSIsImUiLCJjb25zb2xlIiwibW9kdWxlQ29uZmlnQ2FjaGUiLCJNYXAiLCJzdGF0ZSIsInRlbXBTdGF0ZSIsIl9pdGVyYXRvckVycm9yIiwiT2JqZWN0IiwibW9kdWxlTmFtZSIsIm1vZHVsZVN0b3JlIiwic2NoZW1hIiwibW9kdWxlTG9hZGVkIiwiQm9vbGVhbiIsImNhY2hlZCIsIm5ld1N0YXRlIiwiY29uZmlnIiwiZ2V0Q29uZmlnRm9yTW9kdWxlIiwiZ2V0Q29uZmlnRm9yTW9kdWxlSW1wbGljaXRTY2hlbWEiLCJvbGRTdGF0ZSIsInNsb3RDb25maWdzIiwiZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ3MiLCJzbG90U3RvcmUiLCJvbGRTbG90cyIsInNsb3RzIiwiY2hhbmdlZCIsInNsb3ROYW1lIiwicHJldmlvdXMiLCJnZXRJbXBsZW1lbnRlclRvb2xzQ29uZmlnIiwiZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlIiwib2xkQ29uZmlncyIsImNvbmZpZ3MiLCJlbnRyeUNvdW50IiwiZXh0ZW5zaW9uIiwiX29sZENvbmZpZ3NfZXh0ZW5zaW9uX3Nsb3ROYW1lIiwiY29tcHV0ZUV4dGVuc2lvbkNvbmZpZyIsImVudHJ5IiwiX2l0ZXJhdG9yRXJyb3IxIiwicHJldmlvdXNTbG90IiwiZXh0ZW5zaW9uSWQiLCJ0b3RhbCIsInNsb3QiLCJkZWZpbmVDb25maWdTY2hlbWEiLCJ2YWxpZGF0ZUNvbmZpZ1NjaGVtYSIsImVuaGFuY2VkU2NoZW1hIiwiaW1wbGljaXRDb25maWdTY2hlbWEiLCJyZWdpc3Rlck1vZHVsZVdpdGhDb25maWdTeXN0ZW0iLCJyZWdpc3Rlck1vZHVsZUxvYWQiLCJyZWdpc3RlclRyYW5zbGF0aW9uTmFtZXNwYWNlIiwibmFtZXNwYWNlIiwidHJhbnNsYXRpb25PdmVycmlkZXNTY2hlbWEiLCJkZWZpbmVFeHRlbnNpb25Db25maWdTY2hlbWEiLCJleHRlbnNpb25OYW1lIiwicHJvdmlkZSIsInNvdXJjZU5hbWUiLCJ3aGVuU3RvcmVSZWFkeSIsInN0b3JlIiwicmVhZHkiLCJzZWxlY3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsInVwZGF0ZSIsInJlc29sdmVkIiwidW5zdWJzY3JpYmUiLCJnZXRDb25maWciLCJnZXRUcmFuc2xhdGlvbk92ZXJyaWRlcyIsInByb21pc2VzIiwiX3N0YXRlX2NvbmZpZ19UcmFuc2xhdGlvbm92ZXJyaWRlcyIsInByb2Nlc3NDb25maWciLCJwcm92aWRlZENvbmZpZyIsImtleVBhdGhDb250ZXh0IiwidmFsaWRhdGVTdHJ1Y3R1cmUiLCJzZXREZWZhdWx0cyIsInJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUiLCJleHRlbnNpb25Db25maWdDYWNoZSIsInNsb3RNb2R1bGVOYW1lIiwiZXh0ZW5zaW9uTW9kdWxlTmFtZSIsIl9zbG90TW9kdWxlQ29uZmlnX2V4dGVuc2lvblNsb3RzX3Nsb3ROYW1lX2NvbmZpZ3VyZSIsImdldEV4dGVuc2lvbk5hbWVGcm9tSWQiLCJleHRlbnNpb25Db25maWdTY2hlbWEiLCJjYWNoZUtleSIsIkpTT04iLCJuYW1lT2ZTY2hlbWFTb3VyY2UiLCJwcm92aWRlZENvbmZpZ3MiLCJnZXRQcm92aWRlZENvbmZpZ3MiLCJzbG90TW9kdWxlQ29uZmlnIiwibWVyZ2VDb25maWdzRm9yIiwiY29uZmlnT3ZlcnJpZGUiLCJleHRlbnNpb25Db25maWciLCJjb21iaW5lZENvbmZpZyIsIm1lcmdlQ29uZmlncyIsImltcGxlbWVudGVyVG9vbHNNb2R1bGVDYWNoZSIsImFubm90YXRlZFNjaGVtYXMiLCJnZXRBbGxTY2hlbWFzV2l0aFZhbHVlc0FuZFNvdXJjZXMiLCJjb25maWdzQW5kU291cmNlcyIsImMiLCJtb2R1bGVOYW1lcyIsIlNldCIsInJlc3VsdCIsIl9pdGVyYXRvckVycm9yMiIsImFubm90YXRlZFNjaGVtYSIsImNvbmZpZ1NsaWNlcyIsInNvdXJjZXMiLCJzb3VyY2UiLCJzbGljZSIsImkiLCJtZXJnZWQiLCJ1bmRlZmluZWQiLCJjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZSIsInNjaGVtYVZhbHVlc0FuZFNvdXJjZXNDYWNoZSIsInNjaGVtYXMiLCJhbm5vdGF0ZWQiLCJnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyIsImlzT3JkaW5hcnlPYmplY3QiLCJvYmoiLCJrZXkiLCJhbGxDb25maWdzIiwic2xvdENvbmZpZ1Blck1vZHVsZSIsIl9hbGxDb25maWdzX2tleSIsIl9hbGxDb25maWdzX2tleTEiLCJ2YWxpZGF0ZUFsbEV4dGVuc2lvblNsb3RDb25maWdzIiwiY29uZmlnQnlTbG90TmFtZSIsInZhbGlkYXRlRXh0ZW5zaW9uU2xvdENvbmZpZyIsImtleVBhdGgiLCJlcnJvclByZWZpeCIsImludmFsaWRLZXlzIiwiayIsImxvZ0Vycm9yIiwibiIsInVwZGF0ZU1lc3NhZ2UiLCJ0aGlzS2V5UGF0aCIsInNjaGVtYVBhcnQiLCJlbGVtZW50cyIsImhhc09iamVjdFNjaGVtYSIsIl8kdmFsaWRhdG9yIiwidmFsdWVUeXBlIiwiaW5wdXRDb25maWciLCJhbGxDb25maWdzRm9yTW9kdWxlIiwiYWNjIiwidmFsdWUiLCJ2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZSIsImNoZWNrVHlwZSIsInZhbGlkYXRlRnJlZWZvcm1PYmplY3RTdHJ1Y3R1cmUiLCJ2YWxpZGF0ZUFycmF5U3RydWN0dXJlIiwiZnJlZWZvcm1PYmplY3RTY2hlbWEiLCJhcnJheVNjaGVtYSIsInZhbGlkYXRlZEFzQXJyYXkiLCJpMSIsIl9hcnJheVNjaGVtYV9fZWxlbWVudHMiLCJydW5WYWxpZGF0b3JzIiwiX3R5cGUiLCJ2YWxpZGF0b3JzIiwicmV0dXJuVmFsdWUiLCJ2YWxpZGF0b3JSZXN1bHQiLCJtZXNzYWdlIiwiX3R5cGVfb2YiLCJzdHJ1Y3R1cmVkQ2xvbmUiLCJjb25maWdQYXJ0IiwiY29uZmlnV2l0aERlZmF1bHRzIiwiY29uZiIsIm9iamVjdEtleSIsInNlbGVjdGVkQ29uZmlnUGFydCIsImVsZW1lbnRzU2NoZW1hIiwiZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzIiwiY2xlYXJDb25maWdFcnJvcnMiLCJyZXNldENvbmZpZ1N5c3RlbSIsIl9leHRl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\n//# sourceURL=webpack-internal:///../../framework/esm-config/dist/module-config/module-config.js\n\n}");
5584
5584
 
5585
5585
  },
5586
5586
  "../../framework/esm-config/dist/module-config/state.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5587
5587
  "use strict";
5588
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n configExtensionStore: () => (configExtensionStore),\n configInternalStore: () => (configInternalStore),\n getConfigStore: () => (getConfigStore),\n getExtensionConfig: () => (getExtensionConfig),\n getExtensionConfigFromExtensionSlotStore: () => (getExtensionConfigFromExtensionSlotStore),\n getExtensionConfigFromStore: () => (getExtensionConfigFromStore),\n getExtensionSlotConfig: () => (getExtensionSlotConfig),\n getExtensionSlotConfigFromStore: () => (getExtensionSlotConfigFromStore),\n getExtensionSlotsConfigStore: () => (getExtensionSlotsConfigStore),\n getExtensionsConfigStore: () => (getExtensionsConfigStore),\n implementerToolsConfigStore: () => (implementerToolsConfigStore),\n temporaryConfigStore: () => (temporaryConfigStore)\n});\n/* import */ var _openmrs_esm_state__rspack_import_0 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/* import */ var _openmrs_esm_utils__rspack_import_1 = __webpack_require__(\"../../framework/esm-utils/dist/shallowEqual.js\");\n\n\nvar configInternalStoreInitialValue = {\n providedConfigs: [],\n schemas: {},\n moduleLoaded: {}\n};\n/**\n * @internal\n */ var configInternalStore = (0,_openmrs_esm_state__rspack_import_0.createGlobalStore)('config-internal', configInternalStoreInitialValue);\n/** @internal */ var temporaryConfigStore = (0,_openmrs_esm_state__rspack_import_0.createGlobalStore)('temporary-config', {\n config: getTemporaryConfig()\n});\ntemporaryConfigStore.subscribe(function(state) {\n setTemporaryConfig(state.config);\n});\nfunction setTemporaryConfig(value) {\n try {\n localStorage.setItem('openmrs:temporaryConfig', JSON.stringify(value));\n } catch (e) {\n // localStorage may not be available in all environments\n }\n}\nfunction getTemporaryConfig() {\n try {\n return JSON.parse(localStorage.getItem('openmrs:temporaryConfig') || '{}');\n } catch (e) {\n return {};\n }\n}\n/** @internal */ var configExtensionStore = (0,_openmrs_esm_state__rspack_import_0.createGlobalStore)('config-store-of-extension-state', {\n mountedExtensions: []\n});\nfunction initializeConfigStore() {\n return {\n config: null,\n loaded: false,\n translationOverridesLoaded: false\n };\n}\n/**\n * Returns the configuration store for a specific module. Each module has its\n * own store that tracks the loading state and resolved configuration values.\n *\n * @param moduleName The name of the module whose config store to retrieve.\n * @returns A Zustand store containing the module's configuration state.\n *\n * @internal\n */ function getConfigStore(moduleName) {\n // We use a store for each module's config, named `config-module-${moduleName}`\n return (0,_openmrs_esm_state__rspack_import_0.getGlobalStore)(\"config-module-\".concat(moduleName), initializeConfigStore());\n}\n/** @internal */ function getExtensionSlotsConfigStore() {\n return (0,_openmrs_esm_state__rspack_import_0.getGlobalStore)(\"config-extension-slots\", {\n slots: {}\n });\n}\n/** @internal */ function getExtensionSlotConfig(slotName) {\n return getExtensionSlotConfigFromStore(getExtensionSlotsConfigStore().getState(), slotName);\n}\n/** @internal */ function getExtensionSlotConfigFromStore(state, slotName) {\n var slotConfig = state.slots[slotName];\n return slotConfig !== null && slotConfig !== void 0 ? slotConfig : {\n loaded: false,\n config: {}\n };\n}\n/**\n * One store for all the extensions\n * @internal\n */ function getExtensionsConfigStore() {\n return (0,_openmrs_esm_state__rspack_import_0.getGlobalStore)(\"config-extensions\", {\n configs: {}\n });\n}\n/** @internal */ function getExtensionConfig(slotName, extensionId) {\n if (typeof slotName !== 'string' || typeof extensionId !== 'string' || slotName === '__proto__' || extensionId === '__proto__' || slotName === 'constructor' || extensionId === 'constructor' || slotName === 'prototype' || extensionId === 'prototype') {\n throw new Error('Attempted to call `getExtensionConfig()` with invalid argument');\n }\n var extensionConfigStore = getExtensionsConfigStore();\n var selector = function selector(configStore) {\n var _configStore_configs_slotName;\n return (_configStore_configs_slotName = configStore.configs[slotName]) === null || _configStore_configs_slotName === void 0 ? void 0 : _configStore_configs_slotName[extensionId];\n };\n return {\n getInitialState: function getInitialState() {\n return selector(extensionConfigStore.getInitialState());\n },\n getState: function getState() {\n var _selector;\n return (_selector = selector(extensionConfigStore.getState())) !== null && _selector !== void 0 ? _selector : {\n loaded: false,\n config: null\n };\n },\n setState: function setState(partial) {\n var replace = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n extensionConfigStore.setState(function(state) {\n if (!state.configs[slotName]) {\n state.configs[slotName] = {};\n }\n var newState = typeof partial === 'function' ? partial(state.configs.slotName[extensionId]) : partial;\n if (replace) {\n state.configs[slotName][extensionId] = Object.assign({}, newState);\n } else {\n state.configs[slotName][extensionId] = Object.assign({}, state.configs[slotName][extensionId], newState);\n }\n return state;\n });\n },\n subscribe: function subscribe(listener) {\n return extensionConfigStore.subscribe(function(state, prevState) {\n var newState = selector(state);\n var oldState = selector(prevState);\n if (!(0,_openmrs_esm_utils__rspack_import_1.shallowEqual)(newState, oldState)) {\n listener(newState, oldState);\n }\n });\n },\n destroy: function destroy() {\n /* this is a no-op */ }\n };\n}\n/** @internal */ function getExtensionConfigFromStore(state, slotName, extensionId) {\n var _state_configs_slotName;\n var extensionConfig = (_state_configs_slotName = state.configs[slotName]) === null || _state_configs_slotName === void 0 ? void 0 : _state_configs_slotName[extensionId];\n return extensionConfig !== null && extensionConfig !== void 0 ? extensionConfig : {\n loaded: false,\n config: null\n };\n}\n/** @internal */ function getExtensionConfigFromExtensionSlotStore(state, slotName, extensionId) {\n var _state_configure;\n var extensionConfig = (_state_configure = state.configure) === null || _state_configure === void 0 ? void 0 : _state_configure[extensionId];\n return extensionConfig !== null && extensionConfig !== void 0 ? extensionConfig : null;\n}\n/** @internal */ var implementerToolsConfigStore = (0,_openmrs_esm_state__rspack_import_0.createGlobalStore)('config-implementer-tools', {\n config: {}\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWNvbmZpZy9kaXN0L21vZHVsZS1jb25maWcvc3RhdGUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tY29uZmlnL2Rpc3QvbW9kdWxlLWNvbmZpZy9zdGF0ZS5qcz9iOGFkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUdsb2JhbFN0b3JlLCBnZXRHbG9iYWxTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCB9IGZyb20gXCJAb3Blbm1ycy9lc20tdXRpbHNcIjtcbmNvbnN0IGNvbmZpZ0ludGVybmFsU3RvcmVJbml0aWFsVmFsdWUgPSB7XG4gICAgcHJvdmlkZWRDb25maWdzOiBbXSxcbiAgICBzY2hlbWFzOiB7fSxcbiAgICBtb2R1bGVMb2FkZWQ6IHt9XG59O1xuLyoqXG4gKiBAaW50ZXJuYWxcbiAqLyBleHBvcnQgY29uc3QgY29uZmlnSW50ZXJuYWxTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlKCdjb25maWctaW50ZXJuYWwnLCBjb25maWdJbnRlcm5hbFN0b3JlSW5pdGlhbFZhbHVlKTtcbi8qKiBAaW50ZXJuYWwgKi8gZXhwb3J0IGNvbnN0IHRlbXBvcmFyeUNvbmZpZ1N0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmUoJ3RlbXBvcmFyeS1jb25maWcnLCB7XG4gICAgY29uZmlnOiBnZXRUZW1wb3JhcnlDb25maWcoKVxufSk7XG50ZW1wb3JhcnlDb25maWdTdG9yZS5zdWJzY3JpYmUoKHN0YXRlKT0+e1xuICAgIHNldFRlbXBvcmFyeUNvbmZpZyhzdGF0ZS5jb25maWcpO1xufSk7XG5mdW5jdGlvbiBzZXRUZW1wb3JhcnlDb25maWcodmFsdWUpIHtcbiAgICB0cnkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnb3Blbm1yczp0ZW1wb3JhcnlDb25maWcnLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBsb2NhbFN0b3JhZ2UgbWF5IG5vdCBiZSBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50c1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldFRlbXBvcmFyeUNvbmZpZygpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnb3Blbm1yczp0ZW1wb3JhcnlDb25maWcnKSB8fCAne30nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG59XG4vKiogQGludGVybmFsICovIGV4cG9ydCBjb25zdCBjb25maWdFeHRlbnNpb25TdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlKCdjb25maWctc3RvcmUtb2YtZXh0ZW5zaW9uLXN0YXRlJywge1xuICAgIG1vdW50ZWRFeHRlbnNpb25zOiBbXVxufSk7XG5mdW5jdGlvbiBpbml0aWFsaXplQ29uZmlnU3RvcmUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29uZmlnOiBudWxsLFxuICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICB0cmFuc2xhdGlvbk92ZXJyaWRlc0xvYWRlZDogZmFsc2VcbiAgICB9O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIHN0b3JlIGZvciBhIHNwZWNpZmljIG1vZHVsZS4gRWFjaCBtb2R1bGUgaGFzIGl0c1xuICogb3duIHN0b3JlIHRoYXQgdHJhY2tzIHRoZSBsb2FkaW5nIHN0YXRlIGFuZCByZXNvbHZlZCBjb25maWd1cmF0aW9uIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHdob3NlIGNvbmZpZyBzdG9yZSB0byByZXRyaWV2ZS5cbiAqIEByZXR1cm5zIEEgWnVzdGFuZCBzdG9yZSBjb250YWluaW5nIHRoZSBtb2R1bGUncyBjb25maWd1cmF0aW9uIHN0YXRlLlxuICpcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWdTdG9yZShtb2R1bGVOYW1lKSB7XG4gICAgLy8gV2UgdXNlIGEgc3RvcmUgZm9yIGVhY2ggbW9kdWxlJ3MgY29uZmlnLCBuYW1lZCBgY29uZmlnLW1vZHVsZS0ke21vZHVsZU5hbWV9YFxuICAgIHJldHVybiBnZXRHbG9iYWxTdG9yZShgY29uZmlnLW1vZHVsZS0ke21vZHVsZU5hbWV9YCwgaW5pdGlhbGl6ZUNvbmZpZ1N0b3JlKCkpO1xufVxuLyoqIEBpbnRlcm5hbCAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSgpIHtcbiAgICByZXR1cm4gZ2V0R2xvYmFsU3RvcmUoYGNvbmZpZy1leHRlbnNpb24tc2xvdHNgLCB7XG4gICAgICAgIHNsb3RzOiB7fVxuICAgIH0pO1xufVxuLyoqIEBpbnRlcm5hbCAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZyhzbG90TmFtZSkge1xuICAgIHJldHVybiBnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlKGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUoKS5nZXRTdGF0ZSgpLCBzbG90TmFtZSk7XG59XG4vKiogQGludGVybmFsICovIGV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlKHN0YXRlLCBzbG90TmFtZSkge1xuICAgIGNvbnN0IHNsb3RDb25maWcgPSBzdGF0ZS5zbG90c1tzbG90TmFtZV07XG4gICAgcmV0dXJuIHNsb3RDb25maWcgPz8ge1xuICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICBjb25maWc6IHt9XG4gICAgfTtcbn1cbi8qKlxuICogT25lIHN0b3JlIGZvciBhbGwgdGhlIGV4dGVuc2lvbnNcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUoKSB7XG4gICAgcmV0dXJuIGdldEdsb2JhbFN0b3JlKGBjb25maWctZXh0ZW5zaW9uc2AsIHtcbiAgICAgICAgY29uZmlnczoge31cbiAgICB9KTtcbn1cbi8qKiBAaW50ZXJuYWwgKi8gZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvbkNvbmZpZyhzbG90TmFtZSwgZXh0ZW5zaW9uSWQpIHtcbiAgICBpZiAodHlwZW9mIHNsb3ROYW1lICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgZXh0ZW5zaW9uSWQgIT09ICdzdHJpbmcnIHx8IHNsb3ROYW1lID09PSAnX19wcm90b19fJyB8fCBleHRlbnNpb25JZCA9PT0gJ19fcHJvdG9fXycgfHwgc2xvdE5hbWUgPT09ICdjb25zdHJ1Y3RvcicgfHwgZXh0ZW5zaW9uSWQgPT09ICdjb25zdHJ1Y3RvcicgfHwgc2xvdE5hbWUgPT09ICdwcm90b3R5cGUnIHx8IGV4dGVuc2lvbklkID09PSAncHJvdG90eXBlJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRlZCB0byBjYWxsIGBnZXRFeHRlbnNpb25Db25maWcoKWAgd2l0aCBpbnZhbGlkIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGNvbnN0IGV4dGVuc2lvbkNvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlKCk7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSAoY29uZmlnU3RvcmUpPT5jb25maWdTdG9yZS5jb25maWdzW3Nsb3ROYW1lXT8uW2V4dGVuc2lvbklkXTtcbiAgICByZXR1cm4ge1xuICAgICAgICBnZXRJbml0aWFsU3RhdGUgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yKGV4dGVuc2lvbkNvbmZpZ1N0b3JlLmdldEluaXRpYWxTdGF0ZSgpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0U3RhdGUgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yKGV4dGVuc2lvbkNvbmZpZ1N0b3JlLmdldFN0YXRlKCkpID8/IHtcbiAgICAgICAgICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZzogbnVsbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0U3RhdGUgKHBhcnRpYWwsIHJlcGxhY2UgPSBmYWxzZSkge1xuICAgICAgICAgICAgZXh0ZW5zaW9uQ29uZmlnU3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+e1xuICAgICAgICAgICAgICAgIGlmICghc3RhdGUuY29uZmlnc1tzbG90TmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuY29uZmlnc1tzbG90TmFtZV0gPSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB0eXBlb2YgcGFydGlhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcnRpYWwoc3RhdGUuY29uZmlncy5zbG90TmFtZVtleHRlbnNpb25JZF0pIDogcGFydGlhbDtcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZSkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jb25maWdzW3Nsb3ROYW1lXVtleHRlbnNpb25JZF0gPSBPYmplY3QuYXNzaWduKHt9LCBuZXdTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuY29uZmlnc1tzbG90TmFtZV1bZXh0ZW5zaW9uSWRdID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuY29uZmlnc1tzbG90TmFtZV1bZXh0ZW5zaW9uSWRdLCBuZXdTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBzdWJzY3JpYmUgKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZXh0ZW5zaW9uQ29uZmlnU3RvcmUuc3Vic2NyaWJlKChzdGF0ZSwgcHJldlN0YXRlKT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gc2VsZWN0b3Ioc3RhdGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFN0YXRlID0gc2VsZWN0b3IocHJldlN0YXRlKTtcbiAgICAgICAgICAgICAgICBpZiAoIXNoYWxsb3dFcXVhbChuZXdTdGF0ZSwgb2xkU3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyKG5ld1N0YXRlLCBvbGRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGRlc3Ryb3kgKCkge1xuICAgICAgICAvKiB0aGlzIGlzIGEgbm8tb3AgKi8gfVxuICAgIH07XG59XG4vKiogQGludGVybmFsICovIGV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoc3RhdGUsIHNsb3ROYW1lLCBleHRlbnNpb25JZCkge1xuICAgIGNvbnN0IGV4dGVuc2lvbkNvbmZpZyA9IHN0YXRlLmNvbmZpZ3Nbc2xvdE5hbWVdPy5bZXh0ZW5zaW9uSWRdO1xuICAgIHJldHVybiBleHRlbnNpb25Db25maWcgPz8ge1xuICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICBjb25maWc6IG51bGxcbiAgICB9O1xufVxuLyoqIEBpbnRlcm5hbCAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbUV4dGVuc2lvblNsb3RTdG9yZShzdGF0ZSwgc2xvdE5hbWUsIGV4dGVuc2lvbklkKSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnID0gc3RhdGUuY29uZmlndXJlPy5bZXh0ZW5zaW9uSWRdO1xuICAgIHJldHVybiBleHRlbnNpb25Db25maWcgPz8gbnVsbDtcbn1cbi8qKiBAaW50ZXJuYWwgKi8gZXhwb3J0IGNvbnN0IGltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlKCdjb25maWctaW1wbGVtZW50ZXItdG9vbHMnLCB7XG4gICAgY29uZmlnOiB7fVxufSk7XG4iXSwibmFtZXMiOlsiY3JlYXRlR2xvYmFsU3RvcmUiLCJnZXRHbG9iYWxTdG9yZSIsInNoYWxsb3dFcXVhbCIsImNvbmZpZ0ludGVybmFsU3RvcmVJbml0aWFsVmFsdWUiLCJjb25maWdJbnRlcm5hbFN0b3JlIiwidGVtcG9yYXJ5Q29uZmlnU3RvcmUiLCJnZXRUZW1wb3JhcnlDb25maWciLCJzdGF0ZSIsInNldFRlbXBvcmFyeUNvbmZpZyIsInZhbHVlIiwibG9jYWxTdG9yYWdlIiwiSlNPTiIsImUiLCJjb25maWdFeHRlbnNpb25TdG9yZSIsImluaXRpYWxpemVDb25maWdTdG9yZSIsImdldENvbmZpZ1N0b3JlIiwibW9kdWxlTmFtZSIsImdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25TbG90Q29uZmlnIiwic2xvdE5hbWUiLCJnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlIiwic2xvdENvbmZpZyIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbkNvbmZpZyIsImV4dGVuc2lvbklkIiwiRXJyb3IiLCJleHRlbnNpb25Db25maWdTdG9yZSIsInNlbGVjdG9yIiwiY29uZmlnU3RvcmUiLCJfY29uZmlnU3RvcmVfY29uZmlnc19zbG90TmFtZSIsImdldEluaXRpYWxTdGF0ZSIsImdldFN0YXRlIiwiX3NlbGVjdG9yIiwic2V0U3RhdGUiLCJwYXJ0aWFsIiwicmVwbGFjZSIsIm5ld1N0YXRlIiwiT2JqZWN0Iiwic3Vic2NyaWJlIiwibGlzdGVuZXIiLCJwcmV2U3RhdGUiLCJvbGRTdGF0ZSIsImRlc3Ryb3kiLCJnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUiLCJfc3RhdGVfY29uZmlnc19zbG90TmFtZSIsImV4dGVuc2lvbkNvbmZpZyIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21FeHRlbnNpb25TbG90U3RvcmUiLCJf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\n//# sourceURL=webpack-internal:///../../framework/esm-config/dist/module-config/state.js\n\n}");
5588
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n clearConfigDerivationError: () => (clearConfigDerivationError),\n configExtensionStore: () => (configExtensionStore),\n configInternalStore: () => (configInternalStore),\n getConfigStore: () => (getConfigStore),\n getExtensionConfig: () => (getExtensionConfig),\n getExtensionConfigFromExtensionSlotStore: () => (getExtensionConfigFromExtensionSlotStore),\n getExtensionConfigFromStore: () => (getExtensionConfigFromStore),\n getExtensionSlotConfig: () => (getExtensionSlotConfig),\n getExtensionSlotConfigFromStore: () => (getExtensionSlotConfigFromStore),\n getExtensionSlotsConfigStore: () => (getExtensionSlotsConfigStore),\n getExtensionsConfigStore: () => (getExtensionsConfigStore),\n implementerToolsConfigStore: () => (implementerToolsConfigStore),\n invalidateImplementerToolsConfig: () => (invalidateImplementerToolsConfig),\n recordConfigDerivationError: () => (recordConfigDerivationError),\n setImplementerToolsConfigRecomputer: () => (setImplementerToolsConfigRecomputer),\n temporaryConfigStore: () => (temporaryConfigStore)\n});\n/* import */ var _openmrs_esm_state__rspack_import_0 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/* import */ var _openmrs_esm_utils__rspack_import_1 = __webpack_require__(\"../../framework/esm-utils/dist/shallowEqual.js\");\n/* import */ var zustand_vanilla__rspack_import_2 = __webpack_require__(\"../../../node_modules/zustand/esm/vanilla.mjs\");\nfunction _array_like_to_array(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 _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\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}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n\n\n\nvar configInternalStoreInitialValue = {\n providedConfigs: [],\n schemas: {},\n moduleLoaded: {}\n};\n/**\n * @internal\n */ var configInternalStore = (0,_openmrs_esm_state__rspack_import_0.createGlobalStore)('config-internal', configInternalStoreInitialValue);\n/** @internal */ var temporaryConfigStore = (0,_openmrs_esm_state__rspack_import_0.createGlobalStore)('temporary-config', {\n config: getTemporaryConfig()\n});\ntemporaryConfigStore.subscribe(function(state) {\n setTemporaryConfig(state.config);\n});\nfunction setTemporaryConfig(value) {\n try {\n localStorage.setItem('openmrs:temporaryConfig', JSON.stringify(value));\n } catch (e) {\n // localStorage may not be available in all environments\n }\n}\nfunction getTemporaryConfig() {\n try {\n return JSON.parse(localStorage.getItem('openmrs:temporaryConfig') || '{}');\n } catch (e) {\n return {};\n }\n}\n/** @internal */ var configExtensionStore = (0,_openmrs_esm_state__rspack_import_0.createGlobalStore)('config-store-of-extension-state', {\n mountedExtensions: []\n});\nfunction initializeConfigStore() {\n return {\n config: null,\n loaded: false,\n translationOverridesLoaded: false\n };\n}\n/**\n * Returns the configuration store for a specific module. Each module has its\n * own store that tracks the loading state and resolved configuration values.\n *\n * @param moduleName The name of the module whose config store to retrieve.\n * @returns A Zustand store containing the module's configuration state.\n *\n * @internal\n */ function getConfigStore(moduleName) {\n // We use a store for each module's config, named `config-module-${moduleName}`\n return (0,_openmrs_esm_state__rspack_import_0.getGlobalStore)(\"config-module-\".concat(moduleName), initializeConfigStore());\n}\n/** @internal */ function getExtensionSlotsConfigStore() {\n return (0,_openmrs_esm_state__rspack_import_0.getGlobalStore)(\"config-extension-slots\", {\n slots: {}\n });\n}\n/** @internal */ function getExtensionSlotConfig(slotName) {\n return getExtensionSlotConfigFromStore(getExtensionSlotsConfigStore().getState(), slotName);\n}\n/** @internal */ function getExtensionSlotConfigFromStore(state, slotName) {\n var slotConfig = state.slots[slotName];\n return slotConfig !== null && slotConfig !== void 0 ? slotConfig : {\n loaded: false,\n config: {}\n };\n}\n/**\n * One store for all the extensions\n * @internal\n */ function getExtensionsConfigStore() {\n return (0,_openmrs_esm_state__rspack_import_0.getGlobalStore)(\"config-extensions\", {\n configs: {}\n });\n}\n/**\n * A read-only view of one extension instance's config within a slot. Read-only because these\n * configs are derived from the config system's inputs, so a write here would be overwritten by the\n * next recomputation; provide a config or set a temporary one instead.\n *\n * @internal\n */ function getExtensionConfig(slotName, extensionId) {\n if (typeof slotName !== 'string' || typeof extensionId !== 'string' || slotName === '__proto__' || extensionId === '__proto__' || slotName === 'constructor' || extensionId === 'constructor' || slotName === 'prototype' || extensionId === 'prototype') {\n throw new Error('Attempted to call `getExtensionConfig()` with invalid argument');\n }\n var extensionConfigStore = getExtensionsConfigStore();\n var selector = function selector(configStore) {\n var _configStore_configs_slotName;\n return (_configStore_configs_slotName = configStore.configs[slotName]) === null || _configStore_configs_slotName === void 0 ? void 0 : _configStore_configs_slotName[extensionId];\n };\n return {\n getInitialState: function getInitialState() {\n return selector(extensionConfigStore.getInitialState());\n },\n getState: function getState() {\n var _selector;\n return (_selector = selector(extensionConfigStore.getState())) !== null && _selector !== void 0 ? _selector : {\n loaded: false,\n config: null\n };\n },\n subscribe: function subscribe(listener) {\n return extensionConfigStore.subscribe(function(state, prevState) {\n var newState = selector(state);\n var oldState = selector(prevState);\n if (!(0,_openmrs_esm_utils__rspack_import_1.shallowEqual)(newState, oldState)) {\n listener(newState, oldState);\n }\n });\n }\n };\n}\n/** @internal */ function getExtensionConfigFromStore(state, slotName, extensionId) {\n var _state_configs_slotName;\n var extensionConfig = (_state_configs_slotName = state.configs[slotName]) === null || _state_configs_slotName === void 0 ? void 0 : _state_configs_slotName[extensionId];\n return extensionConfig !== null && extensionConfig !== void 0 ? extensionConfig : {\n loaded: false,\n config: null\n };\n}\n/** @internal */ function getExtensionConfigFromExtensionSlotStore(state, slotName, extensionId) {\n var _state_configure;\n var extensionConfig = (_state_configure = state.configure) === null || _state_configure === void 0 ? void 0 : _state_configure[extensionId];\n return extensionConfig !== null && extensionConfig !== void 0 ? extensionConfig : null;\n}\n// Deliberately not registered: the wrapper below is what gets published under\n// `config-implementer-tools`, so that a lookup can't hand out the store that skips the derivation.\nvar baseImplementerToolsConfigStore = (0,zustand_vanilla__rspack_import_2.createStore)()(function() {\n return {\n config: {}\n };\n});\n/**\n * Deriving this config walks every module's schema, making it the most expensive thing the config\n * system computes — and nothing but the implementer tools panel reads it. So it is only kept current\n * while something is subscribed; otherwise config changes just mark it stale.\n */ var implementerToolsSubscribers = 0;\nvar implementerToolsConfigStale = true;\nvar isRecomputing = false;\nvar recomputeImplementerToolsConfig;\n/**\n * Registers how to derive the implementer tools config; the store decides whether to.\n * @internal\n */ function setImplementerToolsConfigRecomputer(recompute) {\n recomputeImplementerToolsConfig = recompute;\n}\n/**\n * Marks the implementer tools config stale, deriving it again only if something is watching.\n * @internal\n */ function invalidateImplementerToolsConfig() {\n implementerToolsConfigStale = true;\n if (implementerToolsSubscribers > 0) {\n recomputeImplementerToolsConfigIfStale();\n }\n}\nfunction recomputeImplementerToolsConfigIfStale() {\n if (!implementerToolsConfigStale || !recomputeImplementerToolsConfig || isRecomputing) {\n return;\n }\n isRecomputing = true;\n // Cleared before the work, so that a config change made while it runs marks this stale again\n // instead of being wiped when the pass finishes.\n implementerToolsConfigStale = false;\n try {\n recomputeImplementerToolsConfig();\n } catch (e) {\n implementerToolsConfigStale = true;\n recordConfigDerivationError(e);\n console.error('Failed to derive the implementer tools config', e);\n } finally{\n isRecomputing = false;\n }\n}\n/**\n * Records that configuration could not be rebuilt so that the user can be informed\n *\n * @internal\n */ function recordConfigDerivationError(error) {\n baseImplementerToolsConfigStore.setState({\n derivationError: _instanceof(error, Error) ? error.message : String(error)\n });\n}\n/**\n * Cleared at the start of a derivation pass rather than the end of a successful one, so that a\n * failure recorded partway through the pass is not wiped by the pass completing.\n *\n * @internal\n */ function clearConfigDerivationError() {\n if (baseImplementerToolsConfigStore.getState().derivationError) {\n baseImplementerToolsConfigStore.setState({\n derivationError: undefined\n });\n }\n}\nvar lazyImplementerToolsConfigStore = _object_spread_props(_object_spread({}, baseImplementerToolsConfigStore), {\n getState: function getState() {\n // While something is subscribed the store is already current, so a read costs nothing. This\n // branch is what serves the panel's very first render, before it has subscribed.\n if (implementerToolsSubscribers === 0) {\n recomputeImplementerToolsConfigIfStale();\n }\n return baseImplementerToolsConfigStore.getState();\n },\n setState: function setState() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _baseImplementerToolsConfigStore;\n // An explicit write is the current value by definition, so don't overwrite it on the next read.\n implementerToolsConfigStale = false;\n return (_baseImplementerToolsConfigStore = baseImplementerToolsConfigStore).setState.apply(_baseImplementerToolsConfigStore, _to_consumable_array(args));\n },\n subscribe: function subscribe(listener) {\n implementerToolsSubscribers++;\n recomputeImplementerToolsConfigIfStale();\n var unsubscribe = baseImplementerToolsConfigStore.subscribe(listener);\n var hasUnsubscribed = false;\n return function() {\n if (!hasUnsubscribed) {\n hasUnsubscribed = true;\n implementerToolsSubscribers--;\n }\n unsubscribe();\n };\n }\n});\n/**\n * Published rather than the store it wraps, so that a lookup by name can't hand out the one that\n * skips the derivation and always reads empty.\n *\n * @internal\n */ var implementerToolsConfigStore = (0,_openmrs_esm_state__rspack_import_0.registerGlobalStore)('config-implementer-tools', lazyImplementerToolsConfigStore);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWNvbmZpZy9kaXN0L21vZHVsZS1jb25maWcvc3RhdGUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tY29uZmlnL2Rpc3QvbW9kdWxlLWNvbmZpZy9zdGF0ZS5qcz9iOGFkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUdsb2JhbFN0b3JlLCBnZXRHbG9iYWxTdG9yZSwgcmVnaXN0ZXJHbG9iYWxTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCB9IGZyb20gXCJAb3Blbm1ycy9lc20tdXRpbHNcIjtcbmltcG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSBcInp1c3RhbmQvdmFuaWxsYVwiO1xuY29uc3QgY29uZmlnSW50ZXJuYWxTdG9yZUluaXRpYWxWYWx1ZSA9IHtcbiAgICBwcm92aWRlZENvbmZpZ3M6IFtdLFxuICAgIHNjaGVtYXM6IHt9LFxuICAgIG1vZHVsZUxvYWRlZDoge31cbn07XG4vKipcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBjb25zdCBjb25maWdJbnRlcm5hbFN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmUoJ2NvbmZpZy1pbnRlcm5hbCcsIGNvbmZpZ0ludGVybmFsU3RvcmVJbml0aWFsVmFsdWUpO1xuLyoqIEBpbnRlcm5hbCAqLyBleHBvcnQgY29uc3QgdGVtcG9yYXJ5Q29uZmlnU3RvcmUgPSBjcmVhdGVHbG9iYWxTdG9yZSgndGVtcG9yYXJ5LWNvbmZpZycsIHtcbiAgICBjb25maWc6IGdldFRlbXBvcmFyeUNvbmZpZygpXG59KTtcbnRlbXBvcmFyeUNvbmZpZ1N0b3JlLnN1YnNjcmliZSgoc3RhdGUpPT57XG4gICAgc2V0VGVtcG9yYXJ5Q29uZmlnKHN0YXRlLmNvbmZpZyk7XG59KTtcbmZ1bmN0aW9uIHNldFRlbXBvcmFyeUNvbmZpZyh2YWx1ZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdvcGVubXJzOnRlbXBvcmFyeUNvbmZpZycsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGxvY2FsU3RvcmFnZSBtYXkgbm90IGJlIGF2YWlsYWJsZSBpbiBhbGwgZW52aXJvbm1lbnRzXG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5Q29uZmlnKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdvcGVubXJzOnRlbXBvcmFyeUNvbmZpZycpIHx8ICd7fScpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbn1cbi8qKiBAaW50ZXJuYWwgKi8gZXhwb3J0IGNvbnN0IGNvbmZpZ0V4dGVuc2lvblN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmUoJ2NvbmZpZy1zdG9yZS1vZi1leHRlbnNpb24tc3RhdGUnLCB7XG4gICAgbW91bnRlZEV4dGVuc2lvbnM6IFtdXG59KTtcbmZ1bmN0aW9uIGluaXRpYWxpemVDb25maWdTdG9yZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBjb25maWc6IG51bGwsXG4gICAgICAgIGxvYWRlZDogZmFsc2UsXG4gICAgICAgIHRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkOiBmYWxzZVxuICAgIH07XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gc3RvcmUgZm9yIGEgc3BlY2lmaWMgbW9kdWxlLiBFYWNoIG1vZHVsZSBoYXMgaXRzXG4gKiBvd24gc3RvcmUgdGhhdCB0cmFja3MgdGhlIGxvYWRpbmcgc3RhdGUgYW5kIHJlc29sdmVkIGNvbmZpZ3VyYXRpb24gdmFsdWVzLlxuICpcbiAqIEBwYXJhbSBtb2R1bGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgd2hvc2UgY29uZmlnIHN0b3JlIHRvIHJldHJpZXZlLlxuICogQHJldHVybnMgQSBadXN0YW5kIHN0b3JlIGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIGNvbmZpZ3VyYXRpb24gc3RhdGUuXG4gKlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ1N0b3JlKG1vZHVsZU5hbWUpIHtcbiAgICAvLyBXZSB1c2UgYSBzdG9yZSBmb3IgZWFjaCBtb2R1bGUncyBjb25maWcsIG5hbWVkIGBjb25maWctbW9kdWxlLSR7bW9kdWxlTmFtZX1gXG4gICAgcmV0dXJuIGdldEdsb2JhbFN0b3JlKGBjb25maWctbW9kdWxlLSR7bW9kdWxlTmFtZX1gLCBpbml0aWFsaXplQ29uZmlnU3RvcmUoKSk7XG59XG4vKiogQGludGVybmFsICovIGV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlKCkge1xuICAgIHJldHVybiBnZXRHbG9iYWxTdG9yZShgY29uZmlnLWV4dGVuc2lvbi1zbG90c2AsIHtcbiAgICAgICAgc2xvdHM6IHt9XG4gICAgfSk7XG59XG4vKiogQGludGVybmFsICovIGV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25TbG90Q29uZmlnKHNsb3ROYW1lKSB7XG4gICAgcmV0dXJuIGdldEV4dGVuc2lvblNsb3RDb25maWdGcm9tU3RvcmUoZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSgpLmdldFN0YXRlKCksIHNsb3ROYW1lKTtcbn1cbi8qKiBAaW50ZXJuYWwgKi8gZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvblNsb3RDb25maWdGcm9tU3RvcmUoc3RhdGUsIHNsb3ROYW1lKSB7XG4gICAgY29uc3Qgc2xvdENvbmZpZyA9IHN0YXRlLnNsb3RzW3Nsb3ROYW1lXTtcbiAgICByZXR1cm4gc2xvdENvbmZpZyA/PyB7XG4gICAgICAgIGxvYWRlZDogZmFsc2UsXG4gICAgICAgIGNvbmZpZzoge31cbiAgICB9O1xufVxuLyoqXG4gKiBPbmUgc3RvcmUgZm9yIGFsbCB0aGUgZXh0ZW5zaW9uc1xuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSgpIHtcbiAgICByZXR1cm4gZ2V0R2xvYmFsU3RvcmUoYGNvbmZpZy1leHRlbnNpb25zYCwge1xuICAgICAgICBjb25maWdzOiB7fVxuICAgIH0pO1xufVxuLyoqXG4gKiBBIHJlYWQtb25seSB2aWV3IG9mIG9uZSBleHRlbnNpb24gaW5zdGFuY2UncyBjb25maWcgd2l0aGluIGEgc2xvdC4gUmVhZC1vbmx5IGJlY2F1c2UgdGhlc2VcbiAqIGNvbmZpZ3MgYXJlIGRlcml2ZWQgZnJvbSB0aGUgY29uZmlnIHN5c3RlbSdzIGlucHV0cywgc28gYSB3cml0ZSBoZXJlIHdvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZVxuICogbmV4dCByZWNvbXB1dGF0aW9uOyBwcm92aWRlIGEgY29uZmlnIG9yIHNldCBhIHRlbXBvcmFyeSBvbmUgaW5zdGVhZC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uQ29uZmlnKHNsb3ROYW1lLCBleHRlbnNpb25JZCkge1xuICAgIGlmICh0eXBlb2Ygc2xvdE5hbWUgIT09ICdzdHJpbmcnIHx8IHR5cGVvZiBleHRlbnNpb25JZCAhPT0gJ3N0cmluZycgfHwgc2xvdE5hbWUgPT09ICdfX3Byb3RvX18nIHx8IGV4dGVuc2lvbklkID09PSAnX19wcm90b19fJyB8fCBzbG90TmFtZSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBleHRlbnNpb25JZCA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBzbG90TmFtZSA9PT0gJ3Byb3RvdHlwZScgfHwgZXh0ZW5zaW9uSWQgPT09ICdwcm90b3R5cGUnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGVkIHRvIGNhbGwgYGdldEV4dGVuc2lvbkNvbmZpZygpYCB3aXRoIGludmFsaWQgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnU3RvcmUgPSBnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUoKTtcbiAgICBjb25zdCBzZWxlY3RvciA9IChjb25maWdTdG9yZSk9PmNvbmZpZ1N0b3JlLmNvbmZpZ3Nbc2xvdE5hbWVdPy5bZXh0ZW5zaW9uSWRdO1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldEluaXRpYWxTdGF0ZSAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0b3IoZXh0ZW5zaW9uQ29uZmlnU3RvcmUuZ2V0SW5pdGlhbFN0YXRlKCkpO1xuICAgICAgICB9LFxuICAgICAgICBnZXRTdGF0ZSAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0b3IoZXh0ZW5zaW9uQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKSkgPz8ge1xuICAgICAgICAgICAgICAgIGxvYWRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlnOiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBzdWJzY3JpYmUgKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZXh0ZW5zaW9uQ29uZmlnU3RvcmUuc3Vic2NyaWJlKChzdGF0ZSwgcHJldlN0YXRlKT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gc2VsZWN0b3Ioc3RhdGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFN0YXRlID0gc2VsZWN0b3IocHJldlN0YXRlKTtcbiAgICAgICAgICAgICAgICBpZiAoIXNoYWxsb3dFcXVhbChuZXdTdGF0ZSwgb2xkU3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyKG5ld1N0YXRlLCBvbGRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuLyoqIEBpbnRlcm5hbCAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlKHN0YXRlLCBzbG90TmFtZSwgZXh0ZW5zaW9uSWQpIHtcbiAgICBjb25zdCBleHRlbnNpb25Db25maWcgPSBzdGF0ZS5jb25maWdzW3Nsb3ROYW1lXT8uW2V4dGVuc2lvbklkXTtcbiAgICByZXR1cm4gZXh0ZW5zaW9uQ29uZmlnID8/IHtcbiAgICAgICAgbG9hZGVkOiBmYWxzZSxcbiAgICAgICAgY29uZmlnOiBudWxsXG4gICAgfTtcbn1cbi8qKiBAaW50ZXJuYWwgKi8gZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21FeHRlbnNpb25TbG90U3RvcmUoc3RhdGUsIHNsb3ROYW1lLCBleHRlbnNpb25JZCkge1xuICAgIGNvbnN0IGV4dGVuc2lvbkNvbmZpZyA9IHN0YXRlLmNvbmZpZ3VyZT8uW2V4dGVuc2lvbklkXTtcbiAgICByZXR1cm4gZXh0ZW5zaW9uQ29uZmlnID8/IG51bGw7XG59XG4vLyBEZWxpYmVyYXRlbHkgbm90IHJlZ2lzdGVyZWQ6IHRoZSB3cmFwcGVyIGJlbG93IGlzIHdoYXQgZ2V0cyBwdWJsaXNoZWQgdW5kZXJcbi8vIGBjb25maWctaW1wbGVtZW50ZXItdG9vbHNgLCBzbyB0aGF0IGEgbG9va3VwIGNhbid0IGhhbmQgb3V0IHRoZSBzdG9yZSB0aGF0IHNraXBzIHRoZSBkZXJpdmF0aW9uLlxuY29uc3QgYmFzZUltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSA9IGNyZWF0ZVN0b3JlKCkoKCk9Pih7XG4gICAgICAgIGNvbmZpZzoge31cbiAgICB9KSk7XG4vKipcbiAqIERlcml2aW5nIHRoaXMgY29uZmlnIHdhbGtzIGV2ZXJ5IG1vZHVsZSdzIHNjaGVtYSwgbWFraW5nIGl0IHRoZSBtb3N0IGV4cGVuc2l2ZSB0aGluZyB0aGUgY29uZmlnXG4gKiBzeXN0ZW0gY29tcHV0ZXMg4oCUIGFuZCBub3RoaW5nIGJ1dCB0aGUgaW1wbGVtZW50ZXIgdG9vbHMgcGFuZWwgcmVhZHMgaXQuIFNvIGl0IGlzIG9ubHkga2VwdCBjdXJyZW50XG4gKiB3aGlsZSBzb21ldGhpbmcgaXMgc3Vic2NyaWJlZDsgb3RoZXJ3aXNlIGNvbmZpZyBjaGFuZ2VzIGp1c3QgbWFyayBpdCBzdGFsZS5cbiAqLyBsZXQgaW1wbGVtZW50ZXJUb29sc1N1YnNjcmliZXJzID0gMDtcbmxldCBpbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RhbGUgPSB0cnVlO1xubGV0IGlzUmVjb21wdXRpbmcgPSBmYWxzZTtcbmxldCByZWNvbXB1dGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnO1xuLyoqXG4gKiBSZWdpc3RlcnMgaG93IHRvIGRlcml2ZSB0aGUgaW1wbGVtZW50ZXIgdG9vbHMgY29uZmlnOyB0aGUgc3RvcmUgZGVjaWRlcyB3aGV0aGVyIHRvLlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHNldEltcGxlbWVudGVyVG9vbHNDb25maWdSZWNvbXB1dGVyKHJlY29tcHV0ZSkge1xuICAgIHJlY29tcHV0ZUltcGxlbWVudGVyVG9vbHNDb25maWcgPSByZWNvbXB1dGU7XG59XG4vKipcbiAqIE1hcmtzIHRoZSBpbXBsZW1lbnRlciB0b29scyBjb25maWcgc3RhbGUsIGRlcml2aW5nIGl0IGFnYWluIG9ubHkgaWYgc29tZXRoaW5nIGlzIHdhdGNoaW5nLlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnKCkge1xuICAgIGltcGxlbWVudGVyVG9vbHNDb25maWdTdGFsZSA9IHRydWU7XG4gICAgaWYgKGltcGxlbWVudGVyVG9vbHNTdWJzY3JpYmVycyA+IDApIHtcbiAgICAgICAgcmVjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZ0lmU3RhbGUoKTtcbiAgICB9XG59XG5mdW5jdGlvbiByZWNvbXB1dGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnSWZTdGFsZSgpIHtcbiAgICBpZiAoIWltcGxlbWVudGVyVG9vbHNDb25maWdTdGFsZSB8fCAhcmVjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyB8fCBpc1JlY29tcHV0aW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXNSZWNvbXB1dGluZyA9IHRydWU7XG4gICAgLy8gQ2xlYXJlZCBiZWZvcmUgdGhlIHdvcmssIHNvIHRoYXQgYSBjb25maWcgY2hhbmdlIG1hZGUgd2hpbGUgaXQgcnVucyBtYXJrcyB0aGlzIHN0YWxlIGFnYWluXG4gICAgLy8gaW5zdGVhZCBvZiBiZWluZyB3aXBlZCB3aGVuIHRoZSBwYXNzIGZpbmlzaGVzLlxuICAgIGltcGxlbWVudGVyVG9vbHNDb25maWdTdGFsZSA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICAgIHJlY29tcHV0ZUltcGxlbWVudGVyVG9vbHNDb25maWcoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGltcGxlbWVudGVyVG9vbHNDb25maWdTdGFsZSA9IHRydWU7XG4gICAgICAgIHJlY29yZENvbmZpZ0Rlcml2YXRpb25FcnJvcihlKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRlcml2ZSB0aGUgaW1wbGVtZW50ZXIgdG9vbHMgY29uZmlnJywgZSk7XG4gICAgfSBmaW5hbGx5e1xuICAgICAgICBpc1JlY29tcHV0aW5nID0gZmFsc2U7XG4gICAgfVxufVxuLyoqXG4gKiBSZWNvcmRzIHRoYXQgY29uZmlndXJhdGlvbiBjb3VsZCBub3QgYmUgcmVidWlsdCBzbyB0aGF0IHRoZSB1c2VyIGNhbiBiZSBpbmZvcm1lZFxuICpcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiByZWNvcmRDb25maWdEZXJpdmF0aW9uRXJyb3IoZXJyb3IpIHtcbiAgICBiYXNlSW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgZGVyaXZhdGlvbkVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICB9KTtcbn1cbi8qKlxuICogQ2xlYXJlZCBhdCB0aGUgc3RhcnQgb2YgYSBkZXJpdmF0aW9uIHBhc3MgcmF0aGVyIHRoYW4gdGhlIGVuZCBvZiBhIHN1Y2Nlc3NmdWwgb25lLCBzbyB0aGF0IGFcbiAqIGZhaWx1cmUgcmVjb3JkZWQgcGFydHdheSB0aHJvdWdoIHRoZSBwYXNzIGlzIG5vdCB3aXBlZCBieSB0aGUgcGFzcyBjb21wbGV0aW5nLlxuICpcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiBjbGVhckNvbmZpZ0Rlcml2YXRpb25FcnJvcigpIHtcbiAgICBpZiAoYmFzZUltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZS5nZXRTdGF0ZSgpLmRlcml2YXRpb25FcnJvcikge1xuICAgICAgICBiYXNlSW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGRlcml2YXRpb25FcnJvcjogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmNvbnN0IGxhenlJbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUgPSB7XG4gICAgLi4uYmFzZUltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSxcbiAgICBnZXRTdGF0ZSAoKSB7XG4gICAgICAgIC8vIFdoaWxlIHNvbWV0aGluZyBpcyBzdWJzY3JpYmVkIHRoZSBzdG9yZSBpcyBhbHJlYWR5IGN1cnJlbnQsIHNvIGEgcmVhZCBjb3N0cyBub3RoaW5nLiBUaGlzXG4gICAgICAgIC8vIGJyYW5jaCBpcyB3aGF0IHNlcnZlcyB0aGUgcGFuZWwncyB2ZXJ5IGZpcnN0IHJlbmRlciwgYmVmb3JlIGl0IGhhcyBzdWJzY3JpYmVkLlxuICAgICAgICBpZiAoaW1wbGVtZW50ZXJUb29sc1N1YnNjcmliZXJzID09PSAwKSB7XG4gICAgICAgICAgICByZWNvbXB1dGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnSWZTdGFsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYXNlSW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlLmdldFN0YXRlKCk7XG4gICAgfSxcbiAgICBzZXRTdGF0ZSAoLi4uYXJncykge1xuICAgICAgICAvLyBBbiBleHBsaWNpdCB3cml0ZSBpcyB0aGUgY3VycmVudCB2YWx1ZSBieSBkZWZpbml0aW9uLCBzbyBkb24ndCBvdmVyd3JpdGUgaXQgb24gdGhlIG5leHQgcmVhZC5cbiAgICAgICAgaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0YWxlID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBiYXNlSW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlLnNldFN0YXRlKC4uLmFyZ3MpO1xuICAgIH0sXG4gICAgc3Vic2NyaWJlIChsaXN0ZW5lcikge1xuICAgICAgICBpbXBsZW1lbnRlclRvb2xzU3Vic2NyaWJlcnMrKztcbiAgICAgICAgcmVjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZ0lmU3RhbGUoKTtcbiAgICAgICAgY29uc3QgdW5zdWJzY3JpYmUgPSBiYXNlSW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlLnN1YnNjcmliZShsaXN0ZW5lcik7XG4gICAgICAgIGxldCBoYXNVbnN1YnNjcmliZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoIWhhc1Vuc3Vic2NyaWJlZCkge1xuICAgICAgICAgICAgICAgIGhhc1Vuc3Vic2NyaWJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaW1wbGVtZW50ZXJUb29sc1N1YnNjcmliZXJzLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICB9O1xuICAgIH1cbn07XG4vKipcbiAqIFB1Ymxpc2hlZCByYXRoZXIgdGhhbiB0aGUgc3RvcmUgaXQgd3JhcHMsIHNvIHRoYXQgYSBsb29rdXAgYnkgbmFtZSBjYW4ndCBoYW5kIG91dCB0aGUgb25lIHRoYXRcbiAqIHNraXBzIHRoZSBkZXJpdmF0aW9uIGFuZCBhbHdheXMgcmVhZHMgZW1wdHkuXG4gKlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGNvbnN0IGltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSA9IHJlZ2lzdGVyR2xvYmFsU3RvcmUoJ2NvbmZpZy1pbXBsZW1lbnRlci10b29scycsIGxhenlJbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUpO1xuIl0sIm5hbWVzIjpbImNyZWF0ZUdsb2JhbFN0b3JlIiwiZ2V0R2xvYmFsU3RvcmUiLCJyZWdpc3Rlckdsb2JhbFN0b3JlIiwic2hhbGxvd0VxdWFsIiwiY3JlYXRlU3RvcmUiLCJjb25maWdJbnRlcm5hbFN0b3JlSW5pdGlhbFZhbHVlIiwiY29uZmlnSW50ZXJuYWxTdG9yZSIsInRlbXBvcmFyeUNvbmZpZ1N0b3JlIiwiZ2V0VGVtcG9yYXJ5Q29uZmlnIiwic3RhdGUiLCJzZXRUZW1wb3JhcnlDb25maWciLCJ2YWx1ZSIsImxvY2FsU3RvcmFnZSIsIkpTT04iLCJlIiwiY29uZmlnRXh0ZW5zaW9uU3RvcmUiLCJpbml0aWFsaXplQ29uZmlnU3RvcmUiLCJnZXRDb25maWdTdG9yZSIsIm1vZHVsZU5hbWUiLCJnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlIiwiZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZyIsInNsb3ROYW1lIiwiZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZSIsInNsb3RDb25maWciLCJnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25Db25maWciLCJleHRlbnNpb25JZCIsIkVycm9yIiwiZXh0ZW5zaW9uQ29uZmlnU3RvcmUiLCJzZWxlY3RvciIsImNvbmZpZ1N0b3JlIiwiX2NvbmZpZ1N0b3JlX2NvbmZpZ3Nfc2xvdE5hbWUiLCJnZXRJbml0aWFsU3RhdGUiLCJnZXRTdGF0ZSIsIl9zZWxlY3RvciIsInN1YnNjcmliZSIsImxpc3RlbmVyIiwicHJldlN0YXRlIiwibmV3U3RhdGUiLCJvbGRTdGF0ZSIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsIl9zdGF0ZV9jb25maWdzX3Nsb3ROYW1lIiwiZXh0ZW5zaW9uQ29uZmlnIiwiZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbUV4dGVuc2lvblNsb3RTdG9yZSIsIl9zdGF0ZV9jb25maWd1cmUiLCJiYXNlSW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlIiwiaW1wbGVtZW50ZXJUb29sc1N1YnNjcmliZXJzIiwiaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0YWxlIiwiaXNSZWNvbXB1dGluZyIsInJlY29tcHV0ZUltcGxlbWVudGVyVG9vbHNDb25maWciLCJzZXRJbXBsZW1lbnRlclRvb2xzQ29uZmlnUmVjb21wdXRlciIsInJlY29tcHV0ZSIsImludmFsaWRhdGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnIiwicmVjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZ0lmU3RhbGUiLCJyZWNvcmRDb25maWdEZXJpdmF0aW9uRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJfaW5zdGFuY2VvZiIsIlN0cmluZyIsImNsZWFyQ29uZmlnRGVyaXZhdGlvbkVycm9yIiwidW5kZWZpbmVkIiwibGF6eUltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSIsInNldFN0YXRlIiwiX2tleSIsImFyZ3MiLCJfYmFzZUltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSIsInVuc3Vic2NyaWJlIiwiaGFzVW5zdWJzY3JpYmVkIiwiaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTRGO0FBQzFDO0FBQ0o7QUFDOUMsSUFBTUssa0NBQWtDO0lBQ3BDLGlCQUFpQixFQUFFO0lBQ25CLFNBQVMsQ0FBQztJQUNWLGNBQWMsQ0FBQztBQUNuQjtBQUNBOztDQUVDLEdBQVUsSUFBTUMsc0JBQXNCTix5REFBaUJBLENBQUMsbUJBQW1CSyxpQ0FBaUM7QUFDN0csY0FBYyxHQUFVLElBQU1FLHVCQUF1QlAseURBQWlCQSxD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\n//# sourceURL=webpack-internal:///../../framework/esm-config/dist/module-config/state.js\n\n}");
5589
5589
 
5590
5590
  },
5591
5591
  "../../framework/esm-config/dist/types.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -5755,7 +5755,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
5755
5755
  },
5756
5756
  "../../framework/esm-extensions/dist/extensions.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5757
5757
  "use strict";
5758
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n attach: () => (attach),\n detach: () => (detach),\n detachAll: () => (detachAll),\n getAssignedExtensions: () => (getAssignedExtensions),\n getExtensionNameFromId: () => (getExtensionNameFromId),\n getExtensionRegistration: () => (getExtensionRegistration),\n getExtensionRegistrationFrom: () => (getExtensionRegistrationFrom),\n registerExtension: () => (registerExtension),\n registerExtensionSlot: () => (registerExtensionSlot),\n reset: () => (reset),\n updateExtensionSlotState: () => (updateExtensionSlotState)\n});\n/* import */ var _openmrs_esm_api__rspack_import_0 = __webpack_require__(\"../../framework/esm-api/dist/index.js\");\n/* import */ var _openmrs_esm_config__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/index.js\");\n/* import */ var _openmrs_esm_expression_evaluator__rspack_import_9 = __webpack_require__(\"../../framework/esm-expression-evaluator/dist/evaluator.js\");\n/* import */ var _openmrs_esm_feature_flags__rspack_import_2 = __webpack_require__(\"../../framework/esm-feature-flags/dist/index.js\");\n/* import */ var _openmrs_esm_globals__rspack_import_3 = __webpack_require__(\"../../framework/esm-globals/dist/index.js\");\n/* import */ var _openmrs_esm_utils__rspack_import_6 = __webpack_require__(\"../../framework/esm-utils/dist/is-online.js\");\n/* import */ var lodash_es__rspack_import_7 = __webpack_require__(\"../../../node_modules/lodash-es/isEqual.js\");\n/* import */ var lodash_es__rspack_import_8 = __webpack_require__(\"../../../node_modules/lodash-es/merge.js\");\n/* import */ var _helpers_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-extensions/dist/helpers.js\");\n/* import */ var _store_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-extensions/dist/store.js\");\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category Extension */ /*\n * We have the following extension modes:\n *\n * - attached (set via code in form of: attach, detach, ...)\n * - configured (set via configuration in form of: added, removed, ...)\n * - assigned (computed from attached and configured)\n * - connected (computed from assigned using connectivity and online / offline)\n */ \n\n\n\n\n\n\n\n\nvar extensionInternalStore = (0,_store_js__rspack_import_5.getExtensionInternalStore)();\nvar extensionStore = (0,_store_js__rspack_import_5.getExtensionStore)();\nvar slotsConfigStore = (0,_openmrs_esm_config__rspack_import_1.getExtensionSlotsConfigStore)();\nvar extensionsConfigStore = (0,_openmrs_esm_config__rspack_import_1.getExtensionsConfigStore)();\n// Keep the output store updated\nfunction updateExtensionOutputStore(internalState, extensionSlotConfigs, extensionsConfigStore, featureFlagStore, sessionStore) {\n var slots = {};\n var isOnline = (0,_openmrs_esm_utils__rspack_import_6.isOnline)();\n var enabledFeatureFlags = Object.entries(featureFlagStore.flags).filter(function(param) {\n var _param = _sliced_to_array(param, 2), enabled = _param[1].enabled;\n return enabled;\n }).map(function(param) {\n var _param = _sliced_to_array(param, 1), name = _param[0];\n return name;\n });\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(internalState.slots)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), slotName = _step_value[0], slot = _step_value[1];\n var config = (0,_openmrs_esm_config__rspack_import_1.getExtensionSlotConfigFromStore)(extensionSlotConfigs, slot.name).config;\n var assignedExtensions = getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionsConfigStore, enabledFeatureFlags, isOnline, sessionStore.session);\n slots[slotName] = {\n moduleName: slot.moduleName,\n assignedExtensions: assignedExtensions\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 if (!(0,lodash_es__rspack_import_7[\"default\"])(extensionStore.getState().slots, slots)) {\n extensionStore.setState({\n slots: slots\n });\n }\n}\nextensionInternalStore.subscribe(function(internalStore) {\n updateExtensionOutputStore(internalStore, slotsConfigStore.getState(), extensionsConfigStore.getState(), _openmrs_esm_feature_flags__rspack_import_2.featureFlagsStore.getState(), _openmrs_esm_api__rspack_import_0.sessionStore.getState());\n});\nslotsConfigStore.subscribe(function(slotConfigs) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotConfigs, extensionsConfigStore.getState(), _openmrs_esm_feature_flags__rspack_import_2.featureFlagsStore.getState(), _openmrs_esm_api__rspack_import_0.sessionStore.getState());\n});\nextensionsConfigStore.subscribe(function(extensionConfigs) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotsConfigStore.getState(), extensionConfigs, _openmrs_esm_feature_flags__rspack_import_2.featureFlagsStore.getState(), _openmrs_esm_api__rspack_import_0.sessionStore.getState());\n});\n_openmrs_esm_feature_flags__rspack_import_2.featureFlagsStore.subscribe(function(featureFlagStore) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotsConfigStore.getState(), extensionsConfigStore.getState(), featureFlagStore, _openmrs_esm_api__rspack_import_0.sessionStore.getState());\n});\n_openmrs_esm_api__rspack_import_0.sessionStore.subscribe(function(session) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotsConfigStore.getState(), extensionsConfigStore.getState(), _openmrs_esm_feature_flags__rspack_import_2.featureFlagsStore.getState(), session);\n});\nfunction updateOutputStoreToCurrent() {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotsConfigStore.getState(), extensionsConfigStore.getState(), _openmrs_esm_feature_flags__rspack_import_2.featureFlagsStore.getState(), _openmrs_esm_api__rspack_import_0.sessionStore.getState());\n}\nupdateOutputStoreToCurrent();\n(0,_openmrs_esm_globals__rspack_import_3.subscribeConnectivityChanged)(updateOutputStoreToCurrent);\nfunction createNewExtensionSlotInfo(slotName, moduleName, state) {\n return {\n moduleName: moduleName,\n name: slotName,\n attachedIds: [],\n config: null,\n state: state\n };\n}\n/**\n * Given an extension ID, which is a string uniquely identifying\n * an instance of an extension within an extension slot, this\n * returns the extension name.\n *\n * @example\n * ```js\n * getExtensionNameFromId(\"foo#bar\")\n * --> \"foo\"\n * getExtensionNameFromId(\"baz\")\n * --> \"baz\"\n * ```\n */ function getExtensionNameFromId(extensionId) {\n var _extensionId_split = _sliced_to_array(extensionId.split('#'), 1), extensionName = _extensionId_split[0];\n return extensionName;\n}\nfunction getExtensionRegistrationFrom(state, extensionId) {\n var name = getExtensionNameFromId(extensionId);\n return state.extensions[name];\n}\nfunction getExtensionRegistration(extensionId) {\n var state = extensionInternalStore.getState();\n return getExtensionRegistrationFrom(state, extensionId);\n}\n/**\n * Extensions must be registered in order to be rendered.\n * This is handled by the app shell, when extensions are provided\n * via the `routes.json` file and registered through `registerApp()`.\n * @internal\n */ var registerExtension = function registerExtension(extensionRegistration) {\n return extensionInternalStore.setState(function(state) {\n state.extensions[extensionRegistration.name] = _object_spread_props(_object_spread({}, extensionRegistration), {\n instances: []\n });\n return state;\n });\n};\n/**\n * Attach an extension to an extension slot.\n *\n * This will cause the extension to be rendered into the specified\n * extension slot, unless it is removed by configuration. Using\n * `attach` is an alternative to specifying the `slot` or `slots`\n * in the extension declaration.\n *\n * It is particularly useful when creating a slot into which\n * you want to render an existing extension. This enables you\n * to do so without modifying the extension's declaration, which\n * may be impractical or inappropriate, for example if you are\n * writing a module for a specific implementation.\n *\n * @param slotName a name uniquely identifying the slot\n * @param extensionId an extension name, with an optional #-suffix\n * to distinguish it from other instances of the same extension\n * attached to the same slot.\n */ function attach(slotName, extensionId) {\n (0,_store_js__rspack_import_5.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[slotName];\n if (!existingSlot) {\n return _object_spread_props(_object_spread({}, state), {\n slots: _object_spread_props(_object_spread({}, state.slots), _define_property({}, slotName, _object_spread_props(_object_spread({}, createNewExtensionSlotInfo(slotName)), {\n attachedIds: [\n extensionId\n ]\n })))\n });\n } else {\n return _object_spread_props(_object_spread({}, state), {\n slots: _object_spread_props(_object_spread({}, state.slots), _define_property({}, slotName, _object_spread_props(_object_spread({}, existingSlot), {\n attachedIds: _to_consumable_array(existingSlot.attachedIds).concat([\n extensionId\n ])\n })))\n });\n }\n });\n}\n/**\n * Detaches an extension from an extension slot.\n *\n * @param extensionSlotName The name of the extension slot to detach from.\n * @param extensionId The ID of the extension to detach.\n *\n * @deprecated Avoid using this. Extension attachments should be considered declarative.\n */ function detach(extensionSlotName, extensionId) {\n (0,_store_js__rspack_import_5.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot && existingSlot.attachedIds.includes(extensionId)) {\n return _object_spread_props(_object_spread({}, state), {\n slots: _object_spread_props(_object_spread({}, state.slots), _define_property({}, extensionSlotName, _object_spread_props(_object_spread({}, existingSlot), {\n attachedIds: existingSlot.attachedIds.filter(function(id) {\n return id !== extensionId;\n })\n })))\n });\n } else {\n return state;\n }\n });\n}\n/**\n * Detaches all extensions from an extension slot.\n *\n * @param extensionSlotName The name of the extension slot to clear.\n *\n * @deprecated Avoid using this. Extension attachments should be considered declarative.\n */ function detachAll(extensionSlotName) {\n (0,_store_js__rspack_import_5.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot) {\n return _object_spread_props(_object_spread({}, state), {\n slots: _object_spread_props(_object_spread({}, state.slots), _define_property({}, extensionSlotName, _object_spread_props(_object_spread({}, existingSlot), {\n attachedIds: []\n })))\n });\n } else {\n return state;\n }\n });\n}\n/**\n * Get an order index for the extension. This will\n * come from either its configured order, its registered order\n * parameter, or the order in which it happened to be attached.\n */ function getOrder(extensionId, configuredOrder, registeredOrderIndex, attachedOrder) {\n var configuredIndex = configuredOrder.indexOf(extensionId);\n if (configuredIndex !== -1) {\n return configuredIndex;\n } else if (registeredOrderIndex !== undefined) {\n // extensions that don't have a configured order should appear after those that do\n return 1000 + registeredOrderIndex;\n } else {\n var assignedIndex = attachedOrder.indexOf(extensionId);\n if (assignedIndex !== -1) {\n // extensions that have neither a configured nor registered order should appear\n // after all others\n return 2000 + assignedIndex;\n } else {\n return -1;\n }\n }\n}\nfunction getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionConfigStoreState, enabledFeatureFlags, isOnline, session) {\n var _internalState_slots_slotName;\n var attachedIds = internalState.slots[slotName].attachedIds;\n var assignedIds = calculateAssignedIds(config, attachedIds);\n var extensions = [];\n // Create context once for all extensions in this slot\n var slotState = (_internalState_slots_slotName = internalState.slots[slotName]) === null || _internalState_slots_slotName === void 0 ? void 0 : _internalState_slots_slotName.state;\n var expressionContext = slotState && (typeof slotState === \"undefined\" ? \"undefined\" : _type_of(slotState)) === 'object' ? _object_spread({\n session: session\n }, slotState) : {\n session: session\n };\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = assignedIds[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var id = _step.value;\n var _getExtensionConfigFromStore = (0,_openmrs_esm_config__rspack_import_1.getExtensionConfigFromStore)(extensionConfigStoreState, slotName, id), rawExtensionConfig = _getExtensionConfigFromStore.config;\n var rawExtensionSlotExtensionConfig = (0,_openmrs_esm_config__rspack_import_1.getExtensionConfigFromExtensionSlotStore)(config, slotName, id);\n var extensionConfig = (0,lodash_es__rspack_import_8[\"default\"])(rawExtensionConfig, rawExtensionSlotExtensionConfig);\n var name = getExtensionNameFromId(id);\n var extension = internalState.extensions[name];\n // if the extension has not been registered yet, do not include it\n if (extension) {\n var _ref, _ref1, _ref2, _ref3, _ref4, _ref5;\n var _extensionConfig_Displayconditions, _extensionConfig_Displayconditions1, _extensionConfig_Displayconditions2, _extensionConfig_Displayconditions3;\n var requiredPrivileges = (_ref = (_ref1 = extensionConfig === null || extensionConfig === void 0 ? void 0 : (_extensionConfig_Displayconditions = extensionConfig['Display conditions']) === null || _extensionConfig_Displayconditions === void 0 ? void 0 : _extensionConfig_Displayconditions.privileges) !== null && _ref1 !== void 0 ? _ref1 : extension.privileges) !== null && _ref !== void 0 ? _ref : [];\n if (requiredPrivileges && (typeof requiredPrivileges === 'string' || Array.isArray(requiredPrivileges) && requiredPrivileges.length > 0)) {\n if (!(session === null || session === void 0 ? void 0 : session.user)) {\n continue;\n }\n if (!(0,_openmrs_esm_api__rspack_import_0.userHasAccess)(requiredPrivileges, session.user)) {\n continue;\n }\n }\n var displayConditionExpression = (extensionConfig === null || extensionConfig === void 0 ? void 0 : (_extensionConfig_Displayconditions1 = extensionConfig['Display conditions']) === null || _extensionConfig_Displayconditions1 === void 0 ? void 0 : _extensionConfig_Displayconditions1.expression) || extension.displayExpression;\n if (displayConditionExpression !== undefined && typeof displayConditionExpression === 'string' && displayConditionExpression.trim().length > 0) {\n try {\n if (!(0,_openmrs_esm_expression_evaluator__rspack_import_9.evaluateAsBoolean)(displayConditionExpression, expressionContext)) {\n continue;\n }\n } catch (e) {\n console.error(\"Error while evaluating expression '\".concat(displayConditionExpression, \"' for extension \").concat(name, \" in slot \").concat(slotName), e);\n continue;\n }\n }\n if (extension.featureFlag && !enabledFeatureFlags.includes(extension.featureFlag)) {\n continue;\n }\n if (window.offlineEnabled && !(0,_helpers_js__rspack_import_4.checkStatusFor)(isOnline, extension.online, extension.offline)) {\n continue;\n }\n extensions.push({\n id: id,\n name: name,\n moduleName: extension.moduleName,\n config: extensionConfig,\n featureFlag: extension.featureFlag,\n meta: extension.meta,\n online: (_ref2 = (_ref3 = extensionConfig === null || extensionConfig === void 0 ? void 0 : (_extensionConfig_Displayconditions2 = extensionConfig['Display conditions']) === null || _extensionConfig_Displayconditions2 === void 0 ? void 0 : _extensionConfig_Displayconditions2.online) !== null && _ref3 !== void 0 ? _ref3 : extension.online) !== null && _ref2 !== void 0 ? _ref2 : true,\n offline: (_ref4 = (_ref5 = extensionConfig === null || extensionConfig === void 0 ? void 0 : (_extensionConfig_Displayconditions3 = extensionConfig['Display conditions']) === null || _extensionConfig_Displayconditions3 === void 0 ? void 0 : _extensionConfig_Displayconditions3.offline) !== null && _ref5 !== void 0 ? _ref5 : extension.offline) !== null && _ref4 !== void 0 ? _ref4 : false\n });\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 return extensions;\n}\n/**\n * Gets the list of extensions assigned to a given slot\n *\n * @param slotName The slot to load the assigned extensions for\n * @returns An array of extensions assigned to the named slot\n */ function getAssignedExtensions(slotName) {\n var internalState = extensionInternalStore.getState();\n var _getExtensionSlotConfig = (0,_openmrs_esm_config__rspack_import_1.getExtensionSlotConfig)(slotName), slotConfig = _getExtensionSlotConfig.config;\n var extensionStoreState = extensionsConfigStore.getState();\n var featureFlagState = _openmrs_esm_feature_flags__rspack_import_2.featureFlagsStore.getState();\n var sessionState = _openmrs_esm_api__rspack_import_0.sessionStore.getState();\n var isOnline = (0,_openmrs_esm_utils__rspack_import_6.isOnline)();\n var enabledFeatureFlags = Object.entries(featureFlagState.flags).filter(function(param) {\n var _param = _sliced_to_array(param, 2), enabled = _param[1].enabled;\n return enabled;\n }).map(function(param) {\n var _param = _sliced_to_array(param, 1), name = _param[0];\n return name;\n });\n return getAssignedExtensionsFromSlotData(slotName, internalState, slotConfig, extensionStoreState, enabledFeatureFlags, isOnline, sessionState.session);\n}\nfunction calculateAssignedIds(config, attachedIds) {\n var addedIds = config.add || [];\n var removedIds = config.remove || [];\n var idOrder = config.order || [];\n var extensions = extensionInternalStore.getState().extensions;\n return _to_consumable_array(attachedIds).concat(_to_consumable_array(addedIds)).filter(function(id) {\n return !removedIds.includes(id);\n }).sort(function(idA, idB) {\n var _extensions_getExtensionNameFromId, _extensions_getExtensionNameFromId1;\n var ai = getOrder(idA, idOrder, (_extensions_getExtensionNameFromId = extensions[getExtensionNameFromId(idA)]) === null || _extensions_getExtensionNameFromId === void 0 ? void 0 : _extensions_getExtensionNameFromId.order, attachedIds);\n var bi = getOrder(idB, idOrder, (_extensions_getExtensionNameFromId1 = extensions[getExtensionNameFromId(idB)]) === null || _extensions_getExtensionNameFromId1 === void 0 ? void 0 : _extensions_getExtensionNameFromId1.order, attachedIds);\n if (bi === -1) {\n return -1;\n } else if (ai === -1) {\n return 1;\n } else {\n return ai - bi;\n }\n });\n}\n/**\n * Used by by extension slots at mount time.\n *\n * @param moduleName The name of the module that contains the extension slot\n * @param slotName The extension slot name that is actually used\n * @param state Optional custom state for the slot, which will be stored in the extension store.\n * @internal\n */ var registerExtensionSlot = function registerExtensionSlot(moduleName, slotName, state) {\n return extensionInternalStore.setState(function(currentState) {\n var _currentState_slots_slotName;\n var existingModuleName = (_currentState_slots_slotName = currentState.slots[slotName]) === null || _currentState_slots_slotName === void 0 ? void 0 : _currentState_slots_slotName.moduleName;\n if (existingModuleName && existingModuleName != moduleName) {\n console.warn(\"An extension slot with the name '\".concat(slotName, '\\' already exists. Refusing to register the same slot name twice (in \"registerExtensionSlot\"). The existing one is from module ').concat(existingModuleName, \".\"));\n return currentState;\n }\n if (existingModuleName && existingModuleName == moduleName) {\n // Re-rendering an existing slot\n return currentState;\n }\n if (currentState.slots[slotName]) {\n return _object_spread_props(_object_spread({}, currentState), {\n slots: _object_spread_props(_object_spread({}, currentState.slots), _define_property({}, slotName, _object_spread_props(_object_spread({}, currentState.slots[slotName]), {\n moduleName: moduleName,\n state: state\n })))\n });\n }\n var slot = createNewExtensionSlotInfo(slotName, moduleName, state);\n return _object_spread_props(_object_spread({}, currentState), {\n slots: _object_spread_props(_object_spread({}, currentState.slots), _define_property({}, slotName, _object_spread({}, slot)))\n });\n });\n};\n/**\n * Used by extension slots to update the copy of the state for the extension slot\n *\n * @param slotName The name of the slot with state to update\n * @param state A copy of the new state\n * @param partial Whether this should be applied as a partial\n */ function updateExtensionSlotState(slotName, state) {\n var partial = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n extensionInternalStore.setState(function(currentState) {\n var newState = partial ? (0,lodash_es__rspack_import_8[\"default\"])(currentState.slots[slotName].state, state) : state;\n return _object_spread_props(_object_spread({}, currentState), {\n slots: _object_spread_props(_object_spread({}, currentState.slots), _define_property({}, slotName, _object_spread_props(_object_spread({}, currentState.slots[slotName]), {\n state: newState\n })))\n });\n });\n}\n/**\n * @internal\n * Just for testing.\n */ var reset = function reset() {\n return extensionStore.setState(function() {\n return {\n slots: {},\n extensions: {}\n };\n });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvZGlzdC9leHRlbnNpb25zLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvZGlzdC9leHRlbnNpb25zLmpzPzg1ZDgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqLyAvKlxuICogV2UgaGF2ZSB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbiBtb2RlczpcbiAqXG4gKiAtIGF0dGFjaGVkIChzZXQgdmlhIGNvZGUgaW4gZm9ybSBvZjogYXR0YWNoLCBkZXRhY2gsIC4uLilcbiAqIC0gY29uZmlndXJlZCAoc2V0IHZpYSBjb25maWd1cmF0aW9uIGluIGZvcm0gb2Y6IGFkZGVkLCByZW1vdmVkLCAuLi4pXG4gKiAtIGFzc2lnbmVkIChjb21wdXRlZCBmcm9tIGF0dGFjaGVkIGFuZCBjb25maWd1cmVkKVxuICogLSBjb25uZWN0ZWQgKGNvbXB1dGVkIGZyb20gYXNzaWduZWQgdXNpbmcgY29ubmVjdGl2aXR5IGFuZCBvbmxpbmUgLyBvZmZsaW5lKVxuICovIGltcG9ydCB7IHNlc3Npb25TdG9yZSwgdXNlckhhc0FjY2VzcyB9IGZyb20gXCJAb3Blbm1ycy9lc20tYXBpXCI7XG5pbXBvcnQgeyBnZXRFeHRlbnNpb25Db25maWdGcm9tRXh0ZW5zaW9uU2xvdFN0b3JlLCBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUsIGdldEV4dGVuc2lvblNsb3RDb25maWcsIGdldEV4dGVuc2lvblNsb3RDb25maWdGcm9tU3RvcmUsIGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUsIGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgeyBldmFsdWF0ZUFzQm9vbGVhbiB9IGZyb20gXCJAb3Blbm1ycy9lc20tZXhwcmVzc2lvbi1ldmFsdWF0b3JcIjtcbmltcG9ydCB7IGZlYXR1cmVGbGFnc1N0b3JlIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1mZWF0dXJlLWZsYWdzXCI7XG5pbXBvcnQgeyBzdWJzY3JpYmVDb25uZWN0aXZpdHlDaGFuZ2VkIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1nbG9iYWxzXCI7XG5pbXBvcnQgeyBpc09ubGluZSBhcyBpc09ubGluZUZuIH0gZnJvbSBcIkBvcGVubXJzL2VzbS11dGlsc1wiO1xuaW1wb3J0IHsgaXNFcXVhbCwgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBjaGVja1N0YXR1c0ZvciB9IGZyb20gXCIuL2hlbHBlcnMuanNcIjtcbmltcG9ydCB7IGdldEV4dGVuc2lvbkludGVybmFsU3RvcmUsIGdldEV4dGVuc2lvblN0b3JlLCB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlIH0gZnJvbSBcIi4vc3RvcmUuanNcIjtcbmNvbnN0IGV4dGVuc2lvbkludGVybmFsU3RvcmUgPSBnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlKCk7XG5jb25zdCBleHRlbnNpb25TdG9yZSA9IGdldEV4dGVuc2lvblN0b3JlKCk7XG5jb25zdCBzbG90c0NvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSgpO1xuY29uc3QgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlKCk7XG4vLyBLZWVwIHRoZSBvdXRwdXQgc3RvcmUgdXBkYXRlZFxuZnVuY3Rpb24gdXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoaW50ZXJuYWxTdGF0ZSwgZXh0ZW5zaW9uU2xvdENvbmZpZ3MsIGV4dGVuc2lvbnNDb25maWdTdG9yZSwgZmVhdHVyZUZsYWdTdG9yZSwgc2Vzc2lvblN0b3JlKSB7XG4gICAgY29uc3Qgc2xvdHMgPSB7fTtcbiAgICBjb25zdCBpc09ubGluZSA9IGlzT25saW5lRm4oKTtcbiAgICBjb25zdCBlbmFibGVkRmVhdHVyZUZsYWdzID0gT2JqZWN0LmVudHJpZXMoZmVhdHVyZUZsYWdTdG9yZS5mbGFncykuZmlsdGVyKChbLCB7IGVuYWJsZWQgfV0pPT5lbmFibGVkKS5tYXAoKFtuYW1lXSk9Pm5hbWUpO1xuICAgIGZvciAobGV0IFtzbG90TmFtZSwgc2xvdF0gb2YgT2JqZWN0LmVudHJpZXMoaW50ZXJuYWxTdGF0ZS5zbG90cykpe1xuICAgICAgICBjb25zdCB7IGNvbmZpZyB9ID0gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZShleHRlbnNpb25TbG90Q29uZmlncywgc2xvdC5uYW1lKTtcbiAgICAgICAgY29uc3QgYXNzaWduZWRFeHRlbnNpb25zID0gZ2V0QXNzaWduZWRFeHRlbnNpb25zRnJvbVNsb3REYXRhKHNsb3ROYW1lLCBpbnRlcm5hbFN0YXRlLCBjb25maWcsIGV4dGVuc2lvbnNDb25maWdTdG9yZSwgZW5hYmxlZEZlYXR1cmVGbGFncywgaXNPbmxpbmUsIHNlc3Npb25TdG9yZS5zZXNzaW9uKTtcbiAgICAgICAgc2xvdHNbc2xvdE5hbWVdID0ge1xuICAgICAgICAgICAgbW9kdWxlTmFtZTogc2xvdC5tb2R1bGVOYW1lLFxuICAgICAgICAgICAgYXNzaWduZWRFeHRlbnNpb25zXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmICghaXNFcXVhbChleHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLnNsb3RzLCBzbG90cykpIHtcbiAgICAgICAgZXh0ZW5zaW9uU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgc2xvdHNcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5zdWJzY3JpYmUoKGludGVybmFsU3RvcmUpPT57XG4gICAgdXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoaW50ZXJuYWxTdG9yZSwgc2xvdHNDb25maWdTdG9yZS5nZXRTdGF0ZSgpLCBleHRlbnNpb25zQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKSwgZmVhdHVyZUZsYWdzU3RvcmUuZ2V0U3RhdGUoKSwgc2Vzc2lvblN0b3JlLmdldFN0YXRlKCkpO1xufSk7XG5zbG90c0NvbmZpZ1N0b3JlLnN1YnNjcmliZSgoc2xvdENvbmZpZ3MpPT57XG4gICAgdXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCBzbG90Q29uZmlncywgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLmdldFN0YXRlKCksIGZlYXR1cmVGbGFnc1N0b3JlLmdldFN0YXRlKCksIHNlc3Npb25TdG9yZS5nZXRTdGF0ZSgpKTtcbn0pO1xuZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLnN1YnNjcmliZSgoZXh0ZW5zaW9uQ29uZmlncyk9PntcbiAgICB1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZShleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksIHNsb3RzQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKSwgZXh0ZW5zaW9uQ29uZmlncywgZmVhdHVyZUZsYWdzU3RvcmUuZ2V0U3RhdGUoKSwgc2Vzc2lvblN0b3JlLmdldFN0YXRlKCkpO1xufSk7XG5mZWF0dXJlRmxhZ3NTdG9yZS5zdWJzY3JpYmUoKGZlYXR1cmVGbGFnU3RvcmUpPT57XG4gICAgdXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCBzbG90c0NvbmZpZ1N0b3JlLmdldFN0YXRlKCksIGV4dGVuc2lvbnNDb25maWdTdG9yZS5nZXRTdGF0ZSgpLCBmZWF0dXJlRmxhZ1N0b3JlLCBzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKSk7XG59KTtcbnNlc3Npb25TdG9yZS5zdWJzY3JpYmUoKHNlc3Npb24pPT57XG4gICAgdXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCBzbG90c0NvbmZpZ1N0b3JlLmdldFN0YXRlKCksIGV4dGVuc2lvbnNDb25maWdTdG9yZS5nZXRTdGF0ZSgpLCBmZWF0dXJlRmxhZ3NTdG9yZS5nZXRTdGF0ZSgpLCBzZXNzaW9uKTtcbn0pO1xuZnVuY3Rpb24gdXBkYXRlT3V0cHV0U3RvcmVUb0N1cnJlbnQoKSB7XG4gICAgdXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCBzbG90c0NvbmZpZ1N0b3JlLmdldFN0YXRlKCksIGV4dGVuc2lvbnNDb25maWdTdG9yZS5nZXRTdGF0ZSgpLCBmZWF0dXJlRmxhZ3NTdG9yZS5nZXRTdGF0ZSgpLCBzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKSk7XG59XG51cGRhdGVPdXRwdXRTdG9yZVRvQ3VycmVudCgpO1xuc3Vic2NyaWJlQ29ubmVjdGl2aXR5Q2hhbmdlZCh1cGRhdGVPdXRwdXRTdG9yZVRvQ3VycmVudCk7XG5mdW5jdGlvbiBjcmVhdGVOZXdFeHRlbnNpb25TbG90SW5mbyhzbG90TmFtZSwgbW9kdWxlTmFtZSwgc3RhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBtb2R1bGVOYW1lLFxuICAgICAgICBuYW1lOiBzbG90TmFtZSxcbiAgICAgICAgYXR0YWNoZWRJZHM6IFtdLFxuICAgICAgICBjb25maWc6IG51bGwsXG4gICAgICAgIHN0YXRlXG4gICAgfTtcbn1cbi8qKlxuICogR2l2ZW4gYW4gZXh0ZW5zaW9uIElELCB3aGljaCBpcyBhIHN0cmluZyB1bmlxdWVseSBpZGVudGlmeWluZ1xuICogYW4gaW5zdGFuY2Ugb2YgYW4gZXh0ZW5zaW9uIHdpdGhpbiBhbiBleHRlbnNpb24gc2xvdCwgdGhpc1xuICogcmV0dXJucyB0aGUgZXh0ZW5zaW9uIG5hbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKFwiZm9vI2JhclwiKVxuICogIC0tPiBcImZvb1wiXG4gKiBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKFwiYmF6XCIpXG4gKiAgLS0+IFwiYmF6XCJcbiAqIGBgYFxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKGV4dGVuc2lvbklkKSB7XG4gICAgY29uc3QgW2V4dGVuc2lvbk5hbWVdID0gZXh0ZW5zaW9uSWQuc3BsaXQoJyMnKTtcbiAgICByZXR1cm4gZXh0ZW5zaW9uTmFtZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb25Gcm9tKHN0YXRlLCBleHRlbnNpb25JZCkge1xuICAgIGNvbnN0IG5hbWUgPSBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKGV4dGVuc2lvbklkKTtcbiAgICByZXR1cm4gc3RhdGUuZXh0ZW5zaW9uc1tuYW1lXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24oZXh0ZW5zaW9uSWQpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICByZXR1cm4gZ2V0RXh0ZW5zaW9uUmVnaXN0cmF0aW9uRnJvbShzdGF0ZSwgZXh0ZW5zaW9uSWQpO1xufVxuLyoqXG4gKiBFeHRlbnNpb25zIG11c3QgYmUgcmVnaXN0ZXJlZCBpbiBvcmRlciB0byBiZSByZW5kZXJlZC5cbiAqIFRoaXMgaXMgaGFuZGxlZCBieSB0aGUgYXBwIHNoZWxsLCB3aGVuIGV4dGVuc2lvbnMgYXJlIHByb3ZpZGVkXG4gKiB2aWEgdGhlIGByb3V0ZXMuanNvbmAgZmlsZSBhbmQgcmVnaXN0ZXJlZCB0aHJvdWdoIGByZWdpc3RlckFwcCgpYC5cbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBjb25zdCByZWdpc3RlckV4dGVuc2lvbiA9IChleHRlbnNpb25SZWdpc3RyYXRpb24pPT5leHRlbnNpb25JbnRlcm5hbFN0b3JlLnNldFN0YXRlKChzdGF0ZSk9PntcbiAgICAgICAgc3RhdGUuZXh0ZW5zaW9uc1tleHRlbnNpb25SZWdpc3RyYXRpb24ubmFtZV0gPSB7XG4gICAgICAgICAgICAuLi5leHRlbnNpb25SZWdpc3RyYXRpb24sXG4gICAgICAgICAgICBpbnN0YW5jZXM6IFtdXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9KTtcbi8qKlxuICogQXR0YWNoIGFuIGV4dGVuc2lvbiB0byBhbiBleHRlbnNpb24gc2xvdC5cbiAqXG4gKiBUaGlzIHdpbGwgY2F1c2UgdGhlIGV4dGVuc2lvbiB0byBiZSByZW5kZXJlZCBpbnRvIHRoZSBzcGVjaWZpZWRcbiAqIGV4dGVuc2lvbiBzbG90LCB1bmxlc3MgaXQgaXMgcmVtb3ZlZCBieSBjb25maWd1cmF0aW9uLiBVc2luZ1xuICogYGF0dGFjaGAgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gc3BlY2lmeWluZyB0aGUgYHNsb3RgIG9yIGBzbG90c2BcbiAqIGluIHRoZSBleHRlbnNpb24gZGVjbGFyYXRpb24uXG4gKlxuICogSXQgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIGNyZWF0aW5nIGEgc2xvdCBpbnRvIHdoaWNoXG4gKiB5b3Ugd2FudCB0byByZW5kZXIgYW4gZXhpc3RpbmcgZXh0ZW5zaW9uLiBUaGlzIGVuYWJsZXMgeW91XG4gKiB0byBkbyBzbyB3aXRob3V0IG1vZGlmeWluZyB0aGUgZXh0ZW5zaW9uJ3MgZGVjbGFyYXRpb24sIHdoaWNoXG4gKiBtYXkgYmUgaW1wcmFjdGljYWwgb3IgaW5hcHByb3ByaWF0ZSwgZm9yIGV4YW1wbGUgaWYgeW91IGFyZVxuICogd3JpdGluZyBhIG1vZHVsZSBmb3IgYSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0gc2xvdE5hbWUgYSBuYW1lIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHRoZSBzbG90XG4gKiBAcGFyYW0gZXh0ZW5zaW9uSWQgYW4gZXh0ZW5zaW9uIG5hbWUsIHdpdGggYW4gb3B0aW9uYWwgIy1zdWZmaXhcbiAqICAgIHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGV4dGVuc2lvblxuICogICAgYXR0YWNoZWQgdG8gdGhlIHNhbWUgc2xvdC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gYXR0YWNoKHNsb3ROYW1lLCBleHRlbnNpb25JZCkge1xuICAgIHVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUoKHN0YXRlKT0+e1xuICAgICAgICBjb25zdCBleGlzdGluZ1Nsb3QgPSBzdGF0ZS5zbG90c1tzbG90TmFtZV07XG4gICAgICAgIGlmICghZXhpc3RpbmdTbG90KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgICAgICAgICAgICBbc2xvdE5hbWVdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jcmVhdGVOZXdFeHRlbnNpb25TbG90SW5mbyhzbG90TmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2hlZElkczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbklkXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBzbG90czoge1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zbG90cyxcbiAgICAgICAgICAgICAgICAgICAgW3Nsb3ROYW1lXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZXhpc3RpbmdTbG90LFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNoZWRJZHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leGlzdGluZ1Nsb3QuYXR0YWNoZWRJZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uSWRcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogRGV0YWNoZXMgYW4gZXh0ZW5zaW9uIGZyb20gYW4gZXh0ZW5zaW9uIHNsb3QuXG4gKlxuICogQHBhcmFtIGV4dGVuc2lvblNsb3ROYW1lIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gc2xvdCB0byBkZXRhY2ggZnJvbS5cbiAqIEBwYXJhbSBleHRlbnNpb25JZCBUaGUgSUQgb2YgdGhlIGV4dGVuc2lvbiB0byBkZXRhY2guXG4gKlxuICogQGRlcHJlY2F0ZWQgQXZvaWQgdXNpbmcgdGhpcy4gRXh0ZW5zaW9uIGF0dGFjaG1lbnRzIHNob3VsZCBiZSBjb25zaWRlcmVkIGRlY2xhcmF0aXZlLlxuICovIGV4cG9ydCBmdW5jdGlvbiBkZXRhY2goZXh0ZW5zaW9uU2xvdE5hbWUsIGV4dGVuc2lvbklkKSB7XG4gICAgdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSgoc3RhdGUpPT57XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nU2xvdCA9IHN0YXRlLnNsb3RzW2V4dGVuc2lvblNsb3ROYW1lXTtcbiAgICAgICAgaWYgKGV4aXN0aW5nU2xvdCAmJiBleGlzdGluZ1Nsb3QuYXR0YWNoZWRJZHMuaW5jbHVkZXMoZXh0ZW5zaW9uSWQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgICAgICAgICAgICBbZXh0ZW5zaW9uU2xvdE5hbWVdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5leGlzdGluZ1Nsb3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2hlZElkczogZXhpc3RpbmdTbG90LmF0dGFjaGVkSWRzLmZpbHRlcigoaWQpPT5pZCAhPT0gZXh0ZW5zaW9uSWQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKipcbiAqIERldGFjaGVzIGFsbCBleHRlbnNpb25zIGZyb20gYW4gZXh0ZW5zaW9uIHNsb3QuXG4gKlxuICogQHBhcmFtIGV4dGVuc2lvblNsb3ROYW1lIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gc2xvdCB0byBjbGVhci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBBdm9pZCB1c2luZyB0aGlzLiBFeHRlbnNpb24gYXR0YWNobWVudHMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZGVjbGFyYXRpdmUuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGRldGFjaEFsbChleHRlbnNpb25TbG90TmFtZSkge1xuICAgIHVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUoKHN0YXRlKT0+e1xuICAgICAgICBjb25zdCBleGlzdGluZ1Nsb3QgPSBzdGF0ZS5zbG90c1tleHRlbnNpb25TbG90TmFtZV07XG4gICAgICAgIGlmIChleGlzdGluZ1Nsb3QpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc2xvdHM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgICAgICAgICAgIFtleHRlbnNpb25TbG90TmFtZV06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmV4aXN0aW5nU2xvdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaGVkSWRzOiBbXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBHZXQgYW4gb3JkZXIgaW5kZXggZm9yIHRoZSBleHRlbnNpb24uIFRoaXMgd2lsbFxuICogY29tZSBmcm9tIGVpdGhlciBpdHMgY29uZmlndXJlZCBvcmRlciwgaXRzIHJlZ2lzdGVyZWQgb3JkZXJcbiAqIHBhcmFtZXRlciwgb3IgdGhlIG9yZGVyIGluIHdoaWNoIGl0IGhhcHBlbmVkIHRvIGJlIGF0dGFjaGVkLlxuICovIGZ1bmN0aW9uIGdldE9yZGVyKGV4dGVuc2lvbklkLCBjb25maWd1cmVkT3JkZXIsIHJlZ2lzdGVyZWRPcmRlckluZGV4LCBhdHRhY2hlZE9yZGVyKSB7XG4gICAgY29uc3QgY29uZmlndXJlZEluZGV4ID0gY29uZmlndXJlZE9yZGVyLmluZGV4T2YoZXh0ZW5zaW9uSWQpO1xuICAgIGlmIChjb25maWd1cmVkSW5kZXggIT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjb25maWd1cmVkSW5kZXg7XG4gICAgfSBlbHNlIGlmIChyZWdpc3RlcmVkT3JkZXJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGV4dGVuc2lvbnMgdGhhdCBkb24ndCBoYXZlIGEgY29uZmlndXJlZCBvcmRlciBzaG91bGQgYXBwZWFyIGFmdGVyIHRob3NlIHRoYXQgZG9cbiAgICAgICAgcmV0dXJuIDEwMDAgKyByZWdpc3RlcmVkT3JkZXJJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhc3NpZ25lZEluZGV4ID0gYXR0YWNoZWRPcmRlci5pbmRleE9mKGV4dGVuc2lvbklkKTtcbiAgICAgICAgaWYgKGFzc2lnbmVkSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAvLyBleHRlbnNpb25zIHRoYXQgaGF2ZSBuZWl0aGVyIGEgY29uZmlndXJlZCBub3IgcmVnaXN0ZXJlZCBvcmRlciBzaG91bGQgYXBwZWFyXG4gICAgICAgICAgICAvLyBhZnRlciBhbGwgb3RoZXJzXG4gICAgICAgICAgICByZXR1cm4gMjAwMCArIGFzc2lnbmVkSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEoc2xvdE5hbWUsIGludGVybmFsU3RhdGUsIGNvbmZpZywgZXh0ZW5zaW9uQ29uZmlnU3RvcmVTdGF0ZSwgZW5hYmxlZEZlYXR1cmVGbGFncywgaXNPbmxpbmUsIHNlc3Npb24pIHtcbiAgICBjb25zdCBhdHRhY2hlZElkcyA9IGludGVybmFsU3RhdGUuc2xvdHNbc2xvdE5hbWVdLmF0dGFjaGVkSWRzO1xuICAgIGNvbnN0IGFzc2lnbmVkSWRzID0gY2FsY3VsYXRlQXNzaWduZWRJZHMoY29uZmlnLCBhdHRhY2hlZElkcyk7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IFtdO1xuICAgIC8vIENyZWF0ZSBjb250ZXh0IG9uY2UgZm9yIGFsbCBleHRlbnNpb25zIGluIHRoaXMgc2xvdFxuICAgIGNvbnN0IHNsb3RTdGF0ZSA9IGludGVybmFsU3RhdGUuc2xvdHNbc2xvdE5hbWVdPy5zdGF0ZTtcbiAgICBjb25zdCBleHByZXNzaW9uQ29udGV4dCA9IHNsb3RTdGF0ZSAmJiB0eXBlb2Ygc2xvdFN0YXRlID09PSAnb2JqZWN0JyA/IHtcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgICAgLi4uc2xvdFN0YXRlXG4gICAgfSA6IHtcbiAgICAgICAgc2Vzc2lvblxuICAgIH07XG4gICAgZm9yIChsZXQgaWQgb2YgYXNzaWduZWRJZHMpe1xuICAgICAgICBjb25zdCB7IGNvbmZpZzogcmF3RXh0ZW5zaW9uQ29uZmlnIH0gPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoZXh0ZW5zaW9uQ29uZmlnU3RvcmVTdGF0ZSwgc2xvdE5hbWUsIGlkKTtcbiAgICAgICAgY29uc3QgcmF3RXh0ZW5zaW9uU2xvdEV4dGVuc2lvbkNvbmZpZyA9IGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21FeHRlbnNpb25TbG90U3RvcmUoY29uZmlnLCBzbG90TmFtZSwgaWQpO1xuICAgICAgICBjb25zdCBleHRlbnNpb25Db25maWcgPSBtZXJnZShyYXdFeHRlbnNpb25Db25maWcsIHJhd0V4dGVuc2lvblNsb3RFeHRlbnNpb25Db25maWcpO1xuICAgICAgICBjb25zdCBuYW1lID0gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChpZCk7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGludGVybmFsU3RhdGUuZXh0ZW5zaW9uc1tuYW1lXTtcbiAgICAgICAgLy8gaWYgdGhlIGV4dGVuc2lvbiBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZCB5ZXQsIGRvIG5vdCBpbmNsdWRlIGl0XG4gICAgICAgIGlmIChleHRlbnNpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVkUHJpdmlsZWdlcyA9IGV4dGVuc2lvbkNvbmZpZz8uWydEaXNwbGF5IGNvbmRpdGlvbnMnXT8ucHJpdmlsZWdlcyA/PyBleHRlbnNpb24ucHJpdmlsZWdlcyA/PyBbXTtcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZFByaXZpbGVnZXMgJiYgKHR5cGVvZiByZXF1aXJlZFByaXZpbGVnZXMgPT09ICdzdHJpbmcnIHx8IEFycmF5LmlzQXJyYXkocmVxdWlyZWRQcml2aWxlZ2VzKSAmJiByZXF1aXJlZFByaXZpbGVnZXMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNlc3Npb24/LnVzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdXNlckhhc0FjY2VzcyhyZXF1aXJlZFByaXZpbGVnZXMsIHNlc3Npb24udXNlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGlzcGxheUNvbmRpdGlvbkV4cHJlc3Npb24gPSBleHRlbnNpb25Db25maWc/LlsnRGlzcGxheSBjb25kaXRpb25zJ10/LmV4cHJlc3Npb24gfHwgZXh0ZW5zaW9uLmRpc3BsYXlFeHByZXNzaW9uO1xuICAgICAgICAgICAgaWYgKGRpc3BsYXlDb25kaXRpb25FeHByZXNzaW9uICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGRpc3BsYXlDb25kaXRpb25FeHByZXNzaW9uID09PSAnc3RyaW5nJyAmJiBkaXNwbGF5Q29uZGl0aW9uRXhwcmVzc2lvbi50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZXZhbHVhdGVBc0Jvb2xlYW4oZGlzcGxheUNvbmRpdGlvbkV4cHJlc3Npb24sIGV4cHJlc3Npb25Db250ZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIHdoaWxlIGV2YWx1YXRpbmcgZXhwcmVzc2lvbiAnJHtkaXNwbGF5Q29uZGl0aW9uRXhwcmVzc2lvbn0nIGZvciBleHRlbnNpb24gJHtuYW1lfSBpbiBzbG90ICR7c2xvdE5hbWV9YCwgZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHRlbnNpb24uZmVhdHVyZUZsYWcgJiYgIWVuYWJsZWRGZWF0dXJlRmxhZ3MuaW5jbHVkZXMoZXh0ZW5zaW9uLmZlYXR1cmVGbGFnKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdpbmRvdy5vZmZsaW5lRW5hYmxlZCAmJiAhY2hlY2tTdGF0dXNGb3IoaXNPbmxpbmUsIGV4dGVuc2lvbi5vbmxpbmUsIGV4dGVuc2lvbi5vZmZsaW5lKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXh0ZW5zaW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIG1vZHVsZU5hbWU6IGV4dGVuc2lvbi5tb2R1bGVOYW1lLFxuICAgICAgICAgICAgICAgIGNvbmZpZzogZXh0ZW5zaW9uQ29uZmlnLFxuICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFnOiBleHRlbnNpb24uZmVhdHVyZUZsYWcsXG4gICAgICAgICAgICAgICAgbWV0YTogZXh0ZW5zaW9uLm1ldGEsXG4gICAgICAgICAgICAgICAgb25saW5lOiBleHRlbnNpb25Db25maWc/LlsnRGlzcGxheSBjb25kaXRpb25zJ10/Lm9ubGluZSA/PyBleHRlbnNpb24ub25saW5lID8/IHRydWUsXG4gICAgICAgICAgICAgICAgb2ZmbGluZTogZXh0ZW5zaW9uQ29uZmlnPy5bJ0Rpc3BsYXkgY29uZGl0aW9ucyddPy5vZmZsaW5lID8/IGV4dGVuc2lvbi5vZmZsaW5lID8/IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXh0ZW5zaW9ucztcbn1cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBvZiBleHRlbnNpb25zIGFzc2lnbmVkIHRvIGEgZ2l2ZW4gc2xvdFxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgc2xvdCB0byBsb2FkIHRoZSBhc3NpZ25lZCBleHRlbnNpb25zIGZvclxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZXh0ZW5zaW9ucyBhc3NpZ25lZCB0byB0aGUgbmFtZWQgc2xvdFxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRBc3NpZ25lZEV4dGVuc2lvbnMoc2xvdE5hbWUpIHtcbiAgICBjb25zdCBpbnRlcm5hbFN0YXRlID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgY29uZmlnOiBzbG90Q29uZmlnIH0gPSBnZXRFeHRlbnNpb25TbG90Q29uZmlnKHNsb3ROYW1lKTtcbiAgICBjb25zdCBleHRlbnNpb25TdG9yZVN0YXRlID0gZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3QgZmVhdHVyZUZsYWdTdGF0ZSA9IGZlYXR1cmVGbGFnc1N0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3Qgc2Vzc2lvblN0YXRlID0gc2Vzc2lvblN0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3QgaXNPbmxpbmUgPSBpc09ubGluZUZuKCk7XG4gICAgY29uc3QgZW5hYmxlZEZlYXR1cmVGbGFncyA9IE9iamVjdC5lbnRyaWVzKGZlYXR1cmVGbGFnU3RhdGUuZmxhZ3MpLmZpbHRlcigoWywgeyBlbmFibGVkIH1dKT0+ZW5hYmxlZCkubWFwKChbbmFtZV0pPT5uYW1lKTtcbiAgICByZXR1cm4gZ2V0QXNzaWduZWRFeHRlbnNpb25zRnJvbVNsb3REYXRhKHNsb3ROYW1lLCBpbnRlcm5hbFN0YXRlLCBzbG90Q29uZmlnLCBleHRlbnNpb25TdG9yZVN0YXRlLCBlbmFibGVkRmVhdHVyZUZsYWdzLCBpc09ubGluZSwgc2Vzc2lvblN0YXRlLnNlc3Npb24pO1xufVxuZnVuY3Rpb24gY2FsY3VsYXRlQXNzaWduZWRJZHMoY29uZmlnLCBhdHRhY2hlZElkcykge1xuICAgIGNvbnN0IGFkZGVkSWRzID0gY29uZmlnLmFkZCB8fCBbXTtcbiAgICBjb25zdCByZW1vdmVkSWRzID0gY29uZmlnLnJlbW92ZSB8fCBbXTtcbiAgICBjb25zdCBpZE9yZGVyID0gY29uZmlnLm9yZGVyIHx8IFtdO1xuICAgIGNvbnN0IHsgZXh0ZW5zaW9ucyB9ID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIHJldHVybiBbXG4gICAgICAgIC4uLmF0dGFjaGVkSWRzLFxuICAgICAgICAuLi5hZGRlZElkc1xuICAgIF0uZmlsdGVyKChpZCk9PiFyZW1vdmVkSWRzLmluY2x1ZGVzKGlkKSkuc29ydCgoaWRBLCBpZEIpPT57XG4gICAgICAgIGNvbnN0IGFpID0gZ2V0T3JkZXIoaWRBLCBpZE9yZGVyLCBleHRlbnNpb25zW2dldEV4dGVuc2lvbk5hbWVGcm9tSWQoaWRBKV0/Lm9yZGVyLCBhdHRhY2hlZElkcyk7XG4gICAgICAgIGNvbnN0IGJpID0gZ2V0T3JkZXIoaWRCLCBpZE9yZGVyLCBleHRlbnNpb25zW2dldEV4dGVuc2lvbk5hbWVGcm9tSWQoaWRCKV0/Lm9yZGVyLCBhdHRhY2hlZElkcyk7XG4gICAgICAgIGlmIChiaSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIGlmIChhaSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGFpIC0gYmk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogVXNlZCBieSBieSBleHRlbnNpb24gc2xvdHMgYXQgbW91bnQgdGltZS5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgY29udGFpbnMgdGhlIGV4dGVuc2lvbiBzbG90XG4gKiBAcGFyYW0gc2xvdE5hbWUgVGhlIGV4dGVuc2lvbiBzbG90IG5hbWUgdGhhdCBpcyBhY3R1YWxseSB1c2VkXG4gKiBAcGFyYW0gc3RhdGUgT3B0aW9uYWwgY3VzdG9tIHN0YXRlIGZvciB0aGUgc2xvdCwgd2hpY2ggd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGV4dGVuc2lvbiBzdG9yZS5cbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBjb25zdCByZWdpc3RlckV4dGVuc2lvblNsb3QgPSAobW9kdWxlTmFtZSwgc2xvdE5hbWUsIHN0YXRlKT0+ZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSgoY3VycmVudFN0YXRlKT0+e1xuICAgICAgICBjb25zdCBleGlzdGluZ01vZHVsZU5hbWUgPSBjdXJyZW50U3RhdGUuc2xvdHNbc2xvdE5hbWVdPy5tb2R1bGVOYW1lO1xuICAgICAgICBpZiAoZXhpc3RpbmdNb2R1bGVOYW1lICYmIGV4aXN0aW5nTW9kdWxlTmFtZSAhPSBtb2R1bGVOYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEFuIGV4dGVuc2lvbiBzbG90IHdpdGggdGhlIG5hbWUgJyR7c2xvdE5hbWV9JyBhbHJlYWR5IGV4aXN0cy4gUmVmdXNpbmcgdG8gcmVnaXN0ZXIgdGhlIHNhbWUgc2xvdCBuYW1lIHR3aWNlIChpbiBcInJlZ2lzdGVyRXh0ZW5zaW9uU2xvdFwiKS4gVGhlIGV4aXN0aW5nIG9uZSBpcyBmcm9tIG1vZHVsZSAke2V4aXN0aW5nTW9kdWxlTmFtZX0uYCk7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleGlzdGluZ01vZHVsZU5hbWUgJiYgZXhpc3RpbmdNb2R1bGVOYW1lID09IG1vZHVsZU5hbWUpIHtcbiAgICAgICAgICAgIC8vIFJlLXJlbmRlcmluZyBhbiBleGlzdGluZyBzbG90XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW50U3RhdGUuc2xvdHNbc2xvdE5hbWVdKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZSxcbiAgICAgICAgICAgICAgICBzbG90czoge1xuICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUuc2xvdHMsXG4gICAgICAgICAgICAgICAgICAgIFtzbG90TmFtZV06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5zbG90c1tzbG90TmFtZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2xvdCA9IGNyZWF0ZU5ld0V4dGVuc2lvblNsb3RJbmZvKHNsb3ROYW1lLCBtb2R1bGVOYW1lLCBzdGF0ZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUsXG4gICAgICAgICAgICBzbG90czoge1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5zbG90cyxcbiAgICAgICAgICAgICAgICBbc2xvdE5hbWVdOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnNsb3RcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSk7XG4vKipcbiAqIFVzZWQgYnkgZXh0ZW5zaW9uIHNsb3RzIHRvIHVwZGF0ZSB0aGUgY29weSBvZiB0aGUgc3RhdGUgZm9yIHRoZSBleHRlbnNpb24gc2xvdFxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgbmFtZSBvZiB0aGUgc2xvdCB3aXRoIHN0YXRlIHRvIHVwZGF0ZVxuICogQHBhcmFtIHN0YXRlIEEgY29weSBvZiB0aGUgbmV3IHN0YXRlXG4gKiBAcGFyYW0gcGFydGlhbCBXaGV0aGVyIHRoaXMgc2hvdWxkIGJlIGFwcGxpZWQgYXMgYSBwYXJ0aWFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUV4dGVuc2lvblNsb3RTdGF0ZShzbG90TmFtZSwgc3RhdGUsIHBhcnRpYWwgPSBmYWxzZSkge1xuICAgIGV4dGVuc2lvbkludGVybmFsU3RvcmUuc2V0U3RhdGUoKGN1cnJlbnRTdGF0ZSk9PntcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBwYXJ0aWFsID8gbWVyZ2UoY3VycmVudFN0YXRlLnNsb3RzW3Nsb3ROYW1lXS5zdGF0ZSwgc3RhdGUpIDogc3RhdGU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUsXG4gICAgICAgICAgICBzbG90czoge1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5zbG90cyxcbiAgICAgICAgICAgICAgICBbc2xvdE5hbWVdOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5zbG90c1tzbG90TmFtZV0sXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlOiBuZXdTdGF0ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbi8qKlxuICogQGludGVybmFsXG4gKiBKdXN0IGZvciB0ZXN0aW5nLlxuICovIGV4cG9ydCBjb25zdCByZXNldCA9ICgpPT5leHRlbnNpb25TdG9yZS5zZXRTdGF0ZSgoKT0+e1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2xvdHM6IHt9LFxuICAgICAgICAgICAgZXh0ZW5zaW9uczoge31cbiAgICAgICAgfTtcbiAgICB9KTtcbiJdLCJuYW1lcyI6WyJzZXNzaW9uU3RvcmUiLCJ1c2VySGFzQWNjZXNzIiwiZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbUV4dGVuc2lvblNsb3RTdG9yZSIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsImdldEV4dGVuc2lvblNsb3RDb25maWciLCJnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlIiwiZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImV2YWx1YXRlQXNCb29sZWFuIiwiZmVhdHVyZUZsYWdzU3RvcmUiLCJzdWJzY3JpYmVDb25uZWN0aXZpdHlDaGFuZ2VkIiwiaXNPbmxpbmUiLCJpc09ubGluZUZuIiwiaXNFcXVhbCIsIm1lcmdlIiwiY2hlY2tTdGF0dXNGb3IiLCJnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlIiwiZ2V0RXh0ZW5zaW9uU3RvcmUiLCJ1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlIiwiZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSIsImV4dGVuc2lvblN0b3JlIiwic2xvdHNDb25maWdTdG9yZSIsImV4dGVuc2lvbnNDb25maWdTdG9yZSIsInVwZGF0ZUV4dGVuc2lvbk91dHB1dFN0b3JlIiwiaW50ZXJuYWxTdGF0ZSIsImV4dGVuc2lvblNsb3RDb25maWdzIiwiZmVhdHVyZUZsYWdTdG9yZSIsInNsb3RzIiwiZW5hYmxlZEZlYXR1cmVGbGFncyIsIk9iamVjdCIsImVuYWJsZWQiLCJuYW1lIiwiX2l0ZXJhdG9yRXJyb3IiLCJzbG90TmFtZSIsInNsb3QiLCJjb25maWciLCJhc3NpZ25lZEV4dGVuc2lvbnMiLCJnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEiLCJpbnRlcm5hbFN0b3JlIiwic2xvdENvbmZpZ3MiLCJleHRlbnNpb25Db25maWdzIiwic2Vzc2lvbiIsInVwZGF0ZU91dHB1dFN0b3JlVG9DdXJyZW50IiwiY3JlYXRlTmV3RXh0ZW5zaW9uU2xvdEluZm8iLCJtb2R1bGVOYW1lIiwic3RhdGUiLCJnZXRFeHRlbnNpb25OYW1lRnJvbUlkIiwiZXh0ZW5zaW9uSWQiLCJfZXh0ZW5zaW9uSWRfc3BsaXQiLCJleHRlbnNpb25OYW1lIiwiZ2V0RXh0ZW5zaW9uUmVnaXN0cmF0aW9uRnJvbSIsImdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbiIsInJlZ2lzdGVyRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uUmVnaXN0cmF0aW9uIiwiYXR0YWNoIiwiZXhpc3RpbmdTbG90IiwiZGV0YWNoIiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJpZCIsImRldGFjaEFsbCIsImdldE9yZGVyIiwiY29uZmlndXJlZE9yZGVyIiwicmVnaXN0ZXJlZE9yZGVySW5kZXgiLCJhdHRhY2hlZE9yZGVyIiwiY29uZmlndXJlZEluZGV4IiwidW5kZWZpbmVkIiwiYXNzaWduZWRJbmRleCIsImV4dGVuc2lvbkNvbmZpZ1N0b3JlU3RhdGUiLCJfaW50ZXJuYWxTdGF0ZV9zbG90c19zbG90TmFtZSIsImF0dGFjaGVkSWRzIiwiYXNzaWduZWRJZHMiLCJjYWxjdWxhdGVBc3NpZ25lZElkcyIsImV4dGVuc2lvbnMiLCJzbG90U3RhdGUiLCJleHByZXNzaW9uQ29udGV4dCIsIl90eXBlX29mIiwiX2dldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsInJhd0V4dGVuc2lvbkNvbmZpZyIsInJhd0V4dGVuc2lvblNsb3RFeHRlbnNpb25Db25maWciLCJleHRlbnNpb25Db25maWciLCJleHRlbnNpb24iLCJfcmVmIiwiX3JlZjIiLCJfcmVmNCIsIl9leHRlbnNpb25Db25maWdfRGlzcGxheWNvbmRpdGlvbnMxIiwicmVxdWlyZWRQcml2aWxlZ2VzIiwiQXJyYXkiLCJkaXNwbGF5Q29uZGl0aW9uRXhwcmVzc2lvbiIsImUiLCJjb25zb2xlIiwid2luZG93IiwiZ2V0QXNzaWduZWRFeHRlbnNpb25zIiwiX2dldEV4dGVuc2lvblNsb3RDb25maWciLCJzbG90Q29uZmlnIiwiZXh0ZW5zaW9uU3RvcmVTdGF0ZSIsImZlYXR1cmVGbGFnU3RhdGUiLCJzZXNzaW9uU3RhdGUiLCJhZGRlZElkcyIsInJlbW92ZWRJZHMiLCJpZE9yZGVyIiwiaWRBIiwiaWRCIiwiX2V4dGVuc2lvbnNfZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZCIsIl9leHRlbnNpb25zX2dldEV4dGVuc2lvbk5hbWVGcm9tSWQxIiwiYWkiLCJiaSIsInJlZ2lzdGVyRXh0ZW5zaW9uU2xvdCIsImN1cnJlbnRTdGF0ZSIsIl9jdXJyZW50U3RhdGVfc2xvdHNfc2xvdE5hbWUiLCJleGlzdGluZ01vZHVsZU5hbWUiLCJ1cGRhdGVFeHRlbnNpb25TbG90U3RhdGUiLCJwYXJ0aWFsIiwibmV3U3RhdGUiLCJyZXNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/dist/extensions.js\n\n}");
5758
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n attach: () => (attach),\n detach: () => (detach),\n detachAll: () => (detachAll),\n getAssignedExtensions: () => (getAssignedExtensions),\n getCandidateExtensions: () => (getCandidateExtensions),\n getExtensionNameFromId: () => (getExtensionNameFromId),\n getExtensionRegistration: () => (getExtensionRegistration),\n getExtensionRegistrationFrom: () => (getExtensionRegistrationFrom),\n registerExtension: () => (registerExtension),\n registerExtensionSlot: () => (registerExtensionSlot),\n reset: () => (reset)\n});\n/* import */ var _openmrs_esm_api__rspack_import_0 = __webpack_require__(\"../../framework/esm-api/dist/index.js\");\n/* import */ var _openmrs_esm_config__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/index.js\");\n/* import */ var _openmrs_esm_expression_evaluator__rspack_import_9 = __webpack_require__(\"../../framework/esm-expression-evaluator/dist/evaluator.js\");\n/* import */ var _openmrs_esm_feature_flags__rspack_import_2 = __webpack_require__(\"../../framework/esm-feature-flags/dist/index.js\");\n/* import */ var _openmrs_esm_globals__rspack_import_3 = __webpack_require__(\"../../framework/esm-globals/dist/index.js\");\n/* import */ var _openmrs_esm_utils__rspack_import_6 = __webpack_require__(\"../../framework/esm-utils/dist/is-online.js\");\n/* import */ var lodash_es__rspack_import_7 = __webpack_require__(\"../../../node_modules/lodash-es/isEqual.js\");\n/* import */ var lodash_es__rspack_import_8 = __webpack_require__(\"../../../node_modules/lodash-es/merge.js\");\n/* import */ var _helpers_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-extensions/dist/helpers.js\");\n/* import */ var _store_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-extensions/dist/store.js\");\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category Extension */ /*\n * We have the following extension modes:\n *\n * - attached (set via code in form of: attach, detach, ...)\n * - configured (set via configuration in form of: added, removed, ...)\n * - assigned (computed from attached and configured)\n * - displayed (computed from assigned)\n */ \n\n\n\n\n\n\n\n\nvar extensionInternalStore = (0,_store_js__rspack_import_5.getExtensionInternalStore)();\nvar extensionStore = (0,_store_js__rspack_import_5.getExtensionStore)();\nvar slotsConfigStore = (0,_openmrs_esm_config__rspack_import_1.getExtensionSlotsConfigStore)();\nvar extensionsConfigStore = (0,_openmrs_esm_config__rspack_import_1.getExtensionsConfigStore)();\n/**\n * Slots whose derived state may have changed since the output store was last updated. `null`\n * stands for \"every slot\", and is used when an input changes that isn't scoped to one slot —\n * the session, a feature flag, connectivity, or a new extension registration.\n */ var dirtySlots = new Set();\nvar isRecomputingOutputStore = false;\nfunction markSlotsDirty(slots) {\n if (slots === null) {\n dirtySlots = null;\n } else if (dirtySlots !== null) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = slots[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var slotName = _step.value;\n dirtySlots.add(slotName);\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 }\n (0,_store_js__rspack_import_5.scheduleRecomputation)(recomputeExtensionOutputStore);\n}\n/**\n * A subscriber that dirties a slot every time the output store is published would loop here for\n * ever, so the drain gives up after this many passes and leaves the rest for the next write. Any\n * real cascade settles in two or three.\n */ var maxRecomputationPasses = 20;\nfunction recomputeExtensionOutputStore() {\n // Publishing notifies subscribers synchronously, so one that dirties a slot re-enters here. The\n // loop below picks that work up; recursing instead would nest without bound.\n if (isRecomputingOutputStore) {\n return;\n }\n isRecomputingOutputStore = true;\n try {\n for(var pass = 1;; pass++){\n var slots = dirtySlots;\n if (slots !== null && slots.size === 0) {\n return;\n }\n // Taken before the work so that anything dirtied while it runs accumulates for the next pass\n // rather than being discarded when this one finishes.\n dirtySlots = new Set();\n try {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotsConfigStore.getState(), extensionsConfigStore.getState(), _openmrs_esm_feature_flags__rspack_import_2.featureFlagsStore.getState(), _openmrs_esm_api__rspack_import_0.sessionStore.getState(), slots);\n } catch (e) {\n // Fold the work back in, so a failure leaves these slots marked for the next recomputation\n // instead of stranding them stale.\n dirtySlots = slots === null || dirtySlots === null ? null : new Set(_to_consumable_array(slots).concat(_to_consumable_array(dirtySlots)));\n throw e;\n }\n if (pass >= maxRecomputationPasses) {\n console.error(\"The extension system stopped recomputing after \".concat(maxRecomputationPasses, \" passes because \") + \"something keeps invalidating slots in response to the extension store being written. \" + \"Some slots are left stale until the next write.\");\n return;\n }\n }\n } finally{\n isRecomputingOutputStore = false;\n }\n}\n/**\n * Re-derives the output store from the extension system's inputs.\n *\n * Two things keep this cheap. `dirtySlotNames` limits which slots are recomputed at all; passing\n * `null` recomputes every slot. And slots whose derived value hasn't changed keep their existing\n * object, so that components subscribed to one slot don't re-render because a different slot\n * changed.\n */ function updateExtensionOutputStore(internalState, extensionSlotConfigs, extensionsConfigState, featureFlagState, sessionState) {\n var dirtySlotNames = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : null;\n var previousSlots = extensionStore.getState().slots;\n var slots = {};\n var changed = false;\n var isOnline = (0,_openmrs_esm_utils__rspack_import_6.isOnline)();\n var enabledFeatureFlags = Object.entries(featureFlagState.flags).filter(function(param) {\n var _param = _sliced_to_array(param, 2), enabled = _param[1].enabled;\n return enabled;\n }).map(function(param) {\n var _param = _sliced_to_array(param, 1), name = _param[0];\n return name;\n });\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(internalState.slots)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), slotName = _step_value[0], slot = _step_value[1];\n var previous = previousSlots[slotName];\n if (previous && dirtySlotNames && !dirtySlotNames.has(slotName)) {\n slots[slotName] = previous;\n continue;\n }\n var config = (0,_openmrs_esm_config__rspack_import_1.getExtensionSlotConfigFromStore)(extensionSlotConfigs, slot.name).config;\n var candidateExtensions = getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionsConfigState, enabledFeatureFlags, isOnline, sessionState.session);\n if (previous && previous.moduleName === slot.moduleName && (0,lodash_es__rspack_import_7[\"default\"])(previous.candidateExtensions, candidateExtensions)) {\n slots[slotName] = previous;\n } else {\n slots[slotName] = {\n moduleName: slot.moduleName,\n candidateExtensions: candidateExtensions\n };\n changed = true;\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 if (changed || Object.keys(previousSlots).length !== Object.keys(slots).length) {\n extensionStore.setState({\n slots: slots\n });\n }\n}\n/**\n * Returns the keys whose values differ between two records, including keys present in only one.\n */ function changedKeys(next, previous) {\n var changed = new Set();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(next)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n if (next[key] !== previous[key]) {\n changed.add(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 var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = Object.keys(previous)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var key1 = _step1.value;\n if (!(key1 in next)) {\n changed.add(key1);\n }\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n return changed;\n}\nextensionInternalStore.subscribe(function(state, previousState) {\n // A new or changed registration can affect any slot the extension might be assigned to. Every\n // other kind of change here — attaching, registering a slot — is scoped to the slots whose\n // entries actually changed.\n markSlotsDirty(state.extensions !== previousState.extensions ? null : changedKeys(state.slots, previousState.slots));\n});\n// Slot configs are per-slot, so a config change invalidates only the slots it names.\nslotsConfigStore.subscribe(function(state, previousState) {\n markSlotsDirty(changedKeys(state.slots, previousState.slots));\n});\n// Extension configs are keyed by slot too, and the config system hands back the same per-slot\n// object when nothing under it changed, so only the slots whose configs actually moved are dirtied.\nextensionsConfigStore.subscribe(function(state, previousState) {\n markSlotsDirty(changedKeys(state.configs, previousState.configs));\n});\n_openmrs_esm_feature_flags__rspack_import_2.featureFlagsStore.subscribe(function() {\n return markSlotsDirty(null);\n});\n_openmrs_esm_api__rspack_import_0.sessionStore.subscribe(function() {\n return markSlotsDirty(null);\n});\nfunction updateOutputStoreToCurrent() {\n markSlotsDirty(null);\n}\nupdateOutputStoreToCurrent();\n(0,_openmrs_esm_globals__rspack_import_3.subscribeConnectivityChanged)(updateOutputStoreToCurrent);\nfunction createNewExtensionSlotInfo(slotName, moduleName) {\n return {\n moduleName: moduleName,\n name: slotName,\n attachedIds: []\n };\n}\n/**\n * Given an extension ID, which is a string uniquely identifying\n * an instance of an extension within an extension slot, this\n * returns the extension name.\n *\n * @example\n * ```js\n * getExtensionNameFromId(\"foo#bar\")\n * --> \"foo\"\n * getExtensionNameFromId(\"baz\")\n * --> \"baz\"\n * ```\n */ function getExtensionNameFromId(extensionId) {\n var _extensionId_split = _sliced_to_array(extensionId.split('#'), 1), extensionName = _extensionId_split[0];\n return extensionName;\n}\nfunction getExtensionRegistrationFrom(state, extensionId) {\n var name = getExtensionNameFromId(extensionId);\n return state.extensions[name];\n}\nfunction getExtensionRegistration(extensionId) {\n var state = extensionInternalStore.getState();\n return getExtensionRegistrationFrom(state, extensionId);\n}\n/**\n * Extensions must be registered in order to be rendered.\n * This is handled by the app shell, when extensions are provided\n * via the `routes.json` file and registered through `registerApp()`.\n * @internal\n */ var registerExtension = function registerExtension(extensionRegistration) {\n return (0,_store_js__rspack_import_5.updateInternalExtensionStore)(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n extensions: _object_spread_props(_object_spread({}, state.extensions), _define_property({}, extensionRegistration.name, _object_spread({}, extensionRegistration)))\n });\n });\n};\n/**\n * Attach an extension to an extension slot.\n *\n * This will cause the extension to be rendered into the specified\n * extension slot, unless it is removed by configuration. Using\n * `attach` is an alternative to specifying the `slot` or `slots`\n * in the extension declaration.\n *\n * It is particularly useful when creating a slot into which\n * you want to render an existing extension. This enables you\n * to do so without modifying the extension's declaration, which\n * may be impractical or inappropriate, for example if you are\n * writing a module for a specific implementation.\n *\n * @param slotName a name uniquely identifying the slot\n * @param extensionId an extension name, with an optional #-suffix\n * to distinguish it from other instances of the same extension\n * attached to the same slot.\n */ function attach(slotName, extensionId) {\n (0,_store_js__rspack_import_5.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[slotName];\n if (!existingSlot) {\n return _object_spread_props(_object_spread({}, state), {\n slots: _object_spread_props(_object_spread({}, state.slots), _define_property({}, slotName, _object_spread_props(_object_spread({}, createNewExtensionSlotInfo(slotName)), {\n attachedIds: [\n extensionId\n ]\n })))\n });\n } else {\n return _object_spread_props(_object_spread({}, state), {\n slots: _object_spread_props(_object_spread({}, state.slots), _define_property({}, slotName, _object_spread_props(_object_spread({}, existingSlot), {\n attachedIds: _to_consumable_array(existingSlot.attachedIds).concat([\n extensionId\n ])\n })))\n });\n }\n });\n}\n/**\n * Detaches an extension from an extension slot.\n *\n * @param extensionSlotName The name of the extension slot to detach from.\n * @param extensionId The ID of the extension to detach.\n *\n * @deprecated Avoid using this. Extension attachments should be considered declarative.\n */ function detach(extensionSlotName, extensionId) {\n (0,_store_js__rspack_import_5.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot && existingSlot.attachedIds.includes(extensionId)) {\n return _object_spread_props(_object_spread({}, state), {\n slots: _object_spread_props(_object_spread({}, state.slots), _define_property({}, extensionSlotName, _object_spread_props(_object_spread({}, existingSlot), {\n attachedIds: existingSlot.attachedIds.filter(function(id) {\n return id !== extensionId;\n })\n })))\n });\n } else {\n return state;\n }\n });\n}\n/**\n * Detaches all extensions from an extension slot.\n *\n * @param extensionSlotName The name of the extension slot to clear.\n *\n * @deprecated Avoid using this. Extension attachments should be considered declarative.\n */ function detachAll(extensionSlotName) {\n (0,_store_js__rspack_import_5.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot) {\n return _object_spread_props(_object_spread({}, state), {\n slots: _object_spread_props(_object_spread({}, state.slots), _define_property({}, extensionSlotName, _object_spread_props(_object_spread({}, existingSlot), {\n attachedIds: []\n })))\n });\n } else {\n return state;\n }\n });\n}\n/**\n * Get an order index for the extension. This will\n * come from either its configured order, its registered order\n * parameter, or the order in which it happened to be attached.\n *\n * The four bands below keep the comparison a total order: every extension lands in exactly one, and\n * those with no ordering information share the last band rather than taking a sentinel that can't be\n * compared against itself.\n */ function getOrder(extensionId, configuredOrder, registeredOrderIndex, attachedOrder) {\n var configuredIndex = configuredOrder.indexOf(extensionId);\n if (configuredIndex !== -1) {\n return configuredIndex;\n } else if (registeredOrderIndex !== undefined) {\n // extensions that don't have a configured order should appear after those that do\n return 1000 + registeredOrderIndex;\n } else {\n var assignedIndex = attachedOrder.indexOf(extensionId);\n if (assignedIndex !== -1) {\n // extensions that have neither a configured nor registered order should appear\n // after all others\n return 2000 + assignedIndex;\n } else {\n // Added by configuration with no order of any kind — after everything else, and among\n // themselves in the order the configuration lists them.\n return 3000;\n }\n }\n}\nfunction getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionConfigStoreState, enabledFeatureFlags, isOnline, session) {\n var attachedIds = internalState.slots[slotName].attachedIds;\n var assignedIds = calculateAssignedIds(config, attachedIds);\n var extensions = [];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = assignedIds[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var id = _step.value;\n var _getExtensionConfigFromStore = (0,_openmrs_esm_config__rspack_import_1.getExtensionConfigFromStore)(extensionConfigStoreState, slotName, id), rawExtensionConfig = _getExtensionConfigFromStore.config;\n var rawExtensionSlotExtensionConfig = (0,_openmrs_esm_config__rspack_import_1.getExtensionConfigFromExtensionSlotStore)(config, slotName, id);\n // `merge` mutates its first argument, and `rawExtensionConfig` belongs to the config store,\n // so never merge into it.\n var extensionConfig = rawExtensionSlotExtensionConfig ? (0,lodash_es__rspack_import_8[\"default\"])({}, rawExtensionConfig, rawExtensionSlotExtensionConfig) : rawExtensionConfig;\n var name = getExtensionNameFromId(id);\n var extension = internalState.extensions[name];\n // if the extension has not been registered yet, do not include it\n if (extension) {\n var _ref, _ref1, _ref2, _ref3, _ref4, _ref5;\n var _extensionConfig_Displayconditions, _extensionConfig_Displayconditions1, _extensionConfig_Displayconditions2, _extensionConfig_Displayconditions3;\n var requiredPrivileges = (_ref = (_ref1 = extensionConfig === null || extensionConfig === void 0 ? void 0 : (_extensionConfig_Displayconditions = extensionConfig['Display conditions']) === null || _extensionConfig_Displayconditions === void 0 ? void 0 : _extensionConfig_Displayconditions.privileges) !== null && _ref1 !== void 0 ? _ref1 : extension.privileges) !== null && _ref !== void 0 ? _ref : [];\n if (requiredPrivileges && (typeof requiredPrivileges === 'string' || Array.isArray(requiredPrivileges) && requiredPrivileges.length > 0)) {\n if (!(session === null || session === void 0 ? void 0 : session.user)) {\n continue;\n }\n if (!(0,_openmrs_esm_api__rspack_import_0.userHasAccess)(requiredPrivileges, session.user)) {\n continue;\n }\n }\n if (extension.featureFlag && !enabledFeatureFlags.includes(extension.featureFlag)) {\n continue;\n }\n if (window.offlineEnabled && !(0,_helpers_js__rspack_import_4.checkStatusFor)(isOnline, extension.online, extension.offline)) {\n continue;\n }\n extensions.push({\n id: id,\n name: name,\n moduleName: extension.moduleName,\n config: extensionConfig,\n featureFlag: extension.featureFlag,\n meta: extension.meta,\n online: (_ref2 = (_ref3 = extensionConfig === null || extensionConfig === void 0 ? void 0 : (_extensionConfig_Displayconditions1 = extensionConfig['Display conditions']) === null || _extensionConfig_Displayconditions1 === void 0 ? void 0 : _extensionConfig_Displayconditions1.online) !== null && _ref3 !== void 0 ? _ref3 : extension.online) !== null && _ref2 !== void 0 ? _ref2 : true,\n offline: (_ref4 = (_ref5 = extensionConfig === null || extensionConfig === void 0 ? void 0 : (_extensionConfig_Displayconditions2 = extensionConfig['Display conditions']) === null || _extensionConfig_Displayconditions2 === void 0 ? void 0 : _extensionConfig_Displayconditions2.offline) !== null && _ref5 !== void 0 ? _ref5 : extension.offline) !== null && _ref4 !== void 0 ? _ref4 : false,\n displayConditionExpression: (extensionConfig === null || extensionConfig === void 0 ? void 0 : (_extensionConfig_Displayconditions3 = extensionConfig['Display conditions']) === null || _extensionConfig_Displayconditions3 === void 0 ? void 0 : _extensionConfig_Displayconditions3.expression) || extension.displayExpression\n });\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 return extensions;\n}\n/**\n * Narrows `extensions` to those whose display condition holds for one particular rendering of a\n * slot, evaluating each condition against `state`.\n *\n * An extension whose display condition throws is left out, on the grounds that a condition that cannot be\n * evaluated has not been met.\n *\n * @param extensions The extensions assigned to the slot, as the extension store holds them\n * @param state The state of this rendering of the slot\n * @param session The current session, which conditions may refer to as `session`\n * @param slotName The slot these were assigned to, used only to identify them if a condition throws\n * @returns Those of `extensions` that should be displayed, in the same order. Always a new array.\n */ function filterExtensionsByDisplayConditions(extensions, state) {\n var session = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null, slotName = arguments.length > 3 ? arguments[3] : void 0;\n // Built once for the whole slot rather than per extension: the context is the same for all of\n // them, and most slots have no conditions at all.\n var expressionContext;\n return extensions.filter(function(extension) {\n var expression = extension.displayConditionExpression;\n if (typeof expression !== 'string' || expression.trim().length === 0) {\n return true;\n }\n expressionContext !== null && expressionContext !== void 0 ? expressionContext : expressionContext = state && (typeof state === \"undefined\" ? \"undefined\" : _type_of(state)) === 'object' ? _object_spread({\n session: session\n }, state) : {\n session: session\n };\n try {\n return Boolean((0,_openmrs_esm_expression_evaluator__rspack_import_9.evaluateAsBoolean)(expression, expressionContext));\n } catch (e) {\n console.error(\"Error while evaluating expression '\".concat(expression, \"' for \").concat(extension.id) + (slotName ? \" in \".concat(slotName) : ''), e);\n return false;\n }\n });\n}\n/**\n * Gets the extensions a given rendering of a slot should display, in order. This is the supported\n * way to ask what belongs in a slot; reading the extension store directly skips display conditions.\n *\n * Display conditions are evaluated against `state`, so pass whatever the slot is being rendered\n * for. The same slot can be rendered many times with different state — once per row of a table,\n * say — and each rendering can resolve to a different set of extensions. Omitting `state` hides\n * every extension whose condition refers to it, since the condition cannot be evaluated.\n *\n * @param slotName The slot to load the extensions for\n * @param state The state of the rendering of the slot the extensions will be displayed in\n * @returns Those extensions assigned to the slot whose display conditions hold\n */ function getAssignedExtensions(slotName, state) {\n return filterExtensionsByDisplayConditions(getCandidateExtensions(slotName), state, _openmrs_esm_api__rspack_import_0.sessionStore.getState().session, slotName);\n}\n/**\n * Gets everything assigned to a slot without evaluating any display condition, which\n * {@link getAssignedExtensions} cannot do without knowing the state of a particular rendering.\n *\n * This exists for tools that present a slot's configuration rather than render it — the UI editor\n * has to list an extension in order to let an implementer reorder or remove it, even where no\n * rendering would display it. Anything deciding what to render wants `getAssignedExtensions()`.\n *\n * @internal\n */ function getCandidateExtensions(slotName) {\n var _ref;\n var _extensionStore_getState_slots_slotName;\n return (_ref = (_extensionStore_getState_slots_slotName = extensionStore.getState().slots[slotName]) === null || _extensionStore_getState_slots_slotName === void 0 ? void 0 : _extensionStore_getState_slots_slotName.candidateExtensions) !== null && _ref !== void 0 ? _ref : [];\n}\nfunction calculateAssignedIds(config, attachedIds) {\n var addedIds = config.add || [];\n var removedIds = config.remove || [];\n var idOrder = config.order || [];\n var extensions = extensionInternalStore.getState().extensions;\n return _to_consumable_array(attachedIds).concat(_to_consumable_array(addedIds)).filter(function(id) {\n return !removedIds.includes(id);\n }).sort(function(idA, idB) {\n var _extensions_getExtensionNameFromId, _extensions_getExtensionNameFromId1;\n var ai = getOrder(idA, idOrder, (_extensions_getExtensionNameFromId = extensions[getExtensionNameFromId(idA)]) === null || _extensions_getExtensionNameFromId === void 0 ? void 0 : _extensions_getExtensionNameFromId.order, attachedIds);\n var bi = getOrder(idB, idOrder, (_extensions_getExtensionNameFromId1 = extensions[getExtensionNameFromId(idB)]) === null || _extensions_getExtensionNameFromId1 === void 0 ? void 0 : _extensions_getExtensionNameFromId1.order, attachedIds);\n // Ties keep their input order — `Array.prototype.sort` is stable, and the input is\n // `[...attachedIds, ...addedIds]`, so two extensions the ordering rules can't separate\n // come out in the order the code and the configuration declared them.\n return ai - bi;\n });\n}\n/**\n * Used by by extension slots at mount time.\n *\n * @param moduleName The name of the module that contains the extension slot\n * @param slotName The extension slot name that is actually used\n * @internal\n */ var registerExtensionSlot = function registerExtensionSlot(moduleName, slotName) {\n return extensionInternalStore.setState(function(currentState) {\n var _currentState_slots_slotName;\n var existingModuleName = (_currentState_slots_slotName = currentState.slots[slotName]) === null || _currentState_slots_slotName === void 0 ? void 0 : _currentState_slots_slotName.moduleName;\n if (existingModuleName && existingModuleName != moduleName) {\n console.warn(\"An extension slot with the name '\".concat(slotName, '\\' already exists. Refusing to register the same slot name twice (in \"registerExtensionSlot\"). The existing one is from module ').concat(existingModuleName, \".\"));\n return currentState;\n }\n if (existingModuleName && existingModuleName == moduleName) {\n // Re-rendering an existing slot\n return currentState;\n }\n if (currentState.slots[slotName]) {\n return _object_spread_props(_object_spread({}, currentState), {\n slots: _object_spread_props(_object_spread({}, currentState.slots), _define_property({}, slotName, _object_spread_props(_object_spread({}, currentState.slots[slotName]), {\n moduleName: moduleName\n })))\n });\n }\n var slot = createNewExtensionSlotInfo(slotName, moduleName);\n return _object_spread_props(_object_spread({}, currentState), {\n slots: _object_spread_props(_object_spread({}, currentState.slots), _define_property({}, slotName, _object_spread({}, slot)))\n });\n });\n};\n/**\n * @internal\n * Just for testing.\n */ var reset = function reset() {\n // Invalidation is carried in module state, so it has to be reset too or it bleeds into the\n // next test as either a stale dirty set or a missing one.\n dirtySlots = null;\n (0,_store_js__rspack_import_5.updateInternalExtensionStore)(function() {\n return {\n slots: {},\n extensions: {}\n };\n });\n (0,_store_js__rspack_import_5.getExtensionRenderingsStore)().setState({\n renderings: new Map()\n });\n extensionStore.setState({\n slots: {}\n });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvZGlzdC9leHRlbnNpb25zLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvZGlzdC9leHRlbnNpb25zLmpzPzg1ZDgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqLyAvKlxuICogV2UgaGF2ZSB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbiBtb2RlczpcbiAqXG4gKiAtIGF0dGFjaGVkIChzZXQgdmlhIGNvZGUgaW4gZm9ybSBvZjogYXR0YWNoLCBkZXRhY2gsIC4uLilcbiAqIC0gY29uZmlndXJlZCAoc2V0IHZpYSBjb25maWd1cmF0aW9uIGluIGZvcm0gb2Y6IGFkZGVkLCByZW1vdmVkLCAuLi4pXG4gKiAtIGFzc2lnbmVkIChjb21wdXRlZCBmcm9tIGF0dGFjaGVkIGFuZCBjb25maWd1cmVkKVxuICogLSBkaXNwbGF5ZWQgKGNvbXB1dGVkIGZyb20gYXNzaWduZWQpXG4gKi8gaW1wb3J0IHsgc2Vzc2lvblN0b3JlLCB1c2VySGFzQWNjZXNzIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1hcGlcIjtcbmltcG9ydCB7IGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21FeHRlbnNpb25TbG90U3RvcmUsIGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSwgZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZSwgZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSwgZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1jb25maWdcIjtcbmltcG9ydCB7IGV2YWx1YXRlQXNCb29sZWFuIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1leHByZXNzaW9uLWV2YWx1YXRvclwiO1xuaW1wb3J0IHsgZmVhdHVyZUZsYWdzU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWZlYXR1cmUtZmxhZ3NcIjtcbmltcG9ydCB7IHN1YnNjcmliZUNvbm5lY3Rpdml0eUNoYW5nZWQgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWdsb2JhbHNcIjtcbmltcG9ydCB7IGlzT25saW5lIGFzIGlzT25saW5lRm4gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXV0aWxzXCI7XG5pbXBvcnQgeyBpc0VxdWFsLCBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGNoZWNrU3RhdHVzRm9yIH0gZnJvbSBcIi4vaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgZ2V0RXh0ZW5zaW9uUmVuZGVyaW5nc1N0b3JlLCBnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlLCBnZXRFeHRlbnNpb25TdG9yZSwgc2NoZWR1bGVSZWNvbXB1dGF0aW9uLCB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlIH0gZnJvbSBcIi4vc3RvcmUuanNcIjtcbmNvbnN0IGV4dGVuc2lvbkludGVybmFsU3RvcmUgPSBnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlKCk7XG5jb25zdCBleHRlbnNpb25TdG9yZSA9IGdldEV4dGVuc2lvblN0b3JlKCk7XG5jb25zdCBzbG90c0NvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSgpO1xuY29uc3QgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlKCk7XG4vKipcbiAqIFNsb3RzIHdob3NlIGRlcml2ZWQgc3RhdGUgbWF5IGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgb3V0cHV0IHN0b3JlIHdhcyBsYXN0IHVwZGF0ZWQuIGBudWxsYFxuICogc3RhbmRzIGZvciBcImV2ZXJ5IHNsb3RcIiwgYW5kIGlzIHVzZWQgd2hlbiBhbiBpbnB1dCBjaGFuZ2VzIHRoYXQgaXNuJ3Qgc2NvcGVkIHRvIG9uZSBzbG90IOKAlFxuICogdGhlIHNlc3Npb24sIGEgZmVhdHVyZSBmbGFnLCBjb25uZWN0aXZpdHksIG9yIGEgbmV3IGV4dGVuc2lvbiByZWdpc3RyYXRpb24uXG4gKi8gbGV0IGRpcnR5U2xvdHMgPSBuZXcgU2V0KCk7XG5sZXQgaXNSZWNvbXB1dGluZ091dHB1dFN0b3JlID0gZmFsc2U7XG5mdW5jdGlvbiBtYXJrU2xvdHNEaXJ0eShzbG90cykge1xuICAgIGlmIChzbG90cyA9PT0gbnVsbCkge1xuICAgICAgICBkaXJ0eVNsb3RzID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKGRpcnR5U2xvdHMgIT09IG51bGwpIHtcbiAgICAgICAgZm9yIChjb25zdCBzbG90TmFtZSBvZiBzbG90cyl7XG4gICAgICAgICAgICBkaXJ0eVNsb3RzLmFkZChzbG90TmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2NoZWR1bGVSZWNvbXB1dGF0aW9uKHJlY29tcHV0ZUV4dGVuc2lvbk91dHB1dFN0b3JlKTtcbn1cbi8qKlxuICogQSBzdWJzY3JpYmVyIHRoYXQgZGlydGllcyBhIHNsb3QgZXZlcnkgdGltZSB0aGUgb3V0cHV0IHN0b3JlIGlzIHB1Ymxpc2hlZCB3b3VsZCBsb29wIGhlcmUgZm9yXG4gKiBldmVyLCBzbyB0aGUgZHJhaW4gZ2l2ZXMgdXAgYWZ0ZXIgdGhpcyBtYW55IHBhc3NlcyBhbmQgbGVhdmVzIHRoZSByZXN0IGZvciB0aGUgbmV4dCB3cml0ZS4gQW55XG4gKiByZWFsIGNhc2NhZGUgc2V0dGxlcyBpbiB0d28gb3IgdGhyZWUuXG4gKi8gY29uc3QgbWF4UmVjb21wdXRhdGlvblBhc3NlcyA9IDIwO1xuZnVuY3Rpb24gcmVjb21wdXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoKSB7XG4gICAgLy8gUHVibGlzaGluZyBub3RpZmllcyBzdWJzY3JpYmVycyBzeW5jaHJvbm91c2x5LCBzbyBvbmUgdGhhdCBkaXJ0aWVzIGEgc2xvdCByZS1lbnRlcnMgaGVyZS4gVGhlXG4gICAgLy8gbG9vcCBiZWxvdyBwaWNrcyB0aGF0IHdvcmsgdXA7IHJlY3Vyc2luZyBpbnN0ZWFkIHdvdWxkIG5lc3Qgd2l0aG91dCBib3VuZC5cbiAgICBpZiAoaXNSZWNvbXB1dGluZ091dHB1dFN0b3JlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXNSZWNvbXB1dGluZ091dHB1dFN0b3JlID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgICBmb3IobGV0IHBhc3MgPSAxOzsgcGFzcysrKXtcbiAgICAgICAgICAgIGNvbnN0IHNsb3RzID0gZGlydHlTbG90cztcbiAgICAgICAgICAgIGlmIChzbG90cyAhPT0gbnVsbCAmJiBzbG90cy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGFrZW4gYmVmb3JlIHRoZSB3b3JrIHNvIHRoYXQgYW55dGhpbmcgZGlydGllZCB3aGlsZSBpdCBydW5zIGFjY3VtdWxhdGVzIGZvciB0aGUgbmV4dCBwYXNzXG4gICAgICAgICAgICAvLyByYXRoZXIgdGhhbiBiZWluZyBkaXNjYXJkZWQgd2hlbiB0aGlzIG9uZSBmaW5pc2hlcy5cbiAgICAgICAgICAgIGRpcnR5U2xvdHMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUV4dGVuc2lvbk91dHB1dFN0b3JlKGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSwgc2xvdHNDb25maWdTdG9yZS5nZXRTdGF0ZSgpLCBleHRlbnNpb25zQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKSwgZmVhdHVyZUZsYWdzU3RvcmUuZ2V0U3RhdGUoKSwgc2Vzc2lvblN0b3JlLmdldFN0YXRlKCksIHNsb3RzKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBGb2xkIHRoZSB3b3JrIGJhY2sgaW4sIHNvIGEgZmFpbHVyZSBsZWF2ZXMgdGhlc2Ugc2xvdHMgbWFya2VkIGZvciB0aGUgbmV4dCByZWNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBzdHJhbmRpbmcgdGhlbSBzdGFsZS5cbiAgICAgICAgICAgICAgICBkaXJ0eVNsb3RzID0gc2xvdHMgPT09IG51bGwgfHwgZGlydHlTbG90cyA9PT0gbnVsbCA/IG51bGwgOiBuZXcgU2V0KFtcbiAgICAgICAgICAgICAgICAgICAgLi4uc2xvdHMsXG4gICAgICAgICAgICAgICAgICAgIC4uLmRpcnR5U2xvdHNcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3MgPj0gbWF4UmVjb21wdXRhdGlvblBhc3Nlcykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSBleHRlbnNpb24gc3lzdGVtIHN0b3BwZWQgcmVjb21wdXRpbmcgYWZ0ZXIgJHttYXhSZWNvbXB1dGF0aW9uUGFzc2VzfSBwYXNzZXMgYmVjYXVzZSBgICsgYHNvbWV0aGluZyBrZWVwcyBpbnZhbGlkYXRpbmcgc2xvdHMgaW4gcmVzcG9uc2UgdG8gdGhlIGV4dGVuc2lvbiBzdG9yZSBiZWluZyB3cml0dGVuLiBgICsgYFNvbWUgc2xvdHMgYXJlIGxlZnQgc3RhbGUgdW50aWwgdGhlIG5leHQgd3JpdGUuYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBmaW5hbGx5e1xuICAgICAgICBpc1JlY29tcHV0aW5nT3V0cHV0U3RvcmUgPSBmYWxzZTtcbiAgICB9XG59XG4vKipcbiAqIFJlLWRlcml2ZXMgdGhlIG91dHB1dCBzdG9yZSBmcm9tIHRoZSBleHRlbnNpb24gc3lzdGVtJ3MgaW5wdXRzLlxuICpcbiAqIFR3byB0aGluZ3Mga2VlcCB0aGlzIGNoZWFwLiBgZGlydHlTbG90TmFtZXNgIGxpbWl0cyB3aGljaCBzbG90cyBhcmUgcmVjb21wdXRlZCBhdCBhbGw7IHBhc3NpbmdcbiAqIGBudWxsYCByZWNvbXB1dGVzIGV2ZXJ5IHNsb3QuIEFuZCBzbG90cyB3aG9zZSBkZXJpdmVkIHZhbHVlIGhhc24ndCBjaGFuZ2VkIGtlZXAgdGhlaXIgZXhpc3RpbmdcbiAqIG9iamVjdCwgc28gdGhhdCBjb21wb25lbnRzIHN1YnNjcmliZWQgdG8gb25lIHNsb3QgZG9uJ3QgcmUtcmVuZGVyIGJlY2F1c2UgYSBkaWZmZXJlbnQgc2xvdFxuICogY2hhbmdlZC5cbiAqLyBmdW5jdGlvbiB1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZShpbnRlcm5hbFN0YXRlLCBleHRlbnNpb25TbG90Q29uZmlncywgZXh0ZW5zaW9uc0NvbmZpZ1N0YXRlLCBmZWF0dXJlRmxhZ1N0YXRlLCBzZXNzaW9uU3RhdGUsIGRpcnR5U2xvdE5hbWVzID0gbnVsbCkge1xuICAgIGNvbnN0IHByZXZpb3VzU2xvdHMgPSBleHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLnNsb3RzO1xuICAgIGNvbnN0IHNsb3RzID0ge307XG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBjb25zdCBpc09ubGluZSA9IGlzT25saW5lRm4oKTtcbiAgICBjb25zdCBlbmFibGVkRmVhdHVyZUZsYWdzID0gT2JqZWN0LmVudHJpZXMoZmVhdHVyZUZsYWdTdGF0ZS5mbGFncykuZmlsdGVyKChbLCB7IGVuYWJsZWQgfV0pPT5lbmFibGVkKS5tYXAoKFtuYW1lXSk9Pm5hbWUpO1xuICAgIGZvciAobGV0IFtzbG90TmFtZSwgc2xvdF0gb2YgT2JqZWN0LmVudHJpZXMoaW50ZXJuYWxTdGF0ZS5zbG90cykpe1xuICAgICAgICBjb25zdCBwcmV2aW91cyA9IHByZXZpb3VzU2xvdHNbc2xvdE5hbWVdO1xuICAgICAgICBpZiAocHJldmlvdXMgJiYgZGlydHlTbG90TmFtZXMgJiYgIWRpcnR5U2xvdE5hbWVzLmhhcyhzbG90TmFtZSkpIHtcbiAgICAgICAgICAgIHNsb3RzW3Nsb3ROYW1lXSA9IHByZXZpb3VzO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBjb25maWcgfSA9IGdldEV4dGVuc2lvblNsb3RDb25maWdGcm9tU3RvcmUoZXh0ZW5zaW9uU2xvdENvbmZpZ3MsIHNsb3QubmFtZSk7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZUV4dGVuc2lvbnMgPSBnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEoc2xvdE5hbWUsIGludGVybmFsU3RhdGUsIGNvbmZpZywgZXh0ZW5zaW9uc0NvbmZpZ1N0YXRlLCBlbmFibGVkRmVhdHVyZUZsYWdzLCBpc09ubGluZSwgc2Vzc2lvblN0YXRlLnNlc3Npb24pO1xuICAgICAgICBpZiAocHJldmlvdXMgJiYgcHJldmlvdXMubW9kdWxlTmFtZSA9PT0gc2xvdC5tb2R1bGVOYW1lICYmIGlzRXF1YWwocHJldmlvdXMuY2FuZGlkYXRlRXh0ZW5zaW9ucywgY2FuZGlkYXRlRXh0ZW5zaW9ucykpIHtcbiAgICAgICAgICAgIHNsb3RzW3Nsb3ROYW1lXSA9IHByZXZpb3VzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2xvdHNbc2xvdE5hbWVdID0ge1xuICAgICAgICAgICAgICAgIG1vZHVsZU5hbWU6IHNsb3QubW9kdWxlTmFtZSxcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVFeHRlbnNpb25zXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZWQgfHwgT2JqZWN0LmtleXMocHJldmlvdXNTbG90cykubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhzbG90cykubGVuZ3RoKSB7XG4gICAgICAgIGV4dGVuc2lvblN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHNsb3RzXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbi8qKlxuICogUmV0dXJucyB0aGUga2V5cyB3aG9zZSB2YWx1ZXMgZGlmZmVyIGJldHdlZW4gdHdvIHJlY29yZHMsIGluY2x1ZGluZyBrZXlzIHByZXNlbnQgaW4gb25seSBvbmUuXG4gKi8gZnVuY3Rpb24gY2hhbmdlZEtleXMobmV4dCwgcHJldmlvdXMpIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gbmV3IFNldCgpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG5leHQpKXtcbiAgICAgICAgaWYgKG5leHRba2V5XSAhPT0gcHJldmlvdXNba2V5XSkge1xuICAgICAgICAgICAgY2hhbmdlZC5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwcmV2aW91cykpe1xuICAgICAgICBpZiAoIShrZXkgaW4gbmV4dCkpIHtcbiAgICAgICAgICAgIGNoYW5nZWQuYWRkKGtleSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoYW5nZWQ7XG59XG5leHRlbnNpb25JbnRlcm5hbFN0b3JlLnN1YnNjcmliZSgoc3RhdGUsIHByZXZpb3VzU3RhdGUpPT57XG4gICAgLy8gQSBuZXcgb3IgY2hhbmdlZCByZWdpc3RyYXRpb24gY2FuIGFmZmVjdCBhbnkgc2xvdCB0aGUgZXh0ZW5zaW9uIG1pZ2h0IGJlIGFzc2lnbmVkIHRvLiBFdmVyeVxuICAgIC8vIG90aGVyIGtpbmQgb2YgY2hhbmdlIGhlcmUg4oCUIGF0dGFjaGluZywgcmVnaXN0ZXJpbmcgYSBzbG90IOKAlCBpcyBzY29wZWQgdG8gdGhlIHNsb3RzIHdob3NlXG4gICAgLy8gZW50cmllcyBhY3R1YWxseSBjaGFuZ2VkLlxuICAgIG1hcmtTbG90c0RpcnR5KHN0YXRlLmV4dGVuc2lvbnMgIT09IHByZXZpb3VzU3RhdGUuZXh0ZW5zaW9ucyA/IG51bGwgOiBjaGFuZ2VkS2V5cyhzdGF0ZS5zbG90cywgcHJldmlvdXNTdGF0ZS5zbG90cykpO1xufSk7XG4vLyBTbG90IGNvbmZpZ3MgYXJlIHBlci1zbG90LCBzbyBhIGNvbmZpZyBjaGFuZ2UgaW52YWxpZGF0ZXMgb25seSB0aGUgc2xvdHMgaXQgbmFtZXMuXG5zbG90c0NvbmZpZ1N0b3JlLnN1YnNjcmliZSgoc3RhdGUsIHByZXZpb3VzU3RhdGUpPT57XG4gICAgbWFya1Nsb3RzRGlydHkoY2hhbmdlZEtleXMoc3RhdGUuc2xvdHMsIHByZXZpb3VzU3RhdGUuc2xvdHMpKTtcbn0pO1xuLy8gRXh0ZW5zaW9uIGNvbmZpZ3MgYXJlIGtleWVkIGJ5IHNsb3QgdG9vLCBhbmQgdGhlIGNvbmZpZyBzeXN0ZW0gaGFuZHMgYmFjayB0aGUgc2FtZSBwZXItc2xvdFxuLy8gb2JqZWN0IHdoZW4gbm90aGluZyB1bmRlciBpdCBjaGFuZ2VkLCBzbyBvbmx5IHRoZSBzbG90cyB3aG9zZSBjb25maWdzIGFjdHVhbGx5IG1vdmVkIGFyZSBkaXJ0aWVkLlxuZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLnN1YnNjcmliZSgoc3RhdGUsIHByZXZpb3VzU3RhdGUpPT57XG4gICAgbWFya1Nsb3RzRGlydHkoY2hhbmdlZEtleXMoc3RhdGUuY29uZmlncywgcHJldmlvdXNTdGF0ZS5jb25maWdzKSk7XG59KTtcbmZlYXR1cmVGbGFnc1N0b3JlLnN1YnNjcmliZSgoKT0+bWFya1Nsb3RzRGlydHkobnVsbCkpO1xuc2Vzc2lvblN0b3JlLnN1YnNjcmliZSgoKT0+bWFya1Nsb3RzRGlydHkobnVsbCkpO1xuZnVuY3Rpb24gdXBkYXRlT3V0cHV0U3RvcmVUb0N1cnJlbnQoKSB7XG4gICAgbWFya1Nsb3RzRGlydHkobnVsbCk7XG59XG51cGRhdGVPdXRwdXRTdG9yZVRvQ3VycmVudCgpO1xuc3Vic2NyaWJlQ29ubmVjdGl2aXR5Q2hhbmdlZCh1cGRhdGVPdXRwdXRTdG9yZVRvQ3VycmVudCk7XG5mdW5jdGlvbiBjcmVhdGVOZXdFeHRlbnNpb25TbG90SW5mbyhzbG90TmFtZSwgbW9kdWxlTmFtZSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG1vZHVsZU5hbWUsXG4gICAgICAgIG5hbWU6IHNsb3ROYW1lLFxuICAgICAgICBhdHRhY2hlZElkczogW11cbiAgICB9O1xufVxuLyoqXG4gKiBHaXZlbiBhbiBleHRlbnNpb24gSUQsIHdoaWNoIGlzIGEgc3RyaW5nIHVuaXF1ZWx5IGlkZW50aWZ5aW5nXG4gKiBhbiBpbnN0YW5jZSBvZiBhbiBleHRlbnNpb24gd2l0aGluIGFuIGV4dGVuc2lvbiBzbG90LCB0aGlzXG4gKiByZXR1cm5zIHRoZSBleHRlbnNpb24gbmFtZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBganNcbiAqIGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoXCJmb28jYmFyXCIpXG4gKiAgLS0+IFwiZm9vXCJcbiAqIGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoXCJiYXpcIilcbiAqICAtLT4gXCJiYXpcIlxuICogYGBgXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpIHtcbiAgICBjb25zdCBbZXh0ZW5zaW9uTmFtZV0gPSBleHRlbnNpb25JZC5zcGxpdCgnIycpO1xuICAgIHJldHVybiBleHRlbnNpb25OYW1lO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbkZyb20oc3RhdGUsIGV4dGVuc2lvbklkKSB7XG4gICAgY29uc3QgbmFtZSA9IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpO1xuICAgIHJldHVybiBzdGF0ZS5leHRlbnNpb25zW25hbWVdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbihleHRlbnNpb25JZCkge1xuICAgIGNvbnN0IHN0YXRlID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIHJldHVybiBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb25Gcm9tKHN0YXRlLCBleHRlbnNpb25JZCk7XG59XG4vKipcbiAqIEV4dGVuc2lvbnMgbXVzdCBiZSByZWdpc3RlcmVkIGluIG9yZGVyIHRvIGJlIHJlbmRlcmVkLlxuICogVGhpcyBpcyBoYW5kbGVkIGJ5IHRoZSBhcHAgc2hlbGwsIHdoZW4gZXh0ZW5zaW9ucyBhcmUgcHJvdmlkZWRcbiAqIHZpYSB0aGUgYHJvdXRlcy5qc29uYCBmaWxlIGFuZCByZWdpc3RlcmVkIHRocm91Z2ggYHJlZ2lzdGVyQXBwKClgLlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGNvbnN0IHJlZ2lzdGVyRXh0ZW5zaW9uID0gKGV4dGVuc2lvblJlZ2lzdHJhdGlvbik9PnVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgZXh0ZW5zaW9uczoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLmV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgW2V4dGVuc2lvblJlZ2lzdHJhdGlvbi5uYW1lXToge1xuICAgICAgICAgICAgICAgICAgICAuLi5leHRlbnNpb25SZWdpc3RyYXRpb25cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbi8qKlxuICogQXR0YWNoIGFuIGV4dGVuc2lvbiB0byBhbiBleHRlbnNpb24gc2xvdC5cbiAqXG4gKiBUaGlzIHdpbGwgY2F1c2UgdGhlIGV4dGVuc2lvbiB0byBiZSByZW5kZXJlZCBpbnRvIHRoZSBzcGVjaWZpZWRcbiAqIGV4dGVuc2lvbiBzbG90LCB1bmxlc3MgaXQgaXMgcmVtb3ZlZCBieSBjb25maWd1cmF0aW9uLiBVc2luZ1xuICogYGF0dGFjaGAgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gc3BlY2lmeWluZyB0aGUgYHNsb3RgIG9yIGBzbG90c2BcbiAqIGluIHRoZSBleHRlbnNpb24gZGVjbGFyYXRpb24uXG4gKlxuICogSXQgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIGNyZWF0aW5nIGEgc2xvdCBpbnRvIHdoaWNoXG4gKiB5b3Ugd2FudCB0byByZW5kZXIgYW4gZXhpc3RpbmcgZXh0ZW5zaW9uLiBUaGlzIGVuYWJsZXMgeW91XG4gKiB0byBkbyBzbyB3aXRob3V0IG1vZGlmeWluZyB0aGUgZXh0ZW5zaW9uJ3MgZGVjbGFyYXRpb24sIHdoaWNoXG4gKiBtYXkgYmUgaW1wcmFjdGljYWwgb3IgaW5hcHByb3ByaWF0ZSwgZm9yIGV4YW1wbGUgaWYgeW91IGFyZVxuICogd3JpdGluZyBhIG1vZHVsZSBmb3IgYSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0gc2xvdE5hbWUgYSBuYW1lIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHRoZSBzbG90XG4gKiBAcGFyYW0gZXh0ZW5zaW9uSWQgYW4gZXh0ZW5zaW9uIG5hbWUsIHdpdGggYW4gb3B0aW9uYWwgIy1zdWZmaXhcbiAqICAgIHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGV4dGVuc2lvblxuICogICAgYXR0YWNoZWQgdG8gdGhlIHNhbWUgc2xvdC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gYXR0YWNoKHNsb3ROYW1lLCBleHRlbnNpb25JZCkge1xuICAgIHVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUoKHN0YXRlKT0+e1xuICAgICAgICBjb25zdCBleGlzdGluZ1Nsb3QgPSBzdGF0ZS5zbG90c1tzbG90TmFtZV07XG4gICAgICAgIGlmICghZXhpc3RpbmdTbG90KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgICAgICAgICAgICBbc2xvdE5hbWVdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jcmVhdGVOZXdFeHRlbnNpb25TbG90SW5mbyhzbG90TmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2hlZElkczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbklkXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBzbG90czoge1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zbG90cyxcbiAgICAgICAgICAgICAgICAgICAgW3Nsb3ROYW1lXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZXhpc3RpbmdTbG90LFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNoZWRJZHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leGlzdGluZ1Nsb3QuYXR0YWNoZWRJZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uSWRcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogRGV0YWNoZXMgYW4gZXh0ZW5zaW9uIGZyb20gYW4gZXh0ZW5zaW9uIHNsb3QuXG4gKlxuICogQHBhcmFtIGV4dGVuc2lvblNsb3ROYW1lIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gc2xvdCB0byBkZXRhY2ggZnJvbS5cbiAqIEBwYXJhbSBleHRlbnNpb25JZCBUaGUgSUQgb2YgdGhlIGV4dGVuc2lvbiB0byBkZXRhY2guXG4gKlxuICogQGRlcHJlY2F0ZWQgQXZvaWQgdXNpbmcgdGhpcy4gRXh0ZW5zaW9uIGF0dGFjaG1lbnRzIHNob3VsZCBiZSBjb25zaWRlcmVkIGRlY2xhcmF0aXZlLlxuICovIGV4cG9ydCBmdW5jdGlvbiBkZXRhY2goZXh0ZW5zaW9uU2xvdE5hbWUsIGV4dGVuc2lvbklkKSB7XG4gICAgdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSgoc3RhdGUpPT57XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nU2xvdCA9IHN0YXRlLnNsb3RzW2V4dGVuc2lvblNsb3ROYW1lXTtcbiAgICAgICAgaWYgKGV4aXN0aW5nU2xvdCAmJiBleGlzdGluZ1Nsb3QuYXR0YWNoZWRJZHMuaW5jbHVkZXMoZXh0ZW5zaW9uSWQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgICAgICAgICAgICBbZXh0ZW5zaW9uU2xvdE5hbWVdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5leGlzdGluZ1Nsb3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2hlZElkczogZXhpc3RpbmdTbG90LmF0dGFjaGVkSWRzLmZpbHRlcigoaWQpPT5pZCAhPT0gZXh0ZW5zaW9uSWQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKipcbiAqIERldGFjaGVzIGFsbCBleHRlbnNpb25zIGZyb20gYW4gZXh0ZW5zaW9uIHNsb3QuXG4gKlxuICogQHBhcmFtIGV4dGVuc2lvblNsb3ROYW1lIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gc2xvdCB0byBjbGVhci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBBdm9pZCB1c2luZyB0aGlzLiBFeHRlbnNpb24gYXR0YWNobWVudHMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZGVjbGFyYXRpdmUuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGRldGFjaEFsbChleHRlbnNpb25TbG90TmFtZSkge1xuICAgIHVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUoKHN0YXRlKT0+e1xuICAgICAgICBjb25zdCBleGlzdGluZ1Nsb3QgPSBzdGF0ZS5zbG90c1tleHRlbnNpb25TbG90TmFtZV07XG4gICAgICAgIGlmIChleGlzdGluZ1Nsb3QpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc2xvdHM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgICAgICAgICAgIFtleHRlbnNpb25TbG90TmFtZV06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmV4aXN0aW5nU2xvdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaGVkSWRzOiBbXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBHZXQgYW4gb3JkZXIgaW5kZXggZm9yIHRoZSBleHRlbnNpb24uIFRoaXMgd2lsbFxuICogY29tZSBmcm9tIGVpdGhlciBpdHMgY29uZmlndXJlZCBvcmRlciwgaXRzIHJlZ2lzdGVyZWQgb3JkZXJcbiAqIHBhcmFtZXRlciwgb3IgdGhlIG9yZGVyIGluIHdoaWNoIGl0IGhhcHBlbmVkIHRvIGJlIGF0dGFjaGVkLlxuICpcbiAqIFRoZSBmb3VyIGJhbmRzIGJlbG93IGtlZXAgdGhlIGNvbXBhcmlzb24gYSB0b3RhbCBvcmRlcjogZXZlcnkgZXh0ZW5zaW9uIGxhbmRzIGluIGV4YWN0bHkgb25lLCBhbmRcbiAqIHRob3NlIHdpdGggbm8gb3JkZXJpbmcgaW5mb3JtYXRpb24gc2hhcmUgdGhlIGxhc3QgYmFuZCByYXRoZXIgdGhhbiB0YWtpbmcgYSBzZW50aW5lbCB0aGF0IGNhbid0IGJlXG4gKiBjb21wYXJlZCBhZ2FpbnN0IGl0c2VsZi5cbiAqLyBmdW5jdGlvbiBnZXRPcmRlcihleHRlbnNpb25JZCwgY29uZmlndXJlZE9yZGVyLCByZWdpc3RlcmVkT3JkZXJJbmRleCwgYXR0YWNoZWRPcmRlcikge1xuICAgIGNvbnN0IGNvbmZpZ3VyZWRJbmRleCA9IGNvbmZpZ3VyZWRPcmRlci5pbmRleE9mKGV4dGVuc2lvbklkKTtcbiAgICBpZiAoY29uZmlndXJlZEluZGV4ICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gY29uZmlndXJlZEluZGV4O1xuICAgIH0gZWxzZSBpZiAocmVnaXN0ZXJlZE9yZGVySW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBleHRlbnNpb25zIHRoYXQgZG9uJ3QgaGF2ZSBhIGNvbmZpZ3VyZWQgb3JkZXIgc2hvdWxkIGFwcGVhciBhZnRlciB0aG9zZSB0aGF0IGRvXG4gICAgICAgIHJldHVybiAxMDAwICsgcmVnaXN0ZXJlZE9yZGVySW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXNzaWduZWRJbmRleCA9IGF0dGFjaGVkT3JkZXIuaW5kZXhPZihleHRlbnNpb25JZCk7XG4gICAgICAgIGlmIChhc3NpZ25lZEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgLy8gZXh0ZW5zaW9ucyB0aGF0IGhhdmUgbmVpdGhlciBhIGNvbmZpZ3VyZWQgbm9yIHJlZ2lzdGVyZWQgb3JkZXIgc2hvdWxkIGFwcGVhclxuICAgICAgICAgICAgLy8gYWZ0ZXIgYWxsIG90aGVyc1xuICAgICAgICAgICAgcmV0dXJuIDIwMDAgKyBhc3NpZ25lZEluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQWRkZWQgYnkgY29uZmlndXJhdGlvbiB3aXRoIG5vIG9yZGVyIG9mIGFueSBraW5kIOKAlCBhZnRlciBldmVyeXRoaW5nIGVsc2UsIGFuZCBhbW9uZ1xuICAgICAgICAgICAgLy8gdGhlbXNlbHZlcyBpbiB0aGUgb3JkZXIgdGhlIGNvbmZpZ3VyYXRpb24gbGlzdHMgdGhlbS5cbiAgICAgICAgICAgIHJldHVybiAzMDAwO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0QXNzaWduZWRFeHRlbnNpb25zRnJvbVNsb3REYXRhKHNsb3ROYW1lLCBpbnRlcm5hbFN0YXRlLCBjb25maWcsIGV4dGVuc2lvbkNvbmZpZ1N0b3JlU3RhdGUsIGVuYWJsZWRGZWF0dXJlRmxhZ3MsIGlzT25saW5lLCBzZXNzaW9uKSB7XG4gICAgY29uc3QgYXR0YWNoZWRJZHMgPSBpbnRlcm5hbFN0YXRlLnNsb3RzW3Nsb3ROYW1lXS5hdHRhY2hlZElkcztcbiAgICBjb25zdCBhc3NpZ25lZElkcyA9IGNhbGN1bGF0ZUFzc2lnbmVkSWRzKGNvbmZpZywgYXR0YWNoZWRJZHMpO1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpZCBvZiBhc3NpZ25lZElkcyl7XG4gICAgICAgIGNvbnN0IHsgY29uZmlnOiByYXdFeHRlbnNpb25Db25maWcgfSA9IGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZShleHRlbnNpb25Db25maWdTdG9yZVN0YXRlLCBzbG90TmFtZSwgaWQpO1xuICAgICAgICBjb25zdCByYXdFeHRlbnNpb25TbG90RXh0ZW5zaW9uQ29uZmlnID0gZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbUV4dGVuc2lvblNsb3RTdG9yZShjb25maWcsIHNsb3ROYW1lLCBpZCk7XG4gICAgICAgIC8vIGBtZXJnZWAgbXV0YXRlcyBpdHMgZmlyc3QgYXJndW1lbnQsIGFuZCBgcmF3RXh0ZW5zaW9uQ29uZmlnYCBiZWxvbmdzIHRvIHRoZSBjb25maWcgc3RvcmUsXG4gICAgICAgIC8vIHNvIG5ldmVyIG1lcmdlIGludG8gaXQuXG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbkNvbmZpZyA9IHJhd0V4dGVuc2lvblNsb3RFeHRlbnNpb25Db25maWcgPyBtZXJnZSh7fSwgcmF3RXh0ZW5zaW9uQ29uZmlnLCByYXdFeHRlbnNpb25TbG90RXh0ZW5zaW9uQ29uZmlnKSA6IHJhd0V4dGVuc2lvbkNvbmZpZztcbiAgICAgICAgY29uc3QgbmFtZSA9IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoaWQpO1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSBpbnRlcm5hbFN0YXRlLmV4dGVuc2lvbnNbbmFtZV07XG4gICAgICAgIC8vIGlmIHRoZSBleHRlbnNpb24gaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQgeWV0LCBkbyBub3QgaW5jbHVkZSBpdFxuICAgICAgICBpZiAoZXh0ZW5zaW9uKSB7XG4gICAgICAgICAgICBjb25zdCByZXF1aXJlZFByaXZpbGVnZXMgPSBleHRlbnNpb25Db25maWc/LlsnRGlzcGxheSBjb25kaXRpb25zJ10/LnByaXZpbGVnZXMgPz8gZXh0ZW5zaW9uLnByaXZpbGVnZXMgPz8gW107XG4gICAgICAgICAgICBpZiAocmVxdWlyZWRQcml2aWxlZ2VzICYmICh0eXBlb2YgcmVxdWlyZWRQcml2aWxlZ2VzID09PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KHJlcXVpcmVkUHJpdmlsZWdlcykgJiYgcmVxdWlyZWRQcml2aWxlZ2VzLmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzZXNzaW9uPy51c2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXVzZXJIYXNBY2Nlc3MocmVxdWlyZWRQcml2aWxlZ2VzLCBzZXNzaW9uLnVzZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHRlbnNpb24uZmVhdHVyZUZsYWcgJiYgIWVuYWJsZWRGZWF0dXJlRmxhZ3MuaW5jbHVkZXMoZXh0ZW5zaW9uLmZlYXR1cmVGbGFnKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdpbmRvdy5vZmZsaW5lRW5hYmxlZCAmJiAhY2hlY2tTdGF0dXNGb3IoaXNPbmxpbmUsIGV4dGVuc2lvbi5vbmxpbmUsIGV4dGVuc2lvbi5vZmZsaW5lKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXh0ZW5zaW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIG1vZHVsZU5hbWU6IGV4dGVuc2lvbi5tb2R1bGVOYW1lLFxuICAgICAgICAgICAgICAgIGNvbmZpZzogZXh0ZW5zaW9uQ29uZmlnLFxuICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFnOiBleHRlbnNpb24uZmVhdHVyZUZsYWcsXG4gICAgICAgICAgICAgICAgbWV0YTogZXh0ZW5zaW9uLm1ldGEsXG4gICAgICAgICAgICAgICAgb25saW5lOiBleHRlbnNpb25Db25maWc/LlsnRGlzcGxheSBjb25kaXRpb25zJ10/Lm9ubGluZSA/PyBleHRlbnNpb24ub25saW5lID8/IHRydWUsXG4gICAgICAgICAgICAgICAgb2ZmbGluZTogZXh0ZW5zaW9uQ29uZmlnPy5bJ0Rpc3BsYXkgY29uZGl0aW9ucyddPy5vZmZsaW5lID8/IGV4dGVuc2lvbi5vZmZsaW5lID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlDb25kaXRpb25FeHByZXNzaW9uOiBleHRlbnNpb25Db25maWc/LlsnRGlzcGxheSBjb25kaXRpb25zJ10/LmV4cHJlc3Npb24gfHwgZXh0ZW5zaW9uLmRpc3BsYXlFeHByZXNzaW9uXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXh0ZW5zaW9ucztcbn1cbi8qKlxuICogTmFycm93cyBgZXh0ZW5zaW9uc2AgdG8gdGhvc2Ugd2hvc2UgZGlzcGxheSBjb25kaXRpb24gaG9sZHMgZm9yIG9uZSBwYXJ0aWN1bGFyIHJlbmRlcmluZyBvZiBhXG4gKiBzbG90LCBldmFsdWF0aW5nIGVhY2ggY29uZGl0aW9uIGFnYWluc3QgYHN0YXRlYC5cbiAqXG4gKiBBbiBleHRlbnNpb24gd2hvc2UgZGlzcGxheSBjb25kaXRpb24gdGhyb3dzIGlzIGxlZnQgb3V0LCBvbiB0aGUgZ3JvdW5kcyB0aGF0IGEgY29uZGl0aW9uIHRoYXQgY2Fubm90IGJlXG4gKiBldmFsdWF0ZWQgaGFzIG5vdCBiZWVuIG1ldC5cbiAqXG4gKiBAcGFyYW0gZXh0ZW5zaW9ucyBUaGUgZXh0ZW5zaW9ucyBhc3NpZ25lZCB0byB0aGUgc2xvdCwgYXMgdGhlIGV4dGVuc2lvbiBzdG9yZSBob2xkcyB0aGVtXG4gKiBAcGFyYW0gc3RhdGUgVGhlIHN0YXRlIG9mIHRoaXMgcmVuZGVyaW5nIG9mIHRoZSBzbG90XG4gKiBAcGFyYW0gc2Vzc2lvbiBUaGUgY3VycmVudCBzZXNzaW9uLCB3aGljaCBjb25kaXRpb25zIG1heSByZWZlciB0byBhcyBgc2Vzc2lvbmBcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgc2xvdCB0aGVzZSB3ZXJlIGFzc2lnbmVkIHRvLCB1c2VkIG9ubHkgdG8gaWRlbnRpZnkgdGhlbSBpZiBhIGNvbmRpdGlvbiB0aHJvd3NcbiAqIEByZXR1cm5zIFRob3NlIG9mIGBleHRlbnNpb25zYCB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQsIGluIHRoZSBzYW1lIG9yZGVyLiBBbHdheXMgYSBuZXcgYXJyYXkuXG4gKi8gZnVuY3Rpb24gZmlsdGVyRXh0ZW5zaW9uc0J5RGlzcGxheUNvbmRpdGlvbnMoZXh0ZW5zaW9ucywgc3RhdGUsIHNlc3Npb24gPSBudWxsLCBzbG90TmFtZSkge1xuICAgIC8vIEJ1aWx0IG9uY2UgZm9yIHRoZSB3aG9sZSBzbG90IHJhdGhlciB0aGFuIHBlciBleHRlbnNpb246IHRoZSBjb250ZXh0IGlzIHRoZSBzYW1lIGZvciBhbGwgb2ZcbiAgICAvLyB0aGVtLCBhbmQgbW9zdCBzbG90cyBoYXZlIG5vIGNvbmRpdGlvbnMgYXQgYWxsLlxuICAgIGxldCBleHByZXNzaW9uQ29udGV4dDtcbiAgICByZXR1cm4gZXh0ZW5zaW9ucy5maWx0ZXIoKGV4dGVuc2lvbik9PntcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4dGVuc2lvbi5kaXNwbGF5Q29uZGl0aW9uRXhwcmVzc2lvbjtcbiAgICAgICAgaWYgKHR5cGVvZiBleHByZXNzaW9uICE9PSAnc3RyaW5nJyB8fCBleHByZXNzaW9uLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGV4cHJlc3Npb25Db250ZXh0ID8/IChleHByZXNzaW9uQ29udGV4dCA9IHN0YXRlICYmIHR5cGVvZiBzdGF0ZSA9PT0gJ29iamVjdCcgPyB7XG4gICAgICAgICAgICBzZXNzaW9uLFxuICAgICAgICAgICAgLi4uc3RhdGVcbiAgICAgICAgfSA6IHtcbiAgICAgICAgICAgIHNlc3Npb25cbiAgICAgICAgfSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gQm9vbGVhbihldmFsdWF0ZUFzQm9vbGVhbihleHByZXNzaW9uLCBleHByZXNzaW9uQ29udGV4dCkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciB3aGlsZSBldmFsdWF0aW5nIGV4cHJlc3Npb24gJyR7ZXhwcmVzc2lvbn0nIGZvciAke2V4dGVuc2lvbi5pZH1gICsgKHNsb3ROYW1lID8gYCBpbiAke3Nsb3ROYW1lfWAgOiAnJyksIGUpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKipcbiAqIEdldHMgdGhlIGV4dGVuc2lvbnMgYSBnaXZlbiByZW5kZXJpbmcgb2YgYSBzbG90IHNob3VsZCBkaXNwbGF5LCBpbiBvcmRlci4gVGhpcyBpcyB0aGUgc3VwcG9ydGVkXG4gKiB3YXkgdG8gYXNrIHdoYXQgYmVsb25ncyBpbiBhIHNsb3Q7IHJlYWRpbmcgdGhlIGV4dGVuc2lvbiBzdG9yZSBkaXJlY3RseSBza2lwcyBkaXNwbGF5IGNvbmRpdGlvbnMuXG4gKlxuICogRGlzcGxheSBjb25kaXRpb25zIGFyZSBldmFsdWF0ZWQgYWdhaW5zdCBgc3RhdGVgLCBzbyBwYXNzIHdoYXRldmVyIHRoZSBzbG90IGlzIGJlaW5nIHJlbmRlcmVkXG4gKiBmb3IuIFRoZSBzYW1lIHNsb3QgY2FuIGJlIHJlbmRlcmVkIG1hbnkgdGltZXMgd2l0aCBkaWZmZXJlbnQgc3RhdGUg4oCUIG9uY2UgcGVyIHJvdyBvZiBhIHRhYmxlLFxuICogc2F5IOKAlCBhbmQgZWFjaCByZW5kZXJpbmcgY2FuIHJlc29sdmUgdG8gYSBkaWZmZXJlbnQgc2V0IG9mIGV4dGVuc2lvbnMuIE9taXR0aW5nIGBzdGF0ZWAgaGlkZXNcbiAqIGV2ZXJ5IGV4dGVuc2lvbiB3aG9zZSBjb25kaXRpb24gcmVmZXJzIHRvIGl0LCBzaW5jZSB0aGUgY29uZGl0aW9uIGNhbm5vdCBiZSBldmFsdWF0ZWQuXG4gKlxuICogQHBhcmFtIHNsb3ROYW1lIFRoZSBzbG90IHRvIGxvYWQgdGhlIGV4dGVuc2lvbnMgZm9yXG4gKiBAcGFyYW0gc3RhdGUgVGhlIHN0YXRlIG9mIHRoZSByZW5kZXJpbmcgb2YgdGhlIHNsb3QgdGhlIGV4dGVuc2lvbnMgd2lsbCBiZSBkaXNwbGF5ZWQgaW5cbiAqIEByZXR1cm5zIFRob3NlIGV4dGVuc2lvbnMgYXNzaWduZWQgdG8gdGhlIHNsb3Qgd2hvc2UgZGlzcGxheSBjb25kaXRpb25zIGhvbGRcbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0QXNzaWduZWRFeHRlbnNpb25zKHNsb3ROYW1lLCBzdGF0ZSkge1xuICAgIHJldHVybiBmaWx0ZXJFeHRlbnNpb25zQnlEaXNwbGF5Q29uZGl0aW9ucyhnZXRDYW5kaWRhdGVFeHRlbnNpb25zKHNsb3ROYW1lKSwgc3RhdGUsIHNlc3Npb25TdG9yZS5nZXRTdGF0ZSgpLnNlc3Npb24sIHNsb3ROYW1lKTtcbn1cbi8qKlxuICogR2V0cyBldmVyeXRoaW5nIGFzc2lnbmVkIHRvIGEgc2xvdCB3aXRob3V0IGV2YWx1YXRpbmcgYW55IGRpc3BsYXkgY29uZGl0aW9uLCB3aGljaFxuICoge0BsaW5rIGdldEFzc2lnbmVkRXh0ZW5zaW9uc30gY2Fubm90IGRvIHdpdGhvdXQga25vd2luZyB0aGUgc3RhdGUgb2YgYSBwYXJ0aWN1bGFyIHJlbmRlcmluZy5cbiAqXG4gKiBUaGlzIGV4aXN0cyBmb3IgdG9vbHMgdGhhdCBwcmVzZW50IGEgc2xvdCdzIGNvbmZpZ3VyYXRpb24gcmF0aGVyIHRoYW4gcmVuZGVyIGl0IOKAlCB0aGUgVUkgZWRpdG9yXG4gKiBoYXMgdG8gbGlzdCBhbiBleHRlbnNpb24gaW4gb3JkZXIgdG8gbGV0IGFuIGltcGxlbWVudGVyIHJlb3JkZXIgb3IgcmVtb3ZlIGl0LCBldmVuIHdoZXJlIG5vXG4gKiByZW5kZXJpbmcgd291bGQgZGlzcGxheSBpdC4gQW55dGhpbmcgZGVjaWRpbmcgd2hhdCB0byByZW5kZXIgd2FudHMgYGdldEFzc2lnbmVkRXh0ZW5zaW9ucygpYC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0Q2FuZGlkYXRlRXh0ZW5zaW9ucyhzbG90TmFtZSkge1xuICAgIHJldHVybiBleHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLnNsb3RzW3Nsb3ROYW1lXT8uY2FuZGlkYXRlRXh0ZW5zaW9ucyA/PyBbXTtcbn1cbmZ1bmN0aW9uIGNhbGN1bGF0ZUFzc2lnbmVkSWRzKGNvbmZpZywgYXR0YWNoZWRJZHMpIHtcbiAgICBjb25zdCBhZGRlZElkcyA9IGNvbmZpZy5hZGQgfHwgW107XG4gICAgY29uc3QgcmVtb3ZlZElkcyA9IGNvbmZpZy5yZW1vdmUgfHwgW107XG4gICAgY29uc3QgaWRPcmRlciA9IGNvbmZpZy5vcmRlciB8fCBbXTtcbiAgICBjb25zdCB7IGV4dGVuc2lvbnMgfSA9IGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICByZXR1cm4gW1xuICAgICAgICAuLi5hdHRhY2hlZElkcyxcbiAgICAgICAgLi4uYWRkZWRJZHNcbiAgICBdLmZpbHRlcigoaWQpPT4hcmVtb3ZlZElkcy5pbmNsdWRlcyhpZCkpLnNvcnQoKGlkQSwgaWRCKT0+e1xuICAgICAgICBjb25zdCBhaSA9IGdldE9yZGVyKGlkQSwgaWRPcmRlciwgZXh0ZW5zaW9uc1tnZXRFeHRlbnNpb25OYW1lRnJvbUlkKGlkQSldPy5vcmRlciwgYXR0YWNoZWRJZHMpO1xuICAgICAgICBjb25zdCBiaSA9IGdldE9yZGVyKGlkQiwgaWRPcmRlciwgZXh0ZW5zaW9uc1tnZXRFeHRlbnNpb25OYW1lRnJvbUlkKGlkQildPy5vcmRlciwgYXR0YWNoZWRJZHMpO1xuICAgICAgICAvLyBUaWVzIGtlZXAgdGhlaXIgaW5wdXQgb3JkZXIg4oCUIGBBcnJheS5wcm90b3R5cGUuc29ydGAgaXMgc3RhYmxlLCBhbmQgdGhlIGlucHV0IGlzXG4gICAgICAgIC8vIGBbLi4uYXR0YWNoZWRJZHMsIC4uLmFkZGVkSWRzXWAsIHNvIHR3byBleHRlbnNpb25zIHRoZSBvcmRlcmluZyBydWxlcyBjYW4ndCBzZXBhcmF0ZVxuICAgICAgICAvLyBjb21lIG91dCBpbiB0aGUgb3JkZXIgdGhlIGNvZGUgYW5kIHRoZSBjb25maWd1cmF0aW9uIGRlY2xhcmVkIHRoZW0uXG4gICAgICAgIHJldHVybiBhaSAtIGJpO1xuICAgIH0pO1xufVxuLyoqXG4gKiBVc2VkIGJ5IGJ5IGV4dGVuc2lvbiBzbG90cyBhdCBtb3VudCB0aW1lLlxuICpcbiAqIEBwYXJhbSBtb2R1bGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhhdCBjb250YWlucyB0aGUgZXh0ZW5zaW9uIHNsb3RcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgZXh0ZW5zaW9uIHNsb3QgbmFtZSB0aGF0IGlzIGFjdHVhbGx5IHVzZWRcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBjb25zdCByZWdpc3RlckV4dGVuc2lvblNsb3QgPSAobW9kdWxlTmFtZSwgc2xvdE5hbWUpPT5leHRlbnNpb25JbnRlcm5hbFN0b3JlLnNldFN0YXRlKChjdXJyZW50U3RhdGUpPT57XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nTW9kdWxlTmFtZSA9IGN1cnJlbnRTdGF0ZS5zbG90c1tzbG90TmFtZV0/Lm1vZHVsZU5hbWU7XG4gICAgICAgIGlmIChleGlzdGluZ01vZHVsZU5hbWUgJiYgZXhpc3RpbmdNb2R1bGVOYW1lICE9IG1vZHVsZU5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQW4gZXh0ZW5zaW9uIHNsb3Qgd2l0aCB0aGUgbmFtZSAnJHtzbG90TmFtZX0nIGFscmVhZHkgZXhpc3RzLiBSZWZ1c2luZyB0byByZWdpc3RlciB0aGUgc2FtZSBzbG90IG5hbWUgdHdpY2UgKGluIFwicmVnaXN0ZXJFeHRlbnNpb25TbG90XCIpLiBUaGUgZXhpc3Rpbmcgb25lIGlzIGZyb20gbW9kdWxlICR7ZXhpc3RpbmdNb2R1bGVOYW1lfS5gKTtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4aXN0aW5nTW9kdWxlTmFtZSAmJiBleGlzdGluZ01vZHVsZU5hbWUgPT0gbW9kdWxlTmFtZSkge1xuICAgICAgICAgICAgLy8gUmUtcmVuZGVyaW5nIGFuIGV4aXN0aW5nIHNsb3RcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZS5zbG90c1tzbG90TmFtZV0pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLFxuICAgICAgICAgICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5zbG90cyxcbiAgICAgICAgICAgICAgICAgICAgW3Nsb3ROYW1lXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLnNsb3RzW3Nsb3ROYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2xvdCA9IGNyZWF0ZU5ld0V4dGVuc2lvblNsb3RJbmZvKHNsb3ROYW1lLCBtb2R1bGVOYW1lKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZSxcbiAgICAgICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLnNsb3RzLFxuICAgICAgICAgICAgICAgIFtzbG90TmFtZV06IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc2xvdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9KTtcbi8qKlxuICogQGludGVybmFsXG4gKiBKdXN0IGZvciB0ZXN0aW5nLlxuICovIGV4cG9ydCBjb25zdCByZXNldCA9ICgpPT57XG4gICAgLy8gSW52YWxpZGF0aW9uIGlzIGNhcnJpZWQgaW4gbW9kdWxlIHN0YXRlLCBzbyBpdCBoYXMgdG8gYmUgcmVzZXQgdG9vIG9yIGl0IGJsZWVkcyBpbnRvIHRoZVxuICAgIC8vIG5leHQgdGVzdCBhcyBlaXRoZXIgYSBzdGFsZSBkaXJ0eSBzZXQgb3IgYSBtaXNzaW5nIG9uZS5cbiAgICBkaXJ0eVNsb3RzID0gbnVsbDtcbiAgICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKCgpPT4oe1xuICAgICAgICAgICAgc2xvdHM6IHt9LFxuICAgICAgICAgICAgZXh0ZW5zaW9uczoge31cbiAgICAgICAgfSkpO1xuICAgIGdldEV4dGVuc2lvblJlbmRlcmluZ3NTdG9yZSgpLnNldFN0YXRlKHtcbiAgICAgICAgcmVuZGVyaW5nczogbmV3IE1hcCgpXG4gICAgfSk7XG4gICAgZXh0ZW5zaW9uU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICBzbG90czoge31cbiAgICB9KTtcbn07XG4iXSwibmFtZXMiOlsic2Vzc2lvblN0b3JlIiwidXNlckhhc0FjY2VzcyIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21FeHRlbnNpb25TbG90U3RvcmUiLCJnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUiLCJnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlIiwiZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImV2YWx1YXRlQXNCb29sZWFuIiwiZmVhdHVyZUZsYWdzU3RvcmUiLCJzdWJzY3JpYmVDb25uZWN0aXZpdHlDaGFuZ2VkIiwiaXNPbmxpbmUiLCJpc09ubGluZUZuIiwiaXNFcXVhbCIsIm1lcmdlIiwiY2hlY2tTdGF0dXNGb3IiLCJnZXRFeHRlbnNpb25SZW5kZXJpbmdzU3RvcmUiLCJnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlIiwiZ2V0RXh0ZW5zaW9uU3RvcmUiLCJzY2hlZHVsZVJlY29tcHV0YXRpb24iLCJ1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlIiwiZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSIsImV4dGVuc2lvblN0b3JlIiwic2xvdHNDb25maWdTdG9yZSIsImV4dGVuc2lvbnNDb25maWdTdG9yZSIsImRpcnR5U2xvdHMiLCJTZXQiLCJpc1JlY29tcHV0aW5nT3V0cHV0U3RvcmUiLCJtYXJrU2xvdHNEaXJ0eSIsInNsb3RzIiwiX2l0ZXJhdG9yRXJyb3IiLCJzbG90TmFtZSIsInJlY29tcHV0ZUV4dGVuc2lvbk91dHB1dFN0b3JlIiwibWF4UmVjb21wdXRhdGlvblBhc3NlcyIsInBhc3MiLCJ1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZSIsImUiLCJjb25zb2xlIiwiaW50ZXJuYWxTdGF0ZSIsImV4dGVuc2lvblNsb3RDb25maWdzIiwiZXh0ZW5zaW9uc0NvbmZpZ1N0YXRlIiwiZmVhdHVyZUZsYWdTdGF0ZSIsInNlc3Npb25TdGF0ZSIsImRpcnR5U2xvdE5hbWVzIiwicHJldmlvdXNTbG90cyIsImNoYW5nZWQiLCJlbmFibGVkRmVhdHVyZUZsYWdzIiwiT2JqZWN0IiwiZW5hYmxlZCIsIm5hbWUiLCJzbG90IiwicHJldmlvdXMiLCJjb25maWciLCJjYW5kaWRhdGVFeHRlbnNpb25zIiwiZ2V0QXNzaWduZWRFeHRlbnNpb25zRnJvbVNsb3REYXRhIiwiY2hhbmdlZEtleXMiLCJuZXh0Iiwia2V5IiwiX2l0ZXJhdG9yRXJyb3IxIiwia2V5MSIsInN0YXRlIiwicHJldmlvdXNTdGF0ZSIsInVwZGF0ZU91dHB1dFN0b3JlVG9DdXJyZW50IiwiY3JlYXRlTmV3RXh0ZW5zaW9uU2xvdEluZm8iLCJtb2R1bGVOYW1lIiwiZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZCIsImV4dGVuc2lvbklkIiwiX2V4dGVuc2lvbklkX3NwbGl0IiwiZXh0ZW5zaW9uTmFtZSIsImdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbkZyb20iLCJnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24iLCJyZWdpc3RlckV4dGVuc2lvbiIsImV4dGVuc2lvblJlZ2lzdHJhdGlvbiIsImF0dGFjaCIsImV4aXN0aW5nU2xvdCIsImRldGFjaCIsImV4dGVuc2lvblNsb3ROYW1lIiwiaWQiLCJkZXRhY2hBbGwiLCJnZXRPcmRlciIsImNvbmZpZ3VyZWRPcmRlciIsInJlZ2lzdGVyZWRPcmRlckluZGV4IiwiYXR0YWNoZWRPcmRlciIsImNvbmZpZ3VyZWRJbmRleCIsInVuZGVmaW5lZCIsImFzc2lnbmVkSW5kZXgiLCJleHRlbnNpb25Db25maWdTdG9yZVN0YXRlIiwic2Vzc2lvbiIsImF0dGFjaGVkSWRzIiwiYXNzaWduZWRJZHMiLCJjYWxjdWxhdGVBc3NpZ25lZElkcyIsImV4dGVuc2lvbnMiLCJfZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlIiwicmF3RXh0ZW5zaW9uQ29uZmlnIiwicmF3RXh0ZW5zaW9uU2xvdEV4dGVuc2lvbkNvbmZpZyIsImV4dGVuc2lvbkNvbmZpZyIsImV4dGVuc2lvbiIsIl9yZWYiLCJfcmVmMiIsIl9yZWY0IiwiX2V4dGVuc2lvbkNvbmZpZ19EaXNwbGF5Y29uZGl0aW9uczMiLCJyZXF1aXJlZFByaXZpbGVnZXMiLCJBcnJheSIsIndpbmRvdyIsImZpbHRlckV4dGVuc2lvbnNCeURpc3BsYXlDb25kaXRpb25zIiwiZXhwcmVzc2lvbkNvbnRleHQiLCJleHByZXNzaW9uIiwiX3R5cGVfb2YiLCJCb29sZWFuIiwiZ2V0QXNzaWduZWRFeHRlbnNpb25zIiwiZ2V0Q2FuZGlkYXRlRXh0ZW5zaW9ucyIsIl9leHRlbnNpb25TdG9yZV9nZXRTdGF0ZV9zbG90c19zbG90TmFtZSIsImFkZGVkSWRzIiwicmVtb3ZlZElkcyIsImlkT3JkZXIiLCJpZEEiLCJpZEIiLCJfZXh0ZW5zaW9uc19nZXRFeHRlbnNpb25OYW1lRnJvbUlkIiwiX2V4dGVuc2lvbnNfZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZDEiLCJhaSIsImJpIiwicmVnaXN0ZXJFeHRlbnNpb25TbG90IiwiY3VycmVudFN0YXRlIiwiX2N1cnJlbnRTdGF0ZV9zbG90c19zbG90TmFtZSIsImV4aXN0aW5nTW9kdWxlTmFtZSIsInJlc2V0IiwiTWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FBRzs7Ozs7OztDQU9sQyxHQUFrRTtBQUNrSTtBQUMvSDtBQUNQO0FBQ0s7QUFDUjtBQUNqQjtBQUNHO0FBQzhHO0FBQzVKLElBQU1vQix5QkFBeUJKLHdEQUF5QkE7QUFDeEQsSUFBTUssaUJBQWlCSixnREFBaUJBO0FBQ3hDLElBQU1LLG1CQUFtQmpCLHFFQUE0QkE7QUFDckQsSUFBTWtCLHdCQUF3QmpCLGlFQUF3QkE7QUFDdEQ7Ozs7Q0FJQyxHQUFHLElBQUlrQixhQUFhLElBQUlDO0FBQ3pCLElBQUlDLDJCQUEyQjtBQUMvQixTQUFTQyxlQUFlQyxLQUFLO0lBQ3pCLElBQUlBLFVBQVUsTUFBTTtRQUNoQkosYUFBYTtJQUNqQixPQUFPLElBQUlBLGVBQWUsTUFBTTtZQUN2Qkssa0NBQUFBLDJCQUFBQTs7WUFBTCxRQUFL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\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/dist/extensions.js\n\n}");
5759
5759
 
5760
5760
  },
5761
5761
  "../../framework/esm-extensions/dist/helpers.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -5765,7 +5765,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
5765
5765
  },
5766
5766
  "../../framework/esm-extensions/dist/index.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5767
5767
  "use strict";
5768
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n attach: () => (/* reexport safe */ _extensions_js__rspack_import_0.attach),\n checkStatus: () => (/* reexport safe */ _helpers_js__rspack_import_1.checkStatus),\n checkStatusFor: () => (/* reexport safe */ _helpers_js__rspack_import_1.checkStatusFor),\n createParcelMounter: () => (/* reexport safe */ _render_js__rspack_import_6.createParcelMounter),\n detach: () => (/* reexport safe */ _extensions_js__rspack_import_0.detach),\n detachAll: () => (/* reexport safe */ _extensions_js__rspack_import_0.detachAll),\n getAssignedExtensions: () => (/* reexport safe */ _extensions_js__rspack_import_0.getAssignedExtensions),\n getExtensionInternalStore: () => (/* reexport safe */ _store_js__rspack_import_7.getExtensionInternalStore),\n getExtensionNameFromId: () => (/* reexport safe */ _extensions_js__rspack_import_0.getExtensionNameFromId),\n getExtensionRegistration: () => (/* reexport safe */ _extensions_js__rspack_import_0.getExtensionRegistration),\n getExtensionRegistrationFrom: () => (/* reexport safe */ _extensions_js__rspack_import_0.getExtensionRegistrationFrom),\n getExtensionStore: () => (/* reexport safe */ _store_js__rspack_import_7.getExtensionStore),\n getGroupByWindowName: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.getGroupByWindowName),\n getModalRegistration: () => (/* reexport safe */ _modals_js__rspack_import_3.getModalRegistration),\n getOpenedWindowIndexByWorkspace: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.getOpenedWindowIndexByWorkspace),\n getWindowByWorkspaceName: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.getWindowByWorkspaceName),\n getWorkspaceGroupRegistration: () => (/* reexport safe */ _workspaces_js__rspack_import_4.getWorkspaceGroupRegistration),\n getWorkspaceRegistration: () => (/* reexport safe */ _workspaces_js__rspack_import_4.getWorkspaceRegistration),\n leftNavStore: () => (/* reexport safe */ _left_nav_js__rspack_import_2.leftNavStore),\n registerExtension: () => (/* reexport safe */ _extensions_js__rspack_import_0.registerExtension),\n registerExtensionSlot: () => (/* reexport safe */ _extensions_js__rspack_import_0.registerExtensionSlot),\n registerModal: () => (/* reexport safe */ _modals_js__rspack_import_3.registerModal),\n registerWorkspace: () => (/* reexport safe */ _workspaces_js__rspack_import_4.registerWorkspace),\n registerWorkspaceGroup: () => (/* reexport safe */ _workspaces_js__rspack_import_4.registerWorkspaceGroup),\n registerWorkspaceGroups2: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.registerWorkspaceGroups2),\n registerWorkspaceWindows2: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.registerWorkspaceWindows2),\n registerWorkspaces2: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.registerWorkspaces2),\n renderExtension: () => (/* reexport safe */ _render_js__rspack_import_6.renderExtension),\n renderParcel: () => (/* reexport safe */ _render_js__rspack_import_6.renderParcel),\n reset: () => (/* reexport safe */ _extensions_js__rspack_import_0.reset),\n setLeftNav: () => (/* reexport safe */ _left_nav_js__rspack_import_2.setLeftNav),\n unsetLeftNav: () => (/* reexport safe */ _left_nav_js__rspack_import_2.unsetLeftNav),\n updateExtensionSlotState: () => (/* reexport safe */ _extensions_js__rspack_import_0.updateExtensionSlotState),\n updateInternalExtensionStore: () => (/* reexport safe */ _store_js__rspack_import_7.updateInternalExtensionStore),\n workspace2Store: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.workspace2Store)\n});\n/* import */ var _extensions_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-extensions/dist/extensions.js\");\n/* import */ var _helpers_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/helpers.js\");\n/* import */ var _left_nav_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-extensions/dist/left-nav.js\");\n/* import */ var _modals_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-extensions/dist/modals.js\");\n/* import */ var _workspaces_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-extensions/dist/workspaces.js\");\n/* import */ var _workspaces2_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-extensions/dist/workspaces2.js\");\n/* import */ var _render_js__rspack_import_6 = __webpack_require__(\"../../framework/esm-extensions/dist/render.js\");\n/* import */ var _store_js__rspack_import_7 = __webpack_require__(\"../../framework/esm-extensions/dist/store.js\");\n/* import */ var _types_js__rspack_import_8 = __webpack_require__(\"../../framework/esm-extensions/dist/types.js\");\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvZGlzdC9pbmRleC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL2Rpc3QvaW5kZXguanM/MjEwMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9leHRlbnNpb25zLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9oZWxwZXJzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sZWZ0LW5hdi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kYWxzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93b3Jrc3BhY2VzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93b3Jrc3BhY2VzMi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVuZGVyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMuanNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFnQztBQUNIO0FBQ0M7QUFDRjtBQUNJO0FBQ0M7QUFDTDtBQUNEO0FBQ0EifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/dist/index.js\n\n}");
5768
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n attach: () => (/* reexport safe */ _extensions_js__rspack_import_0.attach),\n batchExtensionUpdates: () => (/* reexport safe */ _store_js__rspack_import_7.batchExtensionUpdates),\n checkStatus: () => (/* reexport safe */ _helpers_js__rspack_import_1.checkStatus),\n checkStatusFor: () => (/* reexport safe */ _helpers_js__rspack_import_1.checkStatusFor),\n createParcelMounter: () => (/* reexport safe */ _render_js__rspack_import_6.createParcelMounter),\n detach: () => (/* reexport safe */ _extensions_js__rspack_import_0.detach),\n detachAll: () => (/* reexport safe */ _extensions_js__rspack_import_0.detachAll),\n getAssignedExtensions: () => (/* reexport safe */ _extensions_js__rspack_import_0.getAssignedExtensions),\n getCandidateExtensions: () => (/* reexport safe */ _extensions_js__rspack_import_0.getCandidateExtensions),\n getExtensionInternalStore: () => (/* reexport safe */ _store_js__rspack_import_7.getExtensionInternalStore),\n getExtensionNameFromId: () => (/* reexport safe */ _extensions_js__rspack_import_0.getExtensionNameFromId),\n getExtensionRegistration: () => (/* reexport safe */ _extensions_js__rspack_import_0.getExtensionRegistration),\n getExtensionRegistrationFrom: () => (/* reexport safe */ _extensions_js__rspack_import_0.getExtensionRegistrationFrom),\n getExtensionRenderingsStore: () => (/* reexport safe */ _store_js__rspack_import_7.getExtensionRenderingsStore),\n getExtensionStore: () => (/* reexport safe */ _store_js__rspack_import_7.getExtensionStore),\n getGroupByWindowName: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.getGroupByWindowName),\n getModalRegistration: () => (/* reexport safe */ _modals_js__rspack_import_3.getModalRegistration),\n getOpenedWindowIndexByWorkspace: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.getOpenedWindowIndexByWorkspace),\n getWindowByWorkspaceName: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.getWindowByWorkspaceName),\n getWorkspaceGroupRegistration: () => (/* reexport safe */ _workspaces_js__rspack_import_4.getWorkspaceGroupRegistration),\n getWorkspaceRegistration: () => (/* reexport safe */ _workspaces_js__rspack_import_4.getWorkspaceRegistration),\n leftNavStore: () => (/* reexport safe */ _left_nav_js__rspack_import_2.leftNavStore),\n registerExtension: () => (/* reexport safe */ _extensions_js__rspack_import_0.registerExtension),\n registerExtensionRendering: () => (/* reexport safe */ _store_js__rspack_import_7.registerExtensionRendering),\n registerExtensionSlot: () => (/* reexport safe */ _extensions_js__rspack_import_0.registerExtensionSlot),\n registerModal: () => (/* reexport safe */ _modals_js__rspack_import_3.registerModal),\n registerWorkspace: () => (/* reexport safe */ _workspaces_js__rspack_import_4.registerWorkspace),\n registerWorkspaceGroup: () => (/* reexport safe */ _workspaces_js__rspack_import_4.registerWorkspaceGroup),\n registerWorkspaceGroups2: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.registerWorkspaceGroups2),\n registerWorkspaceWindows2: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.registerWorkspaceWindows2),\n registerWorkspaces2: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.registerWorkspaces2),\n renderExtension: () => (/* reexport safe */ _render_js__rspack_import_6.renderExtension),\n renderParcel: () => (/* reexport safe */ _render_js__rspack_import_6.renderParcel),\n reset: () => (/* reexport safe */ _extensions_js__rspack_import_0.reset),\n scheduleRecomputation: () => (/* reexport safe */ _store_js__rspack_import_7.scheduleRecomputation),\n setLeftNav: () => (/* reexport safe */ _left_nav_js__rspack_import_2.setLeftNav),\n unregisterExtensionRendering: () => (/* reexport safe */ _store_js__rspack_import_7.unregisterExtensionRendering),\n unsetLeftNav: () => (/* reexport safe */ _left_nav_js__rspack_import_2.unsetLeftNav),\n updateInternalExtensionStore: () => (/* reexport safe */ _store_js__rspack_import_7.updateInternalExtensionStore),\n workspace2Store: () => (/* reexport safe */ _workspaces2_js__rspack_import_5.workspace2Store)\n});\n/* import */ var _extensions_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-extensions/dist/extensions.js\");\n/* import */ var _helpers_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/helpers.js\");\n/* import */ var _left_nav_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-extensions/dist/left-nav.js\");\n/* import */ var _modals_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-extensions/dist/modals.js\");\n/* import */ var _workspaces_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-extensions/dist/workspaces.js\");\n/* import */ var _workspaces2_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-extensions/dist/workspaces2.js\");\n/* import */ var _render_js__rspack_import_6 = __webpack_require__(\"../../framework/esm-extensions/dist/render.js\");\n/* import */ var _store_js__rspack_import_7 = __webpack_require__(\"../../framework/esm-extensions/dist/store.js\");\n/* import */ var _types_js__rspack_import_8 = __webpack_require__(\"../../framework/esm-extensions/dist/types.js\");\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvZGlzdC9pbmRleC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL2Rpc3QvaW5kZXguanM/MjEwMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9leHRlbnNpb25zLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9oZWxwZXJzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sZWZ0LW5hdi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kYWxzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93b3Jrc3BhY2VzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93b3Jrc3BhY2VzMi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVuZGVyLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMuanNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWdDO0FBQ0g7QUFDQztBQUNGO0FBQ0k7QUFDQztBQUNMO0FBQ0Q7QUFDQSJ9\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/dist/index.js\n\n}");
5769
5769
 
5770
5770
  },
5771
5771
  "../../framework/esm-extensions/dist/left-nav.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -5780,12 +5780,12 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
5780
5780
  },
5781
5781
  "../../framework/esm-extensions/dist/render.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5782
5782
  "use strict";
5783
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n createParcelMounter: () => (createParcelMounter),\n renderExtension: () => (renderExtension),\n renderParcel: () => (renderParcel)\n});\n/* import */ var single_spa__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/single-spa/single-spa\");\n/* import */ var single_spa__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(single_spa__rspack_import_0);\n/* import */ var _extensions_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/extensions.js\");\n/* import */ var _helpers_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-extensions/dist/helpers.js\");\n/* import */ var _store_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-extensions/dist/store.js\");\nfunction _array_like_to_array(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 _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(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 _async_to_generator(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 _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\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(g && (g = 0, op[0] && (_ = 0)), _)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/** @module @category Extension */ \n\n\n\nvar parcelCount = 0;\nvar parcelMounter = null;\n/**\n * Resolves the function used to mount extensions, which is the `mountParcel()` of a long-lived\n * parcel of our own rather than single-spa's `mountRootParcel()`.\n *\n * single-spa only removes a parcel from its owner's registry when it unmounts if that owner has a\n * name, and the internal object backing `mountRootParcel()` has none (fixed in single-spa 7).\n * Anything mounted with it is therefore retained for the lifetime of the page, along with the\n * `domElement` it was given and the whole subtree rendered into it. Extensions mounted through a\n * named owner are pruned as they should be.\n *\n * The host parcel is mounted at most once, lazily, and never unmounted; if mounting it fails we\n * fall back to `mountRootParcel()`, since leaking is better than not rendering.\n */ function getParcelMounter() {\n parcelMounter !== null && parcelMounter !== void 0 ? parcelMounter : parcelMounter = new Promise(function(resolve, reject) {\n var host = (0,single_spa__rspack_import_0.mountRootParcel)({\n name: 'openmrs-extension-host',\n bootstrap: function bootstrap() {\n return Promise.resolve();\n },\n mount: function mount(props) {\n // single-spa types a parcel's lifecycle props as only the custom props it was mounted\n // with, but they also carry the props single-spa itself injects, `mountParcel` included.\n resolve(props.mountParcel);\n return Promise.resolve();\n },\n unmount: function unmount() {\n return Promise.resolve();\n }\n }, {\n domElement: document.createElement('div')\n });\n host.mountPromise.catch(reject);\n }).catch(function(err) {\n console.error('The host parcel used to mount extensions could not be mounted. Falling back to mounting ' + 'extensions as root parcels, which leaks their DOM elements.', err);\n return single_spa__rspack_import_0.mountRootParcel;\n });\n return parcelMounter;\n}\n/**\n * Mounts a parcel through the framework's host parcel, which lets single-spa release the parcel,\n * its `domElement` and everything rendered into it once it unmounts. Prefer this to single-spa's\n * `mountRootParcel()`, which retains all three for the lifetime of the page.\n *\n * @param parcelConfig The parcel config, or a function that loads one\n * @param customProps The props to mount the parcel with, including the `domElement` to render into\n * @returns The parcel handle; mounting completes with its `mountPromise`\n */ function renderParcel(parcelConfig, customProps) {\n return _async_to_generator(function() {\n var mountParcel;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n getParcelMounter()\n ];\n case 1:\n mountParcel = _state.sent();\n return [\n 2,\n mountParcel(parcelConfig, customProps)\n ];\n }\n });\n })();\n}\n/**\n * Provides the equivalent of {@link renderParcel} for callers that need a `mountParcel()` they can\n * call synchronously, single-spa-react's `<Parcel mountParcel={...} />` being the usual case.\n *\n * The parcel it returns is a stand-in until the real one exists, so its `getStatus()` reports\n * `LOADING_SOURCE_CODE` rather than the real status for a short while after mounting. Prefer\n * {@link renderParcel} wherever the caller can await it.\n *\n * @returns A `mountParcel()` that mounts through the host parcel\n */ function createParcelMounter() {\n return mountParcel;\n}\n/**\n * Adapts the asynchronous `renderParcel()` to single-spa's synchronous `mountParcel()` signature,\n * by returning an object that stands in for the parcel and forwards each call to the real one once\n * it resolves. A caller that serialises its calls on `mountPromise`, as single-spa-react's\n * `<Parcel>` does, never observes the stand-in; one that doesn't sees `getStatus()` report\n * `LOADING_SOURCE_CODE` until the parcel is mounted, and an unmounted parcel's `update()` and\n * `unmount()` deferred rather than rejected.\n */ function mountParcel(config, props) {\n var mounted;\n var pending = renderParcel(config, props).then(function(parcel) {\n return mounted = parcel;\n });\n return {\n mount: function mount() {\n return pending.then(function(parcel) {\n return parcel.mount();\n });\n },\n unmount: function unmount() {\n return pending.then(function(parcel) {\n return parcel.unmount();\n });\n },\n update: function update(customProps) {\n return pending.then(function(parcel) {\n var _parcel_update;\n return (_parcel_update = parcel.update) === null || _parcel_update === void 0 ? void 0 : _parcel_update.call(parcel, customProps);\n });\n },\n getStatus: function getStatus() {\n var _ref;\n return (_ref = mounted === null || mounted === void 0 ? void 0 : mounted.getStatus()) !== null && _ref !== void 0 ? _ref : 'LOADING_SOURCE_CODE';\n },\n // Derived lazily so a mount failure surfaces only on the promise the caller actually reads,\n // instead of becoming an unhandled rejection on the ones it ignores.\n get loadPromise () {\n return pending.then(function(parcel) {\n return parcel.loadPromise;\n });\n },\n get bootstrapPromise () {\n return pending.then(function(parcel) {\n return parcel.bootstrapPromise;\n });\n },\n get mountPromise () {\n return pending.then(function(parcel) {\n return parcel.mountPromise;\n });\n },\n get unmountPromise () {\n return pending.then(function(parcel) {\n return parcel.unmountPromise;\n });\n }\n };\n}\n/**\n * Mounts into a DOM node (representing an extension slot)\n * a lazy-loaded component from *any* frontend module\n * that registered an extension component for this slot.\n */ function renderExtension(_0, _1, _2, _3) {\n return _async_to_generator(function(domElement, extensionSlotName, extensionSlotModuleName, extensionId) {\n var renderFunction, additionalProps, extensionName, extensionRegistration, parcel, meta, moduleName, online, offline, load, lifecycle, id;\n var _arguments = arguments;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n renderFunction = _arguments.length > 4 && _arguments[4] !== void 0 ? _arguments[4] : function(x) {\n return x;\n }, additionalProps = _arguments.length > 5 && _arguments[5] !== void 0 ? _arguments[5] : {};\n extensionName = (0,_extensions_js__rspack_import_1.getExtensionNameFromId)(extensionId);\n extensionRegistration = (0,_extensions_js__rspack_import_1.getExtensionRegistration)(extensionId);\n parcel = null;\n if (!domElement) return [\n 3,\n 4\n ];\n if (!extensionRegistration) {\n throw Error(\"Couldn't find extension '\".concat(extensionName, \"' to attach to '\").concat(extensionSlotName, \"'\"));\n }\n meta = extensionRegistration.meta, moduleName = extensionRegistration.moduleName, online = extensionRegistration.online, offline = extensionRegistration.offline, load = extensionRegistration.load;\n if (!(0,_helpers_js__rspack_import_2.checkStatus)(online, offline)) return [\n 3,\n 3\n ];\n (0,_store_js__rspack_import_3.updateInternalExtensionStore)(function(state) {\n var instance = {\n domElement: domElement,\n id: extensionId,\n slotName: extensionSlotName,\n slotModuleName: extensionSlotModuleName\n };\n return _object_spread_props(_object_spread({}, state), {\n extensions: _object_spread_props(_object_spread({}, state.extensions), _define_property({}, extensionName, _object_spread_props(_object_spread({}, state.extensions[extensionName]), {\n instances: _to_consumable_array(state.extensions[extensionName].instances).concat([\n instance\n ])\n })))\n });\n });\n return [\n 4,\n load()\n ];\n case 1:\n lifecycle = _state.sent();\n id = parcelCount++;\n return [\n 4,\n renderParcel(renderFunction(_object_spread_props(_object_spread({}, lifecycle), {\n name: \"\".concat(extensionSlotName, \"/\").concat(extensionName, \"-\").concat(id)\n })), _object_spread_props(_object_spread({}, additionalProps), {\n _meta: meta,\n _extensionContext: {\n extensionId: extensionId,\n extensionSlotName: extensionSlotName,\n extensionSlotModuleName: extensionSlotModuleName,\n extensionModuleName: moduleName\n },\n domElement: domElement\n }))\n ];\n case 2:\n parcel = _state.sent();\n _state.label = 3;\n case 3:\n return [\n 3,\n 5\n ];\n case 4:\n console.warn(\"Tried to render \".concat(extensionId, \" into \").concat(extensionSlotName, \" but no DOM element was available.\"));\n _state.label = 5;\n case 5:\n return [\n 2,\n parcel\n ];\n }\n });\n }).apply(this, arguments);\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvZGlzdC9yZW5kZXIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tZXh0ZW5zaW9ucy9kaXN0L3JlbmRlci5qcz9lZTE3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBFeHRlbnNpb24gKi8gaW1wb3J0IHsgbW91bnRSb290UGFyY2VsIH0gZnJvbSBcInNpbmdsZS1zcGFcIjtcbmltcG9ydCB7IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQsIGdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbiB9IGZyb20gXCIuL2V4dGVuc2lvbnMuanNcIjtcbmltcG9ydCB7IGNoZWNrU3RhdHVzIH0gZnJvbSBcIi4vaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSB9IGZyb20gXCIuL3N0b3JlLmpzXCI7XG5sZXQgcGFyY2VsQ291bnQgPSAwO1xubGV0IHBhcmNlbE1vdW50ZXIgPSBudWxsO1xuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZnVuY3Rpb24gdXNlZCB0byBtb3VudCBleHRlbnNpb25zLCB3aGljaCBpcyB0aGUgYG1vdW50UGFyY2VsKClgIG9mIGEgbG9uZy1saXZlZFxuICogcGFyY2VsIG9mIG91ciBvd24gcmF0aGVyIHRoYW4gc2luZ2xlLXNwYSdzIGBtb3VudFJvb3RQYXJjZWwoKWAuXG4gKlxuICogc2luZ2xlLXNwYSBvbmx5IHJlbW92ZXMgYSBwYXJjZWwgZnJvbSBpdHMgb3duZXIncyByZWdpc3RyeSB3aGVuIGl0IHVubW91bnRzIGlmIHRoYXQgb3duZXIgaGFzIGFcbiAqIG5hbWUsIGFuZCB0aGUgaW50ZXJuYWwgb2JqZWN0IGJhY2tpbmcgYG1vdW50Um9vdFBhcmNlbCgpYCBoYXMgbm9uZSAoZml4ZWQgaW4gc2luZ2xlLXNwYSA3KS5cbiAqIEFueXRoaW5nIG1vdW50ZWQgd2l0aCBpdCBpcyB0aGVyZWZvcmUgcmV0YWluZWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcGFnZSwgYWxvbmcgd2l0aCB0aGVcbiAqIGBkb21FbGVtZW50YCBpdCB3YXMgZ2l2ZW4gYW5kIHRoZSB3aG9sZSBzdWJ0cmVlIHJlbmRlcmVkIGludG8gaXQuIEV4dGVuc2lvbnMgbW91bnRlZCB0aHJvdWdoIGFcbiAqIG5hbWVkIG93bmVyIGFyZSBwcnVuZWQgYXMgdGhleSBzaG91bGQgYmUuXG4gKlxuICogVGhlIGhvc3QgcGFyY2VsIGlzIG1vdW50ZWQgYXQgbW9zdCBvbmNlLCBsYXppbHksIGFuZCBuZXZlciB1bm1vdW50ZWQ7IGlmIG1vdW50aW5nIGl0IGZhaWxzIHdlXG4gKiBmYWxsIGJhY2sgdG8gYG1vdW50Um9vdFBhcmNlbCgpYCwgc2luY2UgbGVha2luZyBpcyBiZXR0ZXIgdGhhbiBub3QgcmVuZGVyaW5nLlxuICovIGZ1bmN0aW9uIGdldFBhcmNlbE1vdW50ZXIoKSB7XG4gICAgcGFyY2VsTW91bnRlciA/PyAocGFyY2VsTW91bnRlciA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGNvbnN0IGhvc3QgPSBtb3VudFJvb3RQYXJjZWwoe1xuICAgICAgICAgICAgbmFtZTogJ29wZW5tcnMtZXh0ZW5zaW9uLWhvc3QnLFxuICAgICAgICAgICAgYm9vdHN0cmFwOiAoKT0+UHJvbWlzZS5yZXNvbHZlKCksXG4gICAgICAgICAgICBtb3VudDogKHByb3BzKT0+e1xuICAgICAgICAgICAgICAgIC8vIHNpbmdsZS1zcGEgdHlwZXMgYSBwYXJjZWwncyBsaWZlY3ljbGUgcHJvcHMgYXMgb25seSB0aGUgY3VzdG9tIHByb3BzIGl0IHdhcyBtb3VudGVkXG4gICAgICAgICAgICAgICAgLy8gd2l0aCwgYnV0IHRoZXkgYWxzbyBjYXJyeSB0aGUgcHJvcHMgc2luZ2xlLXNwYSBpdHNlbGYgaW5qZWN0cywgYG1vdW50UGFyY2VsYCBpbmNsdWRlZC5cbiAgICAgICAgICAgICAgICByZXNvbHZlKHByb3BzLm1vdW50UGFyY2VsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5tb3VudDogKCk9PlByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGRvbUVsZW1lbnQ6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgICAgIH0pO1xuICAgICAgICBob3N0Lm1vdW50UHJvbWlzZS5jYXRjaChyZWplY3QpO1xuICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBob3N0IHBhcmNlbCB1c2VkIHRvIG1vdW50IGV4dGVuc2lvbnMgY291bGQgbm90IGJlIG1vdW50ZWQuIEZhbGxpbmcgYmFjayB0byBtb3VudGluZyAnICsgJ2V4dGVuc2lvbnMgYXMgcm9vdCBwYXJjZWxzLCB3aGljaCBsZWFrcyB0aGVpciBET00gZWxlbWVudHMuJywgZXJyKTtcbiAgICAgICAgcmV0dXJuIG1vdW50Um9vdFBhcmNlbDtcbiAgICB9KSk7XG4gICAgcmV0dXJuIHBhcmNlbE1vdW50ZXI7XG59XG4vKipcbiAqIE1vdW50cyBhIHBhcmNlbCB0aHJvdWdoIHRoZSBmcmFtZXdvcmsncyBob3N0IHBhcmNlbCwgd2hpY2ggbGV0cyBzaW5nbGUtc3BhIHJlbGVhc2UgdGhlIHBhcmNlbCxcbiAqIGl0cyBgZG9tRWxlbWVudGAgYW5kIGV2ZXJ5dGhpbmcgcmVuZGVyZWQgaW50byBpdCBvbmNlIGl0IHVubW91bnRzLiBQcmVmZXIgdGhpcyB0byBzaW5nbGUtc3BhJ3NcbiAqIGBtb3VudFJvb3RQYXJjZWwoKWAsIHdoaWNoIHJldGFpbnMgYWxsIHRocmVlIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHBhZ2UuXG4gKlxuICogQHBhcmFtIHBhcmNlbENvbmZpZyBUaGUgcGFyY2VsIGNvbmZpZywgb3IgYSBmdW5jdGlvbiB0aGF0IGxvYWRzIG9uZVxuICogQHBhcmFtIGN1c3RvbVByb3BzIFRoZSBwcm9wcyB0byBtb3VudCB0aGUgcGFyY2VsIHdpdGgsIGluY2x1ZGluZyB0aGUgYGRvbUVsZW1lbnRgIHRvIHJlbmRlciBpbnRvXG4gKiBAcmV0dXJucyBUaGUgcGFyY2VsIGhhbmRsZTsgbW91bnRpbmcgY29tcGxldGVzIHdpdGggaXRzIGBtb3VudFByb21pc2VgXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhcmNlbChwYXJjZWxDb25maWcsIGN1c3RvbVByb3BzKSB7XG4gICAgY29uc3QgbW91bnRQYXJjZWwgPSBhd2FpdCBnZXRQYXJjZWxNb3VudGVyKCk7XG4gICAgcmV0dXJuIG1vdW50UGFyY2VsKHBhcmNlbENvbmZpZywgY3VzdG9tUHJvcHMpO1xufVxuLyoqXG4gKiBQcm92aWRlcyB0aGUgZXF1aXZhbGVudCBvZiB7QGxpbmsgcmVuZGVyUGFyY2VsfSBmb3IgY2FsbGVycyB0aGF0IG5lZWQgYSBgbW91bnRQYXJjZWwoKWAgdGhleSBjYW5cbiAqIGNhbGwgc3luY2hyb25vdXNseSwgc2luZ2xlLXNwYS1yZWFjdCdzIGA8UGFyY2VsIG1vdW50UGFyY2VsPXsuLi59IC8+YCBiZWluZyB0aGUgdXN1YWwgY2FzZS5cbiAqXG4gKiBUaGUgcGFyY2VsIGl0IHJldHVybnMgaXMgYSBzdGFuZC1pbiB1bnRpbCB0aGUgcmVhbCBvbmUgZXhpc3RzLCBzbyBpdHMgYGdldFN0YXR1cygpYCByZXBvcnRzXG4gKiBgTE9BRElOR19TT1VSQ0VfQ09ERWAgcmF0aGVyIHRoYW4gdGhlIHJlYWwgc3RhdHVzIGZvciBhIHNob3J0IHdoaWxlIGFmdGVyIG1vdW50aW5nLiBQcmVmZXJcbiAqIHtAbGluayByZW5kZXJQYXJjZWx9IHdoZXJldmVyIHRoZSBjYWxsZXIgY2FuIGF3YWl0IGl0LlxuICpcbiAqIEByZXR1cm5zIEEgYG1vdW50UGFyY2VsKClgIHRoYXQgbW91bnRzIHRocm91Z2ggdGhlIGhvc3QgcGFyY2VsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhcmNlbE1vdW50ZXIoKSB7XG4gICAgcmV0dXJuIG1vdW50UGFyY2VsO1xufVxuLyoqXG4gKiBBZGFwdHMgdGhlIGFzeW5jaHJvbm91cyBgcmVuZGVyUGFyY2VsKClgIHRvIHNpbmdsZS1zcGEncyBzeW5jaHJvbm91cyBgbW91bnRQYXJjZWwoKWAgc2lnbmF0dXJlLFxuICogYnkgcmV0dXJuaW5nIGFuIG9iamVjdCB0aGF0IHN0YW5kcyBpbiBmb3IgdGhlIHBhcmNlbCBhbmQgZm9yd2FyZHMgZWFjaCBjYWxsIHRvIHRoZSByZWFsIG9uZSBvbmNlXG4gKiBpdCByZXNvbHZlcy4gQSBjYWxsZXIgdGhhdCBzZXJpYWxpc2VzIGl0cyBjYWxscyBvbiBgbW91bnRQcm9taXNlYCwgYXMgc2luZ2xlLXNwYS1yZWFjdCdzXG4gKiBgPFBhcmNlbD5gIGRvZXMsIG5ldmVyIG9ic2VydmVzIHRoZSBzdGFuZC1pbjsgb25lIHRoYXQgZG9lc24ndCBzZWVzIGBnZXRTdGF0dXMoKWAgcmVwb3J0XG4gKiBgTE9BRElOR19TT1VSQ0VfQ09ERWAgdW50aWwgdGhlIHBhcmNlbCBpcyBtb3VudGVkLCBhbmQgYW4gdW5tb3VudGVkIHBhcmNlbCdzIGB1cGRhdGUoKWAgYW5kXG4gKiBgdW5tb3VudCgpYCBkZWZlcnJlZCByYXRoZXIgdGhhbiByZWplY3RlZC5cbiAqLyBmdW5jdGlvbiBtb3VudFBhcmNlbChjb25maWcsIHByb3BzKSB7XG4gICAgbGV0IG1vdW50ZWQ7XG4gICAgY29uc3QgcGVuZGluZyA9IHJlbmRlclBhcmNlbChjb25maWcsIHByb3BzKS50aGVuKChwYXJjZWwpPT5tb3VudGVkID0gcGFyY2VsKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtb3VudDogKCk9PnBlbmRpbmcudGhlbigocGFyY2VsKT0+cGFyY2VsLm1vdW50KCkpLFxuICAgICAgICB1bm1vdW50OiAoKT0+cGVuZGluZy50aGVuKChwYXJjZWwpPT5wYXJjZWwudW5tb3VudCgpKSxcbiAgICAgICAgdXBkYXRlOiAoY3VzdG9tUHJvcHMpPT5wZW5kaW5nLnRoZW4oKHBhcmNlbCk9PnBhcmNlbC51cGRhdGU/LihjdXN0b21Qcm9wcykpLFxuICAgICAgICBnZXRTdGF0dXM6ICgpPT5tb3VudGVkPy5nZXRTdGF0dXMoKSA/PyAnTE9BRElOR19TT1VSQ0VfQ09ERScsXG4gICAgICAgIC8vIERlcml2ZWQgbGF6aWx5IHNvIGEgbW91bnQgZmFpbHVyZSBzdXJmYWNlcyBvbmx5IG9uIHRoZSBwcm9taXNlIHRoZSBjYWxsZXIgYWN0dWFsbHkgcmVhZHMsXG4gICAgICAgIC8vIGluc3RlYWQgb2YgYmVjb21pbmcgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiBvbiB0aGUgb25lcyBpdCBpZ25vcmVzLlxuICAgICAgICBnZXQgbG9hZFByb21pc2UgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmcudGhlbigocGFyY2VsKT0+cGFyY2VsLmxvYWRQcm9taXNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJvb3RzdHJhcFByb21pc2UgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmcudGhlbigocGFyY2VsKT0+cGFyY2VsLmJvb3RzdHJhcFByb21pc2UpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgbW91bnRQcm9taXNlICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwZW5kaW5nLnRoZW4oKHBhcmNlbCk9PnBhcmNlbC5tb3VudFByb21pc2UpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdW5tb3VudFByb21pc2UgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmcudGhlbigocGFyY2VsKT0+cGFyY2VsLnVubW91bnRQcm9taXNlKTtcbiAgICAgICAgfVxuICAgIH07XG59XG4vKipcbiAqIE1vdW50cyBpbnRvIGEgRE9NIG5vZGUgKHJlcHJlc2VudGluZyBhbiBleHRlbnNpb24gc2xvdClcbiAqIGEgbGF6eS1sb2FkZWQgY29tcG9uZW50IGZyb20gKmFueSogZnJvbnRlbmQgbW9kdWxlXG4gKiB0aGF0IHJlZ2lzdGVyZWQgYW4gZXh0ZW5zaW9uIGNvbXBvbmVudCBmb3IgdGhpcyBzbG90LlxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJFeHRlbnNpb24oZG9tRWxlbWVudCwgZXh0ZW5zaW9uU2xvdE5hbWUsIGV4dGVuc2lvblNsb3RNb2R1bGVOYW1lLCBleHRlbnNpb25JZCwgcmVuZGVyRnVuY3Rpb24gPSAoeCk9PngsIGFkZGl0aW9uYWxQcm9wcyA9IHt9KSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uTmFtZSA9IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpO1xuICAgIGNvbnN0IGV4dGVuc2lvblJlZ2lzdHJhdGlvbiA9IGdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbihleHRlbnNpb25JZCk7XG4gICAgbGV0IHBhcmNlbCA9IG51bGw7XG4gICAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCFleHRlbnNpb25SZWdpc3RyYXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBDb3VsZG4ndCBmaW5kIGV4dGVuc2lvbiAnJHtleHRlbnNpb25OYW1lfScgdG8gYXR0YWNoIHRvICcke2V4dGVuc2lvblNsb3ROYW1lfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG1ldGEsIG1vZHVsZU5hbWUsIG9ubGluZSwgb2ZmbGluZSwgbG9hZCB9ID0gZXh0ZW5zaW9uUmVnaXN0cmF0aW9uO1xuICAgICAgICBpZiAoY2hlY2tTdGF0dXMob25saW5lLCBvZmZsaW5lKSkge1xuICAgICAgICAgICAgdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSgoc3RhdGUpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGlkOiBleHRlbnNpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgc2xvdE5hbWU6IGV4dGVuc2lvblNsb3ROYW1lLFxuICAgICAgICAgICAgICAgICAgICBzbG90TW9kdWxlTmFtZTogZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5leHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVuc2lvbk5hbWVdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUuZXh0ZW5zaW9uc1tleHRlbnNpb25OYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUuZXh0ZW5zaW9uc1tleHRlbnNpb25OYW1lXS5pbnN0YW5jZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgbGlmZWN5Y2xlID0gYXdhaXQgbG9hZCgpO1xuICAgICAgICAgICAgY29uc3QgaWQgPSBwYXJjZWxDb3VudCsrO1xuICAgICAgICAgICAgcGFyY2VsID0gYXdhaXQgcmVuZGVyUGFyY2VsKHJlbmRlckZ1bmN0aW9uKHtcbiAgICAgICAgICAgICAgICAuLi5saWZlY3ljbGUsXG4gICAgICAgICAgICAgICAgbmFtZTogYCR7ZXh0ZW5zaW9uU2xvdE5hbWV9LyR7ZXh0ZW5zaW9uTmFtZX0tJHtpZH1gXG4gICAgICAgICAgICB9KSwge1xuICAgICAgICAgICAgICAgIC4uLmFkZGl0aW9uYWxQcm9wcyxcbiAgICAgICAgICAgICAgICBfbWV0YTogbWV0YSxcbiAgICAgICAgICAgICAgICBfZXh0ZW5zaW9uQ29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uU2xvdE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvblNsb3RNb2R1bGVOYW1lLFxuICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25Nb2R1bGVOYW1lOiBtb2R1bGVOYW1lXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkb21FbGVtZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVHJpZWQgdG8gcmVuZGVyICR7ZXh0ZW5zaW9uSWR9IGludG8gJHtleHRlbnNpb25TbG90TmFtZX0gYnV0IG5vIERPTSBlbGVtZW50IHdhcyBhdmFpbGFibGUuYCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJjZWw7XG59XG4iXSwibmFtZXMiOlsibW91bnRSb290UGFyY2VsIiwiZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZCIsImdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbiIsImNoZWNrU3RhdHVzIiwidXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSIsInBhcmNlbENvdW50IiwicGFyY2VsTW91bnRlciIsImdldFBhcmNlbE1vdW50ZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImhvc3QiLCJib290c3RyYXAiLCJtb3VudCIsInByb3BzIiwidW5tb3VudCIsImRvY3VtZW50IiwiZXJyIiwiY29uc29sZSIsInJlbmRlclBhcmNlbCIsInBhcmNlbENvbmZpZyIsImN1c3RvbVByb3BzIiwibW91bnRQYXJjZWwiLCJjcmVhdGVQYXJjZWxNb3VudGVyIiwiY29uZmlnIiwibW91bnRlZCIsInBlbmRpbmciLCJwYXJjZWwiLCJ1cGRhdGUiLCJnZXRTdGF0dXMiLCJyZW5kZXJFeHRlbnNpb24iLCJkb21FbGVtZW50IiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJleHRlbnNpb25TbG90TW9kdWxlTmFtZSIsImV4dGVuc2lvbklkIiwicmVuZGVyRnVuY3Rpb24iLCJhZGRpdGlvbmFsUHJvcHMiLCJleHRlbnNpb25OYW1lIiwiZXh0ZW5zaW9uUmVnaXN0cmF0aW9uIiwibWV0YSIsIm1vZHVsZU5hbWUiLCJvbmxpbmUiLCJvZmZsaW5lIiwibG9hZCIsImxpZmVjeWNsZSIsImlkIiwieCIsIkVycm9yIiwic3RhdGUiLCJpbnN0YW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDLEdBQWdEO0FBQ0c7QUFDeEM7QUFDZTtBQUMxRCxJQUFJSyxjQUFjO0FBQ2xCLElBQUlDLGdCQUFnQjtBQUNwQjs7Ozs7Ozs7Ozs7O0NBWUMsR0FBRyxTQUFTQztJQUNURCwwQkFBQUEsMkJBQUFBLGdCQUFrQkEsZ0JBQWdCLElBQUlFLFFBQVEsU0FBQ0MsU0FBU0M7UUFDcEQsSUFBTUMsT0FBT1gsK0NBQWVBLENBQUM7WUFDekIsTUFBTTtZQUNOWSxXQUFXLFNBQVhBO3VCQUFlSixRQUFRLE9BQU87O1lBQzlCSyxPQUFPLFNBQVBBLE1BQVFDO2dCQUNKLHNGQUFzRjtnQkFDdEYseUZBQXlGO2dCQUN6RkwsUUFBUUssTUFBTSxXQUFXO2dCQUN6QixPQUFPTixRQUFRLE9BQU87WUFDMUI7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\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/dist/render.js\n\n}");
5783
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n createParcelMounter: () => (createParcelMounter),\n renderExtension: () => (renderExtension),\n renderParcel: () => (renderParcel)\n});\n/* import */ var single_spa__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/single-spa/single-spa\");\n/* import */ var single_spa__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(single_spa__rspack_import_0);\n/* import */ var _extensions_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/extensions.js\");\n/* import */ var _helpers_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-extensions/dist/helpers.js\");\n/* import */ var _store_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-extensions/dist/store.js\");\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 _async_to_generator(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 _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\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(g && (g = 0, op[0] && (_ = 0)), _)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/** @module @category Extension */ \n\n\n\nvar parcelCount = 0;\nvar parcelMounter = null;\n/**\n * Mark parcels as dead if they do not succeed within 15s. Note that loading and unloading is\n * skipped as that has an unpredictable timing. Failing here allows us to clean-up correctly\n * if the parcel doesn't fully mount.\n */ var lifecycleTimeouts = {\n bootstrap: {\n millis: 15000,\n dieOnTimeout: true\n },\n mount: {\n millis: 15000,\n dieOnTimeout: true\n },\n unmount: {\n millis: 15000,\n dieOnTimeout: true\n }\n};\n/**\n * Applies {@link lifecycleTimeouts} to a parcel config, resolving the function form first so that a\n * lazily loaded config gets them too.\n *\n * The cast is needed because single-spa reads `timeouts` off a parcel config but doesn't declare it\n * on `ParcelConfigObject`.\n */ function withLifecycleTimeouts(parcelConfig) {\n // Spread after ours, so a parcel that declares its own timeouts keeps them.\n if (typeof parcelConfig === 'function') {\n return function() {\n return parcelConfig().then(function(resolved) {\n return _object_spread({\n timeouts: lifecycleTimeouts\n }, resolved);\n });\n };\n }\n return _object_spread({\n timeouts: lifecycleTimeouts\n }, parcelConfig);\n}\n/**\n * Resolves the function used to mount extensions, which is the `mountParcel()` of a long-lived\n * parcel of our own rather than single-spa's `mountRootParcel()`.\n *\n * single-spa only removes a parcel from its owner's registry when it unmounts if that owner has a\n * name, and the internal object backing `mountRootParcel()` has none (fixed in single-spa 7).\n * Anything mounted with it is therefore retained for the lifetime of the page, along with the\n * `domElement` it was given and the whole subtree rendered into it. Extensions mounted through a\n * named owner are pruned as they should be.\n *\n * The host parcel is mounted at most once, lazily, and never unmounted; if mounting it fails we\n * fall back to `mountRootParcel()`, since leaking is better than not rendering.\n */ function getParcelMounter() {\n parcelMounter !== null && parcelMounter !== void 0 ? parcelMounter : parcelMounter = new Promise(function(resolve, reject) {\n var host = (0,single_spa__rspack_import_0.mountRootParcel)({\n name: 'openmrs-extension-host',\n bootstrap: function bootstrap() {\n return Promise.resolve();\n },\n mount: function mount(props) {\n // single-spa types a parcel's lifecycle props as only the custom props it was mounted\n // with, but they also carry the props single-spa itself injects, `mountParcel` included.\n resolve(props.mountParcel);\n return Promise.resolve();\n },\n unmount: function unmount() {\n return Promise.resolve();\n }\n }, {\n domElement: document.createElement('div')\n });\n host.mountPromise.catch(reject);\n }).catch(function(err) {\n console.error('The host parcel used to mount extensions could not be mounted. Falling back to mounting ' + 'extensions as root parcels, which leaks their DOM elements.', err);\n return single_spa__rspack_import_0.mountRootParcel;\n });\n return parcelMounter;\n}\n/**\n * Mounts a parcel through the framework's host parcel, which lets single-spa release the parcel,\n * its `domElement` and everything rendered into it once it unmounts. Prefer this to single-spa's\n * `mountRootParcel()`, which retains all three for the lifetime of the page.\n *\n * @param parcelConfig The parcel config, or a function that loads one\n * @param customProps The props to mount the parcel with, including the `domElement` to render into\n * @returns The parcel handle; mounting completes with its `mountPromise`\n */ function renderParcel(parcelConfig, customProps) {\n return _async_to_generator(function() {\n var mountParcel;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n getParcelMounter()\n ];\n case 1:\n mountParcel = _state.sent();\n return [\n 2,\n mountParcel(withLifecycleTimeouts(parcelConfig), customProps)\n ];\n }\n });\n })();\n}\n/**\n * Provides the equivalent of {@link renderParcel} for callers that need a `mountParcel()` they can\n * call synchronously, single-spa-react's `<Parcel mountParcel={...} />` being the usual case.\n *\n * The parcel it returns is a stand-in until the real one exists, so its `getStatus()` reports\n * `LOADING_SOURCE_CODE` rather than the real status for a short while after mounting. Prefer\n * {@link renderParcel} wherever the caller can await it.\n *\n * @returns A `mountParcel()` that mounts through the host parcel\n */ function createParcelMounter() {\n return mountParcel;\n}\n/**\n * Adapts the asynchronous `renderParcel()` to single-spa's synchronous `mountParcel()` signature,\n * by returning an object that stands in for the parcel and forwards each call to the real one once\n * it resolves. A caller that serialises its calls on `mountPromise`, as single-spa-react's\n * `<Parcel>` does, never observes the stand-in; one that doesn't sees `getStatus()` report\n * `LOADING_SOURCE_CODE` until the parcel is mounted, and an unmounted parcel's `update()` and\n * `unmount()` deferred rather than rejected.\n */ function mountParcel(config, props) {\n var mounted;\n var pending = renderParcel(config, props).then(function(parcel) {\n return mounted = parcel;\n });\n return {\n mount: function mount() {\n return pending.then(function(parcel) {\n return parcel.mount();\n });\n },\n unmount: function unmount() {\n return pending.then(function(parcel) {\n return parcel.unmount();\n });\n },\n update: function update(customProps) {\n return pending.then(function(parcel) {\n var _parcel_update;\n return (_parcel_update = parcel.update) === null || _parcel_update === void 0 ? void 0 : _parcel_update.call(parcel, customProps);\n });\n },\n getStatus: function getStatus() {\n var _ref;\n return (_ref = mounted === null || mounted === void 0 ? void 0 : mounted.getStatus()) !== null && _ref !== void 0 ? _ref : 'LOADING_SOURCE_CODE';\n },\n // Derived lazily so a mount failure surfaces only on the promise the caller actually reads,\n // instead of becoming an unhandled rejection on the ones it ignores.\n get loadPromise () {\n return pending.then(function(parcel) {\n return parcel.loadPromise;\n });\n },\n get bootstrapPromise () {\n return pending.then(function(parcel) {\n return parcel.bootstrapPromise;\n });\n },\n get mountPromise () {\n return pending.then(function(parcel) {\n return parcel.mountPromise;\n });\n },\n get unmountPromise () {\n return pending.then(function(parcel) {\n return parcel.unmountPromise;\n });\n }\n };\n}\n/**\n * Mounts into a DOM node (representing an extension slot)\n * a lazy-loaded component from *any* frontend module\n * that registered an extension component for this slot.\n */ function renderExtension(_0, _1, _2, _3) {\n return _async_to_generator(function(domElement, extensionSlotName, extensionSlotModuleName, extensionId) {\n var renderFunction, additionalProps, extensionName, extensionRegistration, parcel, meta, moduleName, online, offline, load, id, renderingId, forget, forgetSafely, lifecycle, e, e1;\n var _arguments = arguments;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n renderFunction = _arguments.length > 4 && _arguments[4] !== void 0 ? _arguments[4] : function(x) {\n return x;\n }, additionalProps = _arguments.length > 5 && _arguments[5] !== void 0 ? _arguments[5] : {};\n extensionName = (0,_extensions_js__rspack_import_1.getExtensionNameFromId)(extensionId);\n extensionRegistration = (0,_extensions_js__rspack_import_1.getExtensionRegistration)(extensionId);\n parcel = null;\n if (!domElement) return [\n 3,\n 9\n ];\n if (!extensionRegistration) {\n throw Error(\"Couldn't find extension '\".concat(extensionName, \"' to attach to '\").concat(extensionSlotName, \"'\"));\n }\n meta = extensionRegistration.meta, moduleName = extensionRegistration.moduleName, online = extensionRegistration.online, offline = extensionRegistration.offline, load = extensionRegistration.load;\n if (!(0,_helpers_js__rspack_import_2.checkStatus)(online, offline)) return [\n 3,\n 8\n ];\n id = parcelCount++;\n renderingId = \"\".concat(extensionSlotName, \"/\").concat(extensionId, \"-\").concat(id);\n // Marks the node for the UI editor, which needs to pair a rendering with the element it went\n // into and cannot tell two renderings of one extension apart by any other attribute.\n domElement.dataset.extensionRenderingId = renderingId;\n forget = function forget() {\n return (0,_store_js__rspack_import_3.unregisterExtensionRendering)(renderingId);\n };\n forgetSafely = function forgetSafely(cleanupErrorMessage) {\n try {\n forget();\n } catch (cleanupError) {\n console.error(cleanupErrorMessage, cleanupError);\n }\n };\n // Registered before loading so that the config system can start resolving this extension's\n // config while its bundle is still in flight. Registering drives the config derivation\n // synchronously, so a failure there has to release the record before it propagates — nothing\n // else has a handle on it yet.\n try {\n (0,_store_js__rspack_import_3.registerExtensionRendering)({\n renderingId: renderingId,\n extensionName: extensionName,\n extensionModuleName: moduleName,\n extensionId: extensionId,\n slotName: extensionSlotName,\n slotModuleName: extensionSlotModuleName\n });\n } catch (e) {\n forgetSafely(\"Recomputing configuration after registering '\".concat(extensionId, \"' failed also failed\"));\n throw e;\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 load()\n ];\n case 2:\n lifecycle = _state.sent();\n return [\n 3,\n 4\n ];\n case 3:\n e = _state.sent();\n forgetSafely(\"Recomputing configuration after '\".concat(extensionId, \"' failed to load also failed\"));\n throw e;\n case 4:\n _state.trys.push([\n 4,\n 6,\n ,\n 7\n ]);\n return [\n 4,\n renderParcel(renderFunction(_object_spread_props(_object_spread({}, lifecycle), {\n name: \"\".concat(extensionSlotName, \"/\").concat(extensionName, \"-\").concat(id)\n })), _object_spread_props(_object_spread({}, additionalProps), {\n _meta: meta,\n _extensionContext: {\n extensionId: extensionId,\n extensionSlotName: extensionSlotName,\n extensionSlotModuleName: extensionSlotModuleName,\n extensionModuleName: moduleName\n },\n domElement: domElement\n }))\n ];\n case 5:\n parcel = _state.sent();\n return [\n 3,\n 7\n ];\n case 6:\n e1 = _state.sent();\n forgetSafely(\"Recomputing configuration after '\".concat(extensionId, \"' failed to mount also failed\"));\n throw e1;\n case 7:\n // A parcel that fails to bootstrap or mount never settles `unmountPromise`, so the mount\n // rejection has to release the record too. single-spa hard-fails parcels, so its own error\n // handlers never see either failure and the rejected promise is the only channel left.\n parcel.mountPromise.then(undefined, function(err) {\n console.error(\"Extension '\".concat(extensionId, \"' in slot '\").concat(extensionSlotName, \"' failed to mount\"), err);\n forgetSafely(\"Recomputing configuration after '\".concat(extensionId, \"' failed to mount also failed\"));\n });\n parcel.unmountPromise.then(function() {\n return forgetSafely(\"Recomputing configuration after unmounting '\".concat(extensionId, \"' failed\"));\n }, function(err) {\n console.error(\"Extension '\".concat(extensionId, \"' in slot '\").concat(extensionSlotName, \"' failed to unmount\"), err);\n forgetSafely(\"Recomputing configuration after '\".concat(extensionId, \"' failed to unmount also failed\"));\n });\n _state.label = 8;\n case 8:\n return [\n 3,\n 10\n ];\n case 9:\n console.warn(\"Tried to render \".concat(extensionId, \" into \").concat(extensionSlotName, \" but no DOM element was available.\"));\n _state.label = 10;\n case 10:\n return [\n 2,\n parcel\n ];\n }\n });\n }).apply(this, arguments);\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvZGlzdC9yZW5kZXIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tZXh0ZW5zaW9ucy9kaXN0L3JlbmRlci5qcz9lZTE3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBFeHRlbnNpb24gKi8gaW1wb3J0IHsgbW91bnRSb290UGFyY2VsIH0gZnJvbSBcInNpbmdsZS1zcGFcIjtcbmltcG9ydCB7IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQsIGdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbiB9IGZyb20gXCIuL2V4dGVuc2lvbnMuanNcIjtcbmltcG9ydCB7IGNoZWNrU3RhdHVzIH0gZnJvbSBcIi4vaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgcmVnaXN0ZXJFeHRlbnNpb25SZW5kZXJpbmcsIHVucmVnaXN0ZXJFeHRlbnNpb25SZW5kZXJpbmcgfSBmcm9tIFwiLi9zdG9yZS5qc1wiO1xubGV0IHBhcmNlbENvdW50ID0gMDtcbmxldCBwYXJjZWxNb3VudGVyID0gbnVsbDtcbi8qKlxuICogTWFyayBwYXJjZWxzIGFzIGRlYWQgaWYgdGhleSBkbyBub3Qgc3VjY2VlZCB3aXRoaW4gMTVzLiBOb3RlIHRoYXQgbG9hZGluZyBhbmQgdW5sb2FkaW5nIGlzXG4gKiBza2lwcGVkIGFzIHRoYXQgaGFzIGFuIHVucHJlZGljdGFibGUgdGltaW5nLiBGYWlsaW5nIGhlcmUgYWxsb3dzIHVzIHRvIGNsZWFuLXVwIGNvcnJlY3RseVxuICogaWYgdGhlIHBhcmNlbCBkb2Vzbid0IGZ1bGx5IG1vdW50LlxuICovIGNvbnN0IGxpZmVjeWNsZVRpbWVvdXRzID0ge1xuICAgIGJvb3RzdHJhcDoge1xuICAgICAgICBtaWxsaXM6IDE1MDAwLFxuICAgICAgICBkaWVPblRpbWVvdXQ6IHRydWVcbiAgICB9LFxuICAgIG1vdW50OiB7XG4gICAgICAgIG1pbGxpczogMTUwMDAsXG4gICAgICAgIGRpZU9uVGltZW91dDogdHJ1ZVxuICAgIH0sXG4gICAgdW5tb3VudDoge1xuICAgICAgICBtaWxsaXM6IDE1MDAwLFxuICAgICAgICBkaWVPblRpbWVvdXQ6IHRydWVcbiAgICB9XG59O1xuLyoqXG4gKiBBcHBsaWVzIHtAbGluayBsaWZlY3ljbGVUaW1lb3V0c30gdG8gYSBwYXJjZWwgY29uZmlnLCByZXNvbHZpbmcgdGhlIGZ1bmN0aW9uIGZvcm0gZmlyc3Qgc28gdGhhdCBhXG4gKiBsYXppbHkgbG9hZGVkIGNvbmZpZyBnZXRzIHRoZW0gdG9vLlxuICpcbiAqIFRoZSBjYXN0IGlzIG5lZWRlZCBiZWNhdXNlIHNpbmdsZS1zcGEgcmVhZHMgYHRpbWVvdXRzYCBvZmYgYSBwYXJjZWwgY29uZmlnIGJ1dCBkb2Vzbid0IGRlY2xhcmUgaXRcbiAqIG9uIGBQYXJjZWxDb25maWdPYmplY3RgLlxuICovIGZ1bmN0aW9uIHdpdGhMaWZlY3ljbGVUaW1lb3V0cyhwYXJjZWxDb25maWcpIHtcbiAgICAvLyBTcHJlYWQgYWZ0ZXIgb3Vycywgc28gYSBwYXJjZWwgdGhhdCBkZWNsYXJlcyBpdHMgb3duIHRpbWVvdXRzIGtlZXBzIHRoZW0uXG4gICAgaWYgKHR5cGVvZiBwYXJjZWxDb25maWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICgpPT5wYXJjZWxDb25maWcoKS50aGVuKChyZXNvbHZlZCk9Pih7XG4gICAgICAgICAgICAgICAgICAgIHRpbWVvdXRzOiBsaWZlY3ljbGVUaW1lb3V0cyxcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVzb2x2ZWRcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHRpbWVvdXRzOiBsaWZlY3ljbGVUaW1lb3V0cyxcbiAgICAgICAgLi4ucGFyY2VsQ29uZmlnXG4gICAgfTtcbn1cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGZ1bmN0aW9uIHVzZWQgdG8gbW91bnQgZXh0ZW5zaW9ucywgd2hpY2ggaXMgdGhlIGBtb3VudFBhcmNlbCgpYCBvZiBhIGxvbmctbGl2ZWRcbiAqIHBhcmNlbCBvZiBvdXIgb3duIHJhdGhlciB0aGFuIHNpbmdsZS1zcGEncyBgbW91bnRSb290UGFyY2VsKClgLlxuICpcbiAqIHNpbmdsZS1zcGEgb25seSByZW1vdmVzIGEgcGFyY2VsIGZyb20gaXRzIG93bmVyJ3MgcmVnaXN0cnkgd2hlbiBpdCB1bm1vdW50cyBpZiB0aGF0IG93bmVyIGhhcyBhXG4gKiBuYW1lLCBhbmQgdGhlIGludGVybmFsIG9iamVjdCBiYWNraW5nIGBtb3VudFJvb3RQYXJjZWwoKWAgaGFzIG5vbmUgKGZpeGVkIGluIHNpbmdsZS1zcGEgNykuXG4gKiBBbnl0aGluZyBtb3VudGVkIHdpdGggaXQgaXMgdGhlcmVmb3JlIHJldGFpbmVkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHBhZ2UsIGFsb25nIHdpdGggdGhlXG4gKiBgZG9tRWxlbWVudGAgaXQgd2FzIGdpdmVuIGFuZCB0aGUgd2hvbGUgc3VidHJlZSByZW5kZXJlZCBpbnRvIGl0LiBFeHRlbnNpb25zIG1vdW50ZWQgdGhyb3VnaCBhXG4gKiBuYW1lZCBvd25lciBhcmUgcHJ1bmVkIGFzIHRoZXkgc2hvdWxkIGJlLlxuICpcbiAqIFRoZSBob3N0IHBhcmNlbCBpcyBtb3VudGVkIGF0IG1vc3Qgb25jZSwgbGF6aWx5LCBhbmQgbmV2ZXIgdW5tb3VudGVkOyBpZiBtb3VudGluZyBpdCBmYWlscyB3ZVxuICogZmFsbCBiYWNrIHRvIGBtb3VudFJvb3RQYXJjZWwoKWAsIHNpbmNlIGxlYWtpbmcgaXMgYmV0dGVyIHRoYW4gbm90IHJlbmRlcmluZy5cbiAqLyBmdW5jdGlvbiBnZXRQYXJjZWxNb3VudGVyKCkge1xuICAgIHBhcmNlbE1vdW50ZXIgPz8gKHBhcmNlbE1vdW50ZXIgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICBjb25zdCBob3N0ID0gbW91bnRSb290UGFyY2VsKHtcbiAgICAgICAgICAgIG5hbWU6ICdvcGVubXJzLWV4dGVuc2lvbi1ob3N0JyxcbiAgICAgICAgICAgIGJvb3RzdHJhcDogKCk9PlByb21pc2UucmVzb2x2ZSgpLFxuICAgICAgICAgICAgbW91bnQ6IChwcm9wcyk9PntcbiAgICAgICAgICAgICAgICAvLyBzaW5nbGUtc3BhIHR5cGVzIGEgcGFyY2VsJ3MgbGlmZWN5Y2xlIHByb3BzIGFzIG9ubHkgdGhlIGN1c3RvbSBwcm9wcyBpdCB3YXMgbW91bnRlZFxuICAgICAgICAgICAgICAgIC8vIHdpdGgsIGJ1dCB0aGV5IGFsc28gY2FycnkgdGhlIHByb3BzIHNpbmdsZS1zcGEgaXRzZWxmIGluamVjdHMsIGBtb3VudFBhcmNlbGAgaW5jbHVkZWQuXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShwcm9wcy5tb3VudFBhcmNlbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVubW91bnQ6ICgpPT5Qcm9taXNlLnJlc29sdmUoKVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBkb21FbGVtZW50OiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgICAgICB9KTtcbiAgICAgICAgaG9zdC5tb3VudFByb21pc2UuY2F0Y2gocmVqZWN0KTtcbiAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgaG9zdCBwYXJjZWwgdXNlZCB0byBtb3VudCBleHRlbnNpb25zIGNvdWxkIG5vdCBiZSBtb3VudGVkLiBGYWxsaW5nIGJhY2sgdG8gbW91bnRpbmcgJyArICdleHRlbnNpb25zIGFzIHJvb3QgcGFyY2Vscywgd2hpY2ggbGVha3MgdGhlaXIgRE9NIGVsZW1lbnRzLicsIGVycik7XG4gICAgICAgIHJldHVybiBtb3VudFJvb3RQYXJjZWw7XG4gICAgfSkpO1xuICAgIHJldHVybiBwYXJjZWxNb3VudGVyO1xufVxuLyoqXG4gKiBNb3VudHMgYSBwYXJjZWwgdGhyb3VnaCB0aGUgZnJhbWV3b3JrJ3MgaG9zdCBwYXJjZWwsIHdoaWNoIGxldHMgc2luZ2xlLXNwYSByZWxlYXNlIHRoZSBwYXJjZWwsXG4gKiBpdHMgYGRvbUVsZW1lbnRgIGFuZCBldmVyeXRoaW5nIHJlbmRlcmVkIGludG8gaXQgb25jZSBpdCB1bm1vdW50cy4gUHJlZmVyIHRoaXMgdG8gc2luZ2xlLXNwYSdzXG4gKiBgbW91bnRSb290UGFyY2VsKClgLCB3aGljaCByZXRhaW5zIGFsbCB0aHJlZSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwYWdlLlxuICpcbiAqIEBwYXJhbSBwYXJjZWxDb25maWcgVGhlIHBhcmNlbCBjb25maWcsIG9yIGEgZnVuY3Rpb24gdGhhdCBsb2FkcyBvbmVcbiAqIEBwYXJhbSBjdXN0b21Qcm9wcyBUaGUgcHJvcHMgdG8gbW91bnQgdGhlIHBhcmNlbCB3aXRoLCBpbmNsdWRpbmcgdGhlIGBkb21FbGVtZW50YCB0byByZW5kZXIgaW50b1xuICogQHJldHVybnMgVGhlIHBhcmNlbCBoYW5kbGU7IG1vdW50aW5nIGNvbXBsZXRlcyB3aXRoIGl0cyBgbW91bnRQcm9taXNlYFxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYXJjZWwocGFyY2VsQ29uZmlnLCBjdXN0b21Qcm9wcykge1xuICAgIGNvbnN0IG1vdW50UGFyY2VsID0gYXdhaXQgZ2V0UGFyY2VsTW91bnRlcigpO1xuICAgIHJldHVybiBtb3VudFBhcmNlbCh3aXRoTGlmZWN5Y2xlVGltZW91dHMocGFyY2VsQ29uZmlnKSwgY3VzdG9tUHJvcHMpO1xufVxuLyoqXG4gKiBQcm92aWRlcyB0aGUgZXF1aXZhbGVudCBvZiB7QGxpbmsgcmVuZGVyUGFyY2VsfSBmb3IgY2FsbGVycyB0aGF0IG5lZWQgYSBgbW91bnRQYXJjZWwoKWAgdGhleSBjYW5cbiAqIGNhbGwgc3luY2hyb25vdXNseSwgc2luZ2xlLXNwYS1yZWFjdCdzIGA8UGFyY2VsIG1vdW50UGFyY2VsPXsuLi59IC8+YCBiZWluZyB0aGUgdXN1YWwgY2FzZS5cbiAqXG4gKiBUaGUgcGFyY2VsIGl0IHJldHVybnMgaXMgYSBzdGFuZC1pbiB1bnRpbCB0aGUgcmVhbCBvbmUgZXhpc3RzLCBzbyBpdHMgYGdldFN0YXR1cygpYCByZXBvcnRzXG4gKiBgTE9BRElOR19TT1VSQ0VfQ09ERWAgcmF0aGVyIHRoYW4gdGhlIHJlYWwgc3RhdHVzIGZvciBhIHNob3J0IHdoaWxlIGFmdGVyIG1vdW50aW5nLiBQcmVmZXJcbiAqIHtAbGluayByZW5kZXJQYXJjZWx9IHdoZXJldmVyIHRoZSBjYWxsZXIgY2FuIGF3YWl0IGl0LlxuICpcbiAqIEByZXR1cm5zIEEgYG1vdW50UGFyY2VsKClgIHRoYXQgbW91bnRzIHRocm91Z2ggdGhlIGhvc3QgcGFyY2VsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhcmNlbE1vdW50ZXIoKSB7XG4gICAgcmV0dXJuIG1vdW50UGFyY2VsO1xufVxuLyoqXG4gKiBBZGFwdHMgdGhlIGFzeW5jaHJvbm91cyBgcmVuZGVyUGFyY2VsKClgIHRvIHNpbmdsZS1zcGEncyBzeW5jaHJvbm91cyBgbW91bnRQYXJjZWwoKWAgc2lnbmF0dXJlLFxuICogYnkgcmV0dXJuaW5nIGFuIG9iamVjdCB0aGF0IHN0YW5kcyBpbiBmb3IgdGhlIHBhcmNlbCBhbmQgZm9yd2FyZHMgZWFjaCBjYWxsIHRvIHRoZSByZWFsIG9uZSBvbmNlXG4gKiBpdCByZXNvbHZlcy4gQSBjYWxsZXIgdGhhdCBzZXJpYWxpc2VzIGl0cyBjYWxscyBvbiBgbW91bnRQcm9taXNlYCwgYXMgc2luZ2xlLXNwYS1yZWFjdCdzXG4gKiBgPFBhcmNlbD5gIGRvZXMsIG5ldmVyIG9ic2VydmVzIHRoZSBzdGFuZC1pbjsgb25lIHRoYXQgZG9lc24ndCBzZWVzIGBnZXRTdGF0dXMoKWAgcmVwb3J0XG4gKiBgTE9BRElOR19TT1VSQ0VfQ09ERWAgdW50aWwgdGhlIHBhcmNlbCBpcyBtb3VudGVkLCBhbmQgYW4gdW5tb3VudGVkIHBhcmNlbCdzIGB1cGRhdGUoKWAgYW5kXG4gKiBgdW5tb3VudCgpYCBkZWZlcnJlZCByYXRoZXIgdGhhbiByZWplY3RlZC5cbiAqLyBmdW5jdGlvbiBtb3VudFBhcmNlbChjb25maWcsIHByb3BzKSB7XG4gICAgbGV0IG1vdW50ZWQ7XG4gICAgY29uc3QgcGVuZGluZyA9IHJlbmRlclBhcmNlbChjb25maWcsIHByb3BzKS50aGVuKChwYXJjZWwpPT5tb3VudGVkID0gcGFyY2VsKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtb3VudDogKCk9PnBlbmRpbmcudGhlbigocGFyY2VsKT0+cGFyY2VsLm1vdW50KCkpLFxuICAgICAgICB1bm1vdW50OiAoKT0+cGVuZGluZy50aGVuKChwYXJjZWwpPT5wYXJjZWwudW5tb3VudCgpKSxcbiAgICAgICAgdXBkYXRlOiAoY3VzdG9tUHJvcHMpPT5wZW5kaW5nLnRoZW4oKHBhcmNlbCk9PnBhcmNlbC51cGRhdGU/LihjdXN0b21Qcm9wcykpLFxuICAgICAgICBnZXRTdGF0dXM6ICgpPT5tb3VudGVkPy5nZXRTdGF0dXMoKSA/PyAnTE9BRElOR19TT1VSQ0VfQ09ERScsXG4gICAgICAgIC8vIERlcml2ZWQgbGF6aWx5IHNvIGEgbW91bnQgZmFpbHVyZSBzdXJmYWNlcyBvbmx5IG9uIHRoZSBwcm9taXNlIHRoZSBjYWxsZXIgYWN0dWFsbHkgcmVhZHMsXG4gICAgICAgIC8vIGluc3RlYWQgb2YgYmVjb21pbmcgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiBvbiB0aGUgb25lcyBpdCBpZ25vcmVzLlxuICAgICAgICBnZXQgbG9hZFByb21pc2UgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmcudGhlbigocGFyY2VsKT0+cGFyY2VsLmxvYWRQcm9taXNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJvb3RzdHJhcFByb21pc2UgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmcudGhlbigocGFyY2VsKT0+cGFyY2VsLmJvb3RzdHJhcFByb21pc2UpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgbW91bnRQcm9taXNlICgpIHtcbiAgICAgICAgICAgIHJldHVybiBwZW5kaW5nLnRoZW4oKHBhcmNlbCk9PnBhcmNlbC5tb3VudFByb21pc2UpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdW5tb3VudFByb21pc2UgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmcudGhlbigocGFyY2VsKT0+cGFyY2VsLnVubW91bnRQcm9taXNlKTtcbiAgICAgICAgfVxuICAgIH07XG59XG4vKipcbiAqIE1vdW50cyBpbnRvIGEgRE9NIG5vZGUgKHJlcHJlc2VudGluZyBhbiBleHRlbnNpb24gc2xvdClcbiAqIGEgbGF6eS1sb2FkZWQgY29tcG9uZW50IGZyb20gKmFueSogZnJvbnRlbmQgbW9kdWxlXG4gKiB0aGF0IHJlZ2lzdGVyZWQgYW4gZXh0ZW5zaW9uIGNvbXBvbmVudCBmb3IgdGhpcyBzbG90LlxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJFeHRlbnNpb24oZG9tRWxlbWVudCwgZXh0ZW5zaW9uU2xvdE5hbWUsIGV4dGVuc2lvblNsb3RNb2R1bGVOYW1lLCBleHRlbnNpb25JZCwgcmVuZGVyRnVuY3Rpb24gPSAoeCk9PngsIGFkZGl0aW9uYWxQcm9wcyA9IHt9KSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uTmFtZSA9IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpO1xuICAgIGNvbnN0IGV4dGVuc2lvblJlZ2lzdHJhdGlvbiA9IGdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbihleHRlbnNpb25JZCk7XG4gICAgbGV0IHBhcmNlbCA9IG51bGw7XG4gICAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCFleHRlbnNpb25SZWdpc3RyYXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBDb3VsZG4ndCBmaW5kIGV4dGVuc2lvbiAnJHtleHRlbnNpb25OYW1lfScgdG8gYXR0YWNoIHRvICcke2V4dGVuc2lvblNsb3ROYW1lfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG1ldGEsIG1vZHVsZU5hbWUsIG9ubGluZSwgb2ZmbGluZSwgbG9hZCB9ID0gZXh0ZW5zaW9uUmVnaXN0cmF0aW9uO1xuICAgICAgICBpZiAoY2hlY2tTdGF0dXMob25saW5lLCBvZmZsaW5lKSkge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBwYXJjZWxDb3VudCsrO1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyaW5nSWQgPSBgJHtleHRlbnNpb25TbG90TmFtZX0vJHtleHRlbnNpb25JZH0tJHtpZH1gO1xuICAgICAgICAgICAgLy8gTWFya3MgdGhlIG5vZGUgZm9yIHRoZSBVSSBlZGl0b3IsIHdoaWNoIG5lZWRzIHRvIHBhaXIgYSByZW5kZXJpbmcgd2l0aCB0aGUgZWxlbWVudCBpdCB3ZW50XG4gICAgICAgICAgICAvLyBpbnRvIGFuZCBjYW5ub3QgdGVsbCB0d28gcmVuZGVyaW5ncyBvZiBvbmUgZXh0ZW5zaW9uIGFwYXJ0IGJ5IGFueSBvdGhlciBhdHRyaWJ1dGUuXG4gICAgICAgICAgICBkb21FbGVtZW50LmRhdGFzZXQuZXh0ZW5zaW9uUmVuZGVyaW5nSWQgPSByZW5kZXJpbmdJZDtcbiAgICAgICAgICAgIGNvbnN0IGZvcmdldCA9ICgpPT51bnJlZ2lzdGVyRXh0ZW5zaW9uUmVuZGVyaW5nKHJlbmRlcmluZ0lkKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcmdldFNhZmVseSA9IChjbGVhbnVwRXJyb3JNZXNzYWdlKT0+e1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcmdldCgpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGNsZWFudXBFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGNsZWFudXBFcnJvck1lc3NhZ2UsIGNsZWFudXBFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyZWQgYmVmb3JlIGxvYWRpbmcgc28gdGhhdCB0aGUgY29uZmlnIHN5c3RlbSBjYW4gc3RhcnQgcmVzb2x2aW5nIHRoaXMgZXh0ZW5zaW9uJ3NcbiAgICAgICAgICAgIC8vIGNvbmZpZyB3aGlsZSBpdHMgYnVuZGxlIGlzIHN0aWxsIGluIGZsaWdodC4gUmVnaXN0ZXJpbmcgZHJpdmVzIHRoZSBjb25maWcgZGVyaXZhdGlvblxuICAgICAgICAgICAgLy8gc3luY2hyb25vdXNseSwgc28gYSBmYWlsdXJlIHRoZXJlIGhhcyB0byByZWxlYXNlIHRoZSByZWNvcmQgYmVmb3JlIGl0IHByb3BhZ2F0ZXMg4oCUIG5vdGhpbmdcbiAgICAgICAgICAgIC8vIGVsc2UgaGFzIGEgaGFuZGxlIG9uIGl0IHlldC5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJFeHRlbnNpb25SZW5kZXJpbmcoe1xuICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmdJZCxcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uTW9kdWxlTmFtZTogbW9kdWxlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uSWQsXG4gICAgICAgICAgICAgICAgICAgIHNsb3ROYW1lOiBleHRlbnNpb25TbG90TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc2xvdE1vZHVsZU5hbWU6IGV4dGVuc2lvblNsb3RNb2R1bGVOYW1lXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgZm9yZ2V0U2FmZWx5KGBSZWNvbXB1dGluZyBjb25maWd1cmF0aW9uIGFmdGVyIHJlZ2lzdGVyaW5nICcke2V4dGVuc2lvbklkfScgZmFpbGVkIGFsc28gZmFpbGVkYCk7XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBsaWZlY3ljbGU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxpZmVjeWNsZSA9IGF3YWl0IGxvYWQoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBmb3JnZXRTYWZlbHkoYFJlY29tcHV0aW5nIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgJyR7ZXh0ZW5zaW9uSWR9JyBmYWlsZWQgdG8gbG9hZCBhbHNvIGZhaWxlZGApO1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcmNlbCA9IGF3YWl0IHJlbmRlclBhcmNlbChyZW5kZXJGdW5jdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIC4uLmxpZmVjeWNsZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYCR7ZXh0ZW5zaW9uU2xvdE5hbWV9LyR7ZXh0ZW5zaW9uTmFtZX0tJHtpZH1gXG4gICAgICAgICAgICAgICAgfSksIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYWRkaXRpb25hbFByb3BzLFxuICAgICAgICAgICAgICAgICAgICBfbWV0YTogbWV0YSxcbiAgICAgICAgICAgICAgICAgICAgX2V4dGVuc2lvbkNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uU2xvdE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25TbG90TW9kdWxlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbk1vZHVsZU5hbWU6IG1vZHVsZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZG9tRWxlbWVudFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGZvcmdldFNhZmVseShgUmVjb21wdXRpbmcgY29uZmlndXJhdGlvbiBhZnRlciAnJHtleHRlbnNpb25JZH0nIGZhaWxlZCB0byBtb3VudCBhbHNvIGZhaWxlZGApO1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBIHBhcmNlbCB0aGF0IGZhaWxzIHRvIGJvb3RzdHJhcCBvciBtb3VudCBuZXZlciBzZXR0bGVzIGB1bm1vdW50UHJvbWlzZWAsIHNvIHRoZSBtb3VudFxuICAgICAgICAgICAgLy8gcmVqZWN0aW9uIGhhcyB0byByZWxlYXNlIHRoZSByZWNvcmQgdG9vLiBzaW5nbGUtc3BhIGhhcmQtZmFpbHMgcGFyY2Vscywgc28gaXRzIG93biBlcnJvclxuICAgICAgICAgICAgLy8gaGFuZGxlcnMgbmV2ZXIgc2VlIGVpdGhlciBmYWlsdXJlIGFuZCB0aGUgcmVqZWN0ZWQgcHJvbWlzZSBpcyB0aGUgb25seSBjaGFubmVsIGxlZnQuXG4gICAgICAgICAgICBwYXJjZWwubW91bnRQcm9taXNlLnRoZW4odW5kZWZpbmVkLCAoZXJyKT0+e1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEV4dGVuc2lvbiAnJHtleHRlbnNpb25JZH0nIGluIHNsb3QgJyR7ZXh0ZW5zaW9uU2xvdE5hbWV9JyBmYWlsZWQgdG8gbW91bnRgLCBlcnIpO1xuICAgICAgICAgICAgICAgIGZvcmdldFNhZmVseShgUmVjb21wdXRpbmcgY29uZmlndXJhdGlvbiBhZnRlciAnJHtleHRlbnNpb25JZH0nIGZhaWxlZCB0byBtb3VudCBhbHNvIGZhaWxlZGApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwYXJjZWwudW5tb3VudFByb21pc2UudGhlbigoKT0+Zm9yZ2V0U2FmZWx5KGBSZWNvbXB1dGluZyBjb25maWd1cmF0aW9uIGFmdGVyIHVubW91bnRpbmcgJyR7ZXh0ZW5zaW9uSWR9JyBmYWlsZWRgKSwgKGVycik9PntcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFeHRlbnNpb24gJyR7ZXh0ZW5zaW9uSWR9JyBpbiBzbG90ICcke2V4dGVuc2lvblNsb3ROYW1lfScgZmFpbGVkIHRvIHVubW91bnRgLCBlcnIpO1xuICAgICAgICAgICAgICAgIGZvcmdldFNhZmVseShgUmVjb21wdXRpbmcgY29uZmlndXJhdGlvbiBhZnRlciAnJHtleHRlbnNpb25JZH0nIGZhaWxlZCB0byB1bm1vdW50IGFsc28gZmFpbGVkYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVHJpZWQgdG8gcmVuZGVyICR7ZXh0ZW5zaW9uSWR9IGludG8gJHtleHRlbnNpb25TbG90TmFtZX0gYnV0IG5vIERPTSBlbGVtZW50IHdhcyBhdmFpbGFibGUuYCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJjZWw7XG59XG4iXSwibmFtZXMiOlsibW91bnRSb290UGFyY2VsIiwiZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZCIsImdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbiIsImNoZWNrU3RhdHVzIiwicmVnaXN0ZXJFeHRlbnNpb25SZW5kZXJpbmciLCJ1bnJlZ2lzdGVyRXh0ZW5zaW9uUmVuZGVyaW5nIiwicGFyY2VsQ291bnQiLCJwYXJjZWxNb3VudGVyIiwibGlmZWN5Y2xlVGltZW91dHMiLCJ3aXRoTGlmZWN5Y2xlVGltZW91dHMiLCJwYXJjZWxDb25maWciLCJyZXNvbHZlZCIsImdldFBhcmNlbE1vdW50ZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImhvc3QiLCJib290c3RyYXAiLCJtb3VudCIsInByb3BzIiwidW5tb3VudCIsImRvY3VtZW50IiwiZXJyIiwiY29uc29sZSIsInJlbmRlclBhcmNlbCIsImN1c3RvbVByb3BzIiwibW91bnRQYXJjZWwiLCJjcmVhdGVQYXJjZWxNb3VudGVyIiwiY29uZmlnIiwibW91bnRlZCIsInBlbmRpbmciLCJwYXJjZWwiLCJ1cGRhdGUiLCJnZXRTdGF0dXMiLCJyZW5kZXJFeHRlbnNpb24iLCJkb21FbGVtZW50IiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJleHRlbnNpb25TbG90TW9kdWxlTmFtZSIsImV4dGVuc2lvbklkIiwicmVuZGVyRnVuY3Rpb24iLCJhZGRpdGlvbmFsUHJvcHMiLCJleHRlbnNpb25OYW1lIiwiZXh0ZW5zaW9uUmVnaXN0cmF0aW9uIiwibWV0YSIsIm1vZHVsZU5hbWUiLCJvbmxpbmUiLCJvZmZsaW5lIiwibG9hZCIsImlkIiwicmVuZGVyaW5nSWQiLCJmb3JnZXQiLCJmb3JnZXRTYWZlbHkiLCJsaWZlY3ljbGUiLCJlIiwiZTEiLCJ4IiwiRXJyb3IiLCJjbGVhbnVwRXJyb3JNZXNzYWdlIiwiY2xlYW51cEVycm9yIiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdDQUFnQyxHQUFnRDtBQUNHO0FBQ3hDO0FBQzJDO0FBQ3RGLElBQUlNLGNBQWM7QUFDbEIsSUFBSUMsZ0JBQWdCO0FBQ3BCOzs7O0NBSUMsR0FBRyxJQUFNQyxvQkFBb0I7SUFDMUIsV0FBVztRQUNQLFFBQVE7UUFDUixjQUFjO0lBQ2xCO0lBQ0EsT0FBTztRQUNILFFBQVE7UUFDUixjQUFjO0lBQ2xCO0lBQ0EsU0FBUztRQUNMLFFBQVE7UUFDUixjQUFjO0lBQ2xCO0FBQ0o7QUFDQTs7Ozs7O0NBTUMsR0FBRyxTQUFTQyxzQkFBc0JDLFlBQVk7SUFDM0MsNEVBQTRFO0lBQzVFLElBQUksT0FBT0EsaUJBQWlCLFlBQVk7UUFDcEMs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\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/dist/render.js\n\n}");
5784
5784
 
5785
5785
  },
5786
5786
  "../../framework/esm-extensions/dist/store.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5787
5787
  "use strict";
5788
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n getExtensionInternalStore: () => (getExtensionInternalStore),\n getExtensionStore: () => (getExtensionStore),\n updateInternalExtensionStore: () => (updateInternalExtensionStore)\n});\n/* import */ var lodash_es__rspack_import_2 = __webpack_require__(\"../../../node_modules/lodash-es/isEqual.js\");\n/* import */ var _openmrs_esm_config__rspack_import_0 = __webpack_require__(\"../../framework/esm-config/dist/index.js\");\n/* import */ var _openmrs_esm_state__rspack_import_1 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/** @module @category Extension */ \n\n\nvar extensionInternalStore = (0,_openmrs_esm_state__rspack_import_1.createGlobalStore)('extensionsInternal', {\n slots: {},\n extensions: {}\n});\n/**\n * This gets the extension system's internal store. It is subject\n * to change radically and without warning. It should not be used\n * outside esm-core.\n * @internal\n */ var getExtensionInternalStore = function getExtensionInternalStore() {\n return (0,_openmrs_esm_state__rspack_import_1.getGlobalStore)('extensionsInternal', {\n slots: {},\n extensions: {}\n });\n};\n/** @internal */ function updateInternalExtensionStore(updater) {\n // This is a function that updates the internal extension store.\n var state = extensionInternalStore.getState();\n var newState = updater(state);\n if (newState !== state) {\n extensionInternalStore.setState(newState);\n }\n}\n/**\n * This returns a store that modules can use to get information about the\n * state of the extension system.\n */ var getExtensionStore = function getExtensionStore() {\n return (0,_openmrs_esm_state__rspack_import_1.getGlobalStore)('extensions', {\n slots: {}\n });\n};\n/**\n * esm-config maintains its own store of the extension information it needs\n * to generate extension configs. We keep it updated based on what's in\n * `extensionStore`.\n */ updateConfigExtensionStore(extensionInternalStore.getState());\nextensionInternalStore.subscribe(updateConfigExtensionStore);\nfunction updateConfigExtensionStore(extensionState) {\n var configExtensionRecords = [];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.values(extensionState.extensions)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extensionInfo = _step.value;\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = extensionInfo.instances[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var instance = _step1.value;\n configExtensionRecords.push({\n slotModuleName: instance.slotModuleName,\n extensionModuleName: extensionInfo.moduleName,\n slotName: instance.slotName,\n extensionId: instance.id\n });\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\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 if (!(0,lodash_es__rspack_import_2[\"default\"])(_openmrs_esm_config__rspack_import_0.configExtensionStore.getState().mountedExtensions, configExtensionRecords)) {\n _openmrs_esm_config__rspack_import_0.configExtensionStore.setState({\n mountedExtensions: configExtensionRecords\n });\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvZGlzdC9zdG9yZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL2Rpc3Qvc3RvcmUuanM/NmQyZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRXh0ZW5zaW9uICovIGltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBjb25maWdFeHRlbnNpb25TdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgeyBjcmVhdGVHbG9iYWxTdG9yZSwgZ2V0R2xvYmFsU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5jb25zdCBleHRlbnNpb25JbnRlcm5hbFN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmUoJ2V4dGVuc2lvbnNJbnRlcm5hbCcsIHtcbiAgICBzbG90czoge30sXG4gICAgZXh0ZW5zaW9uczoge31cbn0pO1xuLyoqXG4gKiBUaGlzIGdldHMgdGhlIGV4dGVuc2lvbiBzeXN0ZW0ncyBpbnRlcm5hbCBzdG9yZS4gSXQgaXMgc3ViamVjdFxuICogdG8gY2hhbmdlIHJhZGljYWxseSBhbmQgd2l0aG91dCB3YXJuaW5nLiBJdCBzaG91bGQgbm90IGJlIHVzZWRcbiAqIG91dHNpZGUgZXNtLWNvcmUuXG4gKiBAaW50ZXJuYWxcbiAqLyBleHBvcnQgY29uc3QgZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSA9ICgpPT5nZXRHbG9iYWxTdG9yZSgnZXh0ZW5zaW9uc0ludGVybmFsJywge1xuICAgICAgICBzbG90czoge30sXG4gICAgICAgIGV4dGVuc2lvbnM6IHt9XG4gICAgfSk7XG4vKiogQGludGVybmFsICovIGV4cG9ydCBmdW5jdGlvbiB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKHVwZGF0ZXIpIHtcbiAgICAvLyBUaGlzIGlzIGEgZnVuY3Rpb24gdGhhdCB1cGRhdGVzIHRoZSBpbnRlcm5hbCBleHRlbnNpb24gc3RvcmUuXG4gICAgY29uc3Qgc3RhdGUgPSBleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3QgbmV3U3RhdGUgPSB1cGRhdGVyKHN0YXRlKTtcbiAgICBpZiAobmV3U3RhdGUgIT09IHN0YXRlKSB7XG4gICAgICAgIGV4dGVuc2lvbkludGVybmFsU3RvcmUuc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgIH1cbn1cbi8qKlxuICogVGhpcyByZXR1cm5zIGEgc3RvcmUgdGhhdCBtb2R1bGVzIGNhbiB1c2UgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICogc3RhdGUgb2YgdGhlIGV4dGVuc2lvbiBzeXN0ZW0uXG4gKi8gZXhwb3J0IGNvbnN0IGdldEV4dGVuc2lvblN0b3JlID0gKCk9PmdldEdsb2JhbFN0b3JlKCdleHRlbnNpb25zJywge1xuICAgICAgICBzbG90czoge31cbiAgICB9KTtcbi8qKlxuICogZXNtLWNvbmZpZyBtYWludGFpbnMgaXRzIG93biBzdG9yZSBvZiB0aGUgZXh0ZW5zaW9uIGluZm9ybWF0aW9uIGl0IG5lZWRzXG4gKiB0byBnZW5lcmF0ZSBleHRlbnNpb24gY29uZmlncy4gV2Uga2VlcCBpdCB1cGRhdGVkIGJhc2VkIG9uIHdoYXQncyBpblxuICogYGV4dGVuc2lvblN0b3JlYC5cbiAqLyB1cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZShleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCkpO1xuZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5zdWJzY3JpYmUodXBkYXRlQ29uZmlnRXh0ZW5zaW9uU3RvcmUpO1xuZnVuY3Rpb24gdXBkYXRlQ29uZmlnRXh0ZW5zaW9uU3RvcmUoZXh0ZW5zaW9uU3RhdGUpIHtcbiAgICBjb25zdCBjb25maWdFeHRlbnNpb25SZWNvcmRzID0gW107XG4gICAgZm9yIChsZXQgZXh0ZW5zaW9uSW5mbyBvZiBPYmplY3QudmFsdWVzKGV4dGVuc2lvblN0YXRlLmV4dGVuc2lvbnMpKXtcbiAgICAgICAgZm9yIChsZXQgaW5zdGFuY2Ugb2YgZXh0ZW5zaW9uSW5mby5pbnN0YW5jZXMpe1xuICAgICAgICAgICAgY29uZmlnRXh0ZW5zaW9uUmVjb3Jkcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzbG90TW9kdWxlTmFtZTogaW5zdGFuY2Uuc2xvdE1vZHVsZU5hbWUsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uTW9kdWxlTmFtZTogZXh0ZW5zaW9uSW5mby5tb2R1bGVOYW1lLFxuICAgICAgICAgICAgICAgIHNsb3ROYW1lOiBpbnN0YW5jZS5zbG90TmFtZSxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25JZDogaW5zdGFuY2UuaWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghaXNFcXVhbChjb25maWdFeHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLm1vdW50ZWRFeHRlbnNpb25zLCBjb25maWdFeHRlbnNpb25SZWNvcmRzKSkge1xuICAgICAgICBjb25maWdFeHRlbnNpb25TdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBtb3VudGVkRXh0ZW5zaW9uczogY29uZmlnRXh0ZW5zaW9uUmVjb3Jkc1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsiaXNFcXVhbCIsImNvbmZpZ0V4dGVuc2lvblN0b3JlIiwiY3JlYXRlR2xvYmFsU3RvcmUiLCJnZXRHbG9iYWxTdG9yZSIsImV4dGVuc2lvbkludGVybmFsU3RvcmUiLCJnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlIiwidXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSIsInVwZGF0ZXIiLCJzdGF0ZSIsIm5ld1N0YXRlIiwiZ2V0RXh0ZW5zaW9uU3RvcmUiLCJ1cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZSIsImV4dGVuc2lvblN0YXRlIiwiY29uZmlnRXh0ZW5zaW9uUmVjb3JkcyIsIl9pdGVyYXRvckVycm9yIiwiT2JqZWN0IiwiZXh0ZW5zaW9uSW5mbyIsIl9pdGVyYXRvckVycm9yMSIsImluc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FBdUM7QUFDWjtBQUNZO0FBQ3ZFLElBQU1JLHlCQUF5QkYseURBQWlCQSxDQUFDLHNCQUFzQjtJQUNuRSxPQUFPLENBQUM7SUFDUixZQUFZLENBQUM7QUFDakI7QUFDQTs7Ozs7Q0FLQyxHQUFVLElBQU1HLDRCQUE0QjtXQUFJRixzREFBY0EsQ0FBQyxzQkFBc0I7UUFDOUUsT0FBTyxDQUFDO1FBQ1IsWUFBWSxDQUFDO0lBQ2pCO0VBQUc7QUFDUCxjQUFjLEdBQVUsU0FBU0csNkJBQTZCQyxPQUFPO0lBQ2pFLGdFQUFnRTtJQUNoRSxJQUFNQyxRQUFRSix1QkFBdUIsUUFBUTtJQUM3QyxJQUFNSyxXQUFXRixRQUFRQztJQUN6QixJQUFJQyxhQUFhRCxPQUFPO1FBQ3BCSix1QkFBdUIsUUFBUSxDQUFDSztJQUNwQztBQUNKO0FBQ0E7OztDQUdDLEdBQVUsSUFBTUMsb0JBQW9CO1dBQUlQLHNEQUFjQSxDQUFDLGNBQWM7UUFDOUQsT0FBTyxDQUFDO0lBQ1o7RUFBRztBQUNQOzs7O0NBSUMsR0FBR1EsMkJBQTJCUCx1QkFBdUIsUUFBUTtBQUM5REEsdUJBQXVCLFNBQVMsQ0FBQ087QUFDakMsU0FBU0EsMkJBQTJCQyxjQUFjO0lBQzlDLElBQU1DLHlCQUF5QixFQUFFO1FBQzVCQyxrQ0FBQUEsMkJBQUFBOztRQUFMLFFBQUtBLFlBQXFCQyxPQUFPLE1BQU0sQ0FBQ0gsZUFBZSxVQUFVLHNCQUE1REUsU0FBQUEsNkJBQUFBLFFBQUFBLHlCQUFBQSxpQ0FBOEQ7WUFBOURBLElBQUlFLGdCQUFKRjtnQkFDSUcsbUNBQUFBLDRCQUFBQTs7Z0JBQUwsUUFBS0EsYUFBZ0JELGNBQWMsU0FBUyxxQkFBdkNDLFVBQUFBLDhCQUFBQSxTQUFBQSwwQkFBQUEsa0NBQXdDO29CQUF4Q0EsSUFBSUMsV0FBSkQ7b0JBQ0RKLHVCQUF1QixJQUFJLENBQUM7d0JBQ3hCLGdCQUFnQkssU0FBUyxjQUFjO3dCQUN2QyxxQkFBcUJGLGNBQWMsVUFBVTt3QkFDN0MsVUFBVUUsU0FBUyxRQUFRO3dCQUMzQixhQUFhQSxTQUFTLEVBQUU7b0JBQzVCO2dCQUNKOztnQkFQS0Q7Z0JBQUFBOzs7eUJBQUFBLDhCQUFBQTt3QkFBQUE7Ozt3QkFBQUE7OEJBQUFBOzs7O1FBUVQ7O1FBVEtIO1FBQUFBOzs7aUJBQUFBLDZCQUFBQTtnQkFBQUE7OztnQkFBQUE7c0JBQUFBOzs7O0lBVUwsSUFBSSxDQUFDZCx5Q0FBT0EsQ0FBQ0Msa0VBQTZCLEdBQUcsaUJBQWlCLEVBQUVZLHlCQUF5QjtRQUNyRlosa0VBQTZCLENBQUM7WUFDMUIsbUJBQW1CWTtRQUN2QjtJQUNKO0FBQ0oifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/dist/store.js\n\n}");
5788
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n batchExtensionUpdates: () => (batchExtensionUpdates),\n getExtensionInternalStore: () => (getExtensionInternalStore),\n getExtensionRenderingsStore: () => (getExtensionRenderingsStore),\n getExtensionStore: () => (getExtensionStore),\n registerExtensionRendering: () => (registerExtensionRendering),\n scheduleRecomputation: () => (scheduleRecomputation),\n unregisterExtensionRendering: () => (unregisterExtensionRendering),\n updateInternalExtensionStore: () => (updateInternalExtensionStore)\n});\n/* import */ var _openmrs_esm_config__rspack_import_0 = __webpack_require__(\"../../framework/esm-config/dist/index.js\");\n/* import */ var _openmrs_esm_state__rspack_import_1 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/** @module @category Extension */ \n\nvar extensionInternalStore = (0,_openmrs_esm_state__rspack_import_1.createGlobalStore)('extensionsInternal', {\n slots: {},\n extensions: {}\n});\nvar extensionRenderingsStore = (0,_openmrs_esm_state__rspack_import_1.createGlobalStore)('extensionRenderings', {\n renderings: new Map()\n});\n/**\n * This gets the extension system's internal store. It is subject\n * to change radically and without warning. It should not be used\n * outside esm-core.\n * @internal\n */ var getExtensionInternalStore = function getExtensionInternalStore() {\n return (0,_openmrs_esm_state__rspack_import_1.getGlobalStore)('extensionsInternal', {\n slots: {},\n extensions: {}\n });\n};\n/**\n * This gets the store of extension renderings currently on screen. Renderings are added by\n * `renderExtension` and removed once their parcel is gone — whether it unmounted, failed to load,\n * or failed to mount. It is subject to change radically and without warning. It should not be\n * used outside esm-core.\n * @internal\n */ var getExtensionRenderingsStore = function getExtensionRenderingsStore() {\n return (0,_openmrs_esm_state__rspack_import_1.getGlobalStore)('extensionRenderings', {\n renderings: new Map()\n });\n};\n/** @internal */ function updateInternalExtensionStore(updater) {\n // Skips the write entirely when the updater returns the state it was given.\n var state = extensionInternalStore.getState();\n var newState = updater(state);\n if (newState !== state) {\n extensionInternalStore.setState(newState);\n }\n}\n/**\n * The rendering map this module owns and mutates, and the state object it last published. A current\n * state that isn't the published one means someone else wrote the store, and the map and the record\n * counts below have to be rebuilt from it.\n */ var ownedRenderings = null;\nvar publishedRenderings = null;\nfunction currentRenderings() {\n var state = extensionRenderingsStore.getState();\n if (!ownedRenderings || state !== publishedRenderings) {\n ownedRenderings = new Map(state.renderings);\n publishedRenderings = state;\n rebuildConfigExtensionRecords(ownedRenderings);\n }\n return ownedRenderings;\n}\nfunction publishRenderings(renderings) {\n publishedRenderings = {\n renderings: renderings\n };\n extensionRenderingsStore.setState(publishedRenderings, true);\n}\n/** @internal */ function registerExtensionRendering(rendering) {\n var renderings = currentRenderings();\n if (renderings.has(rendering.renderingId)) {\n return;\n }\n renderings.set(rendering.renderingId, rendering);\n countRenderingRecord(rendering, 1);\n publishRenderings(renderings);\n}\n/** @internal */ function unregisterExtensionRendering(renderingId) {\n var renderings = currentRenderings();\n var rendering = renderings.get(renderingId);\n if (!rendering) {\n return;\n }\n renderings.delete(renderingId);\n countRenderingRecord(rendering, -1);\n publishRenderings(renderings);\n}\n/**\n * This returns a store that modules can use to get information about the\n * state of the extension system.\n */ var getExtensionStore = function getExtensionStore() {\n return (0,_openmrs_esm_state__rspack_import_1.getGlobalStore)('extensions', {\n slots: {}\n });\n};\nvar batchDepth = 0;\nvar pendingRecomputations = new Set();\n/**\n * Recomputing the extension system's derived state is eager: each write to one of its input\n * stores immediately re-derives the output store and the config bridge. `batchExtensionUpdates`\n * defers that work until `fn` returns, so a burst of related writes — registering all of an\n * app's extensions, say — costs one recomputation rather than one per write.\n *\n * Calls nest, and only the outermost one flushes. `fn` must be synchronous: the batch ends when\n * `fn` returns, so anything written after an `await` is not batched.\n * @internal\n */ function batchExtensionUpdates(fn) {\n batchDepth++;\n try {\n return fn();\n } finally{\n batchDepth--;\n if (batchDepth === 0 && pendingRecomputations.size > 0) {\n var pending = Array.from(pendingRecomputations);\n pendingRecomputations.clear();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = pending[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var recompute = _step.value;\n // Isolated so one failure doesn't drop the recomputations queued behind it, and so an\n // exception here can't escape the `finally` and replace one thrown by `fn` itself.\n runRecomputation(recompute);\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 }\n }\n}\n/**\n * Simple wrapper to ensure recomputations do not throw during store state updates, as this\n * can block other consumers.\n */ function runRecomputation(recompute) {\n try {\n recompute();\n } catch (e) {\n console.error(\"The extension system's '\".concat(recompute.name, \"' recomputation failed\"), e);\n }\n}\n/**\n * Runs `recompute` now, or defers it to the end of the enclosing `batchExtensionUpdates` call.\n * Deferred callbacks are de-duplicated, so a batch ends in one pass per derived target.\n * @internal\n */ function scheduleRecomputation(recompute) {\n if (batchDepth > 0) {\n pendingRecomputations.add(recompute);\n } else {\n runRecomputation(recompute);\n }\n}\n/**\n * esm-config keeps its own store of what it needs to derive extension configs. It derives one config\n * per extension instance in a slot, so renderings of the same instance collapse into a single record;\n * these count how many stand behind each.\n *\n * Counted as renderings come and go rather than rebuilt from the store: an application has thousands\n * on screen at once, so rebuilding would make every mount cost a walk over all of them.\n */ var configExtensionRecordCounts = new Map();\nvar configExtensionRecordsChanged = false;\nupdateConfigExtensionStoreToCurrent();\nextensionRenderingsStore.subscribe(function() {\n return scheduleRecomputation(updateConfigExtensionStoreToCurrent);\n});\n/**\n * Adjusts the count behind one record, marking the records changed only when the *set* of them\n * changes rather than merely the count behind one.\n */ function countRenderingRecord(rendering, delta) {\n var key = JSON.stringify([\n rendering.slotName,\n rendering.extensionId,\n rendering.slotModuleName,\n rendering.extensionModuleName\n ]);\n var counted = configExtensionRecordCounts.get(key);\n if (!counted) {\n if (delta < 0) {\n return;\n }\n configExtensionRecordCounts.set(key, {\n count: 1,\n record: {\n slotModuleName: rendering.slotModuleName,\n extensionModuleName: rendering.extensionModuleName,\n slotName: rendering.slotName,\n extensionId: rendering.extensionId\n }\n });\n configExtensionRecordsChanged = true;\n return;\n }\n counted.count += delta;\n if (counted.count < 1) {\n configExtensionRecordCounts.delete(key);\n configExtensionRecordsChanged = true;\n }\n}\nfunction rebuildConfigExtensionRecords(renderings) {\n configExtensionRecordCounts.clear();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = renderings.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var rendering = _step.value;\n countRenderingRecord(rendering, 1);\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 configExtensionRecordsChanged = true;\n}\nfunction updateConfigExtensionStoreToCurrent() {\n // Catches a write that bypassed the helpers above, which has to rebuild the counts.\n currentRenderings();\n if (!configExtensionRecordsChanged) {\n return;\n }\n configExtensionRecordsChanged = false;\n var configExtensionRecords = Array.from(configExtensionRecordCounts.values(), function(param) {\n var record = param.record;\n return record;\n });\n // Compared as an array, so an unstable order would look like a change and trigger a full config\n // recomputation every time a rendering is remounted in a different position.\n configExtensionRecords.sort(compareConfigExtensionRecords);\n if (!sameConfigExtensionRecords(_openmrs_esm_config__rspack_import_0.configExtensionStore.getState().mountedExtensions, configExtensionRecords)) {\n _openmrs_esm_config__rspack_import_0.configExtensionStore.setState({\n mountedExtensions: configExtensionRecords\n });\n }\n}\n/**\n * Deep-equality predicate for arrays of `ConfigExtensionStoreElement`, defined in terms of\n * {@link compareConfigExtensionRecords} so that ordering and equality cannot drift apart.\n */ function sameConfigExtensionRecords(a, b) {\n return a.length === b.length && a.every(function(record, i) {\n return compareConfigExtensionRecords(record, b[i]) === 0;\n });\n}\n/**\n * Orders records by their four identifying strings. No collation is used as these are internal\n * identifiers.\n */ function compareConfigExtensionRecords(a, b) {\n return compareStrings(a.slotName, b.slotName) || compareStrings(a.extensionId, b.extensionId) || compareStrings(a.slotModuleName, b.slotModuleName) || compareStrings(a.extensionModuleName, b.extensionModuleName);\n}\nfunction compareStrings(a, b) {\n if (a === b) {\n return 0;\n }\n return a < b ? -1 : 1;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvZGlzdC9zdG9yZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL2Rpc3Qvc3RvcmUuanM/NmQyZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRXh0ZW5zaW9uICovIGltcG9ydCB7IGNvbmZpZ0V4dGVuc2lvblN0b3JlIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1jb25maWdcIjtcbmltcG9ydCB7IGNyZWF0ZUdsb2JhbFN0b3JlLCBnZXRHbG9iYWxTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmNvbnN0IGV4dGVuc2lvbkludGVybmFsU3RvcmUgPSBjcmVhdGVHbG9iYWxTdG9yZSgnZXh0ZW5zaW9uc0ludGVybmFsJywge1xuICAgIHNsb3RzOiB7fSxcbiAgICBleHRlbnNpb25zOiB7fVxufSk7XG5jb25zdCBleHRlbnNpb25SZW5kZXJpbmdzU3RvcmUgPSBjcmVhdGVHbG9iYWxTdG9yZSgnZXh0ZW5zaW9uUmVuZGVyaW5ncycsIHtcbiAgICByZW5kZXJpbmdzOiBuZXcgTWFwKClcbn0pO1xuLyoqXG4gKiBUaGlzIGdldHMgdGhlIGV4dGVuc2lvbiBzeXN0ZW0ncyBpbnRlcm5hbCBzdG9yZS4gSXQgaXMgc3ViamVjdFxuICogdG8gY2hhbmdlIHJhZGljYWxseSBhbmQgd2l0aG91dCB3YXJuaW5nLiBJdCBzaG91bGQgbm90IGJlIHVzZWRcbiAqIG91dHNpZGUgZXNtLWNvcmUuXG4gKiBAaW50ZXJuYWxcbiAqLyBleHBvcnQgY29uc3QgZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSA9ICgpPT5nZXRHbG9iYWxTdG9yZSgnZXh0ZW5zaW9uc0ludGVybmFsJywge1xuICAgICAgICBzbG90czoge30sXG4gICAgICAgIGV4dGVuc2lvbnM6IHt9XG4gICAgfSk7XG4vKipcbiAqIFRoaXMgZ2V0cyB0aGUgc3RvcmUgb2YgZXh0ZW5zaW9uIHJlbmRlcmluZ3MgY3VycmVudGx5IG9uIHNjcmVlbi4gUmVuZGVyaW5ncyBhcmUgYWRkZWQgYnlcbiAqIGByZW5kZXJFeHRlbnNpb25gIGFuZCByZW1vdmVkIG9uY2UgdGhlaXIgcGFyY2VsIGlzIGdvbmUg4oCUIHdoZXRoZXIgaXQgdW5tb3VudGVkLCBmYWlsZWQgdG8gbG9hZCxcbiAqIG9yIGZhaWxlZCB0byBtb3VudC4gSXQgaXMgc3ViamVjdCB0byBjaGFuZ2UgcmFkaWNhbGx5IGFuZCB3aXRob3V0IHdhcm5pbmcuIEl0IHNob3VsZCBub3QgYmVcbiAqIHVzZWQgb3V0c2lkZSBlc20tY29yZS5cbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBjb25zdCBnZXRFeHRlbnNpb25SZW5kZXJpbmdzU3RvcmUgPSAoKT0+Z2V0R2xvYmFsU3RvcmUoJ2V4dGVuc2lvblJlbmRlcmluZ3MnLCB7XG4gICAgICAgIHJlbmRlcmluZ3M6IG5ldyBNYXAoKVxuICAgIH0pO1xuLyoqIEBpbnRlcm5hbCAqLyBleHBvcnQgZnVuY3Rpb24gdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSh1cGRhdGVyKSB7XG4gICAgLy8gU2tpcHMgdGhlIHdyaXRlIGVudGlyZWx5IHdoZW4gdGhlIHVwZGF0ZXIgcmV0dXJucyB0aGUgc3RhdGUgaXQgd2FzIGdpdmVuLlxuICAgIGNvbnN0IHN0YXRlID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IG5ld1N0YXRlID0gdXBkYXRlcihzdGF0ZSk7XG4gICAgaWYgKG5ld1N0YXRlICE9PSBzdGF0ZSkge1xuICAgICAgICBleHRlbnNpb25JbnRlcm5hbFN0b3JlLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICB9XG59XG4vKipcbiAqIFRoZSByZW5kZXJpbmcgbWFwIHRoaXMgbW9kdWxlIG93bnMgYW5kIG11dGF0ZXMsIGFuZCB0aGUgc3RhdGUgb2JqZWN0IGl0IGxhc3QgcHVibGlzaGVkLiBBIGN1cnJlbnRcbiAqIHN0YXRlIHRoYXQgaXNuJ3QgdGhlIHB1Ymxpc2hlZCBvbmUgbWVhbnMgc29tZW9uZSBlbHNlIHdyb3RlIHRoZSBzdG9yZSwgYW5kIHRoZSBtYXAgYW5kIHRoZSByZWNvcmRcbiAqIGNvdW50cyBiZWxvdyBoYXZlIHRvIGJlIHJlYnVpbHQgZnJvbSBpdC5cbiAqLyBsZXQgb3duZWRSZW5kZXJpbmdzID0gbnVsbDtcbmxldCBwdWJsaXNoZWRSZW5kZXJpbmdzID0gbnVsbDtcbmZ1bmN0aW9uIGN1cnJlbnRSZW5kZXJpbmdzKCkge1xuICAgIGNvbnN0IHN0YXRlID0gZXh0ZW5zaW9uUmVuZGVyaW5nc1N0b3JlLmdldFN0YXRlKCk7XG4gICAgaWYgKCFvd25lZFJlbmRlcmluZ3MgfHwgc3RhdGUgIT09IHB1Ymxpc2hlZFJlbmRlcmluZ3MpIHtcbiAgICAgICAgb3duZWRSZW5kZXJpbmdzID0gbmV3IE1hcChzdGF0ZS5yZW5kZXJpbmdzKTtcbiAgICAgICAgcHVibGlzaGVkUmVuZGVyaW5ncyA9IHN0YXRlO1xuICAgICAgICByZWJ1aWxkQ29uZmlnRXh0ZW5zaW9uUmVjb3Jkcyhvd25lZFJlbmRlcmluZ3MpO1xuICAgIH1cbiAgICByZXR1cm4gb3duZWRSZW5kZXJpbmdzO1xufVxuZnVuY3Rpb24gcHVibGlzaFJlbmRlcmluZ3MocmVuZGVyaW5ncykge1xuICAgIHB1Ymxpc2hlZFJlbmRlcmluZ3MgPSB7XG4gICAgICAgIHJlbmRlcmluZ3NcbiAgICB9O1xuICAgIGV4dGVuc2lvblJlbmRlcmluZ3NTdG9yZS5zZXRTdGF0ZShwdWJsaXNoZWRSZW5kZXJpbmdzLCB0cnVlKTtcbn1cbi8qKiBAaW50ZXJuYWwgKi8gZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRXh0ZW5zaW9uUmVuZGVyaW5nKHJlbmRlcmluZykge1xuICAgIGNvbnN0IHJlbmRlcmluZ3MgPSBjdXJyZW50UmVuZGVyaW5ncygpO1xuICAgIGlmIChyZW5kZXJpbmdzLmhhcyhyZW5kZXJpbmcucmVuZGVyaW5nSWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVuZGVyaW5ncy5zZXQocmVuZGVyaW5nLnJlbmRlcmluZ0lkLCByZW5kZXJpbmcpO1xuICAgIGNvdW50UmVuZGVyaW5nUmVjb3JkKHJlbmRlcmluZywgMSk7XG4gICAgcHVibGlzaFJlbmRlcmluZ3MocmVuZGVyaW5ncyk7XG59XG4vKiogQGludGVybmFsICovIGV4cG9ydCBmdW5jdGlvbiB1bnJlZ2lzdGVyRXh0ZW5zaW9uUmVuZGVyaW5nKHJlbmRlcmluZ0lkKSB7XG4gICAgY29uc3QgcmVuZGVyaW5ncyA9IGN1cnJlbnRSZW5kZXJpbmdzKCk7XG4gICAgY29uc3QgcmVuZGVyaW5nID0gcmVuZGVyaW5ncy5nZXQocmVuZGVyaW5nSWQpO1xuICAgIGlmICghcmVuZGVyaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVuZGVyaW5ncy5kZWxldGUocmVuZGVyaW5nSWQpO1xuICAgIGNvdW50UmVuZGVyaW5nUmVjb3JkKHJlbmRlcmluZywgLTEpO1xuICAgIHB1Ymxpc2hSZW5kZXJpbmdzKHJlbmRlcmluZ3MpO1xufVxuLyoqXG4gKiBUaGlzIHJldHVybnMgYSBzdG9yZSB0aGF0IG1vZHVsZXMgY2FuIHVzZSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gKiBzdGF0ZSBvZiB0aGUgZXh0ZW5zaW9uIHN5c3RlbS5cbiAqLyBleHBvcnQgY29uc3QgZ2V0RXh0ZW5zaW9uU3RvcmUgPSAoKT0+Z2V0R2xvYmFsU3RvcmUoJ2V4dGVuc2lvbnMnLCB7XG4gICAgICAgIHNsb3RzOiB7fVxuICAgIH0pO1xubGV0IGJhdGNoRGVwdGggPSAwO1xuY29uc3QgcGVuZGluZ1JlY29tcHV0YXRpb25zID0gbmV3IFNldCgpO1xuLyoqXG4gKiBSZWNvbXB1dGluZyB0aGUgZXh0ZW5zaW9uIHN5c3RlbSdzIGRlcml2ZWQgc3RhdGUgaXMgZWFnZXI6IGVhY2ggd3JpdGUgdG8gb25lIG9mIGl0cyBpbnB1dFxuICogc3RvcmVzIGltbWVkaWF0ZWx5IHJlLWRlcml2ZXMgdGhlIG91dHB1dCBzdG9yZSBhbmQgdGhlIGNvbmZpZyBicmlkZ2UuIGBiYXRjaEV4dGVuc2lvblVwZGF0ZXNgXG4gKiBkZWZlcnMgdGhhdCB3b3JrIHVudGlsIGBmbmAgcmV0dXJucywgc28gYSBidXJzdCBvZiByZWxhdGVkIHdyaXRlcyDigJQgcmVnaXN0ZXJpbmcgYWxsIG9mIGFuXG4gKiBhcHAncyBleHRlbnNpb25zLCBzYXkg4oCUIGNvc3RzIG9uZSByZWNvbXB1dGF0aW9uIHJhdGhlciB0aGFuIG9uZSBwZXIgd3JpdGUuXG4gKlxuICogQ2FsbHMgbmVzdCwgYW5kIG9ubHkgdGhlIG91dGVybW9zdCBvbmUgZmx1c2hlcy4gYGZuYCBtdXN0IGJlIHN5bmNocm9ub3VzOiB0aGUgYmF0Y2ggZW5kcyB3aGVuXG4gKiBgZm5gIHJldHVybnMsIHNvIGFueXRoaW5nIHdyaXR0ZW4gYWZ0ZXIgYW4gYGF3YWl0YCBpcyBub3QgYmF0Y2hlZC5cbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiBiYXRjaEV4dGVuc2lvblVwZGF0ZXMoZm4pIHtcbiAgICBiYXRjaERlcHRoKys7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgfSBmaW5hbGx5e1xuICAgICAgICBiYXRjaERlcHRoLS07XG4gICAgICAgIGlmIChiYXRjaERlcHRoID09PSAwICYmIHBlbmRpbmdSZWNvbXB1dGF0aW9ucy5zaXplID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcGVuZGluZyA9IEFycmF5LmZyb20ocGVuZGluZ1JlY29tcHV0YXRpb25zKTtcbiAgICAgICAgICAgIHBlbmRpbmdSZWNvbXB1dGF0aW9ucy5jbGVhcigpO1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvbXB1dGUgb2YgcGVuZGluZyl7XG4gICAgICAgICAgICAgICAgLy8gSXNvbGF0ZWQgc28gb25lIGZhaWx1cmUgZG9lc24ndCBkcm9wIHRoZSByZWNvbXB1dGF0aW9ucyBxdWV1ZWQgYmVoaW5kIGl0LCBhbmQgc28gYW5cbiAgICAgICAgICAgICAgICAvLyBleGNlcHRpb24gaGVyZSBjYW4ndCBlc2NhcGUgdGhlIGBmaW5hbGx5YCBhbmQgcmVwbGFjZSBvbmUgdGhyb3duIGJ5IGBmbmAgaXRzZWxmLlxuICAgICAgICAgICAgICAgIHJ1blJlY29tcHV0YXRpb24ocmVjb21wdXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8qKlxuICogU2ltcGxlIHdyYXBwZXIgdG8gZW5zdXJlIHJlY29tcHV0YXRpb25zIGRvIG5vdCB0aHJvdyBkdXJpbmcgc3RvcmUgc3RhdGUgdXBkYXRlcywgYXMgdGhpc1xuICogY2FuIGJsb2NrIG90aGVyIGNvbnN1bWVycy5cbiAqLyBmdW5jdGlvbiBydW5SZWNvbXB1dGF0aW9uKHJlY29tcHV0ZSkge1xuICAgIHRyeSB7XG4gICAgICAgIHJlY29tcHV0ZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIGV4dGVuc2lvbiBzeXN0ZW0ncyAnJHtyZWNvbXB1dGUubmFtZX0nIHJlY29tcHV0YXRpb24gZmFpbGVkYCwgZSk7XG4gICAgfVxufVxuLyoqXG4gKiBSdW5zIGByZWNvbXB1dGVgIG5vdywgb3IgZGVmZXJzIGl0IHRvIHRoZSBlbmQgb2YgdGhlIGVuY2xvc2luZyBgYmF0Y2hFeHRlbnNpb25VcGRhdGVzYCBjYWxsLlxuICogRGVmZXJyZWQgY2FsbGJhY2tzIGFyZSBkZS1kdXBsaWNhdGVkLCBzbyBhIGJhdGNoIGVuZHMgaW4gb25lIHBhc3MgcGVyIGRlcml2ZWQgdGFyZ2V0LlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHNjaGVkdWxlUmVjb21wdXRhdGlvbihyZWNvbXB1dGUpIHtcbiAgICBpZiAoYmF0Y2hEZXB0aCA+IDApIHtcbiAgICAgICAgcGVuZGluZ1JlY29tcHV0YXRpb25zLmFkZChyZWNvbXB1dGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJ1blJlY29tcHV0YXRpb24ocmVjb21wdXRlKTtcbiAgICB9XG59XG4vKipcbiAqIGVzbS1jb25maWcga2VlcHMgaXRzIG93biBzdG9yZSBvZiB3aGF0IGl0IG5lZWRzIHRvIGRlcml2ZSBleHRlbnNpb24gY29uZmlncy4gSXQgZGVyaXZlcyBvbmUgY29uZmlnXG4gKiBwZXIgZXh0ZW5zaW9uIGluc3RhbmNlIGluIGEgc2xvdCwgc28gcmVuZGVyaW5ncyBvZiB0aGUgc2FtZSBpbnN0YW5jZSBjb2xsYXBzZSBpbnRvIGEgc2luZ2xlIHJlY29yZDtcbiAqIHRoZXNlIGNvdW50IGhvdyBtYW55IHN0YW5kIGJlaGluZCBlYWNoLlxuICpcbiAqIENvdW50ZWQgYXMgcmVuZGVyaW5ncyBjb21lIGFuZCBnbyByYXRoZXIgdGhhbiByZWJ1aWx0IGZyb20gdGhlIHN0b3JlOiBhbiBhcHBsaWNhdGlvbiBoYXMgdGhvdXNhbmRzXG4gKiBvbiBzY3JlZW4gYXQgb25jZSwgc28gcmVidWlsZGluZyB3b3VsZCBtYWtlIGV2ZXJ5IG1vdW50IGNvc3QgYSB3YWxrIG92ZXIgYWxsIG9mIHRoZW0uXG4gKi8gY29uc3QgY29uZmlnRXh0ZW5zaW9uUmVjb3JkQ291bnRzID0gbmV3IE1hcCgpO1xubGV0IGNvbmZpZ0V4dGVuc2lvblJlY29yZHNDaGFuZ2VkID0gZmFsc2U7XG51cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZVRvQ3VycmVudCgpO1xuZXh0ZW5zaW9uUmVuZGVyaW5nc1N0b3JlLnN1YnNjcmliZSgoKT0+c2NoZWR1bGVSZWNvbXB1dGF0aW9uKHVwZGF0ZUNvbmZpZ0V4dGVuc2lvblN0b3JlVG9DdXJyZW50KSk7XG4vKipcbiAqIEFkanVzdHMgdGhlIGNvdW50IGJlaGluZCBvbmUgcmVjb3JkLCBtYXJraW5nIHRoZSByZWNvcmRzIGNoYW5nZWQgb25seSB3aGVuIHRoZSAqc2V0KiBvZiB0aGVtXG4gKiBjaGFuZ2VzIHJhdGhlciB0aGFuIG1lcmVseSB0aGUgY291bnQgYmVoaW5kIG9uZS5cbiAqLyBmdW5jdGlvbiBjb3VudFJlbmRlcmluZ1JlY29yZChyZW5kZXJpbmcsIGRlbHRhKSB7XG4gICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICByZW5kZXJpbmcuc2xvdE5hbWUsXG4gICAgICAgIHJlbmRlcmluZy5leHRlbnNpb25JZCxcbiAgICAgICAgcmVuZGVyaW5nLnNsb3RNb2R1bGVOYW1lLFxuICAgICAgICByZW5kZXJpbmcuZXh0ZW5zaW9uTW9kdWxlTmFtZVxuICAgIF0pO1xuICAgIGNvbnN0IGNvdW50ZWQgPSBjb25maWdFeHRlbnNpb25SZWNvcmRDb3VudHMuZ2V0KGtleSk7XG4gICAgaWYgKCFjb3VudGVkKSB7XG4gICAgICAgIGlmIChkZWx0YSA8IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25maWdFeHRlbnNpb25SZWNvcmRDb3VudHMuc2V0KGtleSwge1xuICAgICAgICAgICAgY291bnQ6IDEsXG4gICAgICAgICAgICByZWNvcmQ6IHtcbiAgICAgICAgICAgICAgICBzbG90TW9kdWxlTmFtZTogcmVuZGVyaW5nLnNsb3RNb2R1bGVOYW1lLFxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbk1vZHVsZU5hbWU6IHJlbmRlcmluZy5leHRlbnNpb25Nb2R1bGVOYW1lLFxuICAgICAgICAgICAgICAgIHNsb3ROYW1lOiByZW5kZXJpbmcuc2xvdE5hbWUsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uSWQ6IHJlbmRlcmluZy5leHRlbnNpb25JZFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uZmlnRXh0ZW5zaW9uUmVjb3Jkc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvdW50ZWQuY291bnQgKz0gZGVsdGE7XG4gICAgaWYgKGNvdW50ZWQuY291bnQgPCAxKSB7XG4gICAgICAgIGNvbmZpZ0V4dGVuc2lvblJlY29yZENvdW50cy5kZWxldGUoa2V5KTtcbiAgICAgICAgY29uZmlnRXh0ZW5zaW9uUmVjb3Jkc0NoYW5nZWQgPSB0cnVlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlYnVpbGRDb25maWdFeHRlbnNpb25SZWNvcmRzKHJlbmRlcmluZ3MpIHtcbiAgICBjb25maWdFeHRlbnNpb25SZWNvcmRDb3VudHMuY2xlYXIoKTtcbiAgICBmb3IgKGNvbnN0IHJlbmRlcmluZyBvZiByZW5kZXJpbmdzLnZhbHVlcygpKXtcbiAgICAgICAgY291bnRSZW5kZXJpbmdSZWNvcmQocmVuZGVyaW5nLCAxKTtcbiAgICB9XG4gICAgY29uZmlnRXh0ZW5zaW9uUmVjb3Jkc0NoYW5nZWQgPSB0cnVlO1xufVxuZnVuY3Rpb24gdXBkYXRlQ29uZmlnRXh0ZW5zaW9uU3RvcmVUb0N1cnJlbnQoKSB7XG4gICAgLy8gQ2F0Y2hlcyBhIHdyaXRlIHRoYXQgYnlwYXNzZWQgdGhlIGhlbHBlcnMgYWJvdmUsIHdoaWNoIGhhcyB0byByZWJ1aWxkIHRoZSBjb3VudHMuXG4gICAgY3VycmVudFJlbmRlcmluZ3MoKTtcbiAgICBpZiAoIWNvbmZpZ0V4dGVuc2lvblJlY29yZHNDaGFuZ2VkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uZmlnRXh0ZW5zaW9uUmVjb3Jkc0NoYW5nZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjb25maWdFeHRlbnNpb25SZWNvcmRzID0gQXJyYXkuZnJvbShjb25maWdFeHRlbnNpb25SZWNvcmRDb3VudHMudmFsdWVzKCksICh7IHJlY29yZCB9KT0+cmVjb3JkKTtcbiAgICAvLyBDb21wYXJlZCBhcyBhbiBhcnJheSwgc28gYW4gdW5zdGFibGUgb3JkZXIgd291bGQgbG9vayBsaWtlIGEgY2hhbmdlIGFuZCB0cmlnZ2VyIGEgZnVsbCBjb25maWdcbiAgICAvLyByZWNvbXB1dGF0aW9uIGV2ZXJ5IHRpbWUgYSByZW5kZXJpbmcgaXMgcmVtb3VudGVkIGluIGEgZGlmZmVyZW50IHBvc2l0aW9uLlxuICAgIGNvbmZpZ0V4dGVuc2lvblJlY29yZHMuc29ydChjb21wYXJlQ29uZmlnRXh0ZW5zaW9uUmVjb3Jkcyk7XG4gICAgaWYgKCFzYW1lQ29uZmlnRXh0ZW5zaW9uUmVjb3Jkcyhjb25maWdFeHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLm1vdW50ZWRFeHRlbnNpb25zLCBjb25maWdFeHRlbnNpb25SZWNvcmRzKSkge1xuICAgICAgICBjb25maWdFeHRlbnNpb25TdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBtb3VudGVkRXh0ZW5zaW9uczogY29uZmlnRXh0ZW5zaW9uUmVjb3Jkc1xuICAgICAgICB9KTtcbiAgICB9XG59XG4vKipcbiAqIERlZXAtZXF1YWxpdHkgcHJlZGljYXRlIGZvciBhcnJheXMgb2YgYENvbmZpZ0V4dGVuc2lvblN0b3JlRWxlbWVudGAsIGRlZmluZWQgaW4gdGVybXMgb2ZcbiAqIHtAbGluayBjb21wYXJlQ29uZmlnRXh0ZW5zaW9uUmVjb3Jkc30gc28gdGhhdCBvcmRlcmluZyBhbmQgZXF1YWxpdHkgY2Fubm90IGRyaWZ0IGFwYXJ0LlxuICovIGZ1bmN0aW9uIHNhbWVDb25maWdFeHRlbnNpb25SZWNvcmRzKGEsIGIpIHtcbiAgICByZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuZXZlcnkoKHJlY29yZCwgaSk9PmNvbXBhcmVDb25maWdFeHRlbnNpb25SZWNvcmRzKHJlY29yZCwgYltpXSkgPT09IDApO1xufVxuLyoqXG4gKiBPcmRlcnMgcmVjb3JkcyBieSB0aGVpciBmb3VyIGlkZW50aWZ5aW5nIHN0cmluZ3MuIE5vIGNvbGxhdGlvbiBpcyB1c2VkIGFzIHRoZXNlIGFyZSBpbnRlcm5hbFxuICogaWRlbnRpZmllcnMuXG4gKi8gZnVuY3Rpb24gY29tcGFyZUNvbmZpZ0V4dGVuc2lvblJlY29yZHMoYSwgYikge1xuICAgIHJldHVybiBjb21wYXJlU3RyaW5ncyhhLnNsb3ROYW1lLCBiLnNsb3ROYW1lKSB8fCBjb21wYXJlU3RyaW5ncyhhLmV4dGVuc2lvbklkLCBiLmV4dGVuc2lvbklkKSB8fCBjb21wYXJlU3RyaW5ncyhhLnNsb3RNb2R1bGVOYW1lLCBiLnNsb3RNb2R1bGVOYW1lKSB8fCBjb21wYXJlU3RyaW5ncyhhLmV4dGVuc2lvbk1vZHVsZU5hbWUsIGIuZXh0ZW5zaW9uTW9kdWxlTmFtZSk7XG59XG5mdW5jdGlvbiBjb21wYXJlU3RyaW5ncyhhLCBiKSB7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBhIDwgYiA/IC0xIDogMTtcbn1cbiJdLCJuYW1lcyI6WyJjb25maWdFeHRlbnNpb25TdG9yZSIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiZ2V0R2xvYmFsU3RvcmUiLCJleHRlbnNpb25JbnRlcm5hbFN0b3JlIiwiZXh0ZW5zaW9uUmVuZGVyaW5nc1N0b3JlIiwiTWFwIiwiZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSIsImdldEV4dGVuc2lvblJlbmRlcmluZ3NTdG9yZSIsInVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUiLCJ1cGRhdGVyIiwic3RhdGUiLCJuZXdTdGF0ZSIsIm93bmVkUmVuZGVyaW5ncyIsInB1Ymxpc2hlZFJlbmRlcmluZ3MiLCJjdXJyZW50UmVuZGVyaW5ncyIsInJlYnVpbGRDb25maWdFeHRlbnNpb25SZWNvcmRzIiwicHVibGlzaFJlbmRlcmluZ3MiLCJyZW5kZXJpbmdzIiwicmVnaXN0ZXJFeHRlbnNpb25SZW5kZXJpbmciLCJyZW5kZXJpbmciLCJjb3VudFJlbmRlcmluZ1JlY29yZCIsInVucmVnaXN0ZXJFeHRlbnNpb25SZW5kZXJpbmciLCJyZW5kZXJpbmdJZCIsImdldEV4dGVuc2lvblN0b3JlIiwiYmF0Y2hEZXB0aCIsInBlbmRpbmdSZWNvbXB1dGF0aW9ucyIsIlNldCIsImJhdGNoRXh0ZW5zaW9uVXBkYXRlcyIsImZuIiwicGVuZGluZyIsIkFycmF5IiwiX2l0ZXJhdG9yRXJyb3IiLCJyZWNvbXB1dGUiLCJydW5SZWNvbXB1dGF0aW9uIiwiZSIsImNvbnNvbGUiLCJzY2hlZHVsZVJlY29tcHV0YXRpb24iLCJjb25maWdFeHRlbnNpb25SZWNvcmRDb3VudHMiLCJjb25maWdFeHRlbnNpb25SZWNvcmRzQ2hhbmdlZCIsInVwZGF0ZUNvbmZpZ0V4dGVuc2lvblN0b3JlVG9DdXJyZW50IiwiZGVsdGEiLCJrZXkiLCJKU09OIiwiY291bnRlZCIsImNvbmZpZ0V4dGVuc2lvblJlY29yZHMiLCJyZWNvcmQiLCJjb21wYXJlQ29uZmlnRXh0ZW5zaW9uUmVjb3JkcyIsInNhbWVDb25maWdFeHRlbnNpb25SZWNvcmRzIiwiYSIsImIiLCJpIiwiY29tcGFyZVN0cmluZ3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FBOEQ7QUFDdkI7QUFDdkUsSUFBTUcseUJBQXlCRix5REFBaUJBLENBQUMsc0JBQXNCO0lBQ25FLE9BQU8sQ0FBQztJQUNSLFlBQVksQ0FBQztBQUNqQjtBQUNBLElBQU1HLDJCQUEyQkgseURBQWlCQSxDQUFDLHVCQUF1QjtJQUN0RSxZQUFZLElBQUlJO0FBQ3BCO0FBQ0E7Ozs7O0NBS0MsR0FBVSxJQUFNQyw0QkFBNEI7V0FBSUosc0RBQWNBLENBQUMsc0JBQXNCO1FBQzlFLE9BQU8sQ0FBQztRQUNSLFlBQVksQ0FBQztJQUNqQjtFQUFHO0FBQ1A7Ozs7OztDQU1DLEdBQVUsSUFBTUssOEJBQThCO1dBQUlMLHNEQUFjQSxDQUFDLHVCQUF1QjtRQUNqRixZQUFZLElBQUlHO0lBQ3BCO0VBQUc7QUFDUCxjQUFjLEdBQVUsU0FBU0csNkJBQTZCQyxPQUFPO0lBQ2pFLDRFQUE0RTtJQUM1RSxJQUFNQyxRQUFRUCx1QkFBdUIsUUFBUTtJQUM3QyxJQUFNUSxXQUFXRixRQUFRQztJQUN6QixJQUFJQyxhQUFhRCxPQUFPO1FBQ3BCUCx1QkFBdUIsUUFBUSxDQUFDUTtJQUNwQztBQUNKO0FBQ0E7Ozs7Q0FJQyxHQUFHLElBQUlDLGtCQUFrQjtBQUMxQixJQUFJQyxzQkFBc0I7QUFDMUIs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\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/dist/store.js\n\n}");
5789
5789
 
5790
5790
  },
5791
5791
  "../../framework/esm-extensions/dist/types.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -5805,7 +5805,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
5805
5805
  },
5806
5806
  "../../framework/esm-framework/dist/internal.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5807
5807
  "use strict";
5808
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n ActionMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ActionMenu),\n ActionMenuButton: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ActionMenuButton),\n ActionMenuButton2: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ActionMenuButton2),\n ActionableNotificationComponent: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ActionableNotificationComponent),\n ActivityIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ActivityIcon),\n AddIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.AddIcon),\n AllergiesIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.AllergiesIcon),\n AppointmentsAltPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.AppointmentsAltPictogram),\n AppointmentsPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.AppointmentsPictogram),\n ArrowDownIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ArrowDownIcon),\n ArrowLeftIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ArrowLeftIcon),\n ArrowRightIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ArrowRightIcon),\n ArrowUpIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ArrowUpIcon),\n Assessment1Pictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Assessment1Pictogram),\n Assessment2Pictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Assessment2Pictogram),\n AttachmentIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.AttachmentIcon),\n BabyIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.BabyIcon),\n BloodBankPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.BloodBankPictogram),\n Breakpoint: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Breakpoint),\n CalendarHeatMapIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CalendarHeatMapIcon),\n CalendarIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CalendarIcon),\n CardHeader: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CardHeader),\n CardiologyPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CardiologyPictogram),\n CaretDownIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CaretDownIcon),\n CaretLeftIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CaretLeftIcon),\n CaretRightIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CaretRightIcon),\n CaretUpIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CaretUpIcon),\n ChartAverageIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChartAverageIcon),\n ChartLineIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChartLineIcon),\n CheckmarkFilledIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CheckmarkFilledIcon),\n CheckmarkOutlineIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CheckmarkOutlineIcon),\n ChemistryIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChemistryIcon),\n ChevronDownIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChevronDownIcon),\n ChevronLeftIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChevronLeftIcon),\n ChevronRightIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChevronRightIcon),\n ChevronUpIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChevronUpIcon),\n CloseFilledIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CloseFilledIcon),\n CloseIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CloseIcon),\n CloseOutlineIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CloseOutlineIcon),\n ComponentContext: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.ComponentContext),\n ConditionsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ConditionsIcon),\n ConfigurableLink: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.ConfigurableLink),\n CtScanPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CtScanPictogram),\n CustomOverflowMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CustomOverflowMenu),\n CustomOverflowMenuItem: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CustomOverflowMenuItem),\n DashboardExtension: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DashboardExtension),\n DentistryPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DentistryPictogram),\n DiagnosisTags: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DiagnosisTags),\n DigitalTrustPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DigitalTrustPictogram),\n DocumentAttachmentIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DocumentAttachmentIcon),\n DocumentIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DocumentIcon),\n DownloadIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DownloadIcon),\n DrugOrderIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DrugOrderIcon),\n EditIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EditIcon),\n EmergencyDepartmentPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EmergencyDepartmentPictogram),\n EmptyCard: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EmptyCard),\n EmptyCardIllustration: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EmptyCardIllustration),\n ErrorCard: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ErrorCard),\n ErrorState: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ErrorState),\n EventScheduleIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EventScheduleIcon),\n EventsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EventsIcon),\n Extension: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.Extension),\n ExtensionSlot: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.ExtensionSlot),\n FacilityPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.FacilityPictogram),\n GenderFemaleIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GenderFemaleIcon),\n GenderMaleIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GenderMaleIcon),\n GenderOtherIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GenderOtherIcon),\n GenderUnknownIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GenderUnknownIcon),\n GenericOrderTypeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GenericOrderTypeIcon),\n GeriatricsPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GeriatricsPictogram),\n GroupAccessIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GroupAccessIcon),\n GroupIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GroupIcon),\n GynaecologyPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GynaecologyPictogram),\n HomePictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.HomePictogram),\n HospitalBedIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.HospitalBedIcon),\n Icon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Icon),\n ImageMedicalIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ImageMedicalIcon),\n InPatientPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.InPatientPictogram),\n InformationFilledIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.InformationFilledIcon),\n InformationIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.InformationIcon),\n InformationSquareIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.InformationSquareIcon),\n InventoryManagementIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.InventoryManagementIcon),\n LabOrderIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.LabOrderIcon),\n LaboratoryPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.LaboratoryPictogram),\n Labs2Pictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Labs2Pictogram),\n LeftNavMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.LeftNavMenu),\n ListCheckedIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ListCheckedIcon),\n LocationIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.LocationIcon),\n LocationPicker: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.LocationPicker),\n MaterialOrderIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MaterialOrderIcon),\n MaximizeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MaximizeIcon),\n MaybeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MaybeIcon),\n MaybePictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MaybePictogram),\n MedicationIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MedicationIcon),\n MessageQueueIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MessageQueueIcon),\n MicroscopeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MicroscopeIcon),\n MobileCheckIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MobileCheckIcon),\n MoneyIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MoneyIcon),\n MotherIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MotherIcon),\n MovementIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MovementIcon),\n Notification: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Notification),\n NumericObservation: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.NumericObservation),\n ObstetricsPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ObstetricsPictogram),\n OpenmrsAppContext: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.OpenmrsAppContext),\n OpenmrsDatePicker: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.OpenmrsDatePicker),\n OpenmrsDateRangePicker: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.OpenmrsDateRangePicker),\n OpenmrsFetchError: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.OpenmrsFetchError),\n OverflowMenuHorizontalIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.OverflowMenuHorizontalIcon),\n OverflowMenuVerticalIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.OverflowMenuVerticalIcon),\n PageHeader: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PageHeader),\n PageHeaderContent: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PageHeaderContent),\n Pagination: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Pagination),\n PasswordIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PasswordIcon),\n PatientBannerActionsMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientBannerActionsMenu),\n PatientBannerContactDetails: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientBannerContactDetails),\n PatientBannerPatientIdentifiers: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientBannerPatientIdentifiers),\n PatientBannerPatientInfo: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientBannerPatientInfo),\n PatientBannerToggleContactDetailsButton: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientBannerToggleContactDetailsButton),\n PatientListsPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientListsPictogram),\n PatientPhoto: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientPhoto),\n PatientSearchPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientSearchPictogram),\n PatientsPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientsPictogram),\n PaymentsDeskPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PaymentsDeskPictogram),\n PedestrianFamilyIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PedestrianFamilyIcon),\n PenIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PenIcon),\n Pharmacy2Pictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Pharmacy2Pictogram),\n PharmacyPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PharmacyPictogram),\n Pictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Pictogram),\n PrinterIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PrinterIcon),\n ProcedureOrderIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ProcedureOrderIcon),\n ProgramsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ProgramsIcon),\n RadiologyIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.RadiologyIcon),\n ReferralOrderIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ReferralOrderIcon),\n RegistrationPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.RegistrationPictogram),\n RenderIfValueIsTruthy: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.RenderIfValueIsTruthy),\n RenewIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.RenewIcon),\n ReportIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ReportIcon),\n ResetIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ResetIcon),\n ResponsiveWrapper: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ResponsiveWrapper),\n SaveIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.SaveIcon),\n SearchIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.SearchIcon),\n ServiceQueuesPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ServiceQueuesPictogram),\n SettingsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.SettingsIcon),\n ShoppingCartAddItemIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ShoppingCartAddItemIcon),\n ShoppingCartArrowDownIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ShoppingCartArrowDownIcon),\n ShoppingCartIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ShoppingCartIcon),\n Snackbar: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Snackbar),\n StickyNoteAddIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.StickyNoteAddIcon),\n StockManagementPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.StockManagementPictogram),\n SwitcherIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.SwitcherIcon),\n SyringeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.SyringeIcon),\n TableBatchActions: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TableBatchActions),\n TableIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TableIcon),\n TableOfContentsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TableOfContentsIcon),\n TimeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TimeIcon),\n Toast: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Toast),\n ToolsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ToolsIcon),\n TransferPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TransferPictogram),\n TranslateIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TranslateIcon),\n TrashCanIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TrashCanIcon),\n TreeViewAltIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TreeViewAltIcon),\n TriagePictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TriagePictogram),\n TwoFactorAuthenticationIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TwoFactorAuthenticationIcon),\n Type: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.Type),\n UserAvatarIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.UserAvatarIcon),\n UserFollowIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.UserFollowIcon),\n UserHasAccess: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.UserHasAccess),\n UserIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.UserIcon),\n UserXrayIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.UserXrayIcon),\n ViewIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ViewIcon),\n ViewOffIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ViewOffIcon),\n VisitMode: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.VisitMode),\n VisitStatus: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.VisitStatus),\n WarningIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.WarningIcon),\n Workspace2: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Workspace2),\n WorkspaceContainer: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.WorkspaceContainer),\n WorkspaceNotification: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.WorkspaceNotification),\n XrayPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.XrayPictogram),\n activateOfflineCapability: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.activateOfflineCapability),\n addImportMapOverride: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.addImportMapOverride),\n addRouteMapOverride: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.addRouteMapOverride),\n age: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.age),\n ageAsDuration: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.ageAsDuration),\n attach: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.attach),\n attachmentUrl: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.attachmentUrl),\n backendDependencies: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.backendDependencies),\n beginEditSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.beginEditSynchronizationItem),\n canAccessStorage: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.canAccessStorage),\n canBeginEditSynchronizationItemsOfType: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.canBeginEditSynchronizationItemsOfType),\n canCloseWorkspaceWithoutPrompting: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.canCloseWorkspaceWithoutPrompting),\n cancelPrompt: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.cancelPrompt),\n changeWorkspaceContext: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.changeWorkspaceContext),\n checkStatus: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.checkStatus),\n checkStatusFor: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.checkStatusFor),\n cleanupObsoleteFeatureFlags: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.cleanupObsoleteFeatureFlags),\n clearConfigErrors: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.clearConfigErrors),\n clearCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.clearCurrentUser),\n clearHistory: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.clearHistory),\n closeAllWorkspaces: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.closeAllWorkspaces),\n closeWorkspace: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.closeWorkspace),\n closeWorkspaceGroup2: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.closeWorkspaceGroup2),\n compile: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.compile),\n configExtensionStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.configExtensionStore),\n configInternalStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.configInternalStore),\n convertToLocaleCalendar: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.convertToLocaleCalendar),\n createAttachment: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.createAttachment),\n createDashboard: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.createDashboard),\n createErrorHandler: () => (/* reexport safe */ _openmrs_esm_error_handling__rspack_import_4.createErrorHandler),\n createGlobalStore: () => (/* reexport safe */ _openmrs_esm_state__rspack_import_13.createGlobalStore),\n createParcelMounter: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.createParcelMounter),\n createUseStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.createUseStore),\n defaultVisitCustomRepresentation: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.defaultVisitCustomRepresentation),\n defineConfigSchema: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.defineConfigSchema),\n defineExtensionConfigSchema: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.defineExtensionConfigSchema),\n deleteAttachmentPermanently: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.deleteAttachmentPermanently),\n deleteSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.deleteSynchronizationItem),\n detach: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.detach),\n detachAll: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.detachAll),\n dispatchActionableNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchActionableNotificationShown),\n dispatchConnectivityChanged: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchConnectivityChanged),\n dispatchNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchNotificationShown),\n dispatchPrecacheStaticDependencies: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchPrecacheStaticDependencies),\n dispatchSnackbarShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchSnackbarShown),\n dispatchToastShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchToastShown),\n displayName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.displayName),\n duration: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.duration),\n enableImportMapOverride: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.enableImportMapOverride),\n esmStyleGuideSchema: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.esmStyleGuideSchema),\n evaluate: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluate),\n evaluateAsBoolean: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsBoolean),\n evaluateAsBooleanAsync: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsBooleanAsync),\n evaluateAsNumber: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsNumber),\n evaluateAsNumberAsync: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsNumberAsync),\n evaluateAsType: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsType),\n evaluateAsTypeAsync: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsTypeAsync),\n evaluateAsync: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsync),\n extractVariableNames: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.extractVariableNames),\n featureFlagsStore: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.featureFlagsStore),\n fetchCurrentPatient: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.fetchCurrentPatient),\n fhirBaseUrl: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.fhirBaseUrl),\n filterBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.filterBreadcrumbs),\n finishRegisteringAllApps: () => (/* reexport safe */ _openmrs_esm_routes__rspack_import_12.finishRegisteringAllApps),\n fireOpenmrsEvent: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.fireOpenmrsEvent),\n formatDate: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatDate),\n formatDatetime: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatDatetime),\n formatDuration: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatDuration),\n formatDurationBetween: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatDurationBetween),\n formatPartialDate: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatPartialDate),\n formatPatientName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatPatientName),\n formatTime: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatTime),\n formattedName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formattedName),\n generateOfflineUuid: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.generateOfflineUuid),\n getAssignedExtensions: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getAssignedExtensions),\n getAsyncExtensionLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.getAsyncExtensionLifecycle),\n getAsyncLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.getAsyncLifecycle),\n getAttachmentByUuid: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getAttachmentByUuid),\n getAttachments: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getAttachments),\n getBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.getBreadcrumbs),\n getBreadcrumbsFor: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.getBreadcrumbsFor),\n getConfig: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getConfig),\n getConfigStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getConfigStore),\n getCoreTranslation: () => (/* reexport safe */ _openmrs_esm_translations__rspack_import_15.getCoreTranslation),\n getCurrentImportMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getCurrentImportMap),\n getCurrentOfflineMode: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getCurrentOfflineMode),\n getCurrentPageMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getCurrentPageMap),\n getCurrentRouteMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getCurrentRouteMap),\n getCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.getCurrentUser),\n getDefaultCalendar: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.getDefaultCalendar),\n getDefaultsFromConfigSchema: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.getDefaultsFromConfigSchema),\n getDynamicOfflineDataEntries: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getDynamicOfflineDataEntries),\n getDynamicOfflineDataEntriesFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getDynamicOfflineDataEntriesFor),\n getDynamicOfflineDataHandlers: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getDynamicOfflineDataHandlers),\n getExtensionConfig: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionConfig),\n getExtensionConfigFromExtensionSlotStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionConfigFromExtensionSlotStore),\n getExtensionConfigFromStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionConfigFromStore),\n getExtensionInternalStore: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionInternalStore),\n getExtensionNameFromId: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionNameFromId),\n getExtensionRegistration: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionRegistration),\n getExtensionRegistrationFrom: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionRegistrationFrom),\n getExtensionSlotConfig: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionSlotConfig),\n getExtensionSlotConfigFromStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionSlotConfigFromStore),\n getExtensionSlotsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionSlotsConfigStore),\n getExtensionStore: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionStore),\n getExtensionsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionsConfigStore),\n getFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.getFeatureFlag),\n getFhirServerPaginationHandlers: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.getFhirServerPaginationHandlers),\n getFullSynchronizationItems: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getFullSynchronizationItems),\n getFullSynchronizationItemsFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getFullSynchronizationItemsFor),\n getGlobalStore: () => (/* reexport safe */ _openmrs_esm_state__rspack_import_13.getGlobalStore),\n getGroupByWindowName: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getGroupByWindowName),\n getHistory: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.getHistory),\n getImportMapDefaultMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getImportMapDefaultMap),\n getImportMapDisabledOverrides: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getImportMapDisabledOverrides),\n getImportMapNextPageMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getImportMapNextPageMap),\n getImportMapOverrideMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getImportMapOverrideMap),\n getLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.getLifecycle),\n getLocale: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.getLocale),\n getLocaleDisplayName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.getLocaleDisplayName),\n getLocations: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getLocations),\n getLoggedInUser: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.getLoggedInUser),\n getModalRegistration: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getModalRegistration),\n getOfflineDb: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getOfflineDb),\n getOfflinePatientDataStore: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getOfflinePatientDataStore),\n getOfflineSynchronizationStore: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getOfflineSynchronizationStore),\n getOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getOmrsServiceWorker),\n getOpenedWindowIndexByWorkspace: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getOpenedWindowIndexByWorkspace),\n getPatientName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.getPatientName),\n getPromptBeforeClosingFcn: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.getPromptBeforeClosingFcn),\n getRegisteredWorkspace2Names: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.getRegisteredWorkspace2Names),\n getRouteMapDefaultMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getRouteMapDefaultMap),\n getRouteMapNextPageMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getRouteMapNextPageMap),\n getRouteMapOverrideMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getRouteMapOverrideMap),\n getSessionLocation: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.getSessionLocation),\n getSessionStore: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.getSessionStore),\n getStartedVisit: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getStartedVisit),\n getSyncLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.getSyncLifecycle),\n getSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getSynchronizationItem),\n getSynchronizationItems: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getSynchronizationItems),\n getSynchronizationItemsFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getSynchronizationItemsFor),\n getTranslationOverrides: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getTranslationOverrides),\n getVisitStore: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getVisitStore),\n getVisitTypes: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getVisitTypes),\n getVisitsForPatient: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getVisitsForPatient),\n getWindowByWorkspaceName: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getWindowByWorkspaceName),\n getWorkspaceGroupRegistration: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getWorkspaceGroupRegistration),\n getWorkspaceGroupStore: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.getWorkspaceGroupStore),\n getWorkspaceRegistration: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getWorkspaceRegistration),\n getWorkspaceStore: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.getWorkspaceStore),\n goBackInHistory: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.goBackInHistory),\n iconIds: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.iconIds),\n implementerToolsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.implementerToolsConfigStore),\n importDynamic: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.importDynamic),\n inRange: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.inRange),\n integrateBreakpoints: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.integrateBreakpoints),\n interpolateString: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.interpolateString),\n interpolateUrl: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.interpolateUrl),\n isDesktop: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.isDesktop),\n isDevEnabled: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.isDevEnabled),\n isImportMapOverrideDisabled: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.isImportMapOverrideDisabled),\n isOfflineUuid: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.isOfflineUuid),\n isOmrsDateStrict: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.isOmrsDateStrict),\n isOmrsDateToday: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.isOmrsDateToday),\n isOnline: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.isOnline),\n isOpenmrsAppRoutes: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.isOpenmrsAppRoutes),\n isOpenmrsRoutes: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.isOpenmrsRoutes),\n isUrl: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.isUrl),\n isUrlWithTemplateParameters: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.isUrlWithTemplateParameters),\n isVersionSatisfied: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.isVersionSatisfied),\n jsep: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.jsep),\n launchWorkspace: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.launchWorkspace),\n launchWorkspace2: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.launchWorkspace2),\n launchWorkspaceGroup: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.launchWorkspaceGroup),\n launchWorkspaceGroup2: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.launchWorkspaceGroup2),\n leftNavStore: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.leftNavStore),\n loadLifeCycles: () => (/* reexport safe */ _openmrs_esm_routes__rspack_import_12.loadLifeCycles),\n makeUrl: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.makeUrl),\n matchLocale: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.matchLocale),\n messageOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.messageOmrsServiceWorker),\n navigate: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.navigate),\n navigateAndLaunchWorkspace: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.navigateAndLaunchWorkspace),\n offlineUuidPrefix: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.offlineUuidPrefix),\n omrsOfflineCachingStrategyHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.omrsOfflineCachingStrategyHttpHeaderName),\n omrsOfflineResponseBodyHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.omrsOfflineResponseBodyHttpHeaderName),\n omrsOfflineResponseStatusHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.omrsOfflineResponseStatusHttpHeaderName),\n oneOf: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.oneOf),\n openmrsComponentDecorator: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.openmrsComponentDecorator),\n openmrsFetch: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.openmrsFetch),\n openmrsObservableFetch: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.openmrsObservableFetch),\n parseDate: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.parseDate),\n parseDateInput: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.parseDateInput),\n pictogramIds: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.pictogramIds),\n preloadImport: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.preloadImport),\n processConfig: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.processConfig),\n promptBeforeClosing: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.promptBeforeClosing),\n promptForClosingWorkspaces: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.promptForClosingWorkspaces),\n provide: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.provide),\n putDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.putDynamicOfflineData),\n putDynamicOfflineDataFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.putDynamicOfflineDataFor),\n queueSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.queueSynchronizationItem),\n queueSynchronizationItemFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.queueSynchronizationItemFor),\n refetchCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.refetchCurrentUser),\n registerApp: () => (/* reexport safe */ _openmrs_esm_routes__rspack_import_12.registerApp),\n registerBreadcrumb: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.registerBreadcrumb),\n registerBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.registerBreadcrumbs),\n registerDefaultCalendar: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.registerDefaultCalendar),\n registerExtension: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerExtension),\n registerExtensionSlot: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerExtensionSlot),\n registerFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.registerFeatureFlag),\n registerGlobalStore: () => (/* reexport safe */ _openmrs_esm_state__rspack_import_13.registerGlobalStore),\n registerModal: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerModal),\n registerModuleLoad: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.registerModuleLoad),\n registerModuleWithConfigSystem: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.registerModuleWithConfigSystem),\n registerOfflinePatientHandler: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.registerOfflinePatientHandler),\n registerOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.registerOmrsServiceWorker),\n registerTranslationNamespace: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.registerTranslationNamespace),\n registerWorkspace: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerWorkspace),\n registerWorkspaceGroup: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerWorkspaceGroup),\n registerWorkspaceGroups2: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerWorkspaceGroups2),\n registerWorkspaceWindows2: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerWorkspaceWindows2),\n registerWorkspaces2: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerWorkspaces2),\n removeDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.removeDynamicOfflineData),\n removeDynamicOfflineDataFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.removeDynamicOfflineDataFor),\n removeImportMapOverride: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.removeImportMapOverride),\n removeRouteMapOverride: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.removeRouteMapOverride),\n renderActionableNotifications: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderActionableNotifications),\n renderExtension: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.renderExtension),\n renderInlineNotifications: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderInlineNotifications),\n renderLoadingSpinner: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderLoadingSpinner),\n renderParcel: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.renderParcel),\n renderSnackbars: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderSnackbars),\n renderToasts: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderToasts),\n renderWorkspaceWindowsAndMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderWorkspaceWindowsAndMenu),\n reportError: () => (/* reexport safe */ _openmrs_esm_error_handling__rspack_import_4.reportError),\n reset: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.reset),\n resetConfigSystem: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.resetConfigSystem),\n resetImportMapOverrides: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.resetImportMapOverrides),\n resetRouteMapOverrides: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.resetRouteMapOverrides),\n resetWorkspaceStore: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.resetWorkspaceStore),\n restBaseUrl: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.restBaseUrl),\n retry: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.retry),\n runSynchronization: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.runSynchronization),\n saveVisit: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.saveVisit),\n selectPreferredName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.selectPreferredName),\n sessionEndpoint: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.sessionEndpoint),\n sessionStore: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.sessionStore),\n setCurrentOfflineMode: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.setCurrentOfflineMode),\n setCurrentVisit: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.setCurrentVisit),\n setFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.setFeatureFlag),\n setLeftNav: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.setLeftNav),\n setSessionLocation: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.setSessionLocation),\n setUserLanguage: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.setUserLanguage),\n setUserProperties: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.setUserProperties),\n setupApiModule: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.setupApiModule),\n setupDynamicOfflineDataHandler: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.setupDynamicOfflineDataHandler),\n setupHistory: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.setupHistory),\n setupImportMapOverrides: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.setupImportMapOverrides),\n setupModals: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.setupModals),\n setupOfflineSync: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.setupOfflineSync),\n setupRouteMapOverrides: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.setupRouteMapOverrides),\n shallowEqual: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.shallowEqual),\n showActionableNotification: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showActionableNotification),\n showModal: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showModal),\n showNotification: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showNotification),\n showSnackbar: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showSnackbar),\n showToast: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showToast),\n showWorkspacePrompts: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showWorkspacePrompts),\n slugify: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.slugify),\n subscribeActionableNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeActionableNotificationShown),\n subscribeConnectivity: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeConnectivity),\n subscribeConnectivityChanged: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeConnectivityChanged),\n subscribeNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeNotificationShown),\n subscribeOpenmrsEvent: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.subscribeOpenmrsEvent),\n subscribePrecacheStaticDependencies: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribePrecacheStaticDependencies),\n subscribeSnackbarShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeSnackbarShown),\n subscribeTo: () => (/* reexport safe */ _openmrs_esm_state__rspack_import_13.subscribeTo),\n subscribeToFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.subscribeToFeatureFlag),\n subscribeToastShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeToastShown),\n syncAllDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.syncAllDynamicOfflineData),\n syncDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.syncDynamicOfflineData),\n syncOfflinePatientData: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.syncOfflinePatientData),\n temporaryConfigStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.temporaryConfigStore),\n toDateObjectStrict: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.toDateObjectStrict),\n toLanguageTag: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.toLanguageTag),\n toLocationObject: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.toLocationObject),\n toOmrsIsoString: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.toOmrsIsoString),\n toVisitTypeObject: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.toVisitTypeObject),\n translateFrom: () => (/* reexport safe */ _openmrs_esm_translations__rspack_import_15.translateFrom),\n tryRegisterExtension: () => (/* reexport safe */ _openmrs_esm_routes__rspack_import_12.tryRegisterExtension),\n unsetLeftNav: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.unsetLeftNav),\n updateExtensionSlotState: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.updateExtensionSlotState),\n updateInternalExtensionStore: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.updateInternalExtensionStore),\n updateVisit: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.updateVisit),\n updateWorkspaceWindowState: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.updateWorkspaceWindowState),\n useAbortController: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useAbortController),\n useAppContext: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useAppContext),\n useAssignedExtensionIds: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useAssignedExtensionIds),\n useAssignedExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useAssignedExtensions),\n useAttachments: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useAttachments),\n useBodyScrollLock: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useBodyScrollLock),\n useConfig: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useConfig),\n useConnectedExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useConnectedExtensions),\n useConnectivity: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useConnectivity),\n useCustomOverflowMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.useCustomOverflowMenu),\n useDebounce: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useDebounce),\n useDefineAppContext: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useDefineAppContext),\n useEmrConfiguration: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useEmrConfiguration),\n useExtensionInternalStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useExtensionInternalStore),\n useExtensionSlot: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useExtensionSlot),\n useExtensionSlotMeta: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useExtensionSlotMeta),\n useExtensionSlotStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useExtensionSlotStore),\n useExtensionStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useExtensionStore),\n useFeatureFlag: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useFeatureFlag),\n useFhirFetchAll: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useFhirFetchAll),\n useFhirInfinite: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useFhirInfinite),\n useFhirPagination: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useFhirPagination),\n useForceUpdate: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useForceUpdate),\n useLayoutType: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useLayoutType),\n useLeftNav: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useLeftNav),\n useLeftNavStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useLeftNavStore),\n useLocations: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useLocations),\n useOnClickOutside: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOnClickOutside),\n useOnVisible: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOnVisible),\n useOpenmrsFetchAll: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOpenmrsFetchAll),\n useOpenmrsInfinite: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOpenmrsInfinite),\n useOpenmrsPagination: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOpenmrsPagination),\n useOpenmrsSWR: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOpenmrsSWR),\n usePagination: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.usePagination),\n usePaginationInfo: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.usePaginationInfo),\n usePatient: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.usePatient),\n usePatientPhoto: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.usePatientPhoto),\n usePrimaryIdentifierCode: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.usePrimaryIdentifierCode),\n useRenderableExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useRenderableExtensions),\n useSession: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useSession),\n useStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useStore),\n useStoreWithActions: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useStoreWithActions),\n useVisit: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useVisit),\n useVisitContextStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useVisitContextStore),\n useVisitTypes: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useVisitTypes),\n useWorkspace2Context: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.useWorkspace2Context),\n useWorkspace2Store: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.useWorkspace2Store),\n useWorkspaces: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.useWorkspaces),\n userHasAccess: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.userHasAccess),\n validator: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.validator),\n validators: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.validators),\n workspace2Store: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.workspace2Store),\n workspace2StoreActions: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.workspace2StoreActions),\n workspaceStore: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.workspaceStore)\n});\n/* import */ var _openmrs_esm_api__rspack_import_0 = __webpack_require__(\"../../framework/esm-api/dist/index.js\");\n/* import */ var _openmrs_esm_config__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/index.js\");\n/* import */ var _openmrs_esm_dynamic_loading__rspack_import_2 = __webpack_require__(\"../../framework/esm-dynamic-loading/dist/index.js\");\n/* import */ var _openmrs_esm_emr_api__rspack_import_3 = __webpack_require__(\"../../framework/esm-emr-api/dist/index.js\");\n/* import */ var _openmrs_esm_error_handling__rspack_import_4 = __webpack_require__(\"../../framework/esm-error-handling/dist/index.js\");\n/* import */ var _openmrs_esm_expression_evaluator__rspack_import_5 = __webpack_require__(\"../../framework/esm-expression-evaluator/dist/index.js\");\n/* import */ var _openmrs_esm_extensions__rspack_import_6 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _openmrs_esm_feature_flags__rspack_import_7 = __webpack_require__(\"../../framework/esm-feature-flags/dist/index.js\");\n/* import */ var _openmrs_esm_globals__rspack_import_8 = __webpack_require__(\"../../framework/esm-globals/dist/index.js\");\n/* import */ var _openmrs_esm_navigation__rspack_import_9 = __webpack_require__(\"../../framework/esm-navigation/dist/index.js\");\n/* import */ var _openmrs_esm_offline__rspack_import_10 = __webpack_require__(\"../../framework/esm-offline/dist/index.js\");\n/* import */ var _openmrs_esm_react_utils__rspack_import_11 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\n/* import */ var _openmrs_esm_routes__rspack_import_12 = __webpack_require__(\"../../framework/esm-routes/dist/index.js\");\n/* import */ var _openmrs_esm_state__rspack_import_13 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/* import */ var _openmrs_esm_styleguide_src_internal__rspack_import_14 = __webpack_require__(\"../../framework/esm-styleguide/dist/internal.js\");\n/* import */ var _openmrs_esm_translations__rspack_import_15 = __webpack_require__(\"../../framework/esm-translations/dist/index.js\");\n/* import */ var _openmrs_esm_utils__rspack_import_16 = __webpack_require__(\"../../framework/esm-utils/dist/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWZyYW1ld29yay9kaXN0L2ludGVybmFsLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWZyYW1ld29yay9kaXN0L2ludGVybmFsLmpzPzlhODIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIkBvcGVubXJzL2VzbS1hcGlcIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLWR5bmFtaWMtbG9hZGluZ1wiO1xuZXhwb3J0ICogZnJvbSBcIkBvcGVubXJzL2VzbS1lbXItYXBpXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLWVycm9yLWhhbmRsaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4cHJlc3Npb24tZXZhbHVhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tZmVhdHVyZS1mbGFnc1wiO1xuZXhwb3J0ICogZnJvbSBcIkBvcGVubXJzL2VzbS1nbG9iYWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLW5hdmlnYXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tb2ZmbGluZVwiO1xuZXhwb3J0ICogZnJvbSBcIkBvcGVubXJzL2VzbS1yZWFjdC11dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIkBvcGVubXJzL2VzbS1yb3V0ZXNcIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tc3R5bGVndWlkZS9zcmMvaW50ZXJuYWxcIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tdHJhbnNsYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLXV0aWxzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFpQztBQUNHO0FBQ1M7QUFDUjtBQUNPO0FBQ007QUFDVjtBQUNHO0FBQ047QUFDRztBQUNIO0FBQ0k7QUFDTDtBQUNEO0FBQ2tCO0FBQ1g7QUFDUCJ9\n//# sourceURL=webpack-internal:///../../framework/esm-framework/dist/internal.js\n\n}");
5808
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n ActionMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ActionMenu),\n ActionMenuButton: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ActionMenuButton),\n ActionMenuButton2: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ActionMenuButton2),\n ActionableNotificationComponent: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ActionableNotificationComponent),\n ActivityIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ActivityIcon),\n AddIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.AddIcon),\n AllergiesIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.AllergiesIcon),\n AppointmentsAltPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.AppointmentsAltPictogram),\n AppointmentsPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.AppointmentsPictogram),\n ArrowDownIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ArrowDownIcon),\n ArrowLeftIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ArrowLeftIcon),\n ArrowRightIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ArrowRightIcon),\n ArrowUpIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ArrowUpIcon),\n Assessment1Pictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Assessment1Pictogram),\n Assessment2Pictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Assessment2Pictogram),\n AttachmentIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.AttachmentIcon),\n BabyIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.BabyIcon),\n BloodBankPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.BloodBankPictogram),\n Breakpoint: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Breakpoint),\n CalendarHeatMapIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CalendarHeatMapIcon),\n CalendarIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CalendarIcon),\n CardHeader: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CardHeader),\n CardiologyPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CardiologyPictogram),\n CaretDownIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CaretDownIcon),\n CaretLeftIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CaretLeftIcon),\n CaretRightIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CaretRightIcon),\n CaretUpIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CaretUpIcon),\n ChartAverageIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChartAverageIcon),\n ChartLineIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChartLineIcon),\n CheckmarkFilledIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CheckmarkFilledIcon),\n CheckmarkOutlineIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CheckmarkOutlineIcon),\n ChemistryIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChemistryIcon),\n ChevronDownIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChevronDownIcon),\n ChevronLeftIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChevronLeftIcon),\n ChevronRightIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChevronRightIcon),\n ChevronUpIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ChevronUpIcon),\n CloseFilledIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CloseFilledIcon),\n CloseIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CloseIcon),\n CloseOutlineIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CloseOutlineIcon),\n ComponentContext: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.ComponentContext),\n ConditionsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ConditionsIcon),\n ConfigurableLink: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.ConfigurableLink),\n CtScanPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CtScanPictogram),\n CustomOverflowMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CustomOverflowMenu),\n CustomOverflowMenuItem: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.CustomOverflowMenuItem),\n DashboardExtension: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DashboardExtension),\n DentistryPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DentistryPictogram),\n DiagnosisTags: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DiagnosisTags),\n DigitalTrustPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DigitalTrustPictogram),\n DocumentAttachmentIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DocumentAttachmentIcon),\n DocumentIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DocumentIcon),\n DownloadIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DownloadIcon),\n DrugOrderIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.DrugOrderIcon),\n EditIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EditIcon),\n EmergencyDepartmentPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EmergencyDepartmentPictogram),\n EmptyCard: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EmptyCard),\n EmptyCardIllustration: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EmptyCardIllustration),\n ErrorCard: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ErrorCard),\n ErrorState: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ErrorState),\n EventScheduleIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EventScheduleIcon),\n EventsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.EventsIcon),\n Extension: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.Extension),\n ExtensionSlot: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.ExtensionSlot),\n FacilityPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.FacilityPictogram),\n GenderFemaleIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GenderFemaleIcon),\n GenderMaleIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GenderMaleIcon),\n GenderOtherIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GenderOtherIcon),\n GenderUnknownIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GenderUnknownIcon),\n GenericOrderTypeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GenericOrderTypeIcon),\n GeriatricsPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GeriatricsPictogram),\n GroupAccessIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GroupAccessIcon),\n GroupIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GroupIcon),\n GynaecologyPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.GynaecologyPictogram),\n HomePictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.HomePictogram),\n HospitalBedIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.HospitalBedIcon),\n Icon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Icon),\n ImageMedicalIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ImageMedicalIcon),\n InPatientPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.InPatientPictogram),\n InformationFilledIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.InformationFilledIcon),\n InformationIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.InformationIcon),\n InformationSquareIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.InformationSquareIcon),\n InventoryManagementIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.InventoryManagementIcon),\n LabOrderIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.LabOrderIcon),\n LaboratoryPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.LaboratoryPictogram),\n Labs2Pictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Labs2Pictogram),\n LeftNavMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.LeftNavMenu),\n ListCheckedIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ListCheckedIcon),\n LocationIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.LocationIcon),\n LocationPicker: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.LocationPicker),\n MaterialOrderIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MaterialOrderIcon),\n MaximizeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MaximizeIcon),\n MaybeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MaybeIcon),\n MaybePictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MaybePictogram),\n MedicationIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MedicationIcon),\n MessageQueueIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MessageQueueIcon),\n MicroscopeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MicroscopeIcon),\n MobileCheckIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MobileCheckIcon),\n MoneyIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MoneyIcon),\n MotherIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MotherIcon),\n MovementIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.MovementIcon),\n Notification: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Notification),\n NumericObservation: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.NumericObservation),\n ObstetricsPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ObstetricsPictogram),\n OpenmrsAppContext: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.OpenmrsAppContext),\n OpenmrsDatePicker: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.OpenmrsDatePicker),\n OpenmrsDateRangePicker: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.OpenmrsDateRangePicker),\n OpenmrsFetchError: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.OpenmrsFetchError),\n OverflowMenuHorizontalIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.OverflowMenuHorizontalIcon),\n OverflowMenuVerticalIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.OverflowMenuVerticalIcon),\n PageHeader: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PageHeader),\n PageHeaderContent: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PageHeaderContent),\n Pagination: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Pagination),\n PasswordIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PasswordIcon),\n PatientBannerActionsMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientBannerActionsMenu),\n PatientBannerContactDetails: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientBannerContactDetails),\n PatientBannerPatientIdentifiers: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientBannerPatientIdentifiers),\n PatientBannerPatientInfo: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientBannerPatientInfo),\n PatientBannerToggleContactDetailsButton: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientBannerToggleContactDetailsButton),\n PatientListsPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientListsPictogram),\n PatientPhoto: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientPhoto),\n PatientSearchPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientSearchPictogram),\n PatientsPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PatientsPictogram),\n PaymentsDeskPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PaymentsDeskPictogram),\n PedestrianFamilyIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PedestrianFamilyIcon),\n PenIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PenIcon),\n Pharmacy2Pictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Pharmacy2Pictogram),\n PharmacyPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PharmacyPictogram),\n Pictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Pictogram),\n PrinterIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.PrinterIcon),\n ProcedureOrderIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ProcedureOrderIcon),\n ProgramsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ProgramsIcon),\n RadiologyIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.RadiologyIcon),\n ReferralOrderIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ReferralOrderIcon),\n RegistrationPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.RegistrationPictogram),\n RenderIfValueIsTruthy: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.RenderIfValueIsTruthy),\n RenewIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.RenewIcon),\n ReportIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ReportIcon),\n ResetIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ResetIcon),\n ResponsiveWrapper: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ResponsiveWrapper),\n SaveIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.SaveIcon),\n SearchIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.SearchIcon),\n ServiceQueuesPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ServiceQueuesPictogram),\n SettingsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.SettingsIcon),\n ShoppingCartAddItemIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ShoppingCartAddItemIcon),\n ShoppingCartArrowDownIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ShoppingCartArrowDownIcon),\n ShoppingCartIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ShoppingCartIcon),\n Snackbar: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Snackbar),\n StickyNoteAddIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.StickyNoteAddIcon),\n StockManagementPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.StockManagementPictogram),\n SwitcherIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.SwitcherIcon),\n SyringeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.SyringeIcon),\n TableBatchActions: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TableBatchActions),\n TableIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TableIcon),\n TableOfContentsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TableOfContentsIcon),\n TimeIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TimeIcon),\n Toast: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Toast),\n ToolsIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ToolsIcon),\n TransferPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TransferPictogram),\n TranslateIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TranslateIcon),\n TrashCanIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TrashCanIcon),\n TreeViewAltIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TreeViewAltIcon),\n TriagePictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TriagePictogram),\n TwoFactorAuthenticationIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.TwoFactorAuthenticationIcon),\n Type: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.Type),\n UserAvatarIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.UserAvatarIcon),\n UserFollowIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.UserFollowIcon),\n UserHasAccess: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.UserHasAccess),\n UserIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.UserIcon),\n UserXrayIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.UserXrayIcon),\n ViewIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ViewIcon),\n ViewOffIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.ViewOffIcon),\n VisitMode: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.VisitMode),\n VisitStatus: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.VisitStatus),\n WarningIcon: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.WarningIcon),\n Workspace2: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.Workspace2),\n WorkspaceContainer: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.WorkspaceContainer),\n WorkspaceNotification: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.WorkspaceNotification),\n XrayPictogram: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.XrayPictogram),\n activateOfflineCapability: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.activateOfflineCapability),\n addImportMapOverride: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.addImportMapOverride),\n addRouteMapOverride: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.addRouteMapOverride),\n age: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.age),\n ageAsDuration: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.ageAsDuration),\n attach: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.attach),\n attachmentUrl: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.attachmentUrl),\n backendDependencies: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.backendDependencies),\n batchExtensionUpdates: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.batchExtensionUpdates),\n beginEditSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.beginEditSynchronizationItem),\n canAccessStorage: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.canAccessStorage),\n canBeginEditSynchronizationItemsOfType: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.canBeginEditSynchronizationItemsOfType),\n canCloseWorkspaceWithoutPrompting: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.canCloseWorkspaceWithoutPrompting),\n cancelPrompt: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.cancelPrompt),\n changeWorkspaceContext: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.changeWorkspaceContext),\n checkStatus: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.checkStatus),\n checkStatusFor: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.checkStatusFor),\n cleanupObsoleteFeatureFlags: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.cleanupObsoleteFeatureFlags),\n clearConfigDerivationError: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.clearConfigDerivationError),\n clearConfigErrors: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.clearConfigErrors),\n clearCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.clearCurrentUser),\n clearHistory: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.clearHistory),\n closeAllWorkspaces: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.closeAllWorkspaces),\n closeWorkspace: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.closeWorkspace),\n closeWorkspaceGroup2: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.closeWorkspaceGroup2),\n compile: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.compile),\n configExtensionStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.configExtensionStore),\n configInternalStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.configInternalStore),\n convertToLocaleCalendar: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.convertToLocaleCalendar),\n createAttachment: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.createAttachment),\n createDashboard: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.createDashboard),\n createErrorHandler: () => (/* reexport safe */ _openmrs_esm_error_handling__rspack_import_4.createErrorHandler),\n createGlobalStore: () => (/* reexport safe */ _openmrs_esm_state__rspack_import_13.createGlobalStore),\n createParcelMounter: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.createParcelMounter),\n createUseStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.createUseStore),\n defaultVisitCustomRepresentation: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.defaultVisitCustomRepresentation),\n defineConfigSchema: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.defineConfigSchema),\n defineExtensionConfigSchema: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.defineExtensionConfigSchema),\n deleteAttachmentPermanently: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.deleteAttachmentPermanently),\n deleteSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.deleteSynchronizationItem),\n detach: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.detach),\n detachAll: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.detachAll),\n dispatchActionableNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchActionableNotificationShown),\n dispatchConnectivityChanged: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchConnectivityChanged),\n dispatchNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchNotificationShown),\n dispatchPrecacheStaticDependencies: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchPrecacheStaticDependencies),\n dispatchSnackbarShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchSnackbarShown),\n dispatchToastShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.dispatchToastShown),\n displayName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.displayName),\n duration: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.duration),\n enableImportMapOverride: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.enableImportMapOverride),\n esmStyleGuideSchema: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.esmStyleGuideSchema),\n evaluate: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluate),\n evaluateAsBoolean: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsBoolean),\n evaluateAsBooleanAsync: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsBooleanAsync),\n evaluateAsNumber: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsNumber),\n evaluateAsNumberAsync: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsNumberAsync),\n evaluateAsType: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsType),\n evaluateAsTypeAsync: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsTypeAsync),\n evaluateAsync: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.evaluateAsync),\n extractVariableNames: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.extractVariableNames),\n featureFlagsStore: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.featureFlagsStore),\n fetchCurrentPatient: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.fetchCurrentPatient),\n fhirBaseUrl: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.fhirBaseUrl),\n filterBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.filterBreadcrumbs),\n finishRegisteringAllApps: () => (/* reexport safe */ _openmrs_esm_routes__rspack_import_12.finishRegisteringAllApps),\n fireOpenmrsEvent: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.fireOpenmrsEvent),\n formatDate: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatDate),\n formatDatetime: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatDatetime),\n formatDuration: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatDuration),\n formatDurationBetween: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatDurationBetween),\n formatPartialDate: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatPartialDate),\n formatPatientName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatPatientName),\n formatTime: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formatTime),\n formattedName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.formattedName),\n generateOfflineUuid: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.generateOfflineUuid),\n getAssignedExtensions: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getAssignedExtensions),\n getAsyncExtensionLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.getAsyncExtensionLifecycle),\n getAsyncLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.getAsyncLifecycle),\n getAttachmentByUuid: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getAttachmentByUuid),\n getAttachments: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getAttachments),\n getBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.getBreadcrumbs),\n getBreadcrumbsFor: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.getBreadcrumbsFor),\n getCandidateExtensions: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getCandidateExtensions),\n getConfig: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getConfig),\n getConfigStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getConfigStore),\n getCoreTranslation: () => (/* reexport safe */ _openmrs_esm_translations__rspack_import_15.getCoreTranslation),\n getCurrentImportMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getCurrentImportMap),\n getCurrentOfflineMode: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getCurrentOfflineMode),\n getCurrentPageMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getCurrentPageMap),\n getCurrentRouteMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getCurrentRouteMap),\n getCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.getCurrentUser),\n getDefaultCalendar: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.getDefaultCalendar),\n getDefaultsFromConfigSchema: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.getDefaultsFromConfigSchema),\n getDynamicOfflineDataEntries: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getDynamicOfflineDataEntries),\n getDynamicOfflineDataEntriesFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getDynamicOfflineDataEntriesFor),\n getDynamicOfflineDataHandlers: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getDynamicOfflineDataHandlers),\n getExtensionConfig: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionConfig),\n getExtensionConfigFromExtensionSlotStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionConfigFromExtensionSlotStore),\n getExtensionConfigFromStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionConfigFromStore),\n getExtensionInternalStore: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionInternalStore),\n getExtensionNameFromId: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionNameFromId),\n getExtensionRegistration: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionRegistration),\n getExtensionRegistrationFrom: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionRegistrationFrom),\n getExtensionRenderingsStore: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionRenderingsStore),\n getExtensionSlotConfig: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionSlotConfig),\n getExtensionSlotConfigFromStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionSlotConfigFromStore),\n getExtensionSlotsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionSlotsConfigStore),\n getExtensionStore: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getExtensionStore),\n getExtensionsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getExtensionsConfigStore),\n getFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.getFeatureFlag),\n getFhirServerPaginationHandlers: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.getFhirServerPaginationHandlers),\n getFullSynchronizationItems: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getFullSynchronizationItems),\n getFullSynchronizationItemsFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getFullSynchronizationItemsFor),\n getGlobalStore: () => (/* reexport safe */ _openmrs_esm_state__rspack_import_13.getGlobalStore),\n getGroupByWindowName: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getGroupByWindowName),\n getHistory: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.getHistory),\n getImportMapDefaultMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getImportMapDefaultMap),\n getImportMapDisabledOverrides: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getImportMapDisabledOverrides),\n getImportMapNextPageMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getImportMapNextPageMap),\n getImportMapOverrideMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getImportMapOverrideMap),\n getLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.getLifecycle),\n getLocale: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.getLocale),\n getLocaleDisplayName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.getLocaleDisplayName),\n getLocations: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getLocations),\n getLoggedInUser: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.getLoggedInUser),\n getModalRegistration: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getModalRegistration),\n getOfflineDb: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getOfflineDb),\n getOfflinePatientDataStore: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getOfflinePatientDataStore),\n getOfflineSynchronizationStore: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getOfflineSynchronizationStore),\n getOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getOmrsServiceWorker),\n getOpenedWindowIndexByWorkspace: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getOpenedWindowIndexByWorkspace),\n getPatientName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.getPatientName),\n getPromptBeforeClosingFcn: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.getPromptBeforeClosingFcn),\n getRegisteredWorkspace2Names: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.getRegisteredWorkspace2Names),\n getRouteMapDefaultMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getRouteMapDefaultMap),\n getRouteMapNextPageMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getRouteMapNextPageMap),\n getRouteMapOverrideMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.getRouteMapOverrideMap),\n getSessionLocation: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.getSessionLocation),\n getSessionStore: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.getSessionStore),\n getStartedVisit: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getStartedVisit),\n getSyncLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.getSyncLifecycle),\n getSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getSynchronizationItem),\n getSynchronizationItems: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getSynchronizationItems),\n getSynchronizationItemsFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.getSynchronizationItemsFor),\n getTranslationOverrides: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.getTranslationOverrides),\n getVisitStore: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getVisitStore),\n getVisitTypes: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getVisitTypes),\n getVisitsForPatient: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.getVisitsForPatient),\n getWindowByWorkspaceName: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getWindowByWorkspaceName),\n getWorkspaceGroupRegistration: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getWorkspaceGroupRegistration),\n getWorkspaceGroupStore: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.getWorkspaceGroupStore),\n getWorkspaceRegistration: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.getWorkspaceRegistration),\n getWorkspaceStore: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.getWorkspaceStore),\n goBackInHistory: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.goBackInHistory),\n iconIds: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.iconIds),\n implementerToolsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.implementerToolsConfigStore),\n importDynamic: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.importDynamic),\n inRange: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.inRange),\n integrateBreakpoints: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.integrateBreakpoints),\n interpolateString: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.interpolateString),\n interpolateUrl: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.interpolateUrl),\n invalidateImplementerToolsConfig: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.invalidateImplementerToolsConfig),\n isDesktop: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.isDesktop),\n isDevEnabled: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.isDevEnabled),\n isImportMapOverrideDisabled: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.isImportMapOverrideDisabled),\n isOfflineUuid: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.isOfflineUuid),\n isOmrsDateStrict: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.isOmrsDateStrict),\n isOmrsDateToday: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.isOmrsDateToday),\n isOnline: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.isOnline),\n isOpenmrsAppRoutes: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.isOpenmrsAppRoutes),\n isOpenmrsRoutes: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.isOpenmrsRoutes),\n isUrl: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.isUrl),\n isUrlWithTemplateParameters: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.isUrlWithTemplateParameters),\n isVersionSatisfied: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.isVersionSatisfied),\n jsep: () => (/* reexport safe */ _openmrs_esm_expression_evaluator__rspack_import_5.jsep),\n launchWorkspace: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.launchWorkspace),\n launchWorkspace2: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.launchWorkspace2),\n launchWorkspaceGroup: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.launchWorkspaceGroup),\n launchWorkspaceGroup2: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.launchWorkspaceGroup2),\n leftNavStore: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.leftNavStore),\n loadLifeCycles: () => (/* reexport safe */ _openmrs_esm_routes__rspack_import_12.loadLifeCycles),\n makeUrl: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.makeUrl),\n matchLocale: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.matchLocale),\n messageOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.messageOmrsServiceWorker),\n navigate: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.navigate),\n navigateAndLaunchWorkspace: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.navigateAndLaunchWorkspace),\n offlineUuidPrefix: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.offlineUuidPrefix),\n omrsOfflineCachingStrategyHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.omrsOfflineCachingStrategyHttpHeaderName),\n omrsOfflineResponseBodyHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.omrsOfflineResponseBodyHttpHeaderName),\n omrsOfflineResponseStatusHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.omrsOfflineResponseStatusHttpHeaderName),\n oneOf: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.oneOf),\n openmrsComponentDecorator: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.openmrsComponentDecorator),\n openmrsFetch: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.openmrsFetch),\n openmrsObservableFetch: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.openmrsObservableFetch),\n parseDate: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.parseDate),\n parseDateInput: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.parseDateInput),\n pictogramIds: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.pictogramIds),\n preloadImport: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.preloadImport),\n processConfig: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.processConfig),\n promptBeforeClosing: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.promptBeforeClosing),\n promptForClosingWorkspaces: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.promptForClosingWorkspaces),\n provide: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.provide),\n putDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.putDynamicOfflineData),\n putDynamicOfflineDataFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.putDynamicOfflineDataFor),\n queueSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.queueSynchronizationItem),\n queueSynchronizationItemFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.queueSynchronizationItemFor),\n recordConfigDerivationError: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.recordConfigDerivationError),\n refetchCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.refetchCurrentUser),\n registerApp: () => (/* reexport safe */ _openmrs_esm_routes__rspack_import_12.registerApp),\n registerBreadcrumb: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.registerBreadcrumb),\n registerBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.registerBreadcrumbs),\n registerDefaultCalendar: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.registerDefaultCalendar),\n registerExtension: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerExtension),\n registerExtensionRendering: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerExtensionRendering),\n registerExtensionSlot: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerExtensionSlot),\n registerFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.registerFeatureFlag),\n registerGlobalStore: () => (/* reexport safe */ _openmrs_esm_state__rspack_import_13.registerGlobalStore),\n registerModal: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerModal),\n registerModuleLoad: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.registerModuleLoad),\n registerModuleWithConfigSystem: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.registerModuleWithConfigSystem),\n registerOfflinePatientHandler: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.registerOfflinePatientHandler),\n registerOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.registerOmrsServiceWorker),\n registerTranslationNamespace: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.registerTranslationNamespace),\n registerWorkspace: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerWorkspace),\n registerWorkspaceGroup: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerWorkspaceGroup),\n registerWorkspaceGroups2: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerWorkspaceGroups2),\n registerWorkspaceWindows2: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerWorkspaceWindows2),\n registerWorkspaces2: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.registerWorkspaces2),\n removeDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.removeDynamicOfflineData),\n removeDynamicOfflineDataFor: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.removeDynamicOfflineDataFor),\n removeImportMapOverride: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.removeImportMapOverride),\n removeRouteMapOverride: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.removeRouteMapOverride),\n renderActionableNotifications: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderActionableNotifications),\n renderExtension: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.renderExtension),\n renderInlineNotifications: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderInlineNotifications),\n renderLoadingSpinner: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderLoadingSpinner),\n renderParcel: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.renderParcel),\n renderSnackbars: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderSnackbars),\n renderToasts: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderToasts),\n renderWorkspaceWindowsAndMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.renderWorkspaceWindowsAndMenu),\n reportError: () => (/* reexport safe */ _openmrs_esm_error_handling__rspack_import_4.reportError),\n reset: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.reset),\n resetConfigSystem: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.resetConfigSystem),\n resetImportMapOverrides: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.resetImportMapOverrides),\n resetRouteMapOverrides: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.resetRouteMapOverrides),\n resetWorkspaceStore: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.resetWorkspaceStore),\n restBaseUrl: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.restBaseUrl),\n retry: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.retry),\n runSynchronization: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.runSynchronization),\n saveVisit: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.saveVisit),\n scheduleRecomputation: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.scheduleRecomputation),\n selectPreferredName: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.selectPreferredName),\n sessionEndpoint: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.sessionEndpoint),\n sessionStore: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.sessionStore),\n setCurrentOfflineMode: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.setCurrentOfflineMode),\n setCurrentVisit: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.setCurrentVisit),\n setFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.setFeatureFlag),\n setImplementerToolsConfigRecomputer: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.setImplementerToolsConfigRecomputer),\n setLeftNav: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.setLeftNav),\n setSessionLocation: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.setSessionLocation),\n setUserLanguage: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.setUserLanguage),\n setUserProperties: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.setUserProperties),\n setupApiModule: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.setupApiModule),\n setupDynamicOfflineDataHandler: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.setupDynamicOfflineDataHandler),\n setupHistory: () => (/* reexport safe */ _openmrs_esm_navigation__rspack_import_9.setupHistory),\n setupImportMapOverrides: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.setupImportMapOverrides),\n setupModals: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.setupModals),\n setupOfflineSync: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.setupOfflineSync),\n setupRouteMapOverrides: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.setupRouteMapOverrides),\n shallowEqual: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.shallowEqual),\n showActionableNotification: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showActionableNotification),\n showModal: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showModal),\n showNotification: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showNotification),\n showSnackbar: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showSnackbar),\n showToast: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showToast),\n showWorkspacePrompts: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.showWorkspacePrompts),\n slugify: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__rspack_import_2.slugify),\n subscribeActionableNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeActionableNotificationShown),\n subscribeConnectivity: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeConnectivity),\n subscribeConnectivityChanged: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeConnectivityChanged),\n subscribeNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeNotificationShown),\n subscribeOpenmrsEvent: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.subscribeOpenmrsEvent),\n subscribePrecacheStaticDependencies: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribePrecacheStaticDependencies),\n subscribeSnackbarShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeSnackbarShown),\n subscribeTo: () => (/* reexport safe */ _openmrs_esm_state__rspack_import_13.subscribeTo),\n subscribeToFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__rspack_import_7.subscribeToFeatureFlag),\n subscribeToastShown: () => (/* reexport safe */ _openmrs_esm_globals__rspack_import_8.subscribeToastShown),\n syncAllDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.syncAllDynamicOfflineData),\n syncDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.syncDynamicOfflineData),\n syncOfflinePatientData: () => (/* reexport safe */ _openmrs_esm_offline__rspack_import_10.syncOfflinePatientData),\n temporaryConfigStore: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.temporaryConfigStore),\n toDateObjectStrict: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.toDateObjectStrict),\n toLanguageTag: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.toLanguageTag),\n toLocationObject: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.toLocationObject),\n toOmrsIsoString: () => (/* reexport safe */ _openmrs_esm_utils__rspack_import_16.toOmrsIsoString),\n toVisitTypeObject: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.toVisitTypeObject),\n translateFrom: () => (/* reexport safe */ _openmrs_esm_translations__rspack_import_15.translateFrom),\n tryRegisterExtension: () => (/* reexport safe */ _openmrs_esm_routes__rspack_import_12.tryRegisterExtension),\n unregisterExtensionRendering: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.unregisterExtensionRendering),\n unsetLeftNav: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.unsetLeftNav),\n updateInternalExtensionStore: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.updateInternalExtensionStore),\n updateVisit: () => (/* reexport safe */ _openmrs_esm_emr_api__rspack_import_3.updateVisit),\n updateWorkspaceWindowState: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.updateWorkspaceWindowState),\n useAbortController: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useAbortController),\n useAppContext: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useAppContext),\n useAssignedExtensionIds: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useAssignedExtensionIds),\n useAssignedExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useAssignedExtensions),\n useAttachments: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useAttachments),\n useBodyScrollLock: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useBodyScrollLock),\n useCandidateExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useCandidateExtensions),\n useConfig: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useConfig),\n useConnectedExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useConnectedExtensions),\n useConnectivity: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useConnectivity),\n useCustomOverflowMenu: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.useCustomOverflowMenu),\n useDebounce: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useDebounce),\n useDefineAppContext: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useDefineAppContext),\n useEmrConfiguration: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useEmrConfiguration),\n useExtensionInternalStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useExtensionInternalStore),\n useExtensionSlot: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useExtensionSlot),\n useExtensionSlotMeta: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useExtensionSlotMeta),\n useExtensionSlotStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useExtensionSlotStore),\n useExtensionStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useExtensionStore),\n useFeatureFlag: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useFeatureFlag),\n useFhirFetchAll: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useFhirFetchAll),\n useFhirInfinite: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useFhirInfinite),\n useFhirPagination: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useFhirPagination),\n useForceUpdate: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useForceUpdate),\n useLayoutType: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useLayoutType),\n useLeftNav: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useLeftNav),\n useLeftNavStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useLeftNavStore),\n useLocations: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useLocations),\n useOnClickOutside: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOnClickOutside),\n useOnVisible: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOnVisible),\n useOpenmrsFetchAll: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOpenmrsFetchAll),\n useOpenmrsInfinite: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOpenmrsInfinite),\n useOpenmrsPagination: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOpenmrsPagination),\n useOpenmrsSWR: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useOpenmrsSWR),\n usePagination: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.usePagination),\n usePaginationInfo: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.usePaginationInfo),\n usePatient: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.usePatient),\n usePatientPhoto: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.usePatientPhoto),\n usePrimaryIdentifierCode: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.usePrimaryIdentifierCode),\n useRenderableExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useRenderableExtensions),\n useSession: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useSession),\n useShallowStableValue: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useShallowStableValue),\n useStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useStore),\n useStoreWithActions: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useStoreWithActions),\n useVisit: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useVisit),\n useVisitContextStore: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useVisitContextStore),\n useVisitTypes: () => (/* reexport safe */ _openmrs_esm_react_utils__rspack_import_11.useVisitTypes),\n useWorkspace2Context: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.useWorkspace2Context),\n useWorkspace2Store: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.useWorkspace2Store),\n useWorkspaces: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.useWorkspaces),\n userHasAccess: () => (/* reexport safe */ _openmrs_esm_api__rspack_import_0.userHasAccess),\n validator: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.validator),\n validators: () => (/* reexport safe */ _openmrs_esm_config__rspack_import_1.validators),\n workspace2Store: () => (/* reexport safe */ _openmrs_esm_extensions__rspack_import_6.workspace2Store),\n workspace2StoreActions: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.workspace2StoreActions),\n workspaceStore: () => (/* reexport safe */ _openmrs_esm_styleguide_src_internal__rspack_import_14.workspaceStore)\n});\n/* import */ var _openmrs_esm_api__rspack_import_0 = __webpack_require__(\"../../framework/esm-api/dist/index.js\");\n/* import */ var _openmrs_esm_config__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/index.js\");\n/* import */ var _openmrs_esm_dynamic_loading__rspack_import_2 = __webpack_require__(\"../../framework/esm-dynamic-loading/dist/index.js\");\n/* import */ var _openmrs_esm_emr_api__rspack_import_3 = __webpack_require__(\"../../framework/esm-emr-api/dist/index.js\");\n/* import */ var _openmrs_esm_error_handling__rspack_import_4 = __webpack_require__(\"../../framework/esm-error-handling/dist/index.js\");\n/* import */ var _openmrs_esm_expression_evaluator__rspack_import_5 = __webpack_require__(\"../../framework/esm-expression-evaluator/dist/index.js\");\n/* import */ var _openmrs_esm_extensions__rspack_import_6 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _openmrs_esm_feature_flags__rspack_import_7 = __webpack_require__(\"../../framework/esm-feature-flags/dist/index.js\");\n/* import */ var _openmrs_esm_globals__rspack_import_8 = __webpack_require__(\"../../framework/esm-globals/dist/index.js\");\n/* import */ var _openmrs_esm_navigation__rspack_import_9 = __webpack_require__(\"../../framework/esm-navigation/dist/index.js\");\n/* import */ var _openmrs_esm_offline__rspack_import_10 = __webpack_require__(\"../../framework/esm-offline/dist/index.js\");\n/* import */ var _openmrs_esm_react_utils__rspack_import_11 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\n/* import */ var _openmrs_esm_routes__rspack_import_12 = __webpack_require__(\"../../framework/esm-routes/dist/index.js\");\n/* import */ var _openmrs_esm_state__rspack_import_13 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/* import */ var _openmrs_esm_styleguide_src_internal__rspack_import_14 = __webpack_require__(\"../../framework/esm-styleguide/dist/internal.js\");\n/* import */ var _openmrs_esm_translations__rspack_import_15 = __webpack_require__(\"../../framework/esm-translations/dist/index.js\");\n/* import */ var _openmrs_esm_utils__rspack_import_16 = __webpack_require__(\"../../framework/esm-utils/dist/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWZyYW1ld29yay9kaXN0L2ludGVybmFsLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWZyYW1ld29yay9kaXN0L2ludGVybmFsLmpzPzlhODIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIkBvcGVubXJzL2VzbS1hcGlcIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLWR5bmFtaWMtbG9hZGluZ1wiO1xuZXhwb3J0ICogZnJvbSBcIkBvcGVubXJzL2VzbS1lbXItYXBpXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLWVycm9yLWhhbmRsaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4cHJlc3Npb24tZXZhbHVhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tZmVhdHVyZS1mbGFnc1wiO1xuZXhwb3J0ICogZnJvbSBcIkBvcGVubXJzL2VzbS1nbG9iYWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLW5hdmlnYXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tb2ZmbGluZVwiO1xuZXhwb3J0ICogZnJvbSBcIkBvcGVubXJzL2VzbS1yZWFjdC11dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIkBvcGVubXJzL2VzbS1yb3V0ZXNcIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tc3R5bGVndWlkZS9zcmMvaW50ZXJuYWxcIjtcbmV4cG9ydCAqIGZyb20gXCJAb3Blbm1ycy9lc20tdHJhbnNsYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiQG9wZW5tcnMvZXNtLXV0aWxzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWlDO0FBQ0c7QUFDUztBQUNSO0FBQ087QUFDTTtBQUNWO0FBQ0c7QUFDTjtBQUNHO0FBQ0g7QUFDSTtBQUNMO0FBQ0Q7QUFDa0I7QUFDWDtBQUNQIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-framework/dist/internal.js\n\n}");
5809
5809
 
5810
5810
  },
5811
5811
  "../../framework/esm-globals/dist/events.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -5925,7 +5925,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
5925
5925
  },
5926
5926
  "../../framework/esm-react-utils/dist/Extension.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5927
5927
  "use strict";
5928
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n Extension: () => (Extension)\n});\n/* import */ var _openmrs_esm_extensions__rspack_import_0 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var react__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_1);\n/* import */ var _index_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\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}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = {}, sourceKeys, key, i;\n if (typeof Reflect !== \"undefined\" && Reflect.ownKeys) {\n sourceKeys = Reflect.ownKeys(Object(source));\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n return target;\n }\n target = _object_without_properties_loose(source, excluded);\n if (Object.getOwnPropertySymbols) {\n sourceKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n return target;\n}\n/** @module @category Extension */ \n\n\n/**\n * Represents the position in the DOM where each extension within\n * an extension slot is rendered.\n *\n * Renders once for each extension attached to that extension slot.\n *\n * Usage of this component *must* have an ancestor `<ExtensionSlot>`,\n * and *must* only be used once within that `<ExtensionSlot>`.\n */ var Extension = function Extension(_0) {\n var state = _0.state, children = _0.children, divProps = _object_without_properties(_0, [\n \"state\",\n \"children\"\n ]);\n var extension = (0,react__rspack_import_1.useContext)(_index_js__rspack_import_2.ComponentContext).extension;\n var parcel = (0,react__rspack_import_1.useRef)(null);\n var updatePromise = (0,react__rspack_import_1.useRef)(Promise.resolve());\n var ref = (0,react__rspack_import_1.useCallback)(function(node) {\n if ((extension === null || extension === void 0 ? void 0 : extension.extensionSlotName) && extension.extensionSlotModuleName && extension.extensionSlotModuleName && !parcel.current) {\n (0,_openmrs_esm_extensions__rspack_import_0.renderExtension)(node, extension.extensionSlotName, extension.extensionSlotModuleName, extension.extensionId, undefined, state).then(function(newParcel) {\n parcel.current = newParcel;\n });\n }\n }, []);\n (0,react__rspack_import_1.useEffect)(function() {\n return function() {\n if (parcel && parcel.current) {\n var status = parcel.current.getStatus();\n switch(status){\n case 'MOUNTING':\n parcel.current.mountPromise.then(function() {\n var _parcel_current;\n if (((_parcel_current = parcel.current) === null || _parcel_current === void 0 ? void 0 : _parcel_current.getStatus()) === 'MOUNTED') {\n parcel.current.unmount();\n }\n });\n break;\n case 'MOUNTED':\n parcel.current.unmount();\n break;\n case 'UPDATING':\n if (updatePromise.current) {\n updatePromise.current.then(function() {\n var _parcel_current;\n if (((_parcel_current = parcel.current) === null || _parcel_current === void 0 ? void 0 : _parcel_current.getStatus()) === 'MOUNTED') {\n parcel.current.unmount();\n }\n });\n }\n }\n }\n };\n }, []);\n (0,react__rspack_import_1.useEffect)(function() {\n if (parcel.current && parcel.current.update && parcel.current.getStatus() !== 'UNMOUNTING') {\n Promise.all([\n parcel.current.mountPromise,\n updatePromise.current\n ]).then(function() {\n var _parcel_current;\n if ((parcel === null || parcel === void 0 ? void 0 : (_parcel_current = parcel.current) === null || _parcel_current === void 0 ? void 0 : _parcel_current.getStatus()) === 'MOUNTED' && parcel.current.update) {\n updatePromise.current = parcel.current.update(_object_spread({}, state)).catch(function(err) {\n var _parcel_current;\n // if we were trying to update but the component was unmounted\n // while this was happening, ignore the error\n if (!_instanceof(err, Error) || !err.message.includes('minified message #32') || ((_parcel_current = parcel.current) === null || _parcel_current === void 0 ? void 0 : _parcel_current.getStatus()) === 'MOUNTED') {\n throw err;\n }\n });\n }\n });\n }\n }, [\n state\n ]);\n // The extension is rendered into the `<div>`. The `<div>` has relative\n // positioning in order to allow the UI Editor to absolutely position\n // elements within it.\n return extension ? /*#__PURE__*/ react__rspack_import_1_default().createElement(\"div\", _object_spread({\n ref: ref,\n \"data-extension-id\": extension === null || extension === void 0 ? void 0 : extension.extensionId,\n style: {\n position: 'relative'\n }\n }, divProps)) : null;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvRXh0ZW5zaW9uLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvRXh0ZW5zaW9uLmpzPzMwNzkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqLyBpbXBvcnQgeyByZW5kZXJFeHRlbnNpb24gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHQgfSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwb3NpdGlvbiBpbiB0aGUgRE9NIHdoZXJlIGVhY2ggZXh0ZW5zaW9uIHdpdGhpblxuICogYW4gZXh0ZW5zaW9uIHNsb3QgaXMgcmVuZGVyZWQuXG4gKlxuICogUmVuZGVycyBvbmNlIGZvciBlYWNoIGV4dGVuc2lvbiBhdHRhY2hlZCB0byB0aGF0IGV4dGVuc2lvbiBzbG90LlxuICpcbiAqIFVzYWdlIG9mIHRoaXMgY29tcG9uZW50ICptdXN0KiBoYXZlIGFuIGFuY2VzdG9yIGA8RXh0ZW5zaW9uU2xvdD5gLFxuICogYW5kICptdXN0KiBvbmx5IGJlIHVzZWQgb25jZSB3aXRoaW4gdGhhdCBgPEV4dGVuc2lvblNsb3Q+YC5cbiAqLyBleHBvcnQgY29uc3QgRXh0ZW5zaW9uID0gKHsgc3RhdGUsIGNoaWxkcmVuLCAuLi5kaXZQcm9wcyB9KT0+e1xuICAgIGNvbnN0IHsgZXh0ZW5zaW9uIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuICAgIGNvbnN0IHBhcmNlbCA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCB1cGRhdGVQcm9taXNlID0gdXNlUmVmKFByb21pc2UucmVzb2x2ZSgpKTtcbiAgICBjb25zdCByZWYgPSB1c2VDYWxsYmFjaygobm9kZSk9PntcbiAgICAgICAgaWYgKGV4dGVuc2lvbj8uZXh0ZW5zaW9uU2xvdE5hbWUgJiYgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3RNb2R1bGVOYW1lICYmIGV4dGVuc2lvbi5leHRlbnNpb25TbG90TW9kdWxlTmFtZSAmJiAhcGFyY2VsLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlbmRlckV4dGVuc2lvbihub2RlLCBleHRlbnNpb24uZXh0ZW5zaW9uU2xvdE5hbWUsIGV4dGVuc2lvbi5leHRlbnNpb25TbG90TW9kdWxlTmFtZSwgZXh0ZW5zaW9uLmV4dGVuc2lvbklkLCB1bmRlZmluZWQsIHN0YXRlKS50aGVuKChuZXdQYXJjZWwpPT57XG4gICAgICAgICAgICAgICAgcGFyY2VsLmN1cnJlbnQgPSBuZXdQYXJjZWw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICB1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAocGFyY2VsICYmIHBhcmNlbC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gcGFyY2VsLmN1cnJlbnQuZ2V0U3RhdHVzKCk7XG4gICAgICAgICAgICAgICAgc3dpdGNoKHN0YXR1cyl7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ01PVU5USU5HJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmNlbC5jdXJyZW50Lm1vdW50UHJvbWlzZS50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmNlbC5jdXJyZW50Py5nZXRTdGF0dXMoKSA9PT0gJ01PVU5URUQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmNlbC5jdXJyZW50LnVubW91bnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdNT1VOVEVEJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmNlbC5jdXJyZW50LnVubW91bnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdVUERBVElORyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXBkYXRlUHJvbWlzZS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvbWlzZS5jdXJyZW50LnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmNlbC5jdXJyZW50Py5nZXRTdGF0dXMoKSA9PT0gJ01PVU5URUQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJjZWwuY3VycmVudC51bm1vdW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAocGFyY2VsLmN1cnJlbnQgJiYgcGFyY2VsLmN1cnJlbnQudXBkYXRlICYmIHBhcmNlbC5jdXJyZW50LmdldFN0YXR1cygpICE9PSAnVU5NT1VOVElORycpIHtcbiAgICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICBwYXJjZWwuY3VycmVudC5tb3VudFByb21pc2UsXG4gICAgICAgICAgICAgICAgdXBkYXRlUHJvbWlzZS5jdXJyZW50XG4gICAgICAgICAgICBdKS50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgaWYgKHBhcmNlbD8uY3VycmVudD8uZ2V0U3RhdHVzKCkgPT09ICdNT1VOVEVEJyAmJiBwYXJjZWwuY3VycmVudC51cGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlUHJvbWlzZS5jdXJyZW50ID0gcGFyY2VsLmN1cnJlbnQudXBkYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlXG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSB3ZXJlIHRyeWluZyB0byB1cGRhdGUgYnV0IHRoZSBjb21wb25lbnQgd2FzIHVubW91bnRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpbGUgdGhpcyB3YXMgaGFwcGVuaW5nLCBpZ25vcmUgdGhlIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBFcnJvcikgfHwgIWVyci5tZXNzYWdlLmluY2x1ZGVzKCdtaW5pZmllZCBtZXNzYWdlICMzMicpIHx8IHBhcmNlbC5jdXJyZW50Py5nZXRTdGF0dXMoKSA9PT0gJ01PVU5URUQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgc3RhdGVcbiAgICBdKTtcbiAgICAvLyBUaGUgZXh0ZW5zaW9uIGlzIHJlbmRlcmVkIGludG8gdGhlIGA8ZGl2PmAuIFRoZSBgPGRpdj5gIGhhcyByZWxhdGl2ZVxuICAgIC8vIHBvc2l0aW9uaW5nIGluIG9yZGVyIHRvIGFsbG93IHRoZSBVSSBFZGl0b3IgdG8gYWJzb2x1dGVseSBwb3NpdGlvblxuICAgIC8vIGVsZW1lbnRzIHdpdGhpbiBpdC5cbiAgICByZXR1cm4gZXh0ZW5zaW9uID8gLyojX19QVVJFX18qLyBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgcmVmOiByZWYsXG4gICAgICAgIFwiZGF0YS1leHRlbnNpb24taWRcIjogZXh0ZW5zaW9uPy5leHRlbnNpb25JZCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRpdlByb3BzXG4gICAgfSkgOiBudWxsO1xufTtcbiJdLCJuYW1lcyI6WyJyZW5kZXJFeHRlbnNpb24iLCJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZVJlZiIsIkNvbXBvbmVudENvbnRleHQiLCJFeHRlbnNpb24iLCJzdGF0ZSIsImNoaWxkcmVuIiwiZGl2UHJvcHMiLCJleHRlbnNpb24iLCJwYXJjZWwiLCJ1cGRhdGVQcm9taXNlIiwiUHJvbWlzZSIsInJlZiIsIm5vZGUiLCJ1bmRlZmluZWQiLCJuZXdQYXJjZWwiLCJzdGF0dXMiLCJfcGFyY2VsX2N1cnJlbnQiLCJlcnIiLCJfaW5zdGFuY2VvZiIsIkVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDLEdBQTZEO0FBQ25CO0FBQzVCO0FBQzlDOzs7Ozs7OztDQVFDLEdBQVUsSUFBTU8sWUFBWTtRQUFHQyxXQUFBQSxPQUFPQyxjQUFBQSxVQUFhQzs7OztJQUNoRCxJQUFRQyxZQUFjUixxQ0FBVUEsQ0FBQ0csMkNBQWdCQSxFQUF6Q0s7SUFDUixJQUFNQyxTQUFTUCxpQ0FBTUEs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\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/Extension.js\n\n}");
5928
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n Extension: () => (Extension)\n});\n/* import */ var _openmrs_esm_extensions__rspack_import_0 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var react__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_1);\n/* import */ var _index_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = {}, sourceKeys, key, i;\n if (typeof Reflect !== \"undefined\" && Reflect.ownKeys) {\n sourceKeys = Reflect.ownKeys(Object(source));\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n return target;\n }\n target = _object_without_properties_loose(source, excluded);\n if (Object.getOwnPropertySymbols) {\n sourceKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n return target;\n}\n/** @module @category Extension */ \n\n\n/**\n * Represents the position in the DOM where each extension within\n * an extension slot is rendered.\n *\n * Renders once for each extension attached to that extension slot.\n *\n * Usage of this component *must* have an ancestor `<ExtensionSlot>`,\n * and *must* only be used once within that `<ExtensionSlot>`.\n */ var Extension = function Extension(_0) {\n var state = _0.state, children = _0.children, divProps = _object_without_properties(_0, [\n \"state\",\n \"children\"\n ]);\n var extension = (0,react__rspack_import_1.useContext)(_index_js__rspack_import_2.ComponentContext).extension;\n var parcel = (0,react__rspack_import_1.useRef)(null);\n var updatePromise = (0,react__rspack_import_1.useRef)(Promise.resolve());\n var isUnmounted = (0,react__rspack_import_1.useRef)(false);\n var isRendering = (0,react__rspack_import_1.useRef)(false);\n var latestState = (0,react__rspack_import_1.useRef)(state);\n // Takes the parcel to tear down rather than reading `parcel.current`, which can be reassigned\n // between scheduling this and running it.\n var unmountParcel = (0,react__rspack_import_1.useCallback)(function(target) {\n if (!target) {\n return;\n }\n var unmountWhenMounted = function unmountWhenMounted() {\n if (target.getStatus() === 'MOUNTED') {\n target.unmount();\n }\n };\n switch(target.getStatus()){\n case 'MOUNTED':\n target.unmount();\n break;\n case 'UPDATING':\n var // The rejection is reported by whoever owns `updatePromise`; here it only matters that a\n // failed update still runs the teardown, or the parcel is left broken and mounted.\n _updatePromise_current;\n (_updatePromise_current = updatePromise.current) === null || _updatePromise_current === void 0 ? void 0 : _updatePromise_current.then(unmountWhenMounted, unmountWhenMounted);\n break;\n default:\n // Any other status: the parcel either hasn't finished coming up or is already gone.\n // `mountPromise` has settled or will, and `unmountWhenMounted` re-checks the status.\n target.mountPromise.then(unmountWhenMounted, function() {});\n }\n }, []);\n var applyUpdate = (0,react__rspack_import_1.useCallback)(function(target, nextState) {\n if (!target.update || target.getStatus() === 'UNMOUNTING') {\n return;\n }\n // Every later update chains onto this promise, so it has to settle even when an update fails.\n updatePromise.current = Promise.all([\n target.mountPromise,\n updatePromise.current\n ]).then(function() {\n var _parcel_current;\n if (((_parcel_current = parcel.current) === null || _parcel_current === void 0 ? void 0 : _parcel_current.getStatus()) === 'MOUNTED' && parcel.current.update) {\n return parcel.current.update(_object_spread({}, nextState));\n }\n }).catch(function(err) {\n var _parcel_current;\n // A parcel torn down while its update was in flight rejects, and that race is expected.\n // We use the status to distinguish reject reasons as the message isn't reliable\n var status = (_parcel_current = parcel.current) === null || _parcel_current === void 0 ? void 0 : _parcel_current.getStatus();\n if (status !== 'UNMOUNTING' && status !== 'NOT_MOUNTED' && status !== 'UNLOADING') {\n console.error(\"The extension '\".concat(extension === null || extension === void 0 ? void 0 : extension.extensionId, \"' failed to update\"), err);\n }\n });\n }, []);\n var ref = (0,react__rspack_import_1.useCallback)(function(node) {\n // React detaches a ref by calling it with null. If we render something in response to this,\n // React ignores it and we're left tracking a parcel with no visible DOM, so skip conditions\n // we can't handle.\n if (!node || parcel.current || isRendering.current || !(extension === null || extension === void 0 ? void 0 : extension.extensionSlotName) || !extension.extensionSlotModuleName) {\n return;\n }\n isRendering.current = true;\n (0,_openmrs_esm_extensions__rspack_import_0.renderExtension)(node, extension.extensionSlotName, extension.extensionSlotModuleName, extension.extensionId, undefined, state).then(function(newParcel) {\n isRendering.current = false;\n parcel.current = newParcel;\n // Loading an extension's bundle can outlast the component that asked for it: the cleanup\n // effect has already run and saw no parcel, so teardown has to happen here instead, or the\n // parcel mounts into a detached node and its rendering record outlives the page.\n if (isUnmounted.current) {\n unmountParcel(newParcel);\n return;\n }\n // Ensure we update the state of the parcel to the latest version we've received\n if (newParcel && latestState.current !== state) {\n applyUpdate(newParcel, latestState.current);\n }\n }, function() {\n isRendering.current = false;\n });\n }, []);\n (0,react__rspack_import_1.useEffect)(function() {\n // Reset on every run, not just the first: StrictMode mounts, tears down and mounts again, so\n // a flag only ever set by the cleanup would still read \"unmounted\" for the live component.\n isUnmounted.current = false;\n return function() {\n isUnmounted.current = true;\n unmountParcel(parcel.current);\n };\n }, []);\n (0,react__rspack_import_1.useEffect)(function() {\n // Recorded before the parcel is checked, so that a state that arrives before there is a parcel\n // to receive it is still the one applied once there is.\n latestState.current = state;\n if (parcel.current) {\n applyUpdate(parcel.current, state);\n }\n }, [\n state\n ]);\n // The extension is rendered into the `<div>`. The `<div>` has relative\n // positioning in order to allow the UI Editor to absolutely position\n // elements within it.\n return extension ? /*#__PURE__*/ react__rspack_import_1_default().createElement(\"div\", _object_spread({\n ref: ref,\n \"data-extension-id\": extension === null || extension === void 0 ? void 0 : extension.extensionId,\n style: {\n position: 'relative'\n }\n }, divProps)) : null;\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvRXh0ZW5zaW9uLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvRXh0ZW5zaW9uLmpzPzMwNzkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqLyBpbXBvcnQgeyByZW5kZXJFeHRlbnNpb24gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHQgfSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwb3NpdGlvbiBpbiB0aGUgRE9NIHdoZXJlIGVhY2ggZXh0ZW5zaW9uIHdpdGhpblxuICogYW4gZXh0ZW5zaW9uIHNsb3QgaXMgcmVuZGVyZWQuXG4gKlxuICogUmVuZGVycyBvbmNlIGZvciBlYWNoIGV4dGVuc2lvbiBhdHRhY2hlZCB0byB0aGF0IGV4dGVuc2lvbiBzbG90LlxuICpcbiAqIFVzYWdlIG9mIHRoaXMgY29tcG9uZW50ICptdXN0KiBoYXZlIGFuIGFuY2VzdG9yIGA8RXh0ZW5zaW9uU2xvdD5gLFxuICogYW5kICptdXN0KiBvbmx5IGJlIHVzZWQgb25jZSB3aXRoaW4gdGhhdCBgPEV4dGVuc2lvblNsb3Q+YC5cbiAqLyBleHBvcnQgY29uc3QgRXh0ZW5zaW9uID0gKHsgc3RhdGUsIGNoaWxkcmVuLCAuLi5kaXZQcm9wcyB9KT0+e1xuICAgIGNvbnN0IHsgZXh0ZW5zaW9uIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuICAgIGNvbnN0IHBhcmNlbCA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCB1cGRhdGVQcm9taXNlID0gdXNlUmVmKFByb21pc2UucmVzb2x2ZSgpKTtcbiAgICBjb25zdCBpc1VubW91bnRlZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaXNSZW5kZXJpbmcgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGxhdGVzdFN0YXRlID0gdXNlUmVmKHN0YXRlKTtcbiAgICAvLyBUYWtlcyB0aGUgcGFyY2VsIHRvIHRlYXIgZG93biByYXRoZXIgdGhhbiByZWFkaW5nIGBwYXJjZWwuY3VycmVudGAsIHdoaWNoIGNhbiBiZSByZWFzc2lnbmVkXG4gICAgLy8gYmV0d2VlbiBzY2hlZHVsaW5nIHRoaXMgYW5kIHJ1bm5pbmcgaXQuXG4gICAgY29uc3QgdW5tb3VudFBhcmNlbCA9IHVzZUNhbGxiYWNrKCh0YXJnZXQpPT57XG4gICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdW5tb3VudFdoZW5Nb3VudGVkID0gKCk9PntcbiAgICAgICAgICAgIGlmICh0YXJnZXQuZ2V0U3RhdHVzKCkgPT09ICdNT1VOVEVEJykge1xuICAgICAgICAgICAgICAgIHRhcmdldC51bm1vdW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHN3aXRjaCh0YXJnZXQuZ2V0U3RhdHVzKCkpe1xuICAgICAgICAgICAgY2FzZSAnTU9VTlRFRCc6XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnVubW91bnQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VQREFUSU5HJzpcbiAgICAgICAgICAgICAgICAvLyBUaGUgcmVqZWN0aW9uIGlzIHJlcG9ydGVkIGJ5IHdob2V2ZXIgb3ducyBgdXBkYXRlUHJvbWlzZWA7IGhlcmUgaXQgb25seSBtYXR0ZXJzIHRoYXQgYVxuICAgICAgICAgICAgICAgIC8vIGZhaWxlZCB1cGRhdGUgc3RpbGwgcnVucyB0aGUgdGVhcmRvd24sIG9yIHRoZSBwYXJjZWwgaXMgbGVmdCBicm9rZW4gYW5kIG1vdW50ZWQuXG4gICAgICAgICAgICAgICAgdXBkYXRlUHJvbWlzZS5jdXJyZW50Py50aGVuKHVubW91bnRXaGVuTW91bnRlZCwgdW5tb3VudFdoZW5Nb3VudGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgLy8gQW55IG90aGVyIHN0YXR1czogdGhlIHBhcmNlbCBlaXRoZXIgaGFzbid0IGZpbmlzaGVkIGNvbWluZyB1cCBvciBpcyBhbHJlYWR5IGdvbmUuXG4gICAgICAgICAgICAgICAgLy8gYG1vdW50UHJvbWlzZWAgaGFzIHNldHRsZWQgb3Igd2lsbCwgYW5kIGB1bm1vdW50V2hlbk1vdW50ZWRgIHJlLWNoZWNrcyB0aGUgc3RhdHVzLlxuICAgICAgICAgICAgICAgIHRhcmdldC5tb3VudFByb21pc2UudGhlbih1bm1vdW50V2hlbk1vdW50ZWQsICgpPT57fSk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgY29uc3QgYXBwbHlVcGRhdGUgPSB1c2VDYWxsYmFjaygodGFyZ2V0LCBuZXh0U3RhdGUpPT57XG4gICAgICAgIGlmICghdGFyZ2V0LnVwZGF0ZSB8fCB0YXJnZXQuZ2V0U3RhdHVzKCkgPT09ICdVTk1PVU5USU5HJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IGxhdGVyIHVwZGF0ZSBjaGFpbnMgb250byB0aGlzIHByb21pc2UsIHNvIGl0IGhhcyB0byBzZXR0bGUgZXZlbiB3aGVuIGFuIHVwZGF0ZSBmYWlscy5cbiAgICAgICAgdXBkYXRlUHJvbWlzZS5jdXJyZW50ID0gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgdGFyZ2V0Lm1vdW50UHJvbWlzZSxcbiAgICAgICAgICAgIHVwZGF0ZVByb21pc2UuY3VycmVudFxuICAgICAgICBdKS50aGVuKCgpPT57XG4gICAgICAgICAgICBpZiAocGFyY2VsLmN1cnJlbnQ/LmdldFN0YXR1cygpID09PSAnTU9VTlRFRCcgJiYgcGFyY2VsLmN1cnJlbnQudXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmNlbC5jdXJyZW50LnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIC4uLm5leHRTdGF0ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgLy8gQSBwYXJjZWwgdG9ybiBkb3duIHdoaWxlIGl0cyB1cGRhdGUgd2FzIGluIGZsaWdodCByZWplY3RzLCBhbmQgdGhhdCByYWNlIGlzIGV4cGVjdGVkLlxuICAgICAgICAgICAgLy8gV2UgdXNlIHRoZSBzdGF0dXMgdG8gZGlzdGluZ3Vpc2ggcmVqZWN0IHJlYXNvbnMgYXMgdGhlIG1lc3NhZ2UgaXNuJ3QgcmVsaWFibGVcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IHBhcmNlbC5jdXJyZW50Py5nZXRTdGF0dXMoKTtcbiAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdVTk1PVU5USU5HJyAmJiBzdGF0dXMgIT09ICdOT1RfTU9VTlRFRCcgJiYgc3RhdHVzICE9PSAnVU5MT0FESU5HJykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSBleHRlbnNpb24gJyR7ZXh0ZW5zaW9uPy5leHRlbnNpb25JZH0nIGZhaWxlZCB0byB1cGRhdGVgLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgcmVmID0gdXNlQ2FsbGJhY2soKG5vZGUpPT57XG4gICAgICAgIC8vIFJlYWN0IGRldGFjaGVzIGEgcmVmIGJ5IGNhbGxpbmcgaXQgd2l0aCBudWxsLiBJZiB3ZSByZW5kZXIgc29tZXRoaW5nIGluIHJlc3BvbnNlIHRvIHRoaXMsXG4gICAgICAgIC8vIFJlYWN0IGlnbm9yZXMgaXQgYW5kIHdlJ3JlIGxlZnQgdHJhY2tpbmcgYSBwYXJjZWwgd2l0aCBubyB2aXNpYmxlIERPTSwgc28gc2tpcCBjb25kaXRpb25zXG4gICAgICAgIC8vIHdlIGNhbid0IGhhbmRsZS5cbiAgICAgICAgaWYgKCFub2RlIHx8IHBhcmNlbC5jdXJyZW50IHx8IGlzUmVuZGVyaW5nLmN1cnJlbnQgfHwgIWV4dGVuc2lvbj8uZXh0ZW5zaW9uU2xvdE5hbWUgfHwgIWV4dGVuc2lvbi5leHRlbnNpb25TbG90TW9kdWxlTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlzUmVuZGVyaW5nLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZW5kZXJFeHRlbnNpb24obm9kZSwgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLCBleHRlbnNpb24uZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWUsIGV4dGVuc2lvbi5leHRlbnNpb25JZCwgdW5kZWZpbmVkLCBzdGF0ZSkudGhlbigobmV3UGFyY2VsKT0+e1xuICAgICAgICAgICAgaXNSZW5kZXJpbmcuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgcGFyY2VsLmN1cnJlbnQgPSBuZXdQYXJjZWw7XG4gICAgICAgICAgICAvLyBMb2FkaW5nIGFuIGV4dGVuc2lvbidzIGJ1bmRsZSBjYW4gb3V0bGFzdCB0aGUgY29tcG9uZW50IHRoYXQgYXNrZWQgZm9yIGl0OiB0aGUgY2xlYW51cFxuICAgICAgICAgICAgLy8gZWZmZWN0IGhhcyBhbHJlYWR5IHJ1biBhbmQgc2F3IG5vIHBhcmNlbCwgc28gdGVhcmRvd24gaGFzIHRvIGhhcHBlbiBoZXJlIGluc3RlYWQsIG9yIHRoZVxuICAgICAgICAgICAgLy8gcGFyY2VsIG1vdW50cyBpbnRvIGEgZGV0YWNoZWQgbm9kZSBhbmQgaXRzIHJlbmRlcmluZyByZWNvcmQgb3V0bGl2ZXMgdGhlIHBhZ2UuXG4gICAgICAgICAgICBpZiAoaXNVbm1vdW50ZWQuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHVubW91bnRQYXJjZWwobmV3UGFyY2VsKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFbnN1cmUgd2UgdXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcGFyY2VsIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiB3ZSd2ZSByZWNlaXZlZFxuICAgICAgICAgICAgaWYgKG5ld1BhcmNlbCAmJiBsYXRlc3RTdGF0ZS5jdXJyZW50ICE9PSBzdGF0ZSkge1xuICAgICAgICAgICAgICAgIGFwcGx5VXBkYXRlKG5ld1BhcmNlbCwgbGF0ZXN0U3RhdGUuY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIC8vIENsZWFyZWQgc28gYSBsYXRlciByZWF0dGFjaCBjYW4gdHJ5IGFnYWluOyBgcmVuZGVyRXh0ZW5zaW9uYCByZXBvcnRzIGl0cyBvd24gZmFpbHVyZXMuXG4gICAgICAgICgpPT57XG4gICAgICAgICAgICBpc1JlbmRlcmluZy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH0sIFtdKTtcbiAgICB1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgLy8gUmVzZXQgb24gZXZlcnkgcnVuLCBub3QganVzdCB0aGUgZmlyc3Q6IFN0cmljdE1vZGUgbW91bnRzLCB0ZWFycyBkb3duIGFuZCBtb3VudHMgYWdhaW4sIHNvXG4gICAgICAgIC8vIGEgZmxhZyBvbmx5IGV2ZXIgc2V0IGJ5IHRoZSBjbGVhbnVwIHdvdWxkIHN0aWxsIHJlYWQgXCJ1bm1vdW50ZWRcIiBmb3IgdGhlIGxpdmUgY29tcG9uZW50LlxuICAgICAgICBpc1VubW91bnRlZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgaXNVbm1vdW50ZWQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB1bm1vdW50UGFyY2VsKHBhcmNlbC5jdXJyZW50KTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG4gICAgdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIC8vIFJlY29yZGVkIGJlZm9yZSB0aGUgcGFyY2VsIGlzIGNoZWNrZWQsIHNvIHRoYXQgYSBzdGF0ZSB0aGF0IGFycml2ZXMgYmVmb3JlIHRoZXJlIGlzIGEgcGFyY2VsXG4gICAgICAgIC8vIHRvIHJlY2VpdmUgaXQgaXMgc3RpbGwgdGhlIG9uZSBhcHBsaWVkIG9uY2UgdGhlcmUgaXMuXG4gICAgICAgIGxhdGVzdFN0YXRlLmN1cnJlbnQgPSBzdGF0ZTtcbiAgICAgICAgaWYgKHBhcmNlbC5jdXJyZW50KSB7XG4gICAgICAgICAgICBhcHBseVVwZGF0ZShwYXJjZWwuY3VycmVudCwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBzdGF0ZVxuICAgIF0pO1xuICAgIC8vIFRoZSBleHRlbnNpb24gaXMgcmVuZGVyZWQgaW50byB0aGUgYDxkaXY+YC4gVGhlIGA8ZGl2PmAgaGFzIHJlbGF0aXZlXG4gICAgLy8gcG9zaXRpb25pbmcgaW4gb3JkZXIgdG8gYWxsb3cgdGhlIFVJIEVkaXRvciB0byBhYnNvbHV0ZWx5IHBvc2l0aW9uXG4gICAgLy8gZWxlbWVudHMgd2l0aGluIGl0LlxuICAgIHJldHVybiBleHRlbnNpb24gPyAvKiNfX1BVUkVfXyovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgXCJkYXRhLWV4dGVuc2lvbi1pZFwiOiBleHRlbnNpb24/LmV4dGVuc2lvbklkLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGl2UHJvcHNcbiAgICB9KSA6IG51bGw7XG59O1xuIl0sIm5hbWVzIjpbInJlbmRlckV4dGVuc2lvbiIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlUmVmIiwiQ29tcG9uZW50Q29udGV4dCIsIkV4dGVuc2lvbiIsInN0YXRlIiwiY2hpbGRyZW4iLCJkaXZQcm9wcyIsImV4dGVuc2lvbiIsInBhcmNlbCIsInVwZGF0ZVByb21pc2UiLCJQcm9taXNlIiwiaXNVbm1vdW50ZWQiLCJpc1JlbmRlcmluZyIsImxhdGVzdFN0YXRlIiwidW5tb3VudFBhcmNlbCIsInRhcmdldCIsInVubW91bnRXaGVuTW91bnRlZCIsIl91cGRhdGVQcm9taXNlX2N1cnJlbnQiLCJhcHBseVVwZGF0ZSIsIm5leHRTdGF0ZSIsIl9wYXJjZWxfY3VycmVudCIsImVyciIsInN0YXR1cyIsImNvbnNvbGUiLCJyZWYiLCJub2RlIiwidW5kZWZpbmVkIiwibmV3UGFyY2VsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FBNkQ7QUFDbkI7QUFDNUI7QUFDOUM7Ozs7Ozs7O0NBUUMsR0FBVSxJQUFNTyxZQUFZO1FBQUdDLFdBQUFBLE9BQU9DLGNBQUFBLFVBQWFDOzs7O0lBQ2hELElBQVFDLFlBQWNSLHFDQUFVQSxDQUFDRywyQ0FBZ0JBLEVBQXpDSztJQUNSLElBQU1DLFNBQVNQLGlDQUFNQSxDQUFDO0lBQ3RCLElBQU1RLGdCQUFnQlIsaUNBQU1BLENBQUNTLFFBQVEsT0FBTztJQUM1QyxJQUFNQyxjQUFjVixpQ0FBTUEsQ0FBQztJQUMzQixJQUFNVyxjQUFjWCxpQ0FBTUEsQ0FBQztJQUMzQixJQUFNWSxjQUFjWixpQ0FBTUEsQ0FBQ0c7SUFDM0IsOEZBQThGO0lBQzlGLDBDQUEwQztJQUMxQyxJQUFNVSxnQkFBZ0JoQixzQ0FBV0EsQ0FBQyxTQUFDaUI7UUFDL0IsSUFBSSxDQUFDQSxRQUFRO1lBQ1Q7UUFDSjtRQUNBLElBQU1DLHFCQUFxQjtZQUN2QixJQUFJRCxPQUFPLFNBQVMsT0FBTyxXQUFXO2dCQUNsQ0EsT0FBTyxP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\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/Extension.js\n\n}");
5929
5929
 
5930
5930
  },
5931
5931
  "../../framework/esm-react-utils/dist/ExtensionSlot.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -5955,7 +5955,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
5955
5955
  },
5956
5956
  "../../framework/esm-react-utils/dist/index.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5957
5957
  "use strict";
5958
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n ComponentContext: () => (/* reexport safe */ _ComponentContext_js__rspack_import_0.ComponentContext),\n ConfigurableLink: () => (/* reexport safe */ _ConfigurableLink_js__rspack_import_1.ConfigurableLink),\n Extension: () => (/* reexport safe */ _Extension_js__rspack_import_2.Extension),\n ExtensionSlot: () => (/* reexport safe */ _ExtensionSlot_js__rspack_import_3.ExtensionSlot),\n OpenmrsAppContext: () => (/* reexport safe */ _OpenmrsContext_js__rspack_import_6.OpenmrsAppContext),\n RenderIfValueIsTruthy: () => (/* reexport safe */ _RenderIfValueIsTruthy_js__rspack_import_7.RenderIfValueIsTruthy),\n UserHasAccess: () => (/* reexport safe */ _UserHasAccess_js__rspack_import_47.UserHasAccess),\n createUseStore: () => (/* reexport safe */ _useStore_js__rspack_import_46.createUseStore),\n getAsyncExtensionLifecycle: () => (/* reexport safe */ _getLifecycle_js__rspack_import_4.getAsyncExtensionLifecycle),\n getAsyncLifecycle: () => (/* reexport safe */ _getLifecycle_js__rspack_import_4.getAsyncLifecycle),\n getFhirServerPaginationHandlers: () => (/* reexport safe */ _useFhirPagination_js__rspack_import_29.getFhirServerPaginationHandlers),\n getLifecycle: () => (/* reexport safe */ _getLifecycle_js__rspack_import_4.getLifecycle),\n getSyncLifecycle: () => (/* reexport safe */ _getLifecycle_js__rspack_import_4.getSyncLifecycle),\n isDesktop: () => (/* reexport safe */ _useLayoutType_js__rspack_import_30.isDesktop),\n openmrsComponentDecorator: () => (/* reexport safe */ _openmrsComponentDecorator_js__rspack_import_5.openmrsComponentDecorator),\n useAbortController: () => (/* reexport safe */ _useAbortController_js__rspack_import_8.useAbortController),\n useAppContext: () => (/* reexport safe */ _useAppContext_js__rspack_import_9.useAppContext),\n useAssignedExtensionIds: () => (/* reexport safe */ _useAssignedExtensionIds_js__rspack_import_10.useAssignedExtensionIds),\n useAssignedExtensions: () => (/* reexport safe */ _useAssignedExtensions_js__rspack_import_11.useAssignedExtensions),\n useAttachments: () => (/* reexport safe */ _useAttachments_js__rspack_import_12.useAttachments),\n useBodyScrollLock: () => (/* reexport safe */ _useBodyScrollLock_js__rspack_import_13.useBodyScrollLock),\n useConfig: () => (/* reexport safe */ _useConfig_js__rspack_import_14.useConfig),\n useConnectedExtensions: () => (/* reexport safe */ _useConnectedExtensions_js__rspack_import_15.useConnectedExtensions),\n useConnectivity: () => (/* reexport safe */ _useConnectivity_js__rspack_import_16.useConnectivity),\n useDebounce: () => (/* reexport safe */ _useDebounce_js__rspack_import_17.useDebounce),\n useDefineAppContext: () => (/* reexport safe */ _useDefineAppContext_js__rspack_import_18.useDefineAppContext),\n useEmrConfiguration: () => (/* reexport safe */ _useEmrConfiguration_js__rspack_import_19.useEmrConfiguration),\n useExtensionInternalStore: () => (/* reexport safe */ _useExtensionInternalStore_js__rspack_import_20.useExtensionInternalStore),\n useExtensionSlot: () => (/* reexport safe */ _useExtensionSlot_js__rspack_import_21.useExtensionSlot),\n useExtensionSlotMeta: () => (/* reexport safe */ _useExtensionSlotMeta_js__rspack_import_22.useExtensionSlotMeta),\n useExtensionSlotStore: () => (/* reexport safe */ _useExtensionSlotStore_js__rspack_import_23.useExtensionSlotStore),\n useExtensionStore: () => (/* reexport safe */ _useExtensionStore_js__rspack_import_24.useExtensionStore),\n useFeatureFlag: () => (/* reexport safe */ _useFeatureFlag_js__rspack_import_25.useFeatureFlag),\n useFhirFetchAll: () => (/* reexport safe */ _useFhirFetchAll_js__rspack_import_27.useFhirFetchAll),\n useFhirInfinite: () => (/* reexport safe */ _useFhirInfinite_js__rspack_import_28.useFhirInfinite),\n useFhirPagination: () => (/* reexport safe */ _useFhirPagination_js__rspack_import_29.useFhirPagination),\n useForceUpdate: () => (/* reexport safe */ _useForceUpdate_js__rspack_import_26.useForceUpdate),\n useLayoutType: () => (/* reexport safe */ _useLayoutType_js__rspack_import_30.useLayoutType),\n useLeftNav: () => (/* reexport safe */ _useLeftNav_js__rspack_import_31.useLeftNav),\n useLeftNavStore: () => (/* reexport safe */ _useLeftNavStore_js__rspack_import_32.useLeftNavStore),\n useLocations: () => (/* reexport safe */ _useLocations_js__rspack_import_33.useLocations),\n useOnClickOutside: () => (/* reexport safe */ _useOnClickOutside_js__rspack_import_34.useOnClickOutside),\n useOnVisible: () => (/* reexport safe */ _useOnVisible_js__rspack_import_35.useOnVisible),\n useOpenmrsFetchAll: () => (/* reexport safe */ _useOpenmrsFetchAll_js__rspack_import_36.useOpenmrsFetchAll),\n useOpenmrsInfinite: () => (/* reexport safe */ _useOpenmrsInfinite_js__rspack_import_37.useOpenmrsInfinite),\n useOpenmrsPagination: () => (/* reexport safe */ _useOpenmrsPagination_js__rspack_import_38.useOpenmrsPagination),\n useOpenmrsSWR: () => (/* reexport safe */ _useOpenmrsSWR_js__rspack_import_39.useOpenmrsSWR),\n usePagination: () => (/* reexport safe */ _usePagination_js__rspack_import_40.usePagination),\n usePaginationInfo: () => (/* reexport safe */ _usePaginationInfo_js__rspack_import_41.usePaginationInfo),\n usePatient: () => (/* reexport safe */ _usePatient_js__rspack_import_42.usePatient),\n usePrimaryIdentifierCode: () => (/* reexport safe */ _usePrimaryIdentifierResource_js__rspack_import_43.usePrimaryIdentifierCode),\n useRenderableExtensions: () => (/* reexport safe */ _useRenderableExtensions_js__rspack_import_44.useRenderableExtensions),\n useSession: () => (/* reexport safe */ _useSession_js__rspack_import_45.useSession),\n useStore: () => (/* reexport safe */ _useStore_js__rspack_import_46.useStore),\n useStoreWithActions: () => (/* reexport safe */ _useStore_js__rspack_import_46.useStoreWithActions),\n useVisit: () => (/* reexport safe */ _useVisit_js__rspack_import_48.useVisit),\n useVisitContextStore: () => (/* reexport safe */ _useVisitContextStore_js__rspack_import_49.useVisitContextStore),\n useVisitTypes: () => (/* reexport safe */ _useVisitTypes_js__rspack_import_50.useVisitTypes)\n});\n/* import */ var _ComponentContext_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-react-utils/dist/ComponentContext.js\");\n/* import */ var _ConfigurableLink_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-react-utils/dist/ConfigurableLink.js\");\n/* import */ var _Extension_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-react-utils/dist/Extension.js\");\n/* import */ var _ExtensionSlot_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-react-utils/dist/ExtensionSlot.js\");\n/* import */ var _getLifecycle_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-react-utils/dist/getLifecycle.js\");\n/* import */ var _openmrsComponentDecorator_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-react-utils/dist/openmrsComponentDecorator.js\");\n/* import */ var _OpenmrsContext_js__rspack_import_6 = __webpack_require__(\"../../framework/esm-react-utils/dist/OpenmrsContext.js\");\n/* import */ var _RenderIfValueIsTruthy_js__rspack_import_7 = __webpack_require__(\"../../framework/esm-react-utils/dist/RenderIfValueIsTruthy.js\");\n/* import */ var _useAbortController_js__rspack_import_8 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAbortController.js\");\n/* import */ var _useAppContext_js__rspack_import_9 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAppContext.js\");\n/* import */ var _useAssignedExtensionIds_js__rspack_import_10 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAssignedExtensionIds.js\");\n/* import */ var _useAssignedExtensions_js__rspack_import_11 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAssignedExtensions.js\");\n/* import */ var _useAttachments_js__rspack_import_12 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAttachments.js\");\n/* import */ var _useBodyScrollLock_js__rspack_import_13 = __webpack_require__(\"../../framework/esm-react-utils/dist/useBodyScrollLock.js\");\n/* import */ var _useConfig_js__rspack_import_14 = __webpack_require__(\"../../framework/esm-react-utils/dist/useConfig.js\");\n/* import */ var _useConnectedExtensions_js__rspack_import_15 = __webpack_require__(\"../../framework/esm-react-utils/dist/useConnectedExtensions.js\");\n/* import */ var _useConnectivity_js__rspack_import_16 = __webpack_require__(\"../../framework/esm-react-utils/dist/useConnectivity.js\");\n/* import */ var _useDebounce_js__rspack_import_17 = __webpack_require__(\"../../framework/esm-react-utils/dist/useDebounce.js\");\n/* import */ var _useDefineAppContext_js__rspack_import_18 = __webpack_require__(\"../../framework/esm-react-utils/dist/useDefineAppContext.js\");\n/* import */ var _useEmrConfiguration_js__rspack_import_19 = __webpack_require__(\"../../framework/esm-react-utils/dist/useEmrConfiguration.js\");\n/* import */ var _useExtensionInternalStore_js__rspack_import_20 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionInternalStore.js\");\n/* import */ var _useExtensionSlot_js__rspack_import_21 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionSlot.js\");\n/* import */ var _useExtensionSlotMeta_js__rspack_import_22 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionSlotMeta.js\");\n/* import */ var _useExtensionSlotStore_js__rspack_import_23 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionSlotStore.js\");\n/* import */ var _useExtensionStore_js__rspack_import_24 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionStore.js\");\n/* import */ var _useFeatureFlag_js__rspack_import_25 = __webpack_require__(\"../../framework/esm-react-utils/dist/useFeatureFlag.js\");\n/* import */ var _useForceUpdate_js__rspack_import_26 = __webpack_require__(\"../../framework/esm-react-utils/dist/useForceUpdate.js\");\n/* import */ var _useFhirFetchAll_js__rspack_import_27 = __webpack_require__(\"../../framework/esm-react-utils/dist/useFhirFetchAll.js\");\n/* import */ var _useFhirInfinite_js__rspack_import_28 = __webpack_require__(\"../../framework/esm-react-utils/dist/useFhirInfinite.js\");\n/* import */ var _useFhirPagination_js__rspack_import_29 = __webpack_require__(\"../../framework/esm-react-utils/dist/useFhirPagination.js\");\n/* import */ var _useLayoutType_js__rspack_import_30 = __webpack_require__(\"../../framework/esm-react-utils/dist/useLayoutType.js\");\n/* import */ var _useLeftNav_js__rspack_import_31 = __webpack_require__(\"../../framework/esm-react-utils/dist/useLeftNav.js\");\n/* import */ var _useLeftNavStore_js__rspack_import_32 = __webpack_require__(\"../../framework/esm-react-utils/dist/useLeftNavStore.js\");\n/* import */ var _useLocations_js__rspack_import_33 = __webpack_require__(\"../../framework/esm-react-utils/dist/useLocations.js\");\n/* import */ var _useOnClickOutside_js__rspack_import_34 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOnClickOutside.js\");\n/* import */ var _useOnVisible_js__rspack_import_35 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOnVisible.js\");\n/* import */ var _useOpenmrsFetchAll_js__rspack_import_36 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOpenmrsFetchAll.js\");\n/* import */ var _useOpenmrsInfinite_js__rspack_import_37 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOpenmrsInfinite.js\");\n/* import */ var _useOpenmrsPagination_js__rspack_import_38 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOpenmrsPagination.js\");\n/* import */ var _useOpenmrsSWR_js__rspack_import_39 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOpenmrsSWR.js\");\n/* import */ var _usePagination_js__rspack_import_40 = __webpack_require__(\"../../framework/esm-react-utils/dist/usePagination.js\");\n/* import */ var _usePaginationInfo_js__rspack_import_41 = __webpack_require__(\"../../framework/esm-react-utils/dist/usePaginationInfo.js\");\n/* import */ var _usePatient_js__rspack_import_42 = __webpack_require__(\"../../framework/esm-react-utils/dist/usePatient.js\");\n/* import */ var _usePrimaryIdentifierResource_js__rspack_import_43 = __webpack_require__(\"../../framework/esm-react-utils/dist/usePrimaryIdentifierResource.js\");\n/* import */ var _useRenderableExtensions_js__rspack_import_44 = __webpack_require__(\"../../framework/esm-react-utils/dist/useRenderableExtensions.js\");\n/* import */ var _useSession_js__rspack_import_45 = __webpack_require__(\"../../framework/esm-react-utils/dist/useSession.js\");\n/* import */ var _useStore_js__rspack_import_46 = __webpack_require__(\"../../framework/esm-react-utils/dist/useStore.js\");\n/* import */ var _UserHasAccess_js__rspack_import_47 = __webpack_require__(\"../../framework/esm-react-utils/dist/UserHasAccess.js\");\n/* import */ var _useVisit_js__rspack_import_48 = __webpack_require__(\"../../framework/esm-react-utils/dist/useVisit.js\");\n/* import */ var _useVisitContextStore_js__rspack_import_49 = __webpack_require__(\"../../framework/esm-react-utils/dist/useVisitContextStore.js\");\n/* import */ var _useVisitTypes_js__rspack_import_50 = __webpack_require__(\"../../framework/esm-react-utils/dist/useVisitTypes.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvaW5kZXguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC9pbmRleC5qcz84NGFkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0NvbXBvbmVudENvbnRleHQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0NvbmZpZ3VyYWJsZUxpbmsuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0V4dGVuc2lvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRXh0ZW5zaW9uU2xvdC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2V0TGlmZWN5Y2xlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vcGVubXJzQ29tcG9uZW50RGVjb3JhdG9yLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9PcGVubXJzQ29udGV4dC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vUmVuZGVySWZWYWx1ZUlzVHJ1dGh5LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VBYm9ydENvbnRyb2xsZXIuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUFwcENvbnRleHQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUFzc2lnbmVkRXh0ZW5zaW9uSWRzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VBc3NpZ25lZEV4dGVuc2lvbnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUF0dGFjaG1lbnRzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VCb2R5U2Nyb2xsTG9jay5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlQ29uZmlnLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VDb25uZWN0ZWRFeHRlbnNpb25zLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VDb25uZWN0aXZpdHkuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZURlYm91bmNlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VEZWZpbmVBcHBDb250ZXh0LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VFbXJDb25maWd1cmF0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VFeHRlbnNpb25JbnRlcm5hbFN0b3JlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VFeHRlbnNpb25TbG90LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VFeHRlbnNpb25TbG90TWV0YS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlRXh0ZW5zaW9uU2xvdFN0b3JlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VFeHRlbnNpb25TdG9yZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlRmVhdHVyZUZsYWcuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUZvcmNlVXBkYXRlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VGaGlyRmV0Y2hBbGwuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUZoaXJJbmZpbml0ZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlRmhpclBhZ2luYXRpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUxheW91dFR5cGUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUxlZnROYXYuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUxlZnROYXZTdG9yZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlTG9jYXRpb25zLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VPbkNsaWNrT3V0c2lkZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlT25WaXNpYmxlLmpzXCI7XG5leHBvcnQgeyB1c2VPcGVubXJzRmV0Y2hBbGwgfSBmcm9tIFwiLi91c2VPcGVubXJzRmV0Y2hBbGwuanNcIjtcbmV4cG9ydCB7IHVzZU9wZW5tcnNJbmZpbml0ZSB9IGZyb20gXCIuL3VzZU9wZW5tcnNJbmZpbml0ZS5qc1wiO1xuZXhwb3J0IHsgdXNlT3Blbm1yc1BhZ2luYXRpb24gfSBmcm9tIFwiLi91c2VPcGVubXJzUGFnaW5hdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlT3Blbm1yc1NXUi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlUGFnaW5hdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlUGFnaW5hdGlvbkluZm8uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZVBhdGllbnQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZVByaW1hcnlJZGVudGlmaWVyUmVzb3VyY2UuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZVJlbmRlcmFibGVFeHRlbnNpb25zLmpzXCI7XG5leHBvcnQgeyB1c2VTZXNzaW9uIH0gZnJvbSBcIi4vdXNlU2Vzc2lvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlU3RvcmUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1VzZXJIYXNBY2Nlc3MuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZVZpc2l0LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VWaXNpdENvbnRleHRTdG9yZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlVmlzaXRUeXBlcy5qc1wiO1xuIl0sIm5hbWVzIjpbInVzZU9wZW5tcnNGZXRjaEFsbCIsInVzZU9wZW5tcnNJbmZpbml0ZSIsInVzZU9wZW5tcnNQYWdpbmF0aW9uIiwidXNlU2Vzc2lvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFzQztBQUNBO0FBQ1A7QUFDSTtBQUNEO0FBQ2E7QUFDWDtBQUNPO0FBQ0g7QUFDTDtBQUNVO0FBQ0Y7QUFDUDtBQUNHO0FBQ1I7QUFDYTtBQUNQO0FBQ0o7QUFDUTtBQUNBO0FBQ007QUFDVDtBQUNJO0FBQ0M7QUFDSjtBQUNIO0FBQ0E7QUFDQztBQUNBO0FBQ0U7QUFDSjtBQUNIO0FBQ0s7QUFDSDtBQUNLO0FBQ0w7QUFDMkI7QUFDQTtBQUNJO0FBQzlCO0FBQ0E7QUFDSTtBQUNQO0FBQ2tCO0FBQ0w7QUFDQTtBQUNmO0FBQ0s7QUFDTDtBQUNZO0FBQ1AifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/index.js\n\n}");
5958
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n ComponentContext: () => (/* reexport safe */ _ComponentContext_js__rspack_import_0.ComponentContext),\n ConfigurableLink: () => (/* reexport safe */ _ConfigurableLink_js__rspack_import_1.ConfigurableLink),\n Extension: () => (/* reexport safe */ _Extension_js__rspack_import_2.Extension),\n ExtensionSlot: () => (/* reexport safe */ _ExtensionSlot_js__rspack_import_3.ExtensionSlot),\n OpenmrsAppContext: () => (/* reexport safe */ _OpenmrsContext_js__rspack_import_6.OpenmrsAppContext),\n RenderIfValueIsTruthy: () => (/* reexport safe */ _RenderIfValueIsTruthy_js__rspack_import_7.RenderIfValueIsTruthy),\n UserHasAccess: () => (/* reexport safe */ _UserHasAccess_js__rspack_import_49.UserHasAccess),\n createUseStore: () => (/* reexport safe */ _useStore_js__rspack_import_48.createUseStore),\n getAsyncExtensionLifecycle: () => (/* reexport safe */ _getLifecycle_js__rspack_import_4.getAsyncExtensionLifecycle),\n getAsyncLifecycle: () => (/* reexport safe */ _getLifecycle_js__rspack_import_4.getAsyncLifecycle),\n getFhirServerPaginationHandlers: () => (/* reexport safe */ _useFhirPagination_js__rspack_import_31.getFhirServerPaginationHandlers),\n getLifecycle: () => (/* reexport safe */ _getLifecycle_js__rspack_import_4.getLifecycle),\n getSyncLifecycle: () => (/* reexport safe */ _getLifecycle_js__rspack_import_4.getSyncLifecycle),\n isDesktop: () => (/* reexport safe */ _useLayoutType_js__rspack_import_32.isDesktop),\n openmrsComponentDecorator: () => (/* reexport safe */ _openmrsComponentDecorator_js__rspack_import_5.openmrsComponentDecorator),\n useAbortController: () => (/* reexport safe */ _useAbortController_js__rspack_import_8.useAbortController),\n useAppContext: () => (/* reexport safe */ _useAppContext_js__rspack_import_9.useAppContext),\n useAssignedExtensionIds: () => (/* reexport safe */ _useAssignedExtensionIds_js__rspack_import_10.useAssignedExtensionIds),\n useAssignedExtensions: () => (/* reexport safe */ _useAssignedExtensions_js__rspack_import_11.useAssignedExtensions),\n useAttachments: () => (/* reexport safe */ _useAttachments_js__rspack_import_14.useAttachments),\n useBodyScrollLock: () => (/* reexport safe */ _useBodyScrollLock_js__rspack_import_15.useBodyScrollLock),\n useCandidateExtensions: () => (/* reexport safe */ _useCandidateExtensions_js__rspack_import_12.useCandidateExtensions),\n useConfig: () => (/* reexport safe */ _useConfig_js__rspack_import_16.useConfig),\n useConnectedExtensions: () => (/* reexport safe */ _useConnectedExtensions_js__rspack_import_17.useConnectedExtensions),\n useConnectivity: () => (/* reexport safe */ _useConnectivity_js__rspack_import_18.useConnectivity),\n useDebounce: () => (/* reexport safe */ _useDebounce_js__rspack_import_19.useDebounce),\n useDefineAppContext: () => (/* reexport safe */ _useDefineAppContext_js__rspack_import_20.useDefineAppContext),\n useEmrConfiguration: () => (/* reexport safe */ _useEmrConfiguration_js__rspack_import_21.useEmrConfiguration),\n useExtensionInternalStore: () => (/* reexport safe */ _useExtensionInternalStore_js__rspack_import_22.useExtensionInternalStore),\n useExtensionSlot: () => (/* reexport safe */ _useExtensionSlot_js__rspack_import_23.useExtensionSlot),\n useExtensionSlotMeta: () => (/* reexport safe */ _useExtensionSlotMeta_js__rspack_import_24.useExtensionSlotMeta),\n useExtensionSlotStore: () => (/* reexport safe */ _useExtensionSlotStore_js__rspack_import_25.useExtensionSlotStore),\n useExtensionStore: () => (/* reexport safe */ _useExtensionStore_js__rspack_import_26.useExtensionStore),\n useFeatureFlag: () => (/* reexport safe */ _useFeatureFlag_js__rspack_import_27.useFeatureFlag),\n useFhirFetchAll: () => (/* reexport safe */ _useFhirFetchAll_js__rspack_import_29.useFhirFetchAll),\n useFhirInfinite: () => (/* reexport safe */ _useFhirInfinite_js__rspack_import_30.useFhirInfinite),\n useFhirPagination: () => (/* reexport safe */ _useFhirPagination_js__rspack_import_31.useFhirPagination),\n useForceUpdate: () => (/* reexport safe */ _useForceUpdate_js__rspack_import_28.useForceUpdate),\n useLayoutType: () => (/* reexport safe */ _useLayoutType_js__rspack_import_32.useLayoutType),\n useLeftNav: () => (/* reexport safe */ _useLeftNav_js__rspack_import_33.useLeftNav),\n useLeftNavStore: () => (/* reexport safe */ _useLeftNavStore_js__rspack_import_34.useLeftNavStore),\n useLocations: () => (/* reexport safe */ _useLocations_js__rspack_import_35.useLocations),\n useOnClickOutside: () => (/* reexport safe */ _useOnClickOutside_js__rspack_import_36.useOnClickOutside),\n useOnVisible: () => (/* reexport safe */ _useOnVisible_js__rspack_import_37.useOnVisible),\n useOpenmrsFetchAll: () => (/* reexport safe */ _useOpenmrsFetchAll_js__rspack_import_38.useOpenmrsFetchAll),\n useOpenmrsInfinite: () => (/* reexport safe */ _useOpenmrsInfinite_js__rspack_import_39.useOpenmrsInfinite),\n useOpenmrsPagination: () => (/* reexport safe */ _useOpenmrsPagination_js__rspack_import_40.useOpenmrsPagination),\n useOpenmrsSWR: () => (/* reexport safe */ _useOpenmrsSWR_js__rspack_import_41.useOpenmrsSWR),\n usePagination: () => (/* reexport safe */ _usePagination_js__rspack_import_42.usePagination),\n usePaginationInfo: () => (/* reexport safe */ _usePaginationInfo_js__rspack_import_43.usePaginationInfo),\n usePatient: () => (/* reexport safe */ _usePatient_js__rspack_import_44.usePatient),\n usePrimaryIdentifierCode: () => (/* reexport safe */ _usePrimaryIdentifierResource_js__rspack_import_45.usePrimaryIdentifierCode),\n useRenderableExtensions: () => (/* reexport safe */ _useRenderableExtensions_js__rspack_import_46.useRenderableExtensions),\n useSession: () => (/* reexport safe */ _useSession_js__rspack_import_47.useSession),\n useShallowStableValue: () => (/* reexport safe */ _useShallowStableValue_js__rspack_import_13.useShallowStableValue),\n useStore: () => (/* reexport safe */ _useStore_js__rspack_import_48.useStore),\n useStoreWithActions: () => (/* reexport safe */ _useStore_js__rspack_import_48.useStoreWithActions),\n useVisit: () => (/* reexport safe */ _useVisit_js__rspack_import_50.useVisit),\n useVisitContextStore: () => (/* reexport safe */ _useVisitContextStore_js__rspack_import_51.useVisitContextStore),\n useVisitTypes: () => (/* reexport safe */ _useVisitTypes_js__rspack_import_52.useVisitTypes)\n});\n/* import */ var _ComponentContext_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-react-utils/dist/ComponentContext.js\");\n/* import */ var _ConfigurableLink_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-react-utils/dist/ConfigurableLink.js\");\n/* import */ var _Extension_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-react-utils/dist/Extension.js\");\n/* import */ var _ExtensionSlot_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-react-utils/dist/ExtensionSlot.js\");\n/* import */ var _getLifecycle_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-react-utils/dist/getLifecycle.js\");\n/* import */ var _openmrsComponentDecorator_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-react-utils/dist/openmrsComponentDecorator.js\");\n/* import */ var _OpenmrsContext_js__rspack_import_6 = __webpack_require__(\"../../framework/esm-react-utils/dist/OpenmrsContext.js\");\n/* import */ var _RenderIfValueIsTruthy_js__rspack_import_7 = __webpack_require__(\"../../framework/esm-react-utils/dist/RenderIfValueIsTruthy.js\");\n/* import */ var _useAbortController_js__rspack_import_8 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAbortController.js\");\n/* import */ var _useAppContext_js__rspack_import_9 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAppContext.js\");\n/* import */ var _useAssignedExtensionIds_js__rspack_import_10 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAssignedExtensionIds.js\");\n/* import */ var _useAssignedExtensions_js__rspack_import_11 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAssignedExtensions.js\");\n/* import */ var _useCandidateExtensions_js__rspack_import_12 = __webpack_require__(\"../../framework/esm-react-utils/dist/useCandidateExtensions.js\");\n/* import */ var _useShallowStableValue_js__rspack_import_13 = __webpack_require__(\"../../framework/esm-react-utils/dist/useShallowStableValue.js\");\n/* import */ var _useAttachments_js__rspack_import_14 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAttachments.js\");\n/* import */ var _useBodyScrollLock_js__rspack_import_15 = __webpack_require__(\"../../framework/esm-react-utils/dist/useBodyScrollLock.js\");\n/* import */ var _useConfig_js__rspack_import_16 = __webpack_require__(\"../../framework/esm-react-utils/dist/useConfig.js\");\n/* import */ var _useConnectedExtensions_js__rspack_import_17 = __webpack_require__(\"../../framework/esm-react-utils/dist/useConnectedExtensions.js\");\n/* import */ var _useConnectivity_js__rspack_import_18 = __webpack_require__(\"../../framework/esm-react-utils/dist/useConnectivity.js\");\n/* import */ var _useDebounce_js__rspack_import_19 = __webpack_require__(\"../../framework/esm-react-utils/dist/useDebounce.js\");\n/* import */ var _useDefineAppContext_js__rspack_import_20 = __webpack_require__(\"../../framework/esm-react-utils/dist/useDefineAppContext.js\");\n/* import */ var _useEmrConfiguration_js__rspack_import_21 = __webpack_require__(\"../../framework/esm-react-utils/dist/useEmrConfiguration.js\");\n/* import */ var _useExtensionInternalStore_js__rspack_import_22 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionInternalStore.js\");\n/* import */ var _useExtensionSlot_js__rspack_import_23 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionSlot.js\");\n/* import */ var _useExtensionSlotMeta_js__rspack_import_24 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionSlotMeta.js\");\n/* import */ var _useExtensionSlotStore_js__rspack_import_25 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionSlotStore.js\");\n/* import */ var _useExtensionStore_js__rspack_import_26 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionStore.js\");\n/* import */ var _useFeatureFlag_js__rspack_import_27 = __webpack_require__(\"../../framework/esm-react-utils/dist/useFeatureFlag.js\");\n/* import */ var _useForceUpdate_js__rspack_import_28 = __webpack_require__(\"../../framework/esm-react-utils/dist/useForceUpdate.js\");\n/* import */ var _useFhirFetchAll_js__rspack_import_29 = __webpack_require__(\"../../framework/esm-react-utils/dist/useFhirFetchAll.js\");\n/* import */ var _useFhirInfinite_js__rspack_import_30 = __webpack_require__(\"../../framework/esm-react-utils/dist/useFhirInfinite.js\");\n/* import */ var _useFhirPagination_js__rspack_import_31 = __webpack_require__(\"../../framework/esm-react-utils/dist/useFhirPagination.js\");\n/* import */ var _useLayoutType_js__rspack_import_32 = __webpack_require__(\"../../framework/esm-react-utils/dist/useLayoutType.js\");\n/* import */ var _useLeftNav_js__rspack_import_33 = __webpack_require__(\"../../framework/esm-react-utils/dist/useLeftNav.js\");\n/* import */ var _useLeftNavStore_js__rspack_import_34 = __webpack_require__(\"../../framework/esm-react-utils/dist/useLeftNavStore.js\");\n/* import */ var _useLocations_js__rspack_import_35 = __webpack_require__(\"../../framework/esm-react-utils/dist/useLocations.js\");\n/* import */ var _useOnClickOutside_js__rspack_import_36 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOnClickOutside.js\");\n/* import */ var _useOnVisible_js__rspack_import_37 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOnVisible.js\");\n/* import */ var _useOpenmrsFetchAll_js__rspack_import_38 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOpenmrsFetchAll.js\");\n/* import */ var _useOpenmrsInfinite_js__rspack_import_39 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOpenmrsInfinite.js\");\n/* import */ var _useOpenmrsPagination_js__rspack_import_40 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOpenmrsPagination.js\");\n/* import */ var _useOpenmrsSWR_js__rspack_import_41 = __webpack_require__(\"../../framework/esm-react-utils/dist/useOpenmrsSWR.js\");\n/* import */ var _usePagination_js__rspack_import_42 = __webpack_require__(\"../../framework/esm-react-utils/dist/usePagination.js\");\n/* import */ var _usePaginationInfo_js__rspack_import_43 = __webpack_require__(\"../../framework/esm-react-utils/dist/usePaginationInfo.js\");\n/* import */ var _usePatient_js__rspack_import_44 = __webpack_require__(\"../../framework/esm-react-utils/dist/usePatient.js\");\n/* import */ var _usePrimaryIdentifierResource_js__rspack_import_45 = __webpack_require__(\"../../framework/esm-react-utils/dist/usePrimaryIdentifierResource.js\");\n/* import */ var _useRenderableExtensions_js__rspack_import_46 = __webpack_require__(\"../../framework/esm-react-utils/dist/useRenderableExtensions.js\");\n/* import */ var _useSession_js__rspack_import_47 = __webpack_require__(\"../../framework/esm-react-utils/dist/useSession.js\");\n/* import */ var _useStore_js__rspack_import_48 = __webpack_require__(\"../../framework/esm-react-utils/dist/useStore.js\");\n/* import */ var _UserHasAccess_js__rspack_import_49 = __webpack_require__(\"../../framework/esm-react-utils/dist/UserHasAccess.js\");\n/* import */ var _useVisit_js__rspack_import_50 = __webpack_require__(\"../../framework/esm-react-utils/dist/useVisit.js\");\n/* import */ var _useVisitContextStore_js__rspack_import_51 = __webpack_require__(\"../../framework/esm-react-utils/dist/useVisitContextStore.js\");\n/* import */ var _useVisitTypes_js__rspack_import_52 = __webpack_require__(\"../../framework/esm-react-utils/dist/useVisitTypes.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvaW5kZXguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC9pbmRleC5qcz84NGFkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0NvbXBvbmVudENvbnRleHQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0NvbmZpZ3VyYWJsZUxpbmsuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0V4dGVuc2lvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRXh0ZW5zaW9uU2xvdC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ2V0TGlmZWN5Y2xlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vcGVubXJzQ29tcG9uZW50RGVjb3JhdG9yLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9PcGVubXJzQ29udGV4dC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vUmVuZGVySWZWYWx1ZUlzVHJ1dGh5LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VBYm9ydENvbnRyb2xsZXIuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUFwcENvbnRleHQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUFzc2lnbmVkRXh0ZW5zaW9uSWRzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VBc3NpZ25lZEV4dGVuc2lvbnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUNhbmRpZGF0ZUV4dGVuc2lvbnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZVNoYWxsb3dTdGFibGVWYWx1ZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlQXR0YWNobWVudHMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUJvZHlTY3JvbGxMb2NrLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VDb25maWcuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUNvbm5lY3RlZEV4dGVuc2lvbnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUNvbm5lY3Rpdml0eS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlRGVib3VuY2UuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZURlZmluZUFwcENvbnRleHQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUVtckNvbmZpZ3VyYXRpb24uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUV4dGVuc2lvbkludGVybmFsU3RvcmUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUV4dGVuc2lvblNsb3QuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUV4dGVuc2lvblNsb3RNZXRhLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VFeHRlbnNpb25TbG90U3RvcmUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUV4dGVuc2lvblN0b3JlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VGZWF0dXJlRmxhZy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlRm9yY2VVcGRhdGUuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUZoaXJGZXRjaEFsbC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlRmhpckluZmluaXRlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VGaGlyUGFnaW5hdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlTGF5b3V0VHlwZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlTGVmdE5hdi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlTGVmdE5hdlN0b3JlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VMb2NhdGlvbnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZU9uQ2xpY2tPdXRzaWRlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VPblZpc2libGUuanNcIjtcbmV4cG9ydCB7IHVzZU9wZW5tcnNGZXRjaEFsbCB9IGZyb20gXCIuL3VzZU9wZW5tcnNGZXRjaEFsbC5qc1wiO1xuZXhwb3J0IHsgdXNlT3Blbm1yc0luZmluaXRlIH0gZnJvbSBcIi4vdXNlT3Blbm1yc0luZmluaXRlLmpzXCI7XG5leHBvcnQgeyB1c2VPcGVubXJzUGFnaW5hdGlvbiB9IGZyb20gXCIuL3VzZU9wZW5tcnNQYWdpbmF0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VPcGVubXJzU1dSLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VQYWdpbmF0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VQYWdpbmF0aW9uSW5mby5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlUGF0aWVudC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlUHJpbWFyeUlkZW50aWZpZXJSZXNvdXJjZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlUmVuZGVyYWJsZUV4dGVuc2lvbnMuanNcIjtcbmV4cG9ydCB7IHVzZVNlc3Npb24gfSBmcm9tIFwiLi91c2VTZXNzaW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VTdG9yZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vVXNlckhhc0FjY2Vzcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlVmlzaXQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZVZpc2l0Q29udGV4dFN0b3JlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VWaXNpdFR5cGVzLmpzXCI7XG4iXSwibmFtZXMiOlsidXNlT3Blbm1yc0ZldGNoQWxsIiwidXNlT3Blbm1yc0luZmluaXRlIiwidXNlT3Blbm1yc1BhZ2luYXRpb24iLCJ1c2VTZXNzaW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFzQztBQUNBO0FBQ1A7QUFDSTtBQUNEO0FBQ2E7QUFDWDtBQUNPO0FBQ0g7QUFDTDtBQUNVO0FBQ0Y7QUFDQztBQUNEO0FBQ1A7QUFDRztBQUNSO0FBQ2E7QUFDUDtBQUNKO0FBQ1E7QUFDQTtBQUNNO0FBQ1Q7QUFDSTtBQUNDO0FBQ0o7QUFDSDtBQUNBO0FBQ0M7QUFDQTtBQUNFO0FBQ0o7QUFDSDtBQUNLO0FBQ0g7QUFDSztBQUNMO0FBQzJCO0FBQ0E7QUFDSTtBQUM5QjtBQUNBO0FBQ0k7QUFDUDtBQUNrQjtBQUNMO0FBQ0E7QUFDZjtBQUNLO0FBQ0w7QUFDWTtBQUNQIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/index.js\n\n}");
5959
5959
 
5960
5960
  },
5961
5961
  "../../framework/esm-react-utils/dist/openmrsComponentDecorator.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -5975,12 +5975,12 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
5975
5975
  },
5976
5976
  "../../framework/esm-react-utils/dist/useAssignedExtensionIds.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5977
5977
  "use strict";
5978
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useAssignedExtensionIds: () => (useAssignedExtensionIds)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var _openmrs_esm_extensions__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var lodash_es__rspack_import_2 = __webpack_require__(\"../../../node_modules/lodash-es/isEqual.js\");\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category Extension */ \n\n\n/**\n * Gets the assigned extension ids for a given extension slot name.\n * Does not consider if offline or online.\n * @param slotName The name of the slot to get the assigned IDs for.\n *\n * @deprecated Use `useAssignedExtensions`\n */ function useAssignedExtensionIds(slotName) {\n var _useState = _sliced_to_array((0,react__rspack_import_0.useState)([]), 2), ids = _useState[0], setIds = _useState[1];\n (0,react__rspack_import_0.useEffect)(function() {\n return (0,_openmrs_esm_extensions__rspack_import_1.getExtensionStore)().subscribe(function(state) {\n var _ref;\n var _state_slots_slotName;\n var newIds = (_ref = (_state_slots_slotName = state.slots[slotName]) === null || _state_slots_slotName === void 0 ? void 0 : _state_slots_slotName.assignedExtensions.map(function(e) {\n return e.id;\n })) !== null && _ref !== void 0 ? _ref : [];\n if (!(0,lodash_es__rspack_import_2[\"default\"])(newIds, ids)) {\n setIds(newIds);\n }\n });\n }, []);\n return ids;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlQXNzaWduZWRFeHRlbnNpb25JZHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC91c2VBc3NpZ25lZEV4dGVuc2lvbklkcy5qcz9mMTU5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBFeHRlbnNpb24gKi8gaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZ2V0RXh0ZW5zaW9uU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG4vKipcbiAqIEdldHMgdGhlIGFzc2lnbmVkIGV4dGVuc2lvbiBpZHMgZm9yIGEgZ2l2ZW4gZXh0ZW5zaW9uIHNsb3QgbmFtZS5cbiAqIERvZXMgbm90IGNvbnNpZGVyIGlmIG9mZmxpbmUgb3Igb25saW5lLlxuICogQHBhcmFtIHNsb3ROYW1lIFRoZSBuYW1lIG9mIHRoZSBzbG90IHRvIGdldCB0aGUgYXNzaWduZWQgSURzIGZvci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYHVzZUFzc2lnbmVkRXh0ZW5zaW9uc2BcbiAqLyBleHBvcnQgZnVuY3Rpb24gdXNlQXNzaWduZWRFeHRlbnNpb25JZHMoc2xvdE5hbWUpIHtcbiAgICBjb25zdCBbaWRzLCBzZXRJZHNdID0gdXNlU3RhdGUoW10pO1xuICAgIHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gZ2V0RXh0ZW5zaW9uU3RvcmUoKS5zdWJzY3JpYmUoKHN0YXRlKT0+e1xuICAgICAgICAgICAgY29uc3QgbmV3SWRzID0gc3RhdGUuc2xvdHNbc2xvdE5hbWVdPy5hc3NpZ25lZEV4dGVuc2lvbnMubWFwKChlKT0+ZS5pZCkgPz8gW107XG4gICAgICAgICAgICBpZiAoIWlzRXF1YWwobmV3SWRzLCBpZHMpKSB7XG4gICAgICAgICAgICAgICAgc2V0SWRzKG5ld0lkcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gaWRzO1xufVxuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiZ2V0RXh0ZW5zaW9uU3RvcmUiLCJpc0VxdWFsIiwidXNlQXNzaWduZWRFeHRlbnNpb25JZHMiLCJzbG90TmFtZSIsIl91c2VTdGF0ZSIsImlkcyIsInNldElkcyIsInN0YXRlIiwiX3N0YXRlX3Nsb3RzX3Nsb3ROYW1lIiwibmV3SWRzIiwiZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDLEdBQStDO0FBQ25CO0FBQ3hCO0FBQ3BDOzs7Ozs7Q0FNQyxHQUFVLFNBQVNJLHdCQUF3QkMsUUFBUTtJQUNoRCxJQUFzQkMsNkJBQUFBLG1DQUFRQSxDQUFDLEVBQUUsT0FBMUJDLE1BQWVELGNBQVZFLFNBQVVGO0lBQ3RCTixvQ0FBU0EsQ0FBQztRQUNOLE9BQU9FLDhEQUFpQkEsR0FBRyxTQUFTLENBQUMsU0FBQ087O2dCQUNuQkM7WUFBZixJQUFNQyxrQkFBU0Qsd0JBQUFBLE1BQU0sS0FBSyxDQUFDTCxTQUFTLGNBQXJCSyw0Q0FBQUEsc0JBQXVCLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFDRTt1QkFBSUEsRUFBRSxFQUFFO3FEQUFLLEVBQUU7WUFDN0UsSUFBSSxDQUFDVCx5Q0FBT0EsQ0FBQ1EsUUFBUUosTUFBTTtnQkFDdkJDLE9BQU9HO1lBQ1g7UUFDSjtJQUNKLEdBQUcsRUFBRTtJQUNMLE9BQU9KO0FBQ1gifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useAssignedExtensionIds.js\n\n}");
5978
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useAssignedExtensionIds: () => (useAssignedExtensionIds)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var _useAssignedExtensions_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAssignedExtensions.js\");\n/** @module @category Extension */ \n\n/**\n * Gets the assigned extension ids for a given extension slot name.\n *\n * @param slotName The name of the slot to get the assigned IDs for.\n *\n * @deprecated Use `useAssignedExtensions`\n */ function useAssignedExtensionIds(slotName) {\n var assignedExtensions = (0,_useAssignedExtensions_js__rspack_import_1.useAssignedExtensions)(slotName);\n return (0,react__rspack_import_0.useMemo)(function() {\n return assignedExtensions.map(function(extension) {\n return extension.id;\n });\n }, [\n assignedExtensions\n ]);\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlQXNzaWduZWRFeHRlbnNpb25JZHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC91c2VBc3NpZ25lZEV4dGVuc2lvbklkcy5qcz9mMTU5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBFeHRlbnNpb24gKi8gaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQXNzaWduZWRFeHRlbnNpb25zIH0gZnJvbSBcIi4vdXNlQXNzaWduZWRFeHRlbnNpb25zLmpzXCI7XG4vKipcbiAqIEdldHMgdGhlIGFzc2lnbmVkIGV4dGVuc2lvbiBpZHMgZm9yIGEgZ2l2ZW4gZXh0ZW5zaW9uIHNsb3QgbmFtZS5cbiAqXG4gKiBAcGFyYW0gc2xvdE5hbWUgVGhlIG5hbWUgb2YgdGhlIHNsb3QgdG8gZ2V0IHRoZSBhc3NpZ25lZCBJRHMgZm9yLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBgdXNlQXNzaWduZWRFeHRlbnNpb25zYFxuICovIGV4cG9ydCBmdW5jdGlvbiB1c2VBc3NpZ25lZEV4dGVuc2lvbklkcyhzbG90TmFtZSkge1xuICAgIGNvbnN0IGFzc2lnbmVkRXh0ZW5zaW9ucyA9IHVzZUFzc2lnbmVkRXh0ZW5zaW9ucyhzbG90TmFtZSk7XG4gICAgcmV0dXJuIHVzZU1lbW8oKCk9PmFzc2lnbmVkRXh0ZW5zaW9ucy5tYXAoKGV4dGVuc2lvbik9PmV4dGVuc2lvbi5pZCksIFtcbiAgICAgICAgYXNzaWduZWRFeHRlbnNpb25zXG4gICAgXSk7XG59XG4iXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZUFzc2lnbmVkRXh0ZW5zaW9ucyIsInVzZUFzc2lnbmVkRXh0ZW5zaW9uSWRzIiwic2xvdE5hbWUiLCJhc3NpZ25lZEV4dGVuc2lvbnMiLCJleHRlbnNpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FBbUM7QUFDQTtBQUNuRTs7Ozs7O0NBTUMsR0FBVSxTQUFTRSx3QkFBd0JDLFFBQVE7SUFDaEQsSUFBTUMscUJBQXFCSCxvRUFBcUJBLENBQUNFO0lBQ2pELE9BQU9ILGtDQUFPQSxDQUFDO2VBQUlJLG1CQUFtQixHQUFHLENBQUMsU0FBQ0M7bUJBQVlBLFVBQVUsRUFBRTs7T0FBRztRQUNsRUQ7S0FDSDtBQUNMIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useAssignedExtensionIds.js\n\n}");
5979
5979
 
5980
5980
  },
5981
5981
  "../../framework/esm-react-utils/dist/useAssignedExtensions.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5982
5982
  "use strict";
5983
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useAssignedExtensions: () => (useAssignedExtensions)\n});\n/* import */ var _useExtensionSlotStore_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionSlotStore.js\");\n/** @module @category Extension */ \n/**\n * Gets the assigned extensions for a given extension slot name.\n * @param slotName The name of the slot to get the assigned extensions for.\n */ function useAssignedExtensions(slotName) {\n var _ref;\n var slotStore = (0,_useExtensionSlotStore_js__rspack_import_0.useExtensionSlotStore)(slotName);\n return (_ref = slotStore === null || slotStore === void 0 ? void 0 : slotStore.assignedExtensions) !== null && _ref !== void 0 ? _ref : [];\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlQXNzaWduZWRFeHRlbnNpb25zLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlQXNzaWduZWRFeHRlbnNpb25zLmpzPzk0MGUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqLyBpbXBvcnQgeyB1c2VFeHRlbnNpb25TbG90U3RvcmUgfSBmcm9tIFwiLi91c2VFeHRlbnNpb25TbG90U3RvcmUuanNcIjtcbi8qKlxuICogR2V0cyB0aGUgYXNzaWduZWQgZXh0ZW5zaW9ucyBmb3IgYSBnaXZlbiBleHRlbnNpb24gc2xvdCBuYW1lLlxuICogQHBhcmFtIHNsb3ROYW1lIFRoZSBuYW1lIG9mIHRoZSBzbG90IHRvIGdldCB0aGUgYXNzaWduZWQgZXh0ZW5zaW9ucyBmb3IuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVzZUFzc2lnbmVkRXh0ZW5zaW9ucyhzbG90TmFtZSkge1xuICAgIGNvbnN0IHNsb3RTdG9yZSA9IHVzZUV4dGVuc2lvblNsb3RTdG9yZShzbG90TmFtZSk7XG4gICAgcmV0dXJuIHNsb3RTdG9yZT8uYXNzaWduZWRFeHRlbnNpb25zID8/IFtdO1xufVxuIl0sIm5hbWVzIjpbInVzZUV4dGVuc2lvblNsb3RTdG9yZSIsInVzZUFzc2lnbmVkRXh0ZW5zaW9ucyIsInNsb3ROYW1lIiwic2xvdFN0b3JlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdDQUFnQyxHQUFzRTtBQUN0Rzs7O0NBR0MsR0FBVSxTQUFTQyxzQkFBc0JDLFFBQVE7O0lBQzlDLElBQU1DLFlBQVlILG9FQUFxQkEsQ0FBQ0U7SUFDeEMsZUFBT0Msc0JBQUFBLGdDQUFBQSxVQUFXLGtCQUFrQix1Q0FBSSxFQUFFO0FBQzlDIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useAssignedExtensions.js\n\n}");
5983
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useAssignedExtensions: () => (useAssignedExtensions)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var _openmrs_esm_api__rspack_import_1 = __webpack_require__(\"../../framework/esm-api/dist/index.js\");\n/* import */ var _openmrs_esm_extensions__rspack_import_2 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _useShallowStableValue_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-react-utils/dist/useShallowStableValue.js\");\n/* import */ var _useExtensionSlotStore_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionSlotStore.js\");\n/* import */ var _useStore_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-react-utils/dist/useStore.js\");\n/** @module @category Extension */ \n\n\n\n\n\nvar selectSession = function selectSession(state) {\n return state.session;\n};\n/**\n * Gets the assigned extensions for a given extension slot name.\n *\n * The reactive form of `getAssignedExtensions`, and it answers the same thing: display conditions\n * are always applied, so the result is what should actually be displayed. Pass `state` whenever you\n * know it: the same slot can be rendered in several places at once with different state, so\n * conditions are resolved against the state of this rendering. Omitting it resolves them against\n * the session alone, hiding any extension whose condition depends on state.\n *\n * The returned array is a copy, so sorting or filtering it in place can't corrupt the extension\n * store. Its reference is stable for as long as the slot's extensions, the state and the session are.\n *\n * @param slotName The name of the slot to get the assigned extensions for.\n * @param state The state of this rendering of the slot.\n */ function useAssignedExtensions(slotName, state) {\n // Subscribes so that this re-runs when the slot's extensions change; `getAssignedExtensions` reads\n // the same store, so the value below is what it is about to return.\n var candidateExtensions = (0,_useExtensionSlotStore_js__rspack_import_4.useExtensionSlotStore)(slotName).candidateExtensions;\n // Display conditions may refer to `session`, so they have to be re-evaluated when it changes.\n var session = (0,_useStore_js__rspack_import_5.useStore)(_openmrs_esm_api__rspack_import_1.sessionStore, selectSession);\n var stableState = (0,_useShallowStableValue_js__rspack_import_3.useShallowStableValue)(state);\n return (0,react__rspack_import_0.useMemo)(function() {\n return (0,_openmrs_esm_extensions__rspack_import_2.getAssignedExtensions)(slotName, stableState);\n }, [\n slotName,\n stableState,\n session,\n candidateExtensions\n ]);\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlQXNzaWduZWRFeHRlbnNpb25zLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlQXNzaWduZWRFeHRlbnNpb25zLmpzPzk0MGUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqLyBpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzZXNzaW9uU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWFwaVwiO1xuaW1wb3J0IHsgZ2V0QXNzaWduZWRFeHRlbnNpb25zIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1leHRlbnNpb25zXCI7XG5pbXBvcnQgeyB1c2VTaGFsbG93U3RhYmxlVmFsdWUgfSBmcm9tIFwiLi91c2VTaGFsbG93U3RhYmxlVmFsdWUuanNcIjtcbmltcG9ydCB7IHVzZUV4dGVuc2lvblNsb3RTdG9yZSB9IGZyb20gXCIuL3VzZUV4dGVuc2lvblNsb3RTdG9yZS5qc1wiO1xuaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tIFwiLi91c2VTdG9yZS5qc1wiO1xuY29uc3Qgc2VsZWN0U2Vzc2lvbiA9IChzdGF0ZSk9PnN0YXRlLnNlc3Npb247XG4vKipcbiAqIEdldHMgdGhlIGFzc2lnbmVkIGV4dGVuc2lvbnMgZm9yIGEgZ2l2ZW4gZXh0ZW5zaW9uIHNsb3QgbmFtZS5cbiAqXG4gKiBUaGUgcmVhY3RpdmUgZm9ybSBvZiBgZ2V0QXNzaWduZWRFeHRlbnNpb25zYCwgYW5kIGl0IGFuc3dlcnMgdGhlIHNhbWUgdGhpbmc6IGRpc3BsYXkgY29uZGl0aW9uc1xuICogYXJlIGFsd2F5cyBhcHBsaWVkLCBzbyB0aGUgcmVzdWx0IGlzIHdoYXQgc2hvdWxkIGFjdHVhbGx5IGJlIGRpc3BsYXllZC4gUGFzcyBgc3RhdGVgIHdoZW5ldmVyIHlvdVxuICoga25vdyBpdDogdGhlIHNhbWUgc2xvdCBjYW4gYmUgcmVuZGVyZWQgaW4gc2V2ZXJhbCBwbGFjZXMgYXQgb25jZSB3aXRoIGRpZmZlcmVudCBzdGF0ZSwgc29cbiAqIGNvbmRpdGlvbnMgYXJlIHJlc29sdmVkIGFnYWluc3QgdGhlIHN0YXRlIG9mIHRoaXMgcmVuZGVyaW5nLiBPbWl0dGluZyBpdCByZXNvbHZlcyB0aGVtIGFnYWluc3RcbiAqIHRoZSBzZXNzaW9uIGFsb25lLCBoaWRpbmcgYW55IGV4dGVuc2lvbiB3aG9zZSBjb25kaXRpb24gZGVwZW5kcyBvbiBzdGF0ZS5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgYXJyYXkgaXMgYSBjb3B5LCBzbyBzb3J0aW5nIG9yIGZpbHRlcmluZyBpdCBpbiBwbGFjZSBjYW4ndCBjb3JydXB0IHRoZSBleHRlbnNpb25cbiAqIHN0b3JlLiBJdHMgcmVmZXJlbmNlIGlzIHN0YWJsZSBmb3IgYXMgbG9uZyBhcyB0aGUgc2xvdCdzIGV4dGVuc2lvbnMsIHRoZSBzdGF0ZSBhbmQgdGhlIHNlc3Npb24gYXJlLlxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgbmFtZSBvZiB0aGUgc2xvdCB0byBnZXQgdGhlIGFzc2lnbmVkIGV4dGVuc2lvbnMgZm9yLlxuICogQHBhcmFtIHN0YXRlIFRoZSBzdGF0ZSBvZiB0aGlzIHJlbmRlcmluZyBvZiB0aGUgc2xvdC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gdXNlQXNzaWduZWRFeHRlbnNpb25zKHNsb3ROYW1lLCBzdGF0ZSkge1xuICAgIC8vIFN1YnNjcmliZXMgc28gdGhhdCB0aGlzIHJlLXJ1bnMgd2hlbiB0aGUgc2xvdCdzIGV4dGVuc2lvbnMgY2hhbmdlOyBgZ2V0QXNzaWduZWRFeHRlbnNpb25zYCByZWFkc1xuICAgIC8vIHRoZSBzYW1lIHN0b3JlLCBzbyB0aGUgdmFsdWUgYmVsb3cgaXMgd2hhdCBpdCBpcyBhYm91dCB0byByZXR1cm4uXG4gICAgY29uc3QgeyBjYW5kaWRhdGVFeHRlbnNpb25zIH0gPSB1c2VFeHRlbnNpb25TbG90U3RvcmUoc2xvdE5hbWUpO1xuICAgIC8vIERpc3BsYXkgY29uZGl0aW9ucyBtYXkgcmVmZXIgdG8gYHNlc3Npb25gLCBzbyB0aGV5IGhhdmUgdG8gYmUgcmUtZXZhbHVhdGVkIHdoZW4gaXQgY2hhbmdlcy5cbiAgICBjb25zdCBzZXNzaW9uID0gdXNlU3RvcmUoc2Vzc2lvblN0b3JlLCBzZWxlY3RTZXNzaW9uKTtcbiAgICBjb25zdCBzdGFibGVTdGF0ZSA9IHVzZVNoYWxsb3dTdGFibGVWYWx1ZShzdGF0ZSk7XG4gICAgcmV0dXJuIHVzZU1lbW8oKCk9PmdldEFzc2lnbmVkRXh0ZW5zaW9ucyhzbG90TmFtZSwgc3RhYmxlU3RhdGUpLCBbXG4gICAgICAgIHNsb3ROYW1lLFxuICAgICAgICBzdGFibGVTdGF0ZSxcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgICAgY2FuZGlkYXRlRXh0ZW5zaW9uc1xuICAgIF0pO1xufVxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJzZXNzaW9uU3RvcmUiLCJnZXRBc3NpZ25lZEV4dGVuc2lvbnMiLCJ1c2VTaGFsbG93U3RhYmxlVmFsdWUiLCJ1c2VFeHRlbnNpb25TbG90U3RvcmUiLCJ1c2VTdG9yZSIsInNlbGVjdFNlc3Npb24iLCJzdGF0ZSIsInVzZUFzc2lnbmVkRXh0ZW5zaW9ucyIsInNsb3ROYW1lIiwiY2FuZGlkYXRlRXh0ZW5zaW9ucyIsInNlc3Npb24iLCJzdGFibGVTdGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FBbUM7QUFDbkI7QUFDZ0I7QUFDRztBQUNBO0FBQzFCO0FBQ3pDLElBQU1NLGdCQUFnQix1QkFBQ0M7V0FBUUEsTUFBTSxPQUFPOztBQUM1Qzs7Ozs7Ozs7Ozs7Ozs7Q0FjQyxHQUFVLFNBQVNDLHNCQUFzQkMsUUFBUSxFQUFFRixLQUFLO0lBQ3JELG1HQUFtRztJQUNuRyxvRUFBb0U7SUFDcEUsSUFBUUcsc0JBQXdCTixvRUFBcUJBLENBQUNLLFVBQTlDQztJQUNSLDhGQUE4RjtJQUM5RixJQUFNQyxVQUFVTiwwQ0FBUUEsQ0FBQ0osOENBQVlBLEVBQUVLO0lBQ3ZDLElBQU1NLGNBQWNULG9FQUFxQkEsQ0FBQ0k7SUFDMUMsT0FBT1Asa0NBQU9BLENBQUM7ZUFBSUUsa0VBQXFCQSxDQUFDTyxVQUFVRztPQUFjO1FBQzdESDtRQUNBRztRQUNBRDtRQUNBRDtLQUNIO0FBQ0wifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useAssignedExtensions.js\n\n}");
5984
5984
 
5985
5985
  },
5986
5986
  "../../framework/esm-react-utils/dist/useAttachments.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -5992,6 +5992,11 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
5992
5992
  "use strict";
5993
5993
  eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useBodyScrollLock: () => (useBodyScrollLock)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/** @module @category UI */ \n/**\n * A React hook that prevents scrolling on the document body when active.\n * Useful for modals, overlays, or any full-screen UI that should prevent\n * background scrolling. The original overflow style is restored when the\n * hook becomes inactive or the component unmounts.\n *\n * @param active Whether to lock the body scroll. When `true`, sets\n * `document.body.style.overflow` to 'hidden'.\n *\n * @example\n * ```tsx\n * import { useBodyScrollLock } from '@openmrs/esm-framework';\n * function Modal({ isOpen }) {\n * useBodyScrollLock(isOpen);\n * return isOpen ? <div className=\"modal\">...</div> : null;\n * }\n * ```\n */ function useBodyScrollLock(active) {\n (0,react__rspack_import_0.useEffect)(function() {\n if (active) {\n var original = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n return function() {\n document.body.style.overflow = original;\n };\n }\n }, [\n active\n ]);\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlQm9keVNjcm9sbExvY2suanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC91c2VCb2R5U2Nyb2xsTG9jay5qcz84MTY0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBVSSAqLyBpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbi8qKlxuICogQSBSZWFjdCBob29rIHRoYXQgcHJldmVudHMgc2Nyb2xsaW5nIG9uIHRoZSBkb2N1bWVudCBib2R5IHdoZW4gYWN0aXZlLlxuICogVXNlZnVsIGZvciBtb2RhbHMsIG92ZXJsYXlzLCBvciBhbnkgZnVsbC1zY3JlZW4gVUkgdGhhdCBzaG91bGQgcHJldmVudFxuICogYmFja2dyb3VuZCBzY3JvbGxpbmcuIFRoZSBvcmlnaW5hbCBvdmVyZmxvdyBzdHlsZSBpcyByZXN0b3JlZCB3aGVuIHRoZVxuICogaG9vayBiZWNvbWVzIGluYWN0aXZlIG9yIHRoZSBjb21wb25lbnQgdW5tb3VudHMuXG4gKlxuICogQHBhcmFtIGFjdGl2ZSBXaGV0aGVyIHRvIGxvY2sgdGhlIGJvZHkgc2Nyb2xsLiBXaGVuIGB0cnVlYCwgc2V0c1xuICogICBgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvd2AgdG8gJ2hpZGRlbicuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgdXNlQm9keVNjcm9sbExvY2sgfSBmcm9tICdAb3Blbm1ycy9lc20tZnJhbWV3b3JrJztcbiAqIGZ1bmN0aW9uIE1vZGFsKHsgaXNPcGVuIH0pIHtcbiAqICAgdXNlQm9keVNjcm9sbExvY2soaXNPcGVuKTtcbiAqICAgcmV0dXJuIGlzT3BlbiA/IDxkaXYgY2xhc3NOYW1lPVwibW9kYWxcIj4uLi48L2Rpdj4gOiBudWxsO1xuICogfVxuICogYGBgXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVzZUJvZHlTY3JvbGxMb2NrKGFjdGl2ZSkge1xuICAgIHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm92ZXJmbG93O1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IG9yaWdpbmFsO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgYWN0aXZlXG4gICAgXSk7XG59XG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwidXNlQm9keVNjcm9sbExvY2siLCJhY3RpdmUiLCJvcmlnaW5hbCIsIndpbmRvdyIsImRvY3VtZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5QkFBeUIsR0FBcUM7QUFDOUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJDLEdBQVUsU0FBU0Msa0JBQWtCQyxNQUFNO0lBQ3hDRixvQ0FBU0EsQ0FBQztRQUNOLElBQUlFLFFBQVE7WUFDUixJQUFNQyxXQUFXQyxPQUFPLGdCQUFnQixDQUFDQyxTQUFTLElBQUksRUFBRSxRQUFRO1lBQ2hFQSxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHO1lBQy9CLE9BQU87Z0JBQ0hBLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUdGO1lBQ25DO1FBQ0o7SUFDSixHQUFHO1FBQ0NEO0tBQ0g7QUFDTCJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useBodyScrollLock.js\n\n}");
5994
5994
 
5995
+ },
5996
+ "../../framework/esm-react-utils/dist/useCandidateExtensions.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5997
+ "use strict";
5998
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useCandidateExtensions: () => (useCandidateExtensions)\n});\n/* import */ var _useExtensionSlotStore_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-react-utils/dist/useExtensionSlotStore.js\");\n/** @module @category Extension */ \n/**\n * The reactive form of `getCandidateExtensions`: everything assigned to a slot, with no display\n * condition evaluated. Intended for tools that present a slot's configuration rather than render it.\n *\n * Use {@link useAssignedExtensions} to decide what to display.\n *\n * @param slotName The name of the slot to get the candidate extensions for.\n * @internal\n */ function useCandidateExtensions(slotName) {\n return (0,_useExtensionSlotStore_js__rspack_import_0.useExtensionSlotStore)(slotName).candidateExtensions;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlQ2FuZGlkYXRlRXh0ZW5zaW9ucy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9kaXN0L3VzZUNhbmRpZGF0ZUV4dGVuc2lvbnMuanM/NzljNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRXh0ZW5zaW9uICovIGltcG9ydCB7IHVzZUV4dGVuc2lvblNsb3RTdG9yZSB9IGZyb20gXCIuL3VzZUV4dGVuc2lvblNsb3RTdG9yZS5qc1wiO1xuLyoqXG4gKiBUaGUgcmVhY3RpdmUgZm9ybSBvZiBgZ2V0Q2FuZGlkYXRlRXh0ZW5zaW9uc2A6IGV2ZXJ5dGhpbmcgYXNzaWduZWQgdG8gYSBzbG90LCB3aXRoIG5vIGRpc3BsYXlcbiAqIGNvbmRpdGlvbiBldmFsdWF0ZWQuIEludGVuZGVkIGZvciB0b29scyB0aGF0IHByZXNlbnQgYSBzbG90J3MgY29uZmlndXJhdGlvbiByYXRoZXIgdGhhbiByZW5kZXIgaXQuXG4gKlxuICogVXNlIHtAbGluayB1c2VBc3NpZ25lZEV4dGVuc2lvbnN9IHRvIGRlY2lkZSB3aGF0IHRvIGRpc3BsYXkuXG4gKlxuICogQHBhcmFtIHNsb3ROYW1lIFRoZSBuYW1lIG9mIHRoZSBzbG90IHRvIGdldCB0aGUgY2FuZGlkYXRlIGV4dGVuc2lvbnMgZm9yLlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVzZUNhbmRpZGF0ZUV4dGVuc2lvbnMoc2xvdE5hbWUpIHtcbiAgICByZXR1cm4gdXNlRXh0ZW5zaW9uU2xvdFN0b3JlKHNsb3ROYW1lKS5jYW5kaWRhdGVFeHRlbnNpb25zO1xufVxuIl0sIm5hbWVzIjpbInVzZUV4dGVuc2lvblNsb3RTdG9yZSIsInVzZUNhbmRpZGF0ZUV4dGVuc2lvbnMiLCJzbG90TmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnQ0FBZ0MsR0FBc0U7QUFDdEc7Ozs7Ozs7O0NBUUMsR0FBVSxTQUFTQyx1QkFBdUJDLFFBQVE7SUFDL0MsT0FBT0Ysb0VBQXFCQSxDQUFDRSxVQUFVLG1CQUFtQjtBQUM5RCJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useCandidateExtensions.js\n\n}");
5999
+
5995
6000
  },
5996
6001
  "../../framework/esm-react-utils/dist/useConfig.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
5997
6002
  "use strict";
@@ -6030,7 +6035,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
6030
6035
  },
6031
6036
  "../../framework/esm-react-utils/dist/useExtensionSlot.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
6032
6037
  "use strict";
6033
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useExtensionSlot: () => (useExtensionSlot)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var _openmrs_esm_extensions__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _ComponentContext_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-react-utils/dist/ComponentContext.js\");\n/* import */ var _useAssignedExtensions_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAssignedExtensions.js\");\n\n\n\n\n/** @internal */ function useExtensionSlot(slotName, state) {\n var moduleName = (0,react__rspack_import_0.useContext)(_ComponentContext_js__rspack_import_2.ComponentContext).moduleName;\n var isInitialRender = (0,react__rspack_import_0.useRef)(true);\n if (!moduleName) {\n throw Error('ComponentContext has not been provided. This should come from @openmrs/esm-react-utils.');\n }\n (0,react__rspack_import_0.useEffect)(function() {\n (0,_openmrs_esm_extensions__rspack_import_1.registerExtensionSlot)(moduleName, slotName, state);\n isInitialRender.current = false;\n }, []);\n (0,react__rspack_import_0.useEffect)(function() {\n if (!isInitialRender.current) {\n (0,_openmrs_esm_extensions__rspack_import_1.updateExtensionSlotState)(slotName, state);\n }\n }, [\n slotName,\n state\n ]);\n var extensions = (0,_useAssignedExtensions_js__rspack_import_3.useAssignedExtensions)(slotName);\n return {\n extensions: extensions,\n extensionSlotName: slotName,\n extensionSlotModuleName: moduleName\n };\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlRXh0ZW5zaW9uU2xvdC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9kaXN0L3VzZUV4dGVuc2lvblNsb3QuanM/Mjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJFeHRlbnNpb25TbG90LCB1cGRhdGVFeHRlbnNpb25TbG90U3RhdGUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHQgfSBmcm9tIFwiLi9Db21wb25lbnRDb250ZXh0LmpzXCI7XG5pbXBvcnQgeyB1c2VBc3NpZ25lZEV4dGVuc2lvbnMgfSBmcm9tIFwiLi91c2VBc3NpZ25lZEV4dGVuc2lvbnMuanNcIjtcbi8qKiBAaW50ZXJuYWwgKi8gZXhwb3J0IGZ1bmN0aW9uIHVzZUV4dGVuc2lvblNsb3Qoc2xvdE5hbWUsIHN0YXRlKSB7XG4gICAgY29uc3QgeyBtb2R1bGVOYW1lIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuICAgIGNvbnN0IGlzSW5pdGlhbFJlbmRlciA9IHVzZVJlZih0cnVlKTtcbiAgICBpZiAoIW1vZHVsZU5hbWUpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0NvbXBvbmVudENvbnRleHQgaGFzIG5vdCBiZWVuIHByb3ZpZGVkLiBUaGlzIHNob3VsZCBjb21lIGZyb20gQG9wZW5tcnMvZXNtLXJlYWN0LXV0aWxzLicpO1xuICAgIH1cbiAgICB1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmVnaXN0ZXJFeHRlbnNpb25TbG90KG1vZHVsZU5hbWUsIHNsb3ROYW1lLCBzdGF0ZSk7XG4gICAgICAgIGlzSW5pdGlhbFJlbmRlci5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSwgW10pO1xuICAgIHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoIWlzSW5pdGlhbFJlbmRlci5jdXJyZW50KSB7XG4gICAgICAgICAgICB1cGRhdGVFeHRlbnNpb25TbG90U3RhdGUoc2xvdE5hbWUsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgc2xvdE5hbWUsXG4gICAgICAgIHN0YXRlXG4gICAgXSk7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IHVzZUFzc2lnbmVkRXh0ZW5zaW9ucyhzbG90TmFtZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZXh0ZW5zaW9ucyxcbiAgICAgICAgZXh0ZW5zaW9uU2xvdE5hbWU6IHNsb3ROYW1lLFxuICAgICAgICBleHRlbnNpb25TbG90TW9kdWxlTmFtZTogbW9kdWxlTmFtZVxuICAgIH07XG59XG4iXSwibmFtZXMiOlsidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInJlZ2lzdGVyRXh0ZW5zaW9uU2xvdCIsInVwZGF0ZUV4dGVuc2lvblNsb3RTdGF0ZSIsIkNvbXBvbmVudENvbnRleHQiLCJ1c2VBc3NpZ25lZEV4dGVuc2lvbnMiLCJ1c2VFeHRlbnNpb25TbG90Iiwic2xvdE5hbWUiLCJzdGF0ZSIsIm1vZHVsZU5hbWUiLCJpc0luaXRpYWxSZW5kZXIiLCJFcnJvciIsImV4dGVuc2lvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFzRDtBQUNvQztBQUNqQztBQUNVO0FBQ25FLGNBQWMsR0FBVSxTQUFTTyxpQkFBaUJDLFFBQVEsRUFBRUMsS0FBSztJQUM3RCxJQUFRQyxhQUFlVixxQ0FBVUEsQ0FBQ0ssc0RBQWdCQSxFQUExQ0s7SUFDUixJQUFNQyxrQkFBa0JULGlDQUFNQSxDQUFDO0lBQy9CLElBQUksQ0FBQ1EsWUFBWTtRQUNiLE1BQU1FLE1BQU07SUFDaEI7SUFDQVgsb0NBQVNBLENBQUM7UUFDTkUsa0VBQXFCQSxDQUFDTyxZQUFZRixVQUFVQztRQUM1Q0UsZ0JBQWdCLE9BQU8sR0FBRztJQUM5QixHQUFHLEVBQUU7SUFDTFYsb0NBQVNBLENBQUM7UUFDTixJQUFJLENBQUNVLGdCQUFnQixPQUFPLEVBQUU7WUFDMUJQLHFFQUF3QkEsQ0FBQ0ksVUFBVUM7UUFDdkM7SUFDSixHQUFHO1FBQ0NEO1FBQ0FDO0tBQ0g7SUFDRCxJQUFNSSxhQUFhUCxvRUFBcUJBLENBQUNFO0lBQ3pDLE9BQU87UUFDSEssWUFBQUE7UUFDQSxtQkFBbUJMO1FBQ25CLHlCQUF5QkU7SUFDN0I7QUFDSiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useExtensionSlot.js\n\n}");
6038
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useExtensionSlot: () => (useExtensionSlot)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var _openmrs_esm_extensions__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _ComponentContext_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-react-utils/dist/ComponentContext.js\");\n/* import */ var _useAssignedExtensions_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-react-utils/dist/useAssignedExtensions.js\");\n\n\n\n\n/** @internal */ function useExtensionSlot(slotName, state) {\n var moduleName = (0,react__rspack_import_0.useContext)(_ComponentContext_js__rspack_import_2.ComponentContext).moduleName;\n if (!moduleName) {\n throw Error('ComponentContext has not been provided. This should come from @openmrs/esm-react-utils.');\n }\n (0,react__rspack_import_0.useEffect)(function() {\n (0,_openmrs_esm_extensions__rspack_import_1.registerExtensionSlot)(moduleName, slotName);\n }, [\n moduleName,\n slotName\n ]);\n // `state` must be local to the rendering rather than written to the store as state is\n // render-specific\n var extensions = (0,_useAssignedExtensions_js__rspack_import_3.useAssignedExtensions)(slotName, state);\n return {\n extensions: extensions,\n extensionSlotName: slotName,\n extensionSlotModuleName: moduleName\n };\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlRXh0ZW5zaW9uU2xvdC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9kaXN0L3VzZUV4dGVuc2lvblNsb3QuanM/Mjg0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHJlZ2lzdGVyRXh0ZW5zaW9uU2xvdCB9IGZyb20gXCJAb3Blbm1ycy9lc20tZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gXCIuL0NvbXBvbmVudENvbnRleHQuanNcIjtcbmltcG9ydCB7IHVzZUFzc2lnbmVkRXh0ZW5zaW9ucyB9IGZyb20gXCIuL3VzZUFzc2lnbmVkRXh0ZW5zaW9ucy5qc1wiO1xuLyoqIEBpbnRlcm5hbCAqLyBleHBvcnQgZnVuY3Rpb24gdXNlRXh0ZW5zaW9uU2xvdChzbG90TmFtZSwgc3RhdGUpIHtcbiAgICBjb25zdCB7IG1vZHVsZU5hbWUgfSA9IHVzZUNvbnRleHQoQ29tcG9uZW50Q29udGV4dCk7XG4gICAgaWYgKCFtb2R1bGVOYW1lKSB7XG4gICAgICAgIHRocm93IEVycm9yKCdDb21wb25lbnRDb250ZXh0IGhhcyBub3QgYmVlbiBwcm92aWRlZC4gVGhpcyBzaG91bGQgY29tZSBmcm9tIEBvcGVubXJzL2VzbS1yZWFjdC11dGlscy4nKTtcbiAgICB9XG4gICAgdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJlZ2lzdGVyRXh0ZW5zaW9uU2xvdChtb2R1bGVOYW1lLCBzbG90TmFtZSk7XG4gICAgfSwgW1xuICAgICAgICBtb2R1bGVOYW1lLFxuICAgICAgICBzbG90TmFtZVxuICAgIF0pO1xuICAgIC8vIGBzdGF0ZWAgbXVzdCBiZSBsb2NhbCB0byB0aGUgcmVuZGVyaW5nIHJhdGhlciB0aGFuIHdyaXR0ZW4gdG8gdGhlIHN0b3JlIGFzIHN0YXRlIGlzXG4gICAgLy8gcmVuZGVyLXNwZWNpZmljXG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IHVzZUFzc2lnbmVkRXh0ZW5zaW9ucyhzbG90TmFtZSwgc3RhdGUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGV4dGVuc2lvbnMsXG4gICAgICAgIGV4dGVuc2lvblNsb3ROYW1lOiBzbG90TmFtZSxcbiAgICAgICAgZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWU6IG1vZHVsZU5hbWVcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJyZWdpc3RlckV4dGVuc2lvblNsb3QiLCJDb21wb25lbnRDb250ZXh0IiwidXNlQXNzaWduZWRFeHRlbnNpb25zIiwidXNlRXh0ZW5zaW9uU2xvdCIsInNsb3ROYW1lIiwic3RhdGUiLCJtb2R1bGVOYW1lIiwiRXJyb3IiLCJleHRlbnNpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBOEM7QUFDa0I7QUFDUDtBQUNVO0FBQ25FLGNBQWMsR0FBVSxTQUFTSyxpQkFBaUJDLFFBQVEsRUFBRUMsS0FBSztJQUM3RCxJQUFRQyxhQUFlUixxQ0FBVUEsQ0FBQ0csc0RBQWdCQSxFQUExQ0s7SUFDUixJQUFJLENBQUNBLFlBQVk7UUFDYixNQUFNQyxNQUFNO0lBQ2hCO0lBQ0FSLG9DQUFTQSxDQUFDO1FBQ05DLGtFQUFxQkEsQ0FBQ00sWUFBWUY7SUFDdEMsR0FBRztRQUNDRTtRQUNBRjtLQUNIO0lBQ0Qsc0ZBQXNGO0lBQ3RGLGtCQUFrQjtJQUNsQixJQUFNSSxhQUFhTixvRUFBcUJBLENBQUNFLFVBQVVDO0lBQ25ELE9BQU87UUFDSEcsWUFBQUE7UUFDQSxtQkFBbUJKO1FBQ25CLHlCQUF5QkU7SUFDN0I7QUFDSiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useExtensionSlot.js\n\n}");
6034
6039
 
6035
6040
  },
6036
6041
  "../../framework/esm-react-utils/dist/useExtensionSlotMeta.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -6040,7 +6045,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
6040
6045
  },
6041
6046
  "../../framework/esm-react-utils/dist/useExtensionSlotStore.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
6042
6047
  "use strict";
6043
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useExtensionSlotStore: () => (useExtensionSlotStore)\n});\n/* import */ var _openmrs_esm_extensions__rspack_import_0 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _useStore_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-react-utils/dist/useStore.js\");\n/** @module @category Extension */ \n\nvar useExtensionSlotStore = function useExtensionSlotStore(slot) {\n return (0,_useStore_js__rspack_import_1.useStore)((0,_openmrs_esm_extensions__rspack_import_0.getExtensionStore)(), function(state) {\n var _state_slots;\n return (_state_slots = state.slots) === null || _state_slots === void 0 ? void 0 : _state_slots[slot];\n });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlRXh0ZW5zaW9uU2xvdFN0b3JlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlRXh0ZW5zaW9uU2xvdFN0b3JlLmpzP2E4MWUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqLyBpbXBvcnQgeyBnZXRFeHRlbnNpb25TdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tIFwiLi91c2VTdG9yZS5qc1wiO1xuZXhwb3J0IGNvbnN0IHVzZUV4dGVuc2lvblNsb3RTdG9yZSA9IChzbG90KT0+dXNlU3RvcmUoZ2V0RXh0ZW5zaW9uU3RvcmUoKSwgKHN0YXRlKT0+c3RhdGUuc2xvdHM/LltzbG90XSk7XG4iXSwibmFtZXMiOlsiZ2V0RXh0ZW5zaW9uU3RvcmUiLCJ1c2VTdG9yZSIsInVzZUV4dGVuc2lvblNsb3RTdG9yZSIsInNsb3QiLCJzdGF0ZSIsIl9zdGF0ZV9zbG90cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0NBQWdDLEdBQStEO0FBQ3REO0FBQ2xDLElBQU1FLHdCQUF3QiwrQkFBQ0M7V0FBT0YsMENBQVFBLENBQUNELDhEQUFpQkEsSUFBSSxTQUFDSTtZQUFRQztnQkFBQUEsZUFBQUEsTUFBTSxLQUFLLGNBQVhBLG1DQUFBQSxZQUFhLENBQUNGLEtBQUs7O0VBQUUifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useExtensionSlotStore.js\n\n}");
6048
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useExtensionSlotStore: () => (useExtensionSlotStore)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var _openmrs_esm_extensions__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _useStore_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-react-utils/dist/useStore.js\");\n/** @module @category Extension */ \n\n\n/**\n * Stands in for a slot that has not been registered or attached to. Shared rather than built per\n * call, so the snapshot stays reference-stable across renders — and frozen because that sharing\n * means an in-place sort or push would otherwise corrupt every unregistered slot in the page.\n */ var emptyCandidates = [];\nObject.freeze(emptyCandidates);\nvar emptySlotState = {\n candidateExtensions: emptyCandidates\n};\nObject.freeze(emptySlotState);\nvar useExtensionSlotStore = function useExtensionSlotStore(slot) {\n // Memoized so that `useStore`'s snapshot function is stable across renders.\n var select = (0,react__rspack_import_0.useCallback)(function(state) {\n var _ref;\n var _state_slots;\n return (_ref = (_state_slots = state.slots) === null || _state_slots === void 0 ? void 0 : _state_slots[slot]) !== null && _ref !== void 0 ? _ref : emptySlotState;\n }, [\n slot\n ]);\n return (0,_useStore_js__rspack_import_2.useStore)((0,_openmrs_esm_extensions__rspack_import_1.getExtensionStore)(), select);\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlRXh0ZW5zaW9uU2xvdFN0b3JlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlRXh0ZW5zaW9uU2xvdFN0b3JlLmpzP2E4MWUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqLyBpbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZ2V0RXh0ZW5zaW9uU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IHVzZVN0b3JlIH0gZnJvbSBcIi4vdXNlU3RvcmUuanNcIjtcbi8qKlxuICogU3RhbmRzIGluIGZvciBhIHNsb3QgdGhhdCBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZCBvciBhdHRhY2hlZCB0by4gU2hhcmVkIHJhdGhlciB0aGFuIGJ1aWx0IHBlclxuICogY2FsbCwgc28gdGhlIHNuYXBzaG90IHN0YXlzIHJlZmVyZW5jZS1zdGFibGUgYWNyb3NzIHJlbmRlcnMg4oCUIGFuZCBmcm96ZW4gYmVjYXVzZSB0aGF0IHNoYXJpbmdcbiAqIG1lYW5zIGFuIGluLXBsYWNlIHNvcnQgb3IgcHVzaCB3b3VsZCBvdGhlcndpc2UgY29ycnVwdCBldmVyeSB1bnJlZ2lzdGVyZWQgc2xvdCBpbiB0aGUgcGFnZS5cbiAqLyBjb25zdCBlbXB0eUNhbmRpZGF0ZXMgPSBbXTtcbk9iamVjdC5mcmVlemUoZW1wdHlDYW5kaWRhdGVzKTtcbmNvbnN0IGVtcHR5U2xvdFN0YXRlID0ge1xuICAgIGNhbmRpZGF0ZUV4dGVuc2lvbnM6IGVtcHR5Q2FuZGlkYXRlc1xufTtcbk9iamVjdC5mcmVlemUoZW1wdHlTbG90U3RhdGUpO1xuZXhwb3J0IGNvbnN0IHVzZUV4dGVuc2lvblNsb3RTdG9yZSA9IChzbG90KT0+e1xuICAgIC8vIE1lbW9pemVkIHNvIHRoYXQgYHVzZVN0b3JlYCdzIHNuYXBzaG90IGZ1bmN0aW9uIGlzIHN0YWJsZSBhY3Jvc3MgcmVuZGVycy5cbiAgICBjb25zdCBzZWxlY3QgPSB1c2VDYWxsYmFjaygoc3RhdGUpPT5zdGF0ZS5zbG90cz8uW3Nsb3RdID8/IGVtcHR5U2xvdFN0YXRlLCBbXG4gICAgICAgIHNsb3RcbiAgICBdKTtcbiAgICByZXR1cm4gdXNlU3RvcmUoZ2V0RXh0ZW5zaW9uU3RvcmUoKSwgc2VsZWN0KTtcbn07XG4iXSwibmFtZXMiOlsidXNlQ2FsbGJhY2siLCJnZXRFeHRlbnNpb25TdG9yZSIsInVzZVN0b3JlIiwiZW1wdHlDYW5kaWRhdGVzIiwiT2JqZWN0IiwiZW1wdHlTbG90U3RhdGUiLCJ1c2VFeHRlbnNpb25TbG90U3RvcmUiLCJzbG90Iiwic2VsZWN0Iiwic3RhdGUiLCJfc3RhdGVfc2xvdHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsZ0NBQWdDLEdBQXVDO0FBQ1g7QUFDbkI7QUFDekM7Ozs7Q0FJQyxHQUFHLElBQU1HLGtCQUFrQixFQUFFO0FBQzlCQyxPQUFPLE1BQU0sQ0FBQ0Q7QUFDZCxJQUFNRSxpQkFBaUI7SUFDbkIscUJBQXFCRjtBQUN6QjtBQUNBQyxPQUFPLE1BQU0sQ0FBQ0M7QUFDUCxJQUFNQyx3QkFBd0IsK0JBQUNDO0lBQ2xDLDRFQUE0RTtJQUM1RSxJQUFNQyxTQUFTUixzQ0FBV0EsQ0FBQyxTQUFDUzs7WUFBUUM7d0JBQUFBLGVBQUFBLE1BQU0sS0FBSyxjQUFYQSxtQ0FBQUEsWUFBYSxDQUFDSCxLQUFLLHVDQUFJRjtPQUFnQjtRQUN2RUU7S0FDSDtJQUNELE9BQU9MLDBDQUFRQSxDQUFDRCw4REFBaUJBLElBQUlPO0FBQ3pDLEVBQUUifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useExtensionSlotStore.js\n\n}");
6044
6049
 
6045
6050
  },
6046
6051
  "../../framework/esm-react-utils/dist/useExtensionStore.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -6115,7 +6120,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
6115
6120
  },
6116
6121
  "../../framework/esm-react-utils/dist/useOpenmrsPagination.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
6117
6122
  "use strict";
6118
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n openmrsServerPaginationHandlers: () => (openmrsServerPaginationHandlers),\n useOpenmrsPagination: () => (useOpenmrsPagination),\n useServerPagination: () => (useServerPagination)\n});\n/* import */ var _openmrs_esm_api__rspack_import_0 = __webpack_require__(\"../../framework/esm-api/dist/index.js\");\n/* import */ var react__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_1);\n/* import */ var swr__rspack_import_2 = __webpack_require__(\"../../../node_modules/swr/dist/core/index.mjs\");\n/* import */ var swr_immutable__rspack_import_3 = __webpack_require__(\"../../../node_modules/swr/dist/immutable/index.mjs\");\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = {}, sourceKeys, key, i;\n if (typeof Reflect !== \"undefined\" && Reflect.ownKeys) {\n sourceKeys = Reflect.ownKeys(Object(source));\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n return target;\n }\n target = _object_without_properties_loose(source, excluded);\n if (Object.getOwnPropertySymbols) {\n sourceKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category UI */ \n\n\n\n/**\n * Most OpenMRS REST endpoints that return a list of objects, such as getAll or search, are server-side paginated.\n * The server limits the max number of results being returned, and multiple requests are needed to get the full data set\n * if its size exceeds this limit.\n * The max number of results per request is configurable server-side\n * with the key \"webservices.rest.maxResultsDefault\". See: https://openmrs.atlassian.net/wiki/spaces/docs/pages/25469882/REST+Module\n *\n * For any UI that displays a paginated view of the full data set, we MUST handle the server-side pagination properly,\n * or else the UI does not correctly display the full data set.\n * This hook does that by providing callback functions for navigating to different pages of the results, and\n * lazy-loads the data on each page as needed.\n *\n * Note that this hook is not suitable for use for situations that require client-side sorting or filtering\n * of the data set. In that case, all data must be loaded onto client-side first.\n *\n * @see `useOpenmrsInfinite`\n * @see `useOpenmrsFetchAll`\n * @see `usePagination` for pagination of client-side data`\n * @see `useFhirPagination``\n *\n * @param url The URL of the paginated rest endpoint. \\\n * It should be populated with any needed GET params, except `limit`, `startIndex` or `totalCount`,\n * which will be overridden and manipulated by the `goTo*` callbacks.\n * Similar to useSWR, this param can be null to disable fetching.\n * @param pageSize The number of results to return per page / fetch. Note that this value MUST NOT exceed\n * \"webservices.rest.maxResultsAbsolute\", which should be reasonably high by default (1000).\n * @param options The options object\n * @returns\n */ function useOpenmrsPagination(url, pageSize) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return useServerPagination(url, pageSize, openmrsServerPaginationHandlers, options);\n}\nvar openmrsServerPaginationHandlers = {\n getPaginatedUrl: function getPaginatedUrl(url, limit, startIndex) {\n if (url) {\n var urlUrl = new URL((0,_openmrs_esm_api__rspack_import_0.makeUrl)(url.toString()), window.location.toString());\n urlUrl.searchParams.set('limit', '' + limit);\n urlUrl.searchParams.set('startIndex', '' + startIndex);\n urlUrl.searchParams.set('totalCount', 'true');\n return urlUrl.toString();\n } else {\n return null;\n }\n },\n getNextUrl: function getNextUrl(response) {\n var _response_links_find, _response_links;\n var uri = response === null || response === void 0 ? void 0 : (_response_links = response.links) === null || _response_links === void 0 ? void 0 : (_response_links_find = _response_links.find(function(link) {\n return link.rel == 'next';\n })) === null || _response_links_find === void 0 ? void 0 : _response_links_find.uri;\n if (uri) {\n var url = new URL(uri);\n // allows frontend proxies to work\n url.host = window.location.host;\n url.protocol = window.location.protocol;\n return url.toString();\n } else {\n return null;\n }\n },\n getTotalCount: function getTotalCount(response) {\n var _ref;\n return (_ref = response === null || response === void 0 ? void 0 : response.totalCount) !== null && _ref !== void 0 ? _ref : Number.NaN;\n },\n getCurrentPageSize: function getCurrentPageSize(response) {\n var _ref;\n var _response_results;\n return (_ref = response === null || response === void 0 ? void 0 : (_response_results = response.results) === null || _response_results === void 0 ? void 0 : _response_results.length) !== null && _ref !== void 0 ? _ref : Number.NaN;\n },\n getData: function getData(response) {\n return response === null || response === void 0 ? void 0 : response.results;\n }\n};\nfunction useServerPagination(url, pageSize, serverPaginationHandlers) {\n var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};\n var _options_fetcher;\n var getPaginatedUrl = serverPaginationHandlers.getPaginatedUrl, getTotalCount = serverPaginationHandlers.getTotalCount, getCurrentPageSize = serverPaginationHandlers.getCurrentPageSize, getData = serverPaginationHandlers.getData;\n var immutable = options.immutable, swrConfig = options.swrConfig;\n var fetcher = (_options_fetcher = options.fetcher) !== null && _options_fetcher !== void 0 ? _options_fetcher : _openmrs_esm_api__rspack_import_0.openmrsFetch;\n var _useState = _sliced_to_array((0,react__rspack_import_1.useState)(1), 2), currentPage = _useState[0], setCurrentPage = _useState[1]; // 1-indexing instead of 0-indexing, to keep consistency with `usePagination`\n // Cache the totalCount and currentPageSize so we don't lose them\n // as we wait for next page's result to load while navigating to a different page.\n // This can be used to prevent jarring UI changes while loading\n var totalCount = (0,react__rspack_import_1.useRef)(Number.NaN);\n var currentPageSize = (0,react__rspack_import_1.useRef)(Number.NaN); // this value is usually same as pageSize, except when currentPage is last page.\n var limit = pageSize;\n var startIndex = (currentPage - 1) * pageSize;\n var urlUrl = (0,react__rspack_import_1.useMemo)(function() {\n return getPaginatedUrl(url, limit, startIndex);\n }, [\n url,\n limit,\n startIndex\n ]);\n var swr = immutable ? swr_immutable__rspack_import_3[\"default\"] : swr__rspack_import_2[\"default\"];\n var _swr = swr(urlUrl, fetcher, swrConfig), data = _swr.data, rest = _object_without_properties(_swr, [\n \"data\"\n ]);\n if (data === null || data === void 0 ? void 0 : data.data) {\n totalCount.current = getTotalCount(data === null || data === void 0 ? void 0 : data.data);\n currentPageSize.current = getCurrentPageSize(data === null || data === void 0 ? void 0 : data.data);\n }\n var totalPages = Math.ceil(totalCount.current / pageSize);\n var goTo = (0,react__rspack_import_1.useCallback)(function(page) {\n if (0 < page && page <= totalPages) {\n setCurrentPage(page);\n } else {\n console.warn('Invalid attempt to go to out of bounds page: ' + page);\n }\n }, [\n url,\n currentPage,\n totalPages\n ]);\n var goToNext = (0,react__rspack_import_1.useCallback)(function() {\n goTo(currentPage + 1);\n }, [\n url,\n currentPage,\n totalPages\n ]);\n var goToPrevious = (0,react__rspack_import_1.useCallback)(function() {\n goTo(currentPage - 1);\n }, [\n url,\n currentPage,\n totalPages\n ]);\n return _object_spread({\n data: getData(data === null || data === void 0 ? void 0 : data.data),\n totalPages: totalPages,\n totalCount: totalCount.current,\n currentPage: currentPage,\n currentPageSize: currentPageSize,\n paginated: totalPages > 1,\n showNextButton: currentPage < totalPages,\n showPreviousButton: currentPage > 1,\n goTo: goTo,\n goToNext: goToNext,\n goToPrevious: goToPrevious\n }, rest);\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlT3Blbm1yc1BhZ2luYXRpb24uanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC91c2VPcGVubXJzUGFnaW5hdGlvbi5qcz83Njk4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBVSSAqLyBpbXBvcnQgeyBtYWtlVXJsLCBvcGVubXJzRmV0Y2ggfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWFwaVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB1c2VTV1IgZnJvbSBcInN3clwiO1xuaW1wb3J0IHVzZVNXUkltbXV0YWJsZSBmcm9tIFwic3dyL2ltbXV0YWJsZVwiO1xuLyoqXG4gKiBNb3N0IE9wZW5NUlMgUkVTVCBlbmRwb2ludHMgdGhhdCByZXR1cm4gYSBsaXN0IG9mIG9iamVjdHMsIHN1Y2ggYXMgZ2V0QWxsIG9yIHNlYXJjaCwgYXJlIHNlcnZlci1zaWRlIHBhZ2luYXRlZC5cbiAqIFRoZSBzZXJ2ZXIgbGltaXRzIHRoZSBtYXggbnVtYmVyIG9mIHJlc3VsdHMgYmVpbmcgcmV0dXJuZWQsIGFuZCBtdWx0aXBsZSByZXF1ZXN0cyBhcmUgbmVlZGVkIHRvIGdldCB0aGUgZnVsbCBkYXRhIHNldFxuICogaWYgaXRzIHNpemUgZXhjZWVkcyB0aGlzIGxpbWl0LlxuICogVGhlIG1heCBudW1iZXIgb2YgcmVzdWx0cyBwZXIgcmVxdWVzdCBpcyBjb25maWd1cmFibGUgc2VydmVyLXNpZGVcbiAqIHdpdGggdGhlIGtleSBcIndlYnNlcnZpY2VzLnJlc3QubWF4UmVzdWx0c0RlZmF1bHRcIi4gU2VlOiBodHRwczovL29wZW5tcnMuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9kb2NzL3BhZ2VzLzI1NDY5ODgyL1JFU1QrTW9kdWxlXG4gKlxuICogRm9yIGFueSBVSSB0aGF0IGRpc3BsYXlzIGEgcGFnaW5hdGVkIHZpZXcgb2YgdGhlIGZ1bGwgZGF0YSBzZXQsIHdlIE1VU1QgaGFuZGxlIHRoZSBzZXJ2ZXItc2lkZSBwYWdpbmF0aW9uIHByb3Blcmx5LFxuICogb3IgZWxzZSB0aGUgVUkgZG9lcyBub3QgY29ycmVjdGx5IGRpc3BsYXkgdGhlIGZ1bGwgZGF0YSBzZXQuXG4gKiBUaGlzIGhvb2sgZG9lcyB0aGF0IGJ5IHByb3ZpZGluZyBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIG5hdmlnYXRpbmcgdG8gZGlmZmVyZW50IHBhZ2VzIG9mIHRoZSByZXN1bHRzLCBhbmRcbiAqIGxhenktbG9hZHMgdGhlIGRhdGEgb24gZWFjaCBwYWdlIGFzIG5lZWRlZC5cbiAqXG4gKiBOb3RlIHRoYXQgdGhpcyBob29rIGlzIG5vdCBzdWl0YWJsZSBmb3IgdXNlIGZvciBzaXR1YXRpb25zIHRoYXQgcmVxdWlyZSBjbGllbnQtc2lkZSBzb3J0aW5nIG9yIGZpbHRlcmluZ1xuICogb2YgdGhlIGRhdGEgc2V0LiBJbiB0aGF0IGNhc2UsIGFsbCBkYXRhIG11c3QgYmUgbG9hZGVkIG9udG8gY2xpZW50LXNpZGUgZmlyc3QuXG4gKlxuICogQHNlZSBgdXNlT3Blbm1yc0luZmluaXRlYFxuICogQHNlZSBgdXNlT3Blbm1yc0ZldGNoQWxsYFxuICogQHNlZSBgdXNlUGFnaW5hdGlvbmAgZm9yIHBhZ2luYXRpb24gb2YgY2xpZW50LXNpZGUgZGF0YWBcbiAqIEBzZWUgYHVzZUZoaXJQYWdpbmF0aW9uYGBcbiAqXG4gKiBAcGFyYW0gdXJsIFRoZSBVUkwgb2YgdGhlIHBhZ2luYXRlZCByZXN0IGVuZHBvaW50LiBcXFxuICogICAgICAgICAgICBJdCBzaG91bGQgYmUgcG9wdWxhdGVkIHdpdGggYW55IG5lZWRlZCBHRVQgcGFyYW1zLCBleGNlcHQgYGxpbWl0YCwgYHN0YXJ0SW5kZXhgIG9yIGB0b3RhbENvdW50YCxcbiAqICAgICAgICAgICAgd2hpY2ggd2lsbCBiZSBvdmVycmlkZGVuIGFuZCBtYW5pcHVsYXRlZCBieSB0aGUgYGdvVG8qYCBjYWxsYmFja3MuXG4gKiAgICAgICAgICAgIFNpbWlsYXIgdG8gdXNlU1dSLCB0aGlzIHBhcmFtIGNhbiBiZSBudWxsIHRvIGRpc2FibGUgZmV0Y2hpbmcuXG4gKiBAcGFyYW0gcGFnZVNpemUgVGhlIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybiBwZXIgcGFnZSAvIGZldGNoLiBOb3RlIHRoYXQgdGhpcyB2YWx1ZSBNVVNUIE5PVCBleGNlZWRcbiAqICAgICAgICAgICAgXCJ3ZWJzZXJ2aWNlcy5yZXN0Lm1heFJlc3VsdHNBYnNvbHV0ZVwiLCB3aGljaCBzaG91bGQgYmUgcmVhc29uYWJseSBoaWdoIGJ5IGRlZmF1bHQgKDEwMDApLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgb2JqZWN0XG4gKiBAcmV0dXJuc1xuICovIGV4cG9ydCBmdW5jdGlvbiB1c2VPcGVubXJzUGFnaW5hdGlvbih1cmwsIHBhZ2VTaXplLCBvcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gdXNlU2VydmVyUGFnaW5hdGlvbih1cmwsIHBhZ2VTaXplLCBvcGVubXJzU2VydmVyUGFnaW5hdGlvbkhhbmRsZXJzLCBvcHRpb25zKTtcbn1cbmV4cG9ydCBjb25zdCBvcGVubXJzU2VydmVyUGFnaW5hdGlvbkhhbmRsZXJzID0ge1xuICAgIGdldFBhZ2luYXRlZFVybDogKHVybCwgbGltaXQsIHN0YXJ0SW5kZXgpPT57XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybFVybCA9IG5ldyBVUkwobWFrZVVybCh1cmwudG9TdHJpbmcoKSksIHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpKTtcbiAgICAgICAgICAgIHVybFVybC5zZWFyY2hQYXJhbXMuc2V0KCdsaW1pdCcsICcnICsgbGltaXQpO1xuICAgICAgICAgICAgdXJsVXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3N0YXJ0SW5kZXgnLCAnJyArIHN0YXJ0SW5kZXgpO1xuICAgICAgICAgICAgdXJsVXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3RvdGFsQ291bnQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgcmV0dXJuIHVybFVybC50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGdldE5leHRVcmw6IChyZXNwb25zZSk9PntcbiAgICAgICAgY29uc3QgdXJpID0gcmVzcG9uc2U/LmxpbmtzPy5maW5kKChsaW5rKT0+bGluay5yZWwgPT0gJ25leHQnKT8udXJpO1xuICAgICAgICBpZiAodXJpKSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHVyaSk7XG4gICAgICAgICAgICAvLyBhbGxvd3MgZnJvbnRlbmQgcHJveGllcyB0byB3b3JrXG4gICAgICAgICAgICB1cmwuaG9zdCA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xuICAgICAgICAgICAgdXJsLnByb3RvY29sID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sO1xuICAgICAgICAgICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGdldFRvdGFsQ291bnQ6IChyZXNwb25zZSk9PnJlc3BvbnNlPy50b3RhbENvdW50ID8/IE51bWJlci5OYU4sXG4gICAgZ2V0Q3VycmVudFBhZ2VTaXplOiAocmVzcG9uc2UpPT5yZXNwb25zZT8ucmVzdWx0cz8ubGVuZ3RoID8/IE51bWJlci5OYU4sXG4gICAgZ2V0RGF0YTogKHJlc3BvbnNlKT0+cmVzcG9uc2U/LnJlc3VsdHNcbn07XG5leHBvcnQgZnVuY3Rpb24gdXNlU2VydmVyUGFnaW5hdGlvbih1cmwsIHBhZ2VTaXplLCBzZXJ2ZXJQYWdpbmF0aW9uSGFuZGxlcnMsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgZ2V0UGFnaW5hdGVkVXJsLCBnZXRUb3RhbENvdW50LCBnZXRDdXJyZW50UGFnZVNpemUsIGdldERhdGEgfSA9IHNlcnZlclBhZ2luYXRpb25IYW5kbGVycztcbiAgICBjb25zdCB7IGltbXV0YWJsZSwgc3dyQ29uZmlnIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGZldGNoZXIgPSBvcHRpb25zLmZldGNoZXIgPz8gb3Blbm1yc0ZldGNoO1xuICAgIGNvbnN0IFtjdXJyZW50UGFnZSwgc2V0Q3VycmVudFBhZ2VdID0gdXNlU3RhdGUoMSk7IC8vIDEtaW5kZXhpbmcgaW5zdGVhZCBvZiAwLWluZGV4aW5nLCB0byBrZWVwIGNvbnNpc3RlbmN5IHdpdGggYHVzZVBhZ2luYXRpb25gXG4gICAgLy8gQ2FjaGUgdGhlIHRvdGFsQ291bnQgYW5kIGN1cnJlbnRQYWdlU2l6ZSBzbyB3ZSBkb24ndCBsb3NlIHRoZW1cbiAgICAvLyBhcyB3ZSB3YWl0IGZvciBuZXh0IHBhZ2UncyByZXN1bHQgdG8gbG9hZCB3aGlsZSBuYXZpZ2F0aW5nIHRvIGEgZGlmZmVyZW50IHBhZ2UuXG4gICAgLy8gVGhpcyBjYW4gYmUgdXNlZCB0byBwcmV2ZW50IGphcnJpbmcgVUkgY2hhbmdlcyB3aGlsZSBsb2FkaW5nXG4gICAgY29uc3QgdG90YWxDb3VudCA9IHVzZVJlZihOdW1iZXIuTmFOKTtcbiAgICBjb25zdCBjdXJyZW50UGFnZVNpemUgPSB1c2VSZWYoTnVtYmVyLk5hTik7IC8vIHRoaXMgdmFsdWUgaXMgdXN1YWxseSBzYW1lIGFzIHBhZ2VTaXplLCBleGNlcHQgd2hlbiBjdXJyZW50UGFnZSBpcyBsYXN0IHBhZ2UuXG4gICAgY29uc3QgbGltaXQgPSBwYWdlU2l6ZTtcbiAgICBjb25zdCBzdGFydEluZGV4ID0gKGN1cnJlbnRQYWdlIC0gMSkgKiBwYWdlU2l6ZTtcbiAgICBjb25zdCB1cmxVcmwgPSB1c2VNZW1vKCgpPT57XG4gICAgICAgIHJldHVybiBnZXRQYWdpbmF0ZWRVcmwodXJsLCBsaW1pdCwgc3RhcnRJbmRleCk7XG4gICAgfSwgW1xuICAgICAgICB1cmwsXG4gICAgICAgIGxpbWl0LFxuICAgICAgICBzdGFydEluZGV4XG4gICAgXSk7XG4gICAgY29uc3Qgc3dyID0gaW1tdXRhYmxlID8gdXNlU1dSSW1tdXRhYmxlIDogdXNlU1dSO1xuICAgIGNvbnN0IHsgZGF0YSwgLi4ucmVzdCB9ID0gc3dyKHVybFVybCwgZmV0Y2hlciwgc3dyQ29uZmlnKTtcbiAgICBpZiAoZGF0YT8uZGF0YSkge1xuICAgICAgICB0b3RhbENvdW50LmN1cnJlbnQgPSBnZXRUb3RhbENvdW50KGRhdGE/LmRhdGEpO1xuICAgICAgICBjdXJyZW50UGFnZVNpemUuY3VycmVudCA9IGdldEN1cnJlbnRQYWdlU2l6ZShkYXRhPy5kYXRhKTtcbiAgICB9XG4gICAgY29uc3QgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbENvdW50LmN1cnJlbnQgLyBwYWdlU2l6ZSk7XG4gICAgY29uc3QgZ29UbyA9IHVzZUNhbGxiYWNrKChwYWdlKT0+e1xuICAgICAgICBpZiAoMCA8IHBhZ2UgJiYgcGFnZSA8PSB0b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICBzZXRDdXJyZW50UGFnZShwYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignSW52YWxpZCBhdHRlbXB0IHRvIGdvIHRvIG91dCBvZiBib3VuZHMgcGFnZTogJyArIHBhZ2UpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICB1cmwsXG4gICAgICAgIGN1cnJlbnRQYWdlLFxuICAgICAgICB0b3RhbFBhZ2VzXG4gICAgXSk7XG4gICAgY29uc3QgZ29Ub05leHQgPSB1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICBnb1RvKGN1cnJlbnRQYWdlICsgMSk7XG4gICAgfSwgW1xuICAgICAgICB1cmwsXG4gICAgICAgIGN1cnJlbnRQYWdlLFxuICAgICAgICB0b3RhbFBhZ2VzXG4gICAgXSk7XG4gICAgY29uc3QgZ29Ub1ByZXZpb3VzID0gdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgZ29UbyhjdXJyZW50UGFnZSAtIDEpO1xuICAgIH0sIFtcbiAgICAgICAgdXJsLFxuICAgICAgICBjdXJyZW50UGFnZSxcbiAgICAgICAgdG90YWxQYWdlc1xuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGRhdGE6IGdldERhdGEoZGF0YT8uZGF0YSksXG4gICAgICAgIHRvdGFsUGFnZXMsXG4gICAgICAgIHRvdGFsQ291bnQ6IHRvdGFsQ291bnQuY3VycmVudCxcbiAgICAgICAgY3VycmVudFBhZ2UsXG4gICAgICAgIGN1cnJlbnRQYWdlU2l6ZSxcbiAgICAgICAgcGFnaW5hdGVkOiB0b3RhbFBhZ2VzID4gMSxcbiAgICAgICAgc2hvd05leHRCdXR0b246IGN1cnJlbnRQYWdlIDwgdG90YWxQYWdlcyxcbiAgICAgICAgc2hvd1ByZXZpb3VzQnV0dG9uOiBjdXJyZW50UGFnZSA+IDEsXG4gICAgICAgIGdvVG8sXG4gICAgICAgIGdvVG9OZXh0LFxuICAgICAgICBnb1RvUHJldmlvdXMsXG4gICAgICAgIC4uLnJlc3RcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbIm1ha2VVcmwiLCJvcGVubXJzRmV0Y2giLCJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVNXUiIsInVzZVNXUkltbXV0YWJsZSIsInVzZU9wZW5tcnNQYWdpbmF0aW9uIiwidXJsIiwicGFnZVNpemUiLCJvcHRpb25zIiwidXNlU2VydmVyUGFnaW5hdGlvbiIsIm9wZW5tcnNTZXJ2ZXJQYWdpbmF0aW9uSGFuZGxlcnMiLCJnZXRQYWdpbmF0ZWRVcmwiLCJsaW1pdCIsInN0YXJ0SW5kZXgiLCJ1cmxVcmwiLCJVUkwiLCJ3aW5kb3ciLCJnZXROZXh0VXJsIiwicmVzcG9uc2UiLCJfcmVzcG9uc2VfbGlua3NfZmluZCIsInVyaSIsImxpbmsiLCJnZXRUb3RhbENvdW50IiwiTnVtYmVyIiwiZ2V0Q3VycmVudFBhZ2VTaXplIiwiX3Jlc3BvbnNlX3Jlc3VsdHMiLCJnZXREYXRhIiwic2VydmVyUGFnaW5hdGlvbkhhbmRsZXJzIiwiX29wdGlvbnNfZmV0Y2hlciIsImltbXV0YWJsZSIsInN3ckNvbmZpZyIsImZldGNoZXIiLCJfdXNlU3RhdGUiLCJjdXJyZW50UGFnZSIsInNldEN1cnJlbnRQYWdlIiwidG90YWxDb3VudCIsImN1cnJlbnRQYWdlU2l6ZSIsInN3ciIsIl9zd3IiLCJkYXRhIiwicmVzdCIsInRvdGFsUGFnZXMiLCJNYXRoIiwiZ29UbyIsInBhZ2UiLCJjb25zb2xlIiwiZ29Ub05leHQiLCJnb1RvUHJldmlvdXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5QkFBeUIsR0FBNEQ7QUFDdEI7QUFDdEM7QUFDbUI7QUFDNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E0QkMsR0FBVSxTQUFTUSxxQkFBcUJDLEdBQUcsRUFBRUMsUUFBUTtRQUFFQyxVQUFBQSxpRUFBVSxDQUFDO0lBQy9ELE9BQU9DLG9CQUFvQkgsS0FBS0MsVUFBVUcsaUNBQWlDRjtBQUMvRTtBQUNPLElBQU1FLGtDQUFrQztJQUMzQ0MsaUJBQWlCLFNBQWpCQSxnQkFBa0JMLEtBQUtNLE9BQU9DO1FBQzFCLElBQUlQLEtBQUs7WUFDTCxJQUFNUSxTQUFTLElBQUlDLElBQUlsQiw2Q0FBT0EsQ0FBQ1MsSUFBSSxRQUFRLEtBQUtVLE9BQU8sUUFBUSxDQUFDLFFBQVE7WUFDeEVGLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUtGO1lBQ3RDRSxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMs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\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useOpenmrsPagination.js\n\n}");
6123
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n openmrsServerPaginationHandlers: () => (openmrsServerPaginationHandlers),\n useOpenmrsPagination: () => (useOpenmrsPagination),\n useServerPagination: () => (useServerPagination)\n});\n/* import */ var _openmrs_esm_api__rspack_import_0 = __webpack_require__(\"../../framework/esm-api/dist/index.js\");\n/* import */ var react__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_1);\n/* import */ var swr__rspack_import_2 = __webpack_require__(\"../../../node_modules/swr/dist/core/index.mjs\");\n/* import */ var swr_immutable__rspack_import_3 = __webpack_require__(\"../../../node_modules/swr/dist/immutable/index.mjs\");\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = {}, sourceKeys, key, i;\n if (typeof Reflect !== \"undefined\" && Reflect.ownKeys) {\n sourceKeys = Reflect.ownKeys(Object(source));\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n return target;\n }\n target = _object_without_properties_loose(source, excluded);\n if (Object.getOwnPropertySymbols) {\n sourceKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category UI */ \n\n\n\n/**\n * Most OpenMRS REST endpoints that return a list of objects, such as getAll or search, are server-side paginated.\n * The server limits the max number of results being returned, and multiple requests are needed to get the full data set\n * if its size exceeds this limit.\n * The max number of results per request is configurable server-side\n * with the key \"webservices.rest.maxResultsDefault\". See: https://openmrs.atlassian.net/wiki/spaces/docs/pages/25469882/REST+Module\n *\n * For any UI that displays a paginated view of the full data set, we MUST handle the server-side pagination properly,\n * or else the UI does not correctly display the full data set.\n * This hook does that by providing callback functions for navigating to different pages of the results, and\n * lazy-loads the data on each page as needed.\n *\n * Note that this hook is not suitable for use for situations that require client-side sorting or filtering\n * of the data set. In that case, all data must be loaded onto client-side first.\n *\n * @see `useOpenmrsInfinite`\n * @see `useOpenmrsFetchAll`\n * @see `usePagination` for pagination of client-side data`\n * @see `useFhirPagination``\n *\n * @param url The URL of the paginated rest endpoint. \\\n * It should be populated with any needed GET params, except `limit`, `startIndex` or `totalCount`,\n * which will be overridden and manipulated by the `goTo*` callbacks.\n * Similar to useSWR, this param can be null to disable fetching.\n * @param pageSize The number of results to return per page / fetch. Note that this value MUST NOT exceed\n * \"webservices.rest.maxResultsAbsolute\", which should be reasonably high by default (1000).\n * @param options The options object\n * @returns\n */ function useOpenmrsPagination(url, pageSize) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return useServerPagination(url, pageSize, openmrsServerPaginationHandlers, options);\n}\nvar openmrsServerPaginationHandlers = {\n getPaginatedUrl: function getPaginatedUrl(url, limit, startIndex) {\n if (url) {\n var urlUrl = new URL((0,_openmrs_esm_api__rspack_import_0.makeUrl)(url.toString()), window.location.toString());\n urlUrl.searchParams.set('limit', '' + limit);\n urlUrl.searchParams.set('startIndex', '' + startIndex);\n urlUrl.searchParams.set('totalCount', 'true');\n return urlUrl.toString();\n } else {\n return null;\n }\n },\n getNextUrl: function getNextUrl(response) {\n var _response_links_find, _response_links;\n var uri = response === null || response === void 0 ? void 0 : (_response_links = response.links) === null || _response_links === void 0 ? void 0 : (_response_links_find = _response_links.find(function(link) {\n return link.rel == 'next';\n })) === null || _response_links_find === void 0 ? void 0 : _response_links_find.uri;\n if (uri) {\n var url = new URL(uri);\n // allows frontend proxies to work\n url.host = window.location.host;\n url.protocol = window.location.protocol;\n return url.toString();\n } else {\n return null;\n }\n },\n getTotalCount: function getTotalCount(response) {\n var _ref;\n return (_ref = response === null || response === void 0 ? void 0 : response.totalCount) !== null && _ref !== void 0 ? _ref : Number.NaN;\n },\n getCurrentPageSize: function getCurrentPageSize(response) {\n var _ref;\n var _response_results;\n return (_ref = response === null || response === void 0 ? void 0 : (_response_results = response.results) === null || _response_results === void 0 ? void 0 : _response_results.length) !== null && _ref !== void 0 ? _ref : Number.NaN;\n },\n getData: function getData(response) {\n return response === null || response === void 0 ? void 0 : response.results;\n }\n};\nfunction useServerPagination(url, pageSize, serverPaginationHandlers) {\n var options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};\n var _options_fetcher, _ref;\n var getPaginatedUrl = serverPaginationHandlers.getPaginatedUrl, getTotalCount = serverPaginationHandlers.getTotalCount, getCurrentPageSize = serverPaginationHandlers.getCurrentPageSize, getData = serverPaginationHandlers.getData;\n var immutable = options.immutable, swrConfig = options.swrConfig;\n var fetcher = (_options_fetcher = options.fetcher) !== null && _options_fetcher !== void 0 ? _options_fetcher : _openmrs_esm_api__rspack_import_0.openmrsFetch;\n // 1-indexing instead of 0-indexing, to keep consistency with `usePagination`\n var _useState = _sliced_to_array((0,react__rspack_import_1.useState)(1), 2), currentPage = _useState[0], setCurrentPage = _useState[1];\n // Cache the totalCount and currentPageSize so we don't lose them\n // as we wait for next page's result to load while navigating to a different page.\n // This can be used to prevent jarring UI changes while loading\n var totalCount = (0,react__rspack_import_1.useRef)(Number.NaN);\n // this value is usually same as pageSize, except when currentPage is last page.\n var currentPageSize = (0,react__rspack_import_1.useRef)(Number.NaN);\n // tracked as a ref so we don't need to make the current page a dependency of `goTo()`, etc.\n var currentPageRef = (0,react__rspack_import_1.useRef)(currentPage);\n // use to differentiate \"endpoint doesn't return a total\" from \"we haven't run a request yet\"\n var hasResponded = (0,react__rspack_import_1.useRef)(false);\n var warnedMissingTotal = (0,react__rspack_import_1.useRef)(false);\n // if the URL we're querying changes, reset to page 1\n var urlKey = (_ref = url === null || url === void 0 ? void 0 : url.toString()) !== null && _ref !== void 0 ? _ref : '';\n var _useState1 = _sliced_to_array((0,react__rspack_import_1.useState)(urlKey), 2), lastUrlKey = _useState1[0], setLastUrlKey = _useState1[1];\n if (urlKey !== lastUrlKey) {\n setLastUrlKey(urlKey);\n setCurrentPage(1);\n currentPageRef.current = 1;\n totalCount.current = Number.NaN;\n currentPageSize.current = Number.NaN;\n hasResponded.current = false;\n warnedMissingTotal.current = false;\n }\n var limit = pageSize;\n var startIndex = (currentPage - 1) * pageSize;\n var urlUrl = (0,react__rspack_import_1.useMemo)(function() {\n return getPaginatedUrl(url, limit, startIndex);\n }, [\n url,\n limit,\n startIndex\n ]);\n var swr = immutable ? swr_immutable__rspack_import_3[\"default\"] : swr__rspack_import_2[\"default\"];\n var _swr = swr(urlUrl, fetcher, swrConfig), data = _swr.data, rest = _object_without_properties(_swr, [\n \"data\"\n ]);\n if (data === null || data === void 0 ? void 0 : data.data) {\n totalCount.current = getTotalCount(data === null || data === void 0 ? void 0 : data.data);\n currentPageSize.current = getCurrentPageSize(data === null || data === void 0 ? void 0 : data.data);\n hasResponded.current = true;\n }\n var totalPages = Math.ceil(totalCount.current / pageSize);\n // The bound is read from `totalCount` at call time rather than captured from the creating render,\n // which is what keeps this callback referentially stable, apart from a change in `pageSize`.\n var goTo = (0,react__rspack_import_1.useCallback)(function(page) {\n if (!Number.isInteger(page) || page < 1) {\n console.warn(\"useServerPagination: ignoring goTo(\".concat(page, \"); page must be a positive integer.\"));\n return;\n }\n // page count is not known prior to running any query when `bound` will be `NaN`, so in this\n // case we assume the requested page is fine; after results return, things will settle properly\n // clamped\n var bound = Math.ceil(totalCount.current / pageSize);\n if (!hasResponded.current || Number.isNaN(bound) || page <= bound) {\n currentPageRef.current = page;\n setCurrentPage(page);\n } else {\n console.warn('Invalid attempt to go to out of bounds page: ' + page);\n }\n }, [\n pageSize\n ]);\n // A page accepted before the total was known may turn out not to exist, so put the user on the last\n // real page once the response settles it. Costs an extra request, but only for a page that was out of\n // range to begin with; without it the hook sits on an empty page with no way back.\n (0,react__rspack_import_1.useEffect)(function() {\n if (!hasResponded.current) {\n return;\n }\n if (Number.isNaN(totalCount.current)) {\n if (!warnedMissingTotal.current) {\n warnedMissingTotal.current = true;\n console.warn(\"useServerPagination: \".concat(urlKey, \" returned no total count, so out-of-range pages cannot be detected.\"));\n }\n return;\n }\n var lastPage = Math.max(1, Math.ceil(totalCount.current / pageSize));\n if (currentPage > lastPage) {\n console.warn(\"Invalid attempt to go to out of bounds page: \".concat(currentPage, \"; returning to page \").concat(lastPage, \".\"));\n currentPageRef.current = lastPage;\n setCurrentPage(lastPage);\n }\n }, [\n currentPage,\n pageSize,\n urlKey,\n data\n ]);\n var goToNext = (0,react__rspack_import_1.useCallback)(function() {\n goTo(currentPageRef.current + 1);\n }, [\n goTo\n ]);\n var goToPrevious = (0,react__rspack_import_1.useCallback)(function() {\n goTo(currentPageRef.current - 1);\n }, [\n goTo\n ]);\n return _object_spread({\n data: getData(data === null || data === void 0 ? void 0 : data.data),\n totalPages: totalPages,\n totalCount: totalCount.current,\n currentPage: currentPage,\n currentPageSize: currentPageSize.current,\n paginated: totalPages > 1,\n showNextButton: currentPage < totalPages,\n showPreviousButton: currentPage > 1,\n goTo: goTo,\n goToNext: goToNext,\n goToPrevious: goToPrevious\n }, rest);\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlT3Blbm1yc1BhZ2luYXRpb24uanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC91c2VPcGVubXJzUGFnaW5hdGlvbi5qcz83Njk4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBVSSAqLyBpbXBvcnQgeyBtYWtlVXJsLCBvcGVubXJzRmV0Y2ggfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWFwaVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHVzZVNXUiBmcm9tIFwic3dyXCI7XG5pbXBvcnQgdXNlU1dSSW1tdXRhYmxlIGZyb20gXCJzd3IvaW1tdXRhYmxlXCI7XG4vKipcbiAqIE1vc3QgT3Blbk1SUyBSRVNUIGVuZHBvaW50cyB0aGF0IHJldHVybiBhIGxpc3Qgb2Ygb2JqZWN0cywgc3VjaCBhcyBnZXRBbGwgb3Igc2VhcmNoLCBhcmUgc2VydmVyLXNpZGUgcGFnaW5hdGVkLlxuICogVGhlIHNlcnZlciBsaW1pdHMgdGhlIG1heCBudW1iZXIgb2YgcmVzdWx0cyBiZWluZyByZXR1cm5lZCwgYW5kIG11bHRpcGxlIHJlcXVlc3RzIGFyZSBuZWVkZWQgdG8gZ2V0IHRoZSBmdWxsIGRhdGEgc2V0XG4gKiBpZiBpdHMgc2l6ZSBleGNlZWRzIHRoaXMgbGltaXQuXG4gKiBUaGUgbWF4IG51bWJlciBvZiByZXN1bHRzIHBlciByZXF1ZXN0IGlzIGNvbmZpZ3VyYWJsZSBzZXJ2ZXItc2lkZVxuICogd2l0aCB0aGUga2V5IFwid2Vic2VydmljZXMucmVzdC5tYXhSZXN1bHRzRGVmYXVsdFwiLiBTZWU6IGh0dHBzOi8vb3Blbm1ycy5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL2RvY3MvcGFnZXMvMjU0Njk4ODIvUkVTVCtNb2R1bGVcbiAqXG4gKiBGb3IgYW55IFVJIHRoYXQgZGlzcGxheXMgYSBwYWdpbmF0ZWQgdmlldyBvZiB0aGUgZnVsbCBkYXRhIHNldCwgd2UgTVVTVCBoYW5kbGUgdGhlIHNlcnZlci1zaWRlIHBhZ2luYXRpb24gcHJvcGVybHksXG4gKiBvciBlbHNlIHRoZSBVSSBkb2VzIG5vdCBjb3JyZWN0bHkgZGlzcGxheSB0aGUgZnVsbCBkYXRhIHNldC5cbiAqIFRoaXMgaG9vayBkb2VzIHRoYXQgYnkgcHJvdmlkaW5nIGNhbGxiYWNrIGZ1bmN0aW9ucyBmb3IgbmF2aWdhdGluZyB0byBkaWZmZXJlbnQgcGFnZXMgb2YgdGhlIHJlc3VsdHMsIGFuZFxuICogbGF6eS1sb2FkcyB0aGUgZGF0YSBvbiBlYWNoIHBhZ2UgYXMgbmVlZGVkLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGhvb2sgaXMgbm90IHN1aXRhYmxlIGZvciB1c2UgZm9yIHNpdHVhdGlvbnMgdGhhdCByZXF1aXJlIGNsaWVudC1zaWRlIHNvcnRpbmcgb3IgZmlsdGVyaW5nXG4gKiBvZiB0aGUgZGF0YSBzZXQuIEluIHRoYXQgY2FzZSwgYWxsIGRhdGEgbXVzdCBiZSBsb2FkZWQgb250byBjbGllbnQtc2lkZSBmaXJzdC5cbiAqXG4gKiBAc2VlIGB1c2VPcGVubXJzSW5maW5pdGVgXG4gKiBAc2VlIGB1c2VPcGVubXJzRmV0Y2hBbGxgXG4gKiBAc2VlIGB1c2VQYWdpbmF0aW9uYCBmb3IgcGFnaW5hdGlvbiBvZiBjbGllbnQtc2lkZSBkYXRhYFxuICogQHNlZSBgdXNlRmhpclBhZ2luYXRpb25gYFxuICpcbiAqIEBwYXJhbSB1cmwgVGhlIFVSTCBvZiB0aGUgcGFnaW5hdGVkIHJlc3QgZW5kcG9pbnQuIFxcXG4gKiAgICAgICAgICAgIEl0IHNob3VsZCBiZSBwb3B1bGF0ZWQgd2l0aCBhbnkgbmVlZGVkIEdFVCBwYXJhbXMsIGV4Y2VwdCBgbGltaXRgLCBgc3RhcnRJbmRleGAgb3IgYHRvdGFsQ291bnRgLFxuICogICAgICAgICAgICB3aGljaCB3aWxsIGJlIG92ZXJyaWRkZW4gYW5kIG1hbmlwdWxhdGVkIGJ5IHRoZSBgZ29UbypgIGNhbGxiYWNrcy5cbiAqICAgICAgICAgICAgU2ltaWxhciB0byB1c2VTV1IsIHRoaXMgcGFyYW0gY2FuIGJlIG51bGwgdG8gZGlzYWJsZSBmZXRjaGluZy5cbiAqIEBwYXJhbSBwYWdlU2l6ZSBUaGUgbnVtYmVyIG9mIHJlc3VsdHMgdG8gcmV0dXJuIHBlciBwYWdlIC8gZmV0Y2guIE5vdGUgdGhhdCB0aGlzIHZhbHVlIE1VU1QgTk9UIGV4Y2VlZFxuICogICAgICAgICAgICBcIndlYnNlcnZpY2VzLnJlc3QubWF4UmVzdWx0c0Fic29sdXRlXCIsIHdoaWNoIHNob3VsZCBiZSByZWFzb25hYmx5IGhpZ2ggYnkgZGVmYXVsdCAoMTAwMCkuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBvYmplY3RcbiAqIEByZXR1cm5zXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVzZU9wZW5tcnNQYWdpbmF0aW9uKHVybCwgcGFnZVNpemUsIG9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiB1c2VTZXJ2ZXJQYWdpbmF0aW9uKHVybCwgcGFnZVNpemUsIG9wZW5tcnNTZXJ2ZXJQYWdpbmF0aW9uSGFuZGxlcnMsIG9wdGlvbnMpO1xufVxuZXhwb3J0IGNvbnN0IG9wZW5tcnNTZXJ2ZXJQYWdpbmF0aW9uSGFuZGxlcnMgPSB7XG4gICAgZ2V0UGFnaW5hdGVkVXJsOiAodXJsLCBsaW1pdCwgc3RhcnRJbmRleCk9PntcbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgY29uc3QgdXJsVXJsID0gbmV3IFVSTChtYWtlVXJsKHVybC50b1N0cmluZygpKSwgd2luZG93LmxvY2F0aW9uLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgdXJsVXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2xpbWl0JywgJycgKyBsaW1pdCk7XG4gICAgICAgICAgICB1cmxVcmwuc2VhcmNoUGFyYW1zLnNldCgnc3RhcnRJbmRleCcsICcnICsgc3RhcnRJbmRleCk7XG4gICAgICAgICAgICB1cmxVcmwuc2VhcmNoUGFyYW1zLnNldCgndG90YWxDb3VudCcsICd0cnVlJyk7XG4gICAgICAgICAgICByZXR1cm4gdXJsVXJsLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZ2V0TmV4dFVybDogKHJlc3BvbnNlKT0+e1xuICAgICAgICBjb25zdCB1cmkgPSByZXNwb25zZT8ubGlua3M/LmZpbmQoKGxpbmspPT5saW5rLnJlbCA9PSAnbmV4dCcpPy51cmk7XG4gICAgICAgIGlmICh1cmkpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodXJpKTtcbiAgICAgICAgICAgIC8vIGFsbG93cyBmcm9udGVuZCBwcm94aWVzIHRvIHdvcmtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgICAgICAgICB1cmwucHJvdG9jb2wgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2w7XG4gICAgICAgICAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZ2V0VG90YWxDb3VudDogKHJlc3BvbnNlKT0+cmVzcG9uc2U/LnRvdGFsQ291bnQgPz8gTnVtYmVyLk5hTixcbiAgICBnZXRDdXJyZW50UGFnZVNpemU6IChyZXNwb25zZSk9PnJlc3BvbnNlPy5yZXN1bHRzPy5sZW5ndGggPz8gTnVtYmVyLk5hTixcbiAgICBnZXREYXRhOiAocmVzcG9uc2UpPT5yZXNwb25zZT8ucmVzdWx0c1xufTtcbmV4cG9ydCBmdW5jdGlvbiB1c2VTZXJ2ZXJQYWdpbmF0aW9uKHVybCwgcGFnZVNpemUsIHNlcnZlclBhZ2luYXRpb25IYW5kbGVycywgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBnZXRQYWdpbmF0ZWRVcmwsIGdldFRvdGFsQ291bnQsIGdldEN1cnJlbnRQYWdlU2l6ZSwgZ2V0RGF0YSB9ID0gc2VydmVyUGFnaW5hdGlvbkhhbmRsZXJzO1xuICAgIGNvbnN0IHsgaW1tdXRhYmxlLCBzd3JDb25maWcgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZmV0Y2hlciA9IG9wdGlvbnMuZmV0Y2hlciA/PyBvcGVubXJzRmV0Y2g7XG4gICAgLy8gMS1pbmRleGluZyBpbnN0ZWFkIG9mIDAtaW5kZXhpbmcsIHRvIGtlZXAgY29uc2lzdGVuY3kgd2l0aCBgdXNlUGFnaW5hdGlvbmBcbiAgICBjb25zdCBbY3VycmVudFBhZ2UsIHNldEN1cnJlbnRQYWdlXSA9IHVzZVN0YXRlKDEpO1xuICAgIC8vIENhY2hlIHRoZSB0b3RhbENvdW50IGFuZCBjdXJyZW50UGFnZVNpemUgc28gd2UgZG9uJ3QgbG9zZSB0aGVtXG4gICAgLy8gYXMgd2Ugd2FpdCBmb3IgbmV4dCBwYWdlJ3MgcmVzdWx0IHRvIGxvYWQgd2hpbGUgbmF2aWdhdGluZyB0byBhIGRpZmZlcmVudCBwYWdlLlxuICAgIC8vIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJldmVudCBqYXJyaW5nIFVJIGNoYW5nZXMgd2hpbGUgbG9hZGluZ1xuICAgIGNvbnN0IHRvdGFsQ291bnQgPSB1c2VSZWYoTnVtYmVyLk5hTik7XG4gICAgLy8gdGhpcyB2YWx1ZSBpcyB1c3VhbGx5IHNhbWUgYXMgcGFnZVNpemUsIGV4Y2VwdCB3aGVuIGN1cnJlbnRQYWdlIGlzIGxhc3QgcGFnZS5cbiAgICBjb25zdCBjdXJyZW50UGFnZVNpemUgPSB1c2VSZWYoTnVtYmVyLk5hTik7XG4gICAgLy8gdHJhY2tlZCBhcyBhIHJlZiBzbyB3ZSBkb24ndCBuZWVkIHRvIG1ha2UgdGhlIGN1cnJlbnQgcGFnZSBhIGRlcGVuZGVuY3kgb2YgYGdvVG8oKWAsIGV0Yy5cbiAgICBjb25zdCBjdXJyZW50UGFnZVJlZiA9IHVzZVJlZihjdXJyZW50UGFnZSk7XG4gICAgLy8gdXNlIHRvIGRpZmZlcmVudGlhdGUgXCJlbmRwb2ludCBkb2Vzbid0IHJldHVybiBhIHRvdGFsXCIgZnJvbSBcIndlIGhhdmVuJ3QgcnVuIGEgcmVxdWVzdCB5ZXRcIlxuICAgIGNvbnN0IGhhc1Jlc3BvbmRlZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qgd2FybmVkTWlzc2luZ1RvdGFsID0gdXNlUmVmKGZhbHNlKTtcbiAgICAvLyBpZiB0aGUgVVJMIHdlJ3JlIHF1ZXJ5aW5nIGNoYW5nZXMsIHJlc2V0IHRvIHBhZ2UgMVxuICAgIGNvbnN0IHVybEtleSA9IHVybD8udG9TdHJpbmcoKSA/PyAnJztcbiAgICBjb25zdCBbbGFzdFVybEtleSwgc2V0TGFzdFVybEtleV0gPSB1c2VTdGF0ZSh1cmxLZXkpO1xuICAgIGlmICh1cmxLZXkgIT09IGxhc3RVcmxLZXkpIHtcbiAgICAgICAgc2V0TGFzdFVybEtleSh1cmxLZXkpO1xuICAgICAgICBzZXRDdXJyZW50UGFnZSgxKTtcbiAgICAgICAgY3VycmVudFBhZ2VSZWYuY3VycmVudCA9IDE7XG4gICAgICAgIHRvdGFsQ291bnQuY3VycmVudCA9IE51bWJlci5OYU47XG4gICAgICAgIGN1cnJlbnRQYWdlU2l6ZS5jdXJyZW50ID0gTnVtYmVyLk5hTjtcbiAgICAgICAgaGFzUmVzcG9uZGVkLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgd2FybmVkTWlzc2luZ1RvdGFsLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbGltaXQgPSBwYWdlU2l6ZTtcbiAgICBjb25zdCBzdGFydEluZGV4ID0gKGN1cnJlbnRQYWdlIC0gMSkgKiBwYWdlU2l6ZTtcbiAgICBjb25zdCB1cmxVcmwgPSB1c2VNZW1vKCgpPT57XG4gICAgICAgIHJldHVybiBnZXRQYWdpbmF0ZWRVcmwodXJsLCBsaW1pdCwgc3RhcnRJbmRleCk7XG4gICAgfSwgW1xuICAgICAgICB1cmwsXG4gICAgICAgIGxpbWl0LFxuICAgICAgICBzdGFydEluZGV4XG4gICAgXSk7XG4gICAgY29uc3Qgc3dyID0gaW1tdXRhYmxlID8gdXNlU1dSSW1tdXRhYmxlIDogdXNlU1dSO1xuICAgIGNvbnN0IHsgZGF0YSwgLi4ucmVzdCB9ID0gc3dyKHVybFVybCwgZmV0Y2hlciwgc3dyQ29uZmlnKTtcbiAgICBpZiAoZGF0YT8uZGF0YSkge1xuICAgICAgICB0b3RhbENvdW50LmN1cnJlbnQgPSBnZXRUb3RhbENvdW50KGRhdGE/LmRhdGEpO1xuICAgICAgICBjdXJyZW50UGFnZVNpemUuY3VycmVudCA9IGdldEN1cnJlbnRQYWdlU2l6ZShkYXRhPy5kYXRhKTtcbiAgICAgICAgaGFzUmVzcG9uZGVkLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRvdGFsQ291bnQuY3VycmVudCAvIHBhZ2VTaXplKTtcbiAgICAvLyBUaGUgYm91bmQgaXMgcmVhZCBmcm9tIGB0b3RhbENvdW50YCBhdCBjYWxsIHRpbWUgcmF0aGVyIHRoYW4gY2FwdHVyZWQgZnJvbSB0aGUgY3JlYXRpbmcgcmVuZGVyLFxuICAgIC8vIHdoaWNoIGlzIHdoYXQga2VlcHMgdGhpcyBjYWxsYmFjayByZWZlcmVudGlhbGx5IHN0YWJsZSwgYXBhcnQgZnJvbSBhIGNoYW5nZSBpbiBgcGFnZVNpemVgLlxuICAgIGNvbnN0IGdvVG8gPSB1c2VDYWxsYmFjaygocGFnZSk9PntcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHBhZ2UpIHx8IHBhZ2UgPCAxKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHVzZVNlcnZlclBhZ2luYXRpb246IGlnbm9yaW5nIGdvVG8oJHtwYWdlfSk7IHBhZ2UgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuYCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gcGFnZSBjb3VudCBpcyBub3Qga25vd24gcHJpb3IgdG8gcnVubmluZyBhbnkgcXVlcnkgd2hlbiBgYm91bmRgIHdpbGwgYmUgYE5hTmAsIHNvIGluIHRoaXNcbiAgICAgICAgLy8gY2FzZSB3ZSBhc3N1bWUgdGhlIHJlcXVlc3RlZCBwYWdlIGlzIGZpbmU7IGFmdGVyIHJlc3VsdHMgcmV0dXJuLCB0aGluZ3Mgd2lsbCBzZXR0bGUgcHJvcGVybHlcbiAgICAgICAgLy8gY2xhbXBlZFxuICAgICAgICBjb25zdCBib3VuZCA9IE1hdGguY2VpbCh0b3RhbENvdW50LmN1cnJlbnQgLyBwYWdlU2l6ZSk7XG4gICAgICAgIGlmICghaGFzUmVzcG9uZGVkLmN1cnJlbnQgfHwgTnVtYmVyLmlzTmFOKGJvdW5kKSB8fCBwYWdlIDw9IGJvdW5kKSB7XG4gICAgICAgICAgICBjdXJyZW50UGFnZVJlZi5jdXJyZW50ID0gcGFnZTtcbiAgICAgICAgICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIGF0dGVtcHQgdG8gZ28gdG8gb3V0IG9mIGJvdW5kcyBwYWdlOiAnICsgcGFnZSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHBhZ2VTaXplXG4gICAgXSk7XG4gICAgLy8gQSBwYWdlIGFjY2VwdGVkIGJlZm9yZSB0aGUgdG90YWwgd2FzIGtub3duIG1heSB0dXJuIG91dCBub3QgdG8gZXhpc3QsIHNvIHB1dCB0aGUgdXNlciBvbiB0aGUgbGFzdFxuICAgIC8vIHJlYWwgcGFnZSBvbmNlIHRoZSByZXNwb25zZSBzZXR0bGVzIGl0LiBDb3N0cyBhbiBleHRyYSByZXF1ZXN0LCBidXQgb25seSBmb3IgYSBwYWdlIHRoYXQgd2FzIG91dCBvZlxuICAgIC8vIHJhbmdlIHRvIGJlZ2luIHdpdGg7IHdpdGhvdXQgaXQgdGhlIGhvb2sgc2l0cyBvbiBhbiBlbXB0eSBwYWdlIHdpdGggbm8gd2F5IGJhY2suXG4gICAgdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghaGFzUmVzcG9uZGVkLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHRvdGFsQ291bnQuY3VycmVudCkpIHtcbiAgICAgICAgICAgIGlmICghd2FybmVkTWlzc2luZ1RvdGFsLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICB3YXJuZWRNaXNzaW5nVG90YWwuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGB1c2VTZXJ2ZXJQYWdpbmF0aW9uOiAke3VybEtleX0gcmV0dXJuZWQgbm8gdG90YWwgY291bnQsIHNvIG91dC1vZi1yYW5nZSBwYWdlcyBjYW5ub3QgYmUgZGV0ZWN0ZWQuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGFzdFBhZ2UgPSBNYXRoLm1heCgxLCBNYXRoLmNlaWwodG90YWxDb3VudC5jdXJyZW50IC8gcGFnZVNpemUpKTtcbiAgICAgICAgaWYgKGN1cnJlbnRQYWdlID4gbGFzdFBhZ2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgSW52YWxpZCBhdHRlbXB0IHRvIGdvIHRvIG91dCBvZiBib3VuZHMgcGFnZTogJHtjdXJyZW50UGFnZX07IHJldHVybmluZyB0byBwYWdlICR7bGFzdFBhZ2V9LmApO1xuICAgICAgICAgICAgY3VycmVudFBhZ2VSZWYuY3VycmVudCA9IGxhc3RQYWdlO1xuICAgICAgICAgICAgc2V0Q3VycmVudFBhZ2UobGFzdFBhZ2UpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjdXJyZW50UGFnZSxcbiAgICAgICAgcGFnZVNpemUsXG4gICAgICAgIHVybEtleSxcbiAgICAgICAgZGF0YVxuICAgIF0pO1xuICAgIGNvbnN0IGdvVG9OZXh0ID0gdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgZ29UbyhjdXJyZW50UGFnZVJlZi5jdXJyZW50ICsgMSk7XG4gICAgfSwgW1xuICAgICAgICBnb1RvXG4gICAgXSk7XG4gICAgY29uc3QgZ29Ub1ByZXZpb3VzID0gdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgZ29UbyhjdXJyZW50UGFnZVJlZi5jdXJyZW50IC0gMSk7XG4gICAgfSwgW1xuICAgICAgICBnb1RvXG4gICAgXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogZ2V0RGF0YShkYXRhPy5kYXRhKSxcbiAgICAgICAgdG90YWxQYWdlcyxcbiAgICAgICAgdG90YWxDb3VudDogdG90YWxDb3VudC5jdXJyZW50LFxuICAgICAgICBjdXJyZW50UGFnZSxcbiAgICAgICAgY3VycmVudFBhZ2VTaXplOiBjdXJyZW50UGFnZVNpemUuY3VycmVudCxcbiAgICAgICAgcGFnaW5hdGVkOiB0b3RhbFBhZ2VzID4gMSxcbiAgICAgICAgc2hvd05leHRCdXR0b246IGN1cnJlbnRQYWdlIDwgdG90YWxQYWdlcyxcbiAgICAgICAgc2hvd1ByZXZpb3VzQnV0dG9uOiBjdXJyZW50UGFnZSA+IDEsXG4gICAgICAgIGdvVG8sXG4gICAgICAgIGdvVG9OZXh0LFxuICAgICAgICBnb1RvUHJldmlvdXMsXG4gICAgICAgIC4uLnJlc3RcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbIm1ha2VVcmwiLCJvcGVubXJzRmV0Y2giLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVNXUiIsInVzZVNXUkltbXV0YWJsZSIsInVzZU9wZW5tcnNQYWdpbmF0aW9uIiwidXJsIiwicGFnZVNpemUiLCJvcHRpb25zIiwidXNlU2VydmVyUGFnaW5hdGlvbiIsIm9wZW5tcnNTZXJ2ZXJQYWdpbmF0aW9uSGFuZGxlcnMiLCJnZXRQYWdpbmF0ZWRVcmwiLCJsaW1pdCIsInN0YXJ0SW5kZXgiLCJ1cmxVcmwiLCJVUkwiLCJ3aW5kb3ciLCJnZXROZXh0VXJsIiwicmVzcG9uc2UiLCJfcmVzcG9uc2VfbGlua3NfZmluZCIsInVyaSIsImxpbmsiLCJnZXRUb3RhbENvdW50IiwiTnVtYmVyIiwiZ2V0Q3VycmVudFBhZ2VTaXplIiwiX3Jlc3BvbnNlX3Jlc3VsdHMiLCJnZXREYXRhIiwic2VydmVyUGFnaW5hdGlvbkhhbmRsZXJzIiwiX29wdGlvbnNfZmV0Y2hlciIsImltbXV0YWJsZSIsInN3ckNvbmZpZyIsImZldGNoZXIiLCJfdXNlU3RhdGUiLCJjdXJyZW50UGFnZSIsInNldEN1cnJlbnRQYWdlIiwidG90YWxDb3VudCIsImN1cnJlbnRQYWdlU2l6ZSIsImN1cnJlbnRQYWdlUmVmIiwiaGFzUmVzcG9uZGVkIiwid2FybmVkTWlzc2luZ1RvdGFsIiwidXJsS2V5IiwiX3VzZVN0YXRlMSIsImxhc3RVcmxLZXkiLCJzZXRMYXN0VXJsS2V5Iiwic3dyIiwiX3N3ciIsImRhdGEiLCJyZXN0IiwidG90YWxQYWdlcyIsIk1hdGgiLCJnb1RvIiwicGFnZSIsImNvbnNvbGUiLCJib3VuZCIsImxhc3RQYWdlIiwiZ29Ub05leHQiLCJnb1RvUHJldmlvdXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5QkFBeUIsR0FBNEQ7QUFDWDtBQUNqRDtBQUNtQjtBQUM1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTRCQyxHQUFVLFNBQVNTLHFCQUFxQkMsR0FBRyxFQUFFQyxRQUFRO1FBQUVDLFVBQUFBLGlFQUFVLENBQUM7SUFDL0QsT0FBT0Msb0JBQW9CSCxLQUFLQyxVQUFVRyxpQ0FBaUNGO0FBQy9FO0FBQ08sSUFBTUUsa0NBQWtDO0lBQzNDQyxpQkFBaUIsU0FBakJBLGdCQUFrQkwsS0FBS00sT0FBT0M7UUFDMUIsSUFBSVAsS0FBSztZQUNMLElBQU1R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\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useOpenmrsPagination.js\n\n}");
6119
6124
 
6120
6125
  },
6121
6126
  "../../framework/esm-react-utils/dist/useOpenmrsSWR.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -6125,7 +6130,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
6125
6130
  },
6126
6131
  "../../framework/esm-react-utils/dist/usePagination.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
6127
6132
  "use strict";
6128
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n usePagination: () => (usePagination)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category UI */ \nvar defaultResultsPerPage = 10;\n/**\n * Use this hook to paginate data that already exists on the client side.\n * Note that if the data is obtained from server-side, the caller must handle server-side pagination manually.\n * @see `useServerPagination` for hook that automatically manages server-side pagination.\n * @see `useServerInfinite` for hook to get all data loaded onto the client-side\n * @param data\n * @param resultsPerPage\n * @returns\n */ function usePagination() {\n var data = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], resultsPerPage = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultResultsPerPage;\n var _useState = _sliced_to_array((0,react__rspack_import_0.useState)(1), 2), page = _useState[0], setPage = _useState[1];\n var totalPages = (0,react__rspack_import_0.useMemo)(function() {\n return typeof resultsPerPage === 'number' && resultsPerPage > 0 ? Math.max(1, Math.ceil(data.length / resultsPerPage)) : 1;\n }, [\n data.length,\n resultsPerPage\n ]);\n var results = (0,react__rspack_import_0.useMemo)(function() {\n var lowerBound = (page - 1) * resultsPerPage;\n var upperBound = (page + 0) * resultsPerPage;\n return data.slice(lowerBound, upperBound);\n }, [\n data,\n page,\n resultsPerPage\n ]);\n var goTo = (0,react__rspack_import_0.useCallback)(function(page) {\n setPage(Math.max(1, Math.min(totalPages, page)));\n }, [\n setPage,\n totalPages\n ]);\n var goToNext = (0,react__rspack_import_0.useCallback)(function() {\n if (page < totalPages) {\n setPage(page + 1);\n }\n }, [\n page,\n totalPages,\n setPage\n ]);\n var goToPrevious = (0,react__rspack_import_0.useCallback)(function() {\n if (page > 1) {\n setPage(page - 1);\n }\n }, [\n page,\n setPage\n ]);\n var memoisedPaginatedData = (0,react__rspack_import_0.useMemo)(function() {\n return {\n results: results,\n totalPages: totalPages,\n currentPage: page,\n paginated: data.length > resultsPerPage,\n showNextButton: page < totalPages,\n showPreviousButton: page > 1,\n goTo: goTo,\n goToNext: goToNext,\n goToPrevious: goToPrevious\n };\n }, [\n results,\n totalPages,\n data.length,\n resultsPerPage,\n page,\n goTo,\n goToNext,\n goToPrevious\n ]);\n return memoisedPaginatedData;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlUGFnaW5hdGlvbi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9kaXN0L3VzZVBhZ2luYXRpb24uanM/YzQ4YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgVUkgKi8gaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5jb25zdCBkZWZhdWx0UmVzdWx0c1BlclBhZ2UgPSAxMDtcbi8qKlxuICogVXNlIHRoaXMgaG9vayB0byBwYWdpbmF0ZSBkYXRhIHRoYXQgYWxyZWFkeSBleGlzdHMgb24gdGhlIGNsaWVudCBzaWRlLlxuICogTm90ZSB0aGF0IGlmIHRoZSBkYXRhIGlzIG9idGFpbmVkIGZyb20gc2VydmVyLXNpZGUsIHRoZSBjYWxsZXIgbXVzdCBoYW5kbGUgc2VydmVyLXNpZGUgcGFnaW5hdGlvbiBtYW51YWxseS5cbiAqIEBzZWUgYHVzZVNlcnZlclBhZ2luYXRpb25gIGZvciBob29rIHRoYXQgYXV0b21hdGljYWxseSBtYW5hZ2VzIHNlcnZlci1zaWRlIHBhZ2luYXRpb24uXG4gKiBAc2VlIGB1c2VTZXJ2ZXJJbmZpbml0ZWAgZm9yIGhvb2sgdG8gZ2V0IGFsbCBkYXRhIGxvYWRlZCBvbnRvIHRoZSBjbGllbnQtc2lkZVxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSByZXN1bHRzUGVyUGFnZVxuICogQHJldHVybnNcbiAqLyBleHBvcnQgZnVuY3Rpb24gdXNlUGFnaW5hdGlvbihkYXRhID0gW10sIHJlc3VsdHNQZXJQYWdlID0gZGVmYXVsdFJlc3VsdHNQZXJQYWdlKSB7XG4gICAgY29uc3QgW3BhZ2UsIHNldFBhZ2VdID0gdXNlU3RhdGUoMSk7XG4gICAgY29uc3QgdG90YWxQYWdlcyA9IHVzZU1lbW8oKCk9PnR5cGVvZiByZXN1bHRzUGVyUGFnZSA9PT0gJ251bWJlcicgJiYgcmVzdWx0c1BlclBhZ2UgPiAwID8gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKGRhdGEubGVuZ3RoIC8gcmVzdWx0c1BlclBhZ2UpKSA6IDEsIFtcbiAgICAgICAgZGF0YS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdHNQZXJQYWdlXG4gICAgXSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IHVzZU1lbW8oKCk9PntcbiAgICAgICAgY29uc3QgbG93ZXJCb3VuZCA9IChwYWdlIC0gMSkgKiByZXN1bHRzUGVyUGFnZTtcbiAgICAgICAgY29uc3QgdXBwZXJCb3VuZCA9IChwYWdlICsgMCkgKiByZXN1bHRzUGVyUGFnZTtcbiAgICAgICAgcmV0dXJuIGRhdGEuc2xpY2UobG93ZXJCb3VuZCwgdXBwZXJCb3VuZCk7XG4gICAgfSwgW1xuICAgICAgICBkYXRhLFxuICAgICAgICBwYWdlLFxuICAgICAgICByZXN1bHRzUGVyUGFnZVxuICAgIF0pO1xuICAgIGNvbnN0IGdvVG8gPSB1c2VDYWxsYmFjaygocGFnZSk9PntcbiAgICAgICAgc2V0UGFnZShNYXRoLm1heCgxLCBNYXRoLm1pbih0b3RhbFBhZ2VzLCBwYWdlKSkpO1xuICAgIH0sIFtcbiAgICAgICAgc2V0UGFnZSxcbiAgICAgICAgdG90YWxQYWdlc1xuICAgIF0pO1xuICAgIGNvbnN0IGdvVG9OZXh0ID0gdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgaWYgKHBhZ2UgPCB0b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICBzZXRQYWdlKHBhZ2UgKyAxKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcGFnZSxcbiAgICAgICAgdG90YWxQYWdlcyxcbiAgICAgICAgc2V0UGFnZVxuICAgIF0pO1xuICAgIGNvbnN0IGdvVG9QcmV2aW91cyA9IHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIGlmIChwYWdlID4gMSkge1xuICAgICAgICAgICAgc2V0UGFnZShwYWdlIC0gMSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHBhZ2UsXG4gICAgICAgIHNldFBhZ2VcbiAgICBdKTtcbiAgICBjb25zdCBtZW1vaXNlZFBhZ2luYXRlZERhdGEgPSB1c2VNZW1vKCgpPT4oe1xuICAgICAgICAgICAgcmVzdWx0cyxcbiAgICAgICAgICAgIHRvdGFsUGFnZXMsXG4gICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnZSxcbiAgICAgICAgICAgIHBhZ2luYXRlZDogZGF0YS5sZW5ndGggPiByZXN1bHRzUGVyUGFnZSxcbiAgICAgICAgICAgIHNob3dOZXh0QnV0dG9uOiBwYWdlIDwgdG90YWxQYWdlcyxcbiAgICAgICAgICAgIHNob3dQcmV2aW91c0J1dHRvbjogcGFnZSA+IDEsXG4gICAgICAgICAgICBnb1RvLFxuICAgICAgICAgICAgZ29Ub05leHQsXG4gICAgICAgICAgICBnb1RvUHJldmlvdXNcbiAgICAgICAgfSksIFtcbiAgICAgICAgcmVzdWx0cyxcbiAgICAgICAgdG90YWxQYWdlcyxcbiAgICAgICAgZGF0YS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdHNQZXJQYWdlLFxuICAgICAgICBwYWdlLFxuICAgICAgICBnb1RvLFxuICAgICAgICBnb1RvTmV4dCxcbiAgICAgICAgZ29Ub1ByZXZpb3VzXG4gICAgXSk7XG4gICAgcmV0dXJuIG1lbW9pc2VkUGFnaW5hdGVkRGF0YTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsImRlZmF1bHRSZXN1bHRzUGVyUGFnZSIsInVzZVBhZ2luYXRpb24iLCJkYXRhIiwicmVzdWx0c1BlclBhZ2UiLCJfdXNlU3RhdGUiLCJwYWdlIiwic2V0UGFnZSIsInRvdGFsUGFnZXMiLCJNYXRoIiwicmVzdWx0cyIsImxvd2VyQm91bmQiLCJ1cHBlckJvdW5kIiwiZ29UbyIsImdvVG9OZXh0IiwiZ29Ub1ByZXZpb3VzIiwibWVtb2lzZWRQYWdpbmF0ZWREYXRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUJBQXlCLEdBQTBEO0FBQ25GLElBQU1HLHdCQUF3QjtBQUM5Qjs7Ozs7Ozs7Q0FRQyxHQUFVLFNBQVNDO1FBQWNDLE9BQUFBLGlFQUFPLEVBQUUsRUFBRUMsaUJBQUFBLGlFQUFpQkg7SUFDMUQsSUFBd0JJLDZCQUFBQSxtQ0FBUUEsQ0FBQyxRQUExQkMsT0FBaUJELGNBQVhFLFVBQVdGO0lBQ3hCLElBQU1HLGFBQWFULGtDQUFPQSxDQUFDO2VBQUksT0FBT0ssbUJBQW1CLFlBQVlBLGlCQUFpQixJQUFJSyxLQUFLLEdBQUcsQ0FBQyxHQUFHQSxLQUFLLElBQUksQ0FBQ04sS0FBSyxNQUFNLEdBQUdDLG1CQUFtQjtPQUFHO1FBQ2hKRCxLQUFLLE1BQU07UUFDWEM7S0FDSDtJQUNELElBQU1NLFVBQVVYLGtDQUFPQSxDQUFDO1FBQ3BCLElBQU1ZLGFBQWNMLENBQUFBLE9BQU8sS0FBS0Y7UUFDaEMsSUFBTVEsYUFBY04sQ0FBQUEsT0FBTyxLQUFLRjtRQUNoQyxPQUFPRCxLQUFLLEtBQUssQ0FBQ1EsWUFBWUM7SUFDbEMsR0FBRztRQUNDVDtRQUNBRztRQUNBRjtLQUNIO0lBQ0QsSUFBTVMsT0FBT2Ysc0NBQVdBLENBQUMsU0FBQ1E7UUFDdEJDLFFBQVFFLEtBQUssR0FBRyxDQUFDLEdBQUdBLEtBQUssR0FBRyxDQUFDRCxZQUFZRjtJQUM3QyxHQUFHO1FBQ0NDO1FBQ0FDO0tBQ0g7SUFDRCxJQUFNTSxXQUFXaEIsc0NBQVdBLENBQUM7UUFDekIsSUFBSVEsT0FBT0UsWUFBWTtZQUNuQkQsUUFBUUQsT0FBTztRQUNuQjtJQUNKLEdBQUc7UUFDQ0E7UUFDQUU7UUFDQUQ7S0FDSDtJQUNELElBQU1RLGVBQWVqQixzQ0FBV0EsQ0FBQztRQUM3QixJQUFJUSxPQUFPLEdBQUc7WUFDVkMsUUFBUUQsT0FBTztRQUNuQjtJQUNKLEdBQUc7UUFDQ0E7UUFDQUM7S0FDSDtJQUNELElBQU1TLHdCQUF3QmpCLGtDQUFPQSxDQUFDO2VBQUs7WUFDbkNXLFNBQUFBO1lBQ0FGLFlBQUFBO1lBQ0EsYUFBYUY7WUFDYixXQUFXSCxLQUFLLE1BQU0sR0FBR0M7WUFDekIsZ0JBQWdCRSxPQUFPRTtZQUN2QixvQkFBb0JGLE9BQU87WUFDM0JPLE1BQUFBO1lBQ0FDLFVBQUFBO1lBQ0FDLGNBQUFBO1FBQ0o7T0FBSTtRQUNKTDtRQUNBRjtRQUNBTCxLQUFLLE1BQU07UUFDWEM7UUFDQUU7UUFDQU87UUFDQUM7UUFDQUM7S0FDSDtJQUNELE9BQU9DO0FBQ1gifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/usePagination.js\n\n}");
6133
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n usePagination: () => (usePagination)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category UI */ \nvar defaultResultsPerPage = 10;\n/**\n * Use this hook to paginate data that already exists on the client side.\n * Note that if the data is obtained from server-side, the caller must handle server-side pagination manually.\n *\n * `goTo`, `goToNext` and `goToPrevious` keep the same identity for the life of the component, so they are\n * safe to list in a dependency array. `currentPage` is bounded by the data, so it can change on its own\n * when the data shrinks; a component reacting to `currentPage` should expect that.\n *\n * @see `useServerPagination` for hook that automatically manages server-side pagination.\n * @see `useServerInfinite` for hook to get all data loaded onto the client-side\n * @param data\n * @param resultsPerPage\n * @returns\n */ function usePagination() {\n var data = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], resultsPerPage = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultResultsPerPage;\n var _useState = _sliced_to_array((0,react__rspack_import_0.useState)(1), 2), requestedPage = _useState[0], setRequestedPage = _useState[1];\n var totalPages = (0,react__rspack_import_0.useMemo)(function() {\n return typeof resultsPerPage === 'number' && resultsPerPage > 0 ? Math.max(1, Math.ceil(data.length / resultsPerPage)) : 1;\n }, [\n data.length,\n resultsPerPage\n ]);\n // If requested page is past the end, set to the end. Done here to retain referential stability\n // on the functions returned by this hook\n if (requestedPage > totalPages) {\n setRequestedPage(totalPages);\n }\n var page = Math.min(Math.max(1, requestedPage), totalPages);\n var results = (0,react__rspack_import_0.useMemo)(function() {\n var lowerBound = (page - 1) * resultsPerPage;\n var upperBound = (page + 0) * resultsPerPage;\n return data.slice(lowerBound, upperBound);\n }, [\n data,\n page,\n resultsPerPage\n ]);\n var goTo = (0,react__rspack_import_0.useCallback)(function(page) {\n if (!Number.isInteger(page) || page < 1) {\n console.warn(\"usePagination: ignoring goTo(\".concat(page, \"); page must be a positive integer.\"));\n return;\n }\n setRequestedPage(page);\n }, []);\n // overflow clamping happens in render; see the setRequestedPage() call above\n var goToNext = (0,react__rspack_import_0.useCallback)(function() {\n setRequestedPage(function(p) {\n return p + 1;\n });\n }, []);\n var goToPrevious = (0,react__rspack_import_0.useCallback)(function() {\n setRequestedPage(function(p) {\n return Math.max(1, p - 1);\n });\n }, []);\n var memoisedPaginatedData = (0,react__rspack_import_0.useMemo)(function() {\n return {\n results: results,\n totalPages: totalPages,\n currentPage: page,\n paginated: data.length > resultsPerPage,\n showNextButton: page < totalPages,\n showPreviousButton: page > 1,\n goTo: goTo,\n goToNext: goToNext,\n goToPrevious: goToPrevious\n };\n }, [\n results,\n totalPages,\n data.length,\n resultsPerPage,\n page,\n goTo,\n goToNext,\n goToPrevious\n ]);\n return memoisedPaginatedData;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlUGFnaW5hdGlvbi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9kaXN0L3VzZVBhZ2luYXRpb24uanM/YzQ4YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgVUkgKi8gaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5jb25zdCBkZWZhdWx0UmVzdWx0c1BlclBhZ2UgPSAxMDtcbi8qKlxuICogVXNlIHRoaXMgaG9vayB0byBwYWdpbmF0ZSBkYXRhIHRoYXQgYWxyZWFkeSBleGlzdHMgb24gdGhlIGNsaWVudCBzaWRlLlxuICogTm90ZSB0aGF0IGlmIHRoZSBkYXRhIGlzIG9idGFpbmVkIGZyb20gc2VydmVyLXNpZGUsIHRoZSBjYWxsZXIgbXVzdCBoYW5kbGUgc2VydmVyLXNpZGUgcGFnaW5hdGlvbiBtYW51YWxseS5cbiAqXG4gKiBgZ29Ub2AsIGBnb1RvTmV4dGAgYW5kIGBnb1RvUHJldmlvdXNgIGtlZXAgdGhlIHNhbWUgaWRlbnRpdHkgZm9yIHRoZSBsaWZlIG9mIHRoZSBjb21wb25lbnQsIHNvIHRoZXkgYXJlXG4gKiBzYWZlIHRvIGxpc3QgaW4gYSBkZXBlbmRlbmN5IGFycmF5LiBgY3VycmVudFBhZ2VgIGlzIGJvdW5kZWQgYnkgdGhlIGRhdGEsIHNvIGl0IGNhbiBjaGFuZ2Ugb24gaXRzIG93blxuICogd2hlbiB0aGUgZGF0YSBzaHJpbmtzOyBhIGNvbXBvbmVudCByZWFjdGluZyB0byBgY3VycmVudFBhZ2VgIHNob3VsZCBleHBlY3QgdGhhdC5cbiAqXG4gKiBAc2VlIGB1c2VTZXJ2ZXJQYWdpbmF0aW9uYCBmb3IgaG9vayB0aGF0IGF1dG9tYXRpY2FsbHkgbWFuYWdlcyBzZXJ2ZXItc2lkZSBwYWdpbmF0aW9uLlxuICogQHNlZSBgdXNlU2VydmVySW5maW5pdGVgIGZvciBob29rIHRvIGdldCBhbGwgZGF0YSBsb2FkZWQgb250byB0aGUgY2xpZW50LXNpZGVcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gcmVzdWx0c1BlclBhZ2VcbiAqIEByZXR1cm5zXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVzZVBhZ2luYXRpb24oZGF0YSA9IFtdLCByZXN1bHRzUGVyUGFnZSA9IGRlZmF1bHRSZXN1bHRzUGVyUGFnZSkge1xuICAgIGNvbnN0IFtyZXF1ZXN0ZWRQYWdlLCBzZXRSZXF1ZXN0ZWRQYWdlXSA9IHVzZVN0YXRlKDEpO1xuICAgIGNvbnN0IHRvdGFsUGFnZXMgPSB1c2VNZW1vKCgpPT50eXBlb2YgcmVzdWx0c1BlclBhZ2UgPT09ICdudW1iZXInICYmIHJlc3VsdHNQZXJQYWdlID4gMCA/IE1hdGgubWF4KDEsIE1hdGguY2VpbChkYXRhLmxlbmd0aCAvIHJlc3VsdHNQZXJQYWdlKSkgOiAxLCBbXG4gICAgICAgIGRhdGEubGVuZ3RoLFxuICAgICAgICByZXN1bHRzUGVyUGFnZVxuICAgIF0pO1xuICAgIC8vIElmIHJlcXVlc3RlZCBwYWdlIGlzIHBhc3QgdGhlIGVuZCwgc2V0IHRvIHRoZSBlbmQuIERvbmUgaGVyZSB0byByZXRhaW4gcmVmZXJlbnRpYWwgc3RhYmlsaXR5XG4gICAgLy8gb24gdGhlIGZ1bmN0aW9ucyByZXR1cm5lZCBieSB0aGlzIGhvb2tcbiAgICBpZiAocmVxdWVzdGVkUGFnZSA+IHRvdGFsUGFnZXMpIHtcbiAgICAgICAgc2V0UmVxdWVzdGVkUGFnZSh0b3RhbFBhZ2VzKTtcbiAgICB9XG4gICAgY29uc3QgcGFnZSA9IE1hdGgubWluKE1hdGgubWF4KDEsIHJlcXVlc3RlZFBhZ2UpLCB0b3RhbFBhZ2VzKTtcbiAgICBjb25zdCByZXN1bHRzID0gdXNlTWVtbygoKT0+e1xuICAgICAgICBjb25zdCBsb3dlckJvdW5kID0gKHBhZ2UgLSAxKSAqIHJlc3VsdHNQZXJQYWdlO1xuICAgICAgICBjb25zdCB1cHBlckJvdW5kID0gKHBhZ2UgKyAwKSAqIHJlc3VsdHNQZXJQYWdlO1xuICAgICAgICByZXR1cm4gZGF0YS5zbGljZShsb3dlckJvdW5kLCB1cHBlckJvdW5kKTtcbiAgICB9LCBbXG4gICAgICAgIGRhdGEsXG4gICAgICAgIHBhZ2UsXG4gICAgICAgIHJlc3VsdHNQZXJQYWdlXG4gICAgXSk7XG4gICAgY29uc3QgZ29UbyA9IHVzZUNhbGxiYWNrKChwYWdlKT0+e1xuICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIocGFnZSkgfHwgcGFnZSA8IDEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgdXNlUGFnaW5hdGlvbjogaWdub3JpbmcgZ29Ubygke3BhZ2V9KTsgcGFnZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci5gKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRSZXF1ZXN0ZWRQYWdlKHBhZ2UpO1xuICAgIH0sIFtdKTtcbiAgICAvLyBvdmVyZmxvdyBjbGFtcGluZyBoYXBwZW5zIGluIHJlbmRlcjsgc2VlIHRoZSBzZXRSZXF1ZXN0ZWRQYWdlKCkgY2FsbCBhYm92ZVxuICAgIGNvbnN0IGdvVG9OZXh0ID0gdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgc2V0UmVxdWVzdGVkUGFnZSgocCk9PnAgKyAxKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgZ29Ub1ByZXZpb3VzID0gdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgc2V0UmVxdWVzdGVkUGFnZSgocCk9Pk1hdGgubWF4KDEsIHAgLSAxKSk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IG1lbW9pc2VkUGFnaW5hdGVkRGF0YSA9IHVzZU1lbW8oKCk9Pih7XG4gICAgICAgICAgICByZXN1bHRzLFxuICAgICAgICAgICAgdG90YWxQYWdlcyxcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdlLFxuICAgICAgICAgICAgcGFnaW5hdGVkOiBkYXRhLmxlbmd0aCA+IHJlc3VsdHNQZXJQYWdlLFxuICAgICAgICAgICAgc2hvd05leHRCdXR0b246IHBhZ2UgPCB0b3RhbFBhZ2VzLFxuICAgICAgICAgICAgc2hvd1ByZXZpb3VzQnV0dG9uOiBwYWdlID4gMSxcbiAgICAgICAgICAgIGdvVG8sXG4gICAgICAgICAgICBnb1RvTmV4dCxcbiAgICAgICAgICAgIGdvVG9QcmV2aW91c1xuICAgICAgICB9KSwgW1xuICAgICAgICByZXN1bHRzLFxuICAgICAgICB0b3RhbFBhZ2VzLFxuICAgICAgICBkYXRhLmxlbmd0aCxcbiAgICAgICAgcmVzdWx0c1BlclBhZ2UsXG4gICAgICAgIHBhZ2UsXG4gICAgICAgIGdvVG8sXG4gICAgICAgIGdvVG9OZXh0LFxuICAgICAgICBnb1RvUHJldmlvdXNcbiAgICBdKTtcbiAgICByZXR1cm4gbWVtb2lzZWRQYWdpbmF0ZWREYXRhO1xufVxuIl0sIm5hbWVzIjpbInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsInVzZVN0YXRlIiwiZGVmYXVsdFJlc3VsdHNQZXJQYWdlIiwidXNlUGFnaW5hdGlvbiIsImRhdGEiLCJyZXN1bHRzUGVyUGFnZSIsIl91c2VTdGF0ZSIsInJlcXVlc3RlZFBhZ2UiLCJzZXRSZXF1ZXN0ZWRQYWdlIiwidG90YWxQYWdlcyIsIk1hdGgiLCJwYWdlIiwicmVzdWx0cyIsImxvd2VyQm91bmQiLCJ1cHBlckJvdW5kIiwiZ29UbyIsIk51bWJlciIsImNvbnNvbGUiLCJnb1RvTmV4dCIsInAiLCJnb1RvUHJldmlvdXMiLCJtZW1vaXNlZFBhZ2luYXRlZERhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5QkFBeUIsR0FBMEQ7QUFDbkYsSUFBTUcsd0JBQXdCO0FBQzlCOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FBVSxTQUFTQztRQUFjQyxPQUFBQSxpRUFBTyxFQUFFLEVBQUVDLGlCQUFBQSxpRUFBaUJIO0lBQzFELElBQTBDSSw2QkFBQUEsbUNBQVFBLENBQUMsUUFBNUNDLGdCQUFtQ0QsY0FBcEJFLG1CQUFvQkY7SUFDMUMsSUFBTUcsYUFBYVQsa0NBQU9BLENBQUM7ZUFBSSxPQUFPSyxtQkFBbUIsWUFBWUEsaUJBQWlCLElBQUlLLEtBQUssR0FBRyxDQUFDLEdBQUdBLEtBQUssSUFBSSxDQUFDTixLQUFLLE1BQU0sR0FBR0MsbUJBQW1CO09BQUc7UUFDaEpELEtBQUssTUFBTTtRQUNYQztLQUNIO0lBQ0QsK0ZBQStGO0lBQy9GLHlDQUF5QztJQUN6QyxJQUFJRSxnQkFBZ0JFLFlBQVk7UUFDNUJELGlCQUFpQkM7SUFDckI7SUFDQSxJQUFNRSxPQUFPRCxLQUFLLEdBQUcsQ0FBQ0EsS0FBSyxHQUFHLENBQUMsR0FBR0gsZ0JBQWdCRTtJQUNsRCxJQUFNRyxVQUFVWixrQ0FBT0EsQ0FBQztRQUNwQixJQUFNYSxhQUFjRixDQUFBQSxPQUFPLEtBQUtOO1FBQ2hDLElBQU1TLGFBQWNILENBQUFBLE9BQU8sS0FBS047UUFDaEMsT0FBT0QsS0FBSyxLQUFLLENBQUNTLFlBQVlDO0lBQ2xDLEdBQUc7UUFDQ1Y7UUFDQU87UUFDQU47S0FDSDtJQUNELElBQU1VLE9BQU9oQixzQ0FBV0EsQ0FBQyxTQUFDWTtRQUN0QixJQUFJLENBQUNLLE9BQU8sU0FBUyxDQUFDTCxTQUFTQSxPQUFPLEdBQUc7WUFDckNNLFFBQVEsSUFBSSxDQUFFLGdDQUFvQyxPQUFMTixNQUFLO1lBQ2xEO1FBQ0o7UUFDQUgsaUJBQWlCRztJQUNyQixHQUFHLEVBQUU7SUFDTCw2RUFBNkU7SUFDN0UsSUFBTU8sV0FBV25CLHNDQUFXQSxDQUFDO1FBQ3pCUyxpQkFBaUIsU0FBQ1c7bUJBQUlBLElBQUk7O0lBQzlCLEdBQUcsRUFBRTtJQUNMLElBQU1DLGVBQWVyQixzQ0FBV0EsQ0FBQztRQUM3QlMsaUJBQWlCLFNBQUNXO21CQUFJVCxLQUFLLEdBQUcsQ0FBQyxHQUFHUyxJQUFJOztJQUMxQyxHQUFHLEVBQUU7SUFDTCxJQUFNRSx3QkFBd0JyQixrQ0FBT0EsQ0FBQztlQUFLO1lBQ25DWSxTQUFBQTtZQUNBSCxZQUFBQTtZQUNBLGFBQWFFO1lBQ2IsV0FBV1AsS0FBSyxNQUFNLEdBQUdDO1lBQ3pCLGdCQUFnQk0sT0FBT0Y7WUFDdkIsb0JBQW9CRSxPQUFPO1lBQzNCSSxNQUFBQTtZQUNBRyxVQUFBQTtZQUNBRSxjQUFBQTtRQUNKO09BQUk7UUFDSlI7UUFDQUg7UUFDQUwsS0FBSyxNQUFNO1FBQ1hDO1FBQ0FNO1FBQ0FJO1FBQ0FHO1FBQ0FFO0tBQ0g7SUFDRCxPQUFPQztBQUNYIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/usePagination.js\n\n}");
6129
6134
 
6130
6135
  },
6131
6136
  "../../framework/esm-react-utils/dist/usePaginationInfo.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -6152,10 +6157,15 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
6152
6157
  "use strict";
6153
6158
  eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n __cleanup: () => (__cleanup),\n useSession: () => (useSession)\n});\n/* import */ var _openmrs_esm_api__rspack_import_0 = __webpack_require__(\"../../framework/esm-api/dist/index.js\");\n/* import */ var react__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_1);\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category API */ \n\nvar promise;\n/**\n * Gets the current user session information. Returns an object with\n * property `authenticated` == `false` if the user is not logged in.\n *\n * Uses Suspense. This hook will always either return a Session object\n * or throw for Suspense. It will never return `null`/`undefined`.\n *\n * @returns Current user session information\n */ function useSession() {\n // We have two separate variables for the session.\n //\n // `session` is a temporary variable, which starts as `null` every time this\n // hook is executed. It is important that we can set and return this\n // variable synchronously, because every time we `throw` for Suspense, this\n // hook will unmount and a new instance will be created, destroying whatever\n // state existed. Thus, if this hook were to try to always set and return\n // `stateSession`, it would cause an infinite loop:\n // 1. instance A mounts\n // 2. instance A receives value, calls `setStateSession`\n // 3. instance A throws\n // 4. instance A unmounts\n // 5. instance B mounts\n // ...\n // What would happen if we moved `session` to the module scope, so that it\n // could be re-used across instances of this hook? Then we would have no way\n // to tell whether the session was fresh.\n //\n // `stateSession` is React state, which is needed to update components using\n // this hook when the session changes.\n var unsubscribe = (0,react__rspack_import_1.useRef)();\n var _useState = _sliced_to_array((0,react__rspack_import_1.useState)(null), 2), stateSession = _useState[0], setStateSession = _useState[1];\n var session = null;\n if (!stateSession) {\n if (!promise) {\n // If we haven't created a promise to throw yet, do that.\n // current-user.ts handles the initial session fetch as soon as `getSessionStore()`\n // is called. We just need to call it and set up a listener for when session data\n // is loaded. As soon as we have the initial session data, we remove this initial\n // store subscription so we can set up the \"ongoing\" one later.\n promise = new Promise(function(resolve) {\n var handleNewSession = function handleNewSession(param) {\n var loaded = param.loaded, newSession = param.session;\n if (loaded) {\n resolve(newSession);\n session = newSession;\n if (unsubscribe.current) {\n unsubscribe.current();\n unsubscribe.current = undefined;\n }\n }\n };\n handleNewSession((0,_openmrs_esm_api__rspack_import_0.getSessionStore)().getState());\n if (!session) {\n unsubscribe.current = (0,_openmrs_esm_api__rspack_import_0.getSessionStore)().subscribe(handleNewSession);\n }\n });\n } else {\n // However, if we have created a promise to throw, but there's no `stateSession`\n // yet, then it's probably just this hook's first render. Check to see if\n // there's already a session that we can return.\n var currentState = (0,_openmrs_esm_api__rspack_import_0.getSessionStore)().getState();\n if (currentState.loaded) {\n session = currentState.session;\n }\n }\n // If the session got set synchronously in the above block, then we can just\n // return it rather than throwing. Otherwise, throw for Suspense.\n if (session) {\n setStateSession(session);\n } else {\n throw promise;\n }\n }\n // Once this hook is established (no longer throwing and getting re-created)\n // we need to set up a subscription that will update its value the good\n // old-fashioned React way. We are re-using the `unsubscribe` ref from the\n // initial subscription, which should have been vacated by the first time we\n // get here.\n (0,react__rspack_import_1.useEffect)(function() {\n if (!unsubscribe.current) {\n unsubscribe.current = (0,_openmrs_esm_api__rspack_import_0.getSessionStore)().subscribe(function(param) {\n var loaded = param.loaded, newSession = param.session;\n if (loaded) {\n session = newSession;\n setStateSession(newSession);\n }\n });\n }\n return function() {\n if (unsubscribe.current) {\n unsubscribe.current();\n unsubscribe.current = undefined;\n }\n };\n }, []);\n var result = stateSession || session;\n if (!result) {\n if (promise) {\n console.warn('useSession is in an unexpected state. Attempting to recover.');\n throw promise;\n } else {\n throw Error('useSession is in an invalid state.');\n }\n }\n return result;\n}\n/**\n * For testing.\n */ function __cleanup() {\n promise = undefined;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlU2Vzc2lvbi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9kaXN0L3VzZVNlc3Npb24uanM/YzkwOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQVBJICovIGltcG9ydCB7IGdldFNlc3Npb25TdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tYXBpXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmxldCBwcm9taXNlO1xuLyoqXG4gKiBHZXRzIHRoZSBjdXJyZW50IHVzZXIgc2Vzc2lvbiBpbmZvcm1hdGlvbi4gUmV0dXJucyBhbiBvYmplY3Qgd2l0aFxuICogcHJvcGVydHkgYGF1dGhlbnRpY2F0ZWRgID09IGBmYWxzZWAgaWYgdGhlIHVzZXIgaXMgbm90IGxvZ2dlZCBpbi5cbiAqXG4gKiBVc2VzIFN1c3BlbnNlLiBUaGlzIGhvb2sgd2lsbCBhbHdheXMgZWl0aGVyIHJldHVybiBhIFNlc3Npb24gb2JqZWN0XG4gKiBvciB0aHJvdyBmb3IgU3VzcGVuc2UuIEl0IHdpbGwgbmV2ZXIgcmV0dXJuIGBudWxsYC9gdW5kZWZpbmVkYC5cbiAqXG4gKiBAcmV0dXJucyBDdXJyZW50IHVzZXIgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICovIGV4cG9ydCBmdW5jdGlvbiB1c2VTZXNzaW9uKCkge1xuICAgIC8vIFdlIGhhdmUgdHdvIHNlcGFyYXRlIHZhcmlhYmxlcyBmb3IgdGhlIHNlc3Npb24uXG4gICAgLy9cbiAgICAvLyBgc2Vzc2lvbmAgaXMgYSB0ZW1wb3JhcnkgdmFyaWFibGUsIHdoaWNoIHN0YXJ0cyBhcyBgbnVsbGAgZXZlcnkgdGltZSB0aGlzXG4gICAgLy8gaG9vayBpcyBleGVjdXRlZC4gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2UgY2FuIHNldCBhbmQgcmV0dXJuIHRoaXNcbiAgICAvLyB2YXJpYWJsZSBzeW5jaHJvbm91c2x5LCBiZWNhdXNlIGV2ZXJ5IHRpbWUgd2UgYHRocm93YCBmb3IgU3VzcGVuc2UsIHRoaXNcbiAgICAvLyBob29rIHdpbGwgdW5tb3VudCBhbmQgYSBuZXcgaW5zdGFuY2Ugd2lsbCBiZSBjcmVhdGVkLCBkZXN0cm95aW5nIHdoYXRldmVyXG4gICAgLy8gc3RhdGUgZXhpc3RlZC4gVGh1cywgaWYgdGhpcyBob29rIHdlcmUgdG8gdHJ5IHRvIGFsd2F5cyBzZXQgYW5kIHJldHVyblxuICAgIC8vIGBzdGF0ZVNlc3Npb25gLCBpdCB3b3VsZCBjYXVzZSBhbiBpbmZpbml0ZSBsb29wOlxuICAgIC8vICAgMS4gaW5zdGFuY2UgQSBtb3VudHNcbiAgICAvLyAgIDIuIGluc3RhbmNlIEEgcmVjZWl2ZXMgdmFsdWUsIGNhbGxzIGBzZXRTdGF0ZVNlc3Npb25gXG4gICAgLy8gICAzLiBpbnN0YW5jZSBBIHRocm93c1xuICAgIC8vICAgNC4gaW5zdGFuY2UgQSB1bm1vdW50c1xuICAgIC8vICAgNS4gaW5zdGFuY2UgQiBtb3VudHNcbiAgICAvLyAgIC4uLlxuICAgIC8vIFdoYXQgd291bGQgaGFwcGVuIGlmIHdlIG1vdmVkIGBzZXNzaW9uYCB0byB0aGUgbW9kdWxlIHNjb3BlLCBzbyB0aGF0IGl0XG4gICAgLy8gY291bGQgYmUgcmUtdXNlZCBhY3Jvc3MgaW5zdGFuY2VzIG9mIHRoaXMgaG9vaz8gVGhlbiB3ZSB3b3VsZCBoYXZlIG5vIHdheVxuICAgIC8vIHRvIHRlbGwgd2hldGhlciB0aGUgc2Vzc2lvbiB3YXMgZnJlc2guXG4gICAgLy9cbiAgICAvLyBgc3RhdGVTZXNzaW9uYCBpcyBSZWFjdCBzdGF0ZSwgd2hpY2ggaXMgbmVlZGVkIHRvIHVwZGF0ZSBjb21wb25lbnRzIHVzaW5nXG4gICAgLy8gdGhpcyBob29rIHdoZW4gdGhlIHNlc3Npb24gY2hhbmdlcy5cbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHVzZVJlZigpO1xuICAgIGNvbnN0IFtzdGF0ZVNlc3Npb24sIHNldFN0YXRlU2Vzc2lvbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBsZXQgc2Vzc2lvbiA9IG51bGw7XG4gICAgaWYgKCFzdGF0ZVNlc3Npb24pIHtcbiAgICAgICAgaWYgKCFwcm9taXNlKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBoYXZlbid0IGNyZWF0ZWQgYSBwcm9taXNlIHRvIHRocm93IHlldCwgZG8gdGhhdC5cbiAgICAgICAgICAgIC8vIGN1cnJlbnQtdXNlci50cyBoYW5kbGVzIHRoZSBpbml0aWFsIHNlc3Npb24gZmV0Y2ggYXMgc29vbiBhcyBgZ2V0U2Vzc2lvblN0b3JlKClgXG4gICAgICAgICAgICAvLyBpcyBjYWxsZWQuIFdlIGp1c3QgbmVlZCB0byBjYWxsIGl0IGFuZCBzZXQgdXAgYSBsaXN0ZW5lciBmb3Igd2hlbiBzZXNzaW9uIGRhdGFcbiAgICAgICAgICAgIC8vIGlzIGxvYWRlZC4gQXMgc29vbiBhcyB3ZSBoYXZlIHRoZSBpbml0aWFsIHNlc3Npb24gZGF0YSwgd2UgcmVtb3ZlIHRoaXMgaW5pdGlhbFxuICAgICAgICAgICAgLy8gc3RvcmUgc3Vic2NyaXB0aW9uIHNvIHdlIGNhbiBzZXQgdXAgdGhlIFwib25nb2luZ1wiIG9uZSBsYXRlci5cbiAgICAgICAgICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVOZXdTZXNzaW9uID0gKHsgbG9hZGVkLCBzZXNzaW9uOiBuZXdTZXNzaW9uIH0pPT57XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobmV3U2Vzc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uID0gbmV3U2Vzc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bnN1YnNjcmliZS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zdWJzY3JpYmUuY3VycmVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGhhbmRsZU5ld1Nlc3Npb24oZ2V0U2Vzc2lvblN0b3JlKCkuZ2V0U3RhdGUoKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlLmN1cnJlbnQgPSBnZXRTZXNzaW9uU3RvcmUoKS5zdWJzY3JpYmUoaGFuZGxlTmV3U2Vzc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBIb3dldmVyLCBpZiB3ZSBoYXZlIGNyZWF0ZWQgYSBwcm9taXNlIHRvIHRocm93LCBidXQgdGhlcmUncyBubyBgc3RhdGVTZXNzaW9uYFxuICAgICAgICAgICAgLy8geWV0LCB0aGVuIGl0J3MgcHJvYmFibHkganVzdCB0aGlzIGhvb2sncyBmaXJzdCByZW5kZXIuIENoZWNrIHRvIHNlZSBpZlxuICAgICAgICAgICAgLy8gdGhlcmUncyBhbHJlYWR5IGEgc2Vzc2lvbiB0aGF0IHdlIGNhbiByZXR1cm4uXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBnZXRTZXNzaW9uU3RvcmUoKS5nZXRTdGF0ZSgpO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZS5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uID0gY3VycmVudFN0YXRlLnNlc3Npb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHNlc3Npb24gZ290IHNldCBzeW5jaHJvbm91c2x5IGluIHRoZSBhYm92ZSBibG9jaywgdGhlbiB3ZSBjYW4ganVzdFxuICAgICAgICAvLyByZXR1cm4gaXQgcmF0aGVyIHRoYW4gdGhyb3dpbmcuIE90aGVyd2lzZSwgdGhyb3cgZm9yIFN1c3BlbnNlLlxuICAgICAgICBpZiAoc2Vzc2lvbikge1xuICAgICAgICAgICAgc2V0U3RhdGVTZXNzaW9uKHNlc3Npb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgcHJvbWlzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBPbmNlIHRoaXMgaG9vayBpcyBlc3RhYmxpc2hlZCAobm8gbG9uZ2VyIHRocm93aW5nIGFuZCBnZXR0aW5nIHJlLWNyZWF0ZWQpXG4gICAgLy8gd2UgbmVlZCB0byBzZXQgdXAgYSBzdWJzY3JpcHRpb24gdGhhdCB3aWxsIHVwZGF0ZSBpdHMgdmFsdWUgdGhlIGdvb2RcbiAgICAvLyBvbGQtZmFzaGlvbmVkIFJlYWN0IHdheS4gV2UgYXJlIHJlLXVzaW5nIHRoZSBgdW5zdWJzY3JpYmVgIHJlZiBmcm9tIHRoZVxuICAgIC8vIGluaXRpYWwgc3Vic2NyaXB0aW9uLCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIHZhY2F0ZWQgYnkgdGhlIGZpcnN0IHRpbWUgd2VcbiAgICAvLyBnZXQgaGVyZS5cbiAgICB1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKCF1bnN1YnNjcmliZS5jdXJyZW50KSB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZS5jdXJyZW50ID0gZ2V0U2Vzc2lvblN0b3JlKCkuc3Vic2NyaWJlKCh7IGxvYWRlZCwgc2Vzc2lvbjogbmV3U2Vzc2lvbiB9KT0+e1xuICAgICAgICAgICAgICAgIGlmIChsb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5ld1Nlc3Npb247XG4gICAgICAgICAgICAgICAgICAgIHNldFN0YXRlU2Vzc2lvbihuZXdTZXNzaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIGlmICh1bnN1YnNjcmliZS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgdW5zdWJzY3JpYmUuY3VycmVudCgpO1xuICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IHJlc3VsdCA9IHN0YXRlU2Vzc2lvbiB8fCBzZXNzaW9uO1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGlmIChwcm9taXNlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ3VzZVNlc3Npb24gaXMgaW4gYW4gdW5leHBlY3RlZCBzdGF0ZS4gQXR0ZW1wdGluZyB0byByZWNvdmVyLicpO1xuICAgICAgICAgICAgdGhyb3cgcHJvbWlzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCd1c2VTZXNzaW9uIGlzIGluIGFuIGludmFsaWQgc3RhdGUuJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogRm9yIHRlc3RpbmcuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIF9fY2xlYW51cCgpIHtcbiAgICBwcm9taXNlID0gdW5kZWZpbmVkO1xufVxuIl0sIm5hbWVzIjpbImdldFNlc3Npb25TdG9yZSIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwidXNlUmVmIiwicHJvbWlzZSIsInVzZVNlc3Npb24iLCJ1bnN1YnNjcmliZSIsIl91c2VTdGF0ZSIsInN0YXRlU2Vzc2lvbiIsInNldFN0YXRlU2Vzc2lvbiIsInNlc3Npb24iLCJQcm9taXNlIiwicmVzb2x2ZSIsImhhbmRsZU5ld1Nlc3Npb24iLCJsb2FkZWQiLCJuZXdTZXNzaW9uIiwidW5kZWZpbmVkIiwiY3VycmVudFN0YXRlIiwicmVzdWx0IiwiY29uc29sZSIsIkVycm9yIiwiX19jbGVhbnVwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBMEIsR0FBc0Q7QUFDNUI7QUFDcEQsSUFBSUk7QUFDSjs7Ozs7Ozs7Q0FRQyxHQUFVLFNBQVNDO0lBQ2hCLGtEQUFrRDtJQUNsRCxFQUFFO0lBQ0YsNEVBQTRFO0lBQzVFLG9FQUFvRTtJQUNwRSwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLHlFQUF5RTtJQUN6RSxtREFBbUQ7SUFDbkQseUJBQXlCO0lBQ3pCLDBEQUEwRDtJQUMxRCx5QkFBeUI7SUFDekIsMkJBQTJCO0lBQzNCLHlCQUF5QjtJQUN6QixRQUFRO0lBQ1IsMEVBQTBFO0lBQzFFLDRFQUE0RTtJQUM1RSx5Q0FBeUM7SUFDekMsRUFBRTtJQUNGLDRFQUE0RTtJQUM1RSxzQ0FBc0M7SUFDdEMsSUFBTUMsY0FBY0gsaUNBQU1BO0lBQzFCLElBQXdDSSw2QkFBQUEsbUNBQVFBLENBQUMsV0FBMUNDLGVBQWlDRCxjQUFuQkUsa0JBQW1CRjtJQUN4QyxJQUFJRyxVQUFVO0lBQ2QsSUFBSSxDQUFDRixjQUFjO1FBQ2YsSUFBSSxDQUFDSixTQUFTO1lBQ1YseURBQXlEO1lBQ3pELG1GQUFtRjtZQUNuRixpRkFBaUY7WUFDakYsaUZBQWlGO1lBQ2pGLCtEQUErRDtZQUMvREEsVUFBVSxJQUFJTyxRQUFRLFNBQUNDO2dCQUNuQixJQUFNQyxtQkFBbUI7d0JBQUdDLGVBQUFBLFFBQWlCQyxtQkFBVDtvQkFDaEMsSUFBSUQsUUFBUTt3QkFDUkYsUUFBUUc7d0JBQ1JMLFVBQVVLO3dCQUNWLElBQUlULFlBQVksT0FBTyxFQUFFOzRCQUNyQkEsWUFBWSxPQUFPOzRCQUNuQkEsWUFBWSxPQUFPLEdBQUdVO3dCQUMxQjtvQkFDSjtnQkFDSjtnQkFDQUgsaUJBQWlCYixxREFBZUEsR0FBRyxRQUFRO2dCQUMzQyxJQUFJLENBQUNVLFNBQVM7b0JBQ1ZKLFlBQVksT0FBTyxHQUFHTixxREFBZUEsR0FBRyxTQUFTLENBQUNhO2dCQUN0RDtZQUNKO1FBQ0osT0FBTztZQUNILGdGQUFnRjtZQUNoRix5RUFBeUU7WUFDekUsZ0RBQWdEO1lBQ2hELElBQU1JLGVBQWVqQixxREFBZUEsR0FBRyxRQUFRO1lBQy9DLElBQUlpQixhQUFhLE1BQU0sRUFBRTtnQkFDckJQLFVBQVVPLGFBQWEsT0FBTztZQUNsQztRQUNKO1FBQ0EsNEVBQTRFO1FBQzVFLGlFQUFpRTtRQUNqRSxJQUFJUCxTQUFTO1lBQ1RELGdCQUFnQkM7UUFDcEIsT0FBTztZQUNILE1BQU1OO1FBQ1Y7SUFDSjtJQUNBLDRFQUE0RTtJQUM1RSx1RUFBdUU7SUFDdkUsMEVBQTBFO0lBQzFFLDRFQUE0RTtJQUM1RSxZQUFZO0lBQ1pGLG9DQUFTQSxDQUFDO1FBQ04sSUFBSSxDQUFDSSxZQUFZLE9BQU8sRUFBRTtZQUN0QkEsWUFBWSxPQUFPLEdBQUdOLHFEQUFlQSxHQUFHLFNBQVMsQ0FBQztvQkFBR2MsZUFBQUEsUUFBaUJDLG1CQUFUO2dCQUN6RCxJQUFJRCxRQUFRO29CQUNSSixVQUFVSztvQkFDVk4sZ0JBQWdCTTtnQkFDcEI7WUFDSjtRQUNKO1FBQ0EsT0FBTztZQUNILElBQUlULFlBQVksT0FBTyxFQUFFO2dCQUNyQkEsWUFBWSxPQUFPO2dCQUNuQkEsWUFBWSxPQUFPLEdBQUdVO1lBQzFCO1FBQ0o7SUFDSixHQUFHLEVBQUU7SUFDTCxJQUFNRSxTQUFTVixnQkFBZ0JFO0lBQy9CLElBQUksQ0FBQ1EsUUFBUTtRQUNULElBQUlkLFNBQVM7WUFDVGUsUUFBUSxJQUFJLENBQUM7WUFDYixNQUFNZjtRQUNWLE9BQU87WUFDSCxNQUFNZ0IsTUFBTTtRQUNoQjtJQUNKO0lBQ0EsT0FBT0Y7QUFDWDtBQUNBOztDQUVDLEdBQVUsU0FBU0c7SUFDaEJqQixVQUFVWTtBQUNkIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useSession.js\n\n}");
6154
6159
 
6160
+ },
6161
+ "../../framework/esm-react-utils/dist/useShallowStableValue.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
6162
+ "use strict";
6163
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n useShallowStableValue: () => (useShallowStableValue)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var _openmrs_esm_utils__rspack_import_1 = __webpack_require__(\"../../framework/esm-utils/dist/shallowEqual.js\");\n/** @module @category Utility */ \n\n/**\n * Returns `value` with a reference that only changes when its contents do, so that it can be used\n * as a dependency of `useMemo`, `useEffect` and friends.\n *\n * This exists for props that are almost always written as object literals — `state={{ patientUuid }}`\n * — which get a new identity on every render while meaning the same thing. Comparison is shallow,\n * so a value nested more than one level deep still reads as a change.\n *\n * @param value The value to stabilize\n * @returns `value`, or the last value this hook returned if the two are shallowly equal\n */ function useShallowStableValue(value) {\n var stable = (0,react__rspack_import_0.useRef)(value);\n if (!(0,_openmrs_esm_utils__rspack_import_1.shallowEqual)(stable.current, value)) {\n stable.current = value;\n }\n return stable.current;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlU2hhbGxvd1N0YWJsZVZhbHVlLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlU2hhbGxvd1N0YWJsZVZhbHVlLmpzP2JjNWUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFV0aWxpdHkgKi8gaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXV0aWxzXCI7XG4vKipcbiAqIFJldHVybnMgYHZhbHVlYCB3aXRoIGEgcmVmZXJlbmNlIHRoYXQgb25seSBjaGFuZ2VzIHdoZW4gaXRzIGNvbnRlbnRzIGRvLCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkXG4gKiBhcyBhIGRlcGVuZGVuY3kgb2YgYHVzZU1lbW9gLCBgdXNlRWZmZWN0YCBhbmQgZnJpZW5kcy5cbiAqXG4gKiBUaGlzIGV4aXN0cyBmb3IgcHJvcHMgdGhhdCBhcmUgYWxtb3N0IGFsd2F5cyB3cml0dGVuIGFzIG9iamVjdCBsaXRlcmFscyDigJQgYHN0YXRlPXt7IHBhdGllbnRVdWlkIH19YFxuICog4oCUIHdoaWNoIGdldCBhIG5ldyBpZGVudGl0eSBvbiBldmVyeSByZW5kZXIgd2hpbGUgbWVhbmluZyB0aGUgc2FtZSB0aGluZy4gQ29tcGFyaXNvbiBpcyBzaGFsbG93LFxuICogc28gYSB2YWx1ZSBuZXN0ZWQgbW9yZSB0aGFuIG9uZSBsZXZlbCBkZWVwIHN0aWxsIHJlYWRzIGFzIGEgY2hhbmdlLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gc3RhYmlsaXplXG4gKiBAcmV0dXJucyBgdmFsdWVgLCBvciB0aGUgbGFzdCB2YWx1ZSB0aGlzIGhvb2sgcmV0dXJuZWQgaWYgdGhlIHR3byBhcmUgc2hhbGxvd2x5IGVxdWFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVzZVNoYWxsb3dTdGFibGVWYWx1ZSh2YWx1ZSkge1xuICAgIGNvbnN0IHN0YWJsZSA9IHVzZVJlZih2YWx1ZSk7XG4gICAgaWYgKCFzaGFsbG93RXF1YWwoc3RhYmxlLmN1cnJlbnQsIHZhbHVlKSkge1xuICAgICAgICBzdGFibGUuY3VycmVudCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gc3RhYmxlLmN1cnJlbnQ7XG59XG4iXSwibmFtZXMiOlsidXNlUmVmIiwic2hhbGxvd0VxdWFsIiwidXNlU2hhbGxvd1N0YWJsZVZhbHVlIiwidmFsdWUiLCJzdGFibGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSw4QkFBOEIsR0FBa0M7QUFDZDtBQUNsRDs7Ozs7Ozs7OztDQVVDLEdBQVUsU0FBU0Usc0JBQXNCQyxLQUFLO0lBQzNDLElBQU1DLFNBQVNKLGlDQUFNQSxDQUFDRztJQUN0QixJQUFJLENBQUNGLG9EQUFZQSxDQUFDRyxPQUFPLE9BQU8sRUFBRUQsUUFBUTtRQUN0Q0MsT0FBTyxPQUFPLEdBQUdEO0lBQ3JCO0lBQ0EsT0FBT0MsT0FBTyxPQUFPO0FBQ3pCIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useShallowStableValue.js\n\n}");
6164
+
6155
6165
  },
6156
6166
  "../../framework/esm-react-utils/dist/useStore.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
6157
6167
  "use strict";
6158
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n createUseStore: () => (createUseStore),\n useStore: () => (useStore),\n useStoreWithActions: () => (useStoreWithActions)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category Store */ \nfunction bindActions(store, actions) {\n if (typeof actions == 'function') {\n actions = actions(store);\n }\n var bound = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n var _loop = function() {\n var _step_value = _sliced_to_array(_step.value, 2), actionName = _step_value[0], actionFunction = _step_value[1];\n var boundFunction = function boundFunction() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n store.setState(function(state) {\n return actionFunction.apply(void 0, [\n state\n ].concat(_to_consumable_array(args)));\n });\n };\n bound[actionName] = boundFunction;\n };\n for(var _iterator = Object.entries(actions)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();\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 bound;\n}\nvar defaultSelectFunction = function defaultSelectFunction() {\n return function(x) {\n return x;\n };\n};\nfunction useStore(store) {\n var select = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultSelectFunction(), actions = arguments.length > 2 ? arguments[2] : void 0;\n // Use useSyncExternalStore to subscribe synchronously during render\n // This ensures React can properly track all state updates\n var subscribe = (0,react__rspack_import_0.useCallback)(function(callback) {\n return store.subscribe(callback);\n }, [\n store\n ]);\n var getSnapshot = (0,react__rspack_import_0.useCallback)(function() {\n return select(store.getState());\n }, [\n store,\n select\n ]);\n var state = (0,react__rspack_import_0.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);\n var boundActions = (0,react__rspack_import_0.useMemo)(function() {\n return actions ? bindActions(store, actions) : {};\n }, [\n store,\n actions\n ]);\n return _object_spread({}, state, boundActions);\n}\n/**\n *\n * @param store A zustand store\n * @param actions\n * @returns\n */ function useStoreWithActions(store, actions) {\n return useStore(store, defaultSelectFunction(), actions);\n}\n/**\n * Whenever possible, use `useStore(yourStore)` instead. This function is for creating a\n * custom hook for a specific store.\n */ function createUseStore(store) {\n function useStore(actions) {\n var subscribe = (0,react__rspack_import_0.useCallback)(function(callback) {\n return store.subscribe(callback);\n }, []);\n var getSnapshot = (0,react__rspack_import_0.useCallback)(function() {\n return store.getState();\n }, []);\n var state = (0,react__rspack_import_0.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);\n var boundActions = (0,react__rspack_import_0.useMemo)(function() {\n return actions ? bindActions(store, actions) : {};\n }, [\n actions\n ]);\n return _object_spread({}, state, boundActions);\n }\n return useStore;\n}\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlU3RvcmUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC91c2VTdG9yZS5qcz8yMzJkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBTdG9yZSAqLyBpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3luY0V4dGVybmFsU3RvcmUgfSBmcm9tIFwicmVhY3RcIjtcbmZ1bmN0aW9uIGJpbmRBY3Rpb25zKHN0b3JlLCBhY3Rpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBhY3Rpb25zID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgYWN0aW9ucyA9IGFjdGlvbnMoc3RvcmUpO1xuICAgIH1cbiAgICBjb25zdCBib3VuZCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2FjdGlvbk5hbWUsIGFjdGlvbkZ1bmN0aW9uXSBvZiBPYmplY3QuZW50cmllcyhhY3Rpb25zKSl7XG4gICAgICAgIGNvbnN0IGJvdW5kRnVuY3Rpb24gPSBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT57XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbkZ1bmN0aW9uKHN0YXRlLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBib3VuZFthY3Rpb25OYW1lXSA9IGJvdW5kRnVuY3Rpb247XG4gICAgfVxuICAgIHJldHVybiBib3VuZDtcbn1cbmNvbnN0IGRlZmF1bHRTZWxlY3RGdW5jdGlvbiA9ICgpPT4oeCk9Png7XG5mdW5jdGlvbiB1c2VTdG9yZShzdG9yZSwgc2VsZWN0ID0gZGVmYXVsdFNlbGVjdEZ1bmN0aW9uKCksIGFjdGlvbnMpIHtcbiAgICAvLyBVc2UgdXNlU3luY0V4dGVybmFsU3RvcmUgdG8gc3Vic2NyaWJlIHN5bmNocm9ub3VzbHkgZHVyaW5nIHJlbmRlclxuICAgIC8vIFRoaXMgZW5zdXJlcyBSZWFjdCBjYW4gcHJvcGVybHkgdHJhY2sgYWxsIHN0YXRlIHVwZGF0ZXNcbiAgICBjb25zdCBzdWJzY3JpYmUgPSB1c2VDYWxsYmFjaygoY2FsbGJhY2spPT57XG4gICAgICAgIHJldHVybiBzdG9yZS5zdWJzY3JpYmUoY2FsbGJhY2spO1xuICAgIH0sIFtcbiAgICAgICAgc3RvcmVcbiAgICBdKTtcbiAgICBjb25zdCBnZXRTbmFwc2hvdCA9IHVzZUNhbGxiYWNrKCgpPT5zZWxlY3Qoc3RvcmUuZ2V0U3RhdGUoKSksIFtcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIHNlbGVjdFxuICAgIF0pO1xuICAgIGNvbnN0IHN0YXRlID0gdXNlU3luY0V4dGVybmFsU3RvcmUoc3Vic2NyaWJlLCBnZXRTbmFwc2hvdCwgZ2V0U25hcHNob3QpO1xuICAgIGxldCBib3VuZEFjdGlvbnMgPSB1c2VNZW1vKCgpPT5hY3Rpb25zID8gYmluZEFjdGlvbnMoc3RvcmUsIGFjdGlvbnMpIDoge30sIFtcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIGFjdGlvbnNcbiAgICBdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgLi4uYm91bmRBY3Rpb25zXG4gICAgfTtcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSBzdG9yZSBBIHp1c3RhbmQgc3RvcmVcbiAqIEBwYXJhbSBhY3Rpb25zXG4gKiBAcmV0dXJuc1xuICovIGZ1bmN0aW9uIHVzZVN0b3JlV2l0aEFjdGlvbnMoc3RvcmUsIGFjdGlvbnMpIHtcbiAgICByZXR1cm4gdXNlU3RvcmUoc3RvcmUsIGRlZmF1bHRTZWxlY3RGdW5jdGlvbigpLCBhY3Rpb25zKTtcbn1cbi8qKlxuICogV2hlbmV2ZXIgcG9zc2libGUsIHVzZSBgdXNlU3RvcmUoeW91clN0b3JlKWAgaW5zdGVhZC4gVGhpcyBmdW5jdGlvbiBpcyBmb3IgY3JlYXRpbmcgYVxuICogY3VzdG9tIGhvb2sgZm9yIGEgc3BlY2lmaWMgc3RvcmUuXG4gKi8gZnVuY3Rpb24gY3JlYXRlVXNlU3RvcmUoc3RvcmUpIHtcbiAgICBmdW5jdGlvbiB1c2VTdG9yZShhY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmliZSA9IHVzZUNhbGxiYWNrKChjYWxsYmFjayk9PnN0b3JlLnN1YnNjcmliZShjYWxsYmFjayksIFtdKTtcbiAgICAgICAgY29uc3QgZ2V0U25hcHNob3QgPSB1c2VDYWxsYmFjaygoKT0+c3RvcmUuZ2V0U3RhdGUoKSwgW10pO1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlKHN1YnNjcmliZSwgZ2V0U25hcHNob3QsIGdldFNuYXBzaG90KTtcbiAgICAgICAgbGV0IGJvdW5kQWN0aW9ucyA9IHVzZU1lbW8oKCk9PmFjdGlvbnMgPyBiaW5kQWN0aW9ucyhzdG9yZSwgYWN0aW9ucykgOiB7fSwgW1xuICAgICAgICAgICAgYWN0aW9uc1xuICAgICAgICBdKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgLi4uYm91bmRBY3Rpb25zXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB1c2VTdG9yZTtcbn1cbmV4cG9ydCB7IGNyZWF0ZVVzZVN0b3JlLCB1c2VTdG9yZSwgdXNlU3RvcmVXaXRoQWN0aW9ucyB9O1xuIl0sIm5hbWVzIjpbInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsInVzZVN5bmNFeHRlcm5hbFN0b3JlIiwiYmluZEFjdGlvbnMiLCJzdG9yZSIsImFjdGlvbnMiLCJib3VuZCIsIl9pdGVyYXRvckVycm9yIiwiYWN0aW9uTmFtZSIsImFjdGlvbkZ1bmN0aW9uIiwiYm91bmRGdW5jdGlvbiIsIl9rZXkiLCJhcmdzIiwic3RhdGUiLCJPYmplY3QiLCJkZWZhdWx0U2VsZWN0RnVuY3Rpb24iLCJ4IiwidXNlU3RvcmUiLCJzZWxlY3QiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsImdldFNuYXBzaG90IiwiYm91bmRBY3Rpb25zIiwidXNlU3RvcmVXaXRoQWN0aW9ucyIsImNyZWF0ZVVzZVN0b3JlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNEJBQTRCLEdBQXNFO0FBQ2xHLFNBQVNHLFlBQVlDLEtBQUssRUFBRUMsT0FBTztJQUMvQixJQUFJLE9BQU9BLFdBQVcsWUFBWTtRQUM5QkEsVUFBVUEsUUFBUUQ7SUFDdEI7SUFDQSxJQUFNRSxRQUFRLENBQUM7UUFDVkMsa0NBQUFBLDJCQUFBQTs7O1lBQUFBLG1DQUFBQSxpQkFBT0MsNkJBQVlDO1lBQ3BCLElBQU1DLGdCQUFnQjtnQkFBU0MsSUFBQUEsSUFBQUEsT0FBQUEsVUFBQUEsUUFBR0MsT0FBSEQsVUFBQUEsT0FBQUEsT0FBQUEsR0FBQUEsT0FBQUEsTUFBQUE7b0JBQUdDLEtBQUhELFFBQUFBLFNBQUFBLENBQUFBLEtBQU87O2dCQUNsQ1AsTUFBTSxRQUFRLENBQUMsU0FBQ1M7b0JBQ1osT0FBT0oscUJBQUFBLEtBQUFBLEdBQUFBO3dCQUFlSTtxQkFBZSxDQUE5QkosT0FBc0IscUJBQUdHO2dCQUNwQztZQUNKO1lBQ0FOLEtBQUssQ0FBQ0UsV0FBVyxHQUFHRTtRQUN4QjtRQVBBLFFBQUtILFlBQXNDTyxPQUFPLE9BQU8sQ0FBQ1QsNkJBQXJERSxTQUFBQSw2QkFBQUEsUUFBQUEseUJBQUFBOztRQUFBQTtRQUFBQTs7O2lCQUFBQSw2QkFBQUE7Z0JBQUFBOzs7Z0JBQUFBO3NCQUFBQTs7OztJQVFMLE9BQU9EO0FBQ1g7QUFDQSxJQUFNUyx3QkFBd0I7V0FBSSxTQUFDQztlQUFJQTs7O0FBQ3ZDLFNBQVNDLFNBQVNiLEtBQUs7UUFBRWMsU0FBQUEsaUVBQVNILHlCQUF5QlY7SUFDdkQsb0VBQW9FO0lBQ3BFLDBEQUEwRDtJQUMxRCxJQUFNYyxZQUFZbkIsc0NBQVdBLENBQUMsU0FBQ29CO1FBQzNCLE9BQU9oQixNQUFNLFNBQVMsQ0FBQ2dCO0lBQzNCLEdBQUc7UUFDQ2hCO0tBQ0g7SUFDRCxJQUFNaUIsY0FBY3JCLHNDQUFXQSxDQUFDO2VBQUlrQixPQUFPZCxNQUFNLFFBQVE7T0FBSztRQUMxREE7UUFDQWM7S0FDSDtJQUNELElBQU1MLFFBQVFYLCtDQUFvQkEsQ0FBQ2lCLFdBQVdFLGFBQWFBO0lBQzNELElBQUlDLGVBQWVyQixrQ0FBT0EsQ0FBQztlQUFJSSxVQUFVRixZQUFZQyxPQUFPQyxXQUFXLENBQUM7T0FBRztRQUN2RUQ7UUFDQUM7S0FDSDtJQUNELE9BQU8sbUJBQ0FRLE9BQ0FTO0FBRVg7QUFDQTs7Ozs7Q0FLQyxHQUFHLFNBQVNDLG9CQUFvQm5CLEtBQUssRUFBRUMsT0FBTztJQUMzQyxPQUFPWSxTQUFTYixPQUFPVyx5QkFBeUJWO0FBQ3BEO0FBQ0E7OztDQUdDLEdBQUcsU0FBU21CLGVBQWVwQixLQUFLO0lBQzdCLFNBQVNhLFNBQVNaLE9BQU87UUFDckIsSUFBTWMsWUFBWW5CLHNDQUFXQSxDQUFDLFNBQUNvQjttQkFBV2hCLE1BQU0sU0FBUyxDQUFDZ0I7V0FBVyxFQUFFO1FBQ3ZFLElBQU1DLGNBQWNyQixzQ0FBV0EsQ0FBQzttQkFBSUksTUFBTSxRQUFRO1dBQUksRUFBRTtRQUN4RCxJQUFNUyxRQUFRWCwrQ0FBb0JBLENBQUNpQixXQUFXRSxhQUFhQTtRQUMzRCxJQUFJQyxlQUFlckIsa0NBQU9BLENBQUM7bUJBQUlJLFVBQVVGLFlBQVlDLE9BQU9DLFdBQVcsQ0FBQztXQUFHO1lBQ3ZFQTtTQUNIO1FBQ0QsT0FBTyxtQkFDQVEsT0FDQVM7SUFFWDtJQUNBLE9BQU9MO0FBQ1g7QUFDeUQifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useStore.js\n\n}");
6168
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n createUseStore: () => (createUseStore),\n useStore: () => (useStore),\n useStoreWithActions: () => (useStoreWithActions)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\nfunction _array_like_to_array(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 _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterable_to_array_limit(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 _non_iterable_rest() {\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 _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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 _array_like_to_array(o, minLen);\n}\n/** @module @category Store */ \nfunction bindActions(store, actions) {\n if (typeof actions == 'function') {\n actions = actions(store);\n }\n var bound = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n var _loop = function() {\n var _step_value = _sliced_to_array(_step.value, 2), actionName = _step_value[0], actionFunction = _step_value[1];\n var boundFunction = function boundFunction() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n store.setState(function(state) {\n return actionFunction.apply(void 0, [\n state\n ].concat(_to_consumable_array(args)));\n });\n };\n bound[actionName] = boundFunction;\n };\n for(var _iterator = Object.entries(actions)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();\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 bound;\n}\n/**\n * A single shared identity function, rather than one built per call: `getSnapshot` below takes\n * the selector as a dependency, so a fresh default each render would leave it unstable for every\n * caller that doesn't pass a selector of its own.\n */ var identitySelect = function identitySelect(x) {\n return x;\n};\nvar defaultSelectFunction = function defaultSelectFunction() {\n return identitySelect;\n};\nfunction useStore(store) {\n var select = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultSelectFunction(), actions = arguments.length > 2 ? arguments[2] : void 0;\n // Use useSyncExternalStore to subscribe synchronously during render\n // This ensures React can properly track all state updates\n var subscribe = (0,react__rspack_import_0.useCallback)(function(callback) {\n return store.subscribe(callback);\n }, [\n store\n ]);\n var getSnapshot = (0,react__rspack_import_0.useCallback)(function() {\n return select(store.getState());\n }, [\n store,\n select\n ]);\n var state = (0,react__rspack_import_0.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);\n var boundActions = (0,react__rspack_import_0.useMemo)(function() {\n return actions ? bindActions(store, actions) : null;\n }, [\n store,\n actions\n ]);\n // Returned as-is when there are no actions to merge in, so the reference stays stable for as\n // long as the selected value does. That value is not a copy — it is whatever the selector\n // returned, usually the store's own state.\n return (0,react__rspack_import_0.useMemo)(function() {\n return boundActions ? _object_spread({}, state, boundActions) : state;\n }, [\n state,\n boundActions\n ]);\n}\n/**\n *\n * @param store A zustand store\n * @param actions\n * @returns\n */ function useStoreWithActions(store, actions) {\n return useStore(store, defaultSelectFunction(), actions);\n}\n/**\n * Whenever possible, use `useStore(yourStore)` instead. This function is for creating a\n * custom hook for a specific store.\n */ function createUseStore(store) {\n function useStore(actions) {\n var subscribe = (0,react__rspack_import_0.useCallback)(function(callback) {\n return store.subscribe(callback);\n }, []);\n var getSnapshot = (0,react__rspack_import_0.useCallback)(function() {\n return store.getState();\n }, []);\n var state = (0,react__rspack_import_0.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);\n var boundActions = (0,react__rspack_import_0.useMemo)(function() {\n return actions ? bindActions(store, actions) : null;\n }, [\n actions\n ]);\n return (0,react__rspack_import_0.useMemo)(function() {\n return boundActions ? _object_spread({}, state, boundActions) : state;\n }, [\n state,\n boundActions\n ]);\n }\n return useStore;\n}\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL2Rpc3QvdXNlU3RvcmUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvZGlzdC91c2VTdG9yZS5qcz8yMzJkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBTdG9yZSAqLyBpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3luY0V4dGVybmFsU3RvcmUgfSBmcm9tIFwicmVhY3RcIjtcbmZ1bmN0aW9uIGJpbmRBY3Rpb25zKHN0b3JlLCBhY3Rpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBhY3Rpb25zID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgYWN0aW9ucyA9IGFjdGlvbnMoc3RvcmUpO1xuICAgIH1cbiAgICBjb25zdCBib3VuZCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2FjdGlvbk5hbWUsIGFjdGlvbkZ1bmN0aW9uXSBvZiBPYmplY3QuZW50cmllcyhhY3Rpb25zKSl7XG4gICAgICAgIGNvbnN0IGJvdW5kRnVuY3Rpb24gPSBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT57XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbkZ1bmN0aW9uKHN0YXRlLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBib3VuZFthY3Rpb25OYW1lXSA9IGJvdW5kRnVuY3Rpb247XG4gICAgfVxuICAgIHJldHVybiBib3VuZDtcbn1cbi8qKlxuICogQSBzaW5nbGUgc2hhcmVkIGlkZW50aXR5IGZ1bmN0aW9uLCByYXRoZXIgdGhhbiBvbmUgYnVpbHQgcGVyIGNhbGw6IGBnZXRTbmFwc2hvdGAgYmVsb3cgdGFrZXNcbiAqIHRoZSBzZWxlY3RvciBhcyBhIGRlcGVuZGVuY3ksIHNvIGEgZnJlc2ggZGVmYXVsdCBlYWNoIHJlbmRlciB3b3VsZCBsZWF2ZSBpdCB1bnN0YWJsZSBmb3IgZXZlcnlcbiAqIGNhbGxlciB0aGF0IGRvZXNuJ3QgcGFzcyBhIHNlbGVjdG9yIG9mIGl0cyBvd24uXG4gKi8gY29uc3QgaWRlbnRpdHlTZWxlY3QgPSAoeCk9Png7XG5jb25zdCBkZWZhdWx0U2VsZWN0RnVuY3Rpb24gPSAoKT0+aWRlbnRpdHlTZWxlY3Q7XG5mdW5jdGlvbiB1c2VTdG9yZShzdG9yZSwgc2VsZWN0ID0gZGVmYXVsdFNlbGVjdEZ1bmN0aW9uKCksIGFjdGlvbnMpIHtcbiAgICAvLyBVc2UgdXNlU3luY0V4dGVybmFsU3RvcmUgdG8gc3Vic2NyaWJlIHN5bmNocm9ub3VzbHkgZHVyaW5nIHJlbmRlclxuICAgIC8vIFRoaXMgZW5zdXJlcyBSZWFjdCBjYW4gcHJvcGVybHkgdHJhY2sgYWxsIHN0YXRlIHVwZGF0ZXNcbiAgICBjb25zdCBzdWJzY3JpYmUgPSB1c2VDYWxsYmFjaygoY2FsbGJhY2spPT57XG4gICAgICAgIHJldHVybiBzdG9yZS5zdWJzY3JpYmUoY2FsbGJhY2spO1xuICAgIH0sIFtcbiAgICAgICAgc3RvcmVcbiAgICBdKTtcbiAgICBjb25zdCBnZXRTbmFwc2hvdCA9IHVzZUNhbGxiYWNrKCgpPT5zZWxlY3Qoc3RvcmUuZ2V0U3RhdGUoKSksIFtcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIHNlbGVjdFxuICAgIF0pO1xuICAgIGNvbnN0IHN0YXRlID0gdXNlU3luY0V4dGVybmFsU3RvcmUoc3Vic2NyaWJlLCBnZXRTbmFwc2hvdCwgZ2V0U25hcHNob3QpO1xuICAgIGxldCBib3VuZEFjdGlvbnMgPSB1c2VNZW1vKCgpPT5hY3Rpb25zID8gYmluZEFjdGlvbnMoc3RvcmUsIGFjdGlvbnMpIDogbnVsbCwgW1xuICAgICAgICBzdG9yZSxcbiAgICAgICAgYWN0aW9uc1xuICAgIF0pO1xuICAgIC8vIFJldHVybmVkIGFzLWlzIHdoZW4gdGhlcmUgYXJlIG5vIGFjdGlvbnMgdG8gbWVyZ2UgaW4sIHNvIHRoZSByZWZlcmVuY2Ugc3RheXMgc3RhYmxlIGZvciBhc1xuICAgIC8vIGxvbmcgYXMgdGhlIHNlbGVjdGVkIHZhbHVlIGRvZXMuIFRoYXQgdmFsdWUgaXMgbm90IGEgY29weSDigJQgaXQgaXMgd2hhdGV2ZXIgdGhlIHNlbGVjdG9yXG4gICAgLy8gcmV0dXJuZWQsIHVzdWFsbHkgdGhlIHN0b3JlJ3Mgb3duIHN0YXRlLlxuICAgIHJldHVybiB1c2VNZW1vKCgpPT5ib3VuZEFjdGlvbnMgPyB7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIC4uLmJvdW5kQWN0aW9uc1xuICAgICAgICB9IDogc3RhdGUsIFtcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIGJvdW5kQWN0aW9uc1xuICAgIF0pO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHN0b3JlIEEgenVzdGFuZCBzdG9yZVxuICogQHBhcmFtIGFjdGlvbnNcbiAqIEByZXR1cm5zXG4gKi8gZnVuY3Rpb24gdXNlU3RvcmVXaXRoQWN0aW9ucyhzdG9yZSwgYWN0aW9ucykge1xuICAgIHJldHVybiB1c2VTdG9yZShzdG9yZSwgZGVmYXVsdFNlbGVjdEZ1bmN0aW9uKCksIGFjdGlvbnMpO1xufVxuLyoqXG4gKiBXaGVuZXZlciBwb3NzaWJsZSwgdXNlIGB1c2VTdG9yZSh5b3VyU3RvcmUpYCBpbnN0ZWFkLiBUaGlzIGZ1bmN0aW9uIGlzIGZvciBjcmVhdGluZyBhXG4gKiBjdXN0b20gaG9vayBmb3IgYSBzcGVjaWZpYyBzdG9yZS5cbiAqLyBmdW5jdGlvbiBjcmVhdGVVc2VTdG9yZShzdG9yZSkge1xuICAgIGZ1bmN0aW9uIHVzZVN0b3JlKGFjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc3Vic2NyaWJlID0gdXNlQ2FsbGJhY2soKGNhbGxiYWNrKT0+c3RvcmUuc3Vic2NyaWJlKGNhbGxiYWNrKSwgW10pO1xuICAgICAgICBjb25zdCBnZXRTbmFwc2hvdCA9IHVzZUNhbGxiYWNrKCgpPT5zdG9yZS5nZXRTdGF0ZSgpLCBbXSk7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdXNlU3luY0V4dGVybmFsU3RvcmUoc3Vic2NyaWJlLCBnZXRTbmFwc2hvdCwgZ2V0U25hcHNob3QpO1xuICAgICAgICBsZXQgYm91bmRBY3Rpb25zID0gdXNlTWVtbygoKT0+YWN0aW9ucyA/IGJpbmRBY3Rpb25zKHN0b3JlLCBhY3Rpb25zKSA6IG51bGwsIFtcbiAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiB1c2VNZW1vKCgpPT5ib3VuZEFjdGlvbnMgPyB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgLi4uYm91bmRBY3Rpb25zXG4gICAgICAgICAgICB9IDogc3RhdGUsIFtcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgYm91bmRBY3Rpb25zXG4gICAgICAgIF0pO1xuICAgIH1cbiAgICByZXR1cm4gdXNlU3RvcmU7XG59XG5leHBvcnQgeyBjcmVhdGVVc2VTdG9yZSwgdXNlU3RvcmUsIHVzZVN0b3JlV2l0aEFjdGlvbnMgfTtcbiJdLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTeW5jRXh0ZXJuYWxTdG9yZSIsImJpbmRBY3Rpb25zIiwic3RvcmUiLCJhY3Rpb25zIiwiYm91bmQiLCJfaXRlcmF0b3JFcnJvciIsImFjdGlvbk5hbWUiLCJhY3Rpb25GdW5jdGlvbiIsImJvdW5kRnVuY3Rpb24iLCJfa2V5IiwiYXJncyIsInN0YXRlIiwiT2JqZWN0IiwiaWRlbnRpdHlTZWxlY3QiLCJ4IiwiZGVmYXVsdFNlbGVjdEZ1bmN0aW9uIiwidXNlU3RvcmUiLCJzZWxlY3QiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsImdldFNuYXBzaG90IiwiYm91bmRBY3Rpb25zIiwidXNlU3Rv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\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/dist/useStore.js\n\n}");
6159
6169
 
6160
6170
  },
6161
6171
  "../../framework/esm-react-utils/dist/useVisit.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
@@ -6200,7 +6210,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
6200
6210
  },
6201
6211
  "../../framework/esm-routes/dist/loaders/pages.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
6202
6212
  "use strict";
6203
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n finishRegisteringAllApps: () => (finishRegisteringAllApps),\n registerApp: () => (registerApp)\n});\n/* import */ var single_spa__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/single-spa/single-spa\");\n/* import */ var single_spa__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(single_spa__rspack_import_0);\n/* import */ var _openmrs_esm_config__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/index.js\");\n/* import */ var _openmrs_esm_feature_flags__rspack_import_2 = __webpack_require__(\"../../framework/esm-feature-flags/dist/index.js\");\n/* import */ var _helpers_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-routes/dist/loaders/helpers.js\");\n/* import */ var _components_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-routes/dist/loaders/components.js\");\n/* import */ var _load_lifecycles_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-routes/dist/loaders/load-lifecycles.js\");\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\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}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\n\n\n\n\n\n\n// this is the global holder of all pages registered in the app\nvar pages = [];\n/**\n * This takes a page's route definitions and returns a single-spa\n * activityFn which returns true when the page matches the current\n * route and false if it does not.\n *\n * @param route A string or regexp that matches the location when the\n * page should be displayed, a boolean constant, or an array of such\n * strings, regexps, and booleans\n * @returns An activityFn suitable to use for a single-spa application\n */ function getActivityFn(route) {\n if (Array.isArray(route)) {\n var activators = route.map(getActivityFn);\n return function(location) {\n return activators.some(function(activator) {\n return activator(location);\n });\n };\n } else if (typeof route === 'string') {\n return (0,single_spa__rspack_import_0.pathToActiveWhen)(window.getOpenmrsSpaBase() + route);\n } else if (_instanceof(route, RegExp)) {\n return function(location) {\n return (0,_helpers_js__rspack_import_3.routeRegex)(route, location);\n };\n } else {\n return function() {\n return route;\n };\n }\n}\n/**\n * For pages, we also add support for rendered them based on online and offline mode as well as\n * any feature flags.\n *\n * By default, we assume that all pages should be rendered when online, but only rendered\n * offline if specifically configured to do so.\n *\n * @param activityFn A standard single-spa activityFn such as that returned by {@link getActivityFn()}\n * @param pageDefinition The RegisteredPageDefinition object for this page\n * @returns An activityFn suitable to use for a single-spa application\n */ function wrapPageActivityFn(activityFn, param) {\n var online = param.online, offline = param.offline, featureFlag = param.featureFlag;\n if (window.offlineEnabled) {\n return function(location) {\n // basically, if the page should only work online and we're offline or if the\n // page should only work offline and we're online, defaulting to always rendering\n // the page\n if (!(navigator.onLine && (online !== null && online !== void 0 ? online : true) || !navigator.onLine && (offline !== null && offline !== void 0 ? offline : false))) {\n return false;\n }\n if (featureFlag) {\n if (!(0,_openmrs_esm_feature_flags__rspack_import_2.getFeatureFlag)(featureFlag)) {\n return false;\n }\n }\n return activityFn(location);\n };\n } else {\n return activityFn;\n }\n}\n/**\n * This is the main entry-point for registering an app with the app shell.\n * Each app has a name and should have a `routes.json` file that defines it's\n * associated routes.\n *\n * @param appName The name of the application, e.g. `@openmrs/esm-my-app`\n * @param routes A Javascript object that corresponds to the app's routes.json`\n * definition.\n */ function registerApp(appName, routes) {\n if (appName && routes && (typeof routes === \"undefined\" ? \"undefined\" : _type_of(routes)) === 'object') {\n var _routes_extensions, _routes_modals, _routes_workspaces, _routes_workspaceGroups, _routes_featureFlags, _routes_workspaceGroups2, _routes_workspaceWindows2, _routes_workspaces2;\n var _routes_pages;\n (0,_openmrs_esm_config__rspack_import_1.registerModuleWithConfigSystem)(appName);\n var availableExtensions = (_routes_extensions = routes.extensions) !== null && _routes_extensions !== void 0 ? _routes_extensions : [];\n var availableModals = (_routes_modals = routes.modals) !== null && _routes_modals !== void 0 ? _routes_modals : [];\n var availableWorkspaces = (_routes_workspaces = routes.workspaces) !== null && _routes_workspaces !== void 0 ? _routes_workspaces : [];\n var availableWorkspaceGroups = (_routes_workspaceGroups = routes.workspaceGroups) !== null && _routes_workspaceGroups !== void 0 ? _routes_workspaceGroups : [];\n var availableFeatureFlags = (_routes_featureFlags = routes.featureFlags) !== null && _routes_featureFlags !== void 0 ? _routes_featureFlags : [];\n var availableWorkspaceGroups2 = (_routes_workspaceGroups2 = routes.workspaceGroups2) !== null && _routes_workspaceGroups2 !== void 0 ? _routes_workspaceGroups2 : [];\n var availableWorkspaceWindows2 = (_routes_workspaceWindows2 = routes.workspaceWindows2) !== null && _routes_workspaceWindows2 !== void 0 ? _routes_workspaceWindows2 : [];\n var availableWorkspaces2 = (_routes_workspaces2 = routes.workspaces2) !== null && _routes_workspaces2 !== void 0 ? _routes_workspaces2 : [];\n (_routes_pages = routes.pages) === null || _routes_pages === void 0 ? void 0 : _routes_pages.forEach(function(p) {\n if (p && (typeof p === \"undefined\" ? \"undefined\" : _type_of(p)) === 'object' && Object.hasOwn(p, 'component') && (Object.hasOwn(p, 'route') || Object.hasOwn(p, 'routeRegex') || Object.hasOwn(p, 'routes'))) {\n pages.push(_object_spread_props(_object_spread({}, p), {\n appName: appName\n }));\n } else {\n console.warn(\"A page for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), p);\n }\n });\n availableExtensions.forEach(function(ext) {\n if (ext && (typeof ext === \"undefined\" ? \"undefined\" : _type_of(ext)) === 'object' && Object.hasOwn(ext, 'name') && Object.hasOwn(ext, 'component')) {\n (0,_components_js__rspack_import_4.tryRegisterExtension)(appName, ext);\n } else {\n console.warn(\"An extension for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), ext);\n }\n });\n availableModals.forEach(function(modal) {\n if (modal && (typeof modal === \"undefined\" ? \"undefined\" : _type_of(modal)) === 'object' && Object.hasOwn(modal, 'name') && Object.hasOwn(modal, 'component')) {\n (0,_components_js__rspack_import_4.tryRegisterModal)(appName, modal);\n } else {\n console.warn(\"A modal for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), modal);\n }\n });\n availableWorkspaces.forEach(function(workspace) {\n if (workspace && (typeof workspace === \"undefined\" ? \"undefined\" : _type_of(workspace)) === 'object' && Object.hasOwn(workspace, 'name') && Object.hasOwn(workspace, 'component')) {\n (0,_components_js__rspack_import_4.tryRegisterWorkspace)(appName, workspace);\n } else {\n console.warn(\"A workspace for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), workspace);\n }\n });\n availableWorkspaceGroups.forEach(function(workspaceGroup) {\n if (workspaceGroup && (typeof workspaceGroup === \"undefined\" ? \"undefined\" : _type_of(workspaceGroup)) === 'object' && Object.hasOwn(workspaceGroup, 'name')) {\n (0,_components_js__rspack_import_4.tryRegisterWorkspaceGroup)(appName, workspaceGroup);\n } else {\n console.warn(\"A workspace group for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), workspaceGroup);\n }\n });\n (0,_components_js__rspack_import_4.tryRegisterWorkspaceGroups2)(appName, availableWorkspaceGroups2);\n (0,_components_js__rspack_import_4.tryRegisterWorkspaceWindows2)(appName, availableWorkspaceWindows2);\n (0,_components_js__rspack_import_4.tryRegisterWorkspace2)(appName, availableWorkspaces2);\n availableFeatureFlags.forEach(function(featureFlag) {\n if (featureFlag && (typeof featureFlag === \"undefined\" ? \"undefined\" : _type_of(featureFlag)) === 'object' && Object.hasOwn(featureFlag, 'flagName')) {\n (0,_components_js__rspack_import_4.tryRegisterFeatureFlag)(appName, featureFlag);\n } else {\n console.warn(\"A feature flag for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), featureFlag);\n }\n });\n }\n}\n/**\n * This is called by the app shell once all route entries have been processed.\n * This registers the pages with the application, and creates the root div\n * for each page in the DOM element specified by the page's containerDomId.\n */ function finishRegisteringAllApps() {\n pages.sort(function(a, b) {\n return a.appName.localeCompare(b.appName, 'en');\n });\n // Create a div for each page, unless the DOM already contains the div with\n // the expected id for the page to be mounted on. See:\n // https://single-spa.js.org/docs/configuration/#two-registered-applications-simultaneously\n // The div is put inside the DOM element specified by the page's containerDomId.\n // If we don't do this, Single-SPA 5 will create the DOM element only once\n // the page becomes active, at the end of <body>.\n var appIndices = new Map();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = pages[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var page = _step.value;\n var _page_containerDomId;\n if (!appIndices.has(page.appName)) {\n appIndices.set(page.appName, 0);\n } else {\n appIndices.set(page.appName, appIndices.get(page.appName) + 1);\n }\n var index = appIndices.get(page.appName);\n var name = \"\".concat(page.appName, \"-page-\").concat(index);\n var containerDomId = (_page_containerDomId = page.containerDomId) !== null && _page_containerDomId !== void 0 ? _page_containerDomId : 'omrs-apps-container';\n var containerDiv = document.getElementById(containerDomId);\n var appDomRootId = \"single-spa-application:\".concat(name);\n if (containerDiv) {\n var div = document.createElement('div');\n div.id = appDomRootId;\n containerDiv === null || containerDiv === void 0 ? void 0 : containerDiv.appendChild(div);\n } else {\n throw new Error(\"\".concat(page.appName, \" \").concat(page.component, ' cannot be mounted to \"').concat(containerDomId, '\"; DOM element does not exist.'));\n }\n tryRegisterPage(name, page);\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}\n/**\n * This function converts each page definition into a single-spa application\n * if that's possible. After this point, pages are rendered using single-spa's\n * routing logic.\n *\n * @param appName The name of the app containing this page\n * @param page An object that describes the page, derived from `routes.json`\n */ function tryRegisterPage(appName, page) {\n var route = typeof page.route !== 'undefined' ? page.route : typeof page.routeRegex !== 'undefined' ? new RegExp(page.routeRegex) : false;\n if (route === false) {\n console.warn('A registered page definition is missing a route and thus cannot be registered.\\nTo fix this, ensure that you define the \"route\" (or alternatively the \"routeRegex\") field inside the extension definition.', appName);\n return;\n }\n if (!page.component) {\n console.warn('A registered page definition is missing a component and thus cannot be registered.\\nTo fix this, ensure that you define the \"component\" field inside the page definition.', appName);\n return;\n }\n var activityFn = wrapPageActivityFn(getActivityFn(route), page);\n var loader = function loader() {\n return (0,_load_lifecycles_js__rspack_import_5.loadLifeCycles)(page.appName, page.component);\n };\n (0,single_spa__rspack_import_0.registerApplication)(appName, loader, activityFn);\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJvdXRlcy9kaXN0L2xvYWRlcnMvcGFnZXMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcm91dGVzL2Rpc3QvbG9hZGVycy9wYWdlcy5qcz9hN2MzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhdGhUb0FjdGl2ZVdoZW4sIHJlZ2lzdGVyQXBwbGljYXRpb24gfSBmcm9tIFwic2luZ2xlLXNwYVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJNb2R1bGVXaXRoQ29uZmlnU3lzdGVtIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1jb25maWdcIjtcbmltcG9ydCB7IGdldEZlYXR1cmVGbGFnIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1mZWF0dXJlLWZsYWdzXCI7XG5pbXBvcnQgeyByb3V0ZVJlZ2V4IH0gZnJvbSBcIi4vaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgdHJ5UmVnaXN0ZXJFeHRlbnNpb24sIHRyeVJlZ2lzdGVyRmVhdHVyZUZsYWcsIHRyeVJlZ2lzdGVyTW9kYWwsIHRyeVJlZ2lzdGVyV29ya3NwYWNlLCB0cnlSZWdpc3RlcldvcmtzcGFjZTIsIHRyeVJlZ2lzdGVyV29ya3NwYWNlR3JvdXAsIHRyeVJlZ2lzdGVyV29ya3NwYWNlR3JvdXBzMiwgdHJ5UmVnaXN0ZXJXb3Jrc3BhY2VXaW5kb3dzMiB9IGZyb20gXCIuL2NvbXBvbmVudHMuanNcIjtcbmltcG9ydCB7IGxvYWRMaWZlQ3ljbGVzIH0gZnJvbSBcIi4vbG9hZC1saWZlY3ljbGVzLmpzXCI7XG4vLyB0aGlzIGlzIHRoZSBnbG9iYWwgaG9sZGVyIG9mIGFsbCBwYWdlcyByZWdpc3RlcmVkIGluIHRoZSBhcHBcbmNvbnN0IHBhZ2VzID0gW107XG4vKipcbiAqIFRoaXMgdGFrZXMgYSBwYWdlJ3Mgcm91dGUgZGVmaW5pdGlvbnMgYW5kIHJldHVybnMgYSBzaW5nbGUtc3BhXG4gKiBhY3Rpdml0eUZuIHdoaWNoIHJldHVybnMgdHJ1ZSB3aGVuIHRoZSBwYWdlIG1hdGNoZXMgdGhlIGN1cnJlbnRcbiAqIHJvdXRlIGFuZCBmYWxzZSBpZiBpdCBkb2VzIG5vdC5cbiAqXG4gKiBAcGFyYW0gcm91dGUgQSBzdHJpbmcgb3IgcmVnZXhwIHRoYXQgbWF0Y2hlcyB0aGUgbG9jYXRpb24gd2hlbiB0aGVcbiAqIHBhZ2Ugc2hvdWxkIGJlIGRpc3BsYXllZCwgYSBib29sZWFuIGNvbnN0YW50LCBvciBhbiBhcnJheSBvZiBzdWNoXG4gKiBzdHJpbmdzLCByZWdleHBzLCBhbmQgYm9vbGVhbnNcbiAqIEByZXR1cm5zIEFuIGFjdGl2aXR5Rm4gc3VpdGFibGUgdG8gdXNlIGZvciBhIHNpbmdsZS1zcGEgYXBwbGljYXRpb25cbiAqLyBmdW5jdGlvbiBnZXRBY3Rpdml0eUZuKHJvdXRlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocm91dGUpKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2YXRvcnMgPSByb3V0ZS5tYXAoZ2V0QWN0aXZpdHlGbik7XG4gICAgICAgIHJldHVybiAobG9jYXRpb24pPT5hY3RpdmF0b3JzLnNvbWUoKGFjdGl2YXRvcik9PmFjdGl2YXRvcihsb2NhdGlvbikpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJvdXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcGF0aFRvQWN0aXZlV2hlbih3aW5kb3cuZ2V0T3Blbm1yc1NwYUJhc2UoKSArIHJvdXRlKTtcbiAgICB9IGVsc2UgaWYgKHJvdXRlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIHJldHVybiAobG9jYXRpb24pPT5yb3V0ZVJlZ2V4KHJvdXRlLCBsb2NhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICgpPT5yb3V0ZTtcbiAgICB9XG59XG4vKipcbiAqIEZvciBwYWdlcywgd2UgYWxzbyBhZGQgc3VwcG9ydCBmb3IgcmVuZGVyZWQgdGhlbSBiYXNlZCBvbiBvbmxpbmUgYW5kIG9mZmxpbmUgbW9kZSBhcyB3ZWxsIGFzXG4gKiBhbnkgZmVhdHVyZSBmbGFncy5cbiAqXG4gKiBCeSBkZWZhdWx0LCB3ZSBhc3N1bWUgdGhhdCBhbGwgcGFnZXMgc2hvdWxkIGJlIHJlbmRlcmVkIHdoZW4gb25saW5lLCBidXQgb25seSByZW5kZXJlZFxuICogb2ZmbGluZSBpZiBzcGVjaWZpY2FsbHkgY29uZmlndXJlZCB0byBkbyBzby5cbiAqXG4gKiBAcGFyYW0gYWN0aXZpdHlGbiBBIHN0YW5kYXJkIHNpbmdsZS1zcGEgYWN0aXZpdHlGbiBzdWNoIGFzIHRoYXQgcmV0dXJuZWQgYnkge0BsaW5rIGdldEFjdGl2aXR5Rm4oKX1cbiAqIEBwYXJhbSBwYWdlRGVmaW5pdGlvbiBUaGUgUmVnaXN0ZXJlZFBhZ2VEZWZpbml0aW9uIG9iamVjdCBmb3IgdGhpcyBwYWdlXG4gKiBAcmV0dXJucyBBbiBhY3Rpdml0eUZuIHN1aXRhYmxlIHRvIHVzZSBmb3IgYSBzaW5nbGUtc3BhIGFwcGxpY2F0aW9uXG4gKi8gZnVuY3Rpb24gd3JhcFBhZ2VBY3Rpdml0eUZuKGFjdGl2aXR5Rm4sIHsgb25saW5lLCBvZmZsaW5lLCBmZWF0dXJlRmxhZyB9KSB7XG4gICAgaWYgKHdpbmRvdy5vZmZsaW5lRW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gKGxvY2F0aW9uKT0+e1xuICAgICAgICAgICAgLy8gYmFzaWNhbGx5LCBpZiB0aGUgcGFnZSBzaG91bGQgb25seSB3b3JrIG9ubGluZSBhbmQgd2UncmUgb2ZmbGluZSBvciBpZiB0aGVcbiAgICAgICAgICAgIC8vIHBhZ2Ugc2hvdWxkIG9ubHkgd29yayBvZmZsaW5lIGFuZCB3ZSdyZSBvbmxpbmUsIGRlZmF1bHRpbmcgdG8gYWx3YXlzIHJlbmRlcmluZ1xuICAgICAgICAgICAgLy8gdGhlIHBhZ2VcbiAgICAgICAgICAgIGlmICghKG5hdmlnYXRvci5vbkxpbmUgJiYgKG9ubGluZSA/PyB0cnVlKSB8fCAhbmF2aWdhdG9yLm9uTGluZSAmJiAob2ZmbGluZSA/PyBmYWxzZSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZlYXR1cmVGbGFnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFnZXRGZWF0dXJlRmxhZyhmZWF0dXJlRmxhZykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY3Rpdml0eUZuKGxvY2F0aW9uKTtcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYWN0aXZpdHlGbjtcbiAgICB9XG59XG4vKipcbiAqIFRoaXMgaXMgdGhlIG1haW4gZW50cnktcG9pbnQgZm9yIHJlZ2lzdGVyaW5nIGFuIGFwcCB3aXRoIHRoZSBhcHAgc2hlbGwuXG4gKiBFYWNoIGFwcCBoYXMgYSBuYW1lIGFuZCBzaG91bGQgaGF2ZSBhIGByb3V0ZXMuanNvbmAgZmlsZSB0aGF0IGRlZmluZXMgaXQnc1xuICogYXNzb2NpYXRlZCByb3V0ZXMuXG4gKlxuICogQHBhcmFtIGFwcE5hbWUgVGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uLCBlLmcuIGBAb3Blbm1ycy9lc20tbXktYXBwYFxuICogQHBhcmFtIHJvdXRlcyBBIEphdmFzY3JpcHQgb2JqZWN0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGFwcCdzICByb3V0ZXMuanNvbmBcbiAqIGRlZmluaXRpb24uXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQXBwKGFwcE5hbWUsIHJvdXRlcykge1xuICAgIGlmIChhcHBOYW1lICYmIHJvdXRlcyAmJiB0eXBlb2Ygcm91dGVzID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZWdpc3Rlck1vZHVsZVdpdGhDb25maWdTeXN0ZW0oYXBwTmFtZSk7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZUV4dGVuc2lvbnMgPSByb3V0ZXMuZXh0ZW5zaW9ucyA/PyBbXTtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlTW9kYWxzID0gcm91dGVzLm1vZGFscyA/PyBbXTtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlV29ya3NwYWNlcyA9IHJvdXRlcy53b3Jrc3BhY2VzID8/IFtdO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVXb3Jrc3BhY2VHcm91cHMgPSByb3V0ZXMud29ya3NwYWNlR3JvdXBzID8/IFtdO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVGZWF0dXJlRmxhZ3MgPSByb3V0ZXMuZmVhdHVyZUZsYWdzID8/IFtdO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVXb3Jrc3BhY2VHcm91cHMyID0gcm91dGVzLndvcmtzcGFjZUdyb3VwczIgPz8gW107XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZVdvcmtzcGFjZVdpbmRvd3MyID0gcm91dGVzLndvcmtzcGFjZVdpbmRvd3MyID8/IFtdO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVXb3Jrc3BhY2VzMiA9IHJvdXRlcy53b3Jrc3BhY2VzMiA/PyBbXTtcbiAgICAgICAgcm91dGVzLnBhZ2VzPy5mb3JFYWNoKChwKT0+e1xuICAgICAgICAgICAgaWYgKHAgJiYgdHlwZW9mIHAgPT09ICdvYmplY3QnICYmIE9iamVjdC5oYXNPd24ocCwgJ2NvbXBvbmVudCcpICYmIChPYmplY3QuaGFzT3duKHAsICdyb3V0ZScpIHx8IE9iamVjdC5oYXNPd24ocCwgJ3JvdXRlUmVnZXgnKSB8fCBPYmplY3QuaGFzT3duKHAsICdyb3V0ZXMnKSkpIHtcbiAgICAgICAgICAgICAgICBwYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucCxcbiAgICAgICAgICAgICAgICAgICAgYXBwTmFtZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEEgcGFnZSBmb3IgJHthcHBOYW1lfSBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZCBhcyBpdCBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydGllc2AsIHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYXZhaWxhYmxlRXh0ZW5zaW9ucy5mb3JFYWNoKChleHQpPT57XG4gICAgICAgICAgICBpZiAoZXh0ICYmIHR5cGVvZiBleHQgPT09ICdvYmplY3QnICYmIE9iamVjdC5oYXNPd24oZXh0LCAnbmFtZScpICYmIE9iamVjdC5oYXNPd24oZXh0LCAnY29tcG9uZW50JykpIHtcbiAgICAgICAgICAgICAgICB0cnlSZWdpc3RlckV4dGVuc2lvbihhcHBOYW1lLCBleHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEFuIGV4dGVuc2lvbiBmb3IgJHthcHBOYW1lfSBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZCBhcyBpdCBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydGllc2AsIGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBhdmFpbGFibGVNb2RhbHMuZm9yRWFjaCgobW9kYWwpPT57XG4gICAgICAgICAgICBpZiAobW9kYWwgJiYgdHlwZW9mIG1vZGFsID09PSAnb2JqZWN0JyAmJiBPYmplY3QuaGFzT3duKG1vZGFsLCAnbmFtZScpICYmIE9iamVjdC5oYXNPd24obW9kYWwsICdjb21wb25lbnQnKSkge1xuICAgICAgICAgICAgICAgIHRyeVJlZ2lzdGVyTW9kYWwoYXBwTmFtZSwgbW9kYWwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEEgbW9kYWwgZm9yICR7YXBwTmFtZX0gY291bGQgbm90IGJlIHJlZ2lzdGVyZWQgYXMgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXNgLCBtb2RhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBhdmFpbGFibGVXb3Jrc3BhY2VzLmZvckVhY2goKHdvcmtzcGFjZSk9PntcbiAgICAgICAgICAgIGlmICh3b3Jrc3BhY2UgJiYgdHlwZW9mIHdvcmtzcGFjZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0Lmhhc093bih3b3Jrc3BhY2UsICduYW1lJykgJiYgT2JqZWN0Lmhhc093bih3b3Jrc3BhY2UsICdjb21wb25lbnQnKSkge1xuICAgICAgICAgICAgICAgIHRyeVJlZ2lzdGVyV29ya3NwYWNlKGFwcE5hbWUsIHdvcmtzcGFjZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgQSB3b3Jrc3BhY2UgZm9yICR7YXBwTmFtZX0gY291bGQgbm90IGJlIHJlZ2lzdGVyZWQgYXMgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXNgLCB3b3Jrc3BhY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYXZhaWxhYmxlV29ya3NwYWNlR3JvdXBzLmZvckVhY2goKHdvcmtzcGFjZUdyb3VwKT0+e1xuICAgICAgICAgICAgaWYgKHdvcmtzcGFjZUdyb3VwICYmIHR5cGVvZiB3b3Jrc3BhY2VHcm91cCA9PT0gJ29iamVjdCcgJiYgT2JqZWN0Lmhhc093bih3b3Jrc3BhY2VHcm91cCwgJ25hbWUnKSkge1xuICAgICAgICAgICAgICAgIHRyeVJlZ2lzdGVyV29ya3NwYWNlR3JvdXAoYXBwTmFtZSwgd29ya3NwYWNlR3JvdXApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEEgd29ya3NwYWNlIGdyb3VwIGZvciAke2FwcE5hbWV9IGNvdWxkIG5vdCBiZSByZWdpc3RlcmVkIGFzIGl0IGRvZXMgbm90IGFwcGVhciB0byBoYXZlIHRoZSByZXF1aXJlZCBwcm9wZXJ0aWVzYCwgd29ya3NwYWNlR3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdHJ5UmVnaXN0ZXJXb3Jrc3BhY2VHcm91cHMyKGFwcE5hbWUsIGF2YWlsYWJsZVdvcmtzcGFjZUdyb3VwczIpO1xuICAgICAgICB0cnlSZWdpc3RlcldvcmtzcGFjZVdpbmRvd3MyKGFwcE5hbWUsIGF2YWlsYWJsZVdvcmtzcGFjZVdpbmRvd3MyKTtcbiAgICAgICAgdHJ5UmVnaXN0ZXJXb3Jrc3BhY2UyKGFwcE5hbWUsIGF2YWlsYWJsZVdvcmtzcGFjZXMyKTtcbiAgICAgICAgYXZhaWxhYmxlRmVhdHVyZUZsYWdzLmZvckVhY2goKGZlYXR1cmVGbGFnKT0+e1xuICAgICAgICAgICAgaWYgKGZlYXR1cmVGbGFnICYmIHR5cGVvZiBmZWF0dXJlRmxhZyA9PT0gJ29iamVjdCcgJiYgT2JqZWN0Lmhhc093bihmZWF0dXJlRmxhZywgJ2ZsYWdOYW1lJykpIHtcbiAgICAgICAgICAgICAgICB0cnlSZWdpc3RlckZlYXR1cmVGbGFnKGFwcE5hbWUsIGZlYXR1cmVGbGFnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBBIGZlYXR1cmUgZmxhZyBmb3IgJHthcHBOYW1lfSBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZCBhcyBpdCBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydGllc2AsIGZlYXR1cmVGbGFnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuLyoqXG4gKiBUaGlzIGlzIGNhbGxlZCBieSB0aGUgYXBwIHNoZWxsIG9uY2UgYWxsIHJvdXRlIGVudHJpZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC5cbiAqIFRoaXMgcmVnaXN0ZXJzIHRoZSBwYWdlcyB3aXRoIHRoZSBhcHBsaWNhdGlvbiwgYW5kIGNyZWF0ZXMgdGhlIHJvb3QgZGl2XG4gKiBmb3IgZWFjaCBwYWdlIGluIHRoZSBET00gZWxlbWVudCBzcGVjaWZpZWQgYnkgdGhlIHBhZ2UncyBjb250YWluZXJEb21JZC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzKCkge1xuICAgIHBhZ2VzLnNvcnQoKGEsIGIpPT57XG4gICAgICAgIHJldHVybiBhLmFwcE5hbWUubG9jYWxlQ29tcGFyZShiLmFwcE5hbWUsICdlbicpO1xuICAgIH0pO1xuICAgIC8vIENyZWF0ZSBhIGRpdiBmb3IgZWFjaCBwYWdlLCB1bmxlc3MgdGhlIERPTSBhbHJlYWR5IGNvbnRhaW5zIHRoZSBkaXYgd2l0aFxuICAgIC8vIHRoZSBleHBlY3RlZCBpZCBmb3IgdGhlIHBhZ2UgdG8gYmUgbW91bnRlZCBvbi4gU2VlOlxuICAgIC8vIGh0dHBzOi8vc2luZ2xlLXNwYS5qcy5vcmcvZG9jcy9jb25maWd1cmF0aW9uLyN0d28tcmVnaXN0ZXJlZC1hcHBsaWNhdGlvbnMtc2ltdWx0YW5lb3VzbHlcbiAgICAvLyBUaGUgZGl2IGlzIHB1dCBpbnNpZGUgdGhlIERPTSBlbGVtZW50IHNwZWNpZmllZCBieSB0aGUgcGFnZSdzIGNvbnRhaW5lckRvbUlkLlxuICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIFNpbmdsZS1TUEEgNSB3aWxsIGNyZWF0ZSB0aGUgRE9NIGVsZW1lbnQgb25seSBvbmNlXG4gICAgLy8gdGhlIHBhZ2UgYmVjb21lcyBhY3RpdmUsIGF0IHRoZSBlbmQgb2YgPGJvZHk+LlxuICAgIGxldCBhcHBJbmRpY2VzID0gbmV3IE1hcCgpO1xuICAgIGZvciAobGV0IHBhZ2Ugb2YgcGFnZXMpe1xuICAgICAgICBpZiAoIWFwcEluZGljZXMuaGFzKHBhZ2UuYXBwTmFtZSkpIHtcbiAgICAgICAgICAgIGFwcEluZGljZXMuc2V0KHBhZ2UuYXBwTmFtZSwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBJbmRpY2VzLnNldChwYWdlLmFwcE5hbWUsIGFwcEluZGljZXMuZ2V0KHBhZ2UuYXBwTmFtZSkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IGFwcEluZGljZXMuZ2V0KHBhZ2UuYXBwTmFtZSk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBgJHtwYWdlLmFwcE5hbWV9LXBhZ2UtJHtpbmRleH1gO1xuICAgICAgICBjb25zdCBjb250YWluZXJEb21JZCA9IHBhZ2UuY29udGFpbmVyRG9tSWQgPz8gJ29tcnMtYXBwcy1jb250YWluZXInO1xuICAgICAgICBjb25zdCBjb250YWluZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXJEb21JZCk7XG4gICAgICAgIGNvbnN0IGFwcERvbVJvb3RJZCA9IGBzaW5nbGUtc3BhLWFwcGxpY2F0aW9uOiR7bmFtZX1gO1xuICAgICAgICBpZiAoY29udGFpbmVyRGl2KSB7XG4gICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgIGRpdi5pZCA9IGFwcERvbVJvb3RJZDtcbiAgICAgICAgICAgIGNvbnRhaW5lckRpdj8uYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtwYWdlLmFwcE5hbWV9ICR7cGFnZS5jb21wb25lbnR9IGNhbm5vdCBiZSBtb3VudGVkIHRvIFwiJHtjb250YWluZXJEb21JZH1cIjsgRE9NIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5UmVnaXN0ZXJQYWdlKG5hbWUsIHBhZ2UpO1xuICAgIH1cbn1cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyBlYWNoIHBhZ2UgZGVmaW5pdGlvbiBpbnRvIGEgc2luZ2xlLXNwYSBhcHBsaWNhdGlvblxuICogaWYgdGhhdCdzIHBvc3NpYmxlLiBBZnRlciB0aGlzIHBvaW50LCBwYWdlcyBhcmUgcmVuZGVyZWQgdXNpbmcgc2luZ2xlLXNwYSdzXG4gKiByb3V0aW5nIGxvZ2ljLlxuICpcbiAqIEBwYXJhbSBhcHBOYW1lIFRoZSBuYW1lIG9mIHRoZSBhcHAgY29udGFpbmluZyB0aGlzIHBhZ2VcbiAqIEBwYXJhbSBwYWdlIEFuIG9iamVjdCB0aGF0IGRlc2NyaWJlcyB0aGUgcGFnZSwgZGVyaXZlZCBmcm9tIGByb3V0ZXMuanNvbmBcbiAqLyBmdW5jdGlvbiB0cnlSZWdpc3RlclBhZ2UoYXBwTmFtZSwgcGFnZSkge1xuICAgIGNvbnN0IHJvdXRlID0gdHlwZW9mIHBhZ2Uucm91dGUgIT09ICd1bmRlZmluZWQnID8gcGFnZS5yb3V0ZSA6IHR5cGVvZiBwYWdlLnJvdXRlUmVnZXggIT09ICd1bmRlZmluZWQnID8gbmV3IFJlZ0V4cChwYWdlLnJvdXRlUmVnZXgpIDogZmFsc2U7XG4gICAgaWYgKHJvdXRlID09PSBmYWxzZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYEEgcmVnaXN0ZXJlZCBwYWdlIGRlZmluaXRpb24gaXMgbWlzc2luZyBhIHJvdXRlIGFuZCB0aHVzIGNhbm5vdCBiZSByZWdpc3RlcmVkLlxuVG8gZml4IHRoaXMsIGVuc3VyZSB0aGF0IHlvdSBkZWZpbmUgdGhlIFwicm91dGVcIiAob3IgYWx0ZXJuYXRpdmVseSB0aGUgXCJyb3V0ZVJlZ2V4XCIpIGZpZWxkIGluc2lkZSB0aGUgZXh0ZW5zaW9uIGRlZmluaXRpb24uYCwgYXBwTmFtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFwYWdlLmNvbXBvbmVudCkge1xuICAgICAgICBjb25zb2xlLndhcm4oYEEgcmVnaXN0ZXJlZCBwYWdlIGRlZmluaXRpb24gaXMgbWlzc2luZyBhIGNvbXBvbmVudCBhbmQgdGh1cyBjYW5ub3QgYmUgcmVnaXN0ZXJlZC5cblRvIGZpeCB0aGlzLCBlbnN1cmUgdGhhdCB5b3UgZGVmaW5lIHRoZSBcImNvbXBvbmVudFwiIGZpZWxkIGluc2lkZSB0aGUgcGFnZSBkZWZpbml0aW9uLmAsIGFwcE5hbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2aXR5Rm4gPSB3cmFwUGFnZUFjdGl2aXR5Rm4oZ2V0QWN0aXZpdHlGbihyb3V0ZSksIHBhZ2UpO1xuICAgIGNvbnN0IGxvYWRlciA9ICgpPT5sb2FkTGlmZUN5Y2xlcyhwYWdlLmFwcE5hbWUsIHBhZ2UuY29tcG9uZW50KTtcbiAgICByZWdpc3RlckFwcGxpY2F0aW9uKGFwcE5hbWUsIGxvYWRlciwgYWN0aXZpdHlGbik7XG59XG4iXSwibmFtZXMiOlsicGF0aFRvQWN0aXZlV2hlbiIsInJlZ2lzdGVyQXBwbGljYXRpb24iLCJyZWdpc3Rlck1vZHVsZVdpdGhDb25maWdTeXN0ZW0iLCJnZXRGZWF0dXJlRmxhZyIsInJvdXRlUmVnZXgiLCJ0cnlSZWdpc3RlckV4dGVuc2lvbiIsInRyeVJlZ2lzdGVyRmVhdHVyZUZsYWciLCJ0cnlSZWdpc3Rlck1vZGFsIiwidHJ5UmVnaXN0ZXJXb3Jrc3BhY2UiLCJ0cnlSZWdpc3RlcldvcmtzcGFjZTIiLCJ0cnlSZWdpc3RlcldvcmtzcGFjZUdyb3VwIiwidHJ5UmVnaXN0ZXJXb3Jrc3BhY2VHcm91cHMyIiwidHJ5UmVnaXN0ZXJXb3Jrc3BhY2VXaW5kb3dzMiIsImxvYWRMaWZlQ3ljbGVzIiwicGFnZXMiLCJnZXRBY3Rpdml0eUZuIiwicm91dGUiLCJBcnJheSIsImFjdGl2YXRvcnMiLCJsb2NhdGlvbiIsImFjdGl2YXRvciIsIndpbmRvdyIsIl9pbnN0YW5jZW9mIiwiUmVnRXhwIiwid3JhcFBhZ2VBY3Rpdml0eUZuIiwiYWN0aXZpdHlGbiIsInBhcmFtIiwib25saW5lIiwib2ZmbGluZSIsImZlYXR1cmVGbGFnIiwibmF2aWdhdG9yIiwicmVnaXN0ZXJBcHAiLCJhcHBOYW1lIiwicm91dGVzIiwiX3R5cGVfb2YiLCJfcm91dGVzX2V4dGVuc2lvbnMiLCJfcm91dGVzX21vZGFscyIsIl9yb3V0ZXNfd29ya3NwYWNlcyIsIl9yb3V0ZXNfd29ya3NwYWNlR3JvdXBzIiwiX3JvdXRlc19mZWF0dXJlRmxhZ3MiLCJfcm91dGVzX3dvcmtzcGFjZUdyb3VwczIiLCJfcm91dGVzX3dvcmtzcGFjZVdpbmRvd3MyIiwiX3JvdXRlc193b3Jrc3BhY2VzMiIsIl9yb3V0ZXNfcGFnZXMiLCJhdmFpbGFibGVFeHRlbnNpb25zIiwiYXZhaWxhYmxlTW9kYWxzIiwiYXZhaWxhYmxlV29ya3NwYWNlcyIsImF2YWlsYWJsZVdvcmtzcGFjZUdyb3VwcyIsImF2YWlsYWJsZUZlYXR1cmVGbGFncyIsImF2YWlsYWJsZVdvcmtzcGFjZUdyb3VwczIiLCJhdmFpbGFibGVXb3Jrc3BhY2VXaW5kb3dzMiIsImF2YWlsYWJsZVdvcmtzcGFjZXMyIiwicCIsIk9iamVjdCIsImNvbnNvbGUiLCJleHQiLCJtb2RhbCIsIndvcmtzcGFjZSIsIndvcmtzcGFjZUdyb3VwIiwiZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzIiwiYSIsImIiLCJhcHBJbmRpY2VzIiwiTWFwIiwiX2l0ZXJhdG9yRXJyb3IiLCJwYWdlIiwiX3BhZ2VfY29udGFpbmVyRG9tSWQiLCJpbmRleCIsIm5hbWUiLCJjb250YWluZXJEb21JZCIsImNvbnRhaW5lckRpdiIsImRvY3VtZW50IiwiYXBwRG9tUm9vdElkIiwiZGl2IiwiRXJyb3IiLCJ0cnlSZWdpc3RlclBhZ2UiLCJsb2FkZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFtRTtBQUNFO0FBQ1Q7QUFDbEI7QUFDMEw7QUFDOUs7QUFDdEQsK0RBQStEO0FBQy9ELElBQU1jLFFBQVEsRUFBRTtBQUNoQjs7Ozs7Ozs7O0NBU0MsR0FBRyxTQUFTQyxjQUFjQyxLQUFLO0lBQzVCLElBQUlDLE1BQU0sT0FBTyxDQUFDRCxRQUFRO1FBQ3RCLElBQU1FLGFBQWFGLE1BQU0sR0FBRyxDQUFDRDtRQUM3QixPQUFPLFNBQUNJO21CQUFXRCxXQUFXLElBQUksQ0FBQyxTQUFDRTt1QkFBWUEsVUFBVUQ7OztJQUM5RCxPQUFPLElB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\n//# sourceURL=webpack-internal:///../../framework/esm-routes/dist/loaders/pages.js\n\n}");
6213
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n finishRegisteringAllApps: () => (finishRegisteringAllApps),\n registerApp: () => (registerApp)\n});\n/* import */ var single_spa__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/single-spa/single-spa\");\n/* import */ var single_spa__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(single_spa__rspack_import_0);\n/* import */ var _openmrs_esm_config__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/index.js\");\n/* import */ var _openmrs_esm_extensions__rspack_import_2 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _openmrs_esm_feature_flags__rspack_import_3 = __webpack_require__(\"../../framework/esm-feature-flags/dist/index.js\");\n/* import */ var _helpers_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-routes/dist/loaders/helpers.js\");\n/* import */ var _components_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-routes/dist/loaders/components.js\");\n/* import */ var _load_lifecycles_js__rspack_import_6 = __webpack_require__(\"../../framework/esm-routes/dist/loaders/load-lifecycles.js\");\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\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}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\n\n\n\n\n\n\n\n// this is the global holder of all pages registered in the app\nvar pages = [];\n/**\n * This takes a page's route definitions and returns a single-spa\n * activityFn which returns true when the page matches the current\n * route and false if it does not.\n *\n * @param route A string or regexp that matches the location when the\n * page should be displayed, a boolean constant, or an array of such\n * strings, regexps, and booleans\n * @returns An activityFn suitable to use for a single-spa application\n */ function getActivityFn(route) {\n if (Array.isArray(route)) {\n var activators = route.map(getActivityFn);\n return function(location) {\n return activators.some(function(activator) {\n return activator(location);\n });\n };\n } else if (typeof route === 'string') {\n return (0,single_spa__rspack_import_0.pathToActiveWhen)(window.getOpenmrsSpaBase() + route);\n } else if (_instanceof(route, RegExp)) {\n return function(location) {\n return (0,_helpers_js__rspack_import_4.routeRegex)(route, location);\n };\n } else {\n return function() {\n return route;\n };\n }\n}\n/**\n * For pages, we also add support for rendered them based on online and offline mode as well as\n * any feature flags.\n *\n * By default, we assume that all pages should be rendered when online, but only rendered\n * offline if specifically configured to do so.\n *\n * @param activityFn A standard single-spa activityFn such as that returned by {@link getActivityFn()}\n * @param pageDefinition The RegisteredPageDefinition object for this page\n * @returns An activityFn suitable to use for a single-spa application\n */ function wrapPageActivityFn(activityFn, param) {\n var online = param.online, offline = param.offline, featureFlag = param.featureFlag;\n if (window.offlineEnabled) {\n return function(location) {\n // basically, if the page should only work online and we're offline or if the\n // page should only work offline and we're online, defaulting to always rendering\n // the page\n if (!(navigator.onLine && (online !== null && online !== void 0 ? online : true) || !navigator.onLine && (offline !== null && offline !== void 0 ? offline : false))) {\n return false;\n }\n if (featureFlag) {\n if (!(0,_openmrs_esm_feature_flags__rspack_import_3.getFeatureFlag)(featureFlag)) {\n return false;\n }\n }\n return activityFn(location);\n };\n } else {\n return activityFn;\n }\n}\n/**\n * This is the main entry-point for registering an app with the app shell.\n * Each app has a name and should have a `routes.json` file that defines it's\n * associated routes.\n *\n * @param appName The name of the application, e.g. `@openmrs/esm-my-app`\n * @param routes A Javascript object that corresponds to the app's routes.json`\n * definition.\n */ function registerApp(appName, routes) {\n // An app registers every one of its extensions in one go, and each registration would\n // otherwise re-derive the whole extension graph. Batching collapses that into one pass.\n (0,_openmrs_esm_extensions__rspack_import_2.batchExtensionUpdates)(function() {\n return registerAppRoutes(appName, routes);\n });\n}\nfunction registerAppRoutes(appName, routes) {\n if (appName && routes && (typeof routes === \"undefined\" ? \"undefined\" : _type_of(routes)) === 'object') {\n var _routes_extensions, _routes_modals, _routes_workspaces, _routes_workspaceGroups, _routes_featureFlags, _routes_workspaceGroups2, _routes_workspaceWindows2, _routes_workspaces2;\n var _routes_pages;\n (0,_openmrs_esm_config__rspack_import_1.registerModuleWithConfigSystem)(appName);\n var availableExtensions = (_routes_extensions = routes.extensions) !== null && _routes_extensions !== void 0 ? _routes_extensions : [];\n var availableModals = (_routes_modals = routes.modals) !== null && _routes_modals !== void 0 ? _routes_modals : [];\n var availableWorkspaces = (_routes_workspaces = routes.workspaces) !== null && _routes_workspaces !== void 0 ? _routes_workspaces : [];\n var availableWorkspaceGroups = (_routes_workspaceGroups = routes.workspaceGroups) !== null && _routes_workspaceGroups !== void 0 ? _routes_workspaceGroups : [];\n var availableFeatureFlags = (_routes_featureFlags = routes.featureFlags) !== null && _routes_featureFlags !== void 0 ? _routes_featureFlags : [];\n var availableWorkspaceGroups2 = (_routes_workspaceGroups2 = routes.workspaceGroups2) !== null && _routes_workspaceGroups2 !== void 0 ? _routes_workspaceGroups2 : [];\n var availableWorkspaceWindows2 = (_routes_workspaceWindows2 = routes.workspaceWindows2) !== null && _routes_workspaceWindows2 !== void 0 ? _routes_workspaceWindows2 : [];\n var availableWorkspaces2 = (_routes_workspaces2 = routes.workspaces2) !== null && _routes_workspaces2 !== void 0 ? _routes_workspaces2 : [];\n (_routes_pages = routes.pages) === null || _routes_pages === void 0 ? void 0 : _routes_pages.forEach(function(p) {\n if (p && (typeof p === \"undefined\" ? \"undefined\" : _type_of(p)) === 'object' && Object.hasOwn(p, 'component') && (Object.hasOwn(p, 'route') || Object.hasOwn(p, 'routeRegex') || Object.hasOwn(p, 'routes'))) {\n pages.push(_object_spread_props(_object_spread({}, p), {\n appName: appName\n }));\n } else {\n console.warn(\"A page for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), p);\n }\n });\n availableExtensions.forEach(function(ext) {\n if (ext && (typeof ext === \"undefined\" ? \"undefined\" : _type_of(ext)) === 'object' && Object.hasOwn(ext, 'name') && Object.hasOwn(ext, 'component')) {\n (0,_components_js__rspack_import_5.tryRegisterExtension)(appName, ext);\n } else {\n console.warn(\"An extension for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), ext);\n }\n });\n availableModals.forEach(function(modal) {\n if (modal && (typeof modal === \"undefined\" ? \"undefined\" : _type_of(modal)) === 'object' && Object.hasOwn(modal, 'name') && Object.hasOwn(modal, 'component')) {\n (0,_components_js__rspack_import_5.tryRegisterModal)(appName, modal);\n } else {\n console.warn(\"A modal for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), modal);\n }\n });\n availableWorkspaces.forEach(function(workspace) {\n if (workspace && (typeof workspace === \"undefined\" ? \"undefined\" : _type_of(workspace)) === 'object' && Object.hasOwn(workspace, 'name') && Object.hasOwn(workspace, 'component')) {\n (0,_components_js__rspack_import_5.tryRegisterWorkspace)(appName, workspace);\n } else {\n console.warn(\"A workspace for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), workspace);\n }\n });\n availableWorkspaceGroups.forEach(function(workspaceGroup) {\n if (workspaceGroup && (typeof workspaceGroup === \"undefined\" ? \"undefined\" : _type_of(workspaceGroup)) === 'object' && Object.hasOwn(workspaceGroup, 'name')) {\n (0,_components_js__rspack_import_5.tryRegisterWorkspaceGroup)(appName, workspaceGroup);\n } else {\n console.warn(\"A workspace group for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), workspaceGroup);\n }\n });\n (0,_components_js__rspack_import_5.tryRegisterWorkspaceGroups2)(appName, availableWorkspaceGroups2);\n (0,_components_js__rspack_import_5.tryRegisterWorkspaceWindows2)(appName, availableWorkspaceWindows2);\n (0,_components_js__rspack_import_5.tryRegisterWorkspace2)(appName, availableWorkspaces2);\n availableFeatureFlags.forEach(function(featureFlag) {\n if (featureFlag && (typeof featureFlag === \"undefined\" ? \"undefined\" : _type_of(featureFlag)) === 'object' && Object.hasOwn(featureFlag, 'flagName')) {\n (0,_components_js__rspack_import_5.tryRegisterFeatureFlag)(appName, featureFlag);\n } else {\n console.warn(\"A feature flag for \".concat(appName, \" could not be registered as it does not appear to have the required properties\"), featureFlag);\n }\n });\n }\n}\n/**\n * This is called by the app shell once all route entries have been processed.\n * This registers the pages with the application, and creates the root div\n * for each page in the DOM element specified by the page's containerDomId.\n */ function finishRegisteringAllApps() {\n pages.sort(function(a, b) {\n return a.appName.localeCompare(b.appName, 'en');\n });\n // Create a div for each page, unless the DOM already contains the div with\n // the expected id for the page to be mounted on. See:\n // https://single-spa.js.org/docs/configuration/#two-registered-applications-simultaneously\n // The div is put inside the DOM element specified by the page's containerDomId.\n // If we don't do this, Single-SPA 5 will create the DOM element only once\n // the page becomes active, at the end of <body>.\n var appIndices = new Map();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = pages[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var page = _step.value;\n var _page_containerDomId;\n if (!appIndices.has(page.appName)) {\n appIndices.set(page.appName, 0);\n } else {\n appIndices.set(page.appName, appIndices.get(page.appName) + 1);\n }\n var index = appIndices.get(page.appName);\n var name = \"\".concat(page.appName, \"-page-\").concat(index);\n var containerDomId = (_page_containerDomId = page.containerDomId) !== null && _page_containerDomId !== void 0 ? _page_containerDomId : 'omrs-apps-container';\n var containerDiv = document.getElementById(containerDomId);\n var appDomRootId = \"single-spa-application:\".concat(name);\n if (containerDiv) {\n var div = document.createElement('div');\n div.id = appDomRootId;\n containerDiv === null || containerDiv === void 0 ? void 0 : containerDiv.appendChild(div);\n } else {\n throw new Error(\"\".concat(page.appName, \" \").concat(page.component, ' cannot be mounted to \"').concat(containerDomId, '\"; DOM element does not exist.'));\n }\n tryRegisterPage(name, page);\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}\n/**\n * This function converts each page definition into a single-spa application\n * if that's possible. After this point, pages are rendered using single-spa's\n * routing logic.\n *\n * @param appName The name of the app containing this page\n * @param page An object that describes the page, derived from `routes.json`\n */ function tryRegisterPage(appName, page) {\n var route = typeof page.route !== 'undefined' ? page.route : typeof page.routeRegex !== 'undefined' ? new RegExp(page.routeRegex) : false;\n if (route === false) {\n console.warn('A registered page definition is missing a route and thus cannot be registered.\\nTo fix this, ensure that you define the \"route\" (or alternatively the \"routeRegex\") field inside the extension definition.', appName);\n return;\n }\n if (!page.component) {\n console.warn('A registered page definition is missing a component and thus cannot be registered.\\nTo fix this, ensure that you define the \"component\" field inside the page definition.', appName);\n return;\n }\n var activityFn = wrapPageActivityFn(getActivityFn(route), page);\n var loader = function loader() {\n return (0,_load_lifecycles_js__rspack_import_6.loadLifeCycles)(page.appName, page.component);\n };\n (0,single_spa__rspack_import_0.registerApplication)(appName, loader, activityFn);\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXJvdXRlcy9kaXN0L2xvYWRlcnMvcGFnZXMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcm91dGVzL2Rpc3QvbG9hZGVycy9wYWdlcy5qcz9hN2MzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhdGhUb0FjdGl2ZVdoZW4sIHJlZ2lzdGVyQXBwbGljYXRpb24gfSBmcm9tIFwic2luZ2xlLXNwYVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJNb2R1bGVXaXRoQ29uZmlnU3lzdGVtIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1jb25maWdcIjtcbmltcG9ydCB7IGJhdGNoRXh0ZW5zaW9uVXBkYXRlcyB9IGZyb20gXCJAb3Blbm1ycy9lc20tZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgZ2V0RmVhdHVyZUZsYWcgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWZlYXR1cmUtZmxhZ3NcIjtcbmltcG9ydCB7IHJvdXRlUmVnZXggfSBmcm9tIFwiLi9oZWxwZXJzLmpzXCI7XG5pbXBvcnQgeyB0cnlSZWdpc3RlckV4dGVuc2lvbiwgdHJ5UmVnaXN0ZXJGZWF0dXJlRmxhZywgdHJ5UmVnaXN0ZXJNb2RhbCwgdHJ5UmVnaXN0ZXJXb3Jrc3BhY2UsIHRyeVJlZ2lzdGVyV29ya3NwYWNlMiwgdHJ5UmVnaXN0ZXJXb3Jrc3BhY2VHcm91cCwgdHJ5UmVnaXN0ZXJXb3Jrc3BhY2VHcm91cHMyLCB0cnlSZWdpc3RlcldvcmtzcGFjZVdpbmRvd3MyIH0gZnJvbSBcIi4vY29tcG9uZW50cy5qc1wiO1xuaW1wb3J0IHsgbG9hZExpZmVDeWNsZXMgfSBmcm9tIFwiLi9sb2FkLWxpZmVjeWNsZXMuanNcIjtcbi8vIHRoaXMgaXMgdGhlIGdsb2JhbCBob2xkZXIgb2YgYWxsIHBhZ2VzIHJlZ2lzdGVyZWQgaW4gdGhlIGFwcFxuY29uc3QgcGFnZXMgPSBbXTtcbi8qKlxuICogVGhpcyB0YWtlcyBhIHBhZ2UncyByb3V0ZSBkZWZpbml0aW9ucyBhbmQgcmV0dXJucyBhIHNpbmdsZS1zcGFcbiAqIGFjdGl2aXR5Rm4gd2hpY2ggcmV0dXJucyB0cnVlIHdoZW4gdGhlIHBhZ2UgbWF0Y2hlcyB0aGUgY3VycmVudFxuICogcm91dGUgYW5kIGZhbHNlIGlmIGl0IGRvZXMgbm90LlxuICpcbiAqIEBwYXJhbSByb3V0ZSBBIHN0cmluZyBvciByZWdleHAgdGhhdCBtYXRjaGVzIHRoZSBsb2NhdGlvbiB3aGVuIHRoZVxuICogcGFnZSBzaG91bGQgYmUgZGlzcGxheWVkLCBhIGJvb2xlYW4gY29uc3RhbnQsIG9yIGFuIGFycmF5IG9mIHN1Y2hcbiAqIHN0cmluZ3MsIHJlZ2V4cHMsIGFuZCBib29sZWFuc1xuICogQHJldHVybnMgQW4gYWN0aXZpdHlGbiBzdWl0YWJsZSB0byB1c2UgZm9yIGEgc2luZ2xlLXNwYSBhcHBsaWNhdGlvblxuICovIGZ1bmN0aW9uIGdldEFjdGl2aXR5Rm4ocm91dGUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyb3V0ZSkpIHtcbiAgICAgICAgY29uc3QgYWN0aXZhdG9ycyA9IHJvdXRlLm1hcChnZXRBY3Rpdml0eUZuKTtcbiAgICAgICAgcmV0dXJuIChsb2NhdGlvbik9PmFjdGl2YXRvcnMuc29tZSgoYWN0aXZhdG9yKT0+YWN0aXZhdG9yKGxvY2F0aW9uKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygcm91dGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBwYXRoVG9BY3RpdmVXaGVuKHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSgpICsgcm91dGUpO1xuICAgIH0gZWxzZSBpZiAocm91dGUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuIChsb2NhdGlvbik9PnJvdXRlUmVnZXgocm91dGUsIGxvY2F0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKCk9PnJvdXRlO1xuICAgIH1cbn1cbi8qKlxuICogRm9yIHBhZ2VzLCB3ZSBhbHNvIGFkZCBzdXBwb3J0IGZvciByZW5kZXJlZCB0aGVtIGJhc2VkIG9uIG9ubGluZSBhbmQgb2ZmbGluZSBtb2RlIGFzIHdlbGwgYXNcbiAqIGFueSBmZWF0dXJlIGZsYWdzLlxuICpcbiAqIEJ5IGRlZmF1bHQsIHdlIGFzc3VtZSB0aGF0IGFsbCBwYWdlcyBzaG91bGQgYmUgcmVuZGVyZWQgd2hlbiBvbmxpbmUsIGJ1dCBvbmx5IHJlbmRlcmVkXG4gKiBvZmZsaW5lIGlmIHNwZWNpZmljYWxseSBjb25maWd1cmVkIHRvIGRvIHNvLlxuICpcbiAqIEBwYXJhbSBhY3Rpdml0eUZuIEEgc3RhbmRhcmQgc2luZ2xlLXNwYSBhY3Rpdml0eUZuIHN1Y2ggYXMgdGhhdCByZXR1cm5lZCBieSB7QGxpbmsgZ2V0QWN0aXZpdHlGbigpfVxuICogQHBhcmFtIHBhZ2VEZWZpbml0aW9uIFRoZSBSZWdpc3RlcmVkUGFnZURlZmluaXRpb24gb2JqZWN0IGZvciB0aGlzIHBhZ2VcbiAqIEByZXR1cm5zIEFuIGFjdGl2aXR5Rm4gc3VpdGFibGUgdG8gdXNlIGZvciBhIHNpbmdsZS1zcGEgYXBwbGljYXRpb25cbiAqLyBmdW5jdGlvbiB3cmFwUGFnZUFjdGl2aXR5Rm4oYWN0aXZpdHlGbiwgeyBvbmxpbmUsIG9mZmxpbmUsIGZlYXR1cmVGbGFnIH0pIHtcbiAgICBpZiAod2luZG93Lm9mZmxpbmVFbmFibGVkKSB7XG4gICAgICAgIHJldHVybiAobG9jYXRpb24pPT57XG4gICAgICAgICAgICAvLyBiYXNpY2FsbHksIGlmIHRoZSBwYWdlIHNob3VsZCBvbmx5IHdvcmsgb25saW5lIGFuZCB3ZSdyZSBvZmZsaW5lIG9yIGlmIHRoZVxuICAgICAgICAgICAgLy8gcGFnZSBzaG91bGQgb25seSB3b3JrIG9mZmxpbmUgYW5kIHdlJ3JlIG9ubGluZSwgZGVmYXVsdGluZyB0byBhbHdheXMgcmVuZGVyaW5nXG4gICAgICAgICAgICAvLyB0aGUgcGFnZVxuICAgICAgICAgICAgaWYgKCEobmF2aWdhdG9yLm9uTGluZSAmJiAob25saW5lID8/IHRydWUpIHx8ICFuYXZpZ2F0b3Iub25MaW5lICYmIChvZmZsaW5lID8/IGZhbHNlKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmVhdHVyZUZsYWcpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWdldEZlYXR1cmVGbGFnKGZlYXR1cmVGbGFnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjdGl2aXR5Rm4obG9jYXRpb24pO1xuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhY3Rpdml0eUZuO1xuICAgIH1cbn1cbi8qKlxuICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeS1wb2ludCBmb3IgcmVnaXN0ZXJpbmcgYW4gYXBwIHdpdGggdGhlIGFwcCBzaGVsbC5cbiAqIEVhY2ggYXBwIGhhcyBhIG5hbWUgYW5kIHNob3VsZCBoYXZlIGEgYHJvdXRlcy5qc29uYCBmaWxlIHRoYXQgZGVmaW5lcyBpdCdzXG4gKiBhc3NvY2lhdGVkIHJvdXRlcy5cbiAqXG4gKiBAcGFyYW0gYXBwTmFtZSBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24sIGUuZy4gYEBvcGVubXJzL2VzbS1teS1hcHBgXG4gKiBAcGFyYW0gcm91dGVzIEEgSmF2YXNjcmlwdCBvYmplY3QgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgYXBwJ3MgIHJvdXRlcy5qc29uYFxuICogZGVmaW5pdGlvbi5cbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJBcHAoYXBwTmFtZSwgcm91dGVzKSB7XG4gICAgLy8gQW4gYXBwIHJlZ2lzdGVycyBldmVyeSBvbmUgb2YgaXRzIGV4dGVuc2lvbnMgaW4gb25lIGdvLCBhbmQgZWFjaCByZWdpc3RyYXRpb24gd291bGRcbiAgICAvLyBvdGhlcndpc2UgcmUtZGVyaXZlIHRoZSB3aG9sZSBleHRlbnNpb24gZ3JhcGguIEJhdGNoaW5nIGNvbGxhcHNlcyB0aGF0IGludG8gb25lIHBhc3MuXG4gICAgYmF0Y2hFeHRlbnNpb25VcGRhdGVzKCgpPT5yZWdpc3RlckFwcFJvdXRlcyhhcHBOYW1lLCByb3V0ZXMpKTtcbn1cbmZ1bmN0aW9uIHJlZ2lzdGVyQXBwUm91dGVzKGFwcE5hbWUsIHJvdXRlcykge1xuICAgIGlmIChhcHBOYW1lICYmIHJvdXRlcyAmJiB0eXBlb2Ygcm91dGVzID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZWdpc3Rlck1vZHVsZVdpdGhDb25maWdTeXN0ZW0oYXBwTmFtZSk7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZUV4dGVuc2lvbnMgPSByb3V0ZXMuZXh0ZW5zaW9ucyA/PyBbXTtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlTW9kYWxzID0gcm91dGVzLm1vZGFscyA/PyBbXTtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlV29ya3NwYWNlcyA9IHJvdXRlcy53b3Jrc3BhY2VzID8/IFtdO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVXb3Jrc3BhY2VHcm91cHMgPSByb3V0ZXMud29ya3NwYWNlR3JvdXBzID8/IFtdO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVGZWF0dXJlRmxhZ3MgPSByb3V0ZXMuZmVhdHVyZUZsYWdzID8/IFtdO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVXb3Jrc3BhY2VHcm91cHMyID0gcm91dGVzLndvcmtzcGFjZUdyb3VwczIgPz8gW107XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZVdvcmtzcGFjZVdpbmRvd3MyID0gcm91dGVzLndvcmtzcGFjZVdpbmRvd3MyID8/IFtdO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVXb3Jrc3BhY2VzMiA9IHJvdXRlcy53b3Jrc3BhY2VzMiA/PyBbXTtcbiAgICAgICAgcm91dGVzLnBhZ2VzPy5mb3JFYWNoKChwKT0+e1xuICAgICAgICAgICAgaWYgKHAgJiYgdHlwZW9mIHAgPT09ICdvYmplY3QnICYmIE9iamVjdC5oYXNPd24ocCwgJ2NvbXBvbmVudCcpICYmIChPYmplY3QuaGFzT3duKHAsICdyb3V0ZScpIHx8IE9iamVjdC5oYXNPd24ocCwgJ3JvdXRlUmVnZXgnKSB8fCBPYmplY3QuaGFzT3duKHAsICdyb3V0ZXMnKSkpIHtcbiAgICAgICAgICAgICAgICBwYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucCxcbiAgICAgICAgICAgICAgICAgICAgYXBwTmFtZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEEgcGFnZSBmb3IgJHthcHBOYW1lfSBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZCBhcyBpdCBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydGllc2AsIHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYXZhaWxhYmxlRXh0ZW5zaW9ucy5mb3JFYWNoKChleHQpPT57XG4gICAgICAgICAgICBpZiAoZXh0ICYmIHR5cGVvZiBleHQgPT09ICdvYmplY3QnICYmIE9iamVjdC5oYXNPd24oZXh0LCAnbmFtZScpICYmIE9iamVjdC5oYXNPd24oZXh0LCAnY29tcG9uZW50JykpIHtcbiAgICAgICAgICAgICAgICB0cnlSZWdpc3RlckV4dGVuc2lvbihhcHBOYW1lLCBleHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEFuIGV4dGVuc2lvbiBmb3IgJHthcHBOYW1lfSBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZCBhcyBpdCBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydGllc2AsIGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBhdmFpbGFibGVNb2RhbHMuZm9yRWFjaCgobW9kYWwpPT57XG4gICAgICAgICAgICBpZiAobW9kYWwgJiYgdHlwZW9mIG1vZGFsID09PSAnb2JqZWN0JyAmJiBPYmplY3QuaGFzT3duKG1vZGFsLCAnbmFtZScpICYmIE9iamVjdC5oYXNPd24obW9kYWwsICdjb21wb25lbnQnKSkge1xuICAgICAgICAgICAgICAgIHRyeVJlZ2lzdGVyTW9kYWwoYXBwTmFtZSwgbW9kYWwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEEgbW9kYWwgZm9yICR7YXBwTmFtZX0gY291bGQgbm90IGJlIHJlZ2lzdGVyZWQgYXMgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXNgLCBtb2RhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBhdmFpbGFibGVXb3Jrc3BhY2VzLmZvckVhY2goKHdvcmtzcGFjZSk9PntcbiAgICAgICAgICAgIGlmICh3b3Jrc3BhY2UgJiYgdHlwZW9mIHdvcmtzcGFjZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0Lmhhc093bih3b3Jrc3BhY2UsICduYW1lJykgJiYgT2JqZWN0Lmhhc093bih3b3Jrc3BhY2UsICdjb21wb25lbnQnKSkge1xuICAgICAgICAgICAgICAgIHRyeVJlZ2lzdGVyV29ya3NwYWNlKGFwcE5hbWUsIHdvcmtzcGFjZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgQSB3b3Jrc3BhY2UgZm9yICR7YXBwTmFtZX0gY291bGQgbm90IGJlIHJlZ2lzdGVyZWQgYXMgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXNgLCB3b3Jrc3BhY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYXZhaWxhYmxlV29ya3NwYWNlR3JvdXBzLmZvckVhY2goKHdvcmtzcGFjZUdyb3VwKT0+e1xuICAgICAgICAgICAgaWYgKHdvcmtzcGFjZUdyb3VwICYmIHR5cGVvZiB3b3Jrc3BhY2VHcm91cCA9PT0gJ29iamVjdCcgJiYgT2JqZWN0Lmhhc093bih3b3Jrc3BhY2VHcm91cCwgJ25hbWUnKSkge1xuICAgICAgICAgICAgICAgIHRyeVJlZ2lzdGVyV29ya3NwYWNlR3JvdXAoYXBwTmFtZSwgd29ya3NwYWNlR3JvdXApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEEgd29ya3NwYWNlIGdyb3VwIGZvciAke2FwcE5hbWV9IGNvdWxkIG5vdCBiZSByZWdpc3RlcmVkIGFzIGl0IGRvZXMgbm90IGFwcGVhciB0byBoYXZlIHRoZSByZXF1aXJlZCBwcm9wZXJ0aWVzYCwgd29ya3NwYWNlR3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdHJ5UmVnaXN0ZXJXb3Jrc3BhY2VHcm91cHMyKGFwcE5hbWUsIGF2YWlsYWJsZVdvcmtzcGFjZUdyb3VwczIpO1xuICAgICAgICB0cnlSZWdpc3RlcldvcmtzcGFjZVdpbmRvd3MyKGFwcE5hbWUsIGF2YWlsYWJsZVdvcmtzcGFjZVdpbmRvd3MyKTtcbiAgICAgICAgdHJ5UmVnaXN0ZXJXb3Jrc3BhY2UyKGFwcE5hbWUsIGF2YWlsYWJsZVdvcmtzcGFjZXMyKTtcbiAgICAgICAgYXZhaWxhYmxlRmVhdHVyZUZsYWdzLmZvckVhY2goKGZlYXR1cmVGbGFnKT0+e1xuICAgICAgICAgICAgaWYgKGZlYXR1cmVGbGFnICYmIHR5cGVvZiBmZWF0dXJlRmxhZyA9PT0gJ29iamVjdCcgJiYgT2JqZWN0Lmhhc093bihmZWF0dXJlRmxhZywgJ2ZsYWdOYW1lJykpIHtcbiAgICAgICAgICAgICAgICB0cnlSZWdpc3RlckZlYXR1cmVGbGFnKGFwcE5hbWUsIGZlYXR1cmVGbGFnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBBIGZlYXR1cmUgZmxhZyBmb3IgJHthcHBOYW1lfSBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZCBhcyBpdCBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSB0aGUgcmVxdWlyZWQgcHJvcGVydGllc2AsIGZlYXR1cmVGbGFnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuLyoqXG4gKiBUaGlzIGlzIGNhbGxlZCBieSB0aGUgYXBwIHNoZWxsIG9uY2UgYWxsIHJvdXRlIGVudHJpZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC5cbiAqIFRoaXMgcmVnaXN0ZXJzIHRoZSBwYWdlcyB3aXRoIHRoZSBhcHBsaWNhdGlvbiwgYW5kIGNyZWF0ZXMgdGhlIHJvb3QgZGl2XG4gKiBmb3IgZWFjaCBwYWdlIGluIHRoZSBET00gZWxlbWVudCBzcGVjaWZpZWQgYnkgdGhlIHBhZ2UncyBjb250YWluZXJEb21JZC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzKCkge1xuICAgIHBhZ2VzLnNvcnQoKGEsIGIpPT57XG4gICAgICAgIHJldHVybiBhLmFwcE5hbWUubG9jYWxlQ29tcGFyZShiLmFwcE5hbWUsICdlbicpO1xuICAgIH0pO1xuICAgIC8vIENyZWF0ZSBhIGRpdiBmb3IgZWFjaCBwYWdlLCB1bmxlc3MgdGhlIERPTSBhbHJlYWR5IGNvbnRhaW5zIHRoZSBkaXYgd2l0aFxuICAgIC8vIHRoZSBleHBlY3RlZCBpZCBmb3IgdGhlIHBhZ2UgdG8gYmUgbW91bnRlZCBvbi4gU2VlOlxuICAgIC8vIGh0dHBzOi8vc2luZ2xlLXNwYS5qcy5vcmcvZG9jcy9jb25maWd1cmF0aW9uLyN0d28tcmVnaXN0ZXJlZC1hcHBsaWNhdGlvbnMtc2ltdWx0YW5lb3VzbHlcbiAgICAvLyBUaGUgZGl2IGlzIHB1dCBpbnNpZGUgdGhlIERPTSBlbGVtZW50IHNwZWNpZmllZCBieSB0aGUgcGFnZSdzIGNvbnRhaW5lckRvbUlkLlxuICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIFNpbmdsZS1TUEEgNSB3aWxsIGNyZWF0ZSB0aGUgRE9NIGVsZW1lbnQgb25seSBvbmNlXG4gICAgLy8gdGhlIHBhZ2UgYmVjb21lcyBhY3RpdmUsIGF0IHRoZSBlbmQgb2YgPGJvZHk+LlxuICAgIGxldCBhcHBJbmRpY2VzID0gbmV3IE1hcCgpO1xuICAgIGZvciAobGV0IHBhZ2Ugb2YgcGFnZXMpe1xuICAgICAgICBpZiAoIWFwcEluZGljZXMuaGFzKHBhZ2UuYXBwTmFtZSkpIHtcbiAgICAgICAgICAgIGFwcEluZGljZXMuc2V0KHBhZ2UuYXBwTmFtZSwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBJbmRpY2VzLnNldChwYWdlLmFwcE5hbWUsIGFwcEluZGljZXMuZ2V0KHBhZ2UuYXBwTmFtZSkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IGFwcEluZGljZXMuZ2V0KHBhZ2UuYXBwTmFtZSk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBgJHtwYWdlLmFwcE5hbWV9LXBhZ2UtJHtpbmRleH1gO1xuICAgICAgICBjb25zdCBjb250YWluZXJEb21JZCA9IHBhZ2UuY29udGFpbmVyRG9tSWQgPz8gJ29tcnMtYXBwcy1jb250YWluZXInO1xuICAgICAgICBjb25zdCBjb250YWluZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXJEb21JZCk7XG4gICAgICAgIGNvbnN0IGFwcERvbVJvb3RJZCA9IGBzaW5nbGUtc3BhLWFwcGxpY2F0aW9uOiR7bmFtZX1gO1xuICAgICAgICBpZiAoY29udGFpbmVyRGl2KSB7XG4gICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgIGRpdi5pZCA9IGFwcERvbVJvb3RJZDtcbiAgICAgICAgICAgIGNvbnRhaW5lckRpdj8uYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtwYWdlLmFwcE5hbWV9ICR7cGFnZS5jb21wb25lbnR9IGNhbm5vdCBiZSBtb3VudGVkIHRvIFwiJHtjb250YWluZXJEb21JZH1cIjsgRE9NIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5UmVnaXN0ZXJQYWdlKG5hbWUsIHBhZ2UpO1xuICAgIH1cbn1cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyBlYWNoIHBhZ2UgZGVmaW5pdGlvbiBpbnRvIGEgc2luZ2xlLXNwYSBhcHBsaWNhdGlvblxuICogaWYgdGhhdCdzIHBvc3NpYmxlLiBBZnRlciB0aGlzIHBvaW50LCBwYWdlcyBhcmUgcmVuZGVyZWQgdXNpbmcgc2luZ2xlLXNwYSdzXG4gKiByb3V0aW5nIGxvZ2ljLlxuICpcbiAqIEBwYXJhbSBhcHBOYW1lIFRoZSBuYW1lIG9mIHRoZSBhcHAgY29udGFpbmluZyB0aGlzIHBhZ2VcbiAqIEBwYXJhbSBwYWdlIEFuIG9iamVjdCB0aGF0IGRlc2NyaWJlcyB0aGUgcGFnZSwgZGVyaXZlZCBmcm9tIGByb3V0ZXMuanNvbmBcbiAqLyBmdW5jdGlvbiB0cnlSZWdpc3RlclBhZ2UoYXBwTmFtZSwgcGFnZSkge1xuICAgIGNvbnN0IHJvdXRlID0gdHlwZW9mIHBhZ2Uucm91dGUgIT09ICd1bmRlZmluZWQnID8gcGFnZS5yb3V0ZSA6IHR5cGVvZiBwYWdlLnJvdXRlUmVnZXggIT09ICd1bmRlZmluZWQnID8gbmV3IFJlZ0V4cChwYWdlLnJvdXRlUmVnZXgpIDogZmFsc2U7XG4gICAgaWYgKHJvdXRlID09PSBmYWxzZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYEEgcmVnaXN0ZXJlZCBwYWdlIGRlZmluaXRpb24gaXMgbWlzc2luZyBhIHJvdXRlIGFuZCB0aHVzIGNhbm5vdCBiZSByZWdpc3RlcmVkLlxuVG8gZml4IHRoaXMsIGVuc3VyZSB0aGF0IHlvdSBkZWZpbmUgdGhlIFwicm91dGVcIiAob3IgYWx0ZXJuYXRpdmVseSB0aGUgXCJyb3V0ZVJlZ2V4XCIpIGZpZWxkIGluc2lkZSB0aGUgZXh0ZW5zaW9uIGRlZmluaXRpb24uYCwgYXBwTmFtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFwYWdlLmNvbXBvbmVudCkge1xuICAgICAgICBjb25zb2xlLndhcm4oYEEgcmVnaXN0ZXJlZCBwYWdlIGRlZmluaXRpb24gaXMgbWlzc2luZyBhIGNvbXBvbmVudCBhbmQgdGh1cyBjYW5ub3QgYmUgcmVnaXN0ZXJlZC5cblRvIGZpeCB0aGlzLCBlbnN1cmUgdGhhdCB5b3UgZGVmaW5lIHRoZSBcImNvbXBvbmVudFwiIGZpZWxkIGluc2lkZSB0aGUgcGFnZSBkZWZpbml0aW9uLmAsIGFwcE5hbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2aXR5Rm4gPSB3cmFwUGFnZUFjdGl2aXR5Rm4oZ2V0QWN0aXZpdHlGbihyb3V0ZSksIHBhZ2UpO1xuICAgIGNvbnN0IGxvYWRlciA9ICgpPT5sb2FkTGlmZUN5Y2xlcyhwYWdlLmFwcE5hbWUsIHBhZ2UuY29tcG9uZW50KTtcbiAgICByZWdpc3RlckFwcGxpY2F0aW9uKGFwcE5hbWUsIGxvYWRlciwgYWN0aXZpdHlGbik7XG59XG4iXSwibmFtZXMiOlsicGF0aFRvQWN0aXZlV2hlbiIsInJlZ2lzdGVyQXBwbGljYXRpb24iLCJyZWdpc3Rlck1vZHVsZVdpdGhDb25maWdTeXN0ZW0iLCJiYXRjaEV4dGVuc2lvblVwZGF0ZXMiLCJnZXRGZWF0dXJlRmxhZyIsInJvdXRlUmVnZXgiLCJ0cnlSZWdpc3RlckV4dGVuc2lvbiIsInRyeVJlZ2lzdGVyRmVhdHVyZUZsYWciLCJ0cnlSZWdpc3Rlck1vZGFsIiwidHJ5UmVnaXN0ZXJXb3Jrc3BhY2UiLCJ0cnlSZWdpc3RlcldvcmtzcGFjZTIiLCJ0cnlSZWdpc3RlcldvcmtzcGFjZUdyb3VwIiwidHJ5UmVnaXN0ZXJXb3Jrc3BhY2VHcm91cHMyIiwidHJ5UmVnaXN0ZXJXb3Jrc3BhY2VXaW5kb3dzMiIsImxvYWRMaWZlQ3ljbGVzIiwicGFnZXMiLCJnZXRBY3Rpdml0eUZuIiwicm91dGUiLCJBcnJheSIsImFjdGl2YXRvcnMiLCJsb2NhdGlvbiIsImFjdGl2YXRvciIsIndpbmRvdyIsIl9pbnN0YW5jZW9mIiwiUmVnRXhwIiwid3JhcFBhZ2VBY3Rpdml0eUZuIiwiYWN0aXZpdHlGbiIsInBhcmFtIiwib25saW5lIiwib2ZmbGluZSIsImZlYXR1cmVGbGFnIiwibmF2aWdhdG9yIiwicmVnaXN0ZXJBcHAiLCJhcHBOYW1lIiwicm91dGVzIiwicmVnaXN0ZXJBcHBSb3V0ZXMiLCJfdHlwZV9vZiIsIl9yb3V0ZXNfZXh0ZW5zaW9ucyIsIl9yb3V0ZXNfbW9kYWxzIiwiX3JvdXRlc193b3Jrc3BhY2VzIiwiX3JvdXRlc193b3Jrc3BhY2VHcm91cHMiLCJfcm91dGVzX2ZlYXR1cmVGbGFncyIsIl9yb3V0ZXNfd29ya3NwYWNlR3JvdXBzMiIsIl9yb3V0ZXNfd29ya3NwYWNlV2luZG93czIiLCJfcm91dGVzX3dvcmtzcGFjZXMyIiwiX3JvdXRlc19wYWdlcyIsImF2YWlsYWJsZUV4dGVuc2lvbnMiLCJhdmFpbGFibGVNb2RhbHMiLCJhdmFpbGFibGVXb3Jrc3BhY2VzIiwiYXZhaWxhYmxlV29ya3NwYWNlR3JvdXBzIiwiYXZhaWxhYmxlRmVhdHVyZUZsYWdzIiwiYXZhaWxhYmxlV29ya3NwYWNlR3JvdXBzMiIsImF2YWlsYWJsZVdvcmtzcGFjZVdpbmRvd3MyIiwiYXZhaWxhYmxlV29ya3NwYWNlczIiLCJwIiwiT2JqZWN0IiwiY29uc29sZSIsImV4dCIsIm1vZGFsIiwid29ya3NwYWNlIiwid29ya3NwYWNlR3JvdXAiLCJmaW5pc2hSZWdpc3RlcmluZ0FsbEFwcHMiLCJhIiwiYiIsImFwcEluZGljZXMiLCJNYXAiLCJfaXRlcmF0b3JFcnJvciIsInBhZ2UiLCJfcGFnZV9jb250YWluZXJEb21JZCIsImluZGV4IiwibmFtZSIsImNvbnRhaW5lckRvbUlkIiwiY29udGFpbmVyRGl2IiwiZG9jdW1lbnQiLCJhcHBEb21Sb290SWQiLCJkaXYiLCJFcnJvciIsInRyeVJlZ2lzdGVyUGFnZSIsImxvYWRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFtRTtBQUNFO0FBQ0w7QUFDSjtBQUNsQjtBQUMwTDtBQUM5SztBQUN0RCwrREFBK0Q7QUFDL0QsSUFBTWUsUUFBUSxFQUFFO0FBQ2hCOzs7Ozs7Ozs7Q0FTQyxHQUFHLFNBQVNDLGNBQWNDLEtBQUs7SUFDNUIsSUFBSUMsTUFBTSxPQUFPLENBQUNELFFBQVE7UUFDdEIsSUFBTUUsYUFBYUYsTUFBTSxHQUFHLENBQUNEO1FBQzdCLE9BQU8sU0FBQ0k7bUJBQVdELFdBQVcsSUFBSSxDQUFDLFNBQUNFO3VCQUFZQSxVQUFVRDs7O0lBQzlELE9BQU8sSUFBSSxPQUFPSCxVQUFVLFVBQVU7UUFDbEMsT0FBT2pCLGdEQUFnQkEsQ0FBQ3NCLE9BQU8saUJBQWlCLEtBQUtMO0lBQ3pELE9BQU8sSUFBU00sWUFBTE4sT0FBaUJPLFNBQVE7UUFDaEMsT0FBTyxTQUFDSjttQkFBV2YsMkNBQVVBLENBQUNZLE9BQU9HOztJQUN6QyxPQUFPO1FBQ0gsT0FBTzttQkFBSUg7O0lBQ2Y7QUFDSjtBQUNBOzs7Ozs7Ozs7O0NBVUMsR0FBRyxTQUFTUSxtQkFBbUJDLFVBQVUsRUFBRUMsS0FBZ0M7UUFBOUJDLFNBQUZELE1BQUVDLFFBQVFDLFVBQVZGLE1BQVVFLFNBQVNDLGNBQW5CSCxNQUFtQkc7SUFDM0QsSUFBSVIsT0FBTyxjQUFjLEVBQUU7UUFDdkIsT0FBTyxTQUFDRjtZQUNKLDZFQUE2RTtZQUM3RSxpRkFBaUY7WUFDakYsV0FBVztZQUNYLElBQUksQ0FBRVcsQ0FBQUEsVUFBVSxNQUFNLEtBQUtILG1CQUFBQSxvQkFBQUEsU0FBVSxTQUFTLENBQUNHLFVBQVUsTUFBTSxLQUFLRixvQkFBQUEscUJBQUFBLFVBQVcs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\n//# sourceURL=webpack-internal:///../../framework/esm-routes/dist/loaders/pages.js\n\n}");
6204
6214
 
6205
6215
  },
6206
6216
  "../../framework/esm-state/dist/index.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {