@openmrs/esm-app-shell 9.0.3-pre.4377 → 9.0.3-pre.4380

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.
@@ -1955,7 +1955,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
1955
1955
  },
1956
1956
  "../../framework/esm-styleguide/dist/workspaces/workspaces.js"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
1957
1957
  "use strict";
1958
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n canCloseWorkspaceWithoutPrompting: () => (canCloseWorkspaceWithoutPrompting),\n cancelPrompt: () => (cancelPrompt),\n changeWorkspaceContext: () => (changeWorkspaceContext),\n closeAllWorkspaces: () => (closeAllWorkspaces),\n closeWorkspace: () => (closeWorkspace),\n getPromptBeforeClosingFcn: () => (getPromptBeforeClosingFcn),\n getWorkspaceGroupStore: () => (getWorkspaceGroupStore),\n getWorkspaceStore: () => (getWorkspaceStore),\n launchWorkspace: () => (launchWorkspace),\n launchWorkspaceGroup: () => (launchWorkspaceGroup),\n navigateAndLaunchWorkspace: () => (navigateAndLaunchWorkspace),\n promptBeforeClosing: () => (promptBeforeClosing),\n resetWorkspaceStore: () => (resetWorkspaceStore),\n showWorkspacePrompts: () => (showWorkspacePrompts),\n updateWorkspaceWindowState: () => (updateWorkspaceWindowState),\n useWorkspaces: () => (useWorkspaces),\n workspaceStore: () => (workspaceStore)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var _openmrs_esm_extensions__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _openmrs_esm_navigation__rspack_import_2 = __webpack_require__(\"../../framework/esm-navigation/dist/index.js\");\n/* import */ var _openmrs_esm_state__rspack_import_3 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/* import */ var _openmrs_esm_translations__rspack_import_4 = __webpack_require__(\"../../framework/esm-translations/dist/index.js\");\n/* import */ var _openmrs_esm_react_utils__rspack_import_5 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\nfunction _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\n/** @module @category Workspace */ \n\n\n\n\n\n/**\n *\n * @param name Name of the workspace\n * @param ignoreChanges If set to true, the \"unsaved changes\" modal will never be shown, even if the `promptBeforeClosing` function returns true. The user will not be prompted before closing.\n * @returns true if the workspace can be closed.\n */ function canCloseWorkspaceWithoutPrompting(name) {\n var ignoreChanges = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (ignoreChanges) {\n return true;\n }\n var promptBeforeFn = getPromptBeforeClosingFcn(name);\n return !promptBeforeFn || !promptBeforeFn();\n}\n/**\n * Closes a workspace group and performs cleanup operations.\n *\n * @param groupName - The name of the workspace group to close\n * @param onWorkspaceCloseup - Optional callback function to execute after closing the workspace group\n * @returns void, or exits early if the current workspace group name doesn't match the provided group name\n *\n * @remarks\n * This function performs the following operations:\n * - Validates if the provided group name matches the current workspace group\n * - Closes all workspaces associated with the group\n * - Clears the workspace group store state\n * - Executes cleanup function if defined in the workspace group\n * - Updates the main workspace store to remove the workspace group\n * - Calls the optional closeup callback if provided\n *\n * @deprecated migrate to workspace v2 and use closeWorkspaceGroup2 instead. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function closeWorkspaceGroup(groupName, onWorkspaceCloseup) {\n var _store_getState;\n var store = getWorkspaceStore();\n var currentWorkspaceGroup = (_store_getState = store.getState()) === null || _store_getState === void 0 ? void 0 : _store_getState.workspaceGroup;\n var currentGroupName = currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.name;\n if (!currentGroupName || groupName !== currentGroupName) {\n return;\n }\n var filter = currentGroupName ? function(workspace) {\n return workspace.currentWorkspaceGroup === currentGroupName;\n } : function() {\n return true;\n };\n closeAllWorkspaces(function() {\n // Clearing the workspace group and respective store if the new workspace is not part of the current group, which is handled in the `launchWorkspace` function.\n var workspaceGroupStore = getWorkspaceGroupStore(groupName);\n if (workspaceGroupStore) {\n workspaceGroupStore.setState({}, true);\n var unsubscribe = workspaceGroupStore.subscribe(function() {});\n unsubscribe();\n }\n if (typeof (currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.cleanup) === 'function') {\n currentWorkspaceGroup.cleanup();\n }\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: undefined\n });\n });\n if (typeof onWorkspaceCloseup === 'function') {\n onWorkspaceCloseup();\n }\n }, filter);\n}\n/**\n * Launches a workspace group with the specified name and configuration.\n * If there are any open workspaces, it will first close them before launching the new workspace group.\n *\n * @param groupName - The name of the workspace group to launch\n * @param args - Configuration object for launching the workspace group\n * @param args.state - The initial state for the workspace group\n * @param args.onWorkspaceGroupLaunch - Optional callback function to be executed after the workspace group is launched\n * @param args.workspaceGroupCleanup - Optional cleanup function to be executed when the workspace group is closed\n *\n * @example\n * launchWorkspaceGroup(\"myGroup\", {\n * state: initialState,\n * onWorkspaceGroupLaunch: () => console.log(\"Workspace group launched\"),\n * workspaceGroupCleanup: () => console.log(\"Cleaning up workspace group\")\n * });\n *\n * @deprecated migrate to workspace v2 and use launchWorkspaceGroup2 instead. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function launchWorkspaceGroup(groupName, args) {\n var workspaceGroupRegistration = (0,_openmrs_esm_extensions__rspack_import_1.getWorkspaceGroupRegistration)(groupName);\n var state = args.state, onWorkspaceGroupLaunch = args.onWorkspaceGroupLaunch, workspaceGroupCleanup = args.workspaceGroupCleanup, workspaceToLaunch = args.workspaceToLaunch;\n var store = getWorkspaceStore();\n if (store.getState().openWorkspaces.length) {\n var workspaceGroup = store.getState().workspaceGroup;\n if (workspaceGroup) {\n closeWorkspaceGroup(workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name, function() {\n launchWorkspaceGroup(groupName, args);\n });\n } else {\n closeAllWorkspaces(function() {\n launchWorkspaceGroup(groupName, args);\n });\n }\n } else {\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: {\n name: groupName,\n members: workspaceGroupRegistration.members,\n cleanup: workspaceGroupCleanup\n }\n });\n });\n getWorkspaceGroupStore(groupName, state);\n onWorkspaceGroupLaunch === null || onWorkspaceGroupLaunch === void 0 ? void 0 : onWorkspaceGroupLaunch();\n if (workspaceToLaunch) {\n var _workspaceToLaunch_additionalProps;\n launchWorkspace(workspaceToLaunch.name, (_workspaceToLaunch_additionalProps = workspaceToLaunch.additionalProps) !== null && _workspaceToLaunch_additionalProps !== void 0 ? _workspaceToLaunch_additionalProps : {});\n }\n }\n}\nfunction promptBeforeLaunchingWorkspace(workspace, newWorkspaceDetails) {\n var name = newWorkspaceDetails.name, additionalProps = newWorkspaceDetails.additionalProps;\n var newWorkspaceRegistration = (0,_openmrs_esm_extensions__rspack_import_1.getWorkspaceRegistration)(name);\n var proceed = function proceed() {\n closeWorkspace(workspace.name, {\n ignoreChanges: true,\n // Calling the launchWorkspace again, since one of the `if` case\n // might resolve, but we need to check all the cases before launching the form.\n onWorkspaceClose: function onWorkspaceClose() {\n return launchWorkspace(name, additionalProps);\n },\n // If the new workspace is of the same sidebar group, then we don't need to clear the workspace group store.\n closeWorkspaceGroup: false\n });\n };\n if (!canCloseWorkspaceWithoutPrompting(workspace.name)) {\n var _workspace_title;\n showWorkspacePrompts('closing-workspace-launching-new-workspace', proceed, (_workspace_title = workspace.title) !== null && _workspace_title !== void 0 ? _workspace_title : workspace.name);\n } else {\n proceed();\n }\n}\n/**\n * This launches a workspace by its name. The workspace must have been registered.\n * Workspaces should be registered in the `routes.json` file.\n *\n * For the workspace to appear, there must be either a `<WorkspaceOverlay />` or\n * a `<WorkspaceWindow />` component rendered.\n *\n * The behavior of this function is as follows:\n *\n * - If no workspaces are open, or if no other workspaces with the same type are open,\n * it will be opened and focused.\n * - If a workspace with the same name is already open, it will be displayed/focused,\n * if it was not already.\n * - If a workspace is launched and a workspace which cannot be hidden is already open,\n * a confirmation modal will pop up warning about closing the currently open workspace.\n * - If another workspace with the same type is open, the workspace will be brought to\n * the front and then a confirmation modal will pop up warning about closing the opened\n * workspace\n *\n * Note that this function just manipulates the workspace store. The UI logic is handled\n * by the components that display workspaces.\n *\n * Additional props can be passed to the workspace component being launched. Passing a\n * prop named `workspaceTitle` will override the title of the workspace.\n *\n * @param name The name of the workspace to launch\n * @param additionalProps Props to pass to the workspace component being launched. Passing\n * a prop named `workspaceTitle` will override the title of the workspace.\n *\n * @deprecated migrate to workspace v2 and use launchWorkspace2 instead. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function launchWorkspace(name, additionalProps) {\n var _currentWorkspaceGroup_members, _store_getState_workspaceGroup;\n var store = getWorkspaceStore();\n var workspace = (0,_openmrs_esm_extensions__rspack_import_1.getWorkspaceRegistration)(name);\n var currentWorkspaceGroup = store.getState().workspaceGroup;\n if (currentWorkspaceGroup && !((_currentWorkspaceGroup_members = currentWorkspaceGroup.members) === null || _currentWorkspaceGroup_members === void 0 ? void 0 : _currentWorkspaceGroup_members.includes(name))) {\n closeWorkspaceGroup(currentWorkspaceGroup.name, function() {\n launchWorkspace(name, additionalProps);\n });\n return;\n }\n var currentGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.name;\n var newWorkspace = _object_spread_props(_object_spread({}, workspace), {\n title: getWorkspaceTitle(workspace, additionalProps),\n closeWorkspace: function closeWorkspace1() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n return closeWorkspace(name, options);\n },\n closeWorkspaceWithSavedChanges: function closeWorkspaceWithSavedChanges(options) {\n return closeWorkspace(name, _object_spread({\n ignoreChanges: true\n }, options));\n },\n promptBeforeClosing: function promptBeforeClosing1(testFcn) {\n return promptBeforeClosing(name, testFcn);\n },\n setTitle: function setTitle(title, titleNode) {\n newWorkspace.title = title;\n newWorkspace.titleNode = titleNode;\n store.setState(function(state) {\n var openWorkspaces = state.openWorkspaces.map(function(w) {\n return w.name === name ? newWorkspace : w;\n });\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces\n });\n });\n },\n currentWorkspaceGroup: currentGroupName,\n additionalProps: additionalProps !== null && additionalProps !== void 0 ? additionalProps : {}\n });\n if (currentGroupName) {\n getWorkspaceGroupStore(currentGroupName, additionalProps);\n }\n function updateStoreWithNewWorkspace(workspaceToBeAdded, restOfTheWorkspaces) {\n store.setState(function(state) {\n var openWorkspaces = [\n workspaceToBeAdded\n ].concat(_to_consumable_array(restOfTheWorkspaces !== null && restOfTheWorkspaces !== void 0 ? restOfTheWorkspaces : state.openWorkspaces));\n var workspaceWindowState = getUpdatedWorkspaceWindowState(workspaceToBeAdded);\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces,\n workspaceWindowState: workspaceWindowState\n });\n });\n }\n var openWorkspaces = store.getState().openWorkspaces;\n var workspaceIndexInOpenWorkspaces = openWorkspaces.findIndex(function(w) {\n return w.name === name;\n });\n var isWorkspaceAlreadyOpen = workspaceIndexInOpenWorkspaces >= 0;\n var openedWorkspaceWithSameType = openWorkspaces.find(function(w) {\n return w.type == newWorkspace.type;\n });\n if (openWorkspaces.length === 0) {\n updateStoreWithNewWorkspace(newWorkspace);\n } else if (!openWorkspaces[0].canHide && workspaceIndexInOpenWorkspaces !== 0) {\n promptBeforeLaunchingWorkspace(openWorkspaces[0], {\n name: name,\n additionalProps: additionalProps\n });\n } else if (isWorkspaceAlreadyOpen) {\n var openWorkspace = openWorkspaces[workspaceIndexInOpenWorkspaces];\n // Only update the title if it hasn't been set by `setTitle`\n if (openWorkspace.title === getWorkspaceTitle(openWorkspace, openWorkspace.additionalProps)) {\n openWorkspace.title = getWorkspaceTitle(newWorkspace, newWorkspace.additionalProps);\n }\n openWorkspace.additionalProps = newWorkspace.additionalProps;\n var restOfTheWorkspaces = openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n updateStoreWithNewWorkspace(openWorkspaces[workspaceIndexInOpenWorkspaces], restOfTheWorkspaces);\n } else if (openedWorkspaceWithSameType) {\n var restOfTheWorkspaces1 = store.getState().openWorkspaces.filter(function(w) {\n return w.type != newWorkspace.type;\n });\n updateStoreWithNewWorkspace(openedWorkspaceWithSameType, restOfTheWorkspaces1);\n promptBeforeLaunchingWorkspace(openedWorkspaceWithSameType, {\n name: name,\n additionalProps: additionalProps\n });\n } else {\n updateStoreWithNewWorkspace(newWorkspace);\n }\n}\n/**\n * Use this function to navigate to a new page and launch a workspace on that page.\n *\n * @param options The options for navigating and launching the workspace.\n * @param options.targetUrl The URL to navigate to. Will be passed to [[navigate]].\n * @param options.contextKey The context key used by the target page.\n * @param options.workspaceName The name of the workspace to launch.\n * @param options.additionalProps Additional props to pass to the workspace component being launched.\n *\n * @deprecated migrate to workspace v2 and call launchWorkspace2 instead. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function navigateAndLaunchWorkspace(param) {\n var targetUrl = param.targetUrl, contextKey = param.contextKey, workspaceName = param.workspaceName, additionalProps = param.additionalProps;\n changeWorkspaceContext(contextKey);\n launchWorkspace(workspaceName, additionalProps);\n (0,_openmrs_esm_navigation__rspack_import_2.navigate)({\n to: targetUrl\n });\n}\nvar promptBeforeClosingFcns = {};\nfunction promptBeforeClosing(workspaceName, testFcn) {\n promptBeforeClosingFcns[workspaceName] = testFcn;\n}\nfunction getPromptBeforeClosingFcn(workspaceName) {\n return promptBeforeClosingFcns[workspaceName];\n}\nfunction cancelPrompt() {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n prompt: null\n }));\n}\nvar defaultOptions = {\n ignoreChanges: false,\n onWorkspaceClose: function onWorkspaceClose() {},\n closeWorkspaceGroup: true\n};\n/**\n * Function to close an opened workspace\n * @param name Workspace registration name\n * @param options Options to close workspace\n *\n * @deprecated migrate to workspace v2 and call closeWorkspace from Workspace2DefinitionProps instead. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function closeWorkspace(name) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n options = _object_spread({}, defaultOptions, options);\n var store = getWorkspaceStore();\n var updateStoreWithClosedWorkspace = function updateStoreWithClosedWorkspace() {\n var _store_getState_workspaceGroup, _options_onWorkspaceClose;\n var state = store.getState();\n var workspaceToBeClosed = state.openWorkspaces.find(function(w) {\n return w.name === name;\n });\n var newOpenWorkspaces = state.openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n var workspaceGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.name;\n if (workspaceGroupName && options.closeWorkspaceGroup) {\n closeWorkspaceGroup(workspaceGroupName);\n }\n // ensure closed workspace will not prompt\n promptBeforeClosing(name, function() {\n return false;\n });\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n prompt: null,\n openWorkspaces: newOpenWorkspaces,\n workspaceWindowState: getUpdatedWorkspaceWindowState(newOpenWorkspaces === null || newOpenWorkspaces === void 0 ? void 0 : newOpenWorkspaces[0])\n });\n });\n options === null || options === void 0 ? void 0 : (_options_onWorkspaceClose = options.onWorkspaceClose) === null || _options_onWorkspaceClose === void 0 ? void 0 : _options_onWorkspaceClose.call(options);\n };\n if (!canCloseWorkspaceWithoutPrompting(name, options === null || options === void 0 ? void 0 : options.ignoreChanges)) {\n var _getWorkspaceRegistration_title;\n var currentName = (_getWorkspaceRegistration_title = (0,_openmrs_esm_extensions__rspack_import_1.getWorkspaceRegistration)(name).title) !== null && _getWorkspaceRegistration_title !== void 0 ? _getWorkspaceRegistration_title : name;\n showWorkspacePrompts('closing-workspace', updateStoreWithClosedWorkspace, currentName);\n return false;\n } else {\n updateStoreWithClosedWorkspace();\n return true;\n }\n}\n/**\n * The set of workspaces is specific to a particular page. This function\n * should be used when transitioning to a new page. If the current\n * workspace data is for a different page, the workspace state is cleared.\n *\n * This is called by the workspace components when they mount.\n * @internal\n *\n * @param contextKey An arbitrary key to identify the current page\n */ function changeWorkspaceContext(contextKey) {\n var store = getWorkspaceStore();\n var state = store.getState();\n if (state.context != contextKey) {\n store.setState({\n context: contextKey,\n openWorkspaces: [],\n prompt: null\n });\n }\n}\nvar initialState = {\n context: '',\n openWorkspaces: [],\n prompt: null,\n workspaceWindowState: 'normal',\n workspaceGroup: undefined\n};\nvar workspaceStore = (0,_openmrs_esm_state__rspack_import_3.createGlobalStore)('workspace', initialState);\nfunction getWorkspaceStore() {\n return workspaceStore;\n}\nfunction updateWorkspaceWindowState(value) {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n workspaceWindowState: value\n }));\n}\nfunction getUpdatedWorkspaceWindowState(workspaceAtTop) {\n var _ref;\n return (_ref = workspaceAtTop === null || workspaceAtTop === void 0 ? void 0 : workspaceAtTop.preferredWindowSize) !== null && _ref !== void 0 ? _ref : 'normal';\n}\nfunction closeAllWorkspaces() {\n var onClosingWorkspaces = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function() {}, filter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {\n return true;\n };\n var store = getWorkspaceStore();\n var canCloseAllWorkspaces = store.getState().openWorkspaces.filter(filter).every(function(param) {\n var name = param.name;\n return canCloseWorkspaceWithoutPrompting(name);\n });\n var updateWorkspaceStore = function updateWorkspaceStore() {\n resetWorkspaceStore();\n onClosingWorkspaces === null || onClosingWorkspaces === void 0 ? void 0 : onClosingWorkspaces();\n };\n if (!canCloseAllWorkspaces) {\n showWorkspacePrompts('closing-all-workspaces', updateWorkspaceStore);\n } else {\n updateWorkspaceStore();\n }\n}\n/**\n * @deprecated migrate to workspace v2. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function useWorkspaces() {\n var _useStore = (0,_openmrs_esm_react_utils__rspack_import_5.useStore)(workspaceStore), workspaceWindowState = _useStore.workspaceWindowState, openWorkspaces = _useStore.openWorkspaces, prompt = _useStore.prompt, workspaceGroup = _useStore.workspaceGroup;\n var memoisedResults = (0,react__rspack_import_0.useMemo)(function() {\n return {\n active: openWorkspaces.length > 0,\n prompt: prompt,\n workspaceWindowState: workspaceWindowState,\n workspaces: openWorkspaces,\n workspaceGroup: workspaceGroup\n };\n }, [\n openWorkspaces,\n workspaceWindowState,\n prompt,\n workspaceGroup\n ]);\n return memoisedResults;\n}\n/**\n * Sets the current prompt according to the prompt type.\n * @param promptType Determines the text and behavior of the prompt\n * @param onConfirmation Function to be called after the user confirms to close the workspace\n * @param workspaceTitle Workspace title to be shown in the prompt\n * @returns\n */ function showWorkspacePrompts(promptType) {\n var onConfirmation = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {}, workspaceTitle = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n var store = getWorkspaceStore();\n var prompt;\n switch(promptType){\n case 'closing-workspace':\n {\n prompt = {\n title: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('unsavedChangesInOpenedWorkspace', \"You may have unsaved changes in the opened workspace. Do you want to discard these changes?\"),\n onConfirm: function onConfirm() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('discard', 'Discard')\n };\n break;\n }\n case 'closing-all-workspaces':\n {\n var workspacesNotClosed = store.getState().openWorkspaces.filter(function(param) {\n var name = param.name;\n return !canCloseWorkspaceWithoutPrompting(name);\n }).map(function(param, indx) {\n var title = param.title;\n return \"\".concat(indx + 1, \". \").concat(title);\n });\n prompt = {\n title: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('closingAllWorkspacesPromptTitle', 'You have unsaved changes'),\n body: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('closingAllWorkspacesPromptBody', 'There may be unsaved changes in the following workspaces. Do you want to discard changes in the following workspaces? {{workspaceNames}}', {\n workspaceNames: workspacesNotClosed.join(',')\n }),\n onConfirm: function onConfirm() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('closeAllOpenedWorkspaces', 'Discard changes in {{count}} workspaces', {\n count: workspacesNotClosed.length\n })\n };\n break;\n }\n case 'closing-workspace-launching-new-workspace':\n {\n prompt = {\n title: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('unsavedChangesInWorkspace', 'There may be unsaved changes in \"{{workspaceName}}\". Please save them before opening another workspace.', {\n workspaceName: workspaceTitle\n }),\n onConfirm: function onConfirm() {\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: null\n });\n });\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('openAnyway', 'Open anyway')\n };\n break;\n }\n default:\n {\n console.error('Workspace system trying to open unknown prompt type \"'.concat(promptType, '\" in function \"showWorkspacePrompts\"'));\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n return;\n }\n }\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: prompt\n });\n });\n}\nfunction getWorkspaceTitle(workspace, additionalProps) {\n var _ref;\n return (_ref = additionalProps === null || additionalProps === void 0 ? void 0 : additionalProps['workspaceTitle']) !== null && _ref !== void 0 ? _ref : workspace.title;\n}\nfunction resetWorkspaceStore() {\n getWorkspaceStore().setState(initialState);\n}\n/**\n * The workspace group store is a store that is specific to the workspace group.\n * If the workspace has its own sidebar, the store will be created.\n * This store can be used to store data that is specific to the workspace group.\n * The store will be same for all the workspaces with same group name.\n *\n * For workspaces launched without a group, the store will be undefined.\n *\n * The store will be cleared when all the workspaces with the store's group name are closed.\n */ function getWorkspaceGroupStore(workspaceGroupName) {\n var additionalProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!workspaceGroupName || workspaceGroupName === 'default') {\n return undefined;\n }\n var store = (0,_openmrs_esm_state__rspack_import_3.getGlobalStore)(workspaceGroupName, {});\n if (additionalProps) {\n store.setState(function(prev) {\n return _object_spread({}, prev, additionalProps);\n });\n }\n return store;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC93b3Jrc3BhY2VzL3dvcmtzcGFjZXMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9kaXN0L3dvcmtzcGFjZXMvd29ya3NwYWNlcy5qcz83ZTkwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBXb3Jrc3BhY2UgKi8gaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZ2V0V29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24sIGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbiB9IGZyb20gXCJAb3Blbm1ycy9lc20tZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgbmF2aWdhdGUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLW5hdmlnYXRpb25cIjtcbmltcG9ydCB7IGdldEdsb2JhbFN0b3JlLCBjcmVhdGVHbG9iYWxTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmltcG9ydCB7IGdldENvcmVUcmFuc2xhdGlvbiB9IGZyb20gXCJAb3Blbm1ycy9lc20tdHJhbnNsYXRpb25zXCI7XG5pbXBvcnQgeyB1c2VTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHNcIjtcbi8qKlxuICpcbiAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIHdvcmtzcGFjZVxuICogQHBhcmFtIGlnbm9yZUNoYW5nZXMgSWYgc2V0IHRvIHRydWUsIHRoZSBcInVuc2F2ZWQgY2hhbmdlc1wiIG1vZGFsIHdpbGwgbmV2ZXIgYmUgc2hvd24sIGV2ZW4gaWYgdGhlIGBwcm9tcHRCZWZvcmVDbG9zaW5nYCBmdW5jdGlvbiByZXR1cm5zIHRydWUuIFRoZSB1c2VyIHdpbGwgbm90IGJlIHByb21wdGVkIGJlZm9yZSBjbG9zaW5nLlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgd29ya3NwYWNlIGNhbiBiZSBjbG9zZWQuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyhuYW1lLCBpZ25vcmVDaGFuZ2VzID0gZmFsc2UpIHtcbiAgICBpZiAoaWdub3JlQ2hhbmdlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgcHJvbXB0QmVmb3JlRm4gPSBnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuKG5hbWUpO1xuICAgIHJldHVybiAhcHJvbXB0QmVmb3JlRm4gfHwgIXByb21wdEJlZm9yZUZuKCk7XG59XG4vKipcbiAqIENsb3NlcyBhIHdvcmtzcGFjZSBncm91cCBhbmQgcGVyZm9ybXMgY2xlYW51cCBvcGVyYXRpb25zLlxuICpcbiAqIEBwYXJhbSBncm91cE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIGdyb3VwIHRvIGNsb3NlXG4gKiBAcGFyYW0gb25Xb3Jrc3BhY2VDbG9zZXVwIC0gT3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSBhZnRlciBjbG9zaW5nIHRoZSB3b3Jrc3BhY2UgZ3JvdXBcbiAqIEByZXR1cm5zIHZvaWQsIG9yIGV4aXRzIGVhcmx5IGlmIHRoZSBjdXJyZW50IHdvcmtzcGFjZSBncm91cCBuYW1lIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVkIGdyb3VwIG5hbWVcbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnM6XG4gKiAtIFZhbGlkYXRlcyBpZiB0aGUgcHJvdmlkZWQgZ3JvdXAgbmFtZSBtYXRjaGVzIHRoZSBjdXJyZW50IHdvcmtzcGFjZSBncm91cFxuICogLSBDbG9zZXMgYWxsIHdvcmtzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncm91cFxuICogLSBDbGVhcnMgdGhlIHdvcmtzcGFjZSBncm91cCBzdG9yZSBzdGF0ZVxuICogLSBFeGVjdXRlcyBjbGVhbnVwIGZ1bmN0aW9uIGlmIGRlZmluZWQgaW4gdGhlIHdvcmtzcGFjZSBncm91cFxuICogLSBVcGRhdGVzIHRoZSBtYWluIHdvcmtzcGFjZSBzdG9yZSB0byByZW1vdmUgdGhlIHdvcmtzcGFjZSBncm91cFxuICogLSBDYWxscyB0aGUgb3B0aW9uYWwgY2xvc2V1cCBjYWxsYmFjayBpZiBwcm92aWRlZFxuICpcbiAqIEBkZXByZWNhdGVkIG1pZ3JhdGUgdG8gd29ya3NwYWNlIHYyIGFuZCB1c2UgY2xvc2VXb3Jrc3BhY2VHcm91cDIgaW5zdGVhZC4gU2VlOlxuICogaHR0cHM6Ly9vcGVubXJzLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvZG9jcy9wYWdlcy82MTU2Nzc5ODEvV29ya3NwYWNlK3YyK01pZ3JhdGlvbitHdWlkZVxuICovIGZ1bmN0aW9uIGNsb3NlV29ya3NwYWNlR3JvdXAoZ3JvdXBOYW1lLCBvbldvcmtzcGFjZUNsb3NldXApIHtcbiAgICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgY29uc3QgY3VycmVudFdvcmtzcGFjZUdyb3VwID0gc3RvcmUuZ2V0U3RhdGUoKT8ud29ya3NwYWNlR3JvdXA7XG4gICAgY29uc3QgY3VycmVudEdyb3VwTmFtZSA9IGN1cnJlbnRXb3Jrc3BhY2VHcm91cD8ubmFtZTtcbiAgICBpZiAoIWN1cnJlbnRHcm91cE5hbWUgfHwgZ3JvdXBOYW1lICE9PSBjdXJyZW50R3JvdXBOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyID0gY3VycmVudEdyb3VwTmFtZSA/ICh3b3Jrc3BhY2UpPT53b3Jrc3BhY2UuY3VycmVudFdvcmtzcGFjZUdyb3VwID09PSBjdXJyZW50R3JvdXBOYW1lIDogKCk9PnRydWU7XG4gICAgY2xvc2VBbGxXb3Jrc3BhY2VzKCgpPT57XG4gICAgICAgIC8vIENsZWFyaW5nIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgYW5kIHJlc3BlY3RpdmUgc3RvcmUgaWYgdGhlIG5ldyB3b3Jrc3BhY2UgaXMgbm90IHBhcnQgb2YgdGhlIGN1cnJlbnQgZ3JvdXAsIHdoaWNoIGlzIGhhbmRsZWQgaW4gdGhlIGBsYXVuY2hXb3Jrc3BhY2VgIGZ1bmN0aW9uLlxuICAgICAgICBjb25zdCB3b3Jrc3BhY2VHcm91cFN0b3JlID0gZ2V0V29ya3NwYWNlR3JvdXBTdG9yZShncm91cE5hbWUpO1xuICAgICAgICBpZiAod29ya3NwYWNlR3JvdXBTdG9yZSkge1xuICAgICAgICAgICAgd29ya3NwYWNlR3JvdXBTdG9yZS5zZXRTdGF0ZSh7fSwgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCB1bnN1YnNjcmliZSA9IHdvcmtzcGFjZUdyb3VwU3RvcmUuc3Vic2NyaWJlKCgpPT57fSk7XG4gICAgICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgY3VycmVudFdvcmtzcGFjZUdyb3VwPy5jbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjdXJyZW50V29ya3NwYWNlR3JvdXAuY2xlYW51cCgpO1xuICAgICAgICB9XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KT0+KHtcbiAgICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICAgIHdvcmtzcGFjZUdyb3VwOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgaWYgKHR5cGVvZiBvbldvcmtzcGFjZUNsb3NldXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG9uV29ya3NwYWNlQ2xvc2V1cCgpO1xuICAgICAgICB9XG4gICAgfSwgZmlsdGVyKTtcbn1cbi8qKlxuICogTGF1bmNoZXMgYSB3b3Jrc3BhY2UgZ3JvdXAgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgYW5kIGNvbmZpZ3VyYXRpb24uXG4gKiBJZiB0aGVyZSBhcmUgYW55IG9wZW4gd29ya3NwYWNlcywgaXQgd2lsbCBmaXJzdCBjbG9zZSB0aGVtIGJlZm9yZSBsYXVuY2hpbmcgdGhlIG5ldyB3b3Jrc3BhY2UgZ3JvdXAuXG4gKlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgdG8gbGF1bmNoXG4gKiBAcGFyYW0gYXJncyAtIENvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBsYXVuY2hpbmcgdGhlIHdvcmtzcGFjZSBncm91cFxuICogQHBhcmFtIGFyZ3Muc3RhdGUgLSBUaGUgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIHdvcmtzcGFjZSBncm91cFxuICogQHBhcmFtIGFyZ3Mub25Xb3Jrc3BhY2VHcm91cExhdW5jaCAtIE9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgaXMgbGF1bmNoZWRcbiAqIEBwYXJhbSBhcmdzLndvcmtzcGFjZUdyb3VwQ2xlYW51cCAtIE9wdGlvbmFsIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgd2hlbiB0aGUgd29ya3NwYWNlIGdyb3VwIGlzIGNsb3NlZFxuICpcbiAqIEBleGFtcGxlXG4gKiBsYXVuY2hXb3Jrc3BhY2VHcm91cChcIm15R3JvdXBcIiwge1xuICogICBzdGF0ZTogaW5pdGlhbFN0YXRlLFxuICogICBvbldvcmtzcGFjZUdyb3VwTGF1bmNoOiAoKSA9PiBjb25zb2xlLmxvZyhcIldvcmtzcGFjZSBncm91cCBsYXVuY2hlZFwiKSxcbiAqICAgd29ya3NwYWNlR3JvdXBDbGVhbnVwOiAoKSA9PiBjb25zb2xlLmxvZyhcIkNsZWFuaW5nIHVwIHdvcmtzcGFjZSBncm91cFwiKVxuICogfSk7XG4gKlxuICogQGRlcHJlY2F0ZWQgbWlncmF0ZSB0byB3b3Jrc3BhY2UgdjIgYW5kIHVzZSBsYXVuY2hXb3Jrc3BhY2VHcm91cDIgaW5zdGVhZC4gU2VlOlxuICogaHR0cHM6Ly9vcGVubXJzLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvZG9jcy9wYWdlcy82MTU2Nzc5ODEvV29ya3NwYWNlK3YyK01pZ3JhdGlvbitHdWlkZVxuICovIGV4cG9ydCBmdW5jdGlvbiBsYXVuY2hXb3Jrc3BhY2VHcm91cChncm91cE5hbWUsIGFyZ3MpIHtcbiAgICBjb25zdCB3b3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbiA9IGdldFdvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uKGdyb3VwTmFtZSk7XG4gICAgY29uc3QgeyBzdGF0ZSwgb25Xb3Jrc3BhY2VHcm91cExhdW5jaCwgd29ya3NwYWNlR3JvdXBDbGVhbnVwLCB3b3Jrc3BhY2VUb0xhdW5jaCB9ID0gYXJncztcbiAgICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgaWYgKHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZUdyb3VwID0gc3RvcmUuZ2V0U3RhdGUoKS53b3Jrc3BhY2VHcm91cDtcbiAgICAgICAgaWYgKHdvcmtzcGFjZUdyb3VwKSB7XG4gICAgICAgICAgICBjbG9zZVdvcmtzcGFjZUdyb3VwKHdvcmtzcGFjZUdyb3VwPy5uYW1lLCAoKT0+e1xuICAgICAgICAgICAgICAgIGxhdW5jaFdvcmtzcGFjZUdyb3VwKGdyb3VwTmFtZSwgYXJncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsb3NlQWxsV29ya3NwYWNlcygoKT0+e1xuICAgICAgICAgICAgICAgIGxhdW5jaFdvcmtzcGFjZUdyb3VwKGdyb3VwTmFtZSwgYXJncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KT0+KHtcbiAgICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICAgIHdvcmtzcGFjZUdyb3VwOiB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGdyb3VwTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbWVtYmVyczogd29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24ubWVtYmVycyxcbiAgICAgICAgICAgICAgICAgICAgY2xlYW51cDogd29ya3NwYWNlR3JvdXBDbGVhbnVwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICBnZXRXb3Jrc3BhY2VHcm91cFN0b3JlKGdyb3VwTmFtZSwgc3RhdGUpO1xuICAgICAgICBvbldvcmtzcGFjZUdyb3VwTGF1bmNoPy4oKTtcbiAgICAgICAgaWYgKHdvcmtzcGFjZVRvTGF1bmNoKSB7XG4gICAgICAgICAgICBsYXVuY2hXb3Jrc3BhY2Uod29ya3NwYWNlVG9MYXVuY2gubmFtZSwgd29ya3NwYWNlVG9MYXVuY2guYWRkaXRpb25hbFByb3BzID8/IHt9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZSh3b3Jrc3BhY2UsIG5ld1dvcmtzcGFjZURldGFpbHMpIHtcbiAgICBjb25zdCB7IG5hbWUsIGFkZGl0aW9uYWxQcm9wcyB9ID0gbmV3V29ya3NwYWNlRGV0YWlscztcbiAgICBjb25zdCBuZXdXb3Jrc3BhY2VSZWdpc3RyYXRpb24gPSBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZSk7XG4gICAgY29uc3QgcHJvY2VlZCA9ICgpPT57XG4gICAgICAgIGNsb3NlV29ya3NwYWNlKHdvcmtzcGFjZS5uYW1lLCB7XG4gICAgICAgICAgICBpZ25vcmVDaGFuZ2VzOiB0cnVlLFxuICAgICAgICAgICAgLy8gQ2FsbGluZyB0aGUgbGF1bmNoV29ya3NwYWNlIGFnYWluLCBzaW5jZSBvbmUgb2YgdGhlIGBpZmAgY2FzZVxuICAgICAgICAgICAgLy8gbWlnaHQgcmVzb2x2ZSwgYnV0IHdlIG5lZWQgdG8gY2hlY2sgYWxsIHRoZSBjYXNlcyBiZWZvcmUgbGF1bmNoaW5nIHRoZSBmb3JtLlxuICAgICAgICAgICAgb25Xb3Jrc3BhY2VDbG9zZTogKCk9PmxhdW5jaFdvcmtzcGFjZShuYW1lLCBhZGRpdGlvbmFsUHJvcHMpLFxuICAgICAgICAgICAgLy8gSWYgdGhlIG5ldyB3b3Jrc3BhY2UgaXMgb2YgdGhlIHNhbWUgc2lkZWJhciBncm91cCwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgc3RvcmUuXG4gICAgICAgICAgICBjbG9zZVdvcmtzcGFjZUdyb3VwOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGlmICghY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKHdvcmtzcGFjZS5uYW1lKSkge1xuICAgICAgICBzaG93V29ya3NwYWNlUHJvbXB0cygnY2xvc2luZy13b3Jrc3BhY2UtbGF1bmNoaW5nLW5ldy13b3Jrc3BhY2UnLCBwcm9jZWVkLCB3b3Jrc3BhY2UudGl0bGUgPz8gd29ya3NwYWNlLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2NlZWQoKTtcbiAgICB9XG59XG4vKipcbiAqIFRoaXMgbGF1bmNoZXMgYSB3b3Jrc3BhY2UgYnkgaXRzIG5hbWUuIFRoZSB3b3Jrc3BhY2UgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZC5cbiAqIFdvcmtzcGFjZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGByb3V0ZXMuanNvbmAgZmlsZS5cbiAqXG4gKiBGb3IgdGhlIHdvcmtzcGFjZSB0byBhcHBlYXIsIHRoZXJlIG11c3QgYmUgZWl0aGVyIGEgYDxXb3Jrc3BhY2VPdmVybGF5IC8+YCBvclxuICogYSBgPFdvcmtzcGFjZVdpbmRvdyAvPmAgY29tcG9uZW50IHJlbmRlcmVkLlxuICpcbiAqIFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogLSBJZiBubyB3b3Jrc3BhY2VzIGFyZSBvcGVuLCBvciBpZiBubyBvdGhlciB3b3Jrc3BhY2VzIHdpdGggdGhlIHNhbWUgdHlwZSBhcmUgb3BlbixcbiAqICAgaXQgd2lsbCBiZSBvcGVuZWQgYW5kIGZvY3VzZWQuXG4gKiAtIElmIGEgd29ya3NwYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBpcyBhbHJlYWR5IG9wZW4sIGl0IHdpbGwgYmUgZGlzcGxheWVkL2ZvY3VzZWQsXG4gKiAgIGlmIGl0IHdhcyBub3QgYWxyZWFkeS5cbiAqIC0gSWYgYSB3b3Jrc3BhY2UgaXMgbGF1bmNoZWQgYW5kIGEgd29ya3NwYWNlIHdoaWNoIGNhbm5vdCBiZSBoaWRkZW4gaXMgYWxyZWFkeSBvcGVuLFxuICogIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgY3VycmVudGx5IG9wZW4gd29ya3NwYWNlLlxuICogLSBJZiBhbm90aGVyIHdvcmtzcGFjZSB3aXRoIHRoZSBzYW1lIHR5cGUgaXMgb3BlbiwgdGhlIHdvcmtzcGFjZSB3aWxsIGJlIGJyb3VnaHQgdG9cbiAqICAgdGhlIGZyb250IGFuZCB0aGVuIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgb3BlbmVkXG4gKiAgIHdvcmtzcGFjZVxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGp1c3QgbWFuaXB1bGF0ZXMgdGhlIHdvcmtzcGFjZSBzdG9yZS4gVGhlIFVJIGxvZ2ljIGlzIGhhbmRsZWRcbiAqIGJ5IHRoZSBjb21wb25lbnRzIHRoYXQgZGlzcGxheSB3b3Jrc3BhY2VzLlxuICpcbiAqIEFkZGl0aW9uYWwgcHJvcHMgY2FuIGJlIHBhc3NlZCB0byB0aGUgd29ya3NwYWNlIGNvbXBvbmVudCBiZWluZyBsYXVuY2hlZC4gUGFzc2luZyBhXG4gKiBwcm9wIG5hbWVkIGB3b3Jrc3BhY2VUaXRsZWAgd2lsbCBvdmVycmlkZSB0aGUgdGl0bGUgb2YgdGhlIHdvcmtzcGFjZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIHRvIGxhdW5jaFxuICogQHBhcmFtIGFkZGl0aW9uYWxQcm9wcyBQcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLiBQYXNzaW5nXG4gKiAgICAgICAgICBhIHByb3AgbmFtZWQgYHdvcmtzcGFjZVRpdGxlYCB3aWxsIG92ZXJyaWRlIHRoZSB0aXRsZSBvZiB0aGUgd29ya3NwYWNlLlxuICpcbiAqIEBkZXByZWNhdGVkIG1pZ3JhdGUgdG8gd29ya3NwYWNlIHYyIGFuZCB1c2UgbGF1bmNoV29ya3NwYWNlMiBpbnN0ZWFkLiBTZWU6XG4gKiBodHRwczovL29wZW5tcnMuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9kb2NzL3BhZ2VzLzYxNTY3Nzk4MS9Xb3Jrc3BhY2UrdjIrTWlncmF0aW9uK0d1aWRlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGxhdW5jaFdvcmtzcGFjZShuYW1lLCBhZGRpdGlvbmFsUHJvcHMpIHtcbiAgICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgY29uc3Qgd29ya3NwYWNlID0gZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uKG5hbWUpO1xuICAgIGNvbnN0IGN1cnJlbnRXb3Jrc3BhY2VHcm91cCA9IHN0b3JlLmdldFN0YXRlKCkud29ya3NwYWNlR3JvdXA7XG4gICAgaWYgKGN1cnJlbnRXb3Jrc3BhY2VHcm91cCAmJiAhY3VycmVudFdvcmtzcGFjZUdyb3VwLm1lbWJlcnM/LmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICAgIGNsb3NlV29ya3NwYWNlR3JvdXAoY3VycmVudFdvcmtzcGFjZUdyb3VwLm5hbWUsICgpPT57XG4gICAgICAgICAgICBsYXVuY2hXb3Jrc3BhY2UobmFtZSwgYWRkaXRpb25hbFByb3BzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEdyb3VwTmFtZSA9IHN0b3JlLmdldFN0YXRlKCkud29ya3NwYWNlR3JvdXA/Lm5hbWU7XG4gICAgY29uc3QgbmV3V29ya3NwYWNlID0ge1xuICAgICAgICAuLi53b3Jrc3BhY2UsXG4gICAgICAgIHRpdGxlOiBnZXRXb3Jrc3BhY2VUaXRsZSh3b3Jrc3BhY2UsIGFkZGl0aW9uYWxQcm9wcyksXG4gICAgICAgIGNsb3NlV29ya3NwYWNlOiAob3B0aW9ucyA9IHt9KT0+Y2xvc2VXb3Jrc3BhY2UobmFtZSwgb3B0aW9ucyksXG4gICAgICAgIGNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlczogKG9wdGlvbnMpPT5jbG9zZVdvcmtzcGFjZShuYW1lLCB7XG4gICAgICAgICAgICAgICAgaWdub3JlQ2hhbmdlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgcHJvbXB0QmVmb3JlQ2xvc2luZzogKHRlc3RGY24pPT5wcm9tcHRCZWZvcmVDbG9zaW5nKG5hbWUsIHRlc3RGY24pLFxuICAgICAgICBzZXRUaXRsZTogKHRpdGxlLCB0aXRsZU5vZGUpPT57XG4gICAgICAgICAgICBuZXdXb3Jrc3BhY2UudGl0bGUgPSB0aXRsZTtcbiAgICAgICAgICAgIG5ld1dvcmtzcGFjZS50aXRsZU5vZGUgPSB0aXRsZU5vZGU7XG4gICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT57XG4gICAgICAgICAgICAgICAgY29uc3Qgb3BlbldvcmtzcGFjZXMgPSBzdGF0ZS5vcGVuV29ya3NwYWNlcy5tYXAoKHcpPT53Lm5hbWUgPT09IG5hbWUgPyBuZXdXb3Jrc3BhY2UgOiB3KTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgb3BlbldvcmtzcGFjZXNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGN1cnJlbnRXb3Jrc3BhY2VHcm91cDogY3VycmVudEdyb3VwTmFtZSxcbiAgICAgICAgYWRkaXRpb25hbFByb3BzOiBhZGRpdGlvbmFsUHJvcHMgPz8ge31cbiAgICB9O1xuICAgIGlmIChjdXJyZW50R3JvdXBOYW1lKSB7XG4gICAgICAgIGdldFdvcmtzcGFjZUdyb3VwU3RvcmUoY3VycmVudEdyb3VwTmFtZSwgYWRkaXRpb25hbFByb3BzKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKHdvcmtzcGFjZVRvQmVBZGRlZCwgcmVzdE9mVGhlV29ya3NwYWNlcykge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT57XG4gICAgICAgICAgICBjb25zdCBvcGVuV29ya3NwYWNlcyA9IFtcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2VUb0JlQWRkZWQsXG4gICAgICAgICAgICAgICAgLi4ucmVzdE9mVGhlV29ya3NwYWNlcyA/PyBzdGF0ZS5vcGVuV29ya3NwYWNlc1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGxldCB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSA9IGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZSh3b3Jrc3BhY2VUb0JlQWRkZWQpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBvcGVuV29ya3NwYWNlcyxcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG9wZW5Xb3Jrc3BhY2VzID0gc3RvcmUuZ2V0U3RhdGUoKS5vcGVuV29ya3NwYWNlcztcbiAgICBjb25zdCB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maW5kSW5kZXgoKHcpPT53Lm5hbWUgPT09IG5hbWUpO1xuICAgIGNvbnN0IGlzV29ya3NwYWNlQWxyZWFkeU9wZW4gPSB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPj0gMDtcbiAgICBjb25zdCBvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUgPSBvcGVuV29ya3NwYWNlcy5maW5kKCh3KT0+dy50eXBlID09IG5ld1dvcmtzcGFjZS50eXBlKTtcbiAgICBpZiAob3BlbldvcmtzcGFjZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShuZXdXb3Jrc3BhY2UpO1xuICAgIH0gZWxzZSBpZiAoIW9wZW5Xb3Jrc3BhY2VzWzBdLmNhbkhpZGUgJiYgd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzICE9PSAwKSB7XG4gICAgICAgIHByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZShvcGVuV29ya3NwYWNlc1swXSwge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wc1xuICAgICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGlzV29ya3NwYWNlQWxyZWFkeU9wZW4pIHtcbiAgICAgICAgY29uc3Qgb3BlbldvcmtzcGFjZSA9IG9wZW5Xb3Jrc3BhY2VzW3dvcmtzcGFjZUluZGV4SW5PcGVuV29ya3NwYWNlc107XG4gICAgICAgIC8vIE9ubHkgdXBkYXRlIHRoZSB0aXRsZSBpZiBpdCBoYXNuJ3QgYmVlbiBzZXQgYnkgYHNldFRpdGxlYFxuICAgICAgICBpZiAob3BlbldvcmtzcGFjZS50aXRsZSA9PT0gZ2V0V29ya3NwYWNlVGl0bGUob3BlbldvcmtzcGFjZSwgb3BlbldvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHMpKSB7XG4gICAgICAgICAgICBvcGVuV29ya3NwYWNlLnRpdGxlID0gZ2V0V29ya3NwYWNlVGl0bGUobmV3V29ya3NwYWNlLCBuZXdXb3Jrc3BhY2UuYWRkaXRpb25hbFByb3BzKTtcbiAgICAgICAgfVxuICAgICAgICBvcGVuV29ya3NwYWNlLmFkZGl0aW9uYWxQcm9wcyA9IG5ld1dvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHM7XG4gICAgICAgIGNvbnN0IHJlc3RPZlRoZVdvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maWx0ZXIoKHcpPT53Lm5hbWUgIT0gbmFtZSk7XG4gICAgICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShvcGVuV29ya3NwYWNlc1t3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXNdLCByZXN0T2ZUaGVXb3Jrc3BhY2VzKTtcbiAgICB9IGVsc2UgaWYgKG9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSkge1xuICAgICAgICBjb25zdCByZXN0T2ZUaGVXb3Jrc3BhY2VzID0gc3RvcmUuZ2V0U3RhdGUoKS5vcGVuV29ya3NwYWNlcy5maWx0ZXIoKHcpPT53LnR5cGUgIT0gbmV3V29ya3NwYWNlLnR5cGUpO1xuICAgICAgICB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2Uob3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlLCByZXN0T2ZUaGVXb3Jrc3BhY2VzKTtcbiAgICAgICAgcHJvbXB0QmVmb3JlTGF1bmNoaW5nV29ya3NwYWNlKG9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSwge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wc1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2UobmV3V29ya3NwYWNlKTtcbiAgICB9XG59XG4vKipcbiAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIG5hdmlnYXRlIHRvIGEgbmV3IHBhZ2UgYW5kIGxhdW5jaCBhIHdvcmtzcGFjZSBvbiB0aGF0IHBhZ2UuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIG5hdmlnYXRpbmcgYW5kIGxhdW5jaGluZyB0aGUgd29ya3NwYWNlLlxuICogQHBhcmFtIG9wdGlvbnMudGFyZ2V0VXJsIFRoZSBVUkwgdG8gbmF2aWdhdGUgdG8uIFdpbGwgYmUgcGFzc2VkIHRvIFtbbmF2aWdhdGVdXS5cbiAqIEBwYXJhbSBvcHRpb25zLmNvbnRleHRLZXkgVGhlIGNvbnRleHQga2V5IHVzZWQgYnkgdGhlIHRhcmdldCBwYWdlLlxuICogQHBhcmFtIG9wdGlvbnMud29ya3NwYWNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIHRvIGxhdW5jaC5cbiAqIEBwYXJhbSBvcHRpb25zLmFkZGl0aW9uYWxQcm9wcyBBZGRpdGlvbmFsIHByb3BzIHRvIHBhc3MgdG8gdGhlIHdvcmtzcGFjZSBjb21wb25lbnQgYmVpbmcgbGF1bmNoZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgbWlncmF0ZSB0byB3b3Jrc3BhY2UgdjIgYW5kIGNhbGwgbGF1bmNoV29ya3NwYWNlMiBpbnN0ZWFkLiBTZWU6XG4gKiBodHRwczovL29wZW5tcnMuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9kb2NzL3BhZ2VzLzYxNTY3Nzk4MS9Xb3Jrc3BhY2UrdjIrTWlncmF0aW9uK0d1aWRlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIG5hdmlnYXRlQW5kTGF1bmNoV29ya3NwYWNlKHsgdGFyZ2V0VXJsLCBjb250ZXh0S2V5LCB3b3Jrc3BhY2VOYW1lLCBhZGRpdGlvbmFsUHJvcHMgfSkge1xuICAgIGNoYW5nZVdvcmtzcGFjZUNvbnRleHQoY29udGV4dEtleSk7XG4gICAgbGF1bmNoV29ya3NwYWNlKHdvcmtzcGFjZU5hbWUsIGFkZGl0aW9uYWxQcm9wcyk7XG4gICAgbmF2aWdhdGUoe1xuICAgICAgICB0bzogdGFyZ2V0VXJsXG4gICAgfSk7XG59XG5jb25zdCBwcm9tcHRCZWZvcmVDbG9zaW5nRmNucyA9IHt9O1xuZXhwb3J0IGZ1bmN0aW9uIHByb21wdEJlZm9yZUNsb3Npbmcod29ya3NwYWNlTmFtZSwgdGVzdEZjbikge1xuICAgIHByb21wdEJlZm9yZUNsb3NpbmdGY25zW3dvcmtzcGFjZU5hbWVdID0gdGVzdEZjbjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuKHdvcmtzcGFjZU5hbWUpIHtcbiAgICByZXR1cm4gcHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnNbd29ya3NwYWNlTmFtZV07XG59XG5leHBvcnQgZnVuY3Rpb24gY2FuY2VsUHJvbXB0KCkge1xuICAgIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgc3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcHJvbXB0OiBudWxsXG4gICAgfSk7XG59XG5jb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBpZ25vcmVDaGFuZ2VzOiBmYWxzZSxcbiAgICBvbldvcmtzcGFjZUNsb3NlOiAoKT0+e30sXG4gICAgY2xvc2VXb3Jrc3BhY2VHcm91cDogdHJ1ZVxufTtcbi8qKlxuICogRnVuY3Rpb24gdG8gY2xvc2UgYW4gb3BlbmVkIHdvcmtzcGFjZVxuICogQHBhcmFtIG5hbWUgV29ya3NwYWNlIHJlZ2lzdHJhdGlvbiBuYW1lXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNsb3NlIHdvcmtzcGFjZVxuICpcbiAqIEBkZXByZWNhdGVkIG1pZ3JhdGUgdG8gd29ya3NwYWNlIHYyIGFuZCBjYWxsIGNsb3NlV29ya3NwYWNlIGZyb20gV29ya3NwYWNlMkRlZmluaXRpb25Qcm9wcyBpbnN0ZWFkLiBTZWU6XG4gKiBodHRwczovL29wZW5tcnMuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9kb2NzL3BhZ2VzLzYxNTY3Nzk4MS9Xb3Jrc3BhY2UrdjIrTWlncmF0aW9uK0d1aWRlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGNsb3NlV29ya3NwYWNlKG5hbWUsIG9wdGlvbnMgPSB7fSkge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbiAgICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgY29uc3QgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlID0gKCk9PntcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2VUb0JlQ2xvc2VkID0gc3RhdGUub3BlbldvcmtzcGFjZXMuZmluZCgodyk9PncubmFtZSA9PT0gbmFtZSk7XG4gICAgICAgIGNvbnN0IG5ld09wZW5Xb3Jrc3BhY2VzID0gc3RhdGUub3BlbldvcmtzcGFjZXMuZmlsdGVyKCh3KT0+dy5uYW1lICE9IG5hbWUpO1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2VHcm91cE5hbWUgPSBzdG9yZS5nZXRTdGF0ZSgpLndvcmtzcGFjZUdyb3VwPy5uYW1lO1xuICAgICAgICBpZiAod29ya3NwYWNlR3JvdXBOYW1lICYmIG9wdGlvbnMuY2xvc2VXb3Jrc3BhY2VHcm91cCkge1xuICAgICAgICAgICAgY2xvc2VXb3Jrc3BhY2VHcm91cCh3b3Jrc3BhY2VHcm91cE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVuc3VyZSBjbG9zZWQgd29ya3NwYWNlIHdpbGwgbm90IHByb21wdFxuICAgICAgICBwcm9tcHRCZWZvcmVDbG9zaW5nKG5hbWUsICgpPT5mYWxzZSk7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KT0+KHtcbiAgICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICAgIHByb21wdDogbnVsbCxcbiAgICAgICAgICAgICAgICBvcGVuV29ya3NwYWNlczogbmV3T3BlbldvcmtzcGFjZXMsXG4gICAgICAgICAgICAgICAgd29ya3NwYWNlV2luZG93U3RhdGU6IGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZShuZXdPcGVuV29ya3NwYWNlcz8uWzBdKVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICBvcHRpb25zPy5vbldvcmtzcGFjZUNsb3NlPy4oKTtcbiAgICB9O1xuICAgIGlmICghY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKG5hbWUsIG9wdGlvbnM/Lmlnbm9yZUNoYW5nZXMpKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnROYW1lID0gZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uKG5hbWUpLnRpdGxlID8/IG5hbWU7XG4gICAgICAgIHNob3dXb3Jrc3BhY2VQcm9tcHRzKCdjbG9zaW5nLXdvcmtzcGFjZScsIHVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSwgY3VycmVudE5hbWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbi8qKlxuICogVGhlIHNldCBvZiB3b3Jrc3BhY2VzIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBwYWdlLiBUaGlzIGZ1bmN0aW9uXG4gKiBzaG91bGQgYmUgdXNlZCB3aGVuIHRyYW5zaXRpb25pbmcgdG8gYSBuZXcgcGFnZS4gSWYgdGhlIGN1cnJlbnRcbiAqIHdvcmtzcGFjZSBkYXRhIGlzIGZvciBhIGRpZmZlcmVudCBwYWdlLCB0aGUgd29ya3NwYWNlIHN0YXRlIGlzIGNsZWFyZWQuXG4gKlxuICogVGhpcyBpcyBjYWxsZWQgYnkgdGhlIHdvcmtzcGFjZSBjb21wb25lbnRzIHdoZW4gdGhleSBtb3VudC5cbiAqIEBpbnRlcm5hbFxuICpcbiAqIEBwYXJhbSBjb250ZXh0S2V5IEFuIGFyYml0cmFyeSBrZXkgdG8gaWRlbnRpZnkgdGhlIGN1cnJlbnQgcGFnZVxuICovIGV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VXb3Jrc3BhY2VDb250ZXh0KGNvbnRleHRLZXkpIHtcbiAgICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGlmIChzdGF0ZS5jb250ZXh0ICE9IGNvbnRleHRLZXkpIHtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgY29udGV4dDogY29udGV4dEtleSxcbiAgICAgICAgICAgIG9wZW5Xb3Jrc3BhY2VzOiBbXSxcbiAgICAgICAgICAgIHByb21wdDogbnVsbFxuICAgICAgICB9KTtcbiAgICB9XG59XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgY29udGV4dDogJycsXG4gICAgb3BlbldvcmtzcGFjZXM6IFtdLFxuICAgIHByb21wdDogbnVsbCxcbiAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogJ25vcm1hbCcsXG4gICAgd29ya3NwYWNlR3JvdXA6IHVuZGVmaW5lZFxufTtcbmV4cG9ydCBjb25zdCB3b3Jrc3BhY2VTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlKCd3b3Jrc3BhY2UnLCBpbml0aWFsU3RhdGUpO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZVN0b3JlKCkge1xuICAgIHJldHVybiB3b3Jrc3BhY2VTdG9yZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVXb3Jrc3BhY2VXaW5kb3dTdGF0ZSh2YWx1ZSkge1xuICAgIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgc3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgd29ya3NwYWNlV2luZG93U3RhdGU6IHZhbHVlXG4gICAgfSk7XG59XG5mdW5jdGlvbiBnZXRVcGRhdGVkV29ya3NwYWNlV2luZG93U3RhdGUod29ya3NwYWNlQXRUb3ApIHtcbiAgICByZXR1cm4gd29ya3NwYWNlQXRUb3A/LnByZWZlcnJlZFdpbmRvd1NpemUgPz8gJ25vcm1hbCc7XG59XG5leHBvcnQgZnVuY3Rpb24gY2xvc2VBbGxXb3Jrc3BhY2VzKG9uQ2xvc2luZ1dvcmtzcGFjZXMgPSAoKT0+e30sIGZpbHRlciA9ICgpPT50cnVlKSB7XG4gICAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICAgIGNvbnN0IGNhbkNsb3NlQWxsV29ya3NwYWNlcyA9IHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMuZmlsdGVyKGZpbHRlcikuZXZlcnkoKHsgbmFtZSB9KT0+e1xuICAgICAgICByZXR1cm4gY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKG5hbWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IHVwZGF0ZVdvcmtzcGFjZVN0b3JlID0gKCk9PntcbiAgICAgICAgcmVzZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICAgICAgICBvbkNsb3NpbmdXb3Jrc3BhY2VzPy4oKTtcbiAgICB9O1xuICAgIGlmICghY2FuQ2xvc2VBbGxXb3Jrc3BhY2VzKSB7XG4gICAgICAgIHNob3dXb3Jrc3BhY2VQcm9tcHRzKCdjbG9zaW5nLWFsbC13b3Jrc3BhY2VzJywgdXBkYXRlV29ya3NwYWNlU3RvcmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZVdvcmtzcGFjZVN0b3JlKCk7XG4gICAgfVxufVxuLyoqXG4gKiBAZGVwcmVjYXRlZCBtaWdyYXRlIHRvIHdvcmtzcGFjZSB2Mi4gU2VlOlxuICogaHR0cHM6Ly9vcGVubXJzLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvZG9jcy9wYWdlcy82MTU2Nzc5ODEvV29ya3NwYWNlK3YyK01pZ3JhdGlvbitHdWlkZVxuICovIGV4cG9ydCBmdW5jdGlvbiB1c2VXb3Jrc3BhY2VzKCkge1xuICAgIGNvbnN0IHsgd29ya3NwYWNlV2luZG93U3RhdGUsIG9wZW5Xb3Jrc3BhY2VzLCBwcm9tcHQsIHdvcmtzcGFjZUdyb3VwIH0gPSB1c2VTdG9yZSh3b3Jrc3BhY2VTdG9yZSk7XG4gICAgY29uc3QgbWVtb2lzZWRSZXN1bHRzID0gdXNlTWVtbygoKT0+e1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWN0aXZlOiBvcGVuV29ya3NwYWNlcy5sZW5ndGggPiAwLFxuICAgICAgICAgICAgcHJvbXB0LFxuICAgICAgICAgICAgd29ya3NwYWNlV2luZG93U3RhdGUsXG4gICAgICAgICAgICB3b3Jrc3BhY2VzOiBvcGVuV29ya3NwYWNlcyxcbiAgICAgICAgICAgIHdvcmtzcGFjZUdyb3VwXG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBvcGVuV29ya3NwYWNlcyxcbiAgICAgICAgd29ya3NwYWNlV2luZG93U3RhdGUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgd29ya3NwYWNlR3JvdXBcbiAgICBdKTtcbiAgICByZXR1cm4gbWVtb2lzZWRSZXN1bHRzO1xufVxuLyoqXG4gKiBTZXRzIHRoZSBjdXJyZW50IHByb21wdCBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCB0eXBlLlxuICogQHBhcmFtIHByb21wdFR5cGUgRGV0ZXJtaW5lcyB0aGUgdGV4dCBhbmQgYmVoYXZpb3Igb2YgdGhlIHByb21wdFxuICogQHBhcmFtIG9uQ29uZmlybWF0aW9uIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgdXNlciBjb25maXJtcyB0byBjbG9zZSB0aGUgd29ya3NwYWNlXG4gKiBAcGFyYW0gd29ya3NwYWNlVGl0bGUgV29ya3NwYWNlIHRpdGxlIHRvIGJlIHNob3duIGluIHRoZSBwcm9tcHRcbiAqIEByZXR1cm5zXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHNob3dXb3Jrc3BhY2VQcm9tcHRzKHByb21wdFR5cGUsIG9uQ29uZmlybWF0aW9uID0gKCk9Pnt9LCB3b3Jrc3BhY2VUaXRsZSA9ICcnKSB7XG4gICAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICAgIGxldCBwcm9tcHQ7XG4gICAgc3dpdGNoKHByb21wdFR5cGUpe1xuICAgICAgICBjYXNlICdjbG9zaW5nLXdvcmtzcGFjZSc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvbXB0ID0ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZ2V0Q29yZVRyYW5zbGF0aW9uKCd1bnNhdmVkQ2hhbmdlc1RpdGxlVGV4dCcsICdVbnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKCd1bnNhdmVkQ2hhbmdlc0luT3BlbmVkV29ya3NwYWNlJywgYFlvdSBtYXkgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgaW4gdGhlIG9wZW5lZCB3b3Jrc3BhY2UuIERvIHlvdSB3YW50IHRvIGRpc2NhcmQgdGhlc2UgY2hhbmdlcz9gKSxcbiAgICAgICAgICAgICAgICAgICAgb25Db25maXJtOiAoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgb25Db25maXJtYXRpb24/LigpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdkaXNjYXJkJywgJ0Rpc2NhcmQnKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2Nsb3NpbmctYWxsLXdvcmtzcGFjZXMnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtzcGFjZXNOb3RDbG9zZWQgPSBzdG9yZS5nZXRTdGF0ZSgpLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigoeyBuYW1lIH0pPT4hY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKG5hbWUpKS5tYXAoKHsgdGl0bGUgfSwgaW5keCk9PmAke2luZHggKyAxfS4gJHt0aXRsZX1gKTtcbiAgICAgICAgICAgICAgICBwcm9tcHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NpbmdBbGxXb3Jrc3BhY2VzUHJvbXB0VGl0bGUnLCAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzJyksXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRCb2R5JywgJ1RoZXJlIG1heSBiZSB1bnNhdmVkIGNoYW5nZXMgaW4gdGhlIGZvbGxvd2luZyB3b3Jrc3BhY2VzLiBEbyB5b3Ugd2FudCB0byBkaXNjYXJkIGNoYW5nZXMgaW4gdGhlIGZvbGxvd2luZyB3b3Jrc3BhY2VzPyB7e3dvcmtzcGFjZU5hbWVzfX0nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VOYW1lczogd29ya3NwYWNlc05vdENsb3NlZC5qb2luKCcsJylcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIG9uQ29uZmlybTogKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2VBbGxPcGVuZWRXb3Jrc3BhY2VzJywgJ0Rpc2NhcmQgY2hhbmdlcyBpbiB7e2NvdW50fX0gd29ya3NwYWNlcycsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50OiB3b3Jrc3BhY2VzTm90Q2xvc2VkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2Nsb3Npbmctd29ya3NwYWNlLWxhdW5jaGluZy1uZXctd29ya3NwYWNlJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9tcHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ3Vuc2F2ZWRDaGFuZ2VzVGl0bGVUZXh0JywgJ1Vuc2F2ZWQgY2hhbmdlcycpLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBnZXRDb3JlVHJhbnNsYXRpb24oJ3Vuc2F2ZWRDaGFuZ2VzSW5Xb3Jrc3BhY2UnLCAnVGhlcmUgbWF5IGJlIHVuc2F2ZWQgY2hhbmdlcyBpbiBcInt7d29ya3NwYWNlTmFtZX19XCIuIFBsZWFzZSBzYXZlIHRoZW0gYmVmb3JlIG9wZW5pbmcgYW5vdGhlciB3b3Jrc3BhY2UuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlTmFtZTogd29ya3NwYWNlVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIG9uQ29uZmlybTogKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1UZXh0OiBnZXRDb3JlVHJhbnNsYXRpb24oJ29wZW5Bbnl3YXknLCAnT3BlbiBhbnl3YXknKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV29ya3NwYWNlIHN5c3RlbSB0cnlpbmcgdG8gb3BlbiB1bmtub3duIHByb21wdCB0eXBlIFwiJHtwcm9tcHRUeXBlfVwiIGluIGZ1bmN0aW9uIFwic2hvd1dvcmtzcGFjZVByb21wdHNcImApO1xuICAgICAgICAgICAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSk9Pih7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHByb21wdFxuICAgICAgICB9KSk7XG59XG5mdW5jdGlvbiBnZXRXb3Jrc3BhY2VUaXRsZSh3b3Jrc3BhY2UsIGFkZGl0aW9uYWxQcm9wcykge1xuICAgIHJldHVybiBhZGRpdGlvbmFsUHJvcHM/Llsnd29ya3NwYWNlVGl0bGUnXSA/PyB3b3Jrc3BhY2UudGl0bGU7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVzZXRXb3Jrc3BhY2VTdG9yZSgpIHtcbiAgICBnZXRXb3Jrc3BhY2VTdG9yZSgpLnNldFN0YXRlKGluaXRpYWxTdGF0ZSk7XG59XG4vKipcbiAqIFRoZSB3b3Jrc3BhY2UgZ3JvdXAgc3RvcmUgaXMgYSBzdG9yZSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZSB3b3Jrc3BhY2UgZ3JvdXAuXG4gKiBJZiB0aGUgd29ya3NwYWNlIGhhcyBpdHMgb3duIHNpZGViYXIsIHRoZSBzdG9yZSB3aWxsIGJlIGNyZWF0ZWQuXG4gKiBUaGlzIHN0b3JlIGNhbiBiZSB1c2VkIHRvIHN0b3JlIGRhdGEgdGhhdCBpcyBzcGVjaWZpYyB0byB0aGUgd29ya3NwYWNlIGdyb3VwLlxuICogVGhlIHN0b3JlIHdpbGwgYmUgc2FtZSBmb3IgYWxsIHRoZSB3b3Jrc3BhY2VzIHdpdGggc2FtZSBncm91cCBuYW1lLlxuICpcbiAqIEZvciB3b3Jrc3BhY2VzIGxhdW5jaGVkIHdpdGhvdXQgYSBncm91cCwgdGhlIHN0b3JlIHdpbGwgYmUgdW5kZWZpbmVkLlxuICpcbiAqIFRoZSBzdG9yZSB3aWxsIGJlIGNsZWFyZWQgd2hlbiBhbGwgdGhlIHdvcmtzcGFjZXMgd2l0aCB0aGUgc3RvcmUncyBncm91cCBuYW1lIGFyZSBjbG9zZWQuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtzcGFjZUdyb3VwU3RvcmUod29ya3NwYWNlR3JvdXBOYW1lLCBhZGRpdGlvbmFsUHJvcHMgPSB7fSkge1xuICAgIGlmICghd29ya3NwYWNlR3JvdXBOYW1lIHx8IHdvcmtzcGFjZUdyb3VwTmFtZSA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHN0b3JlID0gZ2V0R2xvYmFsU3RvcmUod29ya3NwYWNlR3JvdXBOYW1lLCB7fSk7XG4gICAgaWYgKGFkZGl0aW9uYWxQcm9wcykge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSgocHJldik9Pih7XG4gICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICAuLi5hZGRpdGlvbmFsUHJvcHNcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0b3JlO1xufVxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJnZXRXb3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbiIsImdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbiIsIm5hdmlnYXRlIiwiZ2V0R2xvYmFsU3RvcmUiLCJjcmVhdGVHbG9iYWxTdG9yZSIsImdldENvcmVUcmFuc2xhdGlvbiIsInVzZVN0b3JlIiwiY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nIiwibmFtZSIsImlnbm9yZUNoYW5nZXMiLCJwcm9tcHRCZWZvcmVGbiIsImdldFByb21wdEJlZm9yZUNsb3NpbmdGY24iLCJjbG9zZVdvcmtzcGFjZUdyb3VwIiwiZ3JvdXBOYW1lIiwib25Xb3Jrc3BhY2VDbG9zZXVwIiwiX3N0b3JlX2dldFN0YXRlIiwic3RvcmUiLCJnZXRXb3Jrc3BhY2VTdG9yZSIsImN1cnJlbnRXb3Jrc3BhY2VHcm91cCIsImN1cnJlbnRHcm91cE5hbWUiLCJmaWx0ZXIiLCJ3b3Jrc3BhY2UiLCJjbG9zZUFsbFdvcmtzcGFjZXMiLCJ3b3Jrc3BhY2VHcm91cFN0b3JlIiwiZ2V0V29ya3NwYWNlR3JvdXBTdG9yZSIsInVuc3Vic2NyaWJlIiwicHJldiIsInVuZGVmaW5lZCIsImxhdW5jaFdvcmtzcGFjZUdyb3VwIiwiYXJncyIsIndvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uIiwic3RhdGUiLCJvbldvcmtzcGFjZUdyb3VwTGF1bmNoIiwid29ya3NwYWNlR3JvdXBDbGVhbnVwIiwid29ya3NwYWNlVG9MYXVuY2giLCJ3b3Jrc3BhY2VHcm91cCIsIl93b3Jrc3BhY2VUb0xhdW5jaF9hZGRpdGlvbmFsUHJvcHMiLCJsYXVuY2hXb3Jrc3BhY2UiLCJwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2UiLCJuZXdXb3Jrc3BhY2VEZXRhaWxzIiwiYWRkaXRpb25hbFByb3BzIiwibmV3V29ya3NwYWNlUmVnaXN0cmF0aW9uIiwicHJvY2VlZCIsImNsb3NlV29ya3NwYWNlIiwib25Xb3Jrc3BhY2VDbG9zZSIsIl93b3Jrc3BhY2VfdGl0bGUiLCJzaG93V29ya3NwYWNlUHJvbXB0cyIsIl9jdXJyZW50V29ya3NwYWNlR3JvdXBfbWVtYmVycyIsIl9zdG9yZV9nZXRTdGF0ZV93b3Jrc3BhY2VHcm91cCIsIm5ld1dvcmtzcGFjZSIsImdldFdvcmtzcGFjZVRpdGxlIiwiY2xvc2VXb3Jrc3BhY2UxIiwib3B0aW9ucyIsImNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlcyIsInByb21wdEJlZm9yZUNsb3NpbmcxIiwidGVzdEZjbiIsInByb21wdEJlZm9yZUNsb3NpbmciLCJzZXRUaXRsZSIsInRpdGxlIiwidGl0bGVOb2RlIiwib3BlbldvcmtzcGFjZXMiLCJ3IiwidXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlIiwid29ya3NwYWNlVG9CZUFkZGVkIiwicmVzdE9mVGhlV29ya3NwYWNlcyIsIndvcmtzcGFjZVdpbmRvd1N0YXRlIiwiZ2V0VXBkYXRlZFdvcmtzcGFjZVdpbmRvd1N0YXRlIiwid29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzIiwiaXNXb3Jrc3BhY2VBbHJlYWR5T3BlbiIsIm9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSIsIm9wZW5Xb3Jrc3BhY2UiLCJyZXN0T2ZUaGVXb3Jrc3BhY2VzMSIsIm5hdmlnYXRlQW5kTGF1bmNoV29ya3NwYWNlIiwicGFyYW0iLCJ0YXJnZXRVcmwiLCJjb250ZXh0S2V5Iiwid29ya3NwYWNlTmFtZSIsImNoYW5nZVdvcmtzcGFjZUNvbnRleHQiLCJwcm9tcHRCZWZvcmVDbG9zaW5nRmNucyIsImNhbmNlbFByb21wdCIsImRlZmF1bHRPcHRpb25zIiwidXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlIiwid29ya3NwYWNlVG9CZUNsb3NlZCIsIm5ld09wZW5Xb3Jrc3BhY2VzIiwid29ya3NwYWNlR3JvdXBOYW1lIiwiX2dldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbl90aXRsZSIsImN1cnJlbnROYW1lIiwiaW5pdGlhbFN0YXRlIiwid29ya3NwYWNlU3RvcmUiLCJ1cGRhdGVXb3Jrc3BhY2VXaW5kb3dTdGF0ZSIsInZhbHVlIiwid29ya3NwYWNlQXRUb3AiLCJvbkNsb3NpbmdXb3Jrc3BhY2VzIiwiY2FuQ2xvc2VBbGxXb3Jrc3BhY2VzIiwidXBkYXRlV29ya3NwYWNlU3RvcmUiLCJyZXNldFdvcmtzcGFjZVN0b3JlIiwidXNlV29ya3NwYWNlcyIsIl91c2VTdG9yZSIsInByb21wdCIsIm1lbW9pc2VkUmVzdWx0cyIsInByb21wdFR5cGUiLCJvbkNvbmZpcm1hdGlvbiIsIndvcmtzcGFjZVRpdGxlIiwib25Db25maXJtIiwid29ya3NwYWNlc05vdENsb3NlZCIsImluZHgiLCJjb25zb2xlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdDQUFnQyxHQUFtQztBQUMrQjtBQUMvQztBQUNvQjtBQUNSO0FBQ1g7QUFDcEQ7Ozs7O0NBS0MsR0FBVSxTQUFTUSxrQ0FBa0NDLElBQUk7UUFBRUMsZ0JBQUFBLGlFQUFnQjtJQUN4RSxJQUFJQSxlQUFlO1FBQ2YsT0FBTztJQUNYO0lBQ0EsSUFBTUMsaUJBQWlCQywwQkFBMEJIO0lBQ2pELE9BQU8sQ0FBQ0Usa0JBQWtCLENBQUNBO0FBQy9CO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCQyxHQUFHLFNBQVNFLG9CQUFvQkMsU0FBUyxFQUFFQyxrQkFBa0I7UUFFNUJDO0lBRDlCLElBQU1DLFFBQVFDO0lBQ2QsSUFBTUMseUJBQXdCSCxr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\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/dist/workspaces/workspaces.js\n\n}");
1958
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n canCloseWorkspaceWithoutPrompting: () => (canCloseWorkspaceWithoutPrompting),\n cancelPrompt: () => (cancelPrompt),\n changeWorkspaceContext: () => (changeWorkspaceContext),\n closeAllWorkspaces: () => (closeAllWorkspaces),\n closeWorkspace: () => (closeWorkspace),\n getPromptBeforeClosingFcn: () => (getPromptBeforeClosingFcn),\n getWorkspaceGroupStore: () => (getWorkspaceGroupStore),\n getWorkspaceStore: () => (getWorkspaceStore),\n launchWorkspace: () => (launchWorkspace),\n launchWorkspaceGroup: () => (launchWorkspaceGroup),\n navigateAndLaunchWorkspace: () => (navigateAndLaunchWorkspace),\n promptBeforeClosing: () => (promptBeforeClosing),\n resetWorkspaceStore: () => (resetWorkspaceStore),\n showWorkspacePrompts: () => (showWorkspacePrompts),\n updateWorkspaceWindowState: () => (updateWorkspaceWindowState),\n useWorkspaces: () => (useWorkspaces),\n workspaceStore: () => (workspaceStore)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var _openmrs_esm_extensions__rspack_import_1 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _openmrs_esm_navigation__rspack_import_2 = __webpack_require__(\"../../framework/esm-navigation/dist/index.js\");\n/* import */ var _openmrs_esm_state__rspack_import_3 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/* import */ var _openmrs_esm_translations__rspack_import_4 = __webpack_require__(\"../../framework/esm-translations/dist/index.js\");\n/* import */ var _openmrs_esm_react_utils__rspack_import_5 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\nfunction _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\n/** @module @category Workspace */ \n\n\n\n\n\n/**\n *\n * @param name Name of the workspace\n * @param ignoreChanges If set to true, the \"unsaved changes\" modal will never be shown, even if the `promptBeforeClosing` function returns true. The user will not be prompted before closing.\n * @returns true if the workspace can be closed.\n */ function canCloseWorkspaceWithoutPrompting(name) {\n var ignoreChanges = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (ignoreChanges) {\n return true;\n }\n var promptBeforeFn = getPromptBeforeClosingFcn(name);\n return !promptBeforeFn || !promptBeforeFn();\n}\n/**\n * Closes a workspace group and performs cleanup operations.\n *\n * @param groupName - The name of the workspace group to close\n * @param onWorkspaceCloseup - Optional callback function to execute after closing the workspace group\n * @returns void, or exits early if the current workspace group name doesn't match the provided group name\n *\n * @remarks\n * This function performs the following operations:\n * - Validates if the provided group name matches the current workspace group\n * - Closes all workspaces associated with the group\n * - Clears the workspace group store state\n * - Executes cleanup function if defined in the workspace group\n * - Updates the main workspace store to remove the workspace group\n * - Calls the optional closeup callback if provided\n *\n * @deprecated migrate to workspace v2 and use closeWorkspaceGroup2 instead. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function closeWorkspaceGroup(groupName, onWorkspaceCloseup) {\n var _store_getState;\n var store = getWorkspaceStore();\n var currentWorkspaceGroup = (_store_getState = store.getState()) === null || _store_getState === void 0 ? void 0 : _store_getState.workspaceGroup;\n var currentGroupName = currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.name;\n if (!currentGroupName || groupName !== currentGroupName) {\n return;\n }\n var filter = currentGroupName ? function(workspace) {\n return workspace.currentWorkspaceGroup === currentGroupName;\n } : function() {\n return true;\n };\n closeAllWorkspaces(function() {\n // Clearing the workspace group and respective store if the new workspace is not part of the current group, which is handled in the `launchWorkspace` function.\n var workspaceGroupStore = getWorkspaceGroupStore(groupName);\n if (workspaceGroupStore) {\n workspaceGroupStore.setState({}, true);\n var unsubscribe = workspaceGroupStore.subscribe(function() {});\n unsubscribe();\n }\n if (typeof (currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.cleanup) === 'function') {\n currentWorkspaceGroup.cleanup();\n }\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: undefined\n });\n });\n if (typeof onWorkspaceCloseup === 'function') {\n onWorkspaceCloseup();\n }\n }, filter);\n}\n/**\n * Launches a workspace group with the specified name and configuration.\n * If there are any open workspaces, it will first close them before launching the new workspace group.\n *\n * @param groupName - The name of the workspace group to launch\n * @param args - Configuration object for launching the workspace group\n * @param args.state - The initial state for the workspace group\n * @param args.onWorkspaceGroupLaunch - Optional callback function to be executed after the workspace group is launched\n * @param args.workspaceGroupCleanup - Optional cleanup function to be executed when the workspace group is closed\n *\n * @example\n * launchWorkspaceGroup(\"myGroup\", {\n * state: initialState,\n * onWorkspaceGroupLaunch: () => console.log(\"Workspace group launched\"),\n * workspaceGroupCleanup: () => console.log(\"Cleaning up workspace group\")\n * });\n *\n * @deprecated migrate to workspace v2 and use launchWorkspaceGroup2 instead. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function launchWorkspaceGroup(groupName, args) {\n var workspaceGroupRegistration = (0,_openmrs_esm_extensions__rspack_import_1.getWorkspaceGroupRegistration)(groupName);\n var state = args.state, onWorkspaceGroupLaunch = args.onWorkspaceGroupLaunch, workspaceGroupCleanup = args.workspaceGroupCleanup, workspaceToLaunch = args.workspaceToLaunch;\n var store = getWorkspaceStore();\n if (store.getState().openWorkspaces.length) {\n var workspaceGroup = store.getState().workspaceGroup;\n if (workspaceGroup) {\n closeWorkspaceGroup(workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name, function() {\n launchWorkspaceGroup(groupName, args);\n });\n } else {\n closeAllWorkspaces(function() {\n launchWorkspaceGroup(groupName, args);\n });\n }\n } else {\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: {\n name: groupName,\n members: workspaceGroupRegistration.members,\n cleanup: workspaceGroupCleanup\n }\n });\n });\n getWorkspaceGroupStore(groupName, state);\n onWorkspaceGroupLaunch === null || onWorkspaceGroupLaunch === void 0 ? void 0 : onWorkspaceGroupLaunch();\n if (workspaceToLaunch) {\n var _workspaceToLaunch_additionalProps;\n launchWorkspace(workspaceToLaunch.name, (_workspaceToLaunch_additionalProps = workspaceToLaunch.additionalProps) !== null && _workspaceToLaunch_additionalProps !== void 0 ? _workspaceToLaunch_additionalProps : {});\n }\n }\n}\nfunction promptBeforeLaunchingWorkspace(workspace, newWorkspaceDetails) {\n var name = newWorkspaceDetails.name, additionalProps = newWorkspaceDetails.additionalProps;\n var newWorkspaceRegistration = (0,_openmrs_esm_extensions__rspack_import_1.getWorkspaceRegistration)(name);\n var proceed = function proceed() {\n closeWorkspace(workspace.name, {\n ignoreChanges: true,\n // Calling the launchWorkspace again, since one of the `if` case\n // might resolve, but we need to check all the cases before launching the form.\n onWorkspaceClose: function onWorkspaceClose() {\n return launchWorkspace(name, additionalProps);\n },\n // If the new workspace is of the same sidebar group, then we don't need to clear the workspace group store.\n closeWorkspaceGroup: false\n });\n };\n if (!canCloseWorkspaceWithoutPrompting(workspace.name)) {\n var _workspace_title;\n showWorkspacePrompts('closing-workspace-launching-new-workspace', proceed, (_workspace_title = workspace.title) !== null && _workspace_title !== void 0 ? _workspace_title : workspace.name);\n } else {\n proceed();\n }\n}\n/**\n * This launches a workspace by its name. The workspace must have been registered.\n * Workspaces should be registered in the `routes.json` file.\n *\n * For the workspace to appear, there must be either a `<WorkspaceOverlay />` or\n * a `<WorkspaceWindow />` component rendered.\n *\n * The behavior of this function is as follows:\n *\n * - If no workspaces are open, or if no other workspaces with the same type are open,\n * it will be opened and focused.\n * - If a workspace with the same name is already open, it will be displayed/focused,\n * if it was not already.\n * - If a workspace is launched and a workspace which cannot be hidden is already open,\n * a confirmation modal will pop up warning about closing the currently open workspace.\n * - If another workspace with the same type is open, the workspace will be brought to\n * the front and then a confirmation modal will pop up warning about closing the opened\n * workspace\n *\n * Note that this function just manipulates the workspace store. The UI logic is handled\n * by the components that display workspaces.\n *\n * Additional props can be passed to the workspace component being launched. Passing a\n * prop named `workspaceTitle` will override the title of the workspace.\n *\n * @param name The name of the workspace to launch\n * @param additionalProps Props to pass to the workspace component being launched. Passing\n * a prop named `workspaceTitle` will override the title of the workspace.\n *\n * @deprecated migrate to workspace v2 and use launchWorkspace2 instead. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function launchWorkspace(name, additionalProps) {\n var _currentWorkspaceGroup_members, _store_getState_workspaceGroup;\n var store = getWorkspaceStore();\n var workspace = (0,_openmrs_esm_extensions__rspack_import_1.getWorkspaceRegistration)(name);\n var currentWorkspaceGroup = store.getState().workspaceGroup;\n if (currentWorkspaceGroup && !((_currentWorkspaceGroup_members = currentWorkspaceGroup.members) === null || _currentWorkspaceGroup_members === void 0 ? void 0 : _currentWorkspaceGroup_members.includes(name))) {\n closeWorkspaceGroup(currentWorkspaceGroup.name, function() {\n launchWorkspace(name, additionalProps);\n });\n return;\n }\n var currentGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.name;\n var newWorkspace = _object_spread_props(_object_spread({}, workspace), {\n title: getWorkspaceTitle(workspace, additionalProps),\n closeWorkspace: function closeWorkspace1() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n return closeWorkspace(name, options);\n },\n closeWorkspaceWithSavedChanges: function closeWorkspaceWithSavedChanges(options) {\n return closeWorkspace(name, _object_spread({\n ignoreChanges: true\n }, options));\n },\n promptBeforeClosing: function promptBeforeClosing1(testFcn) {\n return promptBeforeClosing(name, testFcn);\n },\n setTitle: function setTitle(title, titleNode) {\n newWorkspace.title = title;\n newWorkspace.titleNode = titleNode;\n store.setState(function(state) {\n var openWorkspaces = state.openWorkspaces.map(function(w) {\n return w.name === name ? newWorkspace : w;\n });\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces\n });\n });\n },\n currentWorkspaceGroup: currentGroupName,\n additionalProps: additionalProps !== null && additionalProps !== void 0 ? additionalProps : {}\n });\n if (currentGroupName) {\n getWorkspaceGroupStore(currentGroupName, additionalProps);\n }\n function updateStoreWithNewWorkspace(workspaceToBeAdded, restOfTheWorkspaces) {\n store.setState(function(state) {\n var openWorkspaces = [\n workspaceToBeAdded\n ].concat(_to_consumable_array(restOfTheWorkspaces !== null && restOfTheWorkspaces !== void 0 ? restOfTheWorkspaces : state.openWorkspaces));\n var workspaceWindowState = getUpdatedWorkspaceWindowState(workspaceToBeAdded);\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces,\n workspaceWindowState: workspaceWindowState\n });\n });\n }\n var openWorkspaces = store.getState().openWorkspaces;\n var workspaceIndexInOpenWorkspaces = openWorkspaces.findIndex(function(w) {\n return w.name === name;\n });\n var isWorkspaceAlreadyOpen = workspaceIndexInOpenWorkspaces >= 0;\n var openedWorkspaceWithSameType = openWorkspaces.find(function(w) {\n return w.type == newWorkspace.type;\n });\n if (openWorkspaces.length === 0) {\n updateStoreWithNewWorkspace(newWorkspace);\n } else if (!openWorkspaces[0].canHide && workspaceIndexInOpenWorkspaces !== 0) {\n promptBeforeLaunchingWorkspace(openWorkspaces[0], {\n name: name,\n additionalProps: additionalProps\n });\n } else if (isWorkspaceAlreadyOpen) {\n var openWorkspace = openWorkspaces[workspaceIndexInOpenWorkspaces];\n // Create a new object reference so that WorkspaceRenderer's useMemo\n // detects the change and re-renders with the updated additionalProps.\n var updatedWorkspace = _object_spread(_object_spread_props(_object_spread({}, openWorkspace), {\n additionalProps: newWorkspace.additionalProps\n }), openWorkspace.title === getWorkspaceTitle(openWorkspace, openWorkspace.additionalProps) && {\n title: getWorkspaceTitle(newWorkspace, newWorkspace.additionalProps)\n });\n var restOfTheWorkspaces = openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n updateStoreWithNewWorkspace(updatedWorkspace, restOfTheWorkspaces);\n } else if (openedWorkspaceWithSameType) {\n var restOfTheWorkspaces1 = store.getState().openWorkspaces.filter(function(w) {\n return w.type != newWorkspace.type;\n });\n updateStoreWithNewWorkspace(openedWorkspaceWithSameType, restOfTheWorkspaces1);\n promptBeforeLaunchingWorkspace(openedWorkspaceWithSameType, {\n name: name,\n additionalProps: additionalProps\n });\n } else {\n updateStoreWithNewWorkspace(newWorkspace);\n }\n}\n/**\n * Use this function to navigate to a new page and launch a workspace on that page.\n *\n * @param options The options for navigating and launching the workspace.\n * @param options.targetUrl The URL to navigate to. Will be passed to [[navigate]].\n * @param options.contextKey The context key used by the target page.\n * @param options.workspaceName The name of the workspace to launch.\n * @param options.additionalProps Additional props to pass to the workspace component being launched.\n *\n * @deprecated migrate to workspace v2 and call launchWorkspace2 instead. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function navigateAndLaunchWorkspace(param) {\n var targetUrl = param.targetUrl, contextKey = param.contextKey, workspaceName = param.workspaceName, additionalProps = param.additionalProps;\n changeWorkspaceContext(contextKey);\n launchWorkspace(workspaceName, additionalProps);\n (0,_openmrs_esm_navigation__rspack_import_2.navigate)({\n to: targetUrl\n });\n}\nvar promptBeforeClosingFcns = {};\nfunction promptBeforeClosing(workspaceName, testFcn) {\n promptBeforeClosingFcns[workspaceName] = testFcn;\n}\nfunction getPromptBeforeClosingFcn(workspaceName) {\n return promptBeforeClosingFcns[workspaceName];\n}\nfunction cancelPrompt() {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n prompt: null\n }));\n}\nvar defaultOptions = {\n ignoreChanges: false,\n onWorkspaceClose: function onWorkspaceClose() {},\n closeWorkspaceGroup: true\n};\n/**\n * Function to close an opened workspace\n * @param name Workspace registration name\n * @param options Options to close workspace\n *\n * @deprecated migrate to workspace v2 and call closeWorkspace from Workspace2DefinitionProps instead. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function closeWorkspace(name) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n options = _object_spread({}, defaultOptions, options);\n var store = getWorkspaceStore();\n var updateStoreWithClosedWorkspace = function updateStoreWithClosedWorkspace() {\n var _store_getState_workspaceGroup, _options_onWorkspaceClose;\n var state = store.getState();\n var workspaceToBeClosed = state.openWorkspaces.find(function(w) {\n return w.name === name;\n });\n var newOpenWorkspaces = state.openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n var workspaceGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.name;\n if (workspaceGroupName && options.closeWorkspaceGroup) {\n closeWorkspaceGroup(workspaceGroupName);\n }\n // ensure closed workspace will not prompt\n promptBeforeClosing(name, function() {\n return false;\n });\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n prompt: null,\n openWorkspaces: newOpenWorkspaces,\n workspaceWindowState: getUpdatedWorkspaceWindowState(newOpenWorkspaces === null || newOpenWorkspaces === void 0 ? void 0 : newOpenWorkspaces[0])\n });\n });\n options === null || options === void 0 ? void 0 : (_options_onWorkspaceClose = options.onWorkspaceClose) === null || _options_onWorkspaceClose === void 0 ? void 0 : _options_onWorkspaceClose.call(options);\n };\n if (!canCloseWorkspaceWithoutPrompting(name, options === null || options === void 0 ? void 0 : options.ignoreChanges)) {\n var _getWorkspaceRegistration_title;\n var currentName = (_getWorkspaceRegistration_title = (0,_openmrs_esm_extensions__rspack_import_1.getWorkspaceRegistration)(name).title) !== null && _getWorkspaceRegistration_title !== void 0 ? _getWorkspaceRegistration_title : name;\n showWorkspacePrompts('closing-workspace', updateStoreWithClosedWorkspace, currentName);\n return false;\n } else {\n updateStoreWithClosedWorkspace();\n return true;\n }\n}\n/**\n * The set of workspaces is specific to a particular page. This function\n * should be used when transitioning to a new page. If the current\n * workspace data is for a different page, the workspace state is cleared.\n *\n * This is called by the workspace components when they mount.\n * @internal\n *\n * @param contextKey An arbitrary key to identify the current page\n */ function changeWorkspaceContext(contextKey) {\n var store = getWorkspaceStore();\n var state = store.getState();\n if (state.context != contextKey) {\n store.setState({\n context: contextKey,\n openWorkspaces: [],\n prompt: null\n });\n }\n}\nvar initialState = {\n context: '',\n openWorkspaces: [],\n prompt: null,\n workspaceWindowState: 'normal',\n workspaceGroup: undefined\n};\nvar workspaceStore = (0,_openmrs_esm_state__rspack_import_3.createGlobalStore)('workspace', initialState);\nfunction getWorkspaceStore() {\n return workspaceStore;\n}\nfunction updateWorkspaceWindowState(value) {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n workspaceWindowState: value\n }));\n}\nfunction getUpdatedWorkspaceWindowState(workspaceAtTop) {\n var _ref;\n return (_ref = workspaceAtTop === null || workspaceAtTop === void 0 ? void 0 : workspaceAtTop.preferredWindowSize) !== null && _ref !== void 0 ? _ref : 'normal';\n}\nfunction closeAllWorkspaces() {\n var onClosingWorkspaces = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function() {}, filter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {\n return true;\n };\n var store = getWorkspaceStore();\n var canCloseAllWorkspaces = store.getState().openWorkspaces.filter(filter).every(function(param) {\n var name = param.name;\n return canCloseWorkspaceWithoutPrompting(name);\n });\n var updateWorkspaceStore = function updateWorkspaceStore() {\n resetWorkspaceStore();\n onClosingWorkspaces === null || onClosingWorkspaces === void 0 ? void 0 : onClosingWorkspaces();\n };\n if (!canCloseAllWorkspaces) {\n showWorkspacePrompts('closing-all-workspaces', updateWorkspaceStore);\n } else {\n updateWorkspaceStore();\n }\n}\n/**\n * @deprecated migrate to workspace v2. See:\n * https://openmrs.atlassian.net/wiki/spaces/docs/pages/615677981/Workspace+v2+Migration+Guide\n */ function useWorkspaces() {\n var _useStore = (0,_openmrs_esm_react_utils__rspack_import_5.useStore)(workspaceStore), workspaceWindowState = _useStore.workspaceWindowState, openWorkspaces = _useStore.openWorkspaces, prompt = _useStore.prompt, workspaceGroup = _useStore.workspaceGroup;\n var memoisedResults = (0,react__rspack_import_0.useMemo)(function() {\n return {\n active: openWorkspaces.length > 0,\n prompt: prompt,\n workspaceWindowState: workspaceWindowState,\n workspaces: openWorkspaces,\n workspaceGroup: workspaceGroup\n };\n }, [\n openWorkspaces,\n workspaceWindowState,\n prompt,\n workspaceGroup\n ]);\n return memoisedResults;\n}\n/**\n * Sets the current prompt according to the prompt type.\n * @param promptType Determines the text and behavior of the prompt\n * @param onConfirmation Function to be called after the user confirms to close the workspace\n * @param workspaceTitle Workspace title to be shown in the prompt\n * @returns\n */ function showWorkspacePrompts(promptType) {\n var onConfirmation = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {}, workspaceTitle = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n var store = getWorkspaceStore();\n var prompt;\n switch(promptType){\n case 'closing-workspace':\n {\n prompt = {\n title: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('unsavedChangesInOpenedWorkspace', \"You may have unsaved changes in the opened workspace. Do you want to discard these changes?\"),\n onConfirm: function onConfirm() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('discard', 'Discard')\n };\n break;\n }\n case 'closing-all-workspaces':\n {\n var workspacesNotClosed = store.getState().openWorkspaces.filter(function(param) {\n var name = param.name;\n return !canCloseWorkspaceWithoutPrompting(name);\n }).map(function(param, indx) {\n var title = param.title;\n return \"\".concat(indx + 1, \". \").concat(title);\n });\n prompt = {\n title: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('closingAllWorkspacesPromptTitle', 'You have unsaved changes'),\n body: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('closingAllWorkspacesPromptBody', 'There may be unsaved changes in the following workspaces. Do you want to discard changes in the following workspaces? {{workspaceNames}}', {\n workspaceNames: workspacesNotClosed.join(',')\n }),\n onConfirm: function onConfirm() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('closeAllOpenedWorkspaces', 'Discard changes in {{count}} workspaces', {\n count: workspacesNotClosed.length\n })\n };\n break;\n }\n case 'closing-workspace-launching-new-workspace':\n {\n prompt = {\n title: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('unsavedChangesInWorkspace', 'There may be unsaved changes in \"{{workspaceName}}\". Please save them before opening another workspace.', {\n workspaceName: workspaceTitle\n }),\n onConfirm: function onConfirm() {\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: null\n });\n });\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__rspack_import_4.getCoreTranslation)('openAnyway', 'Open anyway')\n };\n break;\n }\n default:\n {\n console.error('Workspace system trying to open unknown prompt type \"'.concat(promptType, '\" in function \"showWorkspacePrompts\"'));\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n return;\n }\n }\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: prompt\n });\n });\n}\nfunction getWorkspaceTitle(workspace, additionalProps) {\n var _ref;\n return (_ref = additionalProps === null || additionalProps === void 0 ? void 0 : additionalProps['workspaceTitle']) !== null && _ref !== void 0 ? _ref : workspace.title;\n}\nfunction resetWorkspaceStore() {\n getWorkspaceStore().setState(initialState);\n}\n/**\n * The workspace group store is a store that is specific to the workspace group.\n * If the workspace has its own sidebar, the store will be created.\n * This store can be used to store data that is specific to the workspace group.\n * The store will be same for all the workspaces with same group name.\n *\n * For workspaces launched without a group, the store will be undefined.\n *\n * The store will be cleared when all the workspaces with the store's group name are closed.\n */ function getWorkspaceGroupStore(workspaceGroupName) {\n var additionalProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!workspaceGroupName || workspaceGroupName === 'default') {\n return undefined;\n }\n var store = (0,_openmrs_esm_state__rspack_import_3.getGlobalStore)(workspaceGroupName, {});\n if (additionalProps) {\n store.setState(function(prev) {\n return _object_spread({}, prev, additionalProps);\n });\n }\n return store;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC93b3Jrc3BhY2VzL3dvcmtzcGFjZXMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9kaXN0L3dvcmtzcGFjZXMvd29ya3NwYWNlcy5qcz83ZTkwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBXb3Jrc3BhY2UgKi8gaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZ2V0V29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24sIGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbiB9IGZyb20gXCJAb3Blbm1ycy9lc20tZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgbmF2aWdhdGUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLW5hdmlnYXRpb25cIjtcbmltcG9ydCB7IGdldEdsb2JhbFN0b3JlLCBjcmVhdGVHbG9iYWxTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmltcG9ydCB7IGdldENvcmVUcmFuc2xhdGlvbiB9IGZyb20gXCJAb3Blbm1ycy9lc20tdHJhbnNsYXRpb25zXCI7XG5pbXBvcnQgeyB1c2VTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHNcIjtcbi8qKlxuICpcbiAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIHdvcmtzcGFjZVxuICogQHBhcmFtIGlnbm9yZUNoYW5nZXMgSWYgc2V0IHRvIHRydWUsIHRoZSBcInVuc2F2ZWQgY2hhbmdlc1wiIG1vZGFsIHdpbGwgbmV2ZXIgYmUgc2hvd24sIGV2ZW4gaWYgdGhlIGBwcm9tcHRCZWZvcmVDbG9zaW5nYCBmdW5jdGlvbiByZXR1cm5zIHRydWUuIFRoZSB1c2VyIHdpbGwgbm90IGJlIHByb21wdGVkIGJlZm9yZSBjbG9zaW5nLlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgd29ya3NwYWNlIGNhbiBiZSBjbG9zZWQuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyhuYW1lLCBpZ25vcmVDaGFuZ2VzID0gZmFsc2UpIHtcbiAgICBpZiAoaWdub3JlQ2hhbmdlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgcHJvbXB0QmVmb3JlRm4gPSBnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuKG5hbWUpO1xuICAgIHJldHVybiAhcHJvbXB0QmVmb3JlRm4gfHwgIXByb21wdEJlZm9yZUZuKCk7XG59XG4vKipcbiAqIENsb3NlcyBhIHdvcmtzcGFjZSBncm91cCBhbmQgcGVyZm9ybXMgY2xlYW51cCBvcGVyYXRpb25zLlxuICpcbiAqIEBwYXJhbSBncm91cE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIGdyb3VwIHRvIGNsb3NlXG4gKiBAcGFyYW0gb25Xb3Jrc3BhY2VDbG9zZXVwIC0gT3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSBhZnRlciBjbG9zaW5nIHRoZSB3b3Jrc3BhY2UgZ3JvdXBcbiAqIEByZXR1cm5zIHZvaWQsIG9yIGV4aXRzIGVhcmx5IGlmIHRoZSBjdXJyZW50IHdvcmtzcGFjZSBncm91cCBuYW1lIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVkIGdyb3VwIG5hbWVcbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnM6XG4gKiAtIFZhbGlkYXRlcyBpZiB0aGUgcHJvdmlkZWQgZ3JvdXAgbmFtZSBtYXRjaGVzIHRoZSBjdXJyZW50IHdvcmtzcGFjZSBncm91cFxuICogLSBDbG9zZXMgYWxsIHdvcmtzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncm91cFxuICogLSBDbGVhcnMgdGhlIHdvcmtzcGFjZSBncm91cCBzdG9yZSBzdGF0ZVxuICogLSBFeGVjdXRlcyBjbGVhbnVwIGZ1bmN0aW9uIGlmIGRlZmluZWQgaW4gdGhlIHdvcmtzcGFjZSBncm91cFxuICogLSBVcGRhdGVzIHRoZSBtYWluIHdvcmtzcGFjZSBzdG9yZSB0byByZW1vdmUgdGhlIHdvcmtzcGFjZSBncm91cFxuICogLSBDYWxscyB0aGUgb3B0aW9uYWwgY2xvc2V1cCBjYWxsYmFjayBpZiBwcm92aWRlZFxuICpcbiAqIEBkZXByZWNhdGVkIG1pZ3JhdGUgdG8gd29ya3NwYWNlIHYyIGFuZCB1c2UgY2xvc2VXb3Jrc3BhY2VHcm91cDIgaW5zdGVhZC4gU2VlOlxuICogaHR0cHM6Ly9vcGVubXJzLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvZG9jcy9wYWdlcy82MTU2Nzc5ODEvV29ya3NwYWNlK3YyK01pZ3JhdGlvbitHdWlkZVxuICovIGZ1bmN0aW9uIGNsb3NlV29ya3NwYWNlR3JvdXAoZ3JvdXBOYW1lLCBvbldvcmtzcGFjZUNsb3NldXApIHtcbiAgICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgY29uc3QgY3VycmVudFdvcmtzcGFjZUdyb3VwID0gc3RvcmUuZ2V0U3RhdGUoKT8ud29ya3NwYWNlR3JvdXA7XG4gICAgY29uc3QgY3VycmVudEdyb3VwTmFtZSA9IGN1cnJlbnRXb3Jrc3BhY2VHcm91cD8ubmFtZTtcbiAgICBpZiAoIWN1cnJlbnRHcm91cE5hbWUgfHwgZ3JvdXBOYW1lICE9PSBjdXJyZW50R3JvdXBOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyID0gY3VycmVudEdyb3VwTmFtZSA/ICh3b3Jrc3BhY2UpPT53b3Jrc3BhY2UuY3VycmVudFdvcmtzcGFjZUdyb3VwID09PSBjdXJyZW50R3JvdXBOYW1lIDogKCk9PnRydWU7XG4gICAgY2xvc2VBbGxXb3Jrc3BhY2VzKCgpPT57XG4gICAgICAgIC8vIENsZWFyaW5nIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgYW5kIHJlc3BlY3RpdmUgc3RvcmUgaWYgdGhlIG5ldyB3b3Jrc3BhY2UgaXMgbm90IHBhcnQgb2YgdGhlIGN1cnJlbnQgZ3JvdXAsIHdoaWNoIGlzIGhhbmRsZWQgaW4gdGhlIGBsYXVuY2hXb3Jrc3BhY2VgIGZ1bmN0aW9uLlxuICAgICAgICBjb25zdCB3b3Jrc3BhY2VHcm91cFN0b3JlID0gZ2V0V29ya3NwYWNlR3JvdXBTdG9yZShncm91cE5hbWUpO1xuICAgICAgICBpZiAod29ya3NwYWNlR3JvdXBTdG9yZSkge1xuICAgICAgICAgICAgd29ya3NwYWNlR3JvdXBTdG9yZS5zZXRTdGF0ZSh7fSwgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCB1bnN1YnNjcmliZSA9IHdvcmtzcGFjZUdyb3VwU3RvcmUuc3Vic2NyaWJlKCgpPT57fSk7XG4gICAgICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgY3VycmVudFdvcmtzcGFjZUdyb3VwPy5jbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjdXJyZW50V29ya3NwYWNlR3JvdXAuY2xlYW51cCgpO1xuICAgICAgICB9XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KT0+KHtcbiAgICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICAgIHdvcmtzcGFjZUdyb3VwOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgaWYgKHR5cGVvZiBvbldvcmtzcGFjZUNsb3NldXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG9uV29ya3NwYWNlQ2xvc2V1cCgpO1xuICAgICAgICB9XG4gICAgfSwgZmlsdGVyKTtcbn1cbi8qKlxuICogTGF1bmNoZXMgYSB3b3Jrc3BhY2UgZ3JvdXAgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgYW5kIGNvbmZpZ3VyYXRpb24uXG4gKiBJZiB0aGVyZSBhcmUgYW55IG9wZW4gd29ya3NwYWNlcywgaXQgd2lsbCBmaXJzdCBjbG9zZSB0aGVtIGJlZm9yZSBsYXVuY2hpbmcgdGhlIG5ldyB3b3Jrc3BhY2UgZ3JvdXAuXG4gKlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgdG8gbGF1bmNoXG4gKiBAcGFyYW0gYXJncyAtIENvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBsYXVuY2hpbmcgdGhlIHdvcmtzcGFjZSBncm91cFxuICogQHBhcmFtIGFyZ3Muc3RhdGUgLSBUaGUgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIHdvcmtzcGFjZSBncm91cFxuICogQHBhcmFtIGFyZ3Mub25Xb3Jrc3BhY2VHcm91cExhdW5jaCAtIE9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgaXMgbGF1bmNoZWRcbiAqIEBwYXJhbSBhcmdzLndvcmtzcGFjZUdyb3VwQ2xlYW51cCAtIE9wdGlvbmFsIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgd2hlbiB0aGUgd29ya3NwYWNlIGdyb3VwIGlzIGNsb3NlZFxuICpcbiAqIEBleGFtcGxlXG4gKiBsYXVuY2hXb3Jrc3BhY2VHcm91cChcIm15R3JvdXBcIiwge1xuICogICBzdGF0ZTogaW5pdGlhbFN0YXRlLFxuICogICBvbldvcmtzcGFjZUdyb3VwTGF1bmNoOiAoKSA9PiBjb25zb2xlLmxvZyhcIldvcmtzcGFjZSBncm91cCBsYXVuY2hlZFwiKSxcbiAqICAgd29ya3NwYWNlR3JvdXBDbGVhbnVwOiAoKSA9PiBjb25zb2xlLmxvZyhcIkNsZWFuaW5nIHVwIHdvcmtzcGFjZSBncm91cFwiKVxuICogfSk7XG4gKlxuICogQGRlcHJlY2F0ZWQgbWlncmF0ZSB0byB3b3Jrc3BhY2UgdjIgYW5kIHVzZSBsYXVuY2hXb3Jrc3BhY2VHcm91cDIgaW5zdGVhZC4gU2VlOlxuICogaHR0cHM6Ly9vcGVubXJzLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvZG9jcy9wYWdlcy82MTU2Nzc5ODEvV29ya3NwYWNlK3YyK01pZ3JhdGlvbitHdWlkZVxuICovIGV4cG9ydCBmdW5jdGlvbiBsYXVuY2hXb3Jrc3BhY2VHcm91cChncm91cE5hbWUsIGFyZ3MpIHtcbiAgICBjb25zdCB3b3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbiA9IGdldFdvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uKGdyb3VwTmFtZSk7XG4gICAgY29uc3QgeyBzdGF0ZSwgb25Xb3Jrc3BhY2VHcm91cExhdW5jaCwgd29ya3NwYWNlR3JvdXBDbGVhbnVwLCB3b3Jrc3BhY2VUb0xhdW5jaCB9ID0gYXJncztcbiAgICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgaWYgKHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZUdyb3VwID0gc3RvcmUuZ2V0U3RhdGUoKS53b3Jrc3BhY2VHcm91cDtcbiAgICAgICAgaWYgKHdvcmtzcGFjZUdyb3VwKSB7XG4gICAgICAgICAgICBjbG9zZVdvcmtzcGFjZUdyb3VwKHdvcmtzcGFjZUdyb3VwPy5uYW1lLCAoKT0+e1xuICAgICAgICAgICAgICAgIGxhdW5jaFdvcmtzcGFjZUdyb3VwKGdyb3VwTmFtZSwgYXJncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsb3NlQWxsV29ya3NwYWNlcygoKT0+e1xuICAgICAgICAgICAgICAgIGxhdW5jaFdvcmtzcGFjZUdyb3VwKGdyb3VwTmFtZSwgYXJncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KT0+KHtcbiAgICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICAgIHdvcmtzcGFjZUdyb3VwOiB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGdyb3VwTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbWVtYmVyczogd29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24ubWVtYmVycyxcbiAgICAgICAgICAgICAgICAgICAgY2xlYW51cDogd29ya3NwYWNlR3JvdXBDbGVhbnVwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICBnZXRXb3Jrc3BhY2VHcm91cFN0b3JlKGdyb3VwTmFtZSwgc3RhdGUpO1xuICAgICAgICBvbldvcmtzcGFjZUdyb3VwTGF1bmNoPy4oKTtcbiAgICAgICAgaWYgKHdvcmtzcGFjZVRvTGF1bmNoKSB7XG4gICAgICAgICAgICBsYXVuY2hXb3Jrc3BhY2Uod29ya3NwYWNlVG9MYXVuY2gubmFtZSwgd29ya3NwYWNlVG9MYXVuY2guYWRkaXRpb25hbFByb3BzID8/IHt9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZSh3b3Jrc3BhY2UsIG5ld1dvcmtzcGFjZURldGFpbHMpIHtcbiAgICBjb25zdCB7IG5hbWUsIGFkZGl0aW9uYWxQcm9wcyB9ID0gbmV3V29ya3NwYWNlRGV0YWlscztcbiAgICBjb25zdCBuZXdXb3Jrc3BhY2VSZWdpc3RyYXRpb24gPSBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZSk7XG4gICAgY29uc3QgcHJvY2VlZCA9ICgpPT57XG4gICAgICAgIGNsb3NlV29ya3NwYWNlKHdvcmtzcGFjZS5uYW1lLCB7XG4gICAgICAgICAgICBpZ25vcmVDaGFuZ2VzOiB0cnVlLFxuICAgICAgICAgICAgLy8gQ2FsbGluZyB0aGUgbGF1bmNoV29ya3NwYWNlIGFnYWluLCBzaW5jZSBvbmUgb2YgdGhlIGBpZmAgY2FzZVxuICAgICAgICAgICAgLy8gbWlnaHQgcmVzb2x2ZSwgYnV0IHdlIG5lZWQgdG8gY2hlY2sgYWxsIHRoZSBjYXNlcyBiZWZvcmUgbGF1bmNoaW5nIHRoZSBmb3JtLlxuICAgICAgICAgICAgb25Xb3Jrc3BhY2VDbG9zZTogKCk9PmxhdW5jaFdvcmtzcGFjZShuYW1lLCBhZGRpdGlvbmFsUHJvcHMpLFxuICAgICAgICAgICAgLy8gSWYgdGhlIG5ldyB3b3Jrc3BhY2UgaXMgb2YgdGhlIHNhbWUgc2lkZWJhciBncm91cCwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgc3RvcmUuXG4gICAgICAgICAgICBjbG9zZVdvcmtzcGFjZUdyb3VwOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGlmICghY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKHdvcmtzcGFjZS5uYW1lKSkge1xuICAgICAgICBzaG93V29ya3NwYWNlUHJvbXB0cygnY2xvc2luZy13b3Jrc3BhY2UtbGF1bmNoaW5nLW5ldy13b3Jrc3BhY2UnLCBwcm9jZWVkLCB3b3Jrc3BhY2UudGl0bGUgPz8gd29ya3NwYWNlLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2NlZWQoKTtcbiAgICB9XG59XG4vKipcbiAqIFRoaXMgbGF1bmNoZXMgYSB3b3Jrc3BhY2UgYnkgaXRzIG5hbWUuIFRoZSB3b3Jrc3BhY2UgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZC5cbiAqIFdvcmtzcGFjZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGByb3V0ZXMuanNvbmAgZmlsZS5cbiAqXG4gKiBGb3IgdGhlIHdvcmtzcGFjZSB0byBhcHBlYXIsIHRoZXJlIG11c3QgYmUgZWl0aGVyIGEgYDxXb3Jrc3BhY2VPdmVybGF5IC8+YCBvclxuICogYSBgPFdvcmtzcGFjZVdpbmRvdyAvPmAgY29tcG9uZW50IHJlbmRlcmVkLlxuICpcbiAqIFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogLSBJZiBubyB3b3Jrc3BhY2VzIGFyZSBvcGVuLCBvciBpZiBubyBvdGhlciB3b3Jrc3BhY2VzIHdpdGggdGhlIHNhbWUgdHlwZSBhcmUgb3BlbixcbiAqICAgaXQgd2lsbCBiZSBvcGVuZWQgYW5kIGZvY3VzZWQuXG4gKiAtIElmIGEgd29ya3NwYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBpcyBhbHJlYWR5IG9wZW4sIGl0IHdpbGwgYmUgZGlzcGxheWVkL2ZvY3VzZWQsXG4gKiAgIGlmIGl0IHdhcyBub3QgYWxyZWFkeS5cbiAqIC0gSWYgYSB3b3Jrc3BhY2UgaXMgbGF1bmNoZWQgYW5kIGEgd29ya3NwYWNlIHdoaWNoIGNhbm5vdCBiZSBoaWRkZW4gaXMgYWxyZWFkeSBvcGVuLFxuICogIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgY3VycmVudGx5IG9wZW4gd29ya3NwYWNlLlxuICogLSBJZiBhbm90aGVyIHdvcmtzcGFjZSB3aXRoIHRoZSBzYW1lIHR5cGUgaXMgb3BlbiwgdGhlIHdvcmtzcGFjZSB3aWxsIGJlIGJyb3VnaHQgdG9cbiAqICAgdGhlIGZyb250IGFuZCB0aGVuIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgb3BlbmVkXG4gKiAgIHdvcmtzcGFjZVxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGp1c3QgbWFuaXB1bGF0ZXMgdGhlIHdvcmtzcGFjZSBzdG9yZS4gVGhlIFVJIGxvZ2ljIGlzIGhhbmRsZWRcbiAqIGJ5IHRoZSBjb21wb25lbnRzIHRoYXQgZGlzcGxheSB3b3Jrc3BhY2VzLlxuICpcbiAqIEFkZGl0aW9uYWwgcHJvcHMgY2FuIGJlIHBhc3NlZCB0byB0aGUgd29ya3NwYWNlIGNvbXBvbmVudCBiZWluZyBsYXVuY2hlZC4gUGFzc2luZyBhXG4gKiBwcm9wIG5hbWVkIGB3b3Jrc3BhY2VUaXRsZWAgd2lsbCBvdmVycmlkZSB0aGUgdGl0bGUgb2YgdGhlIHdvcmtzcGFjZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIHRvIGxhdW5jaFxuICogQHBhcmFtIGFkZGl0aW9uYWxQcm9wcyBQcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLiBQYXNzaW5nXG4gKiAgICAgICAgICBhIHByb3AgbmFtZWQgYHdvcmtzcGFjZVRpdGxlYCB3aWxsIG92ZXJyaWRlIHRoZSB0aXRsZSBvZiB0aGUgd29ya3NwYWNlLlxuICpcbiAqIEBkZXByZWNhdGVkIG1pZ3JhdGUgdG8gd29ya3NwYWNlIHYyIGFuZCB1c2UgbGF1bmNoV29ya3NwYWNlMiBpbnN0ZWFkLiBTZWU6XG4gKiBodHRwczovL29wZW5tcnMuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9kb2NzL3BhZ2VzLzYxNTY3Nzk4MS9Xb3Jrc3BhY2UrdjIrTWlncmF0aW9uK0d1aWRlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGxhdW5jaFdvcmtzcGFjZShuYW1lLCBhZGRpdGlvbmFsUHJvcHMpIHtcbiAgICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgY29uc3Qgd29ya3NwYWNlID0gZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uKG5hbWUpO1xuICAgIGNvbnN0IGN1cnJlbnRXb3Jrc3BhY2VHcm91cCA9IHN0b3JlLmdldFN0YXRlKCkud29ya3NwYWNlR3JvdXA7XG4gICAgaWYgKGN1cnJlbnRXb3Jrc3BhY2VHcm91cCAmJiAhY3VycmVudFdvcmtzcGFjZUdyb3VwLm1lbWJlcnM/LmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICAgIGNsb3NlV29ya3NwYWNlR3JvdXAoY3VycmVudFdvcmtzcGFjZUdyb3VwLm5hbWUsICgpPT57XG4gICAgICAgICAgICBsYXVuY2hXb3Jrc3BhY2UobmFtZSwgYWRkaXRpb25hbFByb3BzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEdyb3VwTmFtZSA9IHN0b3JlLmdldFN0YXRlKCkud29ya3NwYWNlR3JvdXA/Lm5hbWU7XG4gICAgY29uc3QgbmV3V29ya3NwYWNlID0ge1xuICAgICAgICAuLi53b3Jrc3BhY2UsXG4gICAgICAgIHRpdGxlOiBnZXRXb3Jrc3BhY2VUaXRsZSh3b3Jrc3BhY2UsIGFkZGl0aW9uYWxQcm9wcyksXG4gICAgICAgIGNsb3NlV29ya3NwYWNlOiAob3B0aW9ucyA9IHt9KT0+Y2xvc2VXb3Jrc3BhY2UobmFtZSwgb3B0aW9ucyksXG4gICAgICAgIGNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlczogKG9wdGlvbnMpPT5jbG9zZVdvcmtzcGFjZShuYW1lLCB7XG4gICAgICAgICAgICAgICAgaWdub3JlQ2hhbmdlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgcHJvbXB0QmVmb3JlQ2xvc2luZzogKHRlc3RGY24pPT5wcm9tcHRCZWZvcmVDbG9zaW5nKG5hbWUsIHRlc3RGY24pLFxuICAgICAgICBzZXRUaXRsZTogKHRpdGxlLCB0aXRsZU5vZGUpPT57XG4gICAgICAgICAgICBuZXdXb3Jrc3BhY2UudGl0bGUgPSB0aXRsZTtcbiAgICAgICAgICAgIG5ld1dvcmtzcGFjZS50aXRsZU5vZGUgPSB0aXRsZU5vZGU7XG4gICAgICAgICAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT57XG4gICAgICAgICAgICAgICAgY29uc3Qgb3BlbldvcmtzcGFjZXMgPSBzdGF0ZS5vcGVuV29ya3NwYWNlcy5tYXAoKHcpPT53Lm5hbWUgPT09IG5hbWUgPyBuZXdXb3Jrc3BhY2UgOiB3KTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgb3BlbldvcmtzcGFjZXNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGN1cnJlbnRXb3Jrc3BhY2VHcm91cDogY3VycmVudEdyb3VwTmFtZSxcbiAgICAgICAgYWRkaXRpb25hbFByb3BzOiBhZGRpdGlvbmFsUHJvcHMgPz8ge31cbiAgICB9O1xuICAgIGlmIChjdXJyZW50R3JvdXBOYW1lKSB7XG4gICAgICAgIGdldFdvcmtzcGFjZUdyb3VwU3RvcmUoY3VycmVudEdyb3VwTmFtZSwgYWRkaXRpb25hbFByb3BzKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKHdvcmtzcGFjZVRvQmVBZGRlZCwgcmVzdE9mVGhlV29ya3NwYWNlcykge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT57XG4gICAgICAgICAgICBjb25zdCBvcGVuV29ya3NwYWNlcyA9IFtcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2VUb0JlQWRkZWQsXG4gICAgICAgICAgICAgICAgLi4ucmVzdE9mVGhlV29ya3NwYWNlcyA/PyBzdGF0ZS5vcGVuV29ya3NwYWNlc1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGxldCB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSA9IGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZSh3b3Jrc3BhY2VUb0JlQWRkZWQpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBvcGVuV29ya3NwYWNlcyxcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG9wZW5Xb3Jrc3BhY2VzID0gc3RvcmUuZ2V0U3RhdGUoKS5vcGVuV29ya3NwYWNlcztcbiAgICBjb25zdCB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maW5kSW5kZXgoKHcpPT53Lm5hbWUgPT09IG5hbWUpO1xuICAgIGNvbnN0IGlzV29ya3NwYWNlQWxyZWFkeU9wZW4gPSB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPj0gMDtcbiAgICBjb25zdCBvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUgPSBvcGVuV29ya3NwYWNlcy5maW5kKCh3KT0+dy50eXBlID09IG5ld1dvcmtzcGFjZS50eXBlKTtcbiAgICBpZiAob3BlbldvcmtzcGFjZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShuZXdXb3Jrc3BhY2UpO1xuICAgIH0gZWxzZSBpZiAoIW9wZW5Xb3Jrc3BhY2VzWzBdLmNhbkhpZGUgJiYgd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzICE9PSAwKSB7XG4gICAgICAgIHByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZShvcGVuV29ya3NwYWNlc1swXSwge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wc1xuICAgICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGlzV29ya3NwYWNlQWxyZWFkeU9wZW4pIHtcbiAgICAgICAgY29uc3Qgb3BlbldvcmtzcGFjZSA9IG9wZW5Xb3Jrc3BhY2VzW3dvcmtzcGFjZUluZGV4SW5PcGVuV29ya3NwYWNlc107XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBvYmplY3QgcmVmZXJlbmNlIHNvIHRoYXQgV29ya3NwYWNlUmVuZGVyZXIncyB1c2VNZW1vXG4gICAgICAgIC8vIGRldGVjdHMgdGhlIGNoYW5nZSBhbmQgcmUtcmVuZGVycyB3aXRoIHRoZSB1cGRhdGVkIGFkZGl0aW9uYWxQcm9wcy5cbiAgICAgICAgY29uc3QgdXBkYXRlZFdvcmtzcGFjZSA9IHtcbiAgICAgICAgICAgIC4uLm9wZW5Xb3Jrc3BhY2UsXG4gICAgICAgICAgICBhZGRpdGlvbmFsUHJvcHM6IG5ld1dvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHMsXG4gICAgICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdGl0bGUgaWYgaXQgaGFzbid0IGJlZW4gc2V0IGJ5IGBzZXRUaXRsZWBcbiAgICAgICAgICAgIC4uLm9wZW5Xb3Jrc3BhY2UudGl0bGUgPT09IGdldFdvcmtzcGFjZVRpdGxlKG9wZW5Xb3Jrc3BhY2UsIG9wZW5Xb3Jrc3BhY2UuYWRkaXRpb25hbFByb3BzKSAmJiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGdldFdvcmtzcGFjZVRpdGxlKG5ld1dvcmtzcGFjZSwgbmV3V29ya3NwYWNlLmFkZGl0aW9uYWxQcm9wcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdE9mVGhlV29ya3NwYWNlcyA9IG9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigodyk9PncubmFtZSAhPSBuYW1lKTtcbiAgICAgICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKHVwZGF0ZWRXb3Jrc3BhY2UsIHJlc3RPZlRoZVdvcmtzcGFjZXMpO1xuICAgIH0gZWxzZSBpZiAob3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlKSB7XG4gICAgICAgIGNvbnN0IHJlc3RPZlRoZVdvcmtzcGFjZXMgPSBzdG9yZS5nZXRTdGF0ZSgpLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigodyk9PncudHlwZSAhPSBuZXdXb3Jrc3BhY2UudHlwZSk7XG4gICAgICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUsIHJlc3RPZlRoZVdvcmtzcGFjZXMpO1xuICAgICAgICBwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2Uob3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlLCB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BzXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShuZXdXb3Jrc3BhY2UpO1xuICAgIH1cbn1cbi8qKlxuICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gbmF2aWdhdGUgdG8gYSBuZXcgcGFnZSBhbmQgbGF1bmNoIGEgd29ya3NwYWNlIG9uIHRoYXQgcGFnZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgbmF2aWdhdGluZyBhbmQgbGF1bmNoaW5nIHRoZSB3b3Jrc3BhY2UuXG4gKiBAcGFyYW0gb3B0aW9ucy50YXJnZXRVcmwgVGhlIFVSTCB0byBuYXZpZ2F0ZSB0by4gV2lsbCBiZSBwYXNzZWQgdG8gW1tuYXZpZ2F0ZV1dLlxuICogQHBhcmFtIG9wdGlvbnMuY29udGV4dEtleSBUaGUgY29udGV4dCBrZXkgdXNlZCBieSB0aGUgdGFyZ2V0IHBhZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucy53b3Jrc3BhY2VOYW1lIFRoZSBuYW1lIG9mIHRoZSB3b3Jrc3BhY2UgdG8gbGF1bmNoLlxuICogQHBhcmFtIG9wdGlvbnMuYWRkaXRpb25hbFByb3BzIEFkZGl0aW9uYWwgcHJvcHMgdG8gcGFzcyB0byB0aGUgd29ya3NwYWNlIGNvbXBvbmVudCBiZWluZyBsYXVuY2hlZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBtaWdyYXRlIHRvIHdvcmtzcGFjZSB2MiBhbmQgY2FsbCBsYXVuY2hXb3Jrc3BhY2UyIGluc3RlYWQuIFNlZTpcbiAqIGh0dHBzOi8vb3Blbm1ycy5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL2RvY3MvcGFnZXMvNjE1Njc3OTgxL1dvcmtzcGFjZSt2MitNaWdyYXRpb24rR3VpZGVcbiAqLyBleHBvcnQgZnVuY3Rpb24gbmF2aWdhdGVBbmRMYXVuY2hXb3Jrc3BhY2UoeyB0YXJnZXRVcmwsIGNvbnRleHRLZXksIHdvcmtzcGFjZU5hbWUsIGFkZGl0aW9uYWxQcm9wcyB9KSB7XG4gICAgY2hhbmdlV29ya3NwYWNlQ29udGV4dChjb250ZXh0S2V5KTtcbiAgICBsYXVuY2hXb3Jrc3BhY2Uod29ya3NwYWNlTmFtZSwgYWRkaXRpb25hbFByb3BzKTtcbiAgICBuYXZpZ2F0ZSh7XG4gICAgICAgIHRvOiB0YXJnZXRVcmxcbiAgICB9KTtcbn1cbmNvbnN0IHByb21wdEJlZm9yZUNsb3NpbmdGY25zID0ge307XG5leHBvcnQgZnVuY3Rpb24gcHJvbXB0QmVmb3JlQ2xvc2luZyh3b3Jrc3BhY2VOYW1lLCB0ZXN0RmNuKSB7XG4gICAgcHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnNbd29ya3NwYWNlTmFtZV0gPSB0ZXN0RmNuO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb21wdEJlZm9yZUNsb3NpbmdGY24od29ya3NwYWNlTmFtZSkge1xuICAgIHJldHVybiBwcm9tcHRCZWZvcmVDbG9zaW5nRmNuc1t3b3Jrc3BhY2VOYW1lXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjYW5jZWxQcm9tcHQoKSB7XG4gICAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBzdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBwcm9tcHQ6IG51bGxcbiAgICB9KTtcbn1cbmNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGlnbm9yZUNoYW5nZXM6IGZhbHNlLFxuICAgIG9uV29ya3NwYWNlQ2xvc2U6ICgpPT57fSxcbiAgICBjbG9zZVdvcmtzcGFjZUdyb3VwOiB0cnVlXG59O1xuLyoqXG4gKiBGdW5jdGlvbiB0byBjbG9zZSBhbiBvcGVuZWQgd29ya3NwYWNlXG4gKiBAcGFyYW0gbmFtZSBXb3Jrc3BhY2UgcmVnaXN0cmF0aW9uIG5hbWVcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgdG8gY2xvc2Ugd29ya3NwYWNlXG4gKlxuICogQGRlcHJlY2F0ZWQgbWlncmF0ZSB0byB3b3Jrc3BhY2UgdjIgYW5kIGNhbGwgY2xvc2VXb3Jrc3BhY2UgZnJvbSBXb3Jrc3BhY2UyRGVmaW5pdGlvblByb3BzIGluc3RlYWQuIFNlZTpcbiAqIGh0dHBzOi8vb3Blbm1ycy5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL2RvY3MvcGFnZXMvNjE1Njc3OTgxL1dvcmtzcGFjZSt2MitNaWdyYXRpb24rR3VpZGVcbiAqLyBleHBvcnQgZnVuY3Rpb24gY2xvc2VXb3Jrc3BhY2UobmFtZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuICAgIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgICBjb25zdCB1cGRhdGVTdG9yZVdpdGhDbG9zZWRXb3Jrc3BhY2UgPSAoKT0+e1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZVRvQmVDbG9zZWQgPSBzdGF0ZS5vcGVuV29ya3NwYWNlcy5maW5kKCh3KT0+dy5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgY29uc3QgbmV3T3BlbldvcmtzcGFjZXMgPSBzdGF0ZS5vcGVuV29ya3NwYWNlcy5maWx0ZXIoKHcpPT53Lm5hbWUgIT0gbmFtZSk7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZUdyb3VwTmFtZSA9IHN0b3JlLmdldFN0YXRlKCkud29ya3NwYWNlR3JvdXA/Lm5hbWU7XG4gICAgICAgIGlmICh3b3Jrc3BhY2VHcm91cE5hbWUgJiYgb3B0aW9ucy5jbG9zZVdvcmtzcGFjZUdyb3VwKSB7XG4gICAgICAgICAgICBjbG9zZVdvcmtzcGFjZUdyb3VwKHdvcmtzcGFjZUdyb3VwTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZW5zdXJlIGNsb3NlZCB3b3Jrc3BhY2Ugd2lsbCBub3QgcHJvbXB0XG4gICAgICAgIHByb21wdEJlZm9yZUNsb3NpbmcobmFtZSwgKCk9PmZhbHNlKTtcbiAgICAgICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpPT4oe1xuICAgICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgICAgcHJvbXB0OiBudWxsLFxuICAgICAgICAgICAgICAgIG9wZW5Xb3Jrc3BhY2VzOiBuZXdPcGVuV29ya3NwYWNlcyxcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogZ2V0VXBkYXRlZFdvcmtzcGFjZVdpbmRvd1N0YXRlKG5ld09wZW5Xb3Jrc3BhY2VzPy5bMF0pXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIG9wdGlvbnM/Lm9uV29ya3NwYWNlQ2xvc2U/LigpO1xuICAgIH07XG4gICAgaWYgKCFjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSwgb3B0aW9ucz8uaWdub3JlQ2hhbmdlcykpIHtcbiAgICAgICAgY29uc3QgY3VycmVudE5hbWUgPSBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZSkudGl0bGUgPz8gbmFtZTtcbiAgICAgICAgc2hvd1dvcmtzcGFjZVByb21wdHMoJ2Nsb3Npbmctd29ya3NwYWNlJywgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlLCBjdXJyZW50TmFtZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGVTdG9yZVdpdGhDbG9zZWRXb3Jrc3BhY2UoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuLyoqXG4gKiBUaGUgc2V0IG9mIHdvcmtzcGFjZXMgaXMgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIHBhZ2UuIFRoaXMgZnVuY3Rpb25cbiAqIHNob3VsZCBiZSB1c2VkIHdoZW4gdHJhbnNpdGlvbmluZyB0byBhIG5ldyBwYWdlLiBJZiB0aGUgY3VycmVudFxuICogd29ya3NwYWNlIGRhdGEgaXMgZm9yIGEgZGlmZmVyZW50IHBhZ2UsIHRoZSB3b3Jrc3BhY2Ugc3RhdGUgaXMgY2xlYXJlZC5cbiAqXG4gKiBUaGlzIGlzIGNhbGxlZCBieSB0aGUgd29ya3NwYWNlIGNvbXBvbmVudHMgd2hlbiB0aGV5IG1vdW50LlxuICogQGludGVybmFsXG4gKlxuICogQHBhcmFtIGNvbnRleHRLZXkgQW4gYXJiaXRyYXJ5IGtleSB0byBpZGVudGlmeSB0aGUgY3VycmVudCBwYWdlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZVdvcmtzcGFjZUNvbnRleHQoY29udGV4dEtleSkge1xuICAgIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgaWYgKHN0YXRlLmNvbnRleHQgIT0gY29udGV4dEtleSkge1xuICAgICAgICBzdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0S2V5LFxuICAgICAgICAgICAgb3BlbldvcmtzcGFjZXM6IFtdLFxuICAgICAgICAgICAgcHJvbXB0OiBudWxsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICBjb250ZXh0OiAnJyxcbiAgICBvcGVuV29ya3NwYWNlczogW10sXG4gICAgcHJvbXB0OiBudWxsLFxuICAgIHdvcmtzcGFjZVdpbmRvd1N0YXRlOiAnbm9ybWFsJyxcbiAgICB3b3Jrc3BhY2VHcm91cDogdW5kZWZpbmVkXG59O1xuZXhwb3J0IGNvbnN0IHdvcmtzcGFjZVN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmUoJ3dvcmtzcGFjZScsIGluaXRpYWxTdGF0ZSk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlU3RvcmUoKSB7XG4gICAgcmV0dXJuIHdvcmtzcGFjZVN0b3JlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlKHZhbHVlKSB7XG4gICAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBzdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogdmFsdWVcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZSh3b3Jrc3BhY2VBdFRvcCkge1xuICAgIHJldHVybiB3b3Jrc3BhY2VBdFRvcD8ucHJlZmVycmVkV2luZG93U2l6ZSA/PyAnbm9ybWFsJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZUFsbFdvcmtzcGFjZXMob25DbG9zaW5nV29ya3NwYWNlcyA9ICgpPT57fSwgZmlsdGVyID0gKCk9PnRydWUpIHtcbiAgICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgY29uc3QgY2FuQ2xvc2VBbGxXb3Jrc3BhY2VzID0gc3RvcmUuZ2V0U3RhdGUoKS5vcGVuV29ya3NwYWNlcy5maWx0ZXIoZmlsdGVyKS5ldmVyeSgoeyBuYW1lIH0pPT57XG4gICAgICAgIHJldHVybiBjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgdXBkYXRlV29ya3NwYWNlU3RvcmUgPSAoKT0+e1xuICAgICAgICByZXNldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgICAgIG9uQ2xvc2luZ1dvcmtzcGFjZXM/LigpO1xuICAgIH07XG4gICAgaWYgKCFjYW5DbG9zZUFsbFdvcmtzcGFjZXMpIHtcbiAgICAgICAgc2hvd1dvcmtzcGFjZVByb21wdHMoJ2Nsb3NpbmctYWxsLXdvcmtzcGFjZXMnLCB1cGRhdGVXb3Jrc3BhY2VTdG9yZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlV29ya3NwYWNlU3RvcmUoKTtcbiAgICB9XG59XG4vKipcbiAqIEBkZXByZWNhdGVkIG1pZ3JhdGUgdG8gd29ya3NwYWNlIHYyLiBTZWU6XG4gKiBodHRwczovL29wZW5tcnMuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9kb2NzL3BhZ2VzLzYxNTY3Nzk4MS9Xb3Jrc3BhY2UrdjIrTWlncmF0aW9uK0d1aWRlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVzZVdvcmtzcGFjZXMoKSB7XG4gICAgY29uc3QgeyB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSwgb3BlbldvcmtzcGFjZXMsIHByb21wdCwgd29ya3NwYWNlR3JvdXAgfSA9IHVzZVN0b3JlKHdvcmtzcGFjZVN0b3JlKTtcbiAgICBjb25zdCBtZW1vaXNlZFJlc3VsdHMgPSB1c2VNZW1vKCgpPT57XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhY3RpdmU6IG9wZW5Xb3Jrc3BhY2VzLmxlbmd0aCA+IDAsXG4gICAgICAgICAgICBwcm9tcHQsXG4gICAgICAgICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSxcbiAgICAgICAgICAgIHdvcmtzcGFjZXM6IG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgICAgICAgd29ya3NwYWNlR3JvdXBcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICB3b3Jrc3BhY2VHcm91cFxuICAgIF0pO1xuICAgIHJldHVybiBtZW1vaXNlZFJlc3VsdHM7XG59XG4vKipcbiAqIFNldHMgdGhlIGN1cnJlbnQgcHJvbXB0IGFjY29yZGluZyB0byB0aGUgcHJvbXB0IHR5cGUuXG4gKiBAcGFyYW0gcHJvbXB0VHlwZSBEZXRlcm1pbmVzIHRoZSB0ZXh0IGFuZCBiZWhhdmlvciBvZiB0aGUgcHJvbXB0XG4gKiBAcGFyYW0gb25Db25maXJtYXRpb24gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSB1c2VyIGNvbmZpcm1zIHRvIGNsb3NlIHRoZSB3b3Jrc3BhY2VcbiAqIEBwYXJhbSB3b3Jrc3BhY2VUaXRsZSBXb3Jrc3BhY2UgdGl0bGUgdG8gYmUgc2hvd24gaW4gdGhlIHByb21wdFxuICogQHJldHVybnNcbiAqLyBleHBvcnQgZnVuY3Rpb24gc2hvd1dvcmtzcGFjZVByb21wdHMocHJvbXB0VHlwZSwgb25Db25maXJtYXRpb24gPSAoKT0+e30sIHdvcmtzcGFjZVRpdGxlID0gJycpIHtcbiAgICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gICAgbGV0IHByb21wdDtcbiAgICBzd2l0Y2gocHJvbXB0VHlwZSl7XG4gICAgICAgIGNhc2UgJ2Nsb3Npbmctd29ya3NwYWNlJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm9tcHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ3Vuc2F2ZWRDaGFuZ2VzVGl0bGVUZXh0JywgJ1Vuc2F2ZWQgY2hhbmdlcycpLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBnZXRDb3JlVHJhbnNsYXRpb24oJ3Vuc2F2ZWRDaGFuZ2VzSW5PcGVuZWRXb3Jrc3BhY2UnLCBgWW91IG1heSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyBpbiB0aGUgb3BlbmVkIHdvcmtzcGFjZS4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCB0aGVzZSBjaGFuZ2VzP2ApLFxuICAgICAgICAgICAgICAgICAgICBvbkNvbmZpcm06ICgpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1UZXh0OiBnZXRDb3JlVHJhbnNsYXRpb24oJ2Rpc2NhcmQnLCAnRGlzY2FyZCcpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnY2xvc2luZy1hbGwtd29ya3NwYWNlcyc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd29ya3NwYWNlc05vdENsb3NlZCA9IHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMuZmlsdGVyKCh7IG5hbWUgfSk9PiFjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZSkpLm1hcCgoeyB0aXRsZSB9LCBpbmR4KT0+YCR7aW5keCArIDF9LiAke3RpdGxlfWApO1xuICAgICAgICAgICAgICAgIHByb21wdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRUaXRsZScsICdZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zaW5nQWxsV29ya3NwYWNlc1Byb21wdEJvZHknLCAnVGhlcmUgbWF5IGJlIHVuc2F2ZWQgY2hhbmdlcyBpbiB0aGUgZm9sbG93aW5nIHdvcmtzcGFjZXMuIERvIHlvdSB3YW50IHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB0aGUgZm9sbG93aW5nIHdvcmtzcGFjZXM/IHt7d29ya3NwYWNlTmFtZXN9fScsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZU5hbWVzOiB3b3Jrc3BhY2VzTm90Q2xvc2VkLmpvaW4oJywnKVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgb25Db25maXJtOiAoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgb25Db25maXJtYXRpb24/LigpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZUFsbE9wZW5lZFdvcmtzcGFjZXMnLCAnRGlzY2FyZCBjaGFuZ2VzIGluIHt7Y291bnR9fSB3b3Jrc3BhY2VzJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IHdvcmtzcGFjZXNOb3RDbG9zZWQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnY2xvc2luZy13b3Jrc3BhY2UtbGF1bmNoaW5nLW5ldy13b3Jrc3BhY2UnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb21wdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldENvcmVUcmFuc2xhdGlvbigndW5zYXZlZENoYW5nZXNUaXRsZVRleHQnLCAnVW5zYXZlZCBjaGFuZ2VzJyksXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IGdldENvcmVUcmFuc2xhdGlvbigndW5zYXZlZENoYW5nZXNJbldvcmtzcGFjZScsICdUaGVyZSBtYXkgYmUgdW5zYXZlZCBjaGFuZ2VzIGluIFwie3t3b3Jrc3BhY2VOYW1lfX1cIi4gUGxlYXNlIHNhdmUgdGhlbSBiZWZvcmUgb3BlbmluZyBhbm90aGVyIHdvcmtzcGFjZS4nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VOYW1lOiB3b3Jrc3BhY2VUaXRsZVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgb25Db25maXJtOiAoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IGdldENvcmVUcmFuc2xhdGlvbignb3BlbkFueXdheScsICdPcGVuIGFueXdheScpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBXb3Jrc3BhY2Ugc3lzdGVtIHRyeWluZyB0byBvcGVuIHVua25vd24gcHJvbXB0IHR5cGUgXCIke3Byb21wdFR5cGV9XCIgaW4gZnVuY3Rpb24gXCJzaG93V29ya3NwYWNlUHJvbXB0c1wiYCk7XG4gICAgICAgICAgICAgICAgb25Db25maXJtYXRpb24/LigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgcHJvbXB0XG4gICAgICAgIH0pKTtcbn1cbmZ1bmN0aW9uIGdldFdvcmtzcGFjZVRpdGxlKHdvcmtzcGFjZSwgYWRkaXRpb25hbFByb3BzKSB7XG4gICAgcmV0dXJuIGFkZGl0aW9uYWxQcm9wcz8uWyd3b3Jrc3BhY2VUaXRsZSddID8/IHdvcmtzcGFjZS50aXRsZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNldFdvcmtzcGFjZVN0b3JlKCkge1xuICAgIGdldFdvcmtzcGFjZVN0b3JlKCkuc2V0U3RhdGUoaW5pdGlhbFN0YXRlKTtcbn1cbi8qKlxuICogVGhlIHdvcmtzcGFjZSBncm91cCBzdG9yZSBpcyBhIHN0b3JlIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlIHdvcmtzcGFjZSBncm91cC5cbiAqIElmIHRoZSB3b3Jrc3BhY2UgaGFzIGl0cyBvd24gc2lkZWJhciwgdGhlIHN0b3JlIHdpbGwgYmUgY3JlYXRlZC5cbiAqIFRoaXMgc3RvcmUgY2FuIGJlIHVzZWQgdG8gc3RvcmUgZGF0YSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZSB3b3Jrc3BhY2UgZ3JvdXAuXG4gKiBUaGUgc3RvcmUgd2lsbCBiZSBzYW1lIGZvciBhbGwgdGhlIHdvcmtzcGFjZXMgd2l0aCBzYW1lIGdyb3VwIG5hbWUuXG4gKlxuICogRm9yIHdvcmtzcGFjZXMgbGF1bmNoZWQgd2l0aG91dCBhIGdyb3VwLCB0aGUgc3RvcmUgd2lsbCBiZSB1bmRlZmluZWQuXG4gKlxuICogVGhlIHN0b3JlIHdpbGwgYmUgY2xlYXJlZCB3aGVuIGFsbCB0aGUgd29ya3NwYWNlcyB3aXRoIHRoZSBzdG9yZSdzIGdyb3VwIG5hbWUgYXJlIGNsb3NlZC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0V29ya3NwYWNlR3JvdXBTdG9yZSh3b3Jrc3BhY2VHcm91cE5hbWUsIGFkZGl0aW9uYWxQcm9wcyA9IHt9KSB7XG4gICAgaWYgKCF3b3Jrc3BhY2VHcm91cE5hbWUgfHwgd29ya3NwYWNlR3JvdXBOYW1lID09PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3Qgc3RvcmUgPSBnZXRHbG9iYWxTdG9yZSh3b3Jrc3BhY2VHcm91cE5hbWUsIHt9KTtcbiAgICBpZiAoYWRkaXRpb25hbFByb3BzKSB7XG4gICAgICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KT0+KHtcbiAgICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICAgIC4uLmFkZGl0aW9uYWxQcm9wc1xuICAgICAgICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gc3RvcmU7XG59XG4iXSwibmFtZXMiOlsidXNlTWVtbyIsImdldFdvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uIiwiZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uIiwibmF2aWdhdGUiLCJnZXRHbG9iYWxTdG9yZSIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwidXNlU3RvcmUiLCJjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmciLCJuYW1lIiwiaWdub3JlQ2hhbmdlcyIsInByb21wdEJlZm9yZUZuIiwiZ2V0UHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbiIsImNsb3NlV29ya3NwYWNlR3JvdXAiLCJncm91cE5hbWUiLCJvbldvcmtzcGFjZUNsb3NldXAiLCJfc3RvcmVfZ2V0U3RhdGUiLCJzdG9yZSIsImdldFdvcmtzcGFjZVN0b3JlIiwiY3VycmVudFdvcmtzcGFjZUdyb3VwIiwiY3VycmVudEdyb3VwTmFtZSIsImZpbHRlciIsIndvcmtzcGFjZSIsImNsb3NlQWxsV29ya3NwYWNlcyIsIndvcmtzcGFjZUdyb3VwU3RvcmUiLCJnZXRXb3Jrc3BhY2VHcm91cFN0b3JlIiwidW5zdWJzY3JpYmUiLCJwcmV2IiwidW5kZWZpbmVkIiwibGF1bmNoV29ya3NwYWNlR3JvdXAiLCJhcmdzIiwid29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24iLCJzdGF0ZSIsIm9uV29ya3NwYWNlR3JvdXBMYXVuY2giLCJ3b3Jrc3BhY2VHcm91cENsZWFudXAiLCJ3b3Jrc3BhY2VUb0xhdW5jaCIsIndvcmtzcGFjZUdyb3VwIiwiX3dvcmtzcGFjZVRvTGF1bmNoX2FkZGl0aW9uYWxQcm9wcyIsImxhdW5jaFdvcmtzcGFjZSIsInByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZSIsIm5ld1dvcmtzcGFjZURldGFpbHMiLCJhZGRpdGlvbmFsUHJvcHMiLCJuZXdXb3Jrc3BhY2VSZWdpc3RyYXRpb24iLCJwcm9jZWVkIiwiY2xvc2VXb3Jrc3BhY2UiLCJvbldvcmtzcGFjZUNsb3NlIiwiX3dvcmtzcGFjZV90aXRsZSIsInNob3dXb3Jrc3BhY2VQcm9tcHRzIiwiX2N1cnJlbnRXb3Jrc3BhY2VHcm91cF9tZW1iZXJzIiwiX3N0b3JlX2dldFN0YXRlX3dvcmtzcGFjZUdyb3VwIiwibmV3V29ya3NwYWNlIiwiZ2V0V29ya3NwYWNlVGl0bGUiLCJjbG9zZVdvcmtzcGFjZTEiLCJvcHRpb25zIiwiY2xvc2VXb3Jrc3BhY2VXaXRoU2F2ZWRDaGFuZ2VzIiwicHJvbXB0QmVmb3JlQ2xvc2luZzEiLCJ0ZXN0RmNuIiwicHJvbXB0QmVmb3JlQ2xvc2luZyIsInNldFRpdGxlIiwidGl0bGUiLCJ0aXRsZU5vZGUiLCJvcGVuV29ya3NwYWNlcyIsInciLCJ1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VUb0JlQWRkZWQiLCJyZXN0T2ZUaGVXb3Jrc3BhY2VzIiwid29ya3NwYWNlV2luZG93U3RhdGUiLCJnZXRVcGRhdGVkV29ya3NwYWNlV2luZG93U3RhdGUiLCJ3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMiLCJpc1dvcmtzcGFjZUFscmVhZHlPcGVuIiwib3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlIiwib3BlbldvcmtzcGFjZSIsInVwZGF0ZWRXb3Jrc3BhY2UiLCJyZXN0T2ZUaGVXb3Jrc3BhY2VzMSIsIm5hdmlnYXRlQW5kTGF1bmNoV29ya3NwYWNlIiwicGFyYW0iLCJ0YXJnZXRVcmwiLCJjb250ZXh0S2V5Iiwid29ya3NwYWNlTmFtZSIsImNoYW5nZVdvcmtzcGFjZUNvbnRleHQiLCJwcm9tcHRCZWZvcmVDbG9zaW5nRmNucyIsImNhbmNlbFByb21wdCIsImRlZmF1bHRPcHRpb25zIiwidXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlIiwid29ya3NwYWNlVG9CZUNsb3NlZCIsIm5ld09wZW5Xb3Jrc3BhY2VzIiwid29ya3NwYWNlR3JvdXBOYW1lIiwiX2dldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbl90aXRsZSIsImN1cnJlbnROYW1lIiwiaW5pdGlhbFN0YXRlIiwid29ya3NwYWNlU3RvcmUiLCJ1cGRhdGVXb3Jrc3BhY2VXaW5kb3dTdGF0ZSIsInZhbHVlIiwid29ya3NwYWNlQXRUb3AiLCJvbkNsb3NpbmdXb3Jrc3BhY2VzIiwiY2FuQ2xvc2VBbGxXb3Jrc3BhY2VzIiwidXBkYXRlV29ya3NwYWNlU3RvcmUiLCJyZXNldFdvcmtzcGFjZVN0b3JlIiwidXNlV29ya3NwYWNlcyIsIl91c2VTdG9yZSIsInByb21wdCIsIm1lbW9pc2VkUmVzdWx0cyIsInByb21wdFR5cGUiLCJvbkNvbmZpcm1hdGlvbiIsIndvcmtzcGFjZVRpdGxlIiwib25Db25maXJtIiwid29ya3NwYWNlc05vdENsb3NlZCIsImluZHgiLCJjb25zb2xlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdDQUFnQyxHQUFtQztBQUMrQjtBQUMvQztBQUNvQjtBQUNSO0FBQ1g7QUFDcEQ7Ozs7O0NBS0MsR0FBVSxTQUFTUSxrQ0FBa0NDLElBQUk7UUFBRUMsZ0JB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\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/dist/workspaces/workspaces.js\n\n}");
1959
1959
 
1960
1960
  },
1961
1961
  "../../framework/esm-styleguide/dist/workspaces2/action-menu2/action-menu-button2.component.js"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
package/lib/openmrs.js CHANGED
@@ -6,7 +6,7 @@ eval("{\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n
6
6
 
7
7
  },
8
8
  "./src/index.ts"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
9
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n setupUtils: () => (setupUtils)\n});\n/* import */ var import_map_overrides__rspack_import_0 = __webpack_require__(\"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(g && (g = 0, op[0] && (_ = 0)), _)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\nfunction _createSpaBase(baseUrl) {\n return function() {\n return baseUrl;\n };\n}\nfunction setupPaths(config) {\n var _process_env_BUILD_VERSION;\n var error = false;\n if (!config.apiUrl) {\n console.error('initializeSpa() was called without supplying an apiUrl. This means that the application cannot communicate with the backend.');\n error = true;\n }\n if (!config.spaPath) {\n console.error('initializeSpa() was called without supplying a spaPath. This means that the application cannot properly generate urls.');\n error = true;\n }\n if (error) {\n throw new Error('One or more required properties in the basic configuration of the application was missing and the application cannot be rendered. Please see the browser console for details.');\n }\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || 'production';\n window.spaVersion = (_process_env_BUILD_VERSION = \"9.0.3-pre.4377-20260330\") !== null && _process_env_BUILD_VERSION !== void 0 ? _process_env_BUILD_VERSION : 'local';\n var spaBaseWithSlash = window.spaBase.endsWith('/') ? window.spaBase : window.spaBase + '/';\n window.getOpenmrsSpaBase = _createSpaBase(spaBaseWithSlash);\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand('copy');\n sel.removeAllRanges();\n }\n };\n}\nfunction wireSpaPaths() {\n var baseElement = document.createElement('base');\n var baseHref = window.getOpenmrsSpaBase();\n baseElement.href = baseHref;\n document.head.appendChild(baseElement);\n __webpack_require__.p = baseHref;\n}\n/**\n * Initializes the OpenMRS Frontend App Shell.\n * @param config The global configuration to apply.\n */ function initializeSpa(config) {\n setupUtils();\n setupPaths(config);\n wireSpaPaths();\n return Promise.resolve(__webpack_require__.I('default')).then(function() {\n return _async_to_generator(function() {\n var shareScope, _config_configUrls, configUrls, _config_offline, offline, run;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n shareScope = __webpack_require__.S.default;\n // MF will deduplicate these as they're aliased at build time, but at runtime\n // apps try to load `@openmrs/esm-framework`, so here we provide a runtime\n // alias that resolves to the \"internal\" copy of the framework\n if (shareScope['@openmrs/esm-framework/src/internal'] && !shareScope['@openmrs/esm-framework']) {\n shareScope['@openmrs/esm-framework'] = shareScope['@openmrs/esm-framework/src/internal'];\n }\n _config_configUrls = config.configUrls, configUrls = _config_configUrls === void 0 ? [] : _config_configUrls, _config_offline = config.offline, offline = _config_offline === void 0 ? false : _config_offline;\n window.offlineEnabled = offline;\n return [\n 4,\n Promise.all(/* import() */ [__webpack_require__.e(\"default-webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"default-webpack_sharing_consume_default_react-dom_react-dom\"), __webpack_require__.e(\"default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09\"), __webpack_require__.e(\"default-framework_esm-framework_dist_internal_js\"), __webpack_require__.e(\"default-vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguage-1ba50a\"), __webpack_require__.e(\"default-src_run_ts\")]).then(__webpack_require__.bind(__webpack_require__, \"./src/run.ts\"))\n ];\n case 1:\n run = _state.sent().run;\n return [\n 2,\n run(configUrls)\n ];\n }\n });\n })();\n });\n}\nwindow.initializeSpa = initializeSpa;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9zaGVsbC9lc20tYXBwLXNoZWxsL3NyYy9pbmRleC50cyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvaW5kZXgudHM/OGNjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ2ltcG9ydC1tYXAtb3ZlcnJpZGVzJztcbmltcG9ydCB0eXBlIHsgU3BhQ29uZmlnIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3BhQmFzZShiYXNlVXJsOiBzdHJpbmcpIHtcbiAgcmV0dXJuICgpID0+IGJhc2VVcmw7XG59XG5cbmZ1bmN0aW9uIHNldHVwUGF0aHMoY29uZmlnOiBTcGFDb25maWcpIHtcbiAgbGV0IGVycm9yID0gZmFsc2U7XG4gIGlmICghY29uZmlnLmFwaVVybCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnaW5pdGlhbGl6ZVNwYSgpIHdhcyBjYWxsZWQgd2l0aG91dCBzdXBwbHlpbmcgYW4gYXBpVXJsLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBiYWNrZW5kLicsXG4gICAgKTtcbiAgICBlcnJvciA9IHRydWU7XG4gIH1cblxuICBpZiAoIWNvbmZpZy5zcGFQYXRoKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICdpbml0aWFsaXplU3BhKCkgd2FzIGNhbGxlZCB3aXRob3V0IHN1cHBseWluZyBhIHNwYVBhdGguIFRoaXMgbWVhbnMgdGhhdCB0aGUgYXBwbGljYXRpb24gY2Fubm90IHByb3Blcmx5IGdlbmVyYXRlIHVybHMuJyxcbiAgICApO1xuICAgIGVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPbmUgb3IgbW9yZSByZXF1aXJlZCBwcm9wZXJ0aWVzIGluIHRoZSBiYXNpYyBjb25maWd1cmF0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbiB3YXMgbWlzc2luZyBhbmQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBiZSByZW5kZXJlZC4gUGxlYXNlIHNlZSB0aGUgYnJvd3NlciBjb25zb2xlIGZvciBkZXRhaWxzLicsXG4gICAgKTtcbiAgfVxuXG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8ICdwcm9kdWN0aW9uJztcbiAgd2luZG93LnNwYVZlcnNpb24gPSBwcm9jZXNzLmVudi5CVUlMRF9WRVJTSU9OID8/ICdsb2NhbCc7XG4gIGNvbnN0IHNwYUJhc2VXaXRoU2xhc2ggPSB3aW5kb3cuc3BhQmFzZS5lbmRzV2l0aCgnLycpID8gd2luZG93LnNwYUJhc2UgOiB3aW5kb3cuc3BhQmFzZSArICcvJztcbiAgd2luZG93LmdldE9wZW5tcnNTcGFCYXNlID0gX2NyZWF0ZVNwYUJhc2Uoc3BhQmFzZVdpdGhTbGFzaCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFV0aWxzKCkge1xuICB3aW5kb3cuY29weVRleHQgPSAoc291cmNlOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICAgIGlmIChzZWwpIHtcbiAgICAgIGNvbnN0IHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgci5zZWxlY3ROb2RlKHNvdXJjZSk7XG4gICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWwuYWRkUmFuZ2Uocik7XG4gICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lyZVNwYVBhdGhzKCkge1xuICBjb25zdCBiYXNlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Jhc2UnKTtcbiAgY29uc3QgYmFzZUhyZWYgPSB3aW5kb3cuZ2V0T3Blbm1yc1NwYUJhc2UoKTtcbiAgYmFzZUVsZW1lbnQuaHJlZiA9IGJhc2VIcmVmO1xuICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGJhc2VFbGVtZW50KTtcbiAgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBiYXNlSHJlZjtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgT3Blbk1SUyBGcm9udGVuZCBBcHAgU2hlbGwuXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiB0byBhcHBseS5cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVNwYShjb25maWc6IFNwYUNvbmZpZykge1xuICBzZXR1cFV0aWxzKCk7XG4gIHNldHVwUGF0aHMoY29uZmlnKTtcbiAgd2lyZVNwYVBhdGhzKCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoX193ZWJwYWNrX2luaXRfc2hhcmluZ19fKCdkZWZhdWx0JykpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNoYXJlU2NvcGUgPSBfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdDtcbiAgICAvLyBNRiB3aWxsIGRlZHVwbGljYXRlIHRoZXNlIGFzIHRoZXkncmUgYWxpYXNlZCBhdCBidWlsZCB0aW1lLCBidXQgYXQgcnVudGltZVxuICAgIC8vIGFwcHMgdHJ5IHRvIGxvYWQgYEBvcGVubXJzL2VzbS1mcmFtZXdvcmtgLCBzbyBoZXJlIHdlIHByb3ZpZGUgYSBydW50aW1lXG4gICAgLy8gYWxpYXMgdGhhdCByZXNvbHZlcyB0byB0aGUgXCJpbnRlcm5hbFwiIGNvcHkgb2YgdGhlIGZyYW1ld29ya1xuICAgIGlmIChzaGFyZVNjb3BlWydAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbCddICYmICFzaGFyZVNjb3BlWydAb3Blbm1ycy9lc20tZnJhbWV3b3JrJ10pIHtcbiAgICAgIHNoYXJlU2NvcGVbJ0BvcGVubXJzL2VzbS1mcmFtZXdvcmsnXSA9IHNoYXJlU2NvcGVbJ0BvcGVubXJzL2VzbS1mcmFtZXdvcmsvc3JjL2ludGVybmFsJ107XG4gICAgfVxuXG4gICAgY29uc3QgeyBjb25maWdVcmxzID0gW10sIG9mZmxpbmUgPSBmYWxzZSB9ID0gY29uZmlnO1xuICAgIHdpbmRvdy5vZmZsaW5lRW5hYmxlZCA9IG9mZmxpbmU7XG5cbiAgICBjb25zdCB7IHJ1biB9ID0gYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tQcmVsb2FkOiB0cnVlICovICcuL3J1bicpO1xuICAgIHJldHVybiBydW4oY29uZmlnVXJscyk7XG4gIH0pO1xufVxuXG53aW5kb3cuaW5pdGlhbGl6ZVNwYSA9IGluaXRpYWxpemVTcGE7XG4iXSwibmFtZXMiOlsiX2NyZWF0ZVNwYUJhc2UiLCJiYXNlVXJsIiwic2V0dXBQYXRocyIsImNvbmZpZyIsIl9wcm9jZXNzX2Vudl9CVUlMRF9WRVJTSU9OIiwiZXJyb3IiLCJjb25zb2xlIiwiRXJyb3IiLCJ3aW5kb3ciLCJzcGFCYXNlV2l0aFNsYXNoIiwic2V0dXBVdGlscyIsInNvdXJjZSIsInNlbCIsInIiLCJkb2N1bWVudCIsIndpcmVTcGFQYXRocyIsImJhc2VFbGVtZW50IiwiYmFzZUhyZWYiLCJfX3dlYnBhY2tfcHVibGljX3BhdGhfXyIsImluaXRpYWxpemVTcGEiLCJQcm9taXNlIiwiX193ZWJwYWNrX2luaXRfc2hhcmluZ19fIiwic2hhcmVTY29wZSIsImNvbmZpZ1VybHMiLCJvZmZsaW5lIiwicnVuIiwiX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQThCO0FBRzlCLFNBQVNBLGVBQWVDLE9BQWU7SUFDckMsT0FBTztlQUFNQTs7QUFDZjtBQUVBLFNBQVNDLFdBQVdDLE1BQWlCO1FBeUJmQztJQXhCcEIsSUFBSUMsUUFBUTtJQUNaLElBQUksQ0FBQ0YsT0FBTyxNQUFNLEVBQUU7UUFDbEJHLFFBQVEsS0FBSyxDQUNYO1FBRUZELFFBQVE7SUFDVjtJQUVBLElBQUksQ0FBQ0YsT0FBTyxPQUFPLEVBQUU7UUFDbkJHLFFBQVEsS0FBSyxDQUNYO1FBRUZELFFBQVE7SUFDVjtJQUVBLElBQUlBLE9BQU87UUFDVCxNQUFNLElBQUlFLE1BQ1I7SUFFSjtJQUVBQyxPQUFPLFdBQVcsR0FBR0wsT0FBTyxNQUFNO0lBQ2xDSyxPQUFPLE9BQU8sR0FBR0wsT0FBTyxPQUFPO0lBQy9CSyxPQUFPLE1BQU0sR0FBR0wsT0FBTyxHQUFHLElBQUk7SUFDOUJLLE9BQU8sVUFBVSxJQUFHSiw2QkFBQUEseUJBQXlCLGNBQXpCQSx3Q0FBQUEsNkJBQTZCO0lBQ2pELElBQU1LLG1CQUFtQkQsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU9BLE9BQU8sT0FBTyxHQUFHQSxPQUFPLE9BQU8sR0FBRztJQUMxRkEsT0FBTyxpQkFBaUIsR0FBR1IsZUFBZVM7QUFDNUM7QUFFTyxTQUFTQztJQUNkRixPQUFPLFFBQVEsR0FBRyxTQUFDRztRQUNqQixJQUFNQyxNQUFNSixPQUFPLFlBQVk7UUFFL0IsSUFBSUksS0FBSztZQUNQLElBQU1DLElBQUlDLFNBQVMsV0FBVztZQUM5QkQsRUFBRSxVQUFVLENBQUNGO1lBQ2JDLElBQUksZUFBZTtZQUNuQkEsSUFBSSxRQUFRLENBQUNDO1lBQ2JDLFNBQVMsV0FBVyxDQUFDO1lBQ3JCRixJQUFJLGVBQWU7UUFDckI7SUFDRjtBQUNGO0FBRUEsU0FBU0c7SUFDUCxJQUFNQyxjQUFjRixTQUFTLGFBQWEsQ0FBQztJQUMzQyxJQUFNRyxXQUFXVCxPQUFPLGlCQUFpQjtJQUN6Q1EsWUFBWSxJQUFJLEdBQUdDO0lBQ25CSCxTQUFTLElBQUksQ0FBQyxXQUFXLENBQUNFO0lBQzFCRSxxQkFBdUJBLEdBQUdEO0FBQzVCO0FBRUE7OztDQUdDLEdBQ0QsU0FBU0UsY0FBY2hCLE1BQWlCO0lBQ3RDTztJQUNBUixXQUFXQztJQUNYWTtJQUNBLE9BQU9LLFFBQVEsT0FBTyxDQUFDQyxxQkFBd0JBLENBQUMsWUFBWSxJQUFJLENBQUM7O2dCQUN6REMsZ0NBUUVDLDZCQUFpQkMsU0FHakJDOzs7O3dCQVhGSCxhQUFhSSxxQkFBd0JBLENBQUMsT0FBTzt3QkFDbkQsNkVBQTZFO3dCQUM3RSwwRUFBMEU7d0JBQzFFLDhEQUE4RDt3QkFDOUQsSUFBSUosVUFBVSxDQUFDLHNDQUFzQyxJQUFJLENBQUNBLFVBQVUsQ0FBQyx5QkFBeUIsRUFBRTs0QkFDOUZBLFVBQVUsQ0FBQyx5QkFBeUIsR0FBR0EsVUFBVSxDQUFDLHNDQUFzQzt3QkFDMUY7NkNBRTZDbkIsT0FBckNvQixZQUFBQSx3RkFBcUNwQixPQUFwQnFCLFNBQUFBLHVDQUFVO3dCQUNuQ2hCLE9BQU8sY0FBYyxHQUFHZ0I7d0JBRVI7OzRCQUFNLDBuQkFBMEM7Ozt3QkFBeERDLE1BQVEsY0FBUkE7d0JBQ1I7OzRCQUFPQSxJQUFJRjs7OztRQUNiOztBQUNGO0FBRUFmLE9BQU8sYUFBYSxHQUFHVyJ9\n//# sourceURL=webpack-internal:///./src/index.ts\n\n}");
9
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n setupUtils: () => (setupUtils)\n});\n/* import */ var import_map_overrides__rspack_import_0 = __webpack_require__(\"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(g && (g = 0, op[0] && (_ = 0)), _)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\nfunction _createSpaBase(baseUrl) {\n return function() {\n return baseUrl;\n };\n}\nfunction setupPaths(config) {\n var _process_env_BUILD_VERSION;\n var error = false;\n if (!config.apiUrl) {\n console.error('initializeSpa() was called without supplying an apiUrl. This means that the application cannot communicate with the backend.');\n error = true;\n }\n if (!config.spaPath) {\n console.error('initializeSpa() was called without supplying a spaPath. This means that the application cannot properly generate urls.');\n error = true;\n }\n if (error) {\n throw new Error('One or more required properties in the basic configuration of the application was missing and the application cannot be rendered. Please see the browser console for details.');\n }\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || 'production';\n window.spaVersion = (_process_env_BUILD_VERSION = \"9.0.3-pre.4380-20260330\") !== null && _process_env_BUILD_VERSION !== void 0 ? _process_env_BUILD_VERSION : 'local';\n var spaBaseWithSlash = window.spaBase.endsWith('/') ? window.spaBase : window.spaBase + '/';\n window.getOpenmrsSpaBase = _createSpaBase(spaBaseWithSlash);\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand('copy');\n sel.removeAllRanges();\n }\n };\n}\nfunction wireSpaPaths() {\n var baseElement = document.createElement('base');\n var baseHref = window.getOpenmrsSpaBase();\n baseElement.href = baseHref;\n document.head.appendChild(baseElement);\n __webpack_require__.p = baseHref;\n}\n/**\n * Initializes the OpenMRS Frontend App Shell.\n * @param config The global configuration to apply.\n */ function initializeSpa(config) {\n setupUtils();\n setupPaths(config);\n wireSpaPaths();\n return Promise.resolve(__webpack_require__.I('default')).then(function() {\n return _async_to_generator(function() {\n var shareScope, _config_configUrls, configUrls, _config_offline, offline, run;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n shareScope = __webpack_require__.S.default;\n // MF will deduplicate these as they're aliased at build time, but at runtime\n // apps try to load `@openmrs/esm-framework`, so here we provide a runtime\n // alias that resolves to the \"internal\" copy of the framework\n if (shareScope['@openmrs/esm-framework/src/internal'] && !shareScope['@openmrs/esm-framework']) {\n shareScope['@openmrs/esm-framework'] = shareScope['@openmrs/esm-framework/src/internal'];\n }\n _config_configUrls = config.configUrls, configUrls = _config_configUrls === void 0 ? [] : _config_configUrls, _config_offline = config.offline, offline = _config_offline === void 0 ? false : _config_offline;\n window.offlineEnabled = offline;\n return [\n 4,\n Promise.all(/* import() */ [__webpack_require__.e(\"default-webpack_sharing_consume_default_react_react\"), __webpack_require__.e(\"default-webpack_sharing_consume_default_react-dom_react-dom\"), __webpack_require__.e(\"default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09\"), __webpack_require__.e(\"default-framework_esm-framework_dist_internal_js\"), __webpack_require__.e(\"default-vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguage-1ba50a\"), __webpack_require__.e(\"default-src_run_ts\")]).then(__webpack_require__.bind(__webpack_require__, \"./src/run.ts\"))\n ];\n case 1:\n run = _state.sent().run;\n return [\n 2,\n run(configUrls)\n ];\n }\n });\n })();\n });\n}\nwindow.initializeSpa = initializeSpa;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9zaGVsbC9lc20tYXBwLXNoZWxsL3NyYy9pbmRleC50cyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvaW5kZXgudHM/OGNjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ2ltcG9ydC1tYXAtb3ZlcnJpZGVzJztcbmltcG9ydCB0eXBlIHsgU3BhQ29uZmlnIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3BhQmFzZShiYXNlVXJsOiBzdHJpbmcpIHtcbiAgcmV0dXJuICgpID0+IGJhc2VVcmw7XG59XG5cbmZ1bmN0aW9uIHNldHVwUGF0aHMoY29uZmlnOiBTcGFDb25maWcpIHtcbiAgbGV0IGVycm9yID0gZmFsc2U7XG4gIGlmICghY29uZmlnLmFwaVVybCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnaW5pdGlhbGl6ZVNwYSgpIHdhcyBjYWxsZWQgd2l0aG91dCBzdXBwbHlpbmcgYW4gYXBpVXJsLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBiYWNrZW5kLicsXG4gICAgKTtcbiAgICBlcnJvciA9IHRydWU7XG4gIH1cblxuICBpZiAoIWNvbmZpZy5zcGFQYXRoKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICdpbml0aWFsaXplU3BhKCkgd2FzIGNhbGxlZCB3aXRob3V0IHN1cHBseWluZyBhIHNwYVBhdGguIFRoaXMgbWVhbnMgdGhhdCB0aGUgYXBwbGljYXRpb24gY2Fubm90IHByb3Blcmx5IGdlbmVyYXRlIHVybHMuJyxcbiAgICApO1xuICAgIGVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPbmUgb3IgbW9yZSByZXF1aXJlZCBwcm9wZXJ0aWVzIGluIHRoZSBiYXNpYyBjb25maWd1cmF0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbiB3YXMgbWlzc2luZyBhbmQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBiZSByZW5kZXJlZC4gUGxlYXNlIHNlZSB0aGUgYnJvd3NlciBjb25zb2xlIGZvciBkZXRhaWxzLicsXG4gICAgKTtcbiAgfVxuXG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8ICdwcm9kdWN0aW9uJztcbiAgd2luZG93LnNwYVZlcnNpb24gPSBwcm9jZXNzLmVudi5CVUlMRF9WRVJTSU9OID8/ICdsb2NhbCc7XG4gIGNvbnN0IHNwYUJhc2VXaXRoU2xhc2ggPSB3aW5kb3cuc3BhQmFzZS5lbmRzV2l0aCgnLycpID8gd2luZG93LnNwYUJhc2UgOiB3aW5kb3cuc3BhQmFzZSArICcvJztcbiAgd2luZG93LmdldE9wZW5tcnNTcGFCYXNlID0gX2NyZWF0ZVNwYUJhc2Uoc3BhQmFzZVdpdGhTbGFzaCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFV0aWxzKCkge1xuICB3aW5kb3cuY29weVRleHQgPSAoc291cmNlOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICAgIGlmIChzZWwpIHtcbiAgICAgIGNvbnN0IHIgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgci5zZWxlY3ROb2RlKHNvdXJjZSk7XG4gICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWwuYWRkUmFuZ2Uocik7XG4gICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lyZVNwYVBhdGhzKCkge1xuICBjb25zdCBiYXNlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Jhc2UnKTtcbiAgY29uc3QgYmFzZUhyZWYgPSB3aW5kb3cuZ2V0T3Blbm1yc1NwYUJhc2UoKTtcbiAgYmFzZUVsZW1lbnQuaHJlZiA9IGJhc2VIcmVmO1xuICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGJhc2VFbGVtZW50KTtcbiAgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBiYXNlSHJlZjtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgT3Blbk1SUyBGcm9udGVuZCBBcHAgU2hlbGwuXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiB0byBhcHBseS5cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVNwYShjb25maWc6IFNwYUNvbmZpZykge1xuICBzZXR1cFV0aWxzKCk7XG4gIHNldHVwUGF0aHMoY29uZmlnKTtcbiAgd2lyZVNwYVBhdGhzKCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoX193ZWJwYWNrX2luaXRfc2hhcmluZ19fKCdkZWZhdWx0JykpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNoYXJlU2NvcGUgPSBfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdDtcbiAgICAvLyBNRiB3aWxsIGRlZHVwbGljYXRlIHRoZXNlIGFzIHRoZXkncmUgYWxpYXNlZCBhdCBidWlsZCB0aW1lLCBidXQgYXQgcnVudGltZVxuICAgIC8vIGFwcHMgdHJ5IHRvIGxvYWQgYEBvcGVubXJzL2VzbS1mcmFtZXdvcmtgLCBzbyBoZXJlIHdlIHByb3ZpZGUgYSBydW50aW1lXG4gICAgLy8gYWxpYXMgdGhhdCByZXNvbHZlcyB0byB0aGUgXCJpbnRlcm5hbFwiIGNvcHkgb2YgdGhlIGZyYW1ld29ya1xuICAgIGlmIChzaGFyZVNjb3BlWydAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbCddICYmICFzaGFyZVNjb3BlWydAb3Blbm1ycy9lc20tZnJhbWV3b3JrJ10pIHtcbiAgICAgIHNoYXJlU2NvcGVbJ0BvcGVubXJzL2VzbS1mcmFtZXdvcmsnXSA9IHNoYXJlU2NvcGVbJ0BvcGVubXJzL2VzbS1mcmFtZXdvcmsvc3JjL2ludGVybmFsJ107XG4gICAgfVxuXG4gICAgY29uc3QgeyBjb25maWdVcmxzID0gW10sIG9mZmxpbmUgPSBmYWxzZSB9ID0gY29uZmlnO1xuICAgIHdpbmRvdy5vZmZsaW5lRW5hYmxlZCA9IG9mZmxpbmU7XG5cbiAgICBjb25zdCB7IHJ1biB9ID0gYXdhaXQgaW1wb3J0KC8qIHdlYnBhY2tQcmVsb2FkOiB0cnVlICovICcuL3J1bicpO1xuICAgIHJldHVybiBydW4oY29uZmlnVXJscyk7XG4gIH0pO1xufVxuXG53aW5kb3cuaW5pdGlhbGl6ZVNwYSA9IGluaXRpYWxpemVTcGE7XG4iXSwibmFtZXMiOlsiX2NyZWF0ZVNwYUJhc2UiLCJiYXNlVXJsIiwic2V0dXBQYXRocyIsImNvbmZpZyIsIl9wcm9jZXNzX2Vudl9CVUlMRF9WRVJTSU9OIiwiZXJyb3IiLCJjb25zb2xlIiwiRXJyb3IiLCJ3aW5kb3ciLCJzcGFCYXNlV2l0aFNsYXNoIiwic2V0dXBVdGlscyIsInNvdXJjZSIsInNlbCIsInIiLCJkb2N1bWVudCIsIndpcmVTcGFQYXRocyIsImJhc2VFbGVtZW50IiwiYmFzZUhyZWYiLCJfX3dlYnBhY2tfcHVibGljX3BhdGhfXyIsImluaXRpYWxpemVTcGEiLCJQcm9taXNlIiwiX193ZWJwYWNrX2luaXRfc2hhcmluZ19fIiwic2hhcmVTY29wZSIsImNvbmZpZ1VybHMiLCJvZmZsaW5lIiwicnVuIiwiX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQThCO0FBRzlCLFNBQVNBLGVBQWVDLE9BQWU7SUFDckMsT0FBTztlQUFNQTs7QUFDZjtBQUVBLFNBQVNDLFdBQVdDLE1BQWlCO1FBeUJmQztJQXhCcEIsSUFBSUMsUUFBUTtJQUNaLElBQUksQ0FBQ0YsT0FBTyxNQUFNLEVBQUU7UUFDbEJHLFFBQVEsS0FBSyxDQUNYO1FBRUZELFFBQVE7SUFDVjtJQUVBLElBQUksQ0FBQ0YsT0FBTyxPQUFPLEVBQUU7UUFDbkJHLFFBQVEsS0FBSyxDQUNYO1FBRUZELFFBQVE7SUFDVjtJQUVBLElBQUlBLE9BQU87UUFDVCxNQUFNLElBQUlFLE1BQ1I7SUFFSjtJQUVBQyxPQUFPLFdBQVcsR0FBR0wsT0FBTyxNQUFNO0lBQ2xDSyxPQUFPLE9BQU8sR0FBR0wsT0FBTyxPQUFPO0lBQy9CSyxPQUFPLE1BQU0sR0FBR0wsT0FBTyxHQUFHLElBQUk7SUFDOUJLLE9BQU8sVUFBVSxJQUFHSiw2QkFBQUEseUJBQXlCLGNBQXpCQSx3Q0FBQUEsNkJBQTZCO0lBQ2pELElBQU1LLG1CQUFtQkQsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU9BLE9BQU8sT0FBTyxHQUFHQSxPQUFPLE9BQU8sR0FBRztJQUMxRkEsT0FBTyxpQkFBaUIsR0FBR1IsZUFBZVM7QUFDNUM7QUFFTyxTQUFTQztJQUNkRixPQUFPLFFBQVEsR0FBRyxTQUFDRztRQUNqQixJQUFNQyxNQUFNSixPQUFPLFlBQVk7UUFFL0IsSUFBSUksS0FBSztZQUNQLElBQU1DLElBQUlDLFNBQVMsV0FBVztZQUM5QkQsRUFBRSxVQUFVLENBQUNGO1lBQ2JDLElBQUksZUFBZTtZQUNuQkEsSUFBSSxRQUFRLENBQUNDO1lBQ2JDLFNBQVMsV0FBVyxDQUFDO1lBQ3JCRixJQUFJLGVBQWU7UUFDckI7SUFDRjtBQUNGO0FBRUEsU0FBU0c7SUFDUCxJQUFNQyxjQUFjRixTQUFTLGFBQWEsQ0FBQztJQUMzQyxJQUFNRyxXQUFXVCxPQUFPLGlCQUFpQjtJQUN6Q1EsWUFBWSxJQUFJLEdBQUdDO0lBQ25CSCxTQUFTLElBQUksQ0FBQyxXQUFXLENBQUNFO0lBQzFCRSxxQkFBdUJBLEdBQUdEO0FBQzVCO0FBRUE7OztDQUdDLEdBQ0QsU0FBU0UsY0FBY2hCLE1BQWlCO0lBQ3RDTztJQUNBUixXQUFXQztJQUNYWTtJQUNBLE9BQU9LLFFBQVEsT0FBTyxDQUFDQyxxQkFBd0JBLENBQUMsWUFBWSxJQUFJLENBQUM7O2dCQUN6REMsZ0NBUUVDLDZCQUFpQkMsU0FHakJDOzs7O3dCQVhGSCxhQUFhSSxxQkFBd0JBLENBQUMsT0FBTzt3QkFDbkQsNkVBQTZFO3dCQUM3RSwwRUFBMEU7d0JBQzFFLDhEQUE4RDt3QkFDOUQsSUFBSUosVUFBVSxDQUFDLHNDQUFzQyxJQUFJLENBQUNBLFVBQVUsQ0FBQyx5QkFBeUIsRUFBRTs0QkFDOUZBLFVBQVUsQ0FBQyx5QkFBeUIsR0FBR0EsVUFBVSxDQUFDLHNDQUFzQzt3QkFDMUY7NkNBRTZDbkIsT0FBckNvQixZQUFBQSx3RkFBcUNwQixPQUFwQnFCLFNBQUFBLHVDQUFVO3dCQUNuQ2hCLE9BQU8sY0FBYyxHQUFHZ0I7d0JBRVI7OzRCQUFNLDBuQkFBMEM7Ozt3QkFBeERDLE1BQVEsY0FBUkE7d0JBQ1I7OzRCQUFPQSxJQUFJRjs7OztRQUNiOztBQUNGO0FBRUFmLE9BQU8sYUFBYSxHQUFHVyJ9\n//# sourceURL=webpack-internal:///./src/index.ts\n\n}");
10
10
 
11
11
  },
12
12
  "@module-federation/runtime/rspack.js!=!data:text/javascript,import __module_federation_bundler_runtime__ from \"/home/runner/work/openmrs-esm-core/openmrs-esm-core/node_modules/@module-federation/webpack-bundler-runtime/dist/index.cjs.cjs\";const __module_federation_runtime_plugins__ = [].filter(({ plugin }) => plugin).map(({ plugin, params }) => plugin(params));const __module_federation_remote_infos__ = {};const __module_federation_container_name__ = \"@openmrs/esm-app-shell\";const __module_federation_share_strategy__ = \"version-first\";if((__webpack_require__.initializeSharingData||__webpack_require__.initializeExposesData)&&__webpack_require__.federation){var _ref,_ref1,_ref2,_ref3,_ref4;var __webpack_require___remotesLoadingData,__webpack_require___remotesLoadingData1,__webpack_require___initializeSharingData,__webpack_require___consumesLoadingData,__webpack_require___consumesLoadingData1,__webpack_require___initializeExposesData,__webpack_require___consumesLoadingData2;const override=(obj,key,value)=>{if(!obj)return;if(obj[key])obj[key]=value};const merge=(obj,key,fn)=>{const value=fn();if(Array.isArray(value)){var _obj,_key,_;(_=(_obj=obj)[_key=key])!==null&&_!==void 0?_:_obj[_key]=[];obj[key].push(...value)}else if(typeof value===\"object\"&&value!==null){var _obj1,_key1,_1;(_1=(_obj1=obj)[_key1=key])!==null&&_1!==void 0?_1:_obj1[_key1]={};Object.assign(obj[key],value)}};const early=(obj,key,initial)=>{var _obj,_key,_;(_=(_obj=obj)[_key=key])!==null&&_!==void 0?_:_obj[_key]=initial()};const remotesLoadingChunkMapping=(_ref=(__webpack_require___remotesLoadingData=__webpack_require__.remotesLoadingData)===null||__webpack_require___remotesLoadingData===void 0?void 0:__webpack_require___remotesLoadingData.chunkMapping)!==null&&_ref!==void 0?_ref:{};const remotesLoadingModuleIdToRemoteDataMapping=(_ref1=(__webpack_require___remotesLoadingData1=__webpack_require__.remotesLoadingData)===null||__webpack_require___remotesLoadingData1===void 0?void 0:__webpack_require___remotesLoadingData1.moduleIdToRemoteDataMapping)!==null&&_ref1!==void 0?_ref1:{};const initializeSharingScopeToInitDataMapping=(_ref2=(__webpack_require___initializeSharingData=__webpack_require__.initializeSharingData)===null||__webpack_require___initializeSharingData===void 0?void 0:__webpack_require___initializeSharingData.scopeToSharingDataMapping)!==null&&_ref2!==void 0?_ref2:{};const consumesLoadingChunkMapping=(_ref3=(__webpack_require___consumesLoadingData=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData===void 0?void 0:__webpack_require___consumesLoadingData.chunkMapping)!==null&&_ref3!==void 0?_ref3:{};const consumesLoadingModuleToConsumeDataMapping=(_ref4=(__webpack_require___consumesLoadingData1=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData1===void 0?void 0:__webpack_require___consumesLoadingData1.moduleIdToConsumeDataMapping)!==null&&_ref4!==void 0?_ref4:{};const consumesLoadinginstalledModules={};const initializeSharingInitPromises=[];const initializeSharingInitTokens={};const containerShareScope=(__webpack_require___initializeExposesData=__webpack_require__.initializeExposesData)===null||__webpack_require___initializeExposesData===void 0?void 0:__webpack_require___initializeExposesData.shareScope;for(const key in __module_federation_bundler_runtime__){__webpack_require__.federation[key]=__module_federation_bundler_runtime__[key]}early(__webpack_require__.federation,\"consumesLoadingModuleToHandlerMapping\",()=>{const consumesLoadingModuleToHandlerMapping={};for(let[moduleId,data]of Object.entries(consumesLoadingModuleToConsumeDataMapping)){consumesLoadingModuleToHandlerMapping[moduleId]={getter:data.fallback,shareInfo:{shareConfig:{fixedDependencies:false,requiredVersion:data.requiredVersion,strictVersion:data.strictVersion,singleton:data.singleton,eager:data.eager},scope:[data.shareScope]},shareKey:data.shareKey}}return consumesLoadingModuleToHandlerMapping});early(__webpack_require__.federation,\"initOptions\",()=>({}));early(__webpack_require__.federation.initOptions,\"name\",()=>__module_federation_container_name__);early(__webpack_require__.federation.initOptions,\"shareStrategy\",()=>__module_federation_share_strategy__);early(__webpack_require__.federation.initOptions,\"shared\",()=>{const shared={};for(let[scope,stages]of Object.entries(initializeSharingScopeToInitDataMapping)){for(let stage of stages){if(typeof stage===\"object\"&&stage!==null){const{name,version,factory,eager,singleton,requiredVersion,strictVersion}=stage;const shareConfig={};const isValidValue=function(val){return typeof val!==\"undefined\"};if(isValidValue(singleton)){shareConfig.singleton=singleton}if(isValidValue(requiredVersion)){shareConfig.requiredVersion=requiredVersion}if(isValidValue(eager)){shareConfig.eager=eager}if(isValidValue(strictVersion)){shareConfig.strictVersion=strictVersion}const options={version,scope:[scope],shareConfig,get:factory};if(shared[name]){shared[name].push(options)}else{shared[name]=[options]}}}}return shared});merge(__webpack_require__.federation.initOptions,\"remotes\",()=>Object.values(__module_federation_remote_infos__).flat().filter(remote=>remote.externalType===\"script\"));merge(__webpack_require__.federation.initOptions,\"plugins\",()=>__module_federation_runtime_plugins__);early(__webpack_require__.federation,\"bundlerRuntimeOptions\",()=>({}));early(__webpack_require__.federation.bundlerRuntimeOptions,\"remotes\",()=>({}));early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\"chunkMapping\",()=>remotesLoadingChunkMapping);early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\"remoteInfos\",()=>__module_federation_remote_infos__);early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\"idToExternalAndNameMapping\",()=>{const remotesLoadingIdToExternalAndNameMappingMapping={};for(let[moduleId,data]of Object.entries(remotesLoadingModuleIdToRemoteDataMapping)){remotesLoadingIdToExternalAndNameMappingMapping[moduleId]=[data.shareScope,data.name,data.externalModuleId,data.remoteName]}return remotesLoadingIdToExternalAndNameMappingMapping});early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\"webpackRequire\",()=>__webpack_require__);merge(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\"idToRemoteMap\",()=>{const idToRemoteMap={};for(let[id,remoteData]of Object.entries(remotesLoadingModuleIdToRemoteDataMapping)){const info=__module_federation_remote_infos__[remoteData.remoteName];if(info)idToRemoteMap[id]=info}return idToRemoteMap});override(__webpack_require__,\"S\",__webpack_require__.federation.bundlerRuntime.S);if(__webpack_require__.federation.attachShareScopeMap){__webpack_require__.federation.attachShareScopeMap(__webpack_require__)}override(__webpack_require__.f,\"remotes\",(chunkId,promises)=>__webpack_require__.federation.bundlerRuntime.remotes({chunkId,promises,chunkMapping:remotesLoadingChunkMapping,idToExternalAndNameMapping:__webpack_require__.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:__webpack_require__.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:__webpack_require__}));override(__webpack_require__.f,\"consumes\",(chunkId,promises)=>__webpack_require__.federation.bundlerRuntime.consumes({chunkId,promises,chunkMapping:consumesLoadingChunkMapping,moduleToHandlerMapping:__webpack_require__.federation.consumesLoadingModuleToHandlerMapping,installedModules:consumesLoadinginstalledModules,webpackRequire:__webpack_require__}));override(__webpack_require__,\"I\",(name,initScope)=>__webpack_require__.federation.bundlerRuntime.I({shareScopeName:name,initScope,initPromises:initializeSharingInitPromises,initTokens:initializeSharingInitTokens,webpackRequire:__webpack_require__}));override(__webpack_require__,\"initContainer\",(shareScope,initScope,remoteEntryInitOptions)=>__webpack_require__.federation.bundlerRuntime.initContainerEntry({shareScope,initScope,remoteEntryInitOptions,shareScopeKey:containerShareScope,webpackRequire:__webpack_require__}));override(__webpack_require__,\"getContainer\",(module1,getScope)=>{var moduleMap=__webpack_require__.initializeExposesData.moduleMap;__webpack_require__.R=getScope;getScope=Object.prototype.hasOwnProperty.call(moduleMap,module1)?moduleMap[module1]():Promise.resolve().then(()=>{throw new Error('Module \"'+module1+'\" does not exist in container.')});__webpack_require__.R=undefined;return getScope});__webpack_require__.federation.instance=__webpack_require__.federation.runtime.init(__webpack_require__.federation.initOptions);if((__webpack_require___consumesLoadingData2=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData2===void 0?void 0:__webpack_require___consumesLoadingData2.initialConsumes){__webpack_require__.federation.bundlerRuntime.installInitialConsumes({webpackRequire:__webpack_require__,installedModules:consumesLoadinginstalledModules,initialConsumes:__webpack_require__.consumesLoadingData.initialConsumes,moduleToHandlerMapping:__webpack_require__.federation.consumesLoadingModuleToHandlerMapping})}}"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
@@ -170,7 +170,7 @@ __webpack_require__.u = (chunkId) => {
170
170
  // return url for filenames not based on template
171
171
 
172
172
  // return url for filenames based on template
173
- return "" + {"default-framework_esm-framework_dist_internal_js": "c1541f27423e1358","default-framework_esm-styleguide_dist_index_js": "6f7e6bc840ce1a7e","default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09": "b9d2df7a8d8b0e69","default-node_modules_carbon_react_es_index_js": "291e1f6288b7d23b","default-node_modules_react-dom_index_js": "8506318f66d16da9","default-node_modules_react-i18next_dist_es_index_js": "724b1acafcb3c494","default-node_modules_react-router-dom_dist_index_js": "9d32a476ab7bed13","default-node_modules_swr_dist__internal_index_mjs": "a55d0c7fc69677ef","default-node_modules_tslib_tslib_es6_mjs": "ea8552fa9b5b595c","default-src_run_ts": "d4106d09f5b46f01","default-vendors-node_modules_dayjs_dayjs_min_js": "5c778f985ad678ec","default-vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguage-1ba50a": "05d439038b8b61f4","default-vendors-node_modules_i18next_dist_esm_i18next_js": "a03b941d3b937f8d","default-vendors-node_modules_react_index_js": "2f0c98fe350433ed","default-vendors-node_modules_rxjs__esm5_index_js": "92b85e96c6ce8a46","default-vendors-node_modules_single-spa_lib_es2015_esm_single-spa_dev_js": "4682b3152838253a","framework_esm-translations_translations_am_json": "06aee695134bd88c","framework_esm-translations_translations_ar_SY_json": "086a5e1ac26f1a62","framework_esm-translations_translations_ar_json": "187d960cfc505554","framework_esm-translations_translations_bn_json": "f2c514ea31c828e3","framework_esm-translations_translations_cs_json": "1ba85eef0ead5042","framework_esm-translations_translations_de_json": "7dd156f94a857529","framework_esm-translations_translations_en_US_json": "d18770830db868c8","framework_esm-translations_translations_en_json": "f372453e21463e93","framework_esm-translations_translations_es_MX_json": "da748f8188c833d7","framework_esm-translations_translations_es_json": "c55b14008657a3be","framework_esm-translations_translations_fr_json": "828a8facba2fb98a","framework_esm-translations_translations_he_json": "bd5dc18397ad5098","framework_esm-translations_translations_hi_IN_json": "06ebc86c297de47e","framework_esm-translations_translations_hi_json": "628b7bb4e4b6fdec","framework_esm-translations_translations_id_json": "602691f331f79f76","framework_esm-translations_translations_it_json": "0307ccffc40d15e1","framework_esm-translations_translations_ka_json": "d575a575801d144a","framework_esm-translations_translations_km_json": "1d687e22c573ea8f","framework_esm-translations_translations_ku_json": "a5db5cdb878080aa","framework_esm-translations_translations_ky_json": "5890ffb53b3cffa4","framework_esm-translations_translations_lg_json": "fb31be88afa34d7a","framework_esm-translations_translations_ne_json": "3fae9cc7e8b9c833","framework_esm-translations_translations_pl_json": "d44f5ff4d0f87c16","framework_esm-translations_translations_pt_BR_json": "d8d61fddb26edf63","framework_esm-translations_translations_pt_json": "8144d8726771c08f","framework_esm-translations_translations_qu_json": "c9fef59aba3fcb13","framework_esm-translations_translations_ro_RO_json": "cceb766e6653a7d2","framework_esm-translations_translations_ru_RU_json": "34b718b592bcfed7","framework_esm-translations_translations_si_json": "ca21fb83f91dc92b","framework_esm-translations_translations_sq_json": "2552494ee2b1ecd1","framework_esm-translations_translations_sw_KE_json": "214838278663a696","framework_esm-translations_translations_sw_json": "dc052baecb3d5646","framework_esm-translations_translations_tr_TR_json": "c19369c2cb61645c","framework_esm-translations_translations_tr_json": "d407ba9747584f22","framework_esm-translations_translations_uk_json": "2e295b54ad1ac444","framework_esm-translations_translations_uz_Latn_json": "c2c4926db7e236c2","framework_esm-translations_translations_uz_UZ_json": "eb882b8b16e728a4","framework_esm-translations_translations_uz_json": "6dc2e17e163c4981","framework_esm-translations_translations_vi_json": "592beb196bd3214e","framework_esm-translations_translations_zh_CN_json": "dcbae03f23ca2199","framework_esm-translations_translations_zh_TW_json": "509d0ef5eb6011fe","framework_esm-translations_translations_zh_json": "7ad13fa4afdcb747","intl-durationformat-polyfill": "cca0d70ddc22e728",}[chunkId] + ".js"
173
+ return "" + {"default-framework_esm-framework_dist_internal_js": "2490f488dac54c7c","default-framework_esm-styleguide_dist_index_js": "6f7e6bc840ce1a7e","default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09": "b9d2df7a8d8b0e69","default-node_modules_carbon_react_es_index_js": "291e1f6288b7d23b","default-node_modules_react-dom_index_js": "8506318f66d16da9","default-node_modules_react-i18next_dist_es_index_js": "724b1acafcb3c494","default-node_modules_react-router-dom_dist_index_js": "9d32a476ab7bed13","default-node_modules_swr_dist__internal_index_mjs": "a55d0c7fc69677ef","default-node_modules_tslib_tslib_es6_mjs": "ea8552fa9b5b595c","default-src_run_ts": "d4106d09f5b46f01","default-vendors-node_modules_dayjs_dayjs_min_js": "5c778f985ad678ec","default-vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguage-1ba50a": "05d439038b8b61f4","default-vendors-node_modules_i18next_dist_esm_i18next_js": "a03b941d3b937f8d","default-vendors-node_modules_react_index_js": "2f0c98fe350433ed","default-vendors-node_modules_rxjs__esm5_index_js": "92b85e96c6ce8a46","default-vendors-node_modules_single-spa_lib_es2015_esm_single-spa_dev_js": "4682b3152838253a","framework_esm-translations_translations_am_json": "06aee695134bd88c","framework_esm-translations_translations_ar_SY_json": "086a5e1ac26f1a62","framework_esm-translations_translations_ar_json": "187d960cfc505554","framework_esm-translations_translations_bn_json": "f2c514ea31c828e3","framework_esm-translations_translations_cs_json": "1ba85eef0ead5042","framework_esm-translations_translations_de_json": "7dd156f94a857529","framework_esm-translations_translations_en_US_json": "d18770830db868c8","framework_esm-translations_translations_en_json": "f372453e21463e93","framework_esm-translations_translations_es_MX_json": "da748f8188c833d7","framework_esm-translations_translations_es_json": "c55b14008657a3be","framework_esm-translations_translations_fr_json": "828a8facba2fb98a","framework_esm-translations_translations_he_json": "bd5dc18397ad5098","framework_esm-translations_translations_hi_IN_json": "06ebc86c297de47e","framework_esm-translations_translations_hi_json": "628b7bb4e4b6fdec","framework_esm-translations_translations_id_json": "602691f331f79f76","framework_esm-translations_translations_it_json": "0307ccffc40d15e1","framework_esm-translations_translations_ka_json": "d575a575801d144a","framework_esm-translations_translations_km_json": "1d687e22c573ea8f","framework_esm-translations_translations_ku_json": "a5db5cdb878080aa","framework_esm-translations_translations_ky_json": "5890ffb53b3cffa4","framework_esm-translations_translations_lg_json": "fb31be88afa34d7a","framework_esm-translations_translations_ne_json": "3fae9cc7e8b9c833","framework_esm-translations_translations_pl_json": "d44f5ff4d0f87c16","framework_esm-translations_translations_pt_BR_json": "d8d61fddb26edf63","framework_esm-translations_translations_pt_json": "8144d8726771c08f","framework_esm-translations_translations_qu_json": "c9fef59aba3fcb13","framework_esm-translations_translations_ro_RO_json": "cceb766e6653a7d2","framework_esm-translations_translations_ru_RU_json": "34b718b592bcfed7","framework_esm-translations_translations_si_json": "ca21fb83f91dc92b","framework_esm-translations_translations_sq_json": "2552494ee2b1ecd1","framework_esm-translations_translations_sw_KE_json": "214838278663a696","framework_esm-translations_translations_sw_json": "dc052baecb3d5646","framework_esm-translations_translations_tr_TR_json": "c19369c2cb61645c","framework_esm-translations_translations_tr_json": "d407ba9747584f22","framework_esm-translations_translations_uk_json": "2e295b54ad1ac444","framework_esm-translations_translations_uz_Latn_json": "c2c4926db7e236c2","framework_esm-translations_translations_uz_UZ_json": "eb882b8b16e728a4","framework_esm-translations_translations_uz_json": "6dc2e17e163c4981","framework_esm-translations_translations_vi_json": "592beb196bd3214e","framework_esm-translations_translations_zh_CN_json": "dcbae03f23ca2199","framework_esm-translations_translations_zh_TW_json": "509d0ef5eb6011fe","framework_esm-translations_translations_zh_json": "7ad13fa4afdcb747","intl-durationformat-polyfill": "cca0d70ddc22e728",}[chunkId] + ".js"
174
174
  }
175
175
  })();
176
176
  // webpack/runtime/global
@@ -288,7 +288,7 @@ __webpack_require__.rv = () => ("1.7.9")
288
288
  (() => {
289
289
 
290
290
  __webpack_require__.S = {};
291
- __webpack_require__.initializeSharingData = { scopeToSharingDataMapping: { "default": [{ name: "@carbon/react", version: "1.92.1", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09"), __webpack_require__.e("default-node_modules_tslib_tslib_es6_mjs"), __webpack_require__.e("default-node_modules_carbon_react_es_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/@carbon/react/es/index.js"))))), eager: 0, singleton: 1, requiredVersion: "1.x", strictVersion: 0 }, { name: "@openmrs/esm-framework/src/internal", version: "9.0.3-pre.4377", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09"), __webpack_require__.e("default-framework_esm-framework_dist_internal_js")]).then(() => (() => (__webpack_require__("../../framework/esm-framework/dist/internal.js"))))), eager: 0, singleton: 1, requiredVersion: "*", strictVersion: 0 }, { name: "dayjs", version: "1.11.13", factory: () => (__webpack_require__.e("default-vendors-node_modules_dayjs_dayjs_min_js").then(() => (() => (__webpack_require__("../../../node_modules/dayjs/dayjs.min.js"))))), eager: 0, singleton: 1, requiredVersion: "1.x", strictVersion: 0 }, { name: "i18next", version: "25.5.3", factory: () => (__webpack_require__.e("default-vendors-node_modules_i18next_dist_esm_i18next_js").then(() => (() => (__webpack_require__("../../../node_modules/i18next/dist/esm/i18next.js"))))), eager: 0, singleton: 1, requiredVersion: "25.x", strictVersion: 0 }, { name: "react-dom", version: "18.3.1", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_react-dom_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-dom/index.js"))))), eager: 0, singleton: 1, requiredVersion: "18.x", strictVersion: 0 }, { name: "react-i18next", version: "16.0.0", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_react-i18next_dist_es_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-i18next/dist/es/index.js"))))), eager: 0, singleton: 1, requiredVersion: "16.x", strictVersion: 0 }, { name: "react-router-dom", version: "6.30.3", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_react-router-dom_dist_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-router-dom/dist/index.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "react", version: "18.3.1", factory: () => (__webpack_require__.e("default-vendors-node_modules_react_index_js").then(() => (() => (__webpack_require__("../../../node_modules/react/index.js"))))), eager: 0, singleton: 1, requiredVersion: "18.x", strictVersion: 0 }, { name: "rxjs", version: "6.6.7", factory: () => (__webpack_require__.e("default-vendors-node_modules_rxjs__esm5_index_js").then(() => (() => (__webpack_require__("../../../node_modules/rxjs/_esm5/index.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "single-spa", version: "6.0.3", factory: () => (__webpack_require__.e("default-vendors-node_modules_single-spa_lib_es2015_esm_single-spa_dev_js").then(() => (() => (__webpack_require__("../../../node_modules/single-spa/lib/es2015/esm/single-spa.dev.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "swr/_internal", version: "2.2.5", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_swr_dist__internal_index_mjs")]).then(() => (() => (__webpack_require__("../../../node_modules/swr/dist/_internal/index.mjs"))))), eager: 0, singleton: 1, requiredVersion: "2.2.5", strictVersion: 0 }] }, uniqueName: "@openmrs/esm-app-shell" };
291
+ __webpack_require__.initializeSharingData = { scopeToSharingDataMapping: { "default": [{ name: "@carbon/react", version: "1.92.1", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09"), __webpack_require__.e("default-node_modules_tslib_tslib_es6_mjs"), __webpack_require__.e("default-node_modules_carbon_react_es_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/@carbon/react/es/index.js"))))), eager: 0, singleton: 1, requiredVersion: "1.x", strictVersion: 0 }, { name: "@openmrs/esm-framework/src/internal", version: "9.0.3-pre.4380", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_carbon_icons-react_es_generated_bucket-11_js-node_modules_carbon_icons-r-63ea09"), __webpack_require__.e("default-framework_esm-framework_dist_internal_js")]).then(() => (() => (__webpack_require__("../../framework/esm-framework/dist/internal.js"))))), eager: 0, singleton: 1, requiredVersion: "*", strictVersion: 0 }, { name: "dayjs", version: "1.11.13", factory: () => (__webpack_require__.e("default-vendors-node_modules_dayjs_dayjs_min_js").then(() => (() => (__webpack_require__("../../../node_modules/dayjs/dayjs.min.js"))))), eager: 0, singleton: 1, requiredVersion: "1.x", strictVersion: 0 }, { name: "i18next", version: "25.5.3", factory: () => (__webpack_require__.e("default-vendors-node_modules_i18next_dist_esm_i18next_js").then(() => (() => (__webpack_require__("../../../node_modules/i18next/dist/esm/i18next.js"))))), eager: 0, singleton: 1, requiredVersion: "25.x", strictVersion: 0 }, { name: "react-dom", version: "18.3.1", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_react-dom_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-dom/index.js"))))), eager: 0, singleton: 1, requiredVersion: "18.x", strictVersion: 0 }, { name: "react-i18next", version: "16.0.0", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_react-i18next_dist_es_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-i18next/dist/es/index.js"))))), eager: 0, singleton: 1, requiredVersion: "16.x", strictVersion: 0 }, { name: "react-router-dom", version: "6.30.3", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-webpack_sharing_consume_default_react-dom_react-dom"), __webpack_require__.e("default-node_modules_react-router-dom_dist_index_js")]).then(() => (() => (__webpack_require__("../../../node_modules/react-router-dom/dist/index.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "react", version: "18.3.1", factory: () => (__webpack_require__.e("default-vendors-node_modules_react_index_js").then(() => (() => (__webpack_require__("../../../node_modules/react/index.js"))))), eager: 0, singleton: 1, requiredVersion: "18.x", strictVersion: 0 }, { name: "rxjs", version: "6.6.7", factory: () => (__webpack_require__.e("default-vendors-node_modules_rxjs__esm5_index_js").then(() => (() => (__webpack_require__("../../../node_modules/rxjs/_esm5/index.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "single-spa", version: "6.0.3", factory: () => (__webpack_require__.e("default-vendors-node_modules_single-spa_lib_es2015_esm_single-spa_dev_js").then(() => (() => (__webpack_require__("../../../node_modules/single-spa/lib/es2015/esm/single-spa.dev.js"))))), eager: 0, singleton: 1, requiredVersion: "6.x", strictVersion: 0 }, { name: "swr/_internal", version: "2.2.5", factory: () => (Promise.all([__webpack_require__.e("default-webpack_sharing_consume_default_react_react"), __webpack_require__.e("default-node_modules_swr_dist__internal_index_mjs")]).then(() => (() => (__webpack_require__("../../../node_modules/swr/dist/_internal/index.mjs"))))), eager: 0, singleton: 1, requiredVersion: "2.2.5", strictVersion: 0 }] }, uniqueName: "@openmrs/esm-app-shell" };
292
292
  __webpack_require__.I = __webpack_require__.I || function() { throw new Error("should have __webpack_require__.I") }
293
293
 
294
294
  })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmrs/esm-app-shell",
3
- "version": "9.0.3-pre.4377",
3
+ "version": "9.0.3-pre.4380",
4
4
  "license": "MPL-2.0",
5
5
  "main": "dist/openmrs.js",
6
6
  "scripts": {
@@ -35,8 +35,8 @@
35
35
  "dependencies": {
36
36
  "@carbon/react": "^1.92.1",
37
37
  "@internationalized/date": "^3.8.0",
38
- "@openmrs/esm-framework": "9.0.3-pre.4377",
39
- "@openmrs/esm-styleguide": "9.0.3-pre.4377",
38
+ "@openmrs/esm-framework": "9.0.3-pre.4380",
39
+ "@openmrs/esm-styleguide": "9.0.3-pre.4380",
40
40
  "@rspack/cli": "1.7.9",
41
41
  "@rspack/core": "1.7.9",
42
42
  "dayjs": "^1.11.13",