@openmrs/esm-app-shell 5.3.3-pre.1263 → 5.3.3-pre.1268

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/.turbo/turbo-build.log +26 -25
  2. package/dist/0cca64a12dd8e4d8.js +1 -0
  3. package/dist/0cca64a12dd8e4d8.js.map +1 -0
  4. package/dist/index.html +1 -1
  5. package/dist/openmrs.cc714e71e40ee102.js +2 -0
  6. package/dist/openmrs.cc714e71e40ee102.js.map +1 -0
  7. package/dist/service-worker.js +1 -1
  8. package/lib/c18421aa23da4c70.js +62 -0
  9. package/lib/esm-devtools-app/630.js +1 -0
  10. package/lib/esm-devtools-app/630.js.map +1 -0
  11. package/lib/esm-devtools-app/729.js +1 -0
  12. package/lib/esm-devtools-app/729.js.map +1 -0
  13. package/lib/esm-devtools-app/735.js +1 -1
  14. package/lib/esm-devtools-app/735.js.map +1 -1
  15. package/lib/esm-devtools-app/788.js +2 -0
  16. package/lib/esm-devtools-app/788.js.LICENSE.txt +19 -0
  17. package/lib/esm-devtools-app/788.js.map +1 -0
  18. package/lib/esm-devtools-app/875.js +1 -0
  19. package/lib/esm-devtools-app/875.js.map +1 -0
  20. package/lib/esm-devtools-app/889.js +1 -1
  21. package/lib/esm-devtools-app/889.js.map +1 -1
  22. package/lib/esm-devtools-app/961.js +2 -0
  23. package/lib/esm-devtools-app/961.js.LICENSE.txt +15 -0
  24. package/lib/esm-devtools-app/961.js.map +1 -0
  25. package/lib/esm-devtools-app/988.js +1 -1
  26. package/lib/esm-devtools-app/988.js.map +1 -1
  27. package/lib/esm-devtools-app/main.js +1 -1
  28. package/lib/esm-devtools-app/main.js.map +1 -1
  29. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -1
  30. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +158 -31
  31. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.map +1 -1
  32. package/lib/esm-devtools-app/routes.json +1 -1
  33. package/lib/esm-implementer-tools-app/889.js +1 -1
  34. package/lib/esm-implementer-tools-app/889.js.map +1 -1
  35. package/lib/esm-implementer-tools-app/main.js +1 -1
  36. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -1
  37. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +7 -7
  38. package/lib/esm-implementer-tools-app/routes.json +1 -1
  39. package/lib/esm-login-app/889.js +1 -1
  40. package/lib/esm-login-app/889.js.map +1 -1
  41. package/lib/esm-login-app/main.js +1 -1
  42. package/lib/esm-login-app/openmrs-esm-login-app.js +1 -1
  43. package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +6 -6
  44. package/lib/esm-login-app/routes.json +1 -1
  45. package/lib/esm-offline-tools-app/889.js +1 -1
  46. package/lib/esm-offline-tools-app/889.js.map +1 -1
  47. package/lib/esm-offline-tools-app/main.js +1 -1
  48. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -1
  49. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +6 -6
  50. package/lib/esm-offline-tools-app/routes.json +1 -1
  51. package/lib/esm-primary-navigation-app/889.js +1 -1
  52. package/lib/esm-primary-navigation-app/889.js.map +1 -1
  53. package/lib/esm-primary-navigation-app/main.js +1 -1
  54. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
  55. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +6 -6
  56. package/lib/esm-primary-navigation-app/routes.json +1 -1
  57. package/lib/index.html +1 -1
  58. package/lib/openmrs.js +54 -10
  59. package/lib/service-worker.js +1 -1
  60. package/package.json +3 -3
  61. package/src/apps.ts +42 -16
  62. package/src/run.ts +74 -6
  63. package/tsconfig.json +1 -1
  64. package/dist/9c276181fc6599f8.js +0 -1
  65. package/dist/9c276181fc6599f8.js.map +0 -1
  66. package/dist/openmrs.6bf482336805961e.js +0 -2
  67. package/dist/openmrs.6bf482336805961e.js.map +0 -1
  68. package/lib/c074b9133e91fad3.js +0 -62
  69. package/lib/esm-devtools-app/68.js +0 -2
  70. package/lib/esm-devtools-app/68.js.LICENSE.txt +0 -5
  71. package/lib/esm-devtools-app/68.js.map +0 -1
  72. /package/dist/{openmrs.6bf482336805961e.js.LICENSE.txt → openmrs.cc714e71e40ee102.js.LICENSE.txt} +0 -0
@@ -1,62 +0,0 @@
1
- "use strict";
2
- /*
3
- * ATTENTION: An "eval-source-map" devtool has been used.
4
- * This devtool is neither made for production nor for readable output files.
5
- * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
6
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
7
- * or disable the default devtool with "devtool: false".
8
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
9
- */
10
- (self["webpackChunk_openmrs_esm_app_shell"] = self["webpackChunk_openmrs_esm_app_shell"] || []).push([["src_run_ts"],{
11
-
12
- /***/ "./src/apps.ts":
13
- /*!*********************!*\
14
- !*** ./src/apps.ts ***!
15
- \*********************/
16
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
17
-
18
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ finishRegisteringAllApps: () => (/* binding */ finishRegisteringAllApps),\n/* harmony export */ registerApp: () => (/* binding */ registerApp),\n/* harmony export */ tryRegisterExtension: () => (/* binding */ tryRegisterExtension),\n/* harmony export */ tryRegisterPage: () => (/* binding */ tryRegisterPage)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-framework */ \"webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! single-spa */ \"webpack/sharing/consume/default/single-spa/single-spa\");\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(single_spa__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ \"./src/helpers.ts\");\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 _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 _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\n\n\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__WEBPACK_IMPORTED_MODULE_1__.pathToActiveWhen)(window.getOpenmrsSpaBase() + route);\n } else if (_instanceof(route, RegExp)) {\n return function(location) {\n return (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.routeRegex)(route, location);\n };\n } else {\n return function() {\n return route;\n };\n }\n}\n/**\n * For pages, we also support the activityFn taking into account the online / offline\n * status. This wraps an existing single-spa activityFn and only allows the page to\n * be rendered in the appropriate mode.\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;\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 return activityFn(location);\n };\n}\nvar STARTUP_FUNCTION = \"startupApp\";\n/**\n * @internal\n *\n * Used internally to track which apps have had their `startupApp()` initializer called\n *\n * Values are promises to support asynchronous loading of the same app multiple times\n */ var initializedApps = new Map();\n/**\n * This function creates a loader function suitable for use in either a single-spa\n * application or parcel.\n *\n * The returned function is lazy and ensures that the appropriate module is loaded,\n * that the module's `startupApp()` is called before the component is loaded. It\n * then calls the component function, which should return either a single-spa\n * {@link LifeCycles} object or a {@link Promise} that will resolve to such an object.\n *\n * React-based pages or extensions should generally use the framework's\n * `getAsyncLifecycle()` or `getSyncLifecycle()` functions.\n */ function getLoader(appName, component) {\n return /*#__PURE__*/ _async_to_generator(function() {\n var module;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__.importDynamic)(appName)\n ];\n case 1:\n module = _state.sent();\n if (!(module && Object.hasOwn(module, component) && typeof module[component] === \"function\")) return [\n 3,\n 6\n ];\n if (!!(appName in initializedApps)) return [\n 3,\n 3\n ];\n return [\n 4,\n initializedApps[appName] = new Promise(function(resolve, reject) {\n if (Object.hasOwn(module, STARTUP_FUNCTION)) {\n var startup = module[STARTUP_FUNCTION];\n if (typeof startup === \"function\") {\n return Promise.resolve(startup()).then(resolve).catch(reject);\n }\n }\n resolve(null);\n })\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 3:\n return [\n 4,\n initializedApps[appName]\n ];\n case 4:\n _state.sent();\n _state.label = 5;\n case 5:\n return [\n 2,\n Promise.resolve(module[component]())\n ];\n case 6:\n if (module && Object.hasOwn(module, component)) {\n console.warn(\"The export \".concat(component, \" of the app \").concat(appName, \" is not a function\"));\n } else {\n console.warn(\"The app \".concat(appName, \" does not define a component called \").concat(component, \", this cannot be loaded\"));\n }\n _state.label = 7;\n case 7:\n return [\n 2,\n _helpers__WEBPACK_IMPORTED_MODULE_2__.emptyLifecycle\n ];\n }\n });\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 === \"object\") {\n var _routes_pages;\n (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__.defineConfigSchema)(appName, {});\n var _routes_extensions;\n var availableExtensions = (_routes_extensions = routes.extensions) !== null && _routes_extensions !== void 0 ? _routes_extensions : [];\n (_routes_pages = routes.pages) === null || _routes_pages === void 0 ? void 0 : _routes_pages.forEach(function(p) {\n var _p_order;\n pages.push(_object_spread_props(_object_spread({}, p), {\n order: (_p_order = p.order) !== null && _p_order !== void 0 ? _p_order : Number.MAX_SAFE_INTEGER,\n appName: appName\n }));\n });\n availableExtensions.forEach(function(ext) {\n tryRegisterExtension(appName, ext);\n });\n }\n}\n/**\n * This is called by the app shell once all route entries have been processed.\n * This actually registers the pages with the application. This function is\n * necessary to ensure that pages are rendered in the DOM according to their\n * order definition, especially because certain pages _must_ be first in the DOM.\n *\n * Each page is rendered into a div with an appropriate name.\n */ function finishRegisteringAllApps() {\n pages.sort(function(a, b) {\n var sort = a.order - b.order;\n if (sort != 0) {\n return sort;\n }\n return a.appName.localeCompare(b.appName, \"en\");\n });\n // Create a div for each page. This ensures their DOM order.\n // If we don't do this, Single-SPA 5 will create the DOM element only once\n // the page becomes active, which makes it impossible to guarantee order.\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 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 div = document.createElement(\"div\");\n div.id = \"single-spa-application:\".concat(name);\n document.body.appendChild(div);\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 actually 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 A Javascript object that describes the page defintion, 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 = getLoader(page.appName, page.component);\n (0,single_spa__WEBPACK_IMPORTED_MODULE_1__.registerApplication)(appName, loader, activityFn);\n}\n/**\n * This function actually registers an extension definition with the framework and will\n * attach the extension to any configured slots.\n *\n * @param appName The name of the app containing this page\n * @param extension A Javascript object that describes the extension defintion, derived from `routes.json`\n */ function tryRegisterExtension(appName, extension) {\n var name = extension.name;\n if (!name) {\n console.error(\"An extension definition in \".concat(appName, ' is missing an name and thus cannot be\\nregistered. To fix this, ensure that you define the \"name\" field inside the\\nextension definition.'), extension);\n return;\n }\n if (extension.slots && extension.slot) {\n console.warn(\"The extension \".concat(name, \" from \").concat(appName, \" declares both a 'slots' property and \\na 'slot' property. Only the 'slots' property will be honored.\"));\n }\n var slots = extension.slots ? extension.slots : extension.slot ? [\n extension.slot\n ] : [];\n if (!extension.component && !extension.load) {\n console.error(\"The extension \".concat(name, \" from \").concat(appName, \" is missing a 'component' entry and thus cannot be registered.\\nTo fix this, ensure that you define a 'component' field inside the extension definition.\"), extension);\n return;\n }\n var loader;\n if (extension.component) {\n loader = getLoader(appName, extension.component);\n } else if (extension.load) {\n if (typeof extension.load !== \"function\") {\n console.error(\"The extension \".concat(name, \" from \").concat(appName, \" declares a 'load' property that is not a function. This is not\\nsupported, so the extension will not be loaded.\"));\n return;\n }\n loader = extension.load;\n }\n var _extension_online, _extension_offline;\n (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__.registerExtension)({\n name: name,\n load: loader,\n meta: extension.meta || {},\n order: extension.order,\n moduleName: appName,\n privileges: extension.privileges,\n online: (_extension_online = extension.online) !== null && _extension_online !== void 0 ? _extension_online : true,\n offline: (_extension_offline = extension.offline) !== null && _extension_offline !== void 0 ? _extension_offline : false,\n featureFlag: extension.featureFlag\n });\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 slot = _step.value;\n (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__.attach)(slot, name);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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cEMsU0FBUTtZQUd4QztRQUNGLENBQUM7UUFDRDRDLFNBQVNDLFVBQVVJLElBQUk7SUFDekIsQ0FBQztRQVNTSixtQkFDQ0E7SUFSWDNFLHlFQUFpQkEsQ0FBQztRQUNoQmtFLE1BQUFBO1FBQ0FhLE1BQU1MO1FBQ05NLE1BQU1MLFVBQVVLLElBQUksSUFBSSxDQUFDO1FBQ3pCOUIsT0FBT3lCLFVBQVV6QixLQUFLO1FBQ3RCK0IsWUFBWW5EO1FBQ1pvRCxZQUFZUCxVQUFVTyxVQUFVO1FBQ2hDNUQsUUFBUXFELENBQUFBLG9CQUFBQSxVQUFVckQsTUFBTSxjQUFoQnFELCtCQUFBQSxvQkFBb0IsSUFBSTtRQUNoQ3BELFNBQVNvRCxDQUFBQSxxQkFBQUEsVUFBVXBELE9BQU8sY0FBakJvRCxnQ0FBQUEscUJBQXFCLEtBQUs7UUFDbkNRLGFBQWFSLFVBQVVRLFdBQVc7SUFDcEM7UUFFSzs7UUFBTCxRQUFLLFlBQWNOLDBCQUFkLHdHQUFxQjtZQUFyQixJQUFNQyxPQUFOO1lBQ0gvRSw4REFBTUEsQ0FBQytFLE1BQU1aO1FBQ2Y7O1FBRks7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7QUFHUCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uL3NyYy9hcHBzLnRzPzUxMjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXR0YWNoLFxuICByZWdpc3RlckV4dGVuc2lvbixcbiAgZGVmaW5lQ29uZmlnU2NoZW1hLFxuICBpbXBvcnREeW5hbWljLFxuICBSZWdpc3RlcmVkUGFnZURlZmluaXRpb24sXG4gIEV4dGVuc2lvbkRlZmluaXRpb24sXG4gIE9wZW5tcnNBcHBSb3V0ZXMsXG4gIFJvdXRlRGVmaW5pdGlvbixcbn0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yayc7XG5pbXBvcnQgeyBBY3Rpdml0eUZuLCBMaWZlQ3ljbGVzLCBwYXRoVG9BY3RpdmVXaGVuLCByZWdpc3RlckFwcGxpY2F0aW9uIH0gZnJvbSAnc2luZ2xlLXNwYSc7XG5pbXBvcnQgeyBlbXB0eUxpZmVjeWNsZSwgcm91dGVSZWdleCB9IGZyb20gJy4vaGVscGVycyc7XG5cbmNvbnN0IHBhZ2VzOiBBcnJheTxSZWdpc3RlcmVkUGFnZURlZmluaXRpb24+ID0gW107XG5cbi8qKlxuICogVGhpcyB0YWtlcyBhIHBhZ2UncyByb3V0ZSBkZWZpbml0aW9ucyBhbmQgcmV0dXJucyBhIHNpbmdsZS1zcGFcbiAqIGFjdGl2aXR5Rm4gd2hpY2ggcmV0dXJucyB0cnVlIHdoZW4gdGhlIHBhZ2UgbWF0Y2hlcyB0aGUgY3VycmVudFxuICogcm91dGUgYW5kIGZhbHNlIGlmIGl0IGRvZXMgbm90LlxuICpcbiAqIEBwYXJhbSByb3V0ZSBBIHN0cmluZyBvciByZWdleHAgdGhhdCBtYXRjaGVzIHRoZSBsb2NhdGlvbiB3aGVuIHRoZVxuICogcGFnZSBzaG91bGQgYmUgZGlzcGxheWVkLCBhIGJvb2xlYW4gY29uc3RhbnQsIG9yIGFuIGFycmF5IG9mIHN1Y2hcbiAqIHN0cmluZ3MsIHJlZ2V4cHMsIGFuZCBib29sZWFuc1xuICogQHJldHVybnMgQW4gYWN0aXZpdHlGbiBzdWl0YWJsZSB0byB1c2UgZm9yIGEgc2luZ2xlLXNwYSBhcHBsaWNhdGlvblxuICovXG5mdW5jdGlvbiBnZXRBY3Rpdml0eUZuKHJvdXRlOiBSb3V0ZURlZmluaXRpb24gfCBBcnJheTxSb3V0ZURlZmluaXRpb24+KTogQWN0aXZpdHlGbiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHJvdXRlKSkge1xuICAgIGNvbnN0IGFjdGl2YXRvcnMgPSByb3V0ZS5tYXAoZ2V0QWN0aXZpdHlGbik7XG4gICAgcmV0dXJuIChsb2NhdGlvbikgPT4gYWN0aXZhdG9ycy5zb21lKChhY3RpdmF0b3IpID0+IGFjdGl2YXRvcihsb2NhdGlvbikpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiByb3V0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGF0aFRvQWN0aXZlV2hlbih3aW5kb3cuZ2V0T3Blbm1yc1NwYUJhc2UoKSArIHJvdXRlKTtcbiAgfSBlbHNlIGlmIChyb3V0ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgIHJldHVybiAobG9jYXRpb24pID0+IHJvdXRlUmVnZXgocm91dGUsIGxvY2F0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKCkgPT4gcm91dGU7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3IgcGFnZXMsIHdlIGFsc28gc3VwcG9ydCB0aGUgYWN0aXZpdHlGbiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBvbmxpbmUgLyBvZmZsaW5lXG4gKiBzdGF0dXMuIFRoaXMgd3JhcHMgYW4gZXhpc3Rpbmcgc2luZ2xlLXNwYSBhY3Rpdml0eUZuIGFuZCBvbmx5IGFsbG93cyB0aGUgcGFnZSB0b1xuICogYmUgcmVuZGVyZWQgaW4gdGhlIGFwcHJvcHJpYXRlIG1vZGUuXG4gKlxuICogQnkgZGVmYXVsdCwgd2UgYXNzdW1lIHRoYXQgYWxsIHBhZ2VzIHNob3VsZCBiZSByZW5kZXJlZCB3aGVuIG9ubGluZSwgYnV0IG9ubHkgcmVuZGVyZWRcbiAqIG9mZmxpbmUgaWYgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQgdG8gZG8gc28uXG4gKlxuICogQHBhcmFtIGFjdGl2aXR5Rm4gQSBzdGFuZGFyZCBzaW5nbGUtc3BhIGFjdGl2aXR5Rm4gc3VjaCBhcyB0aGF0IHJldHVybmVkIGJ5IHtAbGluayBnZXRBY3Rpdml0eUZuKCl9XG4gKiBAcGFyYW0gcGFnZURlZmluaXRpb24gVGhlIFJlZ2lzdGVyZWRQYWdlRGVmaW5pdGlvbiBvYmplY3QgZm9yIHRoaXMgcGFnZVxuICogQHJldHVybnMgQW4gYWN0aXZpdHlGbiBzdWl0YWJsZSB0byB1c2UgZm9yIGEgc2luZ2xlLXNwYSBhcHBsaWNhdGlvblxuICovXG5mdW5jdGlvbiB3cmFwUGFnZUFjdGl2aXR5Rm4oYWN0aXZpdHlGbjogQWN0aXZpdHlGbiwgeyBvbmxpbmUsIG9mZmxpbmUgfTogUmVnaXN0ZXJlZFBhZ2VEZWZpbml0aW9uKSB7XG4gIHJldHVybiAobG9jYXRpb246IExvY2F0aW9uKSA9PiB7XG4gICAgLy8gYmFzaWNhbGx5LCBpZiB0aGUgcGFnZSBzaG91bGQgb25seSB3b3JrIG9ubGluZSBhbmQgd2UncmUgb2ZmbGluZSBvciBpZiB0aGVcbiAgICAvLyBwYWdlIHNob3VsZCBvbmx5IHdvcmsgb2ZmbGluZSBhbmQgd2UncmUgb25saW5lLCBkZWZhdWx0aW5nIHRvIGFsd2F5cyByZW5kZXJpbmdcbiAgICAvLyB0aGUgcGFnZVxuICAgIGlmICghKChuYXZpZ2F0b3Iub25MaW5lICYmIChvbmxpbmUgPz8gdHJ1ZSkpIHx8ICghbmF2aWdhdG9yLm9uTGluZSAmJiAob2ZmbGluZSA/PyBmYWxzZSkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBhY3Rpdml0eUZuKGxvY2F0aW9uKTtcbiAgfTtcbn1cblxuY29uc3QgU1RBUlRVUF9GVU5DVElPTiA9ICdzdGFydHVwQXBwJztcbi8qKlxuICogQGludGVybmFsXG4gKlxuICogVXNlZCBpbnRlcm5hbGx5IHRvIHRyYWNrIHdoaWNoIGFwcHMgaGF2ZSBoYWQgdGhlaXIgYHN0YXJ0dXBBcHAoKWAgaW5pdGlhbGl6ZXIgY2FsbGVkXG4gKlxuICogVmFsdWVzIGFyZSBwcm9taXNlcyB0byBzdXBwb3J0IGFzeW5jaHJvbm91cyBsb2FkaW5nIG9mIHRoZSBzYW1lIGFwcCBtdWx0aXBsZSB0aW1lc1xuICovXG5jb25zdCBpbml0aWFsaXplZEFwcHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj4oKTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBsb2FkZXIgZnVuY3Rpb24gc3VpdGFibGUgZm9yIHVzZSBpbiBlaXRoZXIgYSBzaW5nbGUtc3BhXG4gKiBhcHBsaWNhdGlvbiBvciBwYXJjZWwuXG4gKlxuICogVGhlIHJldHVybmVkIGZ1bmN0aW9uIGlzIGxhenkgYW5kIGVuc3VyZXMgdGhhdCB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlIGlzIGxvYWRlZCxcbiAqIHRoYXQgdGhlIG1vZHVsZSdzIGBzdGFydHVwQXBwKClgIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBsb2FkZWQuIEl0XG4gKiB0aGVuIGNhbGxzIHRoZSBjb21wb25lbnQgZnVuY3Rpb24sIHdoaWNoIHNob3VsZCByZXR1cm4gZWl0aGVyIGEgc2luZ2xlLXNwYVxuICoge0BsaW5rIExpZmVDeWNsZXN9IG9iamVjdCBvciBhIHtAbGluayBQcm9taXNlfSB0aGF0IHdpbGwgcmVzb2x2ZSB0byBzdWNoIGFuIG9iamVjdC5cbiAqXG4gKiBSZWFjdC1iYXNlZCBwYWdlcyBvciBleHRlbnNpb25zIHNob3VsZCBnZW5lcmFsbHkgdXNlIHRoZSBmcmFtZXdvcmsnc1xuICogYGdldEFzeW5jTGlmZWN5Y2xlKClgIG9yIGBnZXRTeW5jTGlmZWN5Y2xlKClgIGZ1bmN0aW9ucy5cbiAqL1xuZnVuY3Rpb24gZ2V0TG9hZGVyKGFwcE5hbWU6IHN0cmluZywgY29tcG9uZW50OiBzdHJpbmcpOiAoKSA9PiBQcm9taXNlPExpZmVDeWNsZXM+IHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2R1bGUgPSBhd2FpdCBpbXBvcnREeW5hbWljPFxuICAgICAgUmVjb3JkPEV4Y2x1ZGU8c3RyaW5nLCAnc3RhcnR1cEFwcCc+LCAoKSA9PiBMaWZlQ3ljbGVzIHwgUHJvbWlzZTxMaWZlQ3ljbGVzPj4gJiB7IHN0YXJ0dXBBcHA/OiAoKSA9PiB1bmtub3duIH1cbiAgICA+KGFwcE5hbWUpO1xuXG4gICAgaWYgKG1vZHVsZSAmJiBPYmplY3QuaGFzT3duKG1vZHVsZSwgY29tcG9uZW50KSAmJiB0eXBlb2YgbW9kdWxlW2NvbXBvbmVudF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmICghKGFwcE5hbWUgaW4gaW5pdGlhbGl6ZWRBcHBzKSkge1xuICAgICAgICBhd2FpdCAoaW5pdGlhbGl6ZWRBcHBzW2FwcE5hbWVdID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKG1vZHVsZSwgU1RBUlRVUF9GVU5DVElPTikpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0dXAgPSBtb2R1bGVbU1RBUlRVUF9GVU5DVElPTl07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN0YXJ0dXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzdGFydHVwKCkpLnRoZW4ocmVzb2x2ZSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBpbml0aWFsaXplZEFwcHNbYXBwTmFtZV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobW9kdWxlW2NvbXBvbmVudF0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtb2R1bGUgJiYgT2JqZWN0Lmhhc093bihtb2R1bGUsIGNvbXBvbmVudCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBUaGUgZXhwb3J0ICR7Y29tcG9uZW50fSBvZiB0aGUgYXBwICR7YXBwTmFtZX0gaXMgbm90IGEgZnVuY3Rpb25gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVGhlIGFwcCAke2FwcE5hbWV9IGRvZXMgbm90IGRlZmluZSBhIGNvbXBvbmVudCBjYWxsZWQgJHtjb21wb25lbnR9LCB0aGlzIGNhbm5vdCBiZSBsb2FkZWRgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZW1wdHlMaWZlY3ljbGU7XG4gIH07XG59XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeS1wb2ludCBmb3IgcmVnaXN0ZXJpbmcgYW4gYXBwIHdpdGggdGhlIGFwcCBzaGVsbC5cbiAqIEVhY2ggYXBwIGhhcyBhIG5hbWUgYW5kIHNob3VsZCBoYXZlIGEgYHJvdXRlcy5qc29uYCBmaWxlIHRoYXQgZGVmaW5lcyBpdCdzXG4gKiBhc3NvY2lhdGVkIHJvdXRlcy5cbiAqXG4gKiBAcGFyYW0gYXBwTmFtZSBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24sIGUuZy4gYEBvcGVubXJzL2VzbS1teS1hcHBgXG4gKiBAcGFyYW0gcm91dGVzIEEgSmF2YXNjcmlwdCBvYmplY3QgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgYXBwJ3MgIHJvdXRlcy5qc29uYFxuICogZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQXBwKGFwcE5hbWU6IHN0cmluZywgcm91dGVzOiBPcGVubXJzQXBwUm91dGVzKSB7XG4gIGlmIChhcHBOYW1lICYmIHJvdXRlcyAmJiB0eXBlb2Ygcm91dGVzID09PSAnb2JqZWN0Jykge1xuICAgIGRlZmluZUNvbmZpZ1NjaGVtYShhcHBOYW1lLCB7fSk7XG5cbiAgICBjb25zdCBhdmFpbGFibGVFeHRlbnNpb25zOiBBcnJheTxFeHRlbnNpb25EZWZpbml0aW9uPiA9IHJvdXRlcy5leHRlbnNpb25zID8/IFtdO1xuXG4gICAgcm91dGVzLnBhZ2VzPy5mb3JFYWNoKChwKSA9PiB7XG4gICAgICBwYWdlcy5wdXNoKHsgLi4ucCwgb3JkZXI6IHAub3JkZXIgPz8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsIGFwcE5hbWUgfSk7XG4gICAgfSk7XG5cbiAgICBhdmFpbGFibGVFeHRlbnNpb25zLmZvckVhY2goKGV4dCkgPT4ge1xuICAgICAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24oYXBwTmFtZSwgZXh0KTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSBhcHAgc2hlbGwgb25jZSBhbGwgcm91dGUgZW50cmllcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLlxuICogVGhpcyBhY3R1YWxseSByZWdpc3RlcnMgdGhlIHBhZ2VzIHdpdGggdGhlIGFwcGxpY2F0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzXG4gKiBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgcGFnZXMgYXJlIHJlbmRlcmVkIGluIHRoZSBET00gYWNjb3JkaW5nIHRvIHRoZWlyXG4gKiBvcmRlciBkZWZpbml0aW9uLCBlc3BlY2lhbGx5IGJlY2F1c2UgY2VydGFpbiBwYWdlcyBfbXVzdF8gYmUgZmlyc3QgaW4gdGhlIERPTS5cbiAqXG4gKiBFYWNoIHBhZ2UgaXMgcmVuZGVyZWQgaW50byBhIGRpdiB3aXRoIGFuIGFwcHJvcHJpYXRlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5pc2hSZWdpc3RlcmluZ0FsbEFwcHMoKSB7XG4gIHBhZ2VzLnNvcnQoKGEsIGIpID0+IHtcbiAgICBsZXQgc29ydCA9IGEub3JkZXIgLSBiLm9yZGVyO1xuICAgIGlmIChzb3J0ICE9IDApIHtcbiAgICAgIHJldHVybiBzb3J0O1xuICAgIH1cbiAgICByZXR1cm4gYS5hcHBOYW1lLmxvY2FsZUNvbXBhcmUoYi5hcHBOYW1lLCAnZW4nKTtcbiAgfSk7XG5cbiAgLy8gQ3JlYXRlIGEgZGl2IGZvciBlYWNoIHBhZ2UuIFRoaXMgZW5zdXJlcyB0aGVpciBET00gb3JkZXIuXG4gIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIFNpbmdsZS1TUEEgNSB3aWxsIGNyZWF0ZSB0aGUgRE9NIGVsZW1lbnQgb25seSBvbmNlXG4gIC8vIHRoZSBwYWdlIGJlY29tZXMgYWN0aXZlLCB3aGljaCBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGd1YXJhbnRlZSBvcmRlci5cbiAgbGV0IGFwcEluZGljZXMgPSBuZXcgTWFwKCk7XG4gIGZvciAobGV0IHBhZ2Ugb2YgcGFnZXMpIHtcbiAgICBpZiAoIWFwcEluZGljZXMuaGFzKHBhZ2UuYXBwTmFtZSkpIHtcbiAgICAgIGFwcEluZGljZXMuc2V0KHBhZ2UuYXBwTmFtZSwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwcEluZGljZXMuc2V0KHBhZ2UuYXBwTmFtZSwgYXBwSW5kaWNlcy5nZXQocGFnZS5hcHBOYW1lKSArIDEpO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IGFwcEluZGljZXMuZ2V0KHBhZ2UuYXBwTmFtZSk7XG5cbiAgICBjb25zdCBuYW1lID0gYCR7cGFnZS5hcHBOYW1lfS1wYWdlLSR7aW5kZXh9YDtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXYuaWQgPSBgc2luZ2xlLXNwYS1hcHBsaWNhdGlvbjoke25hbWV9YDtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7XG4gICAgdHJ5UmVnaXN0ZXJQYWdlKG5hbWUsIHBhZ2UpO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBhY3R1YWxseSBjb252ZXJ0cyBlYWNoIHBhZ2UgZGVmaW5pdGlvbiBpbnRvIGEgc2luZ2xlLXNwYSBhcHBsaWNhdGlvblxuICogaWYgdGhhdCdzIHBvc3NpYmxlLiBBZnRlciB0aGlzIHBvaW50LCBwYWdlcyBhcmUgcmVuZGVyZWQgdXNpbmcgc2luZ2xlLXNwYSdzXG4gKiByb3V0aW5nIGxvZ2ljLlxuICpcbiAqIEBwYXJhbSBhcHBOYW1lIFRoZSBuYW1lIG9mIHRoZSBhcHAgY29udGFpbmluZyB0aGlzIHBhZ2VcbiAqIEBwYXJhbSBwYWdlIEEgSmF2YXNjcmlwdCBvYmplY3QgdGhhdCBkZXNjcmliZXMgdGhlIHBhZ2UgZGVmaW50aW9uLCBkZXJpdmVkIGZyb20gYHJvdXRlcy5qc29uYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ5UmVnaXN0ZXJQYWdlKGFwcE5hbWU6IHN0cmluZywgcGFnZTogUmVnaXN0ZXJlZFBhZ2VEZWZpbml0aW9uKSB7XG4gIGNvbnN0IHJvdXRlID1cbiAgICB0eXBlb2YgcGFnZS5yb3V0ZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgID8gcGFnZS5yb3V0ZVxuICAgICAgOiB0eXBlb2YgcGFnZS5yb3V0ZVJlZ2V4ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IG5ldyBSZWdFeHAocGFnZS5yb3V0ZVJlZ2V4KVxuICAgICAgICA6IGZhbHNlO1xuXG4gIGlmIChyb3V0ZSA9PT0gZmFsc2UpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgQSByZWdpc3RlcmVkIHBhZ2UgZGVmaW5pdGlvbiBpcyBtaXNzaW5nIGEgcm91dGUgYW5kIHRodXMgY2Fubm90IGJlIHJlZ2lzdGVyZWQuXG5UbyBmaXggdGhpcywgZW5zdXJlIHRoYXQgeW91IGRlZmluZSB0aGUgXCJyb3V0ZVwiIChvciBhbHRlcm5hdGl2ZWx5IHRoZSBcInJvdXRlUmVnZXhcIikgZmllbGQgaW5zaWRlIHRoZSBleHRlbnNpb24gZGVmaW5pdGlvbi5gLFxuICAgICAgYXBwTmFtZSxcbiAgICApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghcGFnZS5jb21wb25lbnQpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgQSByZWdpc3RlcmVkIHBhZ2UgZGVmaW5pdGlvbiBpcyBtaXNzaW5nIGEgY29tcG9uZW50IGFuZCB0aHVzIGNhbm5vdCBiZSByZWdpc3RlcmVkLlxuVG8gZml4IHRoaXMsIGVuc3VyZSB0aGF0IHlvdSBkZWZpbmUgdGhlIFwiY29tcG9uZW50XCIgZmllbGQgaW5zaWRlIHRoZSBwYWdlIGRlZmluaXRpb24uYCxcbiAgICAgIGFwcE5hbWUsXG4gICAgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhY3Rpdml0eUZuID0gd3JhcFBhZ2VBY3Rpdml0eUZuKGdldEFjdGl2aXR5Rm4ocm91dGUpLCBwYWdlKTtcbiAgY29uc3QgbG9hZGVyID0gZ2V0TG9hZGVyKHBhZ2UuYXBwTmFtZSwgcGFnZS5jb21wb25lbnQpO1xuICByZWdpc3RlckFwcGxpY2F0aW9uKGFwcE5hbWUsIGxvYWRlciwgYWN0aXZpdHlGbik7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBhY3R1YWxseSByZWdpc3RlcnMgYW4gZXh0ZW5zaW9uIGRlZmluaXRpb24gd2l0aCB0aGUgZnJhbWV3b3JrIGFuZCB3aWxsXG4gKiBhdHRhY2ggdGhlIGV4dGVuc2lvbiB0byBhbnkgY29uZmlndXJlZCBzbG90cy5cbiAqXG4gKiBAcGFyYW0gYXBwTmFtZSBUaGUgbmFtZSBvZiB0aGUgYXBwIGNvbnRhaW5pbmcgdGhpcyBwYWdlXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIEEgSmF2YXNjcmlwdCBvYmplY3QgdGhhdCBkZXNjcmliZXMgdGhlIGV4dGVuc2lvbiBkZWZpbnRpb24sIGRlcml2ZWQgZnJvbSBgcm91dGVzLmpzb25gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlSZWdpc3RlckV4dGVuc2lvbihhcHBOYW1lOiBzdHJpbmcsIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGVmaW5pdGlvbikge1xuICBjb25zdCBuYW1lID0gZXh0ZW5zaW9uLm5hbWU7XG4gIGlmICghbmFtZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgQW4gZXh0ZW5zaW9uIGRlZmluaXRpb24gaW4gJHthcHBOYW1lfSBpcyBtaXNzaW5nIGFuIG5hbWUgYW5kIHRodXMgY2Fubm90IGJlXG5yZWdpc3RlcmVkLiBUbyBmaXggdGhpcywgZW5zdXJlIHRoYXQgeW91IGRlZmluZSB0aGUgXCJuYW1lXCIgZmllbGQgaW5zaWRlIHRoZVxuZXh0ZW5zaW9uIGRlZmluaXRpb24uYCxcbiAgICAgIGV4dGVuc2lvbixcbiAgICApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChleHRlbnNpb24uc2xvdHMgJiYgZXh0ZW5zaW9uLnNsb3QpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgVGhlIGV4dGVuc2lvbiAke25hbWV9IGZyb20gJHthcHBOYW1lfSBkZWNsYXJlcyBib3RoIGEgJ3Nsb3RzJyBwcm9wZXJ0eSBhbmQgXG5hICdzbG90JyBwcm9wZXJ0eS4gT25seSB0aGUgJ3Nsb3RzJyBwcm9wZXJ0eSB3aWxsIGJlIGhvbm9yZWQuYCxcbiAgICApO1xuICB9XG4gIGNvbnN0IHNsb3RzID0gZXh0ZW5zaW9uLnNsb3RzID8gZXh0ZW5zaW9uLnNsb3RzIDogZXh0ZW5zaW9uLnNsb3QgPyBbZXh0ZW5zaW9uLnNsb3RdIDogW107XG5cbiAgaWYgKCFleHRlbnNpb24uY29tcG9uZW50ICYmICFleHRlbnNpb24ubG9hZCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgVGhlIGV4dGVuc2lvbiAke25hbWV9IGZyb20gJHthcHBOYW1lfSBpcyBtaXNzaW5nIGEgJ2NvbXBvbmVudCcgZW50cnkgYW5kIHRodXMgY2Fubm90IGJlIHJlZ2lzdGVyZWQuXG5UbyBmaXggdGhpcywgZW5zdXJlIHRoYXQgeW91IGRlZmluZSBhICdjb21wb25lbnQnIGZpZWxkIGluc2lkZSB0aGUgZXh0ZW5zaW9uIGRlZmluaXRpb24uYCxcbiAgICAgIGV4dGVuc2lvbixcbiAgICApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBsb2FkZXI7XG4gIGlmIChleHRlbnNpb24uY29tcG9uZW50KSB7XG4gICAgbG9hZGVyID0gZ2V0TG9hZGVyKGFwcE5hbWUsIGV4dGVuc2lvbi5jb21wb25lbnQpO1xuICB9IGVsc2UgaWYgKGV4dGVuc2lvbi5sb2FkKSB7XG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb24ubG9hZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFRoZSBleHRlbnNpb24gJHtuYW1lfSBmcm9tICR7YXBwTmFtZX0gZGVjbGFyZXMgYSAnbG9hZCcgcHJvcGVydHkgdGhhdCBpcyBub3QgYSBmdW5jdGlvbi4gVGhpcyBpcyBub3RcbnN1cHBvcnRlZCwgc28gdGhlIGV4dGVuc2lvbiB3aWxsIG5vdCBiZSBsb2FkZWQuYCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxvYWRlciA9IGV4dGVuc2lvbi5sb2FkO1xuICB9XG5cbiAgcmVnaXN0ZXJFeHRlbnNpb24oe1xuICAgIG5hbWUsXG4gICAgbG9hZDogbG9hZGVyLFxuICAgIG1ldGE6IGV4dGVuc2lvbi5tZXRhIHx8IHt9LFxuICAgIG9yZGVyOiBleHRlbnNpb24ub3JkZXIsXG4gICAgbW9kdWxlTmFtZTogYXBwTmFtZSxcbiAgICBwcml2aWxlZ2VzOiBleHRlbnNpb24ucHJpdmlsZWdlcyxcbiAgICBvbmxpbmU6IGV4dGVuc2lvbi5vbmxpbmUgPz8gdHJ1ZSxcbiAgICBvZmZsaW5lOiBleHRlbnNpb24ub2ZmbGluZSA/PyBmYWxzZSxcbiAgICBmZWF0dXJlRmxhZzogZXh0ZW5zaW9uLmZlYXR1cmVGbGFnLFxuICB9KTtcblxuICBmb3IgKGNvbnN0IHNsb3Qgb2Ygc2xvdHMpIHtcbiAgICBhdHRhY2goc2xvdCwgbmFtZSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJhdHRhY2giLCJyZWdpc3RlckV4dGVuc2lvbiIsImRlZmluZUNvbmZpZ1NjaGVtYSIsImltcG9ydER5bmFtaWMiLCJwYXRoVG9BY3RpdmVXaGVuIiwicmVnaXN0ZXJBcHBsaWNhdGlvbiIsImVtcHR5TGlmZWN5Y2xlIiwicm91dGVSZWdleCIsInBhZ2VzIiwiZ2V0QWN0aXZpdHlGbiIsInJvdXRlIiwiQXJyYXkiLCJpc0FycmF5IiwiYWN0aXZhdG9ycyIsIm1hcCIsImxvY2F0aW9uIiwic29tZSIsImFjdGl2YXRvciIsIndpbmRvdyIsImdldE9wZW5tcnNTcGFCYXNlIiwiUmVnRXhwIiwid3JhcFBhZ2VBY3Rpdml0eUZuIiwiYWN0aXZpdHlGbiIsIm9ubGluZSIsIm9mZmxpbmUiLCJuYXZpZ2F0b3IiLCJvbkxpbmUiLCJTVEFSVFVQX0ZVTkNUSU9OIiwiaW5pdGlhbGl6ZWRBcHBzIiwiTWFwIiwiZ2V0TG9hZGVyIiwiYXBwTmFtZSIsImNvbXBvbmVudCIsIm1vZHVsZSIsIk9iamVjdCIsImhhc093biIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic3RhcnR1cCIsInRoZW4iLCJjYXRjaCIsImNvbnNvbGUiLCJ3YXJuIiwicmVnaXN0ZXJBcHAiLCJyb3V0ZXMiLCJhdmFpbGFibGVFeHRlbnNpb25zIiwiZXh0ZW5zaW9ucyIsImZvckVhY2giLCJwIiwicHVzaCIsIm9yZGVyIiwiTnVtYmVyIiwiTUFYX1NBRkVfSU5URUdFUiIsImV4dCIsInRyeVJlZ2lzdGVyRXh0ZW5zaW9uIiwiZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzIiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsImFwcEluZGljZXMiLCJwYWdlIiwiaGFzIiwic2V0IiwiZ2V0IiwiaW5kZXgiLCJuYW1lIiwiZGl2IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaWQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJ0cnlSZWdpc3RlclBhZ2UiLCJsb2FkZXIiLCJleHRlbnNpb24iLCJlcnJvciIsInNsb3RzIiwic2xvdCIsImxvYWQiLCJtZXRhIiwibW9kdWxlTmFtZSIsInByaXZpbGVnZXMiLCJmZWF0dXJlRmxhZyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/apps.ts\n");
19
-
20
- /***/ }),
21
-
22
- /***/ "./src/helpers.ts":
23
- /*!************************!*\
24
- !*** ./src/helpers.ts ***!
25
- \************************/
26
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
27
-
28
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ emptyLifecycle: () => (/* binding */ emptyLifecycle),\n/* harmony export */ routeRegex: () => (/* binding */ routeRegex)\n/* harmony export */ });\nvar emptyLifecycle = {\n bootstrap: function bootstrap() {\n return Promise.resolve();\n },\n mount: function mount() {\n return Promise.resolve();\n },\n unmount: function unmount() {\n return Promise.resolve();\n }\n};\nfunction routeRegex(regex, location) {\n var result = regex.test(location.pathname.replace(window.getOpenmrsSpaBase(), \"\"));\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaGVscGVycy50cyIsIm1hcHBpbmdzIjoiOzs7OztBQUVPLElBQU1BLGlCQUFvQztJQUMvQ0MsV0FBQUEsU0FBQUEsWUFBWTtRQUNWLE9BQU9DLFFBQVFDLE9BQU87SUFDeEI7SUFDQUMsT0FBQUEsU0FBQUEsUUFBUTtRQUNOLE9BQU9GLFFBQVFDLE9BQU87SUFDeEI7SUFDQUUsU0FBQUEsU0FBQUEsVUFBVTtRQUNSLE9BQU9ILFFBQVFDLE9BQU87SUFDeEI7QUFDRixFQUFFO0FBRUssU0FBU0csV0FBV0MsS0FBYSxFQUFFQyxRQUFrQixFQUFFO0lBQzVELElBQU1DLFNBQVNGLE1BQU1HLElBQUksQ0FBQ0YsU0FBU0csUUFBUSxDQUFDQyxPQUFPLENBQUNDLE9BQU9DLGlCQUFpQixJQUFJO0lBQ2hGLE9BQU9MO0FBQ1QsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvaGVscGVycy50cz8xZWRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpZmVDeWNsZXMgfSBmcm9tICdzaW5nbGUtc3BhJztcblxuZXhwb3J0IGNvbnN0IGVtcHR5TGlmZWN5Y2xlOiBMaWZlQ3ljbGVzPG5ldmVyPiA9IHtcbiAgYm9vdHN0cmFwKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSxcbiAgbW91bnQoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9LFxuICB1bm1vdW50KCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByb3V0ZVJlZ2V4KHJlZ2V4OiBSZWdFeHAsIGxvY2F0aW9uOiBMb2NhdGlvbikge1xuICBjb25zdCByZXN1bHQgPSByZWdleC50ZXN0KGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2Uod2luZG93LmdldE9wZW5tcnNTcGFCYXNlKCksICcnKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG4iXSwibmFtZXMiOlsiZW1wdHlMaWZlY3ljbGUiLCJib290c3RyYXAiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1vdW50IiwidW5tb3VudCIsInJvdXRlUmVnZXgiLCJyZWdleCIsImxvY2F0aW9uIiwicmVzdWx0IiwidGVzdCIsInBhdGhuYW1lIiwicmVwbGFjZSIsIndpbmRvdyIsImdldE9wZW5tcnNTcGFCYXNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/helpers.ts\n");
29
-
30
- /***/ }),
31
-
32
- /***/ "./src/locale.ts":
33
- /*!***********************!*\
34
- !*** ./src/locale.ts ***!
35
- \***********************/
36
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
37
-
38
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setupI18n: () => (/* binding */ setupI18n)\n/* harmony export */ });\n/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! i18next */ \"webpack/sharing/consume/default/i18next/i18next\");\n/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(i18next__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! i18next-browser-languagedetector */ \"../../../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ \"webpack/sharing/consume/default/react-i18next/react-i18next\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_es_merge__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/merge */ \"../../../node_modules/lodash-es/merge.js\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_3__);\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 _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_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\n\n\n\n\nfunction setupI18n() {\n window.i18next = (i18next__WEBPACK_IMPORTED_MODULE_0___default()) || i18next__WEBPACK_IMPORTED_MODULE_0__;\n var languageChangeObserver = new MutationObserver(function() {\n var reDetect = undefined;\n window.i18next.changeLanguage(reDetect).catch(function(e) {\n return console.error(\"i18next failed to re-detect language\", e);\n });\n });\n languageChangeObserver.observe(document.documentElement, {\n attributeFilter: [\n \"lang\"\n ],\n attributes: true\n });\n window.i18next.on(\"languageChanged\", function() {\n document.documentElement.setAttribute(\"dir\", window.i18next.dir());\n });\n return window.i18next.use(i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_1__[\"default\"]).use({\n type: \"backend\",\n init: function init() {},\n read: function read(language, namespace, callback) {\n if (namespace === \"translation\") {\n callback(Error(\"can't handle translation namespace\"), null);\n } else if (namespace === undefined || language === undefined) {\n callback(Error(), null);\n } else if (namespace === \"@openmrs/esm-app-shell\") {\n // currently, we don't have translations in the app shell\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_3__.getConfigInternal)(namespace).then(function(config) {\n var translations = {};\n if (config && \"Translation overrides\" in config) {\n var overrides = config[\"Translation overrides\"];\n if (language in overrides) {\n translations = overrides[language];\n }\n }\n callback(null, translations);\n }).catch(function(err) {\n callback(err, null);\n });\n } else {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_3__.importDynamic)(namespace).then(function(module) {\n return Promise.all([\n getImportPromise(module, namespace, language),\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_3__.getConfigInternal)(namespace)\n ]);\n }).then(function(param) {\n var _param = _sliced_to_array(param, 2), json = _param[0], config = _param[1];\n var translations = json !== null && json !== void 0 ? json : {};\n if (config && \"Translation overrides\" in config) {\n var overrides = config[\"Translation overrides\"];\n if (language in overrides) {\n translations = (0,lodash_es_merge__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(translations, overrides[language]);\n }\n }\n callback(null, translations);\n }).catch(function(err) {\n callback(err, null);\n });\n }\n }\n }).use(react_i18next__WEBPACK_IMPORTED_MODULE_2__.initReactI18next).init({\n detection: {\n order: [\n \"querystring\",\n \"htmlTag\",\n \"localStorage\",\n \"navigator\"\n ],\n lookupQuerystring: \"lang\"\n },\n fallbackLng: \"en\"\n });\n}\nfunction getImportPromise(module, namespace, language) {\n if (typeof module.importTranslation !== \"function\") {\n throw Error(\"Module \".concat(namespace, \" does not export an importTranslation function\"));\n }\n var importPromise = module.importTranslation(\"./\".concat(language, \".json\"));\n if (!_instanceof(importPromise, Promise)) {\n throw Error(\"Module \".concat(namespace, \" exports an importTranslation function that does not return a promise. Did you forget to set require.context mode to 'lazy'?\"));\n }\n return importPromise;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QjtRQUNyQjtRQUNBQyxhQUFhO0lBQ2Y7QUFDSixDQUFDO0FBRUQsU0FBU0wsaUJBQ1BILE1BRUMsRUFDRFIsU0FBaUIsRUFDakJELFFBQWdCLEVBQ2hCO0lBQ0EsSUFBSSxPQUFPUyxPQUFPUyxpQkFBaUIsS0FBSyxZQUFZO1FBQ2xELE1BQU1mLE1BQU0sVUFBb0IsT0FBVkYsV0FBVSxtREFBaUQ7SUFDbkYsQ0FBQztJQUVELElBQU1rQixnQkFBZ0JWLE9BQU9TLGlCQUFpQixDQUFDLEtBQWMsT0FBVGxCLFVBQVM7SUFFN0QsSUFBSSxDQUFFbUIsWUFBQUEsZUFBeUJULFVBQVU7UUFDdkMsTUFBTVAsTUFDSixVQUFvQixPQUFWRixXQUFVLGlJQUNwQjtJQUNKLENBQUM7SUFFRCxPQUFPa0I7QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvbG9jYWxlLnRzPzVjMWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gJ2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yJztcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gtZXMvbWVyZ2UnO1xuaW1wb3J0IHsgZ2V0Q29uZmlnSW50ZXJuYWwsIGltcG9ydER5bmFtaWMgfSBmcm9tICdAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cEkxOG4oKSB7XG4gIHdpbmRvdy5pMThuZXh0ID0gaTE4bmV4dC5kZWZhdWx0IHx8IGkxOG5leHQ7XG5cbiAgY29uc3QgbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICBjb25zdCByZURldGVjdDogYW55ID0gdW5kZWZpbmVkO1xuICAgIHdpbmRvdy5pMThuZXh0LmNoYW5nZUxhbmd1YWdlKHJlRGV0ZWN0KS5jYXRjaCgoZSkgPT4gY29uc29sZS5lcnJvcignaTE4bmV4dCBmYWlsZWQgdG8gcmUtZGV0ZWN0IGxhbmd1YWdlJywgZSkpO1xuICB9KTtcblxuICBsYW5ndWFnZUNoYW5nZU9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgYXR0cmlidXRlRmlsdGVyOiBbJ2xhbmcnXSxcbiAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICB9KTtcblxuICB3aW5kb3cuaTE4bmV4dC5vbignbGFuZ3VhZ2VDaGFuZ2VkJywgKCkgPT4ge1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RpcicsIHdpbmRvdy5pMThuZXh0LmRpcigpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHdpbmRvdy5pMThuZXh0XG4gICAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAgIC51c2U8aTE4bmV4dC5CYWNrZW5kTW9kdWxlPih7XG4gICAgICB0eXBlOiAnYmFja2VuZCcsXG4gICAgICBpbml0KCkge30sXG4gICAgICByZWFkKGxhbmd1YWdlLCBuYW1lc3BhY2UsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmIChuYW1lc3BhY2UgPT09ICd0cmFuc2xhdGlvbicpIHtcbiAgICAgICAgICBjYWxsYmFjayhFcnJvcihcImNhbid0IGhhbmRsZSB0cmFuc2xhdGlvbiBuYW1lc3BhY2VcIiksIG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkIHx8IGxhbmd1YWdlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjYWxsYmFjayhFcnJvcigpLCBudWxsKTtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lc3BhY2UgPT09ICdAb3Blbm1ycy9lc20tYXBwLXNoZWxsJykge1xuICAgICAgICAgIC8vIGN1cnJlbnRseSwgd2UgZG9uJ3QgaGF2ZSB0cmFuc2xhdGlvbnMgaW4gdGhlIGFwcCBzaGVsbFxuICAgICAgICAgIGdldENvbmZpZ0ludGVybmFsKG5hbWVzcGFjZSlcbiAgICAgICAgICAgIC50aGVuKChjb25maWcpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0aW9ucyA9IHt9O1xuICAgICAgICAgICAgICBpZiAoY29uZmlnICYmICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnIGluIGNvbmZpZykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG92ZXJyaWRlcyA9IGNvbmZpZ1snVHJhbnNsYXRpb24gb3ZlcnJpZGVzJ107XG4gICAgICAgICAgICAgICAgaWYgKGxhbmd1YWdlIGluIG92ZXJyaWRlcykge1xuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zID0gb3ZlcnJpZGVzW2xhbmd1YWdlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCB0cmFuc2xhdGlvbnMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW1wb3J0RHluYW1pYyhuYW1lc3BhY2UpXG4gICAgICAgICAgICAudGhlbigobW9kdWxlKSA9PlxuICAgICAgICAgICAgICBQcm9taXNlLmFsbChbZ2V0SW1wb3J0UHJvbWlzZShtb2R1bGUsIG5hbWVzcGFjZSwgbGFuZ3VhZ2UpLCBnZXRDb25maWdJbnRlcm5hbChuYW1lc3BhY2UpXSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAudGhlbigoW2pzb24sIGNvbmZpZ10pID0+IHtcbiAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0aW9ucyA9IGpzb24gPz8ge307XG5cbiAgICAgICAgICAgICAgaWYgKGNvbmZpZyAmJiAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJyBpbiBjb25maWcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvdmVycmlkZXMgPSBjb25maWdbJ1RyYW5zbGF0aW9uIG92ZXJyaWRlcyddO1xuICAgICAgICAgICAgICAgIGlmIChsYW5ndWFnZSBpbiBvdmVycmlkZXMpIHtcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucyA9IG1lcmdlKHRyYW5zbGF0aW9ucywgb3ZlcnJpZGVzW2xhbmd1YWdlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgdHJhbnNsYXRpb25zKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgY2FsbGJhY2soZXJyLCBudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pXG4gICAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAgIC5pbml0KHtcbiAgICAgIGRldGVjdGlvbjoge1xuICAgICAgICBvcmRlcjogWydxdWVyeXN0cmluZycsICdodG1sVGFnJywgJ2xvY2FsU3RvcmFnZScsICduYXZpZ2F0b3InXSxcbiAgICAgICAgbG9va3VwUXVlcnlzdHJpbmc6ICdsYW5nJyxcbiAgICAgIH0sXG4gICAgICBmYWxsYmFja0xuZzogJ2VuJyxcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0SW1wb3J0UHJvbWlzZShcbiAgbW9kdWxlOiB7XG4gICAgaW1wb3J0VHJhbnNsYXRpb246IChsYW5ndWFnZTogc3RyaW5nKSA9PiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xuICB9LFxuICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgbGFuZ3VhZ2U6IHN0cmluZyxcbikge1xuICBpZiAodHlwZW9mIG1vZHVsZS5pbXBvcnRUcmFuc2xhdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IEVycm9yKGBNb2R1bGUgJHtuYW1lc3BhY2V9IGRvZXMgbm90IGV4cG9ydCBhbiBpbXBvcnRUcmFuc2xhdGlvbiBmdW5jdGlvbmApO1xuICB9XG5cbiAgY29uc3QgaW1wb3J0UHJvbWlzZSA9IG1vZHVsZS5pbXBvcnRUcmFuc2xhdGlvbihgLi8ke2xhbmd1YWdlfS5qc29uYCk7XG5cbiAgaWYgKCEoaW1wb3J0UHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UpKSB7XG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBgTW9kdWxlICR7bmFtZXNwYWNlfSBleHBvcnRzIGFuIGltcG9ydFRyYW5zbGF0aW9uIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3QgcmV0dXJuIGEgcHJvbWlzZS4gRGlkIHlvdSBmb3JnZXQgdG8gc2V0IHJlcXVpcmUuY29udGV4dCBtb2RlIHRvICdsYXp5Jz9gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gaW1wb3J0UHJvbWlzZTtcbn1cbiJdLCJuYW1lcyI6WyJpMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImluaXRSZWFjdEkxOG5leHQiLCJtZXJnZSIsImdldENvbmZpZ0ludGVybmFsIiwiaW1wb3J0RHluYW1pYyIsInNldHVwSTE4biIsIndpbmRvdyIsImRlZmF1bHQiLCJsYW5ndWFnZUNoYW5nZU9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsInJlRGV0ZWN0IiwidW5kZWZpbmVkIiwiY2hhbmdlTGFuZ3VhZ2UiLCJjYXRjaCIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJvYnNlcnZlIiwiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJhdHRyaWJ1dGVGaWx0ZXIiLCJhdHRyaWJ1dGVzIiwib24iLCJzZXRBdHRyaWJ1dGUiLCJkaXIiLCJ1c2UiLCJ0eXBlIiwiaW5pdCIsInJlYWQiLCJsYW5ndWFnZSIsIm5hbWVzcGFjZSIsImNhbGxiYWNrIiwiRXJyb3IiLCJ0aGVuIiwiY29uZmlnIiwidHJhbnNsYXRpb25zIiwib3ZlcnJpZGVzIiwiZXJyIiwibW9kdWxlIiwiUHJvbWlzZSIsImFsbCIsImdldEltcG9ydFByb21pc2UiLCJqc29uIiwiZGV0ZWN0aW9uIiwib3JkZXIiLCJsb29rdXBRdWVyeXN0cmluZyIsImZhbGxiYWNrTG5nIiwiaW1wb3J0VHJhbnNsYXRpb24iLCJpbXBvcnRQcm9taXNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/locale.ts\n");
39
-
40
- /***/ }),
41
-
42
- /***/ "./src/run.ts":
43
- /*!********************!*\
44
- !*** ./src/run.ts ***!
45
- \********************/
46
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
47
-
48
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! single-spa */ \"webpack/sharing/consume/default/single-spa/single-spa\");\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(single_spa__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _apps__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./locale */ \"./src/locale.ts\");\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ui */ \"./src/ui/index.ts\");\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 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_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 _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}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return(g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g);\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\n\n\n\n\n// @internal\n// used to track when the window.installedModules global is finalised\n// so we can pre-load all modules\nvar REGISTRATION_PROMISES = Symbol(\"openmrs_registration_promises\");\nfunction setupApps() {\n return _setupApps.apply(this, arguments);\n}\nfunction _setupApps() {\n _setupApps = /**\n * Sets up the frontend modules (apps). Uses the defined export\n * from the root modules of the apps. This is done by reading the\n * list of apps from the routes.registry.json file, which serves\n * as the registry of all apps in the application.\n */ _async_to_generator(function() {\n var scriptTags, promises, i, routes, modules, registrationPromises;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n scriptTags = document.querySelectorAll(\"script[type='openmrs-routes']\");\n promises = [];\n for(i = 0; i < scriptTags.length; i++){\n promises.push((function() {\n var _ref = _async_to_generator(function(scriptTag) {\n var routes, e, _scriptTag_src;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n routes = undefined;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 5,\n ,\n 6\n ]);\n if (!scriptTag.textContent) return [\n 3,\n 2\n ];\n routes = JSON.parse(scriptTag.textContent);\n return [\n 3,\n 4\n ];\n case 2:\n if (!scriptTag.src) return [\n 3,\n 4\n ];\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.openmrsFetch)(scriptTag.src)\n ];\n case 3:\n routes = _state.sent().data;\n _state.label = 4;\n case 4:\n return [\n 3,\n 6\n ];\n case 5:\n e = _state.sent();\n console.error(\"Caught error while loading routes from \".concat((_scriptTag_src = scriptTag.src) !== null && _scriptTag_src !== void 0 ? _scriptTag_src : \"JSON script tag content\"), e);\n return [\n 2,\n {}\n ];\n case 6:\n return [\n 2,\n Promise.resolve(routes !== null && routes !== void 0 ? routes : {})\n ];\n }\n });\n });\n return function(scriptTag) {\n return _ref.apply(this, arguments);\n };\n })()(scriptTags.item(i)));\n }\n return [\n 4,\n Promise.all(promises)\n ];\n case 1:\n routes = _state.sent().reduce(function(accumulatedRoutes, routes) {\n return _object_spread({}, accumulatedRoutes, routes);\n }, {});\n modules = [];\n registrationPromises = Object.entries(routes).map(function() {\n var _ref = _async_to_generator(function(param) {\n var _param, module, routes;\n return _ts_generator(this, function(_state) {\n _param = _sliced_to_array(param, 2), module = _param[0], routes = _param[1];\n modules.push([\n module,\n routes\n ]);\n (0,_apps__WEBPACK_IMPORTED_MODULE_2__.registerApp)(module, routes);\n return [\n 2\n ];\n });\n });\n return function(_) {\n return _ref.apply(this, arguments);\n };\n }());\n window[REGISTRATION_PROMISES] = Promise.all(registrationPromises);\n window.installedModules = modules;\n return [\n 2\n ];\n }\n });\n });\n return _setupApps.apply(this, arguments);\n}\nfunction loadConfigs(configs) {\n return _loadConfigs.apply(this, arguments);\n}\nfunction _loadConfigs() {\n _loadConfigs = /**\n * Loads the provided configurations and sets them in the system.\n */ _async_to_generator(function(configs) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, config;\n return _ts_generator(this, function(_state) {\n _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(_iterator = configs[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n config = _step.value;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.provide)(config.value, config.name);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return [\n 2\n ];\n });\n });\n return _loadConfigs.apply(this, arguments);\n}\n/**\n * Invoked when the connectivity is changed.\n */ function connectivityChanged() {\n var online = navigator.onLine;\n // NB We do not wait for this to be done; it is simply scheduled\n (0,single_spa__WEBPACK_IMPORTED_MODULE_0__.triggerAppChange)();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.dispatchConnectivityChanged)(online);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showToast)({\n critical: true,\n description: \"Connection: \".concat(online ? \"online\" : \"offline\"),\n title: \"App\",\n kind: online ? \"success\" : \"warning\"\n });\n}\n/**\n * Runs the shell by importing the translations and starting single SPA.\n */ function runShell() {\n window.addEventListener(\"offline\", connectivityChanged);\n window.addEventListener(\"online\", connectivityChanged);\n return (0,_locale__WEBPACK_IMPORTED_MODULE_3__.setupI18n)().catch(function(err) {\n return console.error(\"Failed to initialize translations\", err);\n }).then(function() {\n return (0,single_spa__WEBPACK_IMPORTED_MODULE_0__.start)();\n });\n}\nfunction preloadScripts() {\n return _preloadScripts.apply(this, arguments);\n}\nfunction _preloadScripts() {\n _preloadScripts = _async_to_generator(function() {\n var _ref, importMap;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n Promise.all([\n window[REGISTRATION_PROMISES],\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.getCurrentImportMap)()\n ])\n ];\n case 1:\n _ref = _sliced_to_array.apply(void 0, [\n _state.sent(),\n 2\n ]), importMap = _ref[1];\n window.installedModules.map(function() {\n var _ref = _async_to_generator(function(param) {\n var _param, module;\n return _ts_generator(this, function(_state) {\n _param = _sliced_to_array(param, 1), module = _param[0];\n // we simply swallow the error here since this is only a preload\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.importDynamic)(module, undefined, {\n importMap: importMap\n }).catch();\n return [\n 2\n ];\n });\n });\n return function(_) {\n return _ref.apply(this, arguments);\n };\n }());\n return [\n 2\n ];\n }\n });\n });\n return _preloadScripts.apply(this, arguments);\n}\nfunction handleInitFailure(e) {\n console.error(e);\n renderFatalErrorPage(e);\n}\nfunction renderFatalErrorPage(e) {\n var template = document.querySelector(\"#app-error\");\n if (template) {\n var fragment = template.content.cloneNode(true);\n var messageContainer = fragment.querySelector('[data-var=\"message\"]');\n if (messageContainer) {\n messageContainer.textContent = (e === null || e === void 0 ? void 0 : e.message) || \"No additional information available.\";\n }\n if (localStorage.getItem(\"openmrs:devtools\") && Object.keys(localStorage).some(function(k) {\n return k.startsWith(\"import-map-override:\");\n })) {\n var appErrorActionButtons = fragment === null || fragment === void 0 ? void 0 : fragment.querySelector(\"#buttons\");\n if (appErrorActionButtons) {\n var clearDevOverridesButton = document.createElement(\"button\");\n clearDevOverridesButton.className = \"cds--btn\";\n clearDevOverridesButton.innerHTML = \"Clear dev overrides\";\n clearDevOverridesButton.onclick = clearDevOverrides;\n appErrorActionButtons.appendChild(clearDevOverridesButton);\n }\n }\n document.body.appendChild(fragment);\n }\n}\nfunction clearDevOverrides() {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(localStorage)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n if (key.startsWith(\"import-map-override:\") && ![\n \"import-map-override:react\",\n \"import-map-override:react-dom\"\n ].includes(key)) {\n localStorage.removeItem(key);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n location.reload();\n}\nfunction createConfigLoader(configUrls) {\n var loadingConfigs = Promise.all(configUrls.map(function(configUrl) {\n var interpolatedUrl = (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.interpolateUrl)(configUrl);\n return fetch(interpolatedUrl).then(function(res) {\n return res.json();\n }).then(function(config) {\n return {\n name: configUrl,\n value: config\n };\n }).catch(function(err) {\n console.error('Loading the config from \"'.concat(configUrl, '\" failed.'), err);\n return {\n name: configUrl,\n value: {}\n };\n });\n }));\n return function() {\n return loadingConfigs.then(loadConfigs);\n };\n}\nfunction showNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderInlineNotifications)(document.querySelector(\".omrs-inline-notifications-container\"));\n return;\n}\nfunction showActionableNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderActionableNotifications)(document.querySelector(\".omrs-actionable-notifications-container\"));\n}\nfunction showToasts() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderToasts)(document.querySelector(\".omrs-toasts-container\"));\n}\nfunction showSnackbars() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderSnackbars)(document.querySelector(\".omrs-snackbars-container\"));\n}\nfunction showModals() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderModals)(document.querySelector(\".omrs-modals-container\"));\n}\nfunction showLoadingSpinner() {\n return (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderLoadingSpinner)(document.body);\n}\n/**\n * Registers the extensions coming from the app shell itself.\n */ function registerCoreExtensions() {\n var extensions = (0,_ui__WEBPACK_IMPORTED_MODULE_4__.getCoreExtensions)();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = extensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n (0,_apps__WEBPACK_IMPORTED_MODULE_2__.tryRegisterExtension)(_ui__WEBPACK_IMPORTED_MODULE_4__.appName, extension);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nfunction setupOffline() {\n return _setupOffline.apply(this, arguments);\n}\nfunction _setupOffline() {\n _setupOffline = _async_to_generator(function() {\n var error;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 3,\n ,\n 4\n ]);\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.registerOmrsServiceWorker)(\"\".concat(window.getOpenmrsSpaBase(), \"service-worker.js\"))\n ];\n case 1:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.activateOfflineCapability)()\n ];\n case 2:\n _state.sent();\n setupOfflineStaticDependencyPrecaching();\n return [\n 3,\n 4\n ];\n case 3:\n error = _state.sent();\n console.error(\"Error while setting up offline mode.\", error);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showNotification)({\n kind: \"error\",\n title: \"Offline Setup Error\",\n description: error.message\n });\n return [\n 3,\n 4\n ];\n case 4:\n return [\n 2\n ];\n }\n });\n });\n return _setupOffline.apply(this, arguments);\n}\nfunction setupOfflineStaticDependencyPrecaching() {\n var precacheDelay = 1000 * 60 * 5;\n var lastPrecache = null;\n subscribeOnlineAndLoginChange(function(online, hasLoggedInUser) {\n var hasExceededPrecacheDelay = !lastPrecache || new Date().getTime() - lastPrecache.getTime() > precacheDelay;\n if (hasLoggedInUser && online && hasExceededPrecacheDelay) {\n lastPrecache = new Date();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.dispatchPrecacheStaticDependencies)();\n }\n });\n}\nfunction subscribeOnlineAndLoginChange(cb) {\n var isOnline = false;\n var hasLoggedInUser = false;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.getCurrentUser)({\n includeAuthStatus: false\n }).subscribe(function(user) {\n hasLoggedInUser = !!user;\n cb(isOnline, hasLoggedInUser);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeConnectivity)(function(param) {\n var online = param.online;\n isOnline = online;\n cb(online, hasLoggedInUser);\n });\n}\nfunction precacheGlobalStaticDependencies() {\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction _precacheGlobalStaticDependencies() {\n _precacheGlobalStaticDependencies = _async_to_generator(function() {\n var sessionPathUrl;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n precacheImportMap()\n ];\n case 1:\n _state.sent();\n sessionPathUrl = new URL(\"\".concat(window.openmrsBase, \"/ws/rest/v1/session\"), window.location.origin).href;\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.messageOmrsServiceWorker)({\n type: \"registerDynamicRoute\",\n url: sessionPathUrl,\n strategy: \"network-first\"\n })\n ];\n case 2:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.openmrsFetch)(\"/ws/rest/v1/session\").catch(function(e) {\n return console.warn(\"Failed to precache the user session data from the app shell. MFs depending on this data may run into problems while offline.\", e);\n })\n ];\n case 3:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction precacheImportMap() {\n return _precacheImportMap.apply(this, arguments);\n}\nfunction _precacheImportMap() {\n _precacheImportMap = _async_to_generator(function() {\n var importMap;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n window.importMapOverrides.getCurrentPageMap()\n ];\n case 1:\n importMap = _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.messageOmrsServiceWorker)({\n type: \"onImportMapChanged\",\n importMap: importMap\n })\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheImportMap.apply(this, arguments);\n}\nfunction setupOfflineCssClasses() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeConnectivity)(function(param) {\n var online = param.online;\n var body = document.querySelector(\"body\");\n if (online) {\n body.classList.remove(\"omrs-offline\");\n } else {\n body.classList.add(\"omrs-offline\");\n }\n });\n}\nfunction run(configUrls, offline) {\n var closeLoading = showLoadingSpinner();\n var provideConfigs = createConfigLoader(configUrls);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.integrateBreakpoints)();\n showToasts();\n showModals();\n showNotifications();\n showActionableNotifications();\n showSnackbars();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeActionableNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showActionableNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeToastShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showToast);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeSnackbarShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showSnackbar);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribePrecacheStaticDependencies)(precacheGlobalStaticDependencies);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.setupApiModule)();\n registerCoreExtensions();\n return setupApps().then(_apps__WEBPACK_IMPORTED_MODULE_2__.finishRegisteringAllApps).then(setupOfflineCssClasses).then(provideConfigs).then(runShell).catch(handleInitFailure).then(closeLoading).then(offline ? setupOffline : undefined).then(preloadScripts);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkEsQ0FBQ1YsaUZBQWdCQTtJQUMzQ1cseUdBQW9DQSxDQUFDViwyRkFBMEJBO0lBQy9EVyx3RkFBbUJBLENBQUNWLDBFQUFTQTtJQUM3QlcsMkZBQXNCQSxDQUFDViw2RUFBWUE7SUFDbkNrQix3R0FBbUNBLENBQUMrSDtJQUNwQ3ZKLG1GQUFjQTtJQUNkcUk7SUFFQSxPQUFPaEcsWUFDSmtELElBQUksQ0FBQzFELDJEQUF3QkEsRUFDN0IwRCxJQUFJLENBQUM2RSx3QkFDTDdFLElBQUksQ0FBQ29GLGdCQUNMcEYsSUFBSSxDQUFDSixVQUNMRSxLQUFLLENBQUNLLG1CQUNOSCxJQUFJLENBQUNtRixjQUNMbkYsSUFBSSxDQUFDa0YsVUFBVWpDLGVBQWV0RixTQUFTLEVBQ3ZDcUMsSUFBSSxDQUFDQztBQUNWLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4vc3JjL3J1bi50cz9iYzI2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0YXJ0LCB0cmlnZ2VyQXBwQ2hhbmdlIH0gZnJvbSAnc2luZ2xlLXNwYSc7XG5pbXBvcnQge1xuICBzZXR1cEFwaU1vZHVsZSxcbiAgcmVuZGVyTG9hZGluZ1NwaW5uZXIsXG4gIENvbmZpZyxcbiAgcHJvdmlkZSxcbiAgc2hvd05vdGlmaWNhdGlvbixcbiAgc2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb24sXG4gIHNob3dUb2FzdCxcbiAgc2hvd1NuYWNrYmFyLFxuICByZW5kZXJJbmxpbmVOb3RpZmljYXRpb25zLFxuICByZW5kZXJBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyxcbiAgcmVuZGVyVG9hc3RzLFxuICByZW5kZXJTbmFja2JhcnMsXG4gIGludGVncmF0ZUJyZWFrcG9pbnRzLFxuICBkaXNwYXRjaENvbm5lY3Rpdml0eUNoYW5nZWQsXG4gIHN1YnNjcmliZU5vdGlmaWNhdGlvblNob3duLFxuICBzdWJzY3JpYmVBY3Rpb25hYmxlTm90aWZpY2F0aW9uU2hvd24sXG4gIHN1YnNjcmliZVRvYXN0U2hvd24sXG4gIHN1YnNjcmliZVNuYWNrYmFyU2hvd24sXG4gIHJlZ2lzdGVyT21yc1NlcnZpY2VXb3JrZXIsXG4gIG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcixcbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5LFxuICBnZXRDdXJyZW50VXNlcixcbiAgcmVuZGVyTW9kYWxzLFxuICBkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzLFxuICBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5LFxuICBzdWJzY3JpYmVQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyxcbiAgb3Blbm1yc0ZldGNoLFxuICBpbnRlcnBvbGF0ZVVybCxcbiAgT3Blbm1yc1JvdXRlcyxcbiAgZ2V0Q3VycmVudEltcG9ydE1hcCxcbiAgaW1wb3J0RHluYW1pYyxcbn0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnO1xuaW1wb3J0IHsgZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzLCByZWdpc3RlckFwcCwgdHJ5UmVnaXN0ZXJFeHRlbnNpb24gfSBmcm9tICcuL2FwcHMnO1xuaW1wb3J0IHsgc2V0dXBJMThuIH0gZnJvbSAnLi9sb2NhbGUnO1xuaW1wb3J0IHsgYXBwTmFtZSwgZ2V0Q29yZUV4dGVuc2lvbnMgfSBmcm9tICcuL3VpJztcblxuLy8gQGludGVybmFsXG4vLyB1c2VkIHRvIHRyYWNrIHdoZW4gdGhlIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzIGdsb2JhbCBpcyBmaW5hbGlzZWRcbi8vIHNvIHdlIGNhbiBwcmUtbG9hZCBhbGwgbW9kdWxlc1xuY29uc3QgUkVHSVNUUkFUSU9OX1BST01JU0VTID0gU3ltYm9sKCdvcGVubXJzX3JlZ2lzdHJhdGlvbl9wcm9taXNlcycpO1xuXG4vKipcbiAqIFNldHMgdXAgdGhlIGZyb250ZW5kIG1vZHVsZXMgKGFwcHMpLiBVc2VzIHRoZSBkZWZpbmVkIGV4cG9ydFxuICogZnJvbSB0aGUgcm9vdCBtb2R1bGVzIG9mIHRoZSBhcHBzLiBUaGlzIGlzIGRvbmUgYnkgcmVhZGluZyB0aGVcbiAqIGxpc3Qgb2YgYXBwcyBmcm9tIHRoZSByb3V0ZXMucmVnaXN0cnkuanNvbiBmaWxlLCB3aGljaCBzZXJ2ZXNcbiAqIGFzIHRoZSByZWdpc3RyeSBvZiBhbGwgYXBwcyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNldHVwQXBwcygpIHtcbiAgY29uc3Qgc2NyaXB0VGFncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTFNjcmlwdEVsZW1lbnQ+KFwic2NyaXB0W3R5cGU9J29wZW5tcnMtcm91dGVzJ11cIik7XG5cbiAgY29uc3QgcHJvbWlzZXM6IEFycmF5PFByb21pc2U8T3Blbm1yc1JvdXRlcz4+ID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2NyaXB0VGFncy5sZW5ndGg7IGkrKykge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICAoYXN5bmMgKHNjcmlwdFRhZykgPT4ge1xuICAgICAgICBsZXQgcm91dGVzOiBPcGVubXJzUm91dGVzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChzY3JpcHRUYWcudGV4dENvbnRlbnQpIHtcbiAgICAgICAgICAgIHJvdXRlcyA9IEpTT04ucGFyc2Uoc2NyaXB0VGFnLnRleHRDb250ZW50KSBhcyBPcGVubXJzUm91dGVzO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc2NyaXB0VGFnLnNyYykge1xuICAgICAgICAgICAgcm91dGVzID0gKGF3YWl0IG9wZW5tcnNGZXRjaDxPcGVubXJzUm91dGVzPihzY3JpcHRUYWcuc3JjKSkuZGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBDYXVnaHQgZXJyb3Igd2hpbGUgbG9hZGluZyByb3V0ZXMgZnJvbSAke3NjcmlwdFRhZy5zcmMgPz8gJ0pTT04gc2NyaXB0IHRhZyBjb250ZW50J31gLCBlKTtcblxuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocm91dGVzID8/IHt9KTtcbiAgICAgIH0pKHNjcmlwdFRhZ3MuaXRlbShpKSksXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJvdXRlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLnJlZHVjZShcbiAgICAoYWNjdW11bGF0ZWRSb3V0ZXMsIHJvdXRlcykgPT4gKHsgLi4uYWNjdW11bGF0ZWRSb3V0ZXMsIC4uLnJvdXRlcyB9KSxcbiAgICB7fSxcbiAgKTtcblxuICBjb25zdCBtb2R1bGVzOiB0eXBlb2Ygd2luZG93Lmluc3RhbGxlZE1vZHVsZXMgPSBbXTtcbiAgY29uc3QgcmVnaXN0cmF0aW9uUHJvbWlzZXMgPSBPYmplY3QuZW50cmllcyhyb3V0ZXMpLm1hcChhc3luYyAoW21vZHVsZSwgcm91dGVzXSkgPT4ge1xuICAgIG1vZHVsZXMucHVzaChbbW9kdWxlLCByb3V0ZXNdKTtcbiAgICByZWdpc3RlckFwcChtb2R1bGUsIHJvdXRlcyk7XG4gIH0pO1xuXG4gIHdpbmRvd1tSRUdJU1RSQVRJT05fUFJPTUlTRVNdID0gUHJvbWlzZS5hbGwocmVnaXN0cmF0aW9uUHJvbWlzZXMpO1xuICB3aW5kb3cuaW5zdGFsbGVkTW9kdWxlcyA9IG1vZHVsZXM7XG59XG5cbi8qKlxuICogTG9hZHMgdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb25zIGFuZCBzZXRzIHRoZW0gaW4gdGhlIHN5c3RlbS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZENvbmZpZ3MoY29uZmlnczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBDb25maWcgfT4pIHtcbiAgZm9yIChjb25zdCBjb25maWcgb2YgY29uZmlncykge1xuICAgIHByb3ZpZGUoY29uZmlnLnZhbHVlLCBjb25maWcubmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnZva2VkIHdoZW4gdGhlIGNvbm5lY3Rpdml0eSBpcyBjaGFuZ2VkLlxuICovXG5mdW5jdGlvbiBjb25uZWN0aXZpdHlDaGFuZ2VkKCkge1xuICBjb25zdCBvbmxpbmUgPSBuYXZpZ2F0b3Iub25MaW5lO1xuICAvLyBOQiBXZSBkbyBub3Qgd2FpdCBmb3IgdGhpcyB0byBiZSBkb25lOyBpdCBpcyBzaW1wbHkgc2NoZWR1bGVkXG4gIHRyaWdnZXJBcHBDaGFuZ2UoKTtcblxuICBkaXNwYXRjaENvbm5lY3Rpdml0eUNoYW5nZWQob25saW5lKTtcbiAgc2hvd1RvYXN0KHtcbiAgICBjcml0aWNhbDogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjogYENvbm5lY3Rpb246ICR7b25saW5lID8gJ29ubGluZScgOiAnb2ZmbGluZSd9YCxcbiAgICB0aXRsZTogJ0FwcCcsXG4gICAga2luZDogb25saW5lID8gJ3N1Y2Nlc3MnIDogJ3dhcm5pbmcnLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBzaGVsbCBieSBpbXBvcnRpbmcgdGhlIHRyYW5zbGF0aW9ucyBhbmQgc3RhcnRpbmcgc2luZ2xlIFNQQS5cbiAqL1xuZnVuY3Rpb24gcnVuU2hlbGwoKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgY29ubmVjdGl2aXR5Q2hhbmdlZCk7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCBjb25uZWN0aXZpdHlDaGFuZ2VkKTtcbiAgcmV0dXJuIHNldHVwSTE4bigpXG4gICAgLmNhdGNoKChlcnIpID0+IGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBpbml0aWFsaXplIHRyYW5zbGF0aW9uc2AsIGVycikpXG4gICAgLnRoZW4oKCkgPT4gc3RhcnQoKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByZWxvYWRTY3JpcHRzKCkge1xuICBjb25zdCBbLCBpbXBvcnRNYXBdID0gYXdhaXQgUHJvbWlzZS5hbGwoW3dpbmRvd1tSRUdJU1RSQVRJT05fUFJPTUlTRVNdLCBnZXRDdXJyZW50SW1wb3J0TWFwKCldKTtcblxuICB3aW5kb3cuaW5zdGFsbGVkTW9kdWxlcy5tYXAoYXN5bmMgKFttb2R1bGVdKSA9PiB7XG4gICAgLy8gd2Ugc2ltcGx5IHN3YWxsb3cgdGhlIGVycm9yIGhlcmUgc2luY2UgdGhpcyBpcyBvbmx5IGEgcHJlbG9hZFxuICAgIGltcG9ydER5bmFtaWMobW9kdWxlLCB1bmRlZmluZWQsIHsgaW1wb3J0TWFwIH0pLmNhdGNoKCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVJbml0RmFpbHVyZShlOiBFcnJvcikge1xuICBjb25zb2xlLmVycm9yKGUpO1xuICByZW5kZXJGYXRhbEVycm9yUGFnZShlKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRmF0YWxFcnJvclBhZ2UoZT86IEVycm9yKSB7XG4gIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MVGVtcGxhdGVFbGVtZW50PignI2FwcC1lcnJvcicpO1xuXG4gIGlmICh0ZW1wbGF0ZSkge1xuICAgIGNvbnN0IGZyYWdtZW50ID0gdGVtcGxhdGUuY29udGVudC5jbG9uZU5vZGUodHJ1ZSkgYXMgRG9jdW1lbnRGcmFnbWVudDtcbiAgICBjb25zdCBtZXNzYWdlQ29udGFpbmVyID0gZnJhZ21lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtdmFyPVwibWVzc2FnZVwiXScpO1xuXG4gICAgaWYgKG1lc3NhZ2VDb250YWluZXIpIHtcbiAgICAgIG1lc3NhZ2VDb250YWluZXIudGV4dENvbnRlbnQgPSBlPy5tZXNzYWdlIHx8ICdObyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGF2YWlsYWJsZS4nO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdvcGVubXJzOmRldnRvb2xzJykgJiZcbiAgICAgIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkuc29tZSgoaykgPT4gay5zdGFydHNXaXRoKCdpbXBvcnQtbWFwLW92ZXJyaWRlOicpKVxuICAgICkge1xuICAgICAgY29uc3QgYXBwRXJyb3JBY3Rpb25CdXR0b25zID0gZnJhZ21lbnQ/LnF1ZXJ5U2VsZWN0b3IoJyNidXR0b25zJyk7XG4gICAgICBpZiAoYXBwRXJyb3JBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgIGNvbnN0IGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgICAgIGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uLmNsYXNzTmFtZSA9ICdjZHMtLWJ0bic7XG4gICAgICAgIGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uLmlubmVySFRNTCA9ICdDbGVhciBkZXYgb3ZlcnJpZGVzJztcbiAgICAgICAgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24ub25jbGljayA9IGNsZWFyRGV2T3ZlcnJpZGVzO1xuICAgICAgICBhcHBFcnJvckFjdGlvbkJ1dHRvbnMuYXBwZW5kQ2hpbGQoY2xlYXJEZXZPdmVycmlkZXNCdXR0b24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFyRGV2T3ZlcnJpZGVzKCkge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpKSB7XG4gICAgaWYgKFxuICAgICAga2V5LnN0YXJ0c1dpdGgoJ2ltcG9ydC1tYXAtb3ZlcnJpZGU6JykgJiZcbiAgICAgICFbJ2ltcG9ydC1tYXAtb3ZlcnJpZGU6cmVhY3QnLCAnaW1wb3J0LW1hcC1vdmVycmlkZTpyZWFjdC1kb20nXS5pbmNsdWRlcyhrZXkpXG4gICAgKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIH1cbiAgfVxuICBsb2NhdGlvbi5yZWxvYWQoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29uZmlnTG9hZGVyKGNvbmZpZ1VybHM6IEFycmF5PHN0cmluZz4pIHtcbiAgY29uc3QgbG9hZGluZ0NvbmZpZ3MgPSBQcm9taXNlLmFsbChcbiAgICBjb25maWdVcmxzLm1hcCgoY29uZmlnVXJsKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcnBvbGF0ZWRVcmwgPSBpbnRlcnBvbGF0ZVVybChjb25maWdVcmwpO1xuICAgICAgcmV0dXJuIGZldGNoKGludGVycG9sYXRlZFVybClcbiAgICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNvbmZpZykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgdmFsdWU6IGNvbmZpZyxcbiAgICAgICAgfSkpXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgTG9hZGluZyB0aGUgY29uZmlnIGZyb20gXCIke2NvbmZpZ1VybH1cIiBmYWlsZWQuYCwgZXJyKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogY29uZmlnVXJsLFxuICAgICAgICAgICAgdmFsdWU6IHt9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH0pLFxuICApO1xuICByZXR1cm4gKCkgPT4gbG9hZGluZ0NvbmZpZ3MudGhlbihsb2FkQ29uZmlncyk7XG59XG5cbmZ1bmN0aW9uIHNob3dOb3RpZmljYXRpb25zKCkge1xuICByZW5kZXJJbmxpbmVOb3RpZmljYXRpb25zKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5vbXJzLWlubGluZS1ub3RpZmljYXRpb25zLWNvbnRhaW5lcicpKTtcbiAgcmV0dXJuO1xufVxuXG5mdW5jdGlvbiBzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoKSB7XG4gIHJlbmRlckFjdGlvbmFibGVOb3RpZmljYXRpb25zKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5vbXJzLWFjdGlvbmFibGUtbm90aWZpY2F0aW9ucy1jb250YWluZXInKSk7XG59XG5cbmZ1bmN0aW9uIHNob3dUb2FzdHMoKSB7XG4gIHJlbmRlclRvYXN0cyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcub21ycy10b2FzdHMtY29udGFpbmVyJykpO1xufVxuXG5mdW5jdGlvbiBzaG93U25hY2tiYXJzKCkge1xuICByZW5kZXJTbmFja2JhcnMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm9tcnMtc25hY2tiYXJzLWNvbnRhaW5lcicpKTtcbn1cblxuZnVuY3Rpb24gc2hvd01vZGFscygpIHtcbiAgcmVuZGVyTW9kYWxzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5vbXJzLW1vZGFscy1jb250YWluZXInKSk7XG59XG5cbmZ1bmN0aW9uIHNob3dMb2FkaW5nU3Bpbm5lcigpIHtcbiAgcmV0dXJuIHJlbmRlckxvYWRpbmdTcGlubmVyKGRvY3VtZW50LmJvZHkpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9ucyBjb21pbmcgZnJvbSB0aGUgYXBwIHNoZWxsIGl0c2VsZi5cbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucygpIHtcbiAgY29uc3QgZXh0ZW5zaW9ucyA9IGdldENvcmVFeHRlbnNpb25zKCk7XG4gIGZvciAoY29uc3QgZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbnMpIHtcbiAgICB0cnlSZWdpc3RlckV4dGVuc2lvbihhcHBOYW1lLCBleHRlbnNpb24pO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNldHVwT2ZmbGluZSgpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCByZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyKGAke3dpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSgpfXNlcnZpY2Utd29ya2VyLmpzYCk7XG4gICAgYXdhaXQgYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSgpO1xuICAgIHNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgc2V0dGluZyB1cCBvZmZsaW5lIG1vZGUuJywgZXJyb3IpO1xuICAgIHNob3dOb3RpZmljYXRpb24oe1xuICAgICAga2luZDogJ2Vycm9yJyxcbiAgICAgIHRpdGxlOiAnT2ZmbGluZSBTZXR1cCBFcnJvcicsXG4gICAgICBkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSxcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZygpIHtcbiAgY29uc3QgcHJlY2FjaGVEZWxheSA9IDEwMDAgKiA2MCAqIDU7XG4gIGxldCBsYXN0UHJlY2FjaGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBzdWJzY3JpYmVPbmxpbmVBbmRMb2dpbkNoYW5nZSgob25saW5lLCBoYXNMb2dnZWRJblVzZXIpID0+IHtcbiAgICBjb25zdCBoYXNFeGNlZWRlZFByZWNhY2hlRGVsYXkgPSAhbGFzdFByZWNhY2hlIHx8IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gbGFzdFByZWNhY2hlLmdldFRpbWUoKSA+IHByZWNhY2hlRGVsYXk7XG5cbiAgICBpZiAoaGFzTG9nZ2VkSW5Vc2VyICYmIG9ubGluZSAmJiBoYXNFeGNlZWRlZFByZWNhY2hlRGVsYXkpIHtcbiAgICAgIGxhc3RQcmVjYWNoZSA9IG5ldyBEYXRlKCk7XG4gICAgICBkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlT25saW5lQW5kTG9naW5DaGFuZ2UoY2I6IChvbmxpbmU6IGJvb2xlYW4sIGhhc0xvZ2dlZEluVXNlcjogYm9vbGVhbikgPT4gdm9pZCkge1xuICBsZXQgaXNPbmxpbmUgPSBmYWxzZTtcbiAgbGV0IGhhc0xvZ2dlZEluVXNlciA9IGZhbHNlO1xuXG4gIGdldEN1cnJlbnRVc2VyKHsgaW5jbHVkZUF1dGhTdGF0dXM6IGZhbHNlIH0pLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgIGhhc0xvZ2dlZEluVXNlciA9ICEhdXNlcjtcbiAgICBjYihpc09ubGluZSwgaGFzTG9nZ2VkSW5Vc2VyKTtcbiAgfSk7XG5cbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5KCh7IG9ubGluZSB9KSA9PiB7XG4gICAgaXNPbmxpbmUgPSBvbmxpbmU7XG4gICAgY2Iob25saW5lLCBoYXNMb2dnZWRJblVzZXIpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMoKSB7XG4gIGF3YWl0IHByZWNhY2hlSW1wb3J0TWFwKCk7XG5cbiAgLy8gQnkgZGVmYXVsdCwgY2FjaGUgdGhlIHNlc3Npb24gZW5kcG9pbnQuXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGEgbG90IG9mIHVzZXIvc2Vzc2lvbiByZWxhdGVkIGZ1bmN0aW9ucyBhbHNvIHdvcmsgb2ZmbGluZS5cbiAgY29uc3Qgc2Vzc2lvblBhdGhVcmwgPSBuZXcgVVJMKGAke3dpbmRvdy5vcGVubXJzQmFzZX0vd3MvcmVzdC92MS9zZXNzaW9uYCwgd2luZG93LmxvY2F0aW9uLm9yaWdpbikuaHJlZjtcblxuICBhd2FpdCBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIoe1xuICAgIHR5cGU6ICdyZWdpc3RlckR5bmFtaWNSb3V0ZScsXG4gICAgdXJsOiBzZXNzaW9uUGF0aFVybCxcbiAgICBzdHJhdGVneTogJ25ldHdvcmstZmlyc3QnLFxuICB9KTtcblxuICBhd2FpdCBvcGVubXJzRmV0Y2goJy93cy9yZXN0L3YxL3Nlc3Npb24nKS5jYXRjaCgoZSkgPT5cbiAgICBjb25zb2xlLndhcm4oXG4gICAgICAnRmFpbGVkIHRvIHByZWNhY2hlIHRoZSB1c2VyIHNlc3Npb24gZGF0YSBmcm9tIHRoZSBhcHAgc2hlbGwuIE1GcyBkZXBlbmRpbmcgb24gdGhpcyBkYXRhIG1heSBydW4gaW50byBwcm9ibGVtcyB3aGlsZSBvZmZsaW5lLicsXG4gICAgICBlLFxuICAgICksXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByZWNhY2hlSW1wb3J0TWFwKCkge1xuICBjb25zdCBpbXBvcnRNYXAgPSBhd2FpdCB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldEN1cnJlbnRQYWdlTWFwKCk7XG4gIGF3YWl0IG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcih7XG4gICAgdHlwZTogJ29uSW1wb3J0TWFwQ2hhbmdlZCcsXG4gICAgaW1wb3J0TWFwLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0dXBPZmZsaW5lQ3NzQ2xhc3NlcygpIHtcbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5KCh7IG9ubGluZSB9KSA9PiB7XG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKSE7XG4gICAgaWYgKG9ubGluZSkge1xuICAgICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdvbXJzLW9mZmxpbmUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKCdvbXJzLW9mZmxpbmUnKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuKGNvbmZpZ1VybHM6IEFycmF5PHN0cmluZz4sIG9mZmxpbmU6IGJvb2xlYW4pIHtcbiAgY29uc3QgY2xvc2VMb2FkaW5nID0gc2hvd0xvYWRpbmdTcGlubmVyKCk7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdzID0gY3JlYXRlQ29uZmlnTG9hZGVyKGNvbmZpZ1VybHMpO1xuXG4gIGludGVncmF0ZUJyZWFrcG9pbnRzKCk7XG4gIHNob3dUb2FzdHMoKTtcbiAgc2hvd01vZGFscygpO1xuICBzaG93Tm90aWZpY2F0aW9ucygpO1xuICBzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoKTtcbiAgc2hvd1NuYWNrYmFycygpO1xuICBzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93bihzaG93Tm90aWZpY2F0aW9uKTtcbiAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duKHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uKTtcbiAgc3Vic2NyaWJlVG9hc3RTaG93bihzaG93VG9hc3QpO1xuICBzdWJzY3JpYmVTbmFja2JhclNob3duKHNob3dTbmFja2Jhcik7XG4gIHN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzKHByZWNhY2hlR2xvYmFsU3RhdGljRGVwZW5kZW5jaWVzKTtcbiAgc2V0dXBBcGlNb2R1bGUoKTtcbiAgcmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucygpO1xuXG4gIHJldHVybiBzZXR1cEFwcHMoKVxuICAgIC50aGVuKGZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcylcbiAgICAudGhlbihzZXR1cE9mZmxpbmVDc3NDbGFzc2VzKVxuICAgIC50aGVuKHByb3ZpZGVDb25maWdzKVxuICAgIC50aGVuKHJ1blNoZWxsKVxuICAgIC5jYXRjaChoYW5kbGVJbml0RmFpbHVyZSlcbiAgICAudGhlbihjbG9zZUxvYWRpbmcpXG4gICAgLnRoZW4ob2ZmbGluZSA/IHNldHVwT2ZmbGluZSA6IHVuZGVmaW5lZClcbiAgICAudGhlbihwcmVsb2FkU2NyaXB0cyk7XG59XG4iXSwibmFtZXMiOlsic3RhcnQiLCJ0cmlnZ2VyQXBwQ2hhbmdlIiwic2V0dXBBcGlNb2R1bGUiLCJyZW5kZXJMb2FkaW5nU3Bpbm5lciIsInByb3ZpZGUiLCJzaG93Tm90aWZpY2F0aW9uIiwic2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb24iLCJzaG93VG9hc3QiLCJzaG93U25hY2tiYXIiLCJyZW5kZXJJbmxpbmVOb3RpZmljYXRpb25zIiwicmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMiLCJyZW5kZXJUb2FzdHMiLCJyZW5kZXJTbmFja2JhcnMiLCJpbnRlZ3JhdGVCcmVha3BvaW50cyIsImRpc3BhdGNoQ29ubmVjdGl2aXR5Q2hhbmdlZCIsInN1YnNjcmliZU5vdGlmaWNhdGlvblNob3duIiwic3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duIiwic3Vic2NyaWJlVG9hc3RTaG93biIsInN1YnNjcmliZVNuYWNrYmFyU2hvd24iLCJyZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyIiwibWVzc2FnZU9tcnNTZXJ2aWNlV29ya2VyIiwic3Vic2NyaWJlQ29ubmVjdGl2aXR5IiwiZ2V0Q3VycmVudFVzZXIiLCJyZW5kZXJNb2RhbHMiLCJkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwiYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSIsInN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwib3Blbm1yc0ZldGNoIiwiaW50ZXJwb2xhdGVVcmwiLCJnZXRDdXJyZW50SW1wb3J0TWFwIiwiaW1wb3J0RHluYW1pYyIsImZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcyIsInJlZ2lzdGVyQXBwIiwidHJ5UmVnaXN0ZXJFeHRlbnNpb24iLCJzZXR1cEkxOG4iLCJhcHBOYW1lIiwiZ2V0Q29yZUV4dGVuc2lvbnMiLCJSRUdJU1RSQVRJT05fUFJPTUlTRVMiLCJTeW1ib2wiLCJzZXR1cEFwcHMiLCJzY3JpcHRUYWdzIiwicHJvbWlzZXMiLCJpIiwicm91dGVzIiwibW9kdWxlcyIsInJlZ2lzdHJhdGlvblByb21pc2VzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwicHVzaCIsInNjcmlwdFRhZyIsImUiLCJ1bmRlZmluZWQiLCJ0ZXh0Q29udGVudCIsIkpTT04iLCJwYXJzZSIsInNyYyIsImRhdGEiLCJjb25zb2xlIiwiZXJyb3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsIml0ZW0iLCJhbGwiLCJyZWR1Y2UiLCJhY2N1bXVsYXRlZFJvdXRlcyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJtb2R1bGUiLCJ3aW5kb3ciLCJpbnN0YWxsZWRNb2R1bGVzIiwibG9hZENvbmZpZ3MiLCJjb25maWdzIiwiY29uZmlnIiwidmFsdWUiLCJuYW1lIiwiY29ubmVjdGl2aXR5Q2hhbmdlZCIsIm9ubGluZSIsIm5hdmlnYXRvciIsIm9uTGluZSIsImNyaXRpY2FsIiwiZGVzY3JpcHRpb24iLCJ0aXRsZSIsImtpbmQiLCJydW5TaGVsbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXRjaCIsImVyciIsInRoZW4iLCJwcmVsb2FkU2NyaXB0cyIsImltcG9ydE1hcCIsImhhbmRsZUluaXRGYWlsdXJlIiwicmVuZGVyRmF0YWxFcnJvclBhZ2UiLCJ0ZW1wbGF0ZSIsInF1ZXJ5U2VsZWN0b3IiLCJmcmFnbWVudCIsImNvbnRlbnQiLCJjbG9uZU5vZGUiLCJtZXNzYWdlQ29udGFpbmVyIiwibWVzc2FnZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJrZXlzIiwic29tZSIsImsiLCJzdGFydHNXaXRoIiwiYXBwRXJyb3JBY3Rpb25CdXR0b25zIiwiY2xlYXJEZXZPdmVycmlkZXNCdXR0b24iLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiaW5uZXJIVE1MIiwib25jbGljayIsImNsZWFyRGV2T3ZlcnJpZGVzIiwiYXBwZW5kQ2hpbGQiLCJib2R5Iiwia2V5IiwiaW5jbHVkZXMiLCJyZW1vdmVJdGVtIiwibG9jYXRpb24iLCJyZWxvYWQiLCJjcmVhdGVDb25maWdMb2FkZXIiLCJjb25maWdVcmxzIiwibG9hZGluZ0NvbmZpZ3MiLCJjb25maWdVcmwiLCJpbnRlcnBvbGF0ZWRVcmwiLCJmZXRjaCIsInJlcyIsImpzb24iLCJzaG93Tm90aWZpY2F0aW9ucyIsInNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyIsInNob3dUb2FzdHMiLCJzaG93U25hY2tiYXJzIiwic2hvd01vZGFscyIsInNob3dMb2FkaW5nU3Bpbm5lciIsInJlZ2lzdGVyQ29yZUV4dGVuc2lvbnMiLCJleHRlbnNpb25zIiwiZXh0ZW5zaW9uIiwic2V0dXBPZmZsaW5lIiwiZ2V0T3Blbm1yc1NwYUJhc2UiLCJzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZyIsInByZWNhY2hlRGVsYXkiLCJsYXN0UHJlY2FjaGUiLCJzdWJzY3JpYmVPbmxpbmVBbmRMb2dpbkNoYW5nZSIsImhhc0xvZ2dlZEluVXNlciIsImhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSIsIkRhdGUiLCJnZXRUaW1lIiwiY2IiLCJpc09ubGluZSIsImluY2x1ZGVBdXRoU3RhdHVzIiwic3Vic2NyaWJlIiwidXNlciIsInByZWNhY2hlR2xvYmFsU3RhdGljRGVwZW5kZW5jaWVzIiwic2Vzc2lvblBhdGhVcmwiLCJwcmVjYWNoZUltcG9ydE1hcCIsIlVSTCIsIm9wZW5tcnNCYXNlIiwib3JpZ2luIiwiaHJlZiIsInR5cGUiLCJ1cmwiLCJzdHJhdGVneSIsIndhcm4iLCJpbXBvcnRNYXBPdmVycmlkZXMiLCJnZXRDdXJyZW50UGFnZU1hcCIsInNldHVwT2ZmbGluZUNzc0NsYXNzZXMiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJhZGQiLCJydW4iLCJvZmZsaW5lIiwiY2xvc2VMb2FkaW5nIiwicHJvdmlkZUNvbmZpZ3MiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/run.ts\n");
49
-
50
- /***/ }),
51
-
52
- /***/ "./src/ui/index.ts":
53
- /*!*************************!*\
54
- !*** ./src/ui/index.ts ***!
55
- \*************************/
56
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57
-
58
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ appName: () => (/* binding */ appName),\n/* harmony export */ getCoreExtensions: () => (/* binding */ getCoreExtensions)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-framework */ \"webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__);\n\nvar appName = \"@openmrs/esm-app-shell\";\nfunction getCoreExtensions() {\n var options = {\n featureName: \"app-shell\",\n moduleName: appName\n };\n return [\n {\n name: \"breadcrumbs-widget\",\n slot: \"breadcrumbs-slot\",\n load: (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__.getAsyncLifecycle)(function() {\n return __webpack_require__.e(/*! import() */ \"src_ui_breadcrumbs_tsx\").then(__webpack_require__.bind(__webpack_require__, /*! ./breadcrumbs */ \"./src/ui/breadcrumbs.tsx\"));\n }, options),\n online: true,\n offline: true\n }\n ];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvdWkvaW5kZXgudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUEyRDtBQUVwRCxJQUFNQyxVQUFVLHlCQUF5QjtBQUV6QyxTQUFTQyxvQkFBb0I7SUFDbEMsSUFBTUMsVUFBVTtRQUNkQyxhQUFhO1FBQ2JDLFlBQVlKO0lBQ2Q7SUFFQSxPQUFPO1FBQ0w7WUFDRUssTUFBTTtZQUNOQyxNQUFNO1lBQ05DLE1BQU1SLHlFQUFpQkEsQ0FBQzt1QkFBTSxvS0FBTztlQUFrQkc7WUFDdkRNLFFBQVEsSUFBSTtZQUNaQyxTQUFTLElBQUk7UUFDZjtLQUNEO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvdWkvaW5kZXgudHM/OWJiYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRBc3luY0xpZmVjeWNsZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1mcmFtZXdvcmsnO1xuXG5leHBvcnQgY29uc3QgYXBwTmFtZSA9ICdAb3Blbm1ycy9lc20tYXBwLXNoZWxsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvcmVFeHRlbnNpb25zKCkge1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIGZlYXR1cmVOYW1lOiAnYXBwLXNoZWxsJyxcbiAgICBtb2R1bGVOYW1lOiBhcHBOYW1lLFxuICB9O1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgbmFtZTogJ2JyZWFkY3J1bWJzLXdpZGdldCcsXG4gICAgICBzbG90OiAnYnJlYWRjcnVtYnMtc2xvdCcsXG4gICAgICBsb2FkOiBnZXRBc3luY0xpZmVjeWNsZSgoKSA9PiBpbXBvcnQoJy4vYnJlYWRjcnVtYnMnKSwgb3B0aW9ucyksXG4gICAgICBvbmxpbmU6IHRydWUsXG4gICAgICBvZmZsaW5lOiB0cnVlLFxuICAgIH0sXG4gIF07XG59XG4iXSwibmFtZXMiOlsiZ2V0QXN5bmNMaWZlY3ljbGUiLCJhcHBOYW1lIiwiZ2V0Q29yZUV4dGVuc2lvbnMiLCJvcHRpb25zIiwiZmVhdHVyZU5hbWUiLCJtb2R1bGVOYW1lIiwibmFtZSIsInNsb3QiLCJsb2FkIiwib25saW5lIiwib2ZmbGluZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/index.ts\n");
59
-
60
- /***/ })
61
-
62
- }]);
@@ -1,2 +0,0 @@
1
- /*! For license information please see 68.js.LICENSE.txt */
2
- (globalThis.webpackChunk_openmrs_esm_devtools_app=globalThis.webpackChunk_openmrs_esm_devtools_app||[]).push([[68],{841:(t,e)=>{var n;!function(){"use strict";var o={}.hasOwnProperty;function r(){for(var t=[],e=0;e<arguments.length;e++){var n=arguments[e];if(n){var i=typeof n;if("string"===i||"number"===i)t.push(n);else if(Array.isArray(n)){if(n.length){var s=r.apply(null,n);s&&t.push(s)}}else if("object"===i){if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]")){t.push(n.toString());continue}for(var a in n)o.call(n,a)&&n[a]&&t.push(a)}}}return t.join(" ")}t.exports?(r.default=r,t.exports=r):void 0===(n=function(){return r}.apply(e,[]))||(t.exports=n)}()},159:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var o=n(233),r=n.n(o),i=n(361),s=n.n(i)()(r());s.push([t.id,".-esm-devtools__devtools-popup-styles__popup___CkRFm {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 50%;\n z-index: 100000;\n background-color: black;\n color: white;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n box-sizing: border-box;\n font-family: sans serif;\n overflow-y: auto;\n}\n\n.-esm-devtools__devtools-popup-styles__tabs___DiZOd {\n width: 100%;\n}\n\n.-esm-devtools__devtools-popup-styles__tabList___ju4HZ {\n position: fixed;\n height: 4rem;\n width: 100%;\n z-index: 1000;\n background-color: black;\n}\n\n.-esm-devtools__devtools-popup-styles__tabPanels___keTDw {\n padding: 1.5rem;\n}\n\n.-esm-devtools__devtools-popup-styles__farRight___hP\\+s\\+ {\n position: absolute;\n right: 24px;\n top: 16px;\n display: flex;\n z-index: 1000;\n}\n\n.-esm-devtools__devtools-popup-styles__closeButton___\\+z1ZU {\n border: none;\n margin: 0;\n padding: 0;\n width: auto;\n overflow: visible;\n height: inherit;\n background: transparent;\n\n /* inherit font & color from ancestor */\n color: inherit;\n font: inherit;\n text-align: inherit;\n\n /* Normalize `line-height`. Cannot be changed from `normal` in Firefox 4+. */\n line-height: normal;\n\n /* Corrects font smoothing for webkit */\n -webkit-font-smoothing: inherit;\n -moz-osx-font-smoothing: inherit;\n\n /* Corrects inability to style clickable `input` types in iOS */\n -webkit-appearance: none;\n}\n\n.-esm-devtools__devtools-popup-styles__closeButton___\\+z1ZU:focus {\n /*\n there's some 3rd party css that turns these off using !important, so the only way to override them is to also use important.\n this is why you don't use !important -- it makes it hard for other people to override it when they need to :(\n */\n outline: solid !important;\n outline-width: thin !important;\n outline-color: #e5e5e6 !important;\n}\n","",{version:3,sources:["webpack://./src/devtools/devtools-popup.styles.css"],names:[],mappings:"AAAA;EACE,eAAe;EACf,SAAS;EACT,OAAO;EACP,WAAW;EACX,WAAW;EACX,eAAe;EACf,uBAAuB;EACvB,YAAY;EACZ,aAAa;EACb,8BAA8B;EAC9B,uBAAuB;EACvB,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;AAClB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,eAAe;EACf,YAAY;EACZ,WAAW;EACX,aAAa;EACb,uBAAuB;AACzB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,SAAS;EACT,aAAa;EACb,aAAa;AACf;;AAEA;EACE,YAAY;EACZ,SAAS;EACT,UAAU;EACV,WAAW;EACX,iBAAiB;EACjB,eAAe;EACf,uBAAuB;;EAEvB,uCAAuC;EACvC,cAAc;EACd,aAAa;EACb,mBAAmB;;EAEnB,4EAA4E;EAC5E,mBAAmB;;EAEnB,uCAAuC;EACvC,+BAA+B;EAC/B,gCAAgC;;EAEhC,+DAA+D;EAC/D,wBAAwB;AAC1B;;AAEA;EACE;;;GAGC;EACD,yBAAyB;EACzB,8BAA8B;EAC9B,iCAAiC;AACnC",sourcesContent:[".popup {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 50%;\n z-index: 100000;\n background-color: black;\n color: white;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n box-sizing: border-box;\n font-family: sans serif;\n overflow-y: auto;\n}\n\n.tabs {\n width: 100%;\n}\n\n.tabList {\n position: fixed;\n height: 4rem;\n width: 100%;\n z-index: 1000;\n background-color: black;\n}\n\n.tabPanels {\n padding: 1.5rem;\n}\n\n.farRight {\n position: absolute;\n right: 24px;\n top: 16px;\n display: flex;\n z-index: 1000;\n}\n\n.closeButton {\n border: none;\n margin: 0;\n padding: 0;\n width: auto;\n overflow: visible;\n height: inherit;\n background: transparent;\n\n /* inherit font & color from ancestor */\n color: inherit;\n font: inherit;\n text-align: inherit;\n\n /* Normalize `line-height`. Cannot be changed from `normal` in Firefox 4+. */\n line-height: normal;\n\n /* Corrects font smoothing for webkit */\n -webkit-font-smoothing: inherit;\n -moz-osx-font-smoothing: inherit;\n\n /* Corrects inability to style clickable `input` types in iOS */\n -webkit-appearance: none;\n}\n\n.closeButton:focus {\n /*\n there's some 3rd party css that turns these off using !important, so the only way to override them is to also use important.\n this is why you don't use !important -- it makes it hard for other people to override it when they need to :(\n */\n outline: solid !important;\n outline-width: thin !important;\n outline-color: #e5e5e6 !important;\n}\n"],sourceRoot:""}]),s.locals={popup:"-esm-devtools__devtools-popup-styles__popup___CkRFm",tabs:"-esm-devtools__devtools-popup-styles__tabs___DiZOd",tabList:"-esm-devtools__devtools-popup-styles__tabList___ju4HZ",tabPanels:"-esm-devtools__devtools-popup-styles__tabPanels___keTDw",farRight:"-esm-devtools__devtools-popup-styles__farRight___hP+s+",closeButton:"-esm-devtools__devtools-popup-styles__closeButton___+z1ZU"};const a=s},702:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var o=n(233),r=n.n(o),i=n(361),s=n.n(i)()(r());s.push([t.id,".-esm-devtools__devtools-styles__devtoolsTriggerButton___jdOjG {\n z-index: 100000;\n background-color: #c6c6c6;\n height: 40px !important;\n width: 40px !important;\n bottom: 10px;\n right: 8px;\n position: fixed;\n border-radius: 2px;\n}\n\n.-esm-devtools__devtools-styles__overridden___6XJFA {\n background-color: #da1e28;\n}\n","",{version:3,sources:["webpack://./src/devtools/devtools.styles.css"],names:[],mappings:"AAAA;EACE,eAAe;EACf,yBAAyB;EACzB,uBAAuB;EACvB,sBAAsB;EACtB,YAAY;EACZ,UAAU;EACV,eAAe;EACf,kBAAkB;AACpB;;AAEA;EACE,yBAAyB;AAC3B",sourcesContent:[".devtoolsTriggerButton {\n z-index: 100000;\n background-color: #c6c6c6;\n height: 40px !important;\n width: 40px !important;\n bottom: 10px;\n right: 8px;\n position: fixed;\n border-radius: 2px;\n}\n\n.overridden {\n background-color: #da1e28;\n}\n"],sourceRoot:""}]),s.locals={devtoolsTriggerButton:"-esm-devtools__devtools-styles__devtoolsTriggerButton___jdOjG",overridden:"-esm-devtools__devtools-styles__overridden___6XJFA"};const a=s},260:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});var o=n(233),r=n.n(o),i=n(361),s=n.n(i)()(r());s.push([t.id,".-esm-devtools__import-map-styles__importMap___ICDeA {\n width: 100%;\n margin-top: 12px;\n}\n","",{version:3,sources:["webpack://./src/devtools/import-map.styles.css"],names:[],mappings:"AAAA;EACE,WAAW;EACX,gBAAgB;AAClB",sourcesContent:[".importMap {\n width: 100%;\n margin-top: 12px;\n}\n"],sourceRoot:""}]),s.locals={importMap:"-esm-devtools__import-map-styles__importMap___ICDeA"};const a=s},361:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=t(e);return e[2]?"@media ".concat(e[2]," {").concat(n,"}"):n})).join("")},e.i=function(t,n,o){"string"==typeof t&&(t=[[null,t,""]]);var r={};if(o)for(var i=0;i<this.length;i++){var s=this[i][0];null!=s&&(r[s]=!0)}for(var a=0;a<t.length;a++){var l=[].concat(t[a]);o&&r[l[0]]||(n&&(l[2]?l[2]="".concat(n," and ").concat(l[2]):l[2]=n),e.push(l))}},e}},233:t=>{"use strict";function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}t.exports=function(t){var n,o,r=(o=4,function(t){if(Array.isArray(t))return t}(n=t)||function(t,e){var n=t&&("undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"]);if(null!=n){var o,r,i=[],s=!0,a=!1;try{for(n=n.call(t);!(s=(o=n.next()).done)&&(i.push(o.value),!e||i.length!==e);s=!0);}catch(t){a=!0,r=t}finally{try{s||null==n.return||n.return()}finally{if(a)throw r}}return i}}(n,o)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var o=Object.prototype.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?e(t,n):void 0}}(n,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=r[1],s=r[3];if(!s)return i;if("function"==typeof btoa){var a=btoa(unescape(encodeURIComponent(JSON.stringify(s)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),u="/*# ".concat(l," */"),c=s.sources.map((function(t){return"/*# sourceURL=".concat(s.sourceRoot||"").concat(t," */")}));return[i].concat(c).concat([u]).join("\n")}return[i].join("\n")}},487:t=>{"use strict";var e=[];function n(t){for(var n=-1,o=0;o<e.length;o++)if(e[o].identifier===t){n=o;break}return n}function o(t,o){for(var i={},s=[],a=0;a<t.length;a++){var l=t[a],u=o.base?l[0]+o.base:l[0],c=i[u]||0,p="".concat(u," ").concat(c);i[u]=c+1;var A=n(p),d={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==A)e[A].references++,e[A].updater(d);else{var f=r(d,o);o.byIndex=a,e.splice(a,0,{identifier:p,updater:f,references:1})}s.push(p)}return s}function r(t,e){var n=e.domAPI(e);return n.update(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap&&e.supports===t.supports&&e.layer===t.layer)return;n.update(t=e)}else n.remove()}}t.exports=function(t,r){var i=o(t=t||[],r=r||{});return function(t){t=t||[];for(var s=0;s<i.length;s++){var a=n(i[s]);e[a].references--}for(var l=o(t,r),u=0;u<i.length;u++){var c=n(i[u]);0===e[c].references&&(e[c].updater(),e.splice(c,1))}i=l}}},52:t=>{"use strict";var e={};t.exports=function(t,n){var o=function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}e[t]=n}return e[t]}(t);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},469:t=>{"use strict";t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},10:(t,e,n)=>{"use strict";t.exports=function(t){var e=n.nc;e&&t.setAttribute("nonce",e)}},631:t=>{"use strict";t.exports=function(t){var e=t.insertStyleElement(t);return{update:function(n){!function(t,e,n){var o="";n.supports&&(o+="@supports (".concat(n.supports,") {")),n.media&&(o+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),o+=n.css,r&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var i=n.sourceMap;i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleTagTransform(o,t,e.options)}(e,t,n)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},329:t=>{"use strict";t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}},68:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>z});var o=n(776),r=n.n(o),i=n(841),s=n.n(i),a=n(487),l=n.n(a),u=n(631),c=n.n(u),p=n(52),A=n.n(p),d=n(10),f=n.n(d),m=n(469),v=n.n(m),h=n(329),_=n.n(h),g=n(260),y={};y.styleTagTransform=_(),y.setAttributes=f(),y.insert=A().bind(null,"head"),y.domAPI=c(),y.insertStyleElement=v(),l()(g.Z,y);const b=g.Z&&g.Z.locals?g.Z.locals:void 0;function E(t){var e=(0,o.useRef)(null);return(0,o.useEffect)((function(){var e=function(e){t.toggleOverridden(C())};return window.addEventListener("import-map-overrides:change",e),function(){return window.removeEventListener("import-map-overrides:change",e)}}),[t]),r().createElement("div",{className:b.importMap},r().createElement("import-map-overrides-list",{ref:e}))}function C(){return Object.keys(window.importMapOverrides.getOverrideMap().imports).length>0}var B=n(159),w={};w.styleTagTransform=_(),w.setAttributes=f(),w.insert=A().bind(null,"head"),w.domAPI=c(),w.insertStyleElement=v(),l()(B.Z,w);const x=B.Z&&B.Z.locals?B.Z.locals:void 0;function k(t){return r().createElement("div",{className:x.popup},r().createElement(E,{toggleOverridden:t.toggleOverridden}),r().createElement("div",{className:x.farRight},r().createElement("button",{onClick:t.close,className:x.closeButton},"ⓧ")))}var S=n(702),T={};T.styleTagTransform=_(),T.setAttributes=f(),T.insert=A().bind(null,"head"),T.domAPI=c(),T.insertStyleElement=v(),l()(S.Z,T);const j=S.Z&&S.Z.locals?S.Z.locals:void 0;function Z(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function O(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var o,r,i=[],s=!0,a=!1;try{for(n=n.call(t);!(s=(o=n.next()).done)&&(i.push(o.value),!e||i.length!==e);s=!0);}catch(t){a=!0,r=t}finally{try{s||null==n.return||n.return()}finally{if(a)throw r}}return i}}(t,e)||function(t,e){if(t){if("string"==typeof t)return Z(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Z(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function z(t){return"development"===window.spaEnv||Boolean(localStorage.getItem("openmrs:devtools"))?r().createElement(I,t):null}function I(){var t,e,n,i=function(){u(!l)},a=O((0,o.useState)(!1),2),l=a[0],u=a[1],c=O((0,o.useState)(C),2),p=c[0],A=c[1];return r().createElement(r().Fragment,null,r().createElement("div",{role:"button",tabIndex:0,onClick:i,className:s()(j.devtoolsTriggerButton,(t={},e=j.overridden,n=p,e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t))}),l&&r().createElement(k,{close:i,toggleOverridden:function(t){A(t)}}))}}}]);
@@ -1,5 +0,0 @@
1
- /*!
2
- Copyright (c) 2018 Jed Watson.
3
- Licensed under the MIT License (MIT), see
4
- http://jedwatson.github.io/classnames
5
- */
@@ -1 +0,0 @@
1
- {"version":3,"file":"68.js","mappings":"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","sources":["webpack://@openmrs/esm-devtools-app/../../../node_modules/classnames/index.js","webpack://@openmrs/esm-devtools-app/./src/devtools/devtools-popup.styles.css","webpack://@openmrs/esm-devtools-app/./src/devtools/devtools.styles.css","webpack://@openmrs/esm-devtools-app/./src/devtools/import-map.styles.css","webpack://@openmrs/esm-devtools-app/../../../node_modules/css-loader/dist/runtime/api.js","webpack://@openmrs/esm-devtools-app/../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://@openmrs/esm-devtools-app/../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@openmrs/esm-devtools-app/../../../node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://@openmrs/esm-devtools-app/../../../node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://@openmrs/esm-devtools-app/../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://@openmrs/esm-devtools-app/../../../node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://@openmrs/esm-devtools-app/../../../node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://@openmrs/esm-devtools-app/./src/devtools/import-map.styles.css?545b","webpack://@openmrs/esm-devtools-app/./src/devtools/import-map.component.tsx","webpack://@openmrs/esm-devtools-app/./src/devtools/devtools-popup.styles.css?af3f","webpack://@openmrs/esm-devtools-app/./src/devtools/devtools-popup.component.tsx","webpack://@openmrs/esm-devtools-app/./src/devtools/devtools.styles.css?e7f1","webpack://@openmrs/esm-devtools-app/./src/devtools/devtools.component.tsx"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","includes","key","call","join","module","exports","default","___CSS_LOADER_EXPORT___","id","locals","cssWithMappingToString","list","this","map","item","content","concat","modules","mediaQuery","dedupe","alreadyImportedModules","_i","_arrayLikeToArray","arr","len","arr2","_item","_arrayWithHoles","Symbol","iterator","_s","_e","_arr","_n","_d","next","done","value","err","_iterableToArrayLimit","o","minLen","n","slice","constructor","name","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","options","idCountMap","identifiers","base","count","indexByIdentifier","obj","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","splice","api","domAPI","update","newObj","remove","lastIdentifiers","newList","index","newLastIdentifiers","_index","memo","insert","style","target","styleTarget","document","querySelector","window","HTMLIFrameElement","contentDocument","head","e","getTarget","Error","appendChild","element","createElement","setAttributes","attributes","styleElement","nonce","setAttribute","insertStyleElement","needLayer","styleTagTransform","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","undefined","ImportMap","props","importMapListRef","useRef","useEffect","handleImportMapChange","evt","toggleOverridden","importMapOverridden","addEventListener","removeEventListener","div","className","styles","importMap","import-map-overrides-list","ref","keys","importMapOverrides","getOverrideMap","imports","DevToolsPopup","popup","farRight","button","onClick","close","closeButton","Root","spaEnv","Boolean","localStorage","getItem","DevTools","toggleDevTools","setDevToolsOpen","devToolsOpen","useState","isOverridden","setIsOverridden","role","tabIndex","devtoolsTriggerButton","overridden"],"sourceRoot":""}