sales-frontend-bridge 0.0.44 → 0.0.45
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.
- package/dist/index.cjs +15 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +40 -2
- package/dist/index.d.ts +40 -2
- package/dist/index.js +15 -3
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react.production.js","../../../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react.development.js","../../../node_modules/.pnpm/react@19.1.0/node_modules/react/index.js","../src/common/common-bridge.ts","../src/common/common-bridge-core.ts","../src/iframe/core/iframe-bridge-core.ts","../src/iframe/bridge/iframe-bridge.ts","../src/native/core/native-bridge-core.ts","../src/native/bridge/native-bridge.ts","../src/native/bridge-oz/native-bridge-oz.ts","../src/bridge.ts","../src/oz/constant/comment-pen-param.ts","../src/oz/constant/oz-param.ts","../src/oz/constant/pdf-param.ts","../src/oz/constant/test-data.ts","../src/oz/hooks/use-document-info.tsx","../src/oz/hooks/use-oz-event-listener.tsx","../src/oz/types/oz-event.types.ts","../src/oz/utils/common-util.ts","../src/oz/utils/bridge-util/oz-wrapper-util.ts","../src/oz/utils/bridge-util/btn-touch-event-util/category-handler.ts","../src/oz/utils/bridge-util/btn-touch-event-util/top-handler.ts","../src/oz/utils/bridge-util/btn-touch-event-util/comment-handler.ts","../src/oz/utils/bridge-util/btn-touch-event-util/pdf-handler.ts","../src/oz/utils/bridge-util/focus-util.ts","../src/oz/utils/bridge-util/validation-util.ts","../src/oz/utils/bridge-util/btn-touch-event-util/signature-handler.ts","../src/oz/utils/bridge-util/fetch-util.ts","../src/oz/utils/bridge-util/create-report-util.ts","../src/oz/utils/bridge-util/get-draft-data-util.ts","../src/oz/utils/value-change-debounce-util.ts"],"names":["isClient","MessageEventManager","getDspExecutionEnvironment","isStorybookEnv","isFpPlannerApp","ozdFile","import_react","OZViewerEvent","OZTriggerExternalEvent","idx","debounce"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n self = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== self ? self : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(\n oldElement.type,\n newKey,\n void 0,\n void 0,\n void 0,\n oldElement.props\n );\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop$1, noop$1)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction noop() {}\nexports.Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = void 0;\n if (null != config)\n for (propName in (void 0 !== config.ref && (owner = void 0),\n void 0 !== config.key && (key = \"\" + config.key),\n config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, createDeps, update) {\n var dispatcher = ReactSharedInternals.H;\n if (\"function\" === typeof update)\n throw Error(\n \"useEffect CRUD overload is not enabled in this build of React.\"\n );\n return dispatcher.useEffect(create, createDeps);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.1.0\";\n","/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function defineDeprecationWarning(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n console.warn(\n \"%s(...) is deprecated in plain JavaScript React classes. %s\",\n info[0],\n info[1]\n );\n }\n });\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n (publicInstance.displayName || publicInstance.name)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnStateUpdateForUnmountedComponent[warningKey] ||\n (console.error(\n \"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnStateUpdateForUnmountedComponent[warningKey] = !0));\n }\n function Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function ComponentDummy() {}\n function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(\n type,\n key,\n self,\n source,\n owner,\n props,\n debugStack,\n debugTask\n ) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n newKey = ReactElement(\n oldElement.type,\n newKey,\n void 0,\n void 0,\n oldElement._owner,\n oldElement.props,\n oldElement._debugStack,\n oldElement._debugTask\n );\n oldElement._store &&\n (newKey._store.validated = oldElement._store.validated);\n return newKey;\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n }\n function getElementKey(element, index) {\n return \"object\" === typeof element &&\n null !== element &&\n null != element.key\n ? (checkKeyStringCoercion(element.key), escape(\"\" + element.key))\n : index.toString(36);\n }\n function noop$1() {}\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop$1, noop$1)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"),\n (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback) {\n invokeCallback = children;\n callback = callback(invokeCallback);\n var childKey =\n \"\" === nameSoFar ? \".\" + getElementKey(invokeCallback, 0) : nameSoFar;\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != childKey &&\n (escapedPrefix =\n childKey.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (null != callback.key &&\n ((invokeCallback && invokeCallback.key === callback.key) ||\n checkKeyStringCoercion(callback.key)),\n (escapedPrefix = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (invokeCallback && invokeCallback.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n childKey\n )),\n \"\" !== nameSoFar &&\n null != invokeCallback &&\n isValidElement(invokeCallback) &&\n null == invokeCallback.key &&\n invokeCallback._store &&\n !invokeCallback._store.validated &&\n (escapedPrefix._store.validated = 2),\n (callback = escapedPrefix)),\n array.push(callback));\n return 1;\n }\n invokeCallback = 0;\n childKey = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = childKey + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n i === children.entries &&\n (didWarnAboutMaps ||\n console.warn(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0)),\n children = i.call(children),\n i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = childKey + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status)\n return (\n (ctor = payload._result),\n void 0 === ctor &&\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\",\n ctor\n ),\n \"default\" in ctor ||\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\",\n ctor\n ),\n ctor.default\n );\n throw payload._result;\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n function noop() {}\n function enqueueTask(task) {\n if (null === enqueueTaskImpl)\n try {\n var requireString = (\"require\" + Math.random()).slice(0, 7);\n enqueueTaskImpl = (module && module[requireString]).call(\n module,\n \"timers\"\n ).setImmediate;\n } catch (_err) {\n enqueueTaskImpl = function (callback) {\n !1 === didWarnAboutMessageChannel &&\n ((didWarnAboutMessageChannel = !0),\n \"undefined\" === typeof MessageChannel &&\n console.error(\n \"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\"\n ));\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(void 0);\n };\n }\n return enqueueTaskImpl(task);\n }\n function aggregateErrors(errors) {\n return 1 < errors.length && \"function\" === typeof AggregateError\n ? new AggregateError(errors)\n : errors[0];\n }\n function popActScope(prevActQueue, prevActScopeDepth) {\n prevActScopeDepth !== actScopeDepth - 1 &&\n console.error(\n \"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \"\n );\n actScopeDepth = prevActScopeDepth;\n }\n function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n var queue = ReactSharedInternals.actQueue;\n if (null !== queue)\n if (0 !== queue.length)\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n return;\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n else ReactSharedInternals.actQueue = null;\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((queue = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(queue))\n : resolve(returnValue);\n }\n function flushActQueue(queue) {\n if (!isFlushing) {\n isFlushing = !0;\n var i = 0;\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n do {\n ReactSharedInternals.didUsePromise = !1;\n var continuation = callback(!1);\n if (null !== continuation) {\n if (ReactSharedInternals.didUsePromise) {\n queue[i] = callback;\n queue.splice(0, i);\n return;\n }\n callback = continuation;\n } else break;\n } while (1);\n }\n queue.length = 0;\n } catch (error) {\n queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);\n } finally {\n isFlushing = !1;\n }\n }\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n didWarnStateUpdateForUnmountedComponent = {},\n ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n enqueueReplaceState: function (publicInstance) {\n warnNoop(publicInstance, \"replaceState\");\n },\n enqueueSetState: function (publicInstance) {\n warnNoop(publicInstance, \"setState\");\n }\n },\n assign = Object.assign,\n emptyObject = {};\n Object.freeze(emptyObject);\n Component.prototype.isReactComponent = {};\n Component.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"\n ]\n },\n fnName;\n for (fnName in deprecatedAPIs)\n deprecatedAPIs.hasOwnProperty(fnName) &&\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n ComponentDummy.prototype = Component.prototype;\n deprecatedAPIs = PureComponent.prototype = new ComponentDummy();\n deprecatedAPIs.constructor = PureComponent;\n assign(deprecatedAPIs, Component.prototype);\n deprecatedAPIs.isPureReactComponent = !0;\n var isArrayImpl = Array.isArray,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals = {\n H: null,\n A: null,\n T: null,\n S: null,\n V: null,\n actQueue: null,\n isBatchingLegacy: !1,\n didScheduleLegacyUpdate: !1,\n didUsePromise: !1,\n thrownErrors: [],\n getCurrentStack: null,\n recentlyCreatedOwnerStacks: 0\n },\n hasOwnProperty = Object.prototype.hasOwnProperty,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n deprecatedAPIs = {\n \"react-stack-bottom-frame\": function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = deprecatedAPIs[\n \"react-stack-bottom-frame\"\n ].bind(deprecatedAPIs, UnknownOwner)();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutMaps = !1,\n userProvidedKeyEscapeRegex = /\\/+/g,\n reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n didWarnAboutMessageChannel = !1,\n enqueueTaskImpl = null,\n actScopeDepth = 0,\n didWarnNoAwaitAct = !1,\n isFlushing = !1,\n queueSeveralMicrotasks =\n \"function\" === typeof queueMicrotask\n ? function (callback) {\n queueMicrotask(function () {\n return queueMicrotask(callback);\n });\n }\n : enqueueTask;\n deprecatedAPIs = Object.freeze({\n __proto__: null,\n c: function (size) {\n return resolveDispatcher().useMemoCache(size);\n }\n });\n exports.Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Component = Component;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\n exports.__COMPILER_RUNTIME = deprecatedAPIs;\n exports.act = function (callback) {\n var prevActQueue = ReactSharedInternals.actQueue,\n prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n var queue = (ReactSharedInternals.actQueue =\n null !== prevActQueue ? prevActQueue : []),\n didAwaitActCall = !1;\n try {\n var result = callback();\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n (popActScope(prevActQueue, prevActScopeDepth),\n (callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n if (\n null !== result &&\n \"object\" === typeof result &&\n \"function\" === typeof result.then\n ) {\n var thenable = result;\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\"\n ));\n });\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n thenable.then(\n function (returnValue) {\n popActScope(prevActQueue, prevActScopeDepth);\n if (0 === prevActScopeDepth) {\n try {\n flushActQueue(queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue,\n resolve,\n reject\n );\n });\n } catch (error$0) {\n ReactSharedInternals.thrownErrors.push(error$0);\n }\n if (0 < ReactSharedInternals.thrownErrors.length) {\n var _thrownError = aggregateErrors(\n ReactSharedInternals.thrownErrors\n );\n ReactSharedInternals.thrownErrors.length = 0;\n reject(_thrownError);\n }\n } else resolve(returnValue);\n },\n function (error) {\n popActScope(prevActQueue, prevActScopeDepth);\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((error = aggregateErrors(\n ReactSharedInternals.thrownErrors\n )),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(error))\n : reject(error);\n }\n );\n }\n };\n }\n var returnValue$jscomp$0 = result;\n popActScope(prevActQueue, prevActScopeDepth);\n 0 === prevActScopeDepth &&\n (flushActQueue(queue),\n 0 !== queue.length &&\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\\n\\nawait act(() => ...)\"\n ));\n }),\n (ReactSharedInternals.actQueue = null));\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n ((callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n 0 === prevActScopeDepth\n ? ((ReactSharedInternals.actQueue = queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue$jscomp$0,\n resolve,\n reject\n );\n }))\n : resolve(returnValue$jscomp$0);\n }\n };\n };\n exports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n };\n exports.captureOwnerStack = function () {\n var getCurrentStack = ReactSharedInternals.getCurrentStack;\n return null === getCurrentStack ? null : getCurrentStack();\n };\n exports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" +\n element +\n \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = element._owner;\n if (null != config) {\n var JSCompiler_inline_result;\n a: {\n if (\n hasOwnProperty.call(config, \"ref\") &&\n (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(\n config,\n \"ref\"\n ).get) &&\n JSCompiler_inline_result.isReactWarning\n ) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = void 0 !== config.ref;\n }\n JSCompiler_inline_result && (owner = getOwner());\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key));\n for (propName in config)\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n }\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n JSCompiler_inline_result = Array(propName);\n for (var i = 0; i < propName; i++)\n JSCompiler_inline_result[i] = arguments[i + 2];\n props.children = JSCompiler_inline_result;\n }\n props = ReactElement(\n element.type,\n key,\n void 0,\n void 0,\n owner,\n props,\n element._debugStack,\n element._debugTask\n );\n for (key = 2; key < arguments.length; key++)\n (owner = arguments[key]),\n isValidElement(owner) && owner._store && (owner._store.validated = 1);\n return props;\n };\n exports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n defaultValue._currentRenderer = null;\n defaultValue._currentRenderer2 = null;\n return defaultValue;\n };\n exports.createElement = function (type, config, children) {\n for (var i = 2; i < arguments.length; i++) {\n var node = arguments[i];\n isValidElement(node) && node._store && (node._store.validated = 1);\n }\n i = {};\n node = null;\n if (null != config)\n for (propName in (didWarnAboutOldJSXRuntime ||\n !(\"__self\" in config) ||\n \"key\" in config ||\n ((didWarnAboutOldJSXRuntime = !0),\n console.warn(\n \"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\"\n )),\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (node = \"\" + config.key)),\n config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (i[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) i.children = children;\n else if (1 < childrenLength) {\n for (\n var childArray = Array(childrenLength), _i = 0;\n _i < childrenLength;\n _i++\n )\n childArray[_i] = arguments[_i + 2];\n Object.freeze && Object.freeze(childArray);\n i.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === i[propName] && (i[propName] = childrenLength[propName]);\n node &&\n defineKeyPropWarningGetter(\n i,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return ReactElement(\n type,\n node,\n void 0,\n void 0,\n getOwner(),\n i,\n propName ? Error(\"react-stack-top-frame\") : unknownOwnerDebugStack,\n propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.createRef = function () {\n var refObject = { current: null };\n Object.seal(refObject);\n return refObject;\n };\n exports.forwardRef = function (render) {\n null != render && render.$$typeof === REACT_MEMO_TYPE\n ? console.error(\n \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\"\n )\n : \"function\" !== typeof render\n ? console.error(\n \"forwardRef requires a render function but was given %s.\",\n null === render ? \"null\" : typeof render\n )\n : 0 !== render.length &&\n 2 !== render.length &&\n console.error(\n \"forwardRef render functions accept exactly two parameters: props and ref. %s\",\n 1 === render.length\n ? \"Did you forget to use the ref parameter?\"\n : \"Any additional parameter will be undefined.\"\n );\n null != render &&\n null != render.defaultProps &&\n console.error(\n \"forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?\"\n );\n var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render },\n ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n render.name ||\n render.displayName ||\n (Object.defineProperty(render, \"name\", { value: name }),\n (render.displayName = name));\n }\n });\n return elementType;\n };\n exports.isValidElement = isValidElement;\n exports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n };\n exports.memo = function (type, compare) {\n null == type &&\n console.error(\n \"memo: The first argument must be a component. Instead received: %s\",\n null === type ? \"null\" : typeof type\n );\n compare = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n var ownName;\n Object.defineProperty(compare, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n type.name ||\n type.displayName ||\n (Object.defineProperty(type, \"name\", { value: name }),\n (type.displayName = name));\n }\n });\n return compare;\n };\n exports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n currentTransition._updatedFibers = new Set();\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null === prevTransition &&\n currentTransition._updatedFibers &&\n ((scope = currentTransition._updatedFibers.size),\n currentTransition._updatedFibers.clear(),\n 10 < scope &&\n console.warn(\n \"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\"\n )),\n (ReactSharedInternals.T = prevTransition);\n }\n };\n exports.unstable_useCacheRefresh = function () {\n return resolveDispatcher().useCacheRefresh();\n };\n exports.use = function (usable) {\n return resolveDispatcher().use(usable);\n };\n exports.useActionState = function (action, initialState, permalink) {\n return resolveDispatcher().useActionState(\n action,\n initialState,\n permalink\n );\n };\n exports.useCallback = function (callback, deps) {\n return resolveDispatcher().useCallback(callback, deps);\n };\n exports.useContext = function (Context) {\n var dispatcher = resolveDispatcher();\n Context.$$typeof === REACT_CONSUMER_TYPE &&\n console.error(\n \"Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?\"\n );\n return dispatcher.useContext(Context);\n };\n exports.useDebugValue = function (value, formatterFn) {\n return resolveDispatcher().useDebugValue(value, formatterFn);\n };\n exports.useDeferredValue = function (value, initialValue) {\n return resolveDispatcher().useDeferredValue(value, initialValue);\n };\n exports.useEffect = function (create, createDeps, update) {\n null == create &&\n console.warn(\n \"React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n var dispatcher = resolveDispatcher();\n if (\"function\" === typeof update)\n throw Error(\n \"useEffect CRUD overload is not enabled in this build of React.\"\n );\n return dispatcher.useEffect(create, createDeps);\n };\n exports.useId = function () {\n return resolveDispatcher().useId();\n };\n exports.useImperativeHandle = function (ref, create, deps) {\n return resolveDispatcher().useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useLayoutEffect(create, deps);\n };\n exports.useMemo = function (create, deps) {\n return resolveDispatcher().useMemo(create, deps);\n };\n exports.useOptimistic = function (passthrough, reducer) {\n return resolveDispatcher().useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function (reducer, initialArg, init) {\n return resolveDispatcher().useReducer(reducer, initialArg, init);\n };\n exports.useRef = function (initialValue) {\n return resolveDispatcher().useRef(initialValue);\n };\n exports.useState = function (initialState) {\n return resolveDispatcher().useState(initialState);\n };\n exports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n return resolveDispatcher().useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function () {\n return resolveDispatcher().useTransition();\n };\n exports.version = \"19.1.0\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","import { ICommonBridge } from './common-bridge.types';\n\n/**\n * Business Layer Bridge\n * 비즈니스를 호출하는(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridge implements ICommonBridge {\n protected commonHello(): void {\n console.log('commonHello');\n }\n\n abstract hello(): void;\n}\n","/**\n * Core Layer Bridge\n * Core(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridgeCore {\n /**\n * 코어에서 사용할 프로미스 ID 생성 함수\n * @returns\n */\n protected generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * core에서 구현해야할 함수\n * @param action\n * @param options\n */\n abstract callToTarget<T>(action: string, options?: Record<string, unknown>): Promise<T>;\n}\n","import { getDspExecutionEnvironment, isClient } from 'sales-frontend-utils';\nimport { MessageEventManager } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport {\n IframeEventName,\n IframeBridgeCommand,\n IframeBridgeOptions,\n IframeBridgePromise,\n IframeBridgeResponseHandler,\n IframeBridgeResponseData\n} from './iframe-bridge-core.types';\n\n/**\n * Iframe Bridge 통신 위한 핵심 클래스\n * 담당: 부모 호출, Promise 관리\n */\nexport class IframeBridgeCore extends CommonBridgeCore {\n private pendingPromises = new Map<string, IframeBridgePromise>();\n private responseHandler?: IframeBridgeResponseHandler;\n\n constructor() {\n super();\n if (!isClient()) {\n return;\n }\n\n this.initializeIframeBridge();\n }\n\n /**\n * 사용하는 쪽에서 응답핸들러를 사용할 수 있도록 필요시, 응답 처리 핸들러 설정\n */\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.responseHandler = handler;\n }\n\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n const { promiseId, isSuccess, data } = response;\n\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n\n if (isSuccess) {\n promise.resolve(data);\n } else {\n promise.reject(new Error(data));\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * 특정 Promise 존재 여부 확인\n */\n hasPromise(promiseId: string): boolean {\n return this.pendingPromises.has(promiseId);\n }\n\n /**\n * 네이티브 통신을 위해 window.n2bridge 객체 초기화\n */\n private initializeIframeBridge(): void {\n console.log('[IframeBridgeCore] initialized Iframe Bridge');\n\n // MessageEventManager에 핸들러 등록(영업포털-웹간 주고받기)\n MessageEventManager.getInstance().registerHandler('iframe-bridge', this.handleMessageEventResponse.bind(this));\n }\n\n /**\n * 브릿지 메시지 이벤트 핸들러\n * @param event\n */\n private handleMessageEventResponse(event: MessageEvent): void {\n const { promiseId, isSuccess, data } = event.data as IframeBridgeResponseData;\n\n // 등록된 핸들러가 있으면 실행\n if (this.responseHandler) {\n this.responseHandler({ promiseId, isSuccess, data });\n }\n\n // 기본 처리\n if (this.pendingPromises.has(promiseId)) {\n this.handleIframeBridgePromise({ promiseId, isSuccess, data });\n }\n }\n\n /**\n * Iframe 통신\n * @param eventName\n * @param option\n * @returns\n */\n async callToTarget<T = boolean>(eventName: IframeEventName, option?: IframeBridgeOptions): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${eventName}_${this.generatePromiseId()}`;\n\n // Promise 등록\n this.pendingPromises.set(promiseId, { resolve, reject });\n\n try {\n const command: IframeBridgeCommand = {\n eventName,\n promiseId,\n option\n };\n\n console.log('[IframeBridgeCore callToIframe] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'iframe') {\n window.parent.postMessage(command, '*');\n\n // TODO: 부모에서 event.source.postMessage({ promiseId, isSuccess, data }); 형태로 보내줄 수 있다면 소스 삭제\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n promise.resolve(true as T);\n }\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(\n `[IframeBridgeCore callToIframe] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${eventName})입니다.`\n );\n\n this.pendingPromises.delete(promiseId);\n reject(new Error(`[IframeBridgeCore callToIframe] Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[IframeBridgeCore callToIframe] error::', error);\n this.pendingPromises.delete(promiseId);\n reject(error);\n }\n });\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { IframeBridgeCore } from '../core/iframe-bridge-core';\nimport { IframeBridgeResponseHandler, IframeBridgeResponseData } from '../core/iframe-bridge-core.types';\n\nimport { OpenMdiOptions } from './iframe-bridge-options.types';\nimport { IIframeBridge } from './iframe-bridge.types';\n\n/**\n * iframe(영업포탈) 전용 Bridge\n */\nexport class IframeBridge extends CommonBridge implements IIframeBridge {\n private core: IframeBridgeCore;\n\n constructor() {\n super();\n this.core = new IframeBridgeCore();\n }\n\n // 응답 핸들러 설정\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.core.setResponseHandler(handler);\n }\n\n // Promise 직접 제어 메서드들 추가\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n return this.core.handleIframeBridgePromise(response);\n }\n\n // 유틸리티 메서드들도 추가\n hasPromise(promiseId: string): boolean {\n return this.core.hasPromise(promiseId);\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수(test)\n */\n hello(): void {\n console.log('[IframeBridge] hello');\n }\n\n /**\n * 영업포탈 tab open\n * @param options\n * @returns\n */\n async openMdi(options: OpenMdiOptions): Promise<boolean> {\n return this.core.callToTarget('openMdi', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { getDspExecutionEnvironment, isClient, isStorybookEnv, isFpPlannerApp } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport type {\n NativeBridgeCommand,\n NativeBridgePromise,\n NativeBridgeOptions,\n PromiseHandleBridge,\n CallBridge\n} from './native-bridge-core.types';\n\n/**\n * Native <-> Web 처리를 위한 핵심 클래스\n * 담당: 앱 호출, Promise 관리\n */\nexport class NativeBridgeCore<TAction extends string> extends CommonBridgeCore {\n private promiseHandleName: string;\n private callBridgeName: string;\n\n constructor(callBridgeName = 'n2Bridge', promiseHandleName = 'n2bridge') {\n super();\n\n this.callBridgeName = callBridgeName;\n this.promiseHandleName = promiseHandleName;\n\n this.initializeWindowOzBridge();\n }\n\n /**\n * Promise 관리용 브릿지 객체 가져오기 (window.n2bridge)\n */\n private getPromiseHandleBridge(): PromiseHandleBridge {\n return (window as any)[this.promiseHandleName] as PromiseHandleBridge;\n }\n\n /**\n * 앱 호출용 브릿지 객체 가져오기 (window.n2Bridge)\n */\n private getCallBridge(): CallBridge {\n return (window as any)[this.callBridgeName] as CallBridge;\n }\n\n /**\n * 네이티브 통신을 위해 window.n2OzBridge 객체 초기화\n */\n private initializeWindowOzBridge(): void {\n if (!isClient()) {\n return;\n } // SSR 환경에서는 아무것도 하지 않음\n if (!(window as any)[this.promiseHandleName]) {\n (window as any)[this.promiseHandleName] = {\n promises: {},\n resolvePromise: () => {},\n finallyResolvePromise: () => {},\n callFromNative: () => {}\n };\n }\n\n const bridge = this.getPromiseHandleBridge();\n\n // 항상 최신 함수로 업데이트\n bridge.resolvePromise = this.createResolvePromiseHandler();\n bridge.finallyResolvePromise = this.createFinallyResolvePromiseHandler();\n\n if (isStorybookEnv() && window.parent) {\n // 스토리북에서는 현재 스토리가 iframe으로 로드되므로 앱에서 부모 프레임에 브릿지를 리턴해도 자식으로 전달되도록 보정하는 코드\n (window.parent as any)[this.promiseHandleName] = bridge;\n window.parent.dispatchEvent = (...args) => window.dispatchEvent.apply(null, args);\n }\n }\n\n /**\n * Promise 처리 함수(Native에서 호출)\n * @returns\n */\n private createResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n console.log('[NativeBridgeCore resolvePromise]::', promiseId, data, error);\n\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Promise 최종 처리 함수\n * @returns\n */\n private createFinallyResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * 네이티브 통신\n * @param action\n * @param options\n * @returns\n */\n async callToTarget<T>(action: TAction, option: NativeBridgeOptions = {}): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${action}_${this.generatePromiseId()}`;\n console.log('[NativeBridgeCore callToNative] promiseId::', promiseId);\n\n const bridge = this.getPromiseHandleBridge();\n\n // 바로 window.promiseHandler에 promises에 저장\n bridge.promises[promiseId] = {\n resolve: (value: T) => {\n resolve(value);\n },\n reject: (reason?: any) => {\n reject(reason);\n }\n };\n\n try {\n const command: NativeBridgeCommand = {\n action,\n promiseId,\n option\n };\n\n console.log('[NativeBridgeCore callToNative] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'android-webview') {\n const callBridge = this.getCallBridge();\n callBridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios-webview') {\n const message = isFpPlannerApp()\n ? { ...command, service: 'native' } // 플래너: service 추가\n : command;\n\n (window.webkit?.messageHandlers as any)?.[this.callBridgeName]?.postMessage(JSON.stringify(message));\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(\n `[NativeBridgeCore callToNative] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${action})입니다.`\n );\n this.cleanupPromise(promiseId);\n reject(new Error(`[NativeBridgeCore callToNative] Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[NativeBridgeCore callToNative] error::', error);\n this.cleanupPromise(promiseId);\n reject(error);\n }\n });\n }\n\n /**\n * promiseId를 초기화 해줍니다.\n * @param promiseId\n */\n private cleanupPromise(promiseId: string): void {\n const bridge = this.getPromiseHandleBridge();\n delete bridge.promises[promiseId];\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n OnAuthenticationResultRequest,\n OnAuthenticationResultResponse,\n GetAccessTokenResponse,\n GetAnalyticsUserPropertyResponse,\n GetOzFontParamResponse,\n} from './native-bridge-dto.types';\nimport type {\n ShowWebPopupOptions,\n CommonOzBridgetResponseType,\n DownloadOzdOptions,\n OpenBrowserOptions,\n CreateOZViewerOptions,\n OpenWebOptions,\n localFetchBridgeOptions\n} from './native-bridge-options.types';\nimport type { INativeBridge, NativeAction } from './native-bridge.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n private core: NativeBridgeCore<NativeAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeAction>();\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * getParameterMap\n * @returns\n */\n async getParameterMap<T = any>(): Promise<T> {\n return this.core.callToTarget<T>('getParameterMap');\n }\n\n async dismissPopup<T = any>(options?: any): Promise<T> {\n return this.core.callToTarget<T>('dismissPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async showWebPopup<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToTarget<T>('showWebPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToTarget<T>('jumpSafari', options);\n }\n\n /**\n * 기능명: 본인인증 결과 정보 넘기기\n * 목적: NXL One 에서 본인인증 결과 값을 네이티브로 넘기기 위함\n * @param options\n * @returns\n */\n async onAuthenticationResult(options: OnAuthenticationResultRequest): Promise<OnAuthenticationResultResponse> {\n return this.core.callToTarget('onAuthenticationResult', options);\n }\n\n /**\n * Access Token 가져오기\n * @returns\n */\n async getAccessToken(): Promise<GetAccessTokenResponse> {\n return this.core.callToTarget('getAccessToken');\n }\n\n /**\n * ### Bridge for Oz\n * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.createReportEx({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n createOZViewer(options: CreateOZViewerOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'createOZViewer',\n // delimiter 미입력시 \\n 으로 기본값 처리\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * OZ 뷰어를 닫습니다\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideViewer();\n * ```\n */\n hideOZViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOZViewer');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다\n * @example\n * ```tsx\n * const options = {\n * // 현재 증권번호\n * policyNumber: \"300034894\",\n * // FP 사번\n * fpInfo: { \"uniqNo\": \"2210000\" }\n * // 서식 목록들\n * data: [{\n * // 서식에 대한 정보들\n * \"name\": \"[A0010]청약서\",\n * \"complete\": false,\n * \"startPage\": 0,\n * \"endPage\": 0,\n * \"focus\": false,\n * \"doc\": [{\n * // 서식에 속한 OZD 파일들\n * \"docCode\": \"A0010\",\n * \"fileID\": \"1HLqZJCNt6idLKkAA\",\n * \"imageFormatCode\": \"RT003001\",\n * \"imageDocumentTypeCode\": \"IT00\",\n * // ozd 파일이 다운로드된 경로\n * \"filePath\": \"\",\n * \"startPage\": 0,\n * \"endPage\": 0\n * }]\n * }, ],\n * }\n * await Bridge.native.downloadDocument(options)\n * ```\n */\n async downloadDocument(options: DownloadOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<DownloadOzdOptions>>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam() {\n return this.core.callToTarget<CommonOzBridgetResponseType<GetOzFontParamResponse>>('getOzFontParam');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 show\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.showLoader()\n * ```\n */\n async showLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 hide\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideLoader()\n * ```\n */\n async hideLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 태블릿 로컬에 있는 파일을 fetch하기 위한 url을 만들어주는 브릿지\n *\n * 파일의 절대경로는 saveSignImg 혹은 pdfExport시 확보할수 있다\n * @example\n * ```tsx\n * await Bridge.native.localFetchBridge({filePath: \"/data/0/~~~/file.ext\"});\n * ```\n */\n async localFetchBridge(options: localFetchBridgeOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('localFetchBridge', options);\n }\n\n /**\n * 홈 이동\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.goHome()\n * ```\n */\n goHome(): Promise<string> {\n return this.core.callToTarget('goHome');\n }\n\n /**\n * 전체메뉴 열기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.showMenu()\n * ```\n */\n showMenu(): Promise<string> {\n return this.core.callToTarget('showMenu');\n }\n\n /**\n * GA4 정보 얻기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n getAnalyticsUserProperty(): Promise<GetAnalyticsUserPropertyResponse> {\n return this.core.callToTarget('getAnalyticsUserProperty');\n }\n\n /**\n *외부 브라우저 호출\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n openBrowser(options: OpenBrowserOptions): Promise<string> {\n return this.core.callToTarget('openBrowser', options);\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideWebPopup()\n * ```\n */\n hideWebPopup(): Promise<string> {\n return this.core.callToTarget('hideWebPopup');\n }\n\n /**\n * OnePass 인증\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.requestAuthentication()\n * ```\n */\n requestAuthentication(): Promise<string> {\n return this.core.callToTarget('requestAuthentication');\n }\n\n /**\n * 웹뷰 띄우기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.openWeb()\n * ```\n */\n openWeb(options: OpenWebOptions): Promise<string> {\n return this.core.callToTarget('openWeb', options);\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.closeWeb()\n * ```\n */\n closeWeb(): Promise<string> {\n return this.core.callToTarget('closeWeb');\n }\n\n /**\n * 앱 종료\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.closeWeb()\n * ```\n */\n exitApp(): Promise<string> {\n return this.core.callToTarget('exitApp');\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType } from '../bridge/native-bridge-options.types';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type { SaveSignImgResponse } from './native-bridge-oz-dto.types';\nimport type {\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n TriggerExternalEventOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n UpdateOzdOptions,\n createOzPdfViewerOptions,\n ShowAlertOptions\n} from './native-bridge-oz-options.types';\nimport type { INativeBridgeOz, NativeOzAction } from './native-bridge-oz.types';\n\n/**\n * App - Web Bridge(for OZ)\n */\nexport class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {\n private core: NativeBridgeCore<NativeOzAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeOzAction>('n2OzBridge', 'n2ozBridge');\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시:\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * const { data } = await Bridge.nativeOz.getInformation({ command: 'INPUT_JSON' });\n * ```\n */\n async getInformation<T = string>(options: GetInformationOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToTarget<CommonOzBridgetResponseType<T>>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * await Bridge.nativeOz.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal(options: GetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<string>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // value 자리에 string이 아닌 값을 넣어도 getGlobal시 string으로 변환되어 리턴됩니다\n * Bridge.nativeOz.setGlobal({ key: \"AAA\", value: \"myValue\" });\n * ```\n */\n setGlobal(options: SetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.nativeOz.script({ command });\n * ```\n */\n script(options: ScriptOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * Bridge.nativeOz.scriptEX({ command, param });\n * ```\n */\n scriptEx(options: ScriptExOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEvent({ param1: 'signer' });\n * ```\n */\n async triggerExternalEvent(options: TriggerExternalEventOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'triggerExternalEvent',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex(options: TriggerExternalEventByDocIndexOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.updateOzDocumentStatus(document);\n * ```\n */\n async updateOzDocumentStatus(options: UpdateOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('updateOzDocumentStatus', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export 요청\n * export 결과는 `OZViewerEvent.OZExportCommand`로 트리거 된다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf(options: SavePdfOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.saveSignImg({ fileName: 'sign.png', signImageKey: 'A0010_mynm_sg', policyNumber });\n * ```\n */\n async saveSignImg(options: SaveSignImgOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<SaveSignImgResponse>>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.createOzPdfViewer({ filePath: \"/data/0/app/total.pdf\" });\n * ```\n */\n async createOzPdfViewer(options: createOzPdfViewerOptions) {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToTarget<CommonOzBridgetResponseType>('createOzPdfViewer', options);\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOzPdfViewer');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showSignatureShortcut();\n */\n async showSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideSignatureShortcut();\n */\n async hideSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showMissingFieldWarning();\n */\n async showMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideMissingFieldWarning();\n */\n async hideMissingFieldWarning<T>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToTarget<CommonOzBridgetResponseType<T>>('hideMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showAlert({\n * title: '모달 타이틀',\n * message: '모달 내용',\n * // 모달에 표시할 버튼들 설정\n * buttons: { close: false, main: \"확인\" }\n * })\n * ```\n */\n async showAlert(options: ShowAlertOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<{ result: keyof ShowAlertOptions[\"buttons\"] }>>('showAlert', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { IframeBridge } from './iframe/bridge/iframe-bridge';\nimport { IframeBridgeCore } from './iframe/core/iframe-bridge-core';\nimport { NativeBridge } from './native/bridge/native-bridge';\nimport { NativeBridgeOz } from './native/bridge-oz/native-bridge-oz';\nimport { NativeBridgeCore } from './native/core/native-bridge-core';\n\nexport const Bridge = {\n native: new NativeBridge(),\n nativeOz: new NativeBridgeOz(),\n iframe: new IframeBridge(),\n nativeCore: new NativeBridgeCore(),\n iframeCore: new IframeBridgeCore()\n};\n","/**\n * 형광펜 편집 관련 상수\n */\n\nconst commentPenDefaultParam = [\n `comment.selectedpen=highlightpen`,\n `comment.highlightpen_thick=15`,\n]\n\nexport const commentPenYellow = [...commentPenDefaultParam, `comment.highlightpen_color=ffd900`];\nexport const commentPenPink = [...commentPenDefaultParam, `comment.highlightpen_color=f48fb1`];\nexport const commentPenGreen = [...commentPenDefaultParam, `comment.highlightpen_color=81c784`];\nexport const commentPenEraser = [`comment.selectedpen=eraser`,];","/**\n * 모든페이지 공용으로 쓰는 OZ 뷰어파라미터\n */\n\nconst informationOzParam = [\n // 뷰어 콘솔 로그 정보의 수준(Level)을 설정합니다. - 뷰어 수행에 필요한 디버깅용 메시지를 자바 콘솔에 출력\n `information.debug = true`,\n];\nconst globalOzParam = [\n // 다중 보고서 호출 시 부모 보고서의 파라미터 값을 자식 보고서가 상속받을지 여부를 설정합니다.\n `global.inheritparameter=true`,\n // 멀티 보고서를 하나의 보고서처럼 사용할지 여부를 설정합니다.\n `global.concatpage=true`,\n // 멀티 보고서를 하나의 보고서처럼 설정한 경우 각각의 보고서별로 페이지 번호를 부여할지 여부를 설정합니다.\n // `global.eachpagenumberatconcatpage=true`,\n];\nconst eformOzParam = [\n `eform.signpad_type=embedded`,\n // `eform.signpad_type=keypad`,\n `eform.show_prev_next_input=true`,\n // `eform.signpad_prev_next_iconposition=sign_top_left`,\n `eform.signpad_prev_next_iconposition=sign_top`,\n `eform.signpad_show_draw_erase_button=false`,\n `eform.signpad_viewtype=keepratioandfittoframe`,\n `eform.radiobutton_type=ensurevisible_at_prev_next`,\n `eform.checkbox_type=ensurevisible_at_prev_next`,\n `eform.prev_next_required_rule=required_only`,\n `eform.prev_next_navigation_rule=required_only`,\n `eform.prev_next_constraint_rule=empty_only`,\n `eform.imagepicker_camera_iconposition = camera_top`,\n `eform.inputeventcommand=true`,\n // 서명 입력 중간중간에 onValueChanged가 호출 / 디폴트는 입력끝나고 창이 닫힐때 호출\n `eform.onvaluechanged_callrule_json=${JSON.stringify({ signpad: 'changed' })}`,\n `eform.inputcomponent_toolbar_button_json=${JSON.stringify({\n // 서명패드 버튼 배열 수정\n \"all\": {\n // 왼쪽에 [이전, 창닫기]\n \"left_align\": \"prev,ok\",\n // 오른쪽에 [다시쓰기, 성명,서명 불러오기, 다음]\n \"right_align\": \"clear,reusablesign,next\"\n }\n })}`,\n `eform.imagepicker_id_info=${JSON.stringify({\n ids: [\n {\n id: '1',\n name: '운전면허증_최신',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '운전면허번호', area: '0,0,0,0' },\n { name: '발급번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '2',\n name: '운전면허증_구형',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '운전면허번호', area: '0,0,0,0' },\n { name: '발급번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '3',\n name: '주민등록증',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '4',\n name: '외국인등록증 앞면',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '외국인등록번호1', area: '0,0,0,0' },\n { name: '외국인등록번호2', area: '0,0,0,0' },\n { name: '성명', area: '0,0,0,0' },\n { name: '성별', area: '0,0,0,0' },\n { name: '국가지역', area: '0,0,0,0' },\n { name: '체류자격', area: '0,0,0,0' },\n { name: '발급일자', area: '0,0,0,0' }\n ]\n },\n { id: '5', name: '외국인등록증 뒷면', size: '86x54', margin: '3', mask: [{ name: '외국인', area: '0,0,0,0' }] }\n ],\n choice: { title: '신분증을 선택하세요.', items: '1,2,3,4,5' }\n })}`\n];\n\nconst viewerOzPram = [\n `viewer.pagenavigate_by_prev_next=true`,\n // `viewer.zoombymouse=false`,\n `viewer.pagedisplay=singlepagecontinuous`,\n `viewer.usetoolbar=false`,\n `viewer.usestatusbar=false`,\n `viewer.useprogressbar=false`,\n `viewer.zoom=137`,\n `viewer.viewmode=fittowidth`,\n `viewer.hidehorizontalscroll=false`,\n `viewer.progresscommand=true`,\n `viewer.pagechangecommand=true`,\n `viewer.exportcommand=true`,\n `viewer.errorcommand=true`,\n `viewer.reportchangecommand=true`,\n `viewer.pagebindcommandinterval=500`,\n];\n\nconst ozdOzParam = [\n // connection.args=key=value로 넘기는 정보들은 ozr에서만 유효하나 ozd에서도 유효하도록 허용\n `ozd.allowreplaceformparam=true`\n]\n\nexport const commonOzParam = [\n ...informationOzParam,\n ...globalOzParam,\n ...eformOzParam,\n ...viewerOzPram,\n ...ozdOzParam,\n];","/**\n * PDF export시 공통으로 필요한 파라미터\n *\n * 제공하지 않는 파라미터\n * - filename\n * - ex) `pdf.filename=test.pdf`\n * - pages\n * - ex) `export.pages=1-2`\n * - userpassword\n * - ex) `pdf.userpassword=123213`\n */\nexport const commonPdfExportParam = [\n // `pdf.filename=${\"test.pdf\"}`,\n // `export.pages=${i.startPage}-${i.endPage}`,\n // \"pdf.userpassword=$pdfPassword\",G\n 'export.pagerange=range',\n 'export.confirmsave=false',\n 'export.mode=silent',\n // pdf에 폰트를 포함시킨다\n `pdf.fontembedding=true`,\n // 폰트를 포함시킬때 사용하는 글자만 포함시킨다\n `pdf.fontembedding_subset=true`\n];","import { CSSProperties } from 'react';\n\nimport { ExtraDataType, FormInfo } from '../types';\n\nexport const wrapperStyle: CSSProperties = { display: 'flex', flexFlow: 'column', gap: '10px' };\nexport const btnStyle: CSSProperties = { border: '1px solid red', minHeight: '40px' };\n\n/**\n * 테스트용 하드코딩 문서목록\n */\nexport const DownloadDocumentList: Array<FormInfo> = [\n { name: '[A0010]청약서', doc: [{ docCode: 'A0010', fileID: '1HLqZJCNt6idLKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A0100]비교안내확인서', doc: [{ docCode: 'A0100', fileID: 'EAq0B3CNt6owpKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A0900]상품설명서', doc: [{ docCode: 'A0900', fileID: 'dwKuNnCNvAFegKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A1500]청약부속정보확인서', doc: [{ docCode: 'A1500', fileID: 'PsxOl1CNvAKxyKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A2215]보험계약대출이행관리동의서', doc: [{ docCode: 'A2215', fileID: 'hV621tCNt6smxKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A2800]계약전알릴의무', doc: [{ docCode: 'A2800', fileID: 'gyQRHMCNt6voUKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A3503]청약서별지(변액용)', doc: [{ docCode: 'A3503', fileID: '88U1i3CNt6yWQKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[B0101]보험계약체결동의서', doc: [{ docCode: 'B0101', fileID: 'amlL4FCNvAPmLKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[C0400]계약체결이행동의서', doc: [{ docCode: 'C0400', fileID: 'K75MXgCNt65INKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[C0401]상품소개상세동의서', doc: [{ docCode: 'C0401', fileID: 'oA6EGZCNt6-9aKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[C1000]보험상품판매체크리스트', doc: [{ docCode: 'C1000', fileID: '0ah3K7CNt7D5PKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[C1300]계약체결고지의무확인서', doc: [{ docCode: 'C1300', fileID: 'wuhu3kCNt7HmEKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[C1400]보험상품비교설명확인서', doc: [{ docCode: 'C1400', fileID: 'gVUw81CNt7KVqKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n];\n\n/**\n * 테스트용 하드코딩 데이터\n */\nexport const ExtraData: ExtraDataType = {\n // 문서코드\n A0010: {\n // connection.inputjson으로 바인딩할 데이터\n inputJson: {\n // 계약자 성명 사인정보\n A0010_mynm_sg: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAABDUlEQVR4nOzSMQ0CQBQEUSAnAAU0iEAAPWKQgQU04gED10z1IXlPwWay6/78HH7P+3qZnrBxmh7wT8QKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECtZjvaY3bNzOx+kJG54ViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgVfAMAAP//tD4Eb/yjIncAAAAASUVORK5CYII=',\n // 계약자 서명 사인정보\n A0010_mysg_sign: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAABDElEQVR4nOzSsQkCYRgEUZXDVgTtxdDIYgR7sFkTG/iTiT4P3qtgGXa7vp+H//M5PqYnLJymB+yJWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgVjBdj9fpjcsvG7f6QkLnhWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBX8AgAA//9+7gTkg4AcBQAAAABJRU5ErkJggg=='\n },\n // 기타 공통으로 사용하지 않을 파라미터\n extraParam: [], // aaa=bbb\n args: []\n },\n A0900: {\n args: []\n },\n}\n\n\n/** 증번 */\nexport const policyNumber = '300034894';\n/** FP 정보 */\nexport const fpInfo = { uniqNo: '2210000' };\n/** 청약작성자목록 - 계약 관계자 코드 */\nexport const roleCode = [`11`, `28`]","import { useMemo, useState } from \"react\";\n\nimport { FormInfo } from \"../types\"\n\nexport function useDocumentInfo(initialValue: FormInfo[]) {\n\n /** 서식 목록 */\n const [documentInfo, setDocumentInfo] = useState<FormInfo[]>([...initialValue]);\n\n /** 글로벌 문서 목록 */\n const documentList = useMemo(() => documentInfo.map((i) => i.doc).flat(1), [documentInfo]);\n\n /** 글로벌 문서 맵 { 문서코드: 글로벌 인덱스} */\n const documentIndexMap = documentList.reduce((acc, cur, index) => {\n acc[cur.docCode] = index;\n\n return acc;\n }, {} as Record<string, number>)\n\n /** 글로벌 문서 맵 { 문서코드: 속한 서식 } */\n const documentTemplateMap = useMemo(() => documentInfo.reduce((map, template) => {\n template.doc.forEach(ozdFile => {\n map[ozdFile.docCode] = { ...template };\n });\n\n return map;\n\n }, {} as Record<string, FormInfo>), [documentInfo]);\n\n // 글로벌 문서 맵 { 서식이름: 서식 }\n const nameTemplateMap = documentInfo.reduce((acc, doc) => {\n acc[doc.name] = doc;\n\n return acc;\n }, {} as Record<string, FormInfo>);\n\n // 글로벌 문서 배열 { 글로벌인덱스: [동료서식 글로벌인덱스, 동료서식 글로벌인덱스] }\n const groupIndexes = useMemo(() => (\n documentInfo.reduce((acc, item) => {\n item.doc.forEach((ozdFile) => {\n const currentIndex = documentIndexMap[ozdFile.docCode] as number;\n\n // 각 globalIndex에 해당하는 그룹 인덱스를 추가\n if (!acc[currentIndex]) {\n acc[currentIndex] = []; // 배열로 초기화\n }\n\n // 해당 파일이 속한 그룹의 인덱스를 추가\n item.doc.forEach((ozdFile) => {\n acc[currentIndex]!.push(documentIndexMap[ozdFile.docCode]!);\n });\n });\n\n return acc;\n }, [] as Array<Array<number>>)\n ), [documentIndexMap, documentInfo]);\n\n // 모든 서식이 완료되었는지 확인\n const isAllComplete = useMemo(() => (documentInfo.every(i => i.complete)), [documentInfo]);\n\n return {\n setDocumentInfo,\n documentInfo,\n documentList,\n documentTemplateMap,\n documentIndexMap,\n nameTemplateMap,\n groupIndexes,\n isAllComplete\n }\n}","import { useCallback, useEffect } from 'react';\n\nimport { OZViewerEvent } from \"../types\"\n\ntype Props<T, R = void> = {\n event: OZViewerEvent;\n handler: (e: CustomEvent<T>) => Promise<R>;\n};\n/**\n * OZ 뷰어 콜백 이벤트를 구독해주는 Hook\n */\nexport function useOzEventListener<T, R = void>({ event, handler }: Props<T, R>) {\n const handleEvent = useCallback(\n async (e: Event) => {\n const customEvent = e as CustomEvent<T>;\n\n return await handler(customEvent);\n },\n [handler]\n );\n\n useEffect(() => {\n window.addEventListener(event, handleEvent);\n\n return () => {\n window.removeEventListener(event, handleEvent);\n };\n }, [handleEvent, event]);\n}\n","/**\n * OZ 뷰어에 관련된 이벤트 목록\n */\nexport enum OZViewerEvent {\n /**\n * 보고서 생성 단계별로 발생하는 이벤트\n * - `OZViewerProgressEvent` 이벤트와 매칭된다\n * - `viewer.progresscommand=true` 설정이 필요하다\n * - `OZViewerProgressEvent`와 매칭된다\n * - 모든 문서가 로딩되면 `OZReportCreated` 이벤트를 트리거시켜주어야 한다\n */\n OZProgressCommand = 'OZProgressCommand',\n /**\n * 에러 발생 시 발생하는 이벤트\n * - `viewer.errorcommand=true` 설정이 필요하다\n * - `OZViewerErrorEvent`와 매칭된다\n */\n OZErrorCommand = 'OZErrorCommand',\n /**\n * 화면에 표시되는 페이지가 변경된 후 발생하는 이벤트\n * - `viewer.pagechangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZPageChangeCommand = 'OZPageChangeCommand',\n /**\n * 화면에 표시되는 보고서가 변경된 후 발생하는 이벤트\n * - `viewer.reportchangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZReportChangeCommand = 'OZReportChangeCommand',\n /**\n * `OZUserEvent` _TriggerOCXUserEvent 함수 실행 시 발생하는 이벤트\n * - `OZViewerUserEvent`와 매칭된다\n */\n OZUserEvent = 'OZUserEvent',\n /**\n * `OZPageBindCommand` 페이지가 바인딩된 후 발생하는 이벤트\n * - `viewer.pagebindcommandinterval` 파라미터에서 설정한 주기별로 동작\n * - ex) `viewer.pagebindcommandinterval=500`\n * - `OZViewerPageBindEvent`와 매칭된다\n */\n OZPageBindCommand = 'OZPageBindCommand',\n /**\n * 사용자가 입력 컴포넌트를 클릭하거나 값을 변경하여 이벤트가 실행된 경우 발생되는 이벤트'\n * - 호환되는 이벤트\n * - `OnClick`\n * - `OnFinish`\n * - `OnFocus`\n * - `OnKillFocus`\n * - `OnPause`\n * - `OnPlay`\n * - `OnStop`\n * - `OnValueChanged` \n * - `eform.inputeventcommand=true` 설정이 필요하다\n * - `OZEFormInputEvent`와 매칭된다\n */\n OZEFormInputEventCommand = 'OZEFormInputEventCommand',\n /**\n * 보고서 저장 시 발생하는 이벤트\n * - `OZExportEvent`와 매칭된다\n */\n OZExportCommand = 'OZExportCommand',\n\n /**\n * 오즈뷰어, (오즈전용)PDF 뷰어 내 버튼 클릭시 발생하는 이벤트\n * - `OZBtnTouchEvent`와 매칭된다\n */\n OZBtnTouchEvent = 'btnTouchEvent',\n\n /**\n * `OZProgressCommand` 이벤트가 문서 갯수만큼 불리면 이 이벤트를 트리거한다\n * - 웹에서 직접 트리거 하는 이벤트\n */\n OZReportCreated = 'OZReportCreated',\n}\n\n/**\n * TriggerExternal에 사용할 param1인자를 정의한 enum\n * - GetDraftData 중간저장 서명이미지 추출\n * - cropimage 서명이미지 크롭\n */\nexport enum OZTriggerExternalEvent {\n GetDraftData = 'getDraftData',\n CropImage = 'cropimage'\n}\n\n/**\n * `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZProgressCommand, (e) => { console.log(e.detail); });\n * ```\n *\n * `step과` `state`는 step => state 방식으로 진행된다\n *\n * 예시\n * ```bash\n * # step0 뷰어실행\n * [step=0][state=0] # 뷰어 실행 시작\n * [step=0][state=1] # 뷰어 실행 완료\n * # step2 보고서 템플릿 생성\n * [step=1][state=0] # 보고서 템플릿 생성 시작\n * [step=1][state=1] # 보고서 템플릿 생성 완료\n * ```\n */\nexport type OZViewerProgressEvent = {\n /**\n * 보고서 생성 단계\n * - 0 : 뷰어 실행 옵션 설정\n * - 1 : 보고서 파일 다운로드\n * - 2 : 보고서 템플릿 생성\n * - 3 : 데이터 다운로드\n * - 4 : 보고서 바인딩\n */\n step: '0' | '1' | '2' | '3' | '4';\n /**\n * 보고서 생성 상태\n * - 1 : 시작\n * - 2 : 완료\n */\n state: '1' | '2';\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * `OZViewerEvent.OZErrorCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZErrorCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerErrorEvent = {\n /** 에러 메시지 코드 */\n code: string;\n /** 에러 기본 메시지 */\n message: string;\n /** 에러 상세 메시지 */\n detailmessage: string;\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * 두 이벤트의 공용 타입\n * - `OZViewerEvent.OZPageChangeCommand` 이벤트의 `e.detail` 타입 정의\n * - `OZViewerEvent.OZReportChangeCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageChangeCommand, (e) => { console.log(e.detail); });\n * window.addEventListener(OZViewerEvent.OZViewerChangeCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerChangeEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: number;\n};\n\n/**\n * `OZViewerEvent.OZUserEvent` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZUserEvent, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerUserEvent = {\n /** _TriggerOCXUserEvent 함수에서 전달한 첫 번째 값 */\n param1: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 두 번째 값 */\n param2: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 세 번째 값 */\n param3: string;\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n};\n\n/**\n * `OZViewerEvent.OZPageBindCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageBindCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerPageBindEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 바인딩된 페이지 번호 */\n pagecount: string;\n};\n\nexport type OZEFormInputEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 이벤트가 발생한 컴포넌트의 FormID. FormID가 설정되지 않은 경우 컴포넌트의 이름이 리턴됨 */\n formid: string;\n eventname: string;\n mainscreen: boolean;\n}\n\nexport type OZExportEvent = {\n /**\n * 저장 성공 여부\n * - `0` 실패\n * - `1` 성공\n */\n code: \"0\" | \"1\"\n /** 파일 경로 */\n path: string;\n /** 파일 이름 */\n filename: string;\n /** 저장된 페이지 수. 여러 페이지의 보고서를 한 페이지로 저장한 경우에는 1이 리턴됨 */\n pagecount: string;\n /**\n * 뷰어가 실제 저장한 모든 파일의 경로와 이름.\n * \n * 파일이 여러 개일 경우 `|`를 구분자로 하여 리턴됨\n */\n filepaths: string;\n}\n\n/**\n * 상단 전체목록 보기 버튼 내 서식 클릭이벤트\n * - 선택된 서식의 텍스트가 btnID로 넘어온다\n */\nexport type CategoryEvent = {\n type: \"category\";\n /** 자유 입력 가능한 버튼 ID */\n btnID: string;\n};\n\n/**\n * 상단 버튼 클릭 이벤트(전체목록 버튼 제외)\n * - 예: 나가기 버튼\n */\nexport type TopEvent = {\n type: \"top\";\n btnID: \"btnExit\";\n};\n\n/**\n * 성명,서명, 덧쓰기 관련 버튼 클릭 이벤트\n * - `signatureInProgress` 서명 바로가기 버튼\n * - `signatureInMissing` 미입력 항목 입력하기 버튼(느낌표 버튼)\n * - `signatureComplete` 청약문서 최종 확인하기\n */\nexport type SignatureEvent = {\n type: \"signature\";\n btnID: \"signatureInProgress\" | \"signatureInMissing\" | \"signatureComplete\";\n};\n\n/**\n * pdf 뷰어 내 버튼 클릭 이벤트\n * - `modify` 성명 서명 덧쓰기 수정하러 가기\n * - `submit` 최종 제출하기\n */\nexport type PdfEvent = {\n type: \"pdf\";\n btnID: \"modify\" | \"submit\";\n};\n\n/**\n * comment(형광펜) 관련 버튼 클릭 이벤트\n * - `yellow` 노랑색 형광펜 활성화\n * - `pink` 분홍색 형광펜 활성화\n * - `green` 초록색 형광펜 활성화\n * - `eraser` 지우개 활성화\n * - `disable` 형광펜 모드 종료\n */\nexport type CommentEvent = {\n type: \"comment\";\n btnID: \"yellow\" | \"pink\" | \"green\" | \"eraser\" | \"disable\";\n};\n\n/**\n * OZ 문서 시스템 내 버튼 클릭 이벤트 통합 타입\n *\n * type(카테고리)에 따라 btnID 값이 다르게 제한됩니다.\n */\nexport type OZBtnTouchEvent =\n | CategoryEvent\n | TopEvent\n | SignatureEvent\n | PdfEvent\n | CommentEvent;\n\n/**\n * 문서코드별 입력 데이터 및 추가 파라미터 매핑 타입\n *\n * 각 문서코드에 대해 `inputJson` (임의의 key-value 쌍)과\n * \n * 선택적으로 `extraParam` (기타 추가 파라미터)을 포함하는 객체입니다.\n *\n * 예시:\n * ```javascript\n * {\n * A0010: {\n * inputJson: {\n * A0010_mynm_sg: 'data:image/png;base64,iVBORw0K...', // 예: 이미지 데이터\n * A0010_mysg_sign: 'data:image/png;base64,iVBORw0KG...', // 예: 이미지 데이터\n * custom_field: 'some value', // 임의의 데이터도 가능\n * },\n * args: [`roleCd=11,21`]\n * extraParam: [`viewer.zoom=137`]\n * },\n * C0401: {\n * inputJson: {\n * mynm_sg: 'data:image/png;base64,iVBORw0K...', // 예: 이미지 데이터\n * mysg_sign: 'data:image/png;base64,iVBORw0KG...', // 예: 이미지 데이터\n * another_field: 'another value', // 임의의 데이터\n * }\n * },\n * }\n * ```\n */\nexport type ExtraDataType = Record<string, {\n /** connection.inputJson으로 전달할 `{ \"key1\": \"value1\", \"key2\": \"value2\" }` 형식의 데이터 (예: 문자열, base64 이미지 등) */\n inputJson?: Record<string, string>;\n /** connection.arg로 전달할 `[\"key1=value1\", \"key2=value2\"]` 형식의 데이터 */\n args?: string[];\n /** 추가 파라미터 목록 (선택 사항) */\n extraParam?: string[];\n}>;\n","\nimport type { FormInfo } from '../types';\n\n/**\n * 문서 데이터에 페이지 범위를 채워주는 함수\n * @param {Array} data - 문서 그룹 데이터\n * @param {Array<number>} pages - 각 문서의 페이지 수\n * @returns {Array} - startPage, endPage가 채워진 새 데이터\n */\nexport function categorizeByPageRange(data: FormInfo[], pageCounts: number[]) {\n let currentPage = 1;\n let pageIndex = 0;\n\n // 깊은 복사로 원본 변형 방지\n const result = DeepCopy(data);\n\n result.forEach(group => {\n group.startPage = currentPage;\n\n group.doc.forEach(doc => {\n const pageCount = pageCounts[pageIndex++]!;\n doc.startPage = currentPage;\n doc.endPage = currentPage + pageCount - 1;\n currentPage += pageCount;\n });\n\n group.endPage = group.doc[group.doc.length - 1]!.endPage;\n });\n\n return result;\n}\n\n\n/**\n * 주어진 파일 경로에서 파일 이름만 추출합니다.\n * @param filePath 파일 경로 (예: `/a/b/c/file.ext`)\n * @returns 파일 경로에서 추출한 파일 이름 (확장자 제외, 예: `file`)\n * @throws {Error} 유효하지 않은 파일 경로일 경우 예외 처리\n */\nexport function extractFileName(filePath: string): string {\n // 예외 처리: filePath가 null, undefined, 빈 문자열이거나 문자열이 아닌 경우\n if (!filePath || typeof filePath !== 'string') {\n throw new Error('유효한 파일 경로를 입력해주세요.');\n }\n\n // 파일 경로에서 파일 이름만 추출 (경로와 확장자 제거)\n const fileName = filePath.replace(/^.*\\/|(\\.[^/.]+)$/g, '');\n\n // 예외 처리: 파일 이름이 없는 경우\n if (!fileName) {\n throw new Error('파일 경로에서 파일 이름을 추출할 수 없습니다.');\n }\n\n return fileName;\n}\n\nexport function getFileListByGlobalIndex(index: number, data: FormInfo[]) {\n let currentIndex = 0;\n\n for (const template of data) {\n const fileCount = template.doc.length;\n\n if (index >= currentIndex && index < currentIndex + fileCount) {\n // index가 이 서식의 파일 범위 안에 있음\n return template;\n }\n\n currentIndex += fileCount;\n }\n\n return null;\n}\n\n/**\n * 비동기 처리를 일정 시간 지연시키는 함수\n * @param ms - 지연 시간 (밀리초). 기본값은 10ms\n */\nexport async function sleep(ms = 10): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function PromiseWithResolvers<T>() {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: unknown) => void;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n}\n\n/**\n * 주어진 입력값이 배열이 아니면 빈 배열을 반환하고, 배열이면 깊은 복사하여 반환합니다.\n *\n * @param arg - 입력값으로, 배열일 수도 있고 아닐 수도 있습니다.\n * @returns 주어진 입력값이 배열이면 깊은 복사본을 반환하고, 배열이 아니면 빈 배열을 반환합니다.\n */\nexport function ensureArray<T>(arg?: T[]): T[] {\n return (Array.isArray(arg) ? DeepCopy(arg) : []);\n}\n\n/**\n * 주어진 객체를 깊은 복사하여 새로운 복사본을 반환합니다.\n * - 내부 유틸용이라 export 하지 않았음\n *\n * @param arg - 깊은 복사를 원하는 객체\n * @returns 주어진 객체의 깊은 복사본\n */\nfunction DeepCopy<T>(arg: T): T {\n return JSON.parse(JSON.stringify(arg)) as T;\n}\n","import { Bridge } from '../../../bridge';\nimport { fpInfo, policyNumber } from '../../constant';\nimport { OZViewerEvent } from '../../types';\nimport { PromiseWithResolvers } from '../common-util';\n\n/**\n * OZ 뷰어 함수를 단순 래핑한 브릿지 유틸\n */\n\n/**\n * OZ Viewer 생성 함수\n * 1. `CreateReport` 함수 호출하여 OZ 리포트 생성\n * 2. `OZProgressCommand` 이벤트가 `ozd` 개수만큼 발생\n * 3. `OZProgressCommand` 이벤트 내부에서 `OZReportCreated` 이벤트 발행\n * 4. `CreateOzViewer` 이벤트가 종료\n */\nexport async function CreateOzViewer(ozParam: string[]) {\n const { promise, resolve } = PromiseWithResolvers();\n window.addEventListener(\n OZViewerEvent.OZReportCreated,\n // OZReportCreated가 트리거되면 promise resolve 처리\n (e: Event) => resolve((e)),\n // 이벤트 리스너는 한 번만 실행되도록 설정\n { once: true }\n )\n await Bridge.native.createOZViewer({ param: ozParam.join(\"\\n\") });\n\n return await promise;\n}\n\n/**\n * 특정 페이지로 스크롤 이동\n */\nexport async function MovePage(page: number) {\n return await Bridge.nativeOz.script({ command: `movepage=${page}` });\n}\n\n/**\n * 현재 페이지 번호를 구한다(one base index)\n */\nexport async function getCurrentPage() {\n const { data } = await Bridge.nativeOz.getInformation<string>({ command: `CURRENT_PAGE` })\n\n return Number(data);\n}\n\n/**\n * 랜딩되어있는 보고서들의 전체 페이지 수\n */\nexport const getTotalPageMemo = (() => {\n // ✅ 전체 페이지수를 캐싱\n let cache: Promise<number> | null = null;\n\n async function getTotalPage(): Promise<number> {\n if (cache) {\n // 캐시에 이미 결과(Promise)가 있다면 재사용\n return cache;\n }\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n cache = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation({ command: 'TOTAL_PAGE' });\n\n return Number(data);\n } catch (e) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache = null;\n throw e;\n }\n })();\n\n return await cache;\n }\n\n // 캐시 초기화 함수\n getTotalPage.clearCache = () => {\n cache = null;\n };\n\n return getTotalPage;\n})();\n\n/**\n * 랜딩되어있는 보고서의 총 갯수(ozd 파일의 갯수)\n */\nexport const getReportCountMemo = (() => {\n // ✅ 보고서의 총 갯수(ozd 파일의 갯수)를 캐싱\n let cache: Promise<number> | null = null;\n\n async function getReportCount(): Promise<number> {\n if (cache) {\n return await cache;\n }\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n cache = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation<string>({ command: 'REPORT_COUNT' });\n\n return Number(data);\n } catch (e) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache = null;\n throw e;\n }\n })();\n\n return await cache;\n }\n\n // 캐시 초기화 함수\n getReportCount.clearCache = () => {\n cache = null;\n };\n\n return getReportCount;\n})();\n","import { MovePage } from '../oz-wrapper-util';\n\nimport type { CategoryEvent, FormInfo } from '../../../types';\n\n/**\n * 전체 서식목록의 하위 버튼 클릭 이벤트 핸들러\n * - 해당 서식을 누르면 시작 페이지로 이동한다\n */\nexport async function CategoryHandler(documentInfo: FormInfo[], { type, btnID }: CategoryEvent) {\n if (type !== 'category') {\n throw `Unexpected Type ${type}`;\n }\n\n // 전체 서식 목록에서 특정 서식 바로가기 버튼 클릭 시\n const target = documentInfo.find((i) => i.name === btnID);\n if (!target) {\n // 기타 확인되지 않은 유형의 에러 처리\n throw `Unexpected btnID ${target}`;\n }\n\n // 해당 서식 페이지로 이동\n await MovePage(target.startPage);\n}\n","import { Bridge } from '../../../../bridge';\n\nimport type { TopEvent } from '../../../types';\n\n\n/**\n * 상단 버튼 중 '전체 서식목록'을 제외한 다른 버튼 클릭 이벤트 핸들러\n * - 현재는 나가기 버튼밖에 없음\n */\nexport async function TopHandler({ type, btnID }: TopEvent) {\n if (type !== 'top') {\n throw `Unexpected Type ${type}`;\n }\n\n if (btnID === 'btnExit') {\n // 나가기 버튼 클릭이벤트\n await Bridge.native.hideOZViewer();\n\n } else {\n // 기타 확인되지 않은 유형의 에러 처리\n throw `Unexpected btnID ${btnID}`;\n }\n\n}","import { Bridge } from '../../../../bridge';\nimport { commentPenEraser, commentPenGreen, commentPenPink, commentPenYellow } from '../../../constant';\nimport { sleep } from '../../common-util';\n\nimport type { CommentEvent } from '../../../types';\n\n/**\n * 주석 모드 (형광펜 버튼) 클릭 이벤트 핸들러\n */\nexport async function CommentHandler({ type, btnID }: CommentEvent) {\n if (type !== 'comment') {\n throw `Unexpected Type ${type}`;\n }\n\n if (btnID === 'yellow') {\n // 형광펜 버튼 노란색\n await setEnableCommentMode('yellow');\n\n } else if (btnID === 'pink') {\n // 형광펜 버튼 분홍색\n await setEnableCommentMode('pink');\n\n } else if (btnID === 'green') {\n // 형광펜 버튼 초록색\n await setEnableCommentMode('green');\n\n } else if (btnID === 'eraser') {\n // 형광펜 버튼 지우개\n await setEnableCommentMode('eraser');\n\n } else if (btnID === 'disable') {\n // 형광펜 모드 종료\n await setDisableCommentMode();\n\n } else {\n // 기타 확인되지 않은 유형의 에러 처리\n throw `Unexpected btnID ${btnID}`;\n }\n}\n\n\n\n/**\n * 현재 모드가 코멘트(형광펜) 모드인지 확인\n * - 코멘트 모드일 경우 true\n * - 편집 모드 등 다른 모드일 경우 false\n */\nexport async function isCommentMode() {\n const { data } = await Bridge.nativeOz.getInformation<\"comment\" | \"input\">({\n command: `COMMENT_MODE`\n });\n\n return data === \"comment\";\n}\n\n/**\n * 공통 코멘트 모드 설정 함수\n * - 현재 모드가 코멘트 모드가 아니면 comment viewer 설정 추가\n * - 전달된 펜 설정을 포함한 param을 구성하여 실행\n * @param penConfig 사용할 펜 설정 배열 (e.g., commentPenYellow 등)\n */\nasync function setCommentMode(penConfig: string[]) {\n const command = `mode_comment_all`;\n\n // 현재 코멘트 모드 여부 확인\n const commentEnabled = await isCommentMode();\n\n // 코멘트 모드가 아니라면 viewer 설정을 추가하고, 펜 설정과 함께 param 구성\n const param = [\n ...(commentEnabled ? [] : [`viewer.screentool=comment`]),\n ...penConfig\n ].join(\"\\n\");\n\n // 약간의 대기 시간 부여\n await sleep();\n\n // 코멘트 모드로 전환 및 설정 적용\n return await Bridge.nativeOz.scriptEx({ command, param });\n}\n\n\ntype commentPenType = \"yellow\" | \"pink\" | \"green\" | \"eraser\";\n/**\n * 코멘트 모드를 활성화하며 특정 펜 타입을 적용\n * \n * @param type 사용할 코멘트 펜 타입\n * - `yellow` (기본값)\n * - `pink`\n * - `green`\n * - `eraser` (지우개)\n */\nexport async function setEnableCommentMode(type: commentPenType = \"yellow\") {\n let param: string[];\n\n // 펜 타입에 따라 해당 설정을 선택\n if (type === \"yellow\") {\n param = commentPenYellow;\n } else if (type === \"pink\") {\n param = commentPenPink;\n } else if (type === \"green\") {\n param = commentPenGreen;\n } else {\n param = commentPenEraser;\n }\n\n // 공통 코멘트 모드 설정 함수 호출\n return await setCommentMode(param);\n}\n\n/**\n * 코멘트 모드 비활성화 (편집 모드로 전환)\n * - 현재 코멘트 모드 상태 여부와 관계없이 항상 편집 모드로 전환함\n */\nexport async function setDisableCommentMode() {\n const command = `mode_input_all`;\n\n return await Bridge.nativeOz.script({ command });\n}","import { Bridge } from '../../../../bridge';\n\nimport type { PdfEvent } from '../../../types';\n\n/**\n * PDF 뷰어 내 버튼 클릭 이벤트 핸들러\n * - 수정하기 버튼\n * - PDF 뷰어를 닫는다\n * - 최종 제출하기 버튼\n * - PDF 뷰어를 닫는다\n * - OZ 뷰어를 닫는다\n * - 최종제출 화면으로 route\n */\nexport async function PdfHandler({ type, btnID }: PdfEvent) {\n if (type !== 'pdf') {\n throw `Unexpected Type ${type}`;\n }\n\n if (btnID === 'modify') {\n // PDF 뷰어에서 수정하기 버튼을 누른경우\n\n // PDF 뷰어를 닫는다\n await Bridge.nativeOz.hideOzPdfViewer()\n } else if (btnID === 'submit') {\n // PDF 뷰어에서 최종제출 버튼을 누른경우\n\n // PDF 뷰어를 닫는다\n await Bridge.nativeOz.hideOzPdfViewer();\n // 오즈뷰어도 닫는다\n await Bridge.native.hideOZViewer();\n } else {\n // 기타 확인되지 않은 유형의 에러 처리\n throw `Unexpected btnID ${btnID}`;\n }\n\n}\n","import { Bridge } from '../../../bridge';\nimport { sleep } from '../common-util';\n\nimport { getReportCountMemo } from './oz-wrapper-util';\n\n/**\n * 서식 검증 시, 빈 서식에 포커스를 줄지 제어하는 브릿지 유틸\n */\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 포커스 설정 여부를 지정\n * \n * @param enable - true면 포커스 활성화, false면 비활성화\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nasync function setFocusOnValidation(enable: boolean, reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n const expectedValue = enable ? '1' : '0';\n\n const { data: prev } = await Bridge.nativeOz.getGlobal({ key: 'chkFlag', docIndex: 0 });\n\n // 첫번째 doc에 대해서 기 입력된 값을 검사해서 일치하면 조기탈출\n if (prev === expectedValue) {\n return;\n }\n\n for (let i = 0; i < count; i++) {\n await sleep();\n await Bridge.nativeOz.setGlobal({ key: 'chkFlag', value: expectedValue, docIndex: i });\n }\n\n return;\n}\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 자동으로 포커스를 맞추도록 설정\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function enableFocusOnValidation(reportCount?: number) {\n return setFocusOnValidation(true, reportCount);\n}\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 포커스가 가지 않도록 설정\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function disableFocusOnValidation(reportCount?: number) {\n return setFocusOnValidation(false, reportCount);\n}\n","import { Bridge } from '../../../bridge';\nimport { sleep } from '../common-util';\n\nimport { getTotalPageMemo } from './oz-wrapper-util';\n\n/**\n * OZ 서식 검증용 브릿지 유틸\n */\n\n/**\n * 유효성을 체크할 doc들의 index를 배열로 입력받는다\n *\n * 모두 유효하면 true를 리턴한다\n *\n * documentInfo의 complete를 계산할때 사용한다\n *\n * 서명패드가 열려있는 상태에서 INPUT_CHECK_VALIDITY로 검사하면 서명패드가 꺼져서 onValueChange에서는 INVALID_INFO_JSON을 사용한다\n */\nexport async function checkDocumentsValidityByIndex(indexList: number[]) {\n // INVALID_INFO_JSON_AT은 valid한 경우 ''를 리턴한다\n const VALID = '';\n for (let i = 0; i < indexList.length; i++) {\n await sleep();\n const command = `INVALID_INFO_JSON_AT=${indexList[i]}`;\n const { data } = await Bridge.nativeOz.getInformation<string>({ command });\n\n if (data !== VALID) {\n // 유효하지 않으면 조기탈출\n return false;\n }\n }\n\n return true\n}\n\n/**\n * 지정된 페이지 범위에 대해 유효성 검사를 수행합니다.\n * \n * 유효성 검사는 1페이지부터 지정된 마지막 페이지까지 진행되며,\n * 각 페이지 검사 사이에 기본 지연(sleep)을 추가하여 처리 속도를 제어합니다.\n * - pageChange 이벤트 내부에서는 현재 페이지 이전까지만 검사\n * - 서명바로가기, 미입력 서명 바로가기, 청약문서 최종 확인하기 버튼을 눌렀을때는 전체 페이지 검사\n * \n * @param pageCount - 유효성 검사를 수행할 페이지의 총 개수. (생략하면 자동으로 전체 페이지 수를 계산하여 사용)\n * @returns 모든 페이지가 유효한 경우 true, 하나라도 유효하지 않으면 false를 반환합니다.\n */\nexport async function validateAllPages(pageCount?: number) {\n // pageCount가 주어지지 않으면 전체 페이지 수를 계산하여 사용\n const count = pageCount ?? await getTotalPageMemo();\n\n for (let i = 1; i <= count; i++) {\n // 각 페이지 검사 사이에 지연을 추가\n await sleep();\n // 캐시 기반 validation 검사\n const isValid = await checkValidPageMemo(i);\n\n // 페이지 유효성 검사가 실패하면 즉시 종료\n if (!isValid) {\n return false;\n }\n }\n\n // 모든 페이지가 유효한 경우 true 반환\n return true;\n}\n\n\n/**\n * 페이지 유효성 검사 결과를 캐싱하는 유틸리티\n *\n * - 동일 페이지에 대한 중복 호출을 방지\n * - validation 결과가 false인 경우에는 캐시에 저장하지 않음\n */\nexport const checkValidPageMemo = (() => {\n // ✅ 페이지 번호를 키로 사용하여 Promise<boolean> 형태로 결과를 캐싱\n const cache = new Map<number, Promise<boolean>>();\n\n /**\n * 주어진 페이지가 유효한지 검사\n *\n * @param page 검사할 페이지 번호\n * @returns 페이지 유효 여부 (Promise<boolean>)\n */\n async function checkValidPage(page: number): Promise<boolean> {\n const cached = cache.get(page);\n if (cached) {\n // 캐시에 이미 결과(Promise)가 있다면 재사용\n return cached;\n }\n\n const VALID = 'valid';\n const command = `INPUT_CHECK_VALIDITY_PAGE_AT=${page}`;\n\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n const promise = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation<string>({ command });\n const isValid = data === VALID;\n\n // ❌ 유효하지 않은(false) 결과는 캐시에 저장하지 않음\n if (!isValid) {\n cache.delete(page);\n }\n\n return isValid;\n } catch (err) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache.delete(page);\n throw err;\n }\n })();\n\n // ⏳ 진행 중인 Promise를 캐시에 저장 (중복 호출 방지)\n cache.set(page, promise);\n\n // 결과 반환\n return promise;\n }\n\n /**\n * 전체 캐시를 초기화합니다.\n */\n checkValidPage.clearCache = () => {\n cache.clear();\n };\n\n /**\n * 특정 페이지의 캐시만 삭제합니다.\n * \n * @param page 삭제할 페이지 번호\n */\n checkValidPage.clearCacheByPage = (page: number) => {\n cache.delete(page);\n };\n\n return checkValidPage;\n})();\n","import { Bridge } from '../../../../bridge';\nimport { commonPdfExportParam, policyNumber } from '../../../constant';\nimport { OZViewerEvent } from '../../../types';\nimport { PromiseWithResolvers } from '../../common-util';\nimport { disableFocusOnValidation, enableFocusOnValidation } from '../focus-util';\nimport { getReportCountMemo, getTotalPageMemo } from '../oz-wrapper-util';\nimport { checkValidPageMemo, validateAllPages } from '../validation-util';\n\nimport type { OZExportEvent, SignatureEvent } from '../../../types';\n\n/**\n * 성명, 서명, 덧쓰기 바로가기, 미입력 서명 바로가기, 청약 문서 최종 확인 버튼 클릭 이벤트 핸들러\n * - 서명 바로가기 버튼 이벤트 핸들러\n * - 미입력된 첫번째서명으로 이동 및 사인패드 오픈\n * - 미입력 항목 입력하기 버튼 이벤트 핸들러\n * - 미입력된 첫번째서명으로 이동 및 사인패드 오픈\n * - 청약문서 최종 확인하기 버튼 이벤트 핸들러\n * - 유효성 검사 후 PDF export 및 PDF 뷰어 오픈\n */\nexport async function SignatureHandler({ type, btnID }: SignatureEvent) {\n if (type !== 'signature') {\n throw `Unexpected Type ${type}`;\n }\n\n if (btnID === 'signatureInProgress') {\n // 서명 바로가기 버튼 눌렀을때\n await SignatureInProgressHandler();\n\n } else if (btnID === 'signatureInMissing') {\n // 미입력 항목 입력하기 버튼(느낌표 버튼) 눌렀을때\n await SignatureInMissingHandler();\n\n } else if (btnID === 'signatureComplete') {\n // 청약문서 최종 확인하기 버튼 눌렀을때\n await SignatureCompleteHandler();\n\n } else {\n // 기타 확인되지 않은 유형의 에러 처리\n throw `Unexpected btnID ${btnID}`;\n }\n}\n\n/**\n * 서명 바로가기 버튼 눌렀을때\n */\nasync function SignatureInProgressHandler() {\n // ozd 갯수 가져오기\n const reportCount = await getReportCountMemo();\n // 전체 페이지 갯수 가져오기\n const pageCount = await getTotalPageMemo();\n\n // 유효성 검사 시 미입력된 컴포넌트에 자동으로 포커스를 맞추도록 설정\n await enableFocusOnValidation(reportCount);\n\n // ozd를 처음부터 돌면서 유효하지 않은 문서가 있는지 찾는다\n await validateAllPages(pageCount);\n}\n/**\n * 미입력 항목 입력하기 버튼(느낌표 버튼) 눌렀을때\n */\nasync function SignatureInMissingHandler() {\n const { data: { result } } = await Bridge.nativeOz.showAlert({\n title: '입력하지 않은 항목이 있습니다',\n message: '해당 항목으로 이동하여 입력을 완료해주세요.',\n buttons: {\n close: true,\n main: '미입력 항목 입력하기'\n }\n });\n if (result === 'main') {\n // 미입력한 서명을 찾아서 포커스\n return await SignatureInProgressHandler();\n }\n // 닫기버튼을 누른경우 아무것도 안함\n\n return;\n\n}\n\n/**\n * 청약문서 최종 확인하기 버튼 눌렀을때\n */\nasync function SignatureCompleteHandler() {\n\n try {\n await Bridge.native.showLoader();\n\n // 유효성 검사 전 캐시 초기화\n // `INPUT_CHECK_VALIDITY_PAGE_AT` 캐시 초기화\n checkValidPageMemo.clearCache();\n // `REPORT_COUNT` 캐시 초기화\n getReportCountMemo.clearCache();\n // `TOTAL_PAGE` 캐시 초기화\n getTotalPageMemo.clearCache();\n\n // ozd 갯수 가져오기\n const reportCount = await getReportCountMemo();\n // 전체 페이지 갯수 가져오기\n const pageCount = await getTotalPageMemo();\n\n // 유효성 검사 시 미입력된 컴포넌트에 포커스가 가지 않도록 설정\n await disableFocusOnValidation(reportCount);\n // PDF export 전 최종 유효성 검사\n const isAllValid = await validateAllPages(pageCount);\n if (!isAllValid) {\n throw \"MissingAlert\"\n }\n\n // 유효성 검사 통과 후 PDF export 및 PDF 뷰어 오픈\n const filePath = await SaveTotalPdf();\n await Bridge.nativeOz.createOzPdfViewer({ filePath });\n\n } catch (e) {\n if (e === \"MissingAlert\") {\n // 미입력항목이 있는경우 느낌표 버튼을 클릭한것과 동일한 핸들러 처리\n await SignatureInMissingHandler();\n } else {\n alert('PDF export 중 오류가 발생하였습니다')\n }\n } finally {\n await Bridge.native.hideLoader();\n }\n}\n\n\n\n/**\n * PDF 저장을 비동기적으로 처리하고, 저장된 파일 경로를 반환하는 함수\n */\nexport async function SaveTotalPdf() {\n // CustomEvent로부터 전달될 파일 경로를 기다리기 위한 Promise 생성\n const { promise, resolve } = PromiseWithResolvers<string>();\n\n // OZExportCommand 이벤트가 발생하면, 파일 경로를 resolve하여 Promise 완료\n window.addEventListener(\n OZViewerEvent.OZExportCommand,\n // 이벤트를 CustomEvent로 타입 캐스팅하고, detail에서 파일 경로 추출\n (e: Event) => resolve((e as CustomEvent<OZExportEvent>).detail.filepaths),\n // 이벤트 리스너는 한 번만 실행되도록 설정\n { once: true }\n );\n\n // 전체 페이지 수 가져오기\n const totalPage = await getTotalPageMemo();\n\n // OZ 브릿지를 통해 PDF 저장 명령 실행\n await Bridge.nativeOz.savePdf({\n // PDF 저장은 증번폴더/파일이름.pdf로 생성\n policyNumber,\n param: [\n // 저장할 파일명 설정\n `pdf.filename=${'total.pdf'}`,\n // 1페이지부터 마지막 페이지까지 저장\n `export.pages=${1}-${totalPage}`,\n // 공통 PDF 내보내기 파라미터 추가\n ...commonPdfExportParam\n ].join('\\n')\n });\n\n // OZExportCommand 이벤트로부터 전달된 파일 경로를 기다림\n const filepath = await promise;\n\n // 최종적으로 파일 경로 반환\n return filepath;\n}","import { Bridge } from '../../../bridge';\nimport { fpInfo, policyNumber } from '../../constant';\n\nimport type { FormInfo } from '../../types';\n\n/**\n * ozd, 폰트 등 App 내 리소스를 fetch하는 브릿지 유틸\n */\n\n/**\n * OZD 목록을 다운받는 브릿지\n */\nexport async function fetchDocument(options: Array<FormInfo>) {\n // 브릿지에 다운로드 요청\n const { data: result } = await Bridge.native.downloadDocument({ data: options, policyNumber, fpInfo });\n\n // start,end 페이지 매핑\n return result.data.map((i) => ({ ...i, startPage: 0, endPage: 0 }));\n}\n\n/**\n * App에 설치된 폰트를 Oz Param 형식으로 불러오는 브릿지\n */\nexport async function fetchFont() {\n const { data: fontMap } = await Bridge.native.getOzFontParam();\n\n const fontParms = Object.keys(fontMap).map((i) => `font.${i}=${fontMap[i]}`);\n\n return fontParms;\n}\n\nfunction base64ToBlob(base64: string): Blob {\n const [meta, data] = base64.split(',');\n if (meta === undefined) {\n throw new Error(`unexpected sing image ${base64}`)\n }\n const mime = meta.match(/:(.*?);/)?.[1] || '';\n const bytes = Uint8Array.from(atob(data || base64), c => c.charCodeAt(0));\n\n return new Blob([bytes], { type: mime });\n}\n\n\n/**\n * 비정형 서버에 성명,서명, 덧쓰기 이미지를 업로드한다\n */\nexport async function postFiletoDud(imageStr: string) {\n const formData = new FormData();\n formData.append(\"data\", base64ToBlob(imageStr), \"test.png\");\n formData.append(\"fileIdentifierValue\", \"string\");\n formData.append(\"fileExtendContent1\", \"string\");\n formData.append(\"fileExtendContent2\", \"string\");\n formData.append(\"preservationTerm\", \"1\");\n formData.append(\"fileType\", \"png\");\n\n // 비동기 호출\n const response = await fetch(\"/api/v1/post/file\", {\n headers: {\n \"x-channel-appversion\": \"3.1\",\n \"x-channel-carriername\": \"SK\",\n \"x-channel-deviceid\": \"deviceid\",\n \"x-channel-devicemodel\": \"iPHONE13\",\n \"x-channel-formfactor\": \"Phone\",\n \"x-channel-loginchannel\": \"DSP\",\n \"x-channel-logintype\": \"ONPA_PIN\",\n \"x-channel-networktype\": \"LTE\",\n \"x-channel-platformversion\": \"15.4.1\",\n \"x-channel-screenid\": \"ScreenId\",\n \"x-dud-authorization\": \"Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXNWRtc1g1MkVWZGV0YThJRy90YmlZY281bnVCdzRZOXhGZjlWakZzdWxnbU00YnkiLCJpYXQiOjE3NjEwNDMyNjgsImV4cCI6MTc2NjI5OTI2OH0.KDnF7ZhkmnEApGCvOcItwcHnLWe5iJu64g93GACT2yo\",\n \"x-x-channel-platformname\": \"IOS\"\n },\n method: \"POST\",\n body: formData\n });\n const json = await response.json();\n // console.log('json', json);\n\n return json;\n}\n\n/**\n * 비정형에서 중간저장해놓은 서명이미지를 다운받는다\n */\nexport async function getFileFromDud(fileMgmtId: string) {\n const outputType = \"binary\"\n const response = await fetch('/api/v1/get/file', {\n headers: {\n \"content-type\": \"application/json\",\n \"x-channel-appversion\": \"3.1\",\n \"x-channel-carriername\": \"SK\",\n \"x-channel-deviceid\": \"deviceid\",\n \"x-channel-devicemodel\": \"iPHONE13\",\n \"x-channel-formfactor\": \"Phone\",\n \"x-channel-loginchannel\": \"DSP\",\n \"x-channel-logintype\": \"ONPA_PIN\",\n \"x-channel-networktype\": \"LTE\",\n \"x-channel-platformversion\": \"15.4.1\",\n \"x-channel-screenid\": \"ScreenId\",\n \"x-dud-authorization\": \"Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXNWRtc1g1MkVWZGV0YThJRy90YmlZY281bnVCdzRZOXhGZjlWakZzdWxnbU00YnkiLCJpYXQiOjE3NjEwNDMyNjgsImV4cCI6MTc2NjI5OTI2OH0.KDnF7ZhkmnEApGCvOcItwcHnLWe5iJu64g93GACT2yo\",\n \"x-x-channel-platformname\": \"IOS\"\n },\n method: \"POST\",\n body: JSON.stringify({ fileMgmtId, outputType })\n });\n const blob = await response.blob();\n\n const base64String = await new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob); // Blob → base64 Data URL\n });\n // console.log('base64String', base64String)\n\n return base64String;\n}","import { Bridge } from '../../../bridge';\nimport { commonOzParam } from '../../constant';\nimport { OZTriggerExternalEvent, type ExtraDataType, type OzdFile } from '../../types';\nimport { ensureArray, sleep } from '../common-util';\n\nimport { fetchFont } from './fetch-util';\nimport { getReportCountMemo } from './oz-wrapper-util';\n\n\n/**\n * OZ 리포트 생성 및 초기화에 필요한 브릿지 유틸\n */\n\ntype CreateOzParamProps = {\n documentList: OzdFile[];\n extraData?: ExtraDataType;\n /** ex) `roleCd=11,28` */\n roleCd: string;\n}\n/**\n * OZ 리포트 최초 생성시 OZ에 넘길 파라미터를 생성하는 함수\n */\nexport async function CreateOzParam({ documentList, extraData = {}, roleCd }: CreateOzParamProps) {\n if (documentList.length === 0) {\n throw new Error('문서목록이 비어있습니다');\n }\n const fontParms = await fetchFont();\n const connectionParams = documentList.map(({ filePath }, idx) =>\n idx === 0 ? `connection.openfile=${filePath}` : `child${idx}.connection.openfile=${filePath}`\n );\n const childCount = documentList.length - 1;\n const extraParams = documentList.map((ozdFile, idx) => {\n const result: string[] = [];\n\n // 파일 이름에서 경로 및 확장자 제거 (ex: \"A0010.ozd\" → \"A0010\")\n const docCode = ozdFile.docCode.replace(/^.*[\\\\/]|(\\.[^/.]+)$/g, '');\n\n const prefix = idx === 0 ? '' : `child${idx}.`;\n\n // 문서코드에 바인딩할 데이터가 있는지 확인\n const data = extraData[docCode] || {};\n\n if (data.inputJson) {\n result.push(`${prefix}connection.inputjson=${JSON.stringify(data.inputJson)}`);\n }\n\n // args로 전달할 param이 있으면 반영\n const args = [\n // 모든서식에 공통으로 필요한 docCd param 추가\n `docCd=${docCode}`,\n // `roleCd=11,28`,\n `${roleCd}`,\n ...ensureArray(data.args)\n ];\n args.forEach((arg, idx) => result.push(`${prefix}connection.args${idx + 1}=${arg}`));\n\n // 그 외 추가 파라미터 목록이 있으면 반영\n const extraParam = [\n // connection.args의 갯수만큼 pcount 보정\n `connection.pcount=${args.length}`,\n ...ensureArray(data.extraParam)\n ];\n extraParam.forEach((param) => (result.push(`${prefix}${param}`)))\n\n return result;\n });\n\n // createReport용 ozParam\n const params = [\n ...(childCount > 0 ? [`viewer.childcount=${childCount}`] : []),\n ...connectionParams,\n ...commonOzParam,\n ...fontParms,\n ...extraParams.flat(1)\n ];\n\n return params;\n}\n\n/**\n * 모든 문서에 대해 checkeForm을 Y로 설정하는 명령을 순차적으로 한 번씩 호출합니다.\n * \n * 각 호출 사이에 기본 지연(sleep)을 넣어 처리 속도를 조절합니다.\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function setCheckEform(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n await sleep();\n await Bridge.nativeOz.setGlobal({ key: 'checkeForm', value: 'Y', docIndex: i })\n }\n}\n\n/**\n * 모든 문서에 대해 INPUT_TRIGGER_CLICK 명령을 순차적으로 한 번씩 호출합니다.\n * \n * 각 호출 사이에 기본 지연(sleep)을 넣어 처리 속도를 조절합니다.\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function triggerClickOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n await sleep();\n const command = `INPUT_TRIGGER_CLICK_AT=${i}`;\n await Bridge.nativeOz.getInformation({ command });\n }\n}\n\n/**\n * 모든 문서에 대해 서명 부분 이미지 컷팅 명령을 순차적으로 한 번씩 호출합니다.\n * \n * 각 호출 사이에 기본 지연(sleep)을 넣어 처리 속도를 조절합니다.\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function triggerCropImageOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n await sleep();\n // 사인 이미지 크롭처리\n await Bridge.nativeOz.triggerExternalEventByDocIndex({ param1: OZTriggerExternalEvent.CropImage, docIndex: Number(i) });\n }\n}\n\n/**\n * 모든 문서에 대해 전체 페이지 수를 계산하는 명령을 순차적으로 한 번씩 호출합니다.\n * \n * 각 호출 사이에 기본 지연(sleep)을 넣어 처리 속도를 조절합니다.\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function getTotalPageOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n const totalPages = [];\n for (let i = 0; i < count; i++) {\n await sleep();\n const command = `TOTAL_PAGE_OF_REPORT_FILE_AT=${i}`\n const { data } = await Bridge.nativeOz.getInformation({ command });\n totalPages.push(Number(data));\n }\n\n return totalPages;\n}","import { Bridge } from \"../../../bridge\";\nimport { OZTriggerExternalEvent } from \"../../types\";\nimport { sleep } from \"../common-util\";\n\n\ntype OzDraftRequest = Record<string, string> & { docCd: string };\n\n/**\n * OZ에서 getDraftData 요청 시 반환할 데이터를 생성하는 함수\n * \n * - OZ로부터 전달받은 JSON 문자열(`arg`)을 파싱하여 문서 코드(docCd)를 추출하고,\n * 해당 문서의 JSON 정보를 가져와 필요한 사인 정보만 key-value 형태로 반환한다.\n * - 사인FormId 값이 null일 경우, getInformation 결과로 채워진다.\n */\nexport async function getDraftDataHandler(\n rawOzRequest: string,\n documentIndexMap: Record<string, number>\n) {\n // 1️⃣ OZ에서 전달된 요청 데이터 파싱\n const parsedRequest = JSON.parse(rawOzRequest) as OzDraftRequest;\n // 문서코드와 formId:null 형태의 객체를 추출\n const { docCd, ...signKeyMap } = parsedRequest;\n\n // 2️⃣ 문서 코드(docCd)에 해당하는 글로벌 인덱스 조회\n const documentIndex = documentIndexMap[docCd];\n if (documentIndex === undefined) {\n throw new Error(`Invalid document code: ${docCd}`);\n }\n\n // 3️⃣ Bridge를 통해 해당 문서의 JSON 데이터 조회\n const { data } = await Bridge.nativeOz.getInformation({ command: `INPUT_JSON_AT=${documentIndex}` });\n const documentJson = JSON.parse(data);\n\n // 4️⃣ 필요한 사인 정보만 key-value 형태로 반환\n const signDataMap = Object.keys(signKeyMap).reduce((acc, key) => {\n acc[key] = documentJson[key];\n\n return acc;\n }, {} as Record<string, string>);\n\n return signDataMap;\n}\n\n/**\n * 주어진 문서 인덱스 목록(`indexList`)에 대해\n * 각 문서의 중간저장 데이터를 순차적으로 요청합니다.\n * \n * 각 페이지 검사 사이에 기본 지연(sleep)을 추가하여 처리 속도를 제어합니다.\n *\n * @param indexList - 중간저장 데이터를 요청할 문서의 인덱스 배열\n */\nexport async function triggerDraftDataByIndexList(indexList: number[]) {\n for (let i = 0; i < indexList.length; i++) {\n await sleep();\n await Bridge.nativeOz.triggerExternalEventByDocIndex({ param1: OZTriggerExternalEvent.GetDraftData, docIndex: indexList[i]!, });\n }\n}","import { debounce } from 'sales-frontend-utils';\n\n/**\n * 📘 ValueChangeDebounceUtil\n *\n * 문서의 OnValueChange 이벤트를 debounce 처리하기 위한 유틸\n *\n * - 동일한 문서 인덱스에서 연속 호출 시 debounce\n * - 다른 문서 인덱스는 독립적으로 debounce 처리\n */\n\n// 문서 인덱스별로 debounce 핸들러를 저장\nconst valueChangeDebounceMap = new Map<string, ReturnType<typeof debounce>>();\n\n/**\n * 특정 문서 인덱스의 OnValueChanged 핸들러를 debounce 처리하여 반환\n *\n * @param docIndex - 문서 인덱스 (string)\n * @param onValueChanged - debounce 후 실행할 콜백\n * @returns debounce된 핸들러 함수\n */\nexport function getDebouncedValueChangeHandler(\n docIndex: string,\n onValueChanged: (docIndex: string) => void\n) {\n // 서명패드에 수정이 일어나면 1초동안 디바운스 처리\n const DEBOUNCE_DELAY = 1000 * 1;\n\n // 이미 debounce된 핸들러가 있다면 그대로 사용\n const existingHandler = valueChangeDebounceMap.get(docIndex);\n if (existingHandler) {\n return existingHandler;\n }\n\n // 새로운 debounce 핸들러 생성\n const debouncedHandler = debounce((idx: string) => {\n onValueChanged(idx);\n }, DEBOUNCE_DELAY);\n\n valueChangeDebounceMap.set(docIndex, debouncedHandler);\n\n return debouncedHandler;\n}\n\n/**\n * 모든 문서 인덱스의 debounce 핸들러 초기화\n */\nexport function clearValueChangeDebounceHandlers() {\n valueChangeDebounceMap.clear();\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react.production.js","../../../node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react.development.js","../../../node_modules/.pnpm/react@19.1.0/node_modules/react/index.js","../src/common/common-bridge.ts","../src/common/common-bridge-core.ts","../src/iframe/core/iframe-bridge-core.ts","../src/iframe/bridge/iframe-bridge.ts","../src/native/core/native-bridge-core.ts","../src/native/bridge/native-bridge.ts","../src/native/bridge-oz/native-bridge-oz.ts","../src/bridge.ts","../src/oz/constant/comment-pen-param.ts","../src/oz/constant/oz-param.ts","../src/oz/constant/pdf-param.ts","../src/oz/constant/test-data.ts","../src/oz/hooks/use-document-info.tsx","../src/oz/hooks/use-oz-event-listener.tsx","../src/oz/types/oz-event.types.ts","../src/oz/utils/common-util.ts","../src/oz/utils/bridge-util/oz-wrapper-util.ts","../src/oz/utils/bridge-util/btn-touch-event-util/category-handler.ts","../src/oz/utils/bridge-util/btn-touch-event-util/top-handler.ts","../src/oz/utils/bridge-util/btn-touch-event-util/comment-handler.ts","../src/oz/utils/bridge-util/btn-touch-event-util/pdf-handler.ts","../src/oz/utils/bridge-util/focus-util.ts","../src/oz/utils/bridge-util/validation-util.ts","../src/oz/utils/bridge-util/btn-touch-event-util/signature-handler.ts","../src/oz/utils/bridge-util/fetch-util.ts","../src/oz/utils/bridge-util/create-report-util.ts","../src/oz/utils/bridge-util/get-draft-data-util.ts","../src/oz/utils/value-change-debounce-util.ts"],"names":["isClient","MessageEventManager","getDspExecutionEnvironment","isStorybookEnv","isFpPlannerApp","ozdFile","import_react","OZViewerEvent","OZTriggerExternalEvent","idx","debounce"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,wBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,kFAAA,CAAA,OAAA,EAAA;AAWA,IAAI,IAAA,kBAAA,GAAqB,MAAO,CAAA,GAAA,CAAI,4BAA4B,CAAA;AAAhE,IACE,IAAA,iBAAA,GAAoB,MAAO,CAAA,GAAA,CAAI,cAAc,CAAA;AAD/C,IAEE,IAAA,mBAAA,GAAsB,MAAO,CAAA,GAAA,CAAI,gBAAgB,CAAA;AAFnD,IAGE,IAAA,sBAAA,GAAyB,MAAO,CAAA,GAAA,CAAI,mBAAmB,CAAA;AAHzD,IAIE,IAAA,mBAAA,GAAsB,MAAO,CAAA,GAAA,CAAI,gBAAgB,CAAA;AAJnD,IAKE,IAAA,mBAAA,GAAsB,MAAO,CAAA,GAAA,CAAI,gBAAgB,CAAA;AALnD,IAME,IAAA,kBAAA,GAAqB,MAAO,CAAA,GAAA,CAAI,eAAe,CAAA;AANjD,IAOE,IAAA,sBAAA,GAAyB,MAAO,CAAA,GAAA,CAAI,mBAAmB,CAAA;AAPzD,IAQE,IAAA,mBAAA,GAAsB,MAAO,CAAA,GAAA,CAAI,gBAAgB,CAAA;AARnD,IASE,IAAA,eAAA,GAAkB,MAAO,CAAA,GAAA,CAAI,YAAY,CAAA;AAT3C,IAUE,IAAA,eAAA,GAAkB,MAAO,CAAA,GAAA,CAAI,YAAY,CAAA;AAV3C,IAAA,IAWE,wBAAwB,MAAO,CAAA,QAAA;AACjC,IAAA,SAAS,cAAc,aAAe,EAAA;AACpC,MAAA,IAAI,IAAS,KAAA,aAAA,IAAiB,QAAa,KAAA,OAAO,eAAsB,OAAA,IAAA;AACxE,MAAA,aAAA,GACG,qBAAyB,IAAA,aAAA,CAAc,qBAAqB,CAAA,IAC7D,cAAc,YAAY,CAAA;AAC5B,MAAO,OAAA,UAAA,KAAe,OAAO,aAAA,GAAgB,aAAgB,GAAA,IAAA;AAAA;AAE/D,IAAA,IAAI,oBAAuB,GAAA;AAAA,MACvB,WAAW,WAAY;AACrB,QAAO,OAAA,KAAA;AAAA,OACT;AAAA,MACA,oBAAoB,WAAY;AAAA,OAAC;AAAA,MACjC,qBAAqB,WAAY;AAAA,OAAC;AAAA,MAClC,iBAAiB,WAAY;AAAA;AAAC,KAChC;AAPF,IAAA,IAQE,SAAS,MAAO,CAAA,MAAA;AARlB,IAAA,IASE,cAAc,EAAC;AACjB,IAAS,SAAA,SAAA,CAAU,KAAO,EAAA,OAAA,EAAS,OAAS,EAAA;AAC1C,MAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AACb,MAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,MAAA,IAAA,CAAK,IAAO,GAAA,WAAA;AACZ,MAAA,IAAA,CAAK,UAAU,OAAW,IAAA,oBAAA;AAAA;AAE5B,IAAU,SAAA,CAAA,SAAA,CAAU,mBAAmB,EAAC;AACxC,IAAA,SAAA,CAAU,SAAU,CAAA,QAAA,GAAW,SAAU,YAAA,EAAc,QAAU,EAAA;AAC/D,MAAA,IACE,aAAa,OAAO,YAAA,IACpB,UAAe,KAAA,OAAO,gBACtB,IAAQ,IAAA,YAAA;AAER,QAAM,MAAA,KAAA;AAAA,UACJ;AAAA,SACF;AACF,MAAA,IAAA,CAAK,OAAQ,CAAA,eAAA,CAAgB,IAAM,EAAA,YAAA,EAAc,UAAU,UAAU,CAAA;AAAA,KACvE;AACA,IAAU,SAAA,CAAA,SAAA,CAAU,WAAc,GAAA,SAAU,QAAU,EAAA;AACpD,MAAA,IAAA,CAAK,OAAQ,CAAA,kBAAA,CAAmB,IAAM,EAAA,QAAA,EAAU,aAAa,CAAA;AAAA,KAC/D;AACA,IAAA,SAAS,cAAiB,GAAA;AAAA;AAC1B,IAAA,cAAA,CAAe,YAAY,SAAU,CAAA,SAAA;AACrC,IAAS,SAAA,aAAA,CAAc,KAAO,EAAA,OAAA,EAAS,OAAS,EAAA;AAC9C,MAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AACb,MAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,MAAA,IAAA,CAAK,IAAO,GAAA,WAAA;AACZ,MAAA,IAAA,CAAK,UAAU,OAAW,IAAA,oBAAA;AAAA;AAE5B,IAAA,IAAI,sBAA0B,GAAA,aAAA,CAAc,SAAY,GAAA,IAAI,cAAe,EAAA;AAC3E,IAAA,sBAAA,CAAuB,WAAc,GAAA,aAAA;AACrC,IAAO,MAAA,CAAA,sBAAA,EAAwB,UAAU,SAAS,CAAA;AAClD,IAAA,sBAAA,CAAuB,oBAAuB,GAAA,IAAA;AAC9C,IAAA,IAAI,cAAc,KAAM,CAAA,OAAA;AAAxB,IACE,IAAA,oBAAA,GAAuB,EAAE,CAAA,EAAG,IAAM,EAAA,CAAA,EAAG,IAAM,EAAA,CAAA,EAAG,IAAM,EAAA,CAAA,EAAG,IAAM,EAAA,CAAA,EAAG,IAAK,EAAA;AADvE,IAEE,IAAA,cAAA,GAAiB,OAAO,SAAU,CAAA,cAAA;AACpC,IAAA,SAAS,aAAa,IAAM,EAAA,GAAA,EAAK,IAAM,EAAA,MAAA,EAAQ,OAAO,KAAO,EAAA;AAC3D,MAAA,IAAA,GAAO,KAAM,CAAA,GAAA;AACb,MAAO,OAAA;AAAA,QACL,QAAU,EAAA,kBAAA;AAAA,QACV,IAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA,EAAK,MAAW,KAAA,IAAA,GAAO,IAAO,GAAA,IAAA;AAAA,QAC9B;AAAA,OACF;AAAA;AAEF,IAAS,SAAA,kBAAA,CAAmB,YAAY,MAAQ,EAAA;AAC9C,MAAO,OAAA,YAAA;AAAA,QACL,UAAW,CAAA,IAAA;AAAA,QACX,MAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAW,CAAA;AAAA,OACb;AAAA;AAEF,IAAA,SAAS,eAAe,MAAQ,EAAA;AAC9B,MAAA,OACE,aAAa,OAAO,MAAA,IACpB,IAAS,KAAA,MAAA,IACT,OAAO,QAAa,KAAA,kBAAA;AAAA;AAGxB,IAAA,SAAS,OAAO,GAAK,EAAA;AACnB,MAAA,IAAI,aAAgB,GAAA,EAAE,GAAK,EAAA,IAAA,EAAM,KAAK,IAAK,EAAA;AAC3C,MAAA,OACE,GACA,GAAA,GAAA,CAAI,OAAQ,CAAA,OAAA,EAAS,SAAU,KAAO,EAAA;AACpC,QAAA,OAAO,cAAc,KAAK,CAAA;AAAA,OAC3B,CAAA;AAAA;AAGL,IAAA,IAAI,0BAA6B,GAAA,MAAA;AACjC,IAAS,SAAA,aAAA,CAAc,SAAS,KAAO,EAAA;AACrC,MAAA,OAAO,QAAa,KAAA,OAAO,OAAW,IAAA,IAAA,KAAS,WAAW,IAAQ,IAAA,OAAA,CAAQ,GACtE,GAAA,MAAA,CAAO,KAAK,OAAQ,CAAA,GAAG,CACvB,GAAA,KAAA,CAAM,SAAS,EAAE,CAAA;AAAA;AAEvB,IAAA,SAAS,MAAS,GAAA;AAAA;AAClB,IAAA,SAAS,gBAAgB,QAAU,EAAA;AACjC,MAAA,QAAQ,SAAS,MAAQ;AAAA,QACvB,KAAK,WAAA;AACH,UAAA,OAAO,QAAS,CAAA,KAAA;AAAA,QAClB,KAAK,UAAA;AACH,UAAA,MAAM,QAAS,CAAA,MAAA;AAAA,QACjB;AACE,UAAA,QACG,QAAa,KAAA,OAAO,QAAS,CAAA,MAAA,GAC1B,QAAS,CAAA,IAAA,CAAK,MAAQ,EAAA,MAAM,CAC1B,IAAA,QAAA,CAAS,MAAS,GAAA,SAAA,EACpB,QAAS,CAAA,IAAA;AAAA,YACP,SAAU,cAAgB,EAAA;AACxB,cAAA,SAAA,KAAc,SAAS,MACnB,KAAA,QAAA,CAAS,MAAS,GAAA,WAAA,EACnB,SAAS,KAAQ,GAAA,cAAA,CAAA;AAAA,aACtB;AAAA,YACA,SAAU,KAAO,EAAA;AACf,cAAA,SAAA,KAAc,SAAS,MACnB,KAAA,QAAA,CAAS,MAAS,GAAA,UAAA,EAAc,SAAS,MAAS,GAAA,KAAA,CAAA;AAAA;AACxD,WACF,CAAA,EACJ,SAAS,MACT;AAAA,YACA,KAAK,WAAA;AACH,cAAA,OAAO,QAAS,CAAA,KAAA;AAAA,YAClB,KAAK,UAAA;AACH,cAAA,MAAM,QAAS,CAAA,MAAA;AAAA;AACnB;AAEJ,MAAM,MAAA,QAAA;AAAA;AAER,IAAA,SAAS,YAAa,CAAA,QAAA,EAAU,KAAO,EAAA,aAAA,EAAe,WAAW,QAAU,EAAA;AACzE,MAAA,IAAI,OAAO,OAAO,QAAA;AAClB,MAAA,IAAI,WAAgB,KAAA,IAAA,IAAQ,SAAc,KAAA,IAAA,EAAiB,QAAA,GAAA,IAAA;AAC3D,MAAA,IAAI,cAAiB,GAAA,KAAA;AACrB,MAAI,IAAA,IAAA,KAAS,UAA2B,cAAA,GAAA,IAAA;AAAA;AAEtC,QAAA,QAAQ,IAAM;AAAA,UACZ,KAAK,QAAA;AAAA,UACL,KAAK,QAAA;AAAA,UACL,KAAK,QAAA;AACH,YAAiB,cAAA,GAAA,IAAA;AACjB,YAAA;AAAA,UACF,KAAK,QAAA;AACH,YAAA,QAAQ,SAAS,QAAU;AAAA,cACzB,KAAK,kBAAA;AAAA,cACL,KAAK,iBAAA;AACH,gBAAiB,cAAA,GAAA,IAAA;AACjB,gBAAA;AAAA,cACF,KAAK,eAAA;AACH,gBACG,OAAA,cAAA,GAAiB,SAAS,KAC3B,EAAA,YAAA;AAAA,kBACE,cAAA,CAAe,SAAS,QAAQ,CAAA;AAAA,kBAChC,KAAA;AAAA,kBACA,aAAA;AAAA,kBACA,SAAA;AAAA,kBACA;AAAA,iBACF;AAAA;AAEN;AAEN,MAAI,IAAA,cAAA;AACF,QAAA,OACG,QAAW,GAAA,QAAA,CAAS,QAAQ,CAAA,EAC5B,iBACC,EAAO,KAAA,SAAA,GAAY,GAAM,GAAA,aAAA,CAAc,QAAU,EAAA,CAAC,CAAI,GAAA,SAAA,EACxD,YAAY,QAAQ,CAAA,IACd,aAAgB,GAAA,EAAA,EAClB,IAAQ,IAAA,cAAA,KACL,aACC,GAAA,cAAA,CAAe,QAAQ,0BAA4B,EAAA,KAAK,CAAI,GAAA,GAAA,CAAA,EAChE,aAAa,QAAU,EAAA,KAAA,EAAO,aAAe,EAAA,EAAA,EAAI,SAAU,CAAG,EAAA;AAC5D,UAAO,OAAA,CAAA;AAAA,SACR,CACD,IAAA,IAAA,IAAQ,aACP,cAAe,CAAA,QAAQ,MACrB,QAAW,GAAA,kBAAA;AAAA,UACV,QAAA;AAAA,UACA,aACG,IAAA,IAAA,IAAQ,QAAS,CAAA,GAAA,IACjB,QAAY,IAAA,QAAA,CAAS,GAAQ,KAAA,QAAA,CAAS,GACnC,GAAA,EAAA,GAAA,CACC,EAAK,GAAA,QAAA,CAAS,GAAK,EAAA,OAAA;AAAA,YAClB,0BAAA;AAAA,YACA;AAAA,cACE,GACR,CAAA,GAAA;AAAA,SAEN,CAAA,EAAA,KAAA,CAAM,IAAK,CAAA,QAAQ,CACvB,CAAA,EAAA,CAAA;AAEJ,MAAiB,cAAA,GAAA,CAAA;AACjB,MAAA,IAAI,cAAiB,GAAA,EAAA,KAAO,SAAY,GAAA,GAAA,GAAM,SAAY,GAAA,GAAA;AAC1D,MAAA,IAAI,YAAY,QAAQ,CAAA;AACtB,QAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,QAAA,CAAS,MAAQ,EAAA,CAAA,EAAA;AACnC,UAAC,SAAA,GAAY,QAAS,CAAA,CAAC,CACpB,EAAA,IAAA,GAAO,iBAAiB,aAAc,CAAA,SAAA,EAAW,CAAC,CAAA,EAClD,cAAkB,IAAA,YAAA;AAAA,YACjB,SAAA;AAAA,YACA,KAAA;AAAA,YACA,aAAA;AAAA,YACA,IAAA;AAAA,YACA;AAAA,WACF;AAAA,WAAA,IACK,CAAI,GAAA,aAAA,CAAc,QAAQ,CAAA,EAAI,eAAe,OAAO,CAAA;AAC7D,QACE,KAAA,QAAA,GAAW,CAAE,CAAA,IAAA,CAAK,QAAQ,CAAA,EAAG,CAAI,GAAA,CAAA,EACjC,CAAE,CAAA,SAAA,GAAY,QAAS,CAAA,IAAA,EAAQ,EAAA,IAAA;AAG/B,UAAC,SAAA,GAAY,UAAU,KACpB,EAAA,IAAA,GAAO,iBAAiB,aAAc,CAAA,SAAA,EAAW,CAAG,EAAA,CAAA,EACpD,cAAkB,IAAA,YAAA;AAAA,YACjB,SAAA;AAAA,YACA,KAAA;AAAA,YACA,aAAA;AAAA,YACA,IAAA;AAAA,YACA;AAAA,WACF;AAAA,WAAA,IACG,aAAa,IAAM,EAAA;AAC1B,QAAI,IAAA,UAAA,KAAe,OAAO,QAAS,CAAA,IAAA;AACjC,UAAO,OAAA,YAAA;AAAA,YACL,gBAAgB,QAAQ,CAAA;AAAA,YACxB,KAAA;AAAA,YACA,aAAA;AAAA,YACA,SAAA;AAAA,YACA;AAAA,WACF;AACF,QAAA,KAAA,GAAQ,OAAO,QAAQ,CAAA;AACvB,QAAM,MAAA,KAAA;AAAA,UACJ,iDACG,IAAA,iBAAA,KAAsB,KACnB,GAAA,oBAAA,GAAuB,MAAO,CAAA,IAAA,CAAK,QAAQ,CAAA,CAAE,IAAK,CAAA,IAAI,CAAI,GAAA,GAAA,GAC1D,KACJ,CAAA,GAAA;AAAA,SACJ;AAAA;AAEF,MAAO,OAAA,cAAA;AAAA;AAET,IAAS,SAAA,WAAA,CAAY,QAAU,EAAA,IAAA,EAAM,OAAS,EAAA;AAC5C,MAAI,IAAA,IAAA,IAAQ,UAAiB,OAAA,QAAA;AAC7B,MAAI,IAAA,MAAA,GAAS,EAAC,EACZ,KAAQ,GAAA,CAAA;AACV,MAAA,YAAA,CAAa,QAAU,EAAA,MAAA,EAAQ,EAAI,EAAA,EAAA,EAAI,SAAU,KAAO,EAAA;AACtD,QAAA,OAAO,IAAK,CAAA,IAAA,CAAK,OAAS,EAAA,KAAA,EAAO,KAAO,EAAA,CAAA;AAAA,OACzC,CAAA;AACD,MAAO,OAAA,MAAA;AAAA;AAET,IAAA,SAAS,gBAAgB,OAAS,EAAA;AAChC,MAAI,IAAA,EAAA,KAAO,QAAQ,OAAS,EAAA;AAC1B,QAAA,IAAI,OAAO,OAAQ,CAAA,OAAA;AACnB,QAAA,IAAA,GAAO,IAAK,EAAA;AACZ,QAAK,IAAA,CAAA,IAAA;AAAA,UACH,SAAU,YAAc,EAAA;AACtB,YAAA,IAAI,CAAM,KAAA,OAAA,CAAQ,OAAW,IAAA,EAAA,KAAO,OAAQ,CAAA,OAAA;AAC1C,cAAC,OAAQ,CAAA,OAAA,GAAU,CAAK,EAAA,OAAA,CAAQ,OAAU,GAAA,YAAA;AAAA,WAC9C;AAAA,UACA,SAAU,KAAO,EAAA;AACf,YAAA,IAAI,CAAM,KAAA,OAAA,CAAQ,OAAW,IAAA,EAAA,KAAO,OAAQ,CAAA,OAAA;AAC1C,cAAC,OAAQ,CAAA,OAAA,GAAU,CAAK,EAAA,OAAA,CAAQ,OAAU,GAAA,KAAA;AAAA;AAC9C,SACF;AACA,QAAA,EAAA,KAAO,QAAQ,OAAa,KAAA,OAAA,CAAQ,OAAU,GAAA,CAAA,EAAK,QAAQ,OAAU,GAAA,IAAA,CAAA;AAAA;AAEvE,MAAA,IAAI,CAAM,KAAA,OAAA,CAAQ,OAAS,EAAA,OAAO,QAAQ,OAAQ,CAAA,OAAA;AAClD,MAAA,MAAM,OAAQ,CAAA,OAAA;AAAA;AAEhB,IAAA,IAAI,oBACF,UAAe,KAAA,OAAO,WAClB,GAAA,WAAA,GACA,SAAU,KAAO,EAAA;AACf,MAAA,IACE,aAAa,OAAO,MAAA,IACpB,UAAe,KAAA,OAAO,OAAO,UAC7B,EAAA;AACA,QAAA,IAAI,KAAQ,GAAA,IAAI,MAAO,CAAA,UAAA,CAAW,OAAS,EAAA;AAAA,UACzC,OAAS,EAAA,IAAA;AAAA,UACT,UAAY,EAAA,IAAA;AAAA,UACZ,OACE,EAAA,QAAA,KAAa,OAAO,KAAA,IACpB,SAAS,KACT,IAAA,QAAA,KAAa,OAAO,KAAA,CAAM,UACtB,MAAO,CAAA,KAAA,CAAM,OAAO,CAAA,GACpB,OAAO,KAAK,CAAA;AAAA,UAClB;AAAA,SACD,CAAA;AACD,QAAA,IAAI,CAAC,MAAA,CAAO,aAAc,CAAA,KAAK,CAAG,EAAA;AAAA,iBAElC,QAAa,KAAA,OAAO,WACpB,UAAe,KAAA,OAAO,QAAQ,IAC9B,EAAA;AACA,QAAQ,OAAA,CAAA,IAAA,CAAK,qBAAqB,KAAK,CAAA;AACvC,QAAA;AAAA;AAEF,MAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,KACrB;AACN,IAAA,SAAS,IAAO,GAAA;AAAA;AAChB,IAAA,OAAA,CAAQ,QAAW,GAAA;AAAA,MACjB,GAAK,EAAA,WAAA;AAAA,MACL,OAAS,EAAA,SAAU,QAAU,EAAA,WAAA,EAAa,cAAgB,EAAA;AACxD,QAAA,WAAA;AAAA,UACE,QAAA;AAAA,UACA,WAAY;AACV,YAAY,WAAA,CAAA,KAAA,CAAM,MAAM,SAAS,CAAA;AAAA,WACnC;AAAA,UACA;AAAA,SACF;AAAA,OACF;AAAA,MACA,KAAA,EAAO,SAAU,QAAU,EAAA;AACzB,QAAA,IAAI,CAAI,GAAA,CAAA;AACR,QAAA,WAAA,CAAY,UAAU,WAAY;AAChC,UAAA,CAAA,EAAA;AAAA,SACD,CAAA;AACD,QAAO,OAAA,CAAA;AAAA,OACT;AAAA,MACA,OAAA,EAAS,SAAU,QAAU,EAAA;AAC3B,QACE,OAAA,WAAA,CAAY,QAAU,EAAA,SAAU,KAAO,EAAA;AACrC,UAAO,OAAA,KAAA;AAAA,SACR,KAAK,EAAC;AAAA,OAEX;AAAA,MACA,IAAA,EAAM,SAAU,QAAU,EAAA;AACxB,QAAI,IAAA,CAAC,eAAe,QAAQ,CAAA;AAC1B,UAAM,MAAA,KAAA;AAAA,YACJ;AAAA,WACF;AACF,QAAO,OAAA,QAAA;AAAA;AACT,KACF;AACA,IAAA,OAAA,CAAQ,SAAY,GAAA,SAAA;AACpB,IAAA,OAAA,CAAQ,QAAW,GAAA,mBAAA;AACnB,IAAA,OAAA,CAAQ,QAAW,GAAA,mBAAA;AACnB,IAAA,OAAA,CAAQ,aAAgB,GAAA,aAAA;AACxB,IAAA,OAAA,CAAQ,UAAa,GAAA,sBAAA;AACrB,IAAA,OAAA,CAAQ,QAAW,GAAA,mBAAA;AACnB,IAAA,OAAA,CAAQ,+DACN,GAAA,oBAAA;AACF,IAAA,OAAA,CAAQ,kBAAqB,GAAA;AAAA,MAC3B,SAAW,EAAA,IAAA;AAAA,MACX,CAAA,EAAG,SAAU,IAAM,EAAA;AACjB,QAAO,OAAA,oBAAA,CAAqB,CAAE,CAAA,YAAA,CAAa,IAAI,CAAA;AAAA;AACjD,KACF;AACA,IAAQ,OAAA,CAAA,KAAA,GAAQ,SAAU,EAAI,EAAA;AAC5B,MAAA,OAAO,WAAY;AACjB,QAAO,OAAA,EAAA,CAAG,KAAM,CAAA,IAAA,EAAM,SAAS,CAAA;AAAA,OACjC;AAAA,KACF;AACA,IAAA,OAAA,CAAQ,YAAe,GAAA,SAAU,OAAS,EAAA,MAAA,EAAQ,QAAU,EAAA;AAC1D,MAAI,IAAA,IAAA,KAAS,WAAW,MAAW,KAAA,OAAA;AACjC,QAAM,MAAA,KAAA;AAAA,UACJ,0DAA0D,OAAU,GAAA;AAAA,SACtE;AACF,MAAI,IAAA,KAAA,GAAQ,MAAO,CAAA,EAAI,EAAA,OAAA,CAAQ,KAAK,CAClC,EAAA,GAAA,GAAM,OAAQ,CAAA,GAAA,EACd,KAAQ,GAAA,MAAA;AACV,MAAA,IAAI,IAAQ,IAAA,MAAA;AACV,QAAA,KAAK,QAAa,IAAA,MAAA,KAAW,MAAO,CAAA,GAAA,KAAQ,KAAQ,GAAA,MAAA,CAAA,EACpD,MAAW,KAAA,MAAA,CAAO,GAAQ,KAAA,GAAA,GAAM,EAAK,GAAA,MAAA,CAAO,GAC5C,CAAA,EAAA,MAAA;AACE,UAAC,CAAA,cAAA,CAAe,KAAK,MAAQ,EAAA,QAAQ,KACnC,KAAU,KAAA,QAAA,IACV,aAAa,QACb,IAAA,UAAA,KAAe,YACd,KAAU,KAAA,QAAA,IAAY,WAAW,MAAO,CAAA,GAAA,KACxC,MAAM,QAAQ,CAAA,GAAI,OAAO,QAAQ,CAAA,CAAA;AACxC,MAAI,IAAA,QAAA,GAAW,UAAU,MAAS,GAAA,CAAA;AAClC,MAAI,IAAA,CAAA,KAAM,QAAU,EAAA,KAAA,CAAM,QAAW,GAAA,QAAA;AAAA,WAAA,IAC5B,IAAI,QAAU,EAAA;AACrB,QAAA,KAAA,IAAS,aAAa,KAAM,CAAA,QAAQ,GAAG,CAAI,GAAA,CAAA,EAAG,IAAI,QAAU,EAAA,CAAA,EAAA;AAC1D,UAAA,UAAA,CAAW,CAAC,CAAA,GAAI,SAAU,CAAA,CAAA,GAAI,CAAC,CAAA;AACjC,QAAA,KAAA,CAAM,QAAW,GAAA,UAAA;AAAA;AAEnB,MAAA,OAAO,aAAa,OAAQ,CAAA,IAAA,EAAM,KAAK,MAAQ,EAAA,MAAA,EAAQ,OAAO,KAAK,CAAA;AAAA,KACrE;AACA,IAAQ,OAAA,CAAA,aAAA,GAAgB,SAAU,YAAc,EAAA;AAC9C,MAAe,YAAA,GAAA;AAAA,QACb,QAAU,EAAA,kBAAA;AAAA,QACV,aAAe,EAAA,YAAA;AAAA,QACf,cAAgB,EAAA,YAAA;AAAA,QAChB,YAAc,EAAA,CAAA;AAAA,QACd,QAAU,EAAA,IAAA;AAAA,QACV,QAAU,EAAA;AAAA,OACZ;AACA,MAAA,YAAA,CAAa,QAAW,GAAA,YAAA;AACxB,MAAA,YAAA,CAAa,QAAW,GAAA;AAAA,QACtB,QAAU,EAAA,mBAAA;AAAA,QACV,QAAU,EAAA;AAAA,OACZ;AACA,MAAO,OAAA,YAAA;AAAA,KACT;AACA,IAAA,OAAA,CAAQ,aAAgB,GAAA,SAAU,IAAM,EAAA,MAAA,EAAQ,QAAU,EAAA;AACxD,MAAA,IAAI,QACF,EAAA,KAAA,GAAQ,EAAC,EACT,GAAM,GAAA,IAAA;AACR,MAAA,IAAI,IAAQ,IAAA,MAAA;AACV,QAAA,KAAK,YAAa,MAAW,KAAA,MAAA,CAAO,QAAQ,GAAM,GAAA,EAAA,GAAK,OAAO,GAAM,CAAA,EAAA,MAAA;AAClE,UAAA,cAAA,CAAe,IAAK,CAAA,MAAA,EAAQ,QAAQ,CAAA,IAClC,UAAU,QACV,IAAA,QAAA,KAAa,QACb,IAAA,UAAA,KAAe,QACd,KAAA,KAAA,CAAM,QAAQ,CAAA,GAAI,OAAO,QAAQ,CAAA,CAAA;AACxC,MAAI,IAAA,cAAA,GAAiB,UAAU,MAAS,GAAA,CAAA;AACxC,MAAI,IAAA,CAAA,KAAM,cAAgB,EAAA,KAAA,CAAM,QAAW,GAAA,QAAA;AAAA,WAAA,IAClC,IAAI,cAAgB,EAAA;AAC3B,QAAA,KAAA,IAAS,aAAa,KAAM,CAAA,cAAc,GAAG,CAAI,GAAA,CAAA,EAAG,IAAI,cAAgB,EAAA,CAAA,EAAA;AACtE,UAAA,UAAA,CAAW,CAAC,CAAA,GAAI,SAAU,CAAA,CAAA,GAAI,CAAC,CAAA;AACjC,QAAA,KAAA,CAAM,QAAW,GAAA,UAAA;AAAA;AAEnB,MAAA,IAAI,QAAQ,IAAK,CAAA,YAAA;AACf,QAAK,KAAA,QAAA,IAAc,cAAiB,GAAA,IAAA,CAAK,YAAe,EAAA,cAAA;AACtD,UAAA,MAAA,KAAW,MAAM,QAAQ,CAAA,KACtB,MAAM,QAAQ,CAAA,GAAI,eAAe,QAAQ,CAAA,CAAA;AAChD,MAAA,OAAO,aAAa,IAAM,EAAA,GAAA,EAAK,MAAQ,EAAA,MAAA,EAAQ,MAAM,KAAK,CAAA;AAAA,KAC5D;AACA,IAAA,OAAA,CAAQ,YAAY,WAAY;AAC9B,MAAO,OAAA,EAAE,SAAS,IAAK,EAAA;AAAA,KACzB;AACA,IAAQ,OAAA,CAAA,UAAA,GAAa,SAAU,MAAQ,EAAA;AACrC,MAAO,OAAA,EAAE,QAAU,EAAA,sBAAA,EAAwB,MAAe,EAAA;AAAA,KAC5D;AACA,IAAA,OAAA,CAAQ,cAAiB,GAAA,cAAA;AACzB,IAAQ,OAAA,CAAA,IAAA,GAAO,SAAU,IAAM,EAAA;AAC7B,MAAO,OAAA;AAAA,QACL,QAAU,EAAA,eAAA;AAAA,QACV,QAAU,EAAA,EAAE,OAAS,EAAA,EAAA,EAAI,SAAS,IAAK,EAAA;AAAA,QACvC,KAAO,EAAA;AAAA,OACT;AAAA,KACF;AACA,IAAQ,OAAA,CAAA,IAAA,GAAO,SAAU,IAAA,EAAM,OAAS,EAAA;AACtC,MAAO,OAAA;AAAA,QACL,QAAU,EAAA,eAAA;AAAA,QACV,IAAA;AAAA,QACA,OAAA,EAAS,MAAW,KAAA,OAAA,GAAU,IAAO,GAAA;AAAA,OACvC;AAAA,KACF;AACA,IAAQ,OAAA,CAAA,eAAA,GAAkB,SAAU,KAAO,EAAA;AACzC,MAAA,IAAI,cAAiB,GAAA,oBAAA,CAAqB,CACxC,EAAA,iBAAA,GAAoB,EAAC;AACvB,MAAA,oBAAA,CAAqB,CAAI,GAAA,iBAAA;AACzB,MAAI,IAAA;AACF,QAAA,IAAI,WAAc,GAAA,KAAA,EAChB,EAAA,uBAAA,GAA0B,oBAAqB,CAAA,CAAA;AACjD,QAAS,IAAA,KAAA,uBAAA,IACP,uBAAwB,CAAA,iBAAA,EAAmB,WAAW,CAAA;AACxD,QAAa,QAAA,KAAA,OAAO,WAClB,IAAA,IAAA,KAAS,WACT,IAAA,UAAA,KAAe,OAAO,WAAA,CAAY,IAClC,IAAA,WAAA,CAAY,IAAK,CAAA,IAAA,EAAM,iBAAiB,CAAA;AAAA,eACnC,KAAO,EAAA;AACd,QAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,OACvB,SAAA;AACA,QAAA,oBAAA,CAAqB,CAAI,GAAA,cAAA;AAAA;AAC3B,KACF;AACA,IAAA,OAAA,CAAQ,2BAA2B,WAAY;AAC7C,MAAO,OAAA,oBAAA,CAAqB,EAAE,eAAgB,EAAA;AAAA,KAChD;AACA,IAAQ,OAAA,CAAA,GAAA,GAAM,SAAU,MAAQ,EAAA;AAC9B,MAAO,OAAA,oBAAA,CAAqB,CAAE,CAAA,GAAA,CAAI,MAAM,CAAA;AAAA,KAC1C;AACA,IAAA,OAAA,CAAQ,cAAiB,GAAA,SAAU,MAAQ,EAAA,YAAA,EAAc,SAAW,EAAA;AAClE,MAAA,OAAO,oBAAqB,CAAA,CAAA,CAAE,cAAe,CAAA,MAAA,EAAQ,cAAc,SAAS,CAAA;AAAA,KAC9E;AACA,IAAQ,OAAA,CAAA,WAAA,GAAc,SAAU,QAAA,EAAU,IAAM,EAAA;AAC9C,MAAA,OAAO,oBAAqB,CAAA,CAAA,CAAE,WAAY,CAAA,QAAA,EAAU,IAAI,CAAA;AAAA,KAC1D;AACA,IAAQ,OAAA,CAAA,UAAA,GAAa,SAAU,OAAS,EAAA;AACtC,MAAO,OAAA,oBAAA,CAAqB,CAAE,CAAA,UAAA,CAAW,OAAO,CAAA;AAAA,KAClD;AACA,IAAA,OAAA,CAAQ,gBAAgB,WAAY;AAAA,KAAC;AACrC,IAAQ,OAAA,CAAA,gBAAA,GAAmB,SAAU,KAAA,EAAO,YAAc,EAAA;AACxD,MAAA,OAAO,oBAAqB,CAAA,CAAA,CAAE,gBAAiB,CAAA,KAAA,EAAO,YAAY,CAAA;AAAA,KACpE;AACA,IAAA,OAAA,CAAQ,SAAY,GAAA,SAAU,MAAQ,EAAA,UAAA,EAAY,MAAQ,EAAA;AACxD,MAAA,IAAI,aAAa,oBAAqB,CAAA,CAAA;AACtC,MAAA,IAAI,eAAe,OAAO,MAAA;AACxB,QAAM,MAAA,KAAA;AAAA,UACJ;AAAA,SACF;AACF,MAAO,OAAA,UAAA,CAAW,SAAU,CAAA,MAAA,EAAQ,UAAU,CAAA;AAAA,KAChD;AACA,IAAA,OAAA,CAAQ,QAAQ,WAAY;AAC1B,MAAO,OAAA,oBAAA,CAAqB,EAAE,KAAM,EAAA;AAAA,KACtC;AACA,IAAA,OAAA,CAAQ,mBAAsB,GAAA,SAAU,GAAK,EAAA,MAAA,EAAQ,IAAM,EAAA;AACzD,MAAA,OAAO,oBAAqB,CAAA,CAAA,CAAE,mBAAoB,CAAA,GAAA,EAAK,QAAQ,IAAI,CAAA;AAAA,KACrE;AACA,IAAQ,OAAA,CAAA,kBAAA,GAAqB,SAAU,MAAA,EAAQ,IAAM,EAAA;AACnD,MAAA,OAAO,oBAAqB,CAAA,CAAA,CAAE,kBAAmB,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,KAC/D;AACA,IAAQ,OAAA,CAAA,eAAA,GAAkB,SAAU,MAAA,EAAQ,IAAM,EAAA;AAChD,MAAA,OAAO,oBAAqB,CAAA,CAAA,CAAE,eAAgB,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,KAC5D;AACA,IAAQ,OAAA,CAAA,OAAA,GAAU,SAAU,MAAA,EAAQ,IAAM,EAAA;AACxC,MAAA,OAAO,oBAAqB,CAAA,CAAA,CAAE,OAAQ,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,KACpD;AACA,IAAQ,OAAA,CAAA,aAAA,GAAgB,SAAU,WAAA,EAAa,OAAS,EAAA;AACtD,MAAA,OAAO,oBAAqB,CAAA,CAAA,CAAE,aAAc,CAAA,WAAA,EAAa,OAAO,CAAA;AAAA,KAClE;AACA,IAAA,OAAA,CAAQ,UAAa,GAAA,SAAU,OAAS,EAAA,UAAA,EAAY,IAAM,EAAA;AACxD,MAAA,OAAO,oBAAqB,CAAA,CAAA,CAAE,UAAW,CAAA,OAAA,EAAS,YAAY,IAAI,CAAA;AAAA,KACpE;AACA,IAAQ,OAAA,CAAA,MAAA,GAAS,SAAU,YAAc,EAAA;AACvC,MAAO,OAAA,oBAAA,CAAqB,CAAE,CAAA,MAAA,CAAO,YAAY,CAAA;AAAA,KACnD;AACA,IAAQ,OAAA,CAAA,QAAA,GAAW,SAAU,YAAc,EAAA;AACzC,MAAO,OAAA,oBAAA,CAAqB,CAAE,CAAA,QAAA,CAAS,YAAY,CAAA;AAAA,KACrD;AACA,IAAA,OAAA,CAAQ,oBAAuB,GAAA,SAC7B,SACA,EAAA,WAAA,EACA,iBACA,EAAA;AACA,MAAA,OAAO,qBAAqB,CAAE,CAAA,oBAAA;AAAA,QAC5B,SAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACF;AAAA,KACF;AACA,IAAA,OAAA,CAAQ,gBAAgB,WAAY;AAClC,MAAO,OAAA,oBAAA,CAAqB,EAAE,aAAc,EAAA;AAAA,KAC9C;AACA,IAAA,OAAA,CAAQ,OAAU,GAAA,QAAA;AAAA;AAAA,CAAA,CAAA;;;ACjiBlB,IAAA,yBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAWA,IAAiB,YAAA,KAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,IAC1B,WAAY;AACX,MAAS,SAAA,wBAAA,CAAyB,YAAY,IAAM,EAAA;AAClD,QAAO,MAAA,CAAA,cAAA,CAAe,SAAU,CAAA,SAAA,EAAW,UAAY,EAAA;AAAA,UACrD,KAAK,WAAY;AACf,YAAQ,OAAA,CAAA,IAAA;AAAA,cACN,6DAAA;AAAA,cACA,KAAK,CAAC,CAAA;AAAA,cACN,KAAK,CAAC;AAAA,aACR;AAAA;AACF,SACD,CAAA;AAAA;AAEH,MAAA,SAAS,cAAc,aAAe,EAAA;AACpC,QAAI,IAAA,IAAA,KAAS,aAAiB,IAAA,QAAA,KAAa,OAAO,aAAA;AAChD,UAAO,OAAA,IAAA;AACT,QAAA,aAAA,GACG,qBAAyB,IAAA,aAAA,CAAc,qBAAqB,CAAA,IAC7D,cAAc,YAAY,CAAA;AAC5B,QAAO,OAAA,UAAA,KAAe,OAAO,aAAA,GAAgB,aAAgB,GAAA,IAAA;AAAA;AAE/D,MAAS,SAAA,QAAA,CAAS,gBAAgB,UAAY,EAAA;AAC5C,QAAA,cAAA,GAAA,CACI,iBAAiB,cAAe,CAAA,WAAA,MAC/B,cAAe,CAAA,WAAA,IAAe,eAAe,IAChD,CAAA,IAAA,YAAA;AACF,QAAI,IAAA,UAAA,GAAa,iBAAiB,GAAM,GAAA,UAAA;AACxC,QAAwC,uCAAA,CAAA,UAAU,MAC/C,OAAQ,CAAA,KAAA;AAAA,UACP,uPAAA;AAAA,UACA,UAAA;AAAA,UACA;AAAA,SACF,EACC,uCAAwC,CAAA,UAAU,CAAI,GAAA,IAAA,CAAA;AAAA;AAE3D,MAAS,SAAA,SAAA,CAAU,KAAO,EAAA,OAAA,EAAS,OAAS,EAAA;AAC1C,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AACb,QAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,QAAA,IAAA,CAAK,IAAO,GAAA,WAAA;AACZ,QAAA,IAAA,CAAK,UAAU,OAAW,IAAA,oBAAA;AAAA;AAE5B,MAAA,SAAS,cAAiB,GAAA;AAAA;AAC1B,MAAS,SAAA,aAAA,CAAc,KAAO,EAAA,OAAA,EAAS,OAAS,EAAA;AAC9C,QAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AACb,QAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,QAAA,IAAA,CAAK,IAAO,GAAA,WAAA;AACZ,QAAA,IAAA,CAAK,UAAU,OAAW,IAAA,oBAAA;AAAA;AAE5B,MAAA,SAAS,mBAAmB,KAAO,EAAA;AACjC,QAAA,OAAO,EAAK,GAAA,KAAA;AAAA;AAEd,MAAA,SAAS,uBAAuB,KAAO,EAAA;AACrC,QAAI,IAAA;AACF,UAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,UAAA,IAAI,wBAA2B,GAAA,KAAA;AAAA,iBACxB,CAAG,EAAA;AACV,UAA2B,wBAAA,GAAA,IAAA;AAAA;AAE7B,QAAA,IAAI,wBAA0B,EAAA;AAC5B,UAA2B,wBAAA,GAAA,OAAA;AAC3B,UAAA,IAAI,wBAAwB,wBAAyB,CAAA,KAAA;AACrD,UAAA,IAAI,iCACD,GAAA,UAAA,KAAe,OAAO,MAAA,IACrB,MAAO,CAAA,WAAA,IACP,KAAM,CAAA,MAAA,CAAO,WAAW,CAAA,IAC1B,KAAM,CAAA,WAAA,CAAY,IAClB,IAAA,QAAA;AACF,UAAsB,qBAAA,CAAA,IAAA;AAAA,YACpB,wBAAA;AAAA,YACA,0GAAA;AAAA,YACA;AAAA,WACF;AACA,UAAA,OAAO,mBAAmB,KAAK,CAAA;AAAA;AACjC;AAEF,MAAA,SAAS,yBAAyB,IAAM,EAAA;AACtC,QAAI,IAAA,IAAA,IAAQ,MAAa,OAAA,IAAA;AACzB,QAAA,IAAI,eAAe,OAAO,IAAA;AACxB,UAAA,OAAO,KAAK,QAAa,KAAA,sBAAA,GACrB,OACA,IAAK,CAAA,WAAA,IAAe,KAAK,IAAQ,IAAA,IAAA;AACvC,QAAI,IAAA,QAAA,KAAa,OAAO,IAAA,EAAa,OAAA,IAAA;AACrC,QAAA,QAAQ,IAAM;AAAA,UACZ,KAAK,mBAAA;AACH,YAAO,OAAA,UAAA;AAAA,UACT,KAAK,mBAAA;AACH,YAAO,OAAA,UAAA;AAAA,UACT,KAAK,sBAAA;AACH,YAAO,OAAA,YAAA;AAAA,UACT,KAAK,mBAAA;AACH,YAAO,OAAA,UAAA;AAAA,UACT,KAAK,wBAAA;AACH,YAAO,OAAA,cAAA;AAAA,UACT,KAAK,mBAAA;AACH,YAAO,OAAA,UAAA;AAAA;AAEX,QAAA,IAAI,aAAa,OAAO,IAAA;AACtB,UAAA,QACG,QAAa,KAAA,OAAO,IAAK,CAAA,GAAA,IACxB,OAAQ,CAAA,KAAA;AAAA,YACN;AAAA,WACF,EACF,KAAK,QACL;AAAA,YACA,KAAK,iBAAA;AACH,cAAO,OAAA,QAAA;AAAA,YACT,KAAK,kBAAA;AACH,cAAQ,OAAA,CAAA,IAAA,CAAK,eAAe,SAAa,IAAA,WAAA;AAAA,YAC3C,KAAK,mBAAA;AACH,cAAQ,OAAA,CAAA,IAAA,CAAK,QAAS,CAAA,WAAA,IAAe,SAAa,IAAA,WAAA;AAAA,YACpD,KAAK,sBAAA;AACH,cAAA,IAAI,YAAY,IAAK,CAAA,MAAA;AACrB,cAAA,IAAA,GAAO,IAAK,CAAA,WAAA;AACZ,cACI,IAAA,KAAA,IAAA,GAAO,SAAU,CAAA,WAAA,IAAe,SAAU,CAAA,IAAA,IAAQ,EACnD,EAAA,IAAA,GAAO,EAAO,KAAA,IAAA,GAAO,aAAgB,GAAA,IAAA,GAAO,GAAM,GAAA,YAAA,CAAA;AACrD,cAAO,OAAA,IAAA;AAAA,YACT,KAAK,eAAA;AACH,cACG,OAAA,SAAA,GAAY,IAAK,CAAA,WAAA,IAAe,IACjC,EAAA,IAAA,KAAS,YACL,SACA,GAAA,wBAAA,CAAyB,IAAK,CAAA,IAAI,CAAK,IAAA,MAAA;AAAA,YAE/C,KAAK,eAAA;AACH,cAAA,SAAA,GAAY,IAAK,CAAA,QAAA;AACjB,cAAA,IAAA,GAAO,IAAK,CAAA,KAAA;AACZ,cAAI,IAAA;AACF,gBAAO,OAAA,wBAAA,CAAyB,IAAK,CAAA,SAAS,CAAC,CAAA;AAAA,uBACxC,CAAG,EAAA;AAAA;AAAC;AAEnB,QAAO,OAAA,IAAA;AAAA;AAET,MAAA,SAAS,YAAY,IAAM,EAAA;AACzB,QAAI,IAAA,IAAA,KAAS,qBAA4B,OAAA,IAAA;AACzC,QAAA,IACE,aAAa,OAAO,IAAA,IACpB,IAAS,KAAA,IAAA,IACT,KAAK,QAAa,KAAA,eAAA;AAElB,UAAO,OAAA,OAAA;AACT,QAAI,IAAA;AACF,UAAI,IAAA,IAAA,GAAO,yBAAyB,IAAI,CAAA;AACxC,UAAO,OAAA,IAAA,GAAO,GAAM,GAAA,IAAA,GAAO,GAAM,GAAA,OAAA;AAAA,iBAC1B,CAAG,EAAA;AACV,UAAO,OAAA,OAAA;AAAA;AACT;AAEF,MAAA,SAAS,QAAW,GAAA;AAClB,QAAA,IAAI,aAAa,oBAAqB,CAAA,CAAA;AACtC,QAAA,OAAO,IAAS,KAAA,UAAA,GAAa,IAAO,GAAA,UAAA,CAAW,QAAS,EAAA;AAAA;AAE1D,MAAA,SAAS,YAAe,GAAA;AACtB,QAAA,OAAO,MAAM,uBAAuB,CAAA;AAAA;AAEtC,MAAA,SAAS,YAAY,MAAQ,EAAA;AAC3B,QAAA,IAAI,cAAe,CAAA,IAAA,CAAK,MAAQ,EAAA,KAAK,CAAG,EAAA;AACtC,UAAA,IAAI,MAAS,GAAA,MAAA,CAAO,wBAAyB,CAAA,MAAA,EAAQ,KAAK,CAAE,CAAA,GAAA;AAC5D,UAAI,IAAA,MAAA,IAAU,MAAO,CAAA,cAAA,EAAuB,OAAA,KAAA;AAAA;AAE9C,QAAA,OAAO,WAAW,MAAO,CAAA,GAAA;AAAA;AAE3B,MAAS,SAAA,0BAAA,CAA2B,OAAO,WAAa,EAAA;AACtD,QAAA,SAAS,qBAAwB,GAAA;AAC/B,UACI,0BAAA,KAAA,0BAAA,GAA6B,MAC/B,OAAQ,CAAA,KAAA;AAAA,YACN,yOAAA;AAAA,YACA;AAAA,WACF,CAAA;AAAA;AAEJ,QAAA,qBAAA,CAAsB,cAAiB,GAAA,IAAA;AACvC,QAAO,MAAA,CAAA,cAAA,CAAe,OAAO,KAAO,EAAA;AAAA,UAClC,GAAK,EAAA,qBAAA;AAAA,UACL,YAAc,EAAA;AAAA,SACf,CAAA;AAAA;AAEH,MAAA,SAAS,sCAAyC,GAAA;AAChD,QAAI,IAAA,aAAA,GAAgB,wBAAyB,CAAA,IAAA,CAAK,IAAI,CAAA;AACtD,QAAA,sBAAA,CAAuB,aAAa,CAChC,KAAA,sBAAA,CAAuB,aAAa,CAAA,GAAI,MAC1C,OAAQ,CAAA,KAAA;AAAA,UACN;AAAA,SACF,CAAA;AACF,QAAA,aAAA,GAAgB,KAAK,KAAM,CAAA,GAAA;AAC3B,QAAO,OAAA,MAAA,KAAW,gBAAgB,aAAgB,GAAA,IAAA;AAAA;AAEpD,MAAS,SAAA,YAAA,CACP,MACA,GACA,EAAA,IAAA,EACA,QACA,KACA,EAAA,KAAA,EACA,YACA,SACA,EAAA;AACA,QAAA,IAAA,GAAO,KAAM,CAAA,GAAA;AACb,QAAO,IAAA,GAAA;AAAA,UACL,QAAU,EAAA,kBAAA;AAAA,UACV,IAAA;AAAA,UACA,GAAA;AAAA,UACA,KAAA;AAAA,UACA,MAAQ,EAAA;AAAA,SACV;AACA,QAAA,IAAA,MAAU,WAAW,IAAO,GAAA,IAAA,GAAO,QAC/B,MAAO,CAAA,cAAA,CAAe,MAAM,KAAO,EAAA;AAAA,UACjC,UAAY,EAAA,KAAA;AAAA,UACZ,GAAK,EAAA;AAAA,SACN,CACD,GAAA,MAAA,CAAO,cAAe,CAAA,IAAA,EAAM,KAAO,EAAA,EAAE,UAAY,EAAA,KAAA,EAAI,KAAO,EAAA,IAAA,EAAM,CAAA;AACtE,QAAA,IAAA,CAAK,SAAS,EAAC;AACf,QAAO,MAAA,CAAA,cAAA,CAAe,IAAK,CAAA,MAAA,EAAQ,WAAa,EAAA;AAAA,UAC9C,YAAc,EAAA,KAAA;AAAA,UACd,UAAY,EAAA,KAAA;AAAA,UACZ,QAAU,EAAA,IAAA;AAAA,UACV,KAAO,EAAA;AAAA,SACR,CAAA;AACD,QAAO,MAAA,CAAA,cAAA,CAAe,MAAM,YAAc,EAAA;AAAA,UACxC,YAAc,EAAA,KAAA;AAAA,UACd,UAAY,EAAA,KAAA;AAAA,UACZ,QAAU,EAAA,IAAA;AAAA,UACV,KAAO,EAAA;AAAA,SACR,CAAA;AACD,QAAO,MAAA,CAAA,cAAA,CAAe,MAAM,aAAe,EAAA;AAAA,UACzC,YAAc,EAAA,KAAA;AAAA,UACd,UAAY,EAAA,KAAA;AAAA,UACZ,QAAU,EAAA,IAAA;AAAA,UACV,KAAO,EAAA;AAAA,SACR,CAAA;AACD,QAAO,MAAA,CAAA,cAAA,CAAe,MAAM,YAAc,EAAA;AAAA,UACxC,YAAc,EAAA,KAAA;AAAA,UACd,UAAY,EAAA,KAAA;AAAA,UACZ,QAAU,EAAA,IAAA;AAAA,UACV,KAAO,EAAA;AAAA,SACR,CAAA;AACD,QAAO,MAAA,CAAA,MAAA,KAAW,OAAO,MAAO,CAAA,IAAA,CAAK,KAAK,CAAG,EAAA,MAAA,CAAO,OAAO,IAAI,CAAA,CAAA;AAC/D,QAAO,OAAA,IAAA;AAAA;AAET,MAAS,SAAA,kBAAA,CAAmB,YAAY,MAAQ,EAAA;AAC9C,QAAS,MAAA,GAAA,YAAA;AAAA,UACP,UAAW,CAAA,IAAA;AAAA,UACX,MAAA;AAAA,UACA,MAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAW,CAAA,MAAA;AAAA,UACX,UAAW,CAAA,KAAA;AAAA,UACX,UAAW,CAAA,WAAA;AAAA,UACX,UAAW,CAAA;AAAA,SACb;AACA,QAAA,UAAA,CAAW,MACR,KAAA,MAAA,CAAO,MAAO,CAAA,SAAA,GAAY,WAAW,MAAO,CAAA,SAAA,CAAA;AAC/C,QAAO,OAAA,MAAA;AAAA;AAET,MAAA,SAAS,eAAe,MAAQ,EAAA;AAC9B,QAAA,OACE,aAAa,OAAO,MAAA,IACpB,IAAS,KAAA,MAAA,IACT,OAAO,QAAa,KAAA,kBAAA;AAAA;AAGxB,MAAA,SAAS,OAAO,GAAK,EAAA;AACnB,QAAA,IAAI,aAAgB,GAAA,EAAE,GAAK,EAAA,IAAA,EAAM,KAAK,IAAK,EAAA;AAC3C,QAAA,OACE,GACA,GAAA,GAAA,CAAI,OAAQ,CAAA,OAAA,EAAS,SAAU,KAAO,EAAA;AACpC,UAAA,OAAO,cAAc,KAAK,CAAA;AAAA,SAC3B,CAAA;AAAA;AAGL,MAAS,SAAA,aAAA,CAAc,SAAS,KAAO,EAAA;AACrC,QAAA,OAAO,aAAa,OAAO,OAAA,IACzB,SAAS,OACT,IAAA,IAAA,IAAQ,QAAQ,GACb,IAAA,sBAAA,CAAuB,QAAQ,GAAG,CAAA,EAAG,OAAO,EAAK,GAAA,OAAA,CAAQ,GAAG,CAC7D,IAAA,KAAA,CAAM,SAAS,EAAE,CAAA;AAAA;AAEvB,MAAA,SAAS,MAAS,GAAA;AAAA;AAClB,MAAA,SAAS,gBAAgB,QAAU,EAAA;AACjC,QAAA,QAAQ,SAAS,MAAQ;AAAA,UACvB,KAAK,WAAA;AACH,YAAA,OAAO,QAAS,CAAA,KAAA;AAAA,UAClB,KAAK,UAAA;AACH,YAAA,MAAM,QAAS,CAAA,MAAA;AAAA,UACjB;AACE,YAAA,QACG,QAAa,KAAA,OAAO,QAAS,CAAA,MAAA,GAC1B,QAAS,CAAA,IAAA,CAAK,MAAQ,EAAA,MAAM,CAC1B,IAAA,QAAA,CAAS,MAAS,GAAA,SAAA,EACpB,QAAS,CAAA,IAAA;AAAA,cACP,SAAU,cAAgB,EAAA;AACxB,gBAAA,SAAA,KAAc,SAAS,MACnB,KAAA,QAAA,CAAS,MAAS,GAAA,WAAA,EACnB,SAAS,KAAQ,GAAA,cAAA,CAAA;AAAA,eACtB;AAAA,cACA,SAAU,KAAO,EAAA;AACf,gBAAA,SAAA,KAAc,SAAS,MACnB,KAAA,QAAA,CAAS,MAAS,GAAA,UAAA,EACnB,SAAS,MAAS,GAAA,KAAA,CAAA;AAAA;AACvB,aACF,CAAA,EACJ,SAAS,MACT;AAAA,cACA,KAAK,WAAA;AACH,gBAAA,OAAO,QAAS,CAAA,KAAA;AAAA,cAClB,KAAK,UAAA;AACH,gBAAA,MAAM,QAAS,CAAA,MAAA;AAAA;AACnB;AAEJ,QAAM,MAAA,QAAA;AAAA;AAER,MAAA,SAAS,YAAa,CAAA,QAAA,EAAU,KAAO,EAAA,aAAA,EAAe,WAAW,QAAU,EAAA;AACzE,QAAA,IAAI,OAAO,OAAO,QAAA;AAClB,QAAA,IAAI,WAAgB,KAAA,IAAA,IAAQ,SAAc,KAAA,IAAA,EAAiB,QAAA,GAAA,IAAA;AAC3D,QAAA,IAAI,cAAiB,GAAA,KAAA;AACrB,QAAI,IAAA,IAAA,KAAS,UAA2B,cAAA,GAAA,IAAA;AAAA;AAEtC,UAAA,QAAQ,IAAM;AAAA,YACZ,KAAK,QAAA;AAAA,YACL,KAAK,QAAA;AAAA,YACL,KAAK,QAAA;AACH,cAAiB,cAAA,GAAA,IAAA;AACjB,cAAA;AAAA,YACF,KAAK,QAAA;AACH,cAAA,QAAQ,SAAS,QAAU;AAAA,gBACzB,KAAK,kBAAA;AAAA,gBACL,KAAK,iBAAA;AACH,kBAAiB,cAAA,GAAA,IAAA;AACjB,kBAAA;AAAA,gBACF,KAAK,eAAA;AACH,kBACG,OAAA,cAAA,GAAiB,SAAS,KAC3B,EAAA,YAAA;AAAA,oBACE,cAAA,CAAe,SAAS,QAAQ,CAAA;AAAA,oBAChC,KAAA;AAAA,oBACA,aAAA;AAAA,oBACA,SAAA;AAAA,oBACA;AAAA,mBACF;AAAA;AAEN;AAEN,QAAA,IAAI,cAAgB,EAAA;AAClB,UAAiB,cAAA,GAAA,QAAA;AACjB,UAAA,QAAA,GAAW,SAAS,cAAc,CAAA;AAClC,UAAA,IAAI,WACF,EAAO,KAAA,SAAA,GAAY,MAAM,aAAc,CAAA,cAAA,EAAgB,CAAC,CAAI,GAAA,SAAA;AAC9D,UAAA,WAAA,CAAY,QAAQ,CACd,IAAA,aAAA,GAAgB,IAClB,IAAQ,IAAA,QAAA,KACL,gBACC,QAAS,CAAA,OAAA,CAAQ,4BAA4B,KAAK,CAAA,GAAI,MAC1D,YAAa,CAAA,QAAA,EAAU,OAAO,aAAe,EAAA,EAAA,EAAI,SAAU,CAAG,EAAA;AAC5D,YAAO,OAAA,CAAA;AAAA,WACR,CACD,IAAA,IAAA,IAAQ,aACP,cAAe,CAAA,QAAQ,MACrB,IAAQ,IAAA,QAAA,CAAS,QACd,cAAkB,IAAA,cAAA,CAAe,QAAQ,QAAS,CAAA,GAAA,IAClD,uBAAuB,QAAS,CAAA,GAAG,IACtC,aAAgB,GAAA,kBAAA;AAAA,YACf,QAAA;AAAA,YACA,aACG,IAAA,IAAA,IAAQ,QAAS,CAAA,GAAA,IACjB,cAAkB,IAAA,cAAA,CAAe,GAAQ,KAAA,QAAA,CAAS,GAC/C,GAAA,EAAA,GAAA,CACC,EAAK,GAAA,QAAA,CAAS,GAAK,EAAA,OAAA;AAAA,cAClB,0BAAA;AAAA,cACA;AAAA,gBACE,GACR,CAAA,GAAA;AAAA,WACJ,EACA,EAAO,KAAA,SAAA,IACL,IAAQ,IAAA,cAAA,IACR,eAAe,cAAc,CAAA,IAC7B,IAAQ,IAAA,cAAA,CAAe,GACvB,IAAA,cAAA,CAAe,UACf,CAAC,cAAA,CAAe,MAAO,CAAA,SAAA,KACtB,aAAc,CAAA,MAAA,CAAO,SAAY,GAAA,CAAA,CAAA,EACnC,QAAW,GAAA,aAAA,CAAA,EACd,KAAM,CAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AACvB,UAAO,OAAA,CAAA;AAAA;AAET,QAAiB,cAAA,GAAA,CAAA;AACjB,QAAW,QAAA,GAAA,EAAA,KAAO,SAAY,GAAA,GAAA,GAAM,SAAY,GAAA,GAAA;AAChD,QAAA,IAAI,YAAY,QAAQ,CAAA;AACtB,UAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,QAAA,CAAS,MAAQ,EAAA,CAAA,EAAA;AACnC,YAAC,SAAA,GAAY,QAAS,CAAA,CAAC,CACpB,EAAA,IAAA,GAAO,WAAW,aAAc,CAAA,SAAA,EAAW,CAAC,CAAA,EAC5C,cAAkB,IAAA,YAAA;AAAA,cACjB,SAAA;AAAA,cACA,KAAA;AAAA,cACA,aAAA;AAAA,cACA,IAAA;AAAA,cACA;AAAA,aACF;AAAA,aAAA,IACK,CAAI,GAAA,aAAA,CAAc,QAAQ,CAAA,EAAI,eAAe,OAAO,CAAA;AAC7D,UAAA,KACE,CAAM,KAAA,QAAA,CAAS,OACZ,KAAA,gBAAA,IACC,OAAQ,CAAA,IAAA;AAAA,YACN;AAAA,WAEH,EAAA,gBAAA,GAAmB,IACpB,CAAA,EAAA,QAAA,GAAW,EAAE,IAAK,CAAA,QAAQ,CAC1B,EAAA,CAAA,GAAI,CACN,EAAA,CAAA,CAAE,SAAY,GAAA,QAAA,CAAS,MAAQ,EAAA,IAAA;AAG/B,YAAC,SAAA,GAAY,UAAU,KACpB,EAAA,IAAA,GAAO,WAAW,aAAc,CAAA,SAAA,EAAW,CAAG,EAAA,CAAA,EAC9C,cAAkB,IAAA,YAAA;AAAA,cACjB,SAAA;AAAA,cACA,KAAA;AAAA,cACA,aAAA;AAAA,cACA,IAAA;AAAA,cACA;AAAA,aACF;AAAA,aAAA,IACG,aAAa,IAAM,EAAA;AAC1B,UAAI,IAAA,UAAA,KAAe,OAAO,QAAS,CAAA,IAAA;AACjC,YAAO,OAAA,YAAA;AAAA,cACL,gBAAgB,QAAQ,CAAA;AAAA,cACxB,KAAA;AAAA,cACA,aAAA;AAAA,cACA,SAAA;AAAA,cACA;AAAA,aACF;AACF,UAAA,KAAA,GAAQ,OAAO,QAAQ,CAAA;AACvB,UAAM,MAAA,KAAA;AAAA,YACJ,iDACG,IAAA,iBAAA,KAAsB,KACnB,GAAA,oBAAA,GAAuB,MAAO,CAAA,IAAA,CAAK,QAAQ,CAAA,CAAE,IAAK,CAAA,IAAI,CAAI,GAAA,GAAA,GAC1D,KACJ,CAAA,GAAA;AAAA,WACJ;AAAA;AAEF,QAAO,OAAA,cAAA;AAAA;AAET,MAAS,SAAA,WAAA,CAAY,QAAU,EAAA,IAAA,EAAM,OAAS,EAAA;AAC5C,QAAI,IAAA,IAAA,IAAQ,UAAiB,OAAA,QAAA;AAC7B,QAAI,IAAA,MAAA,GAAS,EAAC,EACZ,KAAQ,GAAA,CAAA;AACV,QAAA,YAAA,CAAa,QAAU,EAAA,MAAA,EAAQ,EAAI,EAAA,EAAA,EAAI,SAAU,KAAO,EAAA;AACtD,UAAA,OAAO,IAAK,CAAA,IAAA,CAAK,OAAS,EAAA,KAAA,EAAO,KAAO,EAAA,CAAA;AAAA,SACzC,CAAA;AACD,QAAO,OAAA,MAAA;AAAA;AAET,MAAA,SAAS,gBAAgB,OAAS,EAAA;AAChC,QAAI,IAAA,EAAA,KAAO,QAAQ,OAAS,EAAA;AAC1B,UAAA,IAAI,OAAO,OAAQ,CAAA,OAAA;AACnB,UAAA,IAAA,GAAO,IAAK,EAAA;AACZ,UAAK,IAAA,CAAA,IAAA;AAAA,YACH,SAAU,YAAc,EAAA;AACtB,cAAA,IAAI,CAAM,KAAA,OAAA,CAAQ,OAAW,IAAA,EAAA,KAAO,OAAQ,CAAA,OAAA;AAC1C,gBAAC,OAAQ,CAAA,OAAA,GAAU,CAAK,EAAA,OAAA,CAAQ,OAAU,GAAA,YAAA;AAAA,aAC9C;AAAA,YACA,SAAU,KAAO,EAAA;AACf,cAAA,IAAI,CAAM,KAAA,OAAA,CAAQ,OAAW,IAAA,EAAA,KAAO,OAAQ,CAAA,OAAA;AAC1C,gBAAC,OAAQ,CAAA,OAAA,GAAU,CAAK,EAAA,OAAA,CAAQ,OAAU,GAAA,KAAA;AAAA;AAC9C,WACF;AACA,UAAA,EAAA,KAAO,QAAQ,OACX,KAAA,OAAA,CAAQ,OAAU,GAAA,CAAA,EAAK,QAAQ,OAAU,GAAA,IAAA,CAAA;AAAA;AAE/C,QAAA,IAAI,MAAM,OAAQ,CAAA,OAAA;AAChB,UAAA,OACG,IAAO,GAAA,OAAA,CAAQ,OAChB,EAAA,MAAA,KAAW,QACT,OAAQ,CAAA,KAAA;AAAA,YACN,mOAAA;AAAA,YACA;AAAA,WACF,EACF,SAAa,IAAA,IAAA,IACX,OAAQ,CAAA,KAAA;AAAA,YACN,uKAAA;AAAA,YACA;AAAA,aAEJ,IAAK,CAAA,OAAA;AAET,QAAA,MAAM,OAAQ,CAAA,OAAA;AAAA;AAEhB,MAAA,SAAS,iBAAoB,GAAA;AAC3B,QAAA,IAAI,aAAa,oBAAqB,CAAA,CAAA;AACtC,QAAA,IAAA,KAAS,cACP,OAAQ,CAAA,KAAA;AAAA,UACN;AAAA,SACF;AACF,QAAO,OAAA,UAAA;AAAA;AAET,MAAA,SAAS,IAAO,GAAA;AAAA;AAChB,MAAA,SAAS,YAAY,IAAM,EAAA;AACzB,QAAA,IAAI,IAAS,KAAA,eAAA;AACX,UAAI,IAAA;AACF,YAAA,IAAI,iBAAiB,SAAY,GAAA,IAAA,CAAK,QAAU,EAAA,KAAA,CAAM,GAAG,CAAC,CAAA;AAC1D,YAAmB,eAAA,GAAA,CAAA,MAAA,IAAU,MAAO,CAAA,aAAa,CAAG,EAAA,IAAA;AAAA,cAClD,MAAA;AAAA,cACA;AAAA,aACA,CAAA,YAAA;AAAA,mBACK,IAAM,EAAA;AACb,YAAA,eAAA,GAAkB,SAAU,QAAU,EAAA;AACpC,cAAA,KAAA,KAAO,+BACH,0BAA6B,GAAA,IAAA,EAC/B,WAAgB,KAAA,OAAO,kBACrB,OAAQ,CAAA,KAAA;AAAA,gBACN;AAAA,eACF,CAAA;AACJ,cAAI,IAAA,OAAA,GAAU,IAAI,cAAe,EAAA;AACjC,cAAA,OAAA,CAAQ,MAAM,SAAY,GAAA,QAAA;AAC1B,cAAQ,OAAA,CAAA,KAAA,CAAM,YAAY,MAAM,CAAA;AAAA,aAClC;AAAA;AAEJ,QAAA,OAAO,gBAAgB,IAAI,CAAA;AAAA;AAE7B,MAAA,SAAS,gBAAgB,MAAQ,EAAA;AAC/B,QAAO,OAAA,CAAA,GAAI,MAAO,CAAA,MAAA,IAAU,UAAe,KAAA,OAAO,cAC9C,GAAA,IAAI,cAAe,CAAA,MAAM,CACzB,GAAA,MAAA,CAAO,CAAC,CAAA;AAAA;AAEd,MAAS,SAAA,WAAA,CAAY,cAAc,iBAAmB,EAAA;AACpD,QAAsB,iBAAA,KAAA,aAAA,GAAgB,KACpC,OAAQ,CAAA,KAAA;AAAA,UACN;AAAA,SACF;AACF,QAAgB,aAAA,GAAA,iBAAA;AAAA;AAElB,MAAS,SAAA,4BAAA,CAA6B,WAAa,EAAA,OAAA,EAAS,MAAQ,EAAA;AAClE,QAAA,IAAI,QAAQ,oBAAqB,CAAA,QAAA;AACjC,QAAA,IAAI,IAAS,KAAA,KAAA;AACX,UAAA,IAAI,MAAM,KAAM,CAAA,MAAA;AACd,YAAI,IAAA;AACF,cAAA,aAAA,CAAc,KAAK,CAAA;AACnB,cAAA,WAAA,CAAY,WAAY;AACtB,gBAAO,OAAA,4BAAA,CAA6B,WAAa,EAAA,OAAA,EAAS,MAAM,CAAA;AAAA,eACjE,CAAA;AACD,cAAA;AAAA,qBACO,KAAO,EAAA;AACd,cAAqB,oBAAA,CAAA,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA;AAC9C,oCACwB,QAAW,GAAA,IAAA;AACvC,QAAA,CAAA,GAAI,qBAAqB,YAAa,CAAA,MAAA,IAChC,KAAQ,GAAA,eAAA,CAAgB,qBAAqB,YAAY,CAAA,EAC1D,oBAAqB,CAAA,YAAA,CAAa,SAAS,CAC5C,EAAA,MAAA,CAAO,KAAK,CAAA,IACZ,QAAQ,WAAW,CAAA;AAAA;AAEzB,MAAA,SAAS,cAAc,KAAO,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAY,EAAA;AACf,UAAa,UAAA,GAAA,IAAA;AACb,UAAA,IAAI,CAAI,GAAA,CAAA;AACR,UAAI,IAAA;AACF,YAAO,OAAA,CAAA,GAAI,KAAM,CAAA,MAAA,EAAQ,CAAK,EAAA,EAAA;AAC5B,cAAI,IAAA,QAAA,GAAW,MAAM,CAAC,CAAA;AACtB,cAAG,GAAA;AACD,gBAAA,oBAAA,CAAqB,aAAgB,GAAA,KAAA;AACrC,gBAAI,IAAA,YAAA,GAAe,SAAS,KAAE,CAAA;AAC9B,gBAAA,IAAI,SAAS,YAAc,EAAA;AACzB,kBAAA,IAAI,qBAAqB,aAAe,EAAA;AACtC,oBAAA,KAAA,CAAM,CAAC,CAAI,GAAA,QAAA;AACX,oBAAM,KAAA,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AACjB,oBAAA;AAAA;AAEF,kBAAW,QAAA,GAAA,YAAA;AAAA,iBACN,MAAA;AAAA,eACA,QAAA,CAAA;AAAA;AAEX,YAAA,KAAA,CAAM,MAAS,GAAA,CAAA;AAAA,mBACR,KAAO,EAAA;AACd,YAAM,KAAA,CAAA,MAAA,CAAO,GAAG,CAAI,GAAA,CAAC,GAAG,oBAAqB,CAAA,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA,WACpE,SAAA;AACA,YAAa,UAAA,GAAA,KAAA;AAAA;AACf;AACF;AAEF,MAAgB,WAAA,KAAA,OAAO,kCACrB,UACE,KAAA,OAAO,+BAA+B,2BACxC,IAAA,8BAAA,CAA+B,2BAA4B,CAAA,KAAA,EAAO,CAAA;AACpE,MAAI,IAAA,kBAAA,GAAqB,OAAO,GAAI,CAAA,4BAA4B,GAC9D,iBAAoB,GAAA,MAAA,CAAO,GAAI,CAAA,cAAc,CAC7C,EAAA,mBAAA,GAAsB,OAAO,GAAI,CAAA,gBAAgB,CACjD,EAAA,sBAAA,GAAyB,MAAO,CAAA,GAAA,CAAI,mBAAmB,CACvD,EAAA,mBAAA,GAAsB,MAAO,CAAA,GAAA,CAAI,gBAAgB,CAAA;AAEnD,MAAI,IAAA,mBAAA,GAAsB,OAAO,GAAI,CAAA,gBAAgB,GACnD,kBAAqB,GAAA,MAAA,CAAO,IAAI,eAAe,CAAA,EAC/C,yBAAyB,MAAO,CAAA,GAAA,CAAI,mBAAmB,CACvD,EAAA,mBAAA,GAAsB,OAAO,GAAI,CAAA,gBAAgB,CACjD,EAAA,wBAAA,GAA2B,MAAO,CAAA,GAAA,CAAI,qBAAqB,CAC3D,EAAA,eAAA,GAAkB,OAAO,GAAI,CAAA,YAAY,GACzC,eAAkB,GAAA,MAAA,CAAO,IAAI,YAAY,CAAA,EACzC,sBAAsB,MAAO,CAAA,GAAA,CAAI,gBAAgB,CACjD,EAAA,qBAAA,GAAwB,OAAO,QAC/B,EAAA,uCAAA,GAA0C,EAAC,EAC3C,oBAAuB,GAAA;AAAA,QACrB,WAAW,WAAY;AACrB,UAAO,OAAA,KAAA;AAAA,SACT;AAAA,QACA,kBAAA,EAAoB,SAAU,cAAgB,EAAA;AAC5C,UAAA,QAAA,CAAS,gBAAgB,aAAa,CAAA;AAAA,SACxC;AAAA,QACA,mBAAA,EAAqB,SAAU,cAAgB,EAAA;AAC7C,UAAA,QAAA,CAAS,gBAAgB,cAAc,CAAA;AAAA,SACzC;AAAA,QACA,eAAA,EAAiB,SAAU,cAAgB,EAAA;AACzC,UAAA,QAAA,CAAS,gBAAgB,UAAU,CAAA;AAAA;AACrC,OAEF,EAAA,MAAA,GAAS,MAAO,CAAA,MAAA,EAChB,cAAc,EAAC;AACjB,MAAA,MAAA,CAAO,OAAO,WAAW,CAAA;AACzB,MAAU,SAAA,CAAA,SAAA,CAAU,mBAAmB,EAAC;AACxC,MAAA,SAAA,CAAU,SAAU,CAAA,QAAA,GAAW,SAAU,YAAA,EAAc,QAAU,EAAA;AAC/D,QAAA,IACE,aAAa,OAAO,YAAA,IACpB,UAAe,KAAA,OAAO,gBACtB,IAAQ,IAAA,YAAA;AAER,UAAM,MAAA,KAAA;AAAA,YACJ;AAAA,WACF;AACF,QAAA,IAAA,CAAK,OAAQ,CAAA,eAAA,CAAgB,IAAM,EAAA,YAAA,EAAc,UAAU,UAAU,CAAA;AAAA,OACvE;AACA,MAAU,SAAA,CAAA,SAAA,CAAU,WAAc,GAAA,SAAU,QAAU,EAAA;AACpD,QAAA,IAAA,CAAK,OAAQ,CAAA,kBAAA,CAAmB,IAAM,EAAA,QAAA,EAAU,aAAa,CAAA;AAAA,OAC/D;AACA,MAAA,IAAI,cAAiB,GAAA;AAAA,QACjB,SAAW,EAAA;AAAA,UACT,WAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,YAAc,EAAA;AAAA,UACZ,cAAA;AAAA,UACA;AAAA;AACF,OAEF,EAAA,MAAA;AACF,MAAA,KAAK,MAAU,IAAA,cAAA;AACb,QAAA,cAAA,CAAe,eAAe,MAAM,CAAA,IAClC,yBAAyB,MAAQ,EAAA,cAAA,CAAe,MAAM,CAAC,CAAA;AAC3D,MAAA,cAAA,CAAe,YAAY,SAAU,CAAA,SAAA;AACrC,MAAiB,cAAA,GAAA,aAAA,CAAc,SAAY,GAAA,IAAI,cAAe,EAAA;AAC9D,MAAA,cAAA,CAAe,WAAc,GAAA,aAAA;AAC7B,MAAO,MAAA,CAAA,cAAA,EAAgB,UAAU,SAAS,CAAA;AAC1C,MAAA,cAAA,CAAe,oBAAuB,GAAA,IAAA;AACtC,MAAI,IAAA,WAAA,GAAc,MAAM,OACtB,EAAA,sBAAA,GAAyB,OAAO,GAAI,CAAA,wBAAwB,GAC5D,oBAAuB,GAAA;AAAA,QACrB,CAAG,EAAA,IAAA;AAAA,QACH,CAAG,EAAA,IAAA;AAAA,QACH,CAAG,EAAA,IAAA;AAAA,QACH,CAAG,EAAA,IAAA;AAAA,QACH,CAAG,EAAA,IAAA;AAAA,QACH,QAAU,EAAA,IAAA;AAAA,QACV,gBAAkB,EAAA,KAAA;AAAA,QAClB,uBAAyB,EAAA,KAAA;AAAA,QACzB,aAAe,EAAA,KAAA;AAAA,QACf,cAAc,EAAC;AAAA,QACf,eAAiB,EAAA,IAAA;AAAA,QACjB,0BAA4B,EAAA;AAAA,OAC9B,EACA,cAAiB,GAAA,MAAA,CAAO,SAAU,CAAA,cAAA,EAClC,aAAa,OAAQ,CAAA,UAAA,GACjB,OAAQ,CAAA,UAAA,GACR,WAAY;AACV,QAAO,OAAA,IAAA;AAAA,OACT;AACN,MAAiB,cAAA,GAAA;AAAA,QACf,0BAAA,EAA4B,SAAU,iBAAmB,EAAA;AACvD,UAAA,OAAO,iBAAkB,EAAA;AAAA;AAC3B,OACF;AACA,MAAA,IAAI,0BAA4B,EAAA,yBAAA;AAChC,MAAA,IAAI,yBAAyB,EAAC;AAC9B,MAAA,IAAI,yBAAyB,cAC3B,CAAA,0BACF,EAAE,IAAK,CAAA,cAAA,EAAgB,YAAY,CAAE,EAAA;AACrC,MAAA,IAAI,qBAAwB,GAAA,UAAA,CAAW,WAAY,CAAA,YAAY,CAAC,CAAA;AAChE,MAAI,IAAA,gBAAA,GAAmB,KACrB,EAAA,0BAAA,GAA6B,MAC7B,EAAA,iBAAA,GACE,eAAe,OAAO,WAAA,GAClB,WACA,GAAA,SAAU,KAAO,EAAA;AACf,QAAA,IACE,aAAa,OAAO,MAAA,IACpB,UAAe,KAAA,OAAO,OAAO,UAC7B,EAAA;AACA,UAAA,IAAI,KAAQ,GAAA,IAAI,MAAO,CAAA,UAAA,CAAW,OAAS,EAAA;AAAA,YACzC,OAAS,EAAA,IAAA;AAAA,YACT,UAAY,EAAA,IAAA;AAAA,YACZ,OACE,EAAA,QAAA,KAAa,OAAO,KAAA,IACpB,SAAS,KACT,IAAA,QAAA,KAAa,OAAO,KAAA,CAAM,UACtB,MAAO,CAAA,KAAA,CAAM,OAAO,CAAA,GACpB,OAAO,KAAK,CAAA;AAAA,YAClB;AAAA,WACD,CAAA;AACD,UAAA,IAAI,CAAC,MAAA,CAAO,aAAc,CAAA,KAAK,CAAG,EAAA;AAAA,mBAElC,QAAa,KAAA,OAAO,WACpB,UAAe,KAAA,OAAO,QAAQ,IAC9B,EAAA;AACA,UAAQ,OAAA,CAAA,IAAA,CAAK,qBAAqB,KAAK,CAAA;AACvC,UAAA;AAAA;AAEF,QAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,SAE3B,0BAA6B,GAAA,KAAA,EAC7B,eAAkB,GAAA,IAAA,EAClB,gBAAgB,CAChB,EAAA,iBAAA,GAAoB,KACpB,EAAA,UAAA,GAAa,OACb,sBACE,GAAA,UAAA,KAAe,OAAO,cAAA,GAClB,SAAU,QAAU,EAAA;AAClB,QAAA,cAAA,CAAe,WAAY;AACzB,UAAA,OAAO,eAAe,QAAQ,CAAA;AAAA,SAC/B,CAAA;AAAA,OAEH,GAAA,WAAA;AACR,MAAA,cAAA,GAAiB,OAAO,MAAO,CAAA;AAAA,QAC7B,SAAW,EAAA,IAAA;AAAA,QACX,CAAA,EAAG,SAAU,IAAM,EAAA;AACjB,UAAO,OAAA,iBAAA,EAAoB,CAAA,YAAA,CAAa,IAAI,CAAA;AAAA;AAC9C,OACD,CAAA;AACD,MAAA,OAAA,CAAQ,QAAW,GAAA;AAAA,QACjB,GAAK,EAAA,WAAA;AAAA,QACL,OAAS,EAAA,SAAU,QAAU,EAAA,WAAA,EAAa,cAAgB,EAAA;AACxD,UAAA,WAAA;AAAA,YACE,QAAA;AAAA,YACA,WAAY;AACV,cAAY,WAAA,CAAA,KAAA,CAAM,MAAM,SAAS,CAAA;AAAA,aACnC;AAAA,YACA;AAAA,WACF;AAAA,SACF;AAAA,QACA,KAAA,EAAO,SAAU,QAAU,EAAA;AACzB,UAAA,IAAI,CAAI,GAAA,CAAA;AACR,UAAA,WAAA,CAAY,UAAU,WAAY;AAChC,YAAA,CAAA,EAAA;AAAA,WACD,CAAA;AACD,UAAO,OAAA,CAAA;AAAA,SACT;AAAA,QACA,OAAA,EAAS,SAAU,QAAU,EAAA;AAC3B,UACE,OAAA,WAAA,CAAY,QAAU,EAAA,SAAU,KAAO,EAAA;AACrC,YAAO,OAAA,KAAA;AAAA,WACR,KAAK,EAAC;AAAA,SAEX;AAAA,QACA,IAAA,EAAM,SAAU,QAAU,EAAA;AACxB,UAAI,IAAA,CAAC,eAAe,QAAQ,CAAA;AAC1B,YAAM,MAAA,KAAA;AAAA,cACJ;AAAA,aACF;AACF,UAAO,OAAA,QAAA;AAAA;AACT,OACF;AACA,MAAA,OAAA,CAAQ,SAAY,GAAA,SAAA;AACpB,MAAA,OAAA,CAAQ,QAAW,GAAA,mBAAA;AACnB,MAAA,OAAA,CAAQ,QAAW,GAAA,mBAAA;AACnB,MAAA,OAAA,CAAQ,aAAgB,GAAA,aAAA;AACxB,MAAA,OAAA,CAAQ,UAAa,GAAA,sBAAA;AACrB,MAAA,OAAA,CAAQ,QAAW,GAAA,mBAAA;AACnB,MAAA,OAAA,CAAQ,+DACN,GAAA,oBAAA;AACF,MAAA,OAAA,CAAQ,kBAAqB,GAAA,cAAA;AAC7B,MAAQ,OAAA,CAAA,GAAA,GAAM,SAAU,QAAU,EAAA;AAChC,QAAI,IAAA,YAAA,GAAe,oBAAqB,CAAA,QAAA,EACtC,iBAAoB,GAAA,aAAA;AACtB,QAAA,aAAA,EAAA;AACA,QAAI,IAAA,KAAA,GAAS,qBAAqB,QAC9B,GAAA,IAAA,KAAS,eAAe,YAAe,GAAA,IACzC,eAAkB,GAAA,KAAA;AACpB,QAAI,IAAA;AACF,UAAA,IAAI,SAAS,QAAS,EAAA;AAAA,iBACf,KAAO,EAAA;AACd,UAAqB,oBAAA,CAAA,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA;AAE9C,QAAI,IAAA,CAAA,GAAI,qBAAqB,YAAa,CAAA,MAAA;AACxC,UAAA,MACG,WAAY,CAAA,YAAA,EAAc,iBAAiB,CAAA,EAC3C,QAAW,GAAA,eAAA,CAAgB,oBAAqB,CAAA,YAAY,CAC5D,EAAA,oBAAA,CAAqB,YAAa,CAAA,MAAA,GAAS,CAC5C,EAAA,QAAA;AAEJ,QACE,IAAA,IAAA,KAAS,UACT,QAAa,KAAA,OAAO,UACpB,UAAe,KAAA,OAAO,OAAO,IAC7B,EAAA;AACA,UAAA,IAAI,QAAW,GAAA,MAAA;AACf,UAAA,sBAAA,CAAuB,WAAY;AACjC,YACE,eAAA,IAAA,iBAAA,KACE,iBAAoB,GAAA,IAAA,EACtB,OAAQ,CAAA,KAAA;AAAA,cACN;AAAA,aACF,CAAA;AAAA,WACH,CAAA;AACD,UAAO,OAAA;AAAA,YACL,IAAA,EAAM,SAAU,OAAA,EAAS,MAAQ,EAAA;AAC/B,cAAkB,eAAA,GAAA,IAAA;AAClB,cAAS,QAAA,CAAA,IAAA;AAAA,gBACP,SAAU,WAAa,EAAA;AACrB,kBAAA,WAAA,CAAY,cAAc,iBAAiB,CAAA;AAC3C,kBAAA,IAAI,MAAM,iBAAmB,EAAA;AAC3B,oBAAI,IAAA;AACF,sBAAc,aAAA,CAAA,KAAK,CACjB,EAAA,WAAA,CAAY,WAAY;AACtB,wBAAO,OAAA,4BAAA;AAAA,0BACL,WAAA;AAAA,0BACA,OAAA;AAAA,0BACA;AAAA,yBACF;AAAA,uBACD,CAAA;AAAA,6BACI,OAAS,EAAA;AAChB,sBAAqB,oBAAA,CAAA,YAAA,CAAa,KAAK,OAAO,CAAA;AAAA;AAEhD,oBAAI,IAAA,CAAA,GAAI,oBAAqB,CAAA,YAAA,CAAa,MAAQ,EAAA;AAChD,sBAAA,IAAI,YAAe,GAAA,eAAA;AAAA,wBACjB,oBAAqB,CAAA;AAAA,uBACvB;AACA,sBAAA,oBAAA,CAAqB,aAAa,MAAS,GAAA,CAAA;AAC3C,sBAAA,MAAA,CAAO,YAAY,CAAA;AAAA;AACrB,mBACF,cAAe,WAAW,CAAA;AAAA,iBAC5B;AAAA,gBACA,SAAU,KAAO,EAAA;AACf,kBAAA,WAAA,CAAY,cAAc,iBAAiB,CAAA;AAC3C,kBAAI,CAAA,GAAA,oBAAA,CAAqB,YAAa,CAAA,MAAA,IAChC,KAAQ,GAAA,eAAA;AAAA,oBACR,oBAAqB,CAAA;AAAA,mBACvB,EACC,qBAAqB,YAAa,CAAA,MAAA,GAAS,GAC5C,MAAO,CAAA,KAAK,CACZ,IAAA,MAAA,CAAO,KAAK,CAAA;AAAA;AAClB,eACF;AAAA;AACF,WACF;AAAA;AAEF,QAAA,IAAI,oBAAuB,GAAA,MAAA;AAC3B,QAAA,WAAA,CAAY,cAAc,iBAAiB,CAAA;AAC3C,QAAM,CAAA,KAAA,iBAAA,KACH,cAAc,KAAK,CAAA,EACpB,MAAM,KAAM,CAAA,MAAA,IACV,uBAAuB,WAAY;AACjC,UACE,eAAA,IAAA,iBAAA,KACE,iBAAoB,GAAA,IAAA,EACtB,OAAQ,CAAA,KAAA;AAAA,YACN;AAAA,WACF,CAAA;AAAA,SACH,CACF,EAAA,oBAAA,CAAqB,QAAW,GAAA,IAAA,CAAA;AACnC,QAAI,IAAA,CAAA,GAAI,qBAAqB,YAAa,CAAA,MAAA;AACxC,UACI,MAAA,QAAA,GAAW,gBAAgB,oBAAqB,CAAA,YAAY,GAC7D,oBAAqB,CAAA,YAAA,CAAa,SAAS,CAC5C,EAAA,QAAA;AAEJ,QAAO,OAAA;AAAA,UACL,IAAA,EAAM,SAAU,OAAA,EAAS,MAAQ,EAAA;AAC/B,YAAkB,eAAA,GAAA,IAAA;AAClB,YAAA,CAAA,KAAM,iBACA,IAAA,oBAAA,CAAqB,QAAW,GAAA,KAAA,EAClC,YAAY,WAAY;AACtB,cAAO,OAAA,4BAAA;AAAA,gBACL,oBAAA;AAAA,gBACA,OAAA;AAAA,gBACA;AAAA,eACF;AAAA,aACD,CACD,IAAA,OAAA,CAAQ,oBAAoB,CAAA;AAAA;AAClC,SACF;AAAA,OACF;AACA,MAAQ,OAAA,CAAA,KAAA,GAAQ,SAAU,EAAI,EAAA;AAC5B,QAAA,OAAO,WAAY;AACjB,UAAO,OAAA,EAAA,CAAG,KAAM,CAAA,IAAA,EAAM,SAAS,CAAA;AAAA,SACjC;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,oBAAoB,WAAY;AACtC,QAAA,IAAI,kBAAkB,oBAAqB,CAAA,eAAA;AAC3C,QAAO,OAAA,IAAA,KAAS,eAAkB,GAAA,IAAA,GAAO,eAAgB,EAAA;AAAA,OAC3D;AACA,MAAA,OAAA,CAAQ,YAAe,GAAA,SAAU,OAAS,EAAA,MAAA,EAAQ,QAAU,EAAA;AAC1D,QAAI,IAAA,IAAA,KAAS,WAAW,MAAW,KAAA,OAAA;AACjC,UAAM,MAAA,KAAA;AAAA,YACJ,0DACE,OACA,GAAA;AAAA,WACJ;AACF,QAAI,IAAA,KAAA,GAAQ,MAAO,CAAA,EAAI,EAAA,OAAA,CAAQ,KAAK,CAAA,EAClC,GAAM,GAAA,OAAA,CAAQ,GACd,EAAA,KAAA,GAAQ,OAAQ,CAAA,MAAA;AAClB,QAAA,IAAI,QAAQ,MAAQ,EAAA;AAClB,UAAI,IAAA,wBAAA;AACJ,UAAG,CAAA,EAAA;AACD,YAAA,IACE,eAAe,IAAK,CAAA,MAAA,EAAQ,KAAK,CAAA,KAChC,2BAA2B,MAAO,CAAA,wBAAA;AAAA,cACjC,MAAA;AAAA,cACA;AAAA,aACF,CAAE,GACF,CAAA,IAAA,wBAAA,CAAyB,cACzB,EAAA;AACA,cAA2B,wBAAA,GAAA,KAAA;AAC3B,cAAM,MAAA,CAAA;AAAA;AAER,YAAA,wBAAA,GAA2B,WAAW,MAAO,CAAA,GAAA;AAAA;AAE/C,UAAA,wBAAA,KAA6B,QAAQ,QAAS,EAAA,CAAA;AAC9C,UAAY,WAAA,CAAA,MAAM,MACf,sBAAuB,CAAA,MAAA,CAAO,GAAG,CAAI,EAAA,GAAA,GAAM,KAAK,MAAO,CAAA,GAAA,CAAA;AAC1D,UAAA,KAAK,QAAY,IAAA,MAAA;AACf,YAAC,CAAA,cAAA,CAAe,KAAK,MAAQ,EAAA,QAAQ,KACnC,KAAU,KAAA,QAAA,IACV,aAAa,QACb,IAAA,UAAA,KAAe,YACd,KAAU,KAAA,QAAA,IAAY,WAAW,MAAO,CAAA,GAAA,KACxC,MAAM,QAAQ,CAAA,GAAI,OAAO,QAAQ,CAAA,CAAA;AAAA;AAExC,QAAI,IAAA,QAAA,GAAW,UAAU,MAAS,GAAA,CAAA;AAClC,QAAI,IAAA,CAAA,KAAM,QAAU,EAAA,KAAA,CAAM,QAAW,GAAA,QAAA;AAAA,aAAA,IAC5B,IAAI,QAAU,EAAA;AACrB,UAAA,wBAAA,GAA2B,MAAM,QAAQ,CAAA;AACzC,UAAS,KAAA,IAAA,CAAA,GAAI,CAAG,EAAA,CAAA,GAAI,QAAU,EAAA,CAAA,EAAA;AAC5B,YAAA,wBAAA,CAAyB,CAAC,CAAA,GAAI,SAAU,CAAA,CAAA,GAAI,CAAC,CAAA;AAC/C,UAAA,KAAA,CAAM,QAAW,GAAA,wBAAA;AAAA;AAEnB,QAAQ,KAAA,GAAA,YAAA;AAAA,UACN,OAAQ,CAAA,IAAA;AAAA,UACR,GAAA;AAAA,UACA,MAAA;AAAA,UACA,MAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAAA,UACA,OAAQ,CAAA,WAAA;AAAA,UACR,OAAQ,CAAA;AAAA,SACV;AACA,QAAA,KAAK,GAAM,GAAA,CAAA,EAAG,GAAM,GAAA,SAAA,CAAU,MAAQ,EAAA,GAAA,EAAA;AACpC,UAAC,KAAA,GAAQ,SAAU,CAAA,GAAG,CACpB,EAAA,cAAA,CAAe,KAAK,CAAA,IAAK,KAAM,CAAA,MAAA,KAAW,KAAM,CAAA,MAAA,CAAO,SAAY,GAAA,CAAA,CAAA;AACvE,QAAO,OAAA,KAAA;AAAA,OACT;AACA,MAAQ,OAAA,CAAA,aAAA,GAAgB,SAAU,YAAc,EAAA;AAC9C,QAAe,YAAA,GAAA;AAAA,UACb,QAAU,EAAA,kBAAA;AAAA,UACV,aAAe,EAAA,YAAA;AAAA,UACf,cAAgB,EAAA,YAAA;AAAA,UAChB,YAAc,EAAA,CAAA;AAAA,UACd,QAAU,EAAA,IAAA;AAAA,UACV,QAAU,EAAA;AAAA,SACZ;AACA,QAAA,YAAA,CAAa,QAAW,GAAA,YAAA;AACxB,QAAA,YAAA,CAAa,QAAW,GAAA;AAAA,UACtB,QAAU,EAAA,mBAAA;AAAA,UACV,QAAU,EAAA;AAAA,SACZ;AACA,QAAA,YAAA,CAAa,gBAAmB,GAAA,IAAA;AAChC,QAAA,YAAA,CAAa,iBAAoB,GAAA,IAAA;AACjC,QAAO,OAAA,YAAA;AAAA,OACT;AACA,MAAA,OAAA,CAAQ,aAAgB,GAAA,SAAU,IAAM,EAAA,MAAA,EAAQ,QAAU,EAAA;AACxD,QAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,SAAA,CAAU,QAAQ,CAAK,EAAA,EAAA;AACzC,UAAI,IAAA,IAAA,GAAO,UAAU,CAAC,CAAA;AACtB,UAAA,cAAA,CAAe,IAAI,CAAK,IAAA,IAAA,CAAK,MAAW,KAAA,IAAA,CAAK,OAAO,SAAY,GAAA,CAAA,CAAA;AAAA;AAElE,QAAA,CAAA,GAAI,EAAC;AACL,QAAO,IAAA,GAAA,IAAA;AACP,QAAA,IAAI,IAAQ,IAAA,MAAA;AACV,UAAK,KAAA,QAAA,IAAa,6BAChB,EAAE,QAAA,IAAY,WACd,KAAS,IAAA,MAAA,KACP,yBAA4B,GAAA,IAAA,EAC9B,OAAQ,CAAA,IAAA;AAAA,YACN;AAAA,WACF,CAAA,EACF,WAAY,CAAA,MAAM,CACf,KAAA,sBAAA,CAAuB,MAAO,CAAA,GAAG,CAAI,EAAA,IAAA,GAAO,EAAK,GAAA,MAAA,CAAO,GAC3D,CAAA,EAAA,MAAA;AACE,YAAA,cAAA,CAAe,IAAK,CAAA,MAAA,EAAQ,QAAQ,CAAA,IAClC,UAAU,QACV,IAAA,QAAA,KAAa,QACb,IAAA,UAAA,KAAe,QACd,KAAA,CAAA,CAAE,QAAQ,CAAA,GAAI,OAAO,QAAQ,CAAA,CAAA;AACpC,QAAI,IAAA,cAAA,GAAiB,UAAU,MAAS,GAAA,CAAA;AACxC,QAAI,IAAA,CAAA,KAAM,cAAgB,EAAA,CAAA,CAAE,QAAW,GAAA,QAAA;AAAA,aAAA,IAC9B,IAAI,cAAgB,EAAA;AAC3B,UAAA,KAAA,IACM,aAAa,KAAM,CAAA,cAAc,GAAG,EAAK,GAAA,CAAA,EAC7C,KAAK,cACL,EAAA,EAAA,EAAA;AAEA,YAAA,UAAA,CAAW,EAAE,CAAA,GAAI,SAAU,CAAA,EAAA,GAAK,CAAC,CAAA;AACnC,UAAO,MAAA,CAAA,MAAA,IAAU,MAAO,CAAA,MAAA,CAAO,UAAU,CAAA;AACzC,UAAA,CAAA,CAAE,QAAW,GAAA,UAAA;AAAA;AAEf,QAAA,IAAI,QAAQ,IAAK,CAAA,YAAA;AACf,UAAK,KAAA,QAAA,IAAc,cAAiB,GAAA,IAAA,CAAK,YAAe,EAAA,cAAA;AACtD,YAAA,MAAA,KAAW,EAAE,QAAQ,CAAA,KAAM,EAAE,QAAQ,CAAA,GAAI,eAAe,QAAQ,CAAA,CAAA;AACpE,QACE,IAAA,IAAA,0BAAA;AAAA,UACE,CAAA;AAAA,UACA,eAAe,OAAO,IAAA,GAClB,KAAK,WAAe,IAAA,IAAA,CAAK,QAAQ,SACjC,GAAA;AAAA,SACN;AACF,QAAI,IAAA,QAAA,GAAW,MAAM,oBAAqB,CAAA,0BAAA,EAAA;AAC1C,QAAO,OAAA,YAAA;AAAA,UACL,IAAA;AAAA,UACA,IAAA;AAAA,UACA,MAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAS,EAAA;AAAA,UACT,CAAA;AAAA,UACA,QAAA,GAAW,KAAM,CAAA,uBAAuB,CAAI,GAAA,sBAAA;AAAA,UAC5C,QAAW,GAAA,UAAA,CAAW,WAAY,CAAA,IAAI,CAAC,CAAI,GAAA;AAAA,SAC7C;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,YAAY,WAAY;AAC9B,QAAI,IAAA,SAAA,GAAY,EAAE,OAAA,EAAS,IAAK,EAAA;AAChC,QAAA,MAAA,CAAO,KAAK,SAAS,CAAA;AACrB,QAAO,OAAA,SAAA;AAAA,OACT;AACA,MAAQ,OAAA,CAAA,UAAA,GAAa,SAAU,MAAQ,EAAA;AACrC,QAAA,IAAA,IAAQ,MAAU,IAAA,MAAA,CAAO,QAAa,KAAA,eAAA,GAClC,OAAQ,CAAA,KAAA;AAAA,UACN;AAAA,SAEF,GAAA,UAAA,KAAe,OAAO,MAAA,GACpB,OAAQ,CAAA,KAAA;AAAA,UACN,yDAAA;AAAA,UACA,IAAA,KAAS,MAAS,GAAA,MAAA,GAAS,OAAO;AAAA,YAEpC,CAAM,KAAA,MAAA,CAAO,UACb,CAAM,KAAA,MAAA,CAAO,UACb,OAAQ,CAAA,KAAA;AAAA,UACN,8EAAA;AAAA,UACA,CAAA,KAAM,MAAO,CAAA,MAAA,GACT,0CACA,GAAA;AAAA,SACN;AACN,QAAA,IAAA,IAAQ,MACN,IAAA,IAAA,IAAQ,MAAO,CAAA,YAAA,IACf,OAAQ,CAAA,KAAA;AAAA,UACN;AAAA,SACF;AACF,QAAA,IAAI,WAAc,GAAA,EAAE,QAAU,EAAA,sBAAA,EAAwB,QACpD,EAAA,OAAA;AACF,QAAO,MAAA,CAAA,cAAA,CAAe,aAAa,aAAe,EAAA;AAAA,UAChD,UAAY,EAAA,KAAA;AAAA,UACZ,YAAc,EAAA,IAAA;AAAA,UACd,KAAK,WAAY;AACf,YAAO,OAAA,OAAA;AAAA,WACT;AAAA,UACA,GAAA,EAAK,SAAU,IAAM,EAAA;AACnB,YAAU,OAAA,GAAA,IAAA;AACV,YAAA,MAAA,CAAO,IACL,IAAA,MAAA,CAAO,WACN,KAAA,MAAA,CAAO,cAAe,CAAA,MAAA,EAAQ,MAAQ,EAAA,EAAE,KAAO,EAAA,IAAA,EAAM,CAAA,EACrD,OAAO,WAAc,GAAA,IAAA,CAAA;AAAA;AAC1B,SACD,CAAA;AACD,QAAO,OAAA,WAAA;AAAA,OACT;AACA,MAAA,OAAA,CAAQ,cAAiB,GAAA,cAAA;AACzB,MAAQ,OAAA,CAAA,IAAA,GAAO,SAAU,IAAM,EAAA;AAC7B,QAAO,OAAA;AAAA,UACL,QAAU,EAAA,eAAA;AAAA,UACV,QAAU,EAAA,EAAE,OAAS,EAAA,EAAA,EAAI,SAAS,IAAK,EAAA;AAAA,UACvC,KAAO,EAAA;AAAA,SACT;AAAA,OACF;AACA,MAAQ,OAAA,CAAA,IAAA,GAAO,SAAU,IAAA,EAAM,OAAS,EAAA;AACtC,QAAA,IAAA,IAAQ,QACN,OAAQ,CAAA,KAAA;AAAA,UACN,oEAAA;AAAA,UACA,IAAA,KAAS,IAAO,GAAA,MAAA,GAAS,OAAO;AAAA,SAClC;AACF,QAAU,OAAA,GAAA;AAAA,UACR,QAAU,EAAA,eAAA;AAAA,UACV,IAAA;AAAA,UACA,OAAA,EAAS,MAAW,KAAA,OAAA,GAAU,IAAO,GAAA;AAAA,SACvC;AACA,QAAI,IAAA,OAAA;AACJ,QAAO,MAAA,CAAA,cAAA,CAAe,SAAS,aAAe,EAAA;AAAA,UAC5C,UAAY,EAAA,KAAA;AAAA,UACZ,YAAc,EAAA,IAAA;AAAA,UACd,KAAK,WAAY;AACf,YAAO,OAAA,OAAA;AAAA,WACT;AAAA,UACA,GAAA,EAAK,SAAU,IAAM,EAAA;AACnB,YAAU,OAAA,GAAA,IAAA;AACV,YAAA,IAAA,CAAK,IACH,IAAA,IAAA,CAAK,WACJ,KAAA,MAAA,CAAO,cAAe,CAAA,IAAA,EAAM,MAAQ,EAAA,EAAE,KAAO,EAAA,IAAA,EAAM,CAAA,EACnD,KAAK,WAAc,GAAA,IAAA,CAAA;AAAA;AACxB,SACD,CAAA;AACD,QAAO,OAAA,OAAA;AAAA,OACT;AACA,MAAQ,OAAA,CAAA,eAAA,GAAkB,SAAU,KAAO,EAAA;AACzC,QAAA,IAAI,cAAiB,GAAA,oBAAA,CAAqB,CACxC,EAAA,iBAAA,GAAoB,EAAC;AACvB,QAAA,oBAAA,CAAqB,CAAI,GAAA,iBAAA;AACzB,QAAkB,iBAAA,CAAA,cAAA,uBAAqB,GAAI,EAAA;AAC3C,QAAI,IAAA;AACF,UAAA,IAAI,WAAc,GAAA,KAAA,EAChB,EAAA,uBAAA,GAA0B,oBAAqB,CAAA,CAAA;AACjD,UAAS,IAAA,KAAA,uBAAA,IACP,uBAAwB,CAAA,iBAAA,EAAmB,WAAW,CAAA;AACxD,UAAa,QAAA,KAAA,OAAO,WAClB,IAAA,IAAA,KAAS,WACT,IAAA,UAAA,KAAe,OAAO,WAAA,CAAY,IAClC,IAAA,WAAA,CAAY,IAAK,CAAA,IAAA,EAAM,iBAAiB,CAAA;AAAA,iBACnC,KAAO,EAAA;AACd,UAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,SACvB,SAAA;AACA,UAAA,IAAA,KAAS,cACP,IAAA,iBAAA,CAAkB,cAChB,KAAA,KAAA,GAAQ,iBAAkB,CAAA,cAAA,CAAe,IAC3C,EAAA,iBAAA,CAAkB,cAAe,CAAA,KAAA,EACjC,EAAA,EAAA,GAAK,SACH,OAAQ,CAAA,IAAA;AAAA,YACN;AAAA,WACF,CAAA,EACD,qBAAqB,CAAI,GAAA,cAAA;AAAA;AAC9B,OACF;AACA,MAAA,OAAA,CAAQ,2BAA2B,WAAY;AAC7C,QAAO,OAAA,iBAAA,GAAoB,eAAgB,EAAA;AAAA,OAC7C;AACA,MAAQ,OAAA,CAAA,GAAA,GAAM,SAAU,MAAQ,EAAA;AAC9B,QAAO,OAAA,iBAAA,EAAoB,CAAA,GAAA,CAAI,MAAM,CAAA;AAAA,OACvC;AACA,MAAA,OAAA,CAAQ,cAAiB,GAAA,SAAU,MAAQ,EAAA,YAAA,EAAc,SAAW,EAAA;AAClE,QAAA,OAAO,mBAAoB,CAAA,cAAA;AAAA,UACzB,MAAA;AAAA,UACA,YAAA;AAAA,UACA;AAAA,SACF;AAAA,OACF;AACA,MAAQ,OAAA,CAAA,WAAA,GAAc,SAAU,QAAA,EAAU,IAAM,EAAA;AAC9C,QAAA,OAAO,iBAAkB,EAAA,CAAE,WAAY,CAAA,QAAA,EAAU,IAAI,CAAA;AAAA,OACvD;AACA,MAAQ,OAAA,CAAA,UAAA,GAAa,SAAU,OAAS,EAAA;AACtC,QAAA,IAAI,aAAa,iBAAkB,EAAA;AACnC,QAAQ,OAAA,CAAA,QAAA,KAAa,uBACnB,OAAQ,CAAA,KAAA;AAAA,UACN;AAAA,SACF;AACF,QAAO,OAAA,UAAA,CAAW,WAAW,OAAO,CAAA;AAAA,OACtC;AACA,MAAQ,OAAA,CAAA,aAAA,GAAgB,SAAU,KAAA,EAAO,WAAa,EAAA;AACpD,QAAA,OAAO,iBAAkB,EAAA,CAAE,aAAc,CAAA,KAAA,EAAO,WAAW,CAAA;AAAA,OAC7D;AACA,MAAQ,OAAA,CAAA,gBAAA,GAAmB,SAAU,KAAA,EAAO,YAAc,EAAA;AACxD,QAAA,OAAO,iBAAkB,EAAA,CAAE,gBAAiB,CAAA,KAAA,EAAO,YAAY,CAAA;AAAA,OACjE;AACA,MAAA,OAAA,CAAQ,SAAY,GAAA,SAAU,MAAQ,EAAA,UAAA,EAAY,MAAQ,EAAA;AACxD,QAAA,IAAA,IAAQ,UACN,OAAQ,CAAA,IAAA;AAAA,UACN;AAAA,SACF;AACF,QAAA,IAAI,aAAa,iBAAkB,EAAA;AACnC,QAAA,IAAI,eAAe,OAAO,MAAA;AACxB,UAAM,MAAA,KAAA;AAAA,YACJ;AAAA,WACF;AACF,QAAO,OAAA,UAAA,CAAW,SAAU,CAAA,MAAA,EAAQ,UAAU,CAAA;AAAA,OAChD;AACA,MAAA,OAAA,CAAQ,QAAQ,WAAY;AAC1B,QAAO,OAAA,iBAAA,GAAoB,KAAM,EAAA;AAAA,OACnC;AACA,MAAA,OAAA,CAAQ,mBAAsB,GAAA,SAAU,GAAK,EAAA,MAAA,EAAQ,IAAM,EAAA;AACzD,QAAA,OAAO,iBAAkB,EAAA,CAAE,mBAAoB,CAAA,GAAA,EAAK,QAAQ,IAAI,CAAA;AAAA,OAClE;AACA,MAAQ,OAAA,CAAA,kBAAA,GAAqB,SAAU,MAAA,EAAQ,IAAM,EAAA;AACnD,QAAA,IAAA,IAAQ,UACN,OAAQ,CAAA,IAAA;AAAA,UACN;AAAA,SACF;AACF,QAAA,OAAO,iBAAkB,EAAA,CAAE,kBAAmB,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,OAC5D;AACA,MAAQ,OAAA,CAAA,eAAA,GAAkB,SAAU,MAAA,EAAQ,IAAM,EAAA;AAChD,QAAA,IAAA,IAAQ,UACN,OAAQ,CAAA,IAAA;AAAA,UACN;AAAA,SACF;AACF,QAAA,OAAO,iBAAkB,EAAA,CAAE,eAAgB,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,OACzD;AACA,MAAQ,OAAA,CAAA,OAAA,GAAU,SAAU,MAAA,EAAQ,IAAM,EAAA;AACxC,QAAA,OAAO,iBAAkB,EAAA,CAAE,OAAQ,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,OACjD;AACA,MAAQ,OAAA,CAAA,aAAA,GAAgB,SAAU,WAAA,EAAa,OAAS,EAAA;AACtD,QAAA,OAAO,iBAAkB,EAAA,CAAE,aAAc,CAAA,WAAA,EAAa,OAAO,CAAA;AAAA,OAC/D;AACA,MAAA,OAAA,CAAQ,UAAa,GAAA,SAAU,OAAS,EAAA,UAAA,EAAY,IAAM,EAAA;AACxD,QAAA,OAAO,iBAAkB,EAAA,CAAE,UAAW,CAAA,OAAA,EAAS,YAAY,IAAI,CAAA;AAAA,OACjE;AACA,MAAQ,OAAA,CAAA,MAAA,GAAS,SAAU,YAAc,EAAA;AACvC,QAAO,OAAA,iBAAA,EAAoB,CAAA,MAAA,CAAO,YAAY,CAAA;AAAA,OAChD;AACA,MAAQ,OAAA,CAAA,QAAA,GAAW,SAAU,YAAc,EAAA;AACzC,QAAO,OAAA,iBAAA,EAAoB,CAAA,QAAA,CAAS,YAAY,CAAA;AAAA,OAClD;AACA,MAAA,OAAA,CAAQ,oBAAuB,GAAA,SAC7B,SACA,EAAA,WAAA,EACA,iBACA,EAAA;AACA,QAAA,OAAO,mBAAoB,CAAA,oBAAA;AAAA,UACzB,SAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA,SACF;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,gBAAgB,WAAY;AAClC,QAAO,OAAA,iBAAA,GAAoB,aAAc,EAAA;AAAA,OAC3C;AACA,MAAA,OAAA,CAAQ,OAAU,GAAA,QAAA;AAClB,MAAgB,WAAA,KAAA,OAAO,kCACrB,UACE,KAAA,OAAO,+BAA+B,0BACxC,IAAA,8BAAA,CAA+B,0BAA2B,CAAA,KAAA,EAAO,CAAA;AAAA,KAClE,EAAA;AAAA;AAAA,CAAA,CAAA;;;ACztCL,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mEAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,MAAA,MAAA,CAAO,OAAU,GAAA,wBAAA,EAAA;AAAA,KACZ,MAAA;AACL,MAAA,MAAA,CAAO,OAAU,GAAA,yBAAA,EAAA;AAAA;AACnB;AAAA,CAAA,CAAA;;;ACAO,IAAe,eAAf,MAAqD;AAAA,EAChD,WAAoB,GAAA;AAC5B,IAAA,OAAA,CAAQ,IAAI,aAAa,CAAA;AAAA;AAI7B,CAAA;;;ACRO,IAAe,mBAAf,MAAgC;AAAA;AAAA;AAAA;AAAA;AAAA,EAK3B,iBAA4B,GAAA;AACpC,IAAM,MAAA,SAAA,GAAY,KAAK,GAAI,EAAA;AAC3B,IAAM,MAAA,MAAA,GAAS,KAAK,MAAO,EAAA,CAAE,SAAS,EAAE,CAAA,CAAE,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA;AAErD,IAAO,OAAA,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA;AASjC,CAAA;;;ACJO,IAAM,gBAAA,GAAN,cAA+B,gBAAiB,CAAA;AAAA,EAIrD,WAAc,GAAA;AACZ,IAAM,KAAA,EAAA;AAJR,IAAQ,aAAA,CAAA,IAAA,EAAA,iBAAA,sBAAsB,GAAiC,EAAA,CAAA;AAC/D,IAAQ,aAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AAIN,IAAI,IAAA,CAACA,6BAAY,EAAA;AACf,MAAA;AAAA;AAGF,IAAA,IAAA,CAAK,sBAAuB,EAAA;AAAA;AAC9B;AAAA;AAAA;AAAA,EAKA,mBAAmB,OAA4C,EAAA;AAC7D,IAAA,IAAA,CAAK,eAAkB,GAAA,OAAA;AAAA;AACzB,EAEA,0BAA0B,QAA6C,EAAA;AACrE,IAAA,MAAM,EAAE,SAAA,EAAW,SAAW,EAAA,IAAA,EAAS,GAAA,QAAA;AAEvC,IAAA,MAAM,OAAU,GAAA,IAAA,CAAK,eAAgB,CAAA,GAAA,CAAI,SAAS,CAAA;AAClD,IAAA,IAAI,OAAS,EAAA;AACX,MAAK,IAAA,CAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AAErC,MAAA,IAAI,SAAW,EAAA;AACb,QAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAAA,OACf,MAAA;AACL,QAAA,OAAA,CAAQ,MAAO,CAAA,IAAI,KAAM,CAAA,IAAI,CAAC,CAAA;AAAA;AAGhC,MAAO,OAAA,IAAA;AAAA;AAGT,IAAO,OAAA,KAAA;AAAA;AACT;AAAA;AAAA;AAAA,EAKA,WAAW,SAA4B,EAAA;AACrC,IAAO,OAAA,IAAA,CAAK,eAAgB,CAAA,GAAA,CAAI,SAAS,CAAA;AAAA;AAC3C;AAAA;AAAA;AAAA,EAKQ,sBAA+B,GAAA;AACrC,IAAA,OAAA,CAAQ,IAAI,8CAA8C,CAAA;AAG1D,IAAoBC,sCAAA,CAAA,WAAA,GAAc,eAAgB,CAAA,eAAA,EAAiB,KAAK,0BAA2B,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA;AAC/G;AAAA;AAAA;AAAA;AAAA,EAMQ,2BAA2B,KAA2B,EAAA;AAC5D,IAAA,MAAM,EAAE,SAAA,EAAW,SAAW,EAAA,IAAA,KAAS,KAAM,CAAA,IAAA;AAG7C,IAAA,IAAI,KAAK,eAAiB,EAAA;AACxB,MAAA,IAAA,CAAK,eAAgB,CAAA,EAAE,SAAW,EAAA,SAAA,EAAW,MAAM,CAAA;AAAA;AAIrD,IAAA,IAAI,IAAK,CAAA,eAAA,CAAgB,GAAI,CAAA,SAAS,CAAG,EAAA;AACvC,MAAA,IAAA,CAAK,yBAA0B,CAAA,EAAE,SAAW,EAAA,SAAA,EAAW,MAAM,CAAA;AAAA;AAC/D;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,YAA0B,CAAA,SAAA,EAA4B,MAA0C,EAAA;AACpG,IAAA,OAAO,IAAI,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AACzC,MAAA,MAAM,YAAY,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,IAAA,CAAK,mBAAmB,CAAA,CAAA;AAG1D,MAAA,IAAA,CAAK,gBAAgB,GAAI,CAAA,SAAA,EAAW,EAAE,OAAA,EAAS,QAAQ,CAAA;AAEvD,MAAI,IAAA;AACF,QAAA,MAAM,OAA+B,GAAA;AAAA,UACnC,SAAA;AAAA,UACA,SAAA;AAAA,UACA;AAAA,SACF;AAEA,QAAQ,OAAA,CAAA,GAAA,CAAI,6CAA6C,OAAO,CAAA;AAEhE,QAAA,MAAM,WAAWC,6CAA2B,EAAA;AAE5C,QAAA,IAAI,aAAa,QAAU,EAAA;AACzB,UAAO,MAAA,CAAA,MAAA,CAAO,WAAY,CAAA,OAAA,EAAS,GAAG,CAAA;AAGtC,UAAA,MAAM,OAAU,GAAA,IAAA,CAAK,eAAgB,CAAA,GAAA,CAAI,SAAS,CAAA;AAClD,UAAA,IAAI,OAAS,EAAA;AACX,YAAK,IAAA,CAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AACrC,YAAA,OAAA,CAAQ,QAAQ,IAAS,CAAA;AAAA;AAG3B,UAAA;AAAA;AAIF,QAAQ,OAAA,CAAA,IAAA;AAAA,UACN,CAAA,gEAAA,EAA0C,QAAQ,CAAA,6EAAA,EAAoB,SAAS,CAAA,oBAAA;AAAA,SACjF;AAEA,QAAK,IAAA,CAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AACrC,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAyD,sDAAA,EAAA,QAAQ,EAAE,CAAC,CAAA;AAAA,eAC9E,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,2CAA2C,KAAK,CAAA;AAC9D,QAAK,IAAA,CAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AACrC,QAAA,MAAA,CAAO,KAAK,CAAA;AAAA;AACd,KACD,CAAA;AAAA;AAEL,CAAA;;;ACrIO,IAAM,YAAA,GAAN,cAA2B,YAAsC,CAAA;AAAA,EAGtE,WAAc,GAAA;AACZ,IAAM,KAAA,EAAA;AAHR,IAAQ,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAIN,IAAK,IAAA,CAAA,IAAA,GAAO,IAAI,gBAAiB,EAAA;AAAA;AACnC;AAAA,EAGA,mBAAmB,OAA4C,EAAA;AAC7D,IAAK,IAAA,CAAA,IAAA,CAAK,mBAAmB,OAAO,CAAA;AAAA;AACtC;AAAA,EAGA,0BAA0B,QAA6C,EAAA;AACrE,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,yBAAA,CAA0B,QAAQ,CAAA;AAAA;AACrD;AAAA,EAGA,WAAW,SAA4B,EAAA;AACrC,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,SAAS,CAAA;AAAA;AACvC;AAAA;AAAA;AAAA,EAKA,KAAc,GAAA;AACZ,IAAA,OAAA,CAAQ,IAAI,sBAAsB,CAAA;AAAA;AACpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,QAAQ,OAA2C,EAAA;AACvD,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAa,CAAA,SAAA,EAAW,OAAO,CAAA;AAAA;AAClD;AAGF,CAAA;AClCO,IAAM,gBAAA,GAAN,cAAuD,gBAAiB,CAAA;AAAA,EAI7E,WAAY,CAAA,cAAA,GAAiB,UAAY,EAAA,iBAAA,GAAoB,UAAY,EAAA;AACvE,IAAM,KAAA,EAAA;AAJR,IAAQ,aAAA,CAAA,IAAA,EAAA,mBAAA,CAAA;AACR,IAAQ,aAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAKN,IAAA,IAAA,CAAK,cAAiB,GAAA,cAAA;AACtB,IAAA,IAAA,CAAK,iBAAoB,GAAA,iBAAA;AAEzB,IAAA,IAAA,CAAK,wBAAyB,EAAA;AAAA;AAChC;AAAA;AAAA;AAAA,EAKQ,sBAA8C,GAAA;AACpD,IAAQ,OAAA,MAAA,CAAe,KAAK,iBAAiB,CAAA;AAAA;AAC/C;AAAA;AAAA;AAAA,EAKQ,aAA4B,GAAA;AAClC,IAAQ,OAAA,MAAA,CAAe,KAAK,cAAc,CAAA;AAAA;AAC5C;AAAA;AAAA;AAAA,EAKQ,wBAAiC,GAAA;AACvC,IAAI,IAAA,CAACF,6BAAY,EAAA;AACf,MAAA;AAAA;AAEF,IAAA,IAAI,CAAE,MAAA,CAAe,IAAK,CAAA,iBAAiB,CAAG,EAAA;AAC5C,MAAC,MAAA,CAAe,IAAK,CAAA,iBAAiB,CAAI,GAAA;AAAA,QACxC,UAAU,EAAC;AAAA,QACX,gBAAgB,MAAM;AAAA,SAAC;AAAA,QACvB,uBAAuB,MAAM;AAAA,SAAC;AAAA,QAC9B,gBAAgB,MAAM;AAAA;AAAC,OACzB;AAAA;AAGF,IAAM,MAAA,MAAA,GAAS,KAAK,sBAAuB,EAAA;AAG3C,IAAO,MAAA,CAAA,cAAA,GAAiB,KAAK,2BAA4B,EAAA;AACzD,IAAO,MAAA,CAAA,qBAAA,GAAwB,KAAK,kCAAmC,EAAA;AAEvE,IAAI,IAAAG,iCAAA,EAAoB,IAAA,MAAA,CAAO,MAAQ,EAAA;AAErC,MAAC,MAAO,CAAA,MAAA,CAAe,IAAK,CAAA,iBAAiB,CAAI,GAAA,MAAA;AACjD,MAAO,MAAA,CAAA,MAAA,CAAO,gBAAgB,CAAI,GAAA,IAAA,KAAS,OAAO,aAAc,CAAA,KAAA,CAAM,MAAM,IAAI,CAAA;AAAA;AAClF;AACF;AAAA;AAAA;AAAA;AAAA,EAMQ,2BAA8B,GAAA;AACpC,IAAO,OAAA,CAAC,SAAmB,EAAA,IAAA,EAAY,KAAgB,KAAA;AACrD,MAAA,OAAA,CAAQ,GAAI,CAAA,qCAAA,EAAuC,SAAW,EAAA,IAAA,EAAM,KAAK,CAAA;AAEzE,MAAM,MAAA,MAAA,GAAS,KAAK,sBAAuB,EAAA;AAE3C,MAAM,MAAA,OAAA,GAA2C,MAAO,CAAA,QAAA,CAAS,SAAS,CAAA;AAC1E,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAQ,OAAA,CAAA,KAAA,CAAM,yDAAyD,SAAS,CAAA;AAEhF,QAAA;AAAA;AAGF,MAAI,IAAA;AACF,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,OAAA,CAAQ,OAAO,KAAK,CAAA;AACpB,UAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAE7B,UAAA;AAAA;AAGF,QAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA;AACpB,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAAA,eACtB,GAAK,EAAA;AACZ,QAAQ,OAAA,CAAA,KAAA,CAAM,8DAA8D,GAAG,CAAA;AAC/E,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAAA;AAC/B,KACF;AAAA;AACF;AAAA;AAAA;AAAA;AAAA,EAMQ,kCAAqC,GAAA;AAC3C,IAAO,OAAA,CAAC,SAAmB,EAAA,IAAA,EAAY,KAAgB,KAAA;AACrD,MAAM,MAAA,MAAA,GAAS,KAAK,sBAAuB,EAAA;AAE3C,MAAM,MAAA,OAAA,GAA2C,MAAO,CAAA,QAAA,CAAS,SAAS,CAAA;AAC1E,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAQ,OAAA,CAAA,KAAA,CAAM,yDAAyD,SAAS,CAAA;AAEhF,QAAA;AAAA;AAGF,MAAI,IAAA;AACF,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,OAAA,CAAQ,OAAO,KAAK,CAAA;AACpB,UAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAE7B,UAAA;AAAA;AAGF,QAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA;AACpB,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAAA,eACtB,GAAK,EAAA;AACZ,QAAQ,OAAA,CAAA,KAAA,CAAM,8DAA8D,GAAG,CAAA;AAC/E,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAAA;AAC/B,KACF;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,YAAA,CAAgB,MAAiB,EAAA,MAAA,GAA8B,EAAgB,EAAA;AACnF,IAAA,OAAO,IAAI,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AACzC,MAAA,MAAM,YAAY,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,IAAA,CAAK,mBAAmB,CAAA,CAAA;AACvD,MAAQ,OAAA,CAAA,GAAA,CAAI,+CAA+C,SAAS,CAAA;AAEpE,MAAM,MAAA,MAAA,GAAS,KAAK,sBAAuB,EAAA;AAG3C,MAAO,MAAA,CAAA,QAAA,CAAS,SAAS,CAAI,GAAA;AAAA,QAC3B,OAAA,EAAS,CAAC,KAAa,KAAA;AACrB,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,SACf;AAAA,QACA,MAAA,EAAQ,CAAC,MAAiB,KAAA;AACxB,UAAA,MAAA,CAAO,MAAM,CAAA;AAAA;AACf,OACF;AAEA,MAAI,IAAA;AACF,QAAA,MAAM,OAA+B,GAAA;AAAA,UACnC,MAAA;AAAA,UACA,SAAA;AAAA,UACA;AAAA,SACF;AAEA,QAAQ,OAAA,CAAA,GAAA,CAAI,6CAA6C,OAAO,CAAA;AAEhE,QAAA,MAAM,WAAWD,6CAA2B,EAAA;AAE5C,QAAA,IAAI,aAAa,iBAAmB,EAAA;AAClC,UAAM,MAAA,UAAA,GAAa,KAAK,aAAc,EAAA;AACtC,UAAA,UAAA,EAAY,WAAc,GAAA,IAAA,CAAK,SAAU,CAAA,OAAO,CAAC,CAAA;AAEjD,UAAA;AAAA;AAGF,QAAA,IAAI,aAAa,aAAe,EAAA;AAC9B,UAAM,MAAA,OAAA,GAAUE,mCACZ,GAAA,EAAE,GAAG,OAAS,EAAA,OAAA,EAAS,UACvB,GAAA,OAAA;AAEJ,UAAC,MAAA,CAAO,MAAQ,EAAA,eAAA,GAA0B,IAAK,CAAA,cAAc,GAAG,WAAY,CAAA,IAAA,CAAK,SAAU,CAAA,OAAO,CAAC,CAAA;AAEnG,UAAA;AAAA;AAIF,QAAQ,OAAA,CAAA,IAAA;AAAA,UACN,CAAA,gEAAA,EAA0C,QAAQ,CAAA,6EAAA,EAAoB,MAAM,CAAA,oBAAA;AAAA,SAC9E;AACA,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAC7B,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAyD,sDAAA,EAAA,QAAQ,EAAE,CAAC,CAAA;AAAA,eAC9E,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,2CAA2C,KAAK,CAAA;AAC9D,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAC7B,QAAA,MAAA,CAAO,KAAK,CAAA;AAAA;AACd,KACD,CAAA;AAAA;AACH;AAAA;AAAA;AAAA;AAAA,EAMQ,eAAe,SAAyB,EAAA;AAC9C,IAAM,MAAA,MAAA,GAAS,KAAK,sBAAuB,EAAA;AAC3C,IAAO,OAAA,MAAA,CAAO,SAAS,SAAS,CAAA;AAAA;AAEpC,CAAA;;;AC3LO,IAAM,YAAA,GAAN,cAA2B,YAAsC,CAAA;AAAA,EAGtE,WAAc,GAAA;AACZ,IAAM,KAAA,EAAA;AAHR,IAAQ,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAIN,IAAK,IAAA,CAAA,IAAA,GAAO,IAAI,gBAA+B,EAAA;AAAA;AACjD;AAAA;AAAA;AAAA,EAKA,KAAc,GAAA;AACZ,IAAA,OAAA,CAAQ,IAAI,sBAAsB,CAAA;AAAA;AACpC;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAuC,GAAA;AAC3C,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAgB,iBAAiB,CAAA;AAAA;AACpD,EAEA,MAAM,aAAsB,OAA2B,EAAA;AACrD,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,cAAA,EAAgB,OAAO,CAAA;AAAA;AAC1D;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAsB,OAA0C,EAAA;AACpE,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,cAAA,EAAgB,OAAO,CAAA;AAAA;AAC1D;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,WAAoB,OAA0C,EAAA;AAClE,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,YAAA,EAAc,OAAO,CAAA;AAAA;AACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,uBAAuB,OAAiF,EAAA;AAC5G,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAa,CAAA,wBAAA,EAA0B,OAAO,CAAA;AAAA;AACjE;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAkD,GAAA;AACtD,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAa,gBAAgB,CAAA;AAAA;AAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,eAAe,OAAgC,EAAA;AAC7C,IAAA,OAAO,KAAK,IAAK,CAAA,YAAA;AAAA,MACf,gBAAA;AAAA;AAAA,MAEA,OAAO,MAAO,CAAA,EAAE,SAAW,EAAA,IAAA,IAAQ,OAAO;AAAA,KAC5C;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,YAAe,GAAA;AACb,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAA0C,cAAc,CAAA;AAAA;AAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoCA,MAAM,iBAAiB,OAA6B,EAAA;AAClD,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAA8D,CAAA,kBAAA,EAAoB,OAAO,CAAA;AAAA;AAC5G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,cAAiB,GAAA;AACrB,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAkE,gBAAgB,CAAA;AAAA;AACrG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,UAAa,GAAA;AACjB,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAA0C,YAAY,CAAA;AAAA;AACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,UAAa,GAAA;AACjB,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAA0C,YAAY,CAAA;AAAA;AACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,iBAAiB,OAAkC,EAAA;AACvD,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAA0C,CAAA,kBAAA,EAAoB,OAAO,CAAA;AAAA;AACxF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAA0B,GAAA;AACxB,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAa,QAAQ,CAAA;AAAA;AACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,QAA4B,GAAA;AAC1B,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAa,UAAU,CAAA;AAAA;AAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,wBAAsE,GAAA;AACpE,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAa,0BAA0B,CAAA;AAAA;AAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,YAAY,OAA8C,EAAA;AACxD,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAa,CAAA,aAAA,EAAe,OAAO,CAAA;AAAA;AACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,YAAgC,GAAA;AAC9B,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAa,cAAc,CAAA;AAAA;AAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,qBAAyC,GAAA;AACvC,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAa,uBAAuB,CAAA;AAAA;AACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,QAAQ,OAA0C,EAAA;AAChD,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAa,CAAA,SAAA,EAAW,OAAO,CAAA;AAAA;AAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,QAA4B,GAAA;AAC1B,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAa,UAAU,CAAA;AAAA;AAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAA2B,GAAA;AACzB,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAa,SAAS,CAAA;AAAA;AACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,UAA8B,GAAA;AAC5B,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAa,YAAY,CAAA;AAAA;AAC5C;AAGF,CAAA;;;ACjTO,IAAM,cAAA,GAAN,cAA6B,YAAwC,CAAA;AAAA,EAG1E,WAAc,GAAA;AACZ,IAAM,KAAA,EAAA;AAHR,IAAQ,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAIN,IAAA,IAAA,CAAK,IAAO,GAAA,IAAI,gBAAiC,CAAA,YAAA,EAAc,YAAY,CAAA;AAAA;AAC7E;AAAA;AAAA;AAAA,EAKA,KAAc,GAAA;AACZ,IAAA,OAAA,CAAQ,IAAI,sBAAsB,CAAA;AAAA;AACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,eAA2B,OAAyE,EAAA;AACxG,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAA6C,CAAA,gBAAA,EAAkB,OAAO,CAAA;AAAA;AACzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,UAAU,OAA2B,EAAA;AAEzC,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAkD,WAAa,EAAA,MAAA,CAAO,MAAO,CAAA,EAAE,QAAU,EAAA,CAAA,EAAK,EAAA,OAAO,CAAC,CAAA;AAAA;AACzH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,UAAU,OAA2B,EAAA;AAEnC,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAA0C,WAAa,EAAA,MAAA,CAAO,MAAO,CAAA,EAAE,QAAU,EAAA,CAAA,EAAK,EAAA,OAAO,CAAC,CAAA;AAAA;AACjH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAO,OAAwB,EAAA;AAC7B,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAA0C,CAAA,QAAA,EAAU,OAAO,CAAA;AAAA;AAC9E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,SAAS,OAA0B,EAAA;AACjC,IAAA,OAAO,KAAK,IAAK,CAAA,YAAA;AAAA,MACf,UAAA;AAAA,MACA,OAAO,MAAO,CAAA,EAAE,SAAW,EAAA,IAAA,IAAQ,OAAO;AAAA,KAC5C;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,qBAAqB,OAAsC,EAAA;AAC/D,IAAA,OAAO,KAAK,IAAK,CAAA,YAAA;AAAA,MACf,sBAAA;AAAA,MACA,MAAO,CAAA,MAAA,CAAO,EAAE,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAG,EAAA,EAAG,OAAO;AAAA,KAC3E;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,+BAA+B,OAAgD,EAAA;AACnF,IAAA,OAAO,KAAK,IAAK,CAAA,YAAA;AAAA,MACf,gCAAA;AAAA,MACA,MAAO,CAAA,MAAA,CAAO,EAAE,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAG,EAAA,EAAG,OAAO;AAAA,KAC3E;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,uBAAuB,OAA2B,EAAA;AACtD,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAA0C,CAAA,wBAAA,EAA0B,OAAO,CAAA;AAAA;AAC9F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,QAAQ,OAAyB,EAAA;AACrC,IAAA,OAAO,KAAK,IAAK,CAAA,YAAA;AAAA,MACf,SAAA;AAAA,MACA,OAAO,MAAO,CAAA,EAAE,SAAW,EAAA,IAAA,IAAQ,OAAO;AAAA,KAC5C;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,YAAY,OAA6B,EAAA;AAC7C,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAA+D,CAAA,aAAA,EAAe,OAAO,CAAA;AAAA;AACxG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,kBAAkB,OAAmC,EAAA;AAEzD,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAA0C,CAAA,mBAAA,EAAqB,OAAO,CAAA;AAAA;AACzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,eAAkB,GAAA;AACtB,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAA0C,iBAAiB,CAAA;AAAA;AAC9E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,qBAAwB,GAAA;AAC5B,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAA0C,uBAAuB,CAAA;AAAA;AACpF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,qBAAwB,GAAA;AAC5B,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAA0C,uBAAuB,CAAA;AAAA;AACpF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,uBAA0B,GAAA;AAC9B,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAA0C,yBAAyB,CAAA;AAAA;AACtF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,uBAAsE,GAAA;AAC1E,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAA6C,yBAAyB,CAAA;AAAA;AACzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,UAAU,OAA2B,EAAA;AACzC,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAyF,CAAA,WAAA,EAAa,OAAO,CAAA;AAAA;AAChI;AAGF,CAAA;;;AC1RO,IAAM,MAAS,GAAA;AAAA,EACpB,MAAA,EAAQ,IAAI,YAAa,EAAA;AAAA,EACzB,QAAA,EAAU,IAAI,cAAe,EAAA;AAAA,EAC7B,MAAA,EAAQ,IAAI,YAAa,EAAA;AAAA,EACzB,UAAA,EAAY,IAAI,gBAAiB,EAAA;AAAA,EACjC,UAAA,EAAY,IAAI,gBAAiB;AACnC;;;ACRA,IAAM,sBAAyB,GAAA;AAAA,EAC3B,CAAA,gCAAA,CAAA;AAAA,EACA,CAAA,6BAAA;AACJ,CAAA;AAEO,IAAM,gBAAmB,GAAA,CAAC,GAAG,sBAAA,EAAwB,CAAmC,iCAAA,CAAA;AACxF,IAAM,cAAiB,GAAA,CAAC,GAAG,sBAAA,EAAwB,CAAmC,iCAAA,CAAA;AACtF,IAAM,eAAkB,GAAA,CAAC,GAAG,sBAAA,EAAwB,CAAmC,iCAAA,CAAA;AACjF,IAAA,gBAAA,GAAmB,CAAC,CAA6B,0BAAA,CAAA;;;ACR9D,IAAM,kBAAqB,GAAA;AAAA;AAAA,EAEvB,CAAA,wBAAA;AACJ,CAAA;AACA,IAAM,aAAgB,GAAA;AAAA;AAAA,EAElB,CAAA,4BAAA,CAAA;AAAA;AAAA,EAEA,CAAA,sBAAA;AAAA;AAAA;AAGJ,CAAA;AACA,IAAM,YAAe,GAAA;AAAA,EACjB,CAAA,2BAAA,CAAA;AAAA;AAAA,EAEA,CAAA,+BAAA,CAAA;AAAA;AAAA,EAEA,CAAA,6CAAA,CAAA;AAAA,EACA,CAAA,0CAAA,CAAA;AAAA,EACA,CAAA,6CAAA,CAAA;AAAA,EACA,CAAA,iDAAA,CAAA;AAAA,EACA,CAAA,8CAAA,CAAA;AAAA,EACA,CAAA,2CAAA,CAAA;AAAA,EACA,CAAA,6CAAA,CAAA;AAAA,EACA,CAAA,0CAAA,CAAA;AAAA,EACA,CAAA,kDAAA,CAAA;AAAA,EACA,CAAA,4BAAA,CAAA;AAAA;AAAA,EAEA,sCAAsC,IAAK,CAAA,SAAA,CAAU,EAAE,OAAS,EAAA,SAAA,EAAW,CAAC,CAAA,CAAA;AAAA,EAC5E,CAAA,yCAAA,EAA4C,KAAK,SAAU,CAAA;AAAA;AAAA,IAEvD,KAAO,EAAA;AAAA;AAAA,MAEH,YAAc,EAAA,SAAA;AAAA;AAAA,MAEd,aAAe,EAAA;AAAA;AACnB,GACH,CAAC,CAAA,CAAA;AAAA,EACF,CAAA,0BAAA,EAA6B,KAAK,SAAU,CAAA;AAAA,IACxC,GAAK,EAAA;AAAA,MACD;AAAA,QACI,EAAI,EAAA,GAAA;AAAA,QACJ,IAAM,EAAA,6CAAA;AAAA,QACN,IAAM,EAAA,OAAA;AAAA,QACN,MAAQ,EAAA,GAAA;AAAA,QACR,IAAM,EAAA;AAAA,UACF,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAChC,EAAE,IAAA,EAAM,sCAAU,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAClC,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAChC,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU;AAAA;AACpC,OACJ;AAAA,MACA;AAAA,QACI,EAAI,EAAA,GAAA;AAAA,QACJ,IAAM,EAAA,6CAAA;AAAA,QACN,IAAM,EAAA,OAAA;AAAA,QACN,MAAQ,EAAA,GAAA;AAAA,QACR,IAAM,EAAA;AAAA,UACF,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAChC,EAAE,IAAA,EAAM,sCAAU,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAClC,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAChC,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU;AAAA;AACpC,OACJ;AAAA,MACA;AAAA,QACI,EAAI,EAAA,GAAA;AAAA,QACJ,IAAM,EAAA,gCAAA;AAAA,QACN,IAAM,EAAA,OAAA;AAAA,QACN,MAAQ,EAAA,GAAA;AAAA,QACR,IAAM,EAAA;AAAA,UACF,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAChC,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU;AAAA;AACpC,OACJ;AAAA,MACA;AAAA,QACI,EAAI,EAAA,GAAA;AAAA,QACJ,IAAM,EAAA,mDAAA;AAAA,QACN,IAAM,EAAA,OAAA;AAAA,QACN,MAAQ,EAAA,GAAA;AAAA,QACR,IAAM,EAAA;AAAA,UACF,EAAE,IAAA,EAAM,6CAAY,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UACpC,EAAE,IAAA,EAAM,6CAAY,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UACpC,EAAE,IAAA,EAAM,cAAM,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAC9B,EAAE,IAAA,EAAM,cAAM,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAC9B,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAChC,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU,EAAA;AAAA,UAChC,EAAE,IAAA,EAAM,0BAAQ,EAAA,IAAA,EAAM,SAAU;AAAA;AACpC,OACJ;AAAA,MACA,EAAE,EAAI,EAAA,GAAA,EAAK,IAAM,EAAA,mDAAA,EAAa,MAAM,OAAS,EAAA,MAAA,EAAQ,GAAK,EAAA,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,sBAAO,IAAM,EAAA,SAAA,EAAW,CAAE;AAAA,KACvG;AAAA,IACA,MAAQ,EAAA,EAAE,KAAO,EAAA,0DAAA,EAAe,OAAO,WAAY;AAAA,GACtD,CAAC,CAAA;AACN,CAAA;AAEA,IAAM,YAAe,GAAA;AAAA,EACjB,CAAA,qCAAA,CAAA;AAAA;AAAA,EAEA,CAAA,uCAAA,CAAA;AAAA,EACA,CAAA,uBAAA,CAAA;AAAA,EACA,CAAA,yBAAA,CAAA;AAAA,EACA,CAAA,2BAAA,CAAA;AAAA,EACA,CAAA,eAAA,CAAA;AAAA,EACA,CAAA,0BAAA,CAAA;AAAA,EACA,CAAA,iCAAA,CAAA;AAAA,EACA,CAAA,2BAAA,CAAA;AAAA,EACA,CAAA,6BAAA,CAAA;AAAA,EACA,CAAA,yBAAA,CAAA;AAAA,EACA,CAAA,wBAAA,CAAA;AAAA,EACA,CAAA,+BAAA,CAAA;AAAA,EACA,CAAA,kCAAA;AACJ,CAAA;AAEA,IAAM,UAAa,GAAA;AAAA;AAAA,EAEf,CAAA,8BAAA;AACJ,CAAA;AAEO,IAAM,aAAgB,GAAA;AAAA,EACzB,GAAG,kBAAA;AAAA,EACH,GAAG,aAAA;AAAA,EACH,GAAG,YAAA;AAAA,EACH,GAAG,YAAA;AAAA,EACH,GAAG;AACP;;;ACrHO,IAAM,oBAAuB,GAAA;AAAA;AAAA;AAAA;AAAA,EAIhC,wBAAA;AAAA,EACA,0BAAA;AAAA,EACA,oBAAA;AAAA;AAAA,EAEA,CAAA,sBAAA,CAAA;AAAA;AAAA,EAEA,CAAA,6BAAA;AACJ;;;AClBO,IAAM,eAA8B,EAAE,OAAA,EAAS,QAAQ,QAAU,EAAA,QAAA,EAAU,KAAK,MAAO;AACvF,IAAM,QAA0B,GAAA,EAAE,MAAQ,EAAA,eAAA,EAAiB,WAAW,MAAO;AAK7E,IAAM,oBAAwC,GAAA;AAAA,EACjD,EAAE,IAAA,EAAM,2BAAc,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EAC5O,EAAE,IAAA,EAAM,mDAAkB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EAChP,EAAE,IAAA,EAAM,uCAAgB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EAC9O,EAAE,IAAA,EAAM,+DAAoB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EAClP,EAAE,IAAA,EAAM,uFAAwB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EACtP,EAAE,IAAA,EAAM,mDAAkB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EAChP,EAAE,IAAA,EAAM,2DAAqB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EACnP,EAAE,IAAA,EAAM,+DAAoB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EAClP,EAAE,IAAA,EAAM,+DAAoB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EAClP,EAAE,IAAA,EAAM,+DAAoB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EAClP,EAAE,IAAA,EAAM,2EAAsB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EACpP,EAAE,IAAA,EAAM,2EAAsB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM,EAAA;AAAA,EACpP,EAAE,IAAA,EAAM,2EAAsB,EAAA,GAAA,EAAK,CAAC,EAAE,OAAS,EAAA,OAAA,EAAS,MAAQ,EAAA,mBAAA,EAAqB,eAAiB,EAAA,UAAA,EAAY,qBAAuB,EAAA,MAAA,EAAQ,QAAU,EAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,CAAA,EAAG,QAAU,EAAA,KAAA,EAAO,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAG,OAAO,KAAM;AACxP;AAKO,IAAM,SAA2B,GAAA;AAAA;AAAA,EAEpC,KAAO,EAAA;AAAA;AAAA,IAEH,SAAW,EAAA;AAAA;AAAA,MAEP,aAAe,EAAA,4cAAA;AAAA;AAAA,MAEf,eAAiB,EAAA;AAAA,KACrB;AAAA;AAAA,IAEA,YAAY,EAAC;AAAA;AAAA,IACb,MAAM;AAAC,GACX;AAAA,EACA,KAAO,EAAA;AAAA,IACH,MAAM;AAAC;AAEf;AAIO,IAAM,YAAe,GAAA;AAEf,IAAA,MAAA,GAAS,EAAE,MAAA,EAAQ,SAAU;AAE7B,IAAA,QAAA,GAAW,CAAC,CAAA,EAAA,CAAA,EAAM,CAAI,EAAA,CAAA;AAE5B,IAAM,WAAc,GAAA,CAAA,mMAAA;;;ACxD3B,IAAkC,YAAA,GAAA,OAAA,CAAA,aAAA,EAAA,CAAA;AAI3B,SAAS,gBAAgB,YAA0B,EAAA;AAGtD,EAAM,MAAA,CAAC,cAAc,eAAe,CAAA,GAAA,IAAI,uBAAqB,CAAC,GAAG,YAAY,CAAC,CAAA;AAG9E,EAAA,MAAM,YAAe,GAAA,IAAA,YAAA,CAAA,OAAA,EAAQ,MAAM,YAAA,CAAa,IAAI,CAAC,CAAA,KAAM,CAAE,CAAA,GAAG,EAAE,IAAK,CAAA,CAAC,CAAG,EAAA,CAAC,YAAY,CAAC,CAAA;AAGzF,EAAA,MAAM,mBAAmB,YAAa,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,KAAK,KAAU,KAAA;AAC9D,IAAI,GAAA,CAAA,GAAA,CAAI,OAAO,CAAI,GAAA,KAAA;AAEnB,IAAO,OAAA,GAAA;AAAA,GACX,EAAG,EAA4B,CAAA;AAG/B,EAAA,MAAM,0BAAsB,YAAQ,CAAA,OAAA,EAAA,MAAM,aAAa,MAAO,CAAA,CAAC,KAAK,QAAa,KAAA;AAC7E,IAAS,QAAA,CAAA,GAAA,CAAI,QAAQ,CAAW,OAAA,KAAA;AAC5B,MAAA,GAAA,CAAI,OAAQ,CAAA,OAAO,CAAI,GAAA,EAAE,GAAG,QAAS,EAAA;AAAA,KACxC,CAAA;AAED,IAAO,OAAA,GAAA;AAAA,KAER,EAA8B,CAAG,EAAA,CAAC,YAAY,CAAC,CAAA;AAGlD,EAAA,MAAM,eAAkB,GAAA,YAAA,CAAa,MAAO,CAAA,CAAC,KAAK,GAAQ,KAAA;AACtD,IAAI,GAAA,CAAA,GAAA,CAAI,IAAI,CAAI,GAAA,GAAA;AAEhB,IAAO,OAAA,GAAA;AAAA,GACX,EAAG,EAA8B,CAAA;AAGjC,EAAA,MAAM,mBAAe,YAAQ,CAAA,OAAA,EAAA,MACzB,aAAa,MAAO,CAAA,CAAC,KAAK,IAAS,KAAA;AAC/B,IAAK,IAAA,CAAA,GAAA,CAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC1B,MAAM,MAAA,YAAA,GAAe,gBAAiB,CAAA,OAAA,CAAQ,OAAO,CAAA;AAGrD,MAAI,IAAA,CAAC,GAAI,CAAA,YAAY,CAAG,EAAA;AACpB,QAAI,GAAA,CAAA,YAAY,IAAI,EAAC;AAAA;AAIzB,MAAK,IAAA,CAAA,GAAA,CAAI,OAAQ,CAAA,CAACC,QAAY,KAAA;AAC1B,QAAA,GAAA,CAAI,YAAY,CAAG,CAAA,IAAA,CAAK,gBAAiBA,CAAAA,QAAAA,CAAQ,OAAO,CAAE,CAAA;AAAA,OAC7D,CAAA;AAAA,KACJ,CAAA;AAED,IAAO,OAAA,GAAA;AAAA,KACR,EAA0B,GAC9B,CAAC,gBAAA,EAAkB,YAAY,CAAC,CAAA;AAGnC,EAAM,MAAA,aAAA,GAAA,IAAgB,YAAQ,CAAA,OAAA,EAAA,MAAO,YAAa,CAAA,KAAA,CAAM,CAAK,CAAA,KAAA,CAAA,CAAE,QAAQ,CAAA,EAAI,CAAC,YAAY,CAAC,CAAA;AAEzF,EAAO,OAAA;AAAA,IACH,eAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,mBAAA;AAAA,IACA,gBAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACJ;AACJ;;;ACtEA,IAAAC,aAAuC,GAAA,OAAA,CAAA,aAAA,EAAA,CAAA;AAWhC,SAAS,kBAAgC,CAAA,EAAE,KAAO,EAAA,OAAA,EAAwB,EAAA;AAC/E,EAAA,MAAM,WAAc,GAAA,IAAA,aAAA,CAAA,WAAA;AAAA,IAClB,OAAO,CAAa,KAAA;AAClB,MAAA,MAAM,WAAc,GAAA,CAAA;AAEpB,MAAO,OAAA,MAAM,QAAQ,WAAW,CAAA;AAAA,KAClC;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,IAAA,aAAA,CAAA,SAAA,EAAU,MAAM;AACd,IAAO,MAAA,CAAA,gBAAA,CAAiB,OAAO,WAAW,CAAA;AAE1C,IAAA,OAAO,MAAM;AACX,MAAO,MAAA,CAAA,mBAAA,CAAoB,OAAO,WAAW,CAAA;AAAA,KAC/C;AAAA,GACC,EAAA,CAAC,WAAa,EAAA,KAAK,CAAC,CAAA;AACzB;;;ACzBY,IAAA,aAAA,qBAAAC,cAAL,KAAA;AAQL,EAAAA,eAAA,mBAAoB,CAAA,GAAA,mBAAA;AAMpB,EAAAA,eAAA,gBAAiB,CAAA,GAAA,gBAAA;AAMjB,EAAAA,eAAA,qBAAsB,CAAA,GAAA,qBAAA;AAMtB,EAAAA,eAAA,uBAAwB,CAAA,GAAA,uBAAA;AAKxB,EAAAA,eAAA,aAAc,CAAA,GAAA,aAAA;AAOd,EAAAA,eAAA,mBAAoB,CAAA,GAAA,mBAAA;AAepB,EAAAA,eAAA,0BAA2B,CAAA,GAAA,0BAAA;AAK3B,EAAAA,eAAA,iBAAkB,CAAA,GAAA,iBAAA;AAMlB,EAAAA,eAAA,iBAAkB,CAAA,GAAA,eAAA;AAMlB,EAAAA,eAAA,iBAAkB,CAAA,GAAA,iBAAA;AAtER,EAAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;AA8EA,IAAA,sBAAA,qBAAAC,uBAAL,KAAA;AACL,EAAAA,wBAAA,cAAe,CAAA,GAAA,cAAA;AACf,EAAAA,wBAAA,WAAY,CAAA,GAAA,WAAA;AAFF,EAAAA,OAAAA,uBAAAA;AAAA,CAAA,EAAA,sBAAA,IAAA,EAAA;;;ACxEL,SAAS,qBAAA,CAAsB,MAAkB,UAAsB,EAAA;AAC5E,EAAA,IAAI,WAAc,GAAA,CAAA;AAClB,EAAA,IAAI,SAAY,GAAA,CAAA;AAGhB,EAAM,MAAA,MAAA,GAAS,SAAS,IAAI,CAAA;AAE5B,EAAA,MAAA,CAAO,QAAQ,CAAS,KAAA,KAAA;AACtB,IAAA,KAAA,CAAM,SAAY,GAAA,WAAA;AAElB,IAAM,KAAA,CAAA,GAAA,CAAI,QAAQ,CAAO,GAAA,KAAA;AACvB,MAAM,MAAA,SAAA,GAAY,WAAW,SAAW,EAAA,CAAA;AACxC,MAAA,GAAA,CAAI,SAAY,GAAA,WAAA;AAChB,MAAI,GAAA,CAAA,OAAA,GAAU,cAAc,SAAY,GAAA,CAAA;AACxC,MAAe,WAAA,IAAA,SAAA;AAAA,KAChB,CAAA;AAED,IAAA,KAAA,CAAM,UAAU,KAAM,CAAA,GAAA,CAAI,MAAM,GAAI,CAAA,MAAA,GAAS,CAAC,CAAG,CAAA,OAAA;AAAA,GAClD,CAAA;AAED,EAAO,OAAA,MAAA;AACT;AASO,SAAS,gBAAgB,QAA0B,EAAA;AAExD,EAAA,IAAI,CAAC,QAAA,IAAY,OAAO,QAAA,KAAa,QAAU,EAAA;AAC7C,IAAM,MAAA,IAAI,MAAM,0FAAoB,CAAA;AAAA;AAItC,EAAA,MAAM,QAAW,GAAA,QAAA,CAAS,OAAQ,CAAA,oBAAA,EAAsB,EAAE,CAAA;AAG1D,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAM,MAAA,IAAI,MAAM,2HAA4B,CAAA;AAAA;AAG9C,EAAO,OAAA,QAAA;AACT;AAEO,SAAS,wBAAA,CAAyB,OAAe,IAAkB,EAAA;AACxE,EAAA,IAAI,YAAe,GAAA,CAAA;AAEnB,EAAA,KAAA,MAAW,YAAY,IAAM,EAAA;AAC3B,IAAM,MAAA,SAAA,GAAY,SAAS,GAAI,CAAA,MAAA;AAE/B,IAAA,IAAI,KAAS,IAAA,YAAA,IAAgB,KAAQ,GAAA,YAAA,GAAe,SAAW,EAAA;AAE7D,MAAO,OAAA,QAAA;AAAA;AAGT,IAAgB,YAAA,IAAA,SAAA;AAAA;AAGlB,EAAO,OAAA,IAAA;AACT;AAMA,eAAsB,KAAA,CAAM,KAAK,EAAmB,EAAA;AAClD,EAAA,OAAO,IAAI,OAAQ,CAAA,CAAA,OAAA,KAAW,UAAW,CAAA,OAAA,EAAS,EAAE,CAAC,CAAA;AACvD;AAEO,SAAS,oBAA0B,GAAA;AACxC,EAAI,IAAA,OAAA;AACJ,EAAI,IAAA,MAAA;AAEJ,EAAA,MAAM,OAAU,GAAA,IAAI,OAAW,CAAA,CAAC,KAAK,GAAQ,KAAA;AAC3C,IAAU,OAAA,GAAA,GAAA;AACV,IAAS,MAAA,GAAA,GAAA;AAAA,GACV,CAAA;AAED,EAAO,OAAA,EAAE,OAAS,EAAA,OAAA,EAAS,MAAO,EAAA;AACpC;AAQO,SAAS,YAAe,GAAgB,EAAA;AAC7C,EAAA,OAAQ,MAAM,OAAQ,CAAA,GAAG,IAAI,QAAS,CAAA,GAAG,IAAI,EAAC;AAChD;AASA,SAAS,SAAY,GAAW,EAAA;AAC9B,EAAA,OAAO,IAAK,CAAA,KAAA,CAAM,IAAK,CAAA,SAAA,CAAU,GAAG,CAAC,CAAA;AACvC;;;ACjGA,eAAsB,eAAe,OAAmB,EAAA;AACpD,EAAA,MAAM,EAAE,OAAA,EAAS,OAAQ,EAAA,GAAI,oBAAqB,EAAA;AAClD,EAAO,MAAA,CAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA;AAAA,IAGH,CAAC,CAAa,KAAA,OAAA,CAAS,CAAE,CAAA;AAAA;AAAA,IAEzB,EAAE,MAAM,IAAK;AAAA,GACjB;AACA,EAAM,MAAA,MAAA,CAAO,OAAO,cAAe,CAAA,EAAE,OAAO,OAAQ,CAAA,IAAA,CAAK,IAAI,CAAA,EAAG,CAAA;AAEhE,EAAA,OAAO,MAAM,OAAA;AACjB;AAKA,eAAsB,SAAS,IAAc,EAAA;AACzC,EAAO,OAAA,MAAM,OAAO,QAAS,CAAA,MAAA,CAAO,EAAE,OAAS,EAAA,CAAA,SAAA,EAAY,IAAI,CAAA,CAAA,EAAI,CAAA;AACvE;AAKA,eAAsB,cAAiB,GAAA;AACnC,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,MAAM,MAAA,CAAO,SAAS,cAAuB,CAAA,EAAE,OAAS,EAAA,CAAA,YAAA,CAAA,EAAgB,CAAA;AAEzF,EAAA,OAAO,OAAO,IAAI,CAAA;AACtB;AAKO,IAAM,oBAAoB,MAAM;AAEnC,EAAA,IAAI,KAAgC,GAAA,IAAA;AAEpC,EAAA,eAAe,YAAgC,GAAA;AAC3C,IAAA,IAAI,KAAO,EAAA;AAEP,MAAO,OAAA,KAAA;AAAA;AAIX,IAAA,KAAA,GAAA,CAAS,YAAY;AACjB,MAAI,IAAA;AACA,QAAM,MAAA,EAAE,IAAK,EAAA,GAAI,MAAM,MAAA,CAAO,SAAS,cAAe,CAAA,EAAE,OAAS,EAAA,YAAA,EAAc,CAAA;AAE/E,QAAA,OAAO,OAAO,IAAI,CAAA;AAAA,eACb,CAAG,EAAA;AAER,QAAQ,KAAA,GAAA,IAAA;AACR,QAAM,MAAA,CAAA;AAAA;AACV,KACD,GAAA;AAEH,IAAA,OAAO,MAAM,KAAA;AAAA;AAIjB,EAAA,YAAA,CAAa,aAAa,MAAM;AAC5B,IAAQ,KAAA,GAAA,IAAA;AAAA,GACZ;AAEA,EAAO,OAAA,YAAA;AACX,CAAG;AAKI,IAAM,sBAAsB,MAAM;AAErC,EAAA,IAAI,KAAgC,GAAA,IAAA;AAEpC,EAAA,eAAe,cAAkC,GAAA;AAC7C,IAAA,IAAI,KAAO,EAAA;AACP,MAAA,OAAO,MAAM,KAAA;AAAA;AAIjB,IAAA,KAAA,GAAA,CAAS,YAAY;AACjB,MAAI,IAAA;AACA,QAAM,MAAA,EAAE,IAAK,EAAA,GAAI,MAAM,MAAA,CAAO,SAAS,cAAuB,CAAA,EAAE,OAAS,EAAA,cAAA,EAAgB,CAAA;AAEzF,QAAA,OAAO,OAAO,IAAI,CAAA;AAAA,eACb,CAAG,EAAA;AAER,QAAQ,KAAA,GAAA,IAAA;AACR,QAAM,MAAA,CAAA;AAAA;AACV,KACD,GAAA;AAEH,IAAA,OAAO,MAAM,KAAA;AAAA;AAIjB,EAAA,cAAA,CAAe,aAAa,MAAM;AAC9B,IAAQ,KAAA,GAAA,IAAA;AAAA,GACZ;AAEA,EAAO,OAAA,cAAA;AACX,CAAG;;;AC5GH,eAAsB,eAAgB,CAAA,YAAA,EAA0B,EAAE,IAAA,EAAM,OAAwB,EAAA;AAC5F,EAAA,IAAI,SAAS,UAAY,EAAA;AACrB,IAAA,MAAM,mBAAmB,IAAI,CAAA,CAAA;AAAA;AAIjC,EAAA,MAAM,SAAS,YAAa,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,KAAK,CAAA;AACxD,EAAA,IAAI,CAAC,MAAQ,EAAA;AAET,IAAA,MAAM,oBAAoB,MAAM,CAAA,CAAA;AAAA;AAIpC,EAAM,MAAA,QAAA,CAAS,OAAO,SAAS,CAAA;AACnC;;;ACbA,eAAsB,UAAW,CAAA,EAAE,IAAM,EAAA,KAAA,EAAmB,EAAA;AACxD,EAAA,IAAI,SAAS,KAAO,EAAA;AAChB,IAAA,MAAM,mBAAmB,IAAI,CAAA,CAAA;AAAA;AAGjC,EAAA,IAAI,UAAU,SAAW,EAAA;AAErB,IAAM,MAAA,MAAA,CAAO,OAAO,YAAa,EAAA;AAAA,GAE9B,MAAA;AAEH,IAAA,MAAM,oBAAoB,KAAK,CAAA,CAAA;AAAA;AAGvC;;;ACdA,eAAsB,cAAe,CAAA,EAAE,IAAM,EAAA,KAAA,EAAuB,EAAA;AAChE,EAAA,IAAI,SAAS,SAAW,EAAA;AACpB,IAAA,MAAM,mBAAmB,IAAI,CAAA,CAAA;AAAA;AAGjC,EAAA,IAAI,UAAU,QAAU,EAAA;AAEpB,IAAA,MAAM,qBAAqB,QAAQ,CAAA;AAAA,GAEvC,MAAA,IAAW,UAAU,MAAQ,EAAA;AAEzB,IAAA,MAAM,qBAAqB,MAAM,CAAA;AAAA,GAErC,MAAA,IAAW,UAAU,OAAS,EAAA;AAE1B,IAAA,MAAM,qBAAqB,OAAO,CAAA;AAAA,GAEtC,MAAA,IAAW,UAAU,QAAU,EAAA;AAE3B,IAAA,MAAM,qBAAqB,QAAQ,CAAA;AAAA,GAEvC,MAAA,IAAW,UAAU,SAAW,EAAA;AAE5B,IAAA,MAAM,qBAAsB,EAAA;AAAA,GAEzB,MAAA;AAEH,IAAA,MAAM,oBAAoB,KAAK,CAAA,CAAA;AAAA;AAEvC;AASA,eAAsB,aAAgB,GAAA;AAClC,EAAA,MAAM,EAAE,IAAK,EAAA,GAAI,MAAM,MAAA,CAAO,SAAS,cAAoC,CAAA;AAAA,IACvE,OAAS,EAAA,CAAA,YAAA;AAAA,GACZ,CAAA;AAED,EAAA,OAAO,IAAS,KAAA,SAAA;AACpB;AAQA,eAAe,eAAe,SAAqB,EAAA;AAC/C,EAAA,MAAM,OAAU,GAAA,CAAA,gBAAA,CAAA;AAGhB,EAAM,MAAA,cAAA,GAAiB,MAAM,aAAc,EAAA;AAG3C,EAAA,MAAM,KAAQ,GAAA;AAAA,IACV,GAAI,cAAA,GAAiB,EAAC,GAAI,CAAC,CAA2B,yBAAA,CAAA,CAAA;AAAA,IACtD,GAAG;AAAA,GACP,CAAE,KAAK,IAAI,CAAA;AAGX,EAAA,MAAM,KAAM,EAAA;AAGZ,EAAA,OAAO,MAAM,MAAO,CAAA,QAAA,CAAS,SAAS,EAAE,OAAA,EAAS,OAAO,CAAA;AAC5D;AAaA,eAAsB,oBAAA,CAAqB,OAAuB,QAAU,EAAA;AACxE,EAAI,IAAA,KAAA;AAGJ,EAAA,IAAI,SAAS,QAAU,EAAA;AACnB,IAAQ,KAAA,GAAA,gBAAA;AAAA,GACZ,MAAA,IAAW,SAAS,MAAQ,EAAA;AACxB,IAAQ,KAAA,GAAA,cAAA;AAAA,GACZ,MAAA,IAAW,SAAS,OAAS,EAAA;AACzB,IAAQ,KAAA,GAAA,eAAA;AAAA,GACL,MAAA;AACH,IAAQ,KAAA,GAAA,gBAAA;AAAA;AAIZ,EAAO,OAAA,MAAM,eAAe,KAAK,CAAA;AACrC;AAMA,eAAsB,qBAAwB,GAAA;AAC1C,EAAA,MAAM,OAAU,GAAA,CAAA,cAAA,CAAA;AAEhB,EAAA,OAAO,MAAM,MAAO,CAAA,QAAA,CAAS,MAAO,CAAA,EAAE,SAAS,CAAA;AACnD;;;ACxGA,eAAsB,UAAW,CAAA,EAAE,IAAM,EAAA,KAAA,EAAmB,EAAA;AACxD,EAAA,IAAI,SAAS,KAAO,EAAA;AAChB,IAAA,MAAM,mBAAmB,IAAI,CAAA,CAAA;AAAA;AAGjC,EAAA,IAAI,UAAU,QAAU,EAAA;AAIpB,IAAM,MAAA,MAAA,CAAO,SAAS,eAAgB,EAAA;AAAA,GAC1C,MAAA,IAAW,UAAU,QAAU,EAAA;AAI3B,IAAM,MAAA,MAAA,CAAO,SAAS,eAAgB,EAAA;AAEtC,IAAM,MAAA,MAAA,CAAO,OAAO,YAAa,EAAA;AAAA,GAC9B,MAAA;AAEH,IAAA,MAAM,oBAAoB,KAAK,CAAA,CAAA;AAAA;AAGvC;;;ACpBA,eAAe,oBAAA,CAAqB,QAAiB,WAAsB,EAAA;AACvE,EAAM,MAAA,KAAA,GAAQ,WAAe,IAAA,MAAM,kBAAmB,EAAA;AAEtD,EAAM,MAAA,aAAA,GAAgB,SAAS,GAAM,GAAA,GAAA;AAErC,EAAA,MAAM,EAAE,IAAA,EAAM,IAAK,EAAA,GAAI,MAAM,MAAA,CAAO,QAAS,CAAA,SAAA,CAAU,EAAE,GAAA,EAAK,SAAW,EAAA,QAAA,EAAU,GAAG,CAAA;AAGtF,EAAA,IAAI,SAAS,aAAe,EAAA;AACxB,IAAA;AAAA;AAGJ,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,EAAO,CAAK,EAAA,EAAA;AAC5B,IAAA,MAAM,KAAM,EAAA;AACZ,IAAM,MAAA,MAAA,CAAO,QAAS,CAAA,SAAA,CAAU,EAAE,GAAA,EAAK,WAAW,KAAO,EAAA,aAAA,EAAe,QAAU,EAAA,CAAA,EAAG,CAAA;AAAA;AAGzF,EAAA;AACJ;AAOA,eAAsB,wBAAwB,WAAsB,EAAA;AAChE,EAAO,OAAA,oBAAA,CAAqB,MAAM,WAAW,CAAA;AACjD;AAOA,eAAsB,yBAAyB,WAAsB,EAAA;AACjE,EAAO,OAAA,oBAAA,CAAqB,OAAO,WAAW,CAAA;AAClD;;;ACjCA,eAAsB,8BAA8B,SAAqB,EAAA;AAErE,EAAA,MAAM,KAAQ,GAAA,EAAA;AACd,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,SAAA,CAAU,QAAQ,CAAK,EAAA,EAAA;AACvC,IAAA,MAAM,KAAM,EAAA;AACZ,IAAA,MAAM,OAAU,GAAA,CAAA,qBAAA,EAAwB,SAAU,CAAA,CAAC,CAAC,CAAA,CAAA;AACpD,IAAM,MAAA,EAAE,MAAS,GAAA,MAAM,OAAO,QAAS,CAAA,cAAA,CAAuB,EAAE,OAAA,EAAS,CAAA;AAEzE,IAAA,IAAI,SAAS,KAAO,EAAA;AAEhB,MAAO,OAAA,KAAA;AAAA;AACX;AAGJ,EAAO,OAAA,IAAA;AACX;AAaA,eAAsB,iBAAiB,SAAoB,EAAA;AAEvD,EAAM,MAAA,KAAA,GAAQ,SAAa,IAAA,MAAM,gBAAiB,EAAA;AAElD,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAK,IAAA,KAAA,EAAO,CAAK,EAAA,EAAA;AAE7B,IAAA,MAAM,KAAM,EAAA;AAEZ,IAAM,MAAA,OAAA,GAAU,MAAM,kBAAA,CAAmB,CAAC,CAAA;AAG1C,IAAA,IAAI,CAAC,OAAS,EAAA;AACV,MAAO,OAAA,KAAA;AAAA;AACX;AAIJ,EAAO,OAAA,IAAA;AACX;AASO,IAAM,sBAAsB,MAAM;AAErC,EAAM,MAAA,KAAA,uBAAY,GAA8B,EAAA;AAQhD,EAAA,eAAe,eAAe,IAAgC,EAAA;AAC1D,IAAM,MAAA,MAAA,GAAS,KAAM,CAAA,GAAA,CAAI,IAAI,CAAA;AAC7B,IAAA,IAAI,MAAQ,EAAA;AAER,MAAO,OAAA,MAAA;AAAA;AAGX,IAAA,MAAM,KAAQ,GAAA,OAAA;AACd,IAAM,MAAA,OAAA,GAAU,gCAAgC,IAAI,CAAA,CAAA;AAIpD,IAAA,MAAM,WAAW,YAAY;AACzB,MAAI,IAAA;AACA,QAAM,MAAA,EAAE,MAAS,GAAA,MAAM,OAAO,QAAS,CAAA,cAAA,CAAuB,EAAE,OAAA,EAAS,CAAA;AACzE,QAAA,MAAM,UAAU,IAAS,KAAA,KAAA;AAGzB,QAAA,IAAI,CAAC,OAAS,EAAA;AACV,UAAA,KAAA,CAAM,OAAO,IAAI,CAAA;AAAA;AAGrB,QAAO,OAAA,OAAA;AAAA,eACF,GAAK,EAAA;AAEV,QAAA,KAAA,CAAM,OAAO,IAAI,CAAA;AACjB,QAAM,MAAA,GAAA;AAAA;AACV,KACD,GAAA;AAGH,IAAM,KAAA,CAAA,GAAA,CAAI,MAAM,OAAO,CAAA;AAGvB,IAAO,OAAA,OAAA;AAAA;AAMX,EAAA,cAAA,CAAe,aAAa,MAAM;AAC9B,IAAA,KAAA,CAAM,KAAM,EAAA;AAAA,GAChB;AAOA,EAAe,cAAA,CAAA,gBAAA,GAAmB,CAAC,IAAiB,KAAA;AAChD,IAAA,KAAA,CAAM,OAAO,IAAI,CAAA;AAAA,GACrB;AAEA,EAAO,OAAA,cAAA;AACX,CAAG;;;ACtHH,eAAsB,gBAAiB,CAAA,EAAE,IAAM,EAAA,KAAA,EAAyB,EAAA;AACpE,EAAA,IAAI,SAAS,WAAa,EAAA;AACtB,IAAA,MAAM,mBAAmB,IAAI,CAAA,CAAA;AAAA;AAGjC,EAAA,IAAI,UAAU,qBAAuB,EAAA;AAEjC,IAAA,MAAM,0BAA2B,EAAA;AAAA,GAErC,MAAA,IAAW,UAAU,oBAAsB,EAAA;AAEvC,IAAA,MAAM,yBAA0B,EAAA;AAAA,GAEpC,MAAA,IAAW,UAAU,mBAAqB,EAAA;AAEtC,IAAA,MAAM,wBAAyB,EAAA;AAAA,GAE5B,MAAA;AAEH,IAAA,MAAM,oBAAoB,KAAK,CAAA,CAAA;AAAA;AAEvC;AAKA,eAAe,0BAA6B,GAAA;AAExC,EAAM,MAAA,WAAA,GAAc,MAAM,kBAAmB,EAAA;AAE7C,EAAM,MAAA,SAAA,GAAY,MAAM,gBAAiB,EAAA;AAGzC,EAAA,MAAM,wBAAwB,WAAW,CAAA;AAGzC,EAAA,MAAM,iBAAiB,SAAS,CAAA;AACpC;AAIA,eAAe,yBAA4B,GAAA;AACvC,EAAM,MAAA,EAAE,MAAM,EAAE,MAAA,IAAa,GAAA,MAAM,MAAO,CAAA,QAAA,CAAS,SAAU,CAAA;AAAA,IACzD,KAAO,EAAA,mFAAA;AAAA,IACP,OAAS,EAAA,yHAAA;AAAA,IACT,OAAS,EAAA;AAAA,MACL,KAAO,EAAA,IAAA;AAAA,MACP,IAAM,EAAA;AAAA;AACV,GACH,CAAA;AACD,EAAA,IAAI,WAAW,MAAQ,EAAA;AAEnB,IAAA,OAAO,MAAM,0BAA2B,EAAA;AAAA;AAI5C,EAAA;AAEJ;AAKA,eAAe,wBAA2B,GAAA;AAEtC,EAAI,IAAA;AACA,IAAM,MAAA,MAAA,CAAO,OAAO,UAAW,EAAA;AAI/B,IAAA,kBAAA,CAAmB,UAAW,EAAA;AAE9B,IAAA,kBAAA,CAAmB,UAAW,EAAA;AAE9B,IAAA,gBAAA,CAAiB,UAAW,EAAA;AAG5B,IAAM,MAAA,WAAA,GAAc,MAAM,kBAAmB,EAAA;AAE7C,IAAM,MAAA,SAAA,GAAY,MAAM,gBAAiB,EAAA;AAGzC,IAAA,MAAM,yBAAyB,WAAW,CAAA;AAE1C,IAAM,MAAA,UAAA,GAAa,MAAM,gBAAA,CAAiB,SAAS,CAAA;AACnD,IAAA,IAAI,CAAC,UAAY,EAAA;AACb,MAAM,MAAA,cAAA;AAAA;AAIV,IAAM,MAAA,QAAA,GAAW,MAAM,YAAa,EAAA;AACpC,IAAA,MAAM,MAAO,CAAA,QAAA,CAAS,iBAAkB,CAAA,EAAE,UAAU,CAAA;AAAA,WAE/C,CAAG,EAAA;AACR,IAAA,IAAI,MAAM,cAAgB,EAAA;AAEtB,MAAA,MAAM,yBAA0B,EAAA;AAAA,KAC7B,MAAA;AACH,MAAA,KAAA,CAAM,iFAA0B,CAAA;AAAA;AACpC,GACF,SAAA;AACE,IAAM,MAAA,MAAA,CAAO,OAAO,UAAW,EAAA;AAAA;AAEvC;AAOA,eAAsB,YAAe,GAAA;AAEjC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAQ,EAAA,GAAI,oBAA6B,EAAA;AAG1D,EAAO,MAAA,CAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA;AAAA,IAGH,CAAC,CAAA,KAAa,OAAS,CAAA,CAAA,CAAiC,OAAO,SAAS,CAAA;AAAA;AAAA,IAExE,EAAE,MAAM,IAAK;AAAA,GACjB;AAGA,EAAM,MAAA,SAAA,GAAY,MAAM,gBAAiB,EAAA;AAGzC,EAAM,MAAA,MAAA,CAAO,SAAS,OAAQ,CAAA;AAAA;AAAA,IAE1B,YAAA;AAAA,IACA,KAAO,EAAA;AAAA;AAAA,MAEH,gBAAgB,WAAW,CAAA,CAAA;AAAA;AAAA,MAE3B,CAAA,aAAA,EAAgB,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAAA;AAAA,MAE9B,GAAG;AAAA,KACP,CAAE,KAAK,IAAI;AAAA,GACd,CAAA;AAGD,EAAA,MAAM,WAAW,MAAM,OAAA;AAGvB,EAAO,OAAA,QAAA;AACX;;;ACzJA,eAAsB,cAAc,IAA0B,EAAA;AAE1D,EAAM,MAAA,EAAE,MAAM,MAAO,EAAA,GAAI,MAAM,MAAO,CAAA,MAAA,CAAO,iBAAiB,IAAI,CAAA;AAGlE,EAAA,OAAO,MAAO,CAAA,IAAA,CAAK,GAAI,CAAA,CAAC,CAAO,MAAA,EAAE,GAAG,CAAA,EAAG,SAAW,EAAA,CAAA,EAAG,OAAS,EAAA,CAAA,EAAI,CAAA,CAAA;AACtE;AAKA,eAAsB,SAAY,GAAA;AAC9B,EAAA,MAAM,EAAE,IAAM,EAAA,OAAA,KAAY,MAAM,MAAA,CAAO,OAAO,cAAe,EAAA;AAE7D,EAAA,MAAM,SAAY,GAAA,MAAA,CAAO,IAAK,CAAA,OAAO,EAAE,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAA,EAAI,OAAQ,CAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AAE3E,EAAO,OAAA,SAAA;AACX;AAEA,SAAS,aAAa,MAAsB,EAAA;AACxC,EAAA,MAAM,CAAC,IAAM,EAAA,IAAI,CAAI,GAAA,MAAA,CAAO,MAAM,GAAG,CAAA;AACrC,EAAA,IAAI,SAAS,MAAW,EAAA;AACpB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAyB,sBAAA,EAAA,MAAM,CAAE,CAAA,CAAA;AAAA;AAErD,EAAA,MAAM,OAAO,IAAK,CAAA,KAAA,CAAM,SAAS,CAAA,GAAI,CAAC,CAAK,IAAA,EAAA;AAC3C,EAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,IAAA,CAAK,IAAK,CAAA,IAAA,IAAQ,MAAM,CAAA,EAAG,CAAK,CAAA,KAAA,CAAA,CAAE,UAAW,CAAA,CAAC,CAAC,CAAA;AAExE,EAAO,OAAA,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,IAAA,EAAM,MAAM,CAAA;AAC3C;AAMA,eAAsB,cAAc,QAAkB,EAAA;AAClD,EAAM,MAAA,QAAA,GAAW,IAAI,QAAS,EAAA;AAC9B,EAAA,QAAA,CAAS,MAAO,CAAA,MAAA,EAAQ,YAAa,CAAA,QAAQ,GAAG,UAAU,CAAA;AAC1D,EAAS,QAAA,CAAA,MAAA,CAAO,uBAAuB,QAAQ,CAAA;AAC/C,EAAS,QAAA,CAAA,MAAA,CAAO,sBAAsB,QAAQ,CAAA;AAC9C,EAAS,QAAA,CAAA,MAAA,CAAO,sBAAsB,QAAQ,CAAA;AAC9C,EAAS,QAAA,CAAA,MAAA,CAAO,oBAAoB,GAAG,CAAA;AACvC,EAAS,QAAA,CAAA,MAAA,CAAO,YAAY,KAAK,CAAA;AAGjC,EAAM,MAAA,QAAA,GAAW,MAAM,KAAA,CAAM,mBAAqB,EAAA;AAAA,IAC9C,OAAS,EAAA;AAAA,MACL,sBAAwB,EAAA,KAAA;AAAA,MACxB,uBAAyB,EAAA,IAAA;AAAA,MACzB,oBAAsB,EAAA,UAAA;AAAA,MACtB,uBAAyB,EAAA,UAAA;AAAA,MACzB,sBAAwB,EAAA,OAAA;AAAA,MACxB,wBAA0B,EAAA,KAAA;AAAA,MAC1B,qBAAuB,EAAA,UAAA;AAAA,MACvB,uBAAyB,EAAA,KAAA;AAAA,MACzB,2BAA6B,EAAA,QAAA;AAAA,MAC7B,oBAAsB,EAAA,UAAA;AAAA,MACtB,qBAAuB,EAAA,qMAAA;AAAA,MACvB,0BAA4B,EAAA;AAAA,KAChC;AAAA,IACA,MAAQ,EAAA,MAAA;AAAA,IACR,IAAM,EAAA;AAAA,GACT,CAAA;AACD,EAAM,MAAA,IAAA,GAAO,MAAM,QAAA,CAAS,IAAK,EAAA;AAGjC,EAAO,OAAA,IAAA;AACX;AAKA,eAAsB,eAAe,UAAoB,EAAA;AACrD,EAAA,MAAM,UAAa,GAAA,QAAA;AACnB,EAAM,MAAA,QAAA,GAAW,MAAM,KAAA,CAAM,kBAAoB,EAAA;AAAA,IAC7C,OAAS,EAAA;AAAA,MACL,cAAgB,EAAA,kBAAA;AAAA,MAChB,sBAAwB,EAAA,KAAA;AAAA,MACxB,uBAAyB,EAAA,IAAA;AAAA,MACzB,oBAAsB,EAAA,UAAA;AAAA,MACtB,uBAAyB,EAAA,UAAA;AAAA,MACzB,sBAAwB,EAAA,OAAA;AAAA,MACxB,wBAA0B,EAAA,KAAA;AAAA,MAC1B,qBAAuB,EAAA,UAAA;AAAA,MACvB,uBAAyB,EAAA,KAAA;AAAA,MACzB,2BAA6B,EAAA,QAAA;AAAA,MAC7B,oBAAsB,EAAA,UAAA;AAAA,MACtB,qBAAuB,EAAA,qMAAA;AAAA,MACvB,0BAA4B,EAAA;AAAA,KAChC;AAAA,IACA,MAAQ,EAAA,MAAA;AAAA,IACR,MAAM,IAAK,CAAA,SAAA,CAAU,EAAE,UAAA,EAAY,YAAY;AAAA,GAClD,CAAA;AACD,EAAM,MAAA,IAAA,GAAO,MAAM,QAAA,CAAS,IAAK,EAAA;AAEjC,EAAA,MAAM,eAAe,MAAM,IAAI,OAAQ,CAAA,CAAC,SAAS,MAAW,KAAA;AACxD,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA;AAC9B,IAAA,MAAA,CAAO,SAAY,GAAA,MAAM,OAAQ,CAAA,MAAA,CAAO,MAAM,CAAA;AAC9C,IAAA,MAAA,CAAO,OAAU,GAAA,MAAA;AACjB,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA;AAAA,GAC5B,CAAA;AAGD,EAAO,OAAA,YAAA;AACX;;;AC1FA,eAAsB,cAAc,EAAE,YAAA,EAAc,YAAY,EAAC,EAAG,QAA8B,EAAA;AAC9F,EAAI,IAAA,YAAA,CAAa,WAAW,CAAG,EAAA;AAC3B,IAAM,MAAA,IAAI,MAAM,qEAAc,CAAA;AAAA;AAElC,EAAM,MAAA,SAAA,GAAY,MAAM,SAAU,EAAA;AAClC,EAAA,MAAM,mBAAmB,YAAa,CAAA,GAAA;AAAA,IAAI,CAAC,EAAE,QAAS,EAAA,EAAG,GACrD,KAAA,GAAA,KAAQ,CAAI,GAAA,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAA,GAAK,CAAQ,KAAA,EAAA,GAAG,wBAAwB,QAAQ,CAAA;AAAA,GAC/F;AACA,EAAM,MAAA,UAAA,GAAa,aAAa,MAAS,GAAA,CAAA;AACzC,EAAA,MAAM,WAAc,GAAA,YAAA,CAAa,GAAI,CAAA,CAAC,SAAS,GAAQ,KAAA;AACnD,IAAA,MAAM,SAAmB,EAAC;AAG1B,IAAA,MAAM,OAAU,GAAA,OAAA,CAAQ,OAAQ,CAAA,OAAA,CAAQ,yBAAyB,EAAE,CAAA;AAEnE,IAAA,MAAM,MAAS,GAAA,GAAA,KAAQ,CAAI,GAAA,EAAA,GAAK,QAAQ,GAAG,CAAA,CAAA,CAAA;AAG3C,IAAA,MAAM,IAAO,GAAA,SAAA,CAAU,OAAO,CAAA,IAAK,EAAC;AAEpC,IAAA,IAAI,KAAK,SAAW,EAAA;AAChB,MAAO,MAAA,CAAA,IAAA,CAAK,GAAG,MAAM,CAAA,qBAAA,EAAwB,KAAK,SAAU,CAAA,IAAA,CAAK,SAAS,CAAC,CAAE,CAAA,CAAA;AAAA;AAIjF,IAAA,MAAM,IAAO,GAAA;AAAA;AAAA,MAET,SAAS,OAAO,CAAA,CAAA;AAAA;AAAA,MAEhB,GAAG,MAAM,CAAA,CAAA;AAAA,MACT,GAAG,WAAY,CAAA,IAAA,CAAK,IAAI;AAAA,KAC5B;AACA,IAAA,IAAA,CAAK,OAAQ,CAAA,CAAC,GAAKC,EAAAA,IAAAA,KAAQ,OAAO,IAAK,CAAA,CAAA,EAAG,MAAM,CAAA,eAAA,EAAkBA,IAAM,GAAA,CAAC,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC,CAAA;AAGnF,IAAA,MAAM,UAAa,GAAA;AAAA;AAAA,MAEf,CAAA,kBAAA,EAAqB,KAAK,MAAM,CAAA,CAAA;AAAA,MAChC,GAAG,WAAY,CAAA,IAAA,CAAK,UAAU;AAAA,KAClC;AACA,IAAW,UAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,KAAW,MAAO,CAAA,IAAA,CAAK,GAAG,MAAM,CAAA,EAAG,KAAK,CAAA,CAAE,CAAE,CAAA;AAEhE,IAAO,OAAA,MAAA;AAAA,GACV,CAAA;AAGD,EAAA,MAAM,MAAS,GAAA;AAAA,IACX,GAAI,aAAa,CAAI,GAAA,CAAC,qBAAqB,UAAU,CAAA,CAAE,IAAI,EAAC;AAAA,IAC5D,GAAG,gBAAA;AAAA,IACH,GAAG,aAAA;AAAA,IACH,GAAG,SAAA;AAAA,IACH,GAAG,WAAY,CAAA,IAAA,CAAK,CAAC;AAAA,GACzB;AAEA,EAAO,OAAA,MAAA;AACX;AAQA,eAAsB,cAAc,WAAsB,EAAA;AACtD,EAAM,MAAA,KAAA,GAAQ,WAAe,IAAA,MAAM,kBAAmB,EAAA;AAEtD,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,EAAO,CAAK,EAAA,EAAA;AAC5B,IAAA,MAAM,KAAM,EAAA;AACZ,IAAM,MAAA,MAAA,CAAO,QAAS,CAAA,SAAA,CAAU,EAAE,GAAA,EAAK,cAAc,KAAO,EAAA,GAAA,EAAK,QAAU,EAAA,CAAA,EAAG,CAAA;AAAA;AAEtF;AAQA,eAAsB,2BAA2B,WAAsB,EAAA;AACnE,EAAM,MAAA,KAAA,GAAQ,WAAe,IAAA,MAAM,kBAAmB,EAAA;AAEtD,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,EAAO,CAAK,EAAA,EAAA;AAC5B,IAAA,MAAM,KAAM,EAAA;AACZ,IAAM,MAAA,OAAA,GAAU,0BAA0B,CAAC,CAAA,CAAA;AAC3C,IAAA,MAAM,MAAO,CAAA,QAAA,CAAS,cAAe,CAAA,EAAE,SAAS,CAAA;AAAA;AAExD;AAQA,eAAsB,+BAA+B,WAAsB,EAAA;AACvE,EAAM,MAAA,KAAA,GAAQ,WAAe,IAAA,MAAM,kBAAmB,EAAA;AAEtD,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,EAAO,CAAK,EAAA,EAAA;AAC5B,IAAA,MAAM,KAAM,EAAA;AAEZ,IAAM,MAAA,MAAA,CAAO,SAAS,8BAA+B,CAAA,EAAE,qCAA0C,QAAU,EAAA,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA;AAAA;AAE9H;AAQA,eAAsB,2BAA2B,WAAsB,EAAA;AACnE,EAAM,MAAA,KAAA,GAAQ,WAAe,IAAA,MAAM,kBAAmB,EAAA;AAEtD,EAAA,MAAM,aAAa,EAAC;AACpB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,EAAO,CAAK,EAAA,EAAA;AAC5B,IAAA,MAAM,KAAM,EAAA;AACZ,IAAM,MAAA,OAAA,GAAU,gCAAgC,CAAC,CAAA,CAAA;AACjD,IAAM,MAAA,EAAE,MAAS,GAAA,MAAM,OAAO,QAAS,CAAA,cAAA,CAAe,EAAE,OAAA,EAAS,CAAA;AACjE,IAAW,UAAA,CAAA,IAAA,CAAK,MAAO,CAAA,IAAI,CAAC,CAAA;AAAA;AAGhC,EAAO,OAAA,UAAA;AACX;;;ACpIA,eAAsB,mBAAA,CAClB,cACA,gBACF,EAAA;AAEE,EAAM,MAAA,aAAA,GAAgB,IAAK,CAAA,KAAA,CAAM,YAAY,CAAA;AAE7C,EAAA,MAAM,EAAE,KAAA,EAAO,GAAG,UAAA,EAAe,GAAA,aAAA;AAGjC,EAAM,MAAA,aAAA,GAAgB,iBAAiB,KAAK,CAAA;AAC5C,EAAA,IAAI,kBAAkB,MAAW,EAAA;AAC7B,IAAA,MAAM,IAAI,KAAA,CAAM,CAA0B,uBAAA,EAAA,KAAK,CAAE,CAAA,CAAA;AAAA;AAIrD,EAAA,MAAM,EAAE,IAAA,EAAS,GAAA,MAAM,MAAO,CAAA,QAAA,CAAS,cAAe,CAAA,EAAE,OAAS,EAAA,CAAA,cAAA,EAAiB,aAAa,CAAA,CAAA,EAAI,CAAA;AACnG,EAAM,MAAA,YAAA,GAAe,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA;AAGpC,EAAM,MAAA,WAAA,GAAc,OAAO,IAAK,CAAA,UAAU,EAAE,MAAO,CAAA,CAAC,KAAK,GAAQ,KAAA;AAC7D,IAAI,GAAA,CAAA,GAAG,CAAI,GAAA,YAAA,CAAa,GAAG,CAAA;AAE3B,IAAO,OAAA,GAAA;AAAA,GACX,EAAG,EAA4B,CAAA;AAE/B,EAAO,OAAA,WAAA;AACX;AAUA,eAAsB,4BAA4B,SAAqB,EAAA;AACnE,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,SAAA,CAAU,QAAQ,CAAK,EAAA,EAAA;AACvC,IAAA,MAAM,KAAM,EAAA;AACZ,IAAM,MAAA,MAAA,CAAO,SAAS,8BAA+B,CAAA,EAAE,2CAA6C,QAAU,EAAA,SAAA,CAAU,CAAC,CAAA,EAAK,CAAA;AAAA;AAEtI;AC5CA,IAAM,sBAAA,uBAA6B,GAAyC,EAAA;AASrE,SAAS,8BAAA,CACZ,UACA,cACF,EAAA;AAEE,EAAA,MAAM,iBAAiB,GAAO,GAAA,CAAA;AAG9B,EAAM,MAAA,eAAA,GAAkB,sBAAuB,CAAA,GAAA,CAAI,QAAQ,CAAA;AAC3D,EAAA,IAAI,eAAiB,EAAA;AACjB,IAAO,OAAA,eAAA;AAAA;AAIX,EAAM,MAAA,gBAAA,GAAmBC,2BAAS,CAAA,CAAC,GAAgB,KAAA;AAC/C,IAAA,cAAA,CAAe,GAAG,CAAA;AAAA,KACnB,cAAc,CAAA;AAEjB,EAAuB,sBAAA,CAAA,GAAA,CAAI,UAAU,gBAAgB,CAAA;AAErD,EAAO,OAAA,gBAAA;AACX;AAKO,SAAS,gCAAmC,GAAA;AAC/C,EAAA,sBAAA,CAAuB,KAAM,EAAA;AACjC","file":"index.cjs","sourcesContent":["/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n self = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== self ? self : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(\n oldElement.type,\n newKey,\n void 0,\n void 0,\n void 0,\n oldElement.props\n );\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop$1, noop$1)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction noop() {}\nexports.Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = void 0;\n if (null != config)\n for (propName in (void 0 !== config.ref && (owner = void 0),\n void 0 !== config.key && (key = \"\" + config.key),\n config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, createDeps, update) {\n var dispatcher = ReactSharedInternals.H;\n if (\"function\" === typeof update)\n throw Error(\n \"useEffect CRUD overload is not enabled in this build of React.\"\n );\n return dispatcher.useEffect(create, createDeps);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.1.0\";\n","/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function defineDeprecationWarning(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n console.warn(\n \"%s(...) is deprecated in plain JavaScript React classes. %s\",\n info[0],\n info[1]\n );\n }\n });\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n (publicInstance.displayName || publicInstance.name)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnStateUpdateForUnmountedComponent[warningKey] ||\n (console.error(\n \"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnStateUpdateForUnmountedComponent[warningKey] = !0));\n }\n function Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function ComponentDummy() {}\n function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(\n type,\n key,\n self,\n source,\n owner,\n props,\n debugStack,\n debugTask\n ) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n newKey = ReactElement(\n oldElement.type,\n newKey,\n void 0,\n void 0,\n oldElement._owner,\n oldElement.props,\n oldElement._debugStack,\n oldElement._debugTask\n );\n oldElement._store &&\n (newKey._store.validated = oldElement._store.validated);\n return newKey;\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n }\n function getElementKey(element, index) {\n return \"object\" === typeof element &&\n null !== element &&\n null != element.key\n ? (checkKeyStringCoercion(element.key), escape(\"\" + element.key))\n : index.toString(36);\n }\n function noop$1() {}\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop$1, noop$1)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"),\n (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback) {\n invokeCallback = children;\n callback = callback(invokeCallback);\n var childKey =\n \"\" === nameSoFar ? \".\" + getElementKey(invokeCallback, 0) : nameSoFar;\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != childKey &&\n (escapedPrefix =\n childKey.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (null != callback.key &&\n ((invokeCallback && invokeCallback.key === callback.key) ||\n checkKeyStringCoercion(callback.key)),\n (escapedPrefix = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (invokeCallback && invokeCallback.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n childKey\n )),\n \"\" !== nameSoFar &&\n null != invokeCallback &&\n isValidElement(invokeCallback) &&\n null == invokeCallback.key &&\n invokeCallback._store &&\n !invokeCallback._store.validated &&\n (escapedPrefix._store.validated = 2),\n (callback = escapedPrefix)),\n array.push(callback));\n return 1;\n }\n invokeCallback = 0;\n childKey = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = childKey + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n i === children.entries &&\n (didWarnAboutMaps ||\n console.warn(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0)),\n children = i.call(children),\n i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = childKey + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status)\n return (\n (ctor = payload._result),\n void 0 === ctor &&\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\",\n ctor\n ),\n \"default\" in ctor ||\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\",\n ctor\n ),\n ctor.default\n );\n throw payload._result;\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n function noop() {}\n function enqueueTask(task) {\n if (null === enqueueTaskImpl)\n try {\n var requireString = (\"require\" + Math.random()).slice(0, 7);\n enqueueTaskImpl = (module && module[requireString]).call(\n module,\n \"timers\"\n ).setImmediate;\n } catch (_err) {\n enqueueTaskImpl = function (callback) {\n !1 === didWarnAboutMessageChannel &&\n ((didWarnAboutMessageChannel = !0),\n \"undefined\" === typeof MessageChannel &&\n console.error(\n \"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\"\n ));\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(void 0);\n };\n }\n return enqueueTaskImpl(task);\n }\n function aggregateErrors(errors) {\n return 1 < errors.length && \"function\" === typeof AggregateError\n ? new AggregateError(errors)\n : errors[0];\n }\n function popActScope(prevActQueue, prevActScopeDepth) {\n prevActScopeDepth !== actScopeDepth - 1 &&\n console.error(\n \"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \"\n );\n actScopeDepth = prevActScopeDepth;\n }\n function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n var queue = ReactSharedInternals.actQueue;\n if (null !== queue)\n if (0 !== queue.length)\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n return;\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n else ReactSharedInternals.actQueue = null;\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((queue = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(queue))\n : resolve(returnValue);\n }\n function flushActQueue(queue) {\n if (!isFlushing) {\n isFlushing = !0;\n var i = 0;\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n do {\n ReactSharedInternals.didUsePromise = !1;\n var continuation = callback(!1);\n if (null !== continuation) {\n if (ReactSharedInternals.didUsePromise) {\n queue[i] = callback;\n queue.splice(0, i);\n return;\n }\n callback = continuation;\n } else break;\n } while (1);\n }\n queue.length = 0;\n } catch (error) {\n queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);\n } finally {\n isFlushing = !1;\n }\n }\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n didWarnStateUpdateForUnmountedComponent = {},\n ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n enqueueReplaceState: function (publicInstance) {\n warnNoop(publicInstance, \"replaceState\");\n },\n enqueueSetState: function (publicInstance) {\n warnNoop(publicInstance, \"setState\");\n }\n },\n assign = Object.assign,\n emptyObject = {};\n Object.freeze(emptyObject);\n Component.prototype.isReactComponent = {};\n Component.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"\n ]\n },\n fnName;\n for (fnName in deprecatedAPIs)\n deprecatedAPIs.hasOwnProperty(fnName) &&\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n ComponentDummy.prototype = Component.prototype;\n deprecatedAPIs = PureComponent.prototype = new ComponentDummy();\n deprecatedAPIs.constructor = PureComponent;\n assign(deprecatedAPIs, Component.prototype);\n deprecatedAPIs.isPureReactComponent = !0;\n var isArrayImpl = Array.isArray,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals = {\n H: null,\n A: null,\n T: null,\n S: null,\n V: null,\n actQueue: null,\n isBatchingLegacy: !1,\n didScheduleLegacyUpdate: !1,\n didUsePromise: !1,\n thrownErrors: [],\n getCurrentStack: null,\n recentlyCreatedOwnerStacks: 0\n },\n hasOwnProperty = Object.prototype.hasOwnProperty,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n deprecatedAPIs = {\n \"react-stack-bottom-frame\": function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = deprecatedAPIs[\n \"react-stack-bottom-frame\"\n ].bind(deprecatedAPIs, UnknownOwner)();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutMaps = !1,\n userProvidedKeyEscapeRegex = /\\/+/g,\n reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n didWarnAboutMessageChannel = !1,\n enqueueTaskImpl = null,\n actScopeDepth = 0,\n didWarnNoAwaitAct = !1,\n isFlushing = !1,\n queueSeveralMicrotasks =\n \"function\" === typeof queueMicrotask\n ? function (callback) {\n queueMicrotask(function () {\n return queueMicrotask(callback);\n });\n }\n : enqueueTask;\n deprecatedAPIs = Object.freeze({\n __proto__: null,\n c: function (size) {\n return resolveDispatcher().useMemoCache(size);\n }\n });\n exports.Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Component = Component;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\n exports.__COMPILER_RUNTIME = deprecatedAPIs;\n exports.act = function (callback) {\n var prevActQueue = ReactSharedInternals.actQueue,\n prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n var queue = (ReactSharedInternals.actQueue =\n null !== prevActQueue ? prevActQueue : []),\n didAwaitActCall = !1;\n try {\n var result = callback();\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n (popActScope(prevActQueue, prevActScopeDepth),\n (callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n if (\n null !== result &&\n \"object\" === typeof result &&\n \"function\" === typeof result.then\n ) {\n var thenable = result;\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\"\n ));\n });\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n thenable.then(\n function (returnValue) {\n popActScope(prevActQueue, prevActScopeDepth);\n if (0 === prevActScopeDepth) {\n try {\n flushActQueue(queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue,\n resolve,\n reject\n );\n });\n } catch (error$0) {\n ReactSharedInternals.thrownErrors.push(error$0);\n }\n if (0 < ReactSharedInternals.thrownErrors.length) {\n var _thrownError = aggregateErrors(\n ReactSharedInternals.thrownErrors\n );\n ReactSharedInternals.thrownErrors.length = 0;\n reject(_thrownError);\n }\n } else resolve(returnValue);\n },\n function (error) {\n popActScope(prevActQueue, prevActScopeDepth);\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((error = aggregateErrors(\n ReactSharedInternals.thrownErrors\n )),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(error))\n : reject(error);\n }\n );\n }\n };\n }\n var returnValue$jscomp$0 = result;\n popActScope(prevActQueue, prevActScopeDepth);\n 0 === prevActScopeDepth &&\n (flushActQueue(queue),\n 0 !== queue.length &&\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\\n\\nawait act(() => ...)\"\n ));\n }),\n (ReactSharedInternals.actQueue = null));\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n ((callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n 0 === prevActScopeDepth\n ? ((ReactSharedInternals.actQueue = queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue$jscomp$0,\n resolve,\n reject\n );\n }))\n : resolve(returnValue$jscomp$0);\n }\n };\n };\n exports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n };\n exports.captureOwnerStack = function () {\n var getCurrentStack = ReactSharedInternals.getCurrentStack;\n return null === getCurrentStack ? null : getCurrentStack();\n };\n exports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" +\n element +\n \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = element._owner;\n if (null != config) {\n var JSCompiler_inline_result;\n a: {\n if (\n hasOwnProperty.call(config, \"ref\") &&\n (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(\n config,\n \"ref\"\n ).get) &&\n JSCompiler_inline_result.isReactWarning\n ) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = void 0 !== config.ref;\n }\n JSCompiler_inline_result && (owner = getOwner());\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key));\n for (propName in config)\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n }\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n JSCompiler_inline_result = Array(propName);\n for (var i = 0; i < propName; i++)\n JSCompiler_inline_result[i] = arguments[i + 2];\n props.children = JSCompiler_inline_result;\n }\n props = ReactElement(\n element.type,\n key,\n void 0,\n void 0,\n owner,\n props,\n element._debugStack,\n element._debugTask\n );\n for (key = 2; key < arguments.length; key++)\n (owner = arguments[key]),\n isValidElement(owner) && owner._store && (owner._store.validated = 1);\n return props;\n };\n exports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n defaultValue._currentRenderer = null;\n defaultValue._currentRenderer2 = null;\n return defaultValue;\n };\n exports.createElement = function (type, config, children) {\n for (var i = 2; i < arguments.length; i++) {\n var node = arguments[i];\n isValidElement(node) && node._store && (node._store.validated = 1);\n }\n i = {};\n node = null;\n if (null != config)\n for (propName in (didWarnAboutOldJSXRuntime ||\n !(\"__self\" in config) ||\n \"key\" in config ||\n ((didWarnAboutOldJSXRuntime = !0),\n console.warn(\n \"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\"\n )),\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (node = \"\" + config.key)),\n config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (i[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) i.children = children;\n else if (1 < childrenLength) {\n for (\n var childArray = Array(childrenLength), _i = 0;\n _i < childrenLength;\n _i++\n )\n childArray[_i] = arguments[_i + 2];\n Object.freeze && Object.freeze(childArray);\n i.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === i[propName] && (i[propName] = childrenLength[propName]);\n node &&\n defineKeyPropWarningGetter(\n i,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return ReactElement(\n type,\n node,\n void 0,\n void 0,\n getOwner(),\n i,\n propName ? Error(\"react-stack-top-frame\") : unknownOwnerDebugStack,\n propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.createRef = function () {\n var refObject = { current: null };\n Object.seal(refObject);\n return refObject;\n };\n exports.forwardRef = function (render) {\n null != render && render.$$typeof === REACT_MEMO_TYPE\n ? console.error(\n \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\"\n )\n : \"function\" !== typeof render\n ? console.error(\n \"forwardRef requires a render function but was given %s.\",\n null === render ? \"null\" : typeof render\n )\n : 0 !== render.length &&\n 2 !== render.length &&\n console.error(\n \"forwardRef render functions accept exactly two parameters: props and ref. %s\",\n 1 === render.length\n ? \"Did you forget to use the ref parameter?\"\n : \"Any additional parameter will be undefined.\"\n );\n null != render &&\n null != render.defaultProps &&\n console.error(\n \"forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?\"\n );\n var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render },\n ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n render.name ||\n render.displayName ||\n (Object.defineProperty(render, \"name\", { value: name }),\n (render.displayName = name));\n }\n });\n return elementType;\n };\n exports.isValidElement = isValidElement;\n exports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n };\n exports.memo = function (type, compare) {\n null == type &&\n console.error(\n \"memo: The first argument must be a component. Instead received: %s\",\n null === type ? \"null\" : typeof type\n );\n compare = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n var ownName;\n Object.defineProperty(compare, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n type.name ||\n type.displayName ||\n (Object.defineProperty(type, \"name\", { value: name }),\n (type.displayName = name));\n }\n });\n return compare;\n };\n exports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n currentTransition._updatedFibers = new Set();\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null === prevTransition &&\n currentTransition._updatedFibers &&\n ((scope = currentTransition._updatedFibers.size),\n currentTransition._updatedFibers.clear(),\n 10 < scope &&\n console.warn(\n \"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\"\n )),\n (ReactSharedInternals.T = prevTransition);\n }\n };\n exports.unstable_useCacheRefresh = function () {\n return resolveDispatcher().useCacheRefresh();\n };\n exports.use = function (usable) {\n return resolveDispatcher().use(usable);\n };\n exports.useActionState = function (action, initialState, permalink) {\n return resolveDispatcher().useActionState(\n action,\n initialState,\n permalink\n );\n };\n exports.useCallback = function (callback, deps) {\n return resolveDispatcher().useCallback(callback, deps);\n };\n exports.useContext = function (Context) {\n var dispatcher = resolveDispatcher();\n Context.$$typeof === REACT_CONSUMER_TYPE &&\n console.error(\n \"Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?\"\n );\n return dispatcher.useContext(Context);\n };\n exports.useDebugValue = function (value, formatterFn) {\n return resolveDispatcher().useDebugValue(value, formatterFn);\n };\n exports.useDeferredValue = function (value, initialValue) {\n return resolveDispatcher().useDeferredValue(value, initialValue);\n };\n exports.useEffect = function (create, createDeps, update) {\n null == create &&\n console.warn(\n \"React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n var dispatcher = resolveDispatcher();\n if (\"function\" === typeof update)\n throw Error(\n \"useEffect CRUD overload is not enabled in this build of React.\"\n );\n return dispatcher.useEffect(create, createDeps);\n };\n exports.useId = function () {\n return resolveDispatcher().useId();\n };\n exports.useImperativeHandle = function (ref, create, deps) {\n return resolveDispatcher().useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useLayoutEffect(create, deps);\n };\n exports.useMemo = function (create, deps) {\n return resolveDispatcher().useMemo(create, deps);\n };\n exports.useOptimistic = function (passthrough, reducer) {\n return resolveDispatcher().useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function (reducer, initialArg, init) {\n return resolveDispatcher().useReducer(reducer, initialArg, init);\n };\n exports.useRef = function (initialValue) {\n return resolveDispatcher().useRef(initialValue);\n };\n exports.useState = function (initialState) {\n return resolveDispatcher().useState(initialState);\n };\n exports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n return resolveDispatcher().useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function () {\n return resolveDispatcher().useTransition();\n };\n exports.version = \"19.1.0\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","import { ICommonBridge } from './common-bridge.types';\n\n/**\n * Business Layer Bridge\n * 비즈니스를 호출하는(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridge implements ICommonBridge {\n protected commonHello(): void {\n console.log('commonHello');\n }\n\n abstract hello(): void;\n}\n","/**\n * Core Layer Bridge\n * Core(iframe, app)에서 구현해야할 함수 정의\n */\nexport abstract class CommonBridgeCore {\n /**\n * 코어에서 사용할 프로미스 ID 생성 함수\n * @returns\n */\n protected generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * core에서 구현해야할 함수\n * @param action\n * @param options\n */\n abstract callToTarget<T>(action: string, options?: Record<string, unknown>): Promise<T>;\n}\n","import { getDspExecutionEnvironment, isClient } from 'sales-frontend-utils';\nimport { MessageEventManager } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport {\n IframeEventName,\n IframeBridgeCommand,\n IframeBridgeOptions,\n IframeBridgePromise,\n IframeBridgeResponseHandler,\n IframeBridgeResponseData\n} from './iframe-bridge-core.types';\n\n/**\n * Iframe Bridge 통신 위한 핵심 클래스\n * 담당: 부모 호출, Promise 관리\n */\nexport class IframeBridgeCore extends CommonBridgeCore {\n private pendingPromises = new Map<string, IframeBridgePromise>();\n private responseHandler?: IframeBridgeResponseHandler;\n\n constructor() {\n super();\n if (!isClient()) {\n return;\n }\n\n this.initializeIframeBridge();\n }\n\n /**\n * 사용하는 쪽에서 응답핸들러를 사용할 수 있도록 필요시, 응답 처리 핸들러 설정\n */\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.responseHandler = handler;\n }\n\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n const { promiseId, isSuccess, data } = response;\n\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n\n if (isSuccess) {\n promise.resolve(data);\n } else {\n promise.reject(new Error(data));\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * 특정 Promise 존재 여부 확인\n */\n hasPromise(promiseId: string): boolean {\n return this.pendingPromises.has(promiseId);\n }\n\n /**\n * 네이티브 통신을 위해 window.n2bridge 객체 초기화\n */\n private initializeIframeBridge(): void {\n console.log('[IframeBridgeCore] initialized Iframe Bridge');\n\n // MessageEventManager에 핸들러 등록(영업포털-웹간 주고받기)\n MessageEventManager.getInstance().registerHandler('iframe-bridge', this.handleMessageEventResponse.bind(this));\n }\n\n /**\n * 브릿지 메시지 이벤트 핸들러\n * @param event\n */\n private handleMessageEventResponse(event: MessageEvent): void {\n const { promiseId, isSuccess, data } = event.data as IframeBridgeResponseData;\n\n // 등록된 핸들러가 있으면 실행\n if (this.responseHandler) {\n this.responseHandler({ promiseId, isSuccess, data });\n }\n\n // 기본 처리\n if (this.pendingPromises.has(promiseId)) {\n this.handleIframeBridgePromise({ promiseId, isSuccess, data });\n }\n }\n\n /**\n * Iframe 통신\n * @param eventName\n * @param option\n * @returns\n */\n async callToTarget<T = boolean>(eventName: IframeEventName, option?: IframeBridgeOptions): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${eventName}_${this.generatePromiseId()}`;\n\n // Promise 등록\n this.pendingPromises.set(promiseId, { resolve, reject });\n\n try {\n const command: IframeBridgeCommand = {\n eventName,\n promiseId,\n option\n };\n\n console.log('[IframeBridgeCore callToIframe] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'iframe') {\n window.parent.postMessage(command, '*');\n\n // TODO: 부모에서 event.source.postMessage({ promiseId, isSuccess, data }); 형태로 보내줄 수 있다면 소스 삭제\n const promise = this.pendingPromises.get(promiseId);\n if (promise) {\n this.pendingPromises.delete(promiseId);\n promise.resolve(true as T);\n }\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(\n `[IframeBridgeCore callToIframe] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${eventName})입니다.`\n );\n\n this.pendingPromises.delete(promiseId);\n reject(new Error(`[IframeBridgeCore callToIframe] Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[IframeBridgeCore callToIframe] error::', error);\n this.pendingPromises.delete(promiseId);\n reject(error);\n }\n });\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { IframeBridgeCore } from '../core/iframe-bridge-core';\nimport { IframeBridgeResponseHandler, IframeBridgeResponseData } from '../core/iframe-bridge-core.types';\n\nimport { OpenMdiOptions } from './iframe-bridge-options.types';\nimport { IIframeBridge } from './iframe-bridge.types';\n\n/**\n * iframe(영업포탈) 전용 Bridge\n */\nexport class IframeBridge extends CommonBridge implements IIframeBridge {\n private core: IframeBridgeCore;\n\n constructor() {\n super();\n this.core = new IframeBridgeCore();\n }\n\n // 응답 핸들러 설정\n setResponseHandler(handler: IframeBridgeResponseHandler): void {\n this.core.setResponseHandler(handler);\n }\n\n // Promise 직접 제어 메서드들 추가\n handleIframeBridgePromise(response: IframeBridgeResponseData): boolean {\n return this.core.handleIframeBridgePromise(response);\n }\n\n // 유틸리티 메서드들도 추가\n hasPromise(promiseId: string): boolean {\n return this.core.hasPromise(promiseId);\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수(test)\n */\n hello(): void {\n console.log('[IframeBridge] hello');\n }\n\n /**\n * 영업포탈 tab open\n * @param options\n * @returns\n */\n async openMdi(options: OpenMdiOptions): Promise<boolean> {\n return this.core.callToTarget('openMdi', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { getDspExecutionEnvironment, isClient, isStorybookEnv, isFpPlannerApp } from 'sales-frontend-utils';\n\nimport { CommonBridgeCore } from '../../common/common-bridge-core';\n\nimport type {\n NativeBridgeCommand,\n NativeBridgePromise,\n NativeBridgeOptions,\n PromiseHandleBridge,\n CallBridge\n} from './native-bridge-core.types';\n\n/**\n * Native <-> Web 처리를 위한 핵심 클래스\n * 담당: 앱 호출, Promise 관리\n */\nexport class NativeBridgeCore<TAction extends string> extends CommonBridgeCore {\n private promiseHandleName: string;\n private callBridgeName: string;\n\n constructor(callBridgeName = 'n2Bridge', promiseHandleName = 'n2bridge') {\n super();\n\n this.callBridgeName = callBridgeName;\n this.promiseHandleName = promiseHandleName;\n\n this.initializeWindowOzBridge();\n }\n\n /**\n * Promise 관리용 브릿지 객체 가져오기 (window.n2bridge)\n */\n private getPromiseHandleBridge(): PromiseHandleBridge {\n return (window as any)[this.promiseHandleName] as PromiseHandleBridge;\n }\n\n /**\n * 앱 호출용 브릿지 객체 가져오기 (window.n2Bridge)\n */\n private getCallBridge(): CallBridge {\n return (window as any)[this.callBridgeName] as CallBridge;\n }\n\n /**\n * 네이티브 통신을 위해 window.n2OzBridge 객체 초기화\n */\n private initializeWindowOzBridge(): void {\n if (!isClient()) {\n return;\n } // SSR 환경에서는 아무것도 하지 않음\n if (!(window as any)[this.promiseHandleName]) {\n (window as any)[this.promiseHandleName] = {\n promises: {},\n resolvePromise: () => {},\n finallyResolvePromise: () => {},\n callFromNative: () => {}\n };\n }\n\n const bridge = this.getPromiseHandleBridge();\n\n // 항상 최신 함수로 업데이트\n bridge.resolvePromise = this.createResolvePromiseHandler();\n bridge.finallyResolvePromise = this.createFinallyResolvePromiseHandler();\n\n if (isStorybookEnv() && window.parent) {\n // 스토리북에서는 현재 스토리가 iframe으로 로드되므로 앱에서 부모 프레임에 브릿지를 리턴해도 자식으로 전달되도록 보정하는 코드\n (window.parent as any)[this.promiseHandleName] = bridge;\n window.parent.dispatchEvent = (...args) => window.dispatchEvent.apply(null, args);\n }\n }\n\n /**\n * Promise 처리 함수(Native에서 호출)\n * @returns\n */\n private createResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n console.log('[NativeBridgeCore resolvePromise]::', promiseId, data, error);\n\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Promise 최종 처리 함수\n * @returns\n */\n private createFinallyResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n const bridge = this.getPromiseHandleBridge();\n\n const promise: NativeBridgePromise | undefined = bridge.promises[promiseId];\n if (!promise) {\n console.error('[NativeBridgeCore resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[NativeBridgeCore resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * 네이티브 통신\n * @param action\n * @param options\n * @returns\n */\n async callToTarget<T>(action: TAction, option: NativeBridgeOptions = {}): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${action}_${this.generatePromiseId()}`;\n console.log('[NativeBridgeCore callToNative] promiseId::', promiseId);\n\n const bridge = this.getPromiseHandleBridge();\n\n // 바로 window.promiseHandler에 promises에 저장\n bridge.promises[promiseId] = {\n resolve: (value: T) => {\n resolve(value);\n },\n reject: (reason?: any) => {\n reject(reason);\n }\n };\n\n try {\n const command: NativeBridgeCommand = {\n action,\n promiseId,\n option\n };\n\n console.log('[NativeBridgeCore callToNative] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'android-webview') {\n const callBridge = this.getCallBridge();\n callBridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios-webview') {\n const message = isFpPlannerApp()\n ? { ...command, service: 'native' } // 플래너: service 추가\n : command;\n\n (window.webkit?.messageHandlers as any)?.[this.callBridgeName]?.postMessage(JSON.stringify(message));\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(\n `[NativeBridgeCore callToNative] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${action})입니다.`\n );\n this.cleanupPromise(promiseId);\n reject(new Error(`[NativeBridgeCore callToNative] Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[NativeBridgeCore callToNative] error::', error);\n this.cleanupPromise(promiseId);\n reject(error);\n }\n });\n }\n\n /**\n * promiseId를 초기화 해줍니다.\n * @param promiseId\n */\n private cleanupPromise(promiseId: string): void {\n const bridge = this.getPromiseHandleBridge();\n delete bridge.promises[promiseId];\n }\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type {\n OnAuthenticationResultRequest,\n OnAuthenticationResultResponse,\n GetAccessTokenResponse,\n GetAnalyticsUserPropertyResponse,\n GetOzFontParamResponse\n} from './native-bridge-dto.types';\nimport type {\n ShowWebPopupOptions,\n CommonOzBridgetResponseType,\n DownloadOzdOptions,\n OpenBrowserOptions,\n CreateOZViewerOptions,\n OpenWebOptions,\n localFetchBridgeOptions\n} from './native-bridge-options.types';\nimport type { INativeBridge, NativeAction } from './native-bridge.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n private core: NativeBridgeCore<NativeAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeAction>();\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * getParameterMap\n * @returns\n */\n async getParameterMap<T = any>(): Promise<T> {\n return this.core.callToTarget<T>('getParameterMap');\n }\n\n async dismissPopup<T = any>(options?: any): Promise<T> {\n return this.core.callToTarget<T>('dismissPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async showWebPopup<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToTarget<T>('showWebPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToTarget<T>('jumpSafari', options);\n }\n\n /**\n * 기능명: 본인인증 결과 정보 넘기기\n * 목적: NXL One 에서 본인인증 결과 값을 네이티브로 넘기기 위함\n * @param options\n * @returns\n */\n async onAuthenticationResult(options: OnAuthenticationResultRequest): Promise<OnAuthenticationResultResponse> {\n return this.core.callToTarget('onAuthenticationResult', options);\n }\n\n /**\n * Access Token 가져오기\n * @returns\n */\n async getAccessToken(): Promise<GetAccessTokenResponse> {\n return this.core.callToTarget('getAccessToken');\n }\n\n /**\n * ### Bridge for Oz\n * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.createReportEx({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n createOZViewer(options: CreateOZViewerOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'createOZViewer',\n // delimiter 미입력시 \\n 으로 기본값 처리\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * OZ 뷰어를 닫습니다\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideViewer();\n * ```\n */\n hideOZViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOZViewer');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다\n * @example\n * ```tsx\n * const options = {\n * // 현재 증권번호\n * policyNumber: \"300034894\",\n * // FP 사번\n * fpInfo: { \"uniqNo\": \"2210000\" }\n * // 서식 목록들\n * data: [{\n * // 서식에 대한 정보들\n * \"name\": \"[A0010]청약서\",\n * \"complete\": false,\n * \"startPage\": 0,\n * \"endPage\": 0,\n * \"focus\": false,\n * \"doc\": [{\n * // 서식에 속한 OZD 파일들\n * \"docCode\": \"A0010\",\n * \"fileID\": \"1HLqZJCNt6idLKkAA\",\n * \"imageFormatCode\": \"RT003001\",\n * \"imageDocumentTypeCode\": \"IT00\",\n * // ozd 파일이 다운로드된 경로\n * \"filePath\": \"\",\n * \"startPage\": 0,\n * \"endPage\": 0\n * }]\n * }, ],\n * }\n * await Bridge.native.downloadDocument(options)\n * ```\n */\n async downloadDocument(options: DownloadOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<DownloadOzdOptions>>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam() {\n return this.core.callToTarget<CommonOzBridgetResponseType<GetOzFontParamResponse>>('getOzFontParam');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 show\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.showLoader()\n * ```\n */\n async showLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 로더 컴포넌트 hide\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideLoader()\n * ```\n */\n async hideLoader() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideLoader');\n }\n\n /**\n * ### Bridge for Oz\n * 태블릿 로컬에 있는 파일을 fetch하기 위한 url을 만들어주는 브릿지\n *\n * 파일의 절대경로는 saveSignImg 혹은 pdfExport시 확보할수 있다\n * @example\n * ```tsx\n * await Bridge.native.localFetchBridge({filePath: \"/data/0/~~~/file.ext\"});\n * ```\n */\n async localFetchBridge(options: localFetchBridgeOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('localFetchBridge', options);\n }\n\n /**\n * 홈 이동\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.goHome()\n * ```\n */\n goHome(): Promise<string> {\n return this.core.callToTarget('goHome');\n }\n\n /**\n * 전체메뉴 열기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.showMenu()\n * ```\n */\n showMenu(): Promise<string> {\n return this.core.callToTarget('showMenu');\n }\n\n /**\n * GA4 정보 얻기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n getAnalyticsUserProperty(): Promise<GetAnalyticsUserPropertyResponse> {\n return this.core.callToTarget('getAnalyticsUserProperty');\n }\n\n /**\n *외부 브라우저 호출\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.getAnalyticsUserProperty()\n * ```\n */\n openBrowser(options: OpenBrowserOptions): Promise<string> {\n return this.core.callToTarget('openBrowser', options);\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideWebPopup()\n * ```\n */\n hideWebPopup(): Promise<string> {\n return this.core.callToTarget('hideWebPopup');\n }\n\n /**\n * OnePass 인증\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.requestAuthentication()\n * ```\n */\n requestAuthentication(): Promise<string> {\n return this.core.callToTarget('requestAuthentication');\n }\n\n /**\n * 웹뷰 띄우기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.openWeb()\n * ```\n */\n openWeb(options: OpenWebOptions): Promise<string> {\n return this.core.callToTarget('openWeb', options);\n }\n\n /**\n * 웹뷰 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.closeWeb()\n * ```\n */\n closeWeb(): Promise<string> {\n return this.core.callToTarget('closeWeb');\n }\n\n /**\n * 앱 종료\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.closeWeb()\n * ```\n */\n exitApp(): Promise<string> {\n return this.core.callToTarget('exitApp');\n }\n\n /**\n * 앱 정보 가져오기\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.closeWeb()\n * ```\n */\n getAppInfo(): Promise<string> {\n return this.core.callToTarget('getAppInfo');\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from '../../common/common-bridge';\nimport { CommonOzBridgetResponseType } from '../bridge/native-bridge-options.types';\nimport { NativeBridgeCore } from '../core/native-bridge-core';\n\nimport type { SaveSignImgResponse } from './native-bridge-oz-dto.types';\nimport type {\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n TriggerExternalEventOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n UpdateOzdOptions,\n createOzPdfViewerOptions,\n ShowAlertOptions\n} from './native-bridge-oz-options.types';\nimport type { INativeBridgeOz, NativeOzAction } from './native-bridge-oz.types';\n\n/**\n * App - Web Bridge(for OZ)\n */\nexport class NativeBridgeOz extends CommonBridge implements INativeBridgeOz {\n private core: NativeBridgeCore<NativeOzAction>;\n\n constructor() {\n super();\n this.core = new NativeBridgeCore<NativeOzAction>('n2OzBridge', 'n2ozBridge');\n }\n\n /**\n * Iframe, App 공통으로 구현해야할 함수\n */\n hello(): void {\n console.log('[NativeBridge] hello');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시:\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * const { data } = await Bridge.nativeOz.getInformation({ command: 'INPUT_JSON' });\n * ```\n */\n async getInformation<T = string>(options: GetInformationOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToTarget<CommonOzBridgetResponseType<T>>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // OZ가 반환하는 모든 값은 문자열(string)입니다.\n * // 숫자도 '1', boolean도 'true' 형태로 전달됩니다.\n * await Bridge.nativeOz.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal(options: GetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType<string>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * // value 자리에 string이 아닌 값을 넣어도 getGlobal시 string으로 변환되어 리턴됩니다\n * Bridge.nativeOz.setGlobal({ key: \"AAA\", value: \"myValue\" });\n * ```\n */\n setGlobal(options: SetGlobalOptions) {\n // docIndex 미입력시 0번째 문서로 고정\n return this.core.callToTarget<CommonOzBridgetResponseType>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.nativeOz.script({ command });\n * ```\n */\n script(options: ScriptOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * Bridge.nativeOz.scriptEX({ command, param });\n * ```\n */\n scriptEx(options: ScriptExOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEvent({ param1: 'signer' });\n * ```\n */\n async triggerExternalEvent(options: TriggerExternalEventOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'triggerExternalEvent',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * - 서명이미지 크롭\n * - 중간저장 서명이미지 추출\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex(options: TriggerExternalEventByDocIndexOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.updateOzDocumentStatus(document);\n * ```\n */\n async updateOzDocumentStatus(options: UpdateOzdOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>('updateOzDocumentStatus', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export 요청\n * export 결과는 `OZViewerEvent.OZExportCommand`로 트리거 된다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf(options: SavePdfOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.saveSignImg({ fileName: 'sign.png', signImageKey: 'A0010_mynm_sg', policyNumber });\n * ```\n */\n async saveSignImg(options: SaveSignImgOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<SaveSignImgResponse>>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.createOzPdfViewer({ filePath: \"/data/0/app/total.pdf\" });\n * ```\n */\n async createOzPdfViewer(options: createOzPdfViewerOptions) {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToTarget<CommonOzBridgetResponseType>('createOzPdfViewer', options);\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideOzPdfViewer');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showSignatureShortcut();\n */\n async showSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 서식 바로가기 버튼 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideSignatureShortcut();\n */\n async hideSignatureShortcut() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('hideSignatureShortcut');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 화면에 표시하기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showMissingFieldWarning();\n */\n async showMissingFieldWarning() {\n return this.core.callToTarget<CommonOzBridgetResponseType>('showMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * 느낌표 버튼(미입력 서식 발생 알림 버튼) 숨기기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.hideMissingFieldWarning();\n */\n async hideMissingFieldWarning<T>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToTarget<CommonOzBridgetResponseType<T>>('hideMissingFieldWarning');\n }\n /**\n * ### Bridge for Oz\n * Alert 표시용 브릿지\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.nativeOz.showAlert({\n * title: '모달 타이틀',\n * message: '모달 내용',\n * // 모달에 표시할 버튼들 설정\n * buttons: { close: false, main: \"확인\" }\n * })\n * ```\n */\n async showAlert(options: ShowAlertOptions) {\n return this.core.callToTarget<CommonOzBridgetResponseType<{ result: keyof ShowAlertOptions[\"buttons\"] }>>('showAlert', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { IframeBridge } from './iframe/bridge/iframe-bridge';\nimport { IframeBridgeCore } from './iframe/core/iframe-bridge-core';\nimport { NativeBridge } from './native/bridge/native-bridge';\nimport { NativeBridgeOz } from './native/bridge-oz/native-bridge-oz';\nimport { NativeBridgeCore } from './native/core/native-bridge-core';\n\nexport const Bridge = {\n native: new NativeBridge(),\n nativeOz: new NativeBridgeOz(),\n iframe: new IframeBridge(),\n nativeCore: new NativeBridgeCore(),\n iframeCore: new IframeBridgeCore()\n};\n","/**\n * 형광펜 편집 관련 상수\n */\n\nconst commentPenDefaultParam = [\n `comment.selectedpen=highlightpen`,\n `comment.highlightpen_thick=15`,\n]\n\nexport const commentPenYellow = [...commentPenDefaultParam, `comment.highlightpen_color=ffd900`];\nexport const commentPenPink = [...commentPenDefaultParam, `comment.highlightpen_color=f48fb1`];\nexport const commentPenGreen = [...commentPenDefaultParam, `comment.highlightpen_color=81c784`];\nexport const commentPenEraser = [`comment.selectedpen=eraser`,];","/**\n * 모든페이지 공용으로 쓰는 OZ 뷰어파라미터\n */\n\nconst informationOzParam = [\n // 뷰어 콘솔 로그 정보의 수준(Level)을 설정합니다. - 뷰어 수행에 필요한 디버깅용 메시지를 자바 콘솔에 출력\n `information.debug = true`,\n];\nconst globalOzParam = [\n // 다중 보고서 호출 시 부모 보고서의 파라미터 값을 자식 보고서가 상속받을지 여부를 설정합니다.\n `global.inheritparameter=true`,\n // 멀티 보고서를 하나의 보고서처럼 사용할지 여부를 설정합니다.\n `global.concatpage=true`,\n // 멀티 보고서를 하나의 보고서처럼 설정한 경우 각각의 보고서별로 페이지 번호를 부여할지 여부를 설정합니다.\n // `global.eachpagenumberatconcatpage=true`,\n];\nconst eformOzParam = [\n `eform.signpad_type=embedded`,\n // `eform.signpad_type=keypad`,\n `eform.show_prev_next_input=true`,\n // `eform.signpad_prev_next_iconposition=sign_top_left`,\n `eform.signpad_prev_next_iconposition=sign_top`,\n `eform.signpad_show_draw_erase_button=false`,\n `eform.signpad_viewtype=keepratioandfittoframe`,\n `eform.radiobutton_type=ensurevisible_at_prev_next`,\n `eform.checkbox_type=ensurevisible_at_prev_next`,\n `eform.prev_next_required_rule=required_only`,\n `eform.prev_next_navigation_rule=required_only`,\n `eform.prev_next_constraint_rule=empty_only`,\n `eform.imagepicker_camera_iconposition = camera_top`,\n `eform.inputeventcommand=true`,\n // 서명 입력 중간중간에 onValueChanged가 호출 / 디폴트는 입력끝나고 창이 닫힐때 호출\n `eform.onvaluechanged_callrule_json=${JSON.stringify({ signpad: 'changed' })}`,\n `eform.inputcomponent_toolbar_button_json=${JSON.stringify({\n // 서명패드 버튼 배열 수정\n \"all\": {\n // 왼쪽에 [이전, 창닫기]\n \"left_align\": \"prev,ok\",\n // 오른쪽에 [다시쓰기, 성명,서명 불러오기, 다음]\n \"right_align\": \"clear,reusablesign,next\"\n }\n })}`,\n `eform.imagepicker_id_info=${JSON.stringify({\n ids: [\n {\n id: '1',\n name: '운전면허증_최신',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '운전면허번호', area: '0,0,0,0' },\n { name: '발급번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '2',\n name: '운전면허증_구형',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '운전면허번호', area: '0,0,0,0' },\n { name: '발급번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '3',\n name: '주민등록증',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '주민번호', area: '0,0,0,0' },\n { name: '발급날짜', area: '0,0,0,0' }\n ]\n },\n {\n id: '4',\n name: '외국인등록증 앞면',\n size: '86x54',\n margin: '3',\n mask: [\n { name: '외국인등록번호1', area: '0,0,0,0' },\n { name: '외국인등록번호2', area: '0,0,0,0' },\n { name: '성명', area: '0,0,0,0' },\n { name: '성별', area: '0,0,0,0' },\n { name: '국가지역', area: '0,0,0,0' },\n { name: '체류자격', area: '0,0,0,0' },\n { name: '발급일자', area: '0,0,0,0' }\n ]\n },\n { id: '5', name: '외국인등록증 뒷면', size: '86x54', margin: '3', mask: [{ name: '외국인', area: '0,0,0,0' }] }\n ],\n choice: { title: '신분증을 선택하세요.', items: '1,2,3,4,5' }\n })}`\n];\n\nconst viewerOzPram = [\n `viewer.pagenavigate_by_prev_next=true`,\n // `viewer.zoombymouse=false`,\n `viewer.pagedisplay=singlepagecontinuous`,\n `viewer.usetoolbar=false`,\n `viewer.usestatusbar=false`,\n `viewer.useprogressbar=false`,\n `viewer.zoom=137`,\n `viewer.viewmode=fittowidth`,\n `viewer.hidehorizontalscroll=false`,\n `viewer.progresscommand=true`,\n `viewer.pagechangecommand=true`,\n `viewer.exportcommand=true`,\n `viewer.errorcommand=true`,\n `viewer.reportchangecommand=true`,\n `viewer.pagebindcommandinterval=500`,\n];\n\nconst ozdOzParam = [\n // connection.args=key=value로 넘기는 정보들은 ozr에서만 유효하나 ozd에서도 유효하도록 허용\n `ozd.allowreplaceformparam=true`\n]\n\nexport const commonOzParam = [\n ...informationOzParam,\n ...globalOzParam,\n ...eformOzParam,\n ...viewerOzPram,\n ...ozdOzParam,\n];","/**\n * PDF export시 공통으로 필요한 파라미터\n *\n * 제공하지 않는 파라미터\n * - filename\n * - ex) `pdf.filename=test.pdf`\n * - pages\n * - ex) `export.pages=1-2`\n * - userpassword\n * - ex) `pdf.userpassword=123213`\n */\nexport const commonPdfExportParam = [\n // `pdf.filename=${\"test.pdf\"}`,\n // `export.pages=${i.startPage}-${i.endPage}`,\n // \"pdf.userpassword=$pdfPassword\",G\n 'export.pagerange=range',\n 'export.confirmsave=false',\n 'export.mode=silent',\n // pdf에 폰트를 포함시킨다\n `pdf.fontembedding=true`,\n // 폰트를 포함시킬때 사용하는 글자만 포함시킨다\n `pdf.fontembedding_subset=true`\n];","import type { CSSProperties } from 'react';\n\nimport type { ExtraDataType, FormInfo } from '../types';\n\nexport const wrapperStyle: CSSProperties = { display: 'flex', flexFlow: 'column', gap: '10px' };\nexport const btnStyle: CSSProperties = { border: '1px solid red', minHeight: '40px' };\n\n/**\n * 테스트용 하드코딩 문서목록\n */\nexport const DownloadDocumentList: Array<FormInfo> = [\n { name: '[A0010]청약서', doc: [{ docCode: 'A0010', fileID: '1HLqZJCNt6idLKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A0100]비교안내확인서', doc: [{ docCode: 'A0100', fileID: 'EAq0B3CNt6owpKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A0900]상품설명서', doc: [{ docCode: 'A0900', fileID: 'dwKuNnCNvAFegKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A1500]청약부속정보확인서', doc: [{ docCode: 'A1500', fileID: 'PsxOl1CNvAKxyKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A2215]보험계약대출이행관리동의서', doc: [{ docCode: 'A2215', fileID: 'hV621tCNt6smxKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A2800]계약전알릴의무', doc: [{ docCode: 'A2800', fileID: 'gyQRHMCNt6voUKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[A3503]청약서별지(변액용)', doc: [{ docCode: 'A3503', fileID: '88U1i3CNt6yWQKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[B0101]보험계약체결동의서', doc: [{ docCode: 'B0101', fileID: 'amlL4FCNvAPmLKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[C0400]계약체결이행동의서', doc: [{ docCode: 'C0400', fileID: 'K75MXgCNt65INKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[C0401]상품소개상세동의서', doc: [{ docCode: 'C0401', fileID: 'oA6EGZCNt6-9aKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[C1000]보험상품판매체크리스트', doc: [{ docCode: 'C1000', fileID: '0ah3K7CNt7D5PKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[C1300]계약체결고지의무확인서', doc: [{ docCode: 'C1300', fileID: 'wuhu3kCNt7HmEKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n { name: '[C1400]보험상품비교설명확인서', doc: [{ docCode: 'C1400', fileID: 'gVUw81CNt7KVqKkAA', imageFormatCode: 'RT003001', imageDocumentTypeCode: 'IT00', filePath: '', startPage: 0, endPage: 0 }], complete: false, startPage: 0, endPage: 0, focus: false },\n];\n\n/**\n * 테스트용 하드코딩 데이터\n */\nexport const ExtraData: ExtraDataType = {\n // 문서코드\n A0010: {\n // connection.inputjson으로 바인딩할 데이터\n inputJson: {\n // 계약자 성명 사인정보\n A0010_mynm_sg: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAABDUlEQVR4nOzSMQ0CQBQEUSAnAAU0iEAAPWKQgQU04gED10z1IXlPwWay6/78HH7P+3qZnrBxmh7wT8QKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECsQKxArECtZjvaY3bNzOx+kJG54ViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgVfAMAAP//tD4Eb/yjIncAAAAASUVORK5CYII=',\n // 계약자 서명 사인정보\n A0010_mysg_sign: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAABDElEQVR4nOzSsQkCYRgEUZXDVgTtxdDIYgR7sFkTG/iTiT4P3qtgGXa7vp+H//M5PqYnLJymB+yJWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgVjBdj9fpjcsvG7f6QkLnhWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBWIFYgViBX8AgAA//9+7gTkg4AcBQAAAABJRU5ErkJggg=='\n },\n // 기타 공통으로 사용하지 않을 파라미터\n extraParam: [], // aaa=bbb\n args: []\n },\n A0900: {\n args: []\n },\n}\n\n\n/** 증번 */\nexport const policyNumber = '300034894';\n/** FP 정보 */\nexport const fpInfo = { uniqNo: '2210000' };\n/** 청약작성자목록 - 계약 관계자 코드 */\nexport const roleCode = [`11`, `28`]\n/** native에 전달할 X-DUD-Authorization 토큰 */\nexport const xdudheaders = `Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXNWRtc1g1MkVWZGV0YThJRy90YmlZY281bnVCdzRZOXhGZjlWakZzdWxnbU00YnkiLCJpYXQiOjE3NjEwNDMyNjgsImV4cCI6MTc2NjI5OTI2OH0.KDnF7ZhkmnEApGCvOcItwcHnLWe5iJu64g93GACT2yo`;","import { useMemo, useState } from \"react\";\n\nimport { FormInfo } from \"../types\"\n\nexport function useDocumentInfo(initialValue: FormInfo[]) {\n\n /** 서식 목록 */\n const [documentInfo, setDocumentInfo] = useState<FormInfo[]>([...initialValue]);\n\n /** 글로벌 문서 목록 */\n const documentList = useMemo(() => documentInfo.map((i) => i.doc).flat(1), [documentInfo]);\n\n /** 글로벌 문서 맵 { 문서코드: 글로벌 인덱스} */\n const documentIndexMap = documentList.reduce((acc, cur, index) => {\n acc[cur.docCode] = index;\n\n return acc;\n }, {} as Record<string, number>)\n\n /** 글로벌 문서 맵 { 문서코드: 속한 서식 } */\n const documentTemplateMap = useMemo(() => documentInfo.reduce((map, template) => {\n template.doc.forEach(ozdFile => {\n map[ozdFile.docCode] = { ...template };\n });\n\n return map;\n\n }, {} as Record<string, FormInfo>), [documentInfo]);\n\n // 글로벌 문서 맵 { 서식이름: 서식 }\n const nameTemplateMap = documentInfo.reduce((acc, doc) => {\n acc[doc.name] = doc;\n\n return acc;\n }, {} as Record<string, FormInfo>);\n\n // 글로벌 문서 배열 { 글로벌인덱스: [동료서식 글로벌인덱스, 동료서식 글로벌인덱스] }\n const groupIndexes = useMemo(() => (\n documentInfo.reduce((acc, item) => {\n item.doc.forEach((ozdFile) => {\n const currentIndex = documentIndexMap[ozdFile.docCode] as number;\n\n // 각 globalIndex에 해당하는 그룹 인덱스를 추가\n if (!acc[currentIndex]) {\n acc[currentIndex] = []; // 배열로 초기화\n }\n\n // 해당 파일이 속한 그룹의 인덱스를 추가\n item.doc.forEach((ozdFile) => {\n acc[currentIndex]!.push(documentIndexMap[ozdFile.docCode]!);\n });\n });\n\n return acc;\n }, [] as Array<Array<number>>)\n ), [documentIndexMap, documentInfo]);\n\n // 모든 서식이 완료되었는지 확인\n const isAllComplete = useMemo(() => (documentInfo.every(i => i.complete)), [documentInfo]);\n\n return {\n setDocumentInfo,\n documentInfo,\n documentList,\n documentTemplateMap,\n documentIndexMap,\n nameTemplateMap,\n groupIndexes,\n isAllComplete\n }\n}","import { useCallback, useEffect } from 'react';\n\nimport { OZViewerEvent } from \"../types\"\n\ntype Props<T, R = void> = {\n event: OZViewerEvent;\n handler: (e: CustomEvent<T>) => Promise<R>;\n};\n/**\n * OZ 뷰어 콜백 이벤트를 구독해주는 Hook\n */\nexport function useOzEventListener<T, R = void>({ event, handler }: Props<T, R>) {\n const handleEvent = useCallback(\n async (e: Event) => {\n const customEvent = e as CustomEvent<T>;\n\n return await handler(customEvent);\n },\n [handler]\n );\n\n useEffect(() => {\n window.addEventListener(event, handleEvent);\n\n return () => {\n window.removeEventListener(event, handleEvent);\n };\n }, [handleEvent, event]);\n}\n","/**\n * OZ 뷰어에 관련된 이벤트 목록\n */\nexport enum OZViewerEvent {\n /**\n * 보고서 생성 단계별로 발생하는 이벤트\n * - `OZViewerProgressEvent` 이벤트와 매칭된다\n * - `viewer.progresscommand=true` 설정이 필요하다\n * - `OZViewerProgressEvent`와 매칭된다\n * - 모든 문서가 로딩되면 `OZReportCreated` 이벤트를 트리거시켜주어야 한다\n */\n OZProgressCommand = 'OZProgressCommand',\n /**\n * 에러 발생 시 발생하는 이벤트\n * - `viewer.errorcommand=true` 설정이 필요하다\n * - `OZViewerErrorEvent`와 매칭된다\n */\n OZErrorCommand = 'OZErrorCommand',\n /**\n * 화면에 표시되는 페이지가 변경된 후 발생하는 이벤트\n * - `viewer.pagechangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZPageChangeCommand = 'OZPageChangeCommand',\n /**\n * 화면에 표시되는 보고서가 변경된 후 발생하는 이벤트\n * - `viewer.reportchangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZReportChangeCommand = 'OZReportChangeCommand',\n /**\n * `OZUserEvent` _TriggerOCXUserEvent 함수 실행 시 발생하는 이벤트\n * - `OZViewerUserEvent`와 매칭된다\n */\n OZUserEvent = 'OZUserEvent',\n /**\n * `OZPageBindCommand` 페이지가 바인딩된 후 발생하는 이벤트\n * - `viewer.pagebindcommandinterval` 파라미터에서 설정한 주기별로 동작\n * - ex) `viewer.pagebindcommandinterval=500`\n * - `OZViewerPageBindEvent`와 매칭된다\n */\n OZPageBindCommand = 'OZPageBindCommand',\n /**\n * 사용자가 입력 컴포넌트를 클릭하거나 값을 변경하여 이벤트가 실행된 경우 발생되는 이벤트'\n * - 호환되는 이벤트\n * - `OnClick`\n * - `OnFinish`\n * - `OnFocus`\n * - `OnKillFocus`\n * - `OnPause`\n * - `OnPlay`\n * - `OnStop`\n * - `OnValueChanged` \n * - `eform.inputeventcommand=true` 설정이 필요하다\n * - `OZEFormInputEvent`와 매칭된다\n */\n OZEFormInputEventCommand = 'OZEFormInputEventCommand',\n /**\n * 보고서 저장 시 발생하는 이벤트\n * - `OZExportEvent`와 매칭된다\n */\n OZExportCommand = 'OZExportCommand',\n\n /**\n * 오즈뷰어, (오즈전용)PDF 뷰어 내 버튼 클릭시 발생하는 이벤트\n * - `OZBtnTouchEvent`와 매칭된다\n */\n OZBtnTouchEvent = 'btnTouchEvent',\n\n /**\n * `OZProgressCommand` 이벤트가 문서 갯수만큼 불리면 이 이벤트를 트리거한다\n * - 웹에서 직접 트리거 하는 이벤트\n */\n OZReportCreated = 'OZReportCreated',\n}\n\n/**\n * TriggerExternal에 사용할 param1인자를 정의한 enum\n * - GetDraftData 중간저장 서명이미지 추출\n * - cropimage 서명이미지 크롭\n */\nexport enum OZTriggerExternalEvent {\n GetDraftData = 'getDraftData',\n CropImage = 'cropimage'\n}\n\n/**\n * `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZProgressCommand, (e) => { console.log(e.detail); });\n * ```\n *\n * `step과` `state`는 step => state 방식으로 진행된다\n *\n * 예시\n * ```bash\n * # step0 뷰어실행\n * [step=0][state=0] # 뷰어 실행 시작\n * [step=0][state=1] # 뷰어 실행 완료\n * # step2 보고서 템플릿 생성\n * [step=1][state=0] # 보고서 템플릿 생성 시작\n * [step=1][state=1] # 보고서 템플릿 생성 완료\n * ```\n */\nexport type OZViewerProgressEvent = {\n /**\n * 보고서 생성 단계\n * - 0 : 뷰어 실행 옵션 설정\n * - 1 : 보고서 파일 다운로드\n * - 2 : 보고서 템플릿 생성\n * - 3 : 데이터 다운로드\n * - 4 : 보고서 바인딩\n */\n step: '0' | '1' | '2' | '3' | '4';\n /**\n * 보고서 생성 상태\n * - 1 : 시작\n * - 2 : 완료\n */\n state: '1' | '2';\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * `OZViewerEvent.OZErrorCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZErrorCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerErrorEvent = {\n /** 에러 메시지 코드 */\n code: string;\n /** 에러 기본 메시지 */\n message: string;\n /** 에러 상세 메시지 */\n detailmessage: string;\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * 두 이벤트의 공용 타입\n * - `OZViewerEvent.OZPageChangeCommand` 이벤트의 `e.detail` 타입 정의\n * - `OZViewerEvent.OZReportChangeCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageChangeCommand, (e) => { console.log(e.detail); });\n * window.addEventListener(OZViewerEvent.OZViewerChangeCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerChangeEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: number;\n};\n\n/**\n * `OZViewerEvent.OZUserEvent` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZUserEvent, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerUserEvent = {\n /** _TriggerOCXUserEvent 함수에서 전달한 첫 번째 값 */\n param1: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 두 번째 값 */\n param2: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 세 번째 값 */\n param3: string;\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n};\n\n/**\n * `OZViewerEvent.OZPageBindCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageBindCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerPageBindEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 바인딩된 페이지 번호 */\n pagecount: string;\n};\n\nexport type OZEFormInputEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 이벤트가 발생한 컴포넌트의 FormID. FormID가 설정되지 않은 경우 컴포넌트의 이름이 리턴됨 */\n formid: string;\n eventname: string;\n mainscreen: boolean;\n}\n\nexport type OZExportEvent = {\n /**\n * 저장 성공 여부\n * - `0` 실패\n * - `1` 성공\n */\n code: \"0\" | \"1\"\n /** 파일 경로 */\n path: string;\n /** 파일 이름 */\n filename: string;\n /** 저장된 페이지 수. 여러 페이지의 보고서를 한 페이지로 저장한 경우에는 1이 리턴됨 */\n pagecount: string;\n /**\n * 뷰어가 실제 저장한 모든 파일의 경로와 이름.\n * \n * 파일이 여러 개일 경우 `|`를 구분자로 하여 리턴됨\n */\n filepaths: string;\n}\n\n/**\n * 상단 전체목록 보기 버튼 내 서식 클릭이벤트\n * - 선택된 서식의 텍스트가 btnID로 넘어온다\n */\nexport type CategoryEvent = {\n type: \"category\";\n /** 자유 입력 가능한 버튼 ID */\n btnID: string;\n};\n\n/**\n * 상단 버튼 클릭 이벤트(전체목록 버튼 제외)\n * - 예: 나가기 버튼\n */\nexport type TopEvent = {\n type: \"top\";\n btnID: \"btnExit\";\n};\n\n/**\n * 성명,서명, 덧쓰기 관련 버튼 클릭 이벤트\n * - `signatureInProgress` 서명 바로가기 버튼\n * - `signatureInMissing` 미입력 항목 입력하기 버튼(느낌표 버튼)\n * - `signatureComplete` 청약문서 최종 확인하기\n */\nexport type SignatureEvent = {\n type: \"signature\";\n btnID: \"signatureInProgress\" | \"signatureInMissing\" | \"signatureComplete\";\n};\n\n/**\n * pdf 뷰어 내 버튼 클릭 이벤트\n * - `modify` 성명 서명 덧쓰기 수정하러 가기\n * - `submit` 최종 제출하기\n */\nexport type PdfEvent = {\n type: \"pdf\";\n btnID: \"modify\" | \"submit\";\n};\n\n/**\n * comment(형광펜) 관련 버튼 클릭 이벤트\n * - `yellow` 노랑색 형광펜 활성화\n * - `pink` 분홍색 형광펜 활성화\n * - `green` 초록색 형광펜 활성화\n * - `eraser` 지우개 활성화\n * - `disable` 형광펜 모드 종료\n */\nexport type CommentEvent = {\n type: \"comment\";\n btnID: \"yellow\" | \"pink\" | \"green\" | \"eraser\" | \"disable\";\n};\n\n/**\n * OZ 문서 시스템 내 버튼 클릭 이벤트 통합 타입\n *\n * type(카테고리)에 따라 btnID 값이 다르게 제한됩니다.\n */\nexport type OZBtnTouchEvent =\n | CategoryEvent\n | TopEvent\n | SignatureEvent\n | PdfEvent\n | CommentEvent;\n\n/**\n * 문서코드별 입력 데이터 및 추가 파라미터 매핑 타입\n *\n * 각 문서코드에 대해 `inputJson` (임의의 key-value 쌍)과\n * \n * 선택적으로 `extraParam` (기타 추가 파라미터)을 포함하는 객체입니다.\n *\n * 예시:\n * ```javascript\n * {\n * A0010: {\n * inputJson: {\n * A0010_mynm_sg: 'data:image/png;base64,iVBORw0K...', // 예: 이미지 데이터\n * A0010_mysg_sign: 'data:image/png;base64,iVBORw0KG...', // 예: 이미지 데이터\n * custom_field: 'some value', // 임의의 데이터도 가능\n * },\n * args: [`roleCd=11,21`]\n * extraParam: [`viewer.zoom=137`]\n * },\n * C0401: {\n * inputJson: {\n * mynm_sg: 'data:image/png;base64,iVBORw0K...', // 예: 이미지 데이터\n * mysg_sign: 'data:image/png;base64,iVBORw0KG...', // 예: 이미지 데이터\n * another_field: 'another value', // 임의의 데이터\n * }\n * },\n * }\n * ```\n */\nexport type ExtraDataType = Record<string, {\n /** connection.inputJson으로 전달할 `{ \"key1\": \"value1\", \"key2\": \"value2\" }` 형식의 데이터 (예: 문자열, base64 이미지 등) */\n inputJson?: Record<string, string>;\n /** connection.arg로 전달할 `[\"key1=value1\", \"key2=value2\"]` 형식의 데이터 */\n args?: string[];\n /** 추가 파라미터 목록 (선택 사항) */\n extraParam?: string[];\n}>;\n","\nimport type { FormInfo } from '../types';\n\n/**\n * 문서 데이터에 페이지 범위를 채워주는 함수\n * @param {Array} data - 문서 그룹 데이터\n * @param {Array<number>} pages - 각 문서의 페이지 수\n * @returns {Array} - startPage, endPage가 채워진 새 데이터\n */\nexport function categorizeByPageRange(data: FormInfo[], pageCounts: number[]) {\n let currentPage = 1;\n let pageIndex = 0;\n\n // 깊은 복사로 원본 변형 방지\n const result = DeepCopy(data);\n\n result.forEach(group => {\n group.startPage = currentPage;\n\n group.doc.forEach(doc => {\n const pageCount = pageCounts[pageIndex++]!;\n doc.startPage = currentPage;\n doc.endPage = currentPage + pageCount - 1;\n currentPage += pageCount;\n });\n\n group.endPage = group.doc[group.doc.length - 1]!.endPage;\n });\n\n return result;\n}\n\n\n/**\n * 주어진 파일 경로에서 파일 이름만 추출합니다.\n * @param filePath 파일 경로 (예: `/a/b/c/file.ext`)\n * @returns 파일 경로에서 추출한 파일 이름 (확장자 제외, 예: `file`)\n * @throws {Error} 유효하지 않은 파일 경로일 경우 예외 처리\n */\nexport function extractFileName(filePath: string): string {\n // 예외 처리: filePath가 null, undefined, 빈 문자열이거나 문자열이 아닌 경우\n if (!filePath || typeof filePath !== 'string') {\n throw new Error('유효한 파일 경로를 입력해주세요.');\n }\n\n // 파일 경로에서 파일 이름만 추출 (경로와 확장자 제거)\n const fileName = filePath.replace(/^.*\\/|(\\.[^/.]+)$/g, '');\n\n // 예외 처리: 파일 이름이 없는 경우\n if (!fileName) {\n throw new Error('파일 경로에서 파일 이름을 추출할 수 없습니다.');\n }\n\n return fileName;\n}\n\nexport function getFileListByGlobalIndex(index: number, data: FormInfo[]) {\n let currentIndex = 0;\n\n for (const template of data) {\n const fileCount = template.doc.length;\n\n if (index >= currentIndex && index < currentIndex + fileCount) {\n // index가 이 서식의 파일 범위 안에 있음\n return template;\n }\n\n currentIndex += fileCount;\n }\n\n return null;\n}\n\n/**\n * 비동기 처리를 일정 시간 지연시키는 함수\n * @param ms - 지연 시간 (밀리초). 기본값은 10ms\n */\nexport async function sleep(ms = 10): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function PromiseWithResolvers<T>() {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: unknown) => void;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n}\n\n/**\n * 주어진 입력값이 배열이 아니면 빈 배열을 반환하고, 배열이면 깊은 복사하여 반환합니다.\n *\n * @param arg - 입력값으로, 배열일 수도 있고 아닐 수도 있습니다.\n * @returns 주어진 입력값이 배열이면 깊은 복사본을 반환하고, 배열이 아니면 빈 배열을 반환합니다.\n */\nexport function ensureArray<T>(arg?: T[]): T[] {\n return (Array.isArray(arg) ? DeepCopy(arg) : []);\n}\n\n/**\n * 주어진 객체를 깊은 복사하여 새로운 복사본을 반환합니다.\n * - 내부 유틸용이라 export 하지 않았음\n *\n * @param arg - 깊은 복사를 원하는 객체\n * @returns 주어진 객체의 깊은 복사본\n */\nfunction DeepCopy<T>(arg: T): T {\n return JSON.parse(JSON.stringify(arg)) as T;\n}\n","import { Bridge } from '../../../bridge';\nimport { OZViewerEvent } from '../../types';\nimport { PromiseWithResolvers } from '../common-util';\n\n/**\n * OZ 뷰어 함수를 단순 래핑한 브릿지 유틸\n */\n\n/**\n * OZ Viewer 생성 함수\n * 1. `CreateReport` 함수 호출하여 OZ 리포트 생성\n * 2. `OZProgressCommand` 이벤트가 `ozd` 개수만큼 발생\n * 3. `OZProgressCommand` 이벤트 내부에서 `OZReportCreated` 이벤트 발행\n * 4. `CreateOzViewer` 이벤트가 종료\n */\nexport async function CreateOzViewer(ozParam: string[]) {\n const { promise, resolve } = PromiseWithResolvers();\n window.addEventListener(\n OZViewerEvent.OZReportCreated,\n // OZReportCreated가 트리거되면 promise resolve 처리\n (e: Event) => resolve((e)),\n // 이벤트 리스너는 한 번만 실행되도록 설정\n { once: true }\n )\n await Bridge.native.createOZViewer({ param: ozParam.join(\"\\n\") });\n\n return await promise;\n}\n\n/**\n * 특정 페이지로 스크롤 이동\n */\nexport async function MovePage(page: number) {\n return await Bridge.nativeOz.script({ command: `movepage=${page}` });\n}\n\n/**\n * 현재 페이지 번호를 구한다(one base index)\n */\nexport async function getCurrentPage() {\n const { data } = await Bridge.nativeOz.getInformation<string>({ command: `CURRENT_PAGE` })\n\n return Number(data);\n}\n\n/**\n * 랜딩되어있는 보고서들의 전체 페이지 수\n */\nexport const getTotalPageMemo = (() => {\n // ✅ 전체 페이지수를 캐싱\n let cache: Promise<number> | null = null;\n\n async function getTotalPage(): Promise<number> {\n if (cache) {\n // 캐시에 이미 결과(Promise)가 있다면 재사용\n return cache;\n }\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n cache = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation({ command: 'TOTAL_PAGE' });\n\n return Number(data);\n } catch (e) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache = null;\n throw e;\n }\n })();\n\n return await cache;\n }\n\n // 캐시 초기화 함수\n getTotalPage.clearCache = () => {\n cache = null;\n };\n\n return getTotalPage;\n})();\n\n/**\n * 랜딩되어있는 보고서의 총 갯수(ozd 파일의 갯수)\n */\nexport const getReportCountMemo = (() => {\n // ✅ 보고서의 총 갯수(ozd 파일의 갯수)를 캐싱\n let cache: Promise<number> | null = null;\n\n async function getReportCount(): Promise<number> {\n if (cache) {\n return await cache;\n }\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n cache = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation<string>({ command: 'REPORT_COUNT' });\n\n return Number(data);\n } catch (e) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache = null;\n throw e;\n }\n })();\n\n return await cache;\n }\n\n // 캐시 초기화 함수\n getReportCount.clearCache = () => {\n cache = null;\n };\n\n return getReportCount;\n})();\n","import { MovePage } from '../oz-wrapper-util';\n\nimport type { CategoryEvent, FormInfo } from '../../../types';\n\n/**\n * 전체 서식목록의 하위 버튼 클릭 이벤트 핸들러\n * - 해당 서식을 누르면 시작 페이지로 이동한다\n */\nexport async function CategoryHandler(documentInfo: FormInfo[], { type, btnID }: CategoryEvent) {\n if (type !== 'category') {\n throw `Unexpected Type ${type}`;\n }\n\n // 전체 서식 목록에서 특정 서식 바로가기 버튼 클릭 시\n const target = documentInfo.find((i) => i.name === btnID);\n if (!target) {\n // 기타 확인되지 않은 유형의 에러 처리\n throw `Unexpected btnID ${target}`;\n }\n\n // 해당 서식 페이지로 이동\n await MovePage(target.startPage);\n}\n","import { Bridge } from '../../../../bridge';\n\nimport type { TopEvent } from '../../../types';\n\n\n/**\n * 상단 버튼 중 '전체 서식목록'을 제외한 다른 버튼 클릭 이벤트 핸들러\n * - 현재는 나가기 버튼밖에 없음\n */\nexport async function TopHandler({ type, btnID }: TopEvent) {\n if (type !== 'top') {\n throw `Unexpected Type ${type}`;\n }\n\n if (btnID === 'btnExit') {\n // 나가기 버튼 클릭이벤트\n await Bridge.native.hideOZViewer();\n\n } else {\n // 기타 확인되지 않은 유형의 에러 처리\n throw `Unexpected btnID ${btnID}`;\n }\n\n}","import { Bridge } from '../../../../bridge';\nimport { commentPenEraser, commentPenGreen, commentPenPink, commentPenYellow } from '../../../constant';\nimport { sleep } from '../../common-util';\n\nimport type { CommentEvent } from '../../../types';\n\n/**\n * 주석 모드 (형광펜 버튼) 클릭 이벤트 핸들러\n */\nexport async function CommentHandler({ type, btnID }: CommentEvent) {\n if (type !== 'comment') {\n throw `Unexpected Type ${type}`;\n }\n\n if (btnID === 'yellow') {\n // 형광펜 버튼 노란색\n await setEnableCommentMode('yellow');\n\n } else if (btnID === 'pink') {\n // 형광펜 버튼 분홍색\n await setEnableCommentMode('pink');\n\n } else if (btnID === 'green') {\n // 형광펜 버튼 초록색\n await setEnableCommentMode('green');\n\n } else if (btnID === 'eraser') {\n // 형광펜 버튼 지우개\n await setEnableCommentMode('eraser');\n\n } else if (btnID === 'disable') {\n // 형광펜 모드 종료\n await setDisableCommentMode();\n\n } else {\n // 기타 확인되지 않은 유형의 에러 처리\n throw `Unexpected btnID ${btnID}`;\n }\n}\n\n\n\n/**\n * 현재 모드가 코멘트(형광펜) 모드인지 확인\n * - 코멘트 모드일 경우 true\n * - 편집 모드 등 다른 모드일 경우 false\n */\nexport async function isCommentMode() {\n const { data } = await Bridge.nativeOz.getInformation<\"comment\" | \"input\">({\n command: `COMMENT_MODE`\n });\n\n return data === \"comment\";\n}\n\n/**\n * 공통 코멘트 모드 설정 함수\n * - 현재 모드가 코멘트 모드가 아니면 comment viewer 설정 추가\n * - 전달된 펜 설정을 포함한 param을 구성하여 실행\n * @param penConfig 사용할 펜 설정 배열 (e.g., commentPenYellow 등)\n */\nasync function setCommentMode(penConfig: string[]) {\n const command = `mode_comment_all`;\n\n // 현재 코멘트 모드 여부 확인\n const commentEnabled = await isCommentMode();\n\n // 코멘트 모드가 아니라면 viewer 설정을 추가하고, 펜 설정과 함께 param 구성\n const param = [\n ...(commentEnabled ? [] : [`viewer.screentool=comment`]),\n ...penConfig\n ].join(\"\\n\");\n\n // 약간의 대기 시간 부여\n await sleep();\n\n // 코멘트 모드로 전환 및 설정 적용\n return await Bridge.nativeOz.scriptEx({ command, param });\n}\n\n\ntype commentPenType = \"yellow\" | \"pink\" | \"green\" | \"eraser\";\n/**\n * 코멘트 모드를 활성화하며 특정 펜 타입을 적용\n * \n * @param type 사용할 코멘트 펜 타입\n * - `yellow` (기본값)\n * - `pink`\n * - `green`\n * - `eraser` (지우개)\n */\nexport async function setEnableCommentMode(type: commentPenType = \"yellow\") {\n let param: string[];\n\n // 펜 타입에 따라 해당 설정을 선택\n if (type === \"yellow\") {\n param = commentPenYellow;\n } else if (type === \"pink\") {\n param = commentPenPink;\n } else if (type === \"green\") {\n param = commentPenGreen;\n } else {\n param = commentPenEraser;\n }\n\n // 공통 코멘트 모드 설정 함수 호출\n return await setCommentMode(param);\n}\n\n/**\n * 코멘트 모드 비활성화 (편집 모드로 전환)\n * - 현재 코멘트 모드 상태 여부와 관계없이 항상 편집 모드로 전환함\n */\nexport async function setDisableCommentMode() {\n const command = `mode_input_all`;\n\n return await Bridge.nativeOz.script({ command });\n}","import { Bridge } from '../../../../bridge';\n\nimport type { PdfEvent } from '../../../types';\n\n/**\n * PDF 뷰어 내 버튼 클릭 이벤트 핸들러\n * - 수정하기 버튼\n * - PDF 뷰어를 닫는다\n * - 최종 제출하기 버튼\n * - PDF 뷰어를 닫는다\n * - OZ 뷰어를 닫는다\n * - 최종제출 화면으로 route\n */\nexport async function PdfHandler({ type, btnID }: PdfEvent) {\n if (type !== 'pdf') {\n throw `Unexpected Type ${type}`;\n }\n\n if (btnID === 'modify') {\n // PDF 뷰어에서 수정하기 버튼을 누른경우\n\n // PDF 뷰어를 닫는다\n await Bridge.nativeOz.hideOzPdfViewer()\n } else if (btnID === 'submit') {\n // PDF 뷰어에서 최종제출 버튼을 누른경우\n\n // PDF 뷰어를 닫는다\n await Bridge.nativeOz.hideOzPdfViewer();\n // 오즈뷰어도 닫는다\n await Bridge.native.hideOZViewer();\n } else {\n // 기타 확인되지 않은 유형의 에러 처리\n throw `Unexpected btnID ${btnID}`;\n }\n\n}\n","import { Bridge } from '../../../bridge';\nimport { sleep } from '../common-util';\n\nimport { getReportCountMemo } from './oz-wrapper-util';\n\n/**\n * 서식 검증 시, 빈 서식에 포커스를 줄지 제어하는 브릿지 유틸\n */\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 포커스 설정 여부를 지정\n * \n * @param enable - true면 포커스 활성화, false면 비활성화\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nasync function setFocusOnValidation(enable: boolean, reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n const expectedValue = enable ? '1' : '0';\n\n const { data: prev } = await Bridge.nativeOz.getGlobal({ key: 'chkFlag', docIndex: 0 });\n\n // 첫번째 doc에 대해서 기 입력된 값을 검사해서 일치하면 조기탈출\n if (prev === expectedValue) {\n return;\n }\n\n for (let i = 0; i < count; i++) {\n await sleep();\n await Bridge.nativeOz.setGlobal({ key: 'chkFlag', value: expectedValue, docIndex: i });\n }\n\n return;\n}\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 자동으로 포커스를 맞추도록 설정\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function enableFocusOnValidation(reportCount?: number) {\n return setFocusOnValidation(true, reportCount);\n}\n\n/**\n * 유효성 검사 시 미입력된 컴포넌트에 포커스가 가지 않도록 설정\n * \n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function disableFocusOnValidation(reportCount?: number) {\n return setFocusOnValidation(false, reportCount);\n}\n","import { Bridge } from '../../../bridge';\nimport { sleep } from '../common-util';\n\nimport { getTotalPageMemo } from './oz-wrapper-util';\n\n/**\n * OZ 서식 검증용 브릿지 유틸\n */\n\n/**\n * 유효성을 체크할 doc들의 index를 배열로 입력받는다\n *\n * 모두 유효하면 true를 리턴한다\n *\n * documentInfo의 complete를 계산할때 사용한다\n *\n * 서명패드가 열려있는 상태에서 INPUT_CHECK_VALIDITY로 검사하면 서명패드가 꺼져서 onValueChange에서는 INVALID_INFO_JSON을 사용한다\n */\nexport async function checkDocumentsValidityByIndex(indexList: number[]) {\n // INVALID_INFO_JSON_AT은 valid한 경우 ''를 리턴한다\n const VALID = '';\n for (let i = 0; i < indexList.length; i++) {\n await sleep();\n const command = `INVALID_INFO_JSON_AT=${indexList[i]}`;\n const { data } = await Bridge.nativeOz.getInformation<string>({ command });\n\n if (data !== VALID) {\n // 유효하지 않으면 조기탈출\n return false;\n }\n }\n\n return true\n}\n\n/**\n * 지정된 페이지 범위에 대해 유효성 검사를 수행합니다.\n * \n * 유효성 검사는 1페이지부터 지정된 마지막 페이지까지 진행되며,\n * 각 페이지 검사 사이에 기본 지연(sleep)을 추가하여 처리 속도를 제어합니다.\n * - pageChange 이벤트 내부에서는 현재 페이지 이전까지만 검사\n * - 서명바로가기, 미입력 서명 바로가기, 청약문서 최종 확인하기 버튼을 눌렀을때는 전체 페이지 검사\n * \n * @param pageCount - 유효성 검사를 수행할 페이지의 총 개수. (생략하면 자동으로 전체 페이지 수를 계산하여 사용)\n * @returns 모든 페이지가 유효한 경우 true, 하나라도 유효하지 않으면 false를 반환합니다.\n */\nexport async function validateAllPages(pageCount?: number) {\n // pageCount가 주어지지 않으면 전체 페이지 수를 계산하여 사용\n const count = pageCount ?? await getTotalPageMemo();\n\n for (let i = 1; i <= count; i++) {\n // 각 페이지 검사 사이에 지연을 추가\n await sleep();\n // 캐시 기반 validation 검사\n const isValid = await checkValidPageMemo(i);\n\n // 페이지 유효성 검사가 실패하면 즉시 종료\n if (!isValid) {\n return false;\n }\n }\n\n // 모든 페이지가 유효한 경우 true 반환\n return true;\n}\n\n\n/**\n * 페이지 유효성 검사 결과를 캐싱하는 유틸리티\n *\n * - 동일 페이지에 대한 중복 호출을 방지\n * - validation 결과가 false인 경우에는 캐시에 저장하지 않음\n */\nexport const checkValidPageMemo = (() => {\n // ✅ 페이지 번호를 키로 사용하여 Promise<boolean> 형태로 결과를 캐싱\n const cache = new Map<number, Promise<boolean>>();\n\n /**\n * 주어진 페이지가 유효한지 검사\n *\n * @param page 검사할 페이지 번호\n * @returns 페이지 유효 여부 (Promise<boolean>)\n */\n async function checkValidPage(page: number): Promise<boolean> {\n const cached = cache.get(page);\n if (cached) {\n // 캐시에 이미 결과(Promise)가 있다면 재사용\n return cached;\n }\n\n const VALID = 'valid';\n const command = `INPUT_CHECK_VALIDITY_PAGE_AT=${page}`;\n\n // ⚙️ 네이티브 호출을 Promise로 감싸서 즉시 캐시에 저장\n // (중복 요청을 방지하기 위함)\n const promise = (async () => {\n try {\n const { data } = await Bridge.nativeOz.getInformation<string>({ command });\n const isValid = data === VALID;\n\n // ❌ 유효하지 않은(false) 결과는 캐시에 저장하지 않음\n if (!isValid) {\n cache.delete(page);\n }\n\n return isValid;\n } catch (err) {\n // ⚠️ 호출 실패 시 캐시에서 제거하여 다음 요청 시 재시도 가능하도록 함\n cache.delete(page);\n throw err;\n }\n })();\n\n // ⏳ 진행 중인 Promise를 캐시에 저장 (중복 호출 방지)\n cache.set(page, promise);\n\n // 결과 반환\n return promise;\n }\n\n /**\n * 전체 캐시를 초기화합니다.\n */\n checkValidPage.clearCache = () => {\n cache.clear();\n };\n\n /**\n * 특정 페이지의 캐시만 삭제합니다.\n * \n * @param page 삭제할 페이지 번호\n */\n checkValidPage.clearCacheByPage = (page: number) => {\n cache.delete(page);\n };\n\n return checkValidPage;\n})();\n","import { Bridge } from '../../../../bridge';\nimport { commonPdfExportParam, policyNumber } from '../../../constant';\nimport { OZViewerEvent } from '../../../types';\nimport { PromiseWithResolvers } from '../../common-util';\nimport { disableFocusOnValidation, enableFocusOnValidation } from '../focus-util';\nimport { getReportCountMemo, getTotalPageMemo } from '../oz-wrapper-util';\nimport { checkValidPageMemo, validateAllPages } from '../validation-util';\n\nimport type { OZExportEvent, SignatureEvent } from '../../../types';\n\n/**\n * 성명, 서명, 덧쓰기 바로가기, 미입력 서명 바로가기, 청약 문서 최종 확인 버튼 클릭 이벤트 핸들러\n * - 서명 바로가기 버튼 이벤트 핸들러\n * - 미입력된 첫번째서명으로 이동 및 사인패드 오픈\n * - 미입력 항목 입력하기 버튼 이벤트 핸들러\n * - 미입력된 첫번째서명으로 이동 및 사인패드 오픈\n * - 청약문서 최종 확인하기 버튼 이벤트 핸들러\n * - 유효성 검사 후 PDF export 및 PDF 뷰어 오픈\n */\nexport async function SignatureHandler({ type, btnID }: SignatureEvent) {\n if (type !== 'signature') {\n throw `Unexpected Type ${type}`;\n }\n\n if (btnID === 'signatureInProgress') {\n // 서명 바로가기 버튼 눌렀을때\n await SignatureInProgressHandler();\n\n } else if (btnID === 'signatureInMissing') {\n // 미입력 항목 입력하기 버튼(느낌표 버튼) 눌렀을때\n await SignatureInMissingHandler();\n\n } else if (btnID === 'signatureComplete') {\n // 청약문서 최종 확인하기 버튼 눌렀을때\n await SignatureCompleteHandler();\n\n } else {\n // 기타 확인되지 않은 유형의 에러 처리\n throw `Unexpected btnID ${btnID}`;\n }\n}\n\n/**\n * 서명 바로가기 버튼 눌렀을때\n */\nasync function SignatureInProgressHandler() {\n // ozd 갯수 가져오기\n const reportCount = await getReportCountMemo();\n // 전체 페이지 갯수 가져오기\n const pageCount = await getTotalPageMemo();\n\n // 유효성 검사 시 미입력된 컴포넌트에 자동으로 포커스를 맞추도록 설정\n await enableFocusOnValidation(reportCount);\n\n // ozd를 처음부터 돌면서 유효하지 않은 문서가 있는지 찾는다\n await validateAllPages(pageCount);\n}\n/**\n * 미입력 항목 입력하기 버튼(느낌표 버튼) 눌렀을때\n */\nasync function SignatureInMissingHandler() {\n const { data: { result } } = await Bridge.nativeOz.showAlert({\n title: '입력하지 않은 항목이 있습니다',\n message: '해당 항목으로 이동하여 입력을 완료해주세요.',\n buttons: {\n close: true,\n main: '미입력 항목 입력하기'\n }\n });\n if (result === 'main') {\n // 미입력한 서명을 찾아서 포커스\n return await SignatureInProgressHandler();\n }\n // 닫기버튼을 누른경우 아무것도 안함\n\n return;\n\n}\n\n/**\n * 청약문서 최종 확인하기 버튼 눌렀을때\n */\nasync function SignatureCompleteHandler() {\n\n try {\n await Bridge.native.showLoader();\n\n // 유효성 검사 전 캐시 초기화\n // `INPUT_CHECK_VALIDITY_PAGE_AT` 캐시 초기화\n checkValidPageMemo.clearCache();\n // `REPORT_COUNT` 캐시 초기화\n getReportCountMemo.clearCache();\n // `TOTAL_PAGE` 캐시 초기화\n getTotalPageMemo.clearCache();\n\n // ozd 갯수 가져오기\n const reportCount = await getReportCountMemo();\n // 전체 페이지 갯수 가져오기\n const pageCount = await getTotalPageMemo();\n\n // 유효성 검사 시 미입력된 컴포넌트에 포커스가 가지 않도록 설정\n await disableFocusOnValidation(reportCount);\n // PDF export 전 최종 유효성 검사\n const isAllValid = await validateAllPages(pageCount);\n if (!isAllValid) {\n throw \"MissingAlert\"\n }\n\n // 유효성 검사 통과 후 PDF export 및 PDF 뷰어 오픈\n const filePath = await SaveTotalPdf();\n await Bridge.nativeOz.createOzPdfViewer({ filePath });\n\n } catch (e) {\n if (e === \"MissingAlert\") {\n // 미입력항목이 있는경우 느낌표 버튼을 클릭한것과 동일한 핸들러 처리\n await SignatureInMissingHandler();\n } else {\n alert('PDF export 중 오류가 발생하였습니다')\n }\n } finally {\n await Bridge.native.hideLoader();\n }\n}\n\n\n\n/**\n * PDF 저장을 비동기적으로 처리하고, 저장된 파일 경로를 반환하는 함수\n */\nexport async function SaveTotalPdf() {\n // CustomEvent로부터 전달될 파일 경로를 기다리기 위한 Promise 생성\n const { promise, resolve } = PromiseWithResolvers<string>();\n\n // OZExportCommand 이벤트가 발생하면, 파일 경로를 resolve하여 Promise 완료\n window.addEventListener(\n OZViewerEvent.OZExportCommand,\n // 이벤트를 CustomEvent로 타입 캐스팅하고, detail에서 파일 경로 추출\n (e: Event) => resolve((e as CustomEvent<OZExportEvent>).detail.filepaths),\n // 이벤트 리스너는 한 번만 실행되도록 설정\n { once: true }\n );\n\n // 전체 페이지 수 가져오기\n const totalPage = await getTotalPageMemo();\n\n // OZ 브릿지를 통해 PDF 저장 명령 실행\n await Bridge.nativeOz.savePdf({\n // PDF 저장은 증번폴더/파일이름.pdf로 생성\n policyNumber,\n param: [\n // 저장할 파일명 설정\n `pdf.filename=${'total.pdf'}`,\n // 1페이지부터 마지막 페이지까지 저장\n `export.pages=${1}-${totalPage}`,\n // 공통 PDF 내보내기 파라미터 추가\n ...commonPdfExportParam\n ].join('\\n')\n });\n\n // OZExportCommand 이벤트로부터 전달된 파일 경로를 기다림\n const filepath = await promise;\n\n // 최종적으로 파일 경로 반환\n return filepath;\n}","import { Bridge } from '../../../bridge';\n\nimport type { DownloadOzdOptions } from '../../types';\n\n/**\n * ozd, 폰트 등 App 내 리소스를 fetch하는 브릿지 유틸\n */\n\n/**\n * OZD 목록을 다운받는 브릿지\n */\nexport async function fetchDocument(args: DownloadOzdOptions) {\n // 브릿지에 다운로드 요청\n const { data: result } = await Bridge.native.downloadDocument(args);\n\n // start,end 페이지 매핑\n return result.data.map((i) => ({ ...i, startPage: 0, endPage: 0 }));\n}\n\n/**\n * App에 설치된 폰트를 Oz Param 형식으로 불러오는 브릿지\n */\nexport async function fetchFont() {\n const { data: fontMap } = await Bridge.native.getOzFontParam();\n\n const fontParms = Object.keys(fontMap).map((i) => `font.${i}=${fontMap[i]}`);\n\n return fontParms;\n}\n\nfunction base64ToBlob(base64: string): Blob {\n const [meta, data] = base64.split(',');\n if (meta === undefined) {\n throw new Error(`unexpected sing image ${base64}`)\n }\n const mime = meta.match(/:(.*?);/)?.[1] || '';\n const bytes = Uint8Array.from(atob(data || base64), c => c.charCodeAt(0));\n\n return new Blob([bytes], { type: mime });\n}\n\n\n/**\n * 비정형 서버에 성명,서명, 덧쓰기 이미지를 업로드한다\n */\nexport async function postFiletoDud(imageStr: string) {\n const formData = new FormData();\n formData.append(\"data\", base64ToBlob(imageStr), \"test.png\");\n formData.append(\"fileIdentifierValue\", \"string\");\n formData.append(\"fileExtendContent1\", \"string\");\n formData.append(\"fileExtendContent2\", \"string\");\n formData.append(\"preservationTerm\", \"1\");\n formData.append(\"fileType\", \"png\");\n\n // 비동기 호출\n const response = await fetch(\"/api/v1/post/file\", {\n headers: {\n \"x-channel-appversion\": \"3.1\",\n \"x-channel-carriername\": \"SK\",\n \"x-channel-deviceid\": \"deviceid\",\n \"x-channel-devicemodel\": \"iPHONE13\",\n \"x-channel-formfactor\": \"Phone\",\n \"x-channel-loginchannel\": \"DSP\",\n \"x-channel-logintype\": \"ONPA_PIN\",\n \"x-channel-networktype\": \"LTE\",\n \"x-channel-platformversion\": \"15.4.1\",\n \"x-channel-screenid\": \"ScreenId\",\n \"x-dud-authorization\": \"Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXNWRtc1g1MkVWZGV0YThJRy90YmlZY281bnVCdzRZOXhGZjlWakZzdWxnbU00YnkiLCJpYXQiOjE3NjEwNDMyNjgsImV4cCI6MTc2NjI5OTI2OH0.KDnF7ZhkmnEApGCvOcItwcHnLWe5iJu64g93GACT2yo\",\n \"x-x-channel-platformname\": \"IOS\"\n },\n method: \"POST\",\n body: formData\n });\n const json = await response.json();\n // console.log('json', json);\n\n return json;\n}\n\n/**\n * 비정형에서 중간저장해놓은 서명이미지를 다운받는다\n */\nexport async function getFileFromDud(fileMgmtId: string) {\n const outputType = \"binary\"\n const response = await fetch('/api/v1/get/file', {\n headers: {\n \"content-type\": \"application/json\",\n \"x-channel-appversion\": \"3.1\",\n \"x-channel-carriername\": \"SK\",\n \"x-channel-deviceid\": \"deviceid\",\n \"x-channel-devicemodel\": \"iPHONE13\",\n \"x-channel-formfactor\": \"Phone\",\n \"x-channel-loginchannel\": \"DSP\",\n \"x-channel-logintype\": \"ONPA_PIN\",\n \"x-channel-networktype\": \"LTE\",\n \"x-channel-platformversion\": \"15.4.1\",\n \"x-channel-screenid\": \"ScreenId\",\n \"x-dud-authorization\": \"Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXNWRtc1g1MkVWZGV0YThJRy90YmlZY281bnVCdzRZOXhGZjlWakZzdWxnbU00YnkiLCJpYXQiOjE3NjEwNDMyNjgsImV4cCI6MTc2NjI5OTI2OH0.KDnF7ZhkmnEApGCvOcItwcHnLWe5iJu64g93GACT2yo\",\n \"x-x-channel-platformname\": \"IOS\"\n },\n method: \"POST\",\n body: JSON.stringify({ fileMgmtId, outputType })\n });\n const blob = await response.blob();\n\n const base64String = await new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob); // Blob → base64 Data URL\n });\n // console.log('base64String', base64String)\n\n return base64String;\n}","import { Bridge } from '../../../bridge';\nimport { commonOzParam } from '../../constant';\nimport { OZTriggerExternalEvent } from '../../types';\nimport { ensureArray, sleep } from '../common-util';\n\nimport { fetchFont } from './fetch-util';\nimport { getReportCountMemo } from './oz-wrapper-util';\n\nimport type { ExtraDataType, OzdFile } from '../../types';\n\n\n/**\n * OZ 리포트 생성 및 초기화에 필요한 브릿지 유틸\n */\n\ntype CreateOzParamProps = {\n documentList: OzdFile[];\n extraData?: ExtraDataType;\n /** ex) `roleCd=11,28` */\n roleCd: string;\n}\n/**\n * OZ 리포트 최초 생성시 OZ에 넘길 파라미터를 생성하는 함수\n */\nexport async function CreateOzParam({ documentList, extraData = {}, roleCd }: CreateOzParamProps) {\n if (documentList.length === 0) {\n throw new Error('문서목록이 비어있습니다');\n }\n const fontParms = await fetchFont();\n const connectionParams = documentList.map(({ filePath }, idx) =>\n idx === 0 ? `connection.openfile=${filePath}` : `child${idx}.connection.openfile=${filePath}`\n );\n const childCount = documentList.length - 1;\n const extraParams = documentList.map((ozdFile, idx) => {\n const result: string[] = [];\n\n // 파일 이름에서 경로 및 확장자 제거 (ex: \"A0010.ozd\" → \"A0010\")\n const docCode = ozdFile.docCode.replace(/^.*[\\\\/]|(\\.[^/.]+)$/g, '');\n\n const prefix = idx === 0 ? '' : `child${idx}.`;\n\n // 문서코드에 바인딩할 데이터가 있는지 확인\n const data = extraData[docCode] || {};\n\n if (data.inputJson) {\n result.push(`${prefix}connection.inputjson=${JSON.stringify(data.inputJson)}`);\n }\n\n // args로 전달할 param이 있으면 반영\n const args = [\n // 모든서식에 공통으로 필요한 docCd param 추가\n `docCd=${docCode}`,\n // `roleCd=11,28`,\n `${roleCd}`,\n ...ensureArray(data.args)\n ];\n args.forEach((arg, idx) => result.push(`${prefix}connection.args${idx + 1}=${arg}`));\n\n // 그 외 추가 파라미터 목록이 있으면 반영\n const extraParam = [\n // connection.args의 갯수만큼 pcount 보정\n `connection.pcount=${args.length}`,\n ...ensureArray(data.extraParam)\n ];\n extraParam.forEach((param) => (result.push(`${prefix}${param}`)))\n\n return result;\n });\n\n // createReport용 ozParam\n const params = [\n ...(childCount > 0 ? [`viewer.childcount=${childCount}`] : []),\n ...connectionParams,\n ...commonOzParam,\n ...fontParms,\n ...extraParams.flat(1)\n ];\n\n return params;\n}\n\n/**\n * 모든 문서에 대해 checkeForm을 Y로 설정하는 명령을 순차적으로 한 번씩 호출합니다.\n * \n * 각 호출 사이에 기본 지연(sleep)을 넣어 처리 속도를 조절합니다.\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function setCheckEform(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n await sleep();\n await Bridge.nativeOz.setGlobal({ key: 'checkeForm', value: 'Y', docIndex: i })\n }\n}\n\n/**\n * 모든 문서에 대해 INPUT_TRIGGER_CLICK 명령을 순차적으로 한 번씩 호출합니다.\n * \n * 각 호출 사이에 기본 지연(sleep)을 넣어 처리 속도를 조절합니다.\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function triggerClickOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n await sleep();\n const command = `INPUT_TRIGGER_CLICK_AT=${i}`;\n await Bridge.nativeOz.getInformation({ command });\n }\n}\n\n/**\n * 모든 문서에 대해 서명 부분 이미지 컷팅 명령을 순차적으로 한 번씩 호출합니다.\n * \n * 각 호출 사이에 기본 지연(sleep)을 넣어 처리 속도를 조절합니다.\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function triggerCropImageOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n for (let i = 0; i < count; i++) {\n await sleep();\n // 사인 이미지 크롭처리\n await Bridge.nativeOz.triggerExternalEventByDocIndex({ param1: OZTriggerExternalEvent.CropImage, docIndex: Number(i) });\n }\n}\n\n/**\n * 모든 문서에 대해 전체 페이지 수를 계산하는 명령을 순차적으로 한 번씩 호출합니다.\n * \n * 각 호출 사이에 기본 지연(sleep)을 넣어 처리 속도를 조절합니다.\n * @param reportCount - 리포트 개수 (생략 시 내부에서 자동 계산)\n */\nexport async function getTotalPageOnAllDocuments(reportCount?: number) {\n const count = reportCount ?? await getReportCountMemo();\n\n const totalPages = [];\n for (let i = 0; i < count; i++) {\n await sleep();\n const command = `TOTAL_PAGE_OF_REPORT_FILE_AT=${i}`\n const { data } = await Bridge.nativeOz.getInformation({ command });\n totalPages.push(Number(data));\n }\n\n return totalPages;\n}","import { Bridge } from \"../../../bridge\";\nimport { OZTriggerExternalEvent } from \"../../types\";\nimport { sleep } from \"../common-util\";\n\n\ntype OzDraftRequest = Record<string, string> & { docCd: string };\n\n/**\n * OZ에서 getDraftData 요청 시 반환할 데이터를 생성하는 함수\n * \n * - OZ로부터 전달받은 JSON 문자열(`arg`)을 파싱하여 문서 코드(docCd)를 추출하고,\n * 해당 문서의 JSON 정보를 가져와 필요한 사인 정보만 key-value 형태로 반환한다.\n * - 사인FormId 값이 null일 경우, getInformation 결과로 채워진다.\n */\nexport async function getDraftDataHandler(\n rawOzRequest: string,\n documentIndexMap: Record<string, number>\n) {\n // 1️⃣ OZ에서 전달된 요청 데이터 파싱\n const parsedRequest = JSON.parse(rawOzRequest) as OzDraftRequest;\n // 문서코드와 formId:null 형태의 객체를 추출\n const { docCd, ...signKeyMap } = parsedRequest;\n\n // 2️⃣ 문서 코드(docCd)에 해당하는 글로벌 인덱스 조회\n const documentIndex = documentIndexMap[docCd];\n if (documentIndex === undefined) {\n throw new Error(`Invalid document code: ${docCd}`);\n }\n\n // 3️⃣ Bridge를 통해 해당 문서의 JSON 데이터 조회\n const { data } = await Bridge.nativeOz.getInformation({ command: `INPUT_JSON_AT=${documentIndex}` });\n const documentJson = JSON.parse(data);\n\n // 4️⃣ 필요한 사인 정보만 key-value 형태로 반환\n const signDataMap = Object.keys(signKeyMap).reduce((acc, key) => {\n acc[key] = documentJson[key];\n\n return acc;\n }, {} as Record<string, string>);\n\n return signDataMap;\n}\n\n/**\n * 주어진 문서 인덱스 목록(`indexList`)에 대해\n * 각 문서의 중간저장 데이터를 순차적으로 요청합니다.\n * \n * 각 페이지 검사 사이에 기본 지연(sleep)을 추가하여 처리 속도를 제어합니다.\n *\n * @param indexList - 중간저장 데이터를 요청할 문서의 인덱스 배열\n */\nexport async function triggerDraftDataByIndexList(indexList: number[]) {\n for (let i = 0; i < indexList.length; i++) {\n await sleep();\n await Bridge.nativeOz.triggerExternalEventByDocIndex({ param1: OZTriggerExternalEvent.GetDraftData, docIndex: indexList[i]!, });\n }\n}","import { debounce } from 'sales-frontend-utils';\n\n/**\n * 📘 ValueChangeDebounceUtil\n *\n * 문서의 OnValueChange 이벤트를 debounce 처리하기 위한 유틸\n *\n * - 동일한 문서 인덱스에서 연속 호출 시 debounce\n * - 다른 문서 인덱스는 독립적으로 debounce 처리\n */\n\n// 문서 인덱스별로 debounce 핸들러를 저장\nconst valueChangeDebounceMap = new Map<string, ReturnType<typeof debounce>>();\n\n/**\n * 특정 문서 인덱스의 OnValueChanged 핸들러를 debounce 처리하여 반환\n *\n * @param docIndex - 문서 인덱스 (string)\n * @param onValueChanged - debounce 후 실행할 콜백\n * @returns debounce된 핸들러 함수\n */\nexport function getDebouncedValueChangeHandler(\n docIndex: string,\n onValueChanged: (docIndex: string) => void\n) {\n // 서명패드에 수정이 일어나면 1초동안 디바운스 처리\n const DEBOUNCE_DELAY = 1000 * 1;\n\n // 이미 debounce된 핸들러가 있다면 그대로 사용\n const existingHandler = valueChangeDebounceMap.get(docIndex);\n if (existingHandler) {\n return existingHandler;\n }\n\n // 새로운 debounce 핸들러 생성\n const debouncedHandler = debounce((idx: string) => {\n onValueChanged(idx);\n }, DEBOUNCE_DELAY);\n\n valueChangeDebounceMap.set(docIndex, debouncedHandler);\n\n return debouncedHandler;\n}\n\n/**\n * 모든 문서 인덱스의 debounce 핸들러 초기화\n */\nexport function clearValueChangeDebounceHandlers() {\n valueChangeDebounceMap.clear();\n}\n"]}
|