Files
EPEEAIKit/art-agent/frontend/.next/static/chunks/app/page.js
2026-04-12 01:02:14 +08:00

105 lines
137 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["app/page"],{
/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CGIT_HOME%5C%5CEPEEAIKit%5C%5Cart-agent%5C%5Cfrontend%5C%5Csrc%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!":
/*!***************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CGIT_HOME%5C%5CEPEEAIKit%5C%5Cart-agent%5C%5Cfrontend%5C%5Csrc%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false! ***!
\***************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/page.tsx */ \"(app-pages-browser)/./src/app/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWNsaWVudC1lbnRyeS1sb2FkZXIuanM/bW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyRCUzQSU1QyU1Q0dJVF9IT01FJTVDJTVDRVBFRUFJS2l0JTVDJTVDYXJ0LWFnZW50JTVDJTVDZnJvbnRlbmQlNUMlNUNzcmMlNUMlNUNhcHAlNUMlNUNwYWdlLnRzeCUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9ZmFsc2UhIiwibWFwcGluZ3MiOiJBQUFBLDhKQUFxRyIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiRDpcXFxcR0lUX0hPTUVcXFxcRVBFRUFJS2l0XFxcXGFydC1hZ2VudFxcXFxmcm9udGVuZFxcXFxzcmNcXFxcYXBwXFxcXHBhZ2UudHN4XCIpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CGIT_HOME%5C%5CEPEEAIKit%5C%5Cart-agent%5C%5Cfrontend%5C%5Csrc%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js":
/*!****************************************************************************************!*\
!*** ./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js ***!
\****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
eval(__webpack_require__.ts("/**\n * @license React\n * react-jsx-dev-runtime.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\n true &&\n (function () {\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\";\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 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 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(type, key, props, owner, debugStack, debugTask) {\n var refProp = 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 !== refProp ? refProp : 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 jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_ELEMENT_TYPE &&\n node._store &&\n (node._store.validated = 1);\n }\n var React = __webpack_require__(/*! next/dist/compiled/react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"),\n 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_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 REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsxDEV = function (type, config, maybeKey, isStaticChildren) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7QUFDYixLQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCwrQ0FBK0MsNkJBQTZCO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxnQkFBZ0IsZ0RBQWdEO0FBQ2hFLGdCQUFnQixhQUFhO0FBQzdCO0FBQ0E7QUFDQSxnQ0FBZ0Msa0NBQWtDLE9BQU87QUFDekU7QUFDQSxnR0FBZ0csU0FBUyxVQUFVLHNGQUFzRixhQUFhLFVBQVUsVUFBVTtBQUMxTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsc0dBQTBCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0JBQWdCO0FBQ3BCLElBQUksY0FBYztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUciLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGNvbXBpbGVkXFxyZWFjdFxcY2pzXFxyZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LWRldi1ydW50aW1lLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblwicHJvZHVjdGlvblwiICE9PSBwcm9jZXNzLmVudi5OT0RFX0VOViAmJlxuICAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB7XG4gICAgICBpZiAobnVsbCA9PSB0eXBlKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICByZXR1cm4gdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcbiAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdHlwZSkgcmV0dXJuIHR5cGU7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIkZyYWdtZW50XCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJQcm9maWxlclwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3RyaWN0TW9kZVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3VzcGVuc2VcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3VzcGVuc2VMaXN0XCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfQUNUSVZJVFlfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJBY3Rpdml0eVwiO1xuICAgICAgfVxuICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgIChcIm51bWJlclwiID09PSB0eXBlb2YgdHlwZS50YWcgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBvYmplY3QgaW4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKCkuIFRoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS5cIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB0eXBlLiQkdHlwZW9mKVxuICAgICAgICApIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIFwiUG9ydGFsXCI7XG4gICAgICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCBcIkNvbnRleHRcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTlNVTUVSX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKHR5cGUuX2NvbnRleHQuZGlzcGxheU5hbWUgfHwgXCJDb250ZXh0XCIpICsgXCIuQ29uc3VtZXJcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgICAgICB2YXIgaW5uZXJUeXBlID0gdHlwZS5yZW5kZXI7XG4gICAgICAgICAgICB0eXBlID0gdHlwZS5kaXNwbGF5TmFtZTtcbiAgICAgICAgICAgIHR5cGUgfHxcbiAgICAgICAgICAgICAgKCh0eXBlID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8IFwiXCIpLFxuICAgICAgICAgICAgICAodHlwZSA9IFwiXCIgIT09IHR5cGUgPyBcIkZvcndhcmRSZWYoXCIgKyB0eXBlICsgXCIpXCIgOiBcIkZvcndhcmRSZWZcIikpO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAoaW5uZXJUeXBlID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsKSxcbiAgICAgICAgICAgICAgbnVsbCAhPT0gaW5uZXJUeXBlXG4gICAgICAgICAgICAgICAgPyBpbm5lclR5cGVcbiAgICAgICAgICAgICAgICA6IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8IFwiTWVtb1wiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgaW5uZXJUeXBlID0gdHlwZS5fcGF5bG9hZDtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLl9pbml0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKGlubmVyVHlwZSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge31cbiAgICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIFwiXCIgKyB2YWx1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tLZXlTdHJpbmdDb2VyY2lvbih2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICExO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSAhMDtcbiAgICAgIH1cbiAgICAgIGlmIChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQpIHtcbiAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gY29uc29sZTtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfdGVtcF9jb25zdCA9IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC5lcnJvcjtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMCA9XG4gICAgICAgICAgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIFN5bWJvbCAmJlxuICAgICAgICAgICAgU3ltYm9sLnRvU3RyaW5nVGFnICYmXG4gICAgICAgICAgICB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddKSB8fFxuICAgICAgICAgIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHxcbiAgICAgICAgICBcIk9iamVjdFwiO1xuICAgICAgICBKU0NvbXBpbGVyX3RlbXBfY29uc3QuY2FsbChcbiAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQsXG4gICAgICAgICAgXCJUaGUgcHJvdmlkZWQga2V5IGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUgJXMuIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSB1c2luZyBpdCBoZXJlLlwiLFxuICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0VGFza05hbWUodHlwZSkge1xuICAgICAgaWYgKHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUpIHJldHVybiBcIjw+XCI7XG4gICAgICBpZiAoXG4gICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlICYmXG4gICAgICAgIG51bGwgIT09IHR5cGUgJiZcbiAgICAgICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFXG4gICAgICApXG4gICAgICAgIHJldHVybiBcIjwuLi4+XCI7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIG5hbWUgPyBcIjxcIiArIG5hbWUgKyBcIj5cIiA6IFwiPC4uLj5cIjtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgcmV0dXJuIFwiPC4uLj5cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0T3duZXIoKSB7XG4gICAgICB2YXIgZGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLkE7XG4gICAgICByZXR1cm4gbnVsbCA9PT0gZGlzcGF0Y2hlciA/IG51bGwgOiBkaXNwYXRjaGVyLmdldE93bmVyKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIFVua25vd25Pd25lcigpIHtcbiAgICAgIHJldHVybiBFcnJvcihcInJlYWN0LXN0YWNrLXRvcC1mcmFtZVwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzVmFsaWRLZXkoY29uZmlnKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIFwia2V5XCIpKSB7XG4gICAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgXCJrZXlcIikuZ2V0O1xuICAgICAgICBpZiAoZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZykgcmV0dXJuICExO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gY29uZmlnLmtleTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gICAgICBmdW5jdGlvbiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkoKSB7XG4gICAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duIHx8XG4gICAgICAgICAgKChzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biA9ICEwKSxcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCIlczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lIHZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgcHJvcC4gKGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvc3BlY2lhbC1wcm9wcylcIixcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lXG4gICAgICAgICAgKSk7XG4gICAgICB9XG4gICAgICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcgPSAhMDtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgXCJrZXlcIiwge1xuICAgICAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ0tleSxcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVsZW1lbnRSZWZHZXR0ZXJXaXRoRGVwcmVjYXRpb25XYXJuaW5nKCkge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodGhpcy50eXBlKTtcbiAgICAgIGRpZFdhcm5BYm91dEVsZW1lbnRSZWZbY29tcG9uZW50TmFtZV0gfHxcbiAgICAgICAgKChkaWRXYXJuQWJvdXRFbGVtZW50UmVmW2NvbXBvbmVudE5hbWVdID0gITApLFxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiQWNjZXNzaW5nIGVsZW1lbnQucmVmIHdhcyByZW1vdmVkIGluIFJlYWN0IDE5LiByZWYgaXMgbm93IGEgcmVndWxhciBwcm9wLiBJdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgSlNYIEVsZW1lbnQgdHlwZSBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgICAgICkpO1xuICAgICAgY29tcG9uZW50TmFtZSA9IHRoaXMucHJvcHMucmVmO1xuICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gY29tcG9uZW50TmFtZSA/IGNvbXBvbmVudE5hbWUgOiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCBwcm9wcywgb3duZXIsIGRlYnVnU3RhY2ssIGRlYnVnVGFzaykge1xuICAgICAgdmFyIHJlZlByb3AgPSBwcm9wcy5yZWY7XG4gICAgICB0eXBlID0ge1xuICAgICAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICBfb3duZXI6IG93bmVyXG4gICAgICB9O1xuICAgICAgbnVsbCAhPT0gKHZvaWQgMCAhPT0gcmVmUHJvcCA/IHJlZlByb3AgOiBudWxsKVxuICAgICAgICA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBcInJlZlwiLCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgICAgIGdldDogZWxlbWVudFJlZkdldHRlcldpdGhEZXByZWNhdGlvbldhcm5pbmdcbiAgICAgICAgICB9KVxuICAgICAgICA6IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBcInJlZlwiLCB7IGVudW1lcmFibGU6ICExLCB2YWx1ZTogbnVsbCB9KTtcbiAgICAgIHR5cGUuX3N0b3JlID0ge307XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodHlwZS5fc3RvcmUsIFwidmFsaWRhdGVkXCIsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgICAgdmFsdWU6IDBcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIFwiX2RlYnVnSW5mb1wiLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgIHZhbHVlOiBudWxsXG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBcIl9kZWJ1Z1N0YWNrXCIsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgICAgdmFsdWU6IGRlYnVnU3RhY2tcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIFwiX2RlYnVnVGFza1wiLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgIHZhbHVlOiBkZWJ1Z1Rhc2tcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmZyZWV6ZSAmJiAoT2JqZWN0LmZyZWV6ZSh0eXBlLnByb3BzKSwgT2JqZWN0LmZyZWV6ZSh0eXBlKSk7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG4gICAgZnVuY3Rpb24ganN4REVWSW1wbChcbiAgICAgIHR5cGUsXG4gICAgICBjb25maWcsXG4gICAgICBtYXliZUtleSxcbiAgICAgIGlzU3RhdGljQ2hpbGRyZW4sXG4gICAgICBkZWJ1Z1N0YWNrLFxuICAgICAgZGVidWdUYXNrXG4gICAgKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBjb25maWcuY2hpbGRyZW47XG4gICAgICBpZiAodm9pZCAwICE9PSBjaGlsZHJlbilcbiAgICAgICAgaWYgKGlzU3RhdGljQ2hpbGRyZW4pXG4gICAgICAgICAgaWYgKGlzQXJyYXlJbXBsKGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgaXNTdGF0aWNDaGlsZHJlbiA9IDA7XG4gICAgICAgICAgICAgIGlzU3RhdGljQ2hpbGRyZW4gPCBjaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgICAgICAgIGlzU3RhdGljQ2hpbGRyZW4rK1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhjaGlsZHJlbltpc1N0YXRpY0NoaWxkcmVuXSk7XG4gICAgICAgICAgICBPYmplY3QuZnJlZXplICYmIE9iamVjdC5mcmVlemUoY2hpbGRyZW4pO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJSZWFjdC5qc3g6IFN0YXRpYyBjaGlsZHJlbiBzaG91bGQgYWx3YXlzIGJlIGFuIGFycmF5LiBZb3UgYXJlIGxpa2VseSBleHBsaWNpdGx5IGNhbGxpbmcgUmVhY3QuanN4cyBvciBSZWFjdC5qc3hERVYuIFVzZSB0aGUgQmFiZWwgdHJhbnNmb3JtIGluc3RlYWQuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIGVsc2UgdmFsaWRhdGVDaGlsZEtleXMoY2hpbGRyZW4pO1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBcImtleVwiKSkge1xuICAgICAgICBjaGlsZHJlbiA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpLmZpbHRlcihmdW5jdGlvbiAoaykge1xuICAgICAgICAgIHJldHVybiBcImtleVwiICE9PSBrO1xuICAgICAgICB9KTtcbiAgICAgICAgaXNTdGF0aWNDaGlsZHJlbiA9XG4gICAgICAgICAgMCA8IGtleXMubGVuZ3RoXG4gICAgICAgICAgICA/IFwie2tleTogc29tZUtleSwgXCIgKyBrZXlzLmpvaW4oXCI6IC4uLiwgXCIpICsgXCI6IC4uLn1cIlxuICAgICAgICAgICAgOiBcIntrZXk6IHNvbWVLZXl9XCI7XG4gICAgICAgIGRpZFdhcm5BYm91dEtleVNwcmVhZFtjaGlsZHJlbiArIGlzU3RhdGljQ2hpbGRyZW5dIHx8XG4gICAgICAgICAgKChrZXlzID1cbiAgICAgICAgICAgIDAgPCBrZXlzLmxlbmd0aCA/IFwie1wiICsga2V5cy5qb2luKFwiOiAuLi4sIFwiKSArIFwiOiAuLi59XCIgOiBcInt9XCIpLFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAnQSBwcm9wcyBvYmplY3QgY29udGFpbmluZyBhIFwia2V5XCIgcHJvcCBpcyBiZWluZyBzcHJlYWQgaW50byBKU1g6XFxuICBsZXQgcHJvcHMgPSAlcztcXG4gIDwlcyB7Li4ucHJvcHN9IC8+XFxuUmVhY3Qga2V5cyBtdXN0IGJlIHBhc3NlZCBkaXJlY3RseSB0byBKU1ggd2l0aG91dCB1c2luZyBzcHJlYWQ6XFxuICBsZXQgcHJvcHMgPSAlcztcXG4gIDwlcyBrZXk9e3NvbWVLZXl9IHsuLi5wcm9wc30gLz4nLFxuICAgICAgICAgICAgaXNTdGF0aWNDaGlsZHJlbixcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAga2V5cyxcbiAgICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgICAgKSxcbiAgICAgICAgICAoZGlkV2FybkFib3V0S2V5U3ByZWFkW2NoaWxkcmVuICsgaXNTdGF0aWNDaGlsZHJlbl0gPSAhMCkpO1xuICAgICAgfVxuICAgICAgY2hpbGRyZW4gPSBudWxsO1xuICAgICAgdm9pZCAwICE9PSBtYXliZUtleSAmJlxuICAgICAgICAoY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihtYXliZUtleSksIChjaGlsZHJlbiA9IFwiXCIgKyBtYXliZUtleSkpO1xuICAgICAgaGFzVmFsaWRLZXkoY29uZmlnKSAmJlxuICAgICAgICAoY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihjb25maWcua2V5KSwgKGNoaWxkcmVuID0gXCJcIiArIGNvbmZpZy5rZXkpKTtcbiAgICAgIGlmIChcImtleVwiIGluIGNvbmZpZykge1xuICAgICAgICBtYXliZUtleSA9IHt9O1xuICAgICAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBjb25maWcpXG4gICAgICAgICAgXCJrZXlcIiAhPT0gcHJvcE5hbWUgJiYgKG1heWJlS2V5W3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV0pO1xuICAgICAgfSBlbHNlIG1heWJlS2V5ID0gY29uZmlnO1xuICAgICAgY2hpbGRyZW4gJiZcbiAgICAgICAgZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIoXG4gICAgICAgICAgbWF5YmVLZXksXG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZVxuICAgICAgICAgICAgPyB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBcIlVua25vd25cIlxuICAgICAgICAgICAgOiB0eXBlXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gUmVhY3RFbGVtZW50KFxuICAgICAgICB0eXBlLFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgbWF5YmVLZXksXG4gICAgICAgIGdldE93bmVyKCksXG4gICAgICAgIGRlYnVnU3RhY2ssXG4gICAgICAgIGRlYnVnVGFza1xuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdmFsaWRhdGVDaGlsZEtleXMobm9kZSkge1xuICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG5vZGUgJiZcbiAgICAgICAgbnVsbCAhPT0gbm9kZSAmJlxuICAgICAgICBub2RlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUgJiZcbiAgICAgICAgbm9kZS5fc3RvcmUgJiZcbiAgICAgICAgKG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IDEpO1xuICAgIH1cbiAgICB2YXIgUmVhY3QgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0XCIpLFxuICAgICAgUkVBQ1RfRUxFTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50XCIpLFxuICAgICAgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLFxuICAgICAgUkVBQ1RfRlJBR01FTlRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxcbiAgICAgIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksXG4gICAgICBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLFxuICAgICAgUkVBQ1RfQ09OU1VNRVJfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jb25zdW1lclwiKSxcbiAgICAgIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLFxuICAgICAgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxcbiAgICAgIFJFQUNUX1NVU1BFTlNFX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksXG4gICAgICBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxcbiAgICAgIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLFxuICAgICAgUkVBQ1RfTEFaWV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmxhenlcIiksXG4gICAgICBSRUFDVF9BQ1RJVklUWV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmFjdGl2aXR5XCIpLFxuICAgICAgUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jbGllbnQucmVmZXJlbmNlXCIpLFxuICAgICAgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPVxuICAgICAgICBSZWFjdC5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsXG4gICAgICBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksXG4gICAgICBpc0FycmF5SW1wbCA9IEFycmF5LmlzQXJyYXksXG4gICAgICBjcmVhdGVUYXNrID0gY29uc29sZS5jcmVhdGVUYXNrXG4gICAgICAgID8gY29uc29sZS5jcmVhdGVUYXNrXG4gICAgICAgIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfTtcbiAgICBSZWFjdCA9IHtcbiAgICAgIHJlYWN0X3N0YWNrX2JvdHRvbV9mcmFtZTogZnVuY3Rpb24gKGNhbGxTdGFja0ZvckVycm9yKSB7XG4gICAgICAgIHJldHVybiBjYWxsU3RhY2tGb3JFcnJvcigpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duO1xuICAgIHZhciBkaWRXYXJuQWJvdXRFbGVtZW50UmVmID0ge307XG4gICAgdmFyIHVua25vd25Pd25lckRlYnVnU3RhY2sgPSBSZWFjdC5yZWFjdF9zdGFja19ib3R0b21fZnJhbWUuYmluZChcbiAgICAgIFJlYWN0LFxuICAgICAgVW5rbm93bk93bmVyXG4gICAgKSgpO1xuICAgIHZhciB1bmtub3duT3duZXJEZWJ1Z1Rhc2sgPSBjcmVhdGVUYXNrKGdldFRhc2tOYW1lKFVua25vd25Pd25lcikpO1xuICAgIHZhciBkaWRXYXJuQWJvdXRLZXlTcHJlYWQgPSB7fTtcbiAgICBleHBvcnRzLkZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbiAgICBleHBvcnRzLmpzeERFViA9IGZ1bmN0aW9uICh0eXBlLCBjb25maWcsIG1heWJlS2V5LCBpc1N0YXRpY0NoaWxkcmVuKSB7XG4gICAgICB2YXIgdHJhY2tBY3R1YWxPd25lciA9XG4gICAgICAgIDFlNCA+IFJlYWN0U2hhcmVkSW50ZXJuYWxzLnJlY2VudGx5Q3JlYXRlZE93bmVyU3RhY2tzKys7XG4gICAgICByZXR1cm4ganN4REVWSW1wbChcbiAgICAgICAgdHlwZSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBtYXliZUtleSxcbiAgICAgICAgaXNTdGF0aWNDaGlsZHJlbixcbiAgICAgICAgdHJhY2tBY3R1YWxPd25lclxuICAgICAgICAgID8gRXJyb3IoXCJyZWFjdC1zdGFjay10b3AtZnJhbWVcIilcbiAgICAgICAgICA6IHVua25vd25Pd25lckRlYnVnU3RhY2ssXG4gICAgICAgIHRyYWNrQWN0dWFsT3duZXIgPyBjcmVhdGVUYXNrKGdldFRhc2tOYW1lKHR5cGUpKSA6IHVua25vd25Pd25lckRlYnVnVGFza1xuICAgICAgKTtcbiAgICB9O1xuICB9KSgpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js":
/*!******************************************************************!*\
!*** ./node_modules/next/dist/compiled/react/jsx-dev-runtime.js ***!
\******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-jsx-dev-runtime.development.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSw4TEFBc0U7QUFDeEUiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGNvbXBpbGVkXFxyZWFjdFxcanN4LWRldi1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./src/app/page.tsx":
/*!**************************!*\
!*** ./src/app/page.tsx ***!
\**************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Home)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_chat_chat_messages__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/chat/chat-messages */ \"(app-pages-browser)/./src/components/chat/chat-messages.tsx\");\n/* harmony import */ var _components_chat_chat_input__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/chat/chat-input */ \"(app-pages-browser)/./src/components/chat/chat-input.tsx\");\n/* harmony import */ var _lib_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/lib/api */ \"(app-pages-browser)/./src/lib/api.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction Home() {\n _s();\n const [messages, setMessages] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [streamingText, setStreamingText] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [streamingImages, setStreamingImages] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [statusText, setStatusText] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const scrollRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const scrollToBottom = ()=>{\n setTimeout(()=>{\n var _scrollRef_current;\n (_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : _scrollRef_current.scrollTo({\n top: scrollRef.current.scrollHeight,\n behavior: \"smooth\"\n });\n }, 50);\n };\n const handleSend = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)({\n \"Home.useCallback[handleSend]\": async (text, refImage)=>{\n // 添加用户消息\n const userMessage = {\n role: \"user\",\n content: text\n };\n const updatedMessages = [\n ...messages,\n userMessage\n ];\n setMessages(updatedMessages);\n setIsLoading(true);\n setStreamingText(\"\");\n setStreamingImages([]);\n setStatusText(\"\");\n scrollToBottom();\n let assistantText = \"\";\n let collectedImages = [];\n try {\n for await (const event of (0,_lib_api__WEBPACK_IMPORTED_MODULE_4__.sendChat)(updatedMessages, refImage)){\n switch(event.type){\n case \"text_delta\":\n assistantText += event.data.text;\n setStreamingText(assistantText);\n scrollToBottom();\n break;\n case \"tool_start\":\n setStatusText(event.data.message);\n scrollToBottom();\n break;\n case \"image_result\":\n collectedImages = [\n ...collectedImages,\n ...event.data.images\n ];\n setStreamingImages(collectedImages);\n setStatusText(\"\");\n scrollToBottom();\n break;\n case \"error\":\n assistantText += \"\\n\\n[错误: \".concat(event.data.message, \"]\");\n setStreamingText(assistantText);\n break;\n case \"done\":\n break;\n }\n }\n } catch (e) {\n assistantText += \"\\n\\n[请求失败: \".concat(e instanceof Error ? e.message : \"未知错误\", \"]\");\n }\n // 完成:将流式内容合并为正式消息\n const assistantMessage = {\n role: \"assistant\",\n content: assistantText || \"(生成完成)\",\n images: collectedImages.length > 0 ? collectedImages : undefined\n };\n setMessages([\n ...updatedMessages,\n assistantMessage\n ]);\n setIsLoading(false);\n setStreamingText(\"\");\n setStreamingImages([]);\n setStatusText(\"\");\n scrollToBottom();\n }\n }[\"Home.useCallback[handleSend]\"], [\n messages\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-screen flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"flex-shrink-0 border-b border-[var(--border)] bg-[var(--bg-secondary)] px-6 py-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-lg font-semibold\",\n children: \"Art Agent\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 97,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-[var(--text-secondary)]\",\n children: \"AI 美术资源生成助手 \\xb7 MVP\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 98,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 96,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: scrollRef,\n className: \"flex-1 overflow-y-auto\",\n children: messages.length === 0 && !isLoading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-4xl\",\n children: \"\\uD83C\\uDFA8\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 108,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl font-medium text-[var(--text-primary)]\",\n children: \"欢迎使用 Art Agent\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 109,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-[var(--text-secondary)] max-w-md\",\n children: [\n \"描述你想要的美术资源,我来帮你生成。\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 114,\n columnNumber: 17\n }, this),\n \"你可以上传参考图来引导风格方向。\"\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 112,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap justify-center gap-2 mt-4\",\n children: [\n \"画一个赛博朋克风格的退出按钮\",\n \"设计一个卡通风格的金币图标\",\n \"画一个奇幻风格的游戏角色立绘\"\n ].map((hint)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleSend(hint, null),\n className: \"text-xs px-3 py-1.5 rounded-full border border-[var(--border)] text-[var(--text-secondary)] hover:border-[var(--accent)] hover:text-[var(--accent)] transition-colors cursor-pointer\",\n children: hint\n }, hint, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 123,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 117,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 107,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 106,\n columnNumber: 11\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_chat_chat_messages__WEBPACK_IMPORTED_MODULE_2__.ChatMessages, {\n messages: messages,\n isLoading: isLoading,\n streamingText: streamingText,\n streamingImages: streamingImages,\n statusText: statusText\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 138,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 104,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_chat_chat_input__WEBPACK_IMPORTED_MODULE_3__.ChatInput, {\n onSend: handleSend,\n disabled: isLoading\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 149,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 94,\n columnNumber: 5\n }, this);\n}\n_s(Home, \"2IG269anOUIFe2npyz0QVarJ7kU=\");\n_c = Home;\nvar _c;\n$RefreshReg$(_c, \"Home\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9hcHAvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRXNEO0FBQ1M7QUFDTjtBQUNOO0FBRXBDLFNBQVNNOztJQUN0QixNQUFNLENBQUNDLFVBQVVDLFlBQVksR0FBR04sK0NBQVFBLENBQVksRUFBRTtJQUN0RCxNQUFNLENBQUNPLFdBQVdDLGFBQWEsR0FBR1IsK0NBQVFBLENBQUM7SUFDM0MsTUFBTSxDQUFDUyxlQUFlQyxpQkFBaUIsR0FBR1YsK0NBQVFBLENBQUM7SUFDbkQsTUFBTSxDQUFDVyxpQkFBaUJDLG1CQUFtQixHQUFHWiwrQ0FBUUEsQ0FBVyxFQUFFO0lBQ25FLE1BQU0sQ0FBQ2EsWUFBWUMsY0FBYyxHQUFHZCwrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNZSxZQUFZaEIsNkNBQU1BLENBQWlCO0lBRXpDLE1BQU1pQixpQkFBaUI7UUFDckJDLFdBQVc7Z0JBQ1RGO2FBQUFBLHFCQUFBQSxVQUFVRyxPQUFPLGNBQWpCSCx5Q0FBQUEsbUJBQW1CSSxRQUFRLENBQUM7Z0JBQzFCQyxLQUFLTCxVQUFVRyxPQUFPLENBQUNHLFlBQVk7Z0JBQ25DQyxVQUFVO1lBQ1o7UUFDRixHQUFHO0lBQ0w7SUFFQSxNQUFNQyxhQUFhekIsa0RBQVdBO3dDQUM1QixPQUFPMEIsTUFBY0M7WUFDbkIsU0FBUztZQUNULE1BQU1DLGNBQXVCO2dCQUFFQyxNQUFNO2dCQUFRQyxTQUFTSjtZQUFLO1lBQzNELE1BQU1LLGtCQUFrQjttQkFBSXhCO2dCQUFVcUI7YUFBWTtZQUNsRHBCLFlBQVl1QjtZQUNackIsYUFBYTtZQUNiRSxpQkFBaUI7WUFDakJFLG1CQUFtQixFQUFFO1lBQ3JCRSxjQUFjO1lBQ2RFO1lBRUEsSUFBSWMsZ0JBQWdCO1lBQ3BCLElBQUlDLGtCQUE0QixFQUFFO1lBRWxDLElBQUk7Z0JBQ0YsV0FBVyxNQUFNQyxTQUFTN0Isa0RBQVFBLENBQUMwQixpQkFBaUJKLFVBQVc7b0JBQzdELE9BQVFPLE1BQU1DLElBQUk7d0JBQ2hCLEtBQUs7NEJBQ0hILGlCQUFpQkUsTUFBTUUsSUFBSSxDQUFDVixJQUFJOzRCQUNoQ2QsaUJBQWlCb0I7NEJBQ2pCZDs0QkFDQTt3QkFFRixLQUFLOzRCQUNIRixjQUFja0IsTUFBTUUsSUFBSSxDQUFDQyxPQUFPOzRCQUNoQ25COzRCQUNBO3dCQUVGLEtBQUs7NEJBQ0hlLGtCQUFrQjttQ0FDYkE7bUNBQ0NDLE1BQU1FLElBQUksQ0FBQ0UsTUFBTTs2QkFDdEI7NEJBQ0R4QixtQkFBbUJtQjs0QkFDbkJqQixjQUFjOzRCQUNkRTs0QkFDQTt3QkFFRixLQUFLOzRCQUNIYyxpQkFBaUIsWUFBK0IsT0FBbkJFLE1BQU1FLElBQUksQ0FBQ0MsT0FBTyxFQUFDOzRCQUNoRHpCLGlCQUFpQm9COzRCQUNqQjt3QkFFRixLQUFLOzRCQUNIO29CQUNKO2dCQUNGO1lBQ0YsRUFBRSxPQUFPTyxHQUFHO2dCQUNWUCxpQkFBaUIsY0FBc0QsT0FBeENPLGFBQWFDLFFBQVFELEVBQUVGLE9BQU8sR0FBRyxRQUFPO1lBQ3pFO1lBRUEsa0JBQWtCO1lBQ2xCLE1BQU1JLG1CQUE0QjtnQkFDaENaLE1BQU07Z0JBQ05DLFNBQVNFLGlCQUFpQjtnQkFDMUJNLFFBQVFMLGdCQUFnQlMsTUFBTSxHQUFHLElBQUlULGtCQUFrQlU7WUFDekQ7WUFDQW5DLFlBQVk7bUJBQUl1QjtnQkFBaUJVO2FBQWlCO1lBQ2xEL0IsYUFBYTtZQUNiRSxpQkFBaUI7WUFDakJFLG1CQUFtQixFQUFFO1lBQ3JCRSxjQUFjO1lBQ2RFO1FBQ0Y7dUNBQ0E7UUFBQ1g7S0FBUztJQUdaLHFCQUNFLDhEQUFDcUM7UUFBSUMsV0FBVTs7MEJBRWIsOERBQUNDO2dCQUFPRCxXQUFVOztrQ0FDaEIsOERBQUNFO3dCQUFHRixXQUFVO2tDQUF3Qjs7Ozs7O2tDQUN0Qyw4REFBQ0c7d0JBQUVILFdBQVU7a0NBQXVDOzs7Ozs7Ozs7Ozs7MEJBTXRELDhEQUFDRDtnQkFBSUssS0FBS2hDO2dCQUFXNEIsV0FBVTswQkFDNUJ0QyxTQUFTbUMsTUFBTSxLQUFLLEtBQUssQ0FBQ2pDLDBCQUN6Qiw4REFBQ21DO29CQUFJQyxXQUFVOzhCQUNiLDRFQUFDRDt3QkFBSUMsV0FBVTs7MENBQ2IsOERBQUNEO2dDQUFJQyxXQUFVOzBDQUFXOzs7Ozs7MENBQzFCLDhEQUFDSztnQ0FBR0wsV0FBVTswQ0FBaUQ7Ozs7OzswQ0FHL0QsOERBQUNHO2dDQUFFSCxXQUFVOztvQ0FBZ0Q7a0RBRTNELDhEQUFDTTs7Ozs7b0NBQUs7Ozs7Ozs7MENBR1IsOERBQUNQO2dDQUFJQyxXQUFVOzBDQUNaO29DQUNDO29DQUNBO29DQUNBO2lDQUNELENBQUNPLEdBQUcsQ0FBQyxDQUFDQyxxQkFDTCw4REFBQ0M7d0NBRUNDLFNBQVMsSUFBTTlCLFdBQVc0QixNQUFNO3dDQUNoQ1IsV0FBVTtrREFLVFE7dUNBUElBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Q0FjZiw4REFBQ2xELHdFQUFZQTtvQkFDWEksVUFBVUE7b0JBQ1ZFLFdBQVdBO29CQUNYRSxlQUFlQTtvQkFDZkUsaUJBQWlCQTtvQkFDakJFLFlBQVlBOzs7Ozs7Ozs7OzswQkFNbEIsOERBQUNYLGtFQUFTQTtnQkFBQ29ELFFBQVEvQjtnQkFBWWdDLFVBQVVoRDs7Ozs7Ozs7Ozs7O0FBRy9DO0dBaEp3Qkg7S0FBQUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxzcmNcXGFwcFxccGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XHJcblxyXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZXMgfSBmcm9tIFwiQC9jb21wb25lbnRzL2NoYXQvY2hhdC1tZXNzYWdlc1wiO1xyXG5pbXBvcnQgeyBDaGF0SW5wdXQgfSBmcm9tIFwiQC9jb21wb25lbnRzL2NoYXQvY2hhdC1pbnB1dFwiO1xyXG5pbXBvcnQgeyBzZW5kQ2hhdCwgdHlwZSBNZXNzYWdlIH0gZnJvbSBcIkAvbGliL2FwaVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSG9tZSgpIHtcclxuICBjb25zdCBbbWVzc2FnZXMsIHNldE1lc3NhZ2VzXSA9IHVzZVN0YXRlPE1lc3NhZ2VbXT4oW10pO1xyXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgY29uc3QgW3N0cmVhbWluZ1RleHQsIHNldFN0cmVhbWluZ1RleHRdID0gdXNlU3RhdGUoXCJcIik7XHJcbiAgY29uc3QgW3N0cmVhbWluZ0ltYWdlcywgc2V0U3RyZWFtaW5nSW1hZ2VzXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XHJcbiAgY29uc3QgW3N0YXR1c1RleHQsIHNldFN0YXR1c1RleHRdID0gdXNlU3RhdGUoXCJcIik7XHJcbiAgY29uc3Qgc2Nyb2xsUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcclxuXHJcbiAgY29uc3Qgc2Nyb2xsVG9Cb3R0b20gPSAoKSA9PiB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQ/LnNjcm9sbFRvKHtcclxuICAgICAgICB0b3A6IHNjcm9sbFJlZi5jdXJyZW50LnNjcm9sbEhlaWdodCxcclxuICAgICAgICBiZWhhdmlvcjogXCJzbW9vdGhcIixcclxuICAgICAgfSk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlU2VuZCA9IHVzZUNhbGxiYWNrKFxyXG4gICAgYXN5bmMgKHRleHQ6IHN0cmluZywgcmVmSW1hZ2U6IEZpbGUgfCBudWxsKSA9PiB7XHJcbiAgICAgIC8vIOa3u+WKoOeUqOaIt+a2iOaBr1xyXG4gICAgICBjb25zdCB1c2VyTWVzc2FnZTogTWVzc2FnZSA9IHsgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IHRleHQgfTtcclxuICAgICAgY29uc3QgdXBkYXRlZE1lc3NhZ2VzID0gWy4uLm1lc3NhZ2VzLCB1c2VyTWVzc2FnZV07XHJcbiAgICAgIHNldE1lc3NhZ2VzKHVwZGF0ZWRNZXNzYWdlcyk7XHJcbiAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcclxuICAgICAgc2V0U3RyZWFtaW5nVGV4dChcIlwiKTtcclxuICAgICAgc2V0U3RyZWFtaW5nSW1hZ2VzKFtdKTtcclxuICAgICAgc2V0U3RhdHVzVGV4dChcIlwiKTtcclxuICAgICAgc2Nyb2xsVG9Cb3R0b20oKTtcclxuXHJcbiAgICAgIGxldCBhc3Npc3RhbnRUZXh0ID0gXCJcIjtcclxuICAgICAgbGV0IGNvbGxlY3RlZEltYWdlczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBldmVudCBvZiBzZW5kQ2hhdCh1cGRhdGVkTWVzc2FnZXMsIHJlZkltYWdlKSkge1xyXG4gICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0ZXh0X2RlbHRhXCI6XHJcbiAgICAgICAgICAgICAgYXNzaXN0YW50VGV4dCArPSBldmVudC5kYXRhLnRleHQgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgIHNldFN0cmVhbWluZ1RleHQoYXNzaXN0YW50VGV4dCk7XHJcbiAgICAgICAgICAgICAgc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJ0b29sX3N0YXJ0XCI6XHJcbiAgICAgICAgICAgICAgc2V0U3RhdHVzVGV4dChldmVudC5kYXRhLm1lc3NhZ2UgYXMgc3RyaW5nKTtcclxuICAgICAgICAgICAgICBzY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcImltYWdlX3Jlc3VsdFwiOlxyXG4gICAgICAgICAgICAgIGNvbGxlY3RlZEltYWdlcyA9IFtcclxuICAgICAgICAgICAgICAgIC4uLmNvbGxlY3RlZEltYWdlcyxcclxuICAgICAgICAgICAgICAgIC4uLihldmVudC5kYXRhLmltYWdlcyBhcyBzdHJpbmdbXSksXHJcbiAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICBzZXRTdHJlYW1pbmdJbWFnZXMoY29sbGVjdGVkSW1hZ2VzKTtcclxuICAgICAgICAgICAgICBzZXRTdGF0dXNUZXh0KFwiXCIpO1xyXG4gICAgICAgICAgICAgIHNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwiZXJyb3JcIjpcclxuICAgICAgICAgICAgICBhc3Npc3RhbnRUZXh0ICs9IGBcXG5cXG5b6ZSZ6K+vOiAke2V2ZW50LmRhdGEubWVzc2FnZX1dYDtcclxuICAgICAgICAgICAgICBzZXRTdHJlYW1pbmdUZXh0KGFzc2lzdGFudFRleHQpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcImRvbmVcIjpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBhc3Npc3RhbnRUZXh0ICs9IGBcXG5cXG5b6K+35rGC5aSx6LSlOiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFwi5pyq55+l6ZSZ6K+vXCJ9XWA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWujOaIkO+8muWwhua1geW8j+WGheWuueWQiOW5tuS4uuato+W8j+a2iOaBr1xyXG4gICAgICBjb25zdCBhc3Npc3RhbnRNZXNzYWdlOiBNZXNzYWdlID0ge1xyXG4gICAgICAgIHJvbGU6IFwiYXNzaXN0YW50XCIsXHJcbiAgICAgICAgY29udGVudDogYXNzaXN0YW50VGV4dCB8fCBcIu+8iOeUn+aIkOWujOaIkO+8iVwiLFxyXG4gICAgICAgIGltYWdlczogY29sbGVjdGVkSW1hZ2VzLmxlbmd0aCA+IDAgPyBjb2xsZWN0ZWRJbWFnZXMgOiB1bmRlZmluZWQsXHJcbiAgICAgIH07XHJcbiAgICAgIHNldE1lc3NhZ2VzKFsuLi51cGRhdGVkTWVzc2FnZXMsIGFzc2lzdGFudE1lc3NhZ2VdKTtcclxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcclxuICAgICAgc2V0U3RyZWFtaW5nVGV4dChcIlwiKTtcclxuICAgICAgc2V0U3RyZWFtaW5nSW1hZ2VzKFtdKTtcclxuICAgICAgc2V0U3RhdHVzVGV4dChcIlwiKTtcclxuICAgICAgc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgIH0sXHJcbiAgICBbbWVzc2FnZXNdXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1zY3JlZW4gZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICB7Lyog5qCH6aKY5qCPICovfVxyXG4gICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cImZsZXgtc2hyaW5rLTAgYm9yZGVyLWIgYm9yZGVyLVt2YXIoLS1ib3JkZXIpXSBiZy1bdmFyKC0tYmctc2Vjb25kYXJ5KV0gcHgtNiBweS0zXCI+XHJcbiAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZFwiPkFydCBBZ2VudDwvaDE+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LVt2YXIoLS10ZXh0LXNlY29uZGFyeSldXCI+XHJcbiAgICAgICAgICBBSSDnvo7mnK/otYTmupDnlJ/miJDliqnmiYsgwrcgTVZQXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L2hlYWRlcj5cclxuXHJcbiAgICAgIHsvKiDmtojmga/ljLrln58gKi99XHJcbiAgICAgIDxkaXYgcmVmPXtzY3JvbGxSZWZ9IGNsYXNzTmFtZT1cImZsZXgtMSBvdmVyZmxvdy15LWF1dG9cIj5cclxuICAgICAgICB7bWVzc2FnZXMubGVuZ3RoID09PSAwICYmICFpc0xvYWRpbmcgPyAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHNwYWNlLXktM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC00eGxcIj7wn46oPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1tZWRpdW0gdGV4dC1bdmFyKC0tdGV4dC1wcmltYXJ5KV1cIj5cclxuICAgICAgICAgICAgICAgIOasoui/juS9v+eUqCBBcnQgQWdlbnRcclxuICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1bdmFyKC0tdGV4dC1zZWNvbmRhcnkpXSBtYXgtdy1tZFwiPlxyXG4gICAgICAgICAgICAgICAg5o+P6L+w5L2g5oOz6KaB55qE576O5pyv6LWE5rqQ77yM5oiR5p2l5biu5L2g55Sf5oiQ44CCXHJcbiAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgIOS9oOWPr+S7peS4iuS8oOWPguiAg+WbvuadpeW8leWvvOmjjuagvOaWueWQkeOAglxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC13cmFwIGp1c3RpZnktY2VudGVyIGdhcC0yIG10LTRcIj5cclxuICAgICAgICAgICAgICAgIHtbXHJcbiAgICAgICAgICAgICAgICAgIFwi55S75LiA5Liq6LWb5Y2a5pyL5YWL6aOO5qC855qE6YCA5Ye65oyJ6ZKuXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwi6K6+6K6h5LiA5Liq5Y2h6YCa6aOO5qC855qE6YeR5biB5Zu+5qCHXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwi55S75LiA5Liq5aWH5bm76aOO5qC855qE5ri45oiP6KeS6Imy56uL57uYXCIsXHJcbiAgICAgICAgICAgICAgICBdLm1hcCgoaGludCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAga2V5PXtoaW50fVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbmQoaGludCwgbnVsbCl9XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBweC0zIHB5LTEuNSByb3VuZGVkLWZ1bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciBib3JkZXItW3ZhcigtLWJvcmRlcildIHRleHQtW3ZhcigtLXRleHQtc2Vjb25kYXJ5KV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyOmJvcmRlci1bdmFyKC0tYWNjZW50KV0gaG92ZXI6dGV4dC1bdmFyKC0tYWNjZW50KV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtoaW50fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8Q2hhdE1lc3NhZ2VzXHJcbiAgICAgICAgICAgIG1lc3NhZ2VzPXttZXNzYWdlc31cclxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XHJcbiAgICAgICAgICAgIHN0cmVhbWluZ1RleHQ9e3N0cmVhbWluZ1RleHR9XHJcbiAgICAgICAgICAgIHN0cmVhbWluZ0ltYWdlcz17c3RyZWFtaW5nSW1hZ2VzfVxyXG4gICAgICAgICAgICBzdGF0dXNUZXh0PXtzdGF0dXNUZXh0fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIHsvKiDovpPlhaXljLrln58gKi99XHJcbiAgICAgIDxDaGF0SW5wdXQgb25TZW5kPXtoYW5kbGVTZW5kfSBkaXNhYmxlZD17aXNMb2FkaW5nfSAvPlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG4iXSwibmFtZXMiOlsidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoYXRNZXNzYWdlcyIsIkNoYXRJbnB1dCIsInNlbmRDaGF0IiwiSG9tZSIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJzdHJlYW1pbmdUZXh0Iiwic2V0U3RyZWFtaW5nVGV4dCIsInN0cmVhbWluZ0ltYWdlcyIsInNldFN0cmVhbWluZ0ltYWdlcyIsInN0YXR1c1RleHQiLCJzZXRTdGF0dXNUZXh0Iiwic2Nyb2xsUmVmIiwic2Nyb2xsVG9Cb3R0b20iLCJzZXRUaW1lb3V0IiwiY3VycmVudCIsInNjcm9sbFRvIiwidG9wIiwic2Nyb2xsSGVpZ2h0IiwiYmVoYXZpb3IiLCJoYW5kbGVTZW5kIiwidGV4dCIsInJlZkltYWdlIiwidXNlck1lc3NhZ2UiLCJyb2xlIiwiY29udGVudCIsInVwZGF0ZWRNZXNzYWdlcyIsImFzc2lzdGFudFRleHQiLCJjb2xsZWN0ZWRJbWFnZXMiLCJldmVudCIsInR5cGUiLCJkYXRhIiwibWVzc2FnZSIsImltYWdlcyIsImUiLCJFcnJvciIsImFzc2lzdGFudE1lc3NhZ2UiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJkaXYiLCJjbGFzc05hbWUiLCJoZWFkZXIiLCJoMSIsInAiLCJyZWYiLCJoMiIsImJyIiwibWFwIiwiaGludCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJvblNlbmQiLCJkaXNhYmxlZCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/page.tsx\n"));
/***/ }),
/***/ "(app-pages-browser)/./src/components/chat/chat-input.tsx":
/*!********************************************!*\
!*** ./src/components/chat/chat-input.tsx ***!
\********************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ChatInput: () => (/* binding */ ChatInput)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* __next_internal_client_entry_do_not_use__ ChatInput auto */ \nvar _s = $RefreshSig$();\n\nfunction ChatInput(param) {\n let { onSend, disabled } = param;\n _s();\n const [text, setText] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [refImage, setRefImage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [previewUrl, setPreviewUrl] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const fileInputRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const handleSubmit = ()=>{\n const trimmed = text.trim();\n if (!trimmed || disabled) return;\n onSend(trimmed, refImage);\n setText(\"\");\n setRefImage(null);\n setPreviewUrl(null);\n };\n const handleKeyDown = (e)=>{\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n const handleFileChange = (e)=>{\n var _e_target_files;\n const file = (_e_target_files = e.target.files) === null || _e_target_files === void 0 ? void 0 : _e_target_files[0];\n if (!file) return;\n setRefImage(file);\n setPreviewUrl(URL.createObjectURL(file));\n };\n const removeRefImage = ()=>{\n setRefImage(null);\n if (previewUrl) URL.revokeObjectURL(previewUrl);\n setPreviewUrl(null);\n if (fileInputRef.current) fileInputRef.current.value = \"\";\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-t border-[var(--border)] bg-[var(--bg-secondary)] px-4 py-3\",\n children: [\n previewUrl && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-3 flex items-start gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: previewUrl,\n alt: \"参考图\",\n className: \"w-16 h-16 rounded-lg object-cover border border-[var(--border)]\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: removeRefImage,\n className: \"absolute -top-1.5 -right-1.5 w-5 h-5 rounded-full bg-red-500 text-white text-xs flex items-center justify-center hover:bg-red-600 cursor-pointer\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 57,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 51,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-[var(--text-secondary)] mt-1\",\n children: \"参考图已添加\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 66,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n var _fileInputRef_current;\n return (_fileInputRef_current = fileInputRef.current) === null || _fileInputRef_current === void 0 ? void 0 : _fileInputRef_current.click();\n },\n disabled: disabled,\n className: \"flex-shrink-0 w-10 h-10 rounded-lg border border-[var(--border)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:border-[var(--accent)] flex items-center justify-center transition-colors disabled:opacity-50 cursor-pointer\",\n title: \"上传参考图\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"rect\", {\n x: \"3\",\n y: \"3\",\n width: \"18\",\n height: \"18\",\n rx: \"2\",\n ry: \"2\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 83,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"8.5\",\n cy: \"8.5\",\n r: \"1.5\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 84,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"polyline\", {\n points: \"21 15 16 10 5 21\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 82,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 72,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n ref: fileInputRef,\n type: \"file\",\n accept: \"image/*\",\n onChange: handleFileChange,\n className: \"hidden\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 88,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"textarea\", {\n value: text,\n onChange: (e)=>setText(e.target.value),\n onKeyDown: handleKeyDown,\n placeholder: \"描述你想要的美术资源...\",\n disabled: disabled,\n rows: 1,\n className: \"flex-1 resize-none rounded-lg border border-[var(--border)] bg-[var(--bg-tertiary)] text-[var(--text-primary)] placeholder:text-[var(--text-secondary)] px-4 py-2.5 text-sm leading-relaxed focus:outline-none focus:border-[var(--accent)] disabled:opacity-50 transition-colors min-h-[42px] max-h-[120px]\",\n style: {\n fieldSizing: \"content\"\n }\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 97,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleSubmit,\n disabled: disabled || !text.trim(),\n className: \"flex-shrink-0 w-10 h-10 rounded-lg bg-[var(--accent)] text-white hover:bg-[var(--accent-hover)] flex items-center justify-center transition-colors disabled:opacity-50 cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 125,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 124,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 115,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 70,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 47,\n columnNumber: 5\n }, this);\n}\n_s(ChatInput, \"c7/eLIcDNJSIlPr8pQPtixuqF1k=\");\n_c = ChatInput;\nvar _c;\n$RefreshReg$(_c, \"ChatInput\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL2NoYXQvY2hhdC1pbnB1dC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRTZEO0FBT3RELFNBQVNFLFVBQVUsS0FBb0M7UUFBcEMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQWtCLEdBQXBDOztJQUN4QixNQUFNLENBQUNDLE1BQU1DLFFBQVEsR0FBR0wsK0NBQVFBLENBQUM7SUFDakMsTUFBTSxDQUFDTSxVQUFVQyxZQUFZLEdBQUdQLCtDQUFRQSxDQUFjO0lBQ3RELE1BQU0sQ0FBQ1EsWUFBWUMsY0FBYyxHQUFHVCwrQ0FBUUEsQ0FBZ0I7SUFDNUQsTUFBTVUsZUFBZVgsNkNBQU1BLENBQW1CO0lBRTlDLE1BQU1ZLGVBQWU7UUFDbkIsTUFBTUMsVUFBVVIsS0FBS1MsSUFBSTtRQUN6QixJQUFJLENBQUNELFdBQVdULFVBQVU7UUFDMUJELE9BQU9VLFNBQVNOO1FBQ2hCRCxRQUFRO1FBQ1JFLFlBQVk7UUFDWkUsY0FBYztJQUNoQjtJQUVBLE1BQU1LLGdCQUFnQixDQUFDQztRQUNyQixJQUFJQSxFQUFFQyxHQUFHLEtBQUssV0FBVyxDQUFDRCxFQUFFRSxRQUFRLEVBQUU7WUFDcENGLEVBQUVHLGNBQWM7WUFDaEJQO1FBQ0Y7SUFDRjtJQUVBLE1BQU1RLG1CQUFtQixDQUFDSjtZQUNYQTtRQUFiLE1BQU1LLFFBQU9MLGtCQUFBQSxFQUFFTSxNQUFNLENBQUNDLEtBQUssY0FBZFAsc0NBQUFBLGVBQWdCLENBQUMsRUFBRTtRQUNoQyxJQUFJLENBQUNLLE1BQU07UUFDWGIsWUFBWWE7UUFDWlgsY0FBY2MsSUFBSUMsZUFBZSxDQUFDSjtJQUNwQztJQUVBLE1BQU1LLGlCQUFpQjtRQUNyQmxCLFlBQVk7UUFDWixJQUFJQyxZQUFZZSxJQUFJRyxlQUFlLENBQUNsQjtRQUNwQ0MsY0FBYztRQUNkLElBQUlDLGFBQWFpQixPQUFPLEVBQUVqQixhQUFhaUIsT0FBTyxDQUFDQyxLQUFLLEdBQUc7SUFDekQ7SUFFQSxxQkFDRSw4REFBQ0M7UUFBSUMsV0FBVTs7WUFFWnRCLDRCQUNDLDhEQUFDcUI7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDRDt3QkFBSUMsV0FBVTs7MENBQ2IsOERBQUNDO2dDQUNDQyxLQUFLeEI7Z0NBQ0x5QixLQUFJO2dDQUNKSCxXQUFVOzs7Ozs7MENBRVosOERBQUNJO2dDQUNDQyxTQUFTVjtnQ0FDVEssV0FBVTswQ0FHWDs7Ozs7Ozs7Ozs7O2tDQUlILDhEQUFDTTt3QkFBS04sV0FBVTtrQ0FBNEM7Ozs7Ozs7Ozs7OzswQkFJaEUsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FFYiw4REFBQ0k7d0JBQ0NDLFNBQVM7Z0NBQU16QjtvQ0FBQUEsd0JBQUFBLGFBQWFpQixPQUFPLGNBQXBCakIsNENBQUFBLHNCQUFzQjJCLEtBQUs7O3dCQUMxQ2xDLFVBQVVBO3dCQUNWMkIsV0FBVTt3QkFLVlEsT0FBTTtrQ0FFTiw0RUFBQ0M7NEJBQUlDLE9BQU07NEJBQUtDLFFBQU87NEJBQUtDLFNBQVE7NEJBQVlDLE1BQUs7NEJBQU9DLFFBQU87NEJBQWVDLGFBQVk7OzhDQUM1Riw4REFBQ0M7b0NBQUtDLEdBQUU7b0NBQUlDLEdBQUU7b0NBQUlSLE9BQU07b0NBQUtDLFFBQU87b0NBQUtRLElBQUc7b0NBQUlDLElBQUc7Ozs7Ozs4Q0FDbkQsOERBQUNDO29DQUFPQyxJQUFHO29DQUFNQyxJQUFHO29DQUFNQyxHQUFFOzs7Ozs7OENBQzVCLDhEQUFDQztvQ0FBU0MsUUFBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBR3JCLDhEQUFDQzt3QkFDQ0MsS0FBS2hEO3dCQUNMaUQsTUFBSzt3QkFDTEMsUUFBTzt3QkFDUEMsVUFBVTFDO3dCQUNWVyxXQUFVOzs7Ozs7a0NBSVosOERBQUNnQzt3QkFDQ2xDLE9BQU94Qjt3QkFDUHlELFVBQVUsQ0FBQzlDLElBQU1WLFFBQVFVLEVBQUVNLE1BQU0sQ0FBQ08sS0FBSzt3QkFDdkNtQyxXQUFXakQ7d0JBQ1hrRCxhQUFZO3dCQUNaN0QsVUFBVUE7d0JBQ1Y4RCxNQUFNO3dCQUNObkMsV0FBVTt3QkFPVm9DLE9BQU87NEJBQUVDLGFBQWE7d0JBQVU7Ozs7OztrQ0FJbEMsOERBQUNqQzt3QkFDQ0MsU0FBU3hCO3dCQUNUUixVQUFVQSxZQUFZLENBQUNDLEtBQUtTLElBQUk7d0JBQ2hDaUIsV0FBVTtrQ0FNViw0RUFBQ1M7NEJBQUlDLE9BQU07NEJBQUtDLFFBQU87NEJBQUtDLFNBQVE7NEJBQVlDLE1BQUs7c0NBQ25ELDRFQUFDeUI7Z0NBQUtDLEdBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNcEI7R0F6SGdCcEU7S0FBQUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxzcmNcXGNvbXBvbmVudHNcXGNoYXRcXGNoYXQtaW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xyXG5cclxuaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSwgdHlwZSBLZXlib2FyZEV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbnRlcmZhY2UgQ2hhdElucHV0UHJvcHMge1xyXG4gIG9uU2VuZDogKHRleHQ6IHN0cmluZywgcmVmSW1hZ2U6IEZpbGUgfCBudWxsKSA9PiB2b2lkO1xyXG4gIGRpc2FibGVkOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ2hhdElucHV0KHsgb25TZW5kLCBkaXNhYmxlZCB9OiBDaGF0SW5wdXRQcm9wcykge1xyXG4gIGNvbnN0IFt0ZXh0LCBzZXRUZXh0XSA9IHVzZVN0YXRlKFwiXCIpO1xyXG4gIGNvbnN0IFtyZWZJbWFnZSwgc2V0UmVmSW1hZ2VdID0gdXNlU3RhdGU8RmlsZSB8IG51bGw+KG51bGwpO1xyXG4gIGNvbnN0IFtwcmV2aWV3VXJsLCBzZXRQcmV2aWV3VXJsXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcclxuXHJcbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKCkgPT4ge1xyXG4gICAgY29uc3QgdHJpbW1lZCA9IHRleHQudHJpbSgpO1xyXG4gICAgaWYgKCF0cmltbWVkIHx8IGRpc2FibGVkKSByZXR1cm47XHJcbiAgICBvblNlbmQodHJpbW1lZCwgcmVmSW1hZ2UpO1xyXG4gICAgc2V0VGV4dChcIlwiKTtcclxuICAgIHNldFJlZkltYWdlKG51bGwpO1xyXG4gICAgc2V0UHJldmlld1VybChudWxsKTtcclxuICB9O1xyXG5cclxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgIGlmIChlLmtleSA9PT0gXCJFbnRlclwiICYmICFlLnNoaWZ0S2V5KSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgaGFuZGxlU3VibWl0KCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlRmlsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IGUudGFyZ2V0LmZpbGVzPy5bMF07XHJcbiAgICBpZiAoIWZpbGUpIHJldHVybjtcclxuICAgIHNldFJlZkltYWdlKGZpbGUpO1xyXG4gICAgc2V0UHJldmlld1VybChVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKTtcclxuICB9O1xyXG5cclxuICBjb25zdCByZW1vdmVSZWZJbWFnZSA9ICgpID0+IHtcclxuICAgIHNldFJlZkltYWdlKG51bGwpO1xyXG4gICAgaWYgKHByZXZpZXdVcmwpIFVSTC5yZXZva2VPYmplY3RVUkwocHJldmlld1VybCk7XHJcbiAgICBzZXRQcmV2aWV3VXJsKG51bGwpO1xyXG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9IFwiXCI7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLXQgYm9yZGVyLVt2YXIoLS1ib3JkZXIpXSBiZy1bdmFyKC0tYmctc2Vjb25kYXJ5KV0gcHgtNCBweS0zXCI+XHJcbiAgICAgIHsvKiDlj4LogIPlm77pooTop4ggKi99XHJcbiAgICAgIHtwcmV2aWV3VXJsICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTMgZmxleCBpdGVtcy1zdGFydCBnYXAtMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgc3JjPXtwcmV2aWV3VXJsfVxyXG4gICAgICAgICAgICAgIGFsdD1cIuWPguiAg+WbvlwiXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xNiBoLTE2IHJvdW5kZWQtbGcgb2JqZWN0LWNvdmVyIGJvcmRlciBib3JkZXItW3ZhcigtLWJvcmRlcildXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3JlbW92ZVJlZkltYWdlfVxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIC10b3AtMS41IC1yaWdodC0xLjUgdy01IGgtNSByb3VuZGVkLWZ1bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGJnLXJlZC01MDAgdGV4dC13aGl0ZSB0ZXh0LXhzIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcjpiZy1yZWQtNjAwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIMOXXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtW3ZhcigtLXRleHQtc2Vjb25kYXJ5KV0gbXQtMVwiPuWPguiAg+WbvuW3sua3u+WKoDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKX1cclxuXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1lbmQgZ2FwLTJcIj5cclxuICAgICAgICB7Lyog5LiK5Lyg5Y+C6ICD5Zu+5oyJ6ZKuICovfVxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpfVxyXG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxyXG4gICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC1zaHJpbmstMCB3LTEwIGgtMTAgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVt2YXIoLS1ib3JkZXIpXVxyXG4gICAgICAgICAgICAgICAgICAgICBiZy1bdmFyKC0tYmctdGVydGlhcnkpXSB0ZXh0LVt2YXIoLS10ZXh0LXNlY29uZGFyeSldXHJcbiAgICAgICAgICAgICAgICAgICAgIGhvdmVyOnRleHQtW3ZhcigtLXRleHQtcHJpbWFyeSldIGhvdmVyOmJvcmRlci1bdmFyKC0tYWNjZW50KV1cclxuICAgICAgICAgICAgICAgICAgICAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcclxuICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6b3BhY2l0eS01MCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICB0aXRsZT1cIuS4iuS8oOWPguiAg+WbvlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjJcIj5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiM1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHJ4PVwiMlwiIHJ5PVwiMlwiIC8+XHJcbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI4LjVcIiBjeT1cIjguNVwiIHI9XCIxLjVcIiAvPlxyXG4gICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPVwiMjEgMTUgMTYgMTAgNSAyMVwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxyXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKlwiXHJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZUNoYW5nZX1cclxuICAgICAgICAgIGNsYXNzTmFtZT1cImhpZGRlblwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgey8qIOaWh+Wtl+i+k+WFpeahhiAqL31cclxuICAgICAgICA8dGV4dGFyZWFcclxuICAgICAgICAgIHZhbHVlPXt0ZXh0fVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRUZXh0KGUudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwi5o+P6L+w5L2g5oOz6KaB55qE576O5pyv6LWE5rqQLi4uXCJcclxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cclxuICAgICAgICAgIHJvd3M9ezF9XHJcbiAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgcmVzaXplLW5vbmUgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVt2YXIoLS1ib3JkZXIpXVxyXG4gICAgICAgICAgICAgICAgICAgICBiZy1bdmFyKC0tYmctdGVydGlhcnkpXSB0ZXh0LVt2YXIoLS10ZXh0LXByaW1hcnkpXVxyXG4gICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjp0ZXh0LVt2YXIoLS10ZXh0LXNlY29uZGFyeSldXHJcbiAgICAgICAgICAgICAgICAgICAgIHB4LTQgcHktMi41IHRleHQtc20gbGVhZGluZy1yZWxheGVkXHJcbiAgICAgICAgICAgICAgICAgICAgIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpib3JkZXItW3ZhcigtLWFjY2VudCldXHJcbiAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOm9wYWNpdHktNTAgdHJhbnNpdGlvbi1jb2xvcnNcclxuICAgICAgICAgICAgICAgICAgICAgbWluLWgtWzQycHhdIG1heC1oLVsxMjBweF1cIlxyXG4gICAgICAgICAgc3R5bGU9e3sgZmllbGRTaXppbmc6IFwiY29udGVudFwiIH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllc31cclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICB7Lyog5Y+R6YCB5oyJ6ZKuICovfVxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVN1Ym1pdH1cclxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZCB8fCAhdGV4dC50cmltKCl9XHJcbiAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wIHctMTAgaC0xMCByb3VuZGVkLWxnXHJcbiAgICAgICAgICAgICAgICAgICAgIGJnLVt2YXIoLS1hY2NlbnQpXSB0ZXh0LXdoaXRlXHJcbiAgICAgICAgICAgICAgICAgICAgIGhvdmVyOmJnLVt2YXIoLS1hY2NlbnQtaG92ZXIpXVxyXG4gICAgICAgICAgICAgICAgICAgICBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9yc1xyXG4gICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDpvcGFjaXR5LTUwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi4wMSAyMUwyMyAxMiAyLjAxIDMgMiAxMGwxNSAyLTE1IDJ6XCIgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuIl0sIm5hbWVzIjpbInVzZVJlZiIsInVzZVN0YXRlIiwiQ2hhdElucHV0Iiwib25TZW5kIiwiZGlzYWJsZWQiLCJ0ZXh0Iiwic2V0VGV4dCIsInJlZkltYWdlIiwic2V0UmVmSW1hZ2UiLCJwcmV2aWV3VXJsIiwic2V0UHJldmlld1VybCIsImZpbGVJbnB1dFJlZiIsImhhbmRsZVN1Ym1pdCIsInRyaW1tZWQiLCJ0cmltIiwiaGFuZGxlS2V5RG93biIsImUiLCJrZXkiLCJzaGlmdEtleSIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlRmlsZUNoYW5nZSIsImZpbGUiLCJ0YXJnZXQiLCJmaWxlcyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsInJlbW92ZVJlZkltYWdlIiwicmV2b2tlT2JqZWN0VVJMIiwiY3VycmVudCIsInZhbHVlIiwiZGl2IiwiY2xhc3NOYW1lIiwiaW1nIiwic3JjIiwiYWx0IiwiYnV0dG9uIiwib25DbGljayIsInNwYW4iLCJjbGljayIsInRpdGxlIiwic3ZnIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwicmVjdCIsIngiLCJ5IiwicngiLCJyeSIsImNpcmNsZSIsImN4IiwiY3kiLCJyIiwicG9seWxpbmUiLCJwb2ludHMiLCJpbnB1dCIsInJlZiIsInR5cGUiLCJhY2NlcHQiLCJvbkNoYW5nZSIsInRleHRhcmVhIiwib25LZXlEb3duIiwicGxhY2Vob2xkZXIiLCJyb3dzIiwic3R5bGUiLCJmaWVsZFNpemluZyIsInBhdGgiLCJkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/chat/chat-input.tsx\n"));
/***/ }),
/***/ "(app-pages-browser)/./src/components/chat/chat-messages.tsx":
/*!***********************************************!*\
!*** ./src/components/chat/chat-messages.tsx ***!
\***********************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ChatMessages: () => (/* binding */ ChatMessages)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var _image_grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./image-grid */ \"(app-pages-browser)/./src/components/chat/image-grid.tsx\");\n/* __next_internal_client_entry_do_not_use__ ChatMessages auto */ \n\nfunction ChatMessages(param) {\n let { messages, isLoading, streamingText, streamingImages, statusText } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto px-4 py-6 space-y-6\",\n children: [\n messages.map((msg, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex \".concat(msg.role === \"user\" ? \"justify-end\" : \"justify-start\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-[80%] rounded-2xl px-4 py-3 \".concat(msg.role === \"user\" ? \"bg-[var(--accent)] text-white\" : \"bg-[var(--bg-tertiary)] text-[var(--text-primary)]\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"whitespace-pre-wrap text-sm leading-relaxed\",\n children: msg.content\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 33,\n columnNumber: 13\n }, this),\n msg.images && msg.images.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_image_grid__WEBPACK_IMPORTED_MODULE_1__.ImageGrid, {\n images: msg.images\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 34,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 26,\n columnNumber: 11\n }, this)\n }, i, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 25,\n columnNumber: 9\n }, this)),\n isLoading && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-start\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-[80%] rounded-2xl px-4 py-3 bg-[var(--bg-tertiary)]\",\n children: [\n statusText && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-[var(--accent)] mb-2 flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-block w-2 h-2 rounded-full bg-[var(--accent)] animate-pulse\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 45,\n columnNumber: 17\n }, this),\n statusText\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 44,\n columnNumber: 15\n }, this),\n streamingText && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"whitespace-pre-wrap text-sm leading-relaxed\",\n children: streamingText\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 50,\n columnNumber: 15\n }, this),\n streamingImages.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_image_grid__WEBPACK_IMPORTED_MODULE_1__.ImageGrid, {\n images: streamingImages\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 52,\n columnNumber: 44\n }, this),\n !streamingText && !statusText && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-[var(--text-secondary)] animate-bounce\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 55,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-[var(--text-secondary)] animate-bounce [animation-delay:0.1s]\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 56,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-[var(--text-secondary)] animate-bounce [animation-delay:0.2s]\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 57,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 54,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 42,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 41,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 22,\n columnNumber: 5\n }, this);\n}\n_c = ChatMessages;\nvar _c;\n$RefreshReg$(_c, \"ChatMessages\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL2NoYXQvY2hhdC1tZXNzYWdlcy50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUd5QztBQVVsQyxTQUFTQyxhQUFhLEtBTVQ7UUFOUyxFQUMzQkMsUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLGFBQWEsRUFDYkMsZUFBZSxFQUNmQyxVQUFVLEVBQ1EsR0FOUztJQU8zQixxQkFDRSw4REFBQ0M7UUFBSUMsV0FBVTs7WUFFWk4sU0FBU08sR0FBRyxDQUFDLENBQUNDLEtBQUtDLGtCQUNsQiw4REFBQ0o7b0JBQVlDLFdBQVcsUUFBOEQsT0FBdERFLElBQUlFLElBQUksS0FBSyxTQUFTLGdCQUFnQjs4QkFDcEUsNEVBQUNMO3dCQUNDQyxXQUFXLHFDQUlWLE9BSENFLElBQUlFLElBQUksS0FBSyxTQUNULGtDQUNBOzswQ0FHTiw4REFBQ0w7Z0NBQUlDLFdBQVU7MENBQStDRSxJQUFJRyxPQUFPOzs7Ozs7NEJBQ3hFSCxJQUFJSSxNQUFNLElBQUlKLElBQUlJLE1BQU0sQ0FBQ0MsTUFBTSxHQUFHLG1CQUFLLDhEQUFDZixrREFBU0E7Z0NBQUNjLFFBQVFKLElBQUlJLE1BQU07Ozs7Ozs7Ozs7OzttQkFUL0RIOzs7OztZQWVYUiwyQkFDQyw4REFBQ0k7Z0JBQUlDLFdBQVU7MEJBQ2IsNEVBQUNEO29CQUFJQyxXQUFVOzt3QkFDWkYsNEJBQ0MsOERBQUNDOzRCQUFJQyxXQUFVOzs4Q0FDYiw4REFBQ1E7b0NBQUtSLFdBQVU7Ozs7OztnQ0FDZkY7Ozs7Ozs7d0JBR0pGLCtCQUNDLDhEQUFDRzs0QkFBSUMsV0FBVTtzQ0FBK0NKOzs7Ozs7d0JBRS9EQyxnQkFBZ0JVLE1BQU0sR0FBRyxtQkFBSyw4REFBQ2Ysa0RBQVNBOzRCQUFDYyxRQUFRVDs7Ozs7O3dCQUNqRCxDQUFDRCxpQkFBaUIsQ0FBQ0UsNEJBQ2xCLDhEQUFDQzs0QkFBSUMsV0FBVTs7OENBQ2IsOERBQUNRO29DQUFLUixXQUFVOzs7Ozs7OENBQ2hCLDhEQUFDUTtvQ0FBS1IsV0FBVTs7Ozs7OzhDQUNoQiw4REFBQ1E7b0NBQUtSLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWhDO0tBbkRnQlAiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxzcmNcXGNvbXBvbmVudHNcXGNoYXRcXGNoYXQtbWVzc2FnZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSBcIkAvbGliL2FwaVwiO1xyXG5pbXBvcnQgeyBJbWFnZUdyaWQgfSBmcm9tIFwiLi9pbWFnZS1ncmlkXCI7XHJcblxyXG5pbnRlcmZhY2UgQ2hhdE1lc3NhZ2VzUHJvcHMge1xyXG4gIG1lc3NhZ2VzOiBNZXNzYWdlW107XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xyXG4gIHN0cmVhbWluZ1RleHQ6IHN0cmluZztcclxuICBzdHJlYW1pbmdJbWFnZXM6IHN0cmluZ1tdO1xyXG4gIHN0YXR1c1RleHQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENoYXRNZXNzYWdlcyh7XHJcbiAgbWVzc2FnZXMsXHJcbiAgaXNMb2FkaW5nLFxyXG4gIHN0cmVhbWluZ1RleHQsXHJcbiAgc3RyZWFtaW5nSW1hZ2VzLFxyXG4gIHN0YXR1c1RleHQsXHJcbn06IENoYXRNZXNzYWdlc1Byb3BzKSB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0byBweC00IHB5LTYgc3BhY2UteS02XCI+XHJcbiAgICAgIHsvKiDljoblj7Lmtojmga8gKi99XHJcbiAgICAgIHttZXNzYWdlcy5tYXAoKG1zZywgaSkgPT4gKFxyXG4gICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9e2BmbGV4ICR7bXNnLnJvbGUgPT09IFwidXNlclwiID8gXCJqdXN0aWZ5LWVuZFwiIDogXCJqdXN0aWZ5LXN0YXJ0XCJ9YH0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YG1heC13LVs4MCVdIHJvdW5kZWQtMnhsIHB4LTQgcHktMyAke1xyXG4gICAgICAgICAgICAgIG1zZy5yb2xlID09PSBcInVzZXJcIlxyXG4gICAgICAgICAgICAgICAgPyBcImJnLVt2YXIoLS1hY2NlbnQpXSB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICAgIDogXCJiZy1bdmFyKC0tYmctdGVydGlhcnkpXSB0ZXh0LVt2YXIoLS10ZXh0LXByaW1hcnkpXVwiXHJcbiAgICAgICAgICAgIH1gfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndoaXRlc3BhY2UtcHJlLXdyYXAgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWRcIj57bXNnLmNvbnRlbnR9PC9kaXY+XHJcbiAgICAgICAgICAgIHttc2cuaW1hZ2VzICYmIG1zZy5pbWFnZXMubGVuZ3RoID4gMCAmJiA8SW1hZ2VHcmlkIGltYWdlcz17bXNnLmltYWdlc30gLz59XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKSl9XHJcblxyXG4gICAgICB7Lyog5q2j5Zyo55Sf5oiQ55qE5raI5oGvICovfVxyXG4gICAgICB7aXNMb2FkaW5nICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1zdGFydFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy1bODAlXSByb3VuZGVkLTJ4bCBweC00IHB5LTMgYmctW3ZhcigtLWJnLXRlcnRpYXJ5KV1cIj5cclxuICAgICAgICAgICAge3N0YXR1c1RleHQgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LVt2YXIoLS1hY2NlbnQpXSBtYi0yIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpbmxpbmUtYmxvY2sgdy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctW3ZhcigtLWFjY2VudCldIGFuaW1hdGUtcHVsc2VcIiAvPlxyXG4gICAgICAgICAgICAgICAge3N0YXR1c1RleHR9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIHtzdHJlYW1pbmdUZXh0ICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndoaXRlc3BhY2UtcHJlLXdyYXAgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWRcIj57c3RyZWFtaW5nVGV4dH08L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAge3N0cmVhbWluZ0ltYWdlcy5sZW5ndGggPiAwICYmIDxJbWFnZUdyaWQgaW1hZ2VzPXtzdHJlYW1pbmdJbWFnZXN9IC8+fVxyXG4gICAgICAgICAgICB7IXN0cmVhbWluZ1RleHQgJiYgIXN0YXR1c1RleHQgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctW3ZhcigtLXRleHQtc2Vjb25kYXJ5KV0gYW5pbWF0ZS1ib3VuY2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctW3ZhcigtLXRleHQtc2Vjb25kYXJ5KV0gYW5pbWF0ZS1ib3VuY2UgW2FuaW1hdGlvbi1kZWxheTowLjFzXVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ3LTIgaC0yIHJvdW5kZWQtZnVsbCBiZy1bdmFyKC0tdGV4dC1zZWNvbmRhcnkpXSBhbmltYXRlLWJvdW5jZSBbYW5pbWF0aW9uLWRlbGF5OjAuMnNdXCIgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG4iXSwibmFtZXMiOlsiSW1hZ2VHcmlkIiwiQ2hhdE1lc3NhZ2VzIiwibWVzc2FnZXMiLCJpc0xvYWRpbmciLCJzdHJlYW1pbmdUZXh0Iiwic3RyZWFtaW5nSW1hZ2VzIiwic3RhdHVzVGV4dCIsImRpdiIsImNsYXNzTmFtZSIsIm1hcCIsIm1zZyIsImkiLCJyb2xlIiwiY29udGVudCIsImltYWdlcyIsImxlbmd0aCIsInNwYW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/chat/chat-messages.tsx\n"));
/***/ }),
/***/ "(app-pages-browser)/./src/components/chat/image-grid.tsx":
/*!********************************************!*\
!*** ./src/components/chat/image-grid.tsx ***!
\********************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ImageGrid: () => (/* binding */ ImageGrid)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var _lib_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/api */ \"(app-pages-browser)/./src/lib/api.ts\");\n/* __next_internal_client_entry_do_not_use__ ImageGrid auto */ \n\nfunction ImageGrid(param) {\n let { images } = param;\n const handleDownload = async (imageUrl, index)=>{\n try {\n const fullUrl = (0,_lib_api__WEBPACK_IMPORTED_MODULE_1__.getImageUrl)(imageUrl);\n const response = await fetch(fullUrl);\n const blob = await response.blob();\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = \"art-agent-\".concat(Date.now(), \"-\").concat(index + 1, \".png\");\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n } catch (e) {\n alert(\"下载失败,请重试\");\n }\n };\n const gridCols = images.length === 1 ? \"grid-cols-1 max-w-md\" : images.length === 2 ? \"grid-cols-2 max-w-2xl\" : \"grid-cols-2 max-w-2xl\";\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid \".concat(gridCols, \" gap-3 my-3\"),\n children: images.map((img, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative rounded-lg overflow-hidden border border-[var(--border)]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: (0,_lib_api__WEBPACK_IMPORTED_MODULE_1__.getImageUrl)(img),\n alt: \"生成图片 \".concat(i + 1),\n className: \"w-full aspect-square object-cover\",\n loading: \"lazy\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\image-grid.tsx\",\n lineNumber: 39,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleDownload(img, i),\n className: \"absolute bottom-2 right-2 px-3 py-1.5 rounded-md bg-black/70 text-white text-sm opacity-0 group-hover:opacity-100 transition-opacity hover:bg-black/90 cursor-pointer\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\image-grid.tsx\",\n lineNumber: 45,\n columnNumber: 11\n }, this)\n ]\n }, i, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\image-grid.tsx\",\n lineNumber: 38,\n columnNumber: 9\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\image-grid.tsx\",\n lineNumber: 36,\n columnNumber: 5\n }, this);\n}\n_c = ImageGrid;\nvar _c;\n$RefreshReg$(_c, \"ImageGrid\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL2NoYXQvaW1hZ2UtZ3JpZC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUV3QztBQU1qQyxTQUFTQyxVQUFVLEtBQTBCO1FBQTFCLEVBQUVDLE1BQU0sRUFBa0IsR0FBMUI7SUFDeEIsTUFBTUMsaUJBQWlCLE9BQU9DLFVBQWtCQztRQUM5QyxJQUFJO1lBQ0YsTUFBTUMsVUFBVU4scURBQVdBLENBQUNJO1lBQzVCLE1BQU1HLFdBQVcsTUFBTUMsTUFBTUY7WUFDN0IsTUFBTUcsT0FBTyxNQUFNRixTQUFTRSxJQUFJO1lBQ2hDLE1BQU1DLE1BQU1DLE9BQU9DLEdBQUcsQ0FBQ0MsZUFBZSxDQUFDSjtZQUN2QyxNQUFNSyxJQUFJQyxTQUFTQyxhQUFhLENBQUM7WUFDakNGLEVBQUVHLElBQUksR0FBR1A7WUFDVEksRUFBRUksUUFBUSxHQUFHLGFBQTJCYixPQUFkYyxLQUFLQyxHQUFHLElBQUcsS0FBYSxPQUFWZixRQUFRLEdBQUU7WUFDbERVLFNBQVNNLElBQUksQ0FBQ0MsV0FBVyxDQUFDUjtZQUMxQkEsRUFBRVMsS0FBSztZQUNQUixTQUFTTSxJQUFJLENBQUNHLFdBQVcsQ0FBQ1Y7WUFDMUJILE9BQU9DLEdBQUcsQ0FBQ2EsZUFBZSxDQUFDZjtRQUM3QixFQUFFLFVBQU07WUFDTmdCLE1BQU07UUFDUjtJQUNGO0lBRUEsTUFBTUMsV0FDSnpCLE9BQU8wQixNQUFNLEtBQUssSUFDZCx5QkFDQTFCLE9BQU8wQixNQUFNLEtBQUssSUFDaEIsMEJBQ0E7SUFFUixxQkFDRSw4REFBQ0M7UUFBSUMsV0FBVyxRQUFpQixPQUFUSCxVQUFTO2tCQUM5QnpCLE9BQU82QixHQUFHLENBQUMsQ0FBQ0MsS0FBS0Msa0JBQ2hCLDhEQUFDSjtnQkFBWUMsV0FBVTs7a0NBQ3JCLDhEQUFDRTt3QkFDQ0UsS0FBS2xDLHFEQUFXQSxDQUFDZ0M7d0JBQ2pCRyxLQUFLLFFBQWMsT0FBTkYsSUFBSTt3QkFDakJILFdBQVU7d0JBQ1ZNLFNBQVE7Ozs7OztrQ0FFViw4REFBQ0M7d0JBQ0NDLFNBQVMsSUFBTW5DLGVBQWU2QixLQUFLQzt3QkFDbkNILFdBQVU7a0NBSVg7Ozs7Ozs7ZUFiT0c7Ozs7Ozs7Ozs7QUFvQmxCO0tBakRnQmhDIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcc3JjXFxjb21wb25lbnRzXFxjaGF0XFxpbWFnZS1ncmlkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcclxuXHJcbmltcG9ydCB7IGdldEltYWdlVXJsIH0gZnJvbSBcIkAvbGliL2FwaVwiO1xyXG5cclxuaW50ZXJmYWNlIEltYWdlR3JpZFByb3BzIHtcclxuICBpbWFnZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gSW1hZ2VHcmlkKHsgaW1hZ2VzIH06IEltYWdlR3JpZFByb3BzKSB7XHJcbiAgY29uc3QgaGFuZGxlRG93bmxvYWQgPSBhc3luYyAoaW1hZ2VVcmw6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZnVsbFVybCA9IGdldEltYWdlVXJsKGltYWdlVXJsKTtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChmdWxsVXJsKTtcclxuICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IHJlc3BvbnNlLmJsb2IoKTtcclxuICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgICAgYS5ocmVmID0gdXJsO1xyXG4gICAgICBhLmRvd25sb2FkID0gYGFydC1hZ2VudC0ke0RhdGUubm93KCl9LSR7aW5kZXggKyAxfS5wbmdgO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICBhLmNsaWNrKCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgYWxlcnQoXCLkuIvovb3lpLHotKXvvIzor7fph43or5VcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgZ3JpZENvbHMgPVxyXG4gICAgaW1hZ2VzLmxlbmd0aCA9PT0gMVxyXG4gICAgICA/IFwiZ3JpZC1jb2xzLTEgbWF4LXctbWRcIlxyXG4gICAgICA6IGltYWdlcy5sZW5ndGggPT09IDJcclxuICAgICAgICA/IFwiZ3JpZC1jb2xzLTIgbWF4LXctMnhsXCJcclxuICAgICAgICA6IFwiZ3JpZC1jb2xzLTIgbWF4LXctMnhsXCI7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT17YGdyaWQgJHtncmlkQ29sc30gZ2FwLTMgbXktM2B9PlxyXG4gICAgICB7aW1hZ2VzLm1hcCgoaW1nLCBpKSA9PiAoXHJcbiAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cImdyb3VwIHJlbGF0aXZlIHJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlciBib3JkZXItW3ZhcigtLWJvcmRlcildXCI+XHJcbiAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgIHNyYz17Z2V0SW1hZ2VVcmwoaW1nKX1cclxuICAgICAgICAgICAgYWx0PXtg55Sf5oiQ5Zu+54mHICR7aSArIDF9YH1cclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGFzcGVjdC1zcXVhcmUgb2JqZWN0LWNvdmVyXCJcclxuICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRG93bmxvYWQoaW1nLCBpKX1cclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTIgcmlnaHQtMiBweC0zIHB5LTEuNSByb3VuZGVkLW1kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgYmctYmxhY2svNzAgdGV4dC13aGl0ZSB0ZXh0LXNtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgIGhvdmVyOmJnLWJsYWNrLzkwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKSl9XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJnZXRJbWFnZVVybCIsIkltYWdlR3JpZCIsImltYWdlcyIsImhhbmRsZURvd25sb2FkIiwiaW1hZ2VVcmwiLCJpbmRleCIsImZ1bGxVcmwiLCJyZXNwb25zZSIsImZldGNoIiwiYmxvYiIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImEiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJocmVmIiwiZG93bmxvYWQiLCJEYXRlIiwibm93IiwiYm9keSIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJyZW1vdmVDaGlsZCIsInJldm9rZU9iamVjdFVSTCIsImFsZXJ0IiwiZ3JpZENvbHMiLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJtYXAiLCJpbWciLCJpIiwic3JjIiwiYWx0IiwibG9hZGluZyIsImJ1dHRvbiIsIm9uQ2xpY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/chat/image-grid.tsx\n"));
/***/ }),
/***/ "(app-pages-browser)/./src/lib/api.ts":
/*!************************!*\
!*** ./src/lib/api.ts ***!
\************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getImageUrl: () => (/* binding */ getImageUrl),\n/* harmony export */ sendChat: () => (/* binding */ sendChat)\n/* harmony export */ });\n/**\r\n * 后端 API 调用封装 + SSE 流式读取。\r\n */ const API_URL = \"http://localhost:8000\" || 0;\n/**\r\n * 发送对话消息到后端,返回 SSE 事件的异步迭代器。\r\n */ async function* sendChat(messages, refImageFile) {\n var _response_body;\n const formData = new FormData();\n // messages 序列化:只发 role + content\n const apiMessages = messages.map((m)=>({\n role: m.role,\n content: m.content\n }));\n formData.append(\"messages\", JSON.stringify(apiMessages));\n if (refImageFile) {\n formData.append(\"ref_image\", refImageFile);\n }\n const response = await fetch(\"\".concat(API_URL, \"/api/chat\"), {\n method: \"POST\",\n body: formData\n });\n if (!response.ok) {\n throw new Error(\"API 请求失败: \".concat(response.status));\n }\n const reader = (_response_body = response.body) === null || _response_body === void 0 ? void 0 : _response_body.getReader();\n if (!reader) throw new Error(\"无法读取响应流\");\n const decoder = new TextDecoder();\n let buffer = \"\";\n while(true){\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, {\n stream: true\n });\n // 按 SSE 协议解析:每个事件以 \\n\\n 分隔\n const parts = buffer.split(\"\\n\\n\");\n buffer = parts.pop() || \"\";\n for (const part of parts){\n if (!part.trim()) continue;\n let eventType = \"message\";\n let eventData = \"\";\n for (const line of part.split(\"\\n\")){\n if (line.startsWith(\"event:\")) {\n eventType = line.slice(6).trim();\n } else if (line.startsWith(\"data:\")) {\n eventData = line.slice(5).trim();\n }\n }\n if (eventData) {\n try {\n yield {\n type: eventType,\n data: JSON.parse(eventData)\n };\n } catch (e) {\n // 解析失败则跳过\n }\n }\n }\n }\n}\n/** 获取图片完整 URL处理相对路径。 */ function getImageUrl(path) {\n if (path.startsWith(\"http\")) return path;\n return \"\".concat(API_URL).concat(path);\n}\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9saWIvYXBpLnRzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0NBRUMsR0FFRCxNQUFNQSxVQUFVQyx1QkFBK0IsSUFBSSxDQUF1QjtBQWExRTs7Q0FFQyxHQUNNLGdCQUFnQkcsU0FDckJDLFFBQW1CLEVBQ25CQyxZQUEwQjtRQXdCWEM7SUF0QmYsTUFBTUMsV0FBVyxJQUFJQztJQUVyQixpQ0FBaUM7SUFDakMsTUFBTUMsY0FBY0wsU0FBU00sR0FBRyxDQUFDLENBQUNDLElBQU87WUFDdkNDLE1BQU1ELEVBQUVDLElBQUk7WUFDWkMsU0FBU0YsRUFBRUUsT0FBTztRQUNwQjtJQUNBTixTQUFTTyxNQUFNLENBQUMsWUFBWUMsS0FBS0MsU0FBUyxDQUFDUDtJQUUzQyxJQUFJSixjQUFjO1FBQ2hCRSxTQUFTTyxNQUFNLENBQUMsYUFBYVQ7SUFDL0I7SUFFQSxNQUFNQyxXQUFXLE1BQU1XLE1BQU0sR0FBVyxPQUFSbEIsU0FBUSxjQUFZO1FBQ2xEbUIsUUFBUTtRQUNSQyxNQUFNWjtJQUNSO0lBRUEsSUFBSSxDQUFDRCxTQUFTYyxFQUFFLEVBQUU7UUFDaEIsTUFBTSxJQUFJQyxNQUFNLGFBQTZCLE9BQWhCZixTQUFTZ0IsTUFBTTtJQUM5QztJQUVBLE1BQU1DLFVBQVNqQixpQkFBQUEsU0FBU2EsSUFBSSxjQUFiYixxQ0FBQUEsZUFBZWtCLFNBQVM7SUFDdkMsSUFBSSxDQUFDRCxRQUFRLE1BQU0sSUFBSUYsTUFBTTtJQUU3QixNQUFNSSxVQUFVLElBQUlDO0lBQ3BCLElBQUlDLFNBQVM7SUFFYixNQUFPLEtBQU07UUFDWCxNQUFNLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFLEdBQUcsTUFBTU4sT0FBT08sSUFBSTtRQUN6QyxJQUFJRixNQUFNO1FBRVZELFVBQVVGLFFBQVFNLE1BQU0sQ0FBQ0YsT0FBTztZQUFFRyxRQUFRO1FBQUs7UUFFL0MsMkJBQTJCO1FBQzNCLE1BQU1DLFFBQVFOLE9BQU9PLEtBQUssQ0FBQztRQUMzQlAsU0FBU00sTUFBTUUsR0FBRyxNQUFNO1FBRXhCLEtBQUssTUFBTUMsUUFBUUgsTUFBTztZQUN4QixJQUFJLENBQUNHLEtBQUtDLElBQUksSUFBSTtZQUVsQixJQUFJQyxZQUFZO1lBQ2hCLElBQUlDLFlBQVk7WUFFaEIsS0FBSyxNQUFNQyxRQUFRSixLQUFLRixLQUFLLENBQUMsTUFBTztnQkFDbkMsSUFBSU0sS0FBS0MsVUFBVSxDQUFDLFdBQVc7b0JBQzdCSCxZQUFZRSxLQUFLRSxLQUFLLENBQUMsR0FBR0wsSUFBSTtnQkFDaEMsT0FBTyxJQUFJRyxLQUFLQyxVQUFVLENBQUMsVUFBVTtvQkFDbkNGLFlBQVlDLEtBQUtFLEtBQUssQ0FBQyxHQUFHTCxJQUFJO2dCQUNoQztZQUNGO1lBRUEsSUFBSUUsV0FBVztnQkFDYixJQUFJO29CQUNGLE1BQU07d0JBQ0pJLE1BQU1MO3dCQUNOTSxNQUFNN0IsS0FBSzhCLEtBQUssQ0FBQ047b0JBQ25CO2dCQUNGLEVBQUUsVUFBTTtnQkFDTixVQUFVO2dCQUNaO1lBQ0Y7UUFDRjtJQUNGO0FBQ0Y7QUFFQSx3QkFBd0IsR0FDakIsU0FBU08sWUFBWUMsSUFBWTtJQUN0QyxJQUFJQSxLQUFLTixVQUFVLENBQUMsU0FBUyxPQUFPTTtJQUNwQyxPQUFPLEdBQWFBLE9BQVZoRCxTQUFlLE9BQUxnRDtBQUN0QiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXHNyY1xcbGliXFxhcGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOWQjuerryBBUEkg6LCD55So5bCB6KOFICsgU1NFIOa1geW8j+ivu+WPluOAglxyXG4gKi9cclxuXHJcbmNvbnN0IEFQSV9VUkwgPSBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19BUElfVVJMIHx8IFwiaHR0cDovL2xvY2FsaG9zdDo4MDAwXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2Uge1xyXG4gIHJvbGU6IFwidXNlclwiIHwgXCJhc3Npc3RhbnRcIjtcclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgaW1hZ2VzPzogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU1NFRXZlbnQge1xyXG4gIHR5cGU6IFwidGV4dF9kZWx0YVwiIHwgXCJ0b29sX3N0YXJ0XCIgfCBcImltYWdlX3Jlc3VsdFwiIHwgXCJkb25lXCIgfCBcImVycm9yXCI7XHJcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDlj5HpgIHlr7nor53mtojmga/liLDlkI7nq6/vvIzov5Tlm54gU1NFIOS6i+S7tueahOW8guatpei/reS7o+WZqOOAglxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBzZW5kQ2hhdChcclxuICBtZXNzYWdlczogTWVzc2FnZVtdLFxyXG4gIHJlZkltYWdlRmlsZT86IEZpbGUgfCBudWxsXHJcbik6IEFzeW5jR2VuZXJhdG9yPFNTRUV2ZW50PiB7XHJcbiAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuXHJcbiAgLy8gbWVzc2FnZXMg5bqP5YiX5YyW77ya5Y+q5Y+RIHJvbGUgKyBjb250ZW50XHJcbiAgY29uc3QgYXBpTWVzc2FnZXMgPSBtZXNzYWdlcy5tYXAoKG0pID0+ICh7XHJcbiAgICByb2xlOiBtLnJvbGUsXHJcbiAgICBjb250ZW50OiBtLmNvbnRlbnQsXHJcbiAgfSkpO1xyXG4gIGZvcm1EYXRhLmFwcGVuZChcIm1lc3NhZ2VzXCIsIEpTT04uc3RyaW5naWZ5KGFwaU1lc3NhZ2VzKSk7XHJcblxyXG4gIGlmIChyZWZJbWFnZUZpbGUpIHtcclxuICAgIGZvcm1EYXRhLmFwcGVuZChcInJlZl9pbWFnZVwiLCByZWZJbWFnZUZpbGUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtBUElfVVJMfS9hcGkvY2hhdGAsIHtcclxuICAgIG1ldGhvZDogXCJQT1NUXCIsXHJcbiAgICBib2R5OiBmb3JtRGF0YSxcclxuICB9KTtcclxuXHJcbiAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBBUEkg6K+35rGC5aSx6LSlOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpO1xyXG4gIGlmICghcmVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoXCLml6Dms5Xor7vlj5blk43lupTmtYFcIik7XHJcblxyXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcclxuICBsZXQgYnVmZmVyID0gXCJcIjtcclxuXHJcbiAgd2hpbGUgKHRydWUpIHtcclxuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XHJcbiAgICBpZiAoZG9uZSkgYnJlYWs7XHJcblxyXG4gICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KTtcclxuXHJcbiAgICAvLyDmjIkgU1NFIOWNj+iuruino+aekO+8muavj+S4quS6i+S7tuS7pSBcXG5cXG4g5YiG6ZqUXHJcbiAgICBjb25zdCBwYXJ0cyA9IGJ1ZmZlci5zcGxpdChcIlxcblxcblwiKTtcclxuICAgIGJ1ZmZlciA9IHBhcnRzLnBvcCgpIHx8IFwiXCI7XHJcblxyXG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XHJcbiAgICAgIGlmICghcGFydC50cmltKCkpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgbGV0IGV2ZW50VHlwZSA9IFwibWVzc2FnZVwiO1xyXG4gICAgICBsZXQgZXZlbnREYXRhID0gXCJcIjtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBwYXJ0LnNwbGl0KFwiXFxuXCIpKSB7XHJcbiAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcImV2ZW50OlwiKSkge1xyXG4gICAgICAgICAgZXZlbnRUeXBlID0gbGluZS5zbGljZSg2KS50cmltKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSkge1xyXG4gICAgICAgICAgZXZlbnREYXRhID0gbGluZS5zbGljZSg1KS50cmltKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXZlbnREYXRhKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHlpZWxkIHtcclxuICAgICAgICAgICAgdHlwZTogZXZlbnRUeXBlIGFzIFNTRUV2ZW50W1widHlwZVwiXSxcclxuICAgICAgICAgICAgZGF0YTogSlNPTi5wYXJzZShldmVudERhdGEpLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIC8vIOino+aekOWksei0peWImei3s+i/h1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqIOiOt+WPluWbvueJh+WujOaVtCBVUkzvvIjlpITnkIbnm7jlr7not6/lvoTvvInjgIIgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlVXJsKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgaWYgKHBhdGguc3RhcnRzV2l0aChcImh0dHBcIikpIHJldHVybiBwYXRoO1xyXG4gIHJldHVybiBgJHtBUElfVVJMfSR7cGF0aH1gO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJBUElfVVJMIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUFVCTElDX0FQSV9VUkwiLCJzZW5kQ2hhdCIsIm1lc3NhZ2VzIiwicmVmSW1hZ2VGaWxlIiwicmVzcG9uc2UiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBpTWVzc2FnZXMiLCJtYXAiLCJtIiwicm9sZSIsImNvbnRlbnQiLCJhcHBlbmQiLCJKU09OIiwic3RyaW5naWZ5IiwiZmV0Y2giLCJtZXRob2QiLCJib2R5Iiwib2siLCJFcnJvciIsInN0YXR1cyIsInJlYWRlciIsImdldFJlYWRlciIsImRlY29kZXIiLCJUZXh0RGVjb2RlciIsImJ1ZmZlciIsImRvbmUiLCJ2YWx1ZSIsInJlYWQiLCJkZWNvZGUiLCJzdHJlYW0iLCJwYXJ0cyIsInNwbGl0IiwicG9wIiwicGFydCIsInRyaW0iLCJldmVudFR5cGUiLCJldmVudERhdGEiLCJsaW5lIiwic3RhcnRzV2l0aCIsInNsaWNlIiwidHlwZSIsImRhdGEiLCJwYXJzZSIsImdldEltYWdlVXJsIiwicGF0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/lib/api.ts\n"));
/***/ })
},
/******/ __webpack_require__ => { // webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
/******/ __webpack_require__.O(0, ["main-app"], () => (__webpack_exec__("(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CGIT_HOME%5C%5CEPEEAIKit%5C%5Cart-agent%5C%5Cfrontend%5C%5Csrc%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!")));
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
/******/ }
]);